diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-01-14 10:34:50 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-01-14 10:34:50 +0100 |
| commit | 3cbc9dd6c034f8bbba8a75def07d063e3f625bdb (patch) | |
| tree | 55d7e9b940e27a1dad5415b6b721ab464d0bc418 /addons/website | |
| parent | 976429c8c69b2225e96ccb0e254ee4849832ed27 (diff) | |
| parent | 6a0675d36dd888daa4183f3d609ce334ed3cb493 (diff) | |
[MERGE] forward port branch 12.0 up to 6a0675d36dd
Diffstat (limited to 'addons/website')
| -rw-r--r-- | addons/website/i18n/website.pot | 40 | ||||
| -rw-r--r-- | addons/website/models/ir_ui_view.py | 15 | ||||
| -rw-r--r-- | addons/website/models/website.py | 29 | ||||
| -rw-r--r-- | addons/website/static/src/scss/bootstrap_overridden.scss | 4 | ||||
| -rw-r--r-- | addons/website/views/website_templates.xml | 6 |
5 files changed, 81 insertions, 13 deletions
diff --git a/addons/website/i18n/website.pot b/addons/website/i18n/website.pot index eabf5704b9a..47348bd14aa 100644 --- a/addons/website/i18n/website.pot +++ b/addons/website/i18n/website.pot @@ -533,6 +533,26 @@ msgid "<i class=\"fa fa-trash-o\"/>Remove Slide" msgstr "" #. module: website +#: model_terms:ir.ui.view,arch_db:website.list_website_pages +msgid "<i title=\"Is the page SEO optimized?\" class=\"fa fa-search\"/>" +msgstr "" + +#. module: website +#: model_terms:ir.ui.view,arch_db:website.list_website_pages +msgid "<i title=\"Is the page included in the main menu?\" class=\"fa fa-thumb-tack\"/>" +msgstr "" + +#. module: website +#: model_terms:ir.ui.view,arch_db:website.list_website_pages +msgid "<i title=\"Is the page indexed by search engines?\" class=\"fa fa-globe\"/>" +msgstr "" + +#. module: website +#: model_terms:ir.ui.view,arch_db:website.list_website_pages +msgid "<i title=\"Is the page published?\" class=\"fa fa-eye\"/>" +msgstr "" + +#. module: website #: model_terms:ir.ui.view,arch_db:website.s_comparisons msgid "<i>Instant setup, satisfied or reimbursed.</i>" msgstr "" @@ -570,6 +590,16 @@ msgid "<span class=\"carousel-control-prev-icon\"/>\n" msgstr "" #. module: website +#: model_terms:ir.ui.view,arch_db:website.res_config_settings_view_form +msgid "<span class=\"fa fa-lg fa-globe\" title=\"Values set here are website-specific.\" groups=\"website.group_multi_website\"/>" +msgstr "" + +#. module: website +#: model_terms:ir.ui.view,arch_db:website.company_description +msgid "<span class=\"fa fa-map-marker fa-fw mt16\" role=\"img\" aria-label=\"Address\" title=\"Address\"/>" +msgstr "" + +#. module: website #: model_terms:ir.ui.view,arch_db:website.user_navbar msgid "<span class=\"fa fa-pencil\"/>Edit" msgstr "" @@ -580,6 +610,11 @@ msgid "<span class=\"fa fa-plus\"/>New" msgstr "" #. module: website +#: model_terms:ir.ui.view,arch_db:website.list_website_pages +msgid "<span class=\"fa fa-sort fa-lg\" role=\"img\" aria-label=\"Sort\" title=\"Sort\"/>" +msgstr "" + +#. module: website #: model_terms:ir.ui.view,arch_db:website.s_facebook_page msgid "<span class=\"o_add_facebook_page\">\n" " <i class=\"fa fa-plus-circle\"/> Add Facebook Page\n" @@ -619,6 +654,11 @@ msgstr "" #. module: website #: model_terms:ir.ui.view,arch_db:website.user_navbar +msgid "<span title=\"Mobile preview\" role=\"img\" aria-label=\"Mobile preview\" class=\"fa fa-mobile\"/>" +msgstr "" + +#. module: website +#: model_terms:ir.ui.view,arch_db:website.user_navbar msgid "<span/>\n" " <span class=\"css_publish\">Unpublished</span>\n" " <span class=\"css_unpublish\">Published</span>" diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 1a98713326d..d37852ae0de 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -143,8 +143,12 @@ class View(models.Model): return self.filtered(lambda view: not view.website_id) for view in self: + # specific view: add it if it's for the current website and ignore + # it if it's for another website if view.website_id and view.website_id.id == current_website_id: most_specific_views |= view + # generic view: add it only if, for the current website, there is no + # specific view for this view (based on the same `key` attribute) elif not view.website_id and not any(view.key == view2.key and view2.website_id and view2.website_id.id == current_website_id for view2 in self): most_specific_views |= view @@ -201,6 +205,17 @@ class View(models.Model): @api.model @tools.ormcache_context('self._uid', 'xml_id', keys=('website_id',)) def get_view_id(self, xml_id): + """If a website_id is in the context and the given xml_id is not an int + then try to get the id of the specific view for that website, but + fallback to the id of the generic view if there is no specific. + + If no website_id is in the context, it might randomly return the generic + or the specific view, so it's probably not recommanded to use this + method. `viewref` is probably more suitable. + + Archived views are ignored (unless the active_test context is set, but + then the ormcache_context will not work as expected). + """ if 'website_id' in self._context and not isinstance(xml_id, int): current_website = self.env['website'].browse(self._context.get('website_id')) domain = ['&', ('key', '=', xml_id)] + current_website.website_domain() diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 82709c4663d..4aea35aa481 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -503,12 +503,18 @@ class Website(models.Model): def viewref(self, view_id, raise_if_not_found=True): ''' Given an xml_id or a view_id, return the corresponding view record. In case of website context, return the most specific one. + + If no website_id is in the context, it will return the generic view, + instead of a random one like `get_view_id`. + + Look also for archived views, no matter the context. + :param view_id: either a string xml_id or an integer view_id :param raise_if_not_found: should the method raise an error if no view found :return: The view record or empty recordset ''' View = self.env['ir.ui.view'] - view = None + view = View if isinstance(view_id, str): if 'website_id' in self._context: domain = [('key', '=', view_id)] + self.env['website'].website_domain(self._context.get('website_id')) @@ -520,20 +526,20 @@ class Website(models.Model): if views: view = views.filter_duplicate() else: - view = self.env.ref(view_id) + # we handle the raise below + view = self.env.ref(view_id, raise_if_not_found=False) # self.env.ref might return something else than an ir.ui.view (eg: a theme.ir.ui.view) - if view._name != 'ir.ui.view': - view = None + if not view or view._name != 'ir.ui.view': + # make sure we always return a recordset + view = View elif isinstance(view_id, int): view = View.browse(view_id) else: raise ValueError('Expecting a string or an integer, not a %s.' % (type(view_id))) - if view: - return view - if raise_if_not_found: + if not view and raise_if_not_found: raise ValueError('No record found for unique ID %s. It may have been deleted.' % (view_id)) - return None + return view @api.model def get_template(self, template): @@ -1151,9 +1157,12 @@ class Menu(models.Model): @api.multi def unlink(self): default_menu = self.env.ref('website.main_menu', raise_if_not_found=False) + menus_to_remove = self for menu in self.filtered(lambda m: default_menu and m.parent_id.id == default_menu.id): - self.env['website.menu'].search([('url', '=', menu.url), ('id', '!=', menu.id)]).unlink() - return super(Menu, self).unlink() + menus_to_remove |= self.env['website.menu'].search([('url', '=', menu.url), + ('website_id', '!=', False), + ('id', '!=', menu.id)]) + return super(Menu, menus_to_remove).unlink() @api.one def _compute_visible(self): diff --git a/addons/website/static/src/scss/bootstrap_overridden.scss b/addons/website/static/src/scss/bootstrap_overridden.scss index 8c21c748fe1..b25b9af1f25 100644 --- a/addons/website/static/src/scss/bootstrap_overridden.scss +++ b/addons/website/static/src/scss/bootstrap_overridden.scss @@ -31,3 +31,7 @@ $font-family-sans-serif: nth($o-theme-fonts, $o-theme-font-number); $headings-font-family: nth($o-theme-fonts, $o-theme-headings-font-number); $headings-color: color('h1'); + +// Jumbotron + +$jumbotron-bg: transparent !default; diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index ad5e297a3a2..05febbf1fae 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -847,7 +847,7 @@ <div class="container accordion mb32 mt32" id="debug_infos"> <div class="card" t-if="exception"> <h4 class="card-header"> - <a data-toggle="collapse" data-parent="#debug_infos" href="#error_main">Error</a> + <a data-toggle="collapse" href="#error_main">Error</a> </h4> <div id="error_main" class="collapse in"> <div class="card-body"> @@ -861,7 +861,7 @@ </div> <div class="card" t-if="qweb_exception"> <h4 class="card-header"> - <a data-toggle="collapse" data-parent="#adebug_infos" href="#error_qweb">QWeb</a> + <a data-toggle="collapse" href="#error_qweb">QWeb</a> </h4> <div id="error_qweb" class="collapse"> <div class="card-body"> @@ -881,7 +881,7 @@ </div> <div class="card" t-if="traceback"> <h4 class="card-header"> - <a data-toggle="collapse" data-parent="#adebug_infos" href="#error_traceback">Traceback</a> + <a data-toggle="collapse" href="#error_traceback">Traceback</a> </h4> <div id="error_traceback" class="collapse"> <div class="card-body"> |
