From a56ab27bfbb7df5e92026869a76619ed16c7add5 Mon Sep 17 00:00:00 2001 From: "ddm@openerp.com" <> Date: Wed, 8 Jan 2014 11:03:33 +0100 Subject: [PATCH 01/49] Remove useless comments bzr revid: ddm@openerp.com-20140108100333-ji1dff867e7rqjaj --- addons/website/tests/test_ui.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index cf380b8e456..3a67f0ee5b4 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -10,7 +10,6 @@ from openerp import tools def _exc_info_to_string(err, test): return err -# TODO according to al this should be one line of Python class LineReader: def __init__(self, file_descriptor): self._file_descriptor = file_descriptor @@ -74,7 +73,6 @@ class WebsiteUiSuite(unittest.TestSuite): self._options['timeout'] = self._timeout self._options['port'] = tools.config.get('xmlrpc_port', 80) self._options['db'] = tools.config.get('db_name', '') - # TODO use correct key from tools if exists (I could not find it --ddm) self._options['user'] = 'admin' self._options['password'] = tools.config.get('admin_passwd', 'admin') @@ -138,7 +136,7 @@ def full_path(filename): return os.path.join(os.path.join(os.path.dirname(__file__), 'ui_suite'), filename) def load_tests(loader, base, _): - base.addTest(WebsiteUiSuite(full_path('dummy_test.js'), {})) + base.addTest(WebsiteUiSuite(full_path('dummy_test.js'), {}, 5.0)) base.addTest(WebsiteUiSuite(full_path('simple_dom_test.js'), { 'action': 'website.action_website_homepage' }, 60.0)) base.addTest(WebsiteUiSuite(full_path('homepage_test.js'), { 'action': 'website.action_website_homepage' }, 60.0)) return base From 7d7cada5d68fc485f6c6e49bc4b29d56cd018b01 Mon Sep 17 00:00:00 2001 From: "ddm@openerp.com" <> Date: Wed, 8 Jan 2014 11:18:57 +0100 Subject: [PATCH 02/49] Rename bzr revid: ddm@openerp.com-20140108101857-2tr49ax6qataoiw8 --- addons/website/tests/test_ui.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index 3a67f0ee5b4..a2909b00618 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -10,14 +10,14 @@ from openerp import tools def _exc_info_to_string(err, test): return err -class LineReader: +class Stream: def __init__(self, file_descriptor): self._file_descriptor = file_descriptor self._buffer = '' def fileno(self): return self._file_descriptor - + # TODO Rewrite & fix def readlines(self): data = os.read(self._file_descriptor, 4096) if not data: # EOF @@ -82,7 +82,7 @@ class WebsiteUiSuite(unittest.TestSuite): json.dumps(self._options) ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - readable = [LineReader(phantom.stdout.fileno())] + readable = [Stream(phantom.stdout.fileno())] try: output = [] From 3d96b4c2a38cc117068c89d55a7c2c21202752a5 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 8 Jan 2014 13:21:13 +0100 Subject: [PATCH 03/49] [IMP] website: snippets: add resize bar on snippet overlay; resising % 8px; remove size class bzr revid: chm@openerp.com-20140108122113-d2zcyaobkahixlpa --- addons/website/static/src/css/editor.css | 19 +- addons/website/static/src/css/editor.sass | 14 +- addons/website/static/src/css/website.css | 17 +- addons/website/static/src/css/website.sass | 15 +- .../static/src/js/website.snippets.editor.js | 176 ++++++++++-------- .../static/src/xml/website.snippets.xml | 1 + addons/website/views/snippets.xml | 34 ++-- 7 files changed, 156 insertions(+), 120 deletions(-) diff --git a/addons/website/static/src/css/editor.css b/addons/website/static/src/css/editor.css index f552465c8bc..79fcdb68ce0 100644 --- a/addons/website/static/src/css/editor.css +++ b/addons/website/static/src/css/editor.css @@ -432,6 +432,9 @@ ul.oe_menu_editor .disclose { } /* ---- SNIPPET MANIPULATOR ---- {{{ */ +.resize_editor_busy { + background-color: rgba(0,0,0,0.1); +} .oe_overlay { display: none; position: absolute; @@ -514,16 +517,28 @@ ul.oe_menu_editor .disclose { .oe_overlay .oe_handle.e:before { content: "\F061"; } -.oe_overlay .oe_handle.s { +.oe_overlay .oe_handle.s, .oe_overlay .oe_handle.size { top: auto; left: 2px; width: 100%; bottom: -4px; cursor: n-resize; } -.oe_overlay .oe_handle.s:before { +.oe_overlay .oe_handle.s:before, .oe_overlay .oe_handle.size:before { content: "\F063"; } +.oe_overlay .oe_handle.size { + border-style: dashed; + border-width: 0 0 1px 0; + border-color: rgba(0, 0, 0, 0.5); +} +.oe_overlay .oe_handle.size:before { + content: "Resize"; + width: 64px; + text-align: center; + margin-left: -32px; + margin-top: -4px; +} .oe_overlay .oe_handle.w { top: 2px; height: 100%; diff --git a/addons/website/static/src/css/editor.sass b/addons/website/static/src/css/editor.sass index 9def6bc7127..78af810448f 100644 --- a/addons/website/static/src/css/editor.sass +++ b/addons/website/static/src/css/editor.sass @@ -349,6 +349,8 @@ ul.oe_menu_editor /* ---- SNIPPET MANIPULATOR ---- {{{ */ +.resize_editor_busy + background-color: rgba(0,0,0,0.3) .oe_overlay display: none position: absolute @@ -403,7 +405,7 @@ ul.oe_menu_editor cursor: w-resize &:before content: "\F061" - .oe_handle.s + .oe_handle.s, .oe_handle.size top: auto left: 2px width: 100% @@ -411,6 +413,16 @@ ul.oe_menu_editor cursor: n-resize &:before content: "\F063" + .oe_handle.size + border-style: dashed + border-width: 0 0 1px 0 + border-color: rgba(0, 0, 0, 0.5) + &:before + content: "Resize" + width: 64px + text-align: center + margin-left: -32px + margin-top: -4px .oe_handle.w top: 2px height: 100% diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css index bf261cf905a..ca59f4c5697 100644 --- a/addons/website/static/src/css/website.css +++ b/addons/website/static/src/css/website.css @@ -334,20 +334,17 @@ ul.nav-stacked > li > a { } /* ---- SNIPPETS --- */ +[data-snippet-id],.colmd,.hr,.blockquote { + overflow: hidden; +} + +.carousel-inner { + height: 100%; +} .carousel-inner .item { height: 100%; background-size: 100%; } - -.carousel.oe_small .carousel-inner { - height: 200px; -} -.carousel.oe_medium .carousel-inner { - height: 300px; -} -.carousel.oe_big .carousel-inner { - height: 450px; -} .carousel .carousel-caption { left: auto; right: auto; diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass index ccd11d3396f..ab13d795465 100644 --- a/addons/website/static/src/css/website.sass +++ b/addons/website/static/src/css/website.sass @@ -242,18 +242,15 @@ ul.nav-stacked > li > a color: white /* ---- SNIPPETS --- */ +[data-snippet-id],.colmd,.hr,.blockquote + overflow: hidden -.carousel-inner .item +.carousel-inner height: 100% - background-size: 100% - + .item + height: 100% + background-size: 100% .carousel - &.oe_small .carousel-inner - height: 200px - &.oe_medium .carousel-inner - height: 300px - &.oe_big .carousel-inner - height: 450px .carousel-caption left: auto right: auto diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index 50975a7263d..33f38eaa6b4 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -181,6 +181,7 @@ 'top': pos.top - mt, 'left': pos.left }); + $el.find(".oe_handle.size").css("bottom", mb+'px'); }, show: function () { this.$el.removeClass("hidden"); @@ -678,17 +679,6 @@ }); - website.snippet.styleRegistry.size = website.snippet.StyleEditor.extend({ - select: function(event, np) { - this._super(event, np); - this.parent.parent.cover_target(this.$overlay, this.$target); - }, - preview: function (event, np) { - this._super(event, np); - this.parent.parent.cover_target(this.$overlay, this.$target); - } - }); - website.snippet.styleRegistry.background = website.snippet.StyleEditor.extend({ _get_bg: function () { return this.$target.css("background-image").replace(/url\(['"]*|['"]*\)|^none$/g, ""); @@ -879,7 +869,7 @@ } var Editor = website.snippet.styleRegistry[val['snippet-style-id']] || website.snippet.StyleEditor; var editor = new Editor(self, self.$target, val['snippet-style-id']); - $ul.prepend(editor.$el); + $ul.prepend(editor.$el.addClass("snippet-style-" + val['snippet-style-id'])); }); if ($ul.find("li").length) { @@ -973,96 +963,121 @@ if (!resize_values.s) $box.find(".oe_handle.s").remove(); if (!resize_values.e) $box.find(".oe_handle.e").remove(); if (!resize_values.w) $box.find(".oe_handle.w").remove(); + if (!resize_values.size) $box.find(".oe_handle.size").remove(); this.$overlay.append($box.find(".oe_handles").html()); this.$overlay.find(".oe_handle").on('mousedown', function (event){ - event.preventDefault(); + event.preventDefault(); - var $handle = $(this); + var $handle = $(this); - var resize_values = self.getSize(); - var compass = false; - var XY = false; - if ($handle.hasClass('n')) { - compass = 'n'; - XY = 'Y'; - } - else if ($handle.hasClass('s')) { - compass = 's'; - XY = 'Y'; - } - else if ($handle.hasClass('e')) { - compass = 'e'; - XY = 'X'; - } - else if ($handle.hasClass('w')) { - compass = 'w'; - XY = 'X'; - } + var resize_values = self.getSize(); + var compass = false; + var XY = false; + if ($handle.hasClass('n')) { + compass = 'n'; + XY = 'Y'; + } + else if ($handle.hasClass('s')) { + compass = 's'; + XY = 'Y'; + } + else if ($handle.hasClass('e')) { + compass = 'e'; + XY = 'X'; + } + else if ($handle.hasClass('w')) { + compass = 'w'; + XY = 'X'; + } + else if ($handle.hasClass('size')) { + compass = 'size'; + XY = 'Y'; + } - var resize = resize_values[compass]; - if (!resize) return; + var resize = resize_values[compass]; + if (!resize) return; + + if (compass === 'size') { + var grid = resize[0]; + var offset = self.$target.offset().top; + if (self.$target.css("background").match(/rgba\(0, 0, 0, 0\)/)) { + self.$target.addClass("resize_editor_busy"); + } + } else { + var xy = event['page'+XY]; var current = resize[2] || 0; _.each(resize[0], function (val, key) { if (self.$target.hasClass(val)) { current = key; } }); - - self.parent.editor_busy = true; - - var xy = event['page'+XY]; var begin = current; var beginClass = self.$target.attr("class"); var regClass = new RegExp("\\s*" + resize[0][begin].replace(/[-]*[0-9]+/, '[-]*[0-9]+'), 'g'); + } - var cursor = $handle.css("cursor")+'-important'; - var $body = $(document.body); - $body.addClass(cursor); + self.parent.editor_busy = true; - var body_mousemove = function (event){ - event.preventDefault(); - var dd = event['page'+XY] - xy + resize[1][begin]; - var next = current+1 === resize[1].length ? current : (current+1); - var prev = current ? (current-1) : 0; + var cursor = $handle.css("cursor")+'-important'; + var $body = $(document.body); + $body.addClass(cursor); - var change = false; - if (dd > (2*resize[1][next] + resize[1][current])/3) { - self.$target.attr("class", (self.$target.attr("class")||'').replace(regClass, '')); - self.$target.addClass(resize[0][next]); - current = next; - change = true; - } - if (prev != current && dd < (2*resize[1][prev] + resize[1][current])/3) { - self.$target.attr("class", (self.$target.attr("class")||'').replace(regClass, '')); - self.$target.addClass(resize[0][prev]); - current = prev; - change = true; - } + var body_mousemove = function (event){ + event.preventDefault(); + if (compass === 'size') { + var dy = event.pageY-offset; + dy = dy - dy%resize[0]; + if (dy <= 0) dy = resize[0]; + self.$target.css("height", dy+"px"); + self.on_resize(compass, beginClass, current); + self.parent.cover_target(self.$overlay, self.$target); + return; + } + var dd = event['page'+XY] - xy + resize[1][begin]; + var next = current+1 === resize[1].length ? current : (current+1); + var prev = current ? (current-1) : 0; - if (change) { - self.on_resize(compass, beginClass, current); - self.parent.cover_target(self.$overlay, self.$target); - } - }; + var change = false; + if (dd > (2*resize[1][next] + resize[1][current])/3) { + self.$target.attr("class", (self.$target.attr("class")||'').replace(regClass, '')); + self.$target.addClass(resize[0][next]); + current = next; + change = true; + } + if (prev != current && dd < (2*resize[1][prev] + resize[1][current])/3) { + self.$target.attr("class", (self.$target.attr("class")||'').replace(regClass, '')); + self.$target.addClass(resize[0][prev]); + current = prev; + change = true; + } - var body_mouseup = function(){ - $body.unbind('mousemove', body_mousemove); - $body.unbind('mouseup', body_mouseup); - $body.removeClass(cursor); - self.parent.editor_busy = false; - }; - $body.mousemove(body_mousemove); - $body.mouseup(body_mouseup); - }); + if (change) { + self.on_resize(compass, beginClass, current); + self.parent.cover_target(self.$overlay, self.$target); + } + }; + + var body_mouseup = function(){ + $body.unbind('mousemove', body_mousemove); + $body.unbind('mouseup', body_mouseup); + $body.removeClass(cursor); + self.parent.editor_busy = false; + self.$target.removeClass("resize_editor_busy"); + }; + $body.mousemove(body_mousemove); + $body.mouseup(body_mouseup); + }); }, getSize: function () { var grid = [0,4,8,16,32,48,64,92,128]; this.grid = { + // list of class (Array), grid (Array), default value (INT) n: [_.map(grid, function (v) {return 'mt'+v;}), grid], - s: [_.map(grid, function (v) {return 'mb'+v;}), grid] + s: [_.map(grid, function (v) {return 'mb'+v;}), grid], + size: [8] }; return this.grid; }, @@ -1089,6 +1104,8 @@ var grid = [-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11]; this.grid.w = [_.map(grid, function (v) {return 'col-md-offset-'+v;}), _.map(grid, function (v) {return width/12*v;}), 12]; + this.grid.s = null; + return this.grid; }, _drag_and_drop_after_insert_dropzone: function(){ @@ -1277,6 +1294,15 @@ this.$target.css("background-image", ""); this.$target.removeClass(this._class); }, + getSize: function () { + this._super(); + //this.grid.size = null; + return this.grid; + }, + load_style_options : function () { + this._super(); + $(".snippet-style-size li[data-class='']").remove(); + }, start : function () { var self = this; this._super(); diff --git a/addons/website/static/src/xml/website.snippets.xml b/addons/website/static/src/xml/website.snippets.xml index ecc3bb8cc38..ca5cf01705f 100644 --- a/addons/website/static/src/xml/website.snippets.xml +++ b/addons/website/static/src/xml/website.snippets.xml @@ -86,6 +86,7 @@
+
Margin resize
diff --git a/addons/website/views/snippets.xml b/addons/website/views/snippets.xml index 99bba707863..a11d2b4f722 100644 --- a/addons/website/views/snippets.xml +++ b/addons/website/views/snippets.xml @@ -25,7 +25,7 @@ Banner - @@ -85,8 +85,8 @@
-
- +
+

A Section Subtitle

@@ -277,7 +277,7 @@ Quotes Slider
-