diff options
| author | Fabien Meghazi <fme@openerp.com> | 2013-10-10 15:29:07 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2013-10-10 15:29:07 +0200 |
| commit | 9b40e849d6debcfb9fbca2ded70f0ed7cae2c878 (patch) | |
| tree | 798a75304726d29027ba732daaa6ff40818f0e26 /addons/website | |
| parent | 672a76a002ca25ccfbfceab9c67a7a1003a2da62 (diff) | |
[WIP] new title managment in templates. expose main_object for seo
bzr revid: fme@openerp.com-20131010132907-xxmg96qmcw9j5f2d
Diffstat (limited to 'addons/website')
| -rw-r--r-- | addons/website/controllers/main.py | 7 | ||||
| -rw-r--r-- | addons/website/models/view.py | 2 | ||||
| -rw-r--r-- | addons/website/static/src/js/website.js | 10 | ||||
| -rw-r--r-- | addons/website/static/src/js/website.seo.js | 50 | ||||
| -rw-r--r-- | addons/website/views/views.xml | 14 |
5 files changed, 72 insertions, 11 deletions
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 50163902b7a..869d51d85c7 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -123,6 +123,13 @@ class Website(openerp.addons.web.controllers.main.Home): 'path': path, } try: + module, xmlid = path.split('.', 1) + IMD = request.registry.get("ir.model.data") + obj = IMD.get_object_reference(request.cr, request.uid, module, xmlid) + values['main_object'] = request.registry[obj[0]].browse(request.cr, request.uid, obj[1]) + except Exception: + pass + try: html = request.website.render(path, values) except ValueError: html = request.website.render('website.404', values) diff --git a/addons/website/models/view.py b/addons/website/models/view.py index 6ddae129185..b146b405757 100644 --- a/addons/website/models/view.py +++ b/addons/website/models/view.py @@ -10,6 +10,8 @@ class view(osv.osv): 'inherit_option_id': fields.many2one('ir.ui.view','Optional Inheritancy'), 'inherited_option_ids': fields.one2many('ir.ui.view','inherit_option_id','Optional Inheritancies'), 'page': fields.boolean("Whether this view is a web page template (complete)"), + 'website_description': fields.char("Website Description", translate=True), + 'website_keywords': fields.char("Website Keywords", translate=True), } _defaults = { 'page': False, diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index e524edfb389..1f4e54b43df 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -109,9 +109,13 @@ website.ready = function() { if (!all_ready) { var tpl = website.load_templates(templates); - // var session; - // var trads = openerp._t.database.load_translations(session, ['website'], website.get_context().lang); - all_ready = $.when(dom_ready, tpl); + all_ready = dom_ready.then(function () { + if ($('html').data('editable')) { + website.session = new openerp.Session(); + var modules = ['website']; + return openerp._t.database.load_translations(website.session, modules, website.get_context().lang); + } + }).then(tpl).promise(); } return all_ready; }; 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 () { diff --git a/addons/website/views/views.xml b/addons/website/views/views.xml index cb0be35dee7..12a6a1b2d8a 100644 --- a/addons/website/views/views.xml +++ b/addons/website/views/views.xml @@ -14,10 +14,13 @@ <template id="layout" name="Main layout"> <!DOCTYPE html> <html t-att-lang="lang.replace('_', '-')" + t-att-data-editable="'1' if editable else None" t-att-data-translatable="'1' if translatable else None" - t-att-data-view-xmlid="xmlid if editable else None"> + t-att-data-view-xmlid="xmlid if editable else None" + t-att-data-main-object="main_object if editable else None"> <head> - <title><t t-esc="title or res_company.name"/></title> + <title t-if="title"><t t-esc="title"/></title> + <title t-if="not title"><t t-esc="res_company.name"/><t t-if="additional_title"> - <t t-esc="additional_title"/></t></title> <meta name="openerp.company" t-att-value="res_company.name" /> <meta name="description" value="" /> <meta name="keywords" value="" /> @@ -300,9 +303,7 @@ <template id="contactus" name="Contact us" page="True"> <t t-call="website.layout"> - <t t-set="title">Contact us - - <t t-raw="res_company.name"></t> - </t> + <t t-set="additional_title">Contact us</t> <div id="wrap"> <div class="oe_structure"/> <div class="container"> @@ -329,8 +330,7 @@ <template id="aboutus" page="True"> <t t-call="website.layout"> - <t t-set="title">About <t t-raw="res_company.name"></t> - </t> + <t t-set="additional_title">About us</t> <div id="wrap"> <div class="oe_structure"/> <div class="container mb32"> |
