[FIX] share fix and restore if_has_share
authorAntony Lesuisse <al@openerp.com>
Tue, 27 Dec 2011 20:36:18 +0000 (21:36 +0100)
committerAntony Lesuisse <al@openerp.com>
Tue, 27 Dec 2011 20:36:18 +0000 (21:36 +0100)
bzr revid: al@openerp.com-20111227203618-xzmeix809f2smniv

addons/share/static/src/js/share.js

index a760f41..05f45aa 100644 (file)
@@ -1,12 +1,12 @@
 
-openerp.share = function(instance) {
+openerp.share = function(session) {
 
 function launch_wizard(self, view, user_type) {
         var action = view.widget_parent.action;
-        var Share = new instance.web.DataSet(self, 'share.wizard', view.dataset.get_context());
-        var domain = new instance.web.CompoundDomain(view.dataset.domain);
+        var Share = new session.web.DataSet(self, 'share.wizard', view.dataset.get_context());
+        var domain = new session.web.CompoundDomain(view.dataset.domain);
         if (view.fields_view.type == 'form') {
-            domain = new instance.web.CompoundDomain(domain, [['id', '=', view.datarecord.id]]);
+            domain = new session.web.CompoundDomain(domain, [['id', '=', view.datarecord.id]]);
         }
         self.rpc('/web/session/eval_domain_and_context', {
             domains: [domain],
@@ -28,15 +28,33 @@ function launch_wizard(self, view, user_type) {
         });
 }
 
-instance.web.Sidebar = instance.web.Sidebar.extend({
+function has_share(yes, no) {
+    if (!session.connection.share_flag) {
+        session.connection.share_flag = $.Deferred(function() {
+            var func = new session.web.Model("share.wizard").get_func("has_share");
+            func(session.connection.uid).pipe(function(res) {
+                if(res) {
+                    session.connection.share_flag.resolve();
+                } else {
+                    session.connection.share_flag.reject();
+                }
+            });
+        });
+    }
+    session.connection.share_flag.done(yes).fail(no);
+}
+
+session.web.Sidebar = session.web.Sidebar.extend({
     add_default_sections: function() {
         this._super();
         var self = this;
-        self.add_items('other', [{
-            label: 'Share',
-            callback: self.on_sidebar_click_share,
-            classname: 'oe-share',
-        }]);
+        has_share(function() {
+            self.add_items('other', [{
+                label: 'Share',
+                callback: self.on_sidebar_click_share,
+                classname: 'oe-share',
+            }]);
+        });
     },
     on_sidebar_click_share: function(item) {
         var view = this.widget_parent
@@ -44,11 +62,16 @@ instance.web.Sidebar = instance.web.Sidebar.extend({
     },
 });
 
-instance.web.ViewManagerAction.include({
+session.web.ViewManagerAction.include({
     start: function() {
         var self = this;
-        self.$element.find('a.oe-share_link').click(self.on_click_share_link);
-        self.$element.find('a.oe-share').click(self.on_click_share);
+        has_share(function() {
+            self.$element.find('a.oe-share_link').click(self.on_click_share_link);
+            self.$element.find('a.oe-share').click(self.on_click_share);
+        }, function() {
+            self.$element.find('a.oe-share_link').remove();
+            self.$element.find('a.oe-share').remove();
+        });
         return this._super.apply(this, arguments);
     },
     on_click_share_link: function(e) {
@@ -62,3 +85,4 @@ instance.web.ViewManagerAction.include({
 });
 
 };
+