Drop support for IE6, move IE7/IE8 support to legacy_browser plugin, update to jQuery-2.1.0
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Plugin which adds support for legacy browsers (IE 7/8)
|
||||
*
|
||||
* @author Aleksander Machniak <alec@alec.pl>
|
||||
* @license GNU GPLv3+
|
||||
*/
|
||||
class legacy_browser extends rcube_plugin
|
||||
{
|
||||
public $noajax = true;
|
||||
|
||||
public function init()
|
||||
{
|
||||
$rcube = rcube::get_instance();
|
||||
|
||||
if ($rcube->output->browser->ie && $rcube->output->browser->ver < 9) {
|
||||
$this->add_hook('send_page', array($this, 'send_page'));
|
||||
$this->add_hook('render_page', array($this, 'render_page'));
|
||||
}
|
||||
}
|
||||
|
||||
function send_page($args)
|
||||
{
|
||||
// replace jQuery 2.x with 1.x
|
||||
$ts = filemtime($this->home . '/js/jquery.min.js');
|
||||
$args['content'] = preg_replace(
|
||||
'|"program/js/jquery\.min\.js\?s=[0-9]+"|',
|
||||
'"plugins/legacy_browser/js/jquery.min.js?s=' . $ts . '"',
|
||||
$args['content'], 1);
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
function render_page($args)
|
||||
{
|
||||
$rcube = rcube::get_instance();
|
||||
$skin = $this->skin();
|
||||
|
||||
if ($skin == 'classic') {
|
||||
$rcube->output->add_header(
|
||||
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/classic/iehacks.css" />'
|
||||
);
|
||||
}
|
||||
else if ($skin == 'larry') {
|
||||
if ($rcube->output->browser->ver < 8) {
|
||||
$rcube->output->add_header(
|
||||
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/larry/ie7hacks.css" />'
|
||||
);
|
||||
}
|
||||
else {
|
||||
$rcube->output->add_header(
|
||||
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/larry/iehacks.css" />'
|
||||
);
|
||||
}
|
||||
|
||||
// fix missing :last-child selectors
|
||||
$rcube->output->add_footer(implode("\n", array(
|
||||
'<script type="text/javascript">',
|
||||
'$(document).ready(function() {',
|
||||
' $(\'ul.treelist ul\').each(function(i,ul) {',
|
||||
' $(\'li:last-child\', ul).css(\'border-bottom\', 0);',
|
||||
' });',
|
||||
'});',
|
||||
'</script>'
|
||||
)));
|
||||
}
|
||||
}
|
||||
|
||||
private function skin()
|
||||
{
|
||||
$rcube = rcube::get_instance();
|
||||
$skin = $rcube->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;
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
|
||||
http://pear.php.net/dtd/tasks-1.0.xsd
|
||||
http://pear.php.net/dtd/package-2.0
|
||||
http://pear.php.net/dtd/package-2.0.xsd">
|
||||
<name>legacy_browser</name>
|
||||
<channel>pear.roundcube.net</channel>
|
||||
<summary>Legacy browser (IE 7/8) support</summary>
|
||||
<description>This adds support for legacy browsers (IE 7/8).</description>
|
||||
<lead>
|
||||
<name>Aleksander Machniak</name>
|
||||
<user>alec</user>
|
||||
<email>alec@alec.pl</email>
|
||||
<active>yes</active>
|
||||
</lead>
|
||||
<date>2014-04-12</date>
|
||||
<version>
|
||||
<release>1.0</release>
|
||||
<api>1.0</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>stable</release>
|
||||
<api>stable</api>
|
||||
</stability>
|
||||
<license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
|
||||
<notes>-</notes>
|
||||
<contents>
|
||||
<dir baseinstalldir="/" name="/">
|
||||
<file name="legacy_browser.php" role="php">
|
||||
<tasks:replace from="@name@" to="name" type="package-info"/>
|
||||
<tasks:replace from="@package_version@" to="version" type="package-info"/>
|
||||
</file>
|
||||
<file name="js/jquery.min.js" role="data"></file>
|
||||
<file name="skins/classic/iehacks.css" role="data"></file>
|
||||
<file name="skins/classic/images/abook_toolbar.gif" role="data"></file>
|
||||
<file name="skins/classic/images/mail_toolbar.gif" role="data"></file>
|
||||
<file name="skins/larry/ie7hacks.css" role="data"></file>
|
||||
<file name="skins/larry/iehacks.css" role="data"></file>
|
||||
<file name="skins/larry/images/buttons.gif" role="data"></file>
|
||||
</dir>
|
||||
<!-- / -->
|
||||
</contents>
|
||||
<dependencies>
|
||||
<required>
|
||||
<php>
|
||||
<min>5.2.1</min>
|
||||
</php>
|
||||
<pearinstaller>
|
||||
<min>1.7.0</min>
|
||||
</pearinstaller>
|
||||
</required>
|
||||
</dependencies>
|
||||
<phprelease/>
|
||||
</package>
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@ -1,184 +0,0 @@
|
||||
/* CSS hacks for IE versions 5,6 */
|
||||
|
||||
#taskbar
|
||||
{
|
||||
background: url(images/taskbar.gif) top right no-repeat;
|
||||
width: expression((parseInt(document.documentElement.clientWidth)-250)+'px');
|
||||
}
|
||||
|
||||
img
|
||||
{
|
||||
behavior: url(skins/classic/pngbehavior.htc);
|
||||
}
|
||||
|
||||
#logo
|
||||
{
|
||||
width: 178px;
|
||||
height: 47px;
|
||||
}
|
||||
|
||||
body > #message div.notice,
|
||||
body > #message div.error,
|
||||
body > #message div.warning,
|
||||
body > #message div.confirmation,
|
||||
#message-objects div.notice,
|
||||
#message-objects div.error,
|
||||
#message-objects div.warning,
|
||||
#message-objects div.confirmation
|
||||
{
|
||||
background-image: url(images/display/icons.gif);
|
||||
}
|
||||
|
||||
#messagemenu li a
|
||||
{
|
||||
background-image: url(images/messageactions.gif);
|
||||
}
|
||||
|
||||
#mailboxlist li
|
||||
{
|
||||
background-image: url(images/icons/folders.gif);
|
||||
}
|
||||
|
||||
#messagetoolbar a
|
||||
{
|
||||
display: block;
|
||||
float: left;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.boxfooter a.button,
|
||||
.boxfooter a.buttonPas
|
||||
{
|
||||
background-image: url(images/icons/groupactions.gif);
|
||||
}
|
||||
|
||||
.pagenav
|
||||
{
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.pagenav a.button,
|
||||
.pagenav a.buttonPas
|
||||
{
|
||||
background-image: url(images/pagenav.gif);
|
||||
}
|
||||
|
||||
#listcontrols a.button,
|
||||
#listcontrols a.buttonPas {
|
||||
background-image: url(images/mail_footer.gif);
|
||||
}
|
||||
|
||||
#messagetoolbar a.button,
|
||||
#messagetoolbar a.buttonPas {
|
||||
background-image: url(images/mail_toolbar.gif);
|
||||
}
|
||||
|
||||
#abooktoolbar a.button,
|
||||
#abooktoolbar a.buttonPas,
|
||||
#abooktoolbar span.separator {
|
||||
background-image: url(images/abook_toolbar.gif);
|
||||
}
|
||||
|
||||
ul.toolbarmenu li a,
|
||||
.popupmenu li a
|
||||
{
|
||||
clear: left;
|
||||
height: expression(Math.min(14, parseInt(document.documentElement.clientHeight))+'px');
|
||||
width: expression(Math.min(130, parseInt(document.documentElement.clientWidth))+'px');
|
||||
}
|
||||
|
||||
ul.toolbarmenu li.separator_below
|
||||
{
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
.boxfooter
|
||||
{
|
||||
width: 100%;
|
||||
bottom: -1px;
|
||||
}
|
||||
|
||||
.boxtitle,
|
||||
#directorylist li a
|
||||
{
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#directorylist li
|
||||
{
|
||||
background-image: url(images/icons/folders.gif);
|
||||
}
|
||||
|
||||
.boxlistcontent
|
||||
{
|
||||
top: 21px;
|
||||
height: expression((parseInt(this.parentNode.offsetHeight)-24-parseInt(this.style.top?this.style.top:21))+'px');
|
||||
}
|
||||
|
||||
#compose-div .boxlistcontent
|
||||
{
|
||||
height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px');
|
||||
}
|
||||
|
||||
#compose-body-div
|
||||
{
|
||||
height: expression(parseInt(this.parentNode.offsetHeight)+'px');
|
||||
}
|
||||
|
||||
#folder-manager
|
||||
{
|
||||
height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
|
||||
}
|
||||
|
||||
#messagelist tr td div.collapsed,
|
||||
#messagelist tr td div.expanded,
|
||||
#messagelist tr td.threads div.listmenu,
|
||||
#messagelist tr td.attachment span.attachment,
|
||||
#messagelist tr td.attachment span.report,
|
||||
#messagelist tr td.priority span.priority,
|
||||
#messagelist tr td.priority span.prio1,
|
||||
#messagelist tr td.priority span.prio2,
|
||||
#messagelist tr td.priority span.prio3,
|
||||
#messagelist tr td.priority span.prio4,
|
||||
#messagelist tr td.priority span.prio5,
|
||||
#messagelist tr td.flag span.flagged,
|
||||
#messagelist tr td.flag span.unflagged:hover,
|
||||
#messagelist tr td.status span.status,
|
||||
#messagelist tr td.status span.msgicon,
|
||||
#messagelist tr td.status span.deleted,
|
||||
#messagelist tr td.status span.unread,
|
||||
#messagelist tr td.status span.unreadchildren,
|
||||
#messagelist tr td.subject span.msgicon,
|
||||
#messagelist tr td.subject span.deleted,
|
||||
#messagelist tr td.subject span.unread,
|
||||
#messagelist tr td.subject span.replied,
|
||||
#messagelist tr td.subject span.forwarded,
|
||||
#messagelist tr td.subject span.unreadchildren
|
||||
{
|
||||
background-image: url(images/messageicons.gif);
|
||||
}
|
||||
|
||||
#messagelist tr td div.collapsed,
|
||||
#messagelist tr td div.expanded {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
body.iframe .boxtitle
|
||||
{
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#subscription-table
|
||||
{
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#sourcename
|
||||
{
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
#abookactions a
|
||||
{
|
||||
background-image: url("images/icons/groupactions.gif");
|
||||
}
|
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 155 B |
Before Width: | Height: | Size: 496 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.0 KiB |
@ -1,84 +0,0 @@
|
||||
<public:component lightWeight="true">
|
||||
<public:attach event="onpropertychange" onevent="propertyChanged()" />
|
||||
<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
|
||||
<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
|
||||
<script>
|
||||
|
||||
/*
|
||||
* PNG Behavior
|
||||
*
|
||||
* This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
|
||||
* for WebFX (http://webfx.eae.net)
|
||||
* Copyright 2002-2004
|
||||
*
|
||||
* For usage see license at http://webfx.eae.net/license.html
|
||||
*
|
||||
* Version: 1.02
|
||||
* Created: 2001-??-?? First working version
|
||||
* Updated: 2002-03-28 Fixed issue when starting with a non png image and
|
||||
* switching between non png images
|
||||
* 2003-01-06 Fixed RegExp to correctly work with IE 5.0x
|
||||
* 2004-05-09 When printing revert to original
|
||||
*
|
||||
*/
|
||||
|
||||
var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32",
|
||||
realSrc,
|
||||
blankSrc = "program/resources/blank.gif",
|
||||
isPrinting = false;
|
||||
|
||||
if (supported) fixImage();
|
||||
|
||||
function propertyChanged() {
|
||||
if (!supported || isPrinting) return;
|
||||
|
||||
var pName = event.propertyName;
|
||||
if (pName != "src") return;
|
||||
// if not set to blank
|
||||
if (!new RegExp(blankSrc).test(src))
|
||||
fixImage();
|
||||
};
|
||||
|
||||
function fixImage() {
|
||||
// get src
|
||||
var src = element.src;
|
||||
|
||||
// check for real change
|
||||
if (src == realSrc && /\.png$/i.test(src)) {
|
||||
element.src = blankSrc;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! new RegExp(blankSrc).test(src)) {
|
||||
// backup old src
|
||||
realSrc = src;
|
||||
}
|
||||
|
||||
// test for png
|
||||
if (/\.png$/i.test(realSrc)) {
|
||||
// set blank image
|
||||
element.src = blankSrc;
|
||||
// set filter
|
||||
element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
|
||||
"AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
|
||||
}
|
||||
else {
|
||||
// remove filter
|
||||
element.runtimeStyle.filter = "";
|
||||
}
|
||||
}
|
||||
|
||||
function beforePrint() {
|
||||
isPrinting = true;
|
||||
element.src = realSrc;
|
||||
element.runtimeStyle.filter = "";
|
||||
realSrc = null;
|
||||
}
|
||||
|
||||
function afterPrint() {
|
||||
isPrinting = false;
|
||||
fixImage();
|
||||
}
|
||||
|
||||
</script>
|
||||
</public:component>
|