[FIX] SEO metadata saving

bzr revid: ddm@openerp.com-20131016143939-v0v1tcopq4zoqgxf
This commit is contained in:
ddm 2013-10-16 16:39:39 +02:00
parent 57c5f11aae
commit 1625eb29ae
2 changed files with 40 additions and 15 deletions

View File

@ -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');
});

View File

@ -48,12 +48,13 @@
</div>
</div>
</section>
<!--
<section class="js_image_section">
<h3 class="page-header">3. Describe your images</h3>
<div class="row js_seo_image_list">
<!-- filled in JS -->
</div>
</section>
-->
</div><div class="modal-footer">
<button data-action="discard" data-dismiss="modal" href="#" class="btn btn-default">Discard</button>
<button type="button" data-action="update" class="btn btn-primary">Apply Changes</button>