summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/jQuery.transfo.js
diff options
context:
space:
mode:
authorchm@openerp.com <>2014-04-07 12:24:19 +0200
committerchm@openerp.com <>2014-04-07 12:24:19 +0200
commitc7a16d134b5cdc418ccba7110dd3dbcefed39424 (patch)
tree3a2739acb777dacbfff06f86f5f87d2eadb623b3 /addons/website/static/src/js/jQuery.transfo.js
parentcdf4636dcefc3e2fd659774b43f72c5a3c75fa61 (diff)
[FIX] website: media editor, editor position
bzr revid: chm@openerp.com-20140407102419-u5lrqefulj7c8ta0
Diffstat (limited to 'addons/website/static/src/js/jQuery.transfo.js')
-rw-r--r--addons/website/static/src/js/jQuery.transfo.js49
1 files changed, 36 insertions, 13 deletions
diff --git a/addons/website/static/src/js/jQuery.transfo.js b/addons/website/static/src/js/jQuery.transfo.js
index 5d0c8dc32b7..30580d84f78 100644
--- a/addons/website/static/src/js/jQuery.transfo.js
+++ b/addons/website/static/src/js/jQuery.transfo.js
@@ -50,6 +50,15 @@ OTHER DEALINGS IN THE SOFTWARE.
});
},
+ reset : function() {
+ return this.each(function() {
+ var $this = $(this);
+ if ($this.data('transfo')) {
+ _reset($this);
+ }
+ });
+ },
+
settings : function() {
if(this.length > 1) {
this.map(function () {
@@ -84,12 +93,13 @@ OTHER DEALINGS IN THE SOFTWARE.
function _init ($this, settings) {
var transfo = {};
$this.data('transfo', transfo);
+ transfo.settings = settings;
// generate all the controls markup
var css = "box-sizing: border-box; position: absolute; background-color: #fff; border: 1px solid #ccc; width: 8px; height: 8px; margin-left: -4px; margin-top: -4px;";
transfo.$markup = $(''
+ '<div class="transfo-controls">'
- + '<div style="cursor: crosshair; position: absolute; margin: -18px; top: -12px; right: -12px; padding: 1px 0 0 1px;" class="transfo-rotator">'
+ + '<div style="cursor: crosshair; position: absolute; margin: -30px; top: 0; right: 0; padding: 1px 0 0 1px;" class="transfo-rotator">'
+ '<span class="fa-stack fa-lg">'
+ '<i class="fa fa-circle fa-stack-2x"></i>'
+ '<i class="fa fa-repeat fa-stack-1x fa-inverse"></i>'
@@ -213,6 +223,7 @@ OTHER DEALINGS IN THE SOFTWARE.
else if (event.pageY < center.top && event.pageX < center.left) ang += 360;
ang -= dang;
+ if (settings.scaley < 0 && settings.scalex < 0) ang += 180;
if (!event.ctrlKey) {
settings.angle = Math.round(ang / transfo.settings.rotationStep) * transfo.settings.rotationStep;
@@ -257,8 +268,11 @@ OTHER DEALINGS IN THE SOFTWARE.
if (transfo.active.type.indexOf("r") != -1) {
settings.scalex = - dx / (settings.width/2);
}
- if (settings.scaley < 0.05) settings.scaley = 0.05;
- if (settings.scalex < 0.05) settings.scalex = 0.05;
+ if (settings.scaley > 0 && settings.scaley < 0.05) settings.scaley = 0.05;
+ if (settings.scalex > 0 && settings.scalex < 0.05) settings.scalex = 0.05;
+ if (settings.scaley < 0 && settings.scaley > -0.05) settings.scaley = -0.05;
+ if (settings.scalex < 0 && settings.scalex > -0.05) settings.scalex = -0.05;
+
if (event.shiftKey &&
(transfo.active.type === "tl" || transfo.active.type === "bl" ||
transfo.active.type === "tr" || transfo.active.type === "br")) {
@@ -291,11 +305,11 @@ OTHER DEALINGS IN THE SOFTWARE.
trans = true;
transform += " translateY("+settings.translatey+"px) ";
}
- if (settings.scalex != 1 && settings.scalex > 0) {
+ if (settings.scalex != 1) {
trans = true;
transform += " scaleX("+settings.scalex+") ";
}
- if (settings.scaley != 1 && settings.scaley > 0){
+ if (settings.scaley != 1){
trans = true;
transform += " scaleY("+settings.scaley+") ";
}
@@ -326,10 +340,16 @@ OTHER DEALINGS IN THE SOFTWARE.
var settings = Object.create(transfo.settings);
var w = parseFloat(transfo.settings.css.width);
var h = parseFloat(transfo.settings.css.height);
- var width = settings.scalex * w;
- var height = settings.scaley * h;
- var top = settings.pos.top + (1-settings.scaley) * h / 2;
- var left = settings.pos.left + (1-settings.scalex) * w / 2;
+ var width = Math.abs(settings.scalex) * w;
+ var height = Math.abs(settings.scaley) * h;
+ var top = settings.pos.top + (1-Math.abs(settings.scaley)) * h / 2;
+ var left = settings.pos.left + (1-Math.abs(settings.scalex)) * w / 2;
+
+ var $rot = transfo.$markup.find(".transfo-rotator");
+ if (settings.scalex > 0) $rot.css({"right": "0px", "left": "auto"});
+ else $rot.css({"right": "auto", "left": "0px"});
+ if (settings.scaley > 0) $rot.css({"top": "0px", "bottom": "auto"});
+ else $rot.css({"top": "auto", "bottom": "0px"});
settings.scalex = settings.scaley = 1;
@@ -354,11 +374,14 @@ OTHER DEALINGS IN THE SOFTWARE.
}
function _destroy ($this) {
- var transfo = $this.data('transfo');
- _setCss($this, transfo.settings.style, transfo.settings);
- $this.insertAfter(transfo.$wrap);
- transfo.$markup.remove();
+ $this.data('transfo').$markup.remove();
$this.removeData('transfo');
}
+ function _reset ($this) {
+ var transfo = $this.data('transfo');
+ _destroy($this);
+ $this.transfo(transfo.settings);
+ }
+
})(jQuery);