summaryrefslogtreecommitdiff
path: root/addons/web_dashboard/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web_dashboard/static/src')
-rw-r--r--addons/web_dashboard/static/src/css/dashboard.css79
-rw-r--r--addons/web_dashboard/static/src/img/installer_account_voucher.pngbin0 -> 9306 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_crm.pngbin0 -> 7323 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_hr.pngbin0 -> 8676 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_knowledge.pngbin0 -> 7157 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_marketing.pngbin0 -> 3247 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_mrp.pngbin0 -> 5663 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_point_of_sale.pngbin0 -> 7600 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_profile_tools.pngbin0 -> 8466 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_project.pngbin0 -> 4172 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_purchase.pngbin0 -> 5863 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_sale.pngbin0 -> 8685 bytes
-rw-r--r--addons/web_dashboard/static/src/img/installer_stock.pngbin0 -> 5505 bytes
-rw-r--r--addons/web_dashboard/static/src/js/dashboard.js202
-rw-r--r--addons/web_dashboard/static/src/xml/web_dashboard.xml33
15 files changed, 269 insertions, 45 deletions
diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css
index f317cb45e8e..4d48cd4ffbd 100644
--- a/addons/web_dashboard/static/src/css/dashboard.css
+++ b/addons/web_dashboard/static/src/css/dashboard.css
@@ -7,17 +7,34 @@
}
.openerp .oe-dashboard-action {
margin: 0 0.5em 0.5em 0;
- padding: 2px;
-}
-.openerp .oe-dashboard-action:hover {
- border: 1px dashed #ccc;
- padding: 1px;
+ padding: 0px;
+ background-color: white;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
}
.openerp .oe-dashboard-action .oe-dashboard-action-header {
- font-size: 125%;
+ font-size: 85%;
font-weight: bold;
+ text-transform: uppercase;
+ text-indent: 10px;
+ vertical-align: center;
+ border-bottom: 1px solid #e5e5e5;
+ background: white url("/web/static/src/img/box-a-header-a.gif") 0% 0% repeat-x;
+}
+
+.openerp h2.oe-dashboard-action-header {
+ margin: 0;
+ padding:4px 4px;
+ -moz-border-radius-topleft: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-top-left-radius: 3px;
+ -moz-border-radius-topright: 3px;
+ -webkit-border-top-right-radius: 3px;
+ border-top-right-radius: 3px;
}
+
.openerp a.oe-dashboard-action-rename {
float: left;
padding-right: 4px;
@@ -57,6 +74,12 @@
visibility: hidden;
}
+/* Base overwriting */
+.openerp .oe-dashboard .oe-listview-content, .openerp .oe-dashboard .ui-widget-header {
+ border:none !important;
+ padding:0px 3px;
+}
+
/* Layouts */
.openerp .oe-dashboard-layout_1 .oe-dashboard-column.index_0 {
width: 100%;
@@ -234,6 +257,46 @@
.openerp .oe-dashboard-action .view-manager-main-content {
padding: 2px;
}
-.openerp .oe-dashboard-action-header .ui-icon, .openerp .oe-dashboard-action-header .oe-dashboard-action-rename {
- display: none;
+
+.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_dashboard/static/src/img/installer_account_voucher.png b/addons/web_dashboard/static/src/img/installer_account_voucher.png
new file mode 100644
index 00000000000..afad1331e2e
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_account_voucher.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_crm.png b/addons/web_dashboard/static/src/img/installer_crm.png
new file mode 100644
index 00000000000..893bb23ab98
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_crm.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_hr.png b/addons/web_dashboard/static/src/img/installer_hr.png
new file mode 100644
index 00000000000..742f3e53e67
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_hr.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_knowledge.png b/addons/web_dashboard/static/src/img/installer_knowledge.png
new file mode 100644
index 00000000000..78864367df1
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_knowledge.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_marketing.png b/addons/web_dashboard/static/src/img/installer_marketing.png
new file mode 100644
index 00000000000..cfe890f31be
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_marketing.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_mrp.png b/addons/web_dashboard/static/src/img/installer_mrp.png
new file mode 100644
index 00000000000..600104af507
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_mrp.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_point_of_sale.png b/addons/web_dashboard/static/src/img/installer_point_of_sale.png
new file mode 100644
index 00000000000..9054576f2d5
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_point_of_sale.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_profile_tools.png b/addons/web_dashboard/static/src/img/installer_profile_tools.png
new file mode 100644
index 00000000000..d6ba0866777
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_profile_tools.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_project.png b/addons/web_dashboard/static/src/img/installer_project.png
new file mode 100644
index 00000000000..20ba49f07c8
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_project.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_purchase.png b/addons/web_dashboard/static/src/img/installer_purchase.png
new file mode 100644
index 00000000000..094705cecc3
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_purchase.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_sale.png b/addons/web_dashboard/static/src/img/installer_sale.png
new file mode 100644
index 00000000000..072570bae38
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_sale.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/img/installer_stock.png b/addons/web_dashboard/static/src/img/installer_stock.png
new file mode 100644
index 00000000000..a70ccfe18d5
--- /dev/null
+++ b/addons/web_dashboard/static/src/img/installer_stock.png
Binary files differ
diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js
index 4672492821d..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);
@@ -43,9 +48,6 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
});
//this.$element.find('a.oe-dashboard-action-rename').live('click', this.on_rename);
- this.$element.find('.oe-dashboard-action').live('mouseover mouseout', function(event) {
- $(this).find('.oe-dashboard-action-header .ui-icon, .oe-dashboard-action-header .oe-dashboard-action-rename').toggle(event.type == 'mouseover');
- });
},
on_undo: function() {
this.rpc('/web/view/undo_custom', {
@@ -217,6 +219,8 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
});
},
on_load_action: function(result) {
+ var self = this;
+ var action_orig = _.extend({}, result.result);
var action = result.result;
action.flags = {
search_view : false,
@@ -224,12 +228,21 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
views_switcher : false,
action_buttons : false,
pager: false,
- low_profile: true
+ low_profile: true,
+ display_title: false
};
var am = new openerp.web.ActionManager(this);
this.action_managers.push(am);
am.appendTo($("#"+this.view.element_id + '_action_' + action.id));
am.do_action(action);
+ am.do_action = function(action) {
+ self.do_action(action);
+ }
+ if (am.inner_viewmanager) {
+ am.inner_viewmanager.on_mode_switch.add(function(mode) {
+ self.do_action(action_orig);
+ });
+ }
},
render: function() {
// We should start with three columns available
@@ -243,12 +256,10 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
return QWeb.render(this.template, this);
},
do_reload: function() {
- _.each(this.action_managers, function(am) {
- am.stop();
- });
- this.action_managers = [];
+ var view_manager = this.view.widget_parent,
+ action_manager = view_manager.widget_parent;
this.view.stop();
- this.view.start();
+ action_manager.do_action(view_manager.action);
}
});
openerp.web.form.DashBoardLegacy = openerp.web.form.DashBoard.extend({
@@ -279,20 +290,19 @@ 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) {
this._super(parent);
this.dataset = new openerp.web.DataSetSearch(
this, 'ir.actions.todo');
- this.dataset.domain = [['type', '=', 'manual']];
+ this.dataset.domain = [['type', '!=', 'automatic']];
},
start: function () {
this._super();
@@ -348,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 () {
+ 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 = false;
+ _.each(installed_modules, function(v,k) {
+ if(_.startsWith(k,"cat")) {
+ installed =installed || v;
+ }
+ });
+ 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;
- 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));
+ 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:'<img src="/web/static/src/img/throbber2.gif">'});
+ 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();
+ });
}
- 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();});
+ )
+ });
+ },
+ 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',
/**
@@ -410,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 ec89cf9f647..fe96d72855d 100644
--- a/addons/web_dashboard/static/src/xml/web_dashboard.xml
+++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml
@@ -32,6 +32,7 @@
<div t-att-data-id="action.attrs.name" class="oe-dashboard-action">
<h2 class="oe-dashboard-action-header oe_view_title">
<input class="oe-dashboard-action-input" type="text" name="title" value="" style="display: none"/>
+ <t t-esc="action.attrs.string"/>
<span class='ui-icon ui-icon-closethick'></span>
<span class='ui-icon ui-icon-minusthick oe-dashboard-fold' t-if="!action.attrs.fold"></span>
<span class='ui-icon ui-icon-plusthick oe-dashboard-fold' t-if="action.attrs.fold"></span>
@@ -110,4 +111,36 @@
<h3><t t-esc="widget.title"/></h3>
<iframe width="100%" frameborder="0" t-att-src="url"/>
</t>
+<div t-name="StaticHome" class="oe-static-home">
+ <h1>Welcome to your new OpenERP instance.</h1>
+ <div class="oe-static-home-banner">
+ <li>Remember to bookmark this page.</li>
+ <li>Remember your login: <i><t t-esc="session.login"/></i></li>
+ <li>Choose the first OpenERP Application you want to install..</li>
+ </div>
+ <div class="oe-static-home-tiles">
+ <table width="100%">
+ <tr t-foreach="rows" t-as="row">
+ <td t-foreach="row" t-as="application" width="25%">
+ <table class="oe-static-home-tile">
+ <tr>
+ <td>
+ <div class="oe-static-home-tile-logo">
+ <img t-att-src="'/web_dashboard/static/src/img/installer_' + application.module + '.png'"/>
+ </div>
+ </td>
+ <td>
+ <div class="oe-static-home-tile-text">
+ <h2><t t-esc="application.name"/></h2>
+ <p><t t-esc="application.help"/></p>
+ <button type="button" t-att-value="application.module"> Install</button>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+</div>
</template>