Merge branch 'dev/drop-legacy-browsers'
@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "roundcube/jqueryui",
|
||||
"type": "roundcube-plugin",
|
||||
"description": "Plugin adds the complete jQuery-UI library including the smoothness theme to Roundcube. This allows other plugins to use jQuery-UI without having to load their own version. The benefit of using one central jQuery-UI is that we wont run into problems of conflicting jQuery libraries being loaded. All plugins that want to use jQuery-UI should use this plugin as a requirement.",
|
||||
"license": "GPLv3+",
|
||||
"version": "1.10.4",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Thomas Bruederli",
|
||||
"email": "roundcube@gmail.com",
|
||||
"role": "Lead"
|
||||
}
|
||||
],
|
||||
"repositories": [
|
||||
{
|
||||
"type": "composer",
|
||||
"url": "http://plugins.roundcube.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"roundcube/plugin-installer": ">=0.1.3"
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/**
|
||||
* jQuery MiniColors: A tiny color picker built on jQuery
|
||||
*
|
||||
* @source https://github.com/claviska/jquery-minicolors/blob/master/jquery.minicolors.js
|
||||
*
|
||||
* @licstart The following is the entire license notice for the
|
||||
* JavaScript code in this file.
|
||||
*
|
||||
* Copyright Cory LaViska for A Beautiful Site, LLC. (http://www.abeautifulsite.net/)
|
||||
*
|
||||
* Licensed under the MIT licenses
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* @licend The above is the entire license notice
|
||||
* for the JavaScript code in this file.
|
||||
*/
|
||||
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('<a class="miniColors-trigger" style="background-color: #'+e+'" href="#"></a>');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('<div class="miniColors-selector"></div>');b.append('<div class="miniColors-colors" style="background-color: #FFF;"><div class="miniColors-colorPicker"></div></div>');b.append('<div class="miniColors-hues"><div class="miniColors-huePicker"></div></div>');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")).appendTo(d("BODY"));;var e=a.data("colorValues");if(e&&e.length){var c,f='<div class="miniColors-presets">',g;for(g in e)c=l(e[g]),f+='<div class="miniColors-colorPreset" style="background-color:#'+c+'" rel="'+c+'"></div>';f+="</div>";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);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);
|
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 180 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 212 B |
Before Width: | Height: | Size: 119 B |
Before Width: | Height: | Size: 114 B |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 421 B |
Before Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 6.2 KiB |
@ -1,106 +0,0 @@
|
||||
.miniColors-trigger {
|
||||
height: 22px;
|
||||
width: 22px;
|
||||
background: url('images/minicolors-all.png') -170px 0 no-repeat;
|
||||
vertical-align: middle;
|
||||
margin: 0 .25em;
|
||||
display: inline-block;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.miniColors-selector {
|
||||
position: absolute;
|
||||
width: 175px;
|
||||
height: 150px;
|
||||
background: #FFF;
|
||||
border: solid 1px #BBB;
|
||||
-moz-box-shadow: 0 0 6px rgba(0, 0, 0, .25);
|
||||
-webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .25);
|
||||
box-shadow: 0 0 6px rgba(0, 0, 0, .25);
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
padding: 5px;
|
||||
z-index: 999999;
|
||||
}
|
||||
|
||||
.miniColors-selector.black {
|
||||
background: #000;
|
||||
border-color: #000;
|
||||
}
|
||||
|
||||
.miniColors-colors {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 5px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
background: url('images/minicolors-all.png') top left no-repeat;
|
||||
cursor: crosshair;
|
||||
}
|
||||
|
||||
.miniColors-hues {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 160px;
|
||||
width: 20px;
|
||||
height: 150px;
|
||||
background: url('images/minicolors-all.png') -150px 0 no-repeat;
|
||||
cursor: crosshair;
|
||||
}
|
||||
|
||||
.miniColors-colorPicker {
|
||||
position: absolute;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
background: url('images/minicolors-all.png') -170px -28px no-repeat;
|
||||
}
|
||||
|
||||
.miniColors-huePicker {
|
||||
position: absolute;
|
||||
left: -3px;
|
||||
width: 26px;
|
||||
height: 3px;
|
||||
background: url('images/minicolors-all.png') -170px -24px no-repeat;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.miniColors-presets {
|
||||
position: absolute;
|
||||
left: 185px;
|
||||
top: 5px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.miniColors-colorPreset {
|
||||
float: left;
|
||||
width: 18px;
|
||||
height: 15px;
|
||||
margin: 2px;
|
||||
border: 1px solid #333;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.miniColors-colorPreset-active {
|
||||
border: 2px dotted #666;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
/* Hacks for IE6/7 */
|
||||
|
||||
* html .miniColors-colors {
|
||||
background-image: none;
|
||||
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='plugins/calendar/skins/classic/images/minicolors-all.png', sizingMethod='crop');
|
||||
}
|
||||
|
||||
* html .miniColors-colorPicker {
|
||||
background: url('images/minicolors-handles.gif') 0 -28px no-repeat;
|
||||
}
|
||||
|
||||
* html .miniColors-huePicker {
|
||||
background: url('images/minicolors-handles.gif') 0 -24px no-repeat;
|
||||
}
|
||||
|
||||
* html .miniColors-trigger {
|
||||
background: url('images/minicolors-handles.gif') 0 0 no-repeat;
|
||||
}
|
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 180 B |
Before Width: | Height: | Size: 182 B |
Before Width: | Height: | Size: 162 B |
Before Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 119 B |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 104 B |
Before Width: | Height: | Size: 88 B |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB |
@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "roundcube/legacy_browser",
|
||||
"type": "roundcube-plugin",
|
||||
"description": "Legacy browser (IE 7/8, Firefox < 4) support",
|
||||
"license": "GPLv3+",
|
||||
"version": "1.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Aleksander Machniak",
|
||||
"email": "alec@alec.pl",
|
||||
"role": "Lead"
|
||||
}
|
||||
],
|
||||
"repositories": [
|
||||
{
|
||||
"type": "composer",
|
||||
"url": "http://plugins.roundcube.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"roundcube/plugin-installer": ">=0.1.3"
|
||||
}
|
||||
}
|
@ -1,108 +0,0 @@
|
||||
|
||||
// Make getElementById() case-sensitive on IE7
|
||||
document._getElementById = document.getElementById;
|
||||
document.getElementById = function(id)
|
||||
{
|
||||
var i = 0, obj = document._getElementById(id);
|
||||
|
||||
if (obj && obj.id != id)
|
||||
while ((obj = document.all[i]) && obj.id != id)
|
||||
i++;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
// fix missing :last-child selectors
|
||||
$(document).ready(function() {
|
||||
if (rcmail && rcmail.env.skin != 'classic')
|
||||
$('ul.treelist ul').each(function(i, ul) {
|
||||
$('li:last-child', ul).css('border-bottom', 0);
|
||||
});
|
||||
});
|
||||
|
||||
// gets cursor position (IE<9)
|
||||
rcube_webmail.prototype.get_caret_pos = function(obj)
|
||||
{
|
||||
if (document.selection && document.selection.createRange) {
|
||||
var range = document.selection.createRange();
|
||||
if (range.parentElement() != obj)
|
||||
return 0;
|
||||
|
||||
var gm = range.duplicate();
|
||||
if (obj.tagName == 'TEXTAREA')
|
||||
gm.moveToElementText(obj);
|
||||
else
|
||||
gm.expand('textedit');
|
||||
|
||||
gm.setEndPoint('EndToStart', range);
|
||||
var p = gm.text.length;
|
||||
|
||||
return p <= obj.value.length ? p : -1;
|
||||
}
|
||||
|
||||
return obj.value.length;
|
||||
};
|
||||
|
||||
// moves cursor to specified position (IE<9)
|
||||
rcube_webmail.prototype.set_caret_pos = function(obj, pos)
|
||||
{
|
||||
if (obj.createTextRange) {
|
||||
var range = obj.createTextRange();
|
||||
range.collapse(true);
|
||||
range.moveEnd('character', pos);
|
||||
range.moveStart('character', pos);
|
||||
range.select();
|
||||
}
|
||||
};
|
||||
|
||||
// get selected text from an input field (IE<9)
|
||||
// http://stackoverflow.com/questions/7186586/how-to-get-the-selected-text-in-textarea-using-jquery-in-internet-explorer-7
|
||||
rcube_webmail.prototype.get_input_selection = function(obj)
|
||||
{
|
||||
var start = 0, end = 0, len,
|
||||
normalizedValue, textInputRange, endRange,
|
||||
range = document.selection.createRange();
|
||||
|
||||
if (range && range.parentElement() == obj) {
|
||||
len = obj.value.length;
|
||||
normalizedValue = obj.value; //.replace(/\r\n/g, "\n");
|
||||
|
||||
// create a working TextRange that lives only in the input
|
||||
textInputRange = obj.createTextRange();
|
||||
textInputRange.moveToBookmark(range.getBookmark());
|
||||
|
||||
// Check if the start and end of the selection are at the very end
|
||||
// of the input, since moveStart/moveEnd doesn't return what we want
|
||||
// in those cases
|
||||
endRange = obj.createTextRange();
|
||||
endRange.collapse(false);
|
||||
|
||||
if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
|
||||
start = end = len;
|
||||
}
|
||||
else {
|
||||
start = -textInputRange.moveStart("character", -len);
|
||||
start += normalizedValue.slice(0, start).split("\n").length - 1;
|
||||
|
||||
if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
|
||||
end = len;
|
||||
}
|
||||
else {
|
||||
end = -textInputRange.moveEnd("character", -len);
|
||||
end += normalizedValue.slice(0, end).split("\n").length - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {start: start, end: end, text: normalizedValue.substr(start, end-start)};
|
||||
};
|
||||
|
||||
// For IE<9 we have to do it this way
|
||||
// otherwise the form will be posted to a new window
|
||||
rcube_webmail.prototype.async_upload_form_frame = function(name)
|
||||
{
|
||||
document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="' + name + '"'
|
||||
+ ' src="' + rcmail.assets_path('program/resources/blank.gif') + '" style="width:0; height:0; visibility:hidden"></iframe>');
|
||||
|
||||
return $('iframe[name="' + name + '"]');
|
||||
};
|
@ -1,112 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Plugin which adds support for legacy browsers (IE 7/8, Firefox < 4)
|
||||
*
|
||||
* @author Aleksander Machniak <alec@alec.pl>
|
||||
* @license GNU GPLv3+
|
||||
*/
|
||||
class legacy_browser extends rcube_plugin
|
||||
{
|
||||
public $noajax = true;
|
||||
private $rc;
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->rc = $rcube = rcube::get_instance();
|
||||
|
||||
if (
|
||||
// IE < 9
|
||||
($rcube->output->browser->ie && $rcube->output->browser->ver < 9)
|
||||
// Firefox < 4 (Firefox 4 is recognized as 2.0)
|
||||
|| ($rcube->output->browser->mz && $rcube->output->browser->ver < 2)
|
||||
) {
|
||||
$this->add_hook('send_page', array($this, 'send_page'));
|
||||
$this->add_hook('render_page', array($this, 'render_page'));
|
||||
}
|
||||
}
|
||||
|
||||
function send_page($args)
|
||||
{
|
||||
$p1 = $this->rc->output->asset_url('program/js');
|
||||
$p2 = $this->rc->output->asset_url('plugins/legacy_browser/js');
|
||||
|
||||
$assets_dir = $this->rc->config->get('assets_dir');
|
||||
|
||||
$ts1 = filemtime($this->home . '/js/jquery.min.js');
|
||||
$ts2 = filemtime($this->home . '/js/iehacks.js');
|
||||
|
||||
if (!$ts1 && $assets_dir) {
|
||||
$ts1 = filemtime($assets_dir . '/plugins/legacy_browser/js/jquery.min.js');
|
||||
}
|
||||
if (!$ts2 && $assets_dir) {
|
||||
$ts2 = filemtime($assets_dir . '/plugins/legacy_browser/js/iehacks.js');
|
||||
}
|
||||
|
||||
// put iehacks.js after app.js
|
||||
if ($this->rc->output->browser->ie) {
|
||||
$args['content'] = preg_replace(
|
||||
'|(<script src="' . preg_quote($p1, '|') . '/app(\.min)?\.js(\?s=[0-9]+)?" type="text/javascript"></script>)|',
|
||||
'\\1<script src="' . $p2 . '/iehacks.js?s=' . $ts2 . '" type="text/javascript"></script>',
|
||||
$args['content'], 1, $count);
|
||||
}
|
||||
else {
|
||||
$count = 1;
|
||||
}
|
||||
|
||||
// replace jQuery 2.x with 1.x
|
||||
$args['content'] = preg_replace(
|
||||
'|<script src="' . preg_quote($p1, '|') . '/jquery\.min\.js(\?s=[0-9]+)?" type="text/javascript"></script>|',
|
||||
'<script src="' . $p2 . '/jquery.min.js?s=' . $ts1 . '" type="text/javascript"></script>'
|
||||
// add iehacks.js if it is IE and it wasn't added yet
|
||||
. ($count ? '' : "\n".'<script src="' . $p2 . '/iehacks.js?s=' . $ts2 . '" type="text/javascript"></script>'),
|
||||
$args['content'], 1);
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
function render_page($args)
|
||||
{
|
||||
if (!$this->rc->output->browser->ie) {
|
||||
return $args;
|
||||
}
|
||||
|
||||
$skin = $this->skin();
|
||||
|
||||
if ($skin == 'classic') {
|
||||
$minified = file_exists(INSTALL_PATH . '/plugins/legacy_browser/skins/classic/iehacks.min.css') ? '.min' : '';
|
||||
$this->rc->output->add_header(
|
||||
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/skins/classic/iehacks' . $minified . '.css" />'
|
||||
);
|
||||
}
|
||||
else if ($skin == 'larry') {
|
||||
$minified = file_exists(INSTALL_PATH . '/plugins/legacy_browser/skins/larry/iehacks.min.css') ? '.min' : '';
|
||||
$this->rc->output->add_header(
|
||||
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/skins/larry/iehacks' . $minified . '.css" />'
|
||||
);
|
||||
|
||||
if ($this->rc->output->browser->ver < 8) {
|
||||
$this->rc->output->add_header(
|
||||
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/skins/larry/ie7hacks' . $minified . '.css" />'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function skin()
|
||||
{
|
||||
$skin = $this->rc->config->get('skin');
|
||||
|
||||
// external skin, find if it inherits from other skin
|
||||
if ($skin != 'larry' && $skin != 'classic') {
|
||||
$json = @file_get_contents(INSTALL_PATH . "/skins/$skin/meta.json");
|
||||
$json = @json_decode($json, true);
|
||||
|
||||
if (!empty($json['extends'])) {
|
||||
return $json['extends'];
|
||||
}
|
||||
}
|
||||
|
||||
return $skin;
|
||||
}
|
||||
}
|
@ -1,295 +0,0 @@
|
||||
|
||||
input, textarea
|
||||
{
|
||||
border-style: expression(this.type=='checkbox' || this.type=='radio' || this.id=='quicksearchbox' ? 'none' : 'solid');
|
||||
border-width: expression(this.type=='checkbox' || this.type=='radio' ? '0' : '1px');
|
||||
border-color: expression(this.type=='checkbox' || this.type=='radio' ? '' : '#666666');
|
||||
background-color: expression(this.type=='checkbox' || this.type=='radio' ? 'transparent' : '#ffffff');
|
||||
}
|
||||
|
||||
body.iframe
|
||||
{
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
body.iframe div.boxcontent
|
||||
{
|
||||
margin-top: 20px;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
body.iframe div.boxtitle
|
||||
{
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
body.iframe #prefs-details
|
||||
{
|
||||
padding-top: 1px;
|
||||
}
|
||||
|
||||
#login-form form
|
||||
{
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.pagenav a.buttonPas
|
||||
{
|
||||
filter: alpha(opacity=35);
|
||||
}
|
||||
|
||||
body > #message
|
||||
{
|
||||
filter: alpha(opacity=85);
|
||||
}
|
||||
|
||||
.popupmenu
|
||||
{
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
#tabsbar,
|
||||
#partheader
|
||||
{
|
||||
width: expression((parseInt(document.documentElement.clientWidth)-240)+'px');
|
||||
}
|
||||
|
||||
#mainscreen
|
||||
{
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
|
||||
}
|
||||
|
||||
#mainscreen,
|
||||
#messagepartcontainer
|
||||
{
|
||||
width: expression((parseInt(document.documentElement.clientWidth)-40)+'px');
|
||||
}
|
||||
|
||||
#messagetoolbar
|
||||
{
|
||||
width: expression((parseInt(document.documentElement.clientWidth)-215)+'px');
|
||||
z-index: 240;
|
||||
}
|
||||
|
||||
#messagetoolbar select.mboxlist
|
||||
{
|
||||
margin: 0 8px;
|
||||
top: 8px;
|
||||
}
|
||||
|
||||
div.messageheaderbox
|
||||
{
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
body.iframe div.messageheaderbox
|
||||
{
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
#abooktoolbar a.buttonPas
|
||||
{
|
||||
filter: alpha(opacity=35);
|
||||
background-image: url(images/abook_toolbar.gif);
|
||||
}
|
||||
|
||||
#messagetoolbar a.buttonPas
|
||||
{
|
||||
filter: alpha(opacity=35);
|
||||
background-image: url(images/mail_toolbar.gif);
|
||||
}
|
||||
|
||||
#listcontrols a.buttonPas
|
||||
{
|
||||
filter: alpha(opacity=35);
|
||||
}
|
||||
|
||||
#quicksearchbar
|
||||
{
|
||||
z-index: 240;
|
||||
}
|
||||
|
||||
#addresslist,
|
||||
#sectionslist,
|
||||
#identities-list,
|
||||
#mailleftcontainer,
|
||||
#mailrightcontainer,
|
||||
#compose-container,
|
||||
#compose-attachments,
|
||||
#compose-contacts,
|
||||
#mailcontframe,
|
||||
#mailboxlist-container,
|
||||
#mailrightcontent,
|
||||
#messageframe,
|
||||
#identity-details,
|
||||
#contacts-box,
|
||||
#prefs-box,
|
||||
#folder-box,
|
||||
#directorylistbox,
|
||||
#addressscreen
|
||||
{
|
||||
height: expression(parseInt(this.parentNode.offsetHeight)+'px');
|
||||
}
|
||||
|
||||
#mailrightcontainer
|
||||
{
|
||||
width: expression((parseInt(this.parentNode.offsetWidth)-170)+'px');
|
||||
}
|
||||
|
||||
#messagepartcontainer
|
||||
{
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-90)+'px');
|
||||
}
|
||||
|
||||
#mailrightcontent
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#compose-div
|
||||
{
|
||||
height: expression((parseInt(this.parentNode.offsetHeight)-1-parseInt(document.getElementById('compose-headers').offsetHeight))+'px');
|
||||
}
|
||||
|
||||
#compose-attachments ul li
|
||||
{
|
||||
width: 1000px; /* for IE7 */
|
||||
}
|
||||
|
||||
#compose-attachments li a
|
||||
{
|
||||
float: left; /* for IE7 */
|
||||
}
|
||||
|
||||
#messagelist
|
||||
{
|
||||
width: inherit;
|
||||
*width: auto; /* IE6/7 conditional hack */
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
#messagelist thead tr td,
|
||||
#messagelist tbody tr td
|
||||
{
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
#messagelist tbody tr.unroot td.subject
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#messageframe
|
||||
{
|
||||
width: expression((parseInt(this.parentNode.offsetWidth)-180)+'px');
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body.iframe
|
||||
{
|
||||
width: expression((parseInt(document.documentElement.clientWidth))+'px');
|
||||
}
|
||||
|
||||
div.message-part pre,
|
||||
div.message-htmlpart pre,
|
||||
div.message-part div.pre
|
||||
{
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#addressscreen
|
||||
{
|
||||
width: expression((parseInt(document.documentElement.clientWidth)-245)+'px');
|
||||
}
|
||||
|
||||
#contacts-box,
|
||||
#prefs-box,
|
||||
#folder-box
|
||||
{
|
||||
width: expression((parseInt(this.parentNode.offsetWidth)-555)+'px');
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#rcmdraglayer
|
||||
{
|
||||
filter: alpha(opacity=82);
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
div.draglayercopy
|
||||
{
|
||||
border-color: #00cc00;
|
||||
background: url(../../../skins/classic/images/messageactions.png) 0 -125px no-repeat #fff;
|
||||
}
|
||||
|
||||
html.ie8 .draglayercopy:before
|
||||
{
|
||||
content: "";
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul.toolbarmenu
|
||||
{
|
||||
margin: 0 0 -4px 0;
|
||||
}
|
||||
|
||||
.popupmenu ul li,
|
||||
ul.toolbarmenu li
|
||||
{
|
||||
min-width: auto;
|
||||
}
|
||||
|
||||
.popupmenu ul li a,
|
||||
ul.toolbarmenu li a
|
||||
{
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
.popupmenu li.block a
|
||||
{
|
||||
clear: none;
|
||||
display: inline-block;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
#console
|
||||
{
|
||||
filter: alpha(opacity=80);
|
||||
}
|
||||
|
||||
table.records-table thead tr td
|
||||
{
|
||||
height: 19px;
|
||||
}
|
||||
|
||||
#listmenu fieldset
|
||||
{
|
||||
margin: 0 4px;
|
||||
padding: 0.8em;
|
||||
}
|
||||
|
||||
#listcontrols input
|
||||
{
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#contact-details
|
||||
{
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#contact-details form {
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
.contactfieldgroup legend
|
||||
{
|
||||
padding: 0 0 0.5em 0;
|
||||
margin-left: -4px;
|
||||
}
|
||||
|
||||
/* fix "jumping" login form in IE7 */
|
||||
#login-form div.boxcontent
|
||||
{
|
||||
overflow: hidden;
|
||||
}
|
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 15 KiB |
@ -1,211 +0,0 @@
|
||||
/**
|
||||
* Roundcube webmail CSS hacks for IE 7
|
||||
*
|
||||
* Copyright (c) 2012, The Roundcube Dev Team
|
||||
*
|
||||
* The contents are subject to the Creative Commons Attribution-ShareAlike
|
||||
* License. It is allowed to copy, distribute, transmit and to adapt the work
|
||||
* by keeping credits to the original autors in the README file.
|
||||
* See http://creativecommons.org/licenses/by-sa/3.0/ for details.
|
||||
*/
|
||||
|
||||
/* #1488618 */
|
||||
#mainscreen {
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-108)+'px');
|
||||
}
|
||||
#mainscreen.offset {
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-150)+'px');
|
||||
}
|
||||
|
||||
.minimal #mainscreen {
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-82)+'px');
|
||||
}
|
||||
|
||||
.minimal #mainscreen.offset {
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-120)+'px');
|
||||
}
|
||||
|
||||
#messagepartframe {
|
||||
height: expression((parseInt(this.parentNode.offsetHeight)-1)+'px');
|
||||
}
|
||||
|
||||
input.button {
|
||||
display: inline;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
a.iconbutton,
|
||||
a.deletebutton,
|
||||
.boxpagenav a.icon,
|
||||
a.button span.icon,
|
||||
.pagenav a.button span.inner,
|
||||
.boxfooter .listbutton .inner,
|
||||
.attachmentslist li a.delete,
|
||||
.attachmentslist li a.cancelupload,
|
||||
#contacts-table td.action a,
|
||||
.previewheader .iconlink,
|
||||
.minimal #taskbar .button-inner,
|
||||
#preferences-details fieldset.advanced .advanced-toggle {
|
||||
/* workaround for text-indent which also offsets the background image */
|
||||
text-indent: 0;
|
||||
font-size: 0;
|
||||
line-height: 0;
|
||||
overflow: hidden;
|
||||
text-align: right;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.boxpagenav a.icon {
|
||||
color: #bbd3da;
|
||||
}
|
||||
|
||||
.pagenav a.button,
|
||||
.pagenav a.button span.inner,
|
||||
.previewheader .iconlink,
|
||||
#uploadform a.iconlink {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.pagenavbuttons {
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
.dropbutton .dropbuttontip {
|
||||
right: -2px;
|
||||
}
|
||||
|
||||
#login-form .box-inner form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#login-form #message div {
|
||||
float: left;
|
||||
display: block;
|
||||
width: 200px;
|
||||
margin-left: 130px;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#messageheader.previewheader .iconlink {
|
||||
color: #fff;
|
||||
height: 14px;
|
||||
}
|
||||
|
||||
#uploadform a.iconlink {
|
||||
text-indent: 0px;
|
||||
}
|
||||
|
||||
.boxfooter .countdisplay {
|
||||
top: -12px;
|
||||
}
|
||||
|
||||
ul.toolbarmenu li a {
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
#threadselectmenu li a {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
#messagemenu li a {
|
||||
width: 170px;
|
||||
}
|
||||
|
||||
#rcmKSearchpane {
|
||||
width: 400px;
|
||||
}
|
||||
#rcmKSearchpane ul li {
|
||||
width: 380px;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
|
||||
table.listing,
|
||||
table.records-table {
|
||||
display: block;
|
||||
width: auto;
|
||||
border-collapse: expression('separate', cellSpacing = '0');
|
||||
}
|
||||
|
||||
.records-table tbody td span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.listing {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
ul.toolbarmenu li label {
|
||||
margin: 0;
|
||||
padding: 3px 8px;
|
||||
}
|
||||
|
||||
.searchbox input {
|
||||
padding-top: 4px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
#messagelistfooter #listcontrols,
|
||||
#messagelistfooter #listselectors,
|
||||
#messagelistfooter #countcontrols,
|
||||
.pagenav .countdisplay {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#messagelistfooter #countcontrols {
|
||||
position: relative;
|
||||
top: -4px;
|
||||
}
|
||||
|
||||
#messagecontframe,
|
||||
#preferences-frame {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#composeoptionstoggle {
|
||||
display: inline;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.propform {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.propform fieldset legend {
|
||||
color: #333;
|
||||
margin-left: -5px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.contactfieldgroup legend {
|
||||
margin-left: -14px;
|
||||
}
|
||||
|
||||
.contactfieldcontent .contactfieldbutton {
|
||||
top: -6px;
|
||||
}
|
||||
|
||||
.tabsbar {
|
||||
height: 15px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.tabsbar .tablink {
|
||||
padding: 0 1px 0 0;
|
||||
}
|
||||
|
||||
.minimal #topline {
|
||||
width: 100%;
|
||||
height: 18px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.minimal #taskbar a:hover .tooltip {
|
||||
right: 34px;
|
||||
top: 1px;
|
||||
}
|
@ -1,200 +0,0 @@
|
||||
/**
|
||||
* Roundcube webmail CSS hacks for IE < 9
|
||||
*
|
||||
* Copyright (c) 2012, The Roundcube Dev Team
|
||||
*
|
||||
* The contents are subject to the Creative Commons Attribution-ShareAlike
|
||||
* License. It is allowed to copy, distribute, transmit and to adapt the work
|
||||
* by keeping credits to the original autors in the README file.
|
||||
* See http://creativecommons.org/licenses/by-sa/3.0/ for details.
|
||||
*/
|
||||
|
||||
.ie8 .minimal #taskbar .tooltip:after {
|
||||
top: -6px;
|
||||
}
|
||||
|
||||
input.button,
|
||||
a.disabled.button,
|
||||
.buttongroup {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
|
||||
}
|
||||
|
||||
.formbuttons input.button {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7b7b7b', endColorstr='#606060', GradientType=0);
|
||||
}
|
||||
|
||||
.formbuttons input.button:active {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5c5c5c', endColorstr='#7b7b7b', GradientType=0);
|
||||
}
|
||||
|
||||
input.button.mainaction {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#505050', endColorstr='#2a2e31', GradientType=0);
|
||||
}
|
||||
|
||||
input.button.mainaction:active {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a2e31', endColorstr='#505050', GradientType=0);
|
||||
}
|
||||
|
||||
a.button.pressed,
|
||||
a.button:active,
|
||||
input.button:active {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e6e6e6', endColorstr='#f9f9f9', GradientType=0);
|
||||
}
|
||||
|
||||
.pagenav.dark a.button {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d8d8d8', endColorstr='#bababa', GradientType=0);
|
||||
}
|
||||
|
||||
.pagenav.dark a.button.pressed {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bababa', endColorstr='#d8d8d8', GradientType=0);
|
||||
}
|
||||
|
||||
.buttongroup a.button.selected {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#909090', endColorstr='#858585', GradientType=0);
|
||||
}
|
||||
|
||||
#message.statusbar {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eaeaea', endColorstr='#c8c8c8', GradientType=0);
|
||||
}
|
||||
|
||||
#messagestack div {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e0404040', endColorstr='#e0303030', GradientType=0);
|
||||
}
|
||||
|
||||
.ui-dialog.popupmessage .ui-dialog-titlebar {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e3e3e3', endColorstr='#cfcfcf', GradientType=0);
|
||||
}
|
||||
|
||||
.ui-dialog.popupmessage .ui-widget-content {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dcdcdc', GradientType=0);
|
||||
}
|
||||
|
||||
#topnav {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#404040', endColorstr='#060606', GradientType=0);
|
||||
}
|
||||
|
||||
#toplogo {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 10px;
|
||||
}
|
||||
|
||||
.records-table tr.selected td {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#019bc6', endColorstr='#017cb4', GradientType=0);
|
||||
}
|
||||
|
||||
.contentbox .boxtitle,
|
||||
body.iframe .boxtitle {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dfdfdf', GradientType=0);
|
||||
}
|
||||
|
||||
#login-form input.button {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e2e2e2', GradientType=0);
|
||||
}
|
||||
|
||||
#login-form input.button:active {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdcdc', endColorstr='#f9f9f9', GradientType=0);
|
||||
}
|
||||
|
||||
.toolbar a.button {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
a.menuselector {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#dddddd', GradientType=0);
|
||||
}
|
||||
|
||||
a.menuselector:active {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f8f8f8', GradientType=0);
|
||||
}
|
||||
|
||||
.googie_list td.googie_list_onhover,
|
||||
ul.toolbarmenu li a.active:hover,
|
||||
#rcmKSearchpane ul li.selected {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00aad6', endColorstr='#008fc9', GradientType=0);
|
||||
}
|
||||
|
||||
.tabsbar .tablink {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#d3d3d3 50%, #f8f8f8', GradientType=0);
|
||||
}
|
||||
|
||||
.tabsbar .selected a {
|
||||
background-color: #fff;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);
|
||||
}
|
||||
|
||||
.toolbar a.button.disabled,
|
||||
.boxpagenav a.icon.disabled,
|
||||
.pagenav a.button.disabled span.inner,
|
||||
.boxfooter .listbutton.disabled .inner,
|
||||
.dropbutton a.button.disabled + .dropbuttontip {
|
||||
background-image: url(images/buttons.gif);
|
||||
}
|
||||
|
||||
/*** addressbook.css ***/
|
||||
|
||||
.contactfieldgroup {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7f7f7', endColorstr='#eeeeee', GradientType=0);
|
||||
}
|
||||
|
||||
.contactfieldgroup legend {
|
||||
margin: -8px -8px 8px -8px;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#d6d6d6', GradientType=0);
|
||||
}
|
||||
|
||||
|
||||
/*** mail.css ***/
|
||||
|
||||
#messagelistfooter {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb', endColorstr='#c6c6c6', GradientType=0);
|
||||
}
|
||||
|
||||
#mailboxlist li.mailbox .unreadcount {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#82acb5', endColorstr='#6a939f', GradientType=0);
|
||||
}
|
||||
|
||||
#mailboxlist li.mailbox.selected > a .unreadcount {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#005d76', endColorstr='#004558', GradientType=0);
|
||||
}
|
||||
|
||||
#messageheader, #partheader, #composeheaders {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f0f0f0', GradientType=0);
|
||||
}
|
||||
|
||||
.moreheaderstoggle {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbfbfb', endColorstr='#e9e9e9', GradientType=1);
|
||||
}
|
||||
|
||||
#messagelist tbody tr td span.branch div {
|
||||
float: left;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
a.button.disabled span.inner,
|
||||
a.iconbutton.disabled,
|
||||
.boxfooter .listbutton.disabled .inner,
|
||||
.boxpagenav a.icon.disabled,
|
||||
.toolbar a.button.disabled {
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
|
||||
.dropbutton a.button.disabled + .dropbuttontip {
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
|
||||
select.decorated {
|
||||
filter: alpha(opacity=0);
|
||||
}
|
||||
|
||||
ul.toolbarmenu li span.icon {
|
||||
filter: alpha(opacity=20);
|
||||
}
|
||||
|
||||
ul.toolbarmenu li a.active span.icon {
|
||||
filter: alpha(opacity=100);
|
||||
}
|
||||
|
||||
.minimal #topline:hover,
|
||||
#rcmdraglayer {
|
||||
filter: alpha(opacity=93);
|
||||
}
|
Before Width: | Height: | Size: 14 KiB |
@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
class Legacy_Browser_Plugin extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
function setUp()
|
||||
{
|
||||
include_once __DIR__ . '/../legacy_browser.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Plugin object construction test
|
||||
*/
|
||||
function test_constructor()
|
||||
{
|
||||
$rcube = rcube::get_instance();
|
||||
$plugin = new legacy_browser($rcube->api);
|
||||
|
||||
$this->assertInstanceOf('legacy_browser', $plugin);
|
||||
$this->assertInstanceOf('rcube_plugin', $plugin);
|
||||
}
|
||||
}
|
||||
|
@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Render SVG gradients for IE 9
|
||||
*
|
||||
* Copyright (c) 2012, The Roundcube Dev Team
|
||||
*
|
||||
* The contents are subject to the Creative Commons Attribution-ShareAlike
|
||||
* License. It is allowed to copy, distribute, transmit and to adapt the work
|
||||
* by keeping credits to the original autors in the README file.
|
||||
* See http://creativecommons.org/licenses/by-sa/3.0/ for details.
|
||||
*/
|
||||
|
||||
ini_set('error_reporting', E_ALL &~ (E_NOTICE | E_STRICT));
|
||||
|
||||
header('Content-Type: image/svg+xml');
|
||||
header("Expires: ".gmdate("D, d M Y H:i:s", time()+864000)." GMT");
|
||||
header("Cache-Control: max-age=864000");
|
||||
header("Pragma: ");
|
||||
|
||||
$svg_stops = '';
|
||||
$color_stops = explode(';', preg_replace('/[^a-f0-9,;%]/i', '', $_GET['c']));
|
||||
$gradient_coords = !empty($_GET['h']) ? 'x1="0%" y1="0%" x2="100%" y2="0%"' : 'x1="0%" y1="0%" x2="0%" y2="100%"';
|
||||
$last = count($color_stops) - 1;
|
||||
foreach ($color_stops as $i => $stop) {
|
||||
list($color, $offset) = explode(',', $stop);
|
||||
if ($offset)
|
||||
$offset = intval($offset);
|
||||
else
|
||||
$offset = $i == $last ? 100 : 0;
|
||||
|
||||
$svg_stops .= '<stop offset="' . $offset . '%" stop-color="#' . $color . '" stop-opacity="1"/>';
|
||||
}
|
||||
|
||||
?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none" version="1.0" width="100%" height="100%">
|
||||
<defs>
|
||||
<linearGradient id="LG1" <?php echo $gradient_coords; ?> spreadMethod="pad">
|
||||
<?php echo $svg_stops; ?>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" style="fill:url(#LG1);"/>
|
||||
</svg>
|
@ -1,185 +0,0 @@
|
||||
/**
|
||||
* Roundcube webmail SVG-based gradients for IE 9
|
||||
*
|
||||
* Copyright (c) 2012, The Roundcube Dev Team
|
||||
*
|
||||
* The contents are subject to the Creative Commons Attribution-ShareAlike
|
||||
* License. It is allowed to copy, distribute, transmit and to adapt the work
|
||||
* by keeping credits to the original autors in the README file.
|
||||
* See http://creativecommons.org/licenses/by-sa/3.0/ for details.
|
||||
*/
|
||||
|
||||
input.button {
|
||||
background-image: url(svggradient.php?c=f9f9f9;e6e6e6);
|
||||
}
|
||||
|
||||
.formbuttons input.button {
|
||||
background-image: url(svggradient.php?c=7b7b7b;606060);
|
||||
}
|
||||
|
||||
.formbuttons input.button:active {
|
||||
background-image: url(svggradient.php?c=5c5c5c;7b7b7b);
|
||||
}
|
||||
|
||||
input.button.mainaction {
|
||||
background-image: url(svggradient.php?c=505050;2a2e31);
|
||||
}
|
||||
|
||||
input.button.mainaction:active {
|
||||
background-image: url(svggradient.php?c=2a2e31;505050);
|
||||
}
|
||||
|
||||
a.button,
|
||||
.buttongroup {
|
||||
background-image: url(svggradient.php?c=f9f9f9;e6e6e6);
|
||||
}
|
||||
|
||||
a.button.pressed,
|
||||
a.button:active,
|
||||
input.button:active {
|
||||
background-image: url(svggradient.php?c=e6e6e6;f9f9f9);
|
||||
}
|
||||
|
||||
.pagenav.dark a.button {
|
||||
background-image: url(svggradient.php?c=d8d8d8;bababa);
|
||||
}
|
||||
|
||||
.pagenav.dark a.button.pressed {
|
||||
background-image: url(svggradient.php?c=bababa;d8d8d8);
|
||||
}
|
||||
|
||||
.buttongroup a.button.selected {
|
||||
background-image: url(svggradient.php?c=909090;858585);
|
||||
}
|
||||
|
||||
#message.statusbar {
|
||||
background-image: url(svggradient.php?c=eaeaea;c8c8c8);
|
||||
}
|
||||
|
||||
#messagestack div {
|
||||
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzQwNDA0MCIgc3RvcC1vcGFjaXR5PSIwLjg4Ii8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMzMDMwMzAiIHN0b3Atb3BhY2l0eT0iMC44OCIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
|
||||
}
|
||||
|
||||
.ui-dialog.popupmessage .ui-dialog-titlebar {
|
||||
background-image: url(svggradient.php?c=e3e3e3;cfcfcf);
|
||||
}
|
||||
|
||||
.ui-dialog.popupmessage .ui-widget-content {
|
||||
background-image: url(svggradient.php?c=eeeeee;dcdcdc);
|
||||
}
|
||||
|
||||
#topnav {
|
||||
background-image: url(svggradient.php?c=404040;060606);
|
||||
}
|
||||
|
||||
.records-table tr.selected td {
|
||||
background-image: url(svggradient.php?c=019bc6;017cb4);
|
||||
}
|
||||
|
||||
.contentbox .boxtitle,
|
||||
body.iframe .boxtitle {
|
||||
background-image: url(svggradient.php?c=eeeeee;dfdfdf);
|
||||
/* background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20preserveAspectRatio%3D%22none%22%20version%3D%221.0%22%20width%3D%22100%25%22%20height%3D%22100%25%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22mLG1%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%20spreadMethod%3D%22pad%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23eeeeee%22%20stop-opacity%3D%221%22/%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23dfdfdf%22%20stop-opacity%3D%221%22/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20style%3D%22fill%3Aurl%28%23mLG1%29%3B%22/%3E%3C/svg%3E);*/
|
||||
}
|
||||
|
||||
#login-form input.button {
|
||||
background-image: url(svggradient.php?c=f9f9f9;e2e2e2);
|
||||
}
|
||||
|
||||
#login-form input.button:active {
|
||||
background-image: url(svggradient.php?c=dcdcdc;f9f9f9);
|
||||
}
|
||||
|
||||
.toolbar a.button {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
a.menuselector {
|
||||
background-image: url(svggradient.php?c=f8f8f8;dddddd);
|
||||
}
|
||||
|
||||
a.menuselector:active {
|
||||
background-image: url(svggradient.php?c=dddddd;f8f8f8);
|
||||
}
|
||||
|
||||
.googie_list td.googie_list_onhover,
|
||||
ul.toolbarmenu li a.active:hover,
|
||||
#rcmKSearchpane ul li.selected {
|
||||
background-image: url(svggradient.php?c=00aad6;008fc9);
|
||||
}
|
||||
|
||||
.tabsbar .tablink {
|
||||
background-image: url(svggradient.php?c=f8f8f8;d3d3d3,50;f8f8f8);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.tabsbar .tablink.selected a {
|
||||
background-image: url(svggradient.php?c=ffffff;efefef);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
|
||||
/*** addressbook.css ***/
|
||||
|
||||
.contactfieldgroup {
|
||||
background-image: url(svggradient.php?c=f7f7f7;eeeeee);
|
||||
}
|
||||
|
||||
.contactfieldgroup legend {
|
||||
background-image: url(svggradient.php?c=f0f0f0;d6d6d6);
|
||||
}
|
||||
|
||||
|
||||
/*** mail.css ***/
|
||||
|
||||
#mailboxlist li.mailbox .unreadcount {
|
||||
background-image: url(svggradient.php?c=82acb5;6a939f);
|
||||
}
|
||||
|
||||
#mailboxlist li.mailbox.selected .unreadcount {
|
||||
background-image: url(svggradient.php?c=005d76;004558);
|
||||
}
|
||||
|
||||
#messageheader, #partheader, #composeheaders {
|
||||
background-image: url(svggradient.php?c=ffffff;f0f0f0);
|
||||
}
|
||||
|
||||
.moreheaderstoggle {
|
||||
background-image: url(svggradient.php?c=fbfbfb;e9e9e9&h=1);
|
||||
}
|
||||
|
||||
#messagelistfooter {
|
||||
background-image: url(svggradient.php?c=ebebeb;c6c6c6);
|
||||
}
|
||||
|
||||
/*** jqueryui theme ***/
|
||||
|
||||
.ui-menu .ui-menu-item a.ui-state-hover,
|
||||
.ui-menu .ui-menu-item a.ui-state-active {
|
||||
background-image: url(svggradient.php?c=00aad6;008fc9) !important;
|
||||
}
|
||||
|
||||
.ui-button.ui-state-default {
|
||||
background-image: url(svggradient.php?c=f9f9f9;e6e6e6) !important;
|
||||
}
|
||||
|
||||
.ui-button.ui-state-active {
|
||||
background-image: url(svggradient.php?c=e6e6e6;f9f9f9) !important;
|
||||
}
|
||||
|
||||
.ui-tabs .ui-tabs-nav li {
|
||||
background-image: url(svggradient.php?c=f8f8f8;d3d3d3,50;d3d3d3) !important;
|
||||
}
|
||||
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a {
|
||||
background-image: url(svggradient.php?c=fafafa,40;e4e4e4) !important;
|
||||
}
|
||||
|
||||
.ui-datepicker td a.ui-state-default {
|
||||
background-image: url(svggradient.php?c=e6e6e6;d6d6d6) !important;
|
||||
}
|
||||
|
||||
.ui-datepicker td a.ui-state-active {
|
||||
background-image: url(svggradient.php?c=00acd4;008fc7) !important;
|
||||
}
|
||||
|