From 0e03342f4d617445fb3e23122e3c190e39da6960 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Mon, 7 Apr 2014 13:34:23 +0200 Subject: [PATCH] Use miniColors from jqueryui plugin --- plugins/calendar/calendar.php | 9 +- plugins/calendar/drivers/calendar_driver.php | 10 -- .../calendar/drivers/kolab/kolab_driver.php | 28 ----- .../calendar/lib/js/jquery.miniColors.min.js | 16 --- .../skins/classic/images/minicolors-all.png | Bin 13370 -> 0 bytes .../classic/images/minicolors-handles.gif | Bin 421 -> 0 bytes .../skins/classic/jquery.miniColors.css | 106 ------------------ .../skins/larry/images/minicolors-all.png | 1 - .../skins/larry/images/minicolors-handles.gif | 1 - .../skins/larry/jquery.miniColors.css | 1 - 10 files changed, 3 insertions(+), 169 deletions(-) delete mode 100644 plugins/calendar/lib/js/jquery.miniColors.min.js delete mode 100644 plugins/calendar/skins/classic/images/minicolors-all.png delete mode 100644 plugins/calendar/skins/classic/images/minicolors-handles.gif delete mode 100644 plugins/calendar/skins/classic/jquery.miniColors.css delete mode 120000 plugins/calendar/skins/larry/images/minicolors-all.png delete mode 120000 plugins/calendar/skins/larry/images/minicolors-handles.gif delete mode 120000 plugins/calendar/skins/larry/jquery.miniColors.css diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 98c7b584..19aa4bdb 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -294,7 +294,7 @@ class calendar extends rcube_plugin $this->rc->output->set_env('timezone', $this->timezone->getName()); $this->rc->output->set_env('calendar_driver', $this->rc->config->get('calendar_driver'), false); $this->rc->output->set_env('calendar_resources', (bool)$this->rc->config->get('calendar_resources_driver')); - $this->rc->output->set_env('mscolors', $this->driver->get_color_values()); + $this->rc->output->set_env('mscolors', jqueryui::get_color_values()); $this->rc->output->set_env('identities-selector', $this->ui->identity_select(array('id' => 'edit-identities-list'))); $view = get_input_value('view', RCUBE_INPUT_GPC); @@ -557,11 +557,8 @@ class calendar extends rcube_plugin }); ', 'docready'); - // include color picker - $this->include_script('lib/js/jquery.miniColors.min.js'); - $this->include_stylesheet($this->local_skin_path() . '/jquery.miniColors.css'); - $this->rc->output->set_env('mscolors', $this->driver->get_color_values()); - $this->rc->output->add_script('$("input.colors").miniColors({ colorValues:rcmail.env.mscolors })', 'docready'); + // load miniColors js/css files + jqueryui::miniColors(); } // virtual birthdays calendar diff --git a/plugins/calendar/drivers/calendar_driver.php b/plugins/calendar/drivers/calendar_driver.php index 5c88ed17..d883f18c 100644 --- a/plugins/calendar/drivers/calendar_driver.php +++ b/plugins/calendar/drivers/calendar_driver.php @@ -404,16 +404,6 @@ abstract class calendar_driver return $html; } - /** - * Return a (limited) list of color values to be used for calendar and category coloring - * - * @return mixed List for colors as hex values or false if no presets should be shown - */ - public function get_color_values() - { - return false; - } - /** * Compose a list of birthday events from the contact records in the user's address books. * diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index ea168111..caa4043f 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -1292,32 +1292,4 @@ class kolab_driver extends calendar_driver return $plugin['form']['sharing']['content']; } - - - /** - * Return a (limited) list of color values to be used for calendar and category coloring - * - * @return mixed List for colors as hex values or false if no presets should be shown - */ - public function get_color_values() - { - // selection from http://msdn.microsoft.com/en-us/library/aa358802%28v=VS.85%29.aspx - return array('000000','006400','2F4F4F','800000','808000','008000', - '008080','000080','800080','4B0082','191970','8B0000','008B8B', - '00008B','8B008B','556B2F','8B4513','228B22','6B8E23','2E8B57', - 'B8860B','483D8B','A0522D','0000CD','A52A2A','00CED1','696969', - '20B2AA','9400D3','B22222','C71585','3CB371','D2691E','DC143C', - 'DAA520','00FA9A','4682B4','7CFC00','9932CC','FF0000','FF4500', - 'FF8C00','FFA500','FFD700','FFFF00','9ACD32','32CD32','00FF00', - '00FF7F','00FFFF','5F9EA0','00BFFF','0000FF','FF00FF','808080', - '708090','CD853F','8A2BE2','778899','FF1493','48D1CC','1E90FF', - '40E0D0','4169E1','6A5ACD','BDB76B','BA55D3','CD5C5C','ADFF2F', - '66CDAA','FF6347','8FBC8B','DA70D6','BC8F8F','9370DB','DB7093', - 'FF7F50','6495ED','A9A9A9','F4A460','7B68EE','D2B48C','E9967A', - 'DEB887','FF69B4','FA8072','F08080','EE82EE','87CEEB','FFA07A', - 'F0E68C','DDA0DD','90EE90','7FFFD4','C0C0C0','87CEFA','B0C4DE', - '98FB98','ADD8E6','B0E0E6','D8BFD8','EEE8AA','AFEEEE','D3D3D3', - 'FFDEAD'); - } - } diff --git a/plugins/calendar/lib/js/jquery.miniColors.min.js b/plugins/calendar/lib/js/jquery.miniColors.min.js deleted file mode 100644 index cd08974a..00000000 --- a/plugins/calendar/lib/js/jquery.miniColors.min.js +++ /dev/null @@ -1,16 +0,0 @@ -// http://plugins.jquery.com/project/jQueryMiniColors -jQuery&&function(d){d.extend(d.fn,{miniColors:function(j,k){var x=function(a,b){var e=l(a.val());e||(e="FFFFFF");var c=p(e),e=d('');e.insertAfter(a);a.addClass("miniColors").attr("maxlength",7).attr("autocomplete","off");a.data("trigger",e);a.data("hsb",c);b.change&&a.data("change",b.change);b.readonly&&a.attr("readonly",true);b.disabled&&q(a);b.colorValues&&a.data("colorValues",b.colorValues);e.bind("click.miniColors",function(b){b.preventDefault(); -a.trigger("focus")});a.bind("focus.miniColors",function(){w(a)});a.bind("blur.miniColors",function(){var b=l(a.val());a.val(b?"#"+b:"")});a.bind("keydown.miniColors",function(b){b.keyCode===9&&i(a)});a.bind("keyup.miniColors",function(){var b=a.val().replace(/[^A-F0-9#]/ig,"");a.val(b);r(a)||a.data("trigger").css("backgroundColor","#FFF")});a.bind("paste.miniColors",function(){setTimeout(function(){a.trigger("keyup")},5)})},q=function(a){i(a);a.attr("disabled",true);a.data("trigger").css("opacity", -0.5)},w=function(a){if(a.attr("disabled"))return false;i();var b=d('
');b.append('
');b.append('
');b.css({top:a.is(":visible")?a.offset().top+a.outerHeight():a.data("trigger").offset().top+a.data("trigger").outerHeight(),left:a.is(":visible")?a.offset().left:a.data("trigger").offset().left, -display:"none"}).addClass(a.attr("class"));var e=a.data("colorValues");if(e&&e.length){var c,f='
',g;for(g in e)c=l(e[g]),f+='
';f+="
";b.append(f);c=Math.ceil(e.length/7)*24;b.css("width",b.width()+c+5+"px");b.find(".miniColors-presets").css("width",c+"px")}c=a.data("hsb");b.find(".miniColors-colors").css("backgroundColor","#"+n(m({h:c.h,s:100,b:100})));(f=a.data("colorPosition"))|| -(f=s(c));b.find(".miniColors-colorPicker").css("top",f.y+"px").css("left",f.x+"px");(f=a.data("huePosition"))||(f=t(c));b.find(".miniColors-huePicker").css("top",f.y+"px");a.data("selector",b);a.data("huePicker",b.find(".miniColors-huePicker"));a.data("colorPicker",b.find(".miniColors-colorPicker"));a.data("mousebutton",0);d("BODY").append(b);b.fadeIn(100);b.bind("selectstart",function(){return false});d(document).bind("mousedown.miniColors",function(b){a.data("mousebutton",1);d(b.target).parents().andSelf().hasClass("miniColors-colors")&& -(b.preventDefault(),a.data("moving","colors"),u(a,b));d(b.target).parents().andSelf().hasClass("miniColors-hues")&&(b.preventDefault(),a.data("moving","hues"),v(a,b));d(b.target).parents().andSelf().hasClass("miniColors-selector")?b.preventDefault():d(b.target).parents().andSelf().hasClass("miniColors")||i(a)});d(document).bind("mouseup.miniColors",function(){a.data("mousebutton",0);a.removeData("moving")});d(document).bind("mousemove.miniColors",function(b){a.data("mousebutton")===1&&(a.data("moving")=== -"colors"&&u(a,b),a.data("moving")==="hues"&&v(a,b))});e&&(b.find(".miniColors-colorPreset").click(function(){a.val(d(this).attr("rel"));r(a)}),b.find('.miniColors-presets div[rel="'+a.val().replace(/#/,"")+'"]').addClass("miniColors-colorPreset-active"))},i=function(a){a||(a=".miniColors");d(a).each(function(){var a=d(this).data("selector");d(this).removeData("selector");d(a).fadeOut(100,function(){d(this).remove()})});d(document).unbind("mousedown.miniColors");d(document).unbind("mousemove.miniColors")}, -u=function(a,b){var e=a.data("colorPicker");e.hide();var c={x:b.clientX-a.data("selector").find(".miniColors-colors").offset().left+d(document).scrollLeft()-5,y:b.clientY-a.data("selector").find(".miniColors-colors").offset().top+d(document).scrollTop()-5};if(c.x<=-5)c.x=-5;if(c.x>=144)c.x=144;if(c.y<=-5)c.y=-5;if(c.y>=144)c.y=144;a.data("colorPosition",c);e.css("left",c.x).css("top",c.y).show();e=Math.round((c.x+5)*0.67);e<0&&(e=0);e>100&&(e=100);c=100-Math.round((c.y+5)*0.67);c<0&&(c=0);c>100&& -(c=100);var f=a.data("hsb");f.s=e;f.b=c;o(a,f,true)},v=function(a,b){var e=a.data("huePicker");e.hide();var c={y:b.clientY-a.data("selector").find(".miniColors-colors").offset().top+d(document).scrollTop()-1};if(c.y<=-1)c.y=-1;if(c.y>=149)c.y=149;a.data("huePosition",c);e.css("top",c.y).show();e=Math.round((150-c.y-1)*2.4);e<0&&(e=0);e>360&&(e=360);c=a.data("hsb");c.h=e;o(a,c,true)},o=function(a,b,e){a.data("hsb",b);var c=n(m(b));e&&a.val("#"+c);a.data("trigger").css("backgroundColor","#"+c);a.data("selector")&& -a.data("selector").find(".miniColors-colors").css("backgroundColor","#"+n(m({h:b.h,s:100,b:100})));a.data("change")&&a.data("change").call(a,"#"+c,m(b));a.data("colorValues")&&(a.data("selector").find(".miniColors-colorPreset-active").removeClass("miniColors-colorPreset-active"),a.data("selector").find('.miniColors-presets div[rel="'+c+'"]').addClass("miniColors-colorPreset-active"))},r=function(a){var b=l(a.val());if(!b)return false;var b=p(b),e=a.data("hsb");if(b.h===e.h&&b.s===e.s&&b.b===e.b)return true; -e=s(b);d(a.data("colorPicker")).css("top",e.y+"px").css("left",e.x+"px");e=t(b);d(a.data("huePicker")).css("top",e.y+"px");o(a,b,false);return true},s=function(a){var b=Math.ceil(a.s/0.67);b<0&&(b=0);b>150&&(b=150);a=150-Math.ceil(a.b/0.67);a<0&&(a=0);a>150&&(a=150);return{x:b-5,y:a-5}},t=function(a){a=150-a.h/2.4;a<0&&(h=0);a>150&&(h=150);return{y:a-1}},l=function(a){a=a.replace(/[^A-Fa-f0-9]/,"");a.length==3&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]);return a.length===6?a:null},m=function(a){var b,e,c; -b=Math.round(a.h);var d=Math.round(a.s*255/100),a=Math.round(a.b*255/100);if(d==0)b=e=c=a;else{var d=(255-d)*a/255,g=(a-d)*(b%60)/60;b==360&&(b=0);b<60?(b=a,c=d,e=d+g):b<120?(e=a,c=d,b=a-g):b<180?(e=a,b=d,c=d+g):b<240?(c=a,b=d,e=a-g):b<300?(c=a,e=d,b=d+g):b<360?(b=a,e=d,c=a-g):c=e=b=0}return{r:Math.round(b),g:Math.round(e),b:Math.round(c)}},n=function(a){var b=[a.r.toString(16),a.g.toString(16),a.b.toString(16)];d.each(b,function(a,c){c.length==1&&(b[a]="0"+c)});return b.join("")},p=function(a){var b= -a,b=parseInt(b.indexOf("#")>-1?b.substring(1):b,16),a=b>>16,d=(b&65280)>>8;b&=255;var c={h:0,s:0,b:0},f=Math.min(a,d,b),g=Math.max(a,d,b),f=g-f;c.b=g;c.s=g!=0?255*f/g:0;c.h=c.s!=0?a==g?(d-b)/f:d==g?2+(b-a)/f:4+(a-d)/f:-1;c.h*=60;c.h<0&&(c.h+=360);c.s*=100/255;c.b*=100/255;if(c.s===0)c.h=360;return c};switch(j){case "readonly":return d(this).each(function(){d(this).attr("readonly",k)}),d(this);case "disabled":return d(this).each(function(){if(k)q(d(this));else{var a=d(this);a.attr("disabled",false); -a.data("trigger").css("opacity",1)}}),d(this);case "value":return d(this).each(function(){d(this).val(k).trigger("keyup")}),d(this);case "destroy":return d(this).each(function(){var a=d(this);i();a=d(a);a.data("trigger").remove();a.removeAttr("autocomplete");a.removeData("trigger");a.removeData("selector");a.removeData("hsb");a.removeData("huePicker");a.removeData("colorPicker");a.removeData("mousebutton");a.removeData("moving");a.unbind("click.miniColors");a.unbind("focus.miniColors");a.unbind("blur.miniColors"); -a.unbind("keyup.miniColors");a.unbind("keydown.miniColors");a.unbind("paste.miniColors");d(document).unbind("mousedown.miniColors");d(document).unbind("mousemove.miniColors")}),d(this);default:return j||(j={}),d(this).each(function(){d(this)[0].tagName.toLowerCase()==="input"&&(d(this).data("trigger")||x(d(this),j,k))}),d(this)}}})}(jQuery); diff --git a/plugins/calendar/skins/classic/images/minicolors-all.png b/plugins/calendar/skins/classic/images/minicolors-all.png deleted file mode 100644 index 001ed888c232598a57e83ea746ecab7b6772674d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13370 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 P6*7I245