[IMP] website: move custom scripts in the assets; fix website_sale_option to display...
authorChristophe Matthieu <chm@odoo.com>
Wed, 25 Jun 2014 12:03:23 +0000 (14:03 +0200)
committerChristophe Matthieu <chm@odoo.com>
Wed, 25 Jun 2014 12:03:23 +0000 (14:03 +0200)
12 files changed:
addons/website/static/src/js/website.editor.js
addons/website/views/website_templates.xml
addons/website_event_sale/tests/test_ui.py
addons/website_event_sale/views/website_event_sale.xml
addons/website_sale/controllers/main.py
addons/website_sale/static/src/js/website_sale.js
addons/website_sale/tests/test_sale_process.py
addons/website_sale/views/templates.xml
addons/website_sale_options/static/src/js/website_sale.js
addons/website_sale_options/static/src/js/website_sale.test.js
addons/website_sale_options/tests/customize_test.py
addons/website_sale_options/views/templates.xml

index 8cd7837..b99d399 100644 (file)
                 openerp.jsonRpc('/website/customize_template_get', 'call', { 'xml_id': view_name }).then(
                     function(result) {
                         _.each(result, function (item) {
-                            if (item.xml_id === "website.debugger" && !window.location.search.match(/[&?]debug(&|$)/)) return;
                             if (item.header) {
                                 menu.append('<li class="dropdown-header">' + item.name + '</li>');
                             } else {
index 9248306..97edc17 100644 (file)
     <script type="text/javascript" src="/website/static/src/js/jQuery.transfo.js"></script>
 </template>
 
-<template id="debugger" inherit_id="website.layout" optional="disabled" name="Debugger &amp; Tests">
-    <xpath expr='//t[@name="layout_head"]' position="after">
-        <t t-set="debugger_hook" t-value="1" />
-    </xpath>
-</template>
-
 <template id="login_layout" inherit_id="web.login_layout" name="Website Login Layout">
     <xpath expr="t" position="replace">
         <t t-call="website.layout">
index 9486925..28195e6 100644 (file)
@@ -4,7 +4,6 @@ import openerp.tests
 
 inject = [
     ("openerp.Tour", os.path.join(os.path.dirname(__file__), '../../web/static/src/js/tour.js')),
-    ("openerp.Tour.ShopTest", os.path.join(os.path.dirname(__file__), "../static/src/js/website.tour.event_sale.js")),
 ]
 
 @openerp.tests.common.at_install(False)
index cf46797..c34ff04 100644 (file)
@@ -2,13 +2,12 @@
 <openerp>
 <data>
 
-<template id="debugger" inherit_id="website.debugger" name="Event Debugger">
-    <xpath expr='//t[@t-set="debugger_hook"]' position="after">
-        <script type="text/javascript" src="/website_event_sale/static/src/js/website.tour.event_sale.js"></script>
-    </xpath>
+<template id="assets_editor" inherit_id="website.assets_frontend" name="Event Sale">
+  <xpath expr="." position="inside">
+    <script type="text/javascript" src="/website_event_sale/static/src/js/website.tour.event_sale.js"></script>
+  </xpath>
 </template>
 
-
 <template id="index" inherit_id="website_event.index" name="Event's Ticket">
     <xpath expr="//li[@t-foreach='event_ids']/div/h4" position="before">
         <t t-if="event.state in ['draft', 'confirm'] and event.event_ticket_ids">
index b76c585..f187e67 100644 (file)
@@ -280,7 +280,7 @@ class website_sale(http.Controller):
     @http.route(['/shop/cart/update'], type='http', auth="public", methods=['POST'], website=True)
     def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
         cr, uid, context = request.cr, request.uid, request.context
-        request.website.sale_get_order(force_create=1)._cart_update(product_id=int(product_id), add_qty=add_qty, set_qty=set_qty)
+        request.website.sale_get_order(force_create=1)._cart_update(product_id=int(product_id), add_qty=float(add_qty), set_qty=float(set_qty))
         return request.redirect("/shop/cart")
 
     @http.route(['/shop/cart/update_json'], type='json', auth="public", methods=['POST'], website=True)
index 6cc2839..ad7823c 100644 (file)
@@ -1,18 +1,21 @@
 $(document).ready(function () {
-    var $shippingDifferent = $(".oe_website_sale input[name='shipping_different']");
+$('.oe_website_sale').each(function () {
+    var oe_website_sale = this;
+
+    var $shippingDifferent = $("input[name='shipping_different']", oe_website_sale);
     if ($shippingDifferent.is(':checked')) {
-       $(".oe_website_sale .js_shipping").show();
+       $(".js_shipping", oe_website_sale).show();
     }
     $shippingDifferent.change(function () {
-        $(".oe_website_sale .js_shipping").toggle();
+        $(".js_shipping", oe_website_sale).toggle();
     });
 
     // change for css
-    $(document).on('mouseup touchend', '.js_publish', function (ev) {
+    $(oe_website_sale).on('mouseup touchend', '.js_publish', function (ev) {
         $(ev.currentTarget).parents(".thumbnail").toggleClass("disabled");
     });
 
-    $(".oe_website_sale .oe_cart input.js_quantity").change(function () {
+    $(oe_website_sale).on("change", ".oe_cart input.js_quantity", function () {
         var $input = $(this);
         var value = parseInt($input.val(), 10);
         var line_id = parseInt($input.data('line-id'),10);
@@ -26,11 +29,6 @@ $(document).ready(function () {
                     location.reload();
                     return;
                 }
-                if (data.option_ids.length) {
-                    _.each(data.option_ids, function (line_id) {
-                        $(".js_quantity[data-line-id="+line_id+"]").text(data.quantity);
-                    });
-                }
                 var $q = $(".my_cart_quantity");
                 $q.parent().parent().removeClass("hidden", !data.quantity);
                 $q.html(data.cart_quantity).hide().fadeIn(600);
@@ -42,7 +40,7 @@ $(document).ready(function () {
     });
 
     // hack to add and rome from cart with json
-    $('.oe_website_sale').on('click', 'a.js_add_cart_json', function (ev) {
+    $(oe_website_sale).on('click', 'a.js_add_cart_json', function (ev) {
         ev.preventDefault();
         var $link = $(ev.currentTarget);
         var $input = $link.parent().parent().find("input");
@@ -55,15 +53,15 @@ $(document).ready(function () {
         return false;
     });
 
-    $('.a-submit').on('click', function () {
+    $('.a-submit', oe_website_sale).off('click').on('click', function () {
         $(this).closest('form').submit();
     });
-    $('form.js_attributes input, form.js_attributes select').on('change', function () {
+    $('.form.js_attributes input, form.js_attributes select', oe_website_sale).on('change', function () {
         $(this).closest("form").submit();
     });
 
     // change price when they are variants
-    $('form.js_add_cart_json label').on('mouseup touchend', function (ev) {
+    $('form.js_add_cart_json label', oe_website_sale).on('mouseup touchend', function (ev) {
         var $label = $(this);
         var $price = $label.parents("form:first").find(".oe_price .oe_currency_value");
         if (!$price.data("price")) {
@@ -74,7 +72,7 @@ $(document).ready(function () {
         $price.html(value + (dec < 0.01 ? ".00" : (dec < 1 ? "0" : "") ));
     });
     // hightlight selected color
-    $('.css_attribute_color input').on('change', function (ev) {
+    $('.css_attribute_color input', oe_website_sale).on('change', function (ev) {
         $('.css_attribute_color').removeClass("active");
         $('.css_attribute_color:has(input:checked)').addClass("active");
     });
@@ -85,7 +83,7 @@ $(document).ready(function () {
         return price + (dec ? '' : '.0') + (dec%10 ? '' : '0');
     }
 
-    $('.oe_website_sale').on('change', 'input.js_variant_change, select.js_variant_change', function (ev) {
+    $(oe_website_sale).on('change', 'input.js_variant_change, select.js_variant_change', function (ev) {
         var $ul = $(this).parents('ul.js_add_cart_variants:first');
         var $parent = $ul.closest('.js_product');
         var $product_id = $parent.find('input.product_id').first();
@@ -138,21 +136,21 @@ $(document).ready(function () {
             $parent.find(".js_check_product").attr("disabled", "disabled");
         }
     });
-    $('ul.js_add_cart_variants').each(function () {
+    $('ul.js_add_cart_variants', oe_website_sale).each(function () {
         $('input.js_variant_change, select.js_variant_change', this).first().trigger('change');
     });
 
-    $(".oe_website_sale").on('change', "select[name='country_id']", function () {
+    $(oe_website_sale).on('change', "select[name='country_id']", function () {
         var $select = $("select[name='state_id']");
         $select.find("option:not(:first)").hide();
         var nb = $select.find("option[data-country_id="+($(this).val() || 0)+"]").show().size();
         $select.parent().toggle(nb>1);
     }).change();
-    $(".oe_website_sale").on('change', "select[name='shipping_country_id']", function () {
+    $(oe_website_sale).on('change', "select[name='shipping_country_id']", function () {
         var $select = $("select[name='shipping_state_id']");
         $select.find("option:not(:first)").hide();
         var nb = $select.find("option[data-country_id="+($(this).val() || 0)+"]").show().size();
         $select.parent().toggle(nb>1);
     }).change();
-
+});
 });
index ec7d5dd..3f79ac0 100644 (file)
@@ -4,7 +4,6 @@ import openerp.tests
 
 inject = [
     ("openerp.Tour", os.path.join(os.path.dirname(__file__), '../../web/static/src/js/tour.js')),
-    ("openerp.Tour.ShopTest", os.path.join(os.path.dirname(__file__), "../static/src/js/website.tour.sale.js")),
 ]
 
 @openerp.tests.common.at_install(False)
index 7e4252d..2858202 100644 (file)
@@ -4,12 +4,6 @@
 
 <!-- Layout and common templates -->
 
-<template id="debugger" inherit_id="website.debugger" name="Event Debugger">
-    <xpath expr='//t[@t-set="debugger_hook"]' position="after">
-        <script type="text/javascript" src="/website_sale/static/src/js/website.tour.sale.js"></script>
-    </xpath>
-</template>
-
 <template id="assets_editor" inherit_id="website.assets_editor" name="Shop Editor" groups="base.group_sale_manager">
   <xpath expr="." position="inside">
       <script type="text/javascript" src="/website_sale/static/src/js/website_sale.editor.js"></script>
   </xpath>
 </template>
 
+<template id="assets_editor" inherit_id="website.assets_frontend" name="Shop">
+  <xpath expr="." position="inside">
+      <script type="text/javascript" src="/website_sale/static/src/js/website.tour.sale.js"></script>
+      <script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
+      <link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
+      <link rel='stylesheet' href='/website_sale/static/src/css/website_mail.css'/>
+      <script type="text/javascript" src="/website_sale/static/src/js/website_sale_payment.js"></script>
+      <script type="text/javascript" src="/website_sale/static/src/js/website_sale_validate.js"></script>
+  </xpath>
+</template>
+
 <template id="header" inherit_id="website.layout" name="Header Shop My Cart Link">
   <xpath expr="//header//ul[@id='top_menu']/li" position="before">
       <t t-set="website_sale_order" t-value="website.sale_get_order()"/>
@@ -60,6 +65,7 @@
 <!-- Product item used by /shop and /shop/cart -->
 
 <template id="products_item" name="Product item">
+  <form action="/shop/cart/update" method="post" style="display: inline-block;">
   <div itemscope="itemscope" itemtype="http://schema.org/Product">
   <div class="ribbon-wrapper">
     <div class="ribbon btn btn-danger">Sale</div>
@@ -91,6 +97,7 @@
       </div>
   </section>
   </div>
+  </form>
 </template>
 
 <template id="products_description" inherit_id="website_sale.products_item" optional="disabled" name="Product Description">
 
 <template id="products_add_to_cart" inherit_id="website_sale.products_item" optional="disabled" name="Add to Cart">
   <xpath expr="//div[@class='product_price']" position="inside">
-      <form action="/shop/cart/update" method="post" style="display: inline-block;">
-          <input name="product_id" t-att-value="product.product_variant_ids[0].id" type="hidden"/>
-          <a class="btn btn-default btn-xs fa fa-shopping-cart a-submit"/>
-      </form>
+    <input name="product_id" t-att-value="product.product_variant_ids[0].id" type="hidden"/>
+    <a class="btn btn-default btn-xs fa fa-shopping-cart a-submit"/>
   </xpath>
 </template>
 
 
 <template id="products" name="Products">
   <t t-call="website.layout">
-      <t t-set="head">
+      <!--t t-set="head">
           <t t-call="web.jqueryui_conflict">
             <script type="text/javascript" src="/web/static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js"></script>
           </t>
           <link rel='stylesheet' href="/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.9.1.custom.css"/>
-          <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'/>
           <t t-raw="head or ''"/>
-      </t>
+      </t-->
       <t t-set="additional_title">Shop</t>
       <div id="wrap" class="js_sale">
         <div class="oe_structure"/>
 
 <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.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 t-set="additional_title" t-value="product.name"/>
       <div itemscope="itemscope" itemtype="http://schema.org/Product" id="wrap" class="js_sale">
 
 
 <template id="cart" name="Shopping Cart">
   <t t-call="website.layout">
-      <t t-set="head">
-          <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'/>
-          <t t-raw="head or ''"/>
-      </t>
       <div id="wrap">
         <div class="container oe_website_sale">
 
 
 <template id="checkout">
   <t t-call="website.layout">
-    <t t-set="head">
-        <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'/>
-        <t t-raw="head or ''"/>
-    </t>
     <t t-set="additional_title">Shop - Checkout</t>
     <div id="wrap">
       <div class="container oe_website_sale">
 
 <template id="payment">
   <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_payment.js"></script>
-          <link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
-          <t t-raw="head or ''"/>
-      </t>
       <t t-set="additional_title">Shop - Select Payment Mode</t>
       <div id="wrap">
         <div class="container oe_website_sale">
 
 <template id="confirmation">
   <t t-call="website.layout">
-      <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>
-          <t t-raw="head or ''"/>
-      </t>
       <t t-set="additional_title">Shop - Confirmed</t>
       <div id="wrap">
         <div class="container oe_website_sale">
index 1c7f6ef..c0dba9e 100644 (file)
@@ -1,14 +1,13 @@
 $(document).ready(function () {
-
-    $('#add_to_cart')
+    $('.oe_website_sale #add_to_cart, .oe_website_sale #products_grid .a-submit')
         .off('click')
         .removeClass('a-submit')
         .click(function (event) {
             var $form = $(this).closest('form');
-            var quantity = parseFloat($form.find('input[name="add_qty"]').val());
+            var quantity = parseFloat($form.find('input[name="add_qty"]').val() || 1);
             event.preventDefault();
             openerp.jsonRpc("/shop/modal", 'call', {
-                    'product_id': parseInt($('input.product_id[name="product_id"]').val(),10),
+                    'product_id': parseInt($form.find('input[name="product_id"]').val(),10),
                     kwargs: {
                        context: openerp.website.get_context()
                     },
@@ -27,7 +26,7 @@ $(document).ready(function () {
                             url:  '/shop/cart/update_option',
                             success: function (quantity) {
                                 if (!$a.hasClass('js_goto_shop')) {
-                                    window.location.href = "../cart";
+                                    window.location.href = window.location.href.replace(/shop([\/?].*)?$/, "shop/cart");
                                 }
                                 var $q = $(".my_cart_quantity");
                                 $q.parent().parent().removeClass("hidden", !quantity);
index cd6fb88..e174276 100644 (file)
@@ -1,10 +1,16 @@
 (function () {
     'use strict';
     
-    openerp.Tour.tours.shop_buy_product.steps.splice(3, 0, {
-        title:     "click in modal on 'Proceed to checkout' button",
-        element:   '.modal a:contains("Proceed to checkout")',
-    });
+    var steps = openerp.Tour.tours.shop_buy_product.steps;
+    for (var k=0; k<steps.length; k++) {
+        if (steps[k].title === "click on add to cart") {
+            steps.splice(k+1, 0, {
+                title:     "click in modal on 'Proceed to checkout' button",
+                element:   '.modal a:contains("Proceed to checkout")',
+            });
+            break;
+        }
+    }
 
     openerp.Tour.register({
         id:   'shop_customize',
index 478c06f..abec0be 100644 (file)
@@ -4,7 +4,6 @@ import openerp.tests
 
 inject = [
     ("openerp.Tour", os.path.join(os.path.dirname(__file__), '../../web/static/src/js/tour.js')),
-    ("openerp.Tour.ShopTest", os.path.join(os.path.dirname(__file__), "../static/src/js/website.tour.sale.js")),
 ]
 
 @openerp.tests.common.at_install(False)
index 534afc5..3a3d52a 100644 (file)
@@ -2,14 +2,9 @@
 <openerp>
 <data>
 
-<template id="debugger" inherit_id="website.debugger" name="Event Debugger">
-    <xpath expr='//t[@t-set="debugger_hook"]' position="after">
-        <script type="text/javascript" src="/website_sale_options/static/src/js/website_sale.test.js"></script>
-    </xpath>
-</template>
-
-<template id="product_options_script" inherit_id="website_sale.product" name="Script for Options">
-  <xpath expr="//t[@t-set='head']" position="inside">
+<template id="assets_editor" inherit_id="website.assets_frontend" name="Shop Product Options">
+  <xpath expr="." position="inside">
+      <script type="text/javascript" src="/website_sale_options/static/src/js/website_sale.test.js"></script>
       <script type="text/javascript" src="/website_sale_options/static/src/js/website_sale.js"></script>
       <link rel='stylesheet' href='/website_sale_options/static/src/css/website_sale.css'/>
   </xpath>