this.$('#website-top-edit').hide();
this.$('#website-top-view').show();
- this.$buttons.edit.show();
var $edit_button = this.$buttons.edit
.prop('disabled', website.no_editor);
website.EditorBarCustomize = openerp.Widget.extend({
events: {
'mousedown a.dropdown-toggle': 'load_menu',
- 'click li:not(#html_editor):not(#theme_customize):not(#install_apps) a': 'do_customize',
+ 'click ul a[data-view-id]': 'do_customize',
},
start: function() {
var self = this;
var def = $.Deferred();
var editor = this.editor = CKEDITOR.inline(root, self._config());
editor.on('instanceReady', function () {
+ $("[data-oe-type=selection]").attr("contenteditable",false);
editor.setReadOnly(false);
// ckeditor set root to editable, disable it (only inner
// sections are editable)
fetch_editables: function (root) {
return $(root).find('[data-oe-model]')
+ .not('[data-oe-type = "selection"]')
.not('link, script')
- .not('.oe_snippet_editor')
- .filter(function () {
- var $this = $(this);
- // keep view sections and fields which are *not* in
- // view sections for top-level editables
- return $this.data('oe-model') === 'ir.ui.view'
- || !$this.closest('[data-oe-model = "ir.ui.view"]').length;
- });
+ .not('.oe_snippet_editor');
},
_current_editor: function () {
var classes = (style && style.length ? "btn " : "") + style + " " + size;
if ($e.hasClass('email-address') && $e.val().indexOf("@") !== -1) {
- def.resolve('mailto:' + val, false, label);
+ def.resolve('mailto:' + val, false, label, classes);
} else if ($e.val() && $e.val().length && $e.hasClass('page')) {
var data = $e.select2('data');
if (!data.create) {
- def.resolve(data.id, false, data.text);
+ def.resolve(data.id, false, label || data.text, classes);
} else {
// Create the page, get the URL back
$.get(_.str.sprintf(
'/website/add/%s?noredirect=1', encodeURI(data.id)))
.then(function (response) {
- def.resolve(response, false, data.id);
+ def.resolve(response, false, data.id, classes);
});
}
} else {
make_link: function (url, new_window, label, classes) {
},
bind_data: function () {
+ var self = this;
var href = this.element && (this.element.data( 'cke-saved-href')
|| this.element.getAttribute('href'));
var new_window = this.element
: false;
var text = this.element ? this.element.getText() : '';
if (!text.length) {
- var selection = this.editor.getSelection();
- text = selection.getSelectedText();
+ if (this.editor) {
+ text = this.editor.getSelection().getSelectedText();
+ } else {
+ text = this.data.name;
+ href = this.data.url;
+ new_window = this.data.new_window;
+ }
}
this.$('input#link-text').val(text);
this.$('input.email-address').val(match[1]).change();
}
if (href && !$control) {
- this.$('input.url').val(href).change();
- this.$('input.window-new').closest("div").show();
+ this.page_exists(href).then(function (exist) {
+ if (exist) {
+ self.$('#link-page').select2('data', {'id': href, 'text': href});
+ } else {
+ self.$('input.url').val(href).change();
+ self.$('input.window-new').closest("div").show();
+ }
+ });
}
this.preview();
},
start: function () {
var self = this;
+ if (this.editor.getSelection) {
+ var selection = this.editor.getSelection();
+ this.range = selection.getRanges(true)[0];
+ }
+
this.imageDialog = new website.editor.RTEImageDialog(this, this.editor, this.media);
this.imageDialog.appendTo(this.$("#editor-media-image"));
this.iconDialog = new website.editor.FontIconsDialog(this, this.editor, this.media);
this.videoDialog.clear();
}
} else {
- var selection = this.editor.getSelection();
- var range = selection.getRanges(true)[0];
this.media = new CKEDITOR.dom.element("img");
- range.insertNode(this.media);
- range.selectNodeContents(this.media);
+ self.range.insertNode(this.media);
+ self.range.selectNodeContents(this.media);
this.active.media = this.media;
}
this.media.$.className = this.media.$.className.replace(/\s+/g, ' ');
setTimeout(function () {
+ if(self.range) self.range.select();
$el.trigger("saved", self.active.media.$);
$(document.body).trigger("media-saved", [$el[0], self.active.media.$]);
},0);
this.changed($(e.target));
},
'click button.filepicker': function () {
- this.$('input[type=file]').click();
+ var filepicker = this.$('input[type=file]');
+ if (!_.isEmpty(filepicker)){
+ filepicker[0].click();
+ }
+ },
+ 'click .js_disable_optimization': function () {
+ this.$('input[name="disable_optimization"]').val('1');
+ var filepicker = this.$('button.filepicker');
+ if (!_.isEmpty(filepicker)){
+ filepicker[0].click();
+ }
},
'change input[type=file]': 'file_selection',
'submit form': 'form_submit',
}
var callback = _.uniqueId('func_');
this.$('input[name=func]').val(callback);
- window[callback] = function (url, error) {
+ window[callback] = function (attachments, error) {
delete window[callback];
- self.file_selected(url, error);
+ self.file_selected(attachments[0]['website_url'], error);
};
},
file_selection: function () {
.attr('data-size', size)
.addClass(size)
.addClass(no_sizes);
- if ((size && _.contains(classes, size)) || (classes[2] === "" && !selected)) {
+
+ if ((size && _.contains(classes, size)) || (size === "" && !selected)) {
this.$preview.append($p.clone());
this.$('#fa-size').val(size);
$p.addClass('font-icons-selected');
return false;
}
switch(m.type) {
- case 'attributes': // ignore .cke_focus being added or removed
- // ignore id modification
- if (m.attributeName === 'id') { return false; }
+ case 'attributes':
+ // ignore special attributes and .cke_focus class being added or removed
+ var ignored_attrs = ['id', 'contenteditable', 'attributeeditable']
+ if (_.contains(ignored_attrs, m.attributeName)) { return false; }
// if attribute is not a class, can't be .cke_focus change
if (m.attributeName !== 'class') { return true; }