diff options
Diffstat (limited to 'addons/website/static/src')
| -rw-r--r-- | addons/website/static/src/js/backend/dashboard.js | 22 | ||||
| -rw-r--r-- | addons/website/static/src/js/content/menu.js | 2 | ||||
| -rw-r--r-- | addons/website/static/src/js/content/website_root.js | 18 | ||||
| -rw-r--r-- | addons/website/static/src/js/menu/content.js | 19 | ||||
| -rw-r--r-- | addons/website/static/src/js/widgets/theme.js | 3 | ||||
| -rw-r--r-- | addons/website/static/src/scss/website.ui.scss | 20 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.backend.xml | 14 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.pageProperties.xml | 35 |
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"> |
