Hello community,
here is the log from the commit of package roundcubemail for openSUSE:Factory checked in at 2017-03-20 17:09:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/roundcubemail (Old)
and /work/SRC/openSUSE:Factory/.roundcubemail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "roundcubemail"
Mon Mar 20 17:09:41 2017 rev:43 rq:480711 version:1.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/roundcubemail/roundcubemail.changes 2016-12-01 10:28:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.roundcubemail.new/roundcubemail.changes 2017-03-20 17:09:44.000425364 +0100
@@ -1,0 +2,27 @@
+Thu Mar 16 18:20:18 UTC 2017 - aj@ajaissle.de
+
+- Update to 1.2.4 [boo#1029035]
+ - Managesieve: Fix handling of scripts with nested rules (#5540)
+ - Managesieve: Fix parser issue with empty lines between comments (#5657)
+ - Managesieve: Fix possible defect in handling \r\n in scripts (#5685)
+ - Enigma: Fix handling of messages with nested PGP encrypted parts (#5634)
+ - Enigma: Fix PHP fatal error when decrypting a message with invalid signature (#5555)
+ - Enigma: Fix missing require statement for Crypt_GPG_KeyGenerator (#5641)
+ - Fix variable substitution in ldap host for some use-cases, e.g. new_user_identity (#5544)
+ - Fix adding images to new identity signatures
+ - Fix rsync error handling in installto.sh script (#5562)
+ - Fix some advanced search issues with multiple addressbooks (#5572)
+ - Fix so group/addressbook selection is retained on page refresh
+ - Fix bug where image data URIs in css style were treated as evil/remote in mail preview (#5580)
+ - Fix bug where external content in src attribute of input/video tags was not secured (#5583)
+ - Fix PHP error on update of a contact with multiple email addresses when using PHP 7.1 (#5587)
+ - Fix bug where mail content frame couldn't be reset in some corner cases (#5608)
+ - Fix bug where some classic skin images were not displayed in IE/Edge (#5614)
+ - Fix bug where signature couldn't be added above the quote in Firefox 51 (#5628)
+ - Fix regression where groups with email address were resolved to its members' addresses
+ - Fix update of group name in the contacts list header on group rename (#5648)
+ - Add rewrite rule to disable access to /vendor/bin folder in .htaccess (#5630)
+ - Fix bug where it was too easy accidentally move a folder when using the subscription checkbox (#5655)
+ - Fix XSS issue in handling of a style tag inside of an svg element [CVE-2017-6820]
+
+-------------------------------------------------------------------
Old:
----
roundcubemail-1.2.3.tar.gz
roundcubemail-1.2.3.tar.gz.asc
New:
----
roundcubemail-1.2.4.tar.gz
roundcubemail-1.2.4.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ roundcubemail.spec ++++++
--- /var/tmp/diff_new_pack.qQALdw/_old 2017-03-20 17:09:44.956290396 +0100
+++ /var/tmp/diff_new_pack.qQALdw/_new 2017-03-20 17:09:44.960289831 +0100
@@ -1,7 +1,7 @@
#
# spec file for package roundcubemail
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: roundcubemail
-Version: 1.2.3
+Version: 1.2.4
Release: 0
Summary: A modern browser-based multilingual IMAP client
License: GPL-3.0+ and GPL-2.0 and BSD-3-Clause
++++++ roundcubemail-1.2.3.tar.gz -> roundcubemail-1.2.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/.htaccess new/roundcubemail-1.2.4/.htaccess
--- old/roundcubemail-1.2.3/.htaccess 2016-11-27 17:08:56.000000000 +0100
+++ new/roundcubemail-1.2.4/.htaccess 2017-03-10 17:41:11.000000000 +0100
@@ -33,6 +33,8 @@
RewriteRule ^(?!installer|\.well-known\/|[a-zA-Z0-9]{16})(\.?[^\.]+)$ - [F]
# - deny access to some locations
RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
+# - deny access to composer binaries
+RewriteRule ^/vendor\/bin\/.* - [F]
# - deny access to some documentation files
RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml|Dockerfile)$ - [F]
</IfModule>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/CHANGELOG new/roundcubemail-1.2.4/CHANGELOG
--- old/roundcubemail-1.2.3/CHANGELOG 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/CHANGELOG 2017-03-10 17:41:11.000000000 +0100
@@ -1,6 +1,31 @@
CHANGELOG Roundcube Webmail
===========================
+RELEASE 1.2.4
+-------------
+- Managesieve: Fix handling of scripts with nested rules (#5540)
+- Managesieve: Fix parser issue with empty lines between comments (#5657)
+- Managesieve: Fix possible defect in handling \r\n in scripts (#5685)
+- Enigma: Fix handling of messages with nested PGP encrypted parts (#5634)
+- Enigma: Fix PHP fatal error when decrypting a message with invalid signature (#5555)
+- Enigma: Fix missing require statement for Crypt_GPG_KeyGenerator (#5641)
+- Fix variable substitution in ldap host for some use-cases, e.g. new_user_identity (#5544)
+- Fix adding images to new identity signatures
+- Fix rsync error handling in installto.sh script (#5562)
+- Fix some advanced search issues with multiple addressbooks (#5572)
+- Fix so group/addressbook selection is retained on page refresh
+- Fix bug where image data URIs in css style were treated as evil/remote in mail preview (#5580)
+- Fix bug where external content in src attribute of input/video tags was not secured (#5583)
+- Fix PHP error on update of a contact with multiple email addresses when using PHP 7.1 (#5587)
+- Fix bug where mail content frame couldn't be reset in some corner cases (#5608)
+- Fix bug where some classic skin images were not displayed in IE/Edge (#5614)
+- Fix bug where signature couldn't be added above the quote in Firefox 51 (#5628)
+- Fix regression where groups with email address were resolved to its members' addresses
+- Fix update of group name in the contacts list header on group rename (#5648)
+- Add rewrite rule to disable access to /vendor/bin folder in .htaccess (#5630)
+- Fix bug where it was too easy accidentally move a folder when using the subscription checkbox (#5655)
+- Fix XSS issue in handling of a style tag inside of an svg element
+
RELEASE 1.2.3
-------------
- Searching in both contacts and groups when LDAP addressbook with group_filters option is used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/bin/installto.sh new/roundcubemail-1.2.4/bin/installto.sh
--- old/roundcubemail-1.2.3/bin/installto.sh 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/bin/installto.sh 2017-03-10 17:41:11.000000000 +0100
@@ -42,7 +42,6 @@
$input = trim(fgets(STDIN));
if (strtolower($input) == 'y') {
- $err = false;
echo "Copying files to target location...";
// Save a copy of original .htaccess file (#1490623)
@@ -56,16 +55,16 @@
}
foreach ($dirs as $dir) {
// @FIXME: should we use --delete for all directories?
- $delete = in_array($dir, array('program', 'installer')) ? '--delete ' : '';
- if (!system("rsync -avC " . $delete . INSTALL_PATH . "$dir/* $target_dir/$dir/")) {
- $err = true;
- break;
+ $delete = in_array($dir, array('program', 'installer')) ? '--delete ' : '';
+ $command = "rsync -aC --out-format \"%n\" " . $delete . INSTALL_PATH . "$dir/* $target_dir/$dir/";
+ if (!system($command, $ret) || $ret > 0) {
+ rcube::raise_error("Failed to execute command: $command", false, true);
}
}
foreach (array('index.php','.htaccess','config/defaults.inc.php','composer.json-dist','CHANGELOG','README.md','UPGRADING','LICENSE','INSTALL') as $file) {
- if (!system("rsync -av " . INSTALL_PATH . "$file $target_dir/$file")) {
- $err = true;
- break;
+ $command = "rsync -a --out-format \"%n\" " . INSTALL_PATH . "$file $target_dir/$file";
+ if (file_exists(INSTALL_PATH . $file) && (!system($command, $ret) || $ret > 0)) {
+ rcube::raise_error("Failed to execute command: $command", false, true);
}
}
@@ -96,13 +95,12 @@
echo "done.\n\n";
}
- if (!$err) {
- echo "Running update script at target...\n";
- system("cd $target_dir && php bin/update.sh --version=$oldversion");
- echo "All done.\n";
- }
+ echo "Running update script at target...\n";
+ system("cd $target_dir && php bin/update.sh --version=$oldversion");
+ echo "All done.\n";
}
-else
+else {
echo "Update cancelled. See ya!\n";
+}
?>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/index.php new/roundcubemail-1.2.4/index.php
--- old/roundcubemail-1.2.3/index.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/index.php 2017-03-10 17:41:11.000000000 +0100
@@ -2,7 +2,7 @@
/**
+-------------------------------------------------------------------------+
| Roundcube Webmail IMAP Client |
- | Version 1.2.3 |
+ | Version 1.2.4 |
| |
| Copyright (C) 2005-2016, The Roundcube Dev Team |
| |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/installer/index.php new/roundcubemail-1.2.4/installer/index.php
--- old/roundcubemail-1.2.3/installer/index.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/installer/index.php 2017-03-10 17:41:11.000000000 +0100
@@ -3,7 +3,7 @@
/**
+-------------------------------------------------------------------------+
| Roundcube Webmail setup tool |
- | Version 1.2.3 |
+ | Version 1.2.4 |
| |
| Copyright (C) 2009-2016, The Roundcube Dev Team |
| |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/enigma/README new/roundcubemail-1.2.4/plugins/enigma/README
--- old/roundcubemail-1.2.3/plugins/enigma/README 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/enigma/README 2017-03-10 17:41:11.000000000 +0100
@@ -55,6 +55,12 @@
There are some know issues with accepting key passphrases on various
system configurations. This is caused by issues in PinEntry handling.
Make sure that vendor/bin/crypt-gpg-pinentry works from command line.
+
Possible reasons:
- non-supported GnuPG version, i.e. >= 2.1
- non-working loader in shebang (#! /usr/bin/env php)
+ Make sure it works for the user the php scripts are executed upon
+ (i.e. apache, www-date, etc.)
+- SELinux setting, try command: setsebool -P httpd_unified 0
+
+Note: for server use GnuPG developers still recommend version 1.4.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/enigma/lib/enigma_driver_gnupg.php new/roundcubemail-1.2.4/plugins/enigma/lib/enigma_driver_gnupg.php
--- old/roundcubemail-1.2.3/plugins/enigma/lib/enigma_driver_gnupg.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/enigma/lib/enigma_driver_gnupg.php 2017-03-10 17:41:11.000000000 +0100
@@ -281,6 +281,8 @@
*/
public function gen_key($data)
{
+ require_once 'Crypt/GPG/KeyGenerator.php';
+
try {
$debug = $this->rc->config->get('enigma_debug');
$keygen = new Crypt_GPG_KeyGenerator(array(
@@ -409,17 +411,20 @@
*/
protected function parse_signature($sig)
{
- $user = $sig->getUserId();
-
$data = new enigma_signature();
+
$data->id = $sig->getId();
$data->valid = $sig->isValid();
$data->fingerprint = $sig->getKeyFingerprint();
$data->created = $sig->getCreationDate();
$data->expires = $sig->getExpirationDate();
- $data->name = $user->getName();
- $data->comment = $user->getComment();
- $data->email = $user->getEmail();
+
+ // In case of ERRSIG user may not be set
+ if ($user = $sig->getUserId()) {
+ $data->name = $user->getName();
+ $data->comment = $user->getComment();
+ $data->email = $user->getEmail();
+ }
return $data;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/enigma/lib/enigma_engine.php new/roundcubemail-1.2.4/plugins/enigma/lib/enigma_engine.php
--- old/roundcubemail-1.2.3/plugins/enigma/lib/enigma_engine.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/enigma/lib/enigma_engine.php 2017-03-10 17:41:11.000000000 +0100
@@ -404,11 +404,6 @@
{
$part = $p['structure'];
- // exit, if we're already inside a decrypted message
- if (in_array($part->mime_id, $this->encrypted_parts)) {
- return;
- }
-
// Get message body from IMAP server
if ($body === null) {
$body = $this->get_part_body($p['object'], $part);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/managesieve/Changelog new/roundcubemail-1.2.4/plugins/managesieve/Changelog
--- old/roundcubemail-1.2.3/plugins/managesieve/Changelog 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/managesieve/Changelog 2017-03-10 17:41:11.000000000 +0100
@@ -1,3 +1,6 @@
+- Fix handling of scripts with nested rules (#5540)
+- Fix possible defect in handling \r\n in scripts (#5685)
+
* version 8.6 [2016-04-06]
-----------------------------------------------------------
- Refactored script parser to be 100x faster
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php new/roundcubemail-1.2.4/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php
--- old/roundcubemail-1.2.3/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php 2017-03-10 17:41:11.000000000 +0100
@@ -562,7 +562,8 @@
$prefix .= $line . "\n";
}
- $position = $endl + 1;
+ // skip empty lines after the comment (#5657)
+ $position = self::ltrim_position($script, $endl + 1);
}
// handle script header
@@ -805,6 +806,11 @@
$token = !empty($tokens) ? array_shift($tokens) : $separator;
switch ($token) {
+ case 'if':
+ // nested 'if' conditions, ignore the whole rule (#5540)
+ $this->_parse_actions($content, $position);
+ continue 2;
+
case 'discard':
case 'keep':
case 'stop':
@@ -890,8 +896,9 @@
break;
}
- if ($separator == $end)
+ if ($separator == $end) {
break;
+ }
}
return $result;
@@ -1208,7 +1215,7 @@
if ($str[$position] == "\n") {
$position++;
}
- else if ($str[$position] == "\r" && $str[$position] == "\n") {
+ else if ($str[$position] == "\r" && $str[$position + 1] == "\n") {
$position += 2;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/managesieve/tests/src/parser_nesting new/roundcubemail-1.2.4/plugins/managesieve/tests/src/parser_nesting
--- old/roundcubemail-1.2.3/plugins/managesieve/tests/src/parser_nesting 1970-01-01 01:00:00.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/managesieve/tests/src/parser_nesting 2017-03-10 17:41:12.000000000 +0100
@@ -0,0 +1,25 @@
+# Sieve Filter
+# Erzeugt von Ingo (http://www.horde.org/ingo/) (30.09.2016, 16:02)
+
+# Nested rules aren't supported and will be ignored (#5540)
+
+require ["vacation", "regex"];
+
+# Abwesenheit
+if allof ( not exists ["list-help", "list-unsubscribe", "list-subscribe", "list-owner", "list-post", "list-archive", "list-id", "Mailing-List"],
+ not header :is "Precedence" ["list", "bulk", "junk"],
+ not header :matches "To" "Multiple recipients of*") {
+ if header :regex "Received" "^.*(2016) (\\(.*\\) )?..:..:.. (\\(.*\\) )?(\\+|\\-)....( \\(.*\\))?$" {
+ if header :regex "Received" "^.*(Oct) (\\(.*\\) )?.... (\\(.*\\) )?..:..:.. (\\(.*\\) )?(\\+|\\-)....( \\(.*\\))?$" {
+ if header :regex "Received" "^.*([0 ]4|[0 ]5|[0 ]6|[0 ]7) (\\(.*\\) )?... (\\(.*\\) )?.... (\\(.*\\) )?..:..:.. (\\(.*\\) )?(\\+|\\-)....( \\(.*\\))?$" {
+ vacation :days 7 :addresses "test@company.com" :subject "vacation" "blablabla";
+}
+}
+}
+}
+
+# Ausgeschlossene Adressen
+if address :is ["From", "Sender", "Resent-From"] "noreply@example.org" {
+ discard;
+ stop;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/plugins/managesieve/tests/src/parser_nesting.out new/roundcubemail-1.2.4/plugins/managesieve/tests/src/parser_nesting.out
--- old/roundcubemail-1.2.3/plugins/managesieve/tests/src/parser_nesting.out 1970-01-01 01:00:00.000000000 +0100
+++ new/roundcubemail-1.2.4/plugins/managesieve/tests/src/parser_nesting.out 2017-03-10 17:41:12.000000000 +0100
@@ -0,0 +1,10 @@
+# Sieve Filter
+# Erzeugt von Ingo (http://www.horde.org/ingo/) (30.09.2016, 16:02)
+# Nested rules aren't supported and will be ignored (#5540)
+
+# rule:[Ausgeschlossene Adressen]
+if address :is ["From","Sender","Resent-From"] "noreply@example.org"
+{
+ discard;
+ stop;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/include/iniset.php new/roundcubemail-1.2.4/program/include/iniset.php
--- old/roundcubemail-1.2.3/program/include/iniset.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/program/include/iniset.php 2017-03-10 17:41:12.000000000 +0100
@@ -21,7 +21,7 @@
*/
// application constants
-define('RCMAIL_VERSION', '1.2.3');
+define('RCMAIL_VERSION', '1.2.4');
define('RCMAIL_START', microtime(true));
if (!defined('INSTALL_PATH')) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/js/app.js new/roundcubemail-1.2.4/program/js/app.js
--- old/roundcubemail-1.2.3/program/js/app.js 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/program/js/app.js 2017-03-10 17:41:12.000000000 +0100
@@ -339,8 +339,21 @@
// init message compose form
this.init_messageform();
}
- else if (this.env.action == 'get')
- this.enable_command('download', 'print', true);
+ else if (this.env.action == 'get') {
+ this.enable_command('download', true);
+
+ // Mozilla's PDF.js viewer does not allow printing from host page (#5125)
+ // to minimize user confusion we disable the Print button
+ if (bw.mz && this.env.mimetype == 'application/pdf') {
+ n = 0; // there will be two onload events, first for the preload page
+ $(this.gui_objects.messagepartframe).on('load', function() {
+ if (n++) try { this.contentWindow.document; ref.enable_command('print', true); }
+ catch (e) {/* ignore */}
+ });
+ }
+ else
+ this.enable_command('print', true);
+ }
// show printing dialog
else if (this.env.action == 'print' && this.env.uid
&& !this.env.is_pgp_content && !this.env.pgp_mime_part
@@ -3228,7 +3241,8 @@
var r_uids = [],
post_data = this.selection_post_data({_uid: this.uids_to_list(a_uids), _flag: 'delete'}),
lock = this.display_message(this.get_label('markingmessage'), 'loading'),
- rows = this.message_list ? this.message_list.rows : {},
+ list = this.message_list,
+ rows = list ? list.rows : {},
count = 0;
for (var i=0, len=a_uids.length; i 0)
@@ -3987,6 +4001,8 @@
// add signature according to selected identity
// if we have HTML editor, signature is added in a callback
if (input_from.prop('type') == 'select-one') {
+ // for some reason the caret initially is not at pos=0 in Firefox 51 (#5628)
+ this.set_caret_pos(input_message, 0);
this.change_identity(input_from[0]);
}
@@ -5572,6 +5588,9 @@
url._search = this.env.search_request;
this.http_request(this.env.task == 'mail' ? 'list-contacts' : 'list', url, lock);
+
+ if (this.env.task != 'mail')
+ this.update_state({_source: src, _page: page && page > 1 ? page : null, _gid: group});
};
this.list_contacts_clear = function()
@@ -5602,9 +5621,6 @@
boxtitle.append($('<span>').text(prop ? prop.name : this.get_label('contacts')));
}
-
- if (prop)
- this.triggerEvent('groupupdate', prop);
};
// load contact record
@@ -6030,6 +6046,7 @@
else {
$(this.treelist.get_item(key)).children().first().html(prop.name);
this.env.contactfolders[key].name = this.env.contactgroups[key].name = prop.name;
+ this.set_group_prop(prop);
}
// update list node and re-sort it
@@ -6502,7 +6519,7 @@
.addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
.addEventListener('expand', function(node) { ref.folder_collapsed(node) })
.addEventListener('search', function(p) { if (p.query) ref.subscription_select(); })
- .draggable({cancel: 'li.mailbox.root'})
+ .draggable({cancel: 'li.mailbox.root,input,div.treetoggle'})
.droppable({
// @todo: find better way, accept callback is executed for every folder
// on the list when dragging starts (and stops), this is slow, but
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/js/app.min.js new/roundcubemail-1.2.4/program/js/app.min.js
--- old/roundcubemail-1.2.3/program/js/app.min.js 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/program/js/app.min.js 2017-03-10 17:41:12.000000000 +0100
@@ -45,129 +45,129 @@
this.href,d=a.originalEvent.dataTransfer;d&&(b=b.replace(/^https?:\/\//,function(a){return a+urlencode(f.env.username)+"@"}),a=$(this).clone(),a.children().remove(),d.setData("roundcube-uri",b),d.setData("roundcube-name",$.trim(a.text())))})}else"compose"==this.env.action?(this.env.address_group_stack=[],this.env.compose_commands="send-attachment remove-attachment send cancel toggle-editor list-addresses pushgroup search reset-search extwin insert-response save-response menu-open menu-close".split(" "),
this.env.drafts_mailbox&&this.env.compose_commands.push("savedraft"),this.enable_command(this.env.compose_commands,"identities","responses",!0),$.merge(this.env.compose_commands,["add-recipient","firstpage","previouspage","nextpage","lastpage"]),window.googie&&(this.env.editor_config.spellchecker=googie,this.env.editor_config.spellcheck_observer=function(a){f.spellcheck_state()},this.env.compose_commands.push("spellcheck"),this.enable_command("spellcheck",!0)),this.editor_init(this.env.editor_config,
this.env.composebody),this.gui_objects.responseslist&&($("a.insertresponse",this.gui_objects.responseslist).attr("unselectable","on").mousedown(function(a){return rcube_event.cancel(a)}).on("mouseup keypress",function(a){if("mouseup"==a.type||13==rcube_event.get_keycode(a))return f.command("insert-response",$(this).attr("rel")),$(document.body).trigger("mouseup"),rcube_event.cancel(a)}),$.each(this.buttons["save-response"]||[],function(a,b){$("#"+b.id).mousedown(function(a){return rcube_event.cancel(a)})})),
-this.init_messageform()):"get"==this.env.action?this.enable_command("download","print",!0):"print"!=this.env.action||!this.env.uid||this.env.is_pgp_content||this.env.pgp_mime_part||this.print_dialog();this.gui_objects.mailboxlist&&(this.env.unread_counts={},this.gui_objects.folderlist=this.gui_objects.mailboxlist,this.http_request("getunread",{_page:this.env.current_page}));this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:!1,
-keyboard:!0}),this.contact_list.addEventListener("initrow",function(a){f.triggerEvent("insertrow",{cid:a.uid,row:a})}).addEventListener("select",function(a){f.compose_recipient_select(a)}).addEventListener("dblclick",function(a){f.compose_add_recipient()}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&(f.compose_add_recipient()||a.last_selected&&"G"==String(a.last_selected).charAt(0)&&$(a.rows[a.last_selected].obj).find("a").first().click())}).init(),$("#_to,#_cc,#_bcc").focus(function(){f.env.focused_field=
-this}));this.gui_objects.addressbookslist&&(this.gui_objects.folderlist=this.gui_objects.addressbookslist,this.enable_command("list-addresses",!0));if(this.env.mdn_request&&this.env.uid){var d="sendmdn",e={_uid:this.env.uid,_mbox:this.env.mailbox};confirm(this.get_label("mdnrequest"))||(e._flag="mdnsent",d="mark");this.http_post(d,e)}this.check_mailvelope(this.env.action);this.is_framed()||this.env.extwin||this.browser_capabilities_check();break;case "addressbook":this.env.address_group_stack=[];
-this.gui_objects.folderlist&&(this.env.contactfolders=$.extend($.extend({},this.env.address_sources),this.env.contactgroups));this.enable_command("add","import",this.env.writable_source);this.enable_command("list","listgroup","pushgroup","popgroup","listsearch","search","reset-search","advanced-search",!0);this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:this.gui_objects.folderlist?!0:!1,keyboard:!0}),this.contact_list.addEventListener("initrow",
-function(a){f.triggerEvent("insertrow",{cid:a.uid,row:a})}).addEventListener("keypress",function(a){f.contactlist_keypress(a)}).addEventListener("select",function(a){f.contactlist_select(a)}).addEventListener("dragstart",function(a){f.drag_start(a)}).addEventListener("dragmove",function(a){f.drag_move(a)}).addEventListener("dragend",function(a){f.drag_end(a)}).init(),$(this.gui_objects.qsearchbox).focusin(function(){f.contact_list.blur()}),this.update_group_commands(),this.command("list"));this.gui_objects.savedsearchlist&&
-(this.savedsearchlist=new rcube_treelist_widget(this.gui_objects.savedsearchlist,{id_prefix:"rcmli",id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode}),this.savedsearchlist.addEventListener("select",function(a){f.triggerEvent("selectfolder",{folder:a.id,prefix:"rcmli"})}));this.set_page_buttons();this.env.cid&&(this.enable_command("show","edit",!0),this.gui_objects.editform&&$("input.groupmember").change(function(){f.group_member_change(this.checked?"add":"del",f.env.cid,
-f.env.source,this.value)}));this.gui_objects.editform?(this.enable_command("save",!0),"add"!=this.env.action&&"edit"!=this.env.action&&"search"!=this.env.action||this.init_contact_form()):"print"==this.env.action&&this.print_dialog();break;case "settings":this.enable_command("preferences","identities","responses","save","folders",!0);"identities"==this.env.action?this.enable_command("add",2>this.env.identities_level):"edit-identity"==this.env.action||"add-identity"==this.env.action?(this.enable_command("save",
-"edit","toggle-editor",!0),this.enable_command("delete",2>this.env.identities_level),this.editor_init(this.env.editor_config,"rcmfd_signature")):"folders"==this.env.action?this.enable_command("subscribe","unsubscribe","create-folder","rename-folder",!0):"edit-folder"==this.env.action&&this.gui_objects.editform?(this.enable_command("save","folder-size",!0),parent.rcmail.env.exists=this.env.messagecount,parent.rcmail.enable_command("purge",this.env.messagecount)):"responses"==this.env.action&&this.enable_command("add",
-!0);this.gui_objects.identitieslist?(this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.identity_list.addEventListener("select",function(a){f.identity_select(a)}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&f.identity_select(a)}).init().focus()):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.sections_list.addEventListener("select",
-function(a){f.section_select(a)}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&f.section_select(a)}).init().focus()):this.gui_objects.subscriptionlist?this.init_subscription_list():this.gui_objects.responseslist&&(this.responses_list=new rcube_list_widget(this.gui_objects.responseslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.responses_list.addEventListener("select",function(a){var b;a=a.get_single_selection();f.enable_command("delete",!!a&&0>$.inArray(a,f.env.readonly_responses));
-a&&(b=f.get_frame_window(f.env.contentframe))&&(f.set_busy(!0),f.location_href({_action:"edit-response",_key:a,_framed:1},b))}).init().focus());break;case "login":var g=window.jstz,h=$("#rcmloginuser"),k=$("#rcmlogintz");h.keyup(function(a){return f.login_user_keyup(a)});""==h.val()?h.focus():$("#rcmloginpwd").focus();g&&(d=g.determine())&&(e=d.name());k.val(e?e:(new Date).getStdTimezoneOffset()/-60);$("form").submit(function(){$("input[type=submit]",this).prop("disabled",!0);f.clear_messages();f.display_message("",
-"loading")});this.enable_command("login",!0)}this.gui_objects.editform&&$("input,select,textarea",this.gui_objects.editform).not(":hidden").not(":disabled").first().select().focus();this.env.contentframe&&!$("#"+this.env.contentframe).is(":visible")&&(this.env.contentframe=null);bw.ie&&$("input[type=file]").keydown(function(a){"13"==a.keyCode&&a.preventDefault()});this.loaded=!0;this.env.lastrefresh=new Date;this.pending_message&&this.display_message.apply(this,this.pending_message);this.gui_objects.folderlist&&
-window.rcube_treelist_widget&&this.gui_objects.folderlist!=this.gui_objects.addressbookslist&&(this.treelist=new rcube_treelist_widget(this.gui_objects.folderlist,{selectable:!0,id_prefix:"rcmli",parent_focus:!0,id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode,check_droptarget:function(a){return!a.virtual&&f.check_droptarget(a.id)}}),this.treelist.addEventListener("collapse",function(a){f.folder_collapsed(a)}).addEventListener("expand",function(a){f.folder_collapsed(a)}).addEventListener("beforeselect",
-function(a){return!f.busy}).addEventListener("select",function(a){f.triggerEvent("selectfolder",{folder:a.id,prefix:"rcmli"})}));this.gui_objects.filedrop&&this.env.filedrop&&(window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.sendAsBinary||window.FormData)&&($(document.body).on("dragover dragleave drop",function(a){return f.document_drag_hover(a,"dragover"==a.type)}),$(this.gui_objects.filedrop).addClass("droptarget").on("dragover dragleave",function(a){return f.file_drag_hover(a,
-"dragover"==a.type)}).get(0).addEventListener("drop",function(a){return f.file_dropped(a)},!1));d=function(a){return f.doc_mouse_up(a)};$(document.body).mouseup(d).keydown(function(a){return f.doc_keypress(a)});rcube_webmail.set_iframe_events({mouseup:d});this.triggerEvent("init",{task:this.task,action:this.env.action});for(a in this.onloads)if("string"===typeof this.onloads[a])eval(this.onloads[a]);else if("function"===typeof this.onloads[a])this.onloads[a]();this.start_refresh();this.start_keepalive()}else this.goto_url("error",
-"_code=0x199")};this.log=function(a){window.console&&console.log&&console.log(a)};this.command=function(a,b,d,e){var g,h,k,l=!1;!d||!d.blur||e&&rcube_event.is_keyboard(e)||d.blur();if(this.busy&&("reset-search"!=a||"search"!=this.last_command)&&!a.match(/^menu-/))return!1;if(d&&d.href&&0>String(d.href).indexOf("#")&&rcube_event.get_modifier(e))return!0;if(!this.commands[a])return this.is_framed()&&parent.rcmail.command(a,b),!1;if("mail"==this.task&&"compose"==this.env.action&&!this.env.server_error&&
-"save-pref"!=a&&0>$.inArray(a,this.env.compose_commands)){if(!this.env.is_sent&&this.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning")))return!1;this.remove_compose_data(this.env.compose_id);this.compose_skip_unsavedcheck=!0}this.last_command=a;if("function"===typeof this.command_handlers[a])return g=this.command_handlers[a](b,d,e),void 0!==g?g:d?!1:!0;if("string"===typeof this.command_handlers[a])return g=window[this.command_handlers[a]](b,d,e),void 0!==g?g:d?!1:!0;this.triggerEvent("actionbefore",
-{props:b,action:a,originalEvent:e});g=this.triggerEvent("before"+a,b||e);if(void 0!==g){if(!1===g)return!1;b=g}g=void 0;switch(a){case "login":this.gui_objects.loginform&&this.gui_objects.loginform.submit();break;case "logout":case "mail":case "addressbook":case "settings":this.switch_task(a);break;case "about":this.redirect("?_task=settings&_action=about",!1);break;case "permaurl":if(d&&d.href&&d.target)return!0;this.env.permaurl&&(parent.location.href=this.env.permaurl);break;case "extwin":if("compose"==
-this.env.action){if(e=this.gui_objects.messageform,h=this.open_window(""))this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0,$("input[name='_action']",e).val("compose"),e.action=this.url("mail/compose",{_id:this.env.compose_id,_extwin:1}),e.target=h.name,e.submit()}else this.open_window(this.env.permaurl,!0);break;case "change-format":e=this.env.permaurl+"&_format="+b;"preview"==this.env.action&&(e=e.replace(/_action=show/,"_action=preview")+"&_framed=1");this.env.extwin&&(e+="&_extwin=1");
-location.href=e;break;case "menu-open":b&&"attachmentmenu"==b.menu&&(h=this.env.attachments[b.id],this.enable_command("open-attachment",h&&this.env.mimetypes&&0<=$.inArray(h,this.env.mimetypes)));this.show_menu(b,b.show||void 0,e);break;case "menu-close":this.hide_menu(b,e);break;case "menu-save":return this.triggerEvent(a,{props:b,originalEvent:e}),!1;case "open":if(h=this.get_single_uid())return d.href=this.url("show",this.params_from_uid(h)),!0;break;case "close":this.env.extwin&&window.close();
-break;case "list":b&&""!=b&&this.reset_qsearch(!0);"compose"==this.env.action&&this.env.extwin?window.close():"mail"==this.task?(this.list_mailbox(b),this.set_button_titles()):"addressbook"==this.task&&this.list_contacts(b);break;case "set-listmode":this.set_list_options(null,void 0,void 0,"threads"==b?1:0);break;case "sort":e=this.env.sort_order;h=this.env.disabled_sort_col?this.env.sort_col:b;this.env.disabled_sort_order||(e=this.env.sort_col==h&&"ASC"==e?"DESC":"ASC");this.set_list_sorting(h,e);
-this.list_mailbox("","",h+"_"+e);break;case "nextpage":this.list_page("next");break;case "lastpage":this.list_page("last");break;case "previouspage":this.list_page("prev");break;case "firstpage":this.list_page("first");break;case "expunge":this.env.exists&&this.expunge_mailbox(this.env.mailbox);break;case "purge":case "empty-mailbox":this.env.exists&&this.purge_mailbox(this.env.mailbox);break;case "show":"mail"==this.task?(h=this.get_single_uid(),!h||this.env.uid&&h==this.env.uid||(this.env.mailbox==
-this.env.drafts_mailbox?this.open_compose_step({_draft_uid:h,_mbox:this.env.mailbox}):this.show_message(h))):"addressbook"==this.task&&(k=b?b:this.get_single_cid(),!k||"show"==this.env.action&&k==this.env.cid||this.load_contact(k,"show"));break;case "add":if("addressbook"==this.task)this.load_contact(0,"add");else if("settings"==this.task&&"responses"==this.env.action){if(e=this.get_frame_window(this.env.contentframe))this.set_busy(!0),this.location_href({_action:"add-response",_framed:1},e)}else"settings"==
-this.task&&(this.identity_list.clear_selection(),this.load_identity(0,"add-identity"));break;case "edit":"addressbook"==this.task&&(k=this.get_single_cid())?this.load_contact(k,"edit"):"settings"==this.task&&b?this.load_identity(b,"edit-identity"):"mail"==this.task&&(h=this.get_single_uid())&&(e={_mbox:this.get_message_mailbox(h)},e[this.env.mailbox==this.env.drafts_mailbox&&"new"!=b?"_draft_uid":"_uid"]=h,this.open_compose_step(e));break;case "save":var m;if(e=this.gui_objects.editform){if("search"!=
-this.env.action)if((m=$("input[name='_pagesize']",e))&&m.length&&isNaN(parseInt(m.val()))){alert(this.get_label("nopagesizewarning"));m.focus();break}else{if("reload"==b)e.action+="&_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(m=$("input[name='_email']",e))&&m.length&&!rcube_check_email(m.val())){alert(this.get_label("noemailwarning"));m.focus();break}$("input.placeholder").each(function(){this.value==this._placeholder&&(this.value="")})}parent.rcmail&&parent.rcmail.env.source&&
-(e.action=this.add_url(e.action,"_orig_source",parent.rcmail.env.source));e.submit()}break;case "delete":"mail"==this.task?this.delete_messages(e):"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&"responses"==this.env.action?this.delete_response():"settings"==this.task&&this.delete_identity();break;case "move":case "moveto":"mail"==this.task?this.move_messages(b,e):"addressbook"==this.task&&this.move_contacts(b);break;case "copy":"mail"==this.task?this.copy_messages(b,e):"addressbook"==
-this.task&&this.copy_contacts(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":case "toggle_flag":e="toggle_flag"==a?"flagged":"read";if(h=b)"flagged"==e?this.message_list.rows[h].flagged&&(e="unflagged"):this.message_list.rows[h].deleted?e="undelete":this.message_list.rows[h].unread||(e="unread"),this.mark_message(e,h);break;case "always-load":if(this.env.uid&&this.env.sender){this.add_contact(this.env.sender);setTimeout(function(){f.command("load-images")},300);break}case "load-images":this.env.uid&&
-this.show_message(this.env.uid,!0,"preview"==this.env.action);break;case "load-attachment":case "open-attachment":case "download-attachment":e="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b;h=this.env.attachments[b];if("download-attachment"!=a&&h&&this.env.mimetypes&&0<=$.inArray(h,this.env.mimetypes)&&this.open_window(this.env.comm_path+"&_action=get&"+e+"&_frame=1"))break;this.goto_url("get",e+"&_download=1",!1,!0);break;case "select-all":this.select_all_mode=b?!1:!0;this.dummy_select=
-!0;"invert"==b?this.message_list.invert_selection():this.message_list.select_all("page"==b?"":b);this.dummy_select=null;break;case "select-none":this.select_all_mode=!1;this.message_list.clear_selection();break;case "expand-all":this.env.autoexpand_threads=1;this.message_list.expand_all();break;case "expand-unread":this.env.autoexpand_threads=2;this.message_list.collapse_all();this.expand_unread();break;case "collapse-all":this.env.autoexpand_threads=0;this.message_list.collapse_all();break;case "nextmessage":this.env.next_uid&&
-this.show_message(this.env.next_uid,!1,"preview"==this.env.action);break;case "lastmessage":this.env.last_uid&&this.show_message(this.env.last_uid);break;case "previousmessage":this.env.prev_uid&&this.show_message(this.env.prev_uid,!1,"preview"==this.env.action);break;case "firstmessage":this.env.first_uid&&this.show_message(this.env.first_uid);break;case "compose":e={};if("mail"==this.task)e={_mbox:this.env.mailbox,_search:this.env.search_request},b&&(e._to=b);else if("addressbook"==this.task)if(b&&
-0a?"prevAll":"nextAll",e=0>a?"last":"first";return f.focused_menu&&(b=$("#"+f.focused_menu))?(a=b.find(":focus").closest("li")[d](":has(:not([aria-disabled=true]))").find("a,input")[e](),a.length||(a=b.find(":focus").closest("ul")[d](":has(:not([aria-disabled=true]))").find("a,input")[e]()),a.focus().length):0},d=a.target||{},e=rcube_event.get_keycode(a);rcube_event._last_keyboard_event=
-a;if(27!=a.keyCode&&(!this.menu_keyboard_active||"TEXTAREA"==d.nodeName||"SELECT"==d.nodeName))return!0;switch(e){case 38:case 40:case 63232:case 63233:return b(38==e||63232==e?-1:1),rcube_event.cancel(a);case 9:return this.focused_menu&&(d=rcube_event.get_modifier(a),b(d==SHIFT_KEY?-1:1)||this.hide_menu(this.focused_menu,a)),rcube_event.cancel(a);case 27:this.menu_stack.length&&this.hide_menu(this.menu_stack[this.menu_stack.length-1],a)}return!0};this.msglist_select=function(a){this.preview_timer&&
-clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);var b=a.get_single_selection();this.enable_command(this.env.message_commands,null!=b);b&&(this.env.mailbox==this.env.drafts_mailbox?this.enable_command("reply","reply-all","reply-list","forward","forward-attachment","forward-inline",!1):this.env.messages[b].ml||this.enable_command("reply-list",!1));this.enable_command("delete","move","copy","mark","forward","forward-attachment",0 </div>',v+=" thread"+(f.expanded?" expanded":"")),d.unread_children&&d.seen&&!f.expanded&&(v+=" unroot"));n+='<span id="msgicn'+w.id+'" class="'+g+l+'" title="'+m+'"></span>';w.className=v;b.subject&&(g=d.mbox==this.env.drafts_mailbox?"compose":"show",m={_mbox:d.mbox},m[d.mbox==
-this.env.drafts_mailbox?"_draft_uid":"_uid"]=a,b.subject='<a href="'+this.url(g,m)+'" onclick="return rcube_event.keyboard_only(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(f.depth+1)+')" tabindex="-1"><span>'+b.subject+"</span></a>");for(h in this.env.listcols)g=this.env.listcols[h],a={className:String(g).toLowerCase(),events:{}},this.env.coltypes[g]&&this.env.coltypes[g].hidden&&(a.className+=" hidden"),"flag"==g?(g=d.flagged?"flagged":"unflagged",f=this.get_label(g),g='<span id="flagicn'+
-w.id+'" class="'+g+'" title="'+f+'"></span>'):"attachment"==g?(f=this.get_label("withattachment"),g=d.attachmentClass?'<span class="'+d.attachmentClass+'" title="'+f+'"></span>':/application\/|multipart\/(m|signed)/.test(d.ctype)?'<span class="attachment" title="'+f+'"></span>':/multipart\/report/.test(d.ctype)?'<span class="report"></span>':" "):"status"==g?(f="",d.deleted?(g="deleted",f=this.get_label("deleted")):d.seen?g=0d.prio?(f=this.get_label("priority")+" "+d.prio,g='<span class="prio'+d.prio+'" title="'+f+'"></span>'):g=" ":g="folder"==g?'<span onmouseover="rcube_webmail.long_subject_title(this)">'+b[g]+"<span>":b[g],a.innerHTML=g,w.cols.push(a);q.insert_row(w,e);e&&this.env.pagesize&&q.rowcount>
-this.env.pagesize&&(a=q.get_last_row(),q.remove_row(a),q.clear_selection(a))};this.set_list_sorting=function(a,b){var d="arrival"==a?"date":a;$("#rcm"+("arrival"==this.env.sort_col?"date":this.env.sort_col)).removeClass("sorted"+this.env.sort_order.toUpperCase());d&&$("#rcm"+d).addClass("sorted"+b);$("#rcmdate > a").prop("rel","arrival"==a?"arrival":"date");this.env.sort_col=a;this.env.sort_order=b};this.set_list_options=function(a,b,d,e){var g,h={};void 0===b&&(b=this.env.sort_col);d||(d=this.env.sort_order);
-if(this.env.sort_col!=b||this.env.sort_order!=d)g=1,this.set_list_sorting(b,d);this.env.threading!=e&&(g=1,h._threads=e);if(a&&a.length){var f,l,m=[],n=this.env.listcols;for(e=0;ed.location.href.indexOf(this.env.blankpage)&&(d.stop?d.stop():d.document.execCommand("Stop"),d.location.href=this.env.blankpage);else if(!bw.safari&&!bw.konq)$(b)[a?"show":"hide"]();!a&&this.env.frame_lock&&this.set_busy(!1,null,this.env.frame_lock)};this.get_frame_element=function(a){var b;if(a&&(b=document.getElementById(a)))return b};this.get_frame_window=function(a){if((a=this.get_frame_element(a))&&
-a.name&&window.frames)return window.frames[a.name]};this.lock_frame=function(){this.env.frame_lock||((this.is_framed()?parent.rcmail:this).env.frame_lock=this.set_busy(!0,"loading"))};this.list_page=function(a){"next"==a?a=this.env.current_page+1:"last"==a?a=this.env.pagecount:"prev"==a&&1d.depth?(g=e-d.depth,h[b][g]&2||(h[b][g]=h[b][g]?h[b][g]+2:2)):e==d.depth&&(h[b][0]&
-2||(h[b][0]+=2)),d.depth>e);b--);h.push(Array(d.depth));h[h.length-1][0]=1;f.push(d.uid)}else{if(h.length){for(b in h)this.set_tree_icons(f[b],h[b]);h=[];f=[]}if(a&&l!=m[a].obj)break}l=l.nextSibling}if(h.length)for(b in h)this.set_tree_icons(f[b],h[b])};this.set_tree_icons=function(a,b){var d,e=[],g="",h=b.length;for(d=0;d'):g+('<div style="width:'+e[d].width+'px" />');g&&$("#rcmtab"+this.html_identifier(a,!0)).html(g)};this.update_thread_root=function(a,b){if(this.env.threading){var d=this.message_list.find_root(a);if(a!=d){var e=this.message_list.rows[d];if("read"==b&&e.unread_children)e.unread_children--;else if("unread"==b&&e.has_children)e.unread_children=e.unread_children?e.unread_children+1:
-1;else return;this.set_message_icon(d);this.set_unread_children(d)}}};this.update_thread=function(a){if(!this.env.threading)return 0;var b,d=0,e=this.message_list.rows,g=e[a],h=e[a].depth,k=[];g.depth?g.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=g.parent_uid;for(g=g.obj.nextSibling;g;){if(1==g.nodeType&&(b=e[g.uid])){if(!b.depth||b.depth<=h)break;b.depth--;$("#rcmtab"+b.id).width(15*b.depth).html("");b.depth?(b.depth==h&&(b.parent_uid=a),b.unread&&
-k.length&&k[k.length-1].unread_children++):(d++,b.parent_uid=0,b.has_children&&($("#"+b.id+" .leaf:first").attr("id","rcmexpando"+b.id).attr("class","none"!=b.obj.style.display?"expanded":"collapsed").mousedown({uid:b.uid},function(a){return f.expand_message_row(a,a.data.uid)}),b.unread_children=0,k.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}g=g.nextSibling}for(b=0;b$.inArray(l,m)&&m.push(l)),g&&this.message_list.remove_row(f,this.env.display_next&&h==n.length-1);
-!this.env.display_next&&g&&this.message_list.clear_selection();h=0;for(len=m.length;he?b._count=-1*e:0h?d._count=
--1*h:0=a.length?a.join(","):
-a};this.set_button_titles=function(){var a="deletemessage";this.env.flag_for_deletion||!this.env.trash_mailbox||this.env.mailbox==this.env.trash_mailbox||this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox||(a="movemessagetotrash");this.set_alttext("delete",a)};this.init_pagejumper=function(a){$(a).addClass("rcpagejumper").on("focus",function(b){var d,e="";for(d=1;d<=f.env.pagecount;d++)e+="<li>"+d+"</li>";e='<ul class="toolbarmenu">'+e+"</ul>";f.pagejump||(f.pagejump=
-$('<div id="pagejump-selector" class="popupmenu"></div>').appendTo(document.body).on("click","li",function(){f.busy||$(a).val($(this).text()).change()}));f.pagejump.data("count")!=d&&f.pagejump.html(e);f.pagejump.attr("rel","#"+this.id).data("count",d);f.show_menu("pagejump-selector",!0,b);$(this).keydown()}).on("keydown keyup click",function(b){var d=$("#pagejump-selector"),e=$("ul",d),g=$("li",e);e.height();var h=parseInt(this.value);if(27!=b.which&&9!=b.which&&13!=b.which&&!d.is(":visible"))return f.show_menu("pagejump-selector",
-!0,b);if("keydown"==b.type)if(40==b.which)g.length>h&&(this.value=h+=1);else if(38==b.which)1h-1&&(this.value=h-=1);else{if(13==b.which)return $(this).change();if(27==b.which||9==b.which)return $(a).val(f.env.current_page)}$("li.selected",e).removeClass("selected");(b=$(g[h-1])).length&&(b.addClass("selected"),$("#pagejump-selector").scrollTop(e.height()/g.length*(h-1)-d.height()/2))}).on("change",function(a){(a=parseInt(this.value))&&a!=f.env.current_page&&!f.busy&&(f.hide_menu("pagejump-selector"),
-f.list_page(a))})};this.update_pagejumper=function(){$("input.rcpagejumper").val(this.env.current_page).prop("disabled",2>this.env.pagecount)};this.check_mailvelope=function(a){if("undefined"!==typeof window.mailvelope)this.mailvelope_load(a);else $(window).on("mailvelope",function(){f.mailvelope_load(a)})};this.mailvelope_load=function(a){this.env.browser_capabilities&&(this.env.browser_capabilities.pgpmime=1);var b=this.env.user_id;mailvelope.getKeyring(b).then(function(b){f.mailvelope_keyring=
-b;f.mailvelope_init(a,b)},function(d){mailvelope.createKeyring(b).then(function(b){f.mailvelope_keyring=b;f.mailvelope_init(a,b)},function(a){console.error(a)})})};this.mailvelope_init=function(a,b){if(window.mailvelope)if("show"==a||"preview"==a||"print"==a)if(this.env.is_pgp_content){var d=$(this.env.is_pgp_content).text();f.mailvelope_display_container(this.env.is_pgp_content,d,b)}else{if(this.env.pgp_mime_part){var e=this.display_message(this.get_label("loadingdata"),"loading"),g=this.env.pgp_mime_container;
-$.ajax({type:"GET",url:this.url("get",{_mbox:this.env.mailbox,_uid:this.env.uid,_part:this.env.pgp_mime_part}),error:function(a,b,d){f.http_error(a,b,d,e)},success:function(a){f.mailvelope_display_container(g,a,b,e)}})}}else if("compose"==a){this.env.compose_commands.push("compose-encrypted");var h=0<$('input[name="_is_html"]').val();if(this.env.pgp_mime_message){var k=this.set_busy(!0,this.get_label("loadingdata"));$.ajax({type:"GET",url:this.url("get",this.env.pgp_mime_message),error:function(a,
-b,d){f.http_error(a,b,d,k);f.enable_command("compose-encrypted",!h)},success:function(a){f.set_busy(!1,null,k);h&&(f.command("toggle-editor",{html:!1,noconvert:!0}),$("#"+f.env.composebody).val(""));f.compose_encrypted({quotedMail:a});f.enable_command("compose-encrypted",!0)}})}else this.enable_command("compose-encrypted",!h);this.addEventListener("actionafter",function(a){a.ret&&"toggle-editor"==a.action&&f.enable_command("compose-encrypted",!a.props.html)})}};this.compose_encrypted=function(a){var b,
-d=$("#"+this.env.composebody).parent();f.mailvelope_editor?(f.mailvelope_editor=null,f.compose_skip_unsavedcheck=!1,f.set_button("compose-encrypted","act"),d.removeClass("mailvelope").find("iframe:not([aria-hidden=true])").remove(),$("#"+f.env.composebody).show(),$("[name='_pgpmime']").remove(),f.enable_command("spellcheck","insert-sig","toggle-editor","insert-response","save-response",!0),f.triggerEvent("compose-encrypted",{active:!1})):(this.spellcheck_state()&&this.editor.spellcheck_stop(),b=a.quotedMail?
-{quotedMail:a.quotedMail,quotedMailIndent:!1}:{predefinedText:$("#"+this.env.composebody).val()},"reply"==this.env.compose_mode&&(b.quotedMailIndent=!0,b.quotedMailHeader=this.env.compose_reply_header),mailvelope.createEditorContainer("#"+d.attr("id"),f.mailvelope_keyring,b).then(function(a){f.mailvelope_editor=a;f.compose_skip_unsavedcheck=!0;f.set_button("compose-encrypted","sel");d.addClass("mailvelope");$("#"+f.env.composebody).hide();f.enable_command("spellcheck","insert-sig","toggle-editor",
-"insert-response","save-response",!1);f.triggerEvent("compose-encrypted",{active:!0});f.env.attachments&&!$.isEmptyObject(f.env.attachments)&&(alert(f.get_label("encryptnoattachments")),$.each(f.env.attachments,function(a,b){f.remove_from_attachment_list(a)}))},function(a){console.error(a);console.log(b)}))};this.mailvelope_submit_messageform=function(a,b){var d=[];$.each(["to","cc","bcc"],function(a,b){for(var e,f=$.trim($('[name="_'+b+'"]').val());f.length&&rcube_check_email(f,!0);)e=RegExp.$2,
-d.push(e),f=f.substr(f.indexOf(e)+e.length+1).replace(/^\s*,\s*/,"")});var e=0this.env.identities_level):"edit-identity"==this.env.action||"add-identity"==this.env.action?(this.enable_command("save","edit","toggle-editor",!0),this.enable_command("delete",2>this.env.identities_level),this.editor_init(this.env.editor_config,"rcmfd_signature")):"folders"==this.env.action?this.enable_command("subscribe","unsubscribe","create-folder","rename-folder",!0):"edit-folder"==this.env.action&&
+this.gui_objects.editform?(this.enable_command("save","folder-size",!0),parent.rcmail.env.exists=this.env.messagecount,parent.rcmail.enable_command("purge",this.env.messagecount)):"responses"==this.env.action&&this.enable_command("add",!0);this.gui_objects.identitieslist?(this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.identity_list.addEventListener("select",function(a){f.identity_select(a)}).addEventListener("keypress",function(a){a.key_pressed==
+a.ENTER_KEY&&f.identity_select(a)}).init().focus()):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.sections_list.addEventListener("select",function(a){f.section_select(a)}).addEventListener("keypress",function(a){a.key_pressed==a.ENTER_KEY&&f.section_select(a)}).init().focus()):this.gui_objects.subscriptionlist?this.init_subscription_list():this.gui_objects.responseslist&&(this.responses_list=new rcube_list_widget(this.gui_objects.responseslist,
+{multiselect:!1,draggable:!1,keyboard:!0}),this.responses_list.addEventListener("select",function(a){var b;a=a.get_single_selection();f.enable_command("delete",!!a&&0>$.inArray(a,f.env.readonly_responses));a&&(b=f.get_frame_window(f.env.contentframe))&&(f.set_busy(!0),f.location_href({_action:"edit-response",_key:a,_framed:1},b))}).init().focus());break;case "login":var g=window.jstz,h=$("#rcmloginuser"),k=$("#rcmlogintz");h.keyup(function(a){return f.login_user_keyup(a)});""==h.val()?h.focus():$("#rcmloginpwd").focus();
+g&&(d=g.determine())&&(e=d.name());k.val(e?e:(new Date).getStdTimezoneOffset()/-60);$("form").submit(function(){$("input[type=submit]",this).prop("disabled",!0);f.clear_messages();f.display_message("","loading")});this.enable_command("login",!0)}this.gui_objects.editform&&$("input,select,textarea",this.gui_objects.editform).not(":hidden").not(":disabled").first().select().focus();this.env.contentframe&&!$("#"+this.env.contentframe).is(":visible")&&(this.env.contentframe=null);bw.ie&&$("input[type=file]").keydown(function(a){"13"==
+a.keyCode&&a.preventDefault()});this.loaded=!0;this.env.lastrefresh=new Date;this.pending_message&&this.display_message.apply(this,this.pending_message);this.gui_objects.folderlist&&window.rcube_treelist_widget&&this.gui_objects.folderlist!=this.gui_objects.addressbookslist&&(this.treelist=new rcube_treelist_widget(this.gui_objects.folderlist,{selectable:!0,id_prefix:"rcmli",parent_focus:!0,id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode,check_droptarget:function(a){return!a.virtual&&
+f.check_droptarget(a.id)}}),this.treelist.addEventListener("collapse",function(a){f.folder_collapsed(a)}).addEventListener("expand",function(a){f.folder_collapsed(a)}).addEventListener("beforeselect",function(a){return!f.busy}).addEventListener("select",function(a){f.triggerEvent("selectfolder",{folder:a.id,prefix:"rcmli"})}));this.gui_objects.filedrop&&this.env.filedrop&&(window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.sendAsBinary||window.FormData)&&($(document.body).on("dragover dragleave drop",
+function(a){return f.document_drag_hover(a,"dragover"==a.type)}),$(this.gui_objects.filedrop).addClass("droptarget").on("dragover dragleave",function(a){return f.file_drag_hover(a,"dragover"==a.type)}).get(0).addEventListener("drop",function(a){return f.file_dropped(a)},!1));d=function(a){return f.doc_mouse_up(a)};$(document.body).mouseup(d).keydown(function(a){return f.doc_keypress(a)});rcube_webmail.set_iframe_events({mouseup:d});this.triggerEvent("init",{task:this.task,action:this.env.action});
+for(a in this.onloads)if("string"===typeof this.onloads[a])eval(this.onloads[a]);else if("function"===typeof this.onloads[a])this.onloads[a]();this.start_refresh();this.start_keepalive()}else this.goto_url("error","_code=0x199")};this.log=function(a){window.console&&console.log&&console.log(a)};this.command=function(a,b,d,e){var g,h,k,l=!1;!d||!d.blur||e&&rcube_event.is_keyboard(e)||d.blur();if(this.busy&&("reset-search"!=a||"search"!=this.last_command)&&!a.match(/^menu-/))return!1;if(d&&d.href&&
+0>String(d.href).indexOf("#")&&rcube_event.get_modifier(e))return!0;if(!this.commands[a])return this.is_framed()&&parent.rcmail.command(a,b),!1;if("mail"==this.task&&"compose"==this.env.action&&!this.env.server_error&&"save-pref"!=a&&0>$.inArray(a,this.env.compose_commands)){if(!this.env.is_sent&&this.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning")))return!1;this.remove_compose_data(this.env.compose_id);this.compose_skip_unsavedcheck=!0}this.last_command=a;if("function"===
+typeof this.command_handlers[a])return g=this.command_handlers[a](b,d,e),void 0!==g?g:d?!1:!0;if("string"===typeof this.command_handlers[a])return g=window[this.command_handlers[a]](b,d,e),void 0!==g?g:d?!1:!0;this.triggerEvent("actionbefore",{props:b,action:a,originalEvent:e});g=this.triggerEvent("before"+a,b||e);if(void 0!==g){if(!1===g)return!1;b=g}g=void 0;switch(a){case "login":this.gui_objects.loginform&&this.gui_objects.loginform.submit();break;case "logout":case "mail":case "addressbook":case "settings":this.switch_task(a);
+break;case "about":this.redirect("?_task=settings&_action=about",!1);break;case "permaurl":if(d&&d.href&&d.target)return!0;this.env.permaurl&&(parent.location.href=this.env.permaurl);break;case "extwin":if("compose"==this.env.action){if(e=this.gui_objects.messageform,h=this.open_window(""))this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0,$("input[name='_action']",e).val("compose"),e.action=this.url("mail/compose",{_id:this.env.compose_id,_extwin:1}),e.target=h.name,e.submit()}else this.open_window(this.env.permaurl,
+!0);break;case "change-format":e=this.env.permaurl+"&_format="+b;"preview"==this.env.action&&(e=e.replace(/_action=show/,"_action=preview")+"&_framed=1");this.env.extwin&&(e+="&_extwin=1");location.href=e;break;case "menu-open":b&&"attachmentmenu"==b.menu&&(h=this.env.attachments[b.id],this.enable_command("open-attachment",h&&this.env.mimetypes&&0<=$.inArray(h,this.env.mimetypes)));this.show_menu(b,b.show||void 0,e);break;case "menu-close":this.hide_menu(b,e);break;case "menu-save":return this.triggerEvent(a,
+{props:b,originalEvent:e}),!1;case "open":if(h=this.get_single_uid())return d.href=this.url("show",this.params_from_uid(h)),!0;break;case "close":this.env.extwin&&window.close();break;case "list":b&&""!=b&&this.reset_qsearch(!0);"compose"==this.env.action&&this.env.extwin?window.close():"mail"==this.task?(this.list_mailbox(b),this.set_button_titles()):"addressbook"==this.task&&this.list_contacts(b);break;case "set-listmode":this.set_list_options(null,void 0,void 0,"threads"==b?1:0);break;case "sort":e=
+this.env.sort_order;h=this.env.disabled_sort_col?this.env.sort_col:b;this.env.disabled_sort_order||(e=this.env.sort_col==h&&"ASC"==e?"DESC":"ASC");this.set_list_sorting(h,e);this.list_mailbox("","",h+"_"+e);break;case "nextpage":this.list_page("next");break;case "lastpage":this.list_page("last");break;case "previouspage":this.list_page("prev");break;case "firstpage":this.list_page("first");break;case "expunge":this.env.exists&&this.expunge_mailbox(this.env.mailbox);break;case "purge":case "empty-mailbox":this.env.exists&&
+this.purge_mailbox(this.env.mailbox);break;case "show":"mail"==this.task?(h=this.get_single_uid(),!h||this.env.uid&&h==this.env.uid||(this.env.mailbox==this.env.drafts_mailbox?this.open_compose_step({_draft_uid:h,_mbox:this.env.mailbox}):this.show_message(h))):"addressbook"==this.task&&(k=b?b:this.get_single_cid(),!k||"show"==this.env.action&&k==this.env.cid||this.load_contact(k,"show"));break;case "add":if("addressbook"==this.task)this.load_contact(0,"add");else if("settings"==this.task&&"responses"==
+this.env.action){if(e=this.get_frame_window(this.env.contentframe))this.set_busy(!0),this.location_href({_action:"add-response",_framed:1},e)}else"settings"==this.task&&(this.identity_list.clear_selection(),this.load_identity(0,"add-identity"));break;case "edit":"addressbook"==this.task&&(k=this.get_single_cid())?this.load_contact(k,"edit"):"settings"==this.task&&b?this.load_identity(b,"edit-identity"):"mail"==this.task&&(h=this.get_single_uid())&&(e={_mbox:this.get_message_mailbox(h)},e[this.env.mailbox==
+this.env.drafts_mailbox&&"new"!=b?"_draft_uid":"_uid"]=h,this.open_compose_step(e));break;case "save":var m;if(e=this.gui_objects.editform){if("search"!=this.env.action)if((m=$("input[name='_pagesize']",e))&&m.length&&isNaN(parseInt(m.val()))){alert(this.get_label("nopagesizewarning"));m.focus();break}else{if("reload"==b)e.action+="&_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(m=$("input[name='_email']",e))&&m.length&&!rcube_check_email(m.val())){alert(this.get_label("noemailwarning"));
+m.focus();break}$("input.placeholder").each(function(){this.value==this._placeholder&&(this.value="")})}parent.rcmail&&parent.rcmail.env.source&&(e.action=this.add_url(e.action,"_orig_source",parent.rcmail.env.source));e.submit()}break;case "delete":"mail"==this.task?this.delete_messages(e):"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&"responses"==this.env.action?this.delete_response():"settings"==this.task&&this.delete_identity();break;case "move":case "moveto":"mail"==
+this.task?this.move_messages(b,e):"addressbook"==this.task&&this.move_contacts(b);break;case "copy":"mail"==this.task?this.copy_messages(b,e):"addressbook"==this.task&&this.copy_contacts(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":case "toggle_flag":e="toggle_flag"==a?"flagged":"read";if(h=b)"flagged"==e?this.message_list.rows[h].flagged&&(e="unflagged"):this.message_list.rows[h].deleted?e="undelete":this.message_list.rows[h].unread||(e="unread"),this.mark_message(e,h);
+break;case "always-load":if(this.env.uid&&this.env.sender){this.add_contact(this.env.sender);setTimeout(function(){f.command("load-images")},300);break}case "load-images":this.env.uid&&this.show_message(this.env.uid,!0,"preview"==this.env.action);break;case "load-attachment":case "open-attachment":case "download-attachment":e="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b;h=this.env.attachments[b];if("download-attachment"!=a&&h&&this.env.mimetypes&&0<=$.inArray(h,this.env.mimetypes)&&
+this.open_window(this.env.comm_path+"&_action=get&"+e+"&_frame=1"))break;this.goto_url("get",e+"&_download=1",!1,!0);break;case "select-all":this.select_all_mode=b?!1:!0;this.dummy_select=!0;"invert"==b?this.message_list.invert_selection():this.message_list.select_all("page"==b?"":b);this.dummy_select=null;break;case "select-none":this.select_all_mode=!1;this.message_list.clear_selection();break;case "expand-all":this.env.autoexpand_threads=1;this.message_list.expand_all();break;case "expand-unread":this.env.autoexpand_threads=
+2;this.message_list.collapse_all();this.expand_unread();break;case "collapse-all":this.env.autoexpand_threads=0;this.message_list.collapse_all();break;case "nextmessage":this.env.next_uid&&this.show_message(this.env.next_uid,!1,"preview"==this.env.action);break;case "lastmessage":this.env.last_uid&&this.show_message(this.env.last_uid);break;case "previousmessage":this.env.prev_uid&&this.show_message(this.env.prev_uid,!1,"preview"==this.env.action);break;case "firstmessage":this.env.first_uid&&this.show_message(this.env.first_uid);
+break;case "compose":e={};if("mail"==this.task)e={_mbox:this.env.mailbox,_search:this.env.search_request},b&&(e._to=b);else if("addressbook"==this.task)if(b&&0a?"prevAll":"nextAll",e=0>a?"last":"first";return f.focused_menu&&(b=$("#"+f.focused_menu))?(a=b.find(":focus").closest("li")[d](":has(:not([aria-disabled=true]))").find("a,input")[e](),
+a.length||(a=b.find(":focus").closest("ul")[d](":has(:not([aria-disabled=true]))").find("a,input")[e]()),a.focus().length):0},d=a.target||{},e=rcube_event.get_keycode(a);rcube_event._last_keyboard_event=a;if(27!=a.keyCode&&(!this.menu_keyboard_active||"TEXTAREA"==d.nodeName||"SELECT"==d.nodeName))return!0;switch(e){case 38:case 40:case 63232:case 63233:return b(38==e||63232==e?-1:1),rcube_event.cancel(a);case 9:return this.focused_menu&&(d=rcube_event.get_modifier(a),b(d==SHIFT_KEY?-1:1)||this.hide_menu(this.focused_menu,
+a)),rcube_event.cancel(a);case 27:this.menu_stack.length&&this.hide_menu(this.menu_stack[this.menu_stack.length-1],a)}return!0};this.msglist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);var b=a.get_single_selection();this.enable_command(this.env.message_commands,null!=b);b&&(this.env.mailbox==this.env.drafts_mailbox?this.enable_command("reply","reply-all","reply-list","forward","forward-attachment","forward-inline",
+!1):this.env.messages[b].ml||this.enable_command("reply-list",!1));this.enable_command("delete","move","copy","mark","forward","forward-attachment",0 </div>',v+=" thread"+(f.expanded?" expanded":"")),d.unread_children&&d.seen&&!f.expanded&&(v+=" unroot"));n+='<span id="msgicn'+w.id+'" class="'+g+l+'" title="'+
+m+'"></span>';w.className=v;b.subject&&(g=d.mbox==this.env.drafts_mailbox?"compose":"show",m={_mbox:d.mbox},m[d.mbox==this.env.drafts_mailbox?"_draft_uid":"_uid"]=a,b.subject='<a href="'+this.url(g,m)+'" onclick="return rcube_event.keyboard_only(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(f.depth+1)+')" tabindex="-1"><span>'+b.subject+"</span></a>");for(h in this.env.listcols)g=this.env.listcols[h],a={className:String(g).toLowerCase(),events:{}},this.env.coltypes[g]&&this.env.coltypes[g].hidden&&
+(a.className+=" hidden"),"flag"==g?(g=d.flagged?"flagged":"unflagged",f=this.get_label(g),g='<span id="flagicn'+w.id+'" class="'+g+'" title="'+f+'"></span>'):"attachment"==g?(f=this.get_label("withattachment"),g=d.attachmentClass?'<span class="'+d.attachmentClass+'" title="'+f+'"></span>':/application\/|multipart\/(m|signed)/.test(d.ctype)?'<span class="attachment" title="'+f+'"></span>':/multipart\/report/.test(d.ctype)?'<span class="report"></span>':" "):"status"==g?(f="",d.deleted?(g="deleted",
+f=this.get_label("deleted")):d.seen?g=0d.prio?(f=this.get_label("priority")+" "+d.prio,g='<span class="prio'+d.prio+'" title="'+f+'"></span>'):g=" ":g="folder"==g?'<span onmouseover="rcube_webmail.long_subject_title(this)">'+
+b[g]+"<span>":b[g],a.innerHTML=g,w.cols.push(a);q.insert_row(w,e);e&&this.env.pagesize&&q.rowcount>this.env.pagesize&&(a=q.get_last_row(),q.remove_row(a),q.clear_selection(a))};this.set_list_sorting=function(a,b){var d="arrival"==a?"date":a;$("#rcm"+("arrival"==this.env.sort_col?"date":this.env.sort_col)).removeClass("sorted"+this.env.sort_order.toUpperCase());d&&$("#rcm"+d).addClass("sorted"+b);$("#rcmdate > a").prop("rel","arrival"==a?"arrival":"date");this.env.sort_col=a;this.env.sort_order=b};
+this.set_list_options=function(a,b,d,e){var g,h={};void 0===b&&(b=this.env.sort_col);d||(d=this.env.sort_order);if(this.env.sort_col!=b||this.env.sort_order!=d)g=1,this.set_list_sorting(b,d);this.env.threading!=e&&(g=1,h._threads=e);if(a&&a.length){var f,l,m=[],n=this.env.listcols;for(e=0;ed.location.href.indexOf(this.env.blankpage)&&(d.stop?d.stop():d.document.execCommand("Stop"),d.location.href=this.env.blankpage);else if(!bw.safari&&!bw.konq)$(b)[a?"show":"hide"]();!a&&this.env.frame_lock&&this.set_busy(!1,null,this.env.frame_lock)};this.get_frame_element=
+function(a){var b;if(a&&(b=document.getElementById(a)))return b};this.get_frame_window=function(a){if((a=this.get_frame_element(a))&&a.name&&window.frames)return window.frames[a.name]};this.lock_frame=function(){this.env.frame_lock||((this.is_framed()?parent.rcmail:this).env.frame_lock=this.set_busy(!0,"loading"))};this.list_page=function(a){"next"==a?a=this.env.current_page+1:"last"==a?a=this.env.pagecount:"prev"==a&&1d.depth?(g=e-d.depth,h[b][g]&2||(h[b][g]=h[b][g]?h[b][g]+2:2)):e==d.depth&&(h[b][0]&2||(h[b][0]+=2)),d.depth>e);b--);h.push(Array(d.depth));h[h.length-1][0]=1;f.push(d.uid)}else{if(h.length){for(b in h)this.set_tree_icons(f[b],h[b]);h=[];f=[]}if(a&&l!=m[a].obj)break}l=l.nextSibling}if(h.length)for(b in h)this.set_tree_icons(f[b],h[b])};this.set_tree_icons=function(a,b){var d,e=[],g="",h=b.length;for(d=0;d'):g+('<div style="width:'+e[d].width+'px" />');g&&$("#rcmtab"+this.html_identifier(a,!0)).html(g)};this.update_thread_root=function(a,b){if(this.env.threading){var d=this.message_list.find_root(a);if(a!=d){var e=this.message_list.rows[d];if("read"==b&&e.unread_children)e.unread_children--;
+else if("unread"==b&&e.has_children)e.unread_children=e.unread_children?e.unread_children+1:1;else return;this.set_message_icon(d);this.set_unread_children(d)}}};this.update_thread=function(a){if(!this.env.threading)return 0;var b,d=0,e=this.message_list.rows,g=e[a],h=e[a].depth,k=[];g.depth?g.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=g.parent_uid;for(g=g.obj.nextSibling;g;){if(1==g.nodeType&&(b=e[g.uid])){if(!b.depth||b.depth<=h)break;b.depth--;
+$("#rcmtab"+b.id).width(15*b.depth).html("");b.depth?(b.depth==h&&(b.parent_uid=a),b.unread&&k.length&&k[k.length-1].unread_children++):(d++,b.parent_uid=0,b.has_children&&($("#"+b.id+" .leaf:first").attr("id","rcmexpando"+b.id).attr("class","none"!=b.obj.style.display?"expanded":"collapsed").mousedown({uid:b.uid},function(a){return f.expand_message_row(a,a.data.uid)}),b.unread_children=0,k.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}g=g.nextSibling}for(b=0;b$.inArray(l,
+m)&&m.push(l)),g&&this.message_list.remove_row(f,this.env.display_next&&h==n.length-1);!this.env.display_next&&g&&this.message_list.clear_selection();h=0;for(len=m.length;he?b._count=-1*e:0f?d._count=-1*f:0=a.length?a.join(","):a};this.set_button_titles=function(){var a="deletemessage";this.env.flag_for_deletion||!this.env.trash_mailbox||this.env.mailbox==this.env.trash_mailbox||this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox||(a="movemessagetotrash");this.set_alttext("delete",a)};this.init_pagejumper=function(a){$(a).addClass("rcpagejumper").on("focus",function(b){var d,e="";for(d=1;d<=f.env.pagecount;d++)e+="<li>"+
+d+"</li>";e='<ul class="toolbarmenu">'+e+"</ul>";f.pagejump||(f.pagejump=$('<div id="pagejump-selector" class="popupmenu"></div>').appendTo(document.body).on("click","li",function(){f.busy||$(a).val($(this).text()).change()}));f.pagejump.data("count")!=d&&f.pagejump.html(e);f.pagejump.attr("rel","#"+this.id).data("count",d);f.show_menu("pagejump-selector",!0,b);$(this).keydown()}).on("keydown keyup click",function(b){var d=$("#pagejump-selector"),e=$("ul",d),g=$("li",e);e.height();var h=parseInt(this.value);
+if(27!=b.which&&9!=b.which&&13!=b.which&&!d.is(":visible"))return f.show_menu("pagejump-selector",!0,b);if("keydown"==b.type)if(40==b.which)g.length>h&&(this.value=h+=1);else if(38==b.which)1h-1&&(this.value=h-=1);else{if(13==b.which)return $(this).change();if(27==b.which||9==b.which)return $(a).val(f.env.current_page)}$("li.selected",e).removeClass("selected");(b=$(g[h-1])).length&&(b.addClass("selected"),$("#pagejump-selector").scrollTop(e.height()/g.length*(h-1)-d.height()/2))}).on("change",
+function(a){(a=parseInt(this.value))&&a!=f.env.current_page&&!f.busy&&(f.hide_menu("pagejump-selector"),f.list_page(a))})};this.update_pagejumper=function(){$("input.rcpagejumper").val(this.env.current_page).prop("disabled",2>this.env.pagecount)};this.check_mailvelope=function(a){if("undefined"!==typeof window.mailvelope)this.mailvelope_load(a);else $(window).on("mailvelope",function(){f.mailvelope_load(a)})};this.mailvelope_load=function(a){this.env.browser_capabilities&&(this.env.browser_capabilities.pgpmime=
+1);var b=this.env.user_id;mailvelope.getKeyring(b).then(function(b){f.mailvelope_keyring=b;f.mailvelope_init(a,b)},function(d){mailvelope.createKeyring(b).then(function(b){f.mailvelope_keyring=b;f.mailvelope_init(a,b)},function(a){console.error(a)})})};this.mailvelope_init=function(a,b){if(window.mailvelope)if("show"==a||"preview"==a||"print"==a)if(this.env.is_pgp_content){var d=$(this.env.is_pgp_content).text();f.mailvelope_display_container(this.env.is_pgp_content,d,b)}else{if(this.env.pgp_mime_part){var e=
+this.display_message(this.get_label("loadingdata"),"loading"),g=this.env.pgp_mime_container;$.ajax({type:"GET",url:this.url("get",{_mbox:this.env.mailbox,_uid:this.env.uid,_part:this.env.pgp_mime_part}),error:function(a,b,d){f.http_error(a,b,d,e)},success:function(a){f.mailvelope_display_container(g,a,b,e)}})}}else if("compose"==a){this.env.compose_commands.push("compose-encrypted");var h=0<$('input[name="_is_html"]').val();if(this.env.pgp_mime_message){var k=this.set_busy(!0,this.get_label("loadingdata"));
+$.ajax({type:"GET",url:this.url("get",this.env.pgp_mime_message),error:function(a,b,d){f.http_error(a,b,d,k);f.enable_command("compose-encrypted",!h)},success:function(a){f.set_busy(!1,null,k);h&&(f.command("toggle-editor",{html:!1,noconvert:!0}),$("#"+f.env.composebody).val(""));f.compose_encrypted({quotedMail:a});f.enable_command("compose-encrypted",!0)}})}else this.enable_command("compose-encrypted",!h);this.addEventListener("actionafter",function(a){a.ret&&"toggle-editor"==a.action&&f.enable_command("compose-encrypted",
+!a.props.html)})}};this.compose_encrypted=function(a){var b,d=$("#"+this.env.composebody).parent();f.mailvelope_editor?(f.mailvelope_editor=null,f.compose_skip_unsavedcheck=!1,f.set_button("compose-encrypted","act"),d.removeClass("mailvelope").find("iframe:not([aria-hidden=true])").remove(),$("#"+f.env.composebody).show(),$("[name='_pgpmime']").remove(),f.enable_command("spellcheck","insert-sig","toggle-editor","insert-response","save-response",!0),f.triggerEvent("compose-encrypted",{active:!1})):
+(this.spellcheck_state()&&this.editor.spellcheck_stop(),b=a.quotedMail?{quotedMail:a.quotedMail,quotedMailIndent:!1}:{predefinedText:$("#"+this.env.composebody).val()},"reply"==this.env.compose_mode&&(b.quotedMailIndent=!0,b.quotedMailHeader=this.env.compose_reply_header),mailvelope.createEditorContainer("#"+d.attr("id"),f.mailvelope_keyring,b).then(function(a){f.mailvelope_editor=a;f.compose_skip_unsavedcheck=!0;f.set_button("compose-encrypted","sel");d.addClass("mailvelope");$("#"+f.env.composebody).hide();
+f.enable_command("spellcheck","insert-sig","toggle-editor","insert-response","save-response",!1);f.triggerEvent("compose-encrypted",{active:!0});f.env.attachments&&!$.isEmptyObject(f.env.attachments)&&(alert(f.get_label("encryptnoattachments")),$.each(f.env.attachments,function(a,b){f.remove_from_attachment_list(a)}))},function(a){console.error(a);console.log(b)}))};this.mailvelope_submit_messageform=function(a,b){var d=[];$.each(["to","cc","bcc"],function(a,b){for(var e,f=$.trim($('[name="_'+b+'"]').val());f.length&&
+rcube_check_email(f,!0);)e=RegExp.$2,d.push(e),f=f.substr(f.indexOf(e)+e.length+1).replace(/^\s*,\s*/,"")});var e=0h?[]:this.env.address_group_stack.slice(0,h);this.env.group?(e||(e={}),e.id=this.env.group,this.env.address_group_stack.push(e),g="G"+a+this.env.address_group_stack[0].id):this.gui_objects.addresslist_title&&$(this.gui_objects.addresslist_title).text(this.get_label("contacts"));
this.env.search_id||this.select_folder(g,"",!0);if(this.gui_objects.contactslist)this.list_contacts_remote(a,b,d);else{if(e=this.get_frame_window(this.env.contentframe))m=e,k._framed=1;b&&(k._gid=b);d&&(k._page=d);a&&(k._source=a);this.env.search_request&&(k._search=this.env.search_request);this.set_busy(!0,"loading");this.location_href(k,m)}};this.list_contacts_remote=function(a,b,d){this.list_contacts_clear();var e={},g=this.set_busy(!0,"loading");a&&(e._source=a);d&&(e._page=d);b&&(e._gid=b);this.env.source=
-a;this.env.group=b;this.env.search_request&&(e._search=this.env.search_request);this.http_request("mail"==this.env.task?"list-contacts":"list",e,g)};this.list_contacts_clear=function(){this.contact_list.data={};this.contact_list.clear(!0);this.show_contentframe(!1);this.enable_command("delete","move","copy","print",!1);this.enable_command("compose",this.env.group)};this.set_group_prop=function(a){if(this.gui_objects.addresslist_title){var b=$(this.gui_objects.addresslist_title).html("");if(1=--d.count&&d.visible?$(a).parent().children("input").val("").blur():($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());g.length&&(a=g.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(g),g.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",function(a){f.set_busy(!1,
-null,f.file_upload_id)}),this.file_upload_id=this.set_busy(!0,"uploading"))};this.replace_contact_photo=function(a){var b="-del-"==a?this.env.photo_placeholder:this.env.comm_path+"&_action=photo&_source="+this.env.source+"&_cid="+(this.env.cid||0)+"&_photo="+a;this.set_photo_actions(a);$(this.gui_objects.contactphoto).children("img").attr("src",b)};this.photo_upload_end=function(){this.set_busy(!1,null,this.file_upload_id);delete this.file_upload_id};this.set_photo_actions=function(a){var b,d=this.buttons["upload-photo"];
-for(b=0;d&&bthis.env.identities_level),this.load_identity(b,"edit-identity")};this.load_identity=
-function(a,b){if("edit-identity"==b&&(!a||a==this.env.iid))return!1;var d,e=window,g={_action:b,_iid:a};if(d=this.get_frame_window(this.env.contentframe))g._framed=1,e=d;(a||"add-identity"==b)&&this.location_href(g,e,!0);return!0};this.delete_identity=function(a){var b=this.identity_list.get_selection();if(b.length||this.env.iid)a||(a=this.env.iid?this.env.iid:b[0]),a&&confirm(this.get_label("deleteidentityconfirm"))&&this.http_post("settings/delete-identity",{_iid:a},!0)};this.update_identity_row=
+a;this.env.group=b;this.env.search_request&&(e._search=this.env.search_request);this.http_request("mail"==this.env.task?"list-contacts":"list",e,g);"mail"!=this.env.task&&this.update_state({_source:a,_page:d&&1=--d.count&&d.visible?$(a).parent().children("input").val("").blur():($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());g.length&&(a=g.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(g),g.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",
+function(a){f.set_busy(!1,null,f.file_upload_id)}),this.file_upload_id=this.set_busy(!0,"uploading"))};this.replace_contact_photo=function(a){var b="-del-"==a?this.env.photo_placeholder:this.env.comm_path+"&_action=photo&_source="+this.env.source+"&_cid="+(this.env.cid||0)+"&_photo="+a;this.set_photo_actions(a);$(this.gui_objects.contactphoto).children("img").attr("src",b)};this.photo_upload_end=function(){this.set_busy(!1,null,this.file_upload_id);delete this.file_upload_id};this.set_photo_actions=
+function(a){var b,d=this.buttons["upload-photo"];for(b=0;d&&bthis.env.identities_level),this.load_identity(b,"edit-identity")};
+this.load_identity=function(a,b){if("edit-identity"==b&&(!a||a==this.env.iid))return!1;var d,e=window,g={_action:b,_iid:a};if(d=this.get_frame_window(this.env.contentframe))g._framed=1,e=d;(a||"add-identity"==b)&&this.location_href(g,e,!0);return!0};this.delete_identity=function(a){var b=this.identity_list.get_selection();if(b.length||this.env.iid)a||(a=this.env.iid?this.env.iid:b[0]),a&&confirm(this.get_label("deleteidentityconfirm"))&&this.http_post("settings/delete-identity",{_iid:a},!0)};this.update_identity_row=
function(a,b,d){var e=this.identity_list;a=this.html_identifier(a);d?(e.insert_row({id:"rcmrow"+a,cols:[{className:"mail",innerHTML:b}]}),e.select(a)):e.update_row(a,[b])};this.update_response_row=function(a,b){var d=this.responses_list;d&&b?d.update_row(b,[a.name],a.key,!0):d&&(d.insert_row({id:"rcmrow"+a.key,cols:[{className:"name",innerHTML:a.name}]}),d.select(a.key))};this.remove_response=function(a){var b;this.env.textresponses&&delete this.env.textresponses[a];this.responses_list&&(this.responses_list.remove_row(a),
this.env.contentframe&&(b=this.get_frame_window(this.env.contentframe))&&(b.location.href=this.env.blankpage));this.enable_command("delete",!1)};this.remove_identity=function(a){var b,d=this.identity_list,e=this.html_identifier(a);d&&a&&(d.remove_row(e),this.env.contentframe&&(b=this.get_frame_window(this.env.contentframe))&&(b.location.href=this.env.blankpage));this.enable_command("delete",!1)};this.init_subscription_list=function(){var a=RegExp.escape(this.env.delimiter);this.last_sub_rx=RegExp("["+
a+"]?[^"+a+"]+$");this.subscription_list=new rcube_treelist_widget(this.gui_objects.subscriptionlist,{selectable:!0,tabexit:!1,parent_focus:!0,id_prefix:"rcmli",id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode,searchbox:"#foldersearch"});this.subscription_list.addEventListener("select",function(a){f.subscription_select(a.id)}).addEventListener("collapse",function(a){f.folder_collapsed(a)}).addEventListener("expand",function(a){f.folder_collapsed(a)}).addEventListener("search",
-function(a){a.query&&f.subscription_select()}).draggable({cancel:"li.mailbox.root"}).droppable({accept:function(a){if(!$(a).is(".mailbox"))return!1;a=f.folder_id2name($(a).attr("id"));var d=f.folder_id2name(this.id),e=f.env.subscriptionrows[a];return e&&!e[2]&&d!=a.replace(f.last_sub_rx,"")&&!d.startsWith(a+f.env.delimiter)},drop:function(a,d){var e=f.folder_id2name(d.draggable.attr("id")),g=f.folder_id2name(this.id);f.subscription_move_folder(e,g)}})};this.folder_id2name=function(a){return a?f.html_identifier_decode(a.replace(/^rcmli/,
-"")):null};this.subscription_select=function(a){var b;a&&"*"!=a&&(b=this.env.subscriptionrows[a])?(this.env.mailbox=a,this.show_folder(a),this.enable_command("delete-folder",!b[2])):(this.env.mailbox=null,this.show_contentframe(!1),this.enable_command("delete-folder","purge",!1))};this.subscription_move_folder=function(a,b){if(a&&null!==b&&a!=b&&b!=a.replace(this.last_sub_rx,"")){var d=a.split(this.env.delimiter).pop(),d=""===b||"*"===b?d:b+this.env.delimiter+d;d!=a&&this.http_post("rename-folder",
-{_folder_oldname:a,_folder_newname:d},this.set_busy(!0,"foldermoving"))}};this.create_folder=function(){this.show_folder("",this.env.mailbox)};this.delete_folder=function(a){a||(a=this.env.mailbox);a&&confirm(this.get_label("deletefolderconfirm"))&&this.http_post("delete-folder",{_mbox:a},this.set_busy(!0,"folderdeleting"))};this.add_folder_row=function(a,b,d,e,g,h,k,l){if(!this.gui_objects.subscriptionlist)return!1;this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());
-this.subscription_list.draggable("destroy").droppable("destroy");var m,n,p,q,s,t="",v=[],w=[],u=[],x=$(this.gui_objects.subscriptionlist);m=k?k:$($("li",x).get(1)).clone(!0);if(!m.length)return this.goto_url("folders"),!1;m.attr({id:"rcmli"+this.html_identifier_encode(a),"class":h});k&&k.length||($("ul,div.treetoggle",m).remove(),m.removeData("filtered"));$("a:first",m).text(d);$('input[name="_subscribed[]"]:first',m).val(a).prop({checked:g?!0:!1,disabled:e?!0:!1});this.env.subscriptionrows[a]=[b,
-d,!1];$.each(this.env.subscriptionrows,function(a,b){b[3]=a;v.push(b)});try{s=new Intl.Collator(this.env.locale.replace("_","-"))}catch(y){}v.sort(function(a,b){var d,e,g,h=a[0].split(f.env.delimiter),k=b[0].split(f.env.delimiter),l=h.length;for(d=0;dsort_col = is_array($p['sort']) ? $p['sort'][0] : $p['sort'];
$this->debug = $debug;
- $this->mail_domain = $mail_domain;
+ $this->mail_domain = $this->prop['mail_domain'] = $mail_domain;
// initialize cache
$rcube = rcube::get_instance();
@@ -260,11 +260,13 @@
{
$rcube = rcube::get_instance();
- if ($this->ready)
+ if ($this->ready) {
return true;
+ }
- if (!is_array($this->prop['hosts']))
+ if (!is_array($this->prop['hosts'])) {
$this->prop['hosts'] = array($this->prop['hosts']);
+ }
// try to connect + bind for every host configured
// with OpenLDAP 2.x ldap_connect() always succeeds but ldap_bind will fail if host isn't reachable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/lib/Roundcube/rcube_ldap_generic.php new/roundcubemail-1.2.4/program/lib/Roundcube/rcube_ldap_generic.php
--- old/roundcubemail-1.2.3/program/lib/Roundcube/rcube_ldap_generic.php 2016-11-27 17:08:57.000000000 +0100
+++ new/roundcubemail-1.2.4/program/lib/Roundcube/rcube_ldap_generic.php 2017-03-10 17:41:12.000000000 +0100
@@ -48,7 +48,8 @@
{
// Net_LDAP3 does not support IDNA yet
// also parse_host() here is very Roundcube specific
- $host = rcube_utils::idn_to_ascii(rcube_utils::parse_host($host));
+ $host = rcube_utils::parse_host($host, $this->config['mail_domain']);
+ $host = rcube_utils::idn_to_ascii($host);
return parent::connect($host);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/lib/Roundcube/rcube_utils.php new/roundcubemail-1.2.4/program/lib/Roundcube/rcube_utils.php
--- old/roundcubemail-1.2.3/program/lib/Roundcube/rcube_utils.php 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/lib/Roundcube/rcube_utils.php 2017-03-10 17:41:12.000000000 +0100
@@ -396,7 +396,7 @@
// ignore the whole block if evil styles are detected
$source = self::xss_entity_decode($source);
$stripped = preg_replace('/[^a-z\(:;]/i', '', $source);
- $evilexpr = 'expression|behavior|javascript:|import[^a]' . (!$allow_remote ? '|url\(' : '');
+ $evilexpr = 'expression|behavior|javascript:|import[^a]' . (!$allow_remote ? '|url\((?!data:image)' : '');
if (preg_match("/$evilexpr/i", $stripped)) {
return '/* evil! */';
@@ -502,6 +502,7 @@
$out = preg_replace_callback('/\\\([0-9a-f]{4})/i',
array(self, 'xss_entity_decode_callback'), $out);
$out = preg_replace('#/\*.*\*/#Ums', '', $out);
+ $out = strip_tags($out);
return $out;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/lib/Roundcube/rcube_washtml.php new/roundcubemail-1.2.4/program/lib/Roundcube/rcube_washtml.php
--- old/roundcubemail-1.2.3/program/lib/Roundcube/rcube_washtml.php 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/lib/Roundcube/rcube_washtml.php 2017-03-10 17:41:12.000000000 +0100
@@ -386,7 +386,7 @@
return $attr == 'background'
|| $attr == 'color-profile' // SVG
|| ($attr == 'poster' && $tag == 'video')
- || ($attr == 'src' && preg_match('/^(img|source)$/i', $tag))
+ || ($attr == 'src' && preg_match('/^(img|source|input|video|audio)$/i', $tag))
|| ($tag == 'image' && $attr == 'href'); // SVG
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/addressbook/func.inc new/roundcubemail-1.2.4/program/steps/addressbook/func.inc
--- old/roundcubemail-1.2.3/program/steps/addressbook/func.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/addressbook/func.inc 2017-03-10 17:41:12.000000000 +0100
@@ -152,14 +152,18 @@
else
$CONTACTS->set_page(isset($_SESSION['page']) ? $_SESSION['page'] : 1);
- if (!empty($_REQUEST['_gid']))
- $CONTACTS->set_group(rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC));
+ if (!empty($_REQUEST['_gid'])) {
+ $group = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC);
+ $CONTACTS->set_group($group);
+ }
- if (!$init_env)
+ if (!$init_env) {
return $CONTACTS;
+ }
$OUTPUT->set_env('readonly', $CONTACTS->readonly);
$OUTPUT->set_env('source', (string) $source);
+ $OUTPUT->set_env('group', $group);
// reduce/extend $CONTACT_COLTYPES with specification from the current $CONTACT object
if (is_array($CONTACTS->coltypes)) {
@@ -666,8 +670,9 @@
}
// hack: create empty values array to force this field to be displayed
- if (empty($values) && $colprop['visible'])
- $values[] = '';
+ if (empty($values) && $colprop['visible']) {
+ $values = array('');
+ }
if (!is_array($values)) {
// $values can be an object, don't use (array)$values syntax
@@ -676,8 +681,9 @@
$rows = '';
foreach ($values as $i => $val) {
- if ($subtypes[$i])
+ if ($subtypes[$i]) {
$subtype = $subtypes[$i];
+ }
$colprop['id'] = 'ff_' . $col . intval($coltypes[$field]['count']);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/addressbook/search.inc new/roundcubemail-1.2.4/program/steps/addressbook/search.inc
--- old/roundcubemail-1.2.3/program/steps/addressbook/search.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/addressbook/search.inc 2017-03-10 17:41:12.000000000 +0100
@@ -240,6 +240,16 @@
// Re-set list header
$OUTPUT->command('set_group_prop', null);
+ if ($adv) {
+ $OUTPUT->command('parent.set_env', array(
+ 'search_request' => $search_request,
+ 'pagecount' => ceil($result->count / $PAGE_SIZE),
+ 'search_id' => $sid,
+ 'source' => '',
+ 'group' => '',
+ ));
+ }
+
if (!$sid) {
// unselect currently selected directory/group
$OUTPUT->command('unselect_directory');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/mail/autocomplete.inc new/roundcubemail-1.2.4/program/steps/mail/autocomplete.inc
--- old/roundcubemail-1.2.3/program/steps/mail/autocomplete.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/mail/autocomplete.inc 2017-03-10 17:41:12.000000000 +0100
@@ -30,10 +30,10 @@
$result = $abook->list_records($RCMAIL->config->get('contactlist_fields'));
$members = array();
- while ($result && ($sql_arr = $result->iterate())) {
- $emails = (array) $abook->get_col_values('email', $sql_arr, true);
+ while ($result && ($record = $result->iterate())) {
+ $emails = (array) $abook->get_col_values('email', $record, true);
if (!empty($emails) && ($email = array_shift($emails))) {
- $members[] = format_email_recipient($email, rcube_addressbook::compose_list_name($sql_arr));
+ $members[] = format_email_recipient($email, rcube_addressbook::compose_list_name($record));
}
}
@@ -70,9 +70,9 @@
$abook->set_pagesize($MAXNUM);
if ($result = $abook->search($RCMAIL->config->get('contactlist_fields'), $search, $mode, true, true, 'email')) {
- while ($sql_arr = $result->iterate()) {
+ while ($record = $result->iterate()) {
// Contact can have more than one e-mail address
- $email_arr = (array)$abook->get_col_values('email', $sql_arr, true);
+ $email_arr = (array)$abook->get_col_values('email', $record, true);
$email_cnt = count($email_arr);
$idx = 0;
@@ -81,7 +81,7 @@
continue;
}
- $name = rcube_addressbook::compose_list_name($sql_arr);
+ $name = rcube_addressbook::compose_list_name($record);
$contact = format_email_recipient($email, $name);
// skip entries that don't match
@@ -93,12 +93,17 @@
// skip duplicates
if (empty($contacts[$index])) {
- $contact = array('name' => $contact, 'type' => $sql_arr['_type']);
+ $contact = array('name' => $contact, 'type' => $record['_type']);
- if (($display = rcube_addressbook::compose_search_name($sql_arr, $email, $name)) && $display != $contact['name']) {
+ if (($display = rcube_addressbook::compose_search_name($record, $email, $name)) && $display != $contact['name']) {
$contact['display'] = $display;
}
+ // groups with defined email address will not be expanded to its members' addresses
+ if ($record['_type'] == 'group') {
+ $contact['email'] = $email;
+ }
+
$contacts[$index] = $contact;
$sort_keys[$index] = sprintf('%s %03d', $contact['display'] ?: $name, $idx++);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/mail/func.inc new/roundcubemail-1.2.4/program/steps/mail/func.inc
--- old/roundcubemail-1.2.3/program/steps/mail/func.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/mail/func.inc 2017-03-10 17:41:12.000000000 +0100
@@ -969,7 +969,7 @@
// now check for evil strings like expression, behavior or url()
if (!preg_match('/expression|behavior|javascript:|import[^a]/i', $stripped)) {
- if (!$washtml->get_config('allow_remote') && stripos($stripped, 'url(')) {
+ if (!$washtml->get_config('allow_remote') && preg_match('/url\((?!data:image)/', $stripped)) {
$washtml->extlinks = true;
}
else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/mail/get.inc new/roundcubemail-1.2.4/program/steps/mail/get.inc
--- old/roundcubemail-1.2.3/program/steps/mail/get.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/mail/get.inc 2017-03-10 17:41:12.000000000 +0100
@@ -54,6 +54,7 @@
if ($part_id && ($part = $MESSAGE->mime_parts[$part_id])) {
$filename = rcmail_attachment_name($part);
$OUTPUT->set_pagetitle($filename);
+ $OUTPUT->set_env('mimetype', rcmail_fix_mimetype($part->mimetype));
}
// register UI objects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/settings/func.inc new/roundcubemail-1.2.4/program/steps/settings/func.inc
--- old/roundcubemail-1.2.3/program/steps/settings/func.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/settings/func.inc 2017-03-10 17:41:12.000000000 +0100
@@ -1386,6 +1386,8 @@
array('command' => 'responses', 'type' => 'link', 'label' => 'responses', 'title' => 'manageresponses'),
);
+ $disabled_actions = (array) $RCMAIL->config->get('disabled_actions');
+
// get all identites from DB and define list of cols to be displayed
$plugin = $RCMAIL->plugins->exec_hook('settings_actions', array(
'actions' => $default_actions,
@@ -1397,6 +1399,11 @@
$tabs = array();
foreach ($plugin['actions'] as $action) {
+ $task_action = $action['command'] ? $action['command'] : $action['action'];
+ if (in_array('settings.' . $task_action, $disabled_actions)) {
+ continue;
+ }
+
if (!$action['command'] && !$action['href'] && $action['action']) {
$action['href'] = $RCMAIL->url(array('_action' => $action['action']));
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/settings/save_identity.inc new/roundcubemail-1.2.4/program/steps/settings/save_identity.inc
--- old/roundcubemail-1.2.3/program/steps/settings/save_identity.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/settings/save_identity.inc 2017-03-10 17:41:12.000000000 +0100
@@ -96,7 +96,7 @@
unset($_POST['_signature']);
}
-// update an existing contact
+// update an existing identity
if ($_POST['_iid']) {
$iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_POST);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/program/steps/settings/upload.inc new/roundcubemail-1.2.4/program/steps/settings/upload.inc
--- old/roundcubemail-1.2.3/program/steps/settings/upload.inc 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/program/steps/settings/upload.inc 2017-03-10 17:41:12.000000000 +0100
@@ -25,7 +25,7 @@
}
$from = rcube_utils::get_input_value('_from', rcube_utils::INPUT_GET);
-$type = str_replace('edit-', '', $from);
+$type = preg_replace('/(add|edit)-/', '', $from);
if ($RCMAIL->action == 'upload-display') {
$id = 'undefined';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/skins/classic/common.css new/roundcubemail-1.2.4/skins/classic/common.css
--- old/roundcubemail-1.2.3/skins/classic/common.css 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/skins/classic/common.css 2017-03-10 17:41:12.000000000 +0100
@@ -104,7 +104,7 @@
font-size: 12px;
padding-left: 8px;
padding-right: 8px;
- background: url(images/buttons/bg.gif?v=30b2.196) repeat-x #f0f0f0;
+ background: url(images/buttons/bg.gif?v=0200.203) repeat-x #f0f0f0;
border: 1px solid #a4a4a4;
}
@@ -211,7 +211,7 @@
color: #666666;
text-decoration: none;
padding: 6px 12px 6px 26px;
- background: url(images/taskicons.gif?v=b8e0.1519) no-repeat;
+ background: url(images/taskicons.gif?v=9719.2207) no-repeat;
}
#taskbar a:hover
@@ -455,7 +455,7 @@
margin: 1px;
margin-top: 2px;
overflow: hidden;
- background: url(images/pagenav.gif?v=2e75.355) 0 0 no-repeat transparent;
+ background: url(images/pagenav.gif?v=8464.1147) 0 0 no-repeat transparent;
opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
}
@@ -961,7 +961,7 @@
width: 190px;
height: 20px;
text-align: right;
- background: url(images/searchfield.gif?v=aaf8.313) top left no-repeat;
+ background: url(images/searchfield.gif?v=36a5.397) top left no-repeat;
}
#quicksearchbar
@@ -1406,7 +1406,7 @@
height: 23px !important;
height: 22px;
overflow: hidden;
- background: url(images/tabs-left.gif?v=0541.219) top left no-repeat;
+ background: url(images/tabs-left.gif?v=d7b0.230) top left no-repeat;
}
span.tablink
@@ -1433,7 +1433,7 @@
overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
- background: url(images/tabs-right.gif?v=5414.733) top right no-repeat;
+ background: url(images/tabs-right.gif?v=5c83.1417) top right no-repeat;
}
span.tablink-selected a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/skins/classic/common.min.css new/roundcubemail-1.2.4/skins/classic/common.min.css
--- old/roundcubemail-1.2.3/skins/classic/common.min.css 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/skins/classic/common.min.css 2017-03-10 17:41:12.000000000 +0100
@@ -1 +1 @@
-body{font-family:"Lucida Grande",Verdana,Arial,Helvetica,sans-serif;margin:8px;background-color:#f6f6f6;color:#000;font-size:12px}body.iframe{margin:20px 0 0 0;background-color:#FFF}body.extwin{margin:10px}select,input,textarea,button{font-size:inherit;font-family:inherit}html.mozilla select{padding:2px 1px}th{font-weight:normal}h3{font-size:18px}a,a:active,a:visited{color:#000;outline:0}a.button,a.button:visited,a.tab,a.tab:visited,a.axislist{color:#000;text-decoration:none}a.tab{width:80px;display:block;text-align:center}a.disabled{color:#999;text-decoration:none;cursor:default}hr{height:1px;background-color:#666;border-style:none}input[type="text"],input[type="button"],input[type="password"],textarea{border:1px solid #666;color:#333;background-color:#FFF}input,textarea{color:black;padding:1px 3px}input.placeholder,textarea.placeholder,input:-moz-placeholder,textarea:-moz-placeholder{color:#aaa}input.button{height:20px;color:#333;font-size:12px;padding-left:8px;padding-right:8px;background:url(images/buttons/bg.gif?v=30b2.196) repeat-x #f0f0f0;border:1px solid #a4a4a4}input.button:hover{color:black}input.button[disabled],input.button[disabled]:hover{color:#aaa;border-color:#ccc}input.mainaction{font-weight:bold;border:1px solid #999}img{border:0}.alttext{font-size:11px}.hint{color:#666;font-size:11px}.formlinks a,.formlinks a:visited{color:#c00;font-size:11px;text-decoration:none}.formlinks a.disabled,.formlinks a.disabled:visited{color:#999}.voice{display:none}label input,label span{vertical-align:middle}#mainscreen{position:absolute;top:85px;right:20px;bottom:20px;left:20px}.extwin #mainscreen{top:43px}body>#logo{margin-left:12px;cursor:pointer}#taskbar{position:absolute;top:0;right:0;height:24px;left:250px;background:url(images/taskbar.png?v=3878.1902) top right no-repeat;padding:10px 6px 5px 0;text-align:right;white-space:nowrap;z-index:2}#taskbar a{font-size:11px;color:#666;text-decoration:none;padding:6px 12px 6px 26px;background:url(images/taskicons.gif?v=b8e0.1519) no-repeat}#taskbar a:hover{color:#333}#taskbar a.button-mail{background-position:0 0}#taskbar a.button-addressbook{background-position:0 -25px}#taskbar a.button-settings{background-position:0 -50px}#taskbar a.button-logout{background-position:0 -75px}body>#message{position:absolute;display:none;top:-1px;margin-left:-225px;left:50%;z-index:5000;opacity:.85}body>#message div{width:400px;margin:0;min-height:22px;padding:8px 10px 8px 46px}body>#message div.notice,body>#messagebody .part-notice,body>#mainscreen #messagebody .part-notice,#message-objects div.notice{background:url(images/display/icons.png?v=e866.4201) 6px 3px no-repeat;background-color:#f7fdcb;border:1px solid #c2d071}body>#message div.error,body>#message div.warning,#message-objects div.warning,#message-objects div.error{background:url(images/display/icons.png?v=e866.4201) 6px -97px no-repeat;background-color:#ef9398;border:1px solid #dc5757}body>#message div.confirmation,#message-objects div.confirmation{background:url(images/display/icons.png?v=e866.4201) 6px -47px no-repeat;background-color:#a6ef7b;border:1px solid #76c83f}body>#message div.loading,body>#message div.uploading,#message-objects div.loading{background:url(images/display/loading.gif?v=9bae.2710) 6px 3px no-repeat;background-color:#ebebeb;border:1px solid #ccc}body>#message div.voice{position:absolute;top:-1000px;clip:rect(0 0 0 0)}body>#message a{cursor:pointer;text-decoration:underline}body.extwin #closelink{position:absolute;top:5px;right:20px;text-align:right;z-index:100}.box{border:1px solid #999}.boxtitle{height:12px !important;padding:3px 10px 4px 5px;border-bottom:1px solid #999;color:#333;font-size:11px;font-weight:bold;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC}.boxtitle .rightalign{float:right}body.iframe .boxtitle{position:fixed;top:0;left:0;width:100%}.boxcontent{padding:15px 10px 10px 10px;background-color:#f2f2f2}.boxcontent .boxwarning{margin:0 0 10px;display:block;min-height:22px;background:url(images/display/icons.png?v=e866.4201) #ef9398 6px -95px no-repeat;border:1px solid #dc5757;padding:8px 10px 8px 46px}.boxcontent table td.title{color:#666;padding-right:10px}.boxlistcontent{position:absolute;top:20px;bottom:22px;left:0;right:0;width:100%;overflow-y:auto;overflow-x:hidden}.boxsubject{position:absolute;top:0;left:0;right:0;overflow:hidden;height:22px;border-bottom:1px solid #999;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC}.boxfooter{position:absolute;bottom:0;left:0;right:0;overflow:hidden;height:22px;border-top:1px solid #999;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC}.boxfooter a.button,.boxfooter a.buttonPas{display:block;float:left;width:34px;height:22px;padding:0;margin:0;overflow:hidden;background:url(images/icons/groupactions.png?v=ace6.1092) 0 0 no-repeat transparent;opacity:.99}.boxfooter a.groupactions{background-position:0 -26px}.boxfooter a.delgroup{background-position:0 -49px}.boxfooter a.buttonPas{opacity:.35}.pagenav span{color:#444;font-size:11px;text-shadow:white 1px 1px;white-space:nowrap}.pagenav a.button,.pagenav a.buttonPas{display:block;float:left;width:11px;height:11px;padding:0;margin:1px;margin-top:2px;overflow:hidden;background:url(images/pagenav.gif?v=2e75.355) 0 0 no-repeat transparent;opacity:.99}.pagenav a.buttonPas{opacity:.35}.pagenav a.firstpageSel{background-position:0 -11px}.pagenav a.prevpage{background-position:-11px 0}.pagenav a.prevpageSel{background-position:-11px -11px}.pagenav a.nextpage{background-position:-22px 0}.pagenav a.nextpageSel{background-position:-22px -11px}.pagenav a.lastpage{background-position:-33px 0}.pagenav a.lastpageSel{background-position:-33px -11px}#rcmcountdisplay{float:left;margin-right:10px}#countcontrols #pagejumper{margin:0 5px;float:right;text-align:center;padding:0;cursor:default;font-size:10px}.splitter{user-select:none;-moz-user-select:none;-khtml-user-select:none;position:absolute;background:url(images/dimple.png?v=42a0.158) center no-repeat}.splitter-h{cursor:n-resize;cursor:row-resize;background-position:center 2px}.splitter-v{cursor:e-resize;cursor:col-resize;background-position:2px center}.popupmenu{position:absolute;top:32px;left:90px;width:auto;max-height:70%;overflow:-moz-scrollbars-vertical;overflow-y:auto;display:none;background-color:#fff;background-color:rgba(255,255,255,0.95);border:1px solid #999;padding:4px;z-index:240;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:1px 1px 12px #999;-moz-box-shadow:1px 1px 12px #999;-webkit-box-shadow:#999 1px 1px 12px}.popupmenu ul{margin:-4px 0;padding:0;list-style:none}.popupmenu ul li{font-size:11px;white-space:nowrap;min-width:100px;margin:3px -4px}.popupmenu li a,.popupmenu li label{display:block;color:#a0a0a0;padding:3px 16px 3px 10px;text-decoration:none;min-height:14px;line-height:14px;background:transparent}.popupmenu li label.comment{color:#999;font-style:italic;padding-top:4px;padding-bottom:3px}.popupmenu li a.active,.popupmenu li a.active:active,.popupmenu li a.active:visited{color:#333;cursor:pointer}.popupmenu li a.active:hover,.popupmenu.selectable li a.selected:hover{color:#fff;background-color:#c00}.popupmenu li.block input{float:left}.popupmenu.selectable li a.selected{background:url(images/messageicons.png?v=16cb.2581) 2px -372px no-repeat}.popupmenu.selectable li a{padding-left:20px}.darkbg{background-color:#f2f2f2 !important}.dropbutton,.dropbutton span{float:left;height:32px}.dropbutton span{width:9px;background:url(images/dbutton.png?v=7bba.240) -53px 0 no-repeat transparent}.dropbutton span:hover{cursor:pointer;background-position:-74px 0}img.uploading{width:16px;height:16px}.popup label>input{margin-left:10px}table.records-table thead tr th,table.records-table thead tr td{height:20px;padding:0 4px 0 4px;vertical-align:middle;border-bottom:1px solid #999;color:#333;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC;font-size:11px;font-weight:bold;text-align:left}table.records-table tbody tr td{height:16px;padding:2px 4px 2px 4px;font-size:11px;white-space:nowrap;border-bottom:1px solid #ebebeb;overflow:hidden;text-align:left;outline:0}table.records-table tr{background-color:#fff}table.records-table tr.selected td{color:#fff;background-color:#c33}table.records-table tr.unfocused td{color:#fff;background-color:#929292}ul.treelist li{position:relative}ul.treelist li div.treetoggle{position:absolute;left:8px;top:2px;width:14px;height:16px;cursor:pointer}ul.treelist ul li div.treetoggle{left:25px}ul.treelist ul ul li div.treetoggle{left:42px}ul.treelist li div.collapsed{background:url(images/icons/collapsed.png?v=45aa.97) bottom right no-repeat}ul.treelist li div.expanded{background:url(images/icons/expanded.png?v=f647.107) bottom right no-repeat}ul.treelist,ul.treelist li ul{list-style:none;margin:0;padding:0;background-color:#fff}ul.treelist li ul{border-top:1px solid #ebebeb}ul.treelist li{display:block;font-size:11px;border-bottom:1px solid #ebebeb;white-space:nowrap;overflow:hidden}ul.treelist li a{cursor:default;display:block;padding-left:25px;padding-top:2px;padding-bottom:2px;height:16px;line-height:16px;text-decoration:none;white-space:nowrap}ul.treelist li ul li a{padding-left:45px}ul.treelist ul ul li a{padding-left:65px}ul.treelist li ul li:last-child{border-bottom:0}ul.treelist li.selected>a,ul.treelist li.selected>div a{color:#FFF;font-weight:bold;background-color:#929292}ul.treelist li.droptarget{background-color:#ffffa6}.folderlist li ul li:last-child{border-bottom:0 none}.folderlist li.inbox a{background-position:5px -18px}.folderlist li.drafts a{background-position:5px -36px}.folderlist li.sent a{background-position:5px -53px}.folderlist li.junk a{background-position:5px -72px}.folderlist li.trash a{background-position:5px -180px}.folderlist li.trash.empty a{background-position:5px -90px}.folderlist li a{cursor:default;display:block;position:relative;padding-left:25px;padding-top:2px;padding-bottom:2px;text-decoration:none;height:15px;background:url(images/icons/folders.png?v=d9d2.5356) 5px 1px no-repeat}.folderlist li.virtual>a{color:#666}.folderlist li.selected,.folderlist li.droptarget li.selected{background-color:#929292}.folderlist li.selected>a,.folderlist li.droptarget li.selected a{color:#FFF;font-weight:bold}.folderlist li.droptarget{background-color:#ffffa6}.folderlist ul{list-style:none;padding:0;margin:0;border-top:1px solid #ebebeb;background-color:#FFF;font-weight:normal}.folderlist li.mailbox ul li a{padding-left:40px;background-position:20px 1px}.folderlist li.mailbox ul li div.treetoggle{left:23px !important}.folderlist li.mailbox ul ul li.mailbox a{padding-left:56px;background-position:36px 1px}.folderlist li.mailbox ul ul li div.treetoggle{left:39px !important}.folderlist li.mailbox ul ul ul li.mailbox a{padding-left:72px;background-position:52px 1px}.folderlist li.mailbox ul ul ul li div.treetoggle{left:55px !important}.folderlist li.mailbox ul ul ul ul li.mailbox a{padding-left:88px;background-position:68px 1px}.folderlist li.mailbox ul ul ul ul li div.treetoggle{left:71px !important}.folderlist li.mailbox ul ul ul ul ul li{padding-left:16px}.folderlist li.mailbox ul ul ul ul ul li div.treetoggle{left:87px !important}.folderlist li.mailbox ul li.drafts a{background-position:21px -36px}.folderlist li.mailbox ul li.sent a{background-position:21px -53px}.folderlist li.mailbox ul li.junk a{background-position:21px -72px}.folderlist li.mailbox ul li.trash a{background-position:21px -180px}.folderlist li.mailbox ul li.trash.empty a{background-position:21px -90px}div.searchbox,#quicksearchbar{position:relative;width:190px;height:20px;text-align:right;background:url(images/searchfield.gif?v=aaf8.313) top left no-repeat}#quicksearchbar{position:absolute;top:55px;right:10px}#searchreset,div.searchbox a.searchreset{position:absolute;top:3px;right:12px;text-decoration:none}#searchmenulink,div.searchbox a.searchmenu,div.searchbox a.searchicon{position:absolute;top:3px;right:168px}div.searchbox a.searchreset{display:block;width:14px;height:14px;overflow:hidden;white-space:nowrap;text-indent:50000px;background:url(images/icons/reset.gif?v=a31d.164) top left no-repeat}div.searchbox a.searchicon{display:inline-block;width:16px;height:16px;overflow:hidden;background:url(images/icons/glass.png?v=6b06.406) top left no-repeat}#quicksearchbar img{vertical-align:middle}#quicksearchbox,div.searchbox>input{position:absolute;top:2px;left:24px;width:140px;height:15px;font-size:11px;padding:0;border:0;outline:0}.propform div.prop{margin-bottom:.5em}.propform div.prop.block label{display:block;margin-bottom:2px}.propform div.prop.block input,.propform div.prop.block textarea{width:97%}.listsearchbox{border-bottom:solid 1px #ddd;padding:2px 4px 1px;display:none;background-color:#f2f2f2}.listsearchbox a.iconbutton.reset{background:url(images/icons/reset.gif?v=a31d.164) no-repeat 0 0;width:13px;height:13px;text-indent:50000px;position:absolute;top:3px;left:165px;overflow:hidden}#rcmversion{position:absolute;bottom:10px;right:20px;text-align:right;white-space:nowrap;font-size:8pt;color:#999}#rcmdraglayer{min-width:300px;width:auto !important;width:300px;border:1px solid #999;background-color:#fff;padding-left:8px;padding-right:8px;padding-top:3px;padding-bottom:3px;font-size:11px;white-space:nowrap;opacity:.82;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:1px 1px 12px #999;-moz-box-shadow:1px 1px 12px #999;-webkit-box-shadow:#999 1px 1px 12px}.draglayercopy:before{position:absolute;bottom:-5px;left:-6px;content:" ";width:14px;height:14px;background:url(images/messageactions.png?v=d93e.3223) -2px -128px no-repeat}a.rcmContactAddress{text-decoration:none}a.rcmContactAddress:hover{text-decoration:underline}#rcmKSearchpane{background-color:#f9f9f9;border:1px solid #ccc}#rcmKSearchpane ul{margin:0;padding:2px;list-style-image:none;list-style-type:none}#rcmKSearchpane ul li{display:block;height:16px;font-size:11px;padding-left:6px;padding-top:2px;padding-right:6px;white-space:nowrap;cursor:pointer}#rcmKSearchpane ul li.selected,#pagejump-selector ul li.selected{color:#fff;background-color:#c33}#login-form{margin-left:auto;margin-right:auto;margin-top:50px;width:400px;border:1px solid #999}#login-form table td.title{text-align:right;white-space:nowrap}#login-form table{width:1%;margin:auto}#login-form table td.input input{width:200px}#login-bottomline{width:400px;margin:5em auto;font-size:85%;text-align:center;color:#666}#login-noscriptwarning{margin:2em auto 0 auto;width:400px;color:#cf2734;font-weight:bold}.disabled,a.disabled{color:#999}font.bold{font-weight:bold}.formbuttons{text-align:center}ul.toolbarmenu{margin:-4px 0 -4px 0;padding:0;list-style:none}ul.toolbarmenu li{font-size:11px;white-space:nowrap;min-width:130px;margin:2px -4px}ul.toolbarmenu li a{display:block;color:#a0a0a0;padding:3px 12px 3px 28px;text-decoration:none;min-height:14px;line-height:14px}ul.toolbarmenu li a.active,ul.toolbarmenu li a.active:active,ul.toolbarmenu li a.active:visited{color:#333}ul.toolbarmenu li input{vertical-align:middle}ul.toolbarmenu li hr{color:#ccc;width:130px;height:1px;margin:2px 1px 2px 1px}ul.toolbarmenu li img{float:left;margin:0 2px}div.popupmenu ul li.separator_below,ul.toolbarmenu li.separator_below{border-bottom:1px solid #ccc;margin-bottom:2px;padding-bottom:2px}div.popupmenu ul li.separator_above,ul.toolbarmenu li.separator_above{border-top:1px solid #ccc;margin-top:2px;padding-top:2px}#searchmenu{width:160px}#searchmenu ul.toolbarmenu{margin:0}#searchmenu ul.toolbarmenu li{margin:1px 4px 1px}#searchmenu ul.toolbarmenu li label{padding:2px 0;color:black}#searchmenu ul.toolbarmenu li label.comment{color:#999}#searchmenu select{width:100%}#pagejump-selector{max-height:250px;overflow-x:hidden}#pagejump-selector ul li{min-width:45px;padding:2px 5px;cursor:default}#folder-selector li a{padding:0}#folder-selector li a span{background:url(images/icons/folders.png?v=d9d2.5356) no-repeat 6px 0;display:block;height:15px;min-height:14px;padding:2px 4px 2px 28px;overflow:hidden;max-width:120px;text-overflow:ellipsis}#folder-selector li a.virtual{color:#a0a0a0}#folder-selector li a.active:hover span{color:white}#folder-selector li a.inbox span{background-position:6px -18px}#folder-selector li a.drafts span{background-position:6px -37px}#folder-selector li a.sent span{background-position:6px -54px}#folder-selector li a.trash span{background-position:6px -91px}#folder-selector li a.junk span{background-position:6px -73px}div.tabsbar,#tabsbar{position:absolute;top:50px;left:220px;right:20px;height:22px;border-bottom:1px solid #999;white-space:nowrap}div.tabsbar{top:35px;left:12px;right:12px}span.tablink,span.tablink-selected{float:left;height:23px !important;height:22px;overflow:hidden;background:url(images/tabs-left.gif?v=0541.219) top left no-repeat}span.tablink{cursor:pointer}span.tablink-selected{cursor:default;background-position:0 -23px}span.tablink a,span.tablink-selected a{display:inline-block;padding:5px 10px 0 5px;margin-left:5px;height:23px;color:#555;max-width:185px;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;background:url(images/tabs-right.gif?v=5414.733) top right no-repeat}span.tablink-selected a{cursor:inherit;color:#000;background-position:right -23px}fieldset{margin-bottom:1em;border:1px solid #999;padding:4px 8px 9px 8px}legend{color:#999}fieldset.tabbed{margin-top:22px;padding-top:12px}.quota_text{text-align:center;font-size:10px;color:#666;border:1px solid #999;cursor:default}.quota_bg{background-color:white}.quota_high{background:url(images/quota-colors.png?v=c1e9.287) repeat-x 0 -28px #f90509}.quota_mid{background:url(images/quota-colors.png?v=c1e9.287) repeat-x 0 -14px #e3e909}.quota_low{background:url(images/quota-colors.png?v=c1e9.287) repeat-x 0 0 #05f905}.quota_text_high{color:white}.quota_text_mid{color:#666}.quota_text_low{color:#666}table.quota-info{border-spacing:0;border-collapse:collapse;table-layout:fixed;margin:2px}table.quota-info td,table.quota-info th{border:1px solid #999;padding:2px 3px;text-align:center;min-width:80px;color:#333;font-size:11px}table.quota-info th{font-weight:bold;background-color:#ddd}table.quota-info td.name{text-align:left}table.quota-info td.root{font-style:italic}.mce-btn-small button{height:22px}.mce-btn-small i{line-height:16px !important;vertical-align:text-top !important}.mce-combobox button{padding:6px 8px !important}.mce-tinymce{border-radius:0 !important;{.mce-panel.mce-toolbar-grp{border:0 !important}#image-selector-form.droptarget{background:url(images/filedrop.png?v=deab.605) center bottom no-repeat}#image-selector-form.droptarget.hover{background-color:#f0f0ee;box-shadow:0 0 5px 0 #999;-moz-box-shadow:0 0 5px 0 #999;-o-box-shadow:0 0 5px 0 #999}
\ No newline at end of file
+body{font-family:"Lucida Grande",Verdana,Arial,Helvetica,sans-serif;margin:8px;background-color:#f6f6f6;color:#000;font-size:12px}body.iframe{margin:20px 0 0 0;background-color:#FFF}body.extwin{margin:10px}select,input,textarea,button{font-size:inherit;font-family:inherit}html.mozilla select{padding:2px 1px}th{font-weight:normal}h3{font-size:18px}a,a:active,a:visited{color:#000;outline:0}a.button,a.button:visited,a.tab,a.tab:visited,a.axislist{color:#000;text-decoration:none}a.tab{width:80px;display:block;text-align:center}a.disabled{color:#999;text-decoration:none;cursor:default}hr{height:1px;background-color:#666;border-style:none}input[type="text"],input[type="button"],input[type="password"],textarea{border:1px solid #666;color:#333;background-color:#FFF}input,textarea{color:black;padding:1px 3px}input.placeholder,textarea.placeholder,input:-moz-placeholder,textarea:-moz-placeholder{color:#aaa}input.button{height:20px;color:#333;font-size:12px;padding-left:8px;padding-right:8px;background:url(images/buttons/bg.gif?v=0200.203) repeat-x #f0f0f0;border:1px solid #a4a4a4}input.button:hover{color:black}input.button[disabled],input.button[disabled]:hover{color:#aaa;border-color:#ccc}input.mainaction{font-weight:bold;border:1px solid #999}img{border:0}.alttext{font-size:11px}.hint{color:#666;font-size:11px}.formlinks a,.formlinks a:visited{color:#c00;font-size:11px;text-decoration:none}.formlinks a.disabled,.formlinks a.disabled:visited{color:#999}.voice{display:none}label input,label span{vertical-align:middle}#mainscreen{position:absolute;top:85px;right:20px;bottom:20px;left:20px}.extwin #mainscreen{top:43px}body>#logo{margin-left:12px;cursor:pointer}#taskbar{position:absolute;top:0;right:0;height:24px;left:250px;background:url(images/taskbar.png?v=3878.1902) top right no-repeat;padding:10px 6px 5px 0;text-align:right;white-space:nowrap;z-index:2}#taskbar a{font-size:11px;color:#666;text-decoration:none;padding:6px 12px 6px 26px;background:url(images/taskicons.gif?v=9719.2207) no-repeat}#taskbar a:hover{color:#333}#taskbar a.button-mail{background-position:0 0}#taskbar a.button-addressbook{background-position:0 -25px}#taskbar a.button-settings{background-position:0 -50px}#taskbar a.button-logout{background-position:0 -75px}body>#message{position:absolute;display:none;top:-1px;margin-left:-225px;left:50%;z-index:5000;opacity:.85}body>#message div{width:400px;margin:0;min-height:22px;padding:8px 10px 8px 46px}body>#message div.notice,body>#messagebody .part-notice,body>#mainscreen #messagebody .part-notice,#message-objects div.notice{background:url(images/display/icons.png?v=e866.4201) 6px 3px no-repeat;background-color:#f7fdcb;border:1px solid #c2d071}body>#message div.error,body>#message div.warning,#message-objects div.warning,#message-objects div.error{background:url(images/display/icons.png?v=e866.4201) 6px -97px no-repeat;background-color:#ef9398;border:1px solid #dc5757}body>#message div.confirmation,#message-objects div.confirmation{background:url(images/display/icons.png?v=e866.4201) 6px -47px no-repeat;background-color:#a6ef7b;border:1px solid #76c83f}body>#message div.loading,body>#message div.uploading,#message-objects div.loading{background:url(images/display/loading.gif?v=9bae.2710) 6px 3px no-repeat;background-color:#ebebeb;border:1px solid #ccc}body>#message div.voice{position:absolute;top:-1000px;clip:rect(0 0 0 0)}body>#message a{cursor:pointer;text-decoration:underline}body.extwin #closelink{position:absolute;top:5px;right:20px;text-align:right;z-index:100}.box{border:1px solid #999}.boxtitle{height:12px !important;padding:3px 10px 4px 5px;border-bottom:1px solid #999;color:#333;font-size:11px;font-weight:bold;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;white-space:nowrap;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC}.boxtitle .rightalign{float:right}body.iframe .boxtitle{position:fixed;top:0;left:0;width:100%}.boxcontent{padding:15px 10px 10px 10px;background-color:#f2f2f2}.boxcontent .boxwarning{margin:0 0 10px;display:block;min-height:22px;background:url(images/display/icons.png?v=e866.4201) #ef9398 6px -95px no-repeat;border:1px solid #dc5757;padding:8px 10px 8px 46px}.boxcontent table td.title{color:#666;padding-right:10px}.boxlistcontent{position:absolute;top:20px;bottom:22px;left:0;right:0;width:100%;overflow-y:auto;overflow-x:hidden}.boxsubject{position:absolute;top:0;left:0;right:0;overflow:hidden;height:22px;border-bottom:1px solid #999;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC}.boxfooter{position:absolute;bottom:0;left:0;right:0;overflow:hidden;height:22px;border-top:1px solid #999;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC}.boxfooter a.button,.boxfooter a.buttonPas{display:block;float:left;width:34px;height:22px;padding:0;margin:0;overflow:hidden;background:url(images/icons/groupactions.png?v=ace6.1092) 0 0 no-repeat transparent;opacity:.99}.boxfooter a.groupactions{background-position:0 -26px}.boxfooter a.delgroup{background-position:0 -49px}.boxfooter a.buttonPas{opacity:.35}.pagenav span{color:#444;font-size:11px;text-shadow:white 1px 1px;white-space:nowrap}.pagenav a.button,.pagenav a.buttonPas{display:block;float:left;width:11px;height:11px;padding:0;margin:1px;margin-top:2px;overflow:hidden;background:url(images/pagenav.gif?v=8464.1147) 0 0 no-repeat transparent;opacity:.99}.pagenav a.buttonPas{opacity:.35}.pagenav a.firstpageSel{background-position:0 -11px}.pagenav a.prevpage{background-position:-11px 0}.pagenav a.prevpageSel{background-position:-11px -11px}.pagenav a.nextpage{background-position:-22px 0}.pagenav a.nextpageSel{background-position:-22px -11px}.pagenav a.lastpage{background-position:-33px 0}.pagenav a.lastpageSel{background-position:-33px -11px}#rcmcountdisplay{float:left;margin-right:10px}#countcontrols #pagejumper{margin:0 5px;float:right;text-align:center;padding:0;cursor:default;font-size:10px}.splitter{user-select:none;-moz-user-select:none;-khtml-user-select:none;position:absolute;background:url(images/dimple.png?v=42a0.158) center no-repeat}.splitter-h{cursor:n-resize;cursor:row-resize;background-position:center 2px}.splitter-v{cursor:e-resize;cursor:col-resize;background-position:2px center}.popupmenu{position:absolute;top:32px;left:90px;width:auto;max-height:70%;overflow:-moz-scrollbars-vertical;overflow-y:auto;display:none;background-color:#fff;background-color:rgba(255,255,255,0.95);border:1px solid #999;padding:4px;z-index:240;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:1px 1px 12px #999;-moz-box-shadow:1px 1px 12px #999;-webkit-box-shadow:#999 1px 1px 12px}.popupmenu ul{margin:-4px 0;padding:0;list-style:none}.popupmenu ul li{font-size:11px;white-space:nowrap;min-width:100px;margin:3px -4px}.popupmenu li a,.popupmenu li label{display:block;color:#a0a0a0;padding:3px 16px 3px 10px;text-decoration:none;min-height:14px;line-height:14px;background:transparent}.popupmenu li label.comment{color:#999;font-style:italic;padding-top:4px;padding-bottom:3px}.popupmenu li a.active,.popupmenu li a.active:active,.popupmenu li a.active:visited{color:#333;cursor:pointer}.popupmenu li a.active:hover,.popupmenu.selectable li a.selected:hover{color:#fff;background-color:#c00}.popupmenu li.block input{float:left}.popupmenu.selectable li a.selected{background:url(images/messageicons.png?v=16cb.2581) 2px -372px no-repeat}.popupmenu.selectable li a{padding-left:20px}.darkbg{background-color:#f2f2f2 !important}.dropbutton,.dropbutton span{float:left;height:32px}.dropbutton span{width:9px;background:url(images/dbutton.png?v=7bba.240) -53px 0 no-repeat transparent}.dropbutton span:hover{cursor:pointer;background-position:-74px 0}img.uploading{width:16px;height:16px}.popup label>input{margin-left:10px}table.records-table thead tr th,table.records-table thead tr td{height:20px;padding:0 4px 0 4px;vertical-align:middle;border-bottom:1px solid #999;color:#333;background:url(images/listheader.gif?v=ab42.314) top left repeat-x #CCC;font-size:11px;font-weight:bold;text-align:left}table.records-table tbody tr td{height:16px;padding:2px 4px 2px 4px;font-size:11px;white-space:nowrap;border-bottom:1px solid #ebebeb;overflow:hidden;text-align:left;outline:0}table.records-table tr{background-color:#fff}table.records-table tr.selected td{color:#fff;background-color:#c33}table.records-table tr.unfocused td{color:#fff;background-color:#929292}ul.treelist li{position:relative}ul.treelist li div.treetoggle{position:absolute;left:8px;top:2px;width:14px;height:16px;cursor:pointer}ul.treelist ul li div.treetoggle{left:25px}ul.treelist ul ul li div.treetoggle{left:42px}ul.treelist li div.collapsed{background:url(images/icons/collapsed.png?v=45aa.97) bottom right no-repeat}ul.treelist li div.expanded{background:url(images/icons/expanded.png?v=f647.107) bottom right no-repeat}ul.treelist,ul.treelist li ul{list-style:none;margin:0;padding:0;background-color:#fff}ul.treelist li ul{border-top:1px solid #ebebeb}ul.treelist li{display:block;font-size:11px;border-bottom:1px solid #ebebeb;white-space:nowrap;overflow:hidden}ul.treelist li a{cursor:default;display:block;padding-left:25px;padding-top:2px;padding-bottom:2px;height:16px;line-height:16px;text-decoration:none;white-space:nowrap}ul.treelist li ul li a{padding-left:45px}ul.treelist ul ul li a{padding-left:65px}ul.treelist li ul li:last-child{border-bottom:0}ul.treelist li.selected>a,ul.treelist li.selected>div a{color:#FFF;font-weight:bold;background-color:#929292}ul.treelist li.droptarget{background-color:#ffffa6}.folderlist li ul li:last-child{border-bottom:0 none}.folderlist li.inbox a{background-position:5px -18px}.folderlist li.drafts a{background-position:5px -36px}.folderlist li.sent a{background-position:5px -53px}.folderlist li.junk a{background-position:5px -72px}.folderlist li.trash a{background-position:5px -180px}.folderlist li.trash.empty a{background-position:5px -90px}.folderlist li a{cursor:default;display:block;position:relative;padding-left:25px;padding-top:2px;padding-bottom:2px;text-decoration:none;height:15px;background:url(images/icons/folders.png?v=d9d2.5356) 5px 1px no-repeat}.folderlist li.virtual>a{color:#666}.folderlist li.selected,.folderlist li.droptarget li.selected{background-color:#929292}.folderlist li.selected>a,.folderlist li.droptarget li.selected a{color:#FFF;font-weight:bold}.folderlist li.droptarget{background-color:#ffffa6}.folderlist ul{list-style:none;padding:0;margin:0;border-top:1px solid #ebebeb;background-color:#FFF;font-weight:normal}.folderlist li.mailbox ul li a{padding-left:40px;background-position:20px 1px}.folderlist li.mailbox ul li div.treetoggle{left:23px !important}.folderlist li.mailbox ul ul li.mailbox a{padding-left:56px;background-position:36px 1px}.folderlist li.mailbox ul ul li div.treetoggle{left:39px !important}.folderlist li.mailbox ul ul ul li.mailbox a{padding-left:72px;background-position:52px 1px}.folderlist li.mailbox ul ul ul li div.treetoggle{left:55px !important}.folderlist li.mailbox ul ul ul ul li.mailbox a{padding-left:88px;background-position:68px 1px}.folderlist li.mailbox ul ul ul ul li div.treetoggle{left:71px !important}.folderlist li.mailbox ul ul ul ul ul li{padding-left:16px}.folderlist li.mailbox ul ul ul ul ul li div.treetoggle{left:87px !important}.folderlist li.mailbox ul li.drafts a{background-position:21px -36px}.folderlist li.mailbox ul li.sent a{background-position:21px -53px}.folderlist li.mailbox ul li.junk a{background-position:21px -72px}.folderlist li.mailbox ul li.trash a{background-position:21px -180px}.folderlist li.mailbox ul li.trash.empty a{background-position:21px -90px}div.searchbox,#quicksearchbar{position:relative;width:190px;height:20px;text-align:right;background:url(images/searchfield.gif?v=36a5.397) top left no-repeat}#quicksearchbar{position:absolute;top:55px;right:10px}#searchreset,div.searchbox a.searchreset{position:absolute;top:3px;right:12px;text-decoration:none}#searchmenulink,div.searchbox a.searchmenu,div.searchbox a.searchicon{position:absolute;top:3px;right:168px}div.searchbox a.searchreset{display:block;width:14px;height:14px;overflow:hidden;white-space:nowrap;text-indent:50000px;background:url(images/icons/reset.gif?v=a31d.164) top left no-repeat}div.searchbox a.searchicon{display:inline-block;width:16px;height:16px;overflow:hidden;background:url(images/icons/glass.png?v=6b06.406) top left no-repeat}#quicksearchbar img{vertical-align:middle}#quicksearchbox,div.searchbox>input{position:absolute;top:2px;left:24px;width:140px;height:15px;font-size:11px;padding:0;border:0;outline:0}.propform div.prop{margin-bottom:.5em}.propform div.prop.block label{display:block;margin-bottom:2px}.propform div.prop.block input,.propform div.prop.block textarea{width:97%}.listsearchbox{border-bottom:solid 1px #ddd;padding:2px 4px 1px;display:none;background-color:#f2f2f2}.listsearchbox a.iconbutton.reset{background:url(images/icons/reset.gif?v=a31d.164) no-repeat 0 0;width:13px;height:13px;text-indent:50000px;position:absolute;top:3px;left:165px;overflow:hidden}#rcmversion{position:absolute;bottom:10px;right:20px;text-align:right;white-space:nowrap;font-size:8pt;color:#999}#rcmdraglayer{min-width:300px;width:auto !important;width:300px;border:1px solid #999;background-color:#fff;padding-left:8px;padding-right:8px;padding-top:3px;padding-bottom:3px;font-size:11px;white-space:nowrap;opacity:.82;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:1px 1px 12px #999;-moz-box-shadow:1px 1px 12px #999;-webkit-box-shadow:#999 1px 1px 12px}.draglayercopy:before{position:absolute;bottom:-5px;left:-6px;content:" ";width:14px;height:14px;background:url(images/messageactions.png?v=d93e.3223) -2px -128px no-repeat}a.rcmContactAddress{text-decoration:none}a.rcmContactAddress:hover{text-decoration:underline}#rcmKSearchpane{background-color:#f9f9f9;border:1px solid #ccc}#rcmKSearchpane ul{margin:0;padding:2px;list-style-image:none;list-style-type:none}#rcmKSearchpane ul li{display:block;height:16px;font-size:11px;padding-left:6px;padding-top:2px;padding-right:6px;white-space:nowrap;cursor:pointer}#rcmKSearchpane ul li.selected,#pagejump-selector ul li.selected{color:#fff;background-color:#c33}#login-form{margin-left:auto;margin-right:auto;margin-top:50px;width:400px;border:1px solid #999}#login-form table td.title{text-align:right;white-space:nowrap}#login-form table{width:1%;margin:auto}#login-form table td.input input{width:200px}#login-bottomline{width:400px;margin:5em auto;font-size:85%;text-align:center;color:#666}#login-noscriptwarning{margin:2em auto 0 auto;width:400px;color:#cf2734;font-weight:bold}.disabled,a.disabled{color:#999}font.bold{font-weight:bold}.formbuttons{text-align:center}ul.toolbarmenu{margin:-4px 0 -4px 0;padding:0;list-style:none}ul.toolbarmenu li{font-size:11px;white-space:nowrap;min-width:130px;margin:2px -4px}ul.toolbarmenu li a{display:block;color:#a0a0a0;padding:3px 12px 3px 28px;text-decoration:none;min-height:14px;line-height:14px}ul.toolbarmenu li a.active,ul.toolbarmenu li a.active:active,ul.toolbarmenu li a.active:visited{color:#333}ul.toolbarmenu li input{vertical-align:middle}ul.toolbarmenu li hr{color:#ccc;width:130px;height:1px;margin:2px 1px 2px 1px}ul.toolbarmenu li img{float:left;margin:0 2px}div.popupmenu ul li.separator_below,ul.toolbarmenu li.separator_below{border-bottom:1px solid #ccc;margin-bottom:2px;padding-bottom:2px}div.popupmenu ul li.separator_above,ul.toolbarmenu li.separator_above{border-top:1px solid #ccc;margin-top:2px;padding-top:2px}#searchmenu{width:160px}#searchmenu ul.toolbarmenu{margin:0}#searchmenu ul.toolbarmenu li{margin:1px 4px 1px}#searchmenu ul.toolbarmenu li label{padding:2px 0;color:black}#searchmenu ul.toolbarmenu li label.comment{color:#999}#searchmenu select{width:100%}#pagejump-selector{max-height:250px;overflow-x:hidden}#pagejump-selector ul li{min-width:45px;padding:2px 5px;cursor:default}#folder-selector li a{padding:0}#folder-selector li a span{background:url(images/icons/folders.png?v=d9d2.5356) no-repeat 6px 0;display:block;height:15px;min-height:14px;padding:2px 4px 2px 28px;overflow:hidden;max-width:120px;text-overflow:ellipsis}#folder-selector li a.virtual{color:#a0a0a0}#folder-selector li a.active:hover span{color:white}#folder-selector li a.inbox span{background-position:6px -18px}#folder-selector li a.drafts span{background-position:6px -37px}#folder-selector li a.sent span{background-position:6px -54px}#folder-selector li a.trash span{background-position:6px -91px}#folder-selector li a.junk span{background-position:6px -73px}div.tabsbar,#tabsbar{position:absolute;top:50px;left:220px;right:20px;height:22px;border-bottom:1px solid #999;white-space:nowrap}div.tabsbar{top:35px;left:12px;right:12px}span.tablink,span.tablink-selected{float:left;height:23px !important;height:22px;overflow:hidden;background:url(images/tabs-left.gif?v=d7b0.230) top left no-repeat}span.tablink{cursor:pointer}span.tablink-selected{cursor:default;background-position:0 -23px}span.tablink a,span.tablink-selected a{display:inline-block;padding:5px 10px 0 5px;margin-left:5px;height:23px;color:#555;max-width:185px;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;background:url(images/tabs-right.gif?v=5c83.1417) top right no-repeat}span.tablink-selected a{cursor:inherit;color:#000;background-position:right -23px}fieldset{margin-bottom:1em;border:1px solid #999;padding:4px 8px 9px 8px}legend{color:#999}fieldset.tabbed{margin-top:22px;padding-top:12px}.quota_text{text-align:center;font-size:10px;color:#666;border:1px solid #999;cursor:default}.quota_bg{background-color:white}.quota_high{background:url(images/quota-colors.png?v=c1e9.287) repeat-x 0 -28px #f90509}.quota_mid{background:url(images/quota-colors.png?v=c1e9.287) repeat-x 0 -14px #e3e909}.quota_low{background:url(images/quota-colors.png?v=c1e9.287) repeat-x 0 0 #05f905}.quota_text_high{color:white}.quota_text_mid{color:#666}.quota_text_low{color:#666}table.quota-info{border-spacing:0;border-collapse:collapse;table-layout:fixed;margin:2px}table.quota-info td,table.quota-info th{border:1px solid #999;padding:2px 3px;text-align:center;min-width:80px;color:#333;font-size:11px}table.quota-info th{font-weight:bold;background-color:#ddd}table.quota-info td.name{text-align:left}table.quota-info td.root{font-style:italic}.mce-btn-small button{height:22px}.mce-btn-small i{line-height:16px !important;vertical-align:text-top !important}.mce-combobox button{padding:6px 8px !important}.mce-tinymce{border-radius:0 !important;{.mce-panel.mce-toolbar-grp{border:0 !important}#image-selector-form.droptarget{background:url(images/filedrop.png?v=deab.605) center bottom no-repeat}#image-selector-form.droptarget.hover{background-color:#f0f0ee;box-shadow:0 0 5px 0 #999;-moz-box-shadow:0 0 5px 0 #999;-o-box-shadow:0 0 5px 0 #999}
\ No newline at end of file
Binary files old/roundcubemail-1.2.3/skins/classic/images/buttons/bg.gif and new/roundcubemail-1.2.4/skins/classic/images/buttons/bg.gif differ
Binary files old/roundcubemail-1.2.3/skins/classic/images/pagenav.gif and new/roundcubemail-1.2.4/skins/classic/images/pagenav.gif differ
Binary files old/roundcubemail-1.2.3/skins/classic/images/searchfield.gif and new/roundcubemail-1.2.4/skins/classic/images/searchfield.gif differ
Binary files old/roundcubemail-1.2.3/skins/classic/images/tabs-left.gif and new/roundcubemail-1.2.4/skins/classic/images/tabs-left.gif differ
Binary files old/roundcubemail-1.2.3/skins/classic/images/tabs-right.gif and new/roundcubemail-1.2.4/skins/classic/images/tabs-right.gif differ
Binary files old/roundcubemail-1.2.3/skins/classic/images/taskicons.gif and new/roundcubemail-1.2.4/skins/classic/images/taskicons.gif differ
Binary files old/roundcubemail-1.2.3/skins/classic/images/watermark.gif and new/roundcubemail-1.2.4/skins/classic/images/watermark.gif differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/skins/classic/settings.css new/roundcubemail-1.2.4/skins/classic/settings.css
--- old/roundcubemail-1.2.3/skins/classic/settings.css 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/skins/classic/settings.css 2017-03-10 17:41:12.000000000 +0100
@@ -192,7 +192,7 @@
{
min-height: 200px;
padding-bottom: 2em;
- background: url(images/watermark.gif?v=4094.9288) no-repeat center;
+ background: url(images/watermark.gif?v=61d5.11081) no-repeat center;
}
#license .sysname
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.2.3/skins/classic/settings.min.css new/roundcubemail-1.2.4/skins/classic/settings.min.css
--- old/roundcubemail-1.2.3/skins/classic/settings.min.css 2016-11-27 17:08:58.000000000 +0100
+++ new/roundcubemail-1.2.4/skins/classic/settings.min.css 2017-03-10 17:41:12.000000000 +0100
@@ -1 +1 @@
-#rcmfd_timezone{width:300px}#folder-manager.droptarget{border:1px solid #c33;background-color:#ffffa6}#folderlist-title a.iconbutton.search{background:url(images/icons/glass.png?v=6b06.406) no-repeat 0 0;cursor:pointer;position:absolute;right:4px;top:2px;width:16px;text-indent:50000px}.listsearchbox select{width:100%;margin:1px 0}#identities-table,#sections-table{width:100%;table-layout:fixed}#identities-table tbody tr td,#sections-table tbody tr td{cursor:default}#identities-table tbody tr.readonly td{font-style:italic}#subscription-table li.root{font-size:5%;line-height:5px;height:5px;padding:2px}#subscription-table li input{position:absolute;right:0;top:2px}#subscription-table li a{padding-right:20px;overflow:hidden;text-overflow:ellipsis}#folder-box,#prefs-box,#identity-box{position:absolute;top:0;right:0;bottom:0;border:1px solid #999;overflow:hidden;background-color:#f2f2f2}#identity-details table td.title,#response-details table td.title,#folder-details table td.title{font-weight:bold;text-align:right;width:1%;white-space:nowrap}#response-details table td.title{text-align:left;vertical-align:top;width:140px;padding-top:5px}#bottomboxes{position:absolute;width:600px;height:95px;left:0;bottom:0}#identities-list,#folder-manager,#sectionslist{position:absolute;top:0;left:0;bottom:0;border:1px solid #999;background-color:#f9f9f9;overflow:hidden}body.iframe,#prefs-frame,#folder-frame,#identity-frame{background-color:#f2f2f2;border:0;min-height:100%}#prefs-title,#folder-title,#identity-title{z-index:10}#formfooter{width:100%}#formfooter .footerleft{padding:0 2px 10px;white-space:nowrap;float:left}#formfooter .footerright{padding:0 2px 10px;white-space:nowrap;text-align:right;float:right}#formfooter .footerindent{padding:10px 0;margin-left:155px}#quota{position:absolute;top:3px;right:8px;width:100px}#quotaimg{position:absolute;top:3px;right:6px;z-index:101}#rcmfd_signature{font-family:monospace}div.readtext{width:42em;padding:20px}#license{min-height:200px;padding-bottom:2em;background:url(images/watermark.gif?v=4094.9288) no-repeat center}#license .sysname{font-size:18px;font-weight:bold}#license .copyright{font-weight:bold}#license .license,#license .links{margin-top:1.5em}.skinselection{display:block;white-space:nowrap;margin:.3em 0}.skinselection span{display:inline-block;vertical-align:middle;padding-right:1em}.skinselection .skinname{font-weight:bold}.skinselection .skinlicense,.skinselection .skinlicense a{color:#999;font-style:italic;text-decoration:none}.skinselection .skinlicense a:hover{text-decoration:underline}img.skinthumbnail{width:64px;height:64px;border:1px solid #999;background:#fff}#pluginlist{border:1px solid #999;width:100%}#pluginlist td.version{text-align:center}div.crop{overflow:auto}#rcmfd_signature{width:99%;min-width:390px}#rcmfd_signature_toolbar1 td,#rcmfd_signature_toolbar2 td{width:auto}
\ No newline at end of file
+#rcmfd_timezone{width:300px}#folder-manager.droptarget{border:1px solid #c33;background-color:#ffffa6}#folderlist-title a.iconbutton.search{background:url(images/icons/glass.png?v=6b06.406) no-repeat 0 0;cursor:pointer;position:absolute;right:4px;top:2px;width:16px;text-indent:50000px}.listsearchbox select{width:100%;margin:1px 0}#identities-table,#sections-table{width:100%;table-layout:fixed}#identities-table tbody tr td,#sections-table tbody tr td{cursor:default}#identities-table tbody tr.readonly td{font-style:italic}#subscription-table li.root{font-size:5%;line-height:5px;height:5px;padding:2px}#subscription-table li input{position:absolute;right:0;top:2px}#subscription-table li a{padding-right:20px;overflow:hidden;text-overflow:ellipsis}#folder-box,#prefs-box,#identity-box{position:absolute;top:0;right:0;bottom:0;border:1px solid #999;overflow:hidden;background-color:#f2f2f2}#identity-details table td.title,#response-details table td.title,#folder-details table td.title{font-weight:bold;text-align:right;width:1%;white-space:nowrap}#response-details table td.title{text-align:left;vertical-align:top;width:140px;padding-top:5px}#bottomboxes{position:absolute;width:600px;height:95px;left:0;bottom:0}#identities-list,#folder-manager,#sectionslist{position:absolute;top:0;left:0;bottom:0;border:1px solid #999;background-color:#f9f9f9;overflow:hidden}body.iframe,#prefs-frame,#folder-frame,#identity-frame{background-color:#f2f2f2;border:0;min-height:100%}#prefs-title,#folder-title,#identity-title{z-index:10}#formfooter{width:100%}#formfooter .footerleft{padding:0 2px 10px;white-space:nowrap;float:left}#formfooter .footerright{padding:0 2px 10px;white-space:nowrap;text-align:right;float:right}#formfooter .footerindent{padding:10px 0;margin-left:155px}#quota{position:absolute;top:3px;right:8px;width:100px}#quotaimg{position:absolute;top:3px;right:6px;z-index:101}#rcmfd_signature{font-family:monospace}div.readtext{width:42em;padding:20px}#license{min-height:200px;padding-bottom:2em;background:url(images/watermark.gif?v=61d5.11081) no-repeat center}#license .sysname{font-size:18px;font-weight:bold}#license .copyright{font-weight:bold}#license .license,#license .links{margin-top:1.5em}.skinselection{display:block;white-space:nowrap;margin:.3em 0}.skinselection span{display:inline-block;vertical-align:middle;padding-right:1em}.skinselection .skinname{font-weight:bold}.skinselection .skinlicense,.skinselection .skinlicense a{color:#999;font-style:italic;text-decoration:none}.skinselection .skinlicense a:hover{text-decoration:underline}img.skinthumbnail{width:64px;height:64px;border:1px solid #999;background:#fff}#pluginlist{border:1px solid #999;width:100%}#pluginlist td.version{text-align:center}div.crop{overflow:auto}#rcmfd_signature{width:99%;min-width:390px}#rcmfd_signature_toolbar1 td,#rcmfd_signature_toolbar2 td{width:auto}
\ No newline at end of file
++++++ roundcubemail-httpd.conf ++++++
--- /var/tmp/diff_new_pack.qQALdw/_old 2017-03-20 17:09:45.928153169 +0100
+++ /var/tmp/diff_new_pack.qQALdw/_new 2017-03-20 17:09:45.932152604 +0100
@@ -71,6 +71,8 @@
RewriteRule ^(?!installer|\.well-known\/|[a-f0-9]{16})(\.?[^\.]+)$ - [F]
# - deny access to some locations
RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
+ # - deny access to composer binaries
+ RewriteRule ^/vendor\/bin\/.* - [F]
# - deny access to some documentation files
RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml|Dockerfile)$ - [F]
# security rules