From 511e9a0ea48a0fd2f4868d05384aa19e6c3c5d23 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 12 Oct 2011 01:36:27 +0200 Subject: [PATCH] [IMP] merged application tile with default home bzr revid: al@openerp.com-20111011233627-6nxfbs64lwzszh7t --- addons/web/static/src/js/core.js | 1 + addons/web_dashboard/controllers.py | 12 +- .../static/src/css/dashboard.css | 43 +++++ .../src/img/installer_account_voucher.png} | Bin .../static/src/img/installer_crm.png} | Bin .../static/src/img/installer_hr.png} | Bin .../static/src/img/installer_knowledge.png} | Bin .../static/src/img/installer_marketing.png} | Bin .../static/src/img/installer_mrp.png} | Bin .../src/img/installer_point_of_sale.png} | Bin .../src/img/installer_profile_tools.png} | Bin .../static/src/img/installer_project.png} | Bin .../static/src/img/installer_purchase.png} | Bin .../static/src/img/installer_sale.png} | Bin .../static/src/img/installer_stock.png} | Bin .../web_dashboard/static/src/js/dashboard.js | 178 +++++++++++++++--- .../static/src/xml/web_dashboard.xml | 32 ++++ addons/web_default_home/__init__.py | 0 addons/web_default_home/__openerp__.py | 9 - addons/web_default_home/po/de.po | 38 ---- addons/web_default_home/po/es_EC.po | 38 ---- addons/web_default_home/po/et.po | 38 ---- addons/web_default_home/po/it.po | 38 ---- addons/web_default_home/po/nl_BE.po | 38 ---- .../web_default_home/po/web_default_home.pot | 39 ---- .../web_default_home/static/src/css/home.css | 42 ----- addons/web_default_home/static/src/js/home.js | 127 ------------- .../static/src/xml/web_default_home.xml | 34 ---- 28 files changed, 234 insertions(+), 473 deletions(-) rename addons/{web_default_home/static/src/img/account_voucher.png => web_dashboard/static/src/img/installer_account_voucher.png} (100%) rename addons/{web_default_home/static/src/img/crm.png => web_dashboard/static/src/img/installer_crm.png} (100%) rename addons/{web_default_home/static/src/img/hr.png => web_dashboard/static/src/img/installer_hr.png} (100%) rename addons/{web_default_home/static/src/img/knowledge.png => web_dashboard/static/src/img/installer_knowledge.png} (100%) rename addons/{web_default_home/static/src/img/marketing.png => web_dashboard/static/src/img/installer_marketing.png} (100%) rename addons/{web_default_home/static/src/img/mrp.png => web_dashboard/static/src/img/installer_mrp.png} (100%) rename addons/{web_default_home/static/src/img/point_of_sale.png => web_dashboard/static/src/img/installer_point_of_sale.png} (100%) rename addons/{web_default_home/static/src/img/profile_tools.png => web_dashboard/static/src/img/installer_profile_tools.png} (100%) rename addons/{web_default_home/static/src/img/project.png => web_dashboard/static/src/img/installer_project.png} (100%) rename addons/{web_default_home/static/src/img/purchase.png => web_dashboard/static/src/img/installer_purchase.png} (100%) rename addons/{web_default_home/static/src/img/sale.png => web_dashboard/static/src/img/installer_sale.png} (100%) rename addons/{web_default_home/static/src/img/stock.png => web_dashboard/static/src/img/installer_stock.png} (100%) delete mode 100644 addons/web_default_home/__init__.py delete mode 100644 addons/web_default_home/__openerp__.py delete mode 100644 addons/web_default_home/po/de.po delete mode 100644 addons/web_default_home/po/es_EC.po delete mode 100644 addons/web_default_home/po/et.po delete mode 100644 addons/web_default_home/po/it.po delete mode 100644 addons/web_default_home/po/nl_BE.po delete mode 100644 addons/web_default_home/po/web_default_home.pot delete mode 100644 addons/web_default_home/static/src/css/home.css delete mode 100644 addons/web_default_home/static/src/js/home.js delete mode 100644 addons/web_default_home/static/src/xml/web_default_home.xml diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index da9c21bf551..0d5b95ef669 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -74,6 +74,7 @@ openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1); } return this; } + // This should NOT be used, like callbackenable it's too hackish not enough javasish Class.include = function (properties) { for (var name in properties) { if (typeof properties[name] !== 'function' diff --git a/addons/web_dashboard/controllers.py b/addons/web_dashboard/controllers.py index 37fe039366c..ebf74837899 100644 --- a/addons/web_dashboard/controllers.py +++ b/addons/web_dashboard/controllers.py @@ -22,7 +22,11 @@ class Widgets(openerpweb.Controller): _cp_path = '/web_dashboard/widgets' @openerpweb.httprequest - def content(self, request, widget_id): - return WIDGET_CONTENT_PATTERN % request.session.model('res.widget').read( - [widget_id], ['content'], request.session.eval_context(request.context) - )[0] + def content(self, req, widget_id): + Widget = req.session.model('res.widget') + w = Widget.read([widget_id], ['content'], req.session.eval_context(req.context)) + if w: + r = WIDGET_CONTENT_PATTERN % w[0] + else: + r = "Widget unavailable" + return r diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css index e3178c58a4a..4d48cd4ffbd 100644 --- a/addons/web_dashboard/static/src/css/dashboard.css +++ b/addons/web_dashboard/static/src/css/dashboard.css @@ -257,3 +257,46 @@ .openerp .oe-dashboard-action .view-manager-main-content { padding: 2px; } + +.oe-static-home { + padding: 0.5em 0.5em; + text-align: center; +} +.oe-static-home h1 { + margin: 0 0 0.3em +} +.oe-static-home-banner { + display: inline-block; + margin: auto 0; + padding: 0.5em 5em; + text-align: left; +} +.oe-static-home-banner li { + font-size: 150%; + font-weight: bold; +} +.oe-static-home address { + font-style: normal; + padding-left: 2em; +} + +.oe-static-home-tiles { + text-align: left; +} +.oe-static-home-tiles td { + vertical-align: top; +} +.oe-static-home-tile { + margin: 0.5em; + padding: 0 1em; +} +.oe-static-home-tile-logo { + margin-right: 0.5em; +} +.oe-static-home-tile-text h2 { + margin-top: 0; + margin-bottom: 0.2em; +} +.oe-static-home-tile-text p { + margin: 0.5em 0; +} diff --git a/addons/web_default_home/static/src/img/account_voucher.png b/addons/web_dashboard/static/src/img/installer_account_voucher.png similarity index 100% rename from addons/web_default_home/static/src/img/account_voucher.png rename to addons/web_dashboard/static/src/img/installer_account_voucher.png diff --git a/addons/web_default_home/static/src/img/crm.png b/addons/web_dashboard/static/src/img/installer_crm.png similarity index 100% rename from addons/web_default_home/static/src/img/crm.png rename to addons/web_dashboard/static/src/img/installer_crm.png diff --git a/addons/web_default_home/static/src/img/hr.png b/addons/web_dashboard/static/src/img/installer_hr.png similarity index 100% rename from addons/web_default_home/static/src/img/hr.png rename to addons/web_dashboard/static/src/img/installer_hr.png diff --git a/addons/web_default_home/static/src/img/knowledge.png b/addons/web_dashboard/static/src/img/installer_knowledge.png similarity index 100% rename from addons/web_default_home/static/src/img/knowledge.png rename to addons/web_dashboard/static/src/img/installer_knowledge.png diff --git a/addons/web_default_home/static/src/img/marketing.png b/addons/web_dashboard/static/src/img/installer_marketing.png similarity index 100% rename from addons/web_default_home/static/src/img/marketing.png rename to addons/web_dashboard/static/src/img/installer_marketing.png diff --git a/addons/web_default_home/static/src/img/mrp.png b/addons/web_dashboard/static/src/img/installer_mrp.png similarity index 100% rename from addons/web_default_home/static/src/img/mrp.png rename to addons/web_dashboard/static/src/img/installer_mrp.png diff --git a/addons/web_default_home/static/src/img/point_of_sale.png b/addons/web_dashboard/static/src/img/installer_point_of_sale.png similarity index 100% rename from addons/web_default_home/static/src/img/point_of_sale.png rename to addons/web_dashboard/static/src/img/installer_point_of_sale.png diff --git a/addons/web_default_home/static/src/img/profile_tools.png b/addons/web_dashboard/static/src/img/installer_profile_tools.png similarity index 100% rename from addons/web_default_home/static/src/img/profile_tools.png rename to addons/web_dashboard/static/src/img/installer_profile_tools.png diff --git a/addons/web_default_home/static/src/img/project.png b/addons/web_dashboard/static/src/img/installer_project.png similarity index 100% rename from addons/web_default_home/static/src/img/project.png rename to addons/web_dashboard/static/src/img/installer_project.png diff --git a/addons/web_default_home/static/src/img/purchase.png b/addons/web_dashboard/static/src/img/installer_purchase.png similarity index 100% rename from addons/web_default_home/static/src/img/purchase.png rename to addons/web_dashboard/static/src/img/installer_purchase.png diff --git a/addons/web_default_home/static/src/img/sale.png b/addons/web_dashboard/static/src/img/installer_sale.png similarity index 100% rename from addons/web_default_home/static/src/img/sale.png rename to addons/web_dashboard/static/src/img/installer_sale.png diff --git a/addons/web_default_home/static/src/img/stock.png b/addons/web_dashboard/static/src/img/installer_stock.png similarity index 100% rename from addons/web_default_home/static/src/img/stock.png rename to addons/web_dashboard/static/src/img/installer_stock.png diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index 24b3a2339fd..3163453a122 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -2,6 +2,11 @@ openerp.web_dashboard = function(openerp) { var QWeb = openerp.web.qweb; QWeb.add_template('/web_dashboard/static/src/xml/web_dashboard.xml'); +if (!openerp.web_dashboard) { + /** @namespace */ + openerp.web_dashboard = {}; +} + openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ init: function(view, node) { this._super(view, node); @@ -285,13 +290,12 @@ openerp.web.form.widgets.add('hpaned', 'openerp.web.form.DashBoardLegacy'); openerp.web.form.widgets.add('vpaned', 'openerp.web.form.DashBoardLegacy'); openerp.web.form.widgets.add('board', 'openerp.web.form.DashBoard'); -openerp.web.client_actions.add( - 'board.config.overview', 'openerp.web_dashboard.ConfigOverview' -); -if (!openerp.web_dashboard) { - /** @namespace */ - openerp.web_dashboard = {}; -} +/* + * ConfigOverview + * This client action designed to be used as a dashboard widget display + * ir.actions.todo in a fancy way + */ +openerp.web.client_actions.add( 'board.config.overview', 'openerp.web_dashboard.ConfigOverview'); openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({ template: 'ConfigOverview', init: function (parent) { @@ -354,35 +358,152 @@ openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({ } }); -openerp.web.client_actions.add( - 'board.home.applications', 'openerp.web_dashboard.ApplicationTiles'); +/* + * ApplicationTiles + * This client action designed to be used as a dashboard widget display + * either a list of application to install (if none is installed yet) or + * a list of root menu + */ +openerp.web.client_actions.add( 'board.home.applications', 'openerp.web_dashboard.ApplicationTiles'); +openerp.web_dashboard.apps = { + applications: [ + [ + { + module: 'crm', name: 'CRM', + help: "Acquire leads, follow opportunities, manage prospects and phone calls, \u2026" + }, { + module: 'sale', name: 'Sales', + help: "Do quotations, follow sales orders, invoice and control deliveries" + }, { + module: 'account_voucher', name: 'Invoicing', + help: "Send invoice, track payments and reminders" + }, { + module: 'project', name: 'Projects', + help: "Manage projects, track tasks, invoice task works, follow issues, \u2026" + } + ], [ + { + module: 'purchase', name: 'Purchase', + help: "Do purchase orders, control invoices and reception, follow your suppliers, \u2026" + }, { + module: 'stock', name: 'Warehouse', + help: "Track your stocks, schedule product moves, manage incoming and outgoing shipments, \u2026" + }, { + module: 'hr', name: 'Human Resources', + help: "Manage employees and their contracts, follow laves, recruit people, \u2026" + }, { + module: 'point_of_sale', name: 'Point of Sales', + help: "Manage shop sales, use touch-screen POS" + } + ], [ + { + module: 'profile_tools', name: 'Extra Tools', + help: "Track ideas, manage lunch, create surveys, share data" + }, { + module: 'mrp', name: 'Manufacturing', + help: "Manage your manufacturing, control your supply chain, personalize master data, \u2026" + }, { + module: 'marketing', name: 'Marketing', + help: "Manage campaigns, follow activities, automate emails, \u2026" + }, { + module: 'knowledge', name: 'Knowledge', + help: "Track your documents, browse your files, \u2026" + } + ] + ] +}; openerp.web_dashboard.ApplicationTiles = openerp.web.View.extend({ template: 'ApplicationTiles', start: function () { - this._super(); var self = this; - return new openerp.web.DataSetSearch( - this, 'ir.ui.menu', null, [['parent_id', '=', false]]) - .read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) { - // Create a matrix of 3*x applications - var rows = []; - while (applications.length) { - rows.push(applications.splice(0, 3)); + this._super(); + // Check for installed application + var Installer = new openerp.web.DataSet(this, 'base.setup.installer'); + Installer.call('default_get', [], function (installed_modules) { + var installed = false; + _.each(installed_modules, function(v,k) { + if(_.startsWith(k,"cat")) { + installed =installed || v; } - self.$element - .append(QWeb.render( - 'ApplicationTiles.content', {rows: rows})) - .find('.oe-dashboard-home-tile') - .click(function () { - var $this = $(this); - $this.closest('.openerp') - .find('.menu a[data-menu=' + $this.data('menuid') + ']') - .click();}); }); + if(installed) { + self.do_display_root_menu(); + } else { + self.do_display_installer(); + } + } ); + }, + do_display_root_menu: function() { + var self = this; + var dss = new openerp.web.DataSetSearch( this, 'ir.ui.menu', null, [['parent_id', '=', false]]); + var r = dss.read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) { + // Create a matrix of 3*x applications + var rows = []; + while (applications.length) { + rows.push(applications.splice(0, 3)); + } + var tiles = QWeb.render( 'ApplicationTiles.content', {rows: rows}); + self.$element.append(tiles) + .find('.oe-dashboard-home-tile') + .click(function () { + var $this = $(this); + $this.closest('.openerp') + .find('.menu a[data-menu=' + $this.data('menuid') + ']') + .click();}); + }); + return r; + }, + do_display_installer: function() { + var self = this; + var render_ctx = { + url: window.location.protocol + '//' + window.location.host + window.location.pathname, + session: self.session, + rows: openerp.web_dashboard.apps.applications + }; + var installer = QWeb.render('StaticHome', render_ctx); + self.$element.append(installer); + this.$element.delegate('.oe-static-home-tile-text button', 'click', function () { + self.install_module($(this).val()); + }); + }, + install_module: function (module_name) { + var self = this; + var Modules = new openerp.web.DataSetSearch( + this, 'ir.module.module', null, + [['name', '=', module_name], ['state', '=', 'uninstalled']]); + var Upgrade = new openerp.web.DataSet(this, 'base.module.upgrade'); + + $.blockUI({message:''}); + Modules.read_slice(['id'], {}, function (records) { + if (!(records.length === 1)) { $.unblockUI(); return; } + Modules.call('state_update', + [_.pluck(records, 'id'), 'to install', ['uninstalled']], + function () { + Upgrade.call('upgrade_module', [[]], function () { + self.run_configuration_wizards(); + }); + } + ) + }); + }, + run_configuration_wizards: function () { + var self = this; + new openerp.web.DataSet(this, 'res.config').call('start', [[]], function (action) { + $.unblockUI(); + self.do_action(action, function () { + // TODO: less brutal reloading + window.location.reload(true); + }); + }); } }); -openerp.web.client_actions.add( - 'board.home.widgets', 'openerp.web_dashboard.Widget'); + +/* + * Widgets + * This client action designed to be used as a dashboard widget display + * the html content of a res_widget given as argument + */ +openerp.web.client_actions.add( 'board.home.widgets', 'openerp.web_dashboard.Widget'); openerp.web_dashboard.Widget = openerp.web.View.extend(/** @lends openerp.web_dashboard.Widgets# */{ template: 'HomeWidget', /** @@ -416,4 +537,5 @@ openerp.web_dashboard.Widget = openerp.web.View.extend(/** @lends openerp.web_da })); } }); + }; diff --git a/addons/web_dashboard/static/src/xml/web_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml index 505cc45e027..fe96d72855d 100644 --- a/addons/web_dashboard/static/src/xml/web_dashboard.xml +++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml @@ -111,4 +111,36 @@