diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 3ccd331cc48..a98376ae30f 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -192,11 +192,6 @@ this.$('#website-top-edit').show(); $('.css_non_editable_mode_hidden').removeClass("css_non_editable_mode_hidden"); - // this.$buttons.cancel.add(this.$buttons.snippet).prop('disabled', false) - // .add(this.$buttons.save) - // .parent().show(); - // - // TODO: span edition changing edition state (save button) var $editables = $('[data-oe-model]') .not('link, script') // FIXME: propagation should make "meta" blocks non-editable in the first place... diff --git a/addons/website/view.py b/addons/website/view.py index d4aae3b2e9a..d6671b5c499 100644 --- a/addons/website/view.py +++ b/addons/website/view.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from lxml import etree +from lxml import etree, html from openerp.osv import osv, fields @@ -49,3 +49,20 @@ class view(osv.osv): if call_view not in stack_result: result += self._views_get(cr, uid, call_view, options=options, context=context, stack_result=result) return result + + def save(self, cr, uid, model, res_id, field, value, xpath=None, context=None): + """ Update the content of a field + + :param str model: + :param int res_id: + :param str xpath: valid xpath to the tag to replace + """ + model_obj = self.pool.get(model) + if xpath: + origin = model_obj.read(cr, uid, [res_id], [field], context=context)[0][field] + origin_tree = etree.fromstring(origin.encode('utf-8')) + zone = origin_tree.xpath(xpath)[0] + zone.getparent().replace(zone, html.fromstring(value)) + value = etree.tostring(origin_tree, encoding='utf-8') + + model_obj.write(cr, uid, res_id, {field: value}, context=context)