[WIP] new title managment in templates. expose main_object for seo

bzr revid: fme@openerp.com-20131010132907-xxmg96qmcw9j5f2d
This commit is contained in:
Fabien Meghazi 2013-10-10 15:29:07 +02:00
parent 672a76a002
commit 9b40e849d6
15 changed files with 91 additions and 40 deletions

View File

@ -122,6 +122,13 @@ class Website(openerp.addons.web.controllers.main.Home):
values = {
'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:

View File

@ -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,

View File

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

View File

@ -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 () {

View File

@ -14,10 +14,13 @@
<template id="layout" name="Main layout">
&lt;!DOCTYPE html&gt;
<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">

View File

@ -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">

View File

@ -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">

View File

@ -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">

View File

@ -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">

View File

@ -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">

View File

@ -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>

View File

@ -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">

View File

@ -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"/>

View File

@ -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)

View File

@ -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">