Ce commit crée un bug (bien malgrès son auteur) :
Sous firefox, voici le résultat :
Erreur : function (container, callback) {var fb = this;$(container).html("<div
class=\"farbtastic\"><div class=\"color\"></div><div
class=\"wheel\"></div><div class=\"overlay\"></div><div class=\"h-marker
marker\"></div><div class=\"sl-marker marker\"></div></div>");var e =
$(".farbtastic", container);fb.wheel = $(".wheel",
container).get(0);fb.radius = 84;fb.square = 100;fb.width = 194;if
(navigator.appVersion.match(/MSIE [0-6]\./)) {$("*", e).each(function () {if
(this.currentStyle.backgroundImage != "none") {var image =
this.currentStyle.backgroundImage;image =
this.currentStyle.backgroundImage.substring(5, image.length - 2);
$(this).css({backgroundImage: "none",
filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,
sizingMethod=crop, src='" + image + "')"});}});}fb.linkTo = function
(callback) {if (typeof fb.callback == "object")
{$(fb.callback).unbind("keyup", fb.updateValue);}fb.color = null;if (typeof
callback == "function") {fb.callback = callback;} else if (typeof callback
== "object" || typeof callback == "string") {fb.callback =
$(callback);fb.callback.bind("keyup", fb.updateValue);if
(fb.callback.get(0).value) {fb.setColor(fb.callback.get(0).value);}}return
this;};fb.updateValue = function (event) {if (this.value && this.value !=
fb.color) {fb.setColor(this.value);}};fb.setColor = function (color) {var
unpack = fb.unpack(color);if (fb.color != color && unpack) {fb.color =
color;fb.rgb = unpack;fb.hsl = fb.RGBToHSL(fb.rgb);fb.updateDisplay();}return
this;};fb.setHSL = function (hsl) {fb.hsl = hsl;fb.rgb =
fb.HSLToRGB(hsl);fb.color = fb.pack(fb.rgb);fb.updateDisplay();return
this;};fb.widgetCoords = function (event) {var x, y;var el = event.target ||
event.srcElement;var reference = fb.wheel;if (typeof
event.offsetX != "undefined") {var pos = {x: event.offsetX, y:
event.offsetY};var e = el;while (e) {e.mouseX = pos.x;e.mouseY = pos.y;pos.x
+= e.offsetLeft;pos.y += e.offsetTop;e = e.offsetParent;}var e =
reference;var offset = {x: 0, y: 0};while (e) {if (typeof
e.mouseX != "undefined") {x = e.mouseX - offset.x;y = e.mouseY -
offset.y;break;}offset.x += e.offsetLeft;offset.y += e.offsetTop;e =
e.offsetParent;}e = el;while (e) {e.mouseX = undefined;e.mouseY = undefined;e
= e.offsetParent;}} else {var pos = fb.absolutePosition(reference);x =
(event.pageX || 0 * (event.clientX + $("html").get(0).scrollLeft)) - pos.x;y
= (event.pageY || 0 * (event.clientY + $("html").get(0).scrollTop)) -
pos.y;}return {x: x - fb.width / 2, y: y - fb.width / 2};};fb.mousedown =
function (event) {if (!document.dragging) {$(document).bind("mousemove",
fb.mousemove).bind("mouseup", fb.mouseup);document.dragging = true;}var pos =
fb.widgetCoords(event);fb.circleDrag = Math.max(Math.abs(pos.x),
Math.abs(pos.y)) * 2 > fb.square;fb.mousemove(event);return
false;};fb.mousemove = function (event) {var pos = fb.widgetCoords(event);if
(fb.circleDrag) {var hue = Math.atan2(pos.x, - pos.y) / 6.28;if (hue < 0)
{hue += 1;}fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);} else {var sat =
Math.max(0, Math.min(1, - (pos.x / fb.square) + 0.5));var lum = Math.max(0,
Math.min(1, - (pos.y / fb.square) + 0.5));fb.setHSL([fb.hsl[0], sat,
lum]);}return false;};fb.mouseup = function ()
{$(document).unbind("mousemove", fb.mousemove);$(document).unbind("mouseup",
fb.mouseup);document.dragging = false;};fb.updateDisplay = function () {var
angle = fb.hsl[0] * 6.28;$(".h-marker", e).css({left:
Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + "px", top:
Math.round(- Math.cos(angle) * fb.radius + fb.width / 2) + "px"});
$(".sl-marker", e).css({left: Math.round(fb.square * (0.5 - fb.hsl[1]) +
fb.width / 2) + "px", top: Math.round(fb.square * (0.5 - fb.hsl[2]) +
fb.width / 2) + "px"});$(".color", e).css("backgroundColor",
fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));if (typeof fb.callback
== "object") {$(fb.callback).css({backgroundColor: fb.color, color: fb.hsl[2]
0.5 ? "#000" : "#fff"});$(fb.callback).each(function () {if (this.value &&
this.value != fb.color) {this.value = fb.color;}});} else if (typeof
fb.callback == "function") {fb.callback.call(fb,
fb.color);}};fb.absolutePosition = function (el) {var r = {x: el.offsetLeft,
y: el.offsetTop};if (el.offsetParent) {var tmp =
fb.absolutePosition(el.offsetParent);r.x += tmp.x;r.y += tmp.y;}return
r;};fb.pack = function (rgb) {var r = Math.round(rgb[0] * 255);var g =
Math.round(rgb[1] * 255);var b = Math.round(rgb[2] * 255);return "#" + (r <
16 ? "0" : "") + r.toString(16) + (g < 16 ? "0" : "") + g.toString(16) + (b <
16 ? "0" : "") + b.toString(16);};fb.unpack = function (color) {if
(color.length == 7) {return [parseInt("0x" + color.substring(1, 3)) / 255,
parseInt("0x" + color.substring(3, 5)) / 255, parseInt("0x" +
color.substring(5, 7)) / 255];} else if (color.length == 4) {return
[parseInt("0x" + color.substring(1, 2)) / 15, parseInt("0x" +
color.substring(2, 3)) / 15, parseInt("0x" + color.substring(3, 4)) /
15];}};fb.HSLToRGB = function (hsl) {var m1, m2, r, g, b;var h = hsl[0], s =
hsl[1], l = hsl[2];m2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s;m1 = l * 2 -
m2;return [this.hueToRGB(m1, m2, h + 0.33333), this.hueToRGB(m1, m2, h),
this.hueToRGB(m1, m2, h - 0.33333)];};fb.hueToRGB = function (m1, m2, h) {h =
(h < 0) ? h + 1 : (h > 1) ? h - 1 : h;if (h * 6 < 1) {return m1 + (m2 - m1) *
h * 6;}if (h * 2 < 1) {return m2;}if (h * 3 < 2) {return m1 + (m2 - m1) *
(0.66666 - h) * 6;}return m1;};fb.RGBToHSL = function (rgb) {var min, max,
delta, h, s, l;var r = rgb[0], g = rgb[1], b = rgb[2];min = Math.min(r,
Math.min(g, b));max = Math.max(r, Math.max(g, b));delta = max - min;l = (min
+ max) / 2;s = 0;if (l > 0 && l < 1) {s = delta / (l < 0.5 ? 2 * l : 2 - 2 *
l);}h = 0;if (delta > 0) {if (max == r && max != g) {h += (g - b) / delta;}if
(max == g && max != b) {h += (2 + (b - r) / delta);}if (max == b && max != r)
{h += (4 + (r - g) / delta);}h /= 6;}return [h, s, l];};$("*",
e).mousedown(fb.mousedown);fb.setColor("#000000");if (callback)
{fb.linkTo(callback);}}(function ($) {$(document).ready(function ()
{init_palette();onAjaxLoad(init_palette);});
function init_palette() {$("input.palette").each(function (i, palette)
{$(palette).css("background-color", $(palette).attr("value"));palette.id =
palid(palette);$(this).focus(function () {$(".colorpicker").empty().remove();
$(palette).after("<div class=\"colorpicker\"><div class=\"colorpicker_close\"
title=\"Fermer la palette\"> x </div><div
class=\"colorpicker_bar\">Palette</div><div
id=\"colorpicker\"></div></div>");$.farbtastic("#colorpicker", palette);
$(".colorpicker_close").hover(function () {$(this).addClass("hover");},
function () {$(this).removeClass("hover");}).click(function ()
{$(".colorpicker").empty().remove();});});$(this).blur(function ()
{$(".colorpicker").empty().remove();});});}
function palid(element) {if (!$(element).attr("id")) {var newid =
parseInt(10000 + 10000 * Math.random());return newid;}return
$(element).attr("id");}
}) is not a function
Fichier source :
http://localhost/spip/2.0.8/local/cache-js/d3aa6a280b3cd725d2e5d3fab578ed6e.js
Ligne : 6288
Comme on voit, ce bug se produit quand les scripts sont compactés (ici avec
spip 2.0.8), à cet endroit :
fb.linkTo(callback);}}(function ($) {$(document).ready(function ()
{init_palette();
C'est ";}}(" qui pose problème, et ce en raison d'une toute petite différence
entre farbtastic 1.3 et 1.3.1 : un ";" à la fin !!!
Le correctif est donc simplissime : encapsuler entre accolades le code de
palette2.js.html
Je le commite.
Daniel
Le Thursday 21 May 2009 01:35:11 kent1@arscenic.info, vous avez écrit :
Author: kent1@arscenic.info
Date: Thu May 21 01:35:09 2009
New Revision: 28737Log:
Utilisation de la dernière version de la lib farbtastic (incrément de
version du plugin + on change de lien)On change la méthode d'affichage de la palette qui était sur le click en la
passant en focus (j'affiche) et blur (je cache)Un bug de fermeture de fonction dans la lib farbtastic a été réparé donc le
";" en début de fichier ne semble plus utileModified:
_plugins_/_stable_/palette/javascript/palette2.js.html
_plugins_/_stable_/palette/plugin.xmlModified: _plugins_/_stable_/palette/javascript/palette2.js.html
=== --- _plugins_/_stable_/palette/javascript/palette2.js.html (original)
+++ _plugins_/_stable_/palette/javascript/palette2.js.html Thu May 21
01:35:09 2009 @@ -1,4 +1,3 @@
-;
(function($){
$(document).ready(
function() {
@@ -12,15 +11,19 @@
function(i, palette){
$(palette).css("background-color", $(palette).attr("value"));
palette.id = palid(palette);
- palette.onclick = function(e) {
+ $(this).focus(function(){
$(".colorpicker").empty().remove();
$(palette)
.after('<div class="colorpicker"><div class="colorpicker_close"
title="<:palette:fermer:>"> x </div><div
class="colorpicker_bar"><:palette:palette:></div><div
id="colorpicker"></div></div>'); $.farbtastic('#colorpicker', palette);
$(".colorpicker_close")
.hover(function() {$(this).addClass("hover");}, function(){
$(this).removeClass("hover");}) - .click(function()
{$(".colorpicker").empty().remove();});
- };
+ .click(function() {$(".colorpicker").empty().remove();
+ });
+ });
+ $(this).blur(function(){
+ $(".colorpicker").empty().remove();
+ });
}
);
};Modified: _plugins_/_stable_/palette/plugin.xml
=== --- _plugins_/_stable_/palette/plugin.xml (original)
+++ _plugins_/_stable_/palette/plugin.xml Thu May 21 01:35:09 2009
@@ -4,7 +4,7 @@
_ © 2008 - <multi>[fr]Distribué sous licence[en]Released under
license[de]Vertrieb unter Lizenz</multi> GNU/LGPL </auteur>
<version>
- 1.2
+ 1.2.1
</version>
<etat>
stable
@@ -31,6 +31,6 @@
<inclure>palette_pipeline.php</inclure>
</pipeline>
<necessite id="SPIP" version="[2.0.0;]" />
- <necessite id="lib:farbtastic_1_3"
src="http://kent1.sklunk.net/IMG/zip/farbtastic_1_3.zip" /> + <necessite
id="lib:farbtastic_1_3_1"
src="http://kent1.sklunk.net/IMG/zip/farbtastic_1_3_1.zip" /> <utilise
id="cfg" version="[1.10.4;]" />
</plugin>_______________________________________________
Spip-zone-commit@rezo.net -
http://listes.rezo.net/mailman/listinfo/spip-zone-commit
--
Daniel FAIVRE
Expert en géomatique