<t t-call-assets="website.assets_frontend"/>
<t t-raw="head or ''" name='layout_head'/>
+ <t t-if="website.google_analytics_key">
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','_gaw');
+
+ _gaw('create',_.str.trim('<t t-esc="website.google_analytics_key"/>'));
+ _gaw('send','pageview');
+ </script>
+ </t>
</head>
<body>
<div id="wrapwrap">
</div>
</footer>
</div>
- <t t-if="website.google_analytics_key">
- <script>
- (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
- function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
- e=o.createElement(i);r=o.getElementsByTagName(i)[0];
- e.src='//www.google-analytics.com/analytics.js';
- r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
- ga('create',_.str.trim('<t t-esc="website.google_analytics_key"/>'));
- ga('send','pageview');
- </script>
- </t>
</body>
</html>
</template>
product = product_obj.browse(request.cr, request.uid, id, context=request.context)
return product.write({'website_size_x': x, 'website_size_y': y})
+ @http.route(['/shop/tracking_last_order'], type='json', auth="public")
+ def tracking_cart(self, **post):
+ """ return JS code for google analytics"""
+ cr, uid, context = request.cr, request.uid, request.context
+ ret = {}
+ sale_order_id = request.session.get('sale_last_order_id')
+ if sale_order_id:
+ order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
+ ret['transaction'] = {
+ 'id': sale_order_id,
+ 'affiliation': order.company_id.name,
+ 'revenue': order.amount_total,
+ 'currency': order.currency_id.name
+ }
+ ret['lines'] = []
+ for line in order.order_line:
+ if not line.is_delivery:
+ ret['lines'].append({
+ 'id': line.order_id and line.order_id.id,
+ 'name': line.product_id.categ_id and line.product_id.categ_id.name or '-',
+ 'sku': line.product_id.id,
+ 'quantity': line.product_uom_qty,
+ 'price': line.price_unit,
+ })
+ return ret
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
--- /dev/null
+$(document).ready(function () {
+
+ // Watching a product
+ if ($("#product_detail.oe_website_sale").length) {
+ prod_id = $("input[name='product_id']").attr('value');
+ vpv("/stats/ecom/product_view/" + prod_id);
+ }
+
+ // Add a product into the cart
+ $(".oe_website_sale form[action='/shop/cart/update'] a.a-submit").on('click', function(o) {
+ prod_id = $("input[name='product_id']").attr('value');
+ vpv("/stats/ecom/product_add_to_cart/" + prod_id);
+ });
+
+ // Start checkout
+ $(".oe_website_sale a[href='/shop/checkout']").on('click', function(o) {
+ vpv("/stats/ecom/customer_checkout");
+ });
+
+ $(".oe_website_sale div.oe_cart a[href^='/web?redirect'][href$='/shop/checkout']").on('click', function(o) {
+ vpv("/stats/ecom/customer_signin");
+ });
+
+ $(".oe_website_sale form[action='/shop/confirm_order'] a.a-submit").on('click', function(o) {
+ if ($("#top_menu > li > a[href='/web/login']").length){
+ vpv("/stats/ecom/customer_signup");
+ }
+ vpv("/stats/ecom/order_checkout");
+ });
+
+ $(".oe_website_sale form[target='_self'] button[type=submit]").on('click', function(o) {
+ var method = $("#payment_method input[name=acquirer]:checked").nextAll("span:first").text();
+ vpv("/stats/ecom/order_payment/" + method);
+ });
+
+ if ($(".oe_website_sale div.oe_cart div.oe_website_sale_tx_status").length) {
+ track_ga('require', 'ecommerce');
+
+ order_id = $(".oe_website_sale div.oe_cart div.oe_website_sale_tx_status").data("order-id");
+ vpv("/stats/ecom/order_confirmed/" + order_id);
+
+ openerp.jsonRpc("/shop/tracking_last_order/").then(function(o) {
+ track_ga('ecommerce:clear');
+
+ if (o.transaction && o.lines) {
+ track_ga('ecommerce:addTransaction', o.transaction);
+ _.forEach(o.lines, function(line) {
+ track_ga('ecommerce:addItem', line);
+ });
+ }
+ track_ga('ecommerce:send');
+ });
+ }
+
+ function vpv(page){ //virtual page view
+ track_ga('send', 'pageview', {
+ 'page': page,
+ 'title': document.title,
+ });
+ }
+
+ function track_ga() {
+ website_ga = this._gaw || function(){};
+ website_ga.apply(this, arguments);
+ }
+
+});
<template id="product" name="Product">
<t t-call="website.layout">
<t t-set="head">
+ <script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
<link rel='stylesheet' href='/website_sale/static/src/css/website_mail.css'/>
<t t-call="website.layout">
<t t-set="head">
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
+ <script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
<t t-raw="head or ''"/>
</t>
<t t-call="website.layout">
<t t-set="head">
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
+ <script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
<t t-raw="head or ''"/>
</t>
<t t-call="website.layout">
<t t-set="head">
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
+ <script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_payment.js"></script>
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
<t t-raw="head or ''"/>
<t t-set="head">
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_validate.js"></script>
+ <script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
<t t-raw="head or ''"/>
</t>
<t t-set="additional_title">Shop - Confirmed</t>