diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index b8ceec94845..46e83576eb2 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -1,6 +1,7 @@ openerp.web.view_editor = function(openerp) { var QWeb = openerp.web.qweb; openerp.web.ViewEditor = openerp.web.Widget.extend({ + init: function(parent, element_id, dataset, view, options) { this._super(parent); this.element_id = element_id @@ -9,55 +10,55 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ this.model = dataset.model; this.xml_id = 0; }, + start: function() { this.View_editor(); }, + View_editor : function(){ - var self = this; - var action = { - name:'ViewEditor', - context:this.session.user_context, - domain: [["model", "=", this.dataset.model]], - res_model: 'ir.ui.view', - views : [[false, 'list']], - type: 'ir.actions.act_window', - target: "current", - limit : 80, - auto_search : true, - flags: { - sidebar: false, - views_switcher: false, - action_buttons:false, - search_view:false, - pager:false, - radio:true - }, - }; - var action_manager = new openerp.web.ActionManager(this); - this.dialog = new openerp.web.Dialog(this,{ - modal: true, - title: 'ViewEditor', - width: 750, - height: 500, - buttons: { - "Create": function(){ - - }, - "Edit": function(){ - self.xml_id = 0 ; - self.get_data(); - - }, - "Close": function(){ - $(this).dialog('destroy'); - } - }, - - }); - this.dialog.start(); - this.dialog.open(); - action_manager.appendTo(this.dialog); - action_manager.do_action(action); + var self = this; + var action = { + name:'ViewEditor', + context:this.session.user_context, + domain: [["model", "=", this.dataset.model]], + res_model : 'ir.ui.view', + views : [[false, 'list']], + type: 'ir.actions.act_window', + target: "current", + limit : 80, + auto_search : true, + flags: { + sidebar: false, + views_switcher: false, + action_buttons:false, + search_view:false, + pager:false, + radio:true + }, + }; + var action_manager = new openerp.web.ActionManager(this); + this.dialog = new openerp.web.Dialog(this,{ + modal: true, + title: 'ViewEditor', + width: 750, + height: 500, + buttons: { + "Create": function(){ + //to do + }, + "Edit": function(){ + self.xml_id = 0 ; + self.get_data(); + }, + "Close": function(){ + $(this).dialog('destroy'); + } + }, + }); + this.dialog.start(); + this.dialog.open(); + action_manager.appendTo(this.dialog); + action_manager.do_action(action); }, check_attr:function(xml,tag,level){ @@ -66,25 +67,25 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ obj.id = this.xml_id++; obj.level = level; var att_list = []; - var name1 = "<" + tag; + var render_name = "<" + tag; var xml_tag = "<" + tag; $(xml).each(function() { att_list = this.attributes; att_list = _.select(att_list, function(attrs){ - xml_tag += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"'; - if (tag != 'button'){ - if(attrs.nodeName == "string" || attrs.nodeName == "name" || attrs.nodeName == "index"){ - name1 += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"';} - }else{ - if(attrs.nodeName == "name"){ - name1 += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"';} - } - }); - name1+= ">"; - xml_tag+= ">"; - }); + xml_tag += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"'; + if (tag != 'button'){ + if(attrs.nodeName == "string" || attrs.nodeName == "name" || attrs.nodeName == "index"){ + render_name += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"';} + }else{ + if(attrs.nodeName == "name"){ + render_name += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"';} + } + }); + render_name+= ">"; + xml_tag+= ">"; + }); obj.main_xml = xml_tag; - obj.name = name1; + obj.name = render_name; return obj; }, @@ -93,13 +94,13 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ var check_id = parent_list[0]; var p_list = parent_list.slice(1); if(val.child_id.length != 0){ - $.each(val.child_id, function(key,val) { + $.each(val.child_id, function(key,val) { if(val.id==check_id){ if(p_list.length!=0){ self.save_object(val,p_list,child_obj_list); }else{ val.child_id = child_obj_list; - return; + return; } } }); @@ -116,49 +117,121 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ var main_object = main_object; var children_list = $(xml).filter(root).children(); var parents = $(children_list[0]).parents().get(); - _.each(children_list, function(child_node){ + _.each(children_list, function(child_node){ var string = self.check_attr(child_node,child_node.tagName.toLowerCase(),parents.length); child_obj_list.push(string); }); + if(children_list.length != 0){ var child_ids = _.map(child_obj_list ,function(num){return num.id;}); parent_child_id.push({'key': parent_id, 'value': child_ids}); var parents = $(children_list[0]).parents().get(); if(parents.length <= parent_list.length){ - parent_list.splice(parents.length-1);} + parent_list.splice(parents.length-1); + } parent_list.push(parent_id); $.each(main_object, function(key,val) { self.save_object(val,parent_list.slice(1),child_obj_list); }); } + for(var i=0;i= prev_tr.attr('level') || prev_tr.length==0){ - last_tr = prev_tr; - break; + case "side-add": + break; + case "side-remove": + break; + case "side-edit": + break; + case "side-up": + while(1){ + var prev_tr = cur_tr.prev(); + if(level >= prev_tr.attr('level') || prev_tr.length==0){ + last_tr = prev_tr; + break; } - cur_tr = prev_tr; - } - if(img){ - while(1){ - var next_tr = side.next(); - if(next_tr.attr('level') <= level || next_tr.length==0){ - break; - }else{ - list_shift.push(next_tr); - side = next_tr; - } + cur_tr = prev_tr; } - } - if(last_tr.length!=0 && last_tr.attr('level') == level){ - _.each(list_shift,function(rec){ - $(last_tr).before(rec); - }); - } - break; - case "side-down": - var img = side.find("img[id='parentimg-"+id_tr+"']").attr('src'); - var level = side.attr('level'); - var list_shift =[]; - var last_tr; - var next_tr; - var cur_tr = side; - list_shift.push(side); - if(img){ - while(1){ - var next_tr = cur_tr.next(); + if(img){ + while(1){ + next_tr = side.next(); if(next_tr.attr('level') <= level || next_tr.length==0){ - last_tr = next_tr; break; }else{ + list_shift.push(next_tr); + side = next_tr; + } + } + } + if(last_tr.length!=0 && last_tr.attr('level') == level){ + _.each(list_shift,function(rec){ + $(last_tr).before(rec); + }); + } + break; + case "side-down": + if(img){ + while(1){ + next_tr = cur_tr.next(); + if(next_tr.attr('level') <= level || next_tr.length==0){ + last_tr = next_tr; + break; + }else{ list_shift.push(next_tr); cur_tr = next_tr; - } - } - }else{last_tr = cur_tr.next();} + } + } + } + else{ + last_tr = cur_tr.next(); + } if(last_tr.length != 0 && last_tr.attr('level')==level){ var last_tr_id = (last_tr.attr('id')).split('-')[1]; img = last_tr.find("img[id='parentimg-"+last_tr_id+"']").attr('src'); @@ -270,16 +339,16 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ while(1){ var next_tr = last_tr.next(); if (next_tr.attr('level') <= level || next_tr.length==0){break;} - next_tr.hide(); - last_tr = next_tr; + next_tr.hide(); + last_tr = next_tr; } - } + } list_shift.reverse(); _.each(list_shift,function(rec){ - $(last_tr).after(rec); - }); + $(last_tr).after(rec); + }); } - break; + break; } }); },