From 71b057aa3402346ccfc4364d20a81a96b5e632f8 Mon Sep 17 00:00:00 2001 From: "Vidhin Mehta (OpenERP)" Date: Fri, 19 Aug 2011 16:03:22 +0530 Subject: [PATCH 1/2] [FIX]Fix add remove shortcut problem on switch view and update session. bzr revid: vme@tinyerp.com-20110819103322-7cph3n3ey7z39gkj --- addons/base/static/src/js/chrome.js | 16 ++++++++++++---- addons/base/static/src/js/views.js | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 3aff7b5e402..ec666cf8c8a 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -584,13 +584,17 @@ openerp.base.Header = openerp.base.Widget.extend({ sc.binding = {}; $(sc.binding).bind({ 'add': function (e, attrs) { - var $shortcut = $('
  • ', { - 'data-id': attrs.res_id + shortcuts_ds.create(attrs, function (out) { + var $shortcut = $('
  • ', { + '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'); diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index ad75268156f..7a15f9a37ad 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -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'); From a97bb0476ca74b2fa43bc58d408b68d78477610e Mon Sep 17 00:00:00 2001 From: "Vidhin Mehta (OpenERP)" Date: Tue, 23 Aug 2011 14:31:21 +0530 Subject: [PATCH 2/2] [fix]Optimize code in add event bzr revid: vme@tinyerp.com-20110823090121-gk2iayz1eavjwdfg --- addons/base/static/src/js/chrome.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index ec666cf8c8a..ef8779152bc 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -585,28 +585,26 @@ openerp.base.Header = openerp.base.Widget.extend({ $(sc.binding).bind({ 'add': function (e, attrs) { shortcuts_ds.create(attrs, function (out) { - var $shortcut = $('
  • ', { - 'data-shortcut-id':out.result, - 'data-id': attrs.res_id + $('
  • ', { + 'data-shortcut-id':out.result, + 'data-id': attrs.res_id }).text(attrs.name) .appendTo(self.$element.find('.oe-shortcuts ul')); attrs.id = out.result; - sc.splice(sc.lenght,0,attrs); - sc.push.apply(sc); + sc.push(attrs); }); - - }, + }, 'remove-current': function () { var menu_id = self.session.active_id; var $shortcut = self.$element - .find('.oe-shortcuts li[data-id=' + menu_id + ']'); + .find('.oe-shortcuts li[data-id=' + menu_id + ']'); var shortcut_id = $shortcut.data('shortcut-id'); $shortcut.remove(); shortcuts_ds.unlink([shortcut_id]); - sc1 = _.reject(sc, function(shortcut){ return shortcut_id === shortcut.id}); + var sc_new = _.reject(sc, function(shortcut){ return shortcut_id === shortcut.id}); sc.splice(0, sc.length); - sc.push.apply(sc ,sc1); - } + sc.push.apply(sc,sc_new); + } }); } return this.rpc('/base/session/sc_list', {}, function(shortcuts) {