[MER] Merge Trunk
bzr revid: rim@openerp.com-20131022151206-hh4kkoylnkmiym4j bzr revid: rim@openerp.com-20131022151236-tuoiiku5hfi315yz bzr revid: rim@openerp.com-20131023064348-4iwqo7uutn1zb640
This commit is contained in:
commit
16a1bbcf6c
|
@ -1360,7 +1360,7 @@ CKEDITOR.dom.range = function( root ) {
|
|||
* * {@link CKEDITOR#SHRINK_TEXT} - Shrink the range boudaries to anchor by the side of enclosed text
|
||||
* node, range remains if there's no text nodes on boundaries at all.
|
||||
*
|
||||
* @param {Boolean} selectContents Whether result range anchors at the inner OR outer boundary of the node.
|
||||
* @param {Boolean} [selectContents] Whether result range anchors at the inner OR outer boundary of the node.
|
||||
*/
|
||||
shrink: function( mode, selectContents, shrinkOnBlockBoundary ) {
|
||||
// Unable to shrink a collapsed range.
|
||||
|
|
|
@ -798,7 +798,7 @@
|
|||
*
|
||||
* @method
|
||||
* @member CKEDITOR.editor
|
||||
* @param {Boolean} forceRealSelection Return real selection, instead of saved or fake one.
|
||||
* @param {Boolean} [forceRealSelection] Return real selection, instead of saved or fake one.
|
||||
* @returns {CKEDITOR.dom.selection} A selection object or null if not available for the moment.
|
||||
*/
|
||||
CKEDITOR.editor.prototype.getSelection = function( forceRealSelection ) {
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
|
||||
//noinspection JSValidateTypes
|
||||
editor.addCommand('link', {
|
||||
exec: function (editor, data) {
|
||||
exec: function (editor) {
|
||||
link_dialog(editor);
|
||||
return true;
|
||||
},
|
||||
|
@ -65,7 +65,7 @@
|
|||
});
|
||||
//noinspection JSValidateTypes
|
||||
editor.addCommand('image', {
|
||||
exec: function (editor, data) {
|
||||
exec: function (editor) {
|
||||
image_dialog(editor);
|
||||
return true;
|
||||
},
|
||||
|
@ -219,7 +219,7 @@
|
|||
var view_id = $(event.currentTarget).data('view-id');
|
||||
openerp.jsonRpc('/website/customize_template_toggle', 'call', {
|
||||
'view_id': view_id
|
||||
}).then( function(result) {
|
||||
}).then( function() {
|
||||
window.location.reload();
|
||||
});
|
||||
});
|
||||
|
@ -253,7 +253,6 @@
|
|||
);
|
||||
},
|
||||
edit: function () {
|
||||
var self = this;
|
||||
this.$buttons.edit.prop('disabled', true);
|
||||
this.$('#website-top-view').hide();
|
||||
this.$('#website-top-edit').show();
|
||||
|
@ -423,7 +422,7 @@
|
|||
|
||||
return true;
|
||||
},
|
||||
start_edition: function ($elements) {
|
||||
start_edition: function () {
|
||||
var self = this;
|
||||
// create a single editor for the whole page
|
||||
var root = document.getElementById('wrapwrap');
|
||||
|
@ -484,7 +483,7 @@
|
|||
.filter(function () {
|
||||
var $this = $(this);
|
||||
// keep view sections and fields which are *not* in
|
||||
// view sections for toplevel editables
|
||||
// view sections for top-level editables
|
||||
return $this.data('oe-model') === 'ir.ui.view'
|
||||
|| !$this.closest('[data-oe-model = "ir.ui.view"]').length;
|
||||
});
|
||||
|
@ -855,7 +854,7 @@
|
|||
this.preview_image();
|
||||
},
|
||||
|
||||
file_selection: function (e) {
|
||||
file_selection: function () {
|
||||
this.$('button.filepicker').removeClass('btn-danger btn-success');
|
||||
|
||||
var self = this;
|
||||
|
|
|
@ -21,9 +21,6 @@
|
|||
templates.push(template);
|
||||
};
|
||||
website.load_templates = function(templates) {
|
||||
var def = $.Deferred();
|
||||
var count = templates.length;
|
||||
|
||||
var dones = _(templates).map(function (t) {
|
||||
return new $.Deferred(function (d) {
|
||||
openerp.qweb.add_template(t, function(err) {
|
||||
|
@ -151,7 +148,7 @@
|
|||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.js_publish_management .js_publish_btn', function (e) {
|
||||
$(document).on('click', '.js_publish_management .js_publish_btn', function () {
|
||||
var $data = $(this).parents(".js_publish_management:first");
|
||||
var $btn = $data.find('.btn:first');
|
||||
var publish = $btn.hasClass("btn-success");
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
}
|
||||
self.make_active($target);
|
||||
});
|
||||
$("[data-oe-model]").on('click', function (ev) {
|
||||
$("[data-oe-model]").on('click', function () {
|
||||
if (!snipped_event_flag && self.$active_snipped_id && !self.$active_snipped_id.parents("[data-snippet-id]:first")) {
|
||||
self.make_active(false);
|
||||
}
|
||||
|
@ -224,6 +224,7 @@
|
|||
},
|
||||
clean_for_save: function () {
|
||||
for (var k in this.snippets) {
|
||||
if (!this.snippets.hasOwnProperty(k)) { continue; }
|
||||
var editor = $(this.snippets[k]).data("snippet-editor");
|
||||
if (editor) {
|
||||
editor.clean_for_save();
|
||||
|
@ -342,9 +343,9 @@
|
|||
},
|
||||
stop: function(ev, ui){
|
||||
if (action === 'insert' && ! dropped) {
|
||||
var el = $('.oe_drop_zone').nearest({x: ui.position.left, y: ui.position.top}).first()
|
||||
if (el) {
|
||||
el.after($toInsert)
|
||||
var $el = $('.oe_drop_zone').nearest({x: ui.position.left, y: ui.position.top}).first();
|
||||
if ($el) {
|
||||
$el.after($toInsert);
|
||||
dropped = true;
|
||||
}
|
||||
}
|
||||
|
@ -460,7 +461,7 @@
|
|||
// count += $zones.length;
|
||||
// $zones.remove();
|
||||
|
||||
$zones = $('.oe_drop_zone > .oe_drop_zone:not(.oe_vertical)').remove(); // no recusrive zones
|
||||
$zones = $('.oe_drop_zone > .oe_drop_zone:not(.oe_vertical)').remove(); // no recursive zones
|
||||
count += $zones.length;
|
||||
$zones.remove();
|
||||
} while (count > 0);
|
||||
|
@ -471,14 +472,13 @@
|
|||
var zone = $(this);
|
||||
var prev = zone.prev();
|
||||
var next = zone.next();
|
||||
var float_prev = zone.prev().css('float') || 'none';
|
||||
var float_next = zone.next().css('float') || 'none';
|
||||
var disp_prev = zone.prev().css('display') || null;
|
||||
var disp_next = zone.next().css('display') || null;
|
||||
var float_prev = prev.css('float') || 'none';
|
||||
var float_next = next.css('float') || 'none';
|
||||
var disp_prev = prev.css('display') || null;
|
||||
var disp_next = next.css('display') || null;
|
||||
if( (float_prev === 'left' || float_prev === 'right')
|
||||
&& (float_next === 'left' || float_next === 'right') ){
|
||||
zone.remove();
|
||||
return;
|
||||
}else if( !( disp_prev === null
|
||||
|| disp_next === null
|
||||
|| disp_prev === 'block'
|
||||
|
@ -689,7 +689,7 @@
|
|||
var self = this;
|
||||
var $styles = this.$overlay.find('.oe_options');
|
||||
var $ul = $styles.find('ul:first');
|
||||
_.each(this.parent.style_templates, function (val, key) {
|
||||
_.each(this.parent.style_templates, function (val) {
|
||||
if (!self.parent.dom_filter(val.selector).is(self.$target)) {
|
||||
return;
|
||||
}
|
||||
|
@ -757,7 +757,7 @@
|
|||
|
||||
/*
|
||||
* build_snippet
|
||||
* This method is called just after that a thumbnail is drag and droped into a drop zone
|
||||
* This method is called just after that a thumbnail is drag and dropped into a drop zone
|
||||
* (after the insertion of this.$body, if this.$body exists)
|
||||
*/
|
||||
build_snippet: function ($target) {
|
||||
|
@ -771,7 +771,7 @@
|
|||
},
|
||||
|
||||
/* onFocus
|
||||
* This method is called when the user click outide the snippet in the dom, after a focus
|
||||
* This method is called when the user click outside the snippet in the dom, after a focus
|
||||
*/
|
||||
onBlur : function () {
|
||||
this.$overlay.removeClass('oe_active');
|
||||
|
@ -790,7 +790,7 @@
|
|||
var $ul = this.$editor.find(ul_options);
|
||||
var bg_value = (typeof bg === 'string' ? this.$target.find(bg) : $(bg)).css("background-image").replace(/url\(['"]*|['"]*\)/g, "");
|
||||
|
||||
// bind envent on options
|
||||
// bind event on options
|
||||
var $li = $ul.find("li");
|
||||
$li.on('click', function (event) {
|
||||
if ($(this).data("value")) {
|
||||
|
@ -893,7 +893,8 @@
|
|||
var regClass = new RegExp("\\s*" + resize[0][begin].replace(/[-]*[0-9]+/, '[-]*[0-9]+'), 'g');
|
||||
|
||||
var cursor = $handle.css("cursor")+'-important';
|
||||
$("body").addClass(cursor);
|
||||
var $body = $(document.body);
|
||||
$body.addClass(cursor);
|
||||
|
||||
var body_mousemove = function (event){
|
||||
event.preventDefault();
|
||||
|
@ -920,15 +921,15 @@
|
|||
self.parent.cover_target(self.$overlay, self.$target);
|
||||
}
|
||||
};
|
||||
$('body').mousemove(body_mousemove);
|
||||
|
||||
var body_mouseup = function(){
|
||||
$('body').unbind('mousemove', body_mousemove);
|
||||
$('body').unbind('mouseup', body_mouseup);
|
||||
$("body").removeClass(cursor);
|
||||
$body.unbind('mousemove', body_mousemove);
|
||||
$body.unbind('mouseup', body_mouseup);
|
||||
$body.removeClass(cursor);
|
||||
self.parent.editor_busy = false;
|
||||
};
|
||||
$('body').mouseup(body_mouseup);
|
||||
$body.mousemove(body_mousemove);
|
||||
$body.mouseup(body_mouseup);
|
||||
});
|
||||
},
|
||||
getSize: function () {
|
||||
|
@ -998,7 +999,7 @@
|
|||
if (compass !== 'w')
|
||||
return;
|
||||
|
||||
// don't change the rigth border position when we change the offset (replace col size)
|
||||
// don't change the right border position when we change the offset (replace col size)
|
||||
var beginCol = Number(beginClass.match(/col-md-([0-9]+)|$/)[1] || 0);
|
||||
var beginOffset = Number(beginClass.match(/col-md-offset-([0-9-]+)|$/)[1] || beginClass.match(/col-lg-offset-([0-9-]+)|$/)[1] || 0);
|
||||
var offset = Number(this.grid.w[0][current].match(/col-md-offset-([0-9-]+)|$/)[1] || 0);
|
||||
|
@ -1128,7 +1129,6 @@
|
|||
var style = false;
|
||||
var $el = this.$inner.find('.item.active');
|
||||
var $ul = this.$editor.find('ul[name="carousel-style"]');
|
||||
var $li = $ul.find("li");
|
||||
|
||||
if ($el.hasClass('text_only'))
|
||||
style = 'text_only';
|
||||
|
@ -1160,7 +1160,6 @@
|
|||
});
|
||||
},
|
||||
change_size: function () {
|
||||
var self = this;
|
||||
var $el = this.$target;
|
||||
|
||||
var size = 'oe_big';
|
||||
|
@ -1197,7 +1196,6 @@
|
|||
this.change_size();
|
||||
},
|
||||
scroll: function(){
|
||||
var self = this;
|
||||
var $ul = this.$editor.find('ul[name="parallax-scroll"]');
|
||||
var $li = $ul.find("li");
|
||||
var $parallax = this.$target.find('.parallax');
|
||||
|
@ -1207,7 +1205,7 @@
|
|||
$li.on('click', function (event) {
|
||||
$li.removeClass("active");
|
||||
$(this).addClass("active");
|
||||
var speed = $(this).data('value')
|
||||
var speed = $(this).data('value');
|
||||
$parallax.attr('data-stellar-background-ratio', speed);
|
||||
});
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
name: "Insert a banner",
|
||||
init: function (editor) {
|
||||
var self = this;
|
||||
var $body = $(document.body);
|
||||
self.steps = [
|
||||
{
|
||||
stepId: 'welcome',
|
||||
|
@ -56,15 +57,16 @@
|
|||
onShow: function () {
|
||||
function beginDrag () {
|
||||
$('.popover.tour').remove();
|
||||
$('body').off('mousedown', beginDrag);
|
||||
function goToNextStep () {
|
||||
$('#oe_snippets').hide();
|
||||
self.movetoStep('edit-title');
|
||||
$('body').off('mouseup', goToNextStep);
|
||||
$body.off('mouseup', goToNextStep);
|
||||
}
|
||||
$('body').on('mouseup', goToNextStep);
|
||||
$body.off('mousedown', beginDrag);
|
||||
$body.on('mouseup', goToNextStep);
|
||||
}
|
||||
$('body').on('mousedown', beginDrag);
|
||||
|
||||
$body.on('mousedown', beginDrag);
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -121,7 +123,7 @@
|
|||
title: "Help is always available",
|
||||
content: "But you can always click here if you want more tutorials.",
|
||||
template: render('website.tour_popover', { end: "Close" }),
|
||||
},
|
||||
}
|
||||
];
|
||||
return this._super();
|
||||
},
|
||||
|
@ -158,4 +160,4 @@
|
|||
},
|
||||
});
|
||||
|
||||
}());
|
||||
}());
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
dialog.on('activate', this, function () {
|
||||
localStorage[nodialog] = dialog.$('input[name=do_not_show]').prop('checked') || '';
|
||||
dialog.$el.modal('hide');
|
||||
this.translate().then(function () {
|
||||
self.translate().then(function () {
|
||||
mysuper.call(self);
|
||||
});
|
||||
});
|
||||
|
@ -44,7 +44,7 @@
|
|||
self.translations = translations;
|
||||
self.processTranslatableNodes();
|
||||
// Disable non translatable t-fields
|
||||
$('[data-oe-type][data-oe-translate=0]').removeAttr('data-oe-type');
|
||||
$('[data-oe-type][data-oe-translate="0"]').removeAttr('data-oe-type');
|
||||
});
|
||||
},
|
||||
processTranslatableNodes: function () {
|
||||
|
@ -143,7 +143,6 @@
|
|||
if (node.attributes['data-oe-translate'].value == '1') {
|
||||
node.className += ' oe_translatable_field';
|
||||
}
|
||||
return;
|
||||
} else if (node.childNodes.length === 1
|
||||
&& this.isTextNode(node.childNodes[0])
|
||||
&& !node.getAttribute('data-oe-model')) {
|
||||
|
@ -175,7 +174,7 @@
|
|||
$(root).click(function (ev) {
|
||||
ev.preventDefault();
|
||||
});
|
||||
return $('[data-oe-translate=1]');
|
||||
return $('[data-oe-translate="1"]');
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
(len(website.language_ids) > 1 or editable)" class="dropdown">
|
||||
<!-- TODO: use flags for language selection -->
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<t t-esc="lang_selected[0]['name']"/> <span class="caret"></span>
|
||||
<t t-esc="lang_selected[0]['name'].split('/').pop()"/> <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li t-foreach="website.language_ids" t-as="lg">
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
$(document).ready(function () {
|
||||
$form = $('.js_nav_year a:first').on('click', function (e) {
|
||||
$('.js_nav_year a:first').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
$(this).next("ul").toggle();
|
||||
});
|
||||
|
||||
$form = $('.js_nav_month a:first').on('click', function (e) {
|
||||
$('.js_nav_month a:first').on('click', function (e) {
|
||||
e.preventDefault();
|
||||
var $ul = $(this).next("ul");
|
||||
if (!$ul.find('li').length) {
|
||||
$.post('/blog/nav', {'domain': $(this).data("domain")}, function (result) {
|
||||
var result = JSON.parse(result);
|
||||
var blog_id = +window.location.pathname.split("/").pop();
|
||||
$(result).each(function () {
|
||||
$(JSON.parse(result)).each(function () {
|
||||
var $a = $('<a href="/blog/' + this.category_id + '/' + this.id + '"/>').text(this.name);
|
||||
var $li = $("<li/>").append($a);
|
||||
if (blog_id == this.id)
|
||||
|
@ -27,7 +26,7 @@ $(document).ready(function () {
|
|||
}
|
||||
});
|
||||
|
||||
$form = $('.js_website_blog form#comment');
|
||||
var $form = $('.js_website_blog form#comment');
|
||||
$form.submit(function (e) {
|
||||
e.preventDefault();
|
||||
var error = $form.find("textarea").val().length < 3;
|
||||
|
@ -39,4 +38,4 @@ $(document).ready(function () {
|
|||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -28,7 +28,7 @@ def get_order(order_id=None):
|
|||
order_value['pricelist_id'] = request.httprequest.session['ecommerce_pricelist']
|
||||
order_value['partner_id'] = request.registry.get('res.users').browse(request.cr, SUPERUSER_ID, request.uid, context=request.context).partner_id.id
|
||||
order_value.update(order_obj.onchange_partner_id(request.cr, SUPERUSER_ID, [], order_value['partner_id'], context=request.context)['value'])
|
||||
|
||||
|
||||
# add website_session_id key for access rules
|
||||
if not request.httprequest.session.get('website_session_id'):
|
||||
request.httprequest.session['website_session_id'] = str(uuid.uuid4())
|
||||
|
@ -182,7 +182,7 @@ class Ecommerce(http.Controller):
|
|||
bin_packing[line + copy_y][col + copy_x] = False
|
||||
bin_packing[line + copy_y][col + copy_x] = product_list[index]
|
||||
break
|
||||
|
||||
|
||||
if not insert:
|
||||
line += 1
|
||||
else:
|
||||
|
@ -281,7 +281,7 @@ class Ecommerce(http.Controller):
|
|||
|
||||
if post.get("search"):
|
||||
domain += ['|', '|', '|',
|
||||
('name', 'ilike', "%%%s%%" % post.get("search")),
|
||||
('name', 'ilike', "%%%s%%" % post.get("search")),
|
||||
('description', 'ilike', "%%%s%%" % post.get("search")),
|
||||
('website_description', 'ilike', "%%%s%%" % post.get("search")),
|
||||
('product_variant_ids.public_categ_id.name', 'ilike', "%%%s%%" % post.get("search"))]
|
||||
|
@ -298,7 +298,7 @@ class Ecommerce(http.Controller):
|
|||
|
||||
step = 20
|
||||
product_count = len(product_obj.search(request.cr, request.uid, domain, context=request.context))
|
||||
pager = request.website.pager(url="/shop/%s" % post, total=product_count, page=page, step=step, scope=7, url_args=post)
|
||||
pager = request.website.pager(url="/shop/", total=product_count, page=page, step=step, scope=7, url_args=post)
|
||||
|
||||
request.context['pricelist'] = self.get_pricelist()
|
||||
|
||||
|
@ -354,7 +354,7 @@ class Ecommerce(http.Controller):
|
|||
|
||||
@website.route(['/shop/add_product/', '/shop/category/<int:cat_id>/add_product/'], type='http', auth="public", multilang=True)
|
||||
def add_product(self, cat_id=0, **post):
|
||||
product_id = request.registry.get('product.product').create(request.cr, request.uid,
|
||||
product_id = request.registry.get('product.product').create(request.cr, request.uid,
|
||||
{'name': 'New Product', 'public_categ_id': cat_id}, request.context)
|
||||
return request.redirect("/shop/product/%s/?unable_editor=1" % product_id)
|
||||
|
||||
|
@ -376,7 +376,7 @@ class Ecommerce(http.Controller):
|
|||
if not pricelist_id:
|
||||
partner_id = request.registry.get('res.users').browse(request.cr, SUPERUSER_ID, request.uid, request.context).partner_id.id
|
||||
pricelist_id = request.registry['sale.order'].onchange_partner_id(request.cr, SUPERUSER_ID, [], partner_id, context=request.context)['value']['pricelist_id']
|
||||
|
||||
|
||||
request.httprequest.session['ecommerce_pricelist'] = pricelist_id
|
||||
|
||||
order = get_current_order()
|
||||
|
|
|
@ -3,8 +3,8 @@ $(document).ready(function () {
|
|||
$(".oe_website_sale .js_shipping").toggle();
|
||||
});
|
||||
|
||||
$payment = $(".oe_website_sale .js_payment");
|
||||
$("input[name='payment_type']", $payment).click(function (ev) {
|
||||
var $payment = $(".oe_website_sale .js_payment");
|
||||
$payment.find("input[name='payment_type']").click(function (ev) {
|
||||
var payment_id = $(ev.currentTarget).val();
|
||||
$("div[data-id]", $payment).addClass("hidden");
|
||||
$("a.btn:last, div[data-id='"+payment_id+"']", $payment).removeClass("hidden");
|
||||
|
|
|
@ -72,16 +72,15 @@
|
|||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||
<t t-raw="head or ''"/>
|
||||
</t>
|
||||
<t t-set="additional_title">Our Products</t>
|
||||
<t t-set="additional_title">Shop</t>
|
||||
<div id="wrap">
|
||||
<div class="oe_structure"/>
|
||||
<div class="container oe_website_sale">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<h1>Our Products</h1>
|
||||
</div><div class="col-sm-2 pagination text-center">
|
||||
<div class="col-sm-6 pagination" style="padding-left: 15px;">
|
||||
<a t-if="editable" t-href="/shop/add_product/" class="btn btn-primary btn-default" t-keep-query="category,search,facettes">New Product</a>
|
||||
</div><div class="col-sm-6">
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<t t-call="website.pager">
|
||||
<t t-set="classname">pull-right</t>
|
||||
</t>
|
||||
|
@ -170,8 +169,10 @@
|
|||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<t t-call="website.pager" />
|
||||
<div>
|
||||
<t t-call="website.pager">
|
||||
<t t-set="classname">pull-right</t>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure mb32"/>
|
||||
|
@ -356,120 +357,116 @@
|
|||
<li class="text-muted">Payment<span class="chevron"></span></li>
|
||||
<li class="text-muted">Confirmation<span class="chevron"></span></li>
|
||||
</ul>
|
||||
<h1 class="mb32">Your Cart</h1>
|
||||
|
||||
<h1 class="mb32">Shopping Cart</h1>
|
||||
<div class="row">
|
||||
<div class="col-md-8 oe_mycart">
|
||||
<div t-if="not website_sale_order or not website_sale_order.order_line" class="well well-lg">
|
||||
Your cart is empty!
|
||||
<div class="col-md-3 text-muted" id="right_column">
|
||||
<h4>Policies</h4>
|
||||
<ul class="list-unstyled mb32">
|
||||
<li>☑ 30-days money-back guarantee</li>
|
||||
<li>☑ Invoice sent by e-Mail</li>
|
||||
</ul>
|
||||
<h4>Secure Payment</h4>
|
||||
<ul class="list-unstyled mb32">
|
||||
<li>☑ 256 bit encryption</li>
|
||||
<li>☑ Processed by Ogone</li>
|
||||
</ul>
|
||||
</div>
|
||||
<table class='table table-striped table-condensed' id="mycart_products" t-if="website_sale_order and website_sale_order.order_line">
|
||||
<colgroup>
|
||||
<col width="80"/>
|
||||
<col/>
|
||||
<col width="100"/>
|
||||
<col width="120"/>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">Product</th>
|
||||
<th>Price</th>
|
||||
<th>Quantity</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="website_sale_order.order_line" t-as="line">
|
||||
<td colspan="2" t-if="not line.product_id.product_tmpl_id"></td>
|
||||
<td t-if="line.product_id.product_tmpl_id">
|
||||
<span t-field="line.product_id.image_small"
|
||||
t-field-options='{"widget": "image", "class": "img-rounded"}'/>
|
||||
</td>
|
||||
<td t-if="line.product_id.product_tmpl_id">
|
||||
<div>
|
||||
<a t-href="/shop/product/#{ line.product_id.product_tmpl_id.id }/">
|
||||
<strong t-field="line.product_id.name"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="text-muted" t-field="line.product_id.description_sale"/>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<del class="text-danger" t-if="line.product_id.lst_price > line.price_unit">
|
||||
<span t-field="line.product_id.lst_price" t-field-options='{
|
||||
<div class="col-md-8 col-md-offset-1 oe_mycart">
|
||||
<div t-if="not website_sale_order or not website_sale_order.order_line" class="well well-lg">
|
||||
Your cart is empty!
|
||||
</div>
|
||||
<table class='table table-striped table-condensed' id="mycart_products" t-if="website_sale_order and website_sale_order.order_line">
|
||||
<colgroup>
|
||||
<col width="80"/>
|
||||
<col/>
|
||||
<col width="100"/>
|
||||
<col width="120"/>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">Product</th>
|
||||
<th>Price</th>
|
||||
<th>Quantity</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="website_sale_order.order_line" t-as="line">
|
||||
<td colspan="2" t-if="not line.product_id.product_tmpl_id"></td>
|
||||
<td t-if="line.product_id.product_tmpl_id">
|
||||
<span t-field="line.product_id.image_small"
|
||||
t-field-options='{"widget": "image", "class": "img-rounded"}'/>
|
||||
</td>
|
||||
<td t-if="line.product_id.product_tmpl_id">
|
||||
<div>
|
||||
<a t-href="/shop/product/#{ line.product_id.product_tmpl_id.id }/">
|
||||
<strong t-field="line.product_id.name"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="text-muted" t-field="line.product_id.description_sale"/>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<del class="text-danger" t-if="line.product_id.lst_price > line.price_unit">
|
||||
<span t-field="line.product_id.lst_price" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/>
|
||||
</del>
|
||||
<span t-field="line.price_unit" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/>
|
||||
</del>
|
||||
<span t-field="line.price_unit" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">
|
||||
<a t-href="./remove_cart/?order_line_id=#{ line.id }" t-att-data-id="line.id" class="mb8 js_add_cart_json">
|
||||
<span class="icon-minus"/>
|
||||
</a>
|
||||
</span>
|
||||
<input type="text" class="js_quantity form-control"
|
||||
t-att-data-id="line.id" t-att-value="int(line.product_uom_qty)"/>
|
||||
<span class="input-group-addon">
|
||||
<a t-href="./add_cart/?order_line_id=#{ line.id }" t-att-data-id="line.id" class="mb8 float_left js_add_cart_json">
|
||||
<span class="icon-plus"/>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">
|
||||
<a t-href="./remove_cart/?order_line_id=#{ line.id }" t-att-data-id="line.id" class="mb8 js_add_cart_json">
|
||||
<span class="icon-minus"/>
|
||||
</a>
|
||||
</span>
|
||||
<input type="text" class="js_quantity form-control"
|
||||
t-att-data-id="line.id" t-att-value="int(line.product_uom_qty)"/>
|
||||
<span class="input-group-addon">
|
||||
<a t-href="./add_cart/?order_line_id=#{ line.id }" t-att-data-id="line.id" class="mb8 float_left js_add_cart_json">
|
||||
<span class="icon-plus"/>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class='pull-right mb16' id="mycart_total">
|
||||
<colgroup>
|
||||
<col width="100"/>
|
||||
<col width="120"/>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr style="border-top: 1px solid #000">
|
||||
<th><h3>Total:</h3></th>
|
||||
<th class="text-right"><h3>
|
||||
<span t-field="website_sale_order.amount_total" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/></h3>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="text-muted">
|
||||
<td><abbr title="Taxes may be updated after providing shipping address">Incl. Taxes:</abbr></td>
|
||||
<td class="text-right">
|
||||
<span t-field="website_sale_order.amount_tax" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
<div class="clearfix"/>
|
||||
|
||||
<a t-href="/shop" class="btn btn-default"><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>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
<div class="col-md-3 col-md-offset-1 text-muted" id="right_column">
|
||||
<h4>Policies</h4>
|
||||
<ul class="list-unstyled mb32">
|
||||
<li>☑ 30-days money-back guarantee</li>
|
||||
<li>☑ Invoice sent by e-Mail</li>
|
||||
</ul>
|
||||
|
||||
<h4>Secure Payment</h4>
|
||||
<ul class="list-unstyled mb32">
|
||||
<li>☑ Transation 256bit encrypted</li>
|
||||
<li>☑ Processed by Ogone</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class='pull-right mb16' id="mycart_total">
|
||||
<colgroup>
|
||||
<col width="100"/>
|
||||
<col width="120"/>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr style="border-top: 1px solid #000">
|
||||
<th><h3>Total:</h3></th>
|
||||
<th class="text-right"><h3>
|
||||
<span t-field="website_sale_order.amount_total" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/></h3>
|
||||
</th>
|
||||
</tr>
|
||||
<tr class="text-muted">
|
||||
<td><abbr title="Taxes may be updated after providing shipping address">Incl. Taxes:</abbr></td>
|
||||
<td class="text-right">
|
||||
<span t-field="website_sale_order.amount_tax" t-field-options='{
|
||||
"widget": "monetary",
|
||||
"display_currency": "website.pricelist_id.currency_id"
|
||||
}'/>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
<div class="clearfix"/>
|
||||
<a t-href="/shop" class="btn btn-default"><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>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue