From 9b40e849d6debcfb9fbca2ded70f0ed7cae2c878 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 10 Oct 2013 15:29:07 +0200 Subject: [WIP] new title managment in templates. expose main_object for seo bzr revid: fme@openerp.com-20131010132907-xxmg96qmcw9j5f2d --- addons/website/static/src/js/website.seo.js | 50 ++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'addons/website/static/src/js/website.seo.js') diff --git a/addons/website/static/src/js/website.seo.js b/addons/website/static/src/js/website.seo.js index 945b0ed353d..6aa97110ff6 100644 --- a/addons/website/static/src/js/website.seo.js +++ b/addons/website/static/src/js/website.seo.js @@ -9,7 +9,7 @@ 'click a[data-action=promote-current-page]': 'launchSeo', }), launchSeo: function () { - (new website.seo.Configurator()).appendTo($(document.body)); + (new website.seo.Configurator(this)).appendTo($(document.body)); }, }); @@ -320,6 +320,9 @@ maxTitleSize: 65, maxDescriptionSize: 155, start: function () { + this.loadMetaData().then(function (data) { + console.log(data); + }); var self = this; var $modal = self.$el; var htmlPage = this.htmlPage = new website.seo.HtmlPage(); @@ -400,6 +403,51 @@ // TODO Persist changes this.$el.modal('hide'); }, + getMainObject: function () { + var repr = $('html').data('main-object'); + var m = repr.match(/.+\((.+), (\d+)\)/); + if (!m) { + return null; + } else { + return { + model: m[1], + id: m[2]|0 + }; + } + }, + loadMetaData: function () { + var self = this; + var obj = this.getMainObject(); + var def = $.Deferred(); + if (!obj) { + // return $.Deferred().reject(new Error("No main_object was found.")); + def.resolve(null); + } else { + var fields = ['name', 'website_description', 'website_keywords']; + var model = website.session.model(obj.model); + model.call('read', [[obj.id], fields, website.get_context()]).then(function (data) { + if (data.length) { + var meta = data[0]; + meta['model'] = obj.model; + def.resolve(meta); + } else { + def.resolve(null); + } + }).fail(function () { + def.reject(); + }); + } + return def; + }, + saveMetaData: function (data) { + var obj = this.getMainObject(); + if (!obj) { + return $.Deferred().reject(); + } else { + var model = website.session.model(obj.model); + return model.call('write', [[obj.id], data, website.get_context()]); + } + }, titleChanged: function () { var self = this; setTimeout(function () { -- cgit v1.2.3