vidhin mehta[Open Erp] has proposed merging 
lp:~openerp-dev/openerp-web/trunk-shortcut-vme into lp:openerp-web.

Requested reviews:
  OpenERP R&D Web Team (openerp-dev-web)

For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-shortcut-vme/+merge/70721

Add functionality of add and remove shortcut same as trunk and when click on
shortcut opens related views of object.
-- 
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-shortcut-vme/+merge/70721
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openerp-web/trunk-shortcut-vme.
=== modified file 'addons/base/controllers/main.py'
--- addons/base/controllers/main.py	2011-08-04 10:37:25 +0000
+++ addons/base/controllers/main.py	2011-08-08 11:26:35 +0000
@@ -259,9 +259,9 @@
 
     @openerpweb.jsonrequest
     def sc_list(self, req):
-        return req.session.model('ir.ui.view_sc').get_sc(req.session._uid, "ir.ui.menu",
-                                                         req.session.eval_context(req.context))
-
+		return sorted(req.session.model('ir.ui.view_sc').get_sc(req.session._uid, "ir.ui.menu",
+                                                     req.session.eval_context(req.context)), key=lambda k: k['id'])
+                                                     
     @openerpweb.jsonrequest
     def get_lang_list(self, req):
         try:

=== modified file 'addons/base/static/src/css/base.css'
--- addons/base/static/src/css/base.css	2011-08-04 17:54:40 +0000
+++ addons/base/static/src/css/base.css	2011-08-08 11:26:35 +0000
@@ -1180,3 +1180,57 @@
     -webkit-box-shadow: none;
     box-shadow: none;
 }
+/* Shortcuts*/
+#shortcut_add_remove {
+    height: 20px;
+    padding: 0;
+    width: 24px;
+    cursor: pointer;
+    display: inline; /*IE7 */
+    display: inline-block;
+}
+.shortcut-add {
+    background: url(../img/add-shortcut.png) no-repeat;
+    background-position: bottom;
+}
+.shortcut-remove{
+    background: url(../img/remove-shortcut.png) no-repeat;
+    background-position: bottom;
+}
+/* ================ */
+#shortcuts {
+    position: absolute;
+    
+    margin: 0;
+    padding: 6px 5px;
+    top: 37px;
+    left: 197px;
+    right: 0;
+    height: 17px;
+    line-height: 1.2;
+}
+#shortcuts ul {
+    display: block;
+    overflow: hidden;
+    list-style: none;
+    white-space: nowrap;
+    padding: 0;
+    margin: 0;
+}
+#shortcuts li {
+    cursor: pointer;
+    display: -moz-inline-stack;    
+    display: inline-block;
+    display: inline; /*IE7 */
+    color: #fff;
+    text-align: center;
+    border-left: 1px solid #909090;
+    padding-left: 4px;
+    font-size: 90%;
+    font-weight: normal;
+}
+#shortcuts li:first-child,
+#shortcuts li.first {
+    border-left: none;
+    padding-left: 0;
+}

=== added file 'addons/base/static/src/img/add-shortcut.png'
Binary files addons/base/static/src/img/add-shortcut.png	1970-01-01 00:00:00 +0000 and addons/base/static/src/img/add-shortcut.png	2011-08-08 11:26:35 +0000 differ
=== added file 'addons/base/static/src/img/remove-shortcut.png'
Binary files addons/base/static/src/img/remove-shortcut.png	1970-01-01 00:00:00 +0000 and addons/base/static/src/img/remove-shortcut.png	2011-08-08 11:26:35 +0000 differ
=== modified file 'addons/base/static/src/js/chrome.js'
--- addons/base/static/src/js/chrome.js	2011-08-04 08:55:16 +0000
+++ addons/base/static/src/js/chrome.js	2011-08-08 11:26:35 +0000
@@ -25,6 +25,9 @@
         this.module_list = [];
         this.module_loaded = {"base": true};
         this.context = {};
+        this.sc_list ={};
+        this.active_id = "";
+        this.active_menu_name = "";
     },
     start: function() {
         this.session_restore();
@@ -858,8 +861,36 @@
     do_update: function() {
         this.$element.html(QWeb.render("Header", this));
         this.$element.find(".logout").click(this.on_logout);
-    },
-    on_logout: function() {}
+        this.shortcut_load();
+    },
+    shortcut_load :function(){
+        var self = this;
+        this.rpc('/base/session/sc_list', {}, function(sc_list_data){
+            self.session.sc_list = sc_list_data
+            self.$element.find('#shortcuts').html(QWeb.render('Shortcuts', {'shortcuts_pass': sc_list_data}));
+            self.shortcut_menu_load();
+        });
+     },
+
+    shortcut_menu_load :function(){
+        var self = this 
+        this.$element.find('#shortcuts ul li').click(function(ev, id){
+            self.session.active_id = this.id;
+            self.rpc('/base/menu/action', {'menu_id':this.id},function(ir_menu_data){
+                if (ir_menu_data.action.length){
+                    this.action_manager =  new openerp.base.ActionManager(self, "oe_app");
+                    this.action_manager.do_action(ir_menu_data.action[0][2]);
+                    self.session.active_menu_name = ir_menu_data.action[0][2]['name'];
+                }
+            });
+    });  
+    },
+    on_logout: function() {
+        this.remove();
+    },
+    remove:function(){
+        this.$element.find('#shortcuts').html(QWeb.render('Shortcuts', {'shortcuts_pass': {}}));
+    },
 });
 
 openerp.base.Menu =  openerp.base.Widget.extend({
@@ -921,6 +952,7 @@
         $secondary.show();
 
         if (id) {
+            this.session.active_id = id;
             this.rpc('/base/menu/action', {'menu_id': id},
                     this.on_menu_action_loaded);
         }
@@ -935,6 +967,7 @@
     on_menu_action_loaded: function(data) {
         var self = this;
         if (data.action.length) {
+            this.session.active_menu_name = data.action[0][2]['name'];
             var action = data.action[0][2];
             self.on_action(action);
         }

=== modified file 'addons/base/static/src/js/search.js'
--- addons/base/static/src/js/search.js	2011-08-03 11:06:15 +0000
+++ addons/base/static/src/js/search.js	2011-08-08 11:26:35 +0000
@@ -144,7 +144,7 @@
         $.when.apply(null, widget_starts).then(function () {
             self.ready.resolve();
         });
-        
+        this.shortcut_check();
         this.reload_managed_filters();
     },
     reload_managed_filters: function() {
@@ -344,7 +344,34 @@
             // triggers refresh
             this.$element.find('form').submit();
         }
-    }
+    },
+    shortcut_check: function(){
+        var img = "shortcut-add";
+        for(var list_shortcut=0; list_shortcut<this.session.sc_list.length; list_shortcut++){
+            if (this.session.sc_list[list_shortcut]['res_id'] == this.session.active_id)
+                {img = "shortcut-remove"}}
+        $('#shortcut_add_remove').addClass(img);
+        this.shortcut_add_remove();
+    },
+    shortcut_add_remove : function(session){
+        var self = this;
+        var shortcut_selector =$('#shortcut_add_remove');
+        var dataset_shortcut = new openerp.base.DataSet(this, 'ir.ui.view_sc');
+        shortcut_selector.click(function(ev,id){
+          if(shortcut_selector.hasClass("shortcut-remove")){
+                  var unlink_id = $("li[id="+self.session.active_id+"]").attr('shortcut-id');  
+                  dataset_shortcut.unlink([parseInt(unlink_id)]);
+                  shortcut_selector.removeClass("shortcut-remove");     
+                  shortcut_selector.addClass("shortcut-add"); }
+          else {
+                var data = {'user_id': self.uid, 'res_id': self.session.active_id, 'resource': 'ir.ui.menu', 'name': self.session.active_menu_name};
+                dataset_shortcut.create(data);
+                shortcut_selector.removeClass("shortcut-add");        
+                shortcut_selector.addClass("shortcut-remove"); }  
+           this.header = new openerp.base.Header(self, "oe_header");
+           this.header.shortcut_load(); 
+        });
+    },
 });
 
 /** @namespace */
@@ -482,7 +509,6 @@
         return $.when.apply(null, widget_starts);
     }
 });
-
 openerp.base.search.Input = openerp.base.search.Widget.extend( /** @lends openerp.base.search.Input# */{
     /**
      * @constructs

=== modified file 'addons/base/static/src/xml/base.xml'
--- addons/base/static/src/xml/base.xml	2011-08-04 15:20:45 +0000
+++ addons/base/static/src/xml/base.xml	2011-08-08 11:26:35 +0000
@@ -360,6 +360,15 @@
         </div>
 
     </div>
+	<div id="shortcuts" class="header_title">
+	</div>
+</t>
+<t t-name="Shortcuts">
+    <ul class="first">
+            <li t-foreach="shortcuts_pass" t-as="sc" t-att-id="sc.res_id"  t-att-shortcut-id = "sc.id" >
+                <a><t t-esc="sc.name"/></a>
+            </li>
+    </ul>
 </t>
 <t t-name="Menu">
     <table align="center">
@@ -867,7 +876,7 @@
     </button>
 </t>
 <t t-name="SearchView">
-    <h2 class="oe_view_title"><t t-esc="view.attrs['string']"/></h2>
+    <h2 class="oe_view_title"> <a id = "shortcut_add_remove" title="Add / Remove Shortcut..."> </a><t t-esc="view.attrs['string']"/></h2>
     <form class="oe_forms">
         <t t-call="SearchView.render_lines"/>
         <div class="oe_search-view-buttons" style="text-align: right;">

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to