[IMP]merge with main branch of view editor.
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>
Tue, 25 Oct 2011 11:25:48 +0000 (16:55 +0530)
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>
Tue, 25 Oct 2011 11:25:48 +0000 (16:55 +0530)
bzr revid: vme@tinyerp.com-20111025112548-eakr7fio6diovn2m

1  2 
addons/web/static/src/js/view_editor.js

@@@ -132,16 -128,13 +126,15 @@@ openerp.web.ViewEditor =   openerp.web.
          var root = $(arch).filter(":first")[0];
          var tag = root.tagName.toLowerCase();
          var obj ={'child_id':[],'id':this.xml_id++,'level':0,'att_list':[],'name':"<view view_id='"+view_id+"'>"};
-         var root_object = self.check_attr(root,tag,0);
-         obj.child_id = self.xml_node_create(arch, tag, [], this.xml_id-1, [root_object], [])
+         var root_object = this.check_attr(root,tag,0);
+         obj.child_id = this.xml_node_create(arch, tag, [], this.xml_id-1, [root_object], [])
          return [obj];
      },
      get_data: function() {
          var self = this;
++
 +        var view_arch_list = [];
-         var view_id =(($("input[name='radiogroup']:checked").parent()).parent()).attr('data-id');
+         var view_id =((this.view_edit_dialog.$element.find("input[name='radiogroup']:checked").parent()).parent()).attr('data-id');
          var ve_dataset = new openerp.web.DataSet(this, 'ir.ui.view');
          ve_dataset.read_ids([parseInt(view_id)], ['arch'], function (arch) {
              one_object = self.parse_xml(arch[0].arch,view_id);
                  self.on_collapse(this,one_object['parent_child_id'], one_object['main_object']);
              }
          });
-         $("img[id^='side-']").click(function() {
-             var side = $(this).closest("tr[id^='viewedit-']");
+         this.edit_xml_dialog.$element.find("img[id^='side-']").click(function() {
+             var side = $(this).closest("tr[id^='viewedit-']")
              var id_tr = (side.attr('id')).split('-')[1];
              var img = side.find("img[id='parentimg-"+id_tr+"']").attr('src'); ;
 -            var level = side.attr('level');
 +            var level = parseInt(side.attr('level'));
              var list_shift =[];
              var last_tr;
              var cur_tr = side;
              }
          });
      },
 +    save_move_arch: function(one_object, view_id, view_xml_id, id_tr, level, move_direct){
 +        var self = this;
 +        var arch = _.detect(one_object['arch'],function(element){
 +            return element.view_id == view_id;
 +        });
 +        var obj = self.get_view_object(view_xml_id, one_object['main_object'], []);
 +        if(($(arch.arch).filter("data")).length != 0 && view_xml_id != 0){
 +            var check_list = _.flatten(obj[0].child_id[0].att_list);
 +            arch.arch = _.detect($(arch.arch).children(), function(xml_child){
 +                var temp_obj = self.check_attr(xml_child, xml_child.tagName.toLowerCase());
 +                var main_list = _.flatten(temp_obj.att_list);
 +                check_list = _.uniq(check_list);
 +                var insert = _.intersection(main_list,check_list);
 +                if(insert.length == check_list.length ){return xml_child;}
 +            });
 +        }
 +        return self.get_node(arch.arch, obj[0].child_id[0], parseInt(id_tr), [], parseInt(level),
 +                        parseInt(view_id), arch, move_direct);
 +    },
 +
 +    get_view_object: function(view_xml_id, one_object,result){
 +        var self = this;
 +        if(result.length==0){
 +            var check = _.detect(one_object , function(obj){
 +                return view_xml_id==obj.id;
 +            });
 +            if(check){result.push(check);};
 +            _.each(one_object, function(obj){
 +               self.get_view_object(view_xml_id, obj.child_id, result);
 +            });
 +        }
 +        return result;
 +    },
 +
 +    get_node: function(arch1, obj, id, child_list, level, view_id, arch, move_direct){
 +        var self = this;
 +        var children_list =  $(arch1).children();
 +        var list_obj_xml = _.zip(children_list,obj.child_id);
 +        if(id){
 +            if(obj.id == id){
 +                var id;
 +                var parent = $(arch1).parents();
 +                var index = _.indexOf(child_list,obj)
 +                var re_insert_obj = child_list.splice(index,1);
 +                if(move_direct == "down"){
 +                    var next = $(arch1).next();
 +                    $(next).after(arch1);
 +                    child_list.splice(index+1, 0, re_insert_obj[0]);
 +                }else{
 +                    var prev = $(arch1).prev();
 +                    $(prev).before(arch1);
 +                    child_list.splice(index-1, 0, re_insert_obj[0]);
 +                }
 +                parent = parent[parent.length-1];
 +                var convert_to_utf = "";
 +                var xml_serilalizer = new XMLSerializer();
 +                var stream = {
 +                    write : function(string)
 +                    {convert_to_utf = convert_to_utf + string + "";}
 +                };
 +                xml_serilalizer.serializeToStream(parent, stream, "UTF-8");
 +                convert_to_utf = convert_to_utf.replace('xmlns="http://www.w3.org/1999/xhtml"', "");
 +                convert_to_utf = '<?xml version="1.0" encoding="utf-8"?>' + convert_to_utf;
 +                arch.arch = convert_to_utf;
 +                dataset = new openerp.web.DataSet(this, 'ir.ui.view');
 +                    dataset.write(parseInt(view_id),{"arch":convert_to_utf},function(r){
 +                });
 +            }
 +            if(obj.level <= level){
 +                _.each(list_obj_xml, function(child_node){
 +                    self.get_node(child_node[0], child_node[1], id, obj.child_id, level, view_id, arch, move_direct);
 +                });
 +            }
 +        }
 +    },
 +
-     on_expand: function(self){
-         var level = parseInt($(self).closest("tr[id^='viewedit-']").attr('level'));
-         var cur_tr = $(self).closest("tr[id^='viewedit-']");
+     on_expand: function(expand_img){
+         var level = parseInt($(expand_img).closest("tr[id^='viewedit-']").attr('level'));
+         var cur_tr = $(expand_img).closest("tr[id^='viewedit-']");
          while (1) {
              var nxt_tr = cur_tr.next();
              if (parseInt(nxt_tr.attr('level')) > level){