[FIX]Fix add remove shortcut problem on switch view and update session.
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>
Fri, 19 Aug 2011 10:33:22 +0000 (16:03 +0530)
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>
Fri, 19 Aug 2011 10:33:22 +0000 (16:03 +0530)
bzr revid: vme@tinyerp.com-20110819103322-7cph3n3ey7z39gkj

addons/base/static/src/js/chrome.js
addons/base/static/src/js/views.js

index 3aff7b5..ec666cf 100644 (file)
@@ -584,13 +584,17 @@ openerp.base.Header =  openerp.base.Widget.extend({
             sc.binding = {};
             $(sc.binding).bind({
                 'add': function (e, attrs) {
-                    var $shortcut = $('<li>', {
-                            'data-id': attrs.res_id
+                    shortcuts_ds.create(attrs, function (out) {
+                        var $shortcut = $('<li>', {
+                        'data-shortcut-id':out.result,
+                        'data-id': attrs.res_id
                         }).text(attrs.name)
                         .appendTo(self.$element.find('.oe-shortcuts ul'));
-                    shortcuts_ds.create(attrs, function (out) {
-                        $shortcut.data('shortcut-id', out.result);
+                        attrs.id = out.result;
+                        sc.splice(sc.lenght,0,attrs);
+                        sc.push.apply(sc);
                     });
+                    
                 },
                 'remove-current': function () {
                     var menu_id = self.session.active_id;
@@ -599,6 +603,9 @@ openerp.base.Header =  openerp.base.Widget.extend({
                     var shortcut_id = $shortcut.data('shortcut-id');
                     $shortcut.remove();
                     shortcuts_ds.unlink([shortcut_id]);
+                    sc1 = _.reject(sc, function(shortcut){ return shortcut_id === shortcut.id});
+                    sc.splice(0, sc.length);
+                    sc.push.apply(sc ,sc1);
                 }
             });
         }
@@ -609,6 +616,7 @@ openerp.base.Header =  openerp.base.Widget.extend({
             self.$element.find('.oe-shortcuts')
                 .html(QWeb.render('Shortcuts', {'shortcuts': shortcuts}))
                 .undelegate('li', 'click')
+
                 .delegate('li', 'click', function(e) {
                     e.stopPropagation();
                     var id = $(this).data('id');
index ad75268..7a15f9a 100644 (file)
@@ -342,6 +342,7 @@ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({
     shortcut_add_remove: function() {
         var self = this;
         var $shortcut_toggle = this.$element.find('.oe-shortcut-toggle');
+        $shortcut_toggle.unbind("click").click();
         $shortcut_toggle.click(function() {
             if ($shortcut_toggle.hasClass("oe-shortcut-remove")) {
                 $(self.session.shortcuts.binding).trigger('remove-current');