From f85c12e2e7ffd35e95fe4b179632d7e13bb6a475 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 22 Oct 2013 13:46:22 +0200 Subject: [PATCH 01/15] [IMP] language selector labels bzr revid: fme@openerp.com-20131022114622-5ih0ea8e00w01vp0 --- addons/website/views/website_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 19ff01ba997..d6a10db096a 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -111,7 +111,7 @@ - +
  • From 120620eb27168dcb4918d5314231d93500c94924 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 22 Oct 2013 14:18:40 +0200 Subject: [PATCH 02/15] [IMP] Check current website in Load a Translation wizard bzr revid: fme@openerp.com-20131022121840-0q1n8ci1fpihi4yf --- addons/website/models/website.py | 11 +++++++++++ addons/website/views/website_templates.xml | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index c79ada6e9e4..b6379bcbb79 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -386,6 +386,17 @@ class base_language_install(osv.osv): 'website_ids': fields.many2many('website', string='Websites to translate'), } + def default_get(self, cr, uid, fields, context=None): + if context is None: + context = {} + defaults = super(base_language_install, self).default_get(cr, uid, fields, context) + website_id = context.get('params', {}).get('website_id') + if website_id: + if 'website_ids' not in defaults: + defaults['website_ids'] = [] + defaults['website_ids'].append(website_id) + return defaults + def lang_install(self, cr, uid, ids, context=None): if context is None: context = {} diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index d6a10db096a..db34bf9a15e 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -120,7 +120,7 @@ - + Add a language...
  • From 31ba0b8b5a863a537163b4be8f4fa5dbd40b644b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 22 Oct 2013 12:59:55 +0200 Subject: [PATCH 03/15] [FIX] image t-field lost during a merge bzr revid: xmo@openerp.com-20131022105955-i550clo5snyvnv26 --- addons/website_sale/views/website_sale.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index d8e446e79d3..b5811f3e95f 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -60,7 +60,7 @@ From 58f1b5ad021f7149317f69bcbfab890bf43d3a83 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 22 Oct 2013 13:00:15 +0200 Subject: [PATCH 04/15] [IMP] prevent default on triple-click interrupt bzr revid: xmo@openerp.com-20131022110015-iewvo1x0jdogswus --- addons/website/static/src/js/website.editor.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index c1f05d9b661..59b8ec4fe0f 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -350,6 +350,7 @@ // The detail attribute indicates the number of times a mouse button has been pressed // we just want the triple click if (e.detail !== 3) { return; } + e.preventDefault(); // Get closest block-level element to the triple-clicked // element (using ckeditor's block list because why not) From 42f254425068071124f878823df21d8d04cfec9c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 22 Oct 2013 15:06:08 +0200 Subject: [PATCH 05/15] [FIX] cleanup modified arch sections before reinserting them in source arch otherwise there are leftovers data-* attributes stored in the DB bzr revid: xmo@openerp.com-20131022130608-jccohqlmbzvxhnzv --- addons/website/models/ir_ui_view.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 955ca4f758b..0a14d23d12e 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- - -from lxml import etree, html -from openerp.osv import osv, fields from urlparse import urlparse +from lxml import etree, html + +from openerp.osv import osv, fields +from openerp.addons.base import ir class view(osv.osv): _inherit = "ir.ui.view" @@ -83,13 +84,20 @@ class view(osv.osv): return out def replace_arch_section(self, cr, uid, view_id, section_xpath, replacement, context=None): - arch = replacement - if section_xpath: - previous_arch = etree.fromstring(self.browse(cr, uid, view_id, context=context).arch.encode('utf-8')) + # remove branding from replacement section + for att in ir.ir_ui_view.MOVABLE_BRANDING: + replacement.attrib.pop(att, None) + + if not section_xpath: + # replace all of the arch, not just a fragment + arch = replacement + else: + arch = etree.fromstring(self.browse(cr, uid, view_id, context=context).arch.encode('utf-8')) # ensure there's only one match - [previous_section] = previous_arch.xpath(section_xpath) + [previous_section] = arch.xpath(section_xpath) + previous_section.getparent().replace(previous_section, replacement) - arch = previous_arch + return arch def _normalize_urls(self, element): From fd5bae6a98a9b4d6dcbd8b4209842d0bcd531121 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 22 Oct 2013 15:16:29 +0200 Subject: [PATCH 06/15] [FIX] do not normalize urls for images bzr revid: fme@openerp.com-20131022131629-vo67pv9yqyuoe7q6 --- addons/website/models/ir_ui_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 0a14d23d12e..c85245bb188 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -106,7 +106,7 @@ class view(osv.osv): attr = 'action' if 'action' in element.attrib else None elif element.tag in ['a', 'link']: attr = 'href' if 'href' in element.attrib else None - elif element.tag in ['frame', 'iframe', 'img', 'input', 'script']: + elif element.tag in ['frame', 'iframe', 'script']: attr = 'src' if 'src' in element.attrib else None if attr: value = element.attrib[attr] From e4121220c6b0e9636f379c754080f4ebd94d352d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 22 Oct 2013 15:20:54 +0200 Subject: [PATCH 07/15] [IMP] Language selected label bzr revid: fme@openerp.com-20131022132054-o60ekjtbz62sg6p6 --- addons/website/views/website_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index db34bf9a15e..d26b840a2ad 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -104,7 +104,7 @@ (len(website.language_ids) > 1 or editable)" class="dropdown"> - + -

    Your Cart

    - +

    Shopping Cart

    -
    -
    - Your cart is empty! +
    +

    Policies

    +
      +
    • ☑ 30-days money-back guarantee
    • +
    • ☑ Invoice sent by e-Mail
    • +
    +

    Secure Payment

    +
      +
    • ☑ Transation 256bit encrypted
    • +
    • ☑ Processed by Ogone
    • +
    - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - -
    ProductPriceQuantity
    - - -
    - - - -
    -
    -
    - - +
    ProductPriceQuantity
    + + +
    + + + +
    +
    +
    + + + + - - - -
    - - - - - - - - - - - -
    +
    +
    + + + + + + + + + + + +
    -
    - - - - - - - - - - - - - - - -

    Total:

    -

    -
    Incl. Taxes: - -
    -
    - - Continue Shopping - Process Checkout -
    -
    -
    -

    Policies

    -
      -
    • ☑ 30-days money-back guarantee
    • -
    • ☑ Invoice sent by e-Mail
    • -
    - -

    Secure Payment

    -
      -
    • ☑ Transation 256bit encrypted
    • -
    • ☑ Processed by Ogone
    • -
    - -
    + + + + + + + + + + + + + + + + + + + +

    Total:

    +

    +
    Incl. Taxes: + +
    +
    From 7994ceb43df7f25cf3ff814c6e2dfd0c4b1169d2 Mon Sep 17 00:00:00 2001 From: ddm Date: Tue, 22 Oct 2013 16:28:04 +0200 Subject: [PATCH 10/15] [IMP] eCommerce: layout improvements bzr revid: ddm@openerp.com-20131022142804-58oabf37w3zsg2pg --- addons/website_sale/views/website_sale.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index dd1bf8b7b24..4f2cc38f235 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -169,8 +169,10 @@
    -
    - +
    + + pull-right +
    @@ -365,7 +367,7 @@

    Secure Payment

      -
    • ☑ Transation 256bit encrypted
    • +
    • ☑ 256 bit encryption
    • ☑ Processed by Ogone
    From ab20dbc8859633597fef042b63764d33f65cb90e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 22 Oct 2013 16:20:49 +0200 Subject: [PATCH 11/15] [FIX] Attribute values in selectors must be attributes or strings http://www.w3.org/TR/css3-selectors/#attribute-selectors http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier > identifiers (including element names, classes, and IDs in selectors) > can contain only the characters [a-zA-Z0-9] and ISO 10646 characters > U+00A0 and higher, plus the hyphen (-) and the underscore (_); they > cannot start with a digit, two hyphens, or a hyphen followed by a > digit. so "0" or "1" is not a valid identifier, must be a string and must thus be quoted. bzr revid: xmo@openerp.com-20131022142049-6fq70sielv95kmu0 --- addons/website/static/src/js/website.translator.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/website/static/src/js/website.translator.js b/addons/website/static/src/js/website.translator.js index fddb5ef7b51..b3f460cbf75 100644 --- a/addons/website/static/src/js/website.translator.js +++ b/addons/website/static/src/js/website.translator.js @@ -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 () { @@ -175,7 +175,7 @@ $(root).click(function (ev) { ev.preventDefault(); }); - return $('[data-oe-translate=1]'); + return $('[data-oe-translate="1"]'); } }); From 3655f43e42475da4be76c5d2f51facfdd8274b52 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 22 Oct 2013 17:11:44 +0200 Subject: [PATCH 12/15] [IMP] warnings and shit bzr revid: xmo@openerp.com-20131022151144-tblwba9rf77iuidl --- .../static/lib/ckeditor/core/dom/range.js | 2 +- .../static/lib/ckeditor/core/selection.js | 2 +- .../website/static/src/js/website.editor.js | 13 +++-- addons/website/static/src/js/website.js | 5 +- .../website/static/src/js/website.snippets.js | 48 +++++++++---------- .../static/src/js/website.tour.basic.js | 14 +++--- .../static/src/js/website.translator.js | 3 +- .../static/src/js/website_blog.js | 11 ++--- .../static/src/js/website_sale.js | 4 +- 9 files changed, 48 insertions(+), 54 deletions(-) diff --git a/addons/website/static/lib/ckeditor/core/dom/range.js b/addons/website/static/lib/ckeditor/core/dom/range.js index d567a50ad43..9a330fc8a70 100644 --- a/addons/website/static/lib/ckeditor/core/dom/range.js +++ b/addons/website/static/lib/ckeditor/core/dom/range.js @@ -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. diff --git a/addons/website/static/lib/ckeditor/core/selection.js b/addons/website/static/lib/ckeditor/core/selection.js index e888c3d557c..f3e47c9debb 100644 --- a/addons/website/static/lib/ckeditor/core/selection.js +++ b/addons/website/static/lib/ckeditor/core/selection.js @@ -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 ) { diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 59b8ec4fe0f..8b3a73a06a3 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -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; diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 963a0b1664d..0147bf0a406 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -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"); diff --git a/addons/website/static/src/js/website.snippets.js b/addons/website/static/src/js/website.snippets.js index ee759e3d153..0b1ab4e13cd 100644 --- a/addons/website/static/src/js/website.snippets.js +++ b/addons/website/static/src/js/website.snippets.js @@ -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); }); diff --git a/addons/website/static/src/js/website.tour.basic.js b/addons/website/static/src/js/website.tour.basic.js index 82ad4790c25..876d2a7b5b9 100644 --- a/addons/website/static/src/js/website.tour.basic.js +++ b/addons/website/static/src/js/website.tour.basic.js @@ -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 @@ }, }); -}()); \ No newline at end of file +}()); diff --git a/addons/website/static/src/js/website.translator.js b/addons/website/static/src/js/website.translator.js index b3f460cbf75..88b77fe73b4 100644 --- a/addons/website/static/src/js/website.translator.js +++ b/addons/website/static/src/js/website.translator.js @@ -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); }); }); @@ -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')) { diff --git a/addons/website_blog/static/src/js/website_blog.js b/addons/website_blog/static/src/js/website_blog.js index 511fb9b2822..df9f2ea3081 100644 --- a/addons/website_blog/static/src/js/website_blog.js +++ b/addons/website_blog/static/src/js/website_blog.js @@ -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 = $('').text(this.name); var $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 () { }); } }); -}); \ No newline at end of file +}); diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index ab10c04ad9b..508a4405aea 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -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"); From 3873868633d309ae38ad343ca03f5684233caca5 Mon Sep 17 00:00:00 2001 From: ddm Date: Tue, 22 Oct 2013 17:16:55 +0200 Subject: [PATCH 13/15] [FIX] Fixed eCommerce pager bzr revid: ddm@openerp.com-20131022151655-erprk7ci7mrwmb18 --- addons/website_sale/controllers/main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 8756b6f6722..23f3bf71257 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -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//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() From 649585110224726ad8eafdda992fd5fbabf2a52a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 23 Oct 2013 10:15:01 +0200 Subject: [PATCH 14/15] [ADD] UI improvement: Translate "or Edit Master" bzr revid: fme@openerp.com-20131023081501-f9owb501j16757bk --- addons/website/static/src/css/editor.css | 5 +++++ addons/website/static/src/css/editor.sass | 3 +++ .../website/static/src/js/website.translator.js | 15 ++++++++++++++- .../website/static/src/xml/website.translator.xml | 4 ++++ addons/website/views/website_templates.xml | 7 ++++--- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/addons/website/static/src/css/editor.css b/addons/website/static/src/css/editor.css index a3151d14855..26032aaf7ce 100644 --- a/addons/website/static/src/css/editor.css +++ b/addons/website/static/src/css/editor.css @@ -112,6 +112,11 @@ table.editorbar-panel td.selected { background-color: #b1c9d9; } +.oe_translate_or { + color: white; + padding: 0 0.2em; +} + .oe_translate_examples li { margin: 10px; padding: 4px; diff --git a/addons/website/static/src/css/editor.sass b/addons/website/static/src/css/editor.sass index dcfa88b89e7..e4ef24dad70 100644 --- a/addons/website/static/src/css/editor.sass +++ b/addons/website/static/src/css/editor.sass @@ -106,6 +106,9 @@ table.editorbar-panel background-color: #b1c9d9 // ---- TRANSLATIONS ---- {{{ +.oe_translate_or + color: white + padding: 0 0.2em .oe_translate_examples li margin: 10px padding: 4px diff --git a/addons/website/static/src/js/website.translator.js b/addons/website/static/src/js/website.translator.js index 88b77fe73b4..014be7bfa6b 100644 --- a/addons/website/static/src/js/website.translator.js +++ b/addons/website/static/src/js/website.translator.js @@ -6,11 +6,16 @@ var nodialog = 'website_translator_nodialog'; website.EditorBar.include({ + events: _.extend({}, website.EditorBar.prototype.events, { + 'click a[data-action=edit_master]': 'edit_master', + }), start: function () { var self = this; this.initial_content = {}; return this._super.apply(this, arguments).then(function () { - self.$('button[data-action=edit]').text("Translate"); + self.$('button[data-action=edit]') + .text("Translate") + .after(openerp.qweb.render('website.TranslatorAdditionalButtons')); self.$('[data-action=snippet]').hide(); self.$('#customize-menu-button').hide(); }); @@ -34,6 +39,14 @@ }); } }, + edit_master: function (ev) { + ev.preventDefault(); + var link = $('.js_language_selector a[data-default-lang]')[0]; + if (link) { + link.search += (link.search ? '&' : '?') + 'unable_editor=1'; + window.location = link.attributes.href.value; + } + }, translate: function () { var self = this; this.translations = null; diff --git a/addons/website/static/src/xml/website.translator.xml b/addons/website/static/src/xml/website.translator.xml index f35cf583da9..dac074688d8 100644 --- a/addons/website/static/src/xml/website.translator.xml +++ b/addons/website/static/src/xml/website.translator.xml @@ -1,5 +1,9 @@ + + or + Edit Master +