forked from Techsystech/web
[ADD] web_ckeditor4
parent
72a5144ad1
commit
be6498a0c9
|
@ -0,0 +1,22 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2013 Therp BV (<http://therp.nl>)
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2013 Therp BV (<http://therp.nl>)
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{
|
||||
'name': 'CKEditor 4.x widget',
|
||||
'version': '1.0',
|
||||
'description': """
|
||||
This addon provides a widget for editing html fields via CKEditor 4.x
|
||||
""",
|
||||
'author': 'Therp BV',
|
||||
'website': 'http://www.therp.nl',
|
||||
"category": "Tools",
|
||||
"depends": [
|
||||
'web',
|
||||
],
|
||||
'css': [
|
||||
'static/src/css/web_ckeditor4.css',
|
||||
],
|
||||
'data': [
|
||||
],
|
||||
'js': [
|
||||
'static/src/js/ckeditor_basepath.js',
|
||||
'static/lib/ckeditor/ckeditor.js',
|
||||
'static/lib/ckeditor/config.js',
|
||||
'static/src/js/web_ckeditor4.js',
|
||||
],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '',
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
.openerp .oe_form_field_text_ckeditor4.disabled {
|
||||
/* here we need to reset openerp's styles to
|
||||
* have the HTML display as (probably) intended
|
||||
*/
|
||||
white-space: normal;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
CKEDITOR_BASEPATH='/web_ckeditor4/static/lib/ckeditor/'
|
|
@ -0,0 +1,119 @@
|
|||
/* -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2013 Therp BV (<http://therp.nl>)
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
############################################################################*/
|
||||
|
||||
openerp.web_ckeditor4 = function(openerp)
|
||||
{
|
||||
CKEDITOR.lang.load(openerp.connection.user_context.lang.split('_')[0], 'en', function() {});
|
||||
|
||||
openerp.web.form.widgets.add('text_ckeditor4',
|
||||
'openerp.web_ckeditor4.FieldCKEditor4');
|
||||
openerp.web.page.readonly.add('text_ckeditor4',
|
||||
'openerp.web_ckeditor4.FieldCKEditor4Readonly');
|
||||
openerp.web.form.widgets.add('text_html',
|
||||
'openerp.web_ckeditor4.FieldCKEditor4');
|
||||
openerp.web.page.readonly.add('text_html',
|
||||
'openerp.web_ckeditor4.FieldCKEditor4Readonly');
|
||||
|
||||
function filter_html(value)
|
||||
{
|
||||
//TODO: it should be possible to use ckeditor to do the filtering
|
||||
return value;
|
||||
}
|
||||
|
||||
openerp.web_ckeditor4.FieldCKEditor4 = openerp.web.form.FieldText.extend({
|
||||
ckeditor_config: {
|
||||
removePlugins: 'iframe,flash,forms,smiley,pagebreak,stylescombo',
|
||||
},
|
||||
start: function()
|
||||
{
|
||||
var self = this;
|
||||
this._super.apply(this, arguments);
|
||||
|
||||
if(this.modifiers.readonly)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.editor = CKEDITOR.replace(this.$element.find('textarea').get(0),
|
||||
_.extend(
|
||||
{
|
||||
language: openerp.connection.user_context.lang.split('_')[0],
|
||||
},
|
||||
this.ckeditor_config));
|
||||
self.editor.once('beforeUndoImage', function () { self.on_ui_change() });
|
||||
},
|
||||
get_value: function()
|
||||
{
|
||||
return this.editor ? openerp.web.parse_value(this.editor.getData(), this) : this.value;
|
||||
},
|
||||
set_value: function(value)
|
||||
{
|
||||
if(this.modifiers.readonly)
|
||||
{
|
||||
this._super.apply(this, [value]);
|
||||
|
||||
this.$element.html(filter_html(value));
|
||||
return value;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(this.editor)
|
||||
{
|
||||
var self = this;
|
||||
if(this.editor.status != 'ready')
|
||||
{
|
||||
this.editor.on('instanceReady',
|
||||
function()
|
||||
{
|
||||
self.editor.setData(value || '');
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
self.editor.setData(value || '');
|
||||
}
|
||||
}
|
||||
this._super.apply(this, arguments);
|
||||
}
|
||||
},
|
||||
|
||||
stop: function()
|
||||
{
|
||||
if(this.editor)
|
||||
{
|
||||
this.editor.destroy(true);
|
||||
this.editor = null;
|
||||
}
|
||||
return this._super.apply(this, arguments);
|
||||
}
|
||||
});
|
||||
|
||||
openerp.web_ckeditor4.FieldCKEditor4Readonly = openerp.web.page.FieldCharReadonly.extend({
|
||||
set_value: function (value)
|
||||
{
|
||||
this._super.apply(this, arguments);
|
||||
this.$element.find('div').html(filter_html(value));
|
||||
return value;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Loading…
Reference in New Issue