[MERGE] SEO meta data persistence. New template title handling
bzr revid: fme@openerp.com-20131014151509-6bnux7ncvqmy3tea
This commit is contained in:
commit
853cb1dd26
|
@ -129,6 +129,13 @@ class Website(openerp.addons.web.controllers.main.Home):
|
||||||
values = {
|
values = {
|
||||||
'path': path,
|
'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:
|
try:
|
||||||
html = request.website.render(path, values)
|
html = request.website.render(path, values)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|
|
@ -10,6 +10,9 @@ class view(osv.osv):
|
||||||
'inherit_option_id': fields.many2one('ir.ui.view','Optional Inheritancy'),
|
'inherit_option_id': fields.many2one('ir.ui.view','Optional Inheritancy'),
|
||||||
'inherited_option_ids': fields.one2many('ir.ui.view','inherit_option_id','Optional Inheritancies'),
|
'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)"),
|
'page': fields.boolean("Whether this view is a web page template (complete)"),
|
||||||
|
'website_meta_title': fields.char("Website meta title", size=70, translate=True),
|
||||||
|
'website_meta_description': fields.text("Website meta description", translate=True),
|
||||||
|
'website_meta_keywords': fields.char("Website meta keywords", size=70, translate=True),
|
||||||
}
|
}
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'page': False,
|
'page': False,
|
||||||
|
|
|
@ -109,9 +109,13 @@
|
||||||
website.ready = function() {
|
website.ready = function() {
|
||||||
if (!all_ready) {
|
if (!all_ready) {
|
||||||
var tpl = website.load_templates(templates);
|
var tpl = website.load_templates(templates);
|
||||||
// var session;
|
all_ready = dom_ready.then(function () {
|
||||||
// var trads = openerp._t.database.load_translations(session, ['website'], website.get_context().lang);
|
if ($('html').data('editable')) {
|
||||||
all_ready = $.when(dom_ready, tpl);
|
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;
|
return all_ready;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var website = openerp.website;
|
var website = openerp.website;
|
||||||
website.templates.push('/website/static/src/xml/website.seo.xml');
|
website.templates.push('/website/static/src/xml/website.seo.xml');
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
'click a[data-action=promote-current-page]': 'launchSeo',
|
'click a[data-action=promote-current-page]': 'launchSeo',
|
||||||
}),
|
}),
|
||||||
launchSeo: function () {
|
launchSeo: function () {
|
||||||
(new website.seo.Configurator()).appendTo($(document.body));
|
(new website.seo.Configurator(this)).appendTo($(document.body));
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -241,24 +241,29 @@
|
||||||
return hashIndex >= 0 ? url.substring(0, hashIndex) : url;
|
return hashIndex >= 0 ? url.substring(0, hashIndex) : url;
|
||||||
},
|
},
|
||||||
title: function () {
|
title: function () {
|
||||||
return $('title').text().trim();
|
return ($('title').length > 0) && $('title').text() && $('title').text().trim();
|
||||||
},
|
},
|
||||||
changeTitle: function (title) {
|
changeTitle: function (title) {
|
||||||
|
// TODO create tag if missing
|
||||||
$('title').text(title);
|
$('title').text(title);
|
||||||
this.trigger('title-changed', title);
|
this.trigger('title-changed', title);
|
||||||
},
|
},
|
||||||
description: function () {
|
description: function () {
|
||||||
return $('meta[name=description]').attr('value').trim();
|
var $description = $('meta[name=description]');
|
||||||
|
return ($description.length > 0) && $description.attr('value') && $description.attr('value').trim();
|
||||||
},
|
},
|
||||||
changeDescription: function (description) {
|
changeDescription: function (description) {
|
||||||
|
// TODO create tag if missing
|
||||||
$('meta[name=description]').attr('value', description);
|
$('meta[name=description]').attr('value', description);
|
||||||
this.trigger('description-changed', description);
|
this.trigger('description-changed', description);
|
||||||
},
|
},
|
||||||
keywords: function () {
|
keywords: function () {
|
||||||
var parsed = $('meta[name=keywords]').attr('value').split(",");
|
var $keywords = $('meta[name=keywords]');
|
||||||
return parsed[0] ? parsed: [];
|
var parsed = ($keywords.length > 0) && $keywords.attr('value') && $keywords.attr('value').split(",");
|
||||||
|
return (parsed && parsed[0]) ? parsed: [];
|
||||||
},
|
},
|
||||||
changeKeywords: function (keywords) {
|
changeKeywords: function (keywords) {
|
||||||
|
// TODO create tag if missing
|
||||||
$('meta[name=keywords]').attr('value', keywords.join(","));
|
$('meta[name=keywords]').attr('value', keywords.join(","));
|
||||||
this.trigger('keywords-changed', keywords);
|
this.trigger('keywords-changed', keywords);
|
||||||
},
|
},
|
||||||
|
@ -364,7 +369,8 @@
|
||||||
}
|
}
|
||||||
var htmlPage = this.htmlPage;
|
var htmlPage = this.htmlPage;
|
||||||
|
|
||||||
// desactivated as too complex for end-users
|
// Add message suggestions at the top of the dialog
|
||||||
|
// if necessary....
|
||||||
// if (htmlPage.headers('h1').length === 0) {
|
// if (htmlPage.headers('h1').length === 0) {
|
||||||
// tips.push({
|
// tips.push({
|
||||||
// type: 'warning',
|
// type: 'warning',
|
||||||
|
@ -390,15 +396,60 @@
|
||||||
$input.val("");
|
$input.val("");
|
||||||
},
|
},
|
||||||
update: function () {
|
update: function () {
|
||||||
|
var self = this;
|
||||||
var data = {
|
var data = {
|
||||||
title: this.htmlPage.title(),
|
website_meta_title: self.htmlPage.title(),
|
||||||
description: this.htmlPage.description(),
|
website_meta_description: self.htmlPage.description(),
|
||||||
keywords: this.keywordList.keywords(),
|
website_meta_keywords: self.keywordList.keywords().join(", "),
|
||||||
images: this.imageList.images(),
|
|
||||||
};
|
};
|
||||||
console.log(data);
|
self.saveMetaData(data).then(function () {
|
||||||
// TODO Persist changes
|
self.$el.modal('hide');
|
||||||
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 = ['website_meta_title', 'website_meta_description', 'website_meta_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 () {
|
titleChanged: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
|
@ -13,13 +13,24 @@
|
||||||
<template id="layout" name="Main layout">
|
<template id="layout" name="Main layout">
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html t-att-lang="lang.replace('_', '-')"
|
<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-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>
|
<head>
|
||||||
<title><t t-esc="title or res_company.name"/></title>
|
<t t-if="main_object and 'website_meta_title' in main_object">
|
||||||
<meta name="openerp.company" t-att-value="res_company.name" />
|
<t t-set="title" t-value="main_object.website_meta_title"/>
|
||||||
<meta name="description" value="" />
|
</t>
|
||||||
<meta name="keywords" value="" />
|
<t t-if="not title and main_object and 'name' in main_object">
|
||||||
|
<t t-set="additional_title" t-value="main_object.name"/>
|
||||||
|
</t>
|
||||||
|
<t t-if="not title">
|
||||||
|
<t t-set="title"><t t-raw="res_company.name"/><t t-if="additional_title"> - <t t-raw="additional_title"/></t></t>
|
||||||
|
</t>
|
||||||
|
<title><t t-esc="title"/></title>
|
||||||
|
<meta name="openerp.company" t-att-value="res_company.name"/>
|
||||||
|
<meta name="description" t-att-value="main_object.website_meta_description or website_meta_description"/>
|
||||||
|
<meta name="keywords" t-att-value="main_object.website_meta_keywords or website_meta_keywords"/>
|
||||||
|
|
||||||
<!-- Load stylesheets before scripts to avoid blocking -->
|
<!-- Load stylesheets before scripts to avoid blocking -->
|
||||||
<link rel='stylesheet' href='/web/static/lib/fontawesome/css/font-awesome.css'/>
|
<link rel='stylesheet' href='/web/static/lib/fontawesome/css/font-awesome.css'/>
|
||||||
|
@ -410,9 +421,6 @@ Sitemap: <t t-esc="url_root"/>sitemap.xml
|
||||||
|
|
||||||
<template id="contactus" name="Contact us" page="True">
|
<template id="contactus" name="Contact us" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Contact us -
|
|
||||||
<t t-raw="res_company.name"></t>
|
|
||||||
</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
@ -437,10 +445,8 @@ Sitemap: <t t-esc="url_root"/>sitemap.xml
|
||||||
</t>
|
</t>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template id="aboutus" page="True">
|
<template id="aboutus" name="About us" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">About <t t-raw="res_company.name"></t>
|
|
||||||
</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container mb32">
|
<div class="container mb32">
|
||||||
|
|
|
@ -176,13 +176,12 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- Page -->
|
<!-- Page -->
|
||||||
<template id="index" name="Blogs" page="True">
|
<template id="index" name="Blog" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="head">
|
<t t-set="head">
|
||||||
<script type="text/javascript" src="/website_blog/static/src/js/website_blog.js"></script>
|
<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'/>
|
<link rel='stylesheet' href='/website_blog/static/src/css/website_blog.css'/>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title">Blog</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container mt16 js_website_blog">
|
<div class="container mt16 js_website_blog">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -57,9 +57,6 @@
|
||||||
|
|
||||||
<template id="contactus_thanks" name="Contact us" page="True">
|
<template id="contactus_thanks" name="Contact us" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Contact us -
|
|
||||||
<t t-raw="res_company.name"></t>
|
|
||||||
</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<!-- Page -->
|
<!-- Page -->
|
||||||
<template id="layout" name="Partners Layout">
|
<template id="layout" name="Partners Layout">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Partners</t>
|
<t t-set="additional_title">Partners</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<!-- Page -->
|
<!-- Page -->
|
||||||
<template id="layout" name="Customer References Layout">
|
<template id="layout" name="Customer References Layout">
|
||||||
<t t-call="website.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 id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
|
@ -15,10 +15,6 @@
|
||||||
<!-- Page -->
|
<!-- Page -->
|
||||||
<template id="index" name="Events" page="True">
|
<template id="index" name="Events" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="head">
|
|
||||||
<t t-raw="head or ''"/>
|
|
||||||
</t>
|
|
||||||
<t t-set="title">Events</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
|
@ -122,10 +118,7 @@
|
||||||
|
|
||||||
<template id="event_description_full">
|
<template id="event_description_full">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="head">
|
<t t-set="additional_title">Events</t>
|
||||||
<t t-raw="head or ''"/>
|
|
||||||
</t>
|
|
||||||
<t t-set="title">Events</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,8 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template id="index" name="Departments" page="True">
|
<template id="index" name="Jobs" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="head">
|
|
||||||
<t t-raw="head or ''"/>
|
|
||||||
</t>
|
|
||||||
<t t-set="title">Jobs</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container oe_website_jobs">
|
<div class="container oe_website_jobs">
|
||||||
|
@ -64,7 +60,7 @@
|
||||||
<script type="text/javascript" src="/website_hr_recruitment/static/src/js/recruitment.js"></script>
|
<script type="text/javascript" src="/website_hr_recruitment/static/src/js/recruitment.js"></script>
|
||||||
<t t-raw="head or ''"/>
|
<t t-raw="head or ''"/>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title">Job Detail</t>
|
<t t-set="additional_title">Job Detail</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container oe_website_hr_recruitment">
|
<div class="container oe_website_hr_recruitment">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -110,7 +106,7 @@
|
||||||
|
|
||||||
<template id="applyjobpost">
|
<template id="applyjobpost">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Apply Job</t>
|
<t t-set="additional_title">Apply Job</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1 class="text-center">Apply for <span t-field="job.name"></span></h1>
|
<h1 class="text-center">Apply for <span t-field="job.name"></span></h1>
|
||||||
|
@ -158,7 +154,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template id="thankyou">
|
<template id="thankyou">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Thank You!</t>
|
<t t-set="additional_title">Thank You!</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>You have successfully applied for job.</h1>
|
<h1>You have successfully applied for job.</h1>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<!-- Page -->
|
<!-- Page -->
|
||||||
<template id="layout" name="Members Layout">
|
<template id="layout" name="Members Layout">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Associations</t>
|
<t t-set="additional_title">Associations</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<!-- Task -->
|
<!-- Task -->
|
||||||
<template id="task" name="Task">
|
<template id="task" name="Task">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Task</t>
|
<t t-set="additional_title">Task</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h4 t-field="task.name"/>
|
<h4 t-field="task.name"/>
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template id="index" name="Project">
|
<template id="index" name="Project">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="title">Project</t>
|
<t t-set="additional_title">Project</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h4 t-field="project.name"/>
|
<h4 t-field="project.name"/>
|
||||||
|
|
|
@ -289,6 +289,7 @@ class Ecommerce(http.Controller):
|
||||||
'search': post.get("search"),
|
'search': post.get("search"),
|
||||||
'get_categories': self.get_categories,
|
'get_categories': self.get_categories,
|
||||||
'category_list': category_list,
|
'category_list': category_list,
|
||||||
|
'main_object': product,
|
||||||
'product': product,
|
'product': product,
|
||||||
}
|
}
|
||||||
return request.website.render("website_sale.product", values)
|
return request.website.render("website_sale.product", values)
|
||||||
|
|
|
@ -140,7 +140,7 @@
|
||||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||||
<t t-raw="head or ''"/>
|
<t t-raw="head or ''"/>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title">Our Products</t>
|
<t t-set="additional_title">Our Products</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
<div class="container oe_website_sale">
|
<div class="container oe_website_sale">
|
||||||
|
@ -289,7 +289,7 @@
|
||||||
<t t-set="head">
|
<t t-set="head">
|
||||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title" t-raw="product.name"/>
|
<t t-set="additional_title" t-value="product.name"/>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
|
|
||||||
<section class="container mt8">
|
<section class="container mt8">
|
||||||
|
@ -402,14 +402,13 @@
|
||||||
|
|
||||||
<!-- Page Shop my cart -->
|
<!-- Page Shop my cart -->
|
||||||
|
|
||||||
<template id="mycart" name="My cart" page="True">
|
<template id="mycart" name="Your Cart" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<t t-set="head">
|
<t t-set="head">
|
||||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
||||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||||
<t t-raw="head or ''"/>
|
<t t-raw="head or ''"/>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title">Your Cart</t>
|
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container oe_website_sale">
|
<div class="container oe_website_sale">
|
||||||
|
|
||||||
|
@ -634,7 +633,7 @@
|
||||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||||
<t t-raw="head or ''"/>
|
<t t-raw="head or ''"/>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title">Shop - Checkout</t>
|
<t t-set="additional_title">Shop - Checkout</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container oe_website_sale">
|
<div class="container oe_website_sale">
|
||||||
<ul class="wizard pull-right">
|
<ul class="wizard pull-right">
|
||||||
|
@ -798,7 +797,7 @@
|
||||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||||
<t t-raw="head or ''"/>
|
<t t-raw="head or ''"/>
|
||||||
</t>
|
</t>
|
||||||
<t t-set="title">Select Payment Mode</t>
|
<t t-set="additional_title">Shop - Select Payment Mode</t>
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
<div class="container oe_website_sale">
|
<div class="container oe_website_sale">
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue