Removed legacy_browsr plugin
parent
9e3263acbe
commit
829442a4cd
@ -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 + '"]');
|
|
||||||
};
|
|
File diff suppressed because one or more lines are too long
@ -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;
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
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);
|
|
||||||
}
|
|
Binary file not shown.
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue