summaryrefslogtreecommitdiff
path: root/addons/website/static/src
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2018-08-13 20:36:28 +0200
committerJeremy Kersten <jke@odoo.com>2018-08-13 20:36:28 +0200
commitfbbf24f58acbcd9488cfa8393bd2d4e3a8e4c053 (patch)
tree2994a4151cbc70ac62d1741d84f7758c049557d4 /addons/website/static/src
parent15df14b9e1863ca09115d920595a6eeb9f6514f1 (diff)
parent853e13800fb030f7ae7180558cb6c3c74b843cd1 (diff)
[MERGE] website: add multi-websites support
Diffstat (limited to 'addons/website/static/src')
-rw-r--r--addons/website/static/src/js/backend/dashboard.js22
-rw-r--r--addons/website/static/src/js/content/menu.js2
-rw-r--r--addons/website/static/src/js/content/website_root.js18
-rw-r--r--addons/website/static/src/js/menu/content.js19
-rw-r--r--addons/website/static/src/js/widgets/theme.js3
-rw-r--r--addons/website/static/src/scss/website.ui.scss20
-rw-r--r--addons/website/static/src/xml/website.backend.xml14
-rw-r--r--addons/website/static/src/xml/website.pageProperties.xml35
8 files changed, 106 insertions, 27 deletions
diff --git a/addons/website/static/src/js/backend/dashboard.js b/addons/website/static/src/js/backend/dashboard.js
index 9ece194ab1e..b4fe22ba84e 100644
--- a/addons/website/static/src/js/backend/dashboard.js
+++ b/addons/website/static/src/js/backend/dashboard.js
@@ -64,6 +64,7 @@ var Dashboard = AbstractAction.extend(ControlPanelMixin, {
return this._rpc({
route: '/website/fetch_dashboard_data',
params: {
+ website_id: this.website_id || false,
date_from: this.date_from.year()+'-'+(this.date_from.month()+1)+'-'+this.date_from.date(),
date_to: this.date_to.year()+'-'+(this.date_to.month()+1)+'-'+this.date_to.date(),
},
@@ -72,6 +73,7 @@ var Dashboard = AbstractAction.extend(ControlPanelMixin, {
self.dashboards_data = result.dashboards;
self.currency_id = result.currency_id;
self.groups = result.groups;
+ self.websites = result.websites;
});
},
@@ -110,6 +112,7 @@ var Dashboard = AbstractAction.extend(ControlPanelMixin, {
return this._rpc({
route: '/website/dashboard/set_ga_data',
params: {
+ 'website_id': self.website_id,
'ga_client_id': ga_client_id,
'ga_analytics_key': ga_analytics_key,
},
@@ -245,6 +248,16 @@ var Dashboard = AbstractAction.extend(ControlPanelMixin, {
},
+ on_website_button: function(website_id) {
+ var self = this;
+ this.website_id = website_id;
+ $.when(this.fetch_data()).then(function() {
+ self.$('.o_website_dashboard').empty();
+ self.render_dashboards();
+ self.render_graphs();
+ });
+ },
+
on_reverse_breadcrumb: function() {
var self = this;
web_client.do_push_state({});
@@ -293,10 +306,15 @@ var Dashboard = AbstractAction.extend(ControlPanelMixin, {
this.$searchview = $(QWeb.render("website.DateRangeButtons", {
widget: this,
}));
- this.$searchview.click('button.js_date_range', function(ev) {
+ this.$searchview.find('button.js_date_range').click(function(ev) {
+ self.$searchview.find('button.js_date_range.active').removeClass('active');
+ $(ev.target).addClass('active');
self.on_date_range_button($(ev.target).data('date'));
- $(this).find('button.js_date_range.active').removeClass('active');
+ });
+ this.$searchview.find('button.js_website').click(function(ev) {
+ self.$searchview.find('button.js_website.active').removeClass('active');
$(ev.target).addClass('active');
+ self.on_website_button($(ev.target).data('website-id'));
});
}
this.update_control_panel({
diff --git a/addons/website/static/src/js/content/menu.js b/addons/website/static/src/js/content/menu.js
index 6effb471ec9..3511f51a70f 100644
--- a/addons/website/static/src/js/content/menu.js
+++ b/addons/website/static/src/js/content/menu.js
@@ -67,7 +67,7 @@ sAnimation.registry.affixMenu = sAnimation.Class.extend({
// Reset opened menus
this.$dropdowns.removeClass('show');
- this.$navbarCollapses.removeClass('in').attr('aria-expanded', false);
+ this.$navbarCollapses.removeClass('show').attr('aria-expanded', false);
},
});
diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js
index 29163838f7a..a51c8011e92 100644
--- a/addons/website/static/src/js/content/website_root.js
+++ b/addons/website/static/src/js/content/website_root.js
@@ -40,6 +40,7 @@ var WebsiteRoot = BodyManager.extend({
'click .js_publish_management .js_publish_btn': '_onPublishBtnClick',
'submit .js_website_submit_form': '_onWebsiteFormSubmit',
'click .js_disable_on_click': '_onDisableOnClick',
+ 'click .js_multi_website_switch': '_multiWebsiteSwitch',
}),
custom_events: _.extend({}, BodyManager.prototype.custom_events || {}, {
animation_start_demand: '_onAnimationStartDemand',
@@ -279,6 +280,23 @@ var WebsiteRoot = BodyManager.extend({
_onDisableOnClick: function (ev) {
$(ev.currentTarget).addClass('disabled');
},
+
+ /**
+ * Called when clicking on the multi-website switcher.
+ *
+ * @param {OdooEvent} ev
+ */
+ _multiWebsiteSwitch: function (ev) {
+ var website_id_to_switch_to = ev.currentTarget.getAttribute('website-id');
+ this._rpc({
+ route: '/website/force_website',
+ params: {
+ website_id: website_id_to_switch_to || false,
+ },
+ }).then(function () {
+ window.location.reload(true);
+ });
+ },
});
return {
diff --git a/addons/website/static/src/js/menu/content.js b/addons/website/static/src/js/menu/content.js
index 66679b5d20d..91494a4018b 100644
--- a/addons/website/static/src/js/menu/content.js
+++ b/addons/website/static/src/js/menu/content.js
@@ -81,7 +81,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
defs.push(this._rpc({
model: 'website.page',
method: 'get_page_info',
- args: [this.page_id, context.website_id],
+ args: [this.page_id],
context: context,
}).then(function (page) {
page[0].url = _.str.startsWith(page[0].url, '/') ? page[0].url.substring(1) : page[0].url;
@@ -145,6 +145,16 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
});
}));
+ defs.push(this._rpc({model: 'res.users',
+ method: 'has_group',
+ args: ['website.group_multi_website'],
+ context: context})
+ .then(function (has_group) {
+ if (!has_group) {
+ self.$('#website_restriction').addClass('hidden');
+ }
+ }));
+
var datepickersOptions = {
minDate: moment({y: 1900}),
maxDate: moment().add(200, 'y'),
@@ -210,6 +220,7 @@ var PagePropertiesDialog = weWidgets.Dialog.extend({
is_menu: this.$('#is_menu').prop('checked'),
is_homepage: this.$('#is_homepage').prop('checked'),
website_published: this.$('#is_published').prop('checked'),
+ share_page_info: this.$('#share_page_info').prop('checked'),
create_redirect: this.$('#create_redirect').prop('checked'),
redirect_type: this.$('#redirect_type').val(),
website_indexed: this.$('#is_indexed').prop('checked'),
@@ -531,7 +542,7 @@ var EditMenuDialog = weWidgets.Dialog.extend({
this._rpc({
model: 'website.menu',
method: 'save',
- args: [[context.website_id], { data: data, to_delete: self.to_delete }],
+ args: [context.website_id, { data: data, to_delete: self.to_delete }],
context: context,
}).then(function () {
return _super();
@@ -954,7 +965,7 @@ function _deletePage(pageId, fromPageManagement) {
// Delete the page if the user confirmed
return self._rpc({
model: 'website.page',
- method: 'delete_page',
+ method: 'unlink',
args: [pageId],
context: context,
});
@@ -969,7 +980,7 @@ function _deletePage(pageId, fromPageManagement) {
}
websiteNavbarData.websiteNavbarRegistry.add(ContentMenu, '#content-menu');
-websiteRootData.websiteRootRegistry.add(PageManagement, '#edit_website_pages');
+websiteRootData.websiteRootRegistry.add(PageManagement, '#list_website_pages');
return {
PagePropertiesDialog: PagePropertiesDialog,
diff --git a/addons/website/static/src/js/widgets/theme.js b/addons/website/static/src/js/widgets/theme.js
index 50434604677..ce73fd35d3d 100644
--- a/addons/website/static/src/js/widgets/theme.js
+++ b/addons/website/static/src/js/widgets/theme.js
@@ -55,7 +55,6 @@ var ThemeCustomizeDialog = Dialog.extend({
*/
start: function () {
var self = this;
-
this._generateDialogHTML();
this.$modal.addClass('o_theme_customize_modal');
@@ -77,7 +76,7 @@ var ThemeCustomizeDialog = Dialog.extend({
this._loadViews()
);
},
-
+
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
diff --git a/addons/website/static/src/scss/website.ui.scss b/addons/website/static/src/scss/website.ui.scss
index 4b24667ed1f..eb459ee1503 100644
--- a/addons/website/static/src/scss/website.ui.scss
+++ b/addons/website/static/src/scss/website.ui.scss
@@ -38,7 +38,7 @@ body.o_connected_user {
}
}
.o_menu_systray {
- a {
+ > li > a {
padding: 0 $grid-gutter-width/2;
&.css_edit_dynamic{
@@ -463,16 +463,24 @@ body .modal {
padding-top: 9px;
}
}
-#edit_website_pages {
+#list_website_pages {
th {
background-color: $o-brand-odoo;
color: white;
}
- td > a.fa {
- margin-left: 5px;
- color: $o-brand-odoo;
+ td, th {
+ padding: 0.45rem;
+ }
+ td {
+ > a.fa {
+ margin-left: 5px;
+ color: $o-brand-odoo;
+ }
+ .text-muted {
+ opacity: 0.5;
+ }
}
.fa-check, .fa-eye-slash {
- color: $o-brand-primary;
+ color: $info;
}
}
diff --git a/addons/website/static/src/xml/website.backend.xml b/addons/website/static/src/xml/website.backend.xml
index a1a0d24edb1..b4f2b9c6029 100644
--- a/addons/website/static/src/xml/website.backend.xml
+++ b/addons/website/static/src/xml/website.backend.xml
@@ -53,12 +53,14 @@
<div t-name="website.ga_dialog_content">
Your Tracking ID: <input type="text" name="ga_analytics_key" placeholder="UA-XXXXXXXX-Y" t-att-value="ga_analytics_key" style="width: 100%"></input>
- <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics.html" class="fa fa-arrow-right" target="_blank">
+ <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics.html" target="_blank">
+ <i class="fa fa-arrow-right"/>
How to get my Tracking ID
</a>
<br/><br/>
Your Client ID: <input type="text" name="ga_client_id" t-att-value="ga_key" style="width: 100%"></input>
- <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics_dashboard.html" class="fa fa-arrow-right" target="_blank">
+ <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics_dashboard.html" target="_blank">
+ <i class="fa fa-arrow-right"/>
How to get my Client ID
</a>
</div>
@@ -70,6 +72,14 @@
<button class="btn btn-secondary js_date_range" data-date="month">Last Month</button>
<button class="btn btn-secondary js_date_range" data-date="year">Last Year</button>
</div>
+ <div class="btn-group pull-right" style="margin-right: 20px;">
+ <t t-foreach="widget.websites" t-as="website">
+ <button t-attf-class="btn btn-secondary js_website #{website.selected ? 'active' : ''}"
+ t-att-data-website-id="website.id">
+ <t t-esc="website.name"/>
+ </button>
+ </t>
+ </div>
</t>
<t t-name="website.SalesChartTooltip">
diff --git a/addons/website/static/src/xml/website.pageProperties.xml b/addons/website/static/src/xml/website.pageProperties.xml
index 7f3b4cbfc64..cf4719d5951 100644
--- a/addons/website/static/src/xml/website.pageProperties.xml
+++ b/addons/website/static/src/xml/website.pageProperties.xml
@@ -45,7 +45,7 @@
<li class="nav-item"><a aria-controls="advances_page_info" role="tab" data-toggle="tab" class="nav-link" href="#advances_page_info">Publish</a></li>
</ul>
<div class="tab-content mt16">
- <div role="tabpanel" id="basic_page_info" class="tab-pane fade in active">
+ <div role="tabpanel" id="basic_page_info" class="tab-pane fade show active">
<div class="form-group row">
<label class="col-form-label col-md-3" for="page_name">Page Name</label>
<div class="col-md-9">
@@ -89,8 +89,8 @@
</div>
<div role="tabpanel" id="advances_page_info" class="tab-pane fade">
<div class="form-group row">
- <label class="col-form-label col-md-3" for="is_menu">Show in Top Menu</label>
- <div class="col-md-2">
+ <label class="control-label col-md-5" for="is_menu">Show in Top Menu</label>
+ <div class="col-sm-2">
<label class="o_switch" for="is_menu" >
<input type="checkbox" t-att-checked="widget.page.menu_ids.length > 0 ? true : undefined" id="is_menu"/>
<span/>
@@ -98,8 +98,8 @@
</div>
</div>
<div class="form-group row">
- <label class="col-form-label col-md-3" for="is_homepage">Use as Homepage</label>
- <div class="col-md-2">
+ <label class="control-label col-md-5" for="is_homepage">Use as Homepage</label>
+ <div class="col-sm-2">
<label class="o_switch" for="is_homepage" >
<input type="checkbox" t-att-checked="widget.page.is_homepage ? true : undefined" id="is_homepage"/>
<span/>
@@ -107,7 +107,7 @@
</div>
</div>
<div class="form-group row">
- <label class="col-form-label col-md-3" for="is_indexed">
+ <label class="control-label col-md-5" for="is_indexed">
Indexed
<i class="fa fa-question-circle-o" title="Hide this page from search results" role="img" aria-label="Info"></i>
</label>
@@ -119,17 +119,32 @@
</div>
</div>
<div class="form-group row">
- <label class="col-form-label col-md-3" for="is_published">Publish</label>
- <div class="col-md-2">
+ <label class="control-label col-md-5" for="is_published">Publish</label>
+ <div class="col-sm-2">
<label class="o_switch js_publish_btn" for="is_published">
<input type="checkbox" t-att-checked="widget.page.website_published ? true : undefined" id="is_published"/>
<span/>
</label>
</div>
</div>
+ <div t-if='widget.page.website_id' class="form-group row" id="website_restriction">
+ <!-- TODO hide with multi-website group -->
+ <label class="control-label col-md-5" for="share_page_info">
+ Share this page
+ <i class="fa fa-question-circle-o" title="When enabled, this page will be shared between all the websites. This change is not reversible."></i>
+ </label>
+ <div class="col-md-2">
+ <a>
+ <label class="o_switch" for="share_page_info" >
+ <input type="checkbox" t-att-checked="widget.page.website_id ? undefined : true" id="share_page_info"/>
+ <span/>
+ </label>
+ </a>
+ </div>
+ </div>
<div class="form-group row">
- <label class="col-form-label col-md-3" for="date_publish">Publishing Date</label>
- <div class="col-md-9">
+ <label class="control-label col-md-5" for="date_publish">Publishing Date</label>
+ <div class="col-md-7">
<div class='input-group date' id='date_publish_container'>
<input type='text' class="form-control" name="date_publish" id="date_publish" />
<div class="input-group-append">