diff options
| author | Jeremy Kersten <jke@odoo.com> | 2015-07-17 17:24:38 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2015-07-17 17:24:38 +0200 |
| commit | fea605a98c40d7794c3d691fca8ba639e1bfba4e (patch) | |
| tree | c67efc467d4eebca498739a41170438a30127a9b /addons/website/static/src | |
| parent | ec134c669082c61f031687a8b604e6988caada5b (diff) | |
| parent | 9687a579f42114d06b6e79719c9ec1fe193783ef (diff) | |
[FIX] website: fix editor
Diffstat (limited to 'addons/website/static/src')
| -rw-r--r-- | addons/website/static/src/css/snippets.css | 10 | ||||
| -rw-r--r-- | addons/website/static/src/css/snippets.sass | 14 | ||||
| -rw-r--r-- | addons/website/static/src/js/summernote.js | 24 | ||||
| -rw-r--r-- | addons/website/static/src/js/website.editor.js | 73 | ||||
| -rw-r--r-- | addons/website/static/src/js/website.snippets.editor.js | 5 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.editor.xml | 8 |
6 files changed, 89 insertions, 45 deletions
diff --git a/addons/website/static/src/css/snippets.css b/addons/website/static/src/css/snippets.css index 4c219f7dda8..6f7ec863677 100644 --- a/addons/website/static/src/css/snippets.css +++ b/addons/website/static/src/css/snippets.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; /* ---- SNIPPET EDITOR ---- {{{ */ #oe_snippets #o_left_bar, #oe_snippets #o_arrow { position: fixed; @@ -870,3 +871,12 @@ table.table_desc tr td:last-child { .s_features_grid { margin-bottom: 16px; } + +/* other snippet styles */ +.s_comparisons .panel .list-group-item:not(.active) { + color: #666; +} + +.s_references .img-thumbnail { + border: none; +} diff --git a/addons/website/static/src/css/snippets.sass b/addons/website/static/src/css/snippets.sass index 62a3040c19c..7e33c14fd44 100644 --- a/addons/website/static/src/css/snippets.sass +++ b/addons/website/static/src/css/snippets.sass @@ -81,7 +81,7 @@ .oe_snippet display: inline-block vertical-align: top - width: 93px + width: 92px margin-left: 3px margin-right: 3px margin-top: 1px @@ -701,3 +701,15 @@ table.table_desc tr td .s_features_grid margin-bottom: 16px + + +/* other snippet styles */ + +.s_comparisons + .panel + .list-group-item:not(.active) + color: #666 + +.s_references + .img-thumbnail + border: none diff --git a/addons/website/static/src/js/summernote.js b/addons/website/static/src/js/summernote.js index 70678e58014..d57110cd332 100644 --- a/addons/website/static/src/js/summernote.js +++ b/addons/website/static/src/js/summernote.js @@ -920,19 +920,21 @@ define(['summernote/editing/Editor', 'summernote/summernote'], function (Editor) options.keyMap.mac['ESCAPE'] = 'cancel'; $.summernote.pluginEvents.insertTable = function (event, editor, layoutInfo, sDim) { - var $editable = layoutInfo.editable(); - var dimension = sDim.split('x'); - var rng = range.create(); - rng = rng.deleteContents(); + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable, 'enter'); - var isBodyContainer = dom.isBodyContainer; - dom.isBodyContainer = dom.isNotBreakable; - rng.insertNode(editor.table.createTable(dimension[0], dimension[1])); - dom.isBodyContainer = isBodyContainer; + var dimension = sDim.split('x'); + var rng = range.create(); + rng = rng.deleteContents(); - editor.afterCommand($editable); - event.preventDefault(); - return false; + var isBodyContainer = dom.isBodyContainer; + dom.isBodyContainer = dom.isNotBreakable; + rng.insertNode(editor.table.createTable(dimension[0], dimension[1])); + dom.isBodyContainer = isBodyContainer; + + editor.afterCommand($editable); + event.preventDefault(); + return false; }; $.summernote.pluginEvents.tab = function (event, editor, layoutInfo, outdent) { var $editable = layoutInfo.editable(); diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 2f187ad5bf9..a1cfb7a2e38 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -366,9 +366,9 @@ define(['summernote/summernote'], function () { var def = new $.Deferred(); editor.on("save", this, function (linkInfo) { - linkInfo.range.select(); $editable.data('range', linkInfo.range); def.resolve(linkInfo); + $editable.data('range', range.create()); $('.note-popover .note-link-popover').show(); }); editor.on("cancel", this, function () { @@ -410,7 +410,7 @@ define(['summernote/summernote'], function () { if (node && (nodeName === "SPAN" || nodeName === "I") && className.length) { var classNames = className.split(/\s+/); for (var k=0; k<website.editor.fontIcons.length; k++) { - if (_.intersection(website.editor.fontIcons[k].icons, classNames).length) { + if (_.intersection(website.editor.fontIcons[k].alias, classNames).length) { return true; } } @@ -1207,8 +1207,6 @@ define(['summernote/summernote'], function () { this.EditorBar = EditorBar; $('.inline-media-link').remove(); this._super.apply(this, arguments); - - computeFonts(); }, /** * Add a record undo to history @@ -1342,6 +1340,8 @@ define(['summernote/summernote'], function () { $(document).trigger('mousedown'); if (!restart) { + computeFonts(); + $('#wrapwrap, .o_editable').on('click', '*', function (event) { event.preventDefault(); }); @@ -2188,9 +2188,21 @@ define(['summernote/summernote'], function () { for(var r = 0; r < rules.length; r++) { var selectorText = rules[r].selectorText; if (selectorText) { - var match = selectorText.match(filter); - if (match) { - css.push([match[1], rules[r].cssText.replace(/(^.*\{\s*)|(\s*\}\s*$)/g, '')]); + selectorText = selectorText.split(/\s*,\s*/); + var data = null; + for(var s = 0; s < selectorText.length; s++) { + var match = selectorText[s].match(filter); + if (match) { + var clean = match[1].slice(1).replace(/::?before$/, ''); + if (!data) { + data = [match[1], rules[r].cssText.replace(/(^.*\{\s*)|(\s*\}\s*$)/g, ''), clean, [clean]]; + } else { + data[3].push(clean); + } + } + } + if (data) { + css.push(data); } } } @@ -2200,8 +2212,11 @@ define(['summernote/summernote'], function () { }; function computeFonts() { _.each(website.editor.fontIcons, function (data) { - data.icons = _.map(website.editor.getCssSelectors(data.parser), function (css) { - return css[0].slice(1, css[0].length).replace(/::?before$/, ''); + data.cssData = website.editor.getCssSelectors(data.parser); + data.alias = []; + data.icons = _.map(data.cssData, function (css) { + data.alias.push.apply(data.alias, css[3]); + return css[2]; }); }); } @@ -2252,22 +2267,20 @@ define(['summernote/summernote'], function () { search: function (needle) { var iconsParser = this.iconsParser; if (needle) { - var parser = []; - var fontIcons = website.editor.fontIcons, fontIcon; - - for (var k=0; k<fontIcons.length; k++) { - fontIcon = fontIcons[k]; - var icons = _(fontIcon.icons).filter(function (icon) { - return icon.indexOf(needle) !== -1; + var iconsParser = []; + _.filter(this.iconsParser, function (data) { + var cssData = _.filter(data.cssData, function (cssData) { + return _.find(cssData[3], function (alias) { + return alias.indexOf(needle) !== -1; + }); }); - if (icons.length) { - parser.push({ - base: fontIcon.base, - icons: icons + if (cssData.length) { + iconsParser.push({ + base: data.base, + cssData: cssData }); } - } - iconsParser = parser; + }); } this.$('div.font-icons-icons').html( openerp.qweb.render('website.editor.dialog.font-icons.icons', {'iconsParser': iconsParser})); @@ -2301,17 +2314,17 @@ define(['summernote/summernote'], function () { if (!(classNames instanceof Array)) { classNames = (classNames||"").split(/\s+/); } - var fontIcons = website.editor.fontIcons, fontIcon, className; - for (var i=0; i<classNames.length; i++) { - className = classNames[i]; - for (var k=0; k<fontIcons.length; k++) { - fontIcon = fontIcons[k]; - if (className === fontIcon.base || fontIcon.icons.indexOf(className) !== -1) { + var fontIcon, cssData; + for (var k=0; k<this.iconsParser.length; k++) { + fontIcon = this.iconsParser[k]; + for (var s=0; s<fontIcon.cssData.length; s++) { + cssData = fontIcon.cssData[s]; + if (_.intersection(classNames, cssData[3]).length) { return { 'base': fontIcon.base, 'parser': fontIcon.parser, 'icons': fontIcon.icons, - 'font': className + 'font': cssData[2] }; } } @@ -2347,7 +2360,7 @@ define(['summernote/summernote'], function () { continue; case '': continue; default: - $(".font-icons-icon").removeClass("font-icons-selected").filter("."+cls).addClass("font-icons-selected"); + $(".font-icons-icon").removeClass("font-icons-selected").filter("[data-alias*=',"+cls+",']").addClass("font-icons-selected"); for (var k=0; k<this.icons.length; k++) { if (this.icons.indexOf(cls) !== -1) { this.$('#fa-icon').val(cls); diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index e760e7abefc..139e77a2e95 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -1067,6 +1067,10 @@ this.$bg.removeClass("oe_img_bg").removeClass("oe_custom_bg"); } }, + select_class : function(type, value, $li) { + this.background(type, '', $li); + this._super(type, value, $li); + }, choose_image: function(type, value, $li) { if(type !== "click") return; @@ -1158,6 +1162,7 @@ .click(function () { $td.removeClass("selected"); $(this).parent().addClass("selected"); + self.$target.closest(".o_editable").trigger("content_changed"); }); } }); diff --git a/addons/website/static/src/xml/website.editor.xml b/addons/website/static/src/xml/website.editor.xml index bef9c4d97da..7a6f8fc5eb5 100644 --- a/addons/website/static/src/xml/website.editor.xml +++ b/addons/website/static/src/xml/website.editor.xml @@ -368,9 +368,11 @@ </t> <t t-name="website.editor.dialog.font-icons.icons"> <t t-foreach="iconsParser" t-as="data"> - <span t-foreach="data.icons" t-as="icon" - t-attf-class="#{data.base} font-icons-icon #{icon}" - t-att-data-id="icon"/> + <span t-foreach="data.cssData" t-as="cssData" + t-attf-class="#{data.base} font-icons-icon #{cssData[2]}" + t-attf-data-alias=",#{cssData[3]}," + t-att-title="cssData[3].join(', ')" + t-att-data-id="cssData[2]"/> </t> </t> |
