From 378d7478b65df0fe5cc309fe5de4364960d61d43 Mon Sep 17 00:00:00 2001 From: Parth Choksi Date: Fri, 5 Apr 2019 09:06:41 +0000 Subject: [PATCH] [IMP] website: improvements in SEO dialog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In this commit, we have changed behaviour of SEO dialog. Now when you keep title and description fields empty, then the page will use default title and description. We have added default_title and default_description to render the preview with default values when title and description fields are empty in SEO dialog. Task ID:1949636 closes odoo/odoo#32449 Signed-off-by: Jérémy Kersten (jke) --- addons/website/models/mixins.py | 3 ++- addons/website/static/src/js/menu/seo.js | 17 +++++++++++------ addons/website/static/src/xml/website.seo.xml | 6 +++--- addons/website/views/website_templates.xml | 16 +++++++++------- addons/website_blog/models/website_blog.py | 1 + addons/website_event/models/event.py | 1 + addons/website_forum/models/forum.py | 1 + addons/website_sale/models/product.py | 1 + addons/website_slides/models/slide_slide.py | 1 + 9 files changed, 30 insertions(+), 17 deletions(-) diff --git a/addons/website/models/mixins.py b/addons/website/models/mixins.py index 1d46b55c3bd..39a14b6060e 100644 --- a/addons/website/models/mixins.py +++ b/addons/website/models/mixins.py @@ -93,7 +93,8 @@ class SeoMetadata(models.AbstractModel): twitter_meta['twitter:image'] = meta_image return { 'opengraph_meta': opengraph_meta, - 'twitter_meta': twitter_meta + 'twitter_meta': twitter_meta, + 'meta_description': default_meta.get('default_meta_description') } diff --git a/addons/website/static/src/js/menu/seo.js b/addons/website/static/src/js/menu/seo.js index 85d959cb3c6..332fde71a4f 100644 --- a/addons/website/static/src/js/menu/seo.js +++ b/addons/website/static/src/js/menu/seo.js @@ -220,6 +220,8 @@ var HtmlPage = Class.extend(mixins.PropertiesMixin, { init: function () { mixins.PropertiesMixin.init.call(this); this.initTitle = this.title(); + this.defaultTitle = $('meta[name="default_title"]').attr('content'); + this.defaultDescription = $('meta[name="default_description"]').attr('content') || _t("The description will be generated by social media based on page content unless you specify one."); this.initDescription = this.description(); }, url: function () { @@ -230,7 +232,7 @@ var HtmlPage = Class.extend(mixins.PropertiesMixin, { }, changeTitle: function (title) { // TODO create tag if missing - $('title').text(title.trim() || this.initTitle); + $('title').text(title.trim() || this.defaultTitle); this.trigger('title-changed', title); }, description: function () { @@ -348,9 +350,12 @@ var MetaTitleDescription = Widget.extend({ if (!this.canEditDescription) { this.$description.attr('disabled', true); } - - this.$title.val(this.htmlPage.title()); - this.$description.val(this.htmlPage.description()); + if (this.htmlPage.title().trim() !== this.htmlPage.defaultTitle.trim()) { + this.$title.val(this.htmlPage.title()); + } + if (this.htmlPage.description().trim() !== this.htmlPage.defaultDescription.trim()) { + this.$description.val(this.htmlPage.description()); + } this._descriptionOnChange(); }, @@ -358,13 +363,13 @@ var MetaTitleDescription = Widget.extend({ * Get the current title */ getTitle: function () { - return this.$title.val().trim() || this.htmlPage.initTitle; + return this.$title.val().trim() || this.htmlPage.defaultTitle; }, /** * Get the current description */ getDescription: function () { - return this.$description.val(); + return this.$description.val() || this.htmlPage.defaultDescription; }, /** * @private diff --git a/addons/website/static/src/xml/website.seo.xml b/addons/website/static/src/xml/website.seo.xml index bf2de26d4ce..1aac9fc49a7 100644 --- a/addons/website/static/src/xml/website.seo.xml +++ b/addons/website/static/src/xml/website.seo.xml @@ -62,13 +62,13 @@ - +
-