diff options
| author | Géry Debongnie <ged@odoo.com> | 2015-03-10 08:47:55 +0100 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2015-03-18 09:09:22 +0100 |
| commit | 5e6171bb6f43a2e0c35152fe456125ec8e1fd77e (patch) | |
| tree | 3a016f21068fc724db379fdda3e7bfa16a8c08f1 | |
| parent | 90050c24bb3331189329414d81ace9e839387377 (diff) | |
[REF] various addons: update to the new module system
| -rw-r--r-- | addons/mail_tip/static/src/js/mail_tip.js | 25 | ||||
| -rw-r--r-- | addons/pad/static/src/js/pad.js | 169 | ||||
| -rw-r--r-- | addons/project/static/src/js/project.js | 85 | ||||
| -rw-r--r-- | addons/purchase_requisition/static/src/js/web_addons.js | 57 | ||||
| -rw-r--r-- | addons/report/static/src/js/qwebactionmanager.js | 179 | ||||
| -rw-r--r-- | addons/sales_team/static/src/js/sales_team.js | 88 | ||||
| -rw-r--r-- | addons/share/static/src/js/share.js | 222 |
7 files changed, 438 insertions, 387 deletions
diff --git a/addons/mail_tip/static/src/js/mail_tip.js b/addons/mail_tip/static/src/js/mail_tip.js index 1b6253d42dd..fefc95e5dbb 100644 --- a/addons/mail_tip/static/src/js/mail_tip.js +++ b/addons/mail_tip/static/src/js/mail_tip.js @@ -1,9 +1,16 @@ -openerp.mail_tip = function(session) { - session.mail.Thread.include({ - message_fetch: function() { - return this._super.apply(this, arguments).done(function() { - openerp.web.bus.trigger('chatter_messages_fetched'); - }); - } - }); -}; +odoo.define(['mail.mail', 'web.core'], function (require) { +"use strict"; + +var mail = require('mail.mail'); +var core = require('web.core'); + +mail.Thread.include({ + message_fetch: function() { + return this._super.apply(this, arguments).done(function() { + core.bus.trigger('chatter_messages_fetched'); + }); + } +}); + +}); + diff --git a/addons/pad/static/src/js/pad.js b/addons/pad/static/src/js/pad.js index a6f2ce69553..53b7d18b964 100644 --- a/addons/pad/static/src/js/pad.js +++ b/addons/pad/static/src/js/pad.js @@ -1,88 +1,91 @@ -openerp.pad = function(instance) { - var _t = instance.web._t; - - instance.web.form.FieldPad = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeWidgetMixin, { - template: 'FieldPad', - content: "", - init: function() { - var self = this; - this._super.apply(this, arguments); - this._configured_deferred = this.view.dataset.call('pad_is_configured').done(function(data) { - self.set("configured", !!data); - }).fail(function(data, event) { - event.preventDefault(); - self.set("configured", true); - }); - this.pad_loading_request = null; - }, - initialize_content: function() { - var self = this; - this.$('.oe_pad_switch').click(function() { - self.$el.toggleClass('oe_pad_fullscreen'); - self.$el.find('.oe_pad_switch').toggleClass('fa-expand fa-compress'); - self.view.$el.find('.oe_chatter').toggle(); - $('#oe_main_menu_navbar').toggle(); - }); - this._configured_deferred.always(function() { - var configured = self.get('configured'); - self.$(".oe_unconfigured").toggle(!configured); - self.$(".oe_configured").toggle(configured); - }); - this.render_value(); - }, - render_value: function() { - var self = this; - $.when(this._configured_deferred, this.pad_loading_request).always(function() { - if (! self.get('configured')) { - return; - }; - var value = self.get('value'); - if (self.get('effective_readonly')) { - if (_.str.startsWith(value, 'http')) { - self.pad_loading_request = self.view.dataset.call('pad_get_content', {url: value}).done(function(data) { - self.$('.oe_pad_content').removeClass('oe_pad_loading').html('<div class="oe_pad_readonly"><div>'); - self.$('.oe_pad_readonly').html(data); - }).fail(function() { - self.$('.oe_pad_content').text(_t('Unable to load pad')); - }); - } else { - self.$('.oe_pad_content').addClass('oe_pad_loading').show().text(_t("This pad will be initialized on first edit")); - } +odoo.define('pad.pad', ['web.core', 'web.form_common'], function (require) { + +var core = require('web.core'); +var form_common = require('web.form_common'); + +var _t = core._t; + +var FieldPad = form_common.AbstractField.extend(form_common.ReinitializeWidgetMixin, { + template: 'FieldPad', + content: "", + init: function() { + var self = this; + this._super.apply(this, arguments); + this._configured_deferred = this.view.dataset.call('pad_is_configured').done(function(data) { + self.set("configured", !!data); + }).fail(function(data, event) { + event.preventDefault(); + self.set("configured", true); + }); + this.pad_loading_request = null; + }, + initialize_content: function() { + var self = this; + this.$('.oe_pad_switch').click(function() { + self.$el.toggleClass('oe_pad_fullscreen'); + self.$el.find('.oe_pad_switch').toggleClass('fa-expand fa-compress'); + self.view.$el.find('.oe_chatter').toggle(); + $('#oe_main_menu_navbar').toggle(); + }); + this._configured_deferred.always(function() { + var configured = self.get('configured'); + self.$(".oe_unconfigured").toggle(!configured); + self.$(".oe_configured").toggle(configured); + }); + this.render_value(); + }, + render_value: function() { + var self = this; + $.when(this._configured_deferred, this.pad_loading_request).always(function() { + if (! self.get('configured')) { + return; + } + var value = self.get('value'); + if (self.get('effective_readonly')) { + if (_.str.startsWith(value, 'http')) { + self.pad_loading_request = self.view.dataset.call('pad_get_content', {url: value}).done(function(data) { + self.$('.oe_pad_content').removeClass('oe_pad_loading').html('<div class="oe_pad_readonly"><div>'); + self.$('.oe_pad_readonly').html(data); + }).fail(function() { + self.$('.oe_pad_content').text(_t('Unable to load pad')); + }); + } else { + self.$('.oe_pad_content').addClass('oe_pad_loading').show().text(_t("This pad will be initialized on first edit")); } - else { - var def = $.when(); - if (! value || !_.str.startsWith(value, 'http')) { - def = self.view.dataset.call('pad_generate_url', { - context: { - model: self.view.model, - field_name: self.name, - object_id: self.view.datarecord.id - }, - }).done(function(data) { - if (! data.url) { - self.set("configured", false); - } else { - self.set("value", data.url); - } - }); - } - def.then(function() { - value = self.get('value'); - if (_.str.startsWith(value, 'http')) { - var content = '<iframe width="100%" height="100%" frameborder="0" src="' + value + '?showChat=false&userName=' + self.session.username + '"></iframe>'; - self.$('.oe_pad_content').html(content); - self._dirty_flag = true; - } - else { - self.$('.oe_pad_content').text(value); + } + else { + var def = $.when(); + if (! value || !_.str.startsWith(value, 'http')) { + def = self.view.dataset.call('pad_generate_url', { + context: { + model: self.view.model, + field_name: self.name, + object_id: self.view.datarecord.id + }, + }).done(function(data) { + if (! data.url) { + self.set("configured", false); + } else { + self.set("value", data.url); } }); } - }); - }, - }); + def.then(function() { + value = self.get('value'); + if (_.str.startsWith(value, 'http')) { + var content = '<iframe width="100%" height="100%" frameborder="0" src="' + value + '?showChat=false&userName=' + self.session.username + '"></iframe>'; + self.$('.oe_pad_content').html(content); + self._dirty_flag = true; + } + else { + self.$('.oe_pad_content').text(value); + } + }); + } + }); + }, +}); + +core.form_widget_registry.add('pad', FieldPad); - instance.web.form.widgets = instance.web.form.widgets.extend({ - 'pad': 'instance.web.form.FieldPad', - }); -}; +});
\ No newline at end of file diff --git a/addons/project/static/src/js/project.js b/addons/project/static/src/js/project.js index 3c0f694b605..057a6913d9a 100644 --- a/addons/project/static/src/js/project.js +++ b/addons/project/static/src/js/project.js @@ -1,45 +1,52 @@ -openerp.project = function(openerp) { - openerp.web_kanban.KanbanView.include({ - project_display_members_names: function() { - /* - * Set avatar title for members. - * In kanban views, many2many fields only return a list of ids. - * We can implement return value of m2m fields like [(1,"Adminstration"),...]. - */ - var self = this; - var members_ids = []; +odoo.define('project.update_kanban', ['web_kanban.common', 'web_kanban.KanbanView', 'web.data', 'web.session'], function (require) { - // Collect members ids - self.$el.find('img[data-member_id]').each(function() { - members_ids.push($(this).data('member_id')); - }); +var kanban_common = require('web_kanban.common'); +var KanbanView = require('web_kanban.KanbanView'); +var data = require('web.data'); +var session = require('web.session'); + +KanbanView.include({ + project_display_members_names: function() { + /* + * Set avatar title for members. + * In kanban views, many2many fields only return a list of ids. + * We can implement return value of m2m fields like [(1,"Adminstration"),...]. + */ + var self = this; + var members_ids = []; + + // Collect members ids + self.$el.find('img[data-member_id]').each(function() { + members_ids.push($(this).data('member_id')); + }); - // Find their matching names - var dataset = new openerp.web.DataSetSearch(self, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]); - dataset.read_slice(['id', 'name']).done(function(result) { - _.each(result, function(v, k) { - // Set the proper value in the DOM - self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tooltip(); - }); + // Find their matching names + var dataset = new data.DataSetSearch(self, 'res.users', session.context, [['id', 'in', _.uniq(members_ids)]]); + dataset.read_slice(['id', 'name']).done(function(result) { + _.each(result, function(v, k) { + // Set the proper value in the DOM + self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tooltip(); }); - }, - on_groups_started: function() { - var self = this; - self._super.apply(self, arguments); + }); + }, + on_groups_started: function() { + var self = this; + self._super.apply(self, arguments); + + if (self.dataset.model === 'project.project') { + self.project_display_members_names(); + } + } +}); - if (self.dataset.model === 'project.project') { - self.project_display_members_names(); - } +kanban_common.KanbanRecord.include({ + on_card_clicked: function() { + if (this.view.dataset.model === 'project.project') { + this.$('.oe_kanban_project_list a').first().click(); + } else { + this._super.apply(this, arguments); } - }); + }, +}); - openerp.web_kanban.KanbanRecord.include({ - on_card_clicked: function() { - if (this.view.dataset.model === 'project.project') { - this.$('.oe_kanban_project_list a').first().click(); - } else { - this._super.apply(this, arguments); - } - }, - }); -}; +}); diff --git a/addons/purchase_requisition/static/src/js/web_addons.js b/addons/purchase_requisition/static/src/js/web_addons.js index 7b58feb2555..571b69d3ce0 100644 --- a/addons/purchase_requisition/static/src/js/web_addons.js +++ b/addons/purchase_requisition/static/src/js/web_addons.js @@ -1,27 +1,34 @@ -openerp.purchase_requisition = function(instance) { - var QWeb = instance.web.qweb, - _t = instance.web._t; +odoo.define('purchase_requisition.purchase_requisition', ['web.core', 'web.ListView', 'web.Model'], function (require) { +"use strict"; - instance.web.purchase_requisition = instance.web.purchase_requisition || {}; +var core = require('web.core'); +var Model = require('web.Model'); +var ListView = require('web.ListView'); - instance.web.views.add('tree_purchase_order_line_compare', 'instance.web.purchase_requisition.CompareListView'); - instance.web.purchase_requisition.CompareListView = instance.web.ListView.extend({ - init: function() { - var self = this; - this._super.apply(this, arguments); - this.on('list_view_loaded', this, function() { - if(self.__parentedParent.$el.find('.oe_generate_po').length == 0){ - var button = $("<button type='button' class='oe_button oe_highlight oe_generate_po'>Generate PO</button>") - .click(this.proxy('generate_purchase_order')); - self.__parentedParent.$el.find('.oe_list_buttons').append(button); - } - }); - }, - generate_purchase_order: function () { - var self = this; - new instance.web.Model(self.dataset.model).call("generate_po",[self.dataset.context.tender_id,self.dataset.context]).then(function(result) { - self.ViewManager.ActionManager.history_back(); - }); - }, - }); -} +var QWeb = core.qweb; +var _t = core._t; + + +var CompareListView = ListView.extend({ + init: function() { + var self = this; + this._super.apply(this, arguments); + this.on('list_view_loaded', this, function() { + if(self.__parentedParent.$el.find('.oe_generate_po').length == 0){ + var button = $("<button type='button' class='oe_button oe_highlight oe_generate_po'>Generate PO</button>") + .click(this.proxy('generate_purchase_order')); + self.__parentedParent.$el.find('.oe_list_buttons').append(button); + } + }); + }, + generate_purchase_order: function () { + var self = this; + new Model(self.dataset.model).call("generate_po",[self.dataset.context.tender_id,self.dataset.context]).then(function(result) { + self.ViewManager.ActionManager.history_back(); + }); + }, +}); + +core.view_registry.add('tree_purchase_order_line_compare', CompareListView); + +}); diff --git a/addons/report/static/src/js/qwebactionmanager.js b/addons/report/static/src/js/qwebactionmanager.js index 74de70d03dd..339ae7d20c6 100644 --- a/addons/report/static/src/js/qwebactionmanager.js +++ b/addons/report/static/src/js/qwebactionmanager.js @@ -1,97 +1,106 @@ -openerp.report = function(instance) { - var wkhtmltopdf_state; +odoo.define('report.report', ['web.ActionManager', 'web.core', 'web.crash_manager', 'web.framework', 'web.session'], function (require) { - var trigger_download = function(session, response, c, action, options) { - session.get_file({ - url: '/report/download', - data: {data: JSON.stringify(response)}, - complete: openerp.web.unblockUI, - error: c.rpc_error.bind(c), - success: function(){ - if (action && options && !action.dialog) { - options.on_close(); - } - }, - }); - }; +var ActionManager = require('web.ActionManager'); +var core = require('web.core'); +var crash_manager = require('web.crash_manager'); +var framework = require('web.framework'); +var session = require('web.session'); - instance.web.ActionManager = instance.web.ActionManager.extend({ - ir_actions_report_xml: function(action, options) { - var self = this; - instance.web.blockUI(); - action = _.clone(action); - _t = instance.web._t; +var _t = core._t; +var wkhtmltopdf_state; - // QWeb reports - if ('report_type' in action && (action.report_type == 'qweb-html' || action.report_type == 'qweb-pdf' || action.report_type == 'controller')) { - var report_url = ''; - switch (action.report_type) { - case 'qweb-html': - report_url = '/report/html/' + action.report_name; - break; - case 'qweb-pdf': - report_url = '/report/pdf/' + action.report_name; - break; - case 'controller': - report_url = action.report_file; - break; - default: - report_url = '/report/html/' + action.report_name; - break; - } +var trigger_download = function(session, response, c, action, options) { + session.get_file({ + url: '/report/download', + data: {data: JSON.stringify(response)}, + complete: framework.unblockUI, + error: c.rpc_error.bind(c), + success: function(){ + if (action && options && !action.dialog) { + options.on_close(); + } + }, + }); +}; - // generic report: no query string - // particular: query string of action.data.form and context - if (!('data' in action) || !(action.data)) { - if ('active_ids' in action.context) { - report_url += "/" + action.context.active_ids.join(','); - } - } else { - report_url += "?options=" + encodeURIComponent(JSON.stringify(action.data)); - report_url += "&context=" + encodeURIComponent(JSON.stringify(action.context)); +ActionManager.include({ + ir_actions_report_xml: function(action, options) { + var self = this; + framework.blockUI(); + action = _.clone(action); + _t = core._t; + + // QWeb reports + if ('report_type' in action && (action.report_type == 'qweb-html' || action.report_type == 'qweb-pdf' || action.report_type == 'controller')) { + var report_url = ''; + switch (action.report_type) { + case 'qweb-html': + report_url = '/report/html/' + action.report_name; + break; + case 'qweb-pdf': + report_url = '/report/pdf/' + action.report_name; + break; + case 'controller': + report_url = action.report_file; + break; + default: + report_url = '/report/html/' + action.report_name; + break; + } + + // generic report: no query string + // particular: query string of action.data.form and context + if (!('data' in action) || !(action.data)) { + if ('active_ids' in action.context) { + report_url += "/" + action.context.active_ids.join(','); } + } else { + report_url += "?options=" + encodeURIComponent(JSON.stringify(action.data)); + report_url += "&context=" + encodeURIComponent(JSON.stringify(action.context)); + } - var response = new Array(); - response[0] = report_url; - response[1] = action.report_type; - var c = openerp.webclient.crashmanager; + var response = new Array(); + response[0] = report_url; + response[1] = action.report_type; + var c = crash_manager; - if (action.report_type == 'qweb-html') { - window.open(report_url, '_blank', 'scrollbars=1,height=900,width=1280'); - instance.web.unblockUI(); - } else if (action.report_type === 'qweb-pdf') { - // Trigger the download of the pdf/controller report - (wkhtmltopdf_state = wkhtmltopdf_state || openerp.session.rpc('/report/check_wkhtmltopdf')).then(function (presence) { - // Fallback on html if wkhtmltopdf is not installed or if OpenERP is started with one worker - if (presence === 'install') { - self.do_notify(_t('Report'), _t('Unable to find Wkhtmltopdf on this \ + if (action.report_type == 'qweb-html') { + window.open(report_url, '_blank', 'scrollbars=1,height=900,width=1280'); + framework.unblockUI(); + } else if (action.report_type === 'qweb-pdf') { + // Trigger the download of the pdf/controller report + (wkhtmltopdf_state = wkhtmltopdf_state || session.rpc('/report/check_wkhtmltopdf')).then(function (presence) { + // Fallback on html if wkhtmltopdf is not installed or if OpenERP is started with one worker + if (presence === 'install') { + self.do_notify(_t('Report'), _t('Unable to find Wkhtmltopdf on this \ system. The report will be shown in html.<br><br><a href="http://wkhtmltopdf.org/" target="_blank">\ wkhtmltopdf.org</a>'), true); - report_url = report_url.substring(12) - window.open('/report/html/' + report_url, '_blank', 'height=768,width=1024'); - instance.web.unblockUI(); - return; - } else if (presence === 'workers') { - self.do_notify(_t('Report'), _t('You need to start OpenERP with at least two \ + report_url = report_url.substring(12); + window.open('/report/html/' + report_url, '_blank', 'height=768,width=1024'); + framework.unblockUI(); + return; + } else if (presence === 'workers') { + self.do_notify(_t('Report'), _t('You need to start OpenERP with at least two \ workers to print a pdf version of the reports.'), true); - report_url = report_url.substring(12) - window.open('/report/html/' + report_url, '_blank', 'height=768,width=1024'); - instance.web.unblockUI(); - return; - } else if (presence === 'upgrade') { - self.do_notify(_t('Report'), _t('You should upgrade your version of\ - Wkhtmltopdf to at least 0.12.0 in order to get a correct display of headers and footers as well as\ - support for table-breaking between pages.<br><br><a href="http://wkhtmltopdf.org/" \ - target="_blank">wkhtmltopdf.org</a>'), true); - } - return trigger_download(self.session, response, c, action, options); - }); - } else if (action.report_type === 'controller') { + report_url = report_url.substring(12); + window.open('/report/html/' + report_url, '_blank', 'height=768,width=1024'); + framework.unblockUI(); + return; + } else if (presence === 'upgrade') { + self.do_notify(_t('Report'), _t('You should upgrade your version of\ +Wkhtmltopdf to at least 0.12.0 in order to get a correct display of headers and footers as well as\ +support for table-breaking between pages.<br><br><a href="http://wkhtmltopdf.org/" \ +target="_blank">wkhtmltopdf.org</a>'), true); + } return trigger_download(self.session, response, c, action, options); - } - } else { - return self._super(action, options); - } + }); + } else if (action.report_type === 'controller') { + return trigger_download(self.session, response, c, action, options); + } + } else { + return self._super(action, options); } - }); -}; + } +}); + +}); diff --git a/addons/sales_team/static/src/js/sales_team.js b/addons/sales_team/static/src/js/sales_team.js index 93f6c4dc536..8a48c03a3fe 100644 --- a/addons/sales_team/static/src/js/sales_team.js +++ b/addons/sales_team/static/src/js/sales_team.js @@ -1,45 +1,53 @@ -openerp.crm = function(openerp) { - openerp.web_kanban.KanbanView.include({ - crm_display_members_names: function() { - /* - * Set avatar title for members. - * In kanban views, many2many fields only return a list of ids. - * We can implement return value of m2m fields like [(1,"Adminstration"),...]. - */ - var self = this; - var members_ids = []; +odoo.define('sales_team.update_kanban', ['web_kanban.KanbanView', 'web_kanban.common', 'web.data', 'web.session'], function (require) { +"use strict"; - // Collect members ids - self.$el.find('img[data-member_id]').each(function() { - members_ids.push($(this).data('member_id')); - }); +var KanbanView = require('web_kanban.KanbanView'); +var kanban_common = require('web_kanban.common'); +var data = require('web.data'); +var session = require('web.session'); + +KanbanView.include({ + crm_display_members_names: function() { + /* + * Set avatar title for members. + * In kanban views, many2many fields only return a list of ids. + * We can implement return value of m2m fields like [(1,"Adminstration"),...]. + */ + var self = this; + var members_ids = []; - // Find their matching names - var dataset = new openerp.web.DataSetSearch(self, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]); - dataset.read_slice(['id', 'name']).done(function(result) { - _.each(result, function(v, k) { - // Set the proper value in the DOM - self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tooltip(); - }); + // Collect members ids + self.$el.find('img[data-member_id]').each(function() { + members_ids.push($(this).data('member_id')); + }); + + // Find their matching names + var dataset = new data.DataSetSearch(self, 'res.users', session.context, [['id', 'in', _.uniq(members_ids)]]); + dataset.read_slice(['id', 'name']).done(function(result) { + _.each(result, function(v) { + // Set the proper value in the DOM + self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tooltip(); }); - }, - on_groups_started: function() { - var self = this; - self._super.apply(self, arguments); + }); + }, + on_groups_started: function() { + var self = this; + self._super.apply(self, arguments); + + if (self.dataset.model === 'crm.team') { + self.crm_display_members_names(); + } + }, +}); - if (self.dataset.model === 'crm.team') { - self.crm_display_members_names(); - } - }, - }); +kanban_common.KanbanRecord.include({ + on_card_clicked: function() { + if (this.view.dataset.model === 'crm.team') { + this.$('.oe_kanban_crm_salesteams_list a').first().click(); + } else { + this._super.apply(this, arguments); + } + }, +}); - openerp.web_kanban.KanbanRecord.include({ - on_card_clicked: function() { - if (this.view.dataset.model === 'crm.team') { - this.$('.oe_kanban_crm_salesteams_list a').first().click(); - } else { - this._super.apply(this, arguments); - } - }, - }); -}; +}); diff --git a/addons/share/static/src/js/share.js b/addons/share/static/src/js/share.js index 530b07c2b71..6a8d142ab7e 100644 --- a/addons/share/static/src/js/share.js +++ b/addons/share/static/src/js/share.js @@ -1,122 +1,132 @@ +odoo.define(['mail.mail', 'web.core', 'web.data', 'web.Model', 'web.pyeval', 'web.session', 'web.Sidebar', 'web.ViewManager'], function (require) { -openerp.share = function(session) { - var _t = session.web._t; - var has_action_id = false; +var mail = require('mail.mail'); +var core = require('web.core'); +var data = require('web.data'); +var Model = require('web.Model'); +var pyeval = require('web.pyeval'); +var session = require('web.session'); +var Sidebar = require('web.Sidebar'); +var ViewManager = require('web.ViewManager'); - function launch_wizard(self, view, user_type, invite) { - var action = view.getParent().action; - 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 session.web.CompoundDomain(domain, [['id', '=', view.datarecord.id]]); - } - if (view.fields_view.type == 'form') rec_name = view.datarecord.name; - else rec_name = ''; - session.web.pyeval.eval_domains_and_contexts({ - domains: [domain], - contexts: [Share.get_context()] - }).done(function (result) { - Share.create({ - name: action.name, - record_name: rec_name, - domain: result.domain, - action_id: action.id, - user_type: user_type || 'embedded', - view_type: view.fields_view.type, - invite: invite || false, - }).done(function(share_id) { - var step1 = Share.call('go_step_1', [[share_id], Share.get_context()]).done(function(result) { - var action = result; - self.do_action(action); - }); +var _t = core._t; +var has_action_id = false; + +function launch_wizard(self, view, user_type, invite) { + var action = view.getParent().action; + var Share = new data.DataSet(self, 'share.wizard', view.dataset.get_context()); + var domain = new data.CompoundDomain(view.dataset.domain); + var rec_name; + if (view.fields_view.type == 'form') { + domain = new data.CompoundDomain(domain, [['id', '=', view.datarecord.id]]); + } + if (view.fields_view.type == 'form') rec_name = view.datarecord.name; + else rec_name = ''; + pyeval.eval_domains_and_contexts({ + domains: [domain], + contexts: [Share.get_context()] + }).done(function (result) { + Share.create({ + name: action.name, + record_name: rec_name, + domain: result.domain, + action_id: action.id, + user_type: user_type || 'embedded', + view_type: view.fields_view.type, + invite: invite || false, + }).done(function(share_id) { + Share.call('go_step_1', [[share_id], Share.get_context()]).done(function(result) { + var action = result; + self.do_action(action); }); }); - } + }); +} - function has_share(yes, no) { - if (!session.session.share_flag) { - session.session.share_flag = $.Deferred(function() { - var func = new session.web.Model("share.wizard").get_func("has_share"); - func(session.session.uid).then(function(res) { - if(res) { - session.session.share_flag.resolve(); - } else { - session.session.share_flag.reject(); - } - }); +function has_share(yes, no) { + if (!session.share_flag) { + session.share_flag = $.Deferred(function() { + var func = new Model("share.wizard").get_func("has_share"); + func(session.uid).then(function(res) { + if(res) { + session.share_flag.resolve(); + } else { + session.share_flag.reject(); + } }); - } - session.session.share_flag.done(yes).fail(no); + }); } + session.share_flag.done(yes).fail(no); +} - /* Extend the Sidebar to add Share and Embed links in the 'More' menu */ - session.web.Sidebar = session.web.Sidebar.extend({ +/* Extend the Sidebar to add Share and Embed links in the 'More' menu */ +Sidebar.include({ - start: function() { - var self = this; - this._super(this); - has_share(function() { - self.add_items('other', [ - { label: _t('Share'), - callback: self.on_click_share, - classname: 'oe_share' }, - { label: _t('Embed'), - callback: self.on_click_share_link, - classname: 'oe_share' }, - ]); - }); - }, + start: function() { + var self = this; + this._super(this); + has_share(function() { + self.add_items('other', [ + { label: _t('Share'), + callback: self.on_click_share, + classname: 'oe_share' }, + { label: _t('Embed'), + callback: self.on_click_share_link, + classname: 'oe_share' }, + ]); + }); + }, - on_click_share: function(item) { - var view = this.getParent() - launch_wizard(this, view, 'emails', false); - }, + on_click_share: function() { + var view = this.getParent(); + launch_wizard(this, view, 'emails', false); + }, - on_click_share_link: function(item) { - var view = this.getParent() - launch_wizard(this, view, 'embedded', false); - }, - }); + on_click_share_link: function() { + var view = this.getParent(); + launch_wizard(this, view, 'embedded', false); + }, +}); - /** - * Extends mail (Chatter widget) - * - show the 'invite' button' only we came on the form view through - * an action. We do this because 'invite' is based on the share - * mechanism, and it tries to share an action. - */ - session.mail.RecordThread.include( { - start: function() { - start_res = this._super.apply(this, arguments); - if (has_action_id) { - this.$el.find('button.oe_share_invite').show(); - } - return start_res; +/** + * Extends mail (Chatter widget) + * - show the 'invite' button' only we came on the form view through + * an action. We do this because 'invite' is based on the share + * mechanism, and it tries to share an action. + */ +mail.RecordThread.include( { + start: function() { + var start_res = this._super.apply(this, arguments); + if (has_action_id) { + this.$el.find('button.oe_share_invite').show(); } - }); + return start_res; + } +}); - session.web.ViewManager.include({ - start: function() { - var self = this; - this.check_if_action_is_defined(); - has_share(function() { - self.$el.delegate('button.oe_share_invite', 'click', self.on_click_share_invite); - }); - return this._super.apply(this, arguments); - }, - - check_if_action_is_defined: function() { - if (this.action && this.action.id) { - has_action_id = true; - } - else { - has_action_id = false; - } - }, +ViewManager.include({ + start: function() { + var self = this; + this.check_if_action_is_defined(); + has_share(function() { + self.$el.delegate('button.oe_share_invite', 'click', self.on_click_share_invite); + }); + return this._super.apply(this, arguments); + }, - on_click_share_invite: function(e) { - e.preventDefault(); - launch_wizard(this, this.views[this.active_view].controller, 'emails', true); - }, - }); -}; + check_if_action_is_defined: function() { + if (this.action && this.action.id) { + has_action_id = true; + } + else { + has_action_id = false; + } + }, + + on_click_share_invite: function(e) { + e.preventDefault(); + launch_wizard(this, this.views[this.active_view].controller, 'emails', true); + }, +}); +}); |
