[MERGE] Sync with website-al
bzr revid: tde@openerp.com-20131113093009-w6jih5xosequqowh
This commit is contained in:
commit
ac54e05a21
|
@ -21,6 +21,7 @@ from PIL import Image as I
|
||||||
|
|
||||||
from openerp.osv import orm, fields
|
from openerp.osv import orm, fields
|
||||||
from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
|
from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
|
||||||
|
from openerp.addons.web.http import request
|
||||||
|
|
||||||
REMOTE_CONNECTION_TIMEOUT = 2.5
|
REMOTE_CONNECTION_TIMEOUT = 2.5
|
||||||
|
|
||||||
|
@ -32,6 +33,31 @@ class QWeb(orm.AbstractModel):
|
||||||
_name = 'website.qweb'
|
_name = 'website.qweb'
|
||||||
_inherit = 'ir.qweb'
|
_inherit = 'ir.qweb'
|
||||||
|
|
||||||
|
URL_ATTRS = {
|
||||||
|
'form': 'action',
|
||||||
|
'a': 'href',
|
||||||
|
'link': 'href',
|
||||||
|
'frame': 'src',
|
||||||
|
'iframe': 'src',
|
||||||
|
'script': 'src',
|
||||||
|
}
|
||||||
|
|
||||||
|
def add_template(self, into, name, node, context):
|
||||||
|
# preprocessing for multilang static urls
|
||||||
|
if request and 'url_for' in context:
|
||||||
|
router = request.httprequest.app.get_db_router(request.db).bind('')
|
||||||
|
for tag, attr in self.URL_ATTRS.items():
|
||||||
|
for e in node.getElementsByTagName(tag):
|
||||||
|
url = e.getAttribute(attr)
|
||||||
|
if url:
|
||||||
|
try:
|
||||||
|
func = router.match(url)[0]
|
||||||
|
if func.multilang:
|
||||||
|
e.setAttribute(attr, context['url_for'](url))
|
||||||
|
except Exception, e:
|
||||||
|
pass
|
||||||
|
super(QWeb, self).add_template(into, name, node, context)
|
||||||
|
|
||||||
def get_converter_for(self, field_type):
|
def get_converter_for(self, field_type):
|
||||||
return self.pool.get(
|
return self.pool.get(
|
||||||
'website.qweb.field.' + field_type,
|
'website.qweb.field.' + field_type,
|
||||||
|
|
|
@ -100,25 +100,6 @@ class view(osv.osv):
|
||||||
|
|
||||||
return arch
|
return arch
|
||||||
|
|
||||||
URL_ATTRS = {
|
|
||||||
'form': 'action',
|
|
||||||
'a': 'href',
|
|
||||||
'link': 'href',
|
|
||||||
'frame': 'src',
|
|
||||||
'iframe': 'src',
|
|
||||||
'script': 'src',
|
|
||||||
}
|
|
||||||
def _normalize_urls(self, root):
|
|
||||||
for element in root.iter():
|
|
||||||
attr = self.URL_ATTRS.get(element.tag)
|
|
||||||
if attr is None or attr not in element.attrib:
|
|
||||||
continue
|
|
||||||
|
|
||||||
value = element.get(attr)
|
|
||||||
if not urlparse(value).scheme:
|
|
||||||
element.attrib.pop(attr)
|
|
||||||
element.set('t-' + attr, value)
|
|
||||||
|
|
||||||
def save(self, cr, uid, res_id, value, xpath=None, context=None):
|
def save(self, cr, uid, res_id, value, xpath=None, context=None):
|
||||||
""" Update a view section. The view section may embed fields to write
|
""" Update a view section. The view section may embed fields to write
|
||||||
|
|
||||||
|
@ -131,10 +112,6 @@ class view(osv.osv):
|
||||||
arch_section = html.fromstring(
|
arch_section = html.fromstring(
|
||||||
value, parser=html.HTMLParser(encoding='utf-8'))
|
value, parser=html.HTMLParser(encoding='utf-8'))
|
||||||
|
|
||||||
# TODO fme: Temporary desactivated because this breaks most of the snippets
|
|
||||||
# Need to find another way to normalize multilang urls (postprocessing) ?
|
|
||||||
# self._normalize_urls(arch_section)
|
|
||||||
|
|
||||||
if xpath is None:
|
if xpath is None:
|
||||||
# value is an embedded field on its own, not a view section
|
# value is an embedded field on its own, not a view section
|
||||||
self.save_embedded_field(cr, uid, arch_section, context=context)
|
self.save_embedded_field(cr, uid, arch_section, context=context)
|
||||||
|
|
|
@ -37,7 +37,7 @@ def route(routes, *route_args, **route_kwargs):
|
||||||
@http.route(new_routes, *route_args, **route_kwargs)
|
@http.route(new_routes, *route_args, **route_kwargs)
|
||||||
@functools.wraps(f, assigned=functools.WRAPPER_ASSIGNMENTS + ('func_name',))
|
@functools.wraps(f, assigned=functools.WRAPPER_ASSIGNMENTS + ('func_name',))
|
||||||
def wrap(*args, **kwargs):
|
def wrap(*args, **kwargs):
|
||||||
request.route_lang = kwargs.get('lang_code', None)
|
request.route_lang = kwargs.pop('lang_code', None)
|
||||||
if not hasattr(request, 'website'):
|
if not hasattr(request, 'website'):
|
||||||
request.multilang = f.multilang
|
request.multilang = f.multilang
|
||||||
# TODO: Select website, currently hard coded
|
# TODO: Select website, currently hard coded
|
||||||
|
@ -332,11 +332,22 @@ class website(osv.osv):
|
||||||
of the same.
|
of the same.
|
||||||
:rtype: list({name: str, url: str})
|
:rtype: list({name: str, url: str})
|
||||||
"""
|
"""
|
||||||
|
# FIXME: possibility to add custom converters without editing server
|
||||||
|
# would allow the creation of a pages converter generating page
|
||||||
|
# urls on its own
|
||||||
|
View = self.pool['ir.ui.view']
|
||||||
|
views = View.search_read(cr, uid, [['page', '=', True]],
|
||||||
|
fields=['name'], order='name', context=context)
|
||||||
|
xids = View.get_external_id(cr, uid, [view['id'] for view in views], context=context)
|
||||||
|
for view in views:
|
||||||
|
if xids[view['id']]:
|
||||||
|
yield {
|
||||||
|
'name': view['name'],
|
||||||
|
'url': '/page/' + xids[view['id']],
|
||||||
|
}
|
||||||
|
|
||||||
router = request.httprequest.app.get_db_router(request.db)
|
router = request.httprequest.app.get_db_router(request.db)
|
||||||
|
|
||||||
for rule in router.iter_rules():
|
for rule in router.iter_rules():
|
||||||
endpoint = rule.endpoint
|
|
||||||
if not self.rule_is_enumerable(rule):
|
if not self.rule_is_enumerable(rule):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -346,8 +357,7 @@ class website(osv.osv):
|
||||||
)))
|
)))
|
||||||
|
|
||||||
for values in generated:
|
for values in generated:
|
||||||
# rule.build returns (domain_part, rel_url)
|
domain_part, url = rule.build(values, append_unknown=False)
|
||||||
url = rule.build(values, append_unknown=False)[1]
|
|
||||||
yield {'name': url, 'url': url }
|
yield {'name': url, 'url': url }
|
||||||
|
|
||||||
def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None, context=None):
|
def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None, context=None):
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
@charset "utf-8";
|
||||||
/* ---- CKEditor Minimal Reset ---- */
|
/* ---- CKEditor Minimal Reset ---- */
|
||||||
.navbar.navbar-inverse .cke_chrome {
|
.navbar.navbar-inverse .cke_chrome {
|
||||||
border: none;
|
border: none;
|
||||||
|
|
|
@ -362,6 +362,7 @@ footer {
|
||||||
|
|
||||||
.parallax {
|
.parallax {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
background-size: 100%;
|
||||||
}
|
}
|
||||||
.parallax.oe_small {
|
.parallax.oe_small {
|
||||||
height: 200px;
|
height: 200px;
|
||||||
|
|
|
@ -277,6 +277,7 @@ footer
|
||||||
|
|
||||||
.parallax
|
.parallax
|
||||||
position: relative
|
position: relative
|
||||||
|
background-size: 100%
|
||||||
&.oe_small
|
&.oe_small
|
||||||
height: 200px
|
height: 200px
|
||||||
&.oe_medium
|
&.oe_medium
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
website.menu.EditMenuDialog = website.editor.Dialog.extend({
|
website.menu.EditMenuDialog = website.editor.Dialog.extend({
|
||||||
template: 'website.menu.dialog.edit',
|
template: 'website.menu.dialog.edit',
|
||||||
events: _.extend({}, website.editor.Dialog.prototype.events, {
|
events: _.extend({}, website.editor.Dialog.prototype.events, {
|
||||||
'click button.js_add_menu': 'add_menu',
|
'click a.js_add_menu': 'add_menu',
|
||||||
'click button.js_edit_menu': 'edit_menu',
|
'click button.js_edit_menu': 'edit_menu',
|
||||||
'click button.js_delete_menu': 'delete_menu',
|
'click button.js_delete_menu': 'delete_menu',
|
||||||
}),
|
}),
|
||||||
|
@ -40,8 +40,6 @@
|
||||||
},
|
},
|
||||||
start: function () {
|
start: function () {
|
||||||
var r = this._super.apply(this, arguments);
|
var r = this._super.apply(this, arguments);
|
||||||
var button = openerp.qweb.render('website.menu.dialog.footer-button');
|
|
||||||
this.$('.modal-footer').prepend(button);
|
|
||||||
this.$('.oe_menu_editor').nestedSortable({
|
this.$('.oe_menu_editor').nestedSortable({
|
||||||
listType: 'ul',
|
listType: 'ul',
|
||||||
handle: 'div',
|
handle: 'div',
|
||||||
|
|
|
@ -0,0 +1,111 @@
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var website = openerp.website;
|
||||||
|
website.snippet = {};
|
||||||
|
|
||||||
|
website.snippet.start_animation = function () {
|
||||||
|
$("[data-snippet-id]").each(function() {
|
||||||
|
var $snipped_id = $(this);
|
||||||
|
if ( !$snipped_id.parents("#oe_snippets").length &&
|
||||||
|
!$snipped_id.parent("body").length &&
|
||||||
|
!$snipped_id.data("snippet-view") &&
|
||||||
|
website.snippet.animationRegistry[$snipped_id.data("snippet-id")]) {
|
||||||
|
var snippet = new website.snippet.animationRegistry[$snipped_id.data("snippet-id")]($snipped_id);
|
||||||
|
$snipped_id.data("snippet-view", snippet);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
website.snippet.stop_animation = function () {
|
||||||
|
$("[data-snippet-id]").each(function() {
|
||||||
|
var $snipped_id = $(this);
|
||||||
|
if ($snipped_id.data("snippet-view")) {
|
||||||
|
$snipped_id.data("snippet-view").stop();
|
||||||
|
$snipped_id.data("snippet-view", false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
$(document).ready(website.snippet.start_animation);
|
||||||
|
|
||||||
|
|
||||||
|
website.snippet.animationRegistry = {};
|
||||||
|
website.snippet.Animation = openerp.Class.extend({
|
||||||
|
$: function () {
|
||||||
|
return this.$el.find.apply(this.$el, arguments);
|
||||||
|
},
|
||||||
|
init: function (dom) {
|
||||||
|
this.$el = this.$target = $(dom);
|
||||||
|
this.start();
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* start
|
||||||
|
* This method is called after init
|
||||||
|
*/
|
||||||
|
start: function () {
|
||||||
|
},
|
||||||
|
/*
|
||||||
|
* stop
|
||||||
|
* This method is called to stop the animation (e.g.: when rte is launch)
|
||||||
|
*/
|
||||||
|
stop: function () {
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
website.snippet.animationRegistry.carousel = website.snippet.Animation.extend({
|
||||||
|
start: function () {
|
||||||
|
this.$target.carousel({interval: false});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
website.snippet.animationRegistry.parallax = website.snippet.Animation.extend({
|
||||||
|
start: function () {
|
||||||
|
var self = this;
|
||||||
|
setTimeout(function () {self.set_values();});
|
||||||
|
this.on_scroll = function () {
|
||||||
|
var speed = parseFloat(self.$target.attr("data-scroll-background-ratio") || 0);
|
||||||
|
if (speed == 1) return;
|
||||||
|
var offset = parseFloat(self.$target.attr("data-scroll-background-offset") || 0);
|
||||||
|
var top = offset + window.scrollY * speed;
|
||||||
|
self.$target.css("background-position", "0px " + top + "px");
|
||||||
|
};
|
||||||
|
this.on_resize = function () {
|
||||||
|
self.set_values();
|
||||||
|
};
|
||||||
|
$(window).on("scroll", this.on_scroll);
|
||||||
|
$(window).on("resize", this.on_resize);
|
||||||
|
},
|
||||||
|
stop: function () {
|
||||||
|
$(window).off("scroll", this.on_scroll)
|
||||||
|
.off("resize", this.on_resize);
|
||||||
|
},
|
||||||
|
set_values: function () {
|
||||||
|
var self = this;
|
||||||
|
var speed = parseFloat(self.$target.attr("data-scroll-background-ratio") || 0);
|
||||||
|
|
||||||
|
if (speed == 1) {
|
||||||
|
this.$target.css("background-attachment", "fixed").css("background-position", "0px 0px");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.$target.css("background-attachment", "scroll");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$target.attr("data-scroll-background-offset", 0);
|
||||||
|
var img = new Image();
|
||||||
|
img.onload = function () {
|
||||||
|
var offset = 0;
|
||||||
|
var padding = parseInt($(document.body).css("padding-top"));
|
||||||
|
if (speed < 1) {
|
||||||
|
var inner_offset = self.$target.outerHeight() - this.height / this.width * document.body.clientWidth;
|
||||||
|
var outer_offset = self.$target.offset().top - (document.body.clientHeight - self.$target.outerHeight()) - padding;
|
||||||
|
offset = - outer_offset * speed + inner_offset;
|
||||||
|
} else {
|
||||||
|
offset = - self.$target.offset().top * speed;
|
||||||
|
}
|
||||||
|
self.$target.attr("data-scroll-background-offset", offset);
|
||||||
|
$(window).scroll();
|
||||||
|
};
|
||||||
|
img.src = this.$target.css("background-image").replace(/url\(['"]*|['"]*\)/g, "");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
})();
|
|
@ -1,21 +1,6 @@
|
||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
var start_snippet_animation = function () {
|
|
||||||
hack_to_add_snippet_id();
|
|
||||||
$("[data-snippet-id]").each(function() {
|
|
||||||
var $snipped_id = $(this);
|
|
||||||
if ( !$snipped_id.parents("#oe_snippets").length &&
|
|
||||||
typeof $snipped_id.data("snippet-view") === 'undefined' &&
|
|
||||||
website.snippet.animationRegistry[$snipped_id.data("snippet-id")]) {
|
|
||||||
var snippet = new website.snippet.animationRegistry[$snipped_id.data("snippet-id")]($snipped_id);
|
|
||||||
$snipped_id.data("snippet-view", snippet);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
$(document).ready(start_snippet_animation);
|
|
||||||
|
|
||||||
var website = openerp.website;
|
var website = openerp.website;
|
||||||
website.add_template_file('/website/static/src/xml/website.snippets.xml');
|
website.add_template_file('/website/static/src/xml/website.snippets.xml');
|
||||||
|
|
||||||
|
@ -39,7 +24,8 @@
|
||||||
|
|
||||||
this.on('rte:ready', this, function () {
|
this.on('rte:ready', this, function () {
|
||||||
self.snippets.$button.removeClass("hidden");
|
self.snippets.$button.removeClass("hidden");
|
||||||
start_snippet_animation();
|
website.snippet.stop_animation();
|
||||||
|
website.snippet.start_animation();
|
||||||
self.trigger('rte:snippets_ready');
|
self.trigger('rte:snippets_ready');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -58,7 +44,6 @@
|
||||||
|
|
||||||
/* ----- SNIPPET SELECTOR ---- */
|
/* ----- SNIPPET SELECTOR ---- */
|
||||||
|
|
||||||
website.snippet = {};
|
|
||||||
var observer = new website.Observer(function (mutations) {
|
var observer = new website.Observer(function (mutations) {
|
||||||
if (!_(mutations).find(function (m) {
|
if (!_(mutations).find(function (m) {
|
||||||
return m.type === 'childList' && m.addedNodes.length > 0;
|
return m.type === 'childList' && m.addedNodes.length > 0;
|
||||||
|
@ -88,6 +73,10 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
hack_to_add_snippet_id();
|
||||||
|
});
|
||||||
|
|
||||||
website.snippet.selector = [];
|
website.snippet.selector = [];
|
||||||
website.snippet.BuildingBlock = openerp.Widget.extend({
|
website.snippet.BuildingBlock = openerp.Widget.extend({
|
||||||
template: 'website.snippets',
|
template: 'website.snippets',
|
||||||
|
@ -219,16 +208,10 @@
|
||||||
if ($snipped_id.data("snippet-editor")) {
|
if ($snipped_id.data("snippet-editor")) {
|
||||||
$snipped_id.data("snippet-editor").onBlur();
|
$snipped_id.data("snippet-editor").onBlur();
|
||||||
}
|
}
|
||||||
if ($snipped_id.data("snippet-view")) {
|
|
||||||
$snipped_id.data("snippet-view").onBlurEdit();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
snippet_focus: function ($snipped_id) {
|
snippet_focus: function ($snipped_id) {
|
||||||
if ($snipped_id) {
|
if ($snipped_id) {
|
||||||
if ($snipped_id.data("snippet-view")) {
|
|
||||||
$snipped_id.data("snippet-view").onFocusEdit();
|
|
||||||
}
|
|
||||||
if ($snipped_id.data("snippet-editor")) {
|
if ($snipped_id.data("snippet-editor")) {
|
||||||
$snipped_id.data("snippet-editor").onFocus();
|
$snipped_id.data("snippet-editor").onFocus();
|
||||||
}
|
}
|
||||||
|
@ -367,9 +350,7 @@
|
||||||
if(action === 'insert'){
|
if(action === 'insert'){
|
||||||
$target = $toInsert;
|
$target = $toInsert;
|
||||||
|
|
||||||
if (website.snippet.animationRegistry[snipped_id]) {
|
website.snippet.start_animation();
|
||||||
new website.snippet.animationRegistry[snipped_id]($target);
|
|
||||||
}
|
|
||||||
|
|
||||||
self.create_overlay($target);
|
self.create_overlay($target);
|
||||||
$target.data("snippet-editor").drop_and_build_snippet($target);
|
$target.data("snippet-editor").drop_and_build_snippet($target);
|
||||||
|
@ -547,34 +528,6 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
website.snippet.animationRegistry = {};
|
|
||||||
website.snippet.Animation = openerp.Class.extend({
|
|
||||||
$: function () {
|
|
||||||
return this.$el.find.apply(this.$el, arguments);
|
|
||||||
},
|
|
||||||
init: function (dom) {
|
|
||||||
this.$el = this.$target = $(dom);
|
|
||||||
this.start();
|
|
||||||
},
|
|
||||||
/*
|
|
||||||
* start
|
|
||||||
* This method is called after init
|
|
||||||
*/
|
|
||||||
start: function () {
|
|
||||||
},
|
|
||||||
/* onFocusEdit
|
|
||||||
* if they are an editor for this data-snippet-id
|
|
||||||
* Called before onFocus of snippet editor
|
|
||||||
*/
|
|
||||||
onFocusEdit : function () {},
|
|
||||||
|
|
||||||
/* onBlurEdit
|
|
||||||
* if they are an editor for this data-snippet-id
|
|
||||||
* Called after onBlur of snippet editor
|
|
||||||
*/
|
|
||||||
onBlurEdit : function () {},
|
|
||||||
});
|
|
||||||
|
|
||||||
website.snippet.editorRegistry = {};
|
website.snippet.editorRegistry = {};
|
||||||
website.snippet.Editor = openerp.Class.extend({
|
website.snippet.Editor = openerp.Class.extend({
|
||||||
init: function (parent, dom) {
|
init: function (parent, dom) {
|
||||||
|
@ -797,7 +750,7 @@
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
change_background: function (bg, ul_options) {
|
change_background: function (bg, ul_options, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.set_options_background(bg, ul_options);
|
this.set_options_background(bg, ul_options);
|
||||||
var $ul = this.$editor.find(ul_options);
|
var $ul = this.$editor.find(ul_options);
|
||||||
|
@ -819,6 +772,9 @@
|
||||||
});
|
});
|
||||||
editor.appendTo($('body'));
|
editor.appendTo($('body'));
|
||||||
}
|
}
|
||||||
|
if (callback) {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.on('mouseover', function (event) {
|
.on('mouseover', function (event) {
|
||||||
if ($(this).data("value")) {
|
if ($(this).data("value")) {
|
||||||
|
@ -1033,11 +989,6 @@
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
website.snippet.animationRegistry.carousel = website.snippet.Animation.extend({
|
|
||||||
start: function () {
|
|
||||||
this.$target.carousel({interval: false});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
website.snippet.editorRegistry.carousel = website.snippet.editorRegistry.resize.extend({
|
website.snippet.editorRegistry.carousel = website.snippet.editorRegistry.resize.extend({
|
||||||
drop_and_build_snippet: function() {
|
drop_and_build_snippet: function() {
|
||||||
var id = 0;
|
var id = 0;
|
||||||
|
@ -1211,8 +1162,11 @@
|
||||||
|
|
||||||
website.snippet.editorRegistry.parallax = website.snippet.editorRegistry.resize.extend({
|
website.snippet.editorRegistry.parallax = website.snippet.editorRegistry.resize.extend({
|
||||||
start : function () {
|
start : function () {
|
||||||
|
var self = this;
|
||||||
this._super();
|
this._super();
|
||||||
this.change_background(this.$target, 'ul[name="parallax-background"]');
|
this.change_background(this.$target, 'ul[name="parallax-background"]', function () {
|
||||||
|
self.$target.data("snippet-view").set_values();
|
||||||
|
});
|
||||||
this.scroll();
|
this.scroll();
|
||||||
this.change_size();
|
this.change_size();
|
||||||
},
|
},
|
||||||
|
@ -1228,11 +1182,15 @@
|
||||||
var speed = $(this).data('value');
|
var speed = $(this).data('value');
|
||||||
self.$target.attr('data-scroll-background-ratio', speed);
|
self.$target.attr('data-scroll-background-ratio', speed);
|
||||||
self.$target.data("snippet-view").set_values();
|
self.$target.data("snippet-view").set_values();
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
|
this.$target.data("snippet-view").set_values();
|
||||||
},
|
},
|
||||||
clean_for_save: function () {
|
clean_for_save: function () {
|
||||||
this._super();
|
this._super();
|
||||||
this.$target.find(".parallax").css("background-position", '');
|
this.$target.find(".parallax")
|
||||||
|
.css("background-position", '')
|
||||||
|
.removeAttr("data-scroll-background-offset");
|
||||||
},
|
},
|
||||||
change_size: function () {
|
change_size: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -1251,6 +1209,7 @@
|
||||||
$li.removeClass("active");
|
$li.removeClass("active");
|
||||||
$(this).addClass("active");
|
$(this).addClass("active");
|
||||||
self.$target.data("snippet-view").set_values();
|
self.$target.data("snippet-view").set_values();
|
||||||
|
return false;
|
||||||
})
|
})
|
||||||
.on('mouseover', function (event) {
|
.on('mouseover', function (event) {
|
||||||
self.$target.removeClass('oe_big oe_small oe_medium');
|
self.$target.removeClass('oe_big oe_small oe_medium');
|
||||||
|
@ -1262,39 +1221,6 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
website.snippet.animationRegistry.parallax = website.snippet.Animation.extend({
|
|
||||||
start: function () {
|
|
||||||
var self = this;
|
|
||||||
this.set_values();
|
|
||||||
var on_scroll = function () {
|
|
||||||
var speed = parseFloat(self.$target.attr("data-scroll-background-ratio") || 0);
|
|
||||||
if (speed == 1) return;
|
|
||||||
var offset = parseFloat(self.$target.attr("data-scroll-background-offset") || 0);
|
|
||||||
var top = offset + window.scrollY * speed;
|
|
||||||
self.$target.css("background-position", "0px " + top + "px");
|
|
||||||
};
|
|
||||||
$(window).off("scroll").on("scroll", on_scroll);
|
|
||||||
},
|
|
||||||
set_values: function () {
|
|
||||||
var self = this;
|
|
||||||
var speed = parseFloat(self.$target.attr("data-scroll-background-ratio") || 0);
|
|
||||||
|
|
||||||
if (speed == 1) {
|
|
||||||
this.$target.css("background-attachment", "fixed").css("background-position", "0px 0px");
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
this.$target.css("background-attachment", "scroll");
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$target.attr("data-scroll-background-offset", 0);
|
|
||||||
var img = new Image();
|
|
||||||
img.onload = function () {
|
|
||||||
self.$target.attr("data-scroll-background-offset", self.$target.outerHeight() - this.height);
|
|
||||||
$(window).scroll();
|
|
||||||
};
|
|
||||||
img.src = this.$target.css("background-image").replace(/url\(['"]*|['"]*\)/g, "");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* data-snippet-id automatically setted
|
* data-snippet-id automatically setted
|
|
@ -21,19 +21,19 @@
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</t>
|
</t>
|
||||||
<t t-name="website.menu.dialog.footer-button">
|
|
||||||
<button type="button" class="btn pull-left js_add_menu btn-success">
|
|
||||||
<i class="icon-plus-sign"/> Add Menu Entry
|
|
||||||
</button>
|
|
||||||
</t>
|
|
||||||
<t t-name="website.menu.dialog.edit">
|
<t t-name="website.menu.dialog.edit">
|
||||||
<t t-call="website.editor.dialog">
|
<t t-call="website.editor.dialog">
|
||||||
<t t-set="title">Edit Structure</t>
|
<t t-set="title">Edit Menu</t>
|
||||||
<ul class="oe_menu_editor">
|
<ul class="oe_menu_editor">
|
||||||
<t t-foreach="widget.menu.children" t-as="submenu">
|
<t t-foreach="widget.menu.children" t-as="submenu">
|
||||||
<t t-call="website.menu.dialog.submenu"/>
|
<t t-call="website.menu.dialog.submenu"/>
|
||||||
</t>
|
</t>
|
||||||
</ul>
|
</ul>
|
||||||
|
<p class="mt32">
|
||||||
|
<a href="#" class="js_add_menu">
|
||||||
|
<i class="icon-plus-sign"/> Add Menu Entry
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
</t>
|
</t>
|
||||||
</t>
|
</t>
|
||||||
<t t-name="website.menu.dialog.add" t-extend="website.editor.dialog.link">
|
<t t-name="website.menu.dialog.add" t-extend="website.editor.dialog.link">
|
||||||
|
|
|
@ -61,9 +61,16 @@
|
||||||
<h3 class="modal-title">Mobile preview</h3>
|
<h3 class="modal-title">Mobile preview</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div>
|
<iframe id="mobile-viewport" class="oe_mobile_viewport" src="?mobile-preview=true"></iframe>
|
||||||
<iframe id="mobile-viewport" class="oe_mobile_viewport" src="?mobile-preview=true"></iframe>
|
<script>
|
||||||
</div>
|
var $o = $('<div style="width:50px; overflow:scroll;"><div style="width:100%;"></div></div>');
|
||||||
|
$o.appendTo("body");
|
||||||
|
var scrollSize = 50 - $o.find("div").innerWidth();
|
||||||
|
$o.remove();
|
||||||
|
|
||||||
|
$(".modal-body").css({'overflow': 'hidden', 'margin-right': '5px'});
|
||||||
|
$(".oe_mobile_viewport").css({'width': (320 + scrollSize + 5) + 'px'});
|
||||||
|
</script>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -703,8 +703,8 @@
|
||||||
<li data-value="0.3"><a>Very Slow</a></li>
|
<li data-value="0.3"><a>Very Slow</a></li>
|
||||||
<li data-value="0.6"><a>Slow</a></li>
|
<li data-value="0.6"><a>Slow</a></li>
|
||||||
<li data-value="1"><a>Fixed</a></li>
|
<li data-value="1"><a>Fixed</a></li>
|
||||||
<li data-value="1.5"><a>Fast</a></li>
|
<li data-value="1.4"><a>Fast</a></li>
|
||||||
<li data-value="2"><a>Very Fast</a></li>
|
<li data-value="1.7"><a>Very Fast</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<div class="oe_snippet_body parallax oe_small oe_structure"
|
<div class="oe_snippet_body parallax oe_small oe_structure"
|
||||||
|
|
|
@ -77,6 +77,7 @@
|
||||||
<script type="text/javascript" src="/web/static/src/js/openerpframework.js"></script>
|
<script type="text/javascript" src="/web/static/src/js/openerpframework.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="/website/static/src/js/website.js"></script>
|
<script type="text/javascript" src="/website/static/src/js/website.js"></script>
|
||||||
|
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.snippets.animation.js"></script>
|
||||||
|
|
||||||
<t t-if="editable">
|
<t t-if="editable">
|
||||||
<script type="text/javascript" src="/website/static/lib/ckeditor/ckeditor.js"></script>
|
<script type="text/javascript" src="/website/static/lib/ckeditor/ckeditor.js"></script>
|
||||||
|
@ -98,7 +99,7 @@
|
||||||
<script type="text/javascript" src="/website/static/src/js/website.seo.js"></script>
|
<script type="text/javascript" src="/website/static/src/js/website.seo.js"></script>
|
||||||
<script type="text/javascript" src="/website/static/src/js/website.tour.js"></script>
|
<script type="text/javascript" src="/website/static/src/js/website.tour.js"></script>
|
||||||
<script type="text/javascript" src="/website/static/src/js/website.tour.basic.js"></script>
|
<script type="text/javascript" src="/website/static/src/js/website.tour.basic.js"></script>
|
||||||
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.snippets.js"></script>
|
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.snippets.editor.js"></script>
|
||||||
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.ace.js"></script>
|
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.ace.js"></script>
|
||||||
<script t-if="translatable" type="text/javascript" src="/website/static/src/js/website.translator.js"></script>
|
<script t-if="translatable" type="text/javascript" src="/website/static/src/js/website.translator.js"></script>
|
||||||
</t>
|
</t>
|
||||||
|
@ -147,13 +148,13 @@
|
||||||
<div class="col-md-3" name="product">
|
<div class="col-md-3" name="product">
|
||||||
<h4>Our products & Services</h4>
|
<h4>Our products & Services</h4>
|
||||||
<ul class="list-unstyled" name="products">
|
<ul class="list-unstyled" name="products">
|
||||||
<li><a t-href="/">Home</a></li>
|
<li><a href="/">Home</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3" name="info">
|
<div class="col-md-3" name="info">
|
||||||
<h4 name="info_title">Connect with us</h4>
|
<h4 name="info_title">Connect with us</h4>
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li><a t-href="/page/website.contactus">Contact us</a></li>
|
<li><a href="/page/website.contactus">Contact us</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li><i class="icon-phone"></i> <span t-field="res_company.phone"></span></li>
|
<li><i class="icon-phone"></i> <span t-field="res_company.phone"></span></li>
|
||||||
|
@ -209,7 +210,7 @@
|
||||||
<a class="label label-danger" href="https://openerp.com/apps/website">OpenERP</a>
|
<a class="label label-danger" href="https://openerp.com/apps/website">OpenERP</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-left text-muted">
|
<div class="pull-left text-muted">
|
||||||
Copyright &copy; <span t-field="res_company.name">Company name</span> - <a t-href="/sitemap">Sitemap</a>
|
Copyright &copy; <span t-field="res_company.name">Company name</span> - <a href="/sitemap">Sitemap</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -366,7 +367,7 @@
|
||||||
<div class="well mt32">
|
<div class="well mt32">
|
||||||
<p>This page does not exists, but you can create it as you are administrator of this site.</p>
|
<p>This page does not exists, but you can create it as you are administrator of this site.</p>
|
||||||
<a class="btn btn-primary" t-att-href="'/pagenew/'+path">Create Page</a>
|
<a class="btn btn-primary" t-att-href="'/pagenew/'+path">Create Page</a>
|
||||||
<span class="text-muted">or</span> <a t-href="/sitemap">Search a Page</a>
|
<span class="text-muted">or</span> <a href="/sitemap">Search a Page</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center text-muted">Edit the content bellow this line to adapt the default "page not found" page.</div>
|
<div class="text-center text-muted">Edit the content bellow this line to adapt the default "page not found" page.</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -381,8 +382,8 @@
|
||||||
</p>
|
</p>
|
||||||
<p>Maybe you were looking for one of these popular pages ?</p>
|
<p>Maybe you were looking for one of these popular pages ?</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a t-href="/">Homepage</a></li>
|
<li><a href="/">Homepage</a></li>
|
||||||
<li><a t-href="/page/website.contactus/">Contact Us</a></li>
|
<li><a href="/page/website.contactus/">Contact Us</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -420,8 +421,8 @@
|
||||||
</p>
|
</p>
|
||||||
<pre t-if="editable" t-esc="error"/>
|
<pre t-if="editable" t-esc="error"/>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a t-href="/">Homepage</a></li>
|
<li><a href="/">Homepage</a></li>
|
||||||
<li><a t-href="/page/website.contactus/">Contact Us</a></li>
|
<li><a href="/page/website.contactus/">Contact Us</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -505,64 +506,67 @@ Sitemap: <t t-esc="url_root"/>sitemap.xml
|
||||||
|
|
||||||
<template id="aboutus" name="About us" page="True">
|
<template id="aboutus" name="About us" page="True">
|
||||||
<t t-call="website.layout">
|
<t t-call="website.layout">
|
||||||
<div id="wrap" class="oe_structure">
|
<div id="wrap">
|
||||||
|
<div class="oe_structure">
|
||||||
|
|
||||||
<section data-snippet-id="title">
|
<section data-snippet-id="title">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<h1 class="text-center">About us</h1>
|
<h1 class="text-center">About us</h1>
|
||||||
<h3 class="text-muted text-center">Great products for great people</h3>
|
<h3 class="text-muted text-center">Great products for great people</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section data-snippet-id="text-image">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 mt32">
|
||||||
|
<p>
|
||||||
|
We are a team of passionated people whose goal is to improve everyone's
|
||||||
|
life through disruptive products. We build great products to solve your
|
||||||
|
business problems.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Our products are designed for small to medium companies willing to optimize
|
||||||
|
their performance.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-2 mt16 mb16">
|
||||||
|
<img src="/website/static/src/img/library/business_conference.jpg" class="img img-responsive shadow" alt="Our Team"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="parallax oe_structure mt16 oe_medium mb64" data-scroll-background-ratio="0.6" data-snippet-id="parallax" style="background-image: url(http://localhost:8069/website/static/src/img/parallax/parallax_bg.jpg); background-attachment: scroll; background-position: 0px 0px; ">
|
||||||
|
<section class="mb32 mt16" data-snippet-id="references">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 mt16 mb8">
|
||||||
|
<h1 class="text-center">What do customers say about us...</h1>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-1 mt16 mb0">
|
||||||
|
<blockquote data-snippet-id="quote">
|
||||||
|
<p><span style="background-color:#FFFFFF;">Write here a quote from one of your customer. Quotes are are great way to give confidence in your products or services.</span></p>
|
||||||
|
<small><span style="background-color:#FFFFFF;">Author of this quote</span></small>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-2 mt16 mb32">
|
||||||
|
<blockquote data-snippet-id="quote">
|
||||||
|
<p><span style="background-color:#FFFFFF;">OpenERP provides essential platform for our project management. Things are better organized and more visible with it.</span></p>
|
||||||
|
<small><span style="background-color:#FFFFFF;">John Doe, CEO</span></small>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
<div class="oe_structure"></div>
|
||||||
|
|
||||||
<section data-snippet-id="text-image">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6 mt32">
|
|
||||||
<p>
|
|
||||||
We are a team of passionated people whose goal is to improve everyone's
|
|
||||||
life through disruptive products. We build great products to solve your
|
|
||||||
business problems.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Our products are designed for small to medium companies willing to optimize
|
|
||||||
their performance.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-md-offset-2 mt16 mb16">
|
|
||||||
<img src="/website/static/src/img/library/business_conference.jpg" class="img img-responsive shadow" alt="Our Team"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div class="parallax oe_structure mt16 oe_medium mb64" data-scroll-background-offset="0" data-scroll-background-ratio="1" data-snippet-id="parallax" style="background-image: url(http://localhost:8069/website/static/src/img/parallax/parallax_bg.jpg); background-attachment: scroll; background-position: 0px 0px; ">
|
|
||||||
<section class="mb32 mt16" data-snippet-id="references">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12 mt16 mb8">
|
|
||||||
<h1 class="text-center">What do customers say about us...</h1>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-md-offset-1 mt16 mb0">
|
|
||||||
<blockquote data-snippet-id="quote">
|
|
||||||
<p><span style="background-color:#FFFFFF;">Write here a quote from one of your customer. Quotes are are great way to give confidence in your products or services.</span></p>
|
|
||||||
<small><span style="background-color:#FFFFFF;">Author of this quote</span></small>
|
|
||||||
</blockquote>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 col-md-offset-2 mt16 mb32">
|
|
||||||
<blockquote data-snippet-id="quote">
|
|
||||||
<p><span style="background-color:#FFFFFF;">OpenERP provides essential platform for our project management. Things are better organized and more visible with it.</span></p>
|
|
||||||
<small><span style="background-color:#FFFFFF;">John Doe, CEO</span></small>
|
|
||||||
</blockquote>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -177,7 +177,7 @@ class WebsiteBlog(http.Controller):
|
||||||
context=dict(context, mail_create_nosubcribe=True))
|
context=dict(context, mail_create_nosubcribe=True))
|
||||||
return werkzeug.utils.redirect(request.httprequest.referrer + "#comments")
|
return werkzeug.utils.redirect(request.httprequest.referrer + "#comments")
|
||||||
|
|
||||||
@website.route(['/blog/<int:category_id>/new'], type='http', auth="public")
|
@website.route(['/blog/<int:category_id>/new'], type='http', auth="public", multilang=True)
|
||||||
def blog_post_create(self, category_id=None, **post):
|
def blog_post_create(self, category_id=None, **post):
|
||||||
cr, uid, context = request.cr, request.uid, request.context
|
cr, uid, context = request.cr, request.uid, request.context
|
||||||
create_context = dict(context, mail_create_nosubscribe=True)
|
create_context = dict(context, mail_create_nosubscribe=True)
|
||||||
|
|
|
@ -263,7 +263,7 @@
|
||||||
through your <b>blog entries</b>, referenced in Google.
|
through your <b>blog entries</b>, referenced in Google.
|
||||||
</p>
|
</p>
|
||||||
<div>
|
<div>
|
||||||
<a t-href="/page/website.contactus"><button class="btn btn-primary">Contact us</button></a>
|
<a href="/page/website.contactus"><button class="btn btn-primary">Contact us</button></a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<template id="contactus_form" name="Contact Form" inherit_id="website.contactus" inherit_option_id="website.contactus">
|
<template id="contactus_form" name="Contact Form" inherit_id="website.contactus" inherit_option_id="website.contactus">
|
||||||
<xpath expr="//div[@name='mail_button']" position="replace">
|
<xpath expr="//div[@name='mail_button']" position="replace">
|
||||||
<form t-action="/crm/contactus" method="post" class="form-horizontal mt32" >
|
<form action="/crm/contactus" method="post" class="form-horizontal mt32" >
|
||||||
<div t-attf-class="form-group #{error and 'contact_name' in error and 'has-error' or ''}">
|
<div t-attf-class="form-group #{error and 'contact_name' in error and 'has-error' or ''}">
|
||||||
<label class="col-md-3 col-sm-4 control-label" for="contact_name">Your Name</label>
|
<label class="col-md-3 col-sm-4 control-label" for="contact_name">Your Name</label>
|
||||||
<div class="col-md-7 col-sm-8">
|
<div class="col-md-7 col-sm-8">
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<!-- Layout add nav and footer -->
|
<!-- Layout add nav and footer -->
|
||||||
<template id="footer_custom" inherit_id="website.layout" name="Footer Partners Link">
|
<template id="footer_custom" inherit_id="website.layout" name="Footer Partners Link">
|
||||||
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
||||||
<li><a t-href="/partners/">Partners</a></li>
|
<li><a href="/partners/">Partners</a></li>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
<t t-call="website.pager">
|
<t t-call="website.pager">
|
||||||
<t t-set="classname">pull-left</t>
|
<t t-set="classname">pull-left</t>
|
||||||
</t>
|
</t>
|
||||||
<form t-action="/partners/" method="get" class="navbar-search pull-right pagination form-inline">
|
<form action="/partners/" method="get" class="navbar-search pull-right pagination form-inline">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" name="search" class="search-query col-md-2 mt4 form-control" placeholder="Search" t-att-value="name_search"/>
|
<input type="text" name="search" class="search-query col-md-2 mt4 form-control" placeholder="Search" t-att-value="name_search"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- Layout add nav and footer -->
|
<!-- Layout add nav and footer -->
|
||||||
<template id="footer_custom" inherit_id="website.layout" name="Footer Customer References Link">
|
<template id="footer_custom" inherit_id="website.layout" name="Footer Customer References Link">
|
||||||
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
||||||
<li><a t-href="/customers/">Customer References</a></li>
|
<li><a href="/customers/">Customer References</a></li>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ Online Events
|
||||||
|
|
||||||
""",
|
""",
|
||||||
'author': 'OpenERP SA',
|
'author': 'OpenERP SA',
|
||||||
'depends': ['website', 'website_mail', 'event_sale', 'website_sale'],
|
'depends': ['website', 'website_partner', 'website_mail', 'event_sale', 'website_sale'],
|
||||||
'data': [
|
'data': [
|
||||||
'data/event_data.xml',
|
'data/event_data.xml',
|
||||||
'views/website_event.xml',
|
'views/website_event.xml',
|
||||||
|
|
|
@ -51,20 +51,20 @@ class event(osv.osv):
|
||||||
'website_published': False,
|
'website_published': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _check_organizer_id_published(self, cr, uid, ids, context=None):
|
# def _check_organizer_id_published(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids, context=context):
|
# for obj in self.browse(cr, uid, ids, context=context):
|
||||||
if obj.website_published and obj.organizer_id and not obj.organizer_id.website_published:
|
# if obj.website_published and obj.organizer_id and not obj.organizer_id.website_published:
|
||||||
return False
|
# return False
|
||||||
return True
|
# return True
|
||||||
def _check_address_id_published(self, cr, uid, ids, context=None):
|
# def _check_address_id_published(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids, context=context):
|
# for obj in self.browse(cr, uid, ids, context=context):
|
||||||
if obj.website_published and obj.address_id and not obj.address_id.website_published:
|
# if obj.website_published and obj.address_id and not obj.address_id.website_published:
|
||||||
return False
|
# return False
|
||||||
return True
|
# return True
|
||||||
_constraints = [
|
# _constraints = [
|
||||||
(_check_organizer_id_published, "This event can't be published if the field Orginizer is not website published.", ['organizer_id','website_published']),
|
# (_check_organizer_id_published, "This event can't be published if the field Orginizer is not website published.", ['organizer_id','website_published']),
|
||||||
(_check_address_id_published, "This event can't be published if the field Location is not website published.", ['address_id','website_published']),
|
# (_check_address_id_published, "This event can't be published if the field Location is not website published.", ['address_id','website_published']),
|
||||||
]
|
# ]
|
||||||
|
|
||||||
def google_map_img(self, cr, uid, ids, zoom=8, width=298, height=298, context=None):
|
def google_map_img(self, cr, uid, ids, zoom=8, width=298, height=298, context=None):
|
||||||
partner = self.browse(cr, uid, ids[0], context=context)
|
partner = self.browse(cr, uid, ids[0], context=context)
|
||||||
|
|
|
@ -3,3 +3,4 @@ access_event_event_public,event.event.public,event.model_event_event,base.group_
|
||||||
access_event_type_public,event.type.public,event.model_event_type,base.group_public,1,0,0,0
|
access_event_type_public,event.type.public,event.model_event_type,base.group_public,1,0,0,0
|
||||||
access_event_event_ticket_public,event.event.ticket.public,event_sale.model_event_event_ticket,base.group_public,1,0,0,0
|
access_event_event_ticket_public,event.event.ticket.public,event_sale.model_event_event_ticket,base.group_public,1,0,0,0
|
||||||
access_event_product_product_public,event.product.product.public,product.model_product_product,base.group_public,1,0,0,0
|
access_event_product_product_public,event.product.product.public,product.model_product_product,base.group_public,1,0,0,0
|
||||||
|
access_event_product_template_public,event.product.template.public,product.model_product_template,base.group_public,1,0,0,0
|
||||||
|
|
|
|
@ -24,7 +24,17 @@
|
||||||
<record id="event_product_product_public" model="ir.rule">
|
<record id="event_product_product_public" model="ir.rule">
|
||||||
<field name="name">Product linked to event: Public</field>
|
<field name="name">Product linked to event: Public</field>
|
||||||
<field name="model_id" ref="product.model_product_product"/>
|
<field name="model_id" ref="product.model_product_product"/>
|
||||||
<field name="domain_force">[("event_type_id", "!=", False), ('event_ticket_ids.event_id.website_published', '=', True)]</field>
|
<field name="domain_force">[('event_ticket_ids.event_id.website_published', '=', True)]</field>
|
||||||
|
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
|
||||||
|
<field name="perm_read" eval="True"/>
|
||||||
|
<field name="perm_write" eval="False"/>
|
||||||
|
<field name="perm_create" eval="False"/>
|
||||||
|
<field name="perm_unlink" eval="False"/>
|
||||||
|
</record>
|
||||||
|
<record id="event_product_template_public" model="ir.rule">
|
||||||
|
<field name="name">Product template linked to event: Public</field>
|
||||||
|
<field name="model_id" ref="product.model_product_template"/>
|
||||||
|
<field name="domain_force">[('product_variant_ids.event_ticket_ids.event_id.website_published', '=', True)]</field>
|
||||||
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
|
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
|
||||||
<field name="perm_read" eval="True"/>
|
<field name="perm_read" eval="True"/>
|
||||||
<field name="perm_write" eval="False"/>
|
<field name="perm_write" eval="False"/>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- Layout add nav and footer -->
|
<!-- Layout add nav and footer -->
|
||||||
<template id="header_footer_custom" inherit_id="website.layout" name="Footer Events Link">
|
<template id="header_footer_custom" inherit_id="website.layout" name="Footer Events Link">
|
||||||
<xpath expr="//footer//ul[@name='products']" position="inside">
|
<xpath expr="//footer//ul[@name='products']" position="inside">
|
||||||
<li><a t-href="/event">Events</a></li>
|
<li><a href="/event">Events</a></li>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@
|
||||||
<li t-if="event_id.country_id">
|
<li t-if="event_id.country_id">
|
||||||
<a t-href="/event?country=#{event_id.country_id.id}"><strong><span class="icon-double-angle-right"/> Other Events in <span t-esc="event_id.country_id.name"/></strong></a>
|
<a t-href="/event?country=#{event_id.country_id.id}"><strong><span class="icon-double-angle-right"/> Other Events in <span t-esc="event_id.country_id.name"/></strong></a>
|
||||||
</li>
|
</li>
|
||||||
<li><a t-href="/event"><strong><span class="icon-double-angle-right"/> All Events</strong></a></li>
|
<li><a href="/event"><strong><span class="icon-double-angle-right"/> All Events</strong></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
.col-wrap .colsize {
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,26 +3,23 @@
|
||||||
<data>
|
<data>
|
||||||
<!-- Page -->
|
<!-- Page -->
|
||||||
|
|
||||||
<template id="aboutus" inherit_id="website.aboutus" name="Our Team">
|
<template id="aboutus" inherit_id="website.aboutus" inherit_option_id="website.aboutus" name="Our Team">
|
||||||
<xpath expr="//div[@id='aboutus']" position="inside">
|
<xpath expr="//div[@class='oe_structure'][last()]" position="inside">
|
||||||
<t t-set="head">
|
<section class="container">
|
||||||
<link rel='stylesheet' href='/website_hr/static/src/css/website_hr.css'/>
|
<div class="col-sm-12 text-center" t-if="len(employee_ids)">
|
||||||
<t t-raw="head or ''"/>
|
<h2>Our Team</h2>
|
||||||
</t>
|
|
||||||
<div class="clearfix"/>
|
|
||||||
<div class="col-sm-12 text-center" t-if="len(employee_ids)">
|
|
||||||
<h2>Our Team</h2>
|
|
||||||
</div>
|
|
||||||
<div t-foreach="employee_ids" t-as="employee" class="col-sm-3 col-lg-2 mt16 text-center colsize">
|
|
||||||
<t t-call="website.publish_management"><t t-set="object" t-value="employee"/></t>
|
|
||||||
<div class="clearfix"/>
|
|
||||||
<img t-att-src="employee.img('image_medium')" class="img shadow img-rounded"/>
|
|
||||||
<div class="mt8">
|
|
||||||
<strong t-field="employee.name"></strong>
|
|
||||||
</div>
|
</div>
|
||||||
<div t-field="employee.job_id"/>
|
<div t-foreach="employee_ids" t-as="employee" class="col-sm-3 col-lg-2 mt16 text-center colsize">
|
||||||
<div t-field="employee.public_info" class="text-muted mt16"/>
|
<t t-call="website.publish_management"><t t-set="object" t-value="employee"/></t>
|
||||||
</div>
|
<div class="clearfix"/>
|
||||||
|
<img t-att-src="employee.img('image_medium')" class="img shadow img-rounded"/>
|
||||||
|
<div class="mt8">
|
||||||
|
<strong t-field="employee.name"></strong>
|
||||||
|
</div>
|
||||||
|
<div t-field="employee.job_id"/>
|
||||||
|
<div t-field="employee.public_info" class="text-muted mt16"/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ OpenERP Contact Form
|
||||||
|
|
||||||
""",
|
""",
|
||||||
'author': 'OpenERP SA',
|
'author': 'OpenERP SA',
|
||||||
'depends': ['hr_recruitment', 'website_mail'],
|
'depends': ['website_partner', 'hr_recruitment', 'website_mail'],
|
||||||
'data': [
|
'data': [
|
||||||
'data/website_hr_recruitment_data.xml',
|
'data/website_hr_recruitment_data.xml',
|
||||||
'views/website_hr_recruitment.xml',
|
'views/website_hr_recruitment.xml',
|
||||||
|
|
|
@ -91,17 +91,4 @@ class website_hr_recruitment(http.Controller):
|
||||||
@website.route('/job/publish', type='json', auth="admin", multilang=True)
|
@website.route('/job/publish', type='json', auth="admin", multilang=True)
|
||||||
def publish (self, id, object):
|
def publish (self, id, object):
|
||||||
res = controllers.publish(id, object)
|
res = controllers.publish(id, object)
|
||||||
|
|
||||||
hr_job = request.registry[object]
|
|
||||||
id = int(id)
|
|
||||||
rec = hr_job.browse(request.cr, request.uid, id)
|
|
||||||
vals = {}
|
|
||||||
if rec.website_published:
|
|
||||||
vals['state'] = 'recruit'
|
|
||||||
if not rec.no_of_recruitment:
|
|
||||||
vals ['no_of_recruitment'] = 1.0
|
|
||||||
else:
|
|
||||||
vals['state'] = 'open'
|
|
||||||
hr_job.write(request.cr, request.uid, [rec.id], vals, context=request.context)
|
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
|
@ -10,3 +10,12 @@ class hr_job(osv.osv):
|
||||||
'website_published': fields.boolean('Available in the website'),
|
'website_published': fields.boolean('Available in the website'),
|
||||||
'website_description': fields.html('Description for the website'),
|
'website_description': fields.html('Description for the website'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _check_address_id_published(self, cr, uid, ids, context=None):
|
||||||
|
for obj in self.browse(cr, uid, ids, context=context):
|
||||||
|
if obj.website_published and obj.address_id and not obj.address_id.website_published:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
_constraints = [
|
||||||
|
(_check_address_id_published, "This Jobpost can't be published if the field Job Location is not website published.", ['address_id','website_published']),
|
||||||
|
]
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
<template id="job_footer_custom" inherit_id="website.layout" name="Footer Job Link">
|
<template id="job_footer_custom" inherit_id="website.layout" name="Footer Job Link">
|
||||||
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
||||||
<li><a t-href="/jobs">Jobs</a></li>
|
<li><a href="/jobs">Jobs</a></li>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 text-center mt16 mb16">
|
<div class="col-md-12 text-center mt16 mb16">
|
||||||
<a t-href="/job/apply" class="btn btn-primary btn-lg">Apply</a>
|
<a href="/job/apply" class="btn btn-primary btn-lg">Apply</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -102,7 +102,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5">
|
||||||
<ol class="breadcrumb mb0">
|
<ol class="breadcrumb mb0">
|
||||||
<li><a t-href="/jobs">Our Jobs</a></li>
|
<li><a href="/jobs">Our Jobs</a></li>
|
||||||
<li class="active"><span t-field="job.name"></span></li>
|
<li class="active"><span t-field="job.name"></span></li>
|
||||||
</ol>
|
</ol>
|
||||||
</div><div class="col-sm-7">
|
</div><div class="col-sm-7">
|
||||||
|
@ -220,7 +220,7 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 text-center mt16 mb16">
|
<div class="col-md-12 text-center mt16 mb16">
|
||||||
<a t-href="/" class="btn btn-primary btn-lg">Continue To Our Website</a>
|
<a href="/" class="btn btn-primary btn-lg">Continue To Our Website</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -233,7 +233,7 @@
|
||||||
<template id="job_departments" inherit_option_id="website_hr_recruitment.index" name="Filter on Departments">
|
<template id="job_departments" inherit_option_id="website_hr_recruitment.index" name="Filter on Departments">
|
||||||
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
|
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
|
||||||
<ul class="nav nav-pills nav-stacked mb32">
|
<ul class="nav nav-pills nav-stacked mb32">
|
||||||
<li t-att-class=" '' if active else 'active' "><a t-href="/jobs">All Departments</a></li>
|
<li t-att-class=" '' if active else 'active' "><a href="/jobs">All Departments</a></li>
|
||||||
<t t-foreach="departments" t-as="department">
|
<t t-foreach="departments" t-as="department">
|
||||||
<li t-att-class="department.id == active and 'active' or ''">
|
<li t-att-class="department.id == active and 'active' or ''">
|
||||||
<a t-href="/jobs/department/#{ department.id }/" ><span t-field="department.name"/></a>
|
<a t-href="/jobs/department/#{ department.id }/" ><span t-field="department.name"/></a>
|
||||||
|
@ -249,7 +249,7 @@
|
||||||
<template id="job_offices" inherit_option_id="website_hr_recruitment.index" name="Filter on Offices">
|
<template id="job_offices" inherit_option_id="website_hr_recruitment.index" name="Filter on Offices">
|
||||||
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
|
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
|
||||||
<ul class="nav nav-pills nav-stacked mb32">
|
<ul class="nav nav-pills nav-stacked mb32">
|
||||||
<li t-att-class=" '' if office else 'active' "><a t-href="/jobs">All Offices</a></li>
|
<li t-att-class=" '' if office else 'active' "><a href="/jobs">All Offices</a></li>
|
||||||
<t t-foreach="offices" t-as="thisoffice">
|
<t t-foreach="offices" t-as="thisoffice">
|
||||||
<li t-att-class="thisoffice.id == office and 'active' or ''">
|
<li t-att-class="thisoffice.id == office and 'active' or ''">
|
||||||
<a t-href="/jobs/office/#{ thisoffice.id }/" >
|
<a t-href="/jobs/office/#{ thisoffice.id }/" >
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- Layout add nav and footer -->
|
<!-- Layout add nav and footer -->
|
||||||
<template id="footer_custom" inherit_id="website.layout" name="Footer Associations Link">
|
<template id="footer_custom" inherit_id="website.layout" name="Footer Associations Link">
|
||||||
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
<xpath expr="//footer//div[@name='info']/ul" position="inside">
|
||||||
<li><a t-href="/members/">Associations</a></li>
|
<li><a href="/members/">Associations</a></li>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<div class="col-md-4" id="left_column">
|
<div class="col-md-4" id="left_column">
|
||||||
<ul class="nav nav-pills nav-stacked mt16">
|
<ul class="nav nav-pills nav-stacked mt16">
|
||||||
<li class="nav-header"><h3>Associations</h3></li>
|
<li class="nav-header"><h3>Associations</h3></li>
|
||||||
<li t-att-class="membership and '' or 'active'"><a t-href="/members/">All</a></li>
|
<li t-att-class="membership and '' or 'active'"><a href="/members/">All</a></li>
|
||||||
<t t-foreach="memberships" t-as="membership_id">
|
<t t-foreach="memberships" t-as="membership_id">
|
||||||
<li t-att-class="membership and membership_id.id == membership.id and 'active' or ''">
|
<li t-att-class="membership and membership_id.id == membership.id and 'active' or ''">
|
||||||
<a t-href="/members/association/#{ membership_id.id }"><t t-esc="membership_id.name"/></a>
|
<a t-href="/members/association/#{ membership_id.id }"><t t-esc="membership_id.name"/></a>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<t t-call="website.pager">
|
<t t-call="website.pager">
|
||||||
<t t-set="classname">pull-left</t>
|
<t t-set="classname">pull-left</t>
|
||||||
</t>
|
</t>
|
||||||
<form t-action="/members/" method="get" class="navbar-search pull-right pagination form-inline">
|
<form action="/members/" method="get" class="navbar-search pull-right pagination form-inline">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="text" name="name" class="search-query col-md-2 mt4 form-control" placeholder="Search" t-att-value="post.get('name', '')"/>
|
<input type="text" name="name" class="search-query col-md-2 mt4 form-control" placeholder="Search" t-att-value="post.get('name', '')"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
'views/res_partner_view.xml',
|
'views/res_partner_view.xml',
|
||||||
'views/website_partner_view.xml',
|
'views/website_partner_view.xml',
|
||||||
'security/website_partner_security.xml',
|
'security/website_partner_security.xml',
|
||||||
|
'data/website_data.xml',
|
||||||
],
|
],
|
||||||
'css': [
|
'css': [
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<record id="base.main_company" model="res.company">
|
||||||
|
<field name="website_published">True</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -1 +1,2 @@
|
||||||
import res_partner
|
import res_partner
|
||||||
|
import res_company
|
|
@ -0,0 +1,11 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from openerp.osv import osv, fields
|
||||||
|
|
||||||
|
|
||||||
|
class WebsiteResCompany(osv.Model):
|
||||||
|
_inherit = 'res.company'
|
||||||
|
|
||||||
|
_columns = {
|
||||||
|
'website_published': fields.related('partner_id', 'website_published', string='Publish', help="Publish on the website"),
|
||||||
|
}
|
|
@ -342,7 +342,7 @@ class Ecommerce(http.Controller):
|
||||||
return request.website.render("website_sale.products", values)
|
return request.website.render("website_sale.products", values)
|
||||||
|
|
||||||
@website.route(['/shop/product/<model("product.template"):product>/'], type='http', auth="public", multilang=True)
|
@website.route(['/shop/product/<model("product.template"):product>/'], type='http', auth="public", multilang=True)
|
||||||
def product(self, product, search='', category='', filter='', promo=None, lang_code=None):
|
def product(self, product, search='', category='', filter='', promo=None):
|
||||||
|
|
||||||
if promo:
|
if promo:
|
||||||
self.change_pricelist(promo)
|
self.change_pricelist(promo)
|
||||||
|
|
|
@ -10,4 +10,5 @@ access_sale_order_public,sale.order.public,model_sale_order,base.group_public,1,
|
||||||
access_sale_order_line_public,sale.order.line.public,model_sale_order_line,base.group_public,1,0,0,0
|
access_sale_order_line_public,sale.order.line.public,model_sale_order_line,base.group_public,1,0,0,0
|
||||||
access_product_attribute,product.attribute.public,website_sale.model_product_attribute,base.group_public,1,0,0,0
|
access_product_attribute,product.attribute.public,website_sale.model_product_attribute,base.group_public,1,0,0,0
|
||||||
access_product_attribute_value,product.attribute.value.public,website_sale.model_product_attribute_value,base.group_public,1,0,0,0
|
access_product_attribute_value,product.attribute.value.public,website_sale.model_product_attribute_value,base.group_public,1,0,0,0
|
||||||
access_product_attribute_product,product.attribute.product.public,website_sale.model_product_attribute_product,base.group_public,1,0,0,0
|
access_product_attribute_product,product.attribute.product.public,website_sale.model_product_attribute_product,base.group_public,1,0,0,0
|
||||||
|
access_website_product_style,website.product.style.public,website_sale.model_website_product_style,base.group_public,1,0,0,0
|
|
|
@ -58,9 +58,12 @@
|
||||||
|
|
||||||
.product_price {
|
.product_price {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
right: 15px;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
bottom: 5px;
|
bottom: 0;
|
||||||
z-index: 6;
|
z-index: 6;
|
||||||
|
background: rgba(255, 255, 255, 0.6);
|
||||||
|
padding: 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oe_mycart .input-group-addon {
|
.oe_mycart .input-group-addon {
|
||||||
|
|
|
@ -54,9 +54,12 @@
|
||||||
padding-bottom: 24px
|
padding-bottom: 24px
|
||||||
.product_price
|
.product_price
|
||||||
position: absolute
|
position: absolute
|
||||||
|
right: 15px
|
||||||
left: 15px
|
left: 15px
|
||||||
bottom: 5px
|
bottom: 0
|
||||||
z-index: 6
|
z-index: 6
|
||||||
|
background: rgba(255,255,255,0.6)
|
||||||
|
padding: 5px 0
|
||||||
|
|
||||||
.oe_mycart
|
.oe_mycart
|
||||||
.input-group-addon
|
.input-group-addon
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<template id="header" inherit_id="website.layout" name="Header Shop My Cart Link">
|
<template id="header" inherit_id="website.layout" name="Header Shop My Cart Link">
|
||||||
<xpath expr="//header//ul[@id='top_menu']/li" position="before">
|
<xpath expr="//header//ul[@id='top_menu']/li" position="before">
|
||||||
<li t-att-class="(not website_sale_order or not website_sale_order.get_total_quantity()) and 'hidden' or ''">
|
<li t-att-class="(not website_sale_order or not website_sale_order.get_total_quantity()) and 'hidden' or ''">
|
||||||
<a t-href="/shop/mycart/">
|
<a href="/shop/mycart/">
|
||||||
<i class="icon-shopping-cart"></i>
|
<i class="icon-shopping-cart"></i>
|
||||||
My cart <sup t-attf-class="my_cart_quantity label label-primary"
|
My cart <sup t-attf-class="my_cart_quantity label label-primary"
|
||||||
t-esc="website_sale_order and website_sale_order.get_total_quantity() or ''"/>
|
t-esc="website_sale_order and website_sale_order.get_total_quantity() or ''"/>
|
||||||
|
@ -95,7 +95,7 @@
|
||||||
<t t-set="classname">pull-right</t>
|
<t t-set="classname">pull-right</t>
|
||||||
<t t-set="style">padding-left: 5px;</t>
|
<t t-set="style">padding-left: 5px;</t>
|
||||||
</t>
|
</t>
|
||||||
<form t-action="/shop/" method="get" class="pull-right pagination form-inline" style="padding-right: 5px;">
|
<form action="/shop/" method="get" class="pull-right pagination form-inline" style="padding-right: 5px;">
|
||||||
<t t-call="website_sale.search" />
|
<t t-call="website_sale.search" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -218,7 +218,7 @@
|
||||||
<!-- List view of products -->
|
<!-- List view of products -->
|
||||||
|
|
||||||
<template id="list_view" inherit_option_id="website_sale.products" name="List View">
|
<template id="list_view" inherit_option_id="website_sale.products" name="List View">
|
||||||
<xpath expr="//div[@id='products_grid']/table" position="replace">
|
<xpath expr="//div[@id='products_grid']//table" position="replace">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<t t-set="products" t-value="Ecommerce.get_products(product_ids)"/>
|
<t t-set="products" t-value="Ecommerce.get_products(product_ids)"/>
|
||||||
<t t-foreach="products" t-as="product">
|
<t t-foreach="products" t-as="product">
|
||||||
|
@ -245,7 +245,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a t-href="/shop">Products</a></li>
|
<li><a href="/shop">Products</a></li>
|
||||||
<li t-if="search.get('category')"><a t-href="/shop/" t-keep-query="category,search,facettes"><span t-field="category.name"/></a></li>
|
<li t-if="search.get('category')"><a t-href="/shop/" t-keep-query="category,search,facettes"><span t-field="category.name"/></a></li>
|
||||||
<li class="active"><span t-field="product.name"></span></li>
|
<li class="active"><span t-field="product.name"></span></li>
|
||||||
</ol>
|
</ol>
|
||||||
|
@ -262,7 +262,7 @@
|
||||||
</li>
|
</li>
|
||||||
</t>
|
</t>
|
||||||
</div><div class="col-sm-3 col-sm-offset-1">
|
</div><div class="col-sm-3 col-sm-offset-1">
|
||||||
<form t-action="/shop/" method="get" class="pull-right">
|
<form action="/shop/" method="get" class="pull-right">
|
||||||
<t t-call="website_sale.search" />
|
<t t-call="website_sale.search" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -276,7 +276,7 @@
|
||||||
</div><div class="col-sm-5 col-md-5 col-lg-4 col-lg-offset-1">
|
</div><div class="col-sm-5 col-md-5 col-lg-4 col-lg-offset-1">
|
||||||
<h1 t-field="product.name">Product Name</h1>
|
<h1 t-field="product.name">Product Name</h1>
|
||||||
|
|
||||||
<form t-action="./add_cart/" class="js_add_cart_json">
|
<form action="./add_cart/" class="js_add_cart_json">
|
||||||
<input type="hidden" t-if="len(product.product_variant_ids) <= 1" name="product_id" t-att-value="product.id"/>
|
<input type="hidden" t-if="len(product.product_variant_ids) <= 1" name="product_id" t-att-value="product.id"/>
|
||||||
<t t-if="len(product.product_variant_ids) > 1">
|
<t t-if="len(product.product_variant_ids) > 1">
|
||||||
<label label-default="label-default" class="radio" t-foreach="product.product_variant_ids" t-as="product">
|
<label label-default="label-default" class="radio" t-foreach="product.product_variant_ids" t-as="product">
|
||||||
|
@ -472,8 +472,8 @@
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
<div class="clearfix"/>
|
<div class="clearfix"/>
|
||||||
<a t-href="/shop" class="btn btn-default mb32"><span class="icon-long-arrow-left"/> Continue Shopping</a>
|
<a href="/shop" class="btn btn-default mb32"><span class="icon-long-arrow-left"/> Continue Shopping</a>
|
||||||
<a t-if="website_sale_order and website_sale_order.order_line" t-href="/shop/checkout/" class="btn btn-primary pull-right mb32">Process Checkout <span class="icon-long-arrow-right"/></a>
|
<a t-if="website_sale_order and website_sale_order.order_line" href="/shop/checkout/" class="btn btn-primary pull-right mb32">Process Checkout <span class="icon-long-arrow-right"/></a>
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 text-muted" id="right_column">
|
<div class="col-md-3 text-muted" id="right_column">
|
||||||
|
@ -501,7 +501,7 @@
|
||||||
<template id="products_categories" inherit_option_id="website_sale.products" name="Product Categories">
|
<template id="products_categories" inherit_option_id="website_sale.products" name="Product Categories">
|
||||||
<xpath expr="//div[@id='products_grid_before']" position="inside">
|
<xpath expr="//div[@id='products_grid_before']" position="inside">
|
||||||
<ul class="nav nav-pills nav-stacked mt16">
|
<ul class="nav nav-pills nav-stacked mt16">
|
||||||
<li t-att-class=" '' if search.get('category') else 'active' "><a t-href="/shop/">All Products</a></li>
|
<li t-att-class=" '' if search.get('category') else 'active' "><a href="/shop/">All Products</a></li>
|
||||||
<t t-set="categ" t-value="Ecommerce.get_categories()"/>
|
<t t-set="categ" t-value="Ecommerce.get_categories()"/>
|
||||||
<t t-foreach="categ[0]" t-as="category">
|
<t t-foreach="categ[0]" t-as="category">
|
||||||
<t t-call="website_sale.categories_recursive"/>
|
<t t-call="website_sale.categories_recursive"/>
|
||||||
|
@ -614,7 +614,7 @@
|
||||||
<p>
|
<p>
|
||||||
Have a coupon code? Fill in this field and apply.
|
Have a coupon code? Fill in this field and apply.
|
||||||
</p>
|
</p>
|
||||||
<form t-if="website_sale_order and website_sale_order.order_line" t-action="/shop/mycart/" method="post" class="mb32">
|
<form t-if="website_sale_order and website_sale_order.order_line" action="/shop/mycart/" method="post" class="mb32">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input name="promo" class='form-control' type="text" placeholder="code..." t-att-value="website_sale_order.pricelist_id.code or ''"/>
|
<input name="promo" class='form-control' type="text" placeholder="code..." t-att-value="website_sale_order.pricelist_id.code or ''"/>
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
|
@ -645,7 +645,7 @@
|
||||||
<li class="text-muted">Confirmation<span class="chevron"></span></li>
|
<li class="text-muted">Confirmation<span class="chevron"></span></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h1>Your Address</h1>
|
<h1>Your Address</h1>
|
||||||
<form t-action="/shop/confirm_order/" method="post">
|
<form action="/shop/confirm_order/" method="post">
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8 oe_mycart">
|
<div class="col-md-8 oe_mycart">
|
||||||
|
@ -899,6 +899,7 @@
|
||||||
<t t-foreach="payments" t-as="payment">
|
<t t-foreach="payments" t-as="payment">
|
||||||
<div t-att-data-id="payment.id" t-raw="payment._content" class="hidden"/>
|
<div t-att-data-id="payment.id" t-raw="payment._content" class="hidden"/>
|
||||||
</t>
|
</t>
|
||||||
|
<<<<<<< TREE
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="js_payment_validation mb64" t-if="payment_acquirer_id">
|
<div class="js_payment_validation mb64" t-if="payment_acquirer_id">
|
||||||
|
@ -1007,6 +1008,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2>Tanks you for your order.</h2>
|
<h2>Tanks you for your order.</h2>
|
||||||
|
<a href="/shop/payment_validate/" class="btn btn-primary mt16">Validate & Pay <span class="icon-long-arrow-right"/></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
|
|
Loading…
Reference in New Issue