diff --git a/addons/website/static/src/js/website.seo.js b/addons/website/static/src/js/website.seo.js index 0d20253290a..4413f628afa 100644 --- a/addons/website/static/src/js/website.seo.js +++ b/addons/website/static/src/js/website.seo.js @@ -241,7 +241,8 @@ return hashIndex >= 0 ? url.substring(0, hashIndex) : url; }, title: function () { - return ($('title').length > 0) && $('title').text() && $('title').text().trim(); + var $title = $('title'); + return ($title.length > 0) && $title.text() && $title.text().trim(); }, changeTitle: function (title) { // TODO create tag if missing @@ -250,7 +251,7 @@ }, description: function () { var $description = $('meta[name=description]'); - return ($description.length > 0) && $description.attr('value') && $description.attr('value').trim(); + return ($description.length > 0) && ($description.attr('value') && $description.attr('value').trim()); }, changeDescription: function (description) { // TODO create tag if missing @@ -331,13 +332,13 @@ $modal.find('.js_seo_page_url').text(htmlPage.url()); $modal.find('input[name=seo_page_title]').val(htmlPage.title()); $modal.find('textarea[name=seo_page_description]').val(htmlPage.description()); - self.suggestImprovements(); - self.imageList = new website.seo.ImageList(self, { page: htmlPage }); - if (htmlPage.images().length === 0) { - $modal.find('.js_image_section').remove(); - } else { - self.imageList.appendTo($modal.find('.js_seo_image_list')); - } + // self.suggestImprovements(); + // self.imageList = new website.seo.ImageList(self, { page: htmlPage }); + // if (htmlPage.images().length === 0) { + // $modal.find('.js_image_section').remove(); + // } else { + // self.imageList.appendTo($modal.find('.js_seo_image_list')); + // } self.keywordList = new website.seo.KeywordList(self, { page: htmlPage }); self.keywordList.on('list-full', self, function () { $modal.find('input[name=seo_page_keywords]') @@ -356,8 +357,26 @@ self.keywordList.add(word); }); self.keywordList.appendTo($modal.find('.js_seo_keywords_list')); + self.disableUnsavableFields(); $modal.modal(); }, + disableUnsavableFields: function () { + var $modal = this.$el; + this.loadMetaData().then(function (data) { + var canEditTitle = data && ('website_meta_title' in data); + var canEditDescription = data && ('website_meta_description' in data); + var canEditKeywords = data && ('website_meta_keywords' in data); + if (!canEditTitle) { + $modal.find('input[name=seo_page_title]').attr('disabled', true); + } + if (!canEditDescription) { + $modal.find('textarea[name=seo_page_description]').attr('disabled', true); + } + if (!canEditTitle && !canEditDescription && !canEditKeywords) { + $modal.find('button[data-action=update]').attr('disabled', true); + } + }); + }, suggestImprovements: function () { var tips = []; var self = this; @@ -397,11 +416,16 @@ }, update: function () { var self = this; - var data = { - website_meta_title: self.htmlPage.title(), - website_meta_description: self.htmlPage.description(), - website_meta_keywords: self.keywordList.keywords().join(", "), - }; + var data = {}; + if (!this.htmlPage.isTitleEditable()) { + data.website_meta_title = self.htmlPage.title(); + } + if (!this.htmlPage.isDescriptionEditable()) { + data.website_meta_description = self.htmlPage.description(); + } + if (!this.htmlPage.isKeywordsEditable()) { + data.website_meta_keywords = self.keywordList.keywords().join(", "); + } self.saveMetaData(data).then(function () { self.$el.modal('hide'); }); diff --git a/addons/website/static/src/xml/website.seo.xml b/addons/website/static/src/xml/website.seo.xml index 96a38a75d32..580779283ad 100644 --- a/addons/website/static/src/xml/website.seo.xml +++ b/addons/website/static/src/xml/website.seo.xml @@ -48,12 +48,13 @@ + + -->