From 68749a06831a3f3e22c75b8647ecfdafe99429c0 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu <chm@openerp.com> Date: Mon, 3 Mar 2014 15:20:17 +0100 Subject: [PATCH] [IMP] website: snippet: remove data-snippet-id and add auto resize on resising option bzr revid: chm@openerp.com-20140303142017-jcb3401wpiuvbc1n --- addons/website/data/website_demo.xml | 4 +- addons/website/static/src/css/snippets.css | 5 - addons/website/static/src/css/snippets.sass | 4 - addons/website/static/src/css/website.css | 9 +- addons/website/static/src/css/website.sass | 7 +- .../src/js/website.snippets.animation.js | 5 +- .../static/src/js/website.snippets.editor.js | 115 ++++++++---------- .../static/src/js/website.tour.banner.js | 2 +- addons/website/views/snippets.xml | 23 ++-- 9 files changed, 76 insertions(+), 98 deletions(-) diff --git a/addons/website/data/website_demo.xml b/addons/website/data/website_demo.xml index 8abf901fd898..639005067414 100644 --- a/addons/website/data/website_demo.xml +++ b/addons/website/data/website_demo.xml @@ -25,7 +25,7 @@ <t t-set="additional_title">Partner Detail</t> <div id="wrap"> <div class="oe_structure"> - <section data-snippet-id="title"> + <section> <div class="container"> <div class="row"> <div class="col-md-12"> @@ -73,7 +73,7 @@ response = request.website.render("website.template_partner_post", values) <t t-set="additional_title">Partners</t> <div id="wrap"> <div class="oe_structure"> - <section data-snippet-id="title"> + <section> <div class="container"> <div class="row"> <div class="col-md-12"> diff --git a/addons/website/static/src/css/snippets.css b/addons/website/static/src/css/snippets.css index fe9c18c0081d..3f5373e57e47 100644 --- a/addons/website/static/src/css/snippets.css +++ b/addons/website/static/src/css/snippets.css @@ -608,8 +608,3 @@ height: 16px; display: inline-block; } - -[data-snippet-id] { - min-height: 10px; - min-width: 10px; -} diff --git a/addons/website/static/src/css/snippets.sass b/addons/website/static/src/css/snippets.sass index a06bba01dbad..f9432b3749d9 100644 --- a/addons/website/static/src/css/snippets.sass +++ b/addons/website/static/src/css/snippets.sass @@ -483,10 +483,6 @@ height: 16px display: inline-block -[data-snippet-id] - min-height: 10px - min-width: 10px - diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css index e47b7a41baab..78262bc7dd43 100644 --- a/addons/website/static/src/css/website.css +++ b/addons/website/static/src/css/website.css @@ -280,12 +280,13 @@ ul.nav-stacked > li > a { background-size: 100%; } -[data-snippet-id], .colmd, .hr, .blockquote { +section, .carousel, .parallax, .row, .hr, .blockquote { + min-height: 30px; overflow: hidden; } @media (max-width: 400px) { - [data-snippet-id]:not([data-snippet-id="carousel"]) { + section, .parallax, .row, .hr, .blockquote { height: auto !important; } } @@ -380,10 +381,10 @@ ul.nav-stacked > li > a { } /* Parallax Theme */ -div.carousel[data-snippet-id="slider"] .carousel-indicators li { +div.carousel .carousel-indicators li { border: 1px solid grey; } -div.carousel[data-snippet-id="slider"] .carousel-indicators .active { +div.carousel .carousel-indicators .active { background-color: grey; } diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass index 3cdfe37a8967..680f26cef07c 100644 --- a/addons/website/static/src/css/website.sass +++ b/addons/website/static/src/css/website.sass @@ -230,11 +230,12 @@ ul.nav-stacked > li > a .oe_img_bg background-size: 100% -[data-snippet-id],.colmd,.hr,.blockquote +section, .carousel, .parallax, .row, .hr, .blockquote + min-height: 30px overflow: hidden @media (max-width: 400px) - [data-snippet-id]:not([data-snippet-id="carousel"]) + section, .parallax, .row, .hr, .blockquote height: auto !important .carousel-inner @@ -312,7 +313,7 @@ ul.nav-stacked > li > a /* Parallax Theme */ -div.carousel[data-snippet-id="slider"] +div.carousel .carousel-indicators li border: 1px solid grey diff --git a/addons/website/static/src/js/website.snippets.animation.js b/addons/website/static/src/js/website.snippets.animation.js index 01e4c5239cb1..e07e58e59e78 100644 --- a/addons/website/static/src/js/website.snippets.animation.js +++ b/addons/website/static/src/js/website.snippets.animation.js @@ -8,9 +8,10 @@ website.snippet.start_animation = function ($target) { for (var k in website.snippet.animationRegistry) { var Animation = website.snippet.animationRegistry[k]; - var selector = "[data-snippet-id='"+k+"']"; + var selector = ""; if (Animation.prototype.selector) { - selector += ", " + Animation.prototype.selector; + if (selector != "") selector += ", " + selector += Animation.prototype.selector; } if ($target) { if ($target.is(selector)) selector = $target; diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index 891ebc079a87..94035d27544c 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -36,7 +36,6 @@ // FIXME: call clean_for_save on all snippets of the page, not only modified ones // important for banner of parallax that changes data automatically. this.snippets.clean_for_save(); - remove_added_snippet_id(); this._super(); }, }); @@ -49,38 +48,13 @@ })) { return; } - hack_to_add_snippet_id() - }); - - // puts $el at the same absolute position as $target - function hack_to_add_snippet_id () { - _.each(website.snippet.selector, function (val) { - $(val[0]).each(function() { - if (!$(this).is("[data-snippet-id]") && $(this).parents("[data-oe-model]").length) { - $(this).attr("data-snippet-id", val[1]); - } - }); - }); - } - function remove_added_snippet_id () { - _.each(website.snippet.selector, function (val) { - $(val[0]).each(function() { - if ($(this).data("snippet-id") === val[1]) { - $(this).removeAttr("data-snippet-id"); - } - }); - }); - } - - $(document).ready(function() { - hack_to_add_snippet_id(); }); // 'snippet-dropped' is triggered on '#oe_snippets' whith $target as attribute when a snippet is dropped // 'snippet-activated' is triggered on '#oe_snippets' (and on snippet) when a snippet is activated if (!website.snippet) website.snippet = {}; - website.snippet.styles = {}; + website.snippet.templateOptions = {}; website.snippet.selector = []; website.snippet.BuildingBlock = openerp.Widget.extend({ template: 'website.snippets', @@ -92,7 +66,6 @@ $("<div id='oe_manipulators'></div>").appendTo('body'); } this.$active_snipped_id = false; - hack_to_add_snippet_id(); this.snippets = []; observer.observe(document.body, { @@ -159,12 +132,12 @@ .then(function (html) { var $html = $(html); - var $styles = $html.find("[data-snippet-style-id]"); + var $styles = $html.find("[data-snippet-option-id]"); $styles.each(function () { var $style = $(this); - var style_id = $style.data('snippet-style-id'); - website.snippet.styles[style_id] = { - 'snippet-style-id' : style_id, + var style_id = $style.data('snippet-option-id'); + website.snippet.templateOptions[style_id] = { + 'snippet-option-id' : style_id, 'selector': $style.data('selector'), '$el': $style, 'selector-siblings': $style.data('selector-siblings'), @@ -223,8 +196,8 @@ } snipped_event_flag = true; var selector = []; - for (var k in website.snippet.styles) { - selector.push(website.snippet.styles[k].selector); + for (var k in website.snippet.templateOptions) { + selector.push(website.snippet.templateOptions[k].selector); } selector = selector.join(","); @@ -336,15 +309,15 @@ var selector_siblings = []; var selector_children = []; var selector_vertical_children = []; - for (var k in website.snippet.styles) { - if ($toInsert.is(website.snippet.styles[k].selector)) { - selector.push(website.snippet.styles[k].selector); - if (website.snippet.styles[k]['selector-siblings']) - selector_siblings.push(website.snippet.styles[k]['selector-siblings']); - if (website.snippet.styles[k]['selector-children']) - selector_children.push(website.snippet.styles[k]['selector-children']); - if (website.snippet.styles[k]['selector-vertical-children']) - selector_vertical_children.push(website.snippet.styles[k]['selector-vertical-children']); + for (var k in website.snippet.templateOptions) { + if ($toInsert.is(website.snippet.templateOptions[k].selector)) { + selector.push(website.snippet.templateOptions[k].selector); + if (website.snippet.templateOptions[k]['selector-siblings']) + selector_siblings.push(website.snippet.templateOptions[k]['selector-siblings']); + if (website.snippet.templateOptions[k]['selector-children']) + selector_children.push(website.snippet.templateOptions[k]['selector-children']); + if (website.snippet.templateOptions[k]['selector-vertical-children']) + selector_vertical_children.push(website.snippet.templateOptions[k]['selector-vertical-children']); } } @@ -418,8 +391,8 @@ $target.data("snippet-editor").drop_and_build_snippet($target); } - for (var k in website.snippet.styles) { - $target.find(website.snippet.styles[k].selector).each(function () { + for (var k in website.snippet.templateOptions) { + $target.find(website.snippet.templateOptions[k].selector).each(function () { var $snippet = $(this); self.create_overlay($snippet); if ($snippet.data("snippet-editor")) { @@ -545,7 +518,7 @@ // generate drop zones covering the elements selected by the selector // we generate overlay drop zones only to get an idea of where the snippet are, the drop activate_overlay_zones: function(selector){ - var $targets = this.dom_filter(selector || '[data-snippet-id]'); + var $targets = this.dom_filter(selector); var self = this; if (typeof selector !== 'string' && !$targets.length) { @@ -590,18 +563,18 @@ }); - website.snippet.styleRegistry = {}; - website.snippet.StyleEditor = openerp.Class.extend({ + website.snippet.options = {}; + website.snippet.Option = openerp.Class.extend({ // initialisation (don't overwrite) init: function (BuildingBlock, $target, snippet_id) { this.BuildingBlock = BuildingBlock; this.$target = $target; - var styles = this.$target.data("snippet-style-ids") || {}; + var styles = this.$target.data("snippet-option-ids") || {}; styles[snippet_id] = this; - this.$target.data("snippet-style-ids", styles); + this.$target.data("snippet-option-ids", styles); this.$overlay = this.$target.data('overlay'); - this['snippet-style-id'] = snippet_id; - this.$el = website.snippet.styles[snippet_id].$el.find(">li").clone(); + this['snippet-option-id'] = snippet_id; + this.$el = website.snippet.templateOptions[snippet_id].$el.find(">li").clone(); this.required = this.$el.data("required"); @@ -717,7 +690,7 @@ } }); - website.snippet.styleRegistry.background = website.snippet.StyleEditor.extend({ + website.snippet.options.background = website.snippet.Option.extend({ _get_bg: function () { return this.$target.css("background-image").replace(/url\(['"]*|['"]*\)|^none$/g, ""); }, @@ -782,7 +755,7 @@ this.$el.find('li:has(li[data-class].active)').addClass("active"); } }); - website.snippet.styleRegistry.slider = website.snippet.StyleEditor.extend({ + website.snippet.options.slider = website.snippet.Option.extend({ drop_and_build_snippet: function() { var id = $(".carousel").length; this.id = "myCarousel" + id; @@ -869,7 +842,7 @@ } }, }); - website.snippet.styleRegistry.carousel = website.snippet.styleRegistry.slider.extend({ + website.snippet.options.carousel = website.snippet.options.slider.extend({ getSize: function () { this.grid = this._super(); this.grid.size = 8; @@ -895,8 +868,8 @@ }; this.$target.on('snippet-style-change snippet-style-preview', function (event, style, np) { var $active = self.$target.find(".item.active"); - if (style['snippet-style-id'] === "size") return; - if (style['snippet-style-id'] === "background") { + if (style['snippet-option-id'] === "size") return; + if (style['snippet-option-id'] === "background") { $active.css("background-image", self.$target.css("background-image")); } if (np.$prev) { @@ -923,7 +896,7 @@ var $clone = this._super(); // choose an other background - var bg = this.$target.data("snippet-style-ids").background; + var bg = this.$target.data("snippet-option-ids").background; if (!bg) return $clone; var $styles = bg.$el.find("li[data-class]:not(.oe_custom_bg)"); @@ -946,7 +919,7 @@ }, }); - website.snippet.styleRegistry.resize = website.snippet.StyleEditor.extend({ + website.snippet.options.marginAndResize = website.snippet.Option.extend({ start: function () { var self = this; this._super(); @@ -1111,7 +1084,7 @@ this.change_cursor(); } }); - website.snippet.styleRegistry["margin-y"] = website.snippet.styleRegistry.resize.extend({ + website.snippet.options["margin-y"] = website.snippet.options.marginAndResize.extend({ getSize: function () { this.grid = this._super(); var grid = [0,4,8,16,32,48,64,92,128]; @@ -1125,7 +1098,7 @@ return this.grid; }, }); - website.snippet.styleRegistry["margin-x"] = website.snippet.styleRegistry.resize.extend({ + website.snippet.options["margin-x"] = website.snippet.options.marginAndResize.extend({ getSize: function () { this.grid = this._super(); var width = this.$target.parents(".row:first").first().outerWidth(); @@ -1223,15 +1196,24 @@ this._super(compass, beginClass, current); }, }); - website.snippet.styleRegistry["resize"] = website.snippet.styleRegistry.resize.extend({ + website.snippet.options["resize"] = website.snippet.options.marginAndResize.extend({ getSize: function () { this.grid = this._super(); this.grid.size = 8; return this.grid; }, + start: function () { + var self = this; + this._super(); + this.$el.find(".js_size_auto").on('click', function (event){ + self.$target.css("height", ""); + self.BuildingBlock.cover_target(self.$overlay, self.$target); + return false; + }); + }, }); - website.snippet.styleRegistry.parallax = website.snippet.StyleEditor.extend({ + website.snippet.options.parallax = website.snippet.Option.extend({ getSize: function () { this.grid = this._super(); this.grid.size = 8; @@ -1362,7 +1344,6 @@ children: self.selector_children, vertical_children: self.selector_vertical_children, }); - console.log(self); $("body").addClass('move-important'); @@ -1391,7 +1372,7 @@ this.selector_siblings = []; this.selector_children = []; this.selector_vertical_children = []; - _.each(website.snippet.styles, function (val) { + _.each(website.snippet.templateOptions, function (val) { if (!self.$target.is(val.selector)) { return; } @@ -1399,8 +1380,8 @@ if (val['selector-children']) self.selector_children.push(val['selector-children']); if (val['selector-vertical-children']) self.selector_vertical_children.push(val['selector-vertical-children']); - var style = val['snippet-style-id']; - var Editor = website.snippet.styleRegistry[style] || website.snippet.StyleEditor; + var style = val['snippet-option-id']; + var Editor = website.snippet.options[style] || website.snippet.Option; var editor = self.styles[style] = new Editor(self.BuildingBlock, self.$target, style); $ul.append(editor.$el.addClass("snippet-style-" + style)); }); diff --git a/addons/website/static/src/js/website.tour.banner.js b/addons/website/static/src/js/website.tour.banner.js index 1d4a0c0f752b..97568e37f354 100644 --- a/addons/website/static/src/js/website.tour.banner.js +++ b/addons/website/static/src/js/website.tour.banner.js @@ -47,7 +47,7 @@ }, { waitFor: '.oe_overlay_options .oe_options:visible', - element: '#wrap [data-snippet-id=carousel]:first .carousel-caption', + element: '#wrap .carousel:first .carousel-caption', placement: 'top', title: _("Customize banner's text"), content: _("Click in the text and start editing it."), diff --git a/addons/website/views/snippets.xml b/addons/website/views/snippets.xml index 88f1c7a50bdc..e9cb694a358e 100644 --- a/addons/website/views/snippets.xml +++ b/addons/website/views/snippets.xml @@ -827,9 +827,9 @@ </div> -<div id="snippet_styles" class="hidden"> +<div id="snippet_options" class="hidden"> - <div data-snippet-style-id='blog-style' + <div data-snippet-option-id='blog-style' data-selector="section:not(.carousel):not(.parallax)"> <li class="dropdown-submenu"> <a tabindex="-1" href="#">Style</a> @@ -839,7 +839,7 @@ </li> </div> - <div data-snippet-style-id='background' + <div data-snippet-option-id='background' data-selector="section, .carousel, .parallax"> <li class="dropdown-submenu" data-required="true"> <a tabindex="-1" href="#">Background</a> @@ -896,7 +896,7 @@ </li> </div> - <div data-snippet-style-id='carousel' + <div data-snippet-option-id='carousel' data-selector=".carousel"> <li class="divider"></li> <li> @@ -907,7 +907,7 @@ </li> </div> - <div data-snippet-style-id='carousel-style' + <div data-snippet-option-id='carousel-style' data-selector="div[data-snippet-id='carousel']"> <li class="dropdown-submenu" data-required="true"> <a tabindex="-1" href="#">Layout</a> @@ -919,27 +919,30 @@ </li> </div> - <div data-snippet-style-id='margin-y' + <div data-snippet-option-id='margin-y' data-selector="section, .row > [class*='col-md-'], .carousel, .parallax, hr"> </div> - <div data-snippet-style-id='resize' + <div data-snippet-option-id='resize' data-selector="section, .carousel, .parallax" data-selector-children=".oe_structure, [data-oe-type=html]"> + <li> + <a href="#" class="button js_size_auto">Size Automatic</a> + </li> </div> - <div data-snippet-style-id='margin-x' + <div data-snippet-option-id='margin-x' data-selector=".row > [class*='col-md-']" data-selector-vertical-children='.row'> </div> - <div data-snippet-style-id='content' + <div data-snippet-option-id='content' data-selector="p, h1, h2, h3, blockquote, .well, .panel" data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel" data-selector-children=".content"> </div> - <div data-snippet-style-id='parallax' + <div data-snippet-option-id='parallax' data-selector=".parallax"> <li class="dropdown-submenu"> <a tabindex="-1" href="#">Scroll Speed</a> -- GitLab