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 | |
| 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')
| -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 | ||||
| -rw-r--r-- | addons/website_blog/views/website_blog_templates.xml | 2 | ||||
| -rw-r--r-- | addons/website_crm/views/website_crm.xml | 4 | ||||
| -rw-r--r-- | addons/website_crm_partner_assign/views/website_crm_partner_assign.xml | 2 | ||||
| -rw-r--r-- | addons/website_customer/views/website_customer.xml | 2 | ||||
| -rw-r--r-- | addons/website_event/views/website_event.xml | 10 | ||||
| -rw-r--r-- | addons/website_hr_recruitment/views/website_hr_recruitment.xml | 11 | ||||
| -rw-r--r-- | addons/website_membership/views/website_membership.xml | 2 | ||||
| -rw-r--r-- | addons/website_project/views/website_project.xml | 4 | ||||
| -rw-r--r-- | addons/website_sale/controllers/main.py | 1 | ||||
| -rw-r--r-- | addons/website_sale/views/website_sale.xml | 10 |
15 files changed, 91 insertions, 40 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"> diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index 1fe8b503c8d..bb79867a5aa 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -139,7 +139,7 @@ <script type="text/javascript" src="/website_blog/static/src/js/website_blog.js"></script> <link rel='stylesheet' href='/website_blog/static/src/css/website_blog.css'/> </t> - <t t-set="title">Blog</t> + <t t-set="additional_title">Blog</t> <div id="wrap"> <div class="container mt16 js_website_blog"> <div class="row"> diff --git a/addons/website_crm/views/website_crm.xml b/addons/website_crm/views/website_crm.xml index e10fd094795..5ac4e767524 100644 --- a/addons/website_crm/views/website_crm.xml +++ b/addons/website_crm/views/website_crm.xml @@ -57,9 +57,7 @@ <template id="contactus_thanks" 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"> diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml index 3141f1fc12b..84c28170a17 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml @@ -13,7 +13,7 @@ <!-- Page --> <template id="layout" name="Partners Layout"> <t t-call="website.layout"> - <t t-set="title">Partners</t> + <t t-set="additional_title">Partners</t> <div id="wrap"> <div class="oe_structure"/> <div class="container"> diff --git a/addons/website_customer/views/website_customer.xml b/addons/website_customer/views/website_customer.xml index efc31d6f2a5..816a949eb57 100644 --- a/addons/website_customer/views/website_customer.xml +++ b/addons/website_customer/views/website_customer.xml @@ -12,7 +12,7 @@ <!-- Page --> <template id="layout" name="Customer References Layout"> <t t-call="website.layout"> - <t t-set="title">Customer References</t> + <t t-set="additional_title">Customer References</t> <div id="wrap"> <div class="oe_structure"/> <div class="container"> diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index db4ec278b20..ea9fd17e597 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -15,10 +15,7 @@ <!-- Page --> <template id="index" name="Events" page="True"> <t t-call="website.layout"> - <t t-set="head"> - <t t-raw="head or ''"/> - </t> - <t t-set="title">Events</t> + <t t-set="additional_title">Events</t> <div id="wrap"> <div class="container"> <div class="oe_structure"/> @@ -122,10 +119,7 @@ <template id="event_description_full"> <t t-call="website.layout"> - <t t-set="head"> - <t t-raw="head or ''"/> - </t> - <t t-set="title">Events</t> + <t t-set="additional_title">Events</t> <div id="wrap"> <div class="container"> diff --git a/addons/website_hr_recruitment/views/website_hr_recruitment.xml b/addons/website_hr_recruitment/views/website_hr_recruitment.xml index 09e1ebad1ce..8a9d106a9b6 100644 --- a/addons/website_hr_recruitment/views/website_hr_recruitment.xml +++ b/addons/website_hr_recruitment/views/website_hr_recruitment.xml @@ -18,10 +18,7 @@ <template id="index" name="Departments" page="True"> <t t-call="website.layout"> - <t t-set="head"> - <t t-raw="head or ''"/> - </t> - <t t-set="title">Jobs</t> + <t t-set="additional_title">Jobs</t> <div id="wrap"> <div class="oe_structure"/> <div class="container oe_website_jobs"> @@ -64,7 +61,7 @@ <script type="text/javascript" src="/website_hr_recruitment/static/src/js/recruitment.js"></script> <t t-raw="head or ''"/> </t> - <t t-set="title">Job Detail</t> + <t t-set="additional_title">Job Detail</t> <div id="wrap"> <div class="container oe_website_hr_recruitment"> <div class="row"> @@ -110,7 +107,7 @@ <template id="applyjobpost"> <t t-call="website.layout"> - <t t-set="title">Apply Job</t> + <t t-set="additional_title">Apply Job</t> <div id="wrap"> <div class="container"> <h1 class="text-center">Apply for <span t-field="job.name"></span></h1> @@ -158,7 +155,7 @@ </template> <template id="thankyou"> <t t-call="website.layout"> - <t t-set="title">Thank You!</t> + <t t-set="additional_title">Thank You!</t> <div id="wrap"> <div class="container"> <h1>You have successfully applied for job.</h1> diff --git a/addons/website_membership/views/website_membership.xml b/addons/website_membership/views/website_membership.xml index b3ebf776508..7491a15c55e 100644 --- a/addons/website_membership/views/website_membership.xml +++ b/addons/website_membership/views/website_membership.xml @@ -12,7 +12,7 @@ <!-- Page --> <template id="layout" name="Members Layout"> <t t-call="website.layout"> - <t t-set="title">Associations</t> + <t t-set="additional_title">Associations</t> <div id="wrap"> <div class="oe_structure"/> <div class="container"> diff --git a/addons/website_project/views/website_project.xml b/addons/website_project/views/website_project.xml index 44742bdf568..90618dc6adc 100644 --- a/addons/website_project/views/website_project.xml +++ b/addons/website_project/views/website_project.xml @@ -12,7 +12,7 @@ <!-- Task --> <template id="task" name="Task"> <t t-call="website.layout"> - <t t-set="title">Task</t> + <t t-set="additional_title">Task</t> <div id="wrap"> <div class="container"> <h4 t-field="task.name"/> @@ -41,7 +41,7 @@ </template> <template id="index" name="Project"> <t t-call="website.layout"> - <t t-set="title">Project</t> + <t t-set="additional_title">Project</t> <div id="wrap"> <div class="container"> <h4 t-field="project.name"/> diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 789391c478a..02fab32e177 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -289,6 +289,7 @@ class Ecommerce(http.Controller): 'search': post.get("search"), 'get_categories': self.get_categories, 'category_list': category_list, + 'main_object': product, 'product': product, } return request.website.render("website_sale.product", values) diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 7e51b893016..5c5f400d62e 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -135,7 +135,7 @@ <link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/> <t t-raw="head or ''"/> </t> - <t t-set="title">Our Products</t> + <t t-set="additional_title">Our Products</t> <div id="wrap"> <div class="oe_structure"/> <div class="container oe_website_sale"> @@ -284,7 +284,7 @@ <t t-set="head"> <script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script> </t> - <t t-set="title" t-raw="product.name"/> + <t t-set="additional_title" t-value="product.name"/> <div id="wrap"> <section class="container mt8"> @@ -399,7 +399,7 @@ <link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/> <t t-raw="head or ''"/> </t> - <t t-set="title">Your Cart</t> + <t t-set="additional_title">Your Cart</t> <div id="wrap"> <div class="container oe_website_sale"> @@ -603,7 +603,7 @@ <link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/> <t t-raw="head or ''"/> </t> - <t t-set="title">Shop - Checkout</t> + <t t-set="additional_title">Shop - Checkout</t> <div id="wrap"> <div class="container oe_website_sale"> <ul class="wizard pull-right"> @@ -758,7 +758,7 @@ <link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/> <t t-raw="head or ''"/> </t> - <t t-set="title">Select Payment Mode</t> + <t t-set="additional_title">Shop - Select Payment Mode</t> <div id="wrap"> <div class="container oe_website_sale"> |
