From 91cf25ae07405095696cfeaeb8ff6efe3ad13883 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 13 Mar 2012 16:58:52 +0100 Subject: [PATCH] [WIP] broken state bzr revid: fme@openerp.com-20120313155852-1d9fb2ky4pvlja8u --- addons/web/static/src/js/view_form.js | 183 ++++++++++++++------------ addons/web/static/src/xml/base.xml | 16 +-- 2 files changed, 104 insertions(+), 95 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 7cd5f3dcb51..ffde8481c53 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -98,10 +98,9 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } this.fields_order = []; this.fields_view = data; - this.arch = this.preprocess_arch(data); - var html_view = openerp.web.xml_to_str(this.arch); - this.$element.find('.oe_form_content').append(html_view); + var $form = this.create_view(data); + this.$element.find('.oe_form_content').appendTo(this.$form); //this.root_frame = instanciate_widget(this.registry.get_object('frame'), this, this.fields_view.arch); //var to_append = $(".oe_form_header", this.$element); @@ -136,75 +135,64 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } this.has_been_loaded.resolve(); }, - preprocess_arch: function(data) { + create_view: function(fvg) { // TODO: extract embeded views before preprocessing // Cut down this function into rendering API amongst form, page and kanban // // OpenERP views spec : // - @width is obsolete ? - var self = this, - baseclass = 'oe_layout_', - fields = data.fields, - arch = $.parseXML(data.arch_string); + var view = this, + fields = fvg.fields, + $form = $(fvg.arch_string) + field_prefix = view.dataset ? view.dataset.model : ''; // Step #1: // - If field has no @string, fetch it from fvg.fields. // - If field has no label, create one. // - Unless @nolabel, create unique @id and @for pair - $(arch).find('field').each(function() { + $form.find('field').each(function() { var $field = $(this), name = $field.attr('name'), field_orm = fields[name], - field_id = _.uniqueId([self.dataset.model, name, '#'].join('.')); + field_id = _.uniqueId([field_prefix, name, '#'].join('.')); if (!field_orm) { throw new Error("Field '" + name + "' specified in view could not be found."); } - var $label = $(arch).find('label[for="' + name + '"]'), + // TODO: manage @nolabel + var $label = $form.find('label[for="' + name + '"]'), label_string = $field.attr('string') || field_orm.string || ''; if ($label.length) { label_string = $label.attr('string') || $label.text(); } else { - // TODO: find a way to prevent @xmlns. $label = $('