summaryrefslogtreecommitdiff
path: root/addons/website/static/src
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2015-07-17 17:24:38 +0200
committerJeremy Kersten <jke@odoo.com>2015-07-17 17:24:38 +0200
commitfea605a98c40d7794c3d691fca8ba639e1bfba4e (patch)
treec67efc467d4eebca498739a41170438a30127a9b /addons/website/static/src
parentec134c669082c61f031687a8b604e6988caada5b (diff)
parent9687a579f42114d06b6e79719c9ec1fe193783ef (diff)
[FIX] website: fix editor
Diffstat (limited to 'addons/website/static/src')
-rw-r--r--addons/website/static/src/css/snippets.css10
-rw-r--r--addons/website/static/src/css/snippets.sass14
-rw-r--r--addons/website/static/src/js/summernote.js24
-rw-r--r--addons/website/static/src/js/website.editor.js73
-rw-r--r--addons/website/static/src/js/website.snippets.editor.js5
-rw-r--r--addons/website/static/src/xml/website.editor.xml8
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>