[FIX] Dashboard: merge domain & context of board action to loaded action
[odoo/odoo.git] / addons / web_dashboard / static / src / js / dashboard.js
index aedbe0f..ce7e877 100644 (file)
@@ -149,12 +149,13 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
             view_mode = action_attrs.view_mode;
 
         if (action_attrs.context) {
-            action.context = action_attrs.context;
+            action.context = _.extend((action.context || {}), action_attrs.context);
         }
         if (action_attrs.domain) {
-            action.domain = action_attrs.domain;
+            action.domain = action.domain || [];
+            action.domain.unshift.apply(action.domain, action_attrs.domain);
         }
-        var action_orig = _.extend({}, action);
+        var action_orig = _.extend({ flags : {} }, action);
 
         if (view_mode && view_mode != action.view_mode) {
             var action_view_mode = action.view_mode.split(',');
@@ -195,7 +196,7 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
             var action_id = parseInt(action_attrs.creatable, 10);
             $action.parent().find('button.oe_dashboard_button_create').click(function() {
                 if (isNaN(action_id)) {
-                    action.flags.default_view = 'form';
+                    action_orig.flags.default_view = 'form';
                     self.do_action(action_orig);
                 } else {
                     self.rpc('/web/action/load', {
@@ -279,20 +280,29 @@ openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({
     template: 'ConfigOverview',
     init: function (parent) {
         this._super(parent);
-        this.dataset = new openerp.web.DataSetSearch(
-                this, 'ir.actions.todo');
-        this.dataset.domain = [['type', '!=', 'automatic']];
+        this.user = _.extend(new openerp.web.DataSet(this, 'res.users'), {
+            index: 0,
+            ids: [this.session.uid]
+        });
+        this.dataset = new openerp.web.DataSetSearch(this, 'ir.actions.todo');
     },
     start: function () {
         this._super();
-        $.when(this.dataset.read_slice(['state', 'action_id', 'category_id']),
-               this.dataset.call('progress'))
-            .then(this.on_records_loaded);
-    },
-    on_records_loaded: function (read_response, progress_response) {
-        var records = read_response,
-           progress = progress_response[0];
+        var self = this;
+        return this.user.read_index(['groups_id']).pipe(function (record) {
+            var todos_filter = [
+                ['type', '!=', 'automatic'],
+                '|', ['groups_id', '=', false],
+                     ['groups_id', 'in', record['groups_id']]];
+            return $.when(
+                self.dataset.read_slice(['state', 'action_id', 'category_id'],{
+                        domain: todos_filter }),
+                self.dataset.call('progress').pipe(
+                        function (arg) { return arg; }, null))
+        }, null).then(this.on_records_loaded);
 
+    },
+    on_records_loaded: function (records, progress) {
         var grouped_todos = _(records).chain()
             .map(function (record) {
                 return {
@@ -389,6 +399,7 @@ openerp.web_dashboard.ApplicationTiles = openerp.web.Widget.extend({
     },
     start: function() {
         var self = this;
+        openerp.webclient.menu.do_hide_secondary();
         var domain = [['application','=',true], ['state','=','installed'], ['name', '!=', 'base']];
         var ds = new openerp.web.DataSetSearch(this, 'ir.module.module',{},domain);
         ds.read_slice(['id'], {}, function(result) {
@@ -429,8 +440,8 @@ openerp.web.client_actions.add( 'board.application.installer', 'openerp.web_dash
 openerp.web_dashboard.ApplicationInstaller = openerp.web.Widget.extend({
     template: 'web_dashboard.ApplicationInstaller',
     start: function () {
+        // TODO menu hide
         var r = this._super();
-        //$('.secondary_menu', this.$element.closest('.openerp')).hide();
         this.action_manager = new openerp.web.ActionManager(this);
         this.action_manager.appendTo(this.$element.find('.oe_installer'));
         this.action_manager.do_action({