// TODO: add actual loading if there is url state to unpack, test on window.location.hash
// not logged in
if (!this.session.uid) { return; }
- var ds = new openerp.web.DataSetSearch(this, 'res.users');
- ds.read_ids([this.session.uid], ['action_id'], function (users) {
- var home_action = users[0].action_id;
- if (!home_action) {
- self.default_home();
- return;
- }
- self.execute_home_action(home_action[0], ds);
- })
+ self.action_manager.do_action({type: 'ir.actions.client', tag: 'default_home'});
},
default_home: function () {
},
start: function () {
var self = this;
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 = _(installed_modules).any(function (active, name) {
- return _.str.startsWith(name, 'cat') && active; });
-
- 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
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 () {
- openerp.webclient.menu.on_menu_click(null, $(this).data('menuid'))
- });
- });
- 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(), $(this).data('menu'));
- });
- },
- install_module: function (module_name, menu_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();
- 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(menu_name);
- });
- }
- )
- });
- },
- run_configuration_wizards: function (menu_name) {
- var self = this;
- new openerp.web.DataSet(this, 'res.config').call('start', [[]], function (action) {
- self.widget_parent.widget_parent.do_action(action, function () {
- openerp.webclient.do_reload();
- });
- self.$element.empty();
- var dss = new openerp.web.DataSetSearch(this, 'ir.ui.menu', null, [['parent_id', '=', false], ['name', '=', menu_name]]);
- dss.read_slice(['id'], {}, function(menus) {
- if(!(menus.length === 1)) { $.unblockUI(); return; }
- $.when(openerp.webclient.menu.on_menu_click(null, menus[0].id)).then($.unblockUI);
+ self.$element.append(tiles).find('.oe-dashboard-home-tile').click(function () {
+ openerp.webclient.menu.on_menu_click(null, $(this).data('menuid'))
});
});
}
--- /dev/null
+{
+ "name": "web Default Home",
+ "category" : "Hidden",
+ "version": "2.0",
+ "depends": ['web'],
+ "js": [
+ 'static/src/js/default_home.js'
+ ],
+ "css": ['static/src/css/default_home.css'],
+ 'qweb' : [
+ "static/src/xml/*.xml",
+ ],
+ 'active': True
+}
--- /dev/null
+.installer {
+ width: 980px;
+}
+
+.installer h1, .installer h3 {
+ margin: 16px 24px;
+ color: #555
+}
+
+.installer li {
+ float: left;
+ list-style: none;
+}
+
+.installer li img {
+ display: block;
+ margin: 12px auto 16px;
+ height: 64px;
+ width: 64px;
+}
+
+.installer li div {
+ color: #555;
+}
+
+.installer li a {
+ display: block;
+ height: 120px;
+ width: 194px;
+ border: 1px solid #f4f2f2;
+ margin: 6px;
+ padding: 12px;
+ text-align: center;
+ text-transform: uppercase;
+ text-decoration: none;
+ font-size: 12px;
+ font-weight: 800;
+ background: white;
+ -moz-border-radius: 6px;
+ -webkit-border-radius: 6px;
+ -ms-border-radius: 6px;
+ border-radius: 6px;
+ -moz-box-shadow: 0 1px 2px #bbb;
+ -webkit-box-shadow: 0 1px 2px #bbb;
+ -o-box-shadow: 0 1px 2px #bbb;
+ box-shadow: 0 1px 2px #bbb;
+}
--- /dev/null
+openerp.web_default_home = function(openerp) {
+ var QWeb = openerp.web.qweb;
+
+ openerp.web.client_actions.add('default_home', 'openerp.web.Welcome');
+ openerp.web.Welcome = openerp.web.Widget.extend({
+ init: function(parent) {
+ this._super(parent);
+ },
+ start: function() {
+ var self = this;
+ var applications = [
+ {module: 'crm', name: 'CRM', menu: 'Sales', help: "Acquire leads, follow opportunities, manage prospects and phone calls, \u2026"},
+ {module: 'sale', name: 'Sales', menu: 'Sales', help: "Do quotations, follow sales orders, invoice and control deliveries"},
+ {module: 'account_voucher', name: 'Invoicing', menu: 'Accounting', help: "Send invoice, track payments and reminders"},
+ {module: 'point_of_sale', name: 'Point of Sale', menu: 'Point of Sale', help: "Manage shop sales, use touch-screen POS"},
+ {module: 'purchase', name: 'Purchase', menu: 'Sales', help: "Do purchase orders, control invoices and reception, follow your suppliers, \u2026"},
+ {module: 'stock', name: 'Warehouse', menu: 'Warehouse', help: "Track your stocks, schedule product moves, manage incoming and outgoing shipments, \u2026"},
+ {module: 'mrp', name: 'Manufacturing', menu: 'Manufacturing', help: "Manage your manufacturing, control your supply chain, personalize master data, \u2026"},
+ {module: 'account_accountant', name: 'Accounting & Finance', menu: 'Accounting', help: "Record financial operations, automate followup, manage multi-currency, \u2026"},
+ {module: 'project', name: 'Projects', menu: 'Project', help: "Manage projects, track tasks, invoice task works, follow issues, \u2026"},
+ {module: 'hr', name: 'Human Resources', menu: 'Human Resources', help: "Manage employees and their contracts, follow laves, recruit people, \u2026"},
+ {module: 'marketing', name: 'Marketing', menu: 'Marketing', help: "Manage campaigns, follow activities, automate emails, \u2026"},
+ {module: 'knowledge', name: 'Knowledge', menu: 'Knowledge', help: "Track your documents, browse your files, \u2026"}
+ ];
+
+ var Installer = new openerp.web.DataSet(this, 'base.setup.installer');
+ Installer.call('default_get', [], function (installed_modules) {
+ console.log(installed_modules);
+ self.$element.html(QWeb.render('Welcome-Page', {'applications': applications}));
+ self.$element.find('.install-module-link').click(function () {
+ self.install_module($(this).data('module'), $(this).data('menu'));
+ return false;
+ });
+ });
+ },
+ install_module: function (module_name, menu_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();
+ 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(menu_name);
+ });
+ }
+ )
+ });
+ },
+ run_configuration_wizards: function (menu_name) {
+ var self = this;
+ new openerp.web.DataSet(this, 'res.config').call('start', [[]], function (action) {
+ self.widget_parent.widget_parent.do_action(action, function () {
+ openerp.webclient.do_reload();
+ });
+ self.$element.empty();
+ var dss = new openerp.web.DataSetSearch(this, 'ir.ui.menu', null, [['parent_id', '=', false], ['name', '=', menu_name]]);
+ dss.read_slice(['id'], {}, function(menus) {
+ if(!(menus.length === 1)) { $.unblockUI(); return; }
+ $.when(openerp.webclient.menu.on_menu_click(null, menus[0].id)).then($.unblockUI);
+ });
+ });
+ }
+ });
+
+};
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<templates id="template" xml:space="preserve">
+
+<t t-name="Welcome-Page">
+ <div class="installer">
+ <h1>Welcome to OpenERP</h1>
+ <h3>Please choose the first application to install.</h3>
+ <ul>
+ <t t-foreach="applications" t-as="application" >
+ <li>
+ <a href="#" class="install-module-link" t-att-data-module="application.module" t-att-data-menu="application.menu" >
+ <img t-att-src="'/web_dashboard/static/src/img/installer_' + application.module + '.png'"/>
+ <div><t t-esc="application.name"/></div>
+ </a>
+ </li>
+ </t>
+ </ul>
+ </div>
+</t>
+
+</templates>