openSUSE Commits
Threads by month
- ----- 2024 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2016
- 1 participants
- 1523 discussions
Hello community,
here is the log from the commit of package kscreen5 for openSUSE:Factory checked in at 2016-01-03 13:25:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kscreen5 (Old)
and /work/SRC/openSUSE:Factory/.kscreen5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kscreen5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kscreen5/kscreen5.changes 2015-12-29 12:56:32.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kscreen5.new/kscreen5.changes 2016-01-03 13:25:48.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:07 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
kscreen-5.5.1.tar.xz
New:
----
kscreen-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kscreen5.spec ++++++
--- /var/tmp/diff_new_pack.Tv6kKY/_old 2016-01-03 13:25:49.000000000 +0100
+++ /var/tmp/diff_new_pack.Tv6kKY/_new 2016-01-03 13:25:49.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kscreen5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: KDE's screen management software
License: GPL-2.0+
++++++ kscreen-5.5.1.tar.xz -> kscreen-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kscreen-5.5.1/CMakeLists.txt new/kscreen-5.5.2/CMakeLists.txt
--- old/kscreen-5.5.1/CMakeLists.txt 2015-12-15 11:24:11.000000000 +0100
+++ new/kscreen-5.5.2/CMakeLists.txt 2015-12-22 11:33:59.000000000 +0100
@@ -1,5 +1,5 @@
project(KScreen)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
cmake_minimum_required(VERSION 2.8.12)
1
0
Hello community,
here is the log from the commit of package kmenuedit5 for openSUSE:Factory checked in at 2016-01-03 13:25:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kmenuedit5 (Old)
and /work/SRC/openSUSE:Factory/.kmenuedit5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kmenuedit5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kmenuedit5/kmenuedit5.changes 2015-12-29 12:56:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kmenuedit5.new/kmenuedit5.changes 2016-01-03 13:25:44.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:06 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
kmenuedit-5.5.1.tar.xz
New:
----
kmenuedit-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kmenuedit5.spec ++++++
--- /var/tmp/diff_new_pack.Ez5hX5/_old 2016-01-03 13:25:44.000000000 +0100
+++ /var/tmp/diff_new_pack.Ez5hX5/_new 2016-01-03 13:25:44.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kmenuedit5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: Provides the interface and basic tools for the KDE workspace
License: GPL-2.0
++++++ kmenuedit-5.5.1.tar.xz -> kmenuedit-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kmenuedit-5.5.1/CMakeLists.txt new/kmenuedit-5.5.2/CMakeLists.txt
--- old/kmenuedit-5.5.1/CMakeLists.txt 2015-12-15 11:23:34.000000000 +0100
+++ new/kmenuedit-5.5.2/CMakeLists.txt 2015-12-22 11:33:01.000000000 +0100
@@ -1,5 +1,5 @@
project(kmenuedit)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
set(QT_MIN_VERSION "5.4.0")
1
0
Hello community,
here is the log from the commit of package kinfocenter5 for openSUSE:Factory checked in at 2016-01-03 13:25:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kinfocenter5 (Old)
and /work/SRC/openSUSE:Factory/.kinfocenter5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kinfocenter5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kinfocenter5/kinfocenter5.changes 2015-12-29 12:56:22.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kinfocenter5.new/kinfocenter5.changes 2016-01-03 13:25:39.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:06 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
kinfocenter-5.5.1.tar.xz
New:
----
kinfocenter-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kinfocenter5.spec ++++++
--- /var/tmp/diff_new_pack.Sm0Rnm/_old 2016-01-03 13:25:40.000000000 +0100
+++ /var/tmp/diff_new_pack.Sm0Rnm/_new 2016-01-03 13:25:40.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kinfocenter5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: Utility that provides information about a computer system
License: GPL-2.0+
++++++ kinfocenter-5.5.1.tar.xz -> kinfocenter-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kinfocenter-5.5.1/CMakeLists.txt new/kinfocenter-5.5.2/CMakeLists.txt
--- old/kinfocenter-5.5.1/CMakeLists.txt 2015-12-15 11:23:09.000000000 +0100
+++ new/kinfocenter-5.5.2/CMakeLists.txt 2015-12-22 11:32:25.000000000 +0100
@@ -1,5 +1,5 @@
project(kinfocenter)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
set(QT_MIN_VERSION "5.4.0")
1
0
Hello community,
here is the log from the commit of package khotkeys5 for openSUSE:Factory checked in at 2016-01-03 13:25:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/khotkeys5 (Old)
and /work/SRC/openSUSE:Factory/.khotkeys5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "khotkeys5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/khotkeys5/khotkeys5.changes 2015-12-29 12:56:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.khotkeys5.new/khotkeys5.changes 2016-01-03 13:25:35.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:05 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
khotkeys-5.5.1.tar.xz
New:
----
khotkeys-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ khotkeys5.spec ++++++
--- /var/tmp/diff_new_pack.Gj6NdF/_old 2016-01-03 13:25:35.000000000 +0100
+++ /var/tmp/diff_new_pack.Gj6NdF/_new 2016-01-03 13:25:35.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: khotkeys5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: KDE's hotkey daemon
License: GPL-2.0+
++++++ khotkeys-5.5.1.tar.xz -> khotkeys-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/khotkeys-5.5.1/CMakeLists.txt new/khotkeys-5.5.2/CMakeLists.txt
--- old/khotkeys-5.5.1/CMakeLists.txt 2015-12-15 11:22:24.000000000 +0100
+++ new/khotkeys-5.5.2/CMakeLists.txt 2015-12-22 11:31:19.000000000 +0100
@@ -1,5 +1,5 @@
project(khotkeys)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
set(PROJECT_VERSION_MAJOR 5)
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
1
0
Hello community,
here is the log from the commit of package kde-user-manager for openSUSE:Factory checked in at 2016-01-03 13:25:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kde-user-manager (Old)
and /work/SRC/openSUSE:Factory/.kde-user-manager.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kde-user-manager"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kde-user-manager/kde-user-manager.changes 2015-12-29 12:56:11.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kde-user-manager.new/kde-user-manager.changes 2016-01-03 13:25:31.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:04 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
user-manager-5.5.1.tar.xz
New:
----
user-manager-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kde-user-manager.spec ++++++
--- /var/tmp/diff_new_pack.AJMODm/_old 2016-01-03 13:25:32.000000000 +0100
+++ /var/tmp/diff_new_pack.AJMODm/_new 2016-01-03 13:25:32.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kde-user-manager
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: A simple system settings module to manage the users of your system
License: GPL-2.0+
++++++ user-manager-5.5.1.tar.xz -> user-manager-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/user-manager-5.5.1/CMakeLists.txt new/user-manager-5.5.2/CMakeLists.txt
--- old/user-manager-5.5.1/CMakeLists.txt 2015-12-15 11:36:45.000000000 +0100
+++ new/user-manager-5.5.2/CMakeLists.txt 2015-12-22 11:51:29.000000000 +0100
@@ -1,6 +1,6 @@
project(user-manager)
cmake_minimum_required(VERSION 2.8.12)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
find_package(ECM 1.3.0 REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
1
0
Hello community,
here is the log from the commit of package kde-gtk-config5 for openSUSE:Factory checked in at 2016-01-03 13:25:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kde-gtk-config5 (Old)
and /work/SRC/openSUSE:Factory/.kde-gtk-config5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kde-gtk-config5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kde-gtk-config5/kde-gtk-config5.changes 2015-12-29 12:56:04.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kde-gtk-config5.new/kde-gtk-config5.changes 2016-01-03 13:25:26.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:03 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
kde-gtk-config-5.5.1.tar.xz
New:
----
kde-gtk-config-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kde-gtk-config5.spec ++++++
--- /var/tmp/diff_new_pack.EYVoNd/_old 2016-01-03 13:25:27.000000000 +0100
+++ /var/tmp/diff_new_pack.EYVoNd/_new 2016-01-03 13:25:27.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kde-gtk-config5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: KCM Module to Configure GTK2 and GTK3 Applications Appearance Under KDE
License: LGPL-3.0+ and GPL-3.0+
++++++ kde-gtk-config-5.5.1.tar.xz -> kde-gtk-config-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-gtk-config-5.5.1/CMakeLists.txt new/kde-gtk-config-5.5.2/CMakeLists.txt
--- old/kde-gtk-config-5.5.1/CMakeLists.txt 2015-12-15 11:20:11.000000000 +0100
+++ new/kde-gtk-config-5.5.2/CMakeLists.txt 2015-12-22 11:28:13.000000000 +0100
@@ -1,5 +1,5 @@
project(kde-gtk-config)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
cmake_minimum_required(VERSION 2.8.12)
find_package(ECM 0.0.9 REQUIRED NO_MODULE)
1
0
Hello community,
here is the log from the commit of package kde-cli-tools5 for openSUSE:Factory checked in at 2016-01-03 13:25:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kde-cli-tools5 (Old)
and /work/SRC/openSUSE:Factory/.kde-cli-tools5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kde-cli-tools5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kde-cli-tools5/kde-cli-tools5.changes 2015-12-29 12:56:01.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kde-cli-tools5.new/kde-cli-tools5.changes 2016-01-03 13:25:22.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:03 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
kde-cli-tools-5.5.1.tar.xz
New:
----
kde-cli-tools-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kde-cli-tools5.spec ++++++
--- /var/tmp/diff_new_pack.yEaxe4/_old 2016-01-03 13:25:23.000000000 +0100
+++ /var/tmp/diff_new_pack.yEaxe4/_new 2016-01-03 13:25:23.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: kde-cli-tools5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: Additional CLI tools for KDE applications
License: GPL-2.0+
++++++ kde-cli-tools-5.5.1.tar.xz -> kde-cli-tools-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-cli-tools-5.5.1/CMakeLists.txt new/kde-cli-tools-5.5.2/CMakeLists.txt
--- old/kde-cli-tools-5.5.1/CMakeLists.txt 2015-12-15 11:19:49.000000000 +0100
+++ new/kde-cli-tools-5.5.2/CMakeLists.txt 2015-12-22 11:27:47.000000000 +0100
@@ -1,5 +1,5 @@
project(KDE-CLI-Tools)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
set(QT_MIN_VERSION "5.4.0")
1
0
Hello community,
here is the log from the commit of package kcm_sddm for openSUSE:Factory checked in at 2016-01-03 13:24:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kcm_sddm (Old)
and /work/SRC/openSUSE:Factory/.kcm_sddm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kcm_sddm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kcm_sddm/kcm_sddm.changes 2015-12-29 12:55:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kcm_sddm.new/kcm_sddm.changes 2016-01-03 13:25:17.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:02 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
sddm-kcm-5.5.1.tar.xz
New:
----
sddm-kcm-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kcm_sddm.spec ++++++
--- /var/tmp/diff_new_pack.0PFUhC/_old 2016-01-03 13:25:17.000000000 +0100
+++ /var/tmp/diff_new_pack.0PFUhC/_new 2016-01-03 13:25:17.000000000 +0100
@@ -21,7 +21,7 @@
Summary: A sddm control module for KDE
License: GPL-2.0
Group: System/GUI/KDE
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Url: https://projects.kde.org/projects/kdereview/sddm-kcm/repository
Source: sddm-kcm-%{version}.tar.xz
++++++ sddm-kcm-5.5.1.tar.xz -> sddm-kcm-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sddm-kcm-5.5.1/CMakeLists.txt new/sddm-kcm-5.5.2/CMakeLists.txt
--- old/sddm-kcm-5.5.1/CMakeLists.txt 2015-12-15 11:36:11.000000000 +0100
+++ new/sddm-kcm-5.5.2/CMakeLists.txt 2015-12-22 11:50:47.000000000 +0100
@@ -1,6 +1,6 @@
project(sddm-kcm)
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
set(QT_MIN_VERSION "5.4.0")
find_package(ECM 1.0.0 REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
1
0
Hello community,
here is the log from the commit of package breeze for openSUSE:Factory checked in at 2016-01-03 13:24:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/breeze (Old)
and /work/SRC/openSUSE:Factory/.breeze.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "breeze"
Changes:
--------
--- /work/SRC/openSUSE:Factory/breeze/breeze.changes 2015-12-29 12:55:56.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.breeze.new/breeze.changes 2016-01-03 13:25:12.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:02 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
breeze4-style.changes: same change
Old:
----
breeze-5.5.1.tar.xz
New:
----
breeze-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ breeze.spec ++++++
--- /var/tmp/diff_new_pack.a0YPWN/_old 2016-01-03 13:25:14.000000000 +0100
+++ /var/tmp/diff_new_pack.a0YPWN/_new 2016-01-03 13:25:14.000000000 +0100
@@ -18,7 +18,7 @@
%bcond_without lang
Name: breeze
-Version: 5.5.1
+Version: 5.5.2
Release: 0
BuildRequires: cmake >= 2.8.12
BuildRequires: extra-cmake-modules >= 0.0.13
++++++ breeze4-style.spec ++++++
--- /var/tmp/diff_new_pack.a0YPWN/_old 2016-01-03 13:25:14.000000000 +0100
+++ /var/tmp/diff_new_pack.a0YPWN/_new 2016-01-03 13:25:14.000000000 +0100
@@ -17,7 +17,7 @@
Name: breeze4-style
-Version: 5.5.1
+Version: 5.5.2
Release: 0
BuildRequires: automoc4
BuildRequires: cmake >= 2.8.12
++++++ breeze-5.5.1.tar.xz -> breeze-5.5.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/breeze/breeze-5.5.1.tar.xz /work/SRC/openSUSE:Factory/.breeze.new/breeze-5.5.2.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package bluedevil5 for openSUSE:Factory checked in at 2016-01-03 13:24:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bluedevil5 (Old)
and /work/SRC/openSUSE:Factory/.bluedevil5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bluedevil5"
Changes:
--------
--- /work/SRC/openSUSE:Factory/bluedevil5/bluedevil5.changes 2015-12-29 12:55:53.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.bluedevil5.new/bluedevil5.changes 2016-01-03 13:25:08.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 22 22:35:01 UTC 2015 - hrvoje.senjan(a)gmail.com
+
+- Update to 5.5.2:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.5.2.php
+
+-------------------------------------------------------------------
Old:
----
bluedevil-5.5.1.tar.xz
New:
----
bluedevil-5.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bluedevil5.spec ++++++
--- /var/tmp/diff_new_pack.fFwaQs/_old 2016-01-03 13:25:09.000000000 +0100
+++ /var/tmp/diff_new_pack.fFwaQs/_new 2016-01-03 13:25:09.000000000 +0100
@@ -19,7 +19,7 @@
%bcond_without lang
Name: bluedevil5
-Version: 5.5.1
+Version: 5.5.2
Release: 0
Summary: Bluetooth Manager for KDE
License: GPL-2.0+
++++++ bluedevil-5.5.1.tar.xz -> bluedevil-5.5.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluedevil-5.5.1/CMakeLists.txt new/bluedevil-5.5.2/CMakeLists.txt
--- old/bluedevil-5.5.1/CMakeLists.txt 2015-12-15 11:17:26.000000000 +0100
+++ new/bluedevil-5.5.2/CMakeLists.txt 2015-12-22 11:23:59.000000000 +0100
@@ -1,5 +1,5 @@
project(bluedevil)
-set(PROJECT_VERSION "5.5.1")
+set(PROJECT_VERSION "5.5.2")
set(PROJECT_VERSION_MAJOR 5)
cmake_minimum_required(VERSION 2.8.12)
1
0
Hello community,
here is the log from the commit of package grub2 for openSUSE:13.2:Update checked in at 2016-01-03 12:32:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/grub2 (Old)
and /work/SRC/openSUSE:13.2:Update/.grub2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.m6n6WH/_old 2016-01-03 12:32:23.000000000 +0100
+++ /var/tmp/diff_new_pack.m6n6WH/_new 2016-01-03 12:32:23.000000000 +0100
@@ -1 +1 @@
-<link package='grub2.4426' cicount='copy' />
+<link package='grub2.4447' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package patchinfo.4452 for openSUSE:13.2:Update checked in at 2016-01-01 21:50:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/patchinfo.4452 (Old)
and /work/SRC/openSUSE:13.2:Update/.patchinfo.4452.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patchinfo.4452"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
_patchinfo
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _patchinfo ++++++
<patchinfo incident="4452">
<packager>AndreasStieger</packager>
<issue tracker="cve" id="CVE-2015-8614"></issue>
<issue tracker="bnc" id="959993">VUL-0: CVE-2015-8614: claws-mail: no bounds check could lead to stack overflow</issue>
<category>security</category>
<rating>moderate</rating>
<summary>Security update for claws-mail</summary>
<description>This update for claws-mail fixes the following security issue:
* CVE-2015-8614: buffer overrun issues in Japanese character set conversion code could allow an adversary to remotely crash claws and potentially have further unspecified impact (boo#959993)</description>
</patchinfo>
1
0
Hello community,
here is the log from the commit of package claws-mail for openSUSE:13.2:Update checked in at 2016-01-01 21:50:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.2:Update/claws-mail (Old)
and /work/SRC/openSUSE:13.2:Update/.claws-mail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "claws-mail"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.UbsYXr/_old 2016-01-01 21:50:26.000000000 +0100
+++ /var/tmp/diff_new_pack.UbsYXr/_new 2016-01-01 21:50:26.000000000 +0100
@@ -1 +1 @@
-<link package='claws-mail.3126' cicount='copy' />
+<link package='claws-mail.4452' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package claws-mail for openSUSE:13.1:Update checked in at 2016-01-01 21:50:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/claws-mail (Old)
and /work/SRC/openSUSE:13.1:Update/.claws-mail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "claws-mail"
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _link ++++++
--- /var/tmp/diff_new_pack.X1rnxG/_old 2016-01-01 21:50:24.000000000 +0100
+++ /var/tmp/diff_new_pack.X1rnxG/_new 2016-01-01 21:50:24.000000000 +0100
@@ -1 +1 @@
-<link package='claws-mail.3051' cicount='copy' />
+<link package='claws-mail.4452' cicount='copy' />
1
0
Hello community,
here is the log from the commit of package claws-mail.4452 for openSUSE:13.1:Update checked in at 2016-01-01 21:50:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1:Update/claws-mail.4452 (Old)
and /work/SRC/openSUSE:13.1:Update/.claws-mail.4452.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "claws-mail.4452"
Changes:
--------
New Changes file:
--- /dev/null 2015-12-29 16:09:11.912035506 +0100
+++ /work/SRC/openSUSE:13.1:Update/.claws-mail.4452.new/claws-mail.changes 2016-01-01 21:50:20.000000000 +0100
@@ -0,0 +1,1884 @@
+-------------------------------------------------------------------
+Thu Dec 24 03:08:30 UTC 2015 - badshah400(a)gmail.com
+
+- Add claws-mail-dont-overshoot-output-buffer.patch to prevent
+ buffer overrun issues (boo#959993, CVE-2015-8614, claws#3557).
+
+-------------------------------------------------------------------
+Mon Aug 4 00:40:21 UTC 2014 - malcolmlewis(a)opensuse.org
+
+- Update to version 3.10.1 (bnc#870858):
+ + Add an account preference to allow automatically accepting
+ unknown and changed SSL certificates, if they're valid (that
+ is, if the root CA is trusted by the distro).
+ + RFE 3196, 'When changing quicksearch Search Type, set focus to
+ search input box'.
+ + PGP/Core plugin: Generate 2048 bit RSA keys.
+ + Major code cleanup.
+ + Extended claws-mail.desktop with Compose and Receive actions.
+ + Fix GConf use with newer Glib.
+ + Fix the race fix, now preventing the compose window to be
+ closed.
+ + Fix "File (null) doesn't exist" error dialog, when attaching a
+ non-existing file via --attach
+ + Fix spacing in Folderview if the font is far from the system
+ font.
+ + RSSyl:
+ - When parsing RSS 2.0, ignore tags with a namespace prefix.
+ - Check for existence of xmlNode namespace, to prevent NULL
+ pointer crashes.
+ + Bugs fixed: claws#2728, claws#2981, claws#3170, claws#3179,
+ claws#3201, deb#730050.
+ + Updated translations.
+- Drop claws-mail-3.10.0_uninitialized_variable_git51af19b.patch as
+ fixed upstream.
+
+-------------------------------------------------------------------
+Mon May 26 16:11:13 UTC 2014 - mrueckert(a)suse.de
+
+- fix tarball url:
+ - not all occurences of the version were using the macro
+ - wrong SF project name
+
+-------------------------------------------------------------------
+Mon May 26 13:56:35 UTC 2014 - mrueckert(a)suse.de
+
+- added claws-mail-3.10.0_uninitialized_variable_git51af19b.patch:
+ Patch taken from upstream. Fixes an uninitialized variable use.
+
+-------------------------------------------------------------------
+Mon May 26 12:52:29 UTC 2014 - mrueckert(a)suse.de
+
+- update to 3.10.0 - (CVE-2014-2576)
+ - Complete SSL certificate chains are now saved, and if built with
+ Libetpan 1.4.1, the IMAP SSL connection's certificate chain is made
+ available. Both of these allow correct certificate verification
+ instead of a bogus 'No certificate issuer found' status.
+ - Auto-configuration of account email servers, based on SRV records,
+ is now possible. (GLib >= 2.22 is required.)
+ - Added a preference to avoid automatically drafting emails that are
+ to be sent encrypted, (Configuration/Preferences/Compose/Writing).
+ - Messages saved as Drafts are now saved as New, highlighting the
+ Drafts folder, in order to draw the attention to unfinished mails
+ there.
+ - It is now possible to add a 'Replace signature' button to the
+ Compose window toolbar.
+ - Quotation wrapping and undo/redo in the Compose window has been
+ improved.
+ - 'Reply to all' now excludes your own address.
+ - The 'Generate X-Mailer header' option has been renamed 'Add user
+ agent header' and applies to both X-Mailer and X-Newsreader headers.
+ - Added hidden preferences, 'address_search_wildcard' and
+ 'folder_search_wildcard', to choose between matching from start of
+ the folder name/address or any part of the name. (Activating these
+ options restores the previous behaviour.)
+ - Added hidden preference 'enable_avatars' to control the internal
+ capture/render process, and which allows disabling it by external
+ plugins for example.
+ - 'Check for new folders' now only updates the folder list, not
+ updating the contents of folders. If needed, it can be followed by
+ 'Check for new messages'
+ - When using Redirect, the redirecting account's address is used in
+ the SMTP MAIL FROM instead of the original sender's address.
+ - NEW: Libravatar plugin, which displays avatars from
+ https://www.libravatar.org/
+ - Added support for an arbitrary number and sources of 'avatars' and
+ images for email senders, and migrated Face and X-Face headers.
+ - Avatars are now included when printing mails.
+ - The GPG keyring can now be used as the source for address auto-
+ completion.
+ - The vCalendar and RSSyl plugins now have an option to disable SSL
+ certificate verification (and check them by default).
+ - The ClamAV plugin now pops up an error message only once instead of
+ repeatedly
+ - Updated the man page and the manual.
+ - Updated Brazilian Portuguese, British English, Czech, Dutch,
+ Finnish, French, Hebrew, Hungarian, Indonesian, Lithuanian, Slovak,
+ Spanish, and Swedish translations.
+ - Added Esperanto translation.
+ - Bug fixes:
+ claws#1644, claws#2119, claws#2145, claws#2179, claws#2238,
+ claws#2389, claws#2398, claws#2447, claws#2643, claws#2875,
+ claws#2991, claws#3020, claws#3055, claws#3038, claws#3039,
+ claws#3040, claws#3050, claws#3094, claws#3100, claws#3105,
+ claws#3106, claws#3107, claws#3116, claws#3117, claws#3120,
+ claws#3131, claws#3138, claws#3139, claws#3145, claws#3146,
+ claws#3147, claws#3148, claws#3150, claws#3155, claws#3169,
+ claws#3964
+- package the provided appdate xml file
+- enabled more features in the notification plugin:
+ new buildRequires: pkgconfig(libnotify) libcanberra-devel >= 0.6
+
+-------------------------------------------------------------------
+Mon Dec 16 19:07:49 UTC 2013 - zaitor(a)opensuse.org
+
+- Update to version 3.9.3:
+ + The TAB address completion in the Compose window now matches
+ any part of the address and not just the beginning.
+ + When copying or moving a message, the type-ahead search now
+ matches any part of a folder name and not just the beginning.
+ + It is now possible to replace the current signature in the
+ Compose window by using the '/Message/Replace signature' menu
+ item.
+ + It is now possible to disable the 'Subject is empty' warning
+ dialogue. See the option 'Warn when Subject is empty' option on
+ the '/Configuration/Preferences/Mail handling/Sending' page.
+ + When sending messages, if the hostname cannot be determined,
+ fallback to 'localhost' rather than 'unknown', as the latter is
+ rejected by some servers.
+ + Added better handling of messages from broken mailers, such as
+ yahoo groups.
+ + PDF plugin: the minimum required version of poppler is 0.12.0.
+ + PGP/* plugin: long key IDs are now displayed in the dialogues
+ instead of short IDs.
+ + PGP/* plugin: The automatic signature check is now
+ non-blocking.
+ + Python plugin: can now access accounts, mailboxes, folder
+ properties.
+ + vCalendar plugin: webcals:// URLs are now treated as https://
+ + Support for Maemo has been removed.
+ + Bugs fixed: claws#2132, claws#2210, claws#2794, claws#2923,
+ claws#2940, claws#2954, claws#2957, claws#2960, claws#2961,
+ claws#2964, claws#2979, claws#2982, claws#2986, claws#2989,
+ claws#2994, claws#2995, claws#3002, claws#3004, claws#3009,
+ claws#3011, claws#3021, deb#711864.
+ + Quote all specials in name as defined on RFC, see
+ http://tools.ietf.org/html/rfc5322#section-3.2.3.
+ + Fix sensitivity and state of 'hide read threads'.
+ + Fancy plugin: disable DNS Prefetching when 'Enable loading of
+ remote content' is switched off.
+ + Bogofilter plugin: insert X-Bogosity header like the option
+ says, not X-Claws-Bogosity header.
+ + Updated translations.
+- Drop claws-mail-missing-include.patch, fixed upstream.
+
+-------------------------------------------------------------------
+Sun Nov 10 10:35:29 UTC 2013 - dimstar(a)opensuse.org
+
+- Drop claws-mail-fix-address-quotes.patch: This patch on its own
+ has negative side-effects.
+
+-------------------------------------------------------------------
+Wed Nov 6 01:21:22 UTC 2013 - malcolmlewis(a)opensuse.org
+
+- Add claws-mail-fix-address-quotes.patch: Fix quotes all
+ addresses which need quoting just before writting the
+ message to the queue folder, claws#2210.
+
+-------------------------------------------------------------------
+Thu Sep 5 17:13:51 CEST 2013 - mls(a)suse.de
+
+- Add libperl_requires, as we link against libperl and thus
+ need a specific version of perl.
+
+-------------------------------------------------------------------
+Thu Jun 20 15:24:47 UTC 2013 - malcolmlewis(a)opensuse.org
+
+- Update to version 3.9.2 (bnc#816881).
+ + New big icon for compose windows.
+ + Never decode multipart/ or message/ parts, as RFC states.
+ + Add missing check for libperl.
+ + Fix check for libsoup - it is not obligatory.
+ + Do not try to destroy a NULL session after an unsuccesful NNTP
+ connect attempt.
+ + The extraheaderrc format doesn't allow data after the header
+ colon. Other OSes may insert extra characters other than \n,
+ so, remove them all.
+ + Fix undoing file insertion.
+ + Fix check for python.
+ + Fix detection of account in --compose and --compose-from-file
+ where the From value contains a name + email.
+ + Bugs fixed: claws#2923, claws#2927.
+
+-------------------------------------------------------------------
+Wed May 15 09:26:24 UTC 2013 - dimstar(a)opensuse.org
+
+- Also obsolete claws-mail-extra-plugins-devel, as the plugins
+ package was merged upstream.
++++ 1687 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:13.1:Update/.claws-mail.4452.new/claws-mail.changes
New:
----
claws-mail-3.10.1.tar.bz2
claws-mail-dont-overshoot-output-buffer.patch
claws-mail.changes
claws-mail.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ claws-mail.spec ++++++
#
# spec file for package claws-mail
#
# Copyright (c) 2015 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
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define gtk3_ready 0
%if !%{gtk3_ready}
%define favor_gtk2 1
%endif
Name: claws-mail
Version: 3.10.1
Release: 0
Url: http://www.claws-mail.org/
Summary: A lightweight and highly configurable email client
License: GPL-3.0+
Group: Productivity/Networking/Email/Clients
Source0: http://sourceforge.net/projects/claws-mail/files/Claws%20Mail/%{version}/cl…
# PATCH-FIX-UPSTREAM claws-mail-dont-overshoot-output-buffer.patch boo#959993 CVE-2015-8614 claws#3557 badshah400(a)gmail.com -- Do not overshoot the output buffer
Patch0: claws-mail-dont-overshoot-output-buffer.patch
BuildRequires: NetworkManager-devel
BuildRequires: compface
BuildRequires: db-devel
BuildRequires: docbook-utils
BuildRequires: enchant-devel
BuildRequires: fdupes
BuildRequires: gettext
BuildRequires: gmp-devel
BuildRequires: gpgme-devel
%if 0%{?favor_gtk2}
BuildRequires: gtk2-devel
%else
BuildRequires: gtk3-devel
%endif
BuildRequires: libarchive-devel
BuildRequires: libcanberra-devel >= 0.6
BuildRequires: libcurl-devel
BuildRequires: libetpan-devel >= 0.57
BuildRequires: libgcrypt-devel
BuildRequires: libpoppler-glib-devel
BuildRequires: libwebkit-devel
BuildRequires: openldap2-devel
BuildRequires: pilot-link-devel
BuildRequires: pkgconfig
BuildRequires: python-gtk-devel
BuildRequires: startup-notification-devel
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(dbus-1) >= 0.60
BuildRequires: pkgconfig(dbus-glib-1) >= 0.60
BuildRequires: pkgconfig(gnutls) >= 2.2
BuildRequires: pkgconfig(libgdata) >= 0.6
BuildRequires: pkgconfig(libnotify)
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(sm)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: pinentry-gtk2
%{?libperl_requires}
Recommends: %{name}-lang
Provides: sylpheed-claws = %{version}
Obsoletes: sylpheed-claws < %{version}
# The extra-plugin package was merged with version 3.9.1
Obsoletes: claws-mail-extra-plugins < %{version}
Provides: claws-mail-extra-plugins = %{version}
# The extra-plugin package was merged with version 3.9.1, also merge the -lang package
Obsoletes: claws-mail-extra-plugins-lang < %{version}
Provides: claws-mail-extra-plugins-lang = %{version}
%description
Claws Mail (previously known as Sylpheed-Claws) is a lightweight and
highly configurable email client and news reader based on the GTK+ GUI
toolkit, it runs on the X Window System.
Claws Mail is free software distributed under the GNU GPL.
To run Claws Mail use 'claws-mail' on the command line.
When claws-mail is executed for the first time a configuration 'Wizard'
will appear prompting you for the minimum information necessary to
create a new account.
%package devel
Summary: A lightweight and highly configurable email client
License: GPL-2.0+
Group: Development/Libraries/Other
Provides: claws-mail:/usr/include/claws-mail/main.h
# The extra-plugin package was merged with version 3.9.1; as such, also the -devel package merged
Obsoletes: claws-mail-extra-plugins-devel < %{version}
Provides: claws-mail-extra-plugins-devel = %{version}
Requires: claws-mail = %{version}
Requires: enchant-devel
Requires: glib2-devel
Requires: gnutls-devel
Requires: gpgme-devel
Requires: gtk2-devel
Requires: libetpan-devel
Requires: openldap2-devel
%description devel
Claws Mail (previously known as Sylpheed-Claws) is a lightweight and
highly configurable email client and news reader based on the GTK+ GUI
toolkit, it runs on the X Window System.
Claws Mail is free software distributed under the GNU GPL.
To run Claws Mail use 'claws-mail' on the command line.
When claws-mail is executed for the first time a configuration 'Wizard'
will appear prompting you for the minimum information necessary to
create a new account.
%lang_package
%prep
%setup -q
%patch0 -p1
%build
%configure \
--docdir=%{_datadir}/claws-mail \
--disable-static \
%if !(0%{?favor_gtk2})
--enable-gtk3 \
%endif
--enable-ldap \
--enable-ipv6 \
--enable-jpilot \
--enable-acpi_notifier-plugin \
--enable-address_keeper-plugin \
--enable-archive-plugin \
--enable-att_remover-plugin \
--enable-attachwarner-plugin \
--enable-bogofilter-plugin \
--enable-bsfilter-plugin \
--enable-clamd-plugin \
--enable-fancy-plugin \
--enable-fetchinfo-plugin \
--enable-gdata-plugin \
--enable-mailmbox-plugin \
--enable-newmail-plugin \
--enable-notification-plugin \
--enable-pdf_viewer-plugin \
--enable-perl-plugin \
--enable-python-plugin \
--enable-pgpcore-plugin \
--enable-pgpmime-plugin \
--enable-pgpinline-plugin \
--enable-rssyl-plugin \
--enable-smime-plugin \
--enable-spamassassin-plugin \
--enable-spam_report-plugin \
--enable-tnef_parse-plugin \
--enable-vcalendar-plugin \
--disable-demo-plugin \
--enable-crash-dialog \
--enable-startup-notification \
--enable-compface \
--enable-libetpan
make %{?_smp_mflags}
%install
%makeinstall
# Clean up
rm %{buildroot}%{_libdir}/claws-mail/plugins/*.la
# install desktop file
%suse_update_desktop_file claws-mail
# we want to have the icon installed in /usr/share/pixmaps
mkdir -p %{buildroot}%{_datadir}/pixmaps/
cp claws-mail-64x64.png %{buildroot}%{_datadir}/pixmaps/
# Tools
cp -r tools %{buildroot}%{_datadir}/%{name}
rm %{buildroot}%{_datadir}/claws-mail/tools/Makefile*
# The ca-certificates are meant for windows. On Linux, it is not used and should not be distributed.
rm %{buildroot}%{_datadir}/claws-mail/tools/ca-certificates.crt
mv %{buildroot}%{_datadir}/claws-mail/tools/README ./README.tools
# fixing permissions
chmod 755 %{buildroot}%{_datadir}/claws-mail/tools/*
chmod 644 %{buildroot}%{_datadir}/claws-mail/tools/multiwebsearch.conf
%find_lang %{name} %{?no_lang_C}
%fdupes %{buildroot}%{_libdir}/%{name}/plugins/
install -d %{buildroot}%{_sysconfdir}/skel/.claws-mail/
cat <<EOF > %{buildroot}%{_sysconfdir}/skel/.claws-mail/clawsrc
[Plugins_GTK2]
%{_libdir}/claws-mail/plugins/pgpcore.so
%{_libdir}/claws-mail/plugins/pgpinline.so
%{_libdir}/claws-mail/plugins/pgpmime.so
%{_libdir}/claws-mail/plugins/smime.so
EOF
%if 0%{?suse_version} > 1130
%post
%desktop_database_post
%icon_theme_cache_post
%endif
%if 0%{?suse_version} > 1130
%postun
%desktop_database_postun
%icon_theme_cache_postun
%endif
%files
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README README.tools TODO
%{_bindir}/claws-mail
%{_bindir}/sylpheed-claws
%dir %{_libdir}/claws-mail
%dir %{_libdir}/claws-mail/plugins
%{_libdir}/claws-mail/plugins/*.so
%{_libdir}/claws-mail/plugins/*.deps
%{_datadir}/applications/claws-mail.desktop
%{_datadir}/icons/hicolor/*/apps/claws-mail.png
%{_datadir}/pixmaps/claws-mail-64x64.png
%dir %{_datadir}/claws-mail
%doc %{_datadir}/claws-mail/RELEASE_NOTES
%doc %{_datadir}/claws-mail/manual/
%dir %{_datadir}/claws-mail/tools
%{_datadir}/claws-mail/tools/*.sh
%{_datadir}/claws-mail/tools/*.pl
%{_datadir}/claws-mail/tools/*.py
%{_datadir}/claws-mail/tools/*.conf
%{_datadir}/claws-mail/tools/tb2claws-mail
%{_datadir}/claws-mail/tools/u*
%{_datadir}/claws-mail/tools/kdeservicemenu/
%{_mandir}/man1/claws-mail.1.gz
%config(noreplace) %{_sysconfdir}/skel/.claws-mail/
%dir %{_datadir}/appdata/
%{_datadir}/appdata/claws-mail.appdata.xml
%files devel
%defattr(-,root,root)
%{_includedir}/claws-mail/
%{_libdir}/pkgconfig/claws-mail.pc
%files lang -f %{name}.lang
%changelog
++++++ claws-mail-dont-overshoot-output-buffer.patch ++++++
http://www.thewildbeast.co.uk/claws-mail/bugzilla/show_bug.cgi?id=3557
>From d390fa07f5548f3173dd9cc13b233db5ce934c82 Mon Sep 17 00:00:00 2001
From: Colin Leroy <colin(a)colino.net>
Date: Wed, 4 Nov 2015 22:40:32 +0100
Subject: [PATCH] Make sure we don't run out of the output buffer. Maybe fixes
bug #3557
---
src/codeconv.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/codeconv.c b/src/codeconv.c
index 42ac01c..39e259f 100644
--- a/src/codeconv.c
+++ b/src/codeconv.c
@@ -155,10 +155,10 @@ void codeconv_set_strict(gboolean mode)
static gint conv_jistoeuc(gchar *outbuf, gint outlen, const gchar *inbuf)
{
const guchar *in = inbuf;
- guchar *out = outbuf;
+ gchar *out = outbuf;
JISState state = JIS_ASCII;
- while (*in != '\0') {
+ while (*in != '\0' && (out - outbuf) > outlen - 3) {
if (*in == ESC) {
in++;
if (*in == '$') {
@@ -291,10 +291,10 @@ static gint conv_jis_hantozen(guchar *outbuf, guchar jis_code, guchar sound_sym)
static gint conv_euctojis(gchar *outbuf, gint outlen, const gchar *inbuf)
{
const guchar *in = inbuf;
- guchar *out = outbuf;
+ gchar *out = outbuf;
JISState state = JIS_ASCII;
- while (*in != '\0') {
+ while (*in != '\0' && (out - outbuf) < outlen - 3) {
if (IS_ASCII(*in)) {
K_OUT();
*out++ = *in++;
@@ -380,9 +380,9 @@ static gint conv_euctojis(gchar *outbuf, gint outlen, const gchar *inbuf)
static gint conv_sjistoeuc(gchar *outbuf, gint outlen, const gchar *inbuf)
{
const guchar *in = inbuf;
- guchar *out = outbuf;
+ gchar *out = outbuf;
- while (*in != '\0') {
+ while (*in != '\0' && (out - outbuf) < outlen - 3) {
if (IS_ASCII(*in)) {
*out++ = *in++;
} else if (issjiskanji1(*in)) {
--
1.7.10.4
1
0
Hello community,
here is the log from the commit of package pdns for openSUSE:Factory checked in at 2016-01-01 19:48:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pdns (Old)
and /work/SRC/openSUSE:Factory/.pdns.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdns"
Changes:
--------
--- /work/SRC/openSUSE:Factory/pdns/pdns.changes 2015-09-03 18:12:20.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pdns.new/pdns.changes 2016-01-01 19:51:21.000000000 +0100
@@ -1,0 +2,28 @@
+Tue Nov 3 16:02:55 UTC 2015 - michael(a)stroeder.com
+
+- update to 3.4.7
+
+Bug fixes:
+* Ignore invalid/empty TKEY and TSIG records (Christian Hofstaedtler)
+* Don't reply to truncated queries (Christian Hofstaedtler)
+* don't log out-of-zone ents during AXFR in (Kees Monshouwer)
+* Prevent XSS by escaping user input. Thanks to Pierre Jaury and Damien
+ Cauquil at Sysdream for pointing this out.
+* Handle NULL and boolean properly in gPGSql (Aki Tuomi)
+* Improve negative caching (Kees Monshouwer)
+* Do not divide timeout twice (Aki Tuomi)
+* Correctly sort records with a priority.
+
+Improvements:
+* Direct query answers and correct zone-rectification in the GeoIP
+backend (Aki Tuomi)
+* Use token names to identify PKCS#11 keys (Aki Tuomi)
+* Fix typo in an error message (Arjen Zonneveld)
+* limit NSEC3 iterations in bindbackend (Kees Monshouwer)
+* Initialize minbody (Aki Tuomi)
+
+New features:
+* OPENPGPKEY record-type (James Cloos and Kees Monshouwer)
+* add global soa-edit settings (Kees Monshouwer)
+
+-------------------------------------------------------------------
Old:
----
pdns-3.4.6.tar.bz2
New:
----
pdns-3.4.7.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pdns.spec ++++++
--- /var/tmp/diff_new_pack.zOYUmW/_old 2016-01-01 19:51:23.000000000 +0100
+++ /var/tmp/diff_new_pack.zOYUmW/_new 2016-01-01 19:51:23.000000000 +0100
@@ -17,11 +17,11 @@
Name: pdns
-Version: 3.4.6
+Version: 3.4.7
Release: 0
#
%define pkg_name pdns
-%define pkg_version 3.4.6
+%define pkg_version 3.4.7
%define polarssl_version 1.3.2
#
%define home %{_var}/lib/pdns
++++++ pdns-3.4.6.tar.bz2 -> pdns-3.4.7.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/build-scripts/redhat/pdns-server-test.spec new/pdns-3.4.7/build-scripts/redhat/pdns-server-test.spec
--- old/pdns-3.4.6/build-scripts/redhat/pdns-server-test.spec 2015-08-27 15:17:34.000000000 +0200
+++ new/pdns-3.4.7/build-scripts/redhat/pdns-server-test.spec 2015-11-03 15:36:48.000000000 +0100
@@ -9,7 +9,7 @@
Epoch: 0
License: GPL
Group: System/Servers
-Source: http://downloads.powerdns.com/releases/pdns-3.4.6.tar.bz2
+Source: http://downloads.powerdns.com/releases/pdns-3.4.7.tar.bz2
BuildRequires: autoconf automake
BuildRequires: gcc gcc-c++
@@ -30,7 +30,7 @@
PowerDNS testbuild
%prep
-%setup -q -n pdns-3.4.6
+%setup -q -n pdns-3.4.7
%build
%configure \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/configure new/pdns-3.4.7/configure
--- old/pdns-3.4.6/configure 2015-08-27 15:17:47.000000000 +0200
+++ new/pdns-3.4.7/configure 2015-11-03 15:37:00.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pdns 3.4.6.
+# Generated by GNU Autoconf 2.69 for pdns 3.4.7.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
# Identity of this package.
PACKAGE_NAME='pdns'
PACKAGE_TARNAME='pdns'
-PACKAGE_VERSION='3.4.6'
-PACKAGE_STRING='pdns 3.4.6'
+PACKAGE_VERSION='3.4.7'
+PACKAGE_STRING='pdns 3.4.7'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1470,7 +1470,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures pdns 3.4.6 to adapt to many kinds of systems.
+\`configure' configures pdns 3.4.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1540,7 +1540,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pdns 3.4.6:";;
+ short | recursive ) echo "Configuration of pdns 3.4.7:";;
esac
cat <<\_ACEOF
@@ -1740,7 +1740,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pdns configure 3.4.6
+pdns configure 3.4.7
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2347,7 +2347,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pdns $as_me 3.4.6, which was
+It was created by pdns $as_me 3.4.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3170,7 +3170,7 @@
# Define the identity of the package.
PACKAGE='pdns'
- VERSION='3.4.6'
+ VERSION='3.4.7'
cat >>confdefs.h <<_ACEOF
@@ -21192,7 +21192,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pdns $as_me 3.4.6, which was
+This file was extended by pdns $as_me 3.4.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -21258,7 +21258,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-pdns config.status 3.4.6
+pdns config.status 3.4.7
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/configure.ac new/pdns-3.4.7/configure.ac
--- old/pdns-3.4.6/configure.ac 2015-08-27 15:17:34.000000000 +0200
+++ new/pdns-3.4.7/configure.ac 2015-11-03 15:36:48.000000000 +0100
@@ -1,7 +1,7 @@
AC_PREREQ([2.61])
dnl The following lines may be patched by set-version-auth.
-AC_INIT([pdns], [3.4.6])
+AC_INIT([pdns], [3.4.7])
AC_SUBST([DIST_HOST], [jenkins(a)autotest.powerdns.com]
dnl End patch area.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/debian-pdns/changelog new/pdns-3.4.7/debian-pdns/changelog
--- old/pdns-3.4.6/debian-pdns/changelog 2015-08-27 15:17:34.000000000 +0200
+++ new/pdns-3.4.7/debian-pdns/changelog 2015-11-03 15:36:48.000000000 +0100
@@ -1,4 +1,4 @@
-pdns (3.4.6-1) unstable; urgency=medium
+pdns (3.4.7-1) unstable; urgency=medium
* fill in the blanks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/modules/bindbackend/bindbackend2.hh new/pdns-3.4.7/modules/bindbackend/bindbackend2.hh
--- old/pdns-3.4.6/modules/bindbackend/bindbackend2.hh 2015-08-24 11:11:59.000000000 +0200
+++ new/pdns-3.4.7/modules/bindbackend/bindbackend2.hh 2015-11-02 13:32:28.000000000 +0100
@@ -39,6 +39,7 @@
#include "pdns/lock.hh"
#include "pdns/misc.hh"
#include "pdns/dnsbackend.hh"
+#include "pdns/logger.hh"
#include "pdns/namespaces.hh"
using namespace ::boost::multi_index;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/modules/bindbackend/binddnssec.cc new/pdns-3.4.7/modules/bindbackend/binddnssec.cc
--- old/pdns-3.4.6/modules/bindbackend/binddnssec.cc 2015-06-09 14:28:57.000000000 +0200
+++ new/pdns-3.4.7/modules/bindbackend/binddnssec.cc 2015-11-02 13:32:28.000000000 +0100
@@ -108,16 +108,19 @@
getDomainMetadata(zname, "NSEC3PARAM", meta);
if(!meta.empty())
value=*meta.begin();
-
- if(value.empty()) { // "no NSEC3"
- return false;
- }
-
+ else
+ return false; // "no NSEC3"
+
+ static int maxNSEC3Iterations=::arg().asNum("max-nsec3-iterations");
if(ns3p) {
NSEC3PARAMRecordContent* tmp=dynamic_cast<NSEC3PARAMRecordContent*>(DNSRecordContent::mastermake(QType::NSEC3PARAM, 1, value));
*ns3p = *tmp;
delete tmp;
}
+ if (ns3p->d_iterations > maxNSEC3Iterations) {
+ ns3p->d_iterations = maxNSEC3Iterations;
+ L<<Logger::Error<<"Number of NSEC3 iterations for zone '"<<zname<<"' is above 'max-nsec3-iterations'. Value adjusted to: "<<maxNSEC3Iterations<<endl;
+ }
return true;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/modules/geoipbackend/geoipbackend.cc new/pdns-3.4.7/modules/geoipbackend/geoipbackend.cc
--- old/pdns-3.4.6/modules/geoipbackend/geoipbackend.cc 2015-06-09 14:28:57.000000000 +0200
+++ new/pdns-3.4.7/modules/geoipbackend/geoipbackend.cc 2015-09-29 16:50:32.000000000 +0200
@@ -4,14 +4,16 @@
#include <glob.h>
pthread_rwlock_t GeoIPBackend::s_state_lock=PTHREAD_RWLOCK_INITIALIZER;
+typedef map<string, string> service_map_t;
+typedef map<string, vector<DNSResourceRecord> > record_map_t;
class GeoIPDomain {
public:
int id;
string domain;
int ttl;
- map<string, string> services;
- map<string, vector<DNSResourceRecord> > records;
+ service_map_t services;
+ record_map_t records;
};
static vector<GeoIPDomain> s_domains;
@@ -128,6 +130,48 @@
dom.services[service->first.as<string>()] = service->second.as<string>();
}
+ // rectify the zone, first static records
+ BOOST_FOREACH(record_map_t::value_type& item, dom.records) {
+ // ensure we have parent in records
+ string name = item.first;
+ while(chopOff(name) && endsOn(name, dom.domain)) {
+ if (dom.records.find(name) == dom.records.end()) {
+ DNSResourceRecord rr;
+ vector<DNSResourceRecord> rrs;
+ rr.domain_id = dom.id;
+ rr.ttl = dom.ttl;
+ rr.qname = name;
+ rr.qtype = "NULL";
+ rr.content = "";
+ rr.auth = 1;
+ rr.d_place = DNSResourceRecord::ANSWER;
+ rrs.push_back(rr);
+ std::swap(dom.records[name], rrs);
+ }
+ }
+ }
+
+ // then services
+ BOOST_FOREACH(service_map_t::value_type& item, dom.services) {
+ // ensure we have parent in records
+ string name = item.first;
+ while(chopOff(name) && endsOn(name, dom.domain)) {
+ if (dom.records.find(name) == dom.records.end()) {
+ DNSResourceRecord rr;
+ vector<DNSResourceRecord> rrs;
+ rr.domain_id = dom.id;
+ rr.ttl = dom.ttl;
+ rr.qname = name;
+ rr.qtype = "NULL";
+ rr.content = "";
+ rr.auth = 1;
+ rr.d_place = DNSResourceRecord::ANSWER;
+ rrs.push_back(rr);
+ std::swap(dom.records[name], rrs);
+ }
+ }
+ }
+
tmp_domains.push_back(dom);
}
@@ -188,8 +232,6 @@
return;
}
- if (!(qtype == QType::ANY || qtype == QType::CNAME)) return;
-
string ip = "0.0.0.0";
bool v6 = false;
if (pkt_p != NULL) {
@@ -203,6 +245,21 @@
format = format2str(format, ip, v6);
+ // see if the record can be found
+ if (dom.records.count(format)) { // return static value
+ record_map_t::iterator i = dom.records.find(format);
+ BOOST_FOREACH(DNSResourceRecord rr, i->second) {
+ if (qtype == QType::ANY || rr.qtype == qtype) {
+ rr.scopeMask = (v6 ? 128 : 32);
+ d_result.push_back(rr);
+ d_result.back().qname = qdomain;
+ }
+ }
+ return;
+ }
+
+ if (!(qtype == QType::ANY || qtype == QType::CNAME)) return;
+
DNSResourceRecord rr;
rr.domain_id = dom.id;
rr.qtype = QType::CNAME;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/modules/gpgsqlbackend/spgsql.cc new/pdns-3.4.7/modules/gpgsqlbackend/spgsql.cc
--- old/pdns-3.4.6/modules/gpgsqlbackend/spgsql.cc 2015-06-09 14:28:57.000000000 +0200
+++ new/pdns-3.4.7/modules/gpgsqlbackend/spgsql.cc 2015-09-15 12:04:49.000000000 +0200
@@ -166,8 +166,16 @@
return false;
}
- for(int i=0;i<PQnfields(d_result);i++)
- row.push_back(PQgetvalue(d_result,d_count,i) ?: "");
+ for(int i=0;i<PQnfields(d_result);i++) {
+ if (PQgetisnull(d_result, d_count, i)) {
+ row.push_back("");
+ } else if (PQftype(d_result, i) == 16) { // BOOLEAN
+ char *val = PQgetvalue(d_result, d_count, i);
+ row.push_back(val[0] == 't' ? "1" : "0");
+ } else {
+ row.push_back(string(PQgetvalue(d_result, d_count, i)));
+ }
+ }
d_count++;
return true;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/modules/remotebackend/httpconnector.cc new/pdns-3.4.7/modules/remotebackend/httpconnector.cc
--- old/pdns-3.4.6/modules/remotebackend/httpconnector.cc 2015-08-24 11:11:59.000000000 +0200
+++ new/pdns-3.4.7/modules/remotebackend/httpconnector.cc 2015-11-03 13:58:26.000000000 +0100
@@ -388,7 +388,7 @@
try {
t0 = time((time_t*)NULL);
- while(arl.ready() == false && (labs(time((time_t*)NULL) - t0) <= timeout/1000)) {
+ while(arl.ready() == false && (labs(time((time_t*)NULL) - t0) <= timeout)) {
rd = d_socket->readWithTimeout(buffer, sizeof(buffer), timeout);
if (rd==0)
throw NetworkError("EOF while reading");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/common_startup.cc new/pdns-3.4.7/pdns/common_startup.cc
--- old/pdns-3.4.6/pdns/common_startup.cc 2015-06-09 14:29:04.000000000 +0200
+++ new/pdns-3.4.7/pdns/common_startup.cc 2015-11-02 14:05:07.000000000 +0100
@@ -138,6 +138,8 @@
::arg().set("soa-refresh-default","Default SOA refresh")="10800";
::arg().set("soa-retry-default","Default SOA retry")="3600";
::arg().set("soa-expire-default","Default SOA expire")="604800";
+ ::arg().set("default-soa-edit","Default SOA-EDIT value")="";
+ ::arg().set("default-soa-edit-signed","Default SOA-EDIT value for signed zones")="";
::arg().set("trusted-notification-proxy", "IP address of incoming notification proxy")="";
::arg().set("slave-renotify", "If we should send out notifications for slaved updates")="no";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dbdnsseckeeper.cc new/pdns-3.4.7/pdns/dbdnsseckeeper.cc
--- old/pdns-3.4.6/pdns/dbdnsseckeeper.cc 2015-06-09 14:29:04.000000000 +0200
+++ new/pdns-3.4.7/pdns/dbdnsseckeeper.cc 2015-11-02 14:05:07.000000000 +0100
@@ -212,6 +212,23 @@
}
}
+void DNSSECKeeper::getSoaEdit(const std::string& zname, std::string& value)
+{
+ static const string soaEdit(::arg()["default-soa-edit"]);
+ static const string soaEditSigned(::arg()["default-soa-edit-signed"]);
+
+ getFromMeta(zname, "SOA-EDIT", value);
+
+ if ((!soaEdit.empty() || !soaEditSigned.empty()) && value.empty() && !isPresigned(zname)) {
+ if (!soaEditSigned.empty() && isSecuredZone(zname))
+ value=soaEditSigned;
+ if (value.empty())
+ value=soaEdit;
+ }
+
+ return;
+}
+
uint64_t DNSSECKeeper::dbdnssecCacheSizes(const std::string& str)
{
if(str=="meta-cache-size") {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnsbackend.cc new/pdns-3.4.7/pdns/dnsbackend.cc
--- old/pdns-3.4.6/pdns/dnsbackend.cc 2015-06-09 14:29:04.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnsbackend.cc 2015-10-13 10:37:24.000000000 +0200
@@ -44,18 +44,23 @@
return true;
}
-bool DNSBackend::getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId, const int best_match_len)
+bool DNSBackend::getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId, const int best_match_len, map<string,int>& negCacheMap)
{
bool found=false;
string subdomain(target);
do {
- if( best_match_len >= (int)subdomain.length() )
+ if( best_match_len >= (int)subdomain.length() && p->qtype != QType::DS )
break;
- if( this->getSOA( subdomain, *sd, p ) ) {
+ map<string,int>::iterator it = negCacheMap.find(subdomain);
+ bool negCached = ( it != negCacheMap.end() && it->second == 1 );
+
+ if(! negCached && this->getSOA( subdomain, *sd, p ) ) {
sd->qname = subdomain;
if(zoneId)
*zoneId = sd->domain_id;
+ if(found) // Second SOA found, we are done
+ return true;
if(p->qtype.getCode() == QType::DS && pdns_iequals(subdomain, target)) {
// Found authoritative zone but look for parent zone with 'DS' record.
@@ -63,6 +68,8 @@
} else
return true;
}
+ if (found)
+ negCacheMap[subdomain]=2; // don't cache SOA's during our quest for a parent zone
}
while( chopOff( subdomain ) ); // 'www.powerdns.org' -> 'powerdns.org' -> 'org' -> ''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnsbackend.hh new/pdns-3.4.7/pdns/dnsbackend.hh
--- old/pdns-3.4.6/pdns/dnsbackend.hh 2015-08-24 11:11:59.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnsbackend.hh 2015-10-13 10:37:24.000000000 +0200
@@ -163,7 +163,7 @@
virtual void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) { }
/** Determines if we are authoritative for a zone, and at what level */
- virtual bool getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId, const int best_match_len);
+ virtual bool getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId, const int best_match_len, map<string,int>& negCacheMap);
struct KeyData {
unsigned int id;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnspacket.cc new/pdns-3.4.7/pdns/dnspacket.cc
--- old/pdns-3.4.6/pdns/dnspacket.cc 2015-08-25 19:58:41.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnspacket.cc 2015-11-02 11:33:21.000000000 +0100
@@ -464,10 +464,15 @@
bool gotit=false;
for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) {
if(i->first.d_type == QType::TSIG) {
- *trc = *boost::dynamic_pointer_cast<TSIGRecordContent>(i->first.d_content);
-
- gotit=true;
+ // cast can fail, f.e. if d_content is an UnknownRecordContent.
+ shared_ptr<TSIGRecordContent> content = boost::dynamic_pointer_cast<TSIGRecordContent>(i->first.d_content);
+ if (!content) {
+ L<<Logger::Error<<"TSIG record has no or invalid content (invalid packet)"<<endl;
+ return false;
+ }
+ *trc = *content;
*keyname = i->first.d_label;
+ gotit=true;
if(!keyname->empty())
keyname->resize(keyname->size()-1); // drop the trailing dot
}
@@ -492,7 +497,13 @@
}
if(i->first.d_type == QType::TKEY) {
- *tr = *boost::dynamic_pointer_cast<TKEYRecordContent>(i->first.d_content);
+ // cast can fail, f.e. if d_content is an UnknownRecordContent.
+ shared_ptr<TKEYRecordContent> content = boost::dynamic_pointer_cast<TKEYRecordContent>(i->first.d_content);
+ if (!content) {
+ L<<Logger::Error<<"TKEY record has no or invalid content (invalid packet)"<<endl;
+ return false;
+ }
+ *tr = *content;
*keyname = i->first.d_label;
gotit=true;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnsrecords.cc new/pdns-3.4.7/pdns/dnsrecords.cc
--- old/pdns-3.4.6/pdns/dnsrecords.cc 2015-06-09 14:29:04.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnsrecords.cc 2015-11-02 13:32:28.000000000 +0100
@@ -284,6 +284,10 @@
conv.xfrHexBlob(d_cert, true);
)
+boilerplate_conv(OPENPGPKEY, 61,
+ conv.xfrBlob(d_keyring);
+ )
+
#undef DS
DSRecordContent::DSRecordContent() : DNSRecordContent(43) {}
boilerplate_conv(DS, 43,
@@ -525,6 +529,7 @@
NSEC3RecordContent::report();
NSEC3PARAMRecordContent::report();
TLSARecordContent::report();
+ OPENPGPKEYRecordContent::report();
DLVRecordContent::report();
DNSRecordContent::regist(QClass::ANY, QType::TSIG, &TSIGRecordContent::make, &TSIGRecordContent::make, "TSIG");
DNSRecordContent::regist(QClass::ANY, QType::TKEY, &TKEYRecordContent::make, &TKEYRecordContent::make, "TKEY");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnsrecords.hh new/pdns-3.4.7/pdns/dnsrecords.hh
--- old/pdns-3.4.6/pdns/dnsrecords.hh 2015-06-09 14:29:05.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnsrecords.hh 2015-11-02 13:32:28.000000000 +0100
@@ -348,6 +348,15 @@
string d_cert;
};
+class OPENPGPKEYRecordContent : public DNSRecordContent
+{
+public:
+ includeboilerplate(OPENPGPKEY)
+
+private:
+ string d_keyring;
+};
+
class RRSIGRecordContent : public DNSRecordContent
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnssecinfra.cc new/pdns-3.4.7/pdns/dnssecinfra.cc
--- old/pdns-3.4.6/pdns/dnssecinfra.cc 2015-06-09 14:29:05.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnssecinfra.cc 2015-11-02 13:32:28.000000000 +0100
@@ -60,8 +60,7 @@
pkcs11=true;
continue;
} else if (pdns_iequals(key,"slot")) {
- int slot = atoi(value.c_str());
- stormap["slot"]=lexical_cast<string>(slot);
+ stormap["slot"]=value;
continue;
} else if (pdns_iequals(key,"label")) {
stormap["label"]=value;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/dnsseckeeper.hh new/pdns-3.4.7/pdns/dnsseckeeper.hh
--- old/pdns-3.4.6/pdns/dnsseckeeper.hh 2015-06-09 14:29:05.000000000 +0200
+++ new/pdns-3.4.7/pdns/dnsseckeeper.hh 2015-11-02 14:05:07.000000000 +0100
@@ -106,6 +106,7 @@
}
void getFromMeta(const std::string& zname, const std::string& key, std::string& value);
+ void getSoaEdit(const std::string& zname, std::string& value);
private:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/docs/dnstcpbench.1 new/pdns-3.4.7/pdns/docs/dnstcpbench.1
--- old/pdns-3.4.6/pdns/docs/dnstcpbench.1 2015-08-27 15:18:35.000000000 +0200
+++ new/pdns-3.4.7/pdns/docs/dnstcpbench.1 2015-11-03 15:37:39.000000000 +0100
@@ -2,12 +2,12 @@
.\" Title: dnstcpbench
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 08/27/2015
+.\" Date: 11/03/2015
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
-.TH "DNSTCPBENCH" "1" "08/27/2015" "\ \&" "\ \&"
+.TH "DNSTCPBENCH" "1" "11/03/2015" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/ext/yahttp/yahttp/reqresp.hpp new/pdns-3.4.7/pdns/ext/yahttp/yahttp/reqresp.hpp
--- old/pdns-3.4.6/pdns/ext/yahttp/yahttp/reqresp.hpp 2015-06-19 11:40:21.000000000 +0200
+++ new/pdns-3.4.7/pdns/ext/yahttp/yahttp/reqresp.hpp 2015-11-03 14:32:09.000000000 +0100
@@ -303,7 +303,7 @@
void initialize(T* target) {
chunked = false; chunk_size = 0;
- bodybuf.str(""); maxbody = 0;
+ bodybuf.str(""); minbody = 0; maxbody = 0;
pos = 0; state = 0; this->target = target;
hasBody = false;
buffer = "";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/packethandler.cc new/pdns-3.4.7/pdns/packethandler.cc
--- old/pdns-3.4.6/pdns/packethandler.cc 2015-08-26 11:29:42.000000000 +0200
+++ new/pdns-3.4.7/pdns/packethandler.cc 2015-11-02 11:33:21.000000000 +0100
@@ -996,6 +996,14 @@
return 0;
}
+ if(p->d.tc) { // truncated query. MOADNSParser would silently parse this packet in an incomplete way.
+ if(d_logDNSDetails)
+ L<<Logger::Error<<"Received truncated query packet from "<<p->getRemote()<<", dropping"<<endl;
+ S.inc("corrupt-packets");
+ S.ringAccount("remotes-corrupt", p->getRemote());
+ return 0;
+ }
+
if (p->hasEDNS() && p->getEDNSVersion() > 0) {
r = p->replyPacket();
r->setRcode(16 & 0xF);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/pdns.conf-dist new/pdns-3.4.7/pdns/pdns.conf-dist
--- old/pdns-3.4.6/pdns/pdns.conf-dist 2015-06-09 14:29:11.000000000 +0200
+++ new/pdns-3.4.7/pdns/pdns.conf-dist 2015-11-02 14:05:07.000000000 +0100
@@ -85,6 +85,16 @@
# default-ksk-size=0
#################################
+# default-soa-edit Default SOA-EDIT value
+#
+# default-soa-edit=
+
+#################################
+# default-soa-edit-signed Default SOA-EDIT value for signed zones
+#
+# default-soa-edit-signed=
+
+#################################
# default-soa-mail mail address to insert in the SOA record if none set in the backend
#
# default-soa-mail=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/pdnssec.cc new/pdns-3.4.7/pdns/pdnssec.cc
--- old/pdns-3.4.6/pdns/pdnssec.cc 2015-08-24 14:32:10.000000000 +0200
+++ new/pdns-3.4.7/pdns/pdnssec.cc 2015-11-02 14:05:07.000000000 +0100
@@ -133,6 +133,8 @@
::arg().set("default-ksk-size","Default KSK size (0 means default)")="0";
::arg().set("default-zsk-algorithms","Default ZSK algorithms")="rsasha256";
::arg().set("default-zsk-size","Default KSK size (0 means default)")="0";
+ ::arg().set("default-soa-edit","Default SOA-EDIT value")="";
+ ::arg().set("default-soa-edit-signed","Default SOA-EDIT value for signed zones")="";
::arg().set("max-ent-entries", "Maximum number of empty non-terminals in a zone")="100000";
::arg().set("module-dir","Default directory for modules")=PKGLIBDIR;
::arg().set("entropy-source", "If set, read entropy from this file")="/dev/urandom";
@@ -665,9 +667,14 @@
cout<<"No SOA for zone '"<<zone<<"'"<<endl;
return -1;
}
+
+ if (dk.isPresigned(zone)) {
+ cerr<<"Serial increase of presigned zone '"<<zone<<"' is not allowed."<<endl;
+ return -1;
+ }
string soaEditKind;
- dk.getFromMeta(zone, "SOA-EDIT", soaEditKind);
+ dk.getSoaEdit(zone, soaEditKind);
sd.db->lookup(QType(QType::SOA), zone);
vector<DNSResourceRecord> rrs;
@@ -2034,7 +2041,7 @@
std::vector<DNSBackend::KeyData> keys;
if (cmds.size() < 9) {
- std::cout << "Usage: pdnssec hsm assign zone algorithm ksk|zsk module slot pin label" << std::endl;
+ std::cout << "Usage: pdnssec hsm assign zone algorithm ksk|zsk module token pin label" << std::endl;
return 1;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/pkcs11signers.cc new/pdns-3.4.7/pdns/pkcs11signers.cc
--- old/pdns-3.4.6/pdns/pkcs11signers.cc 2015-06-09 14:29:11.000000000 +0200
+++ new/pdns-3.4.7/pdns/pkcs11signers.cc 2015-11-02 13:32:28.000000000 +0100
@@ -213,6 +213,7 @@
L<<Logger::Error<< msg << endl;
}
}
+
public:
Pkcs11Slot(CK_FUNCTION_LIST* functions, const CK_SLOT_ID& slot) {
CK_TOKEN_INFO tokenInfo;
@@ -260,6 +261,9 @@
CK_FUNCTION_LIST* f() { return d_functions; }
pthread_mutex_t *m() { return &d_m; }
+
+ static boost::shared_ptr<Pkcs11Slot> GetSlot(const std::string& module, const string& tokenId);
+ static CK_RV HuntSlot(const string& tokenId, CK_SLOT_ID &slotId, _CK_SLOT_INFO* info, CK_FUNCTION_LIST* functions);
};
class Pkcs11Token {
@@ -607,31 +611,72 @@
return d_bits;
}
- static boost::shared_ptr<Pkcs11Token> GetToken(const std::string& module, const CK_SLOT_ID& slotId, const std::string& label);
+ static boost::shared_ptr<Pkcs11Token> GetToken(const std::string& module, const string& tokenId, const std::string& label);
};
static std::map<std::string, boost::shared_ptr<Pkcs11Slot> > pkcs11_slots;
static std::map<std::string, boost::shared_ptr<Pkcs11Token> > pkcs11_tokens;
-boost::shared_ptr<Pkcs11Token> Pkcs11Token::GetToken(const std::string& module, const CK_SLOT_ID& slotId, const std::string& label) {
+CK_RV Pkcs11Slot::HuntSlot(const string& tokenId, CK_SLOT_ID &slotId, _CK_SLOT_INFO* info, CK_FUNCTION_LIST* functions)
+{
+ CK_RV err;
+ unsigned long slots;
+ _CK_TOKEN_INFO tinfo;
+
+ // go thru all slots
+ // this is required by certain tokens, otherwise C_GetSlotInfo will not return a token
+ err = functions->C_GetSlotList(CK_FALSE, NULL_PTR, &slots);
+ if (err) {
+ L<<Logger::Warning<<"C_GetSlotList(CK_FALSE, NULL_PTR, &slots) = " << err << std::endl;
+ return err;
+ }
+
+ // iterate all slots
+ for(slotId=0;slotId<slots;slotId++) {
+ if ((err = functions->C_GetSlotInfo(slotId, info))) {
+ L<<Logger::Warning<<"C_GetSlotList("<<slotId<<", info) = " << err << std::endl;
+ return err;
+ }
+ if ((err = functions->C_GetTokenInfo(slotId, &tinfo))) {
+ L<<Logger::Warning<<"C_GetSlotList("<<slotId<<", &tinfo) = " << err << std::endl;
+ return err;
+ }
+ std::string slotName;
+ slotName.assign(reinterpret_cast<char*>(tinfo.label), 32);
+ // trim it
+ boost::trim(slotName);
+ if (boost::iequals(slotName, tokenId)) {
+ return 0;
+ }
+ }
+
+ // see if we can find it with slotId
+ try {
+ slotId = boost::lexical_cast<int>(tokenId);
+ if ((err = functions->C_GetSlotInfo(slotId, info))) {
+ L<<Logger::Warning<<"C_GetSlotList("<<slotId<<", info) = " << err << std::endl;
+ return err;
+ }
+ L<<Logger::Warning<<"Specifying PKCS#11 token by SLOT ID is deprecated and should not be used"<<std::endl;
+ return 0;
+ } catch (...) {
+ return CK_UNAVAILABLE_INFORMATION;
+ }
+ return CK_UNAVAILABLE_INFORMATION;
+}
+
+boost::shared_ptr<Pkcs11Slot> Pkcs11Slot::GetSlot(const std::string& module, const string& tokenId) {
// see if we can find module
- std::string tidx = module;
- tidx.append("|");
- tidx.append(boost::lexical_cast<std::string>(slotId));
- std::string sidx = tidx;
- tidx.append("|");
- tidx.append(label);
- std::map<std::string, boost::shared_ptr<Pkcs11Token> >::iterator tokenIter;
+ std::string sidx = module;
+ sidx.append("|");
+ sidx.append(tokenId);
std::map<std::string, boost::shared_ptr<Pkcs11Slot> >::iterator slotIter;
CK_RV err;
CK_FUNCTION_LIST* functions;
- if ((tokenIter = pkcs11_tokens.find(tidx)) != pkcs11_tokens.end()) return tokenIter->second;
-
// see if we have slot
if ((slotIter = pkcs11_slots.find(sidx)) != pkcs11_slots.end()) {
- pkcs11_tokens[tidx] = boost::make_shared<Pkcs11Token>(slotIter->second, label);
- return pkcs11_tokens[tidx];
+ return slotIter->second;
}
#ifdef HAVE_P11KIT1_V2
@@ -644,23 +689,30 @@
// try to locate a slot
_CK_SLOT_INFO info;
- unsigned long slots;
-
- // this is required by certain tokens, otherwise C_GetSlotInfo will not return a token
- err = functions->C_GetSlotList(CK_FALSE, NULL_PTR, &slots);
- if (err)
- L<<Logger::Warning<<"C_GetSlotList(CK_FALSE, NULL_PTR, &slots) = " << err << std::endl;
+ CK_SLOT_ID slotId;
- if ((err = functions->C_GetSlotInfo(slotId, &info))) {
- throw PDNSException(std::string("Cannot find PKCS#11 slot ") + boost::lexical_cast<std::string>(slotId) + std::string(" on module ") + module + std::string(": error code ") + boost::lexical_cast<std::string>(err));
+ if ((err = Pkcs11Slot::HuntSlot(tokenId, slotId, &info, functions))) {
+ throw PDNSException(std::string("Cannot find PKCS#11 token ") + tokenId + std::string(" on module ") + module + std::string(": error code ") + boost::lexical_cast<std::string>(err));
}
// store slot
pkcs11_slots[sidx] = boost::make_shared<Pkcs11Slot>(functions, slotId);
- // looks ok to me.
- pkcs11_tokens[tidx] = boost::make_shared<Pkcs11Token>(pkcs11_slots[sidx], label);
+ return pkcs11_slots[sidx];
+}
+boost::shared_ptr<Pkcs11Token> Pkcs11Token::GetToken(const std::string& module, const string& tokenId, const std::string& label) {
+ // see if we can find module
+ std::string tidx = module;
+ tidx.append("|");
+ tidx.append(boost::lexical_cast<std::string>(tokenId));
+ tidx.append("|");
+ tidx.append(label);
+ std::map<std::string, boost::shared_ptr<Pkcs11Token> >::iterator tokenIter;
+ if ((tokenIter = pkcs11_tokens.find(tidx)) != pkcs11_tokens.end()) return tokenIter->second;
+
+ boost::shared_ptr<Pkcs11Slot> slot = Pkcs11Slot::GetSlot(module, tokenId);
+ pkcs11_tokens[tidx] = boost::make_shared<Pkcs11Token>(slot, label);
return pkcs11_tokens[tidx];
}
@@ -677,6 +729,14 @@
Pkcs11Token::~Pkcs11Token() {
}
+bool PKCS11ModuleSlotLogin(const std::string& module, const string& tokenId, const std::string& pin)
+{
+ boost::shared_ptr<Pkcs11Slot> slot;
+ slot = Pkcs11Slot::GetSlot(module, tokenId);
+ if (slot->LoggedIn()) return true; // no point failing
+ return slot->Login(pin);
+}
+
PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine(unsigned int algorithm): DNSCryptoKeyEngine(algorithm) {}
PKCS11DNSCryptoKeyEngine::~PKCS11DNSCryptoKeyEngine() {}
PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine(const PKCS11DNSCryptoKeyEngine& orig) : DNSCryptoKeyEngine(orig.d_algorithm) {}
@@ -866,7 +926,7 @@
boost::assign::push_back(storvect)
(make_pair("Algorithm", boost::lexical_cast<std::string>(d_algorithm)))
(make_pair("Engine", d_module))
- (make_pair("Slot", boost::lexical_cast<std::string>(d_slot_id)))
+ (make_pair("Slot", d_slot_id))
(make_pair("PIN", d_pin))
(make_pair("Label", d_label));
return storvect;
@@ -875,7 +935,8 @@
void PKCS11DNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent& drc, stormap_t& stormap) {
drc.d_algorithm = atoi(stormap["algorithm"].c_str());
d_module = stormap["engine"];
- d_slot_id = atoi(stormap["slot"].c_str());
+ d_slot_id = stormap["slot"];
+ boost::trim(d_slot_id);
d_pin = stormap["pin"];
d_label = stormap["label"];
// validate parameters
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/pkcs11signers.hh new/pdns-3.4.7/pdns/pkcs11signers.hh
--- old/pdns-3.4.6/pdns/pkcs11signers.hh 2015-06-09 14:29:11.000000000 +0200
+++ new/pdns-3.4.7/pdns/pkcs11signers.hh 2015-11-02 13:32:28.000000000 +0100
@@ -2,7 +2,7 @@
{
protected:
std::string d_module;
- unsigned long d_slot_id;
+ std::string d_slot_id;
std::string d_pin;
std::string d_label;
@@ -41,3 +41,4 @@
static DNSCryptoKeyEngine* maker(unsigned int algorithm);
};
+bool PKCS11ModuleSlotLogin(const std::string& module, const string& tokenId, const std::string& pin);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/qtype.hh new/pdns-3.4.7/pdns/qtype.hh
--- old/pdns-3.4.6/pdns/qtype.hh 2015-06-09 14:29:12.000000000 +0200
+++ new/pdns-3.4.7/pdns/qtype.hh 2015-11-02 13:32:28.000000000 +0100
@@ -82,7 +82,7 @@
#undef DS
enum typeenum {A=1, NS=2, CNAME=5, SOA=6, MR=9, PTR=12, HINFO=13, MX=15, TXT=16, RP=17, AFSDB=18, SIG=24, KEY=25, AAAA=28, LOC=29, SRV=33, NAPTR=35, KX=36,
CERT=37, A6=38, DNAME=39, OPT=41, DS=43, SSHFP=44, IPSECKEY=45, RRSIG=46, NSEC=47, DNSKEY=48, DHCID=49, NSEC3=50, NSEC3PARAM=51,
- TLSA=52, SPF=99, EUI48=108, EUI64=109, TKEY=249, TSIG=250, IXFR=251, AXFR=252, MAILB=253, MAILA=254, ANY=255, URL=256, MBOXFW=257, CURL=258, ADDR=259, DLV=32769} types;
+ TLSA=52, OPENPGPKEY=61, SPF=99, EUI48=108, EUI64=109, TKEY=249, TSIG=250, IXFR=251, AXFR=252, MAILB=253, MAILA=254, ANY=255, URL=256, MBOXFW=257, CURL=258, ADDR=259, DLV=32769} types;
typedef pair<string,uint16_t> namenum;
static vector<namenum> names;
@@ -153,6 +153,7 @@
qtype_insert("NSEC3", 50);
qtype_insert("NSEC3PARAM", 51);
qtype_insert("TLSA", 52);
+ qtype_insert("OPENPGPKEY", 61);
qtype_insert("SPF", 99);
qtype_insert("EUI48", 108);
qtype_insert("EUI64", 109);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/rfc2136handler.cc new/pdns-3.4.7/pdns/rfc2136handler.cc
--- old/pdns-3.4.6/pdns/rfc2136handler.cc 2015-06-09 14:29:12.000000000 +0200
+++ new/pdns-3.4.7/pdns/rfc2136handler.cc 2015-11-02 14:05:07.000000000 +0100
@@ -955,13 +955,13 @@
if (!soaEdit2136Setting.empty()) {
soaEdit2136 = soaEdit2136Setting[0];
if (pdns_iequals(soaEdit2136, "SOA-EDIT") || pdns_iequals(soaEdit2136,"SOA-EDIT-INCREASE") ){
- vector<string> soaEditSetting;
- B.getDomainMetadata(di->zone, "SOA-EDIT", soaEditSetting);
+ string soaEditSetting;
+ d_dk.getSoaEdit(di->zone, soaEditSetting);
if (soaEditSetting.empty()) {
L<<Logger::Error<<msgPrefix<<"Using "<<soaEdit2136<<" for SOA-EDIT-DNSUPDATE increase on DNS update, but SOA-EDIT is not set for domain \""<< di->zone <<"\". Using DEFAULT for SOA-EDIT-DNSUPDATE"<<endl;
soaEdit2136 = "DEFAULT";
} else
- soaEdit = soaEditSetting[0];
+ soaEdit = soaEditSetting;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/serialtweaker.cc new/pdns-3.4.7/pdns/serialtweaker.cc
--- old/pdns-3.4.6/pdns/serialtweaker.cc 2015-06-09 14:29:12.000000000 +0200
+++ new/pdns-3.4.7/pdns/serialtweaker.cc 2015-11-02 14:05:07.000000000 +0100
@@ -42,7 +42,7 @@
BOOST_FOREACH(DNSResourceRecord& rr, rrs) {
if(rr.qtype.getCode() == QType::SOA && pdns_iequals(rr.qname,qname)) {
string kind;
- dk.getFromMeta(qname, "SOA-EDIT", kind);
+ dk.getSoaEdit(qname, kind);
return editSOARecord(rr, kind);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/signingpipe.cc new/pdns-3.4.7/pdns/signingpipe.cc
--- old/pdns-3.4.6/pdns/signingpipe.cc 2015-06-09 14:29:13.000000000 +0200
+++ new/pdns-3.4.7/pdns/signingpipe.cc 2015-11-03 13:26:30.000000000 +0100
@@ -109,16 +109,17 @@
namespace {
bool dedupLessThan(const DNSResourceRecord& a, const DNSResourceRecord &b)
{
- if(tie(a.content, a.ttl) < tie(b.content, b.ttl))
- return true;
- if(a.qtype.getCode() == QType::MX || a.qtype.getCode() == QType::SRV)
- return a.priority < b.priority;
- return false;
+ uint16_t aprio = 0, bprio = 0;
+ if (a.qtype.getCode() == QType::MX || a.qtype.getCode() == QType::SRV)
+ aprio = a.priority;
+ if (b.qtype.getCode() == QType::MX || b.qtype.getCode() == QType::SRV)
+ bprio = b.priority;
+ return tie(a.content, aprio) < tie(b.content, bprio);
}
bool dedupEqual(const DNSResourceRecord& a, const DNSResourceRecord &b)
{
- if(tie(a.content, a.ttl) != tie(b.content, b.ttl))
+ if(a.content != b.content)
return false;
if(a.qtype.getCode() == QType::MX || a.qtype.getCode() == QType::SRV)
return a.priority == b.priority;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/tcpreceiver.cc new/pdns-3.4.7/pdns/tcpreceiver.cc
--- old/pdns-3.4.6/pdns/tcpreceiver.cc 2015-06-09 14:29:13.000000000 +0200
+++ new/pdns-3.4.7/pdns/tcpreceiver.cc 2015-11-02 14:05:07.000000000 +0100
@@ -700,7 +700,8 @@
}
rrs.push_back(rr);
} else {
- L<<Logger::Warning<<"Zone '"<<target<<"' contains out-of-zone data '"<<rr.qname<<"'|"<<rr.qtype.getName()<<"', ignoring"<<endl;
+ if (rr.qtype.getCode())
+ L<<Logger::Warning<<"Zone '"<<target<<"' contains out-of-zone data '"<<rr.qname<<"|"<<rr.qtype.getName()<<"', ignoring"<<endl;
continue;
}
}
@@ -1021,7 +1022,7 @@
}
string soaedit;
- dk.getFromMeta(target, "SOA-EDIT", soaedit);
+ dk.getSoaEdit(target, soaedit);
if (!rfc1982LessThan(serial, calculateEditSOA(sd, soaedit))) {
TSIGRecordContent trc;
string tsigkeyname, tsigsecret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/test-dnsrecords_cc.cc new/pdns-3.4.7/pdns/test-dnsrecords_cc.cc
--- old/pdns-3.4.6/pdns/test-dnsrecords_cc.cc 2015-06-09 14:29:13.000000000 +0200
+++ new/pdns-3.4.7/pdns/test-dnsrecords_cc.cc 2015-11-02 13:32:28.000000000 +0100
@@ -160,6 +160,8 @@
(CASE_S(QType::TLSA, "3 0 0 308201f43082015da003020102020900ac547c5557870ec7300d06092a864886f70d010105050030133111300f06035504030c087265632e74657374301e170d3133303531323139343830395a170d3133303631313139343830395a30133111300f06035504030c087265632e7465737430819f300d06092a864886f70d010101050003818d0030818902818100d282bb968dfdec0e5d13dfcc0a36ed73178581424e10a37c89d3014204933b3a8c1159fdecb221afe4168883d2d00ac1f15fca4614fbd5e05de2e37ad0fbad8b7748dddbcf30b39e80466c61c733415e72b9f42d5fad0bf35f041eb5631eded00314c66c4878b351416e5c6b9096f2a7088a24387e5d0149c523739f84f502c70203010001a350304e301d0603551d0e0416041473715bbfd9bc2b824112f858586f166aafb99482301f0603551d2304183016801473715bbfd9bc2b824112f858586f166aafb99482300c0603551d13040530030101ff300d06092a864886f70d0101050500038181005550f1d64139ab0e86c5b303fc69015d1676ca95931071ae41884656c71c116a38138ecf63054b350dc78983cb4a83288dbc81c5a659a56cc6843d5452c3e98449b94a0cf0c0cd7190c96caa5f0ee9a3bef7e75002be4a233673852bdf1a5fd306a7080eb4fead9b3ad162074b5f007e9156e220302dea8c700868a12577e7c4", "\x03\x00\x00\x30\x82\x01\xf4\x30\x82\x01\x5d\xa0\x03\x02\x01\x02\x02\x09\x00\xac\x54\x7c\x55\x57\x87\x0e\xc7\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x30\x13\x31\x11\x30\x0f\x06\x03\x55\x04\x03\x0c\x08\x72\x65\x63\x2e\x74\x65\x73\x74\x30\x1e\x17\x0d\x31\x33\x30\x35\x31\x32\x31\x39\x34\x38\x30\x39\x5a\x17\x0d\x31\x33\x30\x36\x31\x31\x31\x39\x34\x38\x30\x39\x5a\x30\x13\x31\x11\x30\x0f\x06\x03\x55\x04\x03\x0c\x08\x72\x65\x63\x2e\x74\x65\x73\x74\x30\x81\x9f\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x81\x8d\x00\x30\x81\x89\x02\x81\x81\x00\xd2\x82\xbb\x96\x8d\xfd\xec\x0e\x5d\x13\xdf\xcc\x0a\x36\xed\x73\x17\x85\x81\x42\x4e\x10\xa3\x7c\x89\xd3\x01\x42\x04\x93\x3b\x3a\x8c\x11\x59\xfd\xec\xb2\x21\xaf\xe4\x16\x88\x83\xd2\xd0\x0a\xc1\xf1\x5f\xca\x46\x14\xfb\xd5\xe0\x5d\xe2\xe3\x7a\xd0\xfb\xad\x8b\x77\x48\xdd\xdb\xcf\x30\xb3\x9e\x80\x46\x6c\x61\xc7\x33\x41\x5e\x72\xb9\xf4\x2d\x5f\xad\x0b\xf3\x5f\x04\x1e\xb5\x63\x1e\xde\xd0\x03\x14\xc6\x6c\x48\x78\xb3\x51\x41\x6e\x5c\x6b\x90\x96\xf2\xa7\x08\x8a\x24\x38\x7e\x5d\x01\x49\xc5\x23\x73\x9f\x84\xf5\x02\xc7\x02\x03\x01\x00\x01\xa3\x50\x30\x4e\x30\x1d\x06\x03\x55\x1d\x0e\x04\x16\x04\x14\x73\x71\x5b\xbf\xd9\xbc\x2b\x82\x41\x12\xf8\x58\x58\x6f\x16\x6a\xaf\xb9\x94\x82\x30\x1f\x06\x03\x55\x1d\x23\x04\x18\x30\x16\x80\x14\x73\x71\x5b\xbf\xd9\xbc\x2b\x82\x41\x12\xf8\x58\x58\x6f\x16\x6a\xaf\xb9\x94\x82\x30\x0c\x06\x03\x55\x1d\x13\x04\x05\x30\x03\x01\x01\xff\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x81\x81\x00\x55\x50\xf1\xd6\x41\x39\xab\x0e\x86\xc5\xb3\x03\xfc\x69\x01\x5d\x16\x76\xca\x95\x93\x10\x71\xae\x41\x88\x46\x56\xc7\x1c\x11\x6a\x38\x13\x8e\xcf\x63\x05\x4b\x35\x0d\xc7\x89\x83\xcb\x4a\x83\x28\x8d\xbc\x81\xc5\xa6\x59\xa5\x6c\xc6\x84\x3d\x54\x52\xc3\xe9\x84\x49\xb9\x4a\x0c\xf0\xc0\xcd\x71\x90\xc9\x6c\xaa\x5f\x0e\xe9\xa3\xbe\xf7\xe7\x50\x02\xbe\x4a\x23\x36\x73\x85\x2b\xdf\x1a\x5f\xd3\x06\xa7\x08\x0e\xb4\xfe\xad\x9b\x3a\xd1\x62\x07\x4b\x5f\x00\x7e\x91\x56\xe2\x20\x30\x2d\xea\x8c\x70\x08\x68\xa1\x25\x77\xe7\xc4",false))
(CASE_S(QType::TLSA, "3 1 0 30819f300d06092a864886f70d010101050003818d0030818902818100d282bb968dfdec0e5d13dfcc0a36ed73178581424e10a37c89d3014204933b3a8c1159fdecb221afe4168883d2d00ac1f15fca4614fbd5e05de2e37ad0fbad8b7748dddbcf30b39e80466c61c733415e72b9f42d5fad0bf35f041eb5631eded00314c66c4878b351416e5c6b9096f2a7088a24387e5d0149c523739f84f502c70203010001", "\x03\x01\x00\x30\x81\x9f\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00\x03\x81\x8d\x00\x30\x81\x89\x02\x81\x81\x00\xd2\x82\xbb\x96\x8d\xfd\xec\x0e\x5d\x13\xdf\xcc\x0a\x36\xed\x73\x17\x85\x81\x42\x4e\x10\xa3\x7c\x89\xd3\x01\x42\x04\x93\x3b\x3a\x8c\x11\x59\xfd\xec\xb2\x21\xaf\xe4\x16\x88\x83\xd2\xd0\x0a\xc1\xf1\x5f\xca\x46\x14\xfb\xd5\xe0\x5d\xe2\xe3\x7a\xd0\xfb\xad\x8b\x77\x48\xdd\xdb\xcf\x30\xb3\x9e\x80\x46\x6c\x61\xc7\x33\x41\x5e\x72\xb9\xf4\x2d\x5f\xad\x0b\xf3\x5f\x04\x1e\xb5\x63\x1e\xde\xd0\x03\x14\xc6\x6c\x48\x78\xb3\x51\x41\x6e\x5c\x6b\x90\x96\xf2\xa7\x08\x8a\x24\x38\x7e\x5d\x01\x49\xc5\x23\x73\x9f\x84\xf5\x02\xc7\x02\x03\x01\x00\x01",false))
+ (CASE_S(QType::OPENPGPKEY, "mQINBFUIXh0BEADNPlL6NpWEaR2KJx6p19scIVpsBIo7UqzCIzeFbRJaGDhn/HlQgcwAalcVNmWUX0ZQsrdn9CEfLWuFu9ON2o1TslYiwn+oSAlH2raFm2eyJTp/iM7IUUCte5jmf3d+L9rjVI7JjmMnbVo6SVY2KDDD72dULcg7IqYcCAN4CT+tPZP5y4cYf+DxRlpxhxvqqiGyAi6lAcJ24/8fJ4hsG0lS1vU12LWeWTHa5aRMM+x9kmv3GYdXG+FxFqZw52kZEnAscpC2ymbX+1YFCr8sjGYGde/D+5cLvuu4PGNZ4fkSeS+0yXve/s6u1mX6RkkF6SOGWuJfBJOGdWzYwber9kqgqpHTjpr8HOybzVroBijtTlB/tommIUd4BTk9Jv4fv2gA4UkC13UM9KBF1NnzUnKC+Js49O3mj0HZDoCrkWMnZyDsEmhMyQPU6YRFHWmB6OTKeD/Znk+b1uz+HIBgrbNuiG/A0c00Vnj7lR4p94oOuypI00XusLsJwPsjI4EgFGKdoRtM0spJhi+3gf88Vq0NENBaFVHLBGWVFaVrffurGcDZYUAdnvm8jSPCgBPfFxpZutexNkLjyaaXjDtga5/n5gSd/3RpWCvp9u3W5jcTNDZF4TORnOXUWHcot/+XmyH8/+cn8ydt0prOLGQ+FtdI+AWyMCXHen6aaZ1jeSLZqwARAQABtFpwZG5zIHJlZ3Jlc3Npb24gdGVzdGluZyBrZXkgKG9ubHkgZm9yIHRlc3RpbmcgdGhlIG9wZW5wZ3BrZXkgcnIpIDxyZWdyZXNzaW9uQHBvd2VyZG5zLm9yZz6JAjcEEwEIACEFAlUIXh0CGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQPr/KqoyK2Z7A6Q//YOBu8nwt+fguSo/vyCln0PqnTiBm4RvE2gPDUnsKuoXoP5F56XHBXKl9kEgmycht/nc7c7NRHzUhacM2RQau6CgNZE8KLaqDTKlEuc/ANtrnGGYG8gMId4TlzU5taLEA8yrHIHnwnMuDDpx1a0ETkbYCrj7CynqdhXCABqFjgRL7Qb37UnLPE7YdFt7fRGwZVLnb3GVZLKHurZ0TANvLdRVDST3f0lCcYMppPbHAvi2MIU71FPGkms++tj4gTltq0VRvrMNm1e5v4+hHZ++QN4sm4+DJGlo7l850gnMXc7c7GkRGtg8gV0h5k5jX5icdgxyvENTuBQ+QprkYTRh9uYzpoTQ+NYRZlgaJxxaDIv1K/kb3oPtnAEKJBC02IZbB0EiS3R5pxYXhUNoWV7ez2A4hX1L+tfvlgCAbbQ/cBLvqXgpgsf9x4ygSi52vQBy3twZyrtLsogxacxADfPcyleHtju/+lSku+Z6+W6OojA0kY2HlaMyQATJLIXd+6NE/tYy70RsU9Oq0OyVTjxh21SPLsExeSwSfciVSLn7IuKGIOV82MEHFhpo1Uhv+G52J8T1fI730sS4Tl5DekLaCz1pg/FmI/EQeAsYqm98uDAaFQcs6gDse8VYGmp2XYsoCW72as8ElKmMIbQ/xD7qxDORLmjCtVoyKH19+s6Pp61a5Ag0EVQheHQEQAMN6pcLJUhw9bfO5kqhLv4prt0AqVBUok6U8tIaEc9vDaasBcFHXgPsoOG97DXB6BdvsHuK/5uMVH5PNe58MLp08iCoIt0C0CbN3+D9Qbeg37AyKyFanB/CXq1tPKVCJc6BMNkO/BswnUsTTmlcd4GovpaJUOOZzblGUQBbhzRohhmOGfdsScGeeYME/yNFqzt1ZArV4va1hOLOUpNFv9TOy0ZVi/yDi+sYA9fCSZU9alWI/cbBct5I+3bh1l26umlZsYQm8uqnSgiQWpRm6UJO6xQbmUN9GzCYyKCmpzZRduqqjjtiF10W1yzioTfTtq2cvU6PdINYY8w2UuOjRd9gChtvGuduOIwqlRTYSaXX1dDoFe1vWqZzRm+pIDumO9eX5jMmzFXLDG2pD2l97zoSjVFf/pYoBasgX43e3V/aEk9PUgXbYFm2QxFMcIYSO9GEDMoE+QxoMXf1UjLxMCK5gD5iHL3Ff2zyXLzlTZE+fHPMLcAkzcp2u6pJ9xpAGekqqeqnISXZ2o8yXsqv8NVvl1zaSiSqU+kak9mIg/2+WC9W1qO2PeSLW2tiis980QnmyDOBg2oL01ITh/u+GTodEGwfRYJoNAJgUjcUMpWl0LuoG8lG6wukhA4QYFWpf2QPVgTR63VbpFgwCnUcSEPqHB0BRCsDHsd0k+/YSuPolABEBAAGJAh8EGAEIAAkFAlUIXh0CGwwACgkQPr/KqoyK2Z6zPA/+PkJTzP8kQw4GW0x2ZxXfOmkRVYpSEoHehf6y9YFN00+T8pb71RGItvuX5v6oPKPClOnIVg2WVHOq6Q3HsXEzl7oIbOtPE98WXHiVXud/djc54uHz9WjSPfy/idP7SMslo29BHR/K9nQkiGtayD57wdxgbLXObE3fA0gl4AsWl1EZzNcWVL4SIrvnBGpYIUGBcsTIiP3p09bu4Qf6HjJRXZlBuizigIgeO39l/G6tb6GA1cnbq4y6aCtQeXHLrnvak1jRqznlJWUqS1mQgOPF1MuOduHAvQbfMBQXAEfgOTzuH9PuKoGm7MePwTrU5GsOpNgS4LbvIRODJxYD+vIwA5BniijgfN9aj9KQVMURrd4Np7i0EVmj8P9FtNgYsEaDt7laGpNB9+9Y9heb6kNEulF7KI7y8CKikgvFGHHCyX2BCCbQBqi6wbEGq16qkTJmesYu9ig4v4xD/Q/cLJFziJLjEcWsL7hq7q2o6e7NL6hf5aTH0/bdeMXMqRzDCAFQ5Z+x0QUCgVonxzj+CuTD/LeOs/QHu/9emvm9EOMYY/X9vidLf58PT/AMqMiYbNWty6qY6k2LMw74Yd4+hO+Tjrk8MrqbCUs9h6ih9IOCo68JTWQQbgWSk2TAyd3U4OqTyBnHWr0HhHDRTOxyDbZUtXbk/r4Q4gTcAt+qjpswPyk=", "\x99\x02\x0d\x04\x55\x08\x5e\x1d\x01\x10\x00\xcd\x3e\x52\xfa\x36\x95\x84\x69\x1d\x8a\x27\x1e\xa9\xd7\xdb\x1c\x21\x5a\x6c\x04\x8a\x3b\x52\xac\xc2\x23\x37\x85\x6d\x12\x5a\x18\x38\x67\xfc\x79\x50\x81\xcc\x00\x6a\x57\x15\x36\x65\x94\x5f\x46\x50\xb2\xb7\x67\xf4\x21\x1f\x2d\x6b\x85\xbb\xd3\x8d\xda\x8d\x53\xb2\x56\x22\xc2\x7f\xa8\x48\x09\x47\xda\xb6\x85\x9b\x67\xb2\x25\x3a\x7f\x88\xce\xc8\x51\x40\xad\x7b\x98\xe6\x7f\x77\x7e\x2f\xda\xe3\x54\x8e\xc9\x8e\x63\x27\x6d\x5a\x3a\x49\x56\x36\x28\x30\xc3\xef\x67\x54\x2d\xc8\x3b\x22\xa6\x1c\x08\x03\x78\x09\x3f\xad\x3d\x93\xf9\xcb\x87\x18\x7f\xe0\xf1\x46\x5a\x71\x87\x1b\xea\xaa\x21\xb2\x02\x2e\xa5\x01\xc2\x76\xe3\xff\x1f\x27\x88\x6c\x1b\x49\x52\xd6\xf5\x35\xd8\xb5\x9e\x59\x31\xda\xe5\xa4\x4c\x33\xec\x7d\x92\x6b\xf7\x19\x87\x57\x1b\xe1\x71\x16\xa6\x70\xe7\x69\x19\x12\x70\x2c\x72\x90\xb6\xca\x66\xd7\xfb\x56\x05\x0a\xbf\x2c\x8c\x66\x06\x75\xef\xc3\xfb\x97\x0b\xbe\xeb\xb8\x3c\x63\x59\xe1\xf9\x12\x79\x2f\xb4\xc9\x7b\xde\xfe\xce\xae\xd6\x65\xfa\x46\x49\x05\xe9\x23\x86\x5a\xe2\x5f\x04\x93\x86\x75\x6c\xd8\xc1\xb7\xab\xf6\x4a\xa0\xaa\x91\xd3\x8e\x9a\xfc\x1c\xec\x9b\xcd\x5a\xe8\x06\x28\xed\x4e\x50\x7f\xb6\x89\xa6\x21\x47\x78\x05\x39\x3d\x26\xfe\x1f\xbf\x68\x00\xe1\x49\x02\xd7\x75\x0c\xf4\xa0\x45\xd4\xd9\xf3\x52\x72\x82\xf8\x9b\x38\xf4\xed\xe6\x8f\x41\xd9\x0e\x80\xab\x91\x63\x27\x67\x20\xec\x12\x68\x4c\xc9\x03\xd4\xe9\x84\x45\x1d\x69\x81\xe8\xe4\xca\x78\x3f\xd9\x9e\x4f\x9b\xd6\xec\xfe\x1c\x80\x60\xad\xb3\x6e\x88\x6f\xc0\xd1\xcd\x34\x56\x78\xfb\x95\x1e\x29\xf7\x8a\x0e\xbb\x2a\x48\xd3\x45\xee\xb0\xbb\x09\xc0\xfb\x23\x23\x81\x20\x14\x62\x9d\xa1\x1b\x4c\xd2\xca\x49\x86\x2f\xb7\x81\xff\x3c\x56\xad\x0d\x10\xd0\x5a\x15\x51\xcb\x04\x65\x95\x15\xa5\x6b\x7d\xfb\xab\x19\xc0\xd9\x61\x40\x1d\x9e\xf9\xbc\x8d\x23\xc2\x80\x13\xdf\x17\x1a\x59\xba\xd7\xb1\x36\x42\xe3\xc9\xa6\x97\x8c\x3b\x60\x6b\x9f\xe7\xe6\x04\x9d\xff\x74\x69\x58\x2b\xe9\xf6\xed\xd6\xe6\x37\x13\x34\x36\x45\xe1\x33\x91\x9c\xe5\xd4\x58\x77\x28\xb7\xff\x97\x9b\x21\xfc\xff\xe7\x27\xf3\x27\x6d\xd2\x9a\xce\x2c\x64\x3e\x16\xd7\x48\xf8\x05\xb2\x30\x25\xc7\x7a\x7e\x9a\x69\x9d\x63\x79\x22\xd9\xab\x00\x11\x01\x00\x01\xb4\x5a\x70\x64\x6e\x73\x20\x72\x65\x67\x72\x65\x73\x73\x69\x6f\x6e\x20\x74\x65\x73\x74\x69\x6e\x67\x20\x6b\x65\x79\x20\x28\x6f\x6e\x6c\x79\x20\x66\x6f\x72\x20\x74\x65\x73\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x6f\x70\x65\x6e\x70\x67\x70\x6b\x65\x79\x20\x72\x72\x29\x20\x3c\x72\x65\x67\x72\x65\x73\x73\x69\x6f\x6e\x40\x70\x6f\x77\x65\x72\x64\x6e\x73\x2e\x6f\x72\x67\x3e\x89\x02\x37\x04\x13\x01\x08\x00\x21\x05\x02\x55\x08\x5e\x1d\x02\x1b\x03\x05\x0b\x09\x08\x07\x02\x06\x15\x08\x09\x0a\x0b\x02\x04\x16\x02\x03\x01\x02\x1e\x01\x02\x17\x80\x00\x0a\x09\x10\x3e\xbf\xca\xaa\x8c\x8a\xd9\x9e\xc0\xe9\x0f\xff\x60\xe0\x6e\xf2\x7c\x2d\xf9\xf8\x2e\x4a\x8f\xef\xc8\x29\x67\xd0\xfa\xa7\x4e\x20\x66\xe1\x1b\xc4\xda\x03\xc3\x52\x7b\x0a\xba\x85\xe8\x3f\x91\x79\xe9\x71\xc1\x5c\xa9\x7d\x90\x48\x26\xc9\xc8\x6d\xfe\x77\x3b\x73\xb3\x51\x1f\x35\x21\x69\xc3\x36\x45\x06\xae\xe8\x28\x0d\x64\x4f\x0a\x2d\xaa\x83\x4c\xa9\x44\xb9\xcf\xc0\x36\xda\xe7\x18\x66\x06\xf2\x03\x08\x77\x84\xe5\xcd\x4e\x6d\x68\xb1\x00\xf3\x2a\xc7\x20\x79\xf0\x9c\xcb\x83\x0e\x9c\x75\x6b\x41\x13\x91\xb6\x02\xae\x3e\xc2\xca\x7a\x9d\x85\x70\x80\x06\xa1\x63\x81\x12\xfb\x41\xbd\xfb\x52\x72\xcf\x13\xb6\x1d\x16\xde\xdf\x44\x6c\x19\x54\xb9\xdb\xdc\x65\x59\x2c\xa1\xee\xad\x9d\x13\x00\xdb\xcb\x75\x15\x43\x49\x3d\xdf\xd2\x50\x9c\x60\xca\x69\x3d\xb1\xc0\xbe\x2d\x8c\x21\x4e\xf5\x14\xf1\xa4\x9a\xcf\xbe\xb6\x3e\x20\x4e\x5b\x6a\xd1\x54\x6f\xac\xc3\x66\xd5\xee\x6f\xe3\xe8\x47\x67\xef\x90\x37\x8b\x26\xe3\xe0\xc9\x1a\x5a\x3b\x97\xce\x74\x82\x73\x17\x73\xb7\x3b\x1a\x44\x46\xb6\x0f\x20\x57\x48\x79\x93\x98\xd7\xe6\x27\x1d\x83\x1c\xaf\x10\xd4\xee\x05\x0f\x90\xa6\xb9\x18\x4d\x18\x7d\xb9\x8c\xe9\xa1\x34\x3e\x35\x84\x59\x96\x06\x89\xc7\x16\x83\x22\xfd\x4a\xfe\x46\xf7\xa0\xfb\x67\x00\x42\x89\x04\x2d\x36\x21\x96\xc1\xd0\x48\x92\xdd\x1e\x69\xc5\x85\xe1\x50\xda\x16\x57\xb7\xb3\xd8\x0e\x21\x5f\x52\xfe\xb5\xfb\xe5\x80\x20\x1b\x6d\x0f\xdc\x04\xbb\xea\x5e\x0a\x60\xb1\xff\x71\xe3\x28\x12\x8b\x9d\xaf\x40\x1c\xb7\xb7\x06\x72\xae\xd2\xec\xa2\x0c\x5a\x73\x10\x03\x7c\xf7\x32\x95\xe1\xed\x8e\xef\xfe\x95\x29\x2e\xf9\x9e\xbe\x5b\xa3\xa8\x8c\x0d\x24\x63\x61\xe5\x68\xcc\x90\x01\x32\x4b\x21\x77\x7e\xe8\xd1\x3f\xb5\x8c\xbb\xd1\x1b\x14\xf4\xea\xb4\x3b\x25\x53\x8f\x18\x76\xd5\x23\xcb\xb0\x4c\x5e\x4b\x04\x9f\x72\x25\x52\x2e\x7e\xc8\xb8\xa1\x88\x39\x5f\x36\x30\x41\xc5\x86\x9a\x35\x52\x1b\xfe\x1b\x9d\x89\xf1\x3d\x5f\x23\xbd\xf4\xb1\x2e\x13\x97\x90\xde\x90\xb6\x82\xcf\x5a\x60\xfc\x59\x88\xfc\x44\x1e\x02\xc6\x2a\x9b\xdf\x2e\x0c\x06\x85\x41\xcb\x3a\x80\x3b\x1e\xf1\x56\x06\x9a\x9d\x97\x62\xca\x02\x5b\xbd\x9a\xb3\xc1\x25\x2a\x63\x08\x6d\x0f\xf1\x0f\xba\xb1\x0c\xe4\x4b\x9a\x30\xad\x56\x8c\x8a\x1f\x5f\x7e\xb3\xa3\xe9\xeb\x56\xb9\x02\x0d\x04\x55\x08\x5e\x1d\x01\x10\x00\xc3\x7a\xa5\xc2\xc9\x52\x1c\x3d\x6d\xf3\xb9\x92\xa8\x4b\xbf\x8a\x6b\xb7\x40\x2a\x54\x15\x28\x93\xa5\x3c\xb4\x86\x84\x73\xdb\xc3\x69\xab\x01\x70\x51\xd7\x80\xfb\x28\x38\x6f\x7b\x0d\x70\x7a\x05\xdb\xec\x1e\xe2\xbf\xe6\xe3\x15\x1f\x93\xcd\x7b\x9f\x0c\x2e\x9d\x3c\x88\x2a\x08\xb7\x40\xb4\x09\xb3\x77\xf8\x3f\x50\x6d\xe8\x37\xec\x0c\x8a\xc8\x56\xa7\x07\xf0\x97\xab\x5b\x4f\x29\x50\x89\x73\xa0\x4c\x36\x43\xbf\x06\xcc\x27\x52\xc4\xd3\x9a\x57\x1d\xe0\x6a\x2f\xa5\xa2\x54\x38\xe6\x73\x6e\x51\x94\x40\x16\xe1\xcd\x1a\x21\x86\x63\x86\x7d\xdb\x12\x70\x67\x9e\x60\xc1\x3f\xc8\xd1\x6a\xce\xdd\x59\x02\xb5\x78\xbd\xad\x61\x38\xb3\x94\xa4\xd1\x6f\xf5\x33\xb2\xd1\x95\x62\xff\x20\xe2\xfa\xc6\x00\xf5\xf0\x92\x65\x4f\x5a\x95\x62\x3f\x71\xb0\x5c\xb7\x92\x3e\xdd\xb8\x75\x97\x6e\xae\x9a\x56\x6c\x61\x09\xbc\xba\xa9\xd2\x82\x24\x16\xa5\x19\xba\x50\x93\xba\xc5\x06\xe6\x50\xdf\x46\xcc\x26\x32\x28\x29\xa9\xcd\x94\x5d\xba\xaa\xa3\x8e\xd8\x85\xd7\x45\xb5\xcb\x38\xa8\x4d\xf4\xed\xab\x67\x2f\x53\xa3\xdd\x20\xd6\x18\xf3\x0d\x94\xb8\xe8\xd1\x77\xd8\x02\x86\xdb\xc6\xb9\xdb\x8e\x23\x0a\xa5\x45\x36\x12\x69\x75\xf5\x74\x3a\x05\x7b\x5b\xd6\xa9\x9c\xd1\x9b\xea\x48\x0e\xe9\x8e\xf5\xe5\xf9\x8c\xc9\xb3\x15\x72\xc3\x1b\x6a\x43\xda\x5f\x7b\xce\x84\xa3\x54\x57\xff\xa5\x8a\x01\x6a\xc8\x17\xe3\x77\xb7\x57\xf6\x84\x93\xd3\xd4\x81\x76\xd8\x16\x6d\x90\xc4\x53\x1c\x21\x84\x8e\xf4\x61\x03\x32\x81\x3e\x43\x1a\x0c\x5d\xfd\x54\x8c\xbc\x4c\x08\xae\x60\x0f\x98\x87\x2f\x71\x5f\xdb\x3c\x97\x2f\x39\x53\x64\x4f\x9f\x1c\xf3\x0b\x70\x09\x33\x72\x9d\xae\xea\x92\x7d\xc6\x90\x06\x7a\x4a\xaa\x7a\xa9\xc8\x49\x76\x76\xa3\xcc\x97\xb2\xab\xfc\x35\x5b\xe5\xd7\x36\x92\x89\x2a\x94\xfa\x46\xa4\xf6\x62\x20\xff\x6f\x96\x0b\xd5\xb5\xa8\xed\x8f\x79\x22\xd6\xda\xd8\xa2\xb3\xdf\x34\x42\x79\xb2\x0c\xe0\x60\xda\x82\xf4\xd4\x84\xe1\xfe\xef\x86\x4e\x87\x44\x1b\x07\xd1\x60\x9a\x0d\x00\x98\x14\x8d\xc5\x0c\xa5\x69\x74\x2e\xea\x06\xf2\x51\xba\xc2\xe9\x21\x03\x84\x18\x15\x6a\x5f\xd9\x03\xd5\x81\x34\x7a\xdd\x56\xe9\x16\x0c\x02\x9d\x47\x12\x10\xfa\x87\x07\x40\x51\x0a\xc0\xc7\xb1\xdd\x24\xfb\xf6\x12\xb8\xfa\x25\x00\x11\x01\x00\x01\x89\x02\x1f\x04\x18\x01\x08\x00\x09\x05\x02\x55\x08\x5e\x1d\x02\x1b\x0c\x00\x0a\x09\x10\x3e\xbf\xca\xaa\x8c\x8a\xd9\x9e\xb3\x3c\x0f\xfe\x3e\x42\x53\xcc\xff\x24\x43\x0e\x06\x5b\x4c\x76\x67\x15\xdf\x3a\x69\x11\x55\x8a\x52\x12\x81\xde\x85\xfe\xb2\xf5\x81\x4d\xd3\x4f\x93\xf2\x96\xfb\xd5\x11\x88\xb6\xfb\x97\xe6\xfe\xa8\x3c\xa3\xc2\x94\xe9\xc8\x56\x0d\x96\x54\x73\xaa\xe9\x0d\xc7\xb1\x71\x33\x97\xba\x08\x6c\xeb\x4f\x13\xdf\x16\x5c\x78\x95\x5e\xe7\x7f\x76\x37\x39\xe2\xe1\xf3\xf5\x68\xd2\x3d\xfc\xbf\x89\xd3\xfb\x48\xcb\x25\xa3\x6f\x41\x1d\x1f\xca\xf6\x74\x24\x88\x6b\x5a\xc8\x3e\x7b\xc1\xdc\x60\x6c\xb5\xce\x6c\x4d\xdf\x03\x48\x25\xe0\x0b\x16\x97\x51\x19\xcc\xd7\x16\x54\xbe\x12\x22\xbb\xe7\x04\x6a\x58\x21\x41\x81\x72\xc4\xc8\x88\xfd\xe9\xd3\xd6\xee\xe1\x07\xfa\x1e\x32\x51\x5d\x99\x41\xba\x2c\xe2\x80\x88\x1e\x3b\x7f\x65\xfc\x6e\xad\x6f\xa1\x80\xd5\xc9\xdb\xab\x8c\xba\x68\x2b\x50\x79\x71\xcb\xae\x7b\xda\x93\x58\xd1\xab\x39\xe5\x25\x65\x2a\x4b\x59\x90\x80\xe3\xc5\xd4\xcb\x8e\x76\xe1\xc0\xbd\x06\xdf\x30\x14\x17\x00\x47\xe0\x39\x3c\xee\x1f\xd3\xee\x2a\x81\xa6\xec\xc7\x8f\xc1\x3a\xd4\xe4\x6b\x0e\xa4\xd8\x12\xe0\xb6\xef\x21\x13\x83\x27\x16\x03\xfa\xf2\x30\x03\x90\x67\x8a\x28\xe0\x7c\xdf\x5a\x8f\xd2\x90\x54\xc5\x11\xad\xde\x0d\xa7\xb8\xb4\x11\x59\xa3\xf0\xff\x45\xb4\xd8\x18\xb0\x46\x83\xb7\xb9\x5a\x1a\x93\x41\xf7\xef\x58\xf6\x17\x9b\xea\x43\x44\xba\x51\x7b\x28\x8e\xf2\xf0\x22\xa2\x92\x0b\xc5\x18\x71\xc2\xc9\x7d\x81\x08\x26\xd0\x06\xa8\xba\xc1\xb1\x06\xab\x5e\xaa\x91\x32\x66\x7a\xc6\x2e\xf6\x28\x38\xbf\x8c\x43\xfd\x0f\xdc\x2c\x91\x73\x88\x92\xe3\x11\xc5\xac\x2f\xb8\x6a\xee\xad\xa8\xe9\xee\xcd\x2f\xa8\x5f\xe5\xa4\xc7\xd3\xf6\xdd\x78\xc5\xcc\xa9\x1c\xc3\x08\x01\x50\xe5\x9f\xb1\xd1\x05\x02\x81\x5a\x27\xc7\x38\xfe\x0a\xe4\xc3\xfc\xb7\x8e\xb3\xf4\x07\xbb\xff\x5e\x9a\xf9\xbd\x10\xe3\x18\x63\xf5\xfd\xbe\x27\x4b\x7f\x9f\x0f\x4f\xf0\x0c\xa8\xc8\x98\x6c\xd5\xad\xcb\xaa\x98\xea\x4d\x8b\x33\x0e\xf8\x61\xde\x3e\x84\xef\x93\x8e\xb9\x3c\x32\xba\x9b\x09\x4b\x3d\x87\xa8\xa1\xf4\x83\x82\xa3\xaf\x09\x4d\x64\x10\x6e\x05\x92\x93\x64\xc0\xc9\xdd\xd4\xe0\xea\x93\xc8\x19\xc7\x5a\xbd\x07\x84\x70\xd1\x4c\xec\x72\x0d\xb6\x54\xb5\x76\xe4\xfe\xbe\x10\xe2\x04\xdc\x02\xdf\xaa\x8e\x9b\x30\x3f\x29",false))
+
(CASE_S(QType::SPF, "\"v=spf1 a:mail.rec.test ~all\"", "\x1bv=spf1 a:mail.rec.test ~all",false))
(CASE_S(QType::EUI48, "00-11-22-33-44-55", "\x00\x11\x22\x33\x44\x55",false))
(CASE_S(QType::EUI64, "00-11-22-33-44-55-66-77", "\x00\x11\x22\x33\x44\x55\x66\x77",false))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/ueberbackend.cc new/pdns-3.4.7/pdns/ueberbackend.cc
--- old/pdns-3.4.6/pdns/ueberbackend.cc 2015-08-24 11:12:00.000000000 +0200
+++ new/pdns-3.4.7/pdns/ueberbackend.cc 2015-10-13 10:37:24.000000000 +0200
@@ -278,11 +278,12 @@
{
int best_match_len = -1;
bool from_cache = false; // Was this result fetched from the cache?
+ map<string,int> negCacheMap;
// If not special case of caching explicitly disabled (sd->db = -1), first
// find the best match from the cache. If DS then we need to find parent so
// dont bother with caching as it confuses matters.
- if( sd->db != (DNSBackend *)-1 && d_cache_ttl && p->qtype != QType::DS ) {
+ if( sd->db != (DNSBackend *)-1 && (d_cache_ttl || d_negcache_ttl)) {
string subdomain(target);
int cstat, loops = 0;
do {
@@ -292,7 +293,7 @@
cstat = cacheHas(d_question,d_answers);
- if(cstat==1 && !d_answers.empty()) {
+ if(cstat==1 && !d_answers.empty() && d_cache_ttl) {
fillSOAData(d_answers[0].content,*sd);
sd->domain_id = d_answers[0].domain_id;
sd->ttl = d_answers[0].ttl;
@@ -301,29 +302,51 @@
//L<<Logger::Error<<"Best cache match: " << sd->qname << " itteration " << loops <<endl;
// Found first time round this must be the best match
- if( loops == 0 )
+ if( loops == 0 && p->qtype != QType::DS)
return true;
from_cache = true;
best_match_len = sd->qname.length();
- break;
- }
+ if ( p->qtype != QType::DS || best_match_len < (int)target.length())
+ break;
+ } else if (cstat==0 && d_negcache_ttl) {
+ negCacheMap[subdomain]=1;
+ } else
+ negCacheMap[subdomain]=0;
loops++;
}
while( chopOff( subdomain ) ); // 'www.powerdns.org' -> 'powerdns.org' -> 'org' -> ''
}
- for(vector<DNSBackend *>::const_iterator i=backends.begin(); i!=backends.end();++i)
- if((*i)->getAuth(p, sd, target, zoneId, best_match_len)) {
+ for(vector<DNSBackend *>::const_iterator i=backends.begin(); i!=backends.end();++i) {
+
+ // Shortcut for the case that we got a direct hit - no need to go
+ // through the other backends then.
+ if( best_match_len == (int)target.length() && p->qtype != QType::DS )
+ goto auth_found;
+
+ if((*i)->getAuth(p, sd, target, zoneId, best_match_len, negCacheMap)) {
best_match_len = sd->qname.length();
from_cache = false;
+ }
+ }
- // Shortcut for the case that we got a direct hit - no need to go
- // through the other backends then.
- if( best_match_len == (int)target.length() )
- goto auth_found;
+ if( sd->db != (DNSBackend *)-1 && d_negcache_ttl) {
+ string shorter(target);
+
+ d_question.qtype=QType::SOA;
+ d_question.zoneId=-1;
+ while((int)shorter.length() > best_match_len ) {
+ map<string,int>::iterator it = negCacheMap.find(shorter);
+ if (it == negCacheMap.end() || it->second == 0) {
+ d_question.qname=shorter;
+ addNegCache(d_question);
+ }
+ if (!chopOff(shorter))
+ break;
}
+ }
if( best_match_len == -1 )
return false;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/ueberbackend.hh new/pdns-3.4.7/pdns/ueberbackend.hh
--- old/pdns-3.4.6/pdns/ueberbackend.hh 2015-08-24 11:12:00.000000000 +0200
+++ new/pdns-3.4.7/pdns/ueberbackend.hh 2015-10-13 10:37:24.000000000 +0200
@@ -114,8 +114,8 @@
void lookup(const QType &, const string &qdomain, DNSPacket *pkt_p=0, int zoneId=-1);
/* 5-arg version is only valid for backends and should never be called directly */
- virtual bool getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId, const int best_match_len) {
- throw PDNSException("5-arg version of getAuth should not be called in UeberBackend");
+ virtual bool getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId, const int best_match_len, map<string,int>& negCacheMap) {
+ throw PDNSException("6-arg version of getAuth should not be called in UeberBackend");
}
bool getAuth(DNSPacket *p, SOAData *sd, const string &target, int *zoneId);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns/ws-auth.cc new/pdns-3.4.7/pdns/ws-auth.cc
--- old/pdns-3.4.6/pdns/ws-auth.cc 2015-08-24 11:12:00.000000000 +0200
+++ new/pdns-3.4.7/pdns/ws-auth.cc 2015-09-30 13:07:31.000000000 +0200
@@ -122,6 +122,9 @@
case '>':
result += ">";
break;
+ case '"':
+ result += """;
+ break;
default:
result += *it;
}
@@ -141,15 +144,15 @@
}
ret<<"<div class=\"panel\">";
- ret<<"<span class=resetring><i></i><a href=\"?resetring="<<ringname<<"\">Reset</a></span>"<<endl;
+ ret<<"<span class=resetring><i></i><a href=\"?resetring="<<htmlescape(ringname)<<"\">Reset</a></span>"<<endl;
ret<<"<h2>"<<title<<"</h2>"<<endl;
ret<<"<div class=ringmeta>";
- ret<<"<a class=topXofY href=\"?ring="<<ringname<<"\">Showing: Top "<<limit<<" of "<<entries<<"</a>"<<endl;
+ ret<<"<a class=topXofY href=\"?ring="<<htmlescape(ringname)<<"\">Showing: Top "<<limit<<" of "<<entries<<"</a>"<<endl;
ret<<"<span class=resizering>Resize: ";
unsigned int sizes[]={10,100,500,1000,10000,500000,0};
for(int i=0;sizes[i];++i) {
if(S.getRingSize(ringname)!=sizes[i])
- ret<<"<a href=\"?resizering="<<ringname<<"&size="<<sizes[i]<<"\">"<<sizes[i]<<"</a> ";
+ ret<<"<a href=\"?resizering="<<htmlescape(ringname)<<"&size="<<sizes[i]<<"\">"<<sizes[i]<<"</a> ";
else
ret<<"("<<sizes[i]<<") ";
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pdns-3.4.6/pdns.spec new/pdns-3.4.7/pdns.spec
--- old/pdns-3.4.6/pdns.spec 2015-08-27 15:17:34.000000000 +0200
+++ new/pdns-3.4.7/pdns.spec 2015-11-03 15:36:48.000000000 +0100
@@ -1,6 +1,6 @@
BuildRoot: /tmp/pdns
Name: pdns-static
-Version: 3.4.6
+Version: 3.4.7
Release: 1
Summary: extremely powerful and versatile nameserver
License: GPL
1
0
Hello community,
here is the log from the commit of package notify-osd for openSUSE:Factory checked in at 2016-01-01 19:48:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/notify-osd (Old)
and /work/SRC/openSUSE:Factory/.notify-osd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "notify-osd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/notify-osd/notify-osd.changes 2015-11-26 17:04:06.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.notify-osd.new/notify-osd.changes 2016-01-01 19:51:20.000000000 +0100
@@ -1,0 +2,8 @@
+Sat Dec 26 21:14:56 UTC 2015 - sor.alexei(a)meowr.ru
+
+- Update to 0.9.35~bzr20151201:
+ * bubble_set_icon: allow absolute paths in the icon name field
+ (lp#1520667).
+- Add notify-osd-fix-voidreturn.patch.
+
+-------------------------------------------------------------------
Old:
----
notify-osd_0.9.35+16.04.20151118.orig.tar.gz
New:
----
notify-osd-fix-voidreturn.patch
notify-osd_0.9.35+16.04.20151201.orig.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ notify-osd.spec ++++++
--- /var/tmp/diff_new_pack.WjSxV9/_old 2016-01-01 19:51:21.000000000 +0100
+++ /var/tmp/diff_new_pack.WjSxV9/_new 2016-01-01 19:51:21.000000000 +0100
@@ -16,9 +16,9 @@
#
-%define _version 0.9.35+16.04.20151118
+%define _version 0.9.35+16.04.20151201
Name: notify-osd
-Version: 0.9.35~bzr20151118
+Version: 0.9.35~bzr20151201
Release: 0
Summary: Streamlined Notification Daemon
License: GPL-3.0+
@@ -26,7 +26,9 @@
Url: https://launchpad.net/notify-osd
Source: http://archive.ubuntu.com/ubuntu/pool/main/n/notify-osd/%{name}_%{_version}…
# PATCH-FEATURE-OPENSUSE notify-osd-leolik.patch -- Extend the configuration capabilities, patch by Roman Sukochev (Leolik) from https://launchpad.net/~leolik/+archive/leolik.
-Patch0: notify-osd-leolik.patch
+Patch0: %{name}-leolik.patch
+# PATCH-FIX-UPSTREAM notify-osd-fix-voidreturn.patch sor.alexei(a)meowr.ru -- Fix value non-return in display.c stack_layout().
+Patch1: %{name}-fix-voidreturn.patch
BuildRequires: autoconf >= 2.59
BuildRequires: automake >= 1.8
BuildRequires: fdupes
@@ -53,6 +55,7 @@
%prep
%setup -q -n %{name}-%{_version}
%patch0
+%patch1 -p1
%build
autoreconf -fi
++++++ notify-osd-fix-voidreturn.patch ++++++
--- a/src/display.c
+++ b/src/display.c
@@ -288,7 +288,7 @@ stack_layout (Stack* self)
gint y = 0;
gint x = 0;
- g_return_if_fail (self != NULL);
+ g_return_val_if_fail (self != NULL, TRUE);
bubble = stack_select_next_to_display (self);
if (bubble == NULL)
++++++ notify-osd_0.9.35+16.04.20151118.orig.tar.gz -> notify-osd_0.9.35+16.04.20151201.orig.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/notify-osd-0.9.35+16.04.20151118/src/bubble.c new/notify-osd-0.9.35+16.04.20151201/src/bubble.c
--- old/notify-osd-0.9.35+16.04.20151118/src/bubble.c 2015-11-18 17:39:00.000000000 +0100
+++ new/notify-osd-0.9.35+16.04.20151201/src/bubble.c 2015-12-01 09:28:50.000000000 +0100
@@ -2387,7 +2387,7 @@
filename = g_filename_from_uri (name, NULL, &error);
if (filename == NULL)
{
- g_printerr ("%s is not a valid file uri: %s", name, error->message);
+ g_warning ("%s is not a valid file uri: %s", name, error->message);
g_error_free (error);
return;
}
@@ -2396,6 +2396,14 @@
g_free (filename);
}
+ /* According to the spec, only file:// uris are allowed in the
+ * name field. However, many applications send raw paths.
+ * Support those as well, but only if they're absolute.
+ */
+ else if (name[0] == '/')
+ {
+ priv->icon_pixbuf = gdk_pixbuf_new_from_file_at_scale (name, scale * icon_size, scale * icon_size, TRUE, NULL);
+ }
else
{
GError *error = NULL;
@@ -2418,7 +2426,7 @@
if (buffer == NULL)
{
- g_print ("Unable to load icon '%s': %s", name, error->message);
+ g_warning ("Unable to load icon '%s': %s", name, error->message);
g_error_free (error);
return;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/notify-osd-0.9.35+16.04.20151118/tests/Makefile.am new/notify-osd-0.9.35+16.04.20151201/tests/Makefile.am
--- old/notify-osd-0.9.35+16.04.20151118/tests/Makefile.am 2015-11-18 17:38:55.000000000 +0100
+++ new/notify-osd-0.9.35+16.04.20151201/tests/Makefile.am 2015-12-01 09:28:50.000000000 +0100
@@ -61,7 +61,7 @@
$(WNCK_CFLAGS) \
$(DBUS_CFLAGS) \
$(LIBNOTIFY_CFLAGS) \
- -DSRCDIR=\""$(top_srcdir)"\" \
+ -DSRCDIR=\""$(abs_top_srcdir)"\" \
-I$(top_srcdir)/src \
-I$(top_srcdir)/
1
0
Hello community,
here is the log from the commit of package roundcubemail for openSUSE:Factory checked in at 2016-01-01 19:48:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/roundcubemail (Old)
and /work/SRC/openSUSE:Factory/.roundcubemail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "roundcubemail"
Changes:
--------
--- /work/SRC/openSUSE:Factory/roundcubemail/roundcubemail.changes 2015-10-28 17:30:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.roundcubemail.new/roundcubemail.changes 2016-01-01 19:51:18.000000000 +0100
@@ -1,0 +2,32 @@
+Thu Dec 31 10:42:03 UTC 2015 - lars(a)linux-schulserver.de
+
+- Update to 1.1.4
+ Add workaround for https://bugs.php.net/bug.php?id=70757 (#1490582)
+ Fix duplicate messages in list and wrong count after delete (#1490572)
+ Fix so Installer requires PHP5
+ Make brute force attacks harder by re-generating security token on every failed login (#1490549)
+ Slow down brute-force attacks by waiting for a second after failed login (#1490549)
+ Fix .htaccess rewrite rules to not block .well-known URIs (#1490615)
+ Fix mail view scaling on iOS (#1490551)
+ Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542)
+ Fix responses list update issue after response name change (#1490555)
+ Fix bug where message preview was unintentionally reset on check-recent action (#1490563)
+ Fix bug where HTML messages with invalid/excessive css styles couldn't be displayed (#1490539)
+ Fix redundant blank lines when using HTML and top posting (#1490576)
+ Fix redundant blank lines on start of text after html to text conversion (#1490577)
+ Fix HTML sanitizer to skip <!-- node type X --> in output (#1490583)
+ Fix invalid LDAP query in ACL user autocompletion (#1490591)
+ Fix regression in displaying contents of message/rfc822 parts (#1490606)
+ Fix handling of message/rfc822 attachments on replies and forwards (#1490607)
+ Fix PDF support detection in Firefox > 19 (#1490610)
+ Fix path traversal vulnerability (CWE-22) in setting a skin (#1490620)
+ Fix so drag-n-drop of text (e.g. recipient addresses) on compose page actually works (#1490619)
+
+- explicitely add required PHP packages (according to INSTALL):
+ + php-dom, php-json, php-sockets
+- also recommend additional PHP packages:
+ + php-zip, php-pear-Crypt_GPG
+- use generic php- prefix also for recommended packages (no explicit php5-)
+- no Dockerfile readme any more
+
+-------------------------------------------------------------------
Old:
----
roundcubemail-1.1.3.tar.gz
New:
----
roundcubemail-1.1.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ roundcubemail.spec ++++++
--- /var/tmp/diff_new_pack.S462oK/_old 2016-01-01 19:51:19.000000000 +0100
+++ /var/tmp/diff_new_pack.S462oK/_new 2016-01-01 19:51:19.000000000 +0100
@@ -17,7 +17,7 @@
Name: roundcubemail
-Version: 1.1.3
+Version: 1.1.4
Release: 0
Summary: A modern browser-based multilingual IMAP client
License: GPL-3.0+ and GPL-2.0 and BSD-3-Clause
@@ -42,13 +42,16 @@
Requires: http_daemon
Requires: mod_php_any >= 5.3
+Requires: php-dom
Requires: php-exif
Requires: php-gettext
Requires: php-iconv
+Requires: php-json
Requires: php-mbstring
Requires: php-mcrypt
Requires: php-openssl
Requires: php-session
+Requires: php-sockets
Requires: php_any_db
## Requires: for upstream dep package
@@ -63,8 +66,10 @@
Recommends: logrotate
Recommends: php-mysql
-Recommends: php5-intl
-Recommends: php5-fileinfo
+Recommends: php-intl
+Recommends: php-fileinfo
+Recommends: php-zip
+Recommends: php-pear-Crypt_GPG >= 1.2.0
Provides: roundcube_framework = %{version}
Conflicts: roundcube-framework
@@ -100,7 +105,7 @@
# remove shebang from chpass-wrapper
sed -i '1d' plugins/password/helpers/chpass-wrapper.py
# remove INSTALL doc
-%{__rm} INSTALL Dockerfile
+%{__rm} INSTALL
%build
++++++ roundcubemail-1.1.3.tar.gz -> roundcubemail-1.1.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/.htaccess new/roundcubemail-1.1.4/.htaccess
--- old/roundcubemail-1.1.3/.htaccess 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/.htaccess 2015-12-23 10:18:12.000000000 +0100
@@ -31,7 +31,7 @@
# security rules:
# - deny access to files not containing a dot or starting with a dot
# in all locations except installer directory
-RewriteRule ^(?!installer|[a-f0-9]{16})(\.?[^\.]+)$ - [F]
+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 some documentation files
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/CHANGELOG new/roundcubemail-1.1.4/CHANGELOG
--- old/roundcubemail-1.1.3/CHANGELOG 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/CHANGELOG 2015-12-23 10:18:12.000000000 +0100
@@ -1,6 +1,31 @@
CHANGELOG Roundcube Webmail
===========================
+RELEASE 1.1.4
+-------------
+- Add workaround for https://bugs.php.net/bug.php?id=70757 (#1490582)
+- Fix duplicate messages in list and wrong count after delete (#1490572)
+- Fix so Installer requires PHP5
+- Make brute force attacks harder by re-generating security token on every failed login (#1490549)
+- Slow down brute-force attacks by waiting for a second after failed login (#1490549)
+- Fix .htaccess rewrite rules to not block .well-known URIs (#1490615)
+- Fix mail view scaling on iOS (#1490551)
+- Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542)
+- Fix responses list update issue after response name change (#1490555)
+- Fix bug where message preview was unintentionally reset on check-recent action (#1490563)
+- Fix bug where HTML messages with invalid/excessive css styles couldn't be displayed (#1490539)
+- Fix redundant blank lines when using HTML and top posting (#1490576)
+- Fix redundant blank lines on start of text after html to text conversion (#1490577)
+- Fix HTML sanitizer to skip <!-- node type X --> in output (#1490583)
+- Fix invalid LDAP query in ACL user autocompletion (#1490591)
+- Fix regression in displaying contents of message/rfc822 parts (#1490606)
+- Fix handling of message/rfc822 attachments on replies and forwards (#1490607)
+- Fix PDF support detection in Firefox > 19 (#1490610)
+- Fix path traversal vulnerability (CWE-22) in setting a skin (#1490620)
+- Fix so drag-n-drop of text (e.g. recipient addresses) on compose page actually works (#1490619)
+
+RELEASE 1.1.3
+-------------
- Fix closing of nested menus (#1490443)
- Fix so E_DEPRECATED errors from PEAR libs are ignored by error_reporting change (#1490281)
- Fix compatibility with PHP 5.3 in rcube_ldap class (#1490424)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/Dockerfile new/roundcubemail-1.1.4/Dockerfile
--- old/roundcubemail-1.1.3/Dockerfile 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/Dockerfile 1970-01-01 01:00:00.000000000 +0100
@@ -1,34 +0,0 @@
-FROM debian:latest
-MAINTAINER Alex Brandt <alunduil(a)alunduil.com>
-
-EXPOSE 80 443
-
-RUN apt-get -qq update
-RUN apt-get install -qq apache2-mpm-event
-
-RUN sed -e 's|/var/www|&/public_html|' -e 's/\(Log \+\)[^ ]\+/\1"|cat"/' -i /etc/apache2/sites-available/default
-RUN a2ensite default
-
-RUN sed -e 's|/var/www|&/public_html|' -e 's/\(Log \+\)[^ ]\+/\1"|cat"/' -i /etc/apache2/sites-available/default-ssl
-RUN sed -e '/SSLCertificateKeyFile/s|ssl-cert-snakeoil.key|ssl-cert.key|' -e '/SSLCertificateFile/s|ssl-cert-snakeoil.pem|ssl-cert.pem|' -i /etc/apache2/sites-available/default-ssl
-RUN ln -snf ssl-cert-snakeoil.pem /etc/ssl/certs/ssl-cert.pem
-RUN ln -snf ssl-cert-snakeoil.key /etc/ssl/private/ssl-cert.key
-RUN a2ensite default-ssl
-
-RUN a2enmod expires
-RUN a2enmod headers
-RUN a2enmod ssl
-
-RUN apt-get install -qq php5 php-pear php5-mysql php5-pgsql php5-sqlite
-RUN pear install mail_mime mail_mimedecode net_smtp net_idna2-beta auth_sasl net_sieve crypt_gpg
-
-RUN rm -rf /var/www
-ADD . /var/www
-
-RUN echo -e '<?php\n$config = array();\n' > /var/www/config/config.inc.php
-RUN rm -rf /var/www/installer
-
-RUN . /etc/apache2/envvars && chown -R ${APACHE_RUN_USER}:${APACHE_RUN_GROUP} /var/www/temp /var/www/logs
-
-ENTRYPOINT [ "/usr/sbin/apache2ctl", "-D", "FOREGROUND" ]
-CMD [ "-k", "start" ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/INSTALL new/roundcubemail-1.1.4/INSTALL
--- old/roundcubemail-1.1.3/INSTALL 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/INSTALL 2015-12-23 10:18:12.000000000 +0100
@@ -11,7 +11,7 @@
* The Apache, Lighttpd, Cherokee or Hiawatha web server
* .htaccess support allowing overrides for DirectoryIndex
-* PHP Version 5.3.7 or greater including
+* PHP Version 5.3.7 or greater (but not PHP 7) including
- PCRE, DOM, JSON, Session, Sockets (required)
- PHP Data Objects (PDO) with driver for either MySQL, PostgreSQL or SQLite (required)
- Libiconv, Zip (recommended)
@@ -168,6 +168,12 @@
mod_rewrite for Apache webserver and double check access to the above listed
directories and their contents is denied.
+NOTE: In Apache 2.4, support for .htaccess files has been disabled by
+default. Therefore you first need to enable this in your Apache main or
+virtual host config by with:
+
+ AllowOverride all
+
UPGRADING
=========
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/bin/installto.sh new/roundcubemail-1.1.4/bin/installto.sh
--- old/roundcubemail-1.1.3/bin/installto.sh 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/bin/installto.sh 2015-12-23 10:18:12.000000000 +0100
@@ -60,6 +60,8 @@
break;
}
}
+ // remove old (<1.0) .htaccess file
+ @unlink("$target_dir/program/.htaccess");
echo "done.\n\n";
if (is_dir("$target_dir/skins/default")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/composer.json-dist new/roundcubemail-1.1.4/composer.json-dist
--- old/roundcubemail-1.1.3/composer.json-dist 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/composer.json-dist 2015-12-23 10:18:12.000000000 +0100
@@ -23,7 +23,7 @@
"pear-pear.php.net/net_idna2": "~0.1.1",
"pear-pear.php.net/net_sieve": "~1.3.4",
"pear-pear.php.net/mail_mime": "~1.9.0",
- "pear-pear.php.net/net_smtp": "~1.6.3",
+ "pear-pear.php.net/net_smtp": "~1.7.1",
"patchwork/utf8": "~1.2.3"
},
"require-dev": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/config/.htaccess new/roundcubemail-1.1.4/config/.htaccess
--- old/roundcubemail-1.1.3/config/.htaccess 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/config/.htaccess 2015-12-23 10:18:12.000000000 +0100
@@ -1,2 +1,7 @@
# deny webserver access to this directory
-Deny from all
+<ifModule mod_authz_core.c>
+ Require all denied
+</ifModule>
+<ifModule !mod_authz_core.c>
+ Deny from all
+</ifModule>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/index.php new/roundcubemail-1.1.4/index.php
--- old/roundcubemail-1.1.3/index.php 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/index.php 2015-12-23 10:18:12.000000000 +0100
@@ -2,7 +2,7 @@
/*
+-------------------------------------------------------------------------+
| Roundcube Webmail IMAP Client |
- | Version 1.1.3 |
+ | Version 1.1.4 |
| |
| Copyright (C) 2005-2015, The Roundcube Dev Team |
| |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/installer/check.php new/roundcubemail-1.1.4/installer/check.php
--- old/roundcubemail-1.1.3/installer/check.php 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/installer/check.php 2015-12-23 10:18:12.000000000 +0100
@@ -93,8 +93,14 @@
define('MIN_PHP_VERSION', '5.3.7');
if (version_compare(PHP_VERSION, MIN_PHP_VERSION, '>=')) {
- $RCI->pass('Version', 'PHP ' . PHP_VERSION . ' detected');
-} else {
+ if (PHP_MAJOR_VERSION != 5) {
+ $RCI->fail('Version', 'PHP5 is required, ' . PHP_VERSION . ' detected');
+ }
+ else {
+ $RCI->pass('Version', 'PHP ' . PHP_VERSION . ' detected');
+ }
+}
+else {
$RCI->fail('Version', 'PHP Version ' . MIN_PHP_VERSION . ' or greater is required ' . PHP_VERSION . ' detected');
}
?>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/installer/index.php new/roundcubemail-1.1.4/installer/index.php
--- old/roundcubemail-1.1.3/installer/index.php 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/installer/index.php 2015-12-23 10:18:12.000000000 +0100
@@ -3,7 +3,7 @@
/*
+-------------------------------------------------------------------------+
| Roundcube Webmail setup tool |
- | Version 1.1.3 |
+ | Version 1.1.4 |
| |
| Copyright (C) 2009-2015, The Roundcube Dev Team |
| |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/logs/.gitignore new/roundcubemail-1.1.4/logs/.gitignore
--- old/roundcubemail-1.1.3/logs/.gitignore 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/logs/.gitignore 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-*
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/logs/.htaccess new/roundcubemail-1.1.4/logs/.htaccess
--- old/roundcubemail-1.1.3/logs/.htaccess 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/logs/.htaccess 2015-12-23 10:18:12.000000000 +0100
@@ -1,2 +1,7 @@
# deny webserver access to this directory
-Deny from all
+<ifModule mod_authz_core.c>
+ Require all denied
+</ifModule>
+<ifModule !mod_authz_core.c>
+ Deny from all
+</ifModule>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/plugins/acl/acl.php new/roundcubemail-1.1.4/plugins/acl/acl.php
--- old/roundcubemail-1.1.3/plugins/acl/acl.php 2015-09-13 21:10:02.000000000 +0200
+++ new/roundcubemail-1.1.4/plugins/acl/acl.php 2015-12-23 10:18:12.000000000 +0100
@@ -739,7 +739,11 @@
$config['fieldmap']['uid'] = $uid_field;
// search in UID and name fields
- $config['search_fields'] = array_values($config['fieldmap']);
+ // $name_field can be in a form of <field>:<modifier> (#1490591)
+ $name_field = preg_replace('/:.*$/', '', $name_field);
+ $search = array_unique(array($name_field, $uid_field));
+
+ $config['search_fields'] = $search;
$config['required_fields'] = array($uid_field);
// set search filter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/plugins/database_attachments/database_attachments.php new/roundcubemail-1.1.4/plugins/database_attachments/database_attachments.php
--- old/roundcubemail-1.1.3/plugins/database_attachments/database_attachments.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/plugins/database_attachments/database_attachments.php 2015-12-23 10:18:12.000000000 +0100
@@ -22,7 +22,7 @@
protected $cache;
// A prefix for the cache key used in the session and in the key field of the cache table
- protected $prefix = "db_attach";
+ const PREFIX = "ATTACH";
/**
* Save a newly uploaded attachment
@@ -153,9 +153,16 @@
$ttl = 12 * 60 * 60; // default: 12 hours
$ttl = $rcmail->config->get('database_attachments_cache_ttl', $ttl);
$type = $rcmail->config->get('database_attachments_cache', 'db');
+ $prefix = self::PREFIX;
+
+ // Add session identifier to the prefix to prevent from removing attachments
+ // in other sessions of the same user (#1490542)
+ if ($id = session_id()) {
+ $prefix .= $id;
+ }
// Init SQL cache (disable cache data serialization)
- $this->cache = $rcmail->get_cache($this->prefix, $type, $ttl, false);
+ $this->cache = $rcmail->get_cache($prefix, $type, $ttl, false);
}
return $this->cache;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/plugins/redundant_attachments/redundant_attachments.php new/roundcubemail-1.1.4/plugins/redundant_attachments/redundant_attachments.php
--- old/roundcubemail-1.1.3/plugins/redundant_attachments/redundant_attachments.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/plugins/redundant_attachments/redundant_attachments.php 2015-12-23 10:18:12.000000000 +0100
@@ -36,7 +36,7 @@
class redundant_attachments extends filesystem_attachments
{
// A prefix for the cache key used in the session and in the key field of the cache table
- private $prefix = "ATTACH";
+ const PREFIX = "ATTACH";
// rcube_cache instance for SQL DB
private $cache;
@@ -46,13 +46,6 @@
private $loaded;
- /**
- * Default constructor
- */
- function init()
- {
- parent::init();
- }
/**
* Loads plugin configuration and initializes cache object(s)
@@ -68,15 +61,20 @@
// load configuration
$this->load_config();
- $ttl = 12 * 60 * 60; // 12 hours
- $ttl = $rcmail->config->get('redundant_attachments_cache_ttl', $ttl);
+ $ttl = 12 * 60 * 60; // 12 hours
+ $ttl = $rcmail->config->get('redundant_attachments_cache_ttl', $ttl);
+ $prefix = self::PREFIX;
+
+ if ($id = session_id()) {
+ $prefix .= $id;
+ }
// Init SQL cache (disable cache data serialization)
- $this->cache = $rcmail->get_cache($this->prefix, 'db', $ttl, false);
+ $this->cache = $rcmail->get_cache($prefix, 'db', $ttl, false);
// Init memcache (fallback) cache
if ($rcmail->config->get('redundant_attachments_memcache')) {
- $this->mem_cache = $rcmail->get_cache($this->prefix, 'memcache', $ttl, false);
+ $this->mem_cache = $rcmail->get_cache($prefix, 'memcache', $ttl, false);
}
$this->loaded = true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/include/iniset.php new/roundcubemail-1.1.4/program/include/iniset.php
--- old/roundcubemail-1.1.3/program/include/iniset.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/include/iniset.php 2015-12-23 10:18:12.000000000 +0100
@@ -21,7 +21,7 @@
*/
// application constants
-define('RCMAIL_VERSION', '1.1.3');
+define('RCMAIL_VERSION', '1.1.4');
define('RCMAIL_START', microtime(true));
if (!defined('INSTALL_PATH')) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/include/rcmail.php new/roundcubemail-1.1.4/program/include/rcmail.php
--- old/roundcubemail-1.1.3/program/include/rcmail.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/include/rcmail.php 2015-12-23 10:18:12.000000000 +0100
@@ -592,6 +592,8 @@
// try to log in
if (!$storage->connect($host, $username, $pass, $port, $ssl)) {
+ // Wait a second to slow down brute-force attacks (#1490549)
+ sleep(1);
return false;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/include/rcmail_output_html.php new/roundcubemail-1.1.4/program/include/rcmail_output_html.php
--- old/roundcubemail-1.1.3/program/include/rcmail_output_html.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/include/rcmail_output_html.php 2015-12-23 10:18:12.000000000 +0100
@@ -225,6 +225,17 @@
*/
public function set_skin($skin)
{
+ // Sanity check to prevent from path traversal vulnerability (#1490620)
+ if (strpos($skin, '/') !== false || strpos($skin, "\\") !== false) {
+ rcube::raise_error(array(
+ 'file' => __FILE__,
+ 'line' => __LINE__,
+ 'message' => 'Invalid skin name'
+ ), true, false);
+
+ return false;
+ }
+
$valid = false;
$path = RCUBE_INSTALL_PATH . 'skins/';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/js/app.js new/roundcubemail-1.1.4/program/js/app.js
--- old/roundcubemail-1.1.3/program/js/app.js 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/js/app.js 2015-12-23 10:18:12.000000000 +0100
@@ -2488,22 +2488,23 @@
// removes messages that doesn't exists from list selection array
this.update_selection = function()
{
- var selected = this.message_list.selection,
- rows = this.message_list.rows,
+ var list = this.message_list,
+ selected = list.selection,
+ rows = list.rows,
i, selection = [];
for (i in selected)
if (rows[selected[i]])
selection.push(selected[i]);
- this.message_list.selection = selection;
+ list.selection = selection;
// reset preview frame, if currently previewed message is not selected (has been removed)
try {
var win = this.get_frame_window(this.env.contentframe),
id = win.rcmail.env.uid;
- if (id && $.inArray(id, selection) < 0)
+ if (id && !list.in_selection(id))
this.show_contentframe(false);
}
catch (e) {};
@@ -7795,7 +7796,7 @@
// html5 file-drop API
this.document_drag_hover = function(e, over)
{
- e.preventDefault();
+ // don't e.preventDefault() here to not block text dragging on the page (#1490619)
$(this.gui_objects.filedrop)[(over?'addClass':'removeClass')]('active');
};
@@ -8154,14 +8155,10 @@
if (!this.env.browser_capabilities)
this.env.browser_capabilities = {};
- if (this.env.browser_capabilities.pdf === undefined)
- this.env.browser_capabilities.pdf = this.pdf_support_check();
-
- if (this.env.browser_capabilities.flash === undefined)
- this.env.browser_capabilities.flash = this.flash_support_check();
-
- if (this.env.browser_capabilities.tif === undefined)
- this.tif_support_check();
+ $.each(['pdf', 'flash', 'tif'], function() {
+ if (ref.env.browser_capabilities[this] === undefined)
+ ref.env.browser_capabilities[this] = ref[this + '_support_check']();
+ });
};
// Returns browser capabilities string
@@ -8180,11 +8177,14 @@
this.tif_support_check = function()
{
- var img = new Image();
+ window.setTimeout(function() {
+ var img = new Image();
+ img.onload = function() { ref.env.browser_capabilities.tif = 1; };
+ img.onerror = function() { ref.env.browser_capabilities.tif = 0; };
+ img.src = ref.assets_path('program/resources/blank.tif');
+ }, 10);
- img.onload = function() { ref.env.browser_capabilities.tif = 1; };
- img.onerror = function() { ref.env.browser_capabilities.tif = 0; };
- img.src = this.assets_path('program/resources/blank.tif');
+ return 0;
};
this.pdf_support_check = function()
@@ -8220,6 +8220,14 @@
return 1;
}
+ window.setTimeout(function() {
+ $('<object>').css({position: 'absolute', left: '-10000px'})
+ .attr({data: ref.assets_path('program/resources/dummy.pdf'), width: 1, height: 1, type: 'application/pdf'})
+ .load(function() { ref.env.browser_capabilities.pdf = 1; })
+ .error(function() { ref.env.browser_capabilities.pdf = 0; })
+ .appendTo($('body'));
+ }, 10);
+
return 0;
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/js/app.min.js new/roundcubemail-1.1.4/program/js/app.min.js
--- old/roundcubemail-1.1.3/program/js/app.min.js 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/js/app.min.js 2015-12-23 10:18:12.000000000 +0100
@@ -122,188 +122,188 @@
a))};this.checkmail=function(){var a=this.set_busy(!0,"checkingmail"),b=this.check_recent_params();this.http_post("check-recent",b,a)};this.filter_mailbox=function(a){if(!this.filter_disabled){var b=this.set_busy(!0,"searching");this.clear_message_list();this.env.current_page=1;this.env.search_filter=a;this.http_request("search",this.search_params(!1,a),b)}};this.refresh_list=function(){this.list_mailbox(this.env.mailbox,this.env.current_page||1,null,{_clear:1},!0);this.message_list&&this.message_list.clear_selection()};
this.list_mailbox=function(a,b,d,e,f){var h=window;"object"!=typeof e&&(e={});a||(a=this.env.mailbox?this.env.mailbox:"INBOX");d&&(e._sort=d);this.env.mailbox!=a?(b=1,this.env.current_page=b,this.env.search_scope="base",this.select_all_mode=!1,this.reset_search_filter()):this.env.search_request&&(e._search=this.env.search_request);if(!f){this.clear_message_list();if(a!=this.env.mailbox||a==this.env.mailbox&&!b&&!d)e._refresh=1;this.select_folder(a,"",!0);this.unmark_folder(a,"recent","",!0);this.env.mailbox=
a}if(this.gui_objects.messagelist)this.list_mailbox_remote(a,b,e);else{if(d=this.get_frame_window(this.env.contentframe))h=d,e._framed=1;this.env.uid&&(e._uid=this.env.uid);a&&(this.set_busy(!0,"loading"),e._mbox=a,b&&(e._page=b),this.location_href(e,h))}};this.clear_message_list=function(){this.env.messages={};this.show_contentframe(!1);this.message_list&&this.message_list.clear(!0)};this.list_mailbox_remote=function(a,b,d){var e=this.set_busy(!0,"loading");"object"!=typeof d&&(d={});d._mbox=a;b&&
-(d._page=b);this.http_request("list",d,e);this.update_state({_mbox:a,_page:b&&1<b?b:null})};this.update_selection=function(){var a=this.message_list.selection,b=this.message_list.rows,d,e=[];for(d in a)b[a[d]]&&e.push(a[d]);this.message_list.selection=e;try{var f=this.get_frame_window(this.env.contentframe).rcmail.env.uid;f&&0>$.inArray(f,e)&&this.show_contentframe(!1)}catch(h){}};this.expand_unread=function(){for(var a,b=this.message_list.tbody.firstChild;b;)1==b.nodeType&&(a=this.message_list.rows[b.uid])&&
-a.unread_children&&(this.message_list.expand_all(a),this.set_unread_children(a.uid)),b=b.nextSibling;return!1};this.expand_message_row=function(a,b){var d=this.message_list.rows[b];d.expanded=!d.expanded;this.set_unread_children(b);d.expanded=!d.expanded;this.message_list.expand_row(a,b)};this.expand_threads=function(){if(this.env.threading&&this.env.autoexpand_threads&&this.message_list)switch(this.env.autoexpand_threads){case 2:this.expand_unread();break;case 1:this.message_list.expand_all()}};
-this.init_threads=function(a,b){if(b&&b!=this.env.mailbox)return!1;for(var d=0,e=a.length;d<e;d++)this.add_tree_icons(a[d]);this.expand_threads()};this.add_tree_icons=function(a){var b,d,e,f,h=[],g=[],k,n=this.message_list.rows;for(k=a?n[a]?n[a].obj:null:this.message_list.tbody.firstChild;k;){if(1==k.nodeType&&(d=n[k.uid]))if(d.depth){for(b=h.length-1;0<=b&&!(e=h[b].length,e>d.depth?(f=e-d.depth,h[b][f]&2||(h[b][f]=h[b][f]?h[b][f]+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;g.push(d.uid)}else{if(h.length){for(b in h)this.set_tree_icons(g[b],h[b]);h=[];g=[]}if(a&&k!=n[a].obj)break}k=k.nextSibling}if(h.length)for(b in h)this.set_tree_icons(g[b],h[b])};this.set_tree_icons=function(a,b){var d,e=[],f="",h=b.length;for(d=0;d<h;d++)2<b[d]?e.push({"class":"l3",width:15}):1<b[d]?e.push({"class":"l2",width:15}):0<b[d]?e.push({"class":"l1",width:15}):e.length&&!e[e.length-1]["class"]?e[e.length-1].width+=15:e.push({"class":null,width:15});for(d=e.length-1;0<=
-d;d--)f=e[d]["class"]?f+('<div class="tree '+e[d]["class"]+'" />'):f+('<div style="width:'+e[d].width+'px" />');f&&$("#rcmtab"+this.html_identifier(a,!0)).html(f)};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,f=e[a],h=e[a].depth,m=[];f.depth?f.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=f.parent_uid;for(f=f.obj.nextSibling;f;){if(1==f.nodeType&&(b=e[f.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&&m.length&&m[m.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").bind("mousedown",{uid:b.uid},function(a){return g.expand_message_row(a,a.data.uid)}),b.unread_children=0,m.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}f=f.nextSibling}for(b=0;b<m.length;b++)this.set_unread_children(m[b].uid);return d};this.delete_excessive_thread_rows=function(){for(var a=this.message_list.rows,b=this.message_list.tbody.firstChild,d=
-this.env.pagesize+1;b;)1==b.nodeType&&(r=a[b.uid])&&(!r.depth&&d&&d--,d||this.message_list.remove_row(b.uid)),b=b.nextSibling};this.set_message_icon=function(a){var b="",d=this.message_list.rows[a];if(!d)return!1;d.icon&&(a="msgicon",d.deleted?(a+=" deleted",b+=this.get_label("deleted")+" "):d.unread?(a+=" unread",b+=this.get_label("unread")+" "):d.unread_children&&(a+=" unreadchildren"),d.msgicon==d.icon&&(d.replied&&(a+=" replied",b+=this.get_label("replied")+" "),d.forwarded&&(a+=" forwarded",
-b+=this.get_label("forwarded")+" "),a+=" status"),$(d.icon).attr("class",a).attr("title",b));d.msgicon&&d.msgicon!=d.icon&&(b="",a="msgicon",!d.unread&&d.unread_children&&(a+=" unreadchildren"),d.replied&&(a+=" replied",b+=this.get_label("replied")+" "),d.forwarded&&(a+=" forwarded",b+=this.get_label("forwarded")+" "),$(d.msgicon).attr("class",a).attr("title",b));d.flagicon&&(a=d.flagged?"flagged":"unflagged",b=this.get_label(a),$(d.flagicon).attr("class",a).attr("aria-label",b).attr("title",b))};
-this.set_message_status=function(a,b,d){var e=this.message_list.rows[a];if(!e)return!1;"unread"==b&&e.unread!=d&&this.update_thread_root(a,d?"unread":"read");-1<$.inArray(b,["unread","deleted","replied","forwarded","flagged"])&&(e[b]=d)};this.set_message=function(a,b,d){var e=this.message_list&&this.message_list.rows[a];if(!e)return!1;b&&this.set_message_status(a,b,d);if(-1<$.inArray(b,["unread","deleted","flagged"]))$(e.obj)[e[b]?"addClass":"removeClass"](b);this.set_unread_children(a);this.set_message_icon(a)};
-this.set_unread_children=function(a){a=this.message_list.rows[a];a.parent_uid||(a.unread||!a.unread_children||a.expanded?$(a.obj).removeClass("unroot"):$(a.obj).addClass("unroot"))};this.copy_messages=function(a,b){if(a&&"object"===typeof a)a=a.id;else if(!a)return this.folder_selector(b,function(a){g.command("copy",a)});if(a&&a!=this.env.mailbox){var d=this.selection_post_data({_target_mbox:a});d._uid&&this.http_post("copy",d,this.display_message(this.get_label("copyingmessage"),"loading"))}};this.move_messages=
-function(a,b){if(a&&"object"===typeof a)a=a.id;else if(!a)return this.folder_selector(b,function(a){g.command("move",a)});if(a&&(a!=this.env.mailbox||this.is_multifolder_listing())){var d=!1,e=this.selection_post_data({_target_mbox:a});e._uid&&("show"==this.env.action?d=this.set_busy(!0,"movingmessage"):this.show_contentframe(!1),this.enable_command(this.env.message_commands,!1),this._with_selected_messages("move",e,d))}};this.delete_messages=function(a){var b=this.message_list,d=this.env.trash_mailbox;
-if(this.env.flag_for_deletion)return this.mark_message("delete"),!1;d&&this.env.mailbox!=d?this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox?this.permanently_remove_messages():b&&b.modkey==SHIFT_KEY||a&&rcube_event.get_modifier(a)==SHIFT_KEY?confirm(this.get_label("deletemessagesconfirm"))&&this.permanently_remove_messages():this.move_messages(d):this.permanently_remove_messages();return!0};this.permanently_remove_messages=function(){var a=this.selection_post_data();
-a._uid&&(this.show_contentframe(!1),this._with_selected_messages("delete",a))};this._with_selected_messages=function(a,b,d){var e=0,f="delete"==a||!this.is_multifolder_listing();if(this.message_list){var h,g,k,n=[],l=this.message_list.get_selection();h=0;for(len=l.length;h<len;h++)g=l[h],this.env.threading&&(e+=this.update_thread(g),k=this.message_list.find_root(g),k!=g&&0>$.inArray(k,n)&&n.push(k)),f&&this.message_list.remove_row(g,this.env.display_next&&h==l.length-1);!this.env.display_next&&f&&
-this.message_list.clear_selection();h=0;for(len=n.length;h<len;h++)this.add_tree_icons(n[h])}0>e?b._count=-1*e:0<e&&f&&this.delete_excessive_thread_rows();f||(b._refresh=1);d||(d=this.display_message(this.get_label("move"==a?"movingmessage":"deletingmessage"),"loading"));this.http_post(a,b,d)};this.selection_post_data=function(a){"object"!=typeof a&&(a={});a._mbox=this.env.mailbox;if(!a._uid){var b=this.env.uid?[this.env.uid]:this.message_list.get_selection();a._uid=this.uids_to_list(b)}this.env.action&&
-(a._from=this.env.action);this.env.search_request&&(a._search=this.env.search_request);this.env.display_next&&this.env.next_uid&&(a._next_uid=this.env.next_uid);return a};this.mark_message=function(a,b){var d=[],e=[],f,h,g,k=this.message_list;b?d[0]=b:this.env.uid?d[0]=this.env.uid:k&&(d=k.get_selection());if(k)for(k.focus(),h=0,f=d.length;h<f;h++)g=d[h],("read"==a&&k.rows[g].unread||"unread"==a&&!k.rows[g].unread||"delete"==a&&!k.rows[g].deleted||"undelete"==a&&k.rows[g].deleted||"flagged"==a&&!k.rows[g].flagged||
-"unflagged"==a&&k.rows[g].flagged)&&e.push(g);else e=d;if(e.length||this.select_all_mode)switch(a){case "read":case "unread":this.toggle_read_status(a,e);break;case "delete":case "undelete":this.toggle_delete_status(e);break;case "flagged":case "unflagged":this.toggle_flagged_status(a,d)}};this.toggle_read_status=function(a,b){var d,e=b.length,f=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],
-"unread","unread"==a?!0:!1);this.http_post("mark",f,h)};this.toggle_flagged_status=function(a,b){var d,e=b.length,f=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],"flagged","flagged"==a?!0:!1);this.http_post("mark",f,h)};this.toggle_delete_status=function(a){var b=a.length,d,e,f=!0,h=this.message_list?this.message_list.rows:{};if(1==b)return!this.message_list||h[a[0]]&&!h[a[0]].deleted?
-this.flag_as_deleted(a):this.flag_as_undeleted(a),!0;for(d=0;d<b;d++)if(e=a[d],h[e]&&!h[e].deleted){f=!1;break}f?this.flag_as_undeleted(a):this.flag_as_deleted(a);return!0};this.flag_as_undeleted=function(a){var b,d=a.length,e=this.selection_post_data({_uid:this.uids_to_list(a),_flag:"undelete"}),f=this.display_message(this.get_label("markingmessage"),"loading");for(b=0;b<d;b++)this.set_message(a[b],"deleted",!1);this.http_post("mark",e,f)};this.flag_as_deleted=function(a){for(var b=[],d=this.selection_post_data({_uid:this.uids_to_list(a),
-_flag:"delete"}),e=this.display_message(this.get_label("markingmessage"),"loading"),f=this.message_list?this.message_list.rows:{},h=0,g=0,k=a.length;g<k;g++)uid=a[g],f[uid]&&(f[uid].unread&&(b[b.length]=uid),this.env.skip_deleted?(h+=this.update_thread(uid),this.message_list.remove_row(uid,this.env.display_next&&g==this.message_list.selection.length-1)):this.set_message(uid,"deleted",!0));this.env.skip_deleted&&this.message_list&&(this.env.display_next||this.message_list.clear_selection(),0>h?d._count=
--1*h:0<h&&this.delete_excessive_thread_rows());b.length&&(d._ruid=this.uids_to_list(b));this.env.skip_deleted&&this.env.display_next&&this.env.next_uid&&(d._next_uid=this.env.next_uid);this.http_post("mark",d,e)};this.flag_deleted_as_read=function(a){var b,d,e,f=this.message_list?this.message_list.rows:{};"string"==typeof a&&(a=a.split(","));d=0;for(e=a.length;d<e;d++)b=a[d],f[b]&&this.set_message(b,"unread",!1)};this.uids_to_list=function(a){return this.select_all_mode?"*":1>=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.expunge_mailbox=function(a){var b,d={_mbox:a};a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d._reload=1,this.env.search_request&&(d._search=this.env.search_request));this.http_post("expunge",d,b)};
-this.purge_mailbox=function(a){var b,d={_mbox:a};if(!confirm(this.get_label("purgefolderconfirm")))return!1;a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d._reload=1);this.http_post("purge",d,b)};this.purge_mailbox_test=function(){return this.env.exists&&(this.env.mailbox==this.env.trash_mailbox||this.env.mailbox==this.env.junk_mailbox||this.env.mailbox.startsWith(this.env.trash_mailbox+this.env.delimiter)||this.env.mailbox.startsWith(this.env.junk_mailbox+this.env.delimiter))};this.login_user_keyup=
-function(a){var b=rcube_event.get_keycode(a),d=$("#rcmloginpwd");return 13==b&&d.length&&!d.val()?(d.focus(),rcube_event.cancel(a)):!0};this.open_compose_step=function(a){a=this.url("mail/compose",a);this.env.compose_extwin&&!this.env.extwin?this.open_window(a):(this.redirect(a),this.env.extwin&&window.resizeTo(Math.max(this.env.popup_width,$(window).width()),$(window).height()+24))};this.init_messageform=function(){if(!this.gui_objects.messageform)return!1;var a,b,d=$("[name='_from']"),e=$("[name='_to']"),
-f=$("input[name='_subject']"),h=$("[name='_message']").get(0),g="1"==$("input[name='_is_html']").val(),k=["cc","bcc","replyto","followupto"],n,l=this.opener();l&&"compose"==l.env.action&&(setTimeout(function(){1<opener.history.length?opener.history.back():l.redirect(l.get_task_url("mail"))},100),this.env.opened_extwin=!0);0<this.env.autocomplete_threads&&(n={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources});this.init_address_input_events(e,n);for(a in k)this.init_address_input_events($("[name='_"+
-k[a]+"']"),n);g||(a=this.env.top_posting?0:h.value.length,"select-one"==d.prop("type")&&this.change_identity(d[0]),this.set_caret_pos(h,a),a&&$(h).scrollTop(h.scrollHeight));this.env.save_localstorage&&this.compose_restore_dialog(0,g);""==e.val()?b=e:""==f.val()?b=f:h&&(b=h);$(b).filter(":visible").focus();this.env.compose_focus_elem=document.activeElement;this.compose_field_hash(!0);this.auto_save_start()};this.compose_restore_dialog=function(a,b){var d,e,f,h=this.local_storage_get_item("compose.index",
-[]),m=function(a){++a<h.length&&g.compose_restore_dialog(a,b)};for(d=a||0;d<h.length;d++)if(e=h[d],f=this.local_storage_get_item("compose."+e,null,!0)){if(f.changed&&e==this.env.compose_id){this.restore_compose_form(e,b);break}if(!(this.env.draft_id&&f.draft_id&&f.draft_id!=this.env.draft_id||this.env.reply_msgid&&f.reply_msgid!=this.env.reply_msgid)&&f.changed&&f.session!=this.env.session_id){this.show_popup_dialog(this.get_label("restoresavedcomposedata").replace("$date",(new Date(f.changed)).toLocaleString()).replace("$subject",
-f._subject).replace(/\n/g,"<br/>"),this.get_label("restoremessage"),[{text:this.get_label("restore"),"class":"mainaction",click:function(){g.restore_compose_form(e,b);g.remove_compose_data(e);g.save_compose_form_local();$(this).dialog("close")}},{text:this.get_label("delete"),"class":"delete",click:function(){g.remove_compose_data(e);$(this).dialog("close");m(d)}},{text:this.get_label("ignore"),click:function(){$(this).dialog("close");m(d)}}]);break}}};this.init_address_input_events=function(a,b){this.env.recipients_delimiter=
-this.env.recipients_separator+" ";a.keydown(function(a){return g.ksearch_keydown(a,this,b)}).attr({autocomplete:"off","aria-autocomplete":"list","aria-expanded":"false",role:"combobox"})};this.submit_messageform=function(a,b){var d=this.gui_objects.messageform;if(d){if(!b&&this.env.is_sent)return this.show_popup_dialog(this.get_label("messageissent"),"",[{text:this.get_label("save"),"class":"mainaction",click:function(){g.submit_messageform(!1,!0);$(this).dialog("close")}},{text:this.get_label("cancel"),
-click:function(){$(this).dialog("close")}}]);var e=this.set_busy(!0,a||b?"savingmessage":"sendingmessage"),f=this.spellcheck_lang(),h=[];$("li",this.gui_objects.attachmentlist).each(function(){h.push(this.id.replace(/^rcmfile/,""))});$('input[name="_attachments"]',d).val(h.join());d.target="savetarget";d._draft.value=a?"1":"";d.action=this.add_url(d.action,"_unlock",e);d.action=this.add_url(d.action,"_lang",f);d.action=this.add_url(d.action,"_framed",1);b&&(d.action=this.add_url(d.action,"_saveonly",
-1));this.submit_timer=setTimeout(function(){g.set_busy(!1,null,e);g.display_message(g.get_label("requesttimedout"),"error")},1E3*this.env.request_timeout);d.submit()}};this.compose_recipient_select=function(a){var b,d,e=0;for(d=0;d<a.selection.length;d++)b=a.selection[d],this.env.contactdata[b]&&e++;this.enable_command("add-recipient",e)};this.compose_add_recipient=function(a){a||(a=$(this.env.focused_field).filter(":visible"),a=a.length?a.attr("id").replace("_",""):"to");var b=[],d=$("#_"+a),e=this.env.recipients_delimiter;
-if(this.contact_list&&this.contact_list.selection.length)for(var f,h=0;h<this.contact_list.selection.length;h++)if((f=this.contact_list.selection[h])&&this.env.contactdata[f]&&(b.push(this.env.contactdata[f]),"E"==f.charAt(0)&&0>this.env.contactdata[f].indexOf("@")&&d.length)){var g=f.substr(1);this.group2expand[g]={name:this.env.contactdata[f],input:d.get(0)};this.http_request("group-expand",{_source:this.env.source,_gid:g},!1)}b.length&&d.length&&(f=d.val(),h=RegExp(RegExp.escape(e)+"\\s*$"),f&&
-!h.test(f)&&(f+=e+" "),d.val(f+b.join(e+" ")+e+" ").change(),this.triggerEvent("add-recipient",{field:a,recipients:b}));return b.length};this.check_compose_input=function(a){var b=$("[name='_to']"),d=$("[name='_cc']"),e=$("[name='_bcc']"),f=$("[name='_from']"),h=$("[name='_subject']");if("text"==f.prop("type")&&!rcube_check_email(f.val(),!0))return alert(this.get_label("nosenderwarning")),f.focus(),!1;d=b.val()?b.val():d.val()?d.val():e.val();if(!rcube_check_email(d.replace(/^\s+/,"").replace(/[\s,;]+$/,
-""),!0))return alert(this.get_label("norecipientwarning")),b.focus(),!1;for(var m in this.env.attachments)if("object"===typeof this.env.attachments[m]&&!this.env.attachments[m].complete)return alert(this.get_label("notuploadedwarning")),!1;if(""==h.val()){var b={},k=$('<div class="prompt">').html('<div class="message">'+this.get_label("nosubjectwarning")+"</div>").appendTo(document.body),n=$("<input>").attr({type:"text",size:30}).val(this.get_label("nosubject")).appendTo(k),l=function(){h.val(n.val());
-k.dialog("close");g.command(a,{nocheck:!0})};b[this.get_label("sendmessage")]=function(){l($(this))};b[this.get_label("cancel")]=function(){h.focus();$(this).dialog("close")};k.dialog({modal:!0,resizable:!1,buttons:b,close:function(a,b){$(this).remove()}});n.select().keydown(function(a){13==a.which&&l()});return!1}if(!this.editor.get_content()&&!confirm(this.get_label("nobodywarning")))return this.editor.focus(),!1;this.editor.save();return!0};this.toggle_editor=function(a,b,d){b=this.editor.toggle(a.html,
-a.noconvert||!1);a.mode=a.html?"html":"plain";!b&&d&&(a.mode=a.html?"plain":"html",$(d.target).filter("select").val(a.mode));b&&$("input[name='_is_html']").val(a.html?1:0);return b};this.insert_response=function(a){a=this.env.textresponses[a]?this.env.textresponses[a].text:null;if(!a)return!1;this.editor.replace(a)};this.save_response=function(){var a={},b=this.editor.get_content({selection:!0,format:"text",nosig:!0}),d='<form class="propform"><div class="prop block"><label>'+this.get_label("responsename")+
-'</label><input type="text" name="name" id="ffresponsename" size="40" /></div><div class="prop block"><label>'+this.get_label("responsetext")+'</label><textarea name="text" id="ffresponsetext" cols="40" rows="8"></textarea></div></form>';a[this.gettext("save")]=function(a){a=$("#ffresponsename").val();var b=$("#ffresponsetext").val();if(!b)return $("#ffresponsetext").select(),!1;a||(a=b.substring(0,40));var d=g.display_message(g.get_label("savingresponse"),"loading");g.http_post("settings/responses",
-{_insert:1,_name:a,_text:b},d);$(this).dialog("close")};a[this.gettext("cancel")]=function(){$(this).dialog("close")};this.show_popup_dialog(d,this.gettext("newresponse"),a,{button_classes:["mainaction"]});$("#ffresponsetext").val(b);$("#ffresponsename").select()};this.add_response_item=function(a){var b=a.key;this.env.textresponses[b]=a;if(this.gui_objects.responseslist){var d=$("<li>").appendTo(this.gui_objects.responseslist);$("<a>").addClass("insertresponse active").attr("href","#").attr("rel",
-b).attr("tabindex","0").html(this.quote_html(a.name)).appendTo(d).mousedown(function(a){return rcube_event.cancel(a)}).bind("mouseup keypress",function(a){if("mouseup"==a.type||13==rcube_event.get_keycode(a))return g.command("insert-response",$(this).attr("rel")),$(document.body).trigger("mouseup"),rcube_event.cancel(a)})}};this.edit_responses=function(){};this.delete_response=function(a){!a&&this.responses_list&&(a=this.responses_list.get_selection()[0]);a&&confirm(this.get_label("deleteresponseconfirm"))&&
-this.http_post("settings/delete-response",{_key:a},!1)};this.spellcheck_state=function(){var a=this.editor.spellcheck_state();$.each(this.buttons.spellcheck||[],function(b,d){$("#"+d.id)[a?"addClass":"removeClass"]("selected")});return a};this.spellcheck_lang=function(){return this.editor.get_language()};this.spellcheck_lang_set=function(a){this.editor.set_language(a)};this.spellcheck_resume=function(a){this.editor.spellcheck_resume(a)};this.set_draft_id=function(a){if(a&&a!=this.env.draft_id){var b=
-{task:"mail",action:""};(b=this.opener(!1,b)||this.opener(!0,b))&&b.env.mailbox==this.env.drafts_mailbox&&b.command("checkmail");this.env.draft_id=a;$("input[name='_draft_saveid']").val(a);window.frames.savetarget&&window.frames.savetarget.history&&!this.draft_autosave_submit&&window.frames.savetarget.history.back();this.draft_autosave_submit=!1}this.remove_compose_data(this.env.compose_id);this.compose_skip_unsavedcheck=!1};this.auto_save_start=function(){this.env.draft_autosave&&(this.draft_autosave_submit=
-!1,this.save_timer=setTimeout(function(){g.draft_autosave_submit=!0;g.command("savedraft")},1E3*this.env.draft_autosave));!this.local_save_timer&&window.localStorage&&this.env.save_localstorage&&(this.compose_type_activity=this.compose_type_activity_last=0,$(document).bind("keypress",function(a){g.compose_type_activity++}),this.local_save_timer=setInterval(function(){g.compose_type_activity>g.compose_type_activity_last&&(g.save_compose_form_local(),g.compose_type_activity_last=g.compose_type_activity)},
-5E3),$(window).unload(function(){g.env.server_error||g.remove_compose_data(g.env.compose_id)}));window.onbeforeunload||(window.onbeforeunload=function(){if(!g.compose_skip_unsavedcheck&&g.cmp_hash!=g.compose_field_hash())return g.get_label("notsentwarning")});this.busy=!1};this.compose_field_hash=function(a){var b,d,e,f="",h=["to","cc","bcc","subject"];for(b=0;b<h.length;b++)if(e=$('[name="_'+h[b]+'"]').val())f+=e+":";f+=this.editor.get_content({refresh:!1});if(this.env.attachments)for(d in this.env.attachments)f+=
-d;a&&(this.cmp_hash=f);return f};this.save_compose_form_local=function(){if(this.env.save_localstorage){var a={session:this.env.session_id,changed:(new Date).getTime()},b=!0;this.editor.save();this.env.draft_id&&(a.draft_id=this.env.draft_id);this.env.reply_msgid&&(a.reply_msgid=this.env.reply_msgid);$("input, select, textarea",this.gui_objects.messageform).each(function(d,e){switch(e.tagName.toLowerCase()){case "input":if("button"==e.type||"submit"==e.type||"hidden"==e.type&&"_is_html"!=e.name)break;
-a[e.name]="checkbox"!=e.type||e.checked?$(e).val():"";""!=a[e.name]&&"hidden"!=e.type&&(b=!1);break;case "select":a[e.name]=$("option:checked",e).val();break;default:a[e.name]=$(e).val(),""!=a[e.name]&&(b=!1)}});if(!b){var d=this.local_storage_get_item("compose.index",[]),e=this.env.compose_id;0>$.inArray(e,d)&&d.push(e);this.local_storage_set_item("compose."+e,a,!0);this.local_storage_set_item("compose.index",d)}}};this.restore_compose_form=function(a,b){var d=this.local_storage_get_item("compose."+
-a,!0);d&&"object"==typeof d&&($.each(d,function(a,b){if("_"==a[0]){var d=$("*[name='"+a+"']");d[0]&&"checkbox"==d[0].type?d.prop("checked",""!=b):d.val(b)}}),("1"==d._is_html&&!b||"1"!=d._is_html&&b)&&this.command("toggle-editor",{id:this.env.composebody,html:!b,noconvert:!0}))};this.remove_compose_data=function(a){var b=this.local_storage_get_item("compose.index",[]);0<=$.inArray(a,b)&&(this.local_storage_remove_item("compose."+a),this.local_storage_set_item("compose.index",$.grep(b,function(b,e){return b!=
-a})))};this.clear_compose_data=function(){var a,b=this.local_storage_get_item("compose.index",[]);for(a=0;a<b.length;a++)this.local_storage_remove_item("compose."+b[a]);this.local_storage_remove_item("compose.index")};this.change_identity=function(a,b){if(!a||!a.options)return!1;b||(b=this.env.show_sig);var d=a.options[a.selectedIndex].value,e=this.env.identity,f=this.env.recipients_separator,h=RegExp.escape(f);this.env.signatures&&this.env.signatures[d]?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig")):
-this.enable_command("insert-sig",!1);if(!this.env.identities_initialized&&(this.env.identities_initialized=!0,this.env.show_sig_later&&(this.env.show_sig=!0),this.env.opened_extwin))return;$.each(["replyto","bcc"],function(){var a,b=e&&g.env.identities[e]?g.env.identities[e][this]:"",n=d&&g.env.identities[d]?g.env.identities[d][this]:"",l=$('[name="_'+this+'"]'),p=l.val();b&&p&&(a=RegExp("\\s*"+RegExp.escape(b)+"\\s*"),p=p.replace(a,""));a=RegExp(h+"\\s*"+h,"g");p=String(p).replace(a,f);a=RegExp("^[\\s"+
-h+"]+");p=p.replace(a,"");n&&-1==p.indexOf(n)&&-1==p.indexOf(n.replace(/"/g,""))&&(p&&(a=RegExp("["+h+"\\s]+$"),p=p.replace(a,"")+f+" "),p+=n+f+" ");(b||n)&&l.val(p).change()});this.editor.change_signature(d,b);this.env.identity=d;this.triggerEvent("change_identity");return!0};this.upload_file=function(a,b,d){if(a){var e=0,f=0;$("input[type=file]",a).each(function(a,b){var d=b.files?b.files.length:b.value?1:0;if(b.files)for(a=0;a<d;a++)e+=b.files[a].size;f+=d});if(f){if(this.env.max_filesize&&this.env.filesizeerror&&
-e>this.env.max_filesize)return this.display_message(this.env.filesizeerror,"error"),!1;b=this.async_upload_form(a,b||"upload",function(a){var b,e="";try{this.contentDocument?b=this.contentDocument:this.contentWindow&&(b=this.contentWindow.document),e=b.childNodes[1].innerHTML}catch(f){}e.match(/add2attachment/)||bw.opera&&(!g.env.uploadframe||g.env.uploadframe!=a.data.ts)||(e.match(/display_message/)||g.display_message(g.get_label("fileuploaderror"),"error"),g.remove_from_attachment_list(a.data.ts),
-d&&g.set_busy(!1,null,d));bw.opera&&(g.env.uploadframe=a.data.ts)});var h="<span>"+this.get_label("uploading"+(1<f?"many":""))+"</span>",m=b.replace(/^rcmupload/,"");this.add2attachment_list(m,{name:"",html:h,classname:"uploading",frame:b,complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",m);this.gui_objects.attachmentform=a;return!0}}};this.add2attachment_list=function(a,b,d){d&&this.triggerEvent("fileuploaded",{name:a,attachment:b,id:d});this.env.attachments||(this.env.attachments=
-{});d&&this.env.attachments[d]&&delete this.env.attachments[d];this.env.attachments[a]=b;if(!this.gui_objects.attachmentlist)return!1;!b.complete&&this.env.loadingicon&&(b.html='<img src="'+this.env.loadingicon+'" alt="" class="uploading" />'+b.html);!b.complete&&b.frame&&(b.html='<a title="'+this.get_label("cancel")+'" onclick="return rcmail.cancel_attachment_upload(\''+a+"', '"+b.frame+'\');" href="#cancelupload" class="cancelupload">'+(this.env.cancelicon?'<img src="'+this.env.cancelicon+'" alt="'+
-this.get_label("cancel")+'" />':this.get_label("cancel"))+"</a>"+b.html);var e,f=$("<li>");f.attr("id",a).addClass(b.classname).html(b.html).on("mouseover",function(){rcube_webmail.long_subject_title_ex(this)});d&&(e=document.getElementById(d))?f.replaceAll(e):f.appendTo(this.gui_objects.attachmentlist);a=$(this.gui_objects.attachmentlist).attr("data-tabindex")||"0";f.find("a").attr("tabindex",a);return!0};this.remove_from_attachment_list=function(a){this.env.attachments&&(delete this.env.attachments[a],
-$("#"+a).remove())};this.remove_attachment=function(a){a&&this.env.attachments[a]&&this.http_post("remove-attachment",{_id:this.env.compose_id,_file:a});return!0};this.cancel_attachment_upload=function(a,b){if(!a||!b)return!1;this.remove_from_attachment_list(a);$("iframe[name='"+b+"']").remove();return!1};this.upload_progress_start=function(a,b){setTimeout(function(){g.http_request(a,{_progress:b})},1E3*this.env.upload_progress_time)};this.upload_progress_update=function(a){var b=$("#"+a.name+" > span");
-b.length&&a.text&&(b.text(a.text),a.done||this.upload_progress_start(a.action,a.name))};this.add_contact=function(a){a&&this.http_post("addcontact",{_address:a});return!0};this.qsearch=function(a){if(""!=a){var b=this.set_busy(!0,"searching");a=this.search_params(a);var d="compose"==this.env.action&&this.contact_list?"search-contacts":"search";this.message_list?this.clear_message_list():this.contact_list&&this.list_contacts_clear();this.env.source&&(a._source=this.env.source);this.env.group&&(a._gid=
-this.env.group);this.env.current_page=1;a=this.http_request(d,a,b);this.env.qsearch={lock:b,request:a};this.enable_command("set-listmode",this.env.threads&&"base"==(this.env.search_scope||"base"));return!0}return!1};this.continue_search=function(a){var b=this.set_busy(!0,"stillsearching");setTimeout(function(){var d=g.search_params();d._continue=a;g.env.qsearch={lock:b,request:g.http_request("search",d,b)}},100)};this.search_params=function(a,b){var d,e={},f=[],h=this.env.search_mods,g=this.env.search_scope||
-"base",k="all"==g?"*":this.env.mailbox;!b&&this.gui_objects.search_filter&&(b=this.gui_objects.search_filter.value);!a&&this.gui_objects.qsearchbox&&(a=this.gui_objects.qsearchbox.value);b&&(e._filter=b);if(a&&(e._q=a,h&&this.message_list&&(h=h[k]||h["*"]),h)){for(d in h)f.push(d);e._headers=f.join(",")}g&&(e._scope=g);k&&"all"!=g&&(e._mbox=k);return e};this.reset_search_filter=function(){this.filter_disabled=!0;this.gui_objects.search_filter&&$(this.gui_objects.search_filter).val("ALL").change();
-this.filter_disabled=!1};this.reset_qsearch=function(a){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value="");this.env.qsearch&&this.abort_request(this.env.qsearch);a&&(this.env.search_scope="base",this.reset_search_filter());this.env.qsearch=null;this.env.search_request=null;this.env.search_id=null;this.enable_command("set-listmode",this.env.threads)};this.set_searchscope=function(a){var b=this.env.search_scope;this.env.search_scope=a;a!=b&&this.env.search_request&&(!this.qsearch(this.gui_objects.qsearchbox.value)&&
-this.env.search_filter&&"ALL"!=this.env.search_filter&&this.filter_mailbox(this.env.search_filter),"all"!=a&&this.select_folder(this.env.mailbox,"",!0))};this.set_searchmods=function(a){var b=this.env.mailbox;"all"==(this.env.search_scope||"base")&&(b="*");this.env.search_mods||(this.env.search_mods={});b&&(this.env.search_mods[b]=a)};this.is_multifolder_listing=function(){return void 0!==this.env.multifolder_listing?this.env.multifolder_listing:this.env.search_request&&"base"!=(this.env.search_scope||
-"base")};this.sent_successfully=function(a,b,d,e){this.display_message(b,a);this.compose_skip_unsavedcheck=!0;if(this.env.extwin){e||this.lock_form(this.gui_objects.messageform);var f={task:"mail",action:""};if(f=this.opener(!1,f)||this.opener(!0,f))f.display_message(b,a),d&&0<=$.inArray(f.env.mailbox,d)&&f.command("checkmail");e||setTimeout(function(){window.close()},1E3)}else e||setTimeout(function(){g.list_mailbox()},500);e&&(this.env.is_sent=!0)};this.ksearch_keydown=function(a,b,d){this.ksearch_timer&&
-clearTimeout(this.ksearch_timer);var e=rcube_event.get_keycode(a),f=rcube_event.get_modifier(a);switch(e){case 38:case 40:if(!this.ksearch_visible())return;b=38==e?1:0;e=document.getElementById("rcmkSearchItem"+this.ksearch_selected);e||(e=this.ksearch_pane.__ul.firstChild);e&&this.ksearch_select(b?e.previousSibling:e.nextSibling);return rcube_event.cancel(a);case 9:if(f==SHIFT_KEY||!this.ksearch_visible()){this.ksearch_hide();return}case 13:if(!this.ksearch_visible())return!1;this.insert_recipient(this.ksearch_selected);
-this.ksearch_hide();return rcube_event.cancel(a);case 27:this.ksearch_hide();return;case 37:case 39:return}this.ksearch_timer=setTimeout(function(){g.ksearch_get_results(d)},200);this.ksearch_input=b;return!0};this.ksearch_visible=function(){return null!==this.ksearch_selected&&void 0!==this.ksearch_selected&&this.ksearch_value};this.ksearch_select=function(a){this.ksearch_pane&&a&&this.ksearch_pane.find("li.selected").removeClass("selected").removeAttr("aria-selected");a&&($(a).addClass("selected").attr("aria-selected",
-"true"),this.ksearch_selected=a._rcm_id,$(this.ksearch_input).attr("aria-activedescendant","rcmkSearchItem"+this.ksearch_selected))};this.insert_recipient=function(a){if(null!==a&&this.env.contacts[a]&&this.ksearch_input){var b=this.ksearch_input.value,d=this.get_caret_pos(this.ksearch_input),d=b.lastIndexOf(this.ksearch_value,d),e=!1,f="",h=b.substring(0,d),b=b.substring(d+this.ksearch_value.length,b.length);this.ksearch_destroy();"object"!==typeof this.env.contacts[a]||"group"!=this.env.contacts[a].type||
-this.env.contacts[a].email?"object"===typeof this.env.contacts[a]&&this.env.contacts[a].name?(f=this.env.contacts[a].name+this.env.recipients_delimiter,e=!0):"string"===typeof this.env.contacts[a]&&(f=this.env.contacts[a]+this.env.recipients_delimiter,e=!0):(f+=this.env.contacts[a].name+this.env.recipients_delimiter,this.group2expand[this.env.contacts[a].id]=$.extend({input:this.ksearch_input},this.env.contacts[a]),this.http_request("mail/group-expand",{_source:this.env.contacts[a].source,_gid:this.env.contacts[a].id},
-!1));this.ksearch_input.value=h+f+b;this.set_caret_pos(this.ksearch_input,d+f.length);e&&(this.triggerEvent("autocomplete_insert",{field:this.ksearch_input,insert:f,data:this.env.contacts[a]}),this.compose_type_activity++)}};this.replace_group_recipients=function(a,b){this.group2expand[a]&&(this.group2expand[a].input.value=this.group2expand[a].input.value.replace(this.group2expand[a].name,b),this.triggerEvent("autocomplete_insert",{field:this.group2expand[a].input,insert:b}),this.group2expand[a]=
-null,this.compose_type_activity++)};this.ksearch_get_results=function(a){var b=this.ksearch_input?this.ksearch_input.value:null;if(null!==b){this.ksearch_pane&&this.ksearch_pane.is(":visible")&&this.ksearch_pane.hide();var d=this.get_caret_pos(this.ksearch_input),e=b.lastIndexOf(this.env.recipients_separator,d-1),b=b.substring(e+1,d),e=this.env.autocomplete_min_length,d=this.ksearch_data,b=$.trim(b);b!=this.ksearch_value&&(this.ksearch_destroy(),b.length&&b.length<e?this.ksearch_info||(this.ksearch_info=
-this.display_message(this.get_label("autocompletechars").replace("$min",e))):(e=this.ksearch_value,this.ksearch_value=b,!b.length||e&&e.length&&b.startsWith(e)&&(!d||0>=d.num)&&this.env.contacts&&!this.env.contacts.length||(d=a&&a.sources?a.sources:[""],this.ksearch_data={id:this.multi_thread_http_request({items:d,threads:a&&a.threads?a.threads:1,action:a&&a.action?a.action:"mail/autocomplete",postdata:{_search:b,_source:"%s"},lock:this.display_message(this.get_label("searching"),"loading")}),sources:d.slice(),
-num:d.length})))}};this.ksearch_query_results=function(a,b,d){this.multi_thread_http_response(a,d);if(this.ksearch_value&&(!this.ksearch_input||b==this.ksearch_value)){var e,f,h,m,k,n=this.ksearch_value,l=this.env.autocomplete_max?this.env.autocomplete_max:15;this.ksearch_pane||(b=$("<ul>"),this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").attr("role","listbox").css({position:"absolute","z-index":3E4}).append(b).appendTo(document.body),this.ksearch_pane.__ul=b[0]);b=this.ksearch_pane.__ul;
-d&&this.ksearch_pane.data("reqid")==d?l-=b.childNodes.length:(this.ksearch_pane.data("reqid",d),b.innerHTML="",this.env.contacts=[],e=$(this.ksearch_input).offset(),this.ksearch_pane.css({left:e.left+"px",top:e.top+this.ksearch_input.offsetHeight+"px",display:"none"}));if(a&&(h=a.length))for(e=0;e<h&&0<l;e++)m="object"===typeof a[e]?a[e].display||a[e].name:a[e],k="object"===typeof a[e]?a[e].type:"",f=e+this.env.contacts.length,$("<li>").attr("id","rcmkSearchItem"+f).attr("role","option").html('<i class="icon"></i>'+
-this.quote_html(m.replace(RegExp("("+RegExp.escape(n)+")","ig"),"##$1%%")).replace(/##([^%]+)%%/g,"<b>$1</b>")).addClass(k||"").appendTo(b).mouseover(function(){g.ksearch_select(this)}).mouseup(function(){g.ksearch_click(this)}).get(0)._rcm_id=f,l-=1;b.childNodes.length&&($(this.ksearch_input).attr("aria-haspopup","true").attr("aria-expanded","true").attr("aria-owns","rcmKSearchpane"),this.ksearch_pane.show(),this.env.contacts.length||this.ksearch_select($("li:first",b).get(0)));h&&(this.env.contacts=
-this.env.contacts.concat(a));this.ksearch_data.id==d&&this.ksearch_data.num--}};this.ksearch_click=function(a){this.ksearch_input&&this.ksearch_input.focus();this.insert_recipient(a._rcm_id);this.ksearch_hide()};this.ksearch_blur=function(){this.ksearch_timer&&clearTimeout(this.ksearch_timer);this.ksearch_input=null;this.ksearch_hide()};this.ksearch_hide=function(){this.ksearch_selected=null;this.ksearch_value="";this.ksearch_pane&&this.ksearch_pane.hide();$(this.ksearch_input).attr("aria-haspopup",
-"false").attr("aria-expanded","false").removeAttr("aria-activedescendant").removeAttr("aria-owns");this.ksearch_destroy()};this.ksearch_destroy=function(){this.ksearch_data&&this.multi_thread_request_abort(this.ksearch_data.id);this.ksearch_info&&this.hide_message(this.ksearch_info);this.ksearch_msg&&this.hide_message(this.ksearch_msg);this.ksearch_msg=this.ksearch_info=this.ksearch_data=null};this.contactlist_keypress=function(a){a.key_pressed==a.DELETE_KEY&&this.command("delete")};this.contactlist_select=
-function(a){this.preview_timer&&clearTimeout(this.preview_timer);var b,d,e,f,h=!1,m=a.selection.length,k=this.env.source?this.env.address_sources[this.env.source]:null;this.env.contentframe&&(d=a.get_single_selection())?this.preview_timer=setTimeout(function(){g.load_contact(d,"show")},200):this.env.contentframe&&this.show_contentframe(!1);if(m){a.draggable=!1;this.env.selection_sources=[];k&&this.env.selection_sources.push(this.env.source);for(b in a.selection)f=a.data[a.selection[b]],k?h=h||!k.readonly&&
-!f.readonly:(e=String(a.selection[b]).replace(/^[^-]+-/,""))&&this.env.address_sources[e]&&(h=h||!this.env.address_sources[e].readonly&&!f.readonly,this.env.selection_sources.push(e)),"group"!=f._type&&(a.draggable=!0);this.env.selection_sources=$.unique(this.env.selection_sources)}this.enable_command("group-remove-selected",this.env.group&&m&&h);this.enable_command("compose",this.env.group||m);this.enable_command("print",1==m);this.enable_command("export-selected","copy",0<m);this.enable_command("edit",
-d&&h);this.enable_command("delete","move",m&&h);return!1};this.list_contacts=function(a,b,d){var e,f={},h=void 0===a&&void 0===b&&void 0===d,g=window;a||(a=this.env.source);h&&(b=this.env.group);if(d&&this.current_page==d&&a==this.env.source&&b==this.env.group)return!1;a!=this.env.source?(d=this.env.current_page=1,this.reset_qsearch()):h||b==this.env.group||(d=this.env.current_page=1);this.env.search_id?e="S"+this.env.search_id:this.env.search_request||(e=b?"G"+a+b:a);this.env.source=a;this.env.group=
-b;h=$.inArray(this.env.group,this.env.address_group_stack);this.env.address_group_stack=0>h?[]:this.env.address_group_stack.slice(0,h);this.env.group?(this.env.address_group_stack.push(this.env.group),e="G"+a+this.env.address_group_stack[0]):this.gui_objects.addresslist_title&&$(this.gui_objects.addresslist_title).html(this.get_label("contacts"));this.env.search_id||this.select_folder(e,"",!0);if(this.gui_objects.contactslist)this.list_contacts_remote(a,b,d);else{if(e=this.get_frame_window(this.env.contentframe))g=
-e,f._framed=1;b&&(f._gid=b);d&&(f._page=d);a&&(f._source=a);this.env.search_request&&(f._search=this.env.search_request);this.set_busy(!0,"loading");this.location_href(f,g)}};this.list_contacts_remote=function(a,b,d){this.list_contacts_clear();var e={},f=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,f)};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("");1<this.env.address_group_stack.length&&($('<a href="#list">...</a>').attr("title",this.gettext("uponelevel")).addClass("poplink").appendTo(b).click(function(a){return g.command("popgroup",
-"",this)}),b.append(" » "));b.append($("<span>").text(a.name))}this.triggerEvent("groupupdate",a)};this.load_contact=function(a,b,d){var e,f={},h=window,g=this.contact_list?this.contact_list.data[a]:null;if(e=this.get_frame_window(this.env.contentframe))f._framed=1,h=e,this.show_contentframe(!0),a||this.contact_list.clear_selection(),this.enable_command("compose",g&&g.email),this.enable_command("export-selected","print",g&&"group"!=g._type);else if(d)return!1;!b||!a&&"add"!=b||this.drag_active||
-(this.env.group&&(f._gid=this.env.group),this.env.search_request&&(f._search=this.env.search_request),f._action=b,f._source=this.env.source,f._cid=a,this.location_href(f,h,!0));return!0};this.group_member_change=function(a,b,d,e){"add"!=a&&(a="del");var f=this.get_label("add"==a?"addingmember":"removingmember"),f=this.display_message(f,"loading");this.http_post("group-"+a+"members",{_cid:b,_source:d,_gid:e},f)};this.contacts_drag_menu=function(a,b){var d="group"==b.type?b.source:b.id,e=this.env.source;
-if(!this.env.address_sources[d]||this.env.address_sources[d].readonly)return!0;""==e&&1==this.env.selection_sources.length&&(e=this.env.selection_sources[0]);return"group"==b.type&&d==e?(e=this.contact_list.get_selection().join(","),this.group_member_change("add",e,d,b.id),!0):this.commands.move||rcube_event.get_modifier(a)==SHIFT_KEY?this.drag_menu(a,b):(this.copy_contacts(b),!0)};this.copy_contacts=function(a){var b="group"==a.type?a.source:a.id,d=this.env.source,e=this.env.group?this.env.group:
-"",f=this.contact_list.get_selection().join(",");f&&this.env.address_sources[b]&&!this.env.address_sources[b].readonly&&(""==d&&1==this.env.selection_sources.length&&(d=this.env.selection_sources[0]),"group"==a.type?b!=d&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),a={_cid:f,_source:this.env.source,_to:b,_togid:a.id,_gid:e},this.http_post("copy",a,d)):a.id!=d&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),a={_cid:f,_source:this.env.source,_to:a.id,_gid:e},
-this.http_post("copy",a,d)))};this.move_contacts=function(a){var b="group"==a.type?a.source:a.id,d=this.env.source;this.env.address_sources[b]&&!this.env.address_sources[b].readonly&&(""==d&&1==this.env.selection_sources.length&&(d=this.env.selection_sources[0]),"group"==a.type?b!=d&&this._with_selected_contacts("move",{_to:b,_togid:a.id}):a.id!=d&&this._with_selected_contacts("move",{_to:a.id}))};this.delete_contacts=function(){if(this.env.source&&this.env.address_sources[this.env.source].undelete||
-confirm(this.get_label("deletecontactconfirm")))return this._with_selected_contacts("delete")};this._with_selected_contacts=function(a,b){var d=this.contact_list?this.contact_list.get_selection():[];if(d.length||this.env.cid){var e,f=[],h=this.display_message(this.get_label("delete"==a?"contactdeleting":"movingcontact"),"loading");if(this.env.cid)f.push(this.env.cid);else{for(e=0;e<d.length;e++)id=d[e],f.push(id),this.contact_list.remove_row(id,e==d.length-1);1==d.length&&this.show_contentframe(!1)}b||
-(b={});b._source=this.env.source;b._from=this.env.action;b._cid=f.join(",");this.env.group&&(b._gid=this.env.group);this.env.search_request&&(b._search=this.env.search_request);this.http_post(a,b,h);return!0}};this.update_contact_row=function(a,b,d,e,f){var h=this.contact_list;a=this.html_identifier(a);h.rows[a]||(a=a+"-"+e,d&&(d=d+"-"+e));h.update_row(a,b,d,!0);h.data[a]=f};this.add_contact_row=function(a,b,d,e){if(!this.gui_objects.contactslist)return!1;var f,h=this.contact_list,g={cols:[]};g.id=
-"rcmrow"+this.html_identifier(a);g.className="contact "+(d||"");h.in_selection(a)&&(g.className+=" selected");for(f in b)d={},d.className=String(f).toLowerCase(),d.innerHTML=b[f],g.cols.push(d);h.data[a]=e;h.insert_row(g);this.enable_command("export",0<h.rowcount)};this.init_contact_form=function(){var a;if(this.env.coltypes)for(a in this.set_photo_actions($("#ff_photo").val()),this.env.coltypes)this.init_edit_field(a,null);$(".contactfieldgroup .row a.deletebutton").click(function(){g.delete_edit_field(this);
-return!1});$("select.addfieldmenu").change(function(){g.insert_edit_field($(this).val(),$(this).attr("rel"),this);this.selectedIndex=0});$.datepicker&&this.env.date_format&&($.datepicker.setDefaults({dateFormat:this.env.date_format,changeMonth:!0,changeYear:!0,yearRange:"-120:+10",showOtherMonths:!0,selectOtherMonths:!0}),$("input.datepicker").datepicker());"search"==this.env.action&&$(this.gui_objects.editform).append($('<input type="submit">').hide()).submit(function(){$("input.mainaction").click();
-return!1})};this.group_create=function(){var a=$("<input>").attr("type","text"),b=$("<label>").text(this.get_label("namex")).append(a);this.show_popup_dialog(b,this.get_label("newgroup"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var b;(b=a.val())&&g.http_post("group-create",{_source:g.env.source,_name:b},g.set_busy(!0,"loading"));$(this).dialog("close")}}])};this.group_rename=function(){if(this.env.group){var a=this.env.contactgroups["G"+this.env.source+this.env.group].name,
-b=$("<input>").attr("type","text").val(a),d=$("<label>").text(this.get_label("namex")).append(b);this.show_popup_dialog(d,this.get_label("grouprename"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var d;(d=b.val())&&d!=a&&g.http_post("group-rename",{_source:g.env.source,_gid:g.env.group,_name:d},g.set_busy(!0,"loading"));$(this).dialog("close")}}],{open:function(){b.select()}})}};this.group_delete=function(){if(this.env.group&&confirm(this.get_label("deletegroupconfirm"))){var a=
-this.set_busy(!0,"groupdeleting");this.http_post("group-delete",{_source:this.env.source,_gid:this.env.group},a)}};this.remove_group_item=function(a){var b="G"+a.source+a.id;this.treelist.remove(b)&&(this.triggerEvent("group_delete",{source:a.source,id:a.id}),delete this.env.contactfolders[b],delete this.env.contactgroups[b]);this.list_contacts(a.source,0)};this.group_remove_selected=function(){this.http_post("group-delmembers",{_cid:this.contact_list.selection,_source:this.env.source,_gid:this.env.group})};
-this.remove_group_contacts=function(a){if(void 0!==this.env.group&&this.env.group===a.gid){var b=this.contact_list.get_selection();for(a=0;a<b.length;a++)id=b[a],this.contact_list.remove_row(id,a==b.length-1)}};this.insert_contact_group=function(a){a.type="group";var b="G"+a.source+a.id,d=$("<a>").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return g.command("listgroup",a,this)}).html(a.name);this.env.contactfolders[b]=this.env.contactgroups[b]=a;this.treelist.insert({id:b,html:d,
-classes:["contactgroup"]},a.source,"contactgroup");this.triggerEvent("group_insert",{id:a.id,source:a.source,name:a.name,li:this.treelist.get_item(b)})};this.update_contact_group=function(a){var b="G"+a.source+a.id,d={};if(a.newid){var e="G"+a.source+a.newid,f=$.extend({},a);this.env.contactfolders[e]=this.env.contactfolders[b];this.env.contactfolders[e].id=a.newid;this.env.group=a.newid;delete this.env.contactfolders[b];delete this.env.contactgroups[b];f.id=a.newid;f.type="group";d.id=e;d.html=$("<a>").attr("href",
-"#").attr("rel",a.source+":"+a.newid).click(function(){return g.command("listgroup",f,this)}).html(a.name)}else $(this.treelist.get_item(b)).children().first().html(a.name),this.env.contactfolders[b].name=this.env.contactgroups[b].name=a.name;this.treelist.update(b,d,!0);this.triggerEvent("group_update",{id:a.id,source:a.source,name:a.name,li:this.treelist.get_item(b),newid:a.newid})};this.update_group_commands=function(){var a=""!=this.env.source?this.env.address_sources[this.env.source]:null,a=
-a&&a.groups&&!a.readonly;this.enable_command("group-create",a);this.enable_command("group-rename","group-delete",a&&this.env.group)};this.init_edit_field=function(a,b){var d=this.env.coltypes[a].label;b||(b=$(".ff_"+a));d&&b.placeholder(d)};this.insert_edit_field=function(a,b,d){var e=$("#ff_"+a);if(e.length)e.show().focus(),$(d).children('option[value="'+a+'"]').prop("disabled",!0);else{$(".ff_"+a);e=$("#contactsection"+b+" .contactcontroller"+a);if(!e.length){b=$("#contactsection"+b);var f=$(".contactfieldgroup",
-b).last(),e=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+a);f.length?e.insertAfter(f):b.prepend(e)}if(e.length&&"FIELDSET"==e.get(0).nodeName){var h;b=this.env.coltypes[a];var m="ff_"+a+(b.count||0),f=$("<div>").addClass("row"),k=$("<div>").addClass("contactfieldcontent data"),n=$("<div>").addClass("contactfieldlabel label");b.subtypes_select?n.html(b.subtypes_select):n.html('<label for="'+m+'">'+b.label+"</label>");var l=1!=b.limit?"[]":"";if("text"==b.type||"date"==b.type)h=$("<input>").addClass("ff_"+
-a).attr({type:"text",name:"_"+a+l,size:b.size,id:m}).appendTo(k),this.init_edit_field(a,h),"date"==b.type&&$.datepicker&&h.datepicker();else if("textarea"==b.type)h=$("<textarea>").addClass("ff_"+a).attr({name:"_"+a+l,cols:b.size,rows:b.rows,id:m}).appendTo(k),this.init_edit_field(a,h);else if("composite"==b.type){var p,q,v=[],s=[];if(h=this.env[a+"_template"])for(m=0;m<h.length;m++)v.push(h[m][1]),s.push(h[m][2]);else for(p in b.childs)v.push(p);for(m=0;m<v.length;m++)p=v[m],h=b.childs[p],h=$("<input>").addClass("ff_"+
-p).attr({type:"text",name:"_"+p+l,size:h.size}).appendTo(k),k.append(s[m]||" "),this.init_edit_field(p,h),q||(q=h);h=q}else if("select"==b.type){h=$("<select>").addClass("ff_"+a).attr({name:"_"+a+l,id:m}).appendTo(k);var t=h.attr("options");t[t.length]=new Option("---","");b.options&&$.each(b.options,function(a,b){t[t.length]=new Option(b,a)})}h&&($('<a href="#del"></a>').addClass("contactfieldbutton deletebutton").attr({title:this.get_label("delete"),rel:a}).html(this.env.delbutton).click(function(){g.delete_edit_field(this);
-return!1}).appendTo(k),f.append(n).append(k).appendTo(e.show()),h.first().focus(),b.count||(b.count=0),++b.count==b.limit&&b.limit&&$(d).children('option[value="'+a+'"]').prop("disabled",!0))}}};this.delete_edit_field=function(a){var b=$(a).attr("rel"),d=this.env.coltypes[b],e=$(a).parents("fieldset.contactfieldgroup"),f=e.parent().find("select.addfieldmenu");0>=--d.count&&d.visible?$(a).parent().children("input").val("").blur():($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());
-f.length&&(a=f.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(f),f.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",function(a){g.set_busy(!1,null,g.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&&b<d.length;b++)$("a#"+d[b].id).html(this.get_label("-del-"==a?"addphoto":"replacephoto"));$("#ff_photo").val(a);this.enable_command("upload-photo",this.env.coltypes.photo?!0:!1);this.enable_command("delete-photo",
-this.env.coltypes.photo&&"-del-"!=a)};this.advanced_search=function(){var a,b={_form:1,_action:"search"},d=window;if(a=this.get_frame_window(this.env.contentframe))b._framed=1,d=a,this.contact_list.clear_selection();this.location_href(b,d,!0);return!0};this.unselect_directory=function(){this.select_folder("");this.enable_command("search-delete",!1)};this.insert_saved_search=function(a,b){var d="S"+b,e=$("<a>").attr("href","#").attr("rel",b).click(function(){return g.command("listsearch",b,this)}).html(a),
-f={name:a,id:b};this.savedsearchlist.insert({id:d,html:e,classes:["contactsearch"]},null,"contactsearch");this.select_folder(d,"",!0);this.enable_command("search-delete",!0);this.env.search_id=b;this.triggerEvent("abook_search_insert",f)};this.search_create=function(){var a=$("<input>").attr("type","text"),b=$("<label>").text(this.get_label("namex")).append(a);this.show_popup_dialog(b,this.get_label("searchsave"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var b;(b=a.val())&&
-g.http_post("search-create",{_search:g.env.search_request,_name:b},g.set_busy(!0,"loading"));$(this).dialog("close")}}])};this.search_delete=function(){if(this.env.search_request){var a=this.set_busy(!0,"savedsearchdeleting");this.http_post("search-delete",{_sid:this.env.search_id},a)}};this.remove_search_item=function(a){this.savedsearchlist.remove("S"+a)&&this.triggerEvent("search_delete",{id:a,li:void 0});this.env.search_id=null;this.env.search_request=null;this.list_contacts_clear();this.reset_qsearch();
-this.enable_command("search-delete","search-create",!1)};this.listsearch=function(a){var b=this.set_busy(!0,"searching");this.contact_list&&this.list_contacts_clear();this.reset_qsearch();this.savedsearchlist?(this.treelist.select(""),this.savedsearchlist.select("S"+a)):this.select_folder("S"+a,"",!0);this.env.current_page=1;this.http_request("search",{_sid:a},b)};this.section_select=function(a){var b;b=a.get_single_selection();a=window;var d={_action:"edit-prefs",_section:b};if(b){if(b=this.get_frame_window(this.env.contentframe))d._framed=
-1,a=b;this.location_href(d,a,!0)}return!0};this.identity_select=function(a){var b;if(b=a.get_single_selection())this.enable_command("delete",1<a.rowcount&&2>this.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,f={_action:b,_iid:a};if(d=this.get_frame_window(this.env.contentframe))f._framed=1,e=d;(a||"add-identity"==b)&&this.location_href(f,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){g.subscription_select(a.id)}).addEventListener("collapse",function(a){g.folder_collapsed(a)}).addEventListener("expand",function(a){g.folder_collapsed(a)}).addEventListener("search",function(a){a.query&&g.subscription_select()}).draggable({cancel:"li.mailbox.root"}).droppable({accept:function(a){if(!$(a).is(".mailbox"))return!1;a=g.folder_id2name($(a).attr("id"));var d=g.folder_id2name(this.id),e=g.env.subscriptionrows[a];return e&&!e[2]&&
-d!=a.replace(g.last_sub_rx,"")&&!d.startsWith(a+g.env.delimiter)},drop:function(a,d){var e=g.folder_id2name(d.draggable.attr("id")),f=g.folder_id2name(this.id);g.subscription_move_folder(e,f)}})};this.folder_id2name=function(a){return a?g.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,f,h,m,k){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 n,l,p,q,v,s="",t=[],w=[],u=[],x=$(this.gui_objects.subscriptionlist);n=m?m:$($("li",x).get(1)).clone(!0);if(!n.length)return this.goto_url("folders"),!1;n.attr({id:"rcmli"+
-this.html_identifier_encode(a),"class":h});m&&m.length||($("ul,div.treetoggle",n).remove(),n.removeData("filtered"));$("a:first",n).text(d);$('input[name="_subscribed[]"]:first',n).val(a).prop({checked:f?!0:!1,disabled:e?!0:!1});this.env.subscriptionrows[a]=[b,d,!1];$.each(this.env.subscriptionrows,function(a,b){b[3]=a;t.push(b)});try{v=new Intl.Collator(this.env.locale.replace("_","-"))}catch(y){}t.sort(function(a,b){var d,e,f,h=a[0].split(g.env.delimiter),m=b[0].split(g.env.delimiter),k=h.length;
-for(d=0;d<k;d++){e=h[d];f=m[d];if(e!==f)return void 0===f?1:v?v.compare(e,f):e<f?-1:1;if(d==k-1)return-1}});for(l in t)d=t[l][3],t[l][2]?(b=d+this.env.delimiter,b!=this.env.prefix_ns&&(u.push(d),p=b)):p&&d.startsWith(p)?u.push(d):(w.push(d),p=null);for(l=0;l<u.length;l++)a.startsWith(u[l]+this.env.delimiter)&&(q=u[l]);for(l=0;!q&&l<w.length;l++)l&&w[l]==a&&(q=w[l-1]);if(q&&(l=this.subscription_list.get_item(q,!0))){if(p=a.lastIndexOf(this.env.delimiter))s=a.substring(0,p),s=this.subscription_list.get_item(s,
-!0),$("div.treetoggle",s).length||$("<div> </div>").addClass("treetoggle collapsed").appendTo(s),$("ul",s).length||$("<ul>").css("display","none").appendTo(s);if(s&&l==s)$("ul:first",s).append(n);else{for(;(d=$(l).parent().parent().get(0))&&(!s||d!=s)&&$(d).is("li.mailbox");)l=d;$(l).after(n)}}else x.append(n);$.extend(this.env.subscriptionrows,k||{});this.subscription_list.reset(!0);this.subscription_select();s&&this.subscription_list.expand(this.folder_id2name(s.id));n=n.show().get(0);n.scrollIntoView&&
-n.scrollIntoView();return n};this.replace_folder_row=function(a,b,d,e,f,h){if(!this.gui_objects.subscriptionlist)return this.is_framed()?window.parent.rcmail.replace_folder_row(a,b,d,e,f,h):!1;this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());var m={},k=this.subscription_list.get_item(a,!0),n=$(k).parent(),l=a.length,p=this.env.subscriptionrows[a][0].length,q=$('input[name="_subscribed[]"]:first',k).prop("checked");a==b?$(k).attr("class",h||""):
-($("li",k).each(function(){var a=g.folder_id2name(this.id),e=g.env.subscriptionrows[a],f=b+a.slice(l);this.id="rcmli"+g.html_identifier_encode(f);$('input[name="_subscribed[]"]:first',this).val(f);e[0]=d+e[0].slice(p);m[f]=e;delete g.env.subscriptionrows[a]}),k=$(k).detach(),delete this.env.subscriptionrows[a],n.get(0)==this.gui_objects.subscriptionlist||$("li",n).length||$("ul,div.treetoggle",n.parent()).remove(),this.add_folder_row(b,d,e,f,q,h,k,m))};this.remove_folder_row=function(a){this.subscription_list.is_search()&&
-(this.subscription_select(),this.subscription_list.reset_search());var b=[],d=this.subscription_list.get_item(a,!0);$("li",d).each(function(){b.push(g.folder_id2name(this.id))});this.subscription_list.remove(a);b.push(a);$.each(b,function(a,b){delete g.env.subscriptionrows[b]})};this.subscribe=function(a){if(a){var b=this.display_message(this.get_label("foldersubscribing"),"loading");this.http_post("subscribe",{_mbox:a},b)}};this.unsubscribe=function(a){if(a){var b=this.display_message(this.get_label("folderunsubscribing"),
-"loading");this.http_post("unsubscribe",{_mbox:a},b)}};this.show_folder=function(a,b,d){var e=window;a="&_action=edit-folder&_mbox="+urlencode(a);b&&(a+="&_path="+urlencode(b));if(b=this.get_frame_window(this.env.contentframe))e=b,a+="&_framed=1";0<=String(e.location.href).indexOf(a)&&!d?this.show_contentframe(!0):this.location_href(this.env.comm_path+a,e,!0)};this.disable_subscription=function(a){(a=this.subscription_list.get_item(a,!0))&&$('input[name="_subscribed[]"]:first',a).prop("disabled",
-!0)};this.folder_size=function(a){var b=this.set_busy(!0,"loading");this.http_post("folder-size",{_mbox:a},b)};this.folder_size_update=function(a){$("#folder-size").replaceWith(a)};this.folder_filter=function(a){this.subscription_list.reset_search();this.subscription_list.container.children("li").each(function(){var b,d=g.folder_id2name(this.id);if("---"!=a)if(a){if(d!==a){$(this).data("filtered",!0).hide();return}}else for(b in g.env.ns_roots)if(d===g.env.ns_roots[b]){$(this).data("filtered",!0).hide();
-return}$(this).removeData("filtered").show()})};var u=function(a,b){var d=document.getElementById(b.id);if(d){var e=!1;"image"==b.type&&(d=d.parentNode,e=!0);d._command=a;d._id=b.id;b.sel&&(d.onmousedown=function(a){return g.button_sel(this._command,this._id)},d.onmouseup=function(a){return g.button_out(this._command,this._id)},e&&((new Image).src=b.sel));b.over&&(d.onmouseover=function(a){return g.button_over(this._command,this._id)},d.onmouseout=function(a){return g.button_out(this._command,this._id)},
-e&&((new Image).src=b.over))}};this.init_buttons=function(){for(var a in this.buttons)if("string"===typeof a)for(var b=0;b<this.buttons[a].length;b++)u(a,this.buttons[a][b])};this.set_button=function(a,b){var d,e,f,h=this.buttons[a],g=h?h.length:0;for(d=0;d<g;d++)if(e=h[d],(f=document.getElementById(e.id))&&e.status!==b)"image"!=e.type||e.status?e.status||(e.pas=String(f.className)):(e.pas=f._original_src?f._original_src:f.src,f.runtimeStyle&&f.runtimeStyle.filter&&f.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)&&
-(e.pas=RegExp.$1)),e.status=b,"image"==e.type&&e[b]?f.src=e[b]:void 0!==e[b]&&(f.className=e[b]),"input"==e.type?f.disabled="pas"==b:"uibutton"==e.type?(e.status=b,$(f).button("option","disabled","pas"==b)):(e=$(f),e.attr("tabindex","pas"==b||"sel"==b?"-1":e.attr("data-tabindex")||"0").attr("aria-disabled","pas"==b||"sel"==b?"true":"false"))};this.set_alttext=function(a,b){var d,e,f,h,g=this.buttons[a],k=g?g.length:0;for(d=0;d<k;d++)e=g[d],f=document.getElementById(e.id),"image"==e.type&&f?(f.setAttribute("alt",
-this.get_label(b)),(h=f.parentNode)&&"a"==h.tagName.toLowerCase()&&h.setAttribute("title",this.get_label(b))):f&&f.setAttribute("title",this.get_label(b))};this.button_over=function(a,b){this.button_event(a,b,"over")};this.button_sel=function(a,b){this.button_event(a,b,"sel")};this.button_out=function(a,b){this.button_event(a,b,"act")};this.button_event=function(a,b,d){var e,f,h,g=this.buttons[a],k=g?g.length:0;for(e=0;e<k;e++)f=g[e],f.id==b&&"act"==f.status&&(f[d]&&(h=document.getElementById(f.id))&&
-(h["image"==f.type?"src":"className"]=f[d]),"sel"==d&&(this.buttons_sel[b]=a))};this.set_pagetitle=function(a){a&&document.title&&(document.title=a)};this.display_message=function(a,b,d,e){if(this.is_framed())return parent.rcmail.display_message(a,b,d);if(!this.gui_objects.message)return"loading"!=b&&(this.pending_message=[a,b,d,e]),1;b||(b="notice");e||(e=this.html_identifier(a));var f=b+(new Date).getTime();if(!d)switch(b){case "error":case "warning":d=2*this.message_time;break;case "uploading":d=
-0;break;default:d=this.message_time}"loading"==b&&(e="loading",d=1E3*this.env.request_timeout,a||(a=this.get_label("loading")));if(this.messages[e])return this.messages[e].obj&&this.messages[e].obj.html(a),"loading"==b&&this.messages[e].labels.push({id:f,msg:a}),this.messages[e].elements.push(f),setTimeout(function(){g.hide_message(f,"loading"==b)},d),f;var h=$("<div>").addClass(b).html(a).data("key",e);$(this.gui_objects.message).append(h).show();this.messages[e]={obj:h,elements:[f]};"loading"==
-b?this.messages[e].labels=[{id:f,msg:a}]:"uploading"!=b&&h.click(function(){return g.hide_message(h)}).attr("role","alert");this.triggerEvent("message",{message:a,type:b,timeout:d,object:h});0<d&&setTimeout(function(){g.hide_message(f,"loading"!=b)},d);return f};this.hide_message=function(a,b){if(this.is_framed())return parent.rcmail.hide_message(a,b);if(this.gui_objects.message){var d,e,f,h,g=this.messages;if("object"===typeof a)h=$(a),d=h.data("key"),this.hide_message_object(h,b),g[d]&&delete g[d];
-else for(d in g)for(e in g[d].elements)if(g[d]&&g[d].elements[e]==a)if(g[d].elements.splice(e,1),!g[d].elements.length)this.hide_message_object(g[d].obj,b),delete g[d];else if("loading"==d)for(f in g[d].labels)g[d].labels[f].id==a?delete g[d].labels[f]:(h=g[d].labels[f].msg,g[d].obj.html(h))}};this.hide_message_object=function(a,b){b?a.fadeOut(600,function(){$(this).remove()}):a.hide().remove()};this.clear_messages=function(){if(this.is_framed())return parent.rcmail.clear_messages();var a,b,d=this.messages;
-for(a in d)for(b in d[a].elements)d[a].obj&&this.hide_message_object(d[a].obj);this.messages={}};this.display_progress=function(a){if(a&&a.name){var b=this.messages["progress"+a.name];a.label||(a.label=this.get_label("uploadingmany"));b?!a.total||100<=a.percent?this.hide_message(b.obj):(a.text&&(a.label+=" "+a.text),b.obj.text(a.label)):(!a.percent||100>a.percent)&&this.display_message(a.label,"uploading",0,"progress"+a.name)}};this.show_popup_dialog=function(a,b,d,e){if(this.is_framed())return parent.rcmail.show_popup_dialog(a,
-b,d,e);var f=$('<div class="popup">');"object"==typeof a?f.append(a):f.html(a);e=$.extend({title:b,buttons:d,modal:!0,resizable:!0,width:500,close:function(a,b){$(this).remove()}},e||{});f.dialog(e);b=$(window);a=b.width();b=b.height();var h=f.width(),g=f.height();f.dialog("option",{height:Math.min(b-40,g+75+(d?50:0)),width:Math.min(a-20,h+36)});$.each(e.button_classes||[],function(a,b){b&&$($(".ui-dialog-buttonpane button.ui-button",f.parent()).get(a)).addClass(b)});return f};this.set_page_buttons=
-function(){this.enable_command("nextpage","lastpage",this.env.pagecount>this.env.current_page);this.enable_command("previouspage","firstpage",1<this.env.current_page)};this.select_folder=function(a,b,d){this.savedsearchlist&&this.savedsearchlist.select("");this.treelist?this.treelist.select(a):this.gui_objects.folderlist&&($("li.selected",this.gui_objects.folderlist).removeClass("selected"),$(this.get_folder_li(a,b,d)).addClass("selected"),this.triggerEvent("selectfolder",{folder:a,prefix:b}))};this.mark_folder=
-function(a,b,d,e){$(this.get_folder_li(a,d,e)).addClass(b);this.triggerEvent("markfolder",{folder:a,mark:b,status:!0})};this.unmark_folder=function(a,b,d,e){$(this.get_folder_li(a,d,e)).removeClass(b);this.triggerEvent("markfolder",{folder:a,mark:b,status:!1})};this.get_folder_li=function(a,b,d){b||(b="rcmli");if(this.gui_objects.folderlist)return a=this.html_identifier(a,d),document.getElementById(b+a)};this.set_message_coltypes=function(a,b,d){var e=this.message_list,f=e?e.thead:null,h,g;this.env.listcols=
-a;this.env.coltypes||(this.env.coltypes={});if(f){if(b){f.innerHTML="";g=document.createElement("tr");c=0;for(a=b.length;c<a;c++)h=document.createElement("th"),h.innerHTML=b[c].html||"",b[c].id&&(h.id=b[c].id),b[c].className&&(h.className=b[c].className),g.appendChild(h);f.appendChild(g)}g=0;for(a=this.env.listcols.length;g<a;g++)b=this.env.listcols[g],!(h=f.rows[0].cells[g])||"from"!=b&&"to"!=b&&"fromto"!=b||$(h).attr("rel",b).find("span,a").text(this.get_label("fromto"==b?d:b))}this.env.subject_col=
-null;this.env.flagged_col=null;this.env.status_col=null;this.env.coltypes.folder&&(this.env.coltypes.folder.hidden=!(this.env.search_request||this.env.search_id)||"base"==this.env.search_scope);0<=(g=$.inArray("subject",this.env.listcols))&&(this.env.subject_col=g,e&&(e.subject_col=g));0<=(g=$.inArray("flag",this.env.listcols))&&(this.env.flagged_col=g);0<=(g=$.inArray("status",this.env.listcols))&&(this.env.status_col=g);e&&(e.hide_column("folder",this.env.coltypes.folder&&this.env.coltypes.folder.hidden||
-0>$.inArray("folder",this.env.listcols)),e.init_header())};this.set_rowcount=function(a,b){if(b&&b!=this.env.mailbox)return!1;$(this.gui_objects.countdisplay).html(a);this.set_page_buttons()};this.set_mailboxname=function(a){this.gui_objects.mailboxname&&a&&(this.gui_objects.mailboxname.innerHTML=a)};this.set_quota=function(a){this.gui_objects.quotadisplay&&a&&"text"==a.type&&$(this.gui_objects.quotadisplay).text((a.percent||0)+"%").attr("title",a.title);this.triggerEvent("setquota",a);this.env.quota_content=
-a};this.set_trash_count=function(a){this[(a?"un":"")+"mark_folder"](this.env.trash_mailbox,"empty","",!0)};this.set_unread_count=function(a,b,d,e){if(!this.gui_objects.mailboxlist)return!1;this.env.unread_counts[a]=b;this.set_unread_count_display(a,d);e?this.mark_folder(a,e,"",!0):b||this.unmark_folder(a,"recent","",!0)};this.set_unread_count_display=function(a,b){var d,e,f,g,m;if(f=this.get_folder_li(a,"",!0)){g=this.env.unread_counts[a]?this.env.unread_counts[a]:0;e=$(f).children("a").eq(0);d=e.children("span.unreadcount");
-!d.length&&g&&(d=$("<span>").addClass("unreadcount").appendTo(e));e=0;if((m=f.getElementsByTagName("div")[0])&&m.className.match(/collapsed/))for(var k in this.env.unread_counts)k.startsWith(a+this.env.delimiter)&&(e+=this.env.unread_counts[k]);g&&d.length?d.html(this.env.unreadwrap.replace(/%[sd]/,g)):d.length&&d.remove();d=RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+"]+$");a.match(d)&&this.set_unread_count_display(a.replace(d,""),!1);0<g+e?$(f).addClass("unread"):
-$(f).removeClass("unread")}d=/^\([0-9]+\)\s+/i;b&&document.title&&(f="",f=String(document.title),f=g&&f.match(d)?f.replace(d,"("+g+") "):g?"("+g+") "+f:f.replace(d,""),this.set_pagetitle(f))};this.set_headers=function(a){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&a&&$(this.gui_objects.all_headers_box).html(a).show()};this.show_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&this.env.uid&&($(b).removeClass("show-headers").addClass("hide-headers"),
-$(this.gui_objects.all_headers_row).show(),b.onclick=function(){g.command("hide-headers","",b)},this.gui_objects.all_headers_box.innerHTML||this.http_post("headers",{_uid:this.env.uid,_mbox:this.env.mailbox},this.display_message(this.get_label("loading"),"loading")))};this.hide_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&($(b).removeClass("hide-headers").addClass("show-headers"),$(this.gui_objects.all_headers_row).hide(),b.onclick=function(){g.command("show-headers",
-"",b)})};this.folder_selector=function(a,b){var d=this.folder_selector_element;if(!d){var e=[],f=this.env.delimiter,h=$('<ul class="toolbarmenu">'),m=document.createElement("a"),d=$('<div id="folder-selector" class="popupmenu"></div>');m.href="#";m.className="icon";$.each(this.env.mailboxes_list,function(){var a=0,b=0,d=g.env.mailboxes[this],h=d.id,q=$(m.cloneNode(!1)),v=$("<li>");d.virtual?q.addClass("virtual").attr("aria-disabled","true").attr("tabindex","-1"):q.addClass("active").data("id",d.id);
-for(d["class"]&&q.addClass(d["class"]);0<=(b=h.indexOf(f,b));)a++,b++;q.css("padding-left",a?16*a+"px":0);q.append($("<span>").text(d.name));v.append(q);e.push(v)});h.append(e).appendTo(d);d.css({left:"-1000px",top:"-1000px"}).appendTo($("body")).show();10<e.length&&d.css("max-height",10*$("li",d)[0].offsetHeight+9);d.on("click","a.active",function(a){d.data("callback")($(this).data("id"));return!1});this.folder_selector_element=d}d.data("callback",b);this.show_menu("folder-selector",!0,a)};this.show_menu=
-function(a,b,d){var e="object"==typeof a?a.menu:a,f=$("#"+e),g=d&&d.target?$(d.target):$(f.attr("rel")||"#"+e+"link"),m=rcube_event.is_keyboard(d),k=f.attr("data-align")||"",n=!1;"A"!=g.get(0).tagName&&g.closest("a").length&&(g=g.closest("a"));"string"==typeof a&&(a={menu:e});f.length||(f=this.triggerEvent("menu-get",{name:e,props:a,originalEvent:d}));if(!f||!f.length)return this.triggerEvent(!1===b?"menu-close":"menu-open",{name:e,props:a,originalEvent:d});f.appendTo(document.body);"undefined"==
-typeof b&&(b=f.is(":visible")?!1:!0);if(b&&g.length){var l=$(window),p=g.offset(),q=0<=k.indexOf("bottom"),n="menuitem"==g.attr("role")||0<g.closest("[role=menuitem]").length;g.offsetWidth=g.outerWidth();g.offsetHeight=g.outerHeight();!q&&p.top+g.offsetHeight+f.height()>l.height()&&(q=!0);0<=k.indexOf("right")?p.left=p.left+g.outerWidth()-f.width():n&&(p.left=p.left+g.offsetWidth-5,p.top-=g.offsetHeight);p.left+f.width()>l.width()&&(p.left=l.width()-f.width()-12);p.top=Math.max(0,p.top+(q?-f.height():
-g.offsetHeight));f.css({left:p.left+"px",top:p.top+"px"})}if(b){for(k=this.menu_stack.length-1;n&&0<=k;k--)$(g).parents("#"+this.menu_stack[k]).length||"menuitem"==$(d.target).parent().attr("role")||this.hide_menu(this.menu_stack[k],d);n&&this.menu_stack.length?(f.data("parent",$.last(this.menu_stack)),f.css("z-index",($("#"+$.last(this.menu_stack)).css("z-index")||0)+1)):!n&&this.menu_stack.length&&this.hide_menu(this.menu_stack[0],d);f.show().attr("aria-hidden","false").data("opener",g.attr("aria-expanded",
-"true").get(0));this.triggerEvent("menu-open",{name:e,obj:f,props:a,originalEvent:d});this.menu_stack.push(e);if(this.menu_keyboard_active=b&&m)this.focused_menu=e,f.find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()}else this.hide_menu(e,d);return b};this.hide_menu=function(a,b){if(this.menu_stack.length){for(var d,e=rcube_event.is_keyboard(b),f=this.menu_stack.length-1;0<=f;f--)d=$("#"+this.menu_stack[f]).hide().attr("aria-hidden","true").data("parent",!1),this.triggerEvent("menu-close",
-{name:this.menu_stack[f],obj:d,props:{menu:this.menu_stack[f]},originalEvent:b}),this.menu_stack[f]==a&&(f=-1,d.data("opener")&&($(d.data("opener")).attr("aria-expanded","false"),e&&d.data("opener").focus())),this.menu_stack.pop();this.menu_stack.length&&e?(this.menu_keyboard_active=!0,this.focused_menu=$.last(this.menu_stack),d&&d.data("opener")||$("#"+this.focused_menu).find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()):(this.focused_menu=null,this.menu_keyboard_active=
-!1)}else this.triggerEvent("menu-close",{name:a,props:{menu:a},originalEvent:b})};this.element_position=function(a,b){b=$(b);var d=$(window),e=b.outerWidth(),f=b.outerHeight(),g=b.data("menu-pos"),m=d.height(),k=$(a).height(),n=$(a).width(),l=b.offset(),p=l.top,l=l.left+e;"bottom"==g?(p+=f,l-=e):l-=5;p+k>m&&(p-=k-f,0>p&&(p=Math.max(0,(m-k)/2)));l+n>d.width()&&(l-=n+e);a.css({left:l+"px",top:p+"px"})};this.editor_init=function(a,b){this.editor=new rcube_text_editor(a,b)};this.html2plain=function(a,
-b){return this.format_converter(a,"html",b)};this.plain2html=function(a,b){return this.format_converter(a,"plain",b)};this.format_converter=function(a,b,d){if(!a||"html"==b&&!a.replace(/<[^>]+>| |\xC2\xA0|\s/g,"").length||"html"!=b&&!a.replace(/\xC2\xA0|\s/g,"").length)return d&&setTimeout(function(){d("")},50),!0;var e=this.env.editor_warned||confirm(this.get_label("editorwarning"));this.env.editor_warned=!0;if(!e)return!1;b="?_task=utils&_action="+("html"==b?"html2text":"text2html");var f=
-this.set_busy(!0,"converting");this.log("HTTP POST: "+b);$.ajax({type:"POST",url:b,data:a,contentType:"application/octet-stream",error:function(a,b,d){g.http_error(a,b,d,f)},success:function(a){g.set_busy(!1,null,f);d&&d(a)}});return!0};this.url=function(a,b){var d="string"===typeof b?b:"";"string"!==typeof a?b=a:b&&"object"===typeof b||(b={});a?b._action=a:this.env.action&&(b._action=this.env.action);var e=this.env.comm_path,f,g={};a&&a.match(/([a-z0-9_-]+)\/([a-z0-9-_.]+)/)&&(b._action=RegExp.$2,
-e=e.replace(/\_task=[a-z0-9_-]+/,"_task="+RegExp.$1));for(f in b)void 0!==b[f]&&null!==b[f]&&(g[f]=b[f]);if(g=$.param(g))e+=(-1<e.indexOf("?")?"&":"?")+g;d&&(e+=(-1<e.indexOf("?")?"&":"?")+d);return e};this.redirect=function(a,b){(b||null===b)&&this.set_busy(!0);this.is_framed()?parent.rcmail.redirect(a,b):(this.env.extwin&&("string"==typeof a?a+=(0>a.indexOf("?")?"?":"&")+"_extwin=1":a._extwin=1),this.location_href(a,window))};this.goto_url=function(a,b,d){this.redirect(this.url(a,b),d)};this.location_href=
-function(a,b,d){d&&this.lock_frame();"object"==typeof a&&(a=this.env.comm_path+"&"+$.param(a));bw.ie&&b==window?$("<a>").attr("href",a).appendTo(document.body).get(0).click():b.location.href=a;this.start_keepalive()};this.update_state=function(a){window.history.replaceState&&window.history.replaceState({},document.title,rcmail.url("",a))};this.http_request=function(a,b,d){"object"!==typeof b&&(b=rcube_parse_query(b));b._remote=1;b._unlock=d?d:0;var e=this.triggerEvent("request"+a,b);if(!1===e)return b._unlock&&
-this.set_busy(!1,null,b._unlock),!1;void 0!==e&&(b=e,b._action&&(a=b._action,delete b._action));b=this.url(a,b);this.log("HTTP GET: "+b);this.start_keepalive();return $.ajax({type:"GET",url:b,dataType:"json",success:function(a){g.http_response(a)},error:function(b,e,m){g.http_error(b,e,m,d,a)}})};this.http_post=function(a,b,d){"object"!==typeof b&&(b=rcube_parse_query(b));b._remote=1;b._unlock=d?d:0;var e=this.triggerEvent("request"+a,b);if(!1===e)return b._unlock&&this.set_busy(!1,null,b._unlock),
-!1;void 0!==e&&(b=e,b._action&&(a=b._action,delete b._action));e=this.url(a);this.log("HTTP POST: "+e);this.start_keepalive();return $.ajax({type:"POST",url:e,data:b,dataType:"json",success:function(a){g.http_response(a)},error:function(b,e,m){g.http_error(b,e,m,d,a)}})};this.abort_request=function(a){a.request&&a.request.abort();a.lock&&this.set_busy(!1,null,a.lock)};this.http_response=function(a){if(a){a.unlock&&this.set_busy(!1);this.triggerEvent("responsebefore",{response:a});this.triggerEvent("responsebefore"+
-a.action,{response:a});a.env&&this.set_env(a.env);if("object"===typeof a.texts)for(var b in a.texts)"string"===typeof a.texts[b]&&this.add_label(b,a.texts[b]);a.exec&&(this.log(a.exec),eval(a.exec));if(a.callbacks&&a.callbacks.length)for(b=0;b<a.callbacks.length;b++)this.triggerEvent(a.callbacks[b][0],a.callbacks[b][1]);switch(a.action){case "delete":if("addressbook"==this.task){var d;b=this.contact_list.get_selection();d=!1;b&&this.contact_list.rows[b]&&(d=""==this.env.source?(d=String(b).replace(/^[^-]+-/,
-""))&&this.env.address_sources[d]&&!this.env.address_sources[d].readonly:!this.env.address_sources[this.env.source].readonly);this.enable_command("compose",b&&this.contact_list.rows[b]);this.enable_command("delete","edit",d);this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount);this.enable_command("export-selected","print",!1)}case "move":"show"==this.env.action?(this.enable_command(this.env.message_commands,!0),this.env.list_post||this.enable_command("reply-list",!1)):"addressbook"==
-this.task&&this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount});case "purge":case "expunge":"mail"==this.task&&(this.env.exists||(this.env.contentframe&&this.show_contentframe(!1),this.enable_command(this.env.message_commands,"purge","expunge","select-all","select-none","expand-all","expand-unread","collapse-all",!1)),this.message_list&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount}));break;case "refresh":case "check-recent":$.each(this.env.recent_flags||
-{},function(a,b){g.set_message(a,"deleted",b.deleted);g.set_message(a,"replied",b.answered);g.set_message(a,"unread",!b.seen);g.set_message(a,"forwarded",b.forwarded);g.set_message(a,"flagged",b.flagged)}),delete this.env.recent_flags;case "getunread":case "search":this.env.qsearch=null;case "list":if("mail"==this.task){d=this.is_multifolder_listing();var e=this.message_list;b=this.env.list_uid;this.enable_command("show","select-all","select-none",0<this.env.messagecount);this.enable_command("expunge",
-this.env.exists&&!d);this.enable_command("purge",this.purge_mailbox_test()&&!d);this.enable_command("import-messages",!d);this.enable_command("expand-all","expand-unread","collapse-all",this.env.threading&&this.env.messagecount&&!d);if(e){if("list"==a.action||"search"==a.action)b&&(e.rows[b]||(b+="-"+this.env.mailbox),e.rows[b]&&e.select(b),delete this.env.list_uid),this.enable_command("set-listmode",this.env.threads&&!d),0<e.rowcount&&!$(document.activeElement).is("input,textarea")&&e.focus(),this.msglist_select(e);
-"getunread"!=a.action&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:e.rowcount})}}else"addressbook"==this.task&&(this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount),"list"==a.action||"search"==a.action)&&(this.enable_command("search-create",""==this.env.source),this.enable_command("search-delete",this.env.search_id),this.update_group_commands(),0<this.contact_list.rowcount&&!$(document.activeElement).is("input,textarea")&&this.contact_list.focus(),this.triggerEvent("listupdate",
-{folder:this.env.source,rowcount:this.contact_list.rowcount}));break;case "list-contacts":case "search-contacts":this.contact_list&&0<this.contact_list.rowcount&&this.contact_list.focus()}a.unlock&&this.hide_message(a.unlock);this.triggerEvent("responseafter",{response:a});this.triggerEvent("responseafter"+a.action,{response:a});this.start_keepalive()}};this.http_error=function(a,b,d,e,f){d=a.statusText;this.set_busy(!1,null,e);a.abort();this.unload||(a.status&&d?this.display_message(this.get_label("servererror")+
-" ("+d+")","error"):"timeout"==b?this.display_message(this.get_label("requesttimedout"),"error"):0==a.status&&"abort"!=b&&this.display_message(this.get_label("connerror"),"error"),(b=a.getResponseHeader("Location"))&&"compose"!=this.env.action&&this.redirect(b),403==a.status?(this.is_framed()?parent:window).location.reload():"keep-alive"==f&&setTimeout(function(){g.keep_alive();g.start_keepalive()},3E4))};this.session_error=function(a){this.env.server_error=401;"compose"==this.env.action?(this.save_compose_form_local(),
-this.compose_skip_unsavedcheck=!0):a&&setTimeout(function(){g.redirect(a,!0)},2E3)};this.iframe_loaded=function(a){this.set_busy(!1,null,a);this.submit_timer&&clearTimeout(this.submit_timer)};this.multi_thread_http_request=function(a){var b,d,e=(new Date).getTime(),f=a.threads||1;a.reqid=e;a.running=0;a.requests=[];a.result=[];a._items=$.extend([],a.items);a.lock||(a.lock=this.display_message(this.get_label("loading"),"loading"));this.http_request_jobs[e]=a;for(b=0;b<f;b++){d=a._items.shift();if(void 0===
-d)break;a.running++;a.requests.push(this.multi_thread_send_request(a,d))}return e};this.multi_thread_send_request=function(a,b){var d,e,f;if(a.postdata){e={};for(d in a.postdata)e[d]=String(a.postdata[d]).replace("%s",b);e._reqid=a.reqid}else if("string"==typeof a.query)f=a.query.replace("%s",b),f+="&_reqid="+a.reqid;else if("object"==typeof a.query&&a.query){f={};for(d in a.query)f[d]=String(a.query[d]).replace("%s",b);f._reqid=a.reqid}return e?this.http_post(a.action,e):this.http_request(a.action,
-f)};this.multi_thread_http_response=function(a,b){var d=this.http_request_jobs[b];if(d&&!(0>=d.running||d.cancelled)){d.running--;if(d.onresponse&&"function"==typeof d.onresponse)d.onresponse(a);d.result=$.extend(d.result,a);var e=d._items.shift();void 0!==e?(d.running++,d.requests.push(this.multi_thread_send_request(d,e))):0==d.running&&(d.whendone&&"function"==typeof d.whendone&&d.whendone(d.result),this.set_busy(!1,"",d.lock),delete this.http_request_jobs[b])}};this.multi_thread_request_abort=
-function(a){if(a=this.http_request_jobs[a]){for(var b=0;0<a.running&&b<a.requests.length;b++)a.requests[b].abort&&a.requests[b].abort();a.running=0;a.cancelled=!0;this.set_busy(!1,"",a.lock)}};this.async_upload_form=function(a,b,d){var e=(new Date).getTime(),f="rcmupload"+e,g=this.async_upload_form_frame(f);if(this.env.upload_progress_name){var m=this.env.upload_progress_name,k=$("input[name="+m+"]",a);k.length||(k=$("<input>").attr({type:"hidden",name:m}),k.prependTo(a));k.val(e)}g.bind("load",{ts:e},
-d);$(a).attr({target:f,action:this.url(b,{_id:this.env.compose_id||"",_uploadid:e,_from:this.env.action}),method:"POST"}).attr(a.encoding?"encoding":"enctype","multipart/form-data").submit();return f};this.async_upload_form_frame=function(a){return $("<iframe>").attr({name:a,style:"border: none; width: 0; height: 0; visibility: hidden"}).appendTo(document.body)};this.document_drag_hover=function(a,b){a.preventDefault();$(this.gui_objects.filedrop)[b?"addClass":"removeClass"]("active")};this.file_drag_hover=
-function(a,b){a.preventDefault();a.stopPropagation();$(this.gui_objects.filedrop)[b?"addClass":"removeClass"]("hover")};this.file_dropped=function(a){this.file_drag_hover(a,!1);var b=a.target.files||a.dataTransfer.files,d=window.FormData?new FormData:null,e=(this.env.filedrop.fieldname||"_file")+(this.env.filedrop.single?"":"[]"),f="------multipartformboundary"+(new Date).getTime(),h="--"+f+"\r\n";if(b&&b.length)for(var m=function(){var a=1<b.length,e=(new Date).getTime(),a=$("<span>").text(a?g.get_label("uploadingmany"):
-b[0].name).html();g.add2attachment_list(e,{name:"",html:a,classname:"uploading",complete:!1})||(g.file_upload_id=g.set_busy(!0,"uploading"));h+="--"+f+"--\r\n";$.ajax({type:"POST",dataType:"json",url:g.url(g.env.filedrop.action||"upload",{_id:g.env.compose_id||g.env.cid||"",_uploadid:e,_remote:1,_from:g.env.action}),contentType:d?!1:"multipart/form-data; boundary="+f,processData:!1,timeout:0,data:d||h,headers:{"X-Roundcube-Request":g.env.request_token},xhr:function(){var a=jQuery.ajaxSettings.xhr();
-!d&&a.sendAsBinary&&(a.send=a.sendAsBinary);return a},success:function(a){g.http_response(a)},error:function(a,b,d){g.http_error(a,b,d,null,"attachment")}})},k=this.env.filedrop.single?0:b.length-1,n=a=0,l;a<=k&&(l=b[n]);n++)if(l.name||(l.name=l.fileName),l.size||(l.size=l.fileSize),l.type||(l.type="application/octet-stream"),!d&&/[^\x20-\x7E]/.test(l.name)&&(l.name_bin=unescape(encodeURIComponent(l.name))),!this.env.filedrop.filter||l.type.match(RegExp(this.env.filedrop.filter))){if(d){if(d.append(e,
-l),a==k)return m()}else if(window.FileReader){var p=new FileReader;p.onload=function(a,b){return function(d){h+='Content-Disposition: form-data; name="'+e+'"';h+='; filename="'+(l.name_bin||a.name)+'"\r\n';h+="Content-Length: "+a.size+"\r\n";h+="Content-Type: "+a.type+"\r\n\r\n";h+=p.result+"\r\n";h+="--"+f+"\r\n";if(b==k)return m()}}(l,a);p.readAsBinaryString(l)}else if(l.getAsBinary&&(h+='Content-Disposition: form-data; name="'+e+'"',h+='; filename="'+(l.name_bin||l.name)+'"\r\n',h+="Content-Length: "+
-l.size+"\r\n",h+="Content-Type: "+l.type+"\r\n\r\n",h+=l.getAsBinary()+"\r\n",h+="--"+f+"\r\n",a==k))return m();a++}};this.start_keepalive=function(){!this.env.session_lifetime||this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._keepalive&&clearInterval(this._keepalive),this._keepalive=setInterval(function(){g.keep_alive()},500*this.env.session_lifetime))};this.start_refresh=function(){!this.env.refresh_interval||this.env.framed||this.env.extwin||"login"==this.task||
-"print"==this.env.action||(this._refresh&&clearInterval(this._refresh),this._refresh=setInterval(function(){g.refresh()},1E3*this.env.refresh_interval))};this.keep_alive=function(){this.busy||this.http_request("keep-alive")};this.refresh=function(){if(this.busy)setTimeout(function(){g.refresh();g.start_refresh()},1E4);else{var a={},b=this.set_busy(!0,"refreshing");"mail"==this.task&&this.gui_objects.mailboxlist&&(a=this.check_recent_params());a._last=Math.floor(this.env.lastrefresh.getTime()/1E3);
-this.env.lastrefresh=new Date;this.http_post("refresh",a,b)}};this.check_recent_params=function(){var a={_mbox:this.env.mailbox};this.gui_objects.mailboxlist&&(a._folderlist=1);this.gui_objects.quotadisplay&&(a._quota=1);this.env.search_request&&(a._search=this.env.search_request);this.gui_objects.messagelist&&(a._list=1,a._uids=$.map(this.message_list.rows,function(a,d){return d}).join(","));return a};this.quote_html=function(a){return String(a).replace(/</g,"<").replace(/>/g,">").replace(/"/g,
-""")};this.opener=function(a,b){var d,e=window.opener;try{if(e&&!e.closed){a&&(!e.rcmail||e.rcmail.env.framed)&&e.parent&&e.parent.rcmail&&(e=e.parent);if(e.rcmail&&b)for(d in b)if(e.rcmail.env[d]!=b[d])return;return e.rcmail}}catch(f){}};this.get_single_uid=function(){var a=this.env.uid||(this.message_list?this.message_list.get_single_selection():null);return g.triggerEvent("get_single_uid",{uid:a})||a};this.get_single_cid=function(){var a=this.env.cid||(this.contact_list?this.contact_list.get_single_selection():
-null);return g.triggerEvent("get_single_cid",{cid:a})||a};this.get_message_mailbox=function(a){return((this.env.messages&&a?this.env.messages[a]:null)||{}).mbox||this.env.mailbox};this.params_from_uid=function(a,b){b||(b={});b._uid=String(a).split("-")[0];b._mbox=this.get_message_mailbox(a);return b};this.get_caret_pos=function(a){return void 0!==a.selectionEnd?a.selectionEnd:a.value.length};this.set_caret_pos=function(a,b){try{a.setSelectionRange&&a.setSelectionRange(b,b)}catch(d){}};this.get_input_selection=
-function(a){var b=0,d=0,e="";"number"==typeof a.selectionStart&&"number"==typeof a.selectionEnd&&(e=a.value,b=a.selectionStart,d=a.selectionEnd);return{start:b,end:d,text:e.substr(b,d-b)}};this.lock_form=function(a,b){if(a&&a.elements){var d,e,f;b&&(this.disabled_form_elements=[]);d=0;for(e=a.elements.length;d<e;d++)if(f=a.elements[d],"hidden"!=f.type)if(b&&f.disabled)this.disabled_form_elements.push(f);else if(b||0>$.inArray(f,this.disabled_form_elements))f.disabled=b}};this.mailto_handler_uri=function(){return location.href.split("?")[0]+
-"?_task=mail&_action=compose&_to=%s"};this.register_protocol_handler=function(a){try{window.navigator.registerProtocolHandler("mailto",this.mailto_handler_uri(),a)}catch(b){this.display_message(String(b),"error")}};this.check_protocol_handler=function(a,b){var d=window.navigator;d&&"function"==typeof d.registerProtocolHandler?"function"==typeof d.isProtocolHandlerRegistered?(d=d.isProtocolHandlerRegistered("mailto",this.mailto_handler_uri()))&&$(b).parent().find(".mailtoprotohandler-status").html(d):
-$(b).click(function(){g.register_protocol_handler(a);return!1}):$(b).addClass("disabled").click(function(){return!1})};this.browser_capabilities_check=function(){this.env.browser_capabilities||(this.env.browser_capabilities={});void 0===this.env.browser_capabilities.pdf&&(this.env.browser_capabilities.pdf=this.pdf_support_check());void 0===this.env.browser_capabilities.flash&&(this.env.browser_capabilities.flash=this.flash_support_check());void 0===this.env.browser_capabilities.tif&&this.tif_support_check()};
-this.browser_capabilities=function(){if(!this.env.browser_capabilities)return"";var a,b=[];for(a in this.env.browser_capabilities)b.push(a+"="+this.env.browser_capabilities[a]);return b.join()};this.tif_support_check=function(){var a=new Image;a.onload=function(){g.env.browser_capabilities.tif=1};a.onerror=function(){g.env.browser_capabilities.tif=0};a.src=this.assets_path("program/resources/blank.tif")};this.pdf_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/pdf"]:
-{},b=navigator.plugins,d=b.length,e=/Adobe Reader|PDF|Acrobat/i;if(a&&a.enabledPlugin)return 1;if("ActiveXObject"in window){try{if(new ActiveXObject("AcroPDF.PDF"))return 1}catch(f){}try{if(new ActiveXObject("PDF.PdfCtrl"))return 1}catch(g){}}for(i=0;i<d;i++)if(a=b[i],"String"===typeof a){if(e.test(a))return 1}else if(a.name&&e.test(a.name))return 1;return 0};this.flash_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/x-shockwave-flash"]:{};if(a&&a.enabledPlugin)return 1;
-if("ActiveXObject"in window)try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return 1}catch(b){}return 0};this.assets_path=function(a){this.env.assets_path&&!a.startsWith(this.env.assets_path)&&(a=this.env.assets_path+a);return a};this.set_cookie=function(a,b,d){setCookie(a,b,d,this.env.cookie_path,this.env.cookie_domain,this.env.cookie_secure)};this.get_local_storage_prefix=function(){this.local_storage_prefix||(this.local_storage_prefix="roundcube."+(this.env.user_id||"anonymous")+".");
-return this.local_storage_prefix};this.local_storage_get_item=function(a,b,d){var e,f;try{e=localStorage.getItem(this.get_local_storage_prefix()+a),f=JSON.parse(e)}catch(g){}return f||b||null};this.local_storage_set_item=function(a,b,d){try{return localStorage.setItem(this.get_local_storage_prefix()+a,JSON.stringify(b)),!0}catch(e){return!1}};this.local_storage_remove_item=function(a){try{return localStorage.removeItem(this.get_local_storage_prefix()+a),!0}catch(b){return!1}};this.print_dialog=function(){bw.safari?
-setTimeout("window.print()",10):window.print()}}rcube_webmail.long_subject_title=function(g,u){if(!g.title){var a=$(g);a.width()+15*(u||0)>a.parent().width()&&(g.title=rcube_webmail.subject_text(g))}};
+(d._page=b);this.http_request("list",d,e);this.update_state({_mbox:a,_page:b&&1<b?b:null})};this.update_selection=function(){var a=this.message_list,b=a.selection,d=a.rows,e,f=[];for(e in b)d[b[e]]&&f.push(b[e]);a.selection=f;try{var h=this.get_frame_window(this.env.contentframe).rcmail.env.uid;h&&!a.in_selection(h)&&this.show_contentframe(!1)}catch(g){}};this.expand_unread=function(){for(var a,b=this.message_list.tbody.firstChild;b;)1==b.nodeType&&(a=this.message_list.rows[b.uid])&&a.unread_children&&
+(this.message_list.expand_all(a),this.set_unread_children(a.uid)),b=b.nextSibling;return!1};this.expand_message_row=function(a,b){var d=this.message_list.rows[b];d.expanded=!d.expanded;this.set_unread_children(b);d.expanded=!d.expanded;this.message_list.expand_row(a,b)};this.expand_threads=function(){if(this.env.threading&&this.env.autoexpand_threads&&this.message_list)switch(this.env.autoexpand_threads){case 2:this.expand_unread();break;case 1:this.message_list.expand_all()}};this.init_threads=function(a,
+b){if(b&&b!=this.env.mailbox)return!1;for(var d=0,e=a.length;d<e;d++)this.add_tree_icons(a[d]);this.expand_threads()};this.add_tree_icons=function(a){var b,d,e,f,h=[],g=[],k,n=this.message_list.rows;for(k=a?n[a]?n[a].obj:null:this.message_list.tbody.firstChild;k;){if(1==k.nodeType&&(d=n[k.uid]))if(d.depth){for(b=h.length-1;0<=b&&!(e=h[b].length,e>d.depth?(f=e-d.depth,h[b][f]&2||(h[b][f]=h[b][f]?h[b][f]+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;g.push(d.uid)}else{if(h.length){for(b in h)this.set_tree_icons(g[b],h[b]);h=[];g=[]}if(a&&k!=n[a].obj)break}k=k.nextSibling}if(h.length)for(b in h)this.set_tree_icons(g[b],h[b])};this.set_tree_icons=function(a,b){var d,e=[],f="",h=b.length;for(d=0;d<h;d++)2<b[d]?e.push({"class":"l3",width:15}):1<b[d]?e.push({"class":"l2",width:15}):0<b[d]?e.push({"class":"l1",width:15}):e.length&&!e[e.length-1]["class"]?e[e.length-1].width+=15:e.push({"class":null,width:15});for(d=e.length-1;0<=d;d--)f=e[d]["class"]?
+f+('<div class="tree '+e[d]["class"]+'" />'):f+('<div style="width:'+e[d].width+'px" />');f&&$("#rcmtab"+this.html_identifier(a,!0)).html(f)};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,f=e[a],h=e[a].depth,m=[];f.depth?f.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=f.parent_uid;for(f=f.obj.nextSibling;f;){if(1==f.nodeType&&(b=e[f.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&&m.length&&m[m.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").bind("mousedown",{uid:b.uid},function(a){return g.expand_message_row(a,a.data.uid)}),b.unread_children=0,m.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}f=f.nextSibling}for(b=0;b<m.length;b++)this.set_unread_children(m[b].uid);return d};this.delete_excessive_thread_rows=function(){for(var a=this.message_list.rows,b=this.message_list.tbody.firstChild,d=this.env.pagesize+1;b;)1==
+b.nodeType&&(r=a[b.uid])&&(!r.depth&&d&&d--,d||this.message_list.remove_row(b.uid)),b=b.nextSibling};this.set_message_icon=function(a){var b="",d=this.message_list.rows[a];if(!d)return!1;d.icon&&(a="msgicon",d.deleted?(a+=" deleted",b+=this.get_label("deleted")+" "):d.unread?(a+=" unread",b+=this.get_label("unread")+" "):d.unread_children&&(a+=" unreadchildren"),d.msgicon==d.icon&&(d.replied&&(a+=" replied",b+=this.get_label("replied")+" "),d.forwarded&&(a+=" forwarded",b+=this.get_label("forwarded")+
+" "),a+=" status"),$(d.icon).attr("class",a).attr("title",b));d.msgicon&&d.msgicon!=d.icon&&(b="",a="msgicon",!d.unread&&d.unread_children&&(a+=" unreadchildren"),d.replied&&(a+=" replied",b+=this.get_label("replied")+" "),d.forwarded&&(a+=" forwarded",b+=this.get_label("forwarded")+" "),$(d.msgicon).attr("class",a).attr("title",b));d.flagicon&&(a=d.flagged?"flagged":"unflagged",b=this.get_label(a),$(d.flagicon).attr("class",a).attr("aria-label",b).attr("title",b))};this.set_message_status=function(a,
+b,d){var e=this.message_list.rows[a];if(!e)return!1;"unread"==b&&e.unread!=d&&this.update_thread_root(a,d?"unread":"read");-1<$.inArray(b,["unread","deleted","replied","forwarded","flagged"])&&(e[b]=d)};this.set_message=function(a,b,d){var e=this.message_list&&this.message_list.rows[a];if(!e)return!1;b&&this.set_message_status(a,b,d);if(-1<$.inArray(b,["unread","deleted","flagged"]))$(e.obj)[e[b]?"addClass":"removeClass"](b);this.set_unread_children(a);this.set_message_icon(a)};this.set_unread_children=
+function(a){a=this.message_list.rows[a];a.parent_uid||(a.unread||!a.unread_children||a.expanded?$(a.obj).removeClass("unroot"):$(a.obj).addClass("unroot"))};this.copy_messages=function(a,b){if(a&&"object"===typeof a)a=a.id;else if(!a)return this.folder_selector(b,function(a){g.command("copy",a)});if(a&&a!=this.env.mailbox){var d=this.selection_post_data({_target_mbox:a});d._uid&&this.http_post("copy",d,this.display_message(this.get_label("copyingmessage"),"loading"))}};this.move_messages=function(a,
+b){if(a&&"object"===typeof a)a=a.id;else if(!a)return this.folder_selector(b,function(a){g.command("move",a)});if(a&&(a!=this.env.mailbox||this.is_multifolder_listing())){var d=!1,e=this.selection_post_data({_target_mbox:a});e._uid&&("show"==this.env.action?d=this.set_busy(!0,"movingmessage"):this.show_contentframe(!1),this.enable_command(this.env.message_commands,!1),this._with_selected_messages("move",e,d))}};this.delete_messages=function(a){var b=this.message_list,d=this.env.trash_mailbox;if(this.env.flag_for_deletion)return this.mark_message("delete"),
+!1;d&&this.env.mailbox!=d?this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox?this.permanently_remove_messages():b&&b.modkey==SHIFT_KEY||a&&rcube_event.get_modifier(a)==SHIFT_KEY?confirm(this.get_label("deletemessagesconfirm"))&&this.permanently_remove_messages():this.move_messages(d):this.permanently_remove_messages();return!0};this.permanently_remove_messages=function(){var a=this.selection_post_data();a._uid&&(this.show_contentframe(!1),this._with_selected_messages("delete",
+a))};this._with_selected_messages=function(a,b,d){var e=0,f="delete"==a||!this.is_multifolder_listing();if(this.message_list){var h,g,k,n=[],l=this.message_list.get_selection();h=0;for(len=l.length;h<len;h++)g=l[h],this.env.threading&&(e+=this.update_thread(g),k=this.message_list.find_root(g),k!=g&&0>$.inArray(k,n)&&n.push(k)),f&&this.message_list.remove_row(g,this.env.display_next&&h==l.length-1);!this.env.display_next&&f&&this.message_list.clear_selection();h=0;for(len=n.length;h<len;h++)this.add_tree_icons(n[h])}0>
+e?b._count=-1*e:0<e&&f&&this.delete_excessive_thread_rows();f||(b._refresh=1);d||(d=this.display_message(this.get_label("move"==a?"movingmessage":"deletingmessage"),"loading"));this.http_post(a,b,d)};this.selection_post_data=function(a){"object"!=typeof a&&(a={});a._mbox=this.env.mailbox;if(!a._uid){var b=this.env.uid?[this.env.uid]:this.message_list.get_selection();a._uid=this.uids_to_list(b)}this.env.action&&(a._from=this.env.action);this.env.search_request&&(a._search=this.env.search_request);
+this.env.display_next&&this.env.next_uid&&(a._next_uid=this.env.next_uid);return a};this.mark_message=function(a,b){var d=[],e=[],f,h,g,k=this.message_list;b?d[0]=b:this.env.uid?d[0]=this.env.uid:k&&(d=k.get_selection());if(k)for(k.focus(),h=0,f=d.length;h<f;h++)g=d[h],("read"==a&&k.rows[g].unread||"unread"==a&&!k.rows[g].unread||"delete"==a&&!k.rows[g].deleted||"undelete"==a&&k.rows[g].deleted||"flagged"==a&&!k.rows[g].flagged||"unflagged"==a&&k.rows[g].flagged)&&e.push(g);else e=d;if(e.length||
+this.select_all_mode)switch(a){case "read":case "unread":this.toggle_read_status(a,e);break;case "delete":case "undelete":this.toggle_delete_status(e);break;case "flagged":case "unflagged":this.toggle_flagged_status(a,d)}};this.toggle_read_status=function(a,b){var d,e=b.length,f=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],"unread","unread"==a?!0:!1);this.http_post("mark",f,h)};
+this.toggle_flagged_status=function(a,b){var d,e=b.length,f=this.selection_post_data({_uid:this.uids_to_list(b),_flag:a}),h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],"flagged","flagged"==a?!0:!1);this.http_post("mark",f,h)};this.toggle_delete_status=function(a){var b=a.length,d,e,f=!0,h=this.message_list?this.message_list.rows:{};if(1==b)return!this.message_list||h[a[0]]&&!h[a[0]].deleted?this.flag_as_deleted(a):this.flag_as_undeleted(a),
+!0;for(d=0;d<b;d++)if(e=a[d],h[e]&&!h[e].deleted){f=!1;break}f?this.flag_as_undeleted(a):this.flag_as_deleted(a);return!0};this.flag_as_undeleted=function(a){var b,d=a.length,e=this.selection_post_data({_uid:this.uids_to_list(a),_flag:"undelete"}),f=this.display_message(this.get_label("markingmessage"),"loading");for(b=0;b<d;b++)this.set_message(a[b],"deleted",!1);this.http_post("mark",e,f)};this.flag_as_deleted=function(a){for(var b=[],d=this.selection_post_data({_uid:this.uids_to_list(a),_flag:"delete"}),
+e=this.display_message(this.get_label("markingmessage"),"loading"),f=this.message_list?this.message_list.rows:{},h=0,g=0,k=a.length;g<k;g++)uid=a[g],f[uid]&&(f[uid].unread&&(b[b.length]=uid),this.env.skip_deleted?(h+=this.update_thread(uid),this.message_list.remove_row(uid,this.env.display_next&&g==this.message_list.selection.length-1)):this.set_message(uid,"deleted",!0));this.env.skip_deleted&&this.message_list&&(this.env.display_next||this.message_list.clear_selection(),0>h?d._count=-1*h:0<h&&this.delete_excessive_thread_rows());
+b.length&&(d._ruid=this.uids_to_list(b));this.env.skip_deleted&&this.env.display_next&&this.env.next_uid&&(d._next_uid=this.env.next_uid);this.http_post("mark",d,e)};this.flag_deleted_as_read=function(a){var b,d,e,f=this.message_list?this.message_list.rows:{};"string"==typeof a&&(a=a.split(","));d=0;for(e=a.length;d<e;d++)b=a[d],f[b]&&this.set_message(b,"unread",!1)};this.uids_to_list=function(a){return this.select_all_mode?"*":1>=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.expunge_mailbox=function(a){var b,d={_mbox:a};a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d._reload=1,this.env.search_request&&(d._search=this.env.search_request));this.http_post("expunge",d,b)};this.purge_mailbox=function(a){var b,d={_mbox:a};if(!confirm(this.get_label("purgefolderconfirm")))return!1;
+a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d._reload=1);this.http_post("purge",d,b)};this.purge_mailbox_test=function(){return this.env.exists&&(this.env.mailbox==this.env.trash_mailbox||this.env.mailbox==this.env.junk_mailbox||this.env.mailbox.startsWith(this.env.trash_mailbox+this.env.delimiter)||this.env.mailbox.startsWith(this.env.junk_mailbox+this.env.delimiter))};this.login_user_keyup=function(a){var b=rcube_event.get_keycode(a),d=$("#rcmloginpwd");return 13==b&&d.length&&!d.val()?
+(d.focus(),rcube_event.cancel(a)):!0};this.open_compose_step=function(a){a=this.url("mail/compose",a);this.env.compose_extwin&&!this.env.extwin?this.open_window(a):(this.redirect(a),this.env.extwin&&window.resizeTo(Math.max(this.env.popup_width,$(window).width()),$(window).height()+24))};this.init_messageform=function(){if(!this.gui_objects.messageform)return!1;var a,b,d=$("[name='_from']"),e=$("[name='_to']"),f=$("input[name='_subject']"),h=$("[name='_message']").get(0),g="1"==$("input[name='_is_html']").val(),
+k=["cc","bcc","replyto","followupto"],n,l=this.opener();l&&"compose"==l.env.action&&(setTimeout(function(){1<opener.history.length?opener.history.back():l.redirect(l.get_task_url("mail"))},100),this.env.opened_extwin=!0);0<this.env.autocomplete_threads&&(n={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources});this.init_address_input_events(e,n);for(a in k)this.init_address_input_events($("[name='_"+k[a]+"']"),n);g||(a=this.env.top_posting?0:h.value.length,"select-one"==d.prop("type")&&
+this.change_identity(d[0]),this.set_caret_pos(h,a),a&&$(h).scrollTop(h.scrollHeight));this.env.save_localstorage&&this.compose_restore_dialog(0,g);""==e.val()?b=e:""==f.val()?b=f:h&&(b=h);$(b).filter(":visible").focus();this.env.compose_focus_elem=document.activeElement;this.compose_field_hash(!0);this.auto_save_start()};this.compose_restore_dialog=function(a,b){var d,e,f,h=this.local_storage_get_item("compose.index",[]),m=function(a){++a<h.length&&g.compose_restore_dialog(a,b)};for(d=a||0;d<h.length;d++)if(e=
+h[d],f=this.local_storage_get_item("compose."+e,null,!0)){if(f.changed&&e==this.env.compose_id){this.restore_compose_form(e,b);break}if(!(this.env.draft_id&&f.draft_id&&f.draft_id!=this.env.draft_id||this.env.reply_msgid&&f.reply_msgid!=this.env.reply_msgid)&&f.changed&&f.session!=this.env.session_id){this.show_popup_dialog(this.get_label("restoresavedcomposedata").replace("$date",(new Date(f.changed)).toLocaleString()).replace("$subject",f._subject).replace(/\n/g,"<br/>"),this.get_label("restoremessage"),
+[{text:this.get_label("restore"),"class":"mainaction",click:function(){g.restore_compose_form(e,b);g.remove_compose_data(e);g.save_compose_form_local();$(this).dialog("close")}},{text:this.get_label("delete"),"class":"delete",click:function(){g.remove_compose_data(e);$(this).dialog("close");m(d)}},{text:this.get_label("ignore"),click:function(){$(this).dialog("close");m(d)}}]);break}}};this.init_address_input_events=function(a,b){this.env.recipients_delimiter=this.env.recipients_separator+" ";a.keydown(function(a){return g.ksearch_keydown(a,
+this,b)}).attr({autocomplete:"off","aria-autocomplete":"list","aria-expanded":"false",role:"combobox"})};this.submit_messageform=function(a,b){var d=this.gui_objects.messageform;if(d){if(!b&&this.env.is_sent)return this.show_popup_dialog(this.get_label("messageissent"),"",[{text:this.get_label("save"),"class":"mainaction",click:function(){g.submit_messageform(!1,!0);$(this).dialog("close")}},{text:this.get_label("cancel"),click:function(){$(this).dialog("close")}}]);var e=this.set_busy(!0,a||b?"savingmessage":
+"sendingmessage"),f=this.spellcheck_lang(),h=[];$("li",this.gui_objects.attachmentlist).each(function(){h.push(this.id.replace(/^rcmfile/,""))});$('input[name="_attachments"]',d).val(h.join());d.target="savetarget";d._draft.value=a?"1":"";d.action=this.add_url(d.action,"_unlock",e);d.action=this.add_url(d.action,"_lang",f);d.action=this.add_url(d.action,"_framed",1);b&&(d.action=this.add_url(d.action,"_saveonly",1));this.submit_timer=setTimeout(function(){g.set_busy(!1,null,e);g.display_message(g.get_label("requesttimedout"),
+"error")},1E3*this.env.request_timeout);d.submit()}};this.compose_recipient_select=function(a){var b,d,e=0;for(d=0;d<a.selection.length;d++)b=a.selection[d],this.env.contactdata[b]&&e++;this.enable_command("add-recipient",e)};this.compose_add_recipient=function(a){a||(a=$(this.env.focused_field).filter(":visible"),a=a.length?a.attr("id").replace("_",""):"to");var b=[],d=$("#_"+a),e=this.env.recipients_delimiter;if(this.contact_list&&this.contact_list.selection.length)for(var f,h=0;h<this.contact_list.selection.length;h++)if((f=
+this.contact_list.selection[h])&&this.env.contactdata[f]&&(b.push(this.env.contactdata[f]),"E"==f.charAt(0)&&0>this.env.contactdata[f].indexOf("@")&&d.length)){var g=f.substr(1);this.group2expand[g]={name:this.env.contactdata[f],input:d.get(0)};this.http_request("group-expand",{_source:this.env.source,_gid:g},!1)}b.length&&d.length&&(f=d.val(),h=RegExp(RegExp.escape(e)+"\\s*$"),f&&!h.test(f)&&(f+=e+" "),d.val(f+b.join(e+" ")+e+" ").change(),this.triggerEvent("add-recipient",{field:a,recipients:b}));
+return b.length};this.check_compose_input=function(a){var b=$("[name='_to']"),d=$("[name='_cc']"),e=$("[name='_bcc']"),f=$("[name='_from']"),h=$("[name='_subject']");if("text"==f.prop("type")&&!rcube_check_email(f.val(),!0))return alert(this.get_label("nosenderwarning")),f.focus(),!1;d=b.val()?b.val():d.val()?d.val():e.val();if(!rcube_check_email(d.replace(/^\s+/,"").replace(/[\s,;]+$/,""),!0))return alert(this.get_label("norecipientwarning")),b.focus(),!1;for(var m in this.env.attachments)if("object"===
+typeof this.env.attachments[m]&&!this.env.attachments[m].complete)return alert(this.get_label("notuploadedwarning")),!1;if(""==h.val()){var b={},k=$('<div class="prompt">').html('<div class="message">'+this.get_label("nosubjectwarning")+"</div>").appendTo(document.body),n=$("<input>").attr({type:"text",size:30}).val(this.get_label("nosubject")).appendTo(k),l=function(){h.val(n.val());k.dialog("close");g.command(a,{nocheck:!0})};b[this.get_label("sendmessage")]=function(){l($(this))};b[this.get_label("cancel")]=
+function(){h.focus();$(this).dialog("close")};k.dialog({modal:!0,resizable:!1,buttons:b,close:function(a,b){$(this).remove()}});n.select().keydown(function(a){13==a.which&&l()});return!1}if(!this.editor.get_content()&&!confirm(this.get_label("nobodywarning")))return this.editor.focus(),!1;this.editor.save();return!0};this.toggle_editor=function(a,b,d){b=this.editor.toggle(a.html,a.noconvert||!1);a.mode=a.html?"html":"plain";!b&&d&&(a.mode=a.html?"plain":"html",$(d.target).filter("select").val(a.mode));
+b&&$("input[name='_is_html']").val(a.html?1:0);return b};this.insert_response=function(a){a=this.env.textresponses[a]?this.env.textresponses[a].text:null;if(!a)return!1;this.editor.replace(a)};this.save_response=function(){var a={},b=this.editor.get_content({selection:!0,format:"text",nosig:!0}),d='<form class="propform"><div class="prop block"><label>'+this.get_label("responsename")+'</label><input type="text" name="name" id="ffresponsename" size="40" /></div><div class="prop block"><label>'+this.get_label("responsetext")+
+'</label><textarea name="text" id="ffresponsetext" cols="40" rows="8"></textarea></div></form>';a[this.gettext("save")]=function(a){a=$("#ffresponsename").val();var b=$("#ffresponsetext").val();if(!b)return $("#ffresponsetext").select(),!1;a||(a=b.substring(0,40));var d=g.display_message(g.get_label("savingresponse"),"loading");g.http_post("settings/responses",{_insert:1,_name:a,_text:b},d);$(this).dialog("close")};a[this.gettext("cancel")]=function(){$(this).dialog("close")};this.show_popup_dialog(d,
+this.gettext("newresponse"),a,{button_classes:["mainaction"]});$("#ffresponsetext").val(b);$("#ffresponsename").select()};this.add_response_item=function(a){var b=a.key;this.env.textresponses[b]=a;if(this.gui_objects.responseslist){var d=$("<li>").appendTo(this.gui_objects.responseslist);$("<a>").addClass("insertresponse active").attr("href","#").attr("rel",b).attr("tabindex","0").html(this.quote_html(a.name)).appendTo(d).mousedown(function(a){return rcube_event.cancel(a)}).bind("mouseup keypress",
+function(a){if("mouseup"==a.type||13==rcube_event.get_keycode(a))return g.command("insert-response",$(this).attr("rel")),$(document.body).trigger("mouseup"),rcube_event.cancel(a)})}};this.edit_responses=function(){};this.delete_response=function(a){!a&&this.responses_list&&(a=this.responses_list.get_selection()[0]);a&&confirm(this.get_label("deleteresponseconfirm"))&&this.http_post("settings/delete-response",{_key:a},!1)};this.spellcheck_state=function(){var a=this.editor.spellcheck_state();$.each(this.buttons.spellcheck||
+[],function(b,d){$("#"+d.id)[a?"addClass":"removeClass"]("selected")});return a};this.spellcheck_lang=function(){return this.editor.get_language()};this.spellcheck_lang_set=function(a){this.editor.set_language(a)};this.spellcheck_resume=function(a){this.editor.spellcheck_resume(a)};this.set_draft_id=function(a){if(a&&a!=this.env.draft_id){var b={task:"mail",action:""};(b=this.opener(!1,b)||this.opener(!0,b))&&b.env.mailbox==this.env.drafts_mailbox&&b.command("checkmail");this.env.draft_id=a;$("input[name='_draft_saveid']").val(a);
+window.frames.savetarget&&window.frames.savetarget.history&&!this.draft_autosave_submit&&window.frames.savetarget.history.back();this.draft_autosave_submit=!1}this.remove_compose_data(this.env.compose_id);this.compose_skip_unsavedcheck=!1};this.auto_save_start=function(){this.env.draft_autosave&&(this.draft_autosave_submit=!1,this.save_timer=setTimeout(function(){g.draft_autosave_submit=!0;g.command("savedraft")},1E3*this.env.draft_autosave));!this.local_save_timer&&window.localStorage&&this.env.save_localstorage&&
+(this.compose_type_activity=this.compose_type_activity_last=0,$(document).bind("keypress",function(a){g.compose_type_activity++}),this.local_save_timer=setInterval(function(){g.compose_type_activity>g.compose_type_activity_last&&(g.save_compose_form_local(),g.compose_type_activity_last=g.compose_type_activity)},5E3),$(window).unload(function(){g.env.server_error||g.remove_compose_data(g.env.compose_id)}));window.onbeforeunload||(window.onbeforeunload=function(){if(!g.compose_skip_unsavedcheck&&g.cmp_hash!=
+g.compose_field_hash())return g.get_label("notsentwarning")});this.busy=!1};this.compose_field_hash=function(a){var b,d,e,f="",h=["to","cc","bcc","subject"];for(b=0;b<h.length;b++)if(e=$('[name="_'+h[b]+'"]').val())f+=e+":";f+=this.editor.get_content({refresh:!1});if(this.env.attachments)for(d in this.env.attachments)f+=d;a&&(this.cmp_hash=f);return f};this.save_compose_form_local=function(){if(this.env.save_localstorage){var a={session:this.env.session_id,changed:(new Date).getTime()},b=!0;this.editor.save();
+this.env.draft_id&&(a.draft_id=this.env.draft_id);this.env.reply_msgid&&(a.reply_msgid=this.env.reply_msgid);$("input, select, textarea",this.gui_objects.messageform).each(function(d,e){switch(e.tagName.toLowerCase()){case "input":if("button"==e.type||"submit"==e.type||"hidden"==e.type&&"_is_html"!=e.name)break;a[e.name]="checkbox"!=e.type||e.checked?$(e).val():"";""!=a[e.name]&&"hidden"!=e.type&&(b=!1);break;case "select":a[e.name]=$("option:checked",e).val();break;default:a[e.name]=$(e).val(),""!=
+a[e.name]&&(b=!1)}});if(!b){var d=this.local_storage_get_item("compose.index",[]),e=this.env.compose_id;0>$.inArray(e,d)&&d.push(e);this.local_storage_set_item("compose."+e,a,!0);this.local_storage_set_item("compose.index",d)}}};this.restore_compose_form=function(a,b){var d=this.local_storage_get_item("compose."+a,!0);d&&"object"==typeof d&&($.each(d,function(a,b){if("_"==a[0]){var d=$("*[name='"+a+"']");d[0]&&"checkbox"==d[0].type?d.prop("checked",""!=b):d.val(b)}}),("1"==d._is_html&&!b||"1"!=d._is_html&&
+b)&&this.command("toggle-editor",{id:this.env.composebody,html:!b,noconvert:!0}))};this.remove_compose_data=function(a){var b=this.local_storage_get_item("compose.index",[]);0<=$.inArray(a,b)&&(this.local_storage_remove_item("compose."+a),this.local_storage_set_item("compose.index",$.grep(b,function(b,e){return b!=a})))};this.clear_compose_data=function(){var a,b=this.local_storage_get_item("compose.index",[]);for(a=0;a<b.length;a++)this.local_storage_remove_item("compose."+b[a]);this.local_storage_remove_item("compose.index")};
+this.change_identity=function(a,b){if(!a||!a.options)return!1;b||(b=this.env.show_sig);var d=a.options[a.selectedIndex].value,e=this.env.identity,f=this.env.recipients_separator,h=RegExp.escape(f);this.env.signatures&&this.env.signatures[d]?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig")):this.enable_command("insert-sig",!1);if(!this.env.identities_initialized&&(this.env.identities_initialized=!0,this.env.show_sig_later&&(this.env.show_sig=!0),this.env.opened_extwin))return;
+$.each(["replyto","bcc"],function(){var a,b=e&&g.env.identities[e]?g.env.identities[e][this]:"",n=d&&g.env.identities[d]?g.env.identities[d][this]:"",l=$('[name="_'+this+'"]'),p=l.val();b&&p&&(a=RegExp("\\s*"+RegExp.escape(b)+"\\s*"),p=p.replace(a,""));a=RegExp(h+"\\s*"+h,"g");p=String(p).replace(a,f);a=RegExp("^[\\s"+h+"]+");p=p.replace(a,"");n&&-1==p.indexOf(n)&&-1==p.indexOf(n.replace(/"/g,""))&&(p&&(a=RegExp("["+h+"\\s]+$"),p=p.replace(a,"")+f+" "),p+=n+f+" ");(b||n)&&l.val(p).change()});this.editor.change_signature(d,
+b);this.env.identity=d;this.triggerEvent("change_identity");return!0};this.upload_file=function(a,b,d){if(a){var e=0,f=0;$("input[type=file]",a).each(function(a,b){var d=b.files?b.files.length:b.value?1:0;if(b.files)for(a=0;a<d;a++)e+=b.files[a].size;f+=d});if(f){if(this.env.max_filesize&&this.env.filesizeerror&&e>this.env.max_filesize)return this.display_message(this.env.filesizeerror,"error"),!1;b=this.async_upload_form(a,b||"upload",function(a){var b,e="";try{this.contentDocument?b=this.contentDocument:
+this.contentWindow&&(b=this.contentWindow.document),e=b.childNodes[1].innerHTML}catch(f){}e.match(/add2attachment/)||bw.opera&&(!g.env.uploadframe||g.env.uploadframe!=a.data.ts)||(e.match(/display_message/)||g.display_message(g.get_label("fileuploaderror"),"error"),g.remove_from_attachment_list(a.data.ts),d&&g.set_busy(!1,null,d));bw.opera&&(g.env.uploadframe=a.data.ts)});var h="<span>"+this.get_label("uploading"+(1<f?"many":""))+"</span>",m=b.replace(/^rcmupload/,"");this.add2attachment_list(m,{name:"",
+html:h,classname:"uploading",frame:b,complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",m);this.gui_objects.attachmentform=a;return!0}}};this.add2attachment_list=function(a,b,d){d&&this.triggerEvent("fileuploaded",{name:a,attachment:b,id:d});this.env.attachments||(this.env.attachments={});d&&this.env.attachments[d]&&delete this.env.attachments[d];this.env.attachments[a]=b;if(!this.gui_objects.attachmentlist)return!1;!b.complete&&this.env.loadingicon&&(b.html='<img src="'+
+this.env.loadingicon+'" alt="" class="uploading" />'+b.html);!b.complete&&b.frame&&(b.html='<a title="'+this.get_label("cancel")+'" onclick="return rcmail.cancel_attachment_upload(\''+a+"', '"+b.frame+'\');" href="#cancelupload" class="cancelupload">'+(this.env.cancelicon?'<img src="'+this.env.cancelicon+'" alt="'+this.get_label("cancel")+'" />':this.get_label("cancel"))+"</a>"+b.html);var e,f=$("<li>");f.attr("id",a).addClass(b.classname).html(b.html).on("mouseover",function(){rcube_webmail.long_subject_title_ex(this)});
+d&&(e=document.getElementById(d))?f.replaceAll(e):f.appendTo(this.gui_objects.attachmentlist);a=$(this.gui_objects.attachmentlist).attr("data-tabindex")||"0";f.find("a").attr("tabindex",a);return!0};this.remove_from_attachment_list=function(a){this.env.attachments&&(delete this.env.attachments[a],$("#"+a).remove())};this.remove_attachment=function(a){a&&this.env.attachments[a]&&this.http_post("remove-attachment",{_id:this.env.compose_id,_file:a});return!0};this.cancel_attachment_upload=function(a,
+b){if(!a||!b)return!1;this.remove_from_attachment_list(a);$("iframe[name='"+b+"']").remove();return!1};this.upload_progress_start=function(a,b){setTimeout(function(){g.http_request(a,{_progress:b})},1E3*this.env.upload_progress_time)};this.upload_progress_update=function(a){var b=$("#"+a.name+" > span");b.length&&a.text&&(b.text(a.text),a.done||this.upload_progress_start(a.action,a.name))};this.add_contact=function(a){a&&this.http_post("addcontact",{_address:a});return!0};this.qsearch=function(a){if(""!=
+a){var b=this.set_busy(!0,"searching");a=this.search_params(a);var d="compose"==this.env.action&&this.contact_list?"search-contacts":"search";this.message_list?this.clear_message_list():this.contact_list&&this.list_contacts_clear();this.env.source&&(a._source=this.env.source);this.env.group&&(a._gid=this.env.group);this.env.current_page=1;a=this.http_request(d,a,b);this.env.qsearch={lock:b,request:a};this.enable_command("set-listmode",this.env.threads&&"base"==(this.env.search_scope||"base"));return!0}return!1};
+this.continue_search=function(a){var b=this.set_busy(!0,"stillsearching");setTimeout(function(){var d=g.search_params();d._continue=a;g.env.qsearch={lock:b,request:g.http_request("search",d,b)}},100)};this.search_params=function(a,b){var d,e={},f=[],h=this.env.search_mods,g=this.env.search_scope||"base",k="all"==g?"*":this.env.mailbox;!b&&this.gui_objects.search_filter&&(b=this.gui_objects.search_filter.value);!a&&this.gui_objects.qsearchbox&&(a=this.gui_objects.qsearchbox.value);b&&(e._filter=b);
+if(a&&(e._q=a,h&&this.message_list&&(h=h[k]||h["*"]),h)){for(d in h)f.push(d);e._headers=f.join(",")}g&&(e._scope=g);k&&"all"!=g&&(e._mbox=k);return e};this.reset_search_filter=function(){this.filter_disabled=!0;this.gui_objects.search_filter&&$(this.gui_objects.search_filter).val("ALL").change();this.filter_disabled=!1};this.reset_qsearch=function(a){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value="");this.env.qsearch&&this.abort_request(this.env.qsearch);a&&(this.env.search_scope=
+"base",this.reset_search_filter());this.env.qsearch=null;this.env.search_request=null;this.env.search_id=null;this.enable_command("set-listmode",this.env.threads)};this.set_searchscope=function(a){var b=this.env.search_scope;this.env.search_scope=a;a!=b&&this.env.search_request&&(!this.qsearch(this.gui_objects.qsearchbox.value)&&this.env.search_filter&&"ALL"!=this.env.search_filter&&this.filter_mailbox(this.env.search_filter),"all"!=a&&this.select_folder(this.env.mailbox,"",!0))};this.set_searchmods=
+function(a){var b=this.env.mailbox;"all"==(this.env.search_scope||"base")&&(b="*");this.env.search_mods||(this.env.search_mods={});b&&(this.env.search_mods[b]=a)};this.is_multifolder_listing=function(){return void 0!==this.env.multifolder_listing?this.env.multifolder_listing:this.env.search_request&&"base"!=(this.env.search_scope||"base")};this.sent_successfully=function(a,b,d,e){this.display_message(b,a);this.compose_skip_unsavedcheck=!0;if(this.env.extwin){e||this.lock_form(this.gui_objects.messageform);
+var f={task:"mail",action:""};if(f=this.opener(!1,f)||this.opener(!0,f))f.display_message(b,a),d&&0<=$.inArray(f.env.mailbox,d)&&f.command("checkmail");e||setTimeout(function(){window.close()},1E3)}else e||setTimeout(function(){g.list_mailbox()},500);e&&(this.env.is_sent=!0)};this.ksearch_keydown=function(a,b,d){this.ksearch_timer&&clearTimeout(this.ksearch_timer);var e=rcube_event.get_keycode(a),f=rcube_event.get_modifier(a);switch(e){case 38:case 40:if(!this.ksearch_visible())return;b=38==e?1:0;
+e=document.getElementById("rcmkSearchItem"+this.ksearch_selected);e||(e=this.ksearch_pane.__ul.firstChild);e&&this.ksearch_select(b?e.previousSibling:e.nextSibling);return rcube_event.cancel(a);case 9:if(f==SHIFT_KEY||!this.ksearch_visible()){this.ksearch_hide();return}case 13:if(!this.ksearch_visible())return!1;this.insert_recipient(this.ksearch_selected);this.ksearch_hide();return rcube_event.cancel(a);case 27:this.ksearch_hide();return;case 37:case 39:return}this.ksearch_timer=setTimeout(function(){g.ksearch_get_results(d)},
+200);this.ksearch_input=b;return!0};this.ksearch_visible=function(){return null!==this.ksearch_selected&&void 0!==this.ksearch_selected&&this.ksearch_value};this.ksearch_select=function(a){this.ksearch_pane&&a&&this.ksearch_pane.find("li.selected").removeClass("selected").removeAttr("aria-selected");a&&($(a).addClass("selected").attr("aria-selected","true"),this.ksearch_selected=a._rcm_id,$(this.ksearch_input).attr("aria-activedescendant","rcmkSearchItem"+this.ksearch_selected))};this.insert_recipient=
+function(a){if(null!==a&&this.env.contacts[a]&&this.ksearch_input){var b=this.ksearch_input.value,d=this.get_caret_pos(this.ksearch_input),d=b.lastIndexOf(this.ksearch_value,d),e=!1,f="",h=b.substring(0,d),b=b.substring(d+this.ksearch_value.length,b.length);this.ksearch_destroy();"object"!==typeof this.env.contacts[a]||"group"!=this.env.contacts[a].type||this.env.contacts[a].email?"object"===typeof this.env.contacts[a]&&this.env.contacts[a].name?(f=this.env.contacts[a].name+this.env.recipients_delimiter,
+e=!0):"string"===typeof this.env.contacts[a]&&(f=this.env.contacts[a]+this.env.recipients_delimiter,e=!0):(f+=this.env.contacts[a].name+this.env.recipients_delimiter,this.group2expand[this.env.contacts[a].id]=$.extend({input:this.ksearch_input},this.env.contacts[a]),this.http_request("mail/group-expand",{_source:this.env.contacts[a].source,_gid:this.env.contacts[a].id},!1));this.ksearch_input.value=h+f+b;this.set_caret_pos(this.ksearch_input,d+f.length);e&&(this.triggerEvent("autocomplete_insert",
+{field:this.ksearch_input,insert:f,data:this.env.contacts[a]}),this.compose_type_activity++)}};this.replace_group_recipients=function(a,b){this.group2expand[a]&&(this.group2expand[a].input.value=this.group2expand[a].input.value.replace(this.group2expand[a].name,b),this.triggerEvent("autocomplete_insert",{field:this.group2expand[a].input,insert:b}),this.group2expand[a]=null,this.compose_type_activity++)};this.ksearch_get_results=function(a){var b=this.ksearch_input?this.ksearch_input.value:null;if(null!==
+b){this.ksearch_pane&&this.ksearch_pane.is(":visible")&&this.ksearch_pane.hide();var d=this.get_caret_pos(this.ksearch_input),e=b.lastIndexOf(this.env.recipients_separator,d-1),b=b.substring(e+1,d),e=this.env.autocomplete_min_length,d=this.ksearch_data,b=$.trim(b);b!=this.ksearch_value&&(this.ksearch_destroy(),b.length&&b.length<e?this.ksearch_info||(this.ksearch_info=this.display_message(this.get_label("autocompletechars").replace("$min",e))):(e=this.ksearch_value,this.ksearch_value=b,!b.length||
+e&&e.length&&b.startsWith(e)&&(!d||0>=d.num)&&this.env.contacts&&!this.env.contacts.length||(d=a&&a.sources?a.sources:[""],this.ksearch_data={id:this.multi_thread_http_request({items:d,threads:a&&a.threads?a.threads:1,action:a&&a.action?a.action:"mail/autocomplete",postdata:{_search:b,_source:"%s"},lock:this.display_message(this.get_label("searching"),"loading")}),sources:d.slice(),num:d.length})))}};this.ksearch_query_results=function(a,b,d){this.multi_thread_http_response(a,d);if(this.ksearch_value&&
+(!this.ksearch_input||b==this.ksearch_value)){var e,f,h,m,k,n=this.ksearch_value,l=this.env.autocomplete_max?this.env.autocomplete_max:15;this.ksearch_pane||(b=$("<ul>"),this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").attr("role","listbox").css({position:"absolute","z-index":3E4}).append(b).appendTo(document.body),this.ksearch_pane.__ul=b[0]);b=this.ksearch_pane.__ul;d&&this.ksearch_pane.data("reqid")==d?l-=b.childNodes.length:(this.ksearch_pane.data("reqid",d),b.innerHTML="",this.env.contacts=
+[],e=$(this.ksearch_input).offset(),this.ksearch_pane.css({left:e.left+"px",top:e.top+this.ksearch_input.offsetHeight+"px",display:"none"}));if(a&&(h=a.length))for(e=0;e<h&&0<l;e++)m="object"===typeof a[e]?a[e].display||a[e].name:a[e],k="object"===typeof a[e]?a[e].type:"",f=e+this.env.contacts.length,$("<li>").attr("id","rcmkSearchItem"+f).attr("role","option").html('<i class="icon"></i>'+this.quote_html(m.replace(RegExp("("+RegExp.escape(n)+")","ig"),"##$1%%")).replace(/##([^%]+)%%/g,"<b>$1</b>")).addClass(k||
+"").appendTo(b).mouseover(function(){g.ksearch_select(this)}).mouseup(function(){g.ksearch_click(this)}).get(0)._rcm_id=f,l-=1;b.childNodes.length&&($(this.ksearch_input).attr("aria-haspopup","true").attr("aria-expanded","true").attr("aria-owns","rcmKSearchpane"),this.ksearch_pane.show(),this.env.contacts.length||this.ksearch_select($("li:first",b).get(0)));h&&(this.env.contacts=this.env.contacts.concat(a));this.ksearch_data.id==d&&this.ksearch_data.num--}};this.ksearch_click=function(a){this.ksearch_input&&
+this.ksearch_input.focus();this.insert_recipient(a._rcm_id);this.ksearch_hide()};this.ksearch_blur=function(){this.ksearch_timer&&clearTimeout(this.ksearch_timer);this.ksearch_input=null;this.ksearch_hide()};this.ksearch_hide=function(){this.ksearch_selected=null;this.ksearch_value="";this.ksearch_pane&&this.ksearch_pane.hide();$(this.ksearch_input).attr("aria-haspopup","false").attr("aria-expanded","false").removeAttr("aria-activedescendant").removeAttr("aria-owns");this.ksearch_destroy()};this.ksearch_destroy=
+function(){this.ksearch_data&&this.multi_thread_request_abort(this.ksearch_data.id);this.ksearch_info&&this.hide_message(this.ksearch_info);this.ksearch_msg&&this.hide_message(this.ksearch_msg);this.ksearch_msg=this.ksearch_info=this.ksearch_data=null};this.contactlist_keypress=function(a){a.key_pressed==a.DELETE_KEY&&this.command("delete")};this.contactlist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);var b,d,e,f,h=!1,m=a.selection.length,k=this.env.source?this.env.address_sources[this.env.source]:
+null;this.env.contentframe&&(d=a.get_single_selection())?this.preview_timer=setTimeout(function(){g.load_contact(d,"show")},200):this.env.contentframe&&this.show_contentframe(!1);if(m){a.draggable=!1;this.env.selection_sources=[];k&&this.env.selection_sources.push(this.env.source);for(b in a.selection)f=a.data[a.selection[b]],k?h=h||!k.readonly&&!f.readonly:(e=String(a.selection[b]).replace(/^[^-]+-/,""))&&this.env.address_sources[e]&&(h=h||!this.env.address_sources[e].readonly&&!f.readonly,this.env.selection_sources.push(e)),
+"group"!=f._type&&(a.draggable=!0);this.env.selection_sources=$.unique(this.env.selection_sources)}this.enable_command("group-remove-selected",this.env.group&&m&&h);this.enable_command("compose",this.env.group||m);this.enable_command("print",1==m);this.enable_command("export-selected","copy",0<m);this.enable_command("edit",d&&h);this.enable_command("delete","move",m&&h);return!1};this.list_contacts=function(a,b,d){var e,f={},h=void 0===a&&void 0===b&&void 0===d,g=window;a||(a=this.env.source);h&&
+(b=this.env.group);if(d&&this.current_page==d&&a==this.env.source&&b==this.env.group)return!1;a!=this.env.source?(d=this.env.current_page=1,this.reset_qsearch()):h||b==this.env.group||(d=this.env.current_page=1);this.env.search_id?e="S"+this.env.search_id:this.env.search_request||(e=b?"G"+a+b:a);this.env.source=a;this.env.group=b;h=$.inArray(this.env.group,this.env.address_group_stack);this.env.address_group_stack=0>h?[]:this.env.address_group_stack.slice(0,h);this.env.group?(this.env.address_group_stack.push(this.env.group),
+e="G"+a+this.env.address_group_stack[0]):this.gui_objects.addresslist_title&&$(this.gui_objects.addresslist_title).html(this.get_label("contacts"));this.env.search_id||this.select_folder(e,"",!0);if(this.gui_objects.contactslist)this.list_contacts_remote(a,b,d);else{if(e=this.get_frame_window(this.env.contentframe))g=e,f._framed=1;b&&(f._gid=b);d&&(f._page=d);a&&(f._source=a);this.env.search_request&&(f._search=this.env.search_request);this.set_busy(!0,"loading");this.location_href(f,g)}};this.list_contacts_remote=
+function(a,b,d){this.list_contacts_clear();var e={},f=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,f)};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("");1<this.env.address_group_stack.length&&($('<a href="#list">...</a>').attr("title",this.gettext("uponelevel")).addClass("poplink").appendTo(b).click(function(a){return g.command("popgroup","",this)}),b.append(" » "));b.append($("<span>").text(a.name))}this.triggerEvent("groupupdate",a)};this.load_contact=function(a,b,d){var e,f={},h=window,g=this.contact_list?
+this.contact_list.data[a]:null;if(e=this.get_frame_window(this.env.contentframe))f._framed=1,h=e,this.show_contentframe(!0),a||this.contact_list.clear_selection(),this.enable_command("compose",g&&g.email),this.enable_command("export-selected","print",g&&"group"!=g._type);else if(d)return!1;!b||!a&&"add"!=b||this.drag_active||(this.env.group&&(f._gid=this.env.group),this.env.search_request&&(f._search=this.env.search_request),f._action=b,f._source=this.env.source,f._cid=a,this.location_href(f,h,!0));
+return!0};this.group_member_change=function(a,b,d,e){"add"!=a&&(a="del");var f=this.get_label("add"==a?"addingmember":"removingmember"),f=this.display_message(f,"loading");this.http_post("group-"+a+"members",{_cid:b,_source:d,_gid:e},f)};this.contacts_drag_menu=function(a,b){var d="group"==b.type?b.source:b.id,e=this.env.source;if(!this.env.address_sources[d]||this.env.address_sources[d].readonly)return!0;""==e&&1==this.env.selection_sources.length&&(e=this.env.selection_sources[0]);return"group"==
+b.type&&d==e?(e=this.contact_list.get_selection().join(","),this.group_member_change("add",e,d,b.id),!0):this.commands.move||rcube_event.get_modifier(a)==SHIFT_KEY?this.drag_menu(a,b):(this.copy_contacts(b),!0)};this.copy_contacts=function(a){var b="group"==a.type?a.source:a.id,d=this.env.source,e=this.env.group?this.env.group:"",f=this.contact_list.get_selection().join(",");f&&this.env.address_sources[b]&&!this.env.address_sources[b].readonly&&(""==d&&1==this.env.selection_sources.length&&(d=this.env.selection_sources[0]),
+"group"==a.type?b!=d&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),a={_cid:f,_source:this.env.source,_to:b,_togid:a.id,_gid:e},this.http_post("copy",a,d)):a.id!=d&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),a={_cid:f,_source:this.env.source,_to:a.id,_gid:e},this.http_post("copy",a,d)))};this.move_contacts=function(a){var b="group"==a.type?a.source:a.id,d=this.env.source;this.env.address_sources[b]&&!this.env.address_sources[b].readonly&&(""==d&&1==this.env.selection_sources.length&&
+(d=this.env.selection_sources[0]),"group"==a.type?b!=d&&this._with_selected_contacts("move",{_to:b,_togid:a.id}):a.id!=d&&this._with_selected_contacts("move",{_to:a.id}))};this.delete_contacts=function(){if(this.env.source&&this.env.address_sources[this.env.source].undelete||confirm(this.get_label("deletecontactconfirm")))return this._with_selected_contacts("delete")};this._with_selected_contacts=function(a,b){var d=this.contact_list?this.contact_list.get_selection():[];if(d.length||this.env.cid){var e,
+f=[],h=this.display_message(this.get_label("delete"==a?"contactdeleting":"movingcontact"),"loading");if(this.env.cid)f.push(this.env.cid);else{for(e=0;e<d.length;e++)id=d[e],f.push(id),this.contact_list.remove_row(id,e==d.length-1);1==d.length&&this.show_contentframe(!1)}b||(b={});b._source=this.env.source;b._from=this.env.action;b._cid=f.join(",");this.env.group&&(b._gid=this.env.group);this.env.search_request&&(b._search=this.env.search_request);this.http_post(a,b,h);return!0}};this.update_contact_row=
+function(a,b,d,e,f){var h=this.contact_list;a=this.html_identifier(a);h.rows[a]||(a=a+"-"+e,d&&(d=d+"-"+e));h.update_row(a,b,d,!0);h.data[a]=f};this.add_contact_row=function(a,b,d,e){if(!this.gui_objects.contactslist)return!1;var f,h=this.contact_list,g={cols:[]};g.id="rcmrow"+this.html_identifier(a);g.className="contact "+(d||"");h.in_selection(a)&&(g.className+=" selected");for(f in b)d={},d.className=String(f).toLowerCase(),d.innerHTML=b[f],g.cols.push(d);h.data[a]=e;h.insert_row(g);this.enable_command("export",
+0<h.rowcount)};this.init_contact_form=function(){var a;if(this.env.coltypes)for(a in this.set_photo_actions($("#ff_photo").val()),this.env.coltypes)this.init_edit_field(a,null);$(".contactfieldgroup .row a.deletebutton").click(function(){g.delete_edit_field(this);return!1});$("select.addfieldmenu").change(function(){g.insert_edit_field($(this).val(),$(this).attr("rel"),this);this.selectedIndex=0});$.datepicker&&this.env.date_format&&($.datepicker.setDefaults({dateFormat:this.env.date_format,changeMonth:!0,
+changeYear:!0,yearRange:"-120:+10",showOtherMonths:!0,selectOtherMonths:!0}),$("input.datepicker").datepicker());"search"==this.env.action&&$(this.gui_objects.editform).append($('<input type="submit">').hide()).submit(function(){$("input.mainaction").click();return!1})};this.group_create=function(){var a=$("<input>").attr("type","text"),b=$("<label>").text(this.get_label("namex")).append(a);this.show_popup_dialog(b,this.get_label("newgroup"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var b;
+(b=a.val())&&g.http_post("group-create",{_source:g.env.source,_name:b},g.set_busy(!0,"loading"));$(this).dialog("close")}}])};this.group_rename=function(){if(this.env.group){var a=this.env.contactgroups["G"+this.env.source+this.env.group].name,b=$("<input>").attr("type","text").val(a),d=$("<label>").text(this.get_label("namex")).append(b);this.show_popup_dialog(d,this.get_label("grouprename"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var d;(d=b.val())&&d!=a&&g.http_post("group-rename",
+{_source:g.env.source,_gid:g.env.group,_name:d},g.set_busy(!0,"loading"));$(this).dialog("close")}}],{open:function(){b.select()}})}};this.group_delete=function(){if(this.env.group&&confirm(this.get_label("deletegroupconfirm"))){var a=this.set_busy(!0,"groupdeleting");this.http_post("group-delete",{_source:this.env.source,_gid:this.env.group},a)}};this.remove_group_item=function(a){var b="G"+a.source+a.id;this.treelist.remove(b)&&(this.triggerEvent("group_delete",{source:a.source,id:a.id}),delete this.env.contactfolders[b],
+delete this.env.contactgroups[b]);this.list_contacts(a.source,0)};this.group_remove_selected=function(){this.http_post("group-delmembers",{_cid:this.contact_list.selection,_source:this.env.source,_gid:this.env.group})};this.remove_group_contacts=function(a){if(void 0!==this.env.group&&this.env.group===a.gid){var b=this.contact_list.get_selection();for(a=0;a<b.length;a++)id=b[a],this.contact_list.remove_row(id,a==b.length-1)}};this.insert_contact_group=function(a){a.type="group";var b="G"+a.source+
+a.id,d=$("<a>").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return g.command("listgroup",a,this)}).html(a.name);this.env.contactfolders[b]=this.env.contactgroups[b]=a;this.treelist.insert({id:b,html:d,classes:["contactgroup"]},a.source,"contactgroup");this.triggerEvent("group_insert",{id:a.id,source:a.source,name:a.name,li:this.treelist.get_item(b)})};this.update_contact_group=function(a){var b="G"+a.source+a.id,d={};if(a.newid){var e="G"+a.source+a.newid,f=$.extend({},a);this.env.contactfolders[e]=
+this.env.contactfolders[b];this.env.contactfolders[e].id=a.newid;this.env.group=a.newid;delete this.env.contactfolders[b];delete this.env.contactgroups[b];f.id=a.newid;f.type="group";d.id=e;d.html=$("<a>").attr("href","#").attr("rel",a.source+":"+a.newid).click(function(){return g.command("listgroup",f,this)}).html(a.name)}else $(this.treelist.get_item(b)).children().first().html(a.name),this.env.contactfolders[b].name=this.env.contactgroups[b].name=a.name;this.treelist.update(b,d,!0);this.triggerEvent("group_update",
+{id:a.id,source:a.source,name:a.name,li:this.treelist.get_item(b),newid:a.newid})};this.update_group_commands=function(){var a=""!=this.env.source?this.env.address_sources[this.env.source]:null,a=a&&a.groups&&!a.readonly;this.enable_command("group-create",a);this.enable_command("group-rename","group-delete",a&&this.env.group)};this.init_edit_field=function(a,b){var d=this.env.coltypes[a].label;b||(b=$(".ff_"+a));d&&b.placeholder(d)};this.insert_edit_field=function(a,b,d){var e=$("#ff_"+a);if(e.length)e.show().focus(),
+$(d).children('option[value="'+a+'"]').prop("disabled",!0);else{$(".ff_"+a);e=$("#contactsection"+b+" .contactcontroller"+a);if(!e.length){b=$("#contactsection"+b);var f=$(".contactfieldgroup",b).last(),e=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+a);f.length?e.insertAfter(f):b.prepend(e)}if(e.length&&"FIELDSET"==e.get(0).nodeName){var h;b=this.env.coltypes[a];var m="ff_"+a+(b.count||0),f=$("<div>").addClass("row"),k=$("<div>").addClass("contactfieldcontent data"),n=$("<div>").addClass("contactfieldlabel label");
+b.subtypes_select?n.html(b.subtypes_select):n.html('<label for="'+m+'">'+b.label+"</label>");var l=1!=b.limit?"[]":"";if("text"==b.type||"date"==b.type)h=$("<input>").addClass("ff_"+a).attr({type:"text",name:"_"+a+l,size:b.size,id:m}).appendTo(k),this.init_edit_field(a,h),"date"==b.type&&$.datepicker&&h.datepicker();else if("textarea"==b.type)h=$("<textarea>").addClass("ff_"+a).attr({name:"_"+a+l,cols:b.size,rows:b.rows,id:m}).appendTo(k),this.init_edit_field(a,h);else if("composite"==b.type){var p,
+q,v=[],s=[];if(h=this.env[a+"_template"])for(m=0;m<h.length;m++)v.push(h[m][1]),s.push(h[m][2]);else for(p in b.childs)v.push(p);for(m=0;m<v.length;m++)p=v[m],h=b.childs[p],h=$("<input>").addClass("ff_"+p).attr({type:"text",name:"_"+p+l,size:h.size}).appendTo(k),k.append(s[m]||" "),this.init_edit_field(p,h),q||(q=h);h=q}else if("select"==b.type){h=$("<select>").addClass("ff_"+a).attr({name:"_"+a+l,id:m}).appendTo(k);var t=h.attr("options");t[t.length]=new Option("---","");b.options&&$.each(b.options,
+function(a,b){t[t.length]=new Option(b,a)})}h&&($('<a href="#del"></a>').addClass("contactfieldbutton deletebutton").attr({title:this.get_label("delete"),rel:a}).html(this.env.delbutton).click(function(){g.delete_edit_field(this);return!1}).appendTo(k),f.append(n).append(k).appendTo(e.show()),h.first().focus(),b.count||(b.count=0),++b.count==b.limit&&b.limit&&$(d).children('option[value="'+a+'"]').prop("disabled",!0))}}};this.delete_edit_field=function(a){var b=$(a).attr("rel"),d=this.env.coltypes[b],
+e=$(a).parents("fieldset.contactfieldgroup"),f=e.parent().find("select.addfieldmenu");0>=--d.count&&d.visible?$(a).parent().children("input").val("").blur():($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());f.length&&(a=f.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(f),f.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",function(a){g.set_busy(!1,
+null,g.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&&b<d.length;b++)$("a#"+d[b].id).html(this.get_label("-del-"==a?"addphoto":"replacephoto"));$("#ff_photo").val(a);this.enable_command("upload-photo",this.env.coltypes.photo?!0:!1);this.enable_command("delete-photo",this.env.coltypes.photo&&"-del-"!=a)};this.advanced_search=function(){var a,b={_form:1,_action:"search"},d=window;if(a=this.get_frame_window(this.env.contentframe))b._framed=1,d=a,this.contact_list.clear_selection();this.location_href(b,d,!0);return!0};this.unselect_directory=
+function(){this.select_folder("");this.enable_command("search-delete",!1)};this.insert_saved_search=function(a,b){var d="S"+b,e=$("<a>").attr("href","#").attr("rel",b).click(function(){return g.command("listsearch",b,this)}).html(a),f={name:a,id:b};this.savedsearchlist.insert({id:d,html:e,classes:["contactsearch"]},null,"contactsearch");this.select_folder(d,"",!0);this.enable_command("search-delete",!0);this.env.search_id=b;this.triggerEvent("abook_search_insert",f)};this.search_create=function(){var a=
+$("<input>").attr("type","text"),b=$("<label>").text(this.get_label("namex")).append(a);this.show_popup_dialog(b,this.get_label("searchsave"),[{text:this.get_label("save"),"class":"mainaction",click:function(){var b;(b=a.val())&&g.http_post("search-create",{_search:g.env.search_request,_name:b},g.set_busy(!0,"loading"));$(this).dialog("close")}}])};this.search_delete=function(){if(this.env.search_request){var a=this.set_busy(!0,"savedsearchdeleting");this.http_post("search-delete",{_sid:this.env.search_id},
+a)}};this.remove_search_item=function(a){this.savedsearchlist.remove("S"+a)&&this.triggerEvent("search_delete",{id:a,li:void 0});this.env.search_id=null;this.env.search_request=null;this.list_contacts_clear();this.reset_qsearch();this.enable_command("search-delete","search-create",!1)};this.listsearch=function(a){var b=this.set_busy(!0,"searching");this.contact_list&&this.list_contacts_clear();this.reset_qsearch();this.savedsearchlist?(this.treelist.select(""),this.savedsearchlist.select("S"+a)):
+this.select_folder("S"+a,"",!0);this.env.current_page=1;this.http_request("search",{_sid:a},b)};this.section_select=function(a){var b;b=a.get_single_selection();a=window;var d={_action:"edit-prefs",_section:b};if(b){if(b=this.get_frame_window(this.env.contentframe))d._framed=1,a=b;this.location_href(d,a,!0)}return!0};this.identity_select=function(a){var b;if(b=a.get_single_selection())this.enable_command("delete",1<a.rowcount&&2>this.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,f={_action:b,_iid:a};if(d=this.get_frame_window(this.env.contentframe))f._framed=1,e=d;(a||"add-identity"==b)&&this.location_href(f,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){g.subscription_select(a.id)}).addEventListener("collapse",function(a){g.folder_collapsed(a)}).addEventListener("expand",function(a){g.folder_collapsed(a)}).addEventListener("search",
+function(a){a.query&&g.subscription_select()}).draggable({cancel:"li.mailbox.root"}).droppable({accept:function(a){if(!$(a).is(".mailbox"))return!1;a=g.folder_id2name($(a).attr("id"));var d=g.folder_id2name(this.id),e=g.env.subscriptionrows[a];return e&&!e[2]&&d!=a.replace(g.last_sub_rx,"")&&!d.startsWith(a+g.env.delimiter)},drop:function(a,d){var e=g.folder_id2name(d.draggable.attr("id")),f=g.folder_id2name(this.id);g.subscription_move_folder(e,f)}})};this.folder_id2name=function(a){return a?g.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,f,h,m,k){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 n,l,p,q,v,s="",t=[],w=[],u=[],x=$(this.gui_objects.subscriptionlist);n=m?m:$($("li",x).get(1)).clone(!0);if(!n.length)return this.goto_url("folders"),!1;n.attr({id:"rcmli"+this.html_identifier_encode(a),"class":h});m&&m.length||($("ul,div.treetoggle",n).remove(),n.removeData("filtered"));$("a:first",n).text(d);$('input[name="_subscribed[]"]:first',n).val(a).prop({checked:f?!0:!1,disabled:e?!0:!1});this.env.subscriptionrows[a]=[b,
+d,!1];$.each(this.env.subscriptionrows,function(a,b){b[3]=a;t.push(b)});try{v=new Intl.Collator(this.env.locale.replace("_","-"))}catch(y){}t.sort(function(a,b){var d,e,f,h=a[0].split(g.env.delimiter),m=b[0].split(g.env.delimiter),k=h.length;for(d=0;d<k;d++){e=h[d];f=m[d];if(e!==f)return void 0===f?1:v?v.compare(e,f):e<f?-1:1;if(d==k-1)return-1}});for(l in t)d=t[l][3],t[l][2]?(b=d+this.env.delimiter,b!=this.env.prefix_ns&&(u.push(d),p=b)):p&&d.startsWith(p)?u.push(d):(w.push(d),p=null);for(l=0;l<
+u.length;l++)a.startsWith(u[l]+this.env.delimiter)&&(q=u[l]);for(l=0;!q&&l<w.length;l++)l&&w[l]==a&&(q=w[l-1]);if(q&&(l=this.subscription_list.get_item(q,!0))){if(p=a.lastIndexOf(this.env.delimiter))s=a.substring(0,p),s=this.subscription_list.get_item(s,!0),$("div.treetoggle",s).length||$("<div> </div>").addClass("treetoggle collapsed").appendTo(s),$("ul",s).length||$("<ul>").css("display","none").appendTo(s);if(s&&l==s)$("ul:first",s).append(n);else{for(;(d=$(l).parent().parent().get(0))&&(!s||
+d!=s)&&$(d).is("li.mailbox");)l=d;$(l).after(n)}}else x.append(n);$.extend(this.env.subscriptionrows,k||{});this.subscription_list.reset(!0);this.subscription_select();s&&this.subscription_list.expand(this.folder_id2name(s.id));n=n.show().get(0);n.scrollIntoView&&n.scrollIntoView();return n};this.replace_folder_row=function(a,b,d,e,f,h){if(!this.gui_objects.subscriptionlist)return this.is_framed()?window.parent.rcmail.replace_folder_row(a,b,d,e,f,h):!1;this.subscription_list.is_search()&&(this.subscription_select(),
+this.subscription_list.reset_search());var m={},k=this.subscription_list.get_item(a,!0),n=$(k).parent(),l=a.length,p=this.env.subscriptionrows[a][0].length,q=$('input[name="_subscribed[]"]:first',k).prop("checked");a==b?$(k).attr("class",h||""):($("li",k).each(function(){var a=g.folder_id2name(this.id),e=g.env.subscriptionrows[a],f=b+a.slice(l);this.id="rcmli"+g.html_identifier_encode(f);$('input[name="_subscribed[]"]:first',this).val(f);e[0]=d+e[0].slice(p);m[f]=e;delete g.env.subscriptionrows[a]}),
+k=$(k).detach(),delete this.env.subscriptionrows[a],n.get(0)==this.gui_objects.subscriptionlist||$("li",n).length||$("ul,div.treetoggle",n.parent()).remove(),this.add_folder_row(b,d,e,f,q,h,k,m))};this.remove_folder_row=function(a){this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());var b=[],d=this.subscription_list.get_item(a,!0);$("li",d).each(function(){b.push(g.folder_id2name(this.id))});this.subscription_list.remove(a);b.push(a);$.each(b,function(a,
+b){delete g.env.subscriptionrows[b]})};this.subscribe=function(a){if(a){var b=this.display_message(this.get_label("foldersubscribing"),"loading");this.http_post("subscribe",{_mbox:a},b)}};this.unsubscribe=function(a){if(a){var b=this.display_message(this.get_label("folderunsubscribing"),"loading");this.http_post("unsubscribe",{_mbox:a},b)}};this.show_folder=function(a,b,d){var e=window;a="&_action=edit-folder&_mbox="+urlencode(a);b&&(a+="&_path="+urlencode(b));if(b=this.get_frame_window(this.env.contentframe))e=
+b,a+="&_framed=1";0<=String(e.location.href).indexOf(a)&&!d?this.show_contentframe(!0):this.location_href(this.env.comm_path+a,e,!0)};this.disable_subscription=function(a){(a=this.subscription_list.get_item(a,!0))&&$('input[name="_subscribed[]"]:first',a).prop("disabled",!0)};this.folder_size=function(a){var b=this.set_busy(!0,"loading");this.http_post("folder-size",{_mbox:a},b)};this.folder_size_update=function(a){$("#folder-size").replaceWith(a)};this.folder_filter=function(a){this.subscription_list.reset_search();
+this.subscription_list.container.children("li").each(function(){var b,d=g.folder_id2name(this.id);if("---"!=a)if(a){if(d!==a){$(this).data("filtered",!0).hide();return}}else for(b in g.env.ns_roots)if(d===g.env.ns_roots[b]){$(this).data("filtered",!0).hide();return}$(this).removeData("filtered").show()})};var u=function(a,b){var d=document.getElementById(b.id);if(d){var e=!1;"image"==b.type&&(d=d.parentNode,e=!0);d._command=a;d._id=b.id;b.sel&&(d.onmousedown=function(a){return g.button_sel(this._command,
+this._id)},d.onmouseup=function(a){return g.button_out(this._command,this._id)},e&&((new Image).src=b.sel));b.over&&(d.onmouseover=function(a){return g.button_over(this._command,this._id)},d.onmouseout=function(a){return g.button_out(this._command,this._id)},e&&((new Image).src=b.over))}};this.init_buttons=function(){for(var a in this.buttons)if("string"===typeof a)for(var b=0;b<this.buttons[a].length;b++)u(a,this.buttons[a][b])};this.set_button=function(a,b){var d,e,f,h=this.buttons[a],g=h?h.length:
+0;for(d=0;d<g;d++)if(e=h[d],(f=document.getElementById(e.id))&&e.status!==b)"image"!=e.type||e.status?e.status||(e.pas=String(f.className)):(e.pas=f._original_src?f._original_src:f.src,f.runtimeStyle&&f.runtimeStyle.filter&&f.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)&&(e.pas=RegExp.$1)),e.status=b,"image"==e.type&&e[b]?f.src=e[b]:void 0!==e[b]&&(f.className=e[b]),"input"==e.type?f.disabled="pas"==b:"uibutton"==e.type?(e.status=b,$(f).button("option","disabled","pas"==b)):(e=$(f),e.attr("tabindex",
+"pas"==b||"sel"==b?"-1":e.attr("data-tabindex")||"0").attr("aria-disabled","pas"==b||"sel"==b?"true":"false"))};this.set_alttext=function(a,b){var d,e,f,h,g=this.buttons[a],k=g?g.length:0;for(d=0;d<k;d++)e=g[d],f=document.getElementById(e.id),"image"==e.type&&f?(f.setAttribute("alt",this.get_label(b)),(h=f.parentNode)&&"a"==h.tagName.toLowerCase()&&h.setAttribute("title",this.get_label(b))):f&&f.setAttribute("title",this.get_label(b))};this.button_over=function(a,b){this.button_event(a,b,"over")};
+this.button_sel=function(a,b){this.button_event(a,b,"sel")};this.button_out=function(a,b){this.button_event(a,b,"act")};this.button_event=function(a,b,d){var e,f,h,g=this.buttons[a],k=g?g.length:0;for(e=0;e<k;e++)f=g[e],f.id==b&&"act"==f.status&&(f[d]&&(h=document.getElementById(f.id))&&(h["image"==f.type?"src":"className"]=f[d]),"sel"==d&&(this.buttons_sel[b]=a))};this.set_pagetitle=function(a){a&&document.title&&(document.title=a)};this.display_message=function(a,b,d,e){if(this.is_framed())return parent.rcmail.display_message(a,
+b,d);if(!this.gui_objects.message)return"loading"!=b&&(this.pending_message=[a,b,d,e]),1;b||(b="notice");e||(e=this.html_identifier(a));var f=b+(new Date).getTime();if(!d)switch(b){case "error":case "warning":d=2*this.message_time;break;case "uploading":d=0;break;default:d=this.message_time}"loading"==b&&(e="loading",d=1E3*this.env.request_timeout,a||(a=this.get_label("loading")));if(this.messages[e])return this.messages[e].obj&&this.messages[e].obj.html(a),"loading"==b&&this.messages[e].labels.push({id:f,
+msg:a}),this.messages[e].elements.push(f),setTimeout(function(){g.hide_message(f,"loading"==b)},d),f;var h=$("<div>").addClass(b).html(a).data("key",e);$(this.gui_objects.message).append(h).show();this.messages[e]={obj:h,elements:[f]};"loading"==b?this.messages[e].labels=[{id:f,msg:a}]:"uploading"!=b&&h.click(function(){return g.hide_message(h)}).attr("role","alert");this.triggerEvent("message",{message:a,type:b,timeout:d,object:h});0<d&&setTimeout(function(){g.hide_message(f,"loading"!=b)},d);return f};
+this.hide_message=function(a,b){if(this.is_framed())return parent.rcmail.hide_message(a,b);if(this.gui_objects.message){var d,e,f,h,g=this.messages;if("object"===typeof a)h=$(a),d=h.data("key"),this.hide_message_object(h,b),g[d]&&delete g[d];else for(d in g)for(e in g[d].elements)if(g[d]&&g[d].elements[e]==a)if(g[d].elements.splice(e,1),!g[d].elements.length)this.hide_message_object(g[d].obj,b),delete g[d];else if("loading"==d)for(f in g[d].labels)g[d].labels[f].id==a?delete g[d].labels[f]:(h=g[d].labels[f].msg,
+g[d].obj.html(h))}};this.hide_message_object=function(a,b){b?a.fadeOut(600,function(){$(this).remove()}):a.hide().remove()};this.clear_messages=function(){if(this.is_framed())return parent.rcmail.clear_messages();var a,b,d=this.messages;for(a in d)for(b in d[a].elements)d[a].obj&&this.hide_message_object(d[a].obj);this.messages={}};this.display_progress=function(a){if(a&&a.name){var b=this.messages["progress"+a.name];a.label||(a.label=this.get_label("uploadingmany"));b?!a.total||100<=a.percent?this.hide_message(b.obj):
+(a.text&&(a.label+=" "+a.text),b.obj.text(a.label)):(!a.percent||100>a.percent)&&this.display_message(a.label,"uploading",0,"progress"+a.name)}};this.show_popup_dialog=function(a,b,d,e){if(this.is_framed())return parent.rcmail.show_popup_dialog(a,b,d,e);var f=$('<div class="popup">');"object"==typeof a?f.append(a):f.html(a);e=$.extend({title:b,buttons:d,modal:!0,resizable:!0,width:500,close:function(a,b){$(this).remove()}},e||{});f.dialog(e);b=$(window);a=b.width();b=b.height();var h=f.width(),g=
+f.height();f.dialog("option",{height:Math.min(b-40,g+75+(d?50:0)),width:Math.min(a-20,h+36)});$.each(e.button_classes||[],function(a,b){b&&$($(".ui-dialog-buttonpane button.ui-button",f.parent()).get(a)).addClass(b)});return f};this.set_page_buttons=function(){this.enable_command("nextpage","lastpage",this.env.pagecount>this.env.current_page);this.enable_command("previouspage","firstpage",1<this.env.current_page)};this.select_folder=function(a,b,d){this.savedsearchlist&&this.savedsearchlist.select("");
+this.treelist?this.treelist.select(a):this.gui_objects.folderlist&&($("li.selected",this.gui_objects.folderlist).removeClass("selected"),$(this.get_folder_li(a,b,d)).addClass("selected"),this.triggerEvent("selectfolder",{folder:a,prefix:b}))};this.mark_folder=function(a,b,d,e){$(this.get_folder_li(a,d,e)).addClass(b);this.triggerEvent("markfolder",{folder:a,mark:b,status:!0})};this.unmark_folder=function(a,b,d,e){$(this.get_folder_li(a,d,e)).removeClass(b);this.triggerEvent("markfolder",{folder:a,
+mark:b,status:!1})};this.get_folder_li=function(a,b,d){b||(b="rcmli");if(this.gui_objects.folderlist)return a=this.html_identifier(a,d),document.getElementById(b+a)};this.set_message_coltypes=function(a,b,d){var e=this.message_list,f=e?e.thead:null,h,g;this.env.listcols=a;this.env.coltypes||(this.env.coltypes={});if(f){if(b){f.innerHTML="";g=document.createElement("tr");c=0;for(a=b.length;c<a;c++)h=document.createElement("th"),h.innerHTML=b[c].html||"",b[c].id&&(h.id=b[c].id),b[c].className&&(h.className=
+b[c].className),g.appendChild(h);f.appendChild(g)}g=0;for(a=this.env.listcols.length;g<a;g++)b=this.env.listcols[g],!(h=f.rows[0].cells[g])||"from"!=b&&"to"!=b&&"fromto"!=b||$(h).attr("rel",b).find("span,a").text(this.get_label("fromto"==b?d:b))}this.env.subject_col=null;this.env.flagged_col=null;this.env.status_col=null;this.env.coltypes.folder&&(this.env.coltypes.folder.hidden=!(this.env.search_request||this.env.search_id)||"base"==this.env.search_scope);0<=(g=$.inArray("subject",this.env.listcols))&&
+(this.env.subject_col=g,e&&(e.subject_col=g));0<=(g=$.inArray("flag",this.env.listcols))&&(this.env.flagged_col=g);0<=(g=$.inArray("status",this.env.listcols))&&(this.env.status_col=g);e&&(e.hide_column("folder",this.env.coltypes.folder&&this.env.coltypes.folder.hidden||0>$.inArray("folder",this.env.listcols)),e.init_header())};this.set_rowcount=function(a,b){if(b&&b!=this.env.mailbox)return!1;$(this.gui_objects.countdisplay).html(a);this.set_page_buttons()};this.set_mailboxname=function(a){this.gui_objects.mailboxname&&
+a&&(this.gui_objects.mailboxname.innerHTML=a)};this.set_quota=function(a){this.gui_objects.quotadisplay&&a&&"text"==a.type&&$(this.gui_objects.quotadisplay).text((a.percent||0)+"%").attr("title",a.title);this.triggerEvent("setquota",a);this.env.quota_content=a};this.set_trash_count=function(a){this[(a?"un":"")+"mark_folder"](this.env.trash_mailbox,"empty","",!0)};this.set_unread_count=function(a,b,d,e){if(!this.gui_objects.mailboxlist)return!1;this.env.unread_counts[a]=b;this.set_unread_count_display(a,
+d);e?this.mark_folder(a,e,"",!0):b||this.unmark_folder(a,"recent","",!0)};this.set_unread_count_display=function(a,b){var d,e,f,g,m;if(f=this.get_folder_li(a,"",!0)){g=this.env.unread_counts[a]?this.env.unread_counts[a]:0;e=$(f).children("a").eq(0);d=e.children("span.unreadcount");!d.length&&g&&(d=$("<span>").addClass("unreadcount").appendTo(e));e=0;if((m=f.getElementsByTagName("div")[0])&&m.className.match(/collapsed/))for(var k in this.env.unread_counts)k.startsWith(a+this.env.delimiter)&&(e+=this.env.unread_counts[k]);
+g&&d.length?d.html(this.env.unreadwrap.replace(/%[sd]/,g)):d.length&&d.remove();d=RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+"]+$");a.match(d)&&this.set_unread_count_display(a.replace(d,""),!1);0<g+e?$(f).addClass("unread"):$(f).removeClass("unread")}d=/^\([0-9]+\)\s+/i;b&&document.title&&(f="",f=String(document.title),f=g&&f.match(d)?f.replace(d,"("+g+") "):g?"("+g+") "+f:f.replace(d,""),this.set_pagetitle(f))};this.set_headers=function(a){this.gui_objects.all_headers_row&&
+this.gui_objects.all_headers_box&&a&&$(this.gui_objects.all_headers_box).html(a).show()};this.show_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&this.env.uid&&($(b).removeClass("show-headers").addClass("hide-headers"),$(this.gui_objects.all_headers_row).show(),b.onclick=function(){g.command("hide-headers","",b)},this.gui_objects.all_headers_box.innerHTML||this.http_post("headers",{_uid:this.env.uid,_mbox:this.env.mailbox},this.display_message(this.get_label("loading"),
+"loading")))};this.hide_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&($(b).removeClass("hide-headers").addClass("show-headers"),$(this.gui_objects.all_headers_row).hide(),b.onclick=function(){g.command("show-headers","",b)})};this.folder_selector=function(a,b){var d=this.folder_selector_element;if(!d){var e=[],f=this.env.delimiter,h=$('<ul class="toolbarmenu">'),m=document.createElement("a"),d=$('<div id="folder-selector" class="popupmenu"></div>');m.href=
+"#";m.className="icon";$.each(this.env.mailboxes_list,function(){var a=0,b=0,d=g.env.mailboxes[this],h=d.id,q=$(m.cloneNode(!1)),v=$("<li>");d.virtual?q.addClass("virtual").attr("aria-disabled","true").attr("tabindex","-1"):q.addClass("active").data("id",d.id);for(d["class"]&&q.addClass(d["class"]);0<=(b=h.indexOf(f,b));)a++,b++;q.css("padding-left",a?16*a+"px":0);q.append($("<span>").text(d.name));v.append(q);e.push(v)});h.append(e).appendTo(d);d.css({left:"-1000px",top:"-1000px"}).appendTo($("body")).show();
+10<e.length&&d.css("max-height",10*$("li",d)[0].offsetHeight+9);d.on("click","a.active",function(a){d.data("callback")($(this).data("id"));return!1});this.folder_selector_element=d}d.data("callback",b);this.show_menu("folder-selector",!0,a)};this.show_menu=function(a,b,d){var e="object"==typeof a?a.menu:a,f=$("#"+e),g=d&&d.target?$(d.target):$(f.attr("rel")||"#"+e+"link"),m=rcube_event.is_keyboard(d),k=f.attr("data-align")||"",n=!1;"A"!=g.get(0).tagName&&g.closest("a").length&&(g=g.closest("a"));
+"string"==typeof a&&(a={menu:e});f.length||(f=this.triggerEvent("menu-get",{name:e,props:a,originalEvent:d}));if(!f||!f.length)return this.triggerEvent(!1===b?"menu-close":"menu-open",{name:e,props:a,originalEvent:d});f.appendTo(document.body);"undefined"==typeof b&&(b=f.is(":visible")?!1:!0);if(b&&g.length){var l=$(window),p=g.offset(),q=0<=k.indexOf("bottom"),n="menuitem"==g.attr("role")||0<g.closest("[role=menuitem]").length;g.offsetWidth=g.outerWidth();g.offsetHeight=g.outerHeight();!q&&p.top+
+g.offsetHeight+f.height()>l.height()&&(q=!0);0<=k.indexOf("right")?p.left=p.left+g.outerWidth()-f.width():n&&(p.left=p.left+g.offsetWidth-5,p.top-=g.offsetHeight);p.left+f.width()>l.width()&&(p.left=l.width()-f.width()-12);p.top=Math.max(0,p.top+(q?-f.height():g.offsetHeight));f.css({left:p.left+"px",top:p.top+"px"})}if(b){for(k=this.menu_stack.length-1;n&&0<=k;k--)$(g).parents("#"+this.menu_stack[k]).length||"menuitem"==$(d.target).parent().attr("role")||this.hide_menu(this.menu_stack[k],d);n&&this.menu_stack.length?
+(f.data("parent",$.last(this.menu_stack)),f.css("z-index",($("#"+$.last(this.menu_stack)).css("z-index")||0)+1)):!n&&this.menu_stack.length&&this.hide_menu(this.menu_stack[0],d);f.show().attr("aria-hidden","false").data("opener",g.attr("aria-expanded","true").get(0));this.triggerEvent("menu-open",{name:e,obj:f,props:a,originalEvent:d});this.menu_stack.push(e);if(this.menu_keyboard_active=b&&m)this.focused_menu=e,f.find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()}else this.hide_menu(e,
+d);return b};this.hide_menu=function(a,b){if(this.menu_stack.length){for(var d,e=rcube_event.is_keyboard(b),f=this.menu_stack.length-1;0<=f;f--)d=$("#"+this.menu_stack[f]).hide().attr("aria-hidden","true").data("parent",!1),this.triggerEvent("menu-close",{name:this.menu_stack[f],obj:d,props:{menu:this.menu_stack[f]},originalEvent:b}),this.menu_stack[f]==a&&(f=-1,d.data("opener")&&($(d.data("opener")).attr("aria-expanded","false"),e&&d.data("opener").focus())),this.menu_stack.pop();this.menu_stack.length&&
+e?(this.menu_keyboard_active=!0,this.focused_menu=$.last(this.menu_stack),d&&d.data("opener")||$("#"+this.focused_menu).find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()):(this.focused_menu=null,this.menu_keyboard_active=!1)}else this.triggerEvent("menu-close",{name:a,props:{menu:a},originalEvent:b})};this.element_position=function(a,b){b=$(b);var d=$(window),e=b.outerWidth(),f=b.outerHeight(),g=b.data("menu-pos"),m=d.height(),k=$(a).height(),n=$(a).width(),l=b.offset(),p=
+l.top,l=l.left+e;"bottom"==g?(p+=f,l-=e):l-=5;p+k>m&&(p-=k-f,0>p&&(p=Math.max(0,(m-k)/2)));l+n>d.width()&&(l-=n+e);a.css({left:l+"px",top:p+"px"})};this.editor_init=function(a,b){this.editor=new rcube_text_editor(a,b)};this.html2plain=function(a,b){return this.format_converter(a,"html",b)};this.plain2html=function(a,b){return this.format_converter(a,"plain",b)};this.format_converter=function(a,b,d){if(!a||"html"==b&&!a.replace(/<[^>]+>| |\xC2\xA0|\s/g,"").length||"html"!=b&&!a.replace(/\xC2\xA0|\s/g,
+"").length)return d&&setTimeout(function(){d("")},50),!0;var e=this.env.editor_warned||confirm(this.get_label("editorwarning"));this.env.editor_warned=!0;if(!e)return!1;b="?_task=utils&_action="+("html"==b?"html2text":"text2html");var f=this.set_busy(!0,"converting");this.log("HTTP POST: "+b);$.ajax({type:"POST",url:b,data:a,contentType:"application/octet-stream",error:function(a,b,d){g.http_error(a,b,d,f)},success:function(a){g.set_busy(!1,null,f);d&&d(a)}});return!0};this.url=function(a,b){var d=
+"string"===typeof b?b:"";"string"!==typeof a?b=a:b&&"object"===typeof b||(b={});a?b._action=a:this.env.action&&(b._action=this.env.action);var e=this.env.comm_path,f,g={};a&&a.match(/([a-z0-9_-]+)\/([a-z0-9-_.]+)/)&&(b._action=RegExp.$2,e=e.replace(/\_task=[a-z0-9_-]+/,"_task="+RegExp.$1));for(f in b)void 0!==b[f]&&null!==b[f]&&(g[f]=b[f]);if(g=$.param(g))e+=(-1<e.indexOf("?")?"&":"?")+g;d&&(e+=(-1<e.indexOf("?")?"&":"?")+d);return e};this.redirect=function(a,b){(b||null===b)&&this.set_busy(!0);this.is_framed()?
+parent.rcmail.redirect(a,b):(this.env.extwin&&("string"==typeof a?a+=(0>a.indexOf("?")?"?":"&")+"_extwin=1":a._extwin=1),this.location_href(a,window))};this.goto_url=function(a,b,d){this.redirect(this.url(a,b),d)};this.location_href=function(a,b,d){d&&this.lock_frame();"object"==typeof a&&(a=this.env.comm_path+"&"+$.param(a));bw.ie&&b==window?$("<a>").attr("href",a).appendTo(document.body).get(0).click():b.location.href=a;this.start_keepalive()};this.update_state=function(a){window.history.replaceState&&
+window.history.replaceState({},document.title,rcmail.url("",a))};this.http_request=function(a,b,d){"object"!==typeof b&&(b=rcube_parse_query(b));b._remote=1;b._unlock=d?d:0;var e=this.triggerEvent("request"+a,b);if(!1===e)return b._unlock&&this.set_busy(!1,null,b._unlock),!1;void 0!==e&&(b=e,b._action&&(a=b._action,delete b._action));b=this.url(a,b);this.log("HTTP GET: "+b);this.start_keepalive();return $.ajax({type:"GET",url:b,dataType:"json",success:function(a){g.http_response(a)},error:function(b,
+e,m){g.http_error(b,e,m,d,a)}})};this.http_post=function(a,b,d){"object"!==typeof b&&(b=rcube_parse_query(b));b._remote=1;b._unlock=d?d:0;var e=this.triggerEvent("request"+a,b);if(!1===e)return b._unlock&&this.set_busy(!1,null,b._unlock),!1;void 0!==e&&(b=e,b._action&&(a=b._action,delete b._action));e=this.url(a);this.log("HTTP POST: "+e);this.start_keepalive();return $.ajax({type:"POST",url:e,data:b,dataType:"json",success:function(a){g.http_response(a)},error:function(b,e,m){g.http_error(b,e,m,
+d,a)}})};this.abort_request=function(a){a.request&&a.request.abort();a.lock&&this.set_busy(!1,null,a.lock)};this.http_response=function(a){if(a){a.unlock&&this.set_busy(!1);this.triggerEvent("responsebefore",{response:a});this.triggerEvent("responsebefore"+a.action,{response:a});a.env&&this.set_env(a.env);if("object"===typeof a.texts)for(var b in a.texts)"string"===typeof a.texts[b]&&this.add_label(b,a.texts[b]);a.exec&&(this.log(a.exec),eval(a.exec));if(a.callbacks&&a.callbacks.length)for(b=0;b<
+a.callbacks.length;b++)this.triggerEvent(a.callbacks[b][0],a.callbacks[b][1]);switch(a.action){case "delete":if("addressbook"==this.task){var d;b=this.contact_list.get_selection();d=!1;b&&this.contact_list.rows[b]&&(d=""==this.env.source?(d=String(b).replace(/^[^-]+-/,""))&&this.env.address_sources[d]&&!this.env.address_sources[d].readonly:!this.env.address_sources[this.env.source].readonly);this.enable_command("compose",b&&this.contact_list.rows[b]);this.enable_command("delete","edit",d);this.enable_command("export",
+this.contact_list&&0<this.contact_list.rowcount);this.enable_command("export-selected","print",!1)}case "move":"show"==this.env.action?(this.enable_command(this.env.message_commands,!0),this.env.list_post||this.enable_command("reply-list",!1)):"addressbook"==this.task&&this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount});case "purge":case "expunge":"mail"==this.task&&(this.env.exists||(this.env.contentframe&&this.show_contentframe(!1),this.enable_command(this.env.message_commands,
+"purge","expunge","select-all","select-none","expand-all","expand-unread","collapse-all",!1)),this.message_list&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount}));break;case "refresh":case "check-recent":$.each(this.env.recent_flags||{},function(a,b){g.set_message(a,"deleted",b.deleted);g.set_message(a,"replied",b.answered);g.set_message(a,"unread",!b.seen);g.set_message(a,"forwarded",b.forwarded);g.set_message(a,"flagged",b.flagged)}),delete this.env.recent_flags;
+case "getunread":case "search":this.env.qsearch=null;case "list":if("mail"==this.task){d=this.is_multifolder_listing();var e=this.message_list;b=this.env.list_uid;this.enable_command("show","select-all","select-none",0<this.env.messagecount);this.enable_command("expunge",this.env.exists&&!d);this.enable_command("purge",this.purge_mailbox_test()&&!d);this.enable_command("import-messages",!d);this.enable_command("expand-all","expand-unread","collapse-all",this.env.threading&&this.env.messagecount&&
+!d);if(e){if("list"==a.action||"search"==a.action)b&&(e.rows[b]||(b+="-"+this.env.mailbox),e.rows[b]&&e.select(b),delete this.env.list_uid),this.enable_command("set-listmode",this.env.threads&&!d),0<e.rowcount&&!$(document.activeElement).is("input,textarea")&&e.focus(),this.msglist_select(e);"getunread"!=a.action&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:e.rowcount})}}else"addressbook"==this.task&&(this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount),
+"list"==a.action||"search"==a.action)&&(this.enable_command("search-create",""==this.env.source),this.enable_command("search-delete",this.env.search_id),this.update_group_commands(),0<this.contact_list.rowcount&&!$(document.activeElement).is("input,textarea")&&this.contact_list.focus(),this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount}));break;case "list-contacts":case "search-contacts":this.contact_list&&0<this.contact_list.rowcount&&this.contact_list.focus()}a.unlock&&
+this.hide_message(a.unlock);this.triggerEvent("responseafter",{response:a});this.triggerEvent("responseafter"+a.action,{response:a});this.start_keepalive()}};this.http_error=function(a,b,d,e,f){d=a.statusText;this.set_busy(!1,null,e);a.abort();this.unload||(a.status&&d?this.display_message(this.get_label("servererror")+" ("+d+")","error"):"timeout"==b?this.display_message(this.get_label("requesttimedout"),"error"):0==a.status&&"abort"!=b&&this.display_message(this.get_label("connerror"),"error"),
+(b=a.getResponseHeader("Location"))&&"compose"!=this.env.action&&this.redirect(b),403==a.status?(this.is_framed()?parent:window).location.reload():"keep-alive"==f&&setTimeout(function(){g.keep_alive();g.start_keepalive()},3E4))};this.session_error=function(a){this.env.server_error=401;"compose"==this.env.action?(this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0):a&&setTimeout(function(){g.redirect(a,!0)},2E3)};this.iframe_loaded=function(a){this.set_busy(!1,null,a);this.submit_timer&&
+clearTimeout(this.submit_timer)};this.multi_thread_http_request=function(a){var b,d,e=(new Date).getTime(),f=a.threads||1;a.reqid=e;a.running=0;a.requests=[];a.result=[];a._items=$.extend([],a.items);a.lock||(a.lock=this.display_message(this.get_label("loading"),"loading"));this.http_request_jobs[e]=a;for(b=0;b<f;b++){d=a._items.shift();if(void 0===d)break;a.running++;a.requests.push(this.multi_thread_send_request(a,d))}return e};this.multi_thread_send_request=function(a,b){var d,e,f;if(a.postdata){e=
+{};for(d in a.postdata)e[d]=String(a.postdata[d]).replace("%s",b);e._reqid=a.reqid}else if("string"==typeof a.query)f=a.query.replace("%s",b),f+="&_reqid="+a.reqid;else if("object"==typeof a.query&&a.query){f={};for(d in a.query)f[d]=String(a.query[d]).replace("%s",b);f._reqid=a.reqid}return e?this.http_post(a.action,e):this.http_request(a.action,f)};this.multi_thread_http_response=function(a,b){var d=this.http_request_jobs[b];if(d&&!(0>=d.running||d.cancelled)){d.running--;if(d.onresponse&&"function"==
+typeof d.onresponse)d.onresponse(a);d.result=$.extend(d.result,a);var e=d._items.shift();void 0!==e?(d.running++,d.requests.push(this.multi_thread_send_request(d,e))):0==d.running&&(d.whendone&&"function"==typeof d.whendone&&d.whendone(d.result),this.set_busy(!1,"",d.lock),delete this.http_request_jobs[b])}};this.multi_thread_request_abort=function(a){if(a=this.http_request_jobs[a]){for(var b=0;0<a.running&&b<a.requests.length;b++)a.requests[b].abort&&a.requests[b].abort();a.running=0;a.cancelled=
+!0;this.set_busy(!1,"",a.lock)}};this.async_upload_form=function(a,b,d){var e=(new Date).getTime(),f="rcmupload"+e,g=this.async_upload_form_frame(f);if(this.env.upload_progress_name){var m=this.env.upload_progress_name,k=$("input[name="+m+"]",a);k.length||(k=$("<input>").attr({type:"hidden",name:m}),k.prependTo(a));k.val(e)}g.bind("load",{ts:e},d);$(a).attr({target:f,action:this.url(b,{_id:this.env.compose_id||"",_uploadid:e,_from:this.env.action}),method:"POST"}).attr(a.encoding?"encoding":"enctype",
+"multipart/form-data").submit();return f};this.async_upload_form_frame=function(a){return $("<iframe>").attr({name:a,style:"border: none; width: 0; height: 0; visibility: hidden"}).appendTo(document.body)};this.document_drag_hover=function(a,b){$(this.gui_objects.filedrop)[b?"addClass":"removeClass"]("active")};this.file_drag_hover=function(a,b){a.preventDefault();a.stopPropagation();$(this.gui_objects.filedrop)[b?"addClass":"removeClass"]("hover")};this.file_dropped=function(a){this.file_drag_hover(a,
+!1);var b=a.target.files||a.dataTransfer.files,d=window.FormData?new FormData:null,e=(this.env.filedrop.fieldname||"_file")+(this.env.filedrop.single?"":"[]"),f="------multipartformboundary"+(new Date).getTime(),h="--"+f+"\r\n";if(b&&b.length)for(var m=function(){var a=1<b.length,e=(new Date).getTime(),a=$("<span>").text(a?g.get_label("uploadingmany"):b[0].name).html();g.add2attachment_list(e,{name:"",html:a,classname:"uploading",complete:!1})||(g.file_upload_id=g.set_busy(!0,"uploading"));h+="--"+
+f+"--\r\n";$.ajax({type:"POST",dataType:"json",url:g.url(g.env.filedrop.action||"upload",{_id:g.env.compose_id||g.env.cid||"",_uploadid:e,_remote:1,_from:g.env.action}),contentType:d?!1:"multipart/form-data; boundary="+f,processData:!1,timeout:0,data:d||h,headers:{"X-Roundcube-Request":g.env.request_token},xhr:function(){var a=jQuery.ajaxSettings.xhr();!d&&a.sendAsBinary&&(a.send=a.sendAsBinary);return a},success:function(a){g.http_response(a)},error:function(a,b,d){g.http_error(a,b,d,null,"attachment")}})},
+k=this.env.filedrop.single?0:b.length-1,n=a=0,l;a<=k&&(l=b[n]);n++)if(l.name||(l.name=l.fileName),l.size||(l.size=l.fileSize),l.type||(l.type="application/octet-stream"),!d&&/[^\x20-\x7E]/.test(l.name)&&(l.name_bin=unescape(encodeURIComponent(l.name))),!this.env.filedrop.filter||l.type.match(RegExp(this.env.filedrop.filter))){if(d){if(d.append(e,l),a==k)return m()}else if(window.FileReader){var p=new FileReader;p.onload=function(a,b){return function(d){h+='Content-Disposition: form-data; name="'+
+e+'"';h+='; filename="'+(l.name_bin||a.name)+'"\r\n';h+="Content-Length: "+a.size+"\r\n";h+="Content-Type: "+a.type+"\r\n\r\n";h+=p.result+"\r\n";h+="--"+f+"\r\n";if(b==k)return m()}}(l,a);p.readAsBinaryString(l)}else if(l.getAsBinary&&(h+='Content-Disposition: form-data; name="'+e+'"',h+='; filename="'+(l.name_bin||l.name)+'"\r\n',h+="Content-Length: "+l.size+"\r\n",h+="Content-Type: "+l.type+"\r\n\r\n",h+=l.getAsBinary()+"\r\n",h+="--"+f+"\r\n",a==k))return m();a++}};this.start_keepalive=function(){!this.env.session_lifetime||
+this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._keepalive&&clearInterval(this._keepalive),this._keepalive=setInterval(function(){g.keep_alive()},500*this.env.session_lifetime))};this.start_refresh=function(){!this.env.refresh_interval||this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._refresh&&clearInterval(this._refresh),this._refresh=setInterval(function(){g.refresh()},1E3*this.env.refresh_interval))};this.keep_alive=function(){this.busy||
+this.http_request("keep-alive")};this.refresh=function(){if(this.busy)setTimeout(function(){g.refresh();g.start_refresh()},1E4);else{var a={},b=this.set_busy(!0,"refreshing");"mail"==this.task&&this.gui_objects.mailboxlist&&(a=this.check_recent_params());a._last=Math.floor(this.env.lastrefresh.getTime()/1E3);this.env.lastrefresh=new Date;this.http_post("refresh",a,b)}};this.check_recent_params=function(){var a={_mbox:this.env.mailbox};this.gui_objects.mailboxlist&&(a._folderlist=1);this.gui_objects.quotadisplay&&
+(a._quota=1);this.env.search_request&&(a._search=this.env.search_request);this.gui_objects.messagelist&&(a._list=1,a._uids=$.map(this.message_list.rows,function(a,d){return d}).join(","));return a};this.quote_html=function(a){return String(a).replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")};this.opener=function(a,b){var d,e=window.opener;try{if(e&&!e.closed){a&&(!e.rcmail||e.rcmail.env.framed)&&e.parent&&e.parent.rcmail&&(e=e.parent);if(e.rcmail&&b)for(d in b)if(e.rcmail.env[d]!=
+b[d])return;return e.rcmail}}catch(f){}};this.get_single_uid=function(){var a=this.env.uid||(this.message_list?this.message_list.get_single_selection():null);return g.triggerEvent("get_single_uid",{uid:a})||a};this.get_single_cid=function(){var a=this.env.cid||(this.contact_list?this.contact_list.get_single_selection():null);return g.triggerEvent("get_single_cid",{cid:a})||a};this.get_message_mailbox=function(a){return((this.env.messages&&a?this.env.messages[a]:null)||{}).mbox||this.env.mailbox};
+this.params_from_uid=function(a,b){b||(b={});b._uid=String(a).split("-")[0];b._mbox=this.get_message_mailbox(a);return b};this.get_caret_pos=function(a){return void 0!==a.selectionEnd?a.selectionEnd:a.value.length};this.set_caret_pos=function(a,b){try{a.setSelectionRange&&a.setSelectionRange(b,b)}catch(d){}};this.get_input_selection=function(a){var b=0,d=0,e="";"number"==typeof a.selectionStart&&"number"==typeof a.selectionEnd&&(e=a.value,b=a.selectionStart,d=a.selectionEnd);return{start:b,end:d,
+text:e.substr(b,d-b)}};this.lock_form=function(a,b){if(a&&a.elements){var d,e,f;b&&(this.disabled_form_elements=[]);d=0;for(e=a.elements.length;d<e;d++)if(f=a.elements[d],"hidden"!=f.type)if(b&&f.disabled)this.disabled_form_elements.push(f);else if(b||0>$.inArray(f,this.disabled_form_elements))f.disabled=b}};this.mailto_handler_uri=function(){return location.href.split("?")[0]+"?_task=mail&_action=compose&_to=%s"};this.register_protocol_handler=function(a){try{window.navigator.registerProtocolHandler("mailto",
+this.mailto_handler_uri(),a)}catch(b){this.display_message(String(b),"error")}};this.check_protocol_handler=function(a,b){var d=window.navigator;d&&"function"==typeof d.registerProtocolHandler?"function"==typeof d.isProtocolHandlerRegistered?(d=d.isProtocolHandlerRegistered("mailto",this.mailto_handler_uri()))&&$(b).parent().find(".mailtoprotohandler-status").html(d):$(b).click(function(){g.register_protocol_handler(a);return!1}):$(b).addClass("disabled").click(function(){return!1})};this.browser_capabilities_check=
+function(){this.env.browser_capabilities||(this.env.browser_capabilities={});$.each(["pdf","flash","tif"],function(){void 0===g.env.browser_capabilities[this]&&(g.env.browser_capabilities[this]=g[this+"_support_check"]())})};this.browser_capabilities=function(){if(!this.env.browser_capabilities)return"";var a,b=[];for(a in this.env.browser_capabilities)b.push(a+"="+this.env.browser_capabilities[a]);return b.join()};this.tif_support_check=function(){window.setTimeout(function(){var a=new Image;a.onload=
+function(){g.env.browser_capabilities.tif=1};a.onerror=function(){g.env.browser_capabilities.tif=0};a.src=g.assets_path("program/resources/blank.tif")},10);return 0};this.pdf_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/pdf"]:{},b=navigator.plugins,d=b.length,e=/Adobe Reader|PDF|Acrobat/i;if(a&&a.enabledPlugin)return 1;if("ActiveXObject"in window){try{if(a=new ActiveXObject("AcroPDF.PDF"))return 1}catch(f){}try{if(a=new ActiveXObject("PDF.PdfCtrl"))return 1}catch(h){}}for(i=
+0;i<d;i++)if(a=b[i],"String"===typeof a){if(e.test(a))return 1}else if(a.name&&e.test(a.name))return 1;window.setTimeout(function(){$("<object>").css({position:"absolute",left:"-10000px"}).attr({data:g.assets_path("program/resources/dummy.pdf"),width:1,height:1,type:"application/pdf"}).load(function(){g.env.browser_capabilities.pdf=1}).error(function(){g.env.browser_capabilities.pdf=0}).appendTo($("body"))},10);return 0};this.flash_support_check=function(){var a=navigator.mimeTypes?navigator.mimeTypes["application/x-shockwave-flash"]:
+{};if(a&&a.enabledPlugin)return 1;if("ActiveXObject"in window)try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return 1}catch(b){}return 0};this.assets_path=function(a){this.env.assets_path&&!a.startsWith(this.env.assets_path)&&(a=this.env.assets_path+a);return a};this.set_cookie=function(a,b,d){setCookie(a,b,d,this.env.cookie_path,this.env.cookie_domain,this.env.cookie_secure)};this.get_local_storage_prefix=function(){this.local_storage_prefix||(this.local_storage_prefix="roundcube."+(this.env.user_id||
+"anonymous")+".");return this.local_storage_prefix};this.local_storage_get_item=function(a,b,d){var e,f;try{e=localStorage.getItem(this.get_local_storage_prefix()+a),f=JSON.parse(e)}catch(g){}return f||b||null};this.local_storage_set_item=function(a,b,d){try{return localStorage.setItem(this.get_local_storage_prefix()+a,JSON.stringify(b)),!0}catch(e){return!1}};this.local_storage_remove_item=function(a){try{return localStorage.removeItem(this.get_local_storage_prefix()+a),!0}catch(b){return!1}};this.print_dialog=
+function(){bw.safari?setTimeout("window.print()",10):window.print()}}rcube_webmail.long_subject_title=function(g,u){if(!g.title){var a=$(g);a.width()+15*(u||0)>a.parent().width()&&(g.title=rcube_webmail.subject_text(g))}};
rcube_webmail.long_subject_title_ex=function(g){if(!g.title){var u=$(g),a=$.trim(u.text()),a=$("<span>").text(a).css({position:"absolute","float":"left",visibility:"hidden","font-size":u.css("font-size"),"font-weight":u.css("font-weight")}).appendTo($("body")),b=a.width();a.remove();b+15*$("span.branch",u).width()>u.width()&&(g.title=rcube_webmail.subject_text(g))}};rcube_webmail.subject_text=function(g){g=$(g).clone();g.find(".skip-on-drag").remove();return g.text()};
rcube_webmail.prototype.get_cookie=getCookie;rcube_webmail.prototype.addEventListener=rcube_event_engine.prototype.addEventListener;rcube_webmail.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener;rcube_webmail.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/js/editor.js new/roundcubemail-1.1.4/program/js/editor.js
--- old/roundcubemail-1.1.3/program/js/editor.js 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/js/editor.js 2015-12-23 10:18:12.000000000 +0100
@@ -527,20 +527,19 @@
// Append the signature as a div within the body
if (!sigElem) {
- var body = this.editor.getBody(),
- doc = this.editor.getDoc();
+ var body = this.editor.getBody();
- sigElem = doc.createElement('div');
- sigElem.setAttribute('id', '_rc_sig');
+ sigElem = $('<div id="_rc_sig"></div>').get(0);
- if (rcmail.env.top_posting && !rcmail.env.sig_below) {
+ // insert at start or at cursor position in top-posting mode
+ // (but not if the content is empty)
+ if (rcmail.env.top_posting && !rcmail.env.sig_below && (body.childNodes.length > 1 || $(body).text())) {
this.editor.getWin().focus(); // correct focus in IE & Chrome
var node = this.editor.selection.getNode();
- // insert at start or at cursor position if found
- body.insertBefore(sigElem, node.nodeName == 'BODY' ? body.firstChild : node.nextSibling);
- body.insertBefore(doc.createElement('p'), sigElem);
+ $(sigElem).insertBefore(node.nodeName == 'BODY' ? body.firstChild : node.nextSibling);
+ $('<p>').append($('<br>')).insertBefore(sigElem);
}
else {
body.appendChild(sigElem);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/js/editor.min.js new/roundcubemail-1.1.4/program/js/editor.min.js
--- old/roundcubemail-1.1.3/program/js/editor.min.js 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/js/editor.min.js 2015-12-23 10:18:12.000000000 +0100
@@ -41,8 +41,8 @@
(c.execCommand("mceSpellCheck",!1),this.spellcheck_observer()):(c=this.spellchecker)&&c.state&&"ready"!=c.state&&"no_error_found"!=c.state&&$(c.spell_span).trigger("click")};this.spellcheck_state=function(){var c;if(this.editor)return this.spellcheck_active;if((c=this.spellchecker)&&c.state)return"ready"!=c.state&&"no_error_found"!=c.state};this.spellcheck_resume=function(c){var a=this.editor;if(a)a.plugins.spellchecker.markErrors(c);else if(a=this.spellchecker)a.prepare(!1,!0),a.processData(c)};
this.get_language=function(){if(this.editor)return this.editor.settings.spellchecker_language||rcmail.env.spell_lang;if(this.spellchecker)return GOOGIE_CUR_LANG};this.set_language=function(c){var a=this.editor;a&&(a.settings.spellchecker_language=c);(a=this.spellchecker)&&a.setCurrentLanguage(c)};this.replace=function(c){var a=this.editor;if(a)a.getWin().focus(),a.selection.setContent(rcmail.quote_html(c).replace(/\r?\n/g,"<br/>"),{format:"text"});else if(a=rcube_find_object(this.id)){var d=$(a).is(":focus")?
rcmail.get_input_selection(a):{start:0,end:0},b=a.value;pre=b.substring(0,d.start);end=b.substring(d.end,b.length);a.value=pre+c+end;rcmail.set_caret_pos(a,d.start+c.length);a.focus()}};this.get_content=function(c){var a=this.editor,d="",b=!1;c=$.extend({refresh:!0,selection:!1,nosig:!1,format:"html"},c);c.refresh&&this.spellcheck_stop();if(a)a.getWin().focus(),c.selection&&(d=a.selection.getContent({format:c.format})),d||(d=a.getContent({format:c.format}),b="text"==c.format);else if(a=rcube_find_object(this.id))c.selection&&
-$(a).is(":focus")&&(d=rcmail.get_input_selection(a).text),d||(d=a.value,b=!0);b&&c.nosig&&(c=d.indexOf("-- \n"),0<c&&(d=d.substring(0,c)));return d};this.change_signature=function(c,a){var d,b;b=-1;var f=$("#"+this.id),e=f.val(),g=rcmail.env.identity;this.editor?a&&rcmail.env.signatures?(f=this.editor.dom.get("_rc_sig"),f||(e=this.editor.getBody(),g=this.editor.getDoc(),f=g.createElement("div"),f.setAttribute("id","_rc_sig"),rcmail.env.top_posting&&!rcmail.env.sig_below?(this.editor.getWin().focus(),
-b=this.editor.selection.getNode(),e.insertBefore(f,"BODY"==b.nodeName?e.firstChild:b.nextSibling),e.insertBefore(g.createElement("p"),f)):(e.appendChild(f),d=rcmail.env.top_posting?e.firstChild:$(f).prev())),f.innerHTML=rcmail.env.signatures[c]?rcmail.env.signatures[c].html:""):rcmail.env.top_posting||(d=$(this.editor.getBody()).children().last()):(a&&g&&rcmail.env.signatures&&rcmail.env.signatures[g]&&(g=rcmail.env.signatures[g].text,g=g.replace(/\r\n/g,"\n"),b=rcmail.env.top_posting?e.indexOf(g):
+$(a).is(":focus")&&(d=rcmail.get_input_selection(a).text),d||(d=a.value,b=!0);b&&c.nosig&&(c=d.indexOf("-- \n"),0<c&&(d=d.substring(0,c)));return d};this.change_signature=function(c,a){var d,b;b=-1;var f=$("#"+this.id),e=f.val(),g=rcmail.env.identity;this.editor?a&&rcmail.env.signatures?(f=this.editor.dom.get("_rc_sig"),f||(e=this.editor.getBody(),f=$('<div id="_rc_sig"></div>').get(0),rcmail.env.top_posting&&!rcmail.env.sig_below&&(1<e.childNodes.length||$(e).text())?(this.editor.getWin().focus(),
+g=this.editor.selection.getNode(),$(f).insertBefore("BODY"==g.nodeName?e.firstChild:g.nextSibling),$("<p>").append($("<br>")).insertBefore(f)):(e.appendChild(f),d=rcmail.env.top_posting?e.firstChild:$(f).prev())),f.innerHTML=rcmail.env.signatures[c]?rcmail.env.signatures[c].html:""):rcmail.env.top_posting||(d=$(this.editor.getBody()).children().last()):(a&&g&&rcmail.env.signatures&&rcmail.env.signatures[g]&&(g=rcmail.env.signatures[g].text,g=g.replace(/\r\n/g,"\n"),b=rcmail.env.top_posting?e.indexOf(g):
e.lastIndexOf(g),0<=b&&(e=e.substring(0,b)+e.substring(b+g.length,e.length))),a&&rcmail.env.signatures&&rcmail.env.signatures[c]?(g=rcmail.env.signatures[c].text,g=g.replace(/\r\n/g,"\n"),0<=b?(e=e.substring(0,b)+g+e.substring(b,e.length),b-=1):e?rcmail.env.top_posting&&!rcmail.env.sig_below?(pos=rcmail.get_caret_pos(f.get(0)))?(e=e.substring(0,pos)+"\n"+g+"\n\n"+e.substring(pos,e.length),b=pos):(e="\n\n"+g+"\n\n"+e.replace(/^[\r\n]+/,""),b=0):(e=e.replace(/[\r\n]+$/,""),b=!rcmail.env.top_posting&&
e.length?e.length+1:0,e+="\n\n"+g):(e="\n\n"+g,b=0)):b=rcmail.env.top_posting?0:e.length,f.val(e),rcmail.set_caret_pos(f.get(0),b));this.editor&&d&&d.length&&(this.editor.selection.setCursorLocation(d.get(0)),this.editor.getWin().scroll(0,d.offset().top))};this.save=function(){this.editor&&this.editor.save()};this.focus=function(){(this.editor||rcube_find_object(this.id)).focus()};this.file_browser_callback=function(c,a,d){var b,f,e,g=[];a=this.editor.windowManager.open({title:rcmail.gettext("select"+
d),width:500,height:300,html:'<div id="image-selector-list"><ul></ul></div><div id="image-selector-form"><div id="image-upload-button" class="mce-widget mce-btn" role="button" tabindex="0"></div></div>',buttons:[{text:"Cancel",onclick:function(){h.file_browser_close()}}]});rcmail.env.file_browser_field=c;rcmail.env.file_browser_type=d;for(b in rcmail.env.attachments)(f=h.file_browser_entry(b,rcmail.env.attachments[b]))&&g.push(f);g.length&&$("#image-selector-list > ul").append(g).find("li:first").focus();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/js/list.js new/roundcubemail-1.1.4/program/js/list.js
--- old/roundcubemail-1.1.3/program/js/list.js 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/js/list.js 2015-12-23 10:18:12.000000000 +0100
@@ -114,7 +114,8 @@
var r, len, rows = this.tbody.childNodes;
for (r=0, len=rows.length; r<len; r++) {
- this.rowcount += this.init_row(rows[r]) ? 1 : 0;
+ if (rows[r].nodeType == 1)
+ this.rowcount += this.init_row(rows[r]) ? 1 : 0;
}
this.init_header();
@@ -150,8 +151,9 @@
var self = this, uid = row.uid;
this.rows[uid] = {uid:uid, id:row.id, obj:row};
- // set eventhandlers to table row (only left-button-clicks in mouseup)
- $(row).mousedown(function(e) { return self.drag_row(e, this.uid); })
+ $(row).data('uid', uid)
+ // set eventhandlers to table row (only left-button-clicks in mouseup)
+ .mousedown(function(e) { return self.drag_row(e, this.uid); })
.mouseup(function(e) {
if (e.which == 1 && !self.drag_active)
return self.click_row(e, this.uid);
@@ -355,10 +357,11 @@
if (row.nodeName === undefined) {
// for performance reasons use DOM instead of jQuery here
var domrow = document.createElement(this.row_tagname());
+
if (row.id) domrow.id = row.id;
+ if (row.uid) domrow.uid = row.uid;
if (row.className) domrow.className = row.className;
if (row.style) $.extend(domrow.style, row.style);
- if (row.uid) $(domrow).data('uid', String(row.uid)); // #1489906
for (var e, domcell, col, i=0; row.cols && i < row.cols.length; i++) {
col = row.cols[i];
@@ -394,18 +397,22 @@
var row = this.rows[id];
if (!row) return false;
- var domrow = row.obj;
- for (var domcell, col, i=0; cols && i < cols.length; i++) {
+ var i, domrow = row.obj;
+ for (i = 0; cols && i < cols.length; i++) {
this.get_cell(domrow, i).html(cols[i]);
}
if (newid) {
delete this.rows[id];
+ domrow.uid = newid;
domrow.id = 'rcmrow' + newid;
this.init_row(domrow);
if (select)
this.selection[0] = newid;
+
+ if (this.last_selected == id)
+ this.last_selected = newid;
}
},
@@ -826,14 +833,16 @@
get_row_uid: function(row)
{
- if (row && row.uid)
- return row.uid;
+ if (!row)
+ return;
- var uid;
- if (row && (uid = $(row).data('uid')))
- row.uid = uid;
- else if (row && String(row.id).match(this.id_regexp))
- row.uid = RegExp.$1;
+ if (!row.uid) {
+ var uid = $(row).data('uid');
+ if (uid)
+ row.uid = uid;
+ else if (String(row.id).match(this.id_regexp))
+ row.uid = RegExp.$1;
+ }
return row.uid;
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/js/list.min.js new/roundcubemail-1.1.4/program/js/list.min.js
--- old/roundcubemail-1.1.3/program/js/list.min.js 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/js/list.min.js 2015-12-23 10:18:12.000000000 +0100
@@ -32,16 +32,16 @@
*/
function rcube_list_widget(a,b){this.ENTER_KEY=13;this.DELETE_KEY=46;this.BACKSPACE_KEY=8;this.tagname=(this.list=a?a:null)?this.list.nodeName.toLowerCase():"table";this.id_regexp=/^rcmrow([a-z0-9\-_=\+\/]+)/i;this.rows={};this.selection=[];this.modkey=this.subject_col=this.colcount=this.rowcount=0;this.aria_listbox=this.toggleselect=this.keyboard=this.column_movable=this.draggable=this.multi_selecting=this.multiexpand=this.multiselect=!1;this.parent_focus=!0;this.col_drag_active=this.drag_active=
!1;this.shift_start=this.last_selected=this.column_fixed=null;this.focused=!1;this.drag_mouse_start=null;this.dblclick_time=500;this.row_init=function(){};if(b&&"object"===typeof b)for(var c in b)this[c]=b[c];rcube_list_widget._instances.push(this)}
-rcube_list_widget.prototype={init:function(){"table"==this.tagname&&this.list&&this.list.tBodies[0]?(this.thead=this.list.tHead,this.tbody=this.list.tBodies[0]):"table"!=this.tagname&&this.list&&(this.tbody=this.list);"listbox"==$(this.list).attr("role")&&(this.aria_listbox=!0,this.multiselect&&$(this.list).attr("aria-multiselectable","true"));var a=this;if(this.tbody){this.rows={};this.rowcount=0;var b,c,d=this.tbody.childNodes;b=0;for(c=d.length;b<c;b++)this.rowcount+=this.init_row(d[b])?1:0;this.init_header();
-this.frame=this.list.parentNode;this.keyboard&&(rcube_event.add_listener({event:"keydown",object:this,method:"key_press"}),$(this.list).attr("tabindex","0").on("focus",function(b){a.focus(b)}))}this.parent_focus&&(this.list.parentNode.onclick=function(b){a.focus()});return this},init_row:function(a){a.uid=this.get_row_uid(a);if(a&&a.uid){var b=this,c=a.uid;this.rows[c]={uid:c,id:a.id,obj:a};$(a).mousedown(function(a){return b.drag_row(a,this.uid)}).mouseup(function(a){return 1!=a.which||b.drag_active?
-!0:b.click_row(a,this.uid)});bw.touch&&a.addEventListener&&(a.addEventListener("touchstart",function(a){1==a.touches.length&&(b.touchmoved=!1,b.drag_row(rcube_event.touchevent(a.touches[0]),this.uid))},!1),a.addEventListener("touchend",function(a){1==a.changedTouches.length&&(b.touchmoved||b.click_row(rcube_event.touchevent(a.changedTouches[0]),this.uid)||a.preventDefault())},!1),a.addEventListener("touchmove",function(a){1==a.changedTouches.length&&(b.touchmoved=!0,b.drag_active&&a.preventDefault())},
-!1));if(this.aria_listbox){var d="l:"+a.id;$(a).attr("role","option").attr("aria-labelledby",d).find(this.col_tagname()).eq(this.subject_col).attr("id",d)}document.all&&(a.onselectstart=function(){return!1});this.row_init(this.rows[c]);this.triggerEvent("initrow",this.rows[c]);return!0}},init_header:function(){if(this.thead){this.colcount=0;this.fixed_header?($(this.list.tHead).replaceWith($(this.fixed_header).find("thead").clone()),$(this.list.tHead).find("th,td").attr("style","").find("a").attr("tabindex",
-"-1")):!bw.touch&&0<=this.list.className.indexOf("fixedheader")&&this.init_fixed_header();var a,b,c=this;if(this.column_movable&&this.thead&&this.thead.rows)for(b=0;b<this.thead.rows[0].cells.length;b++)this.column_fixed!=b&&(a=this.thead.rows[0].cells[b],a.onmousedown=function(a){return c.drag_column(a,this)},this.colcount++)}},init_fixed_header:function(){var a=$(this.list.tHead).clone();if(this.fixed_header)$(this.fixed_header).find("thead").replaceWith(a);else{this.fixed_header=$("<table>").attr("class",
-this.list.className+" fixedcopy").attr("role","presentation").css({position:"fixed"}).append(a).append("<tbody></tbody>");$(this.list).before(this.fixed_header);var b=this;$(window).resize(function(){b.resize()});$(window).scroll(function(){var a=$(window);b.fixed_header.css({marginLeft:-a.scrollLeft()+"px",marginTop:-a.scrollTop()+"px"})})}$(this.list.tHead).find("a.sortcol").attr("tabindex","-1");a.find("a.sortcol").attr("tabindex","0");this.thead=a.get(0);this.resize()},resize:function(){if(this.fixed_header){var a=
-[];$(this.tbody).parent().find("thead th,thead td").each(function(b){a[b]=$(this).width()});$(this.thead).parent().width($(this.tbody).parent().width());$(this.thead).find("th,td").each(function(b){$(this).width(a[b])});$(window).scroll()}},clear:function(a){if("table"==this.tagname){var b=document.createElement("tbody");this.list.insertBefore(b,this.tbody);this.list.removeChild(this.list.tBodies[1]);this.tbody=b}else $(this.row_tagname()+":not(.thead)",this.tbody).remove();this.rows={};this.rowcount=
-0;this.last_selected=null;a&&this.clear_selection();this.frame&&(this.frame.scrollTop=0);this.resize()},remove_row:function(a,b){var c=this,d=this.rows[a]?this.rows[a].obj:null;d&&(d.style.display="none",b&&this.select_next(),delete this.rows[a],this.rowcount--,clearTimeout(this.resize_timeout),this.resize_timeout=setTimeout(function(){c.resize()},50))},insert_row:function(a,b){var c=this,d=this.tbody;if(void 0===a.nodeName){var e=document.createElement(this.row_tagname());a.id&&(e.id=a.id);a.className&&
-(e.className=a.className);a.style&&$.extend(e.style,a.style);a.uid&&$(e).data("uid",String(a.uid));for(var f,g,h,k=0;a.cols&&k<a.cols.length;k++){h=a.cols[k];g=document.createElement(this.col_tagname());h.className&&(g.className=h.className);h.innerHTML&&(g.innerHTML=h.innerHTML);for(f in h.events)g["on"+f]=h.events[f];e.appendChild(g)}a=e}b&&d.childNodes.length?d.insertBefore(a,"object"==typeof b&&b.parentNode==d?b:d.firstChild):d.appendChild(a);this.init_row(a);this.rowcount++;clearTimeout(this.resize_timeout);
-this.resize_timeout=setTimeout(function(){c.resize()},50)},update_row:function(a,b,c,d){var e=this.rows[a];if(!e)return!1;for(var e=e.obj,f=0;b&&f<b.length;f++)this.get_cell(e,f).html(b[f]);c&&(delete this.rows[a],e.id="rcmrow"+c,this.init_row(e),d&&(this.selection[0]=c))},focus:function(a){this.focused||(this.focused=!0,a&&rcube_event.cancel(a),a=null,this.last_selected&&this.rows[this.last_selected]&&(a=$(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_col).attr("tabindex",
+rcube_list_widget.prototype={init:function(){"table"==this.tagname&&this.list&&this.list.tBodies[0]?(this.thead=this.list.tHead,this.tbody=this.list.tBodies[0]):"table"!=this.tagname&&this.list&&(this.tbody=this.list);"listbox"==$(this.list).attr("role")&&(this.aria_listbox=!0,this.multiselect&&$(this.list).attr("aria-multiselectable","true"));var a=this;if(this.tbody){this.rows={};this.rowcount=0;var b,c,d=this.tbody.childNodes;b=0;for(c=d.length;b<c;b++)1==d[b].nodeType&&(this.rowcount+=this.init_row(d[b])?
+1:0);this.init_header();this.frame=this.list.parentNode;this.keyboard&&(rcube_event.add_listener({event:"keydown",object:this,method:"key_press"}),$(this.list).attr("tabindex","0").on("focus",function(b){a.focus(b)}))}this.parent_focus&&(this.list.parentNode.onclick=function(b){a.focus()});return this},init_row:function(a){a.uid=this.get_row_uid(a);if(a&&a.uid){var b=this,c=a.uid;this.rows[c]={uid:c,id:a.id,obj:a};$(a).data("uid",c).mousedown(function(a){return b.drag_row(a,this.uid)}).mouseup(function(a){return 1!=
+a.which||b.drag_active?!0:b.click_row(a,this.uid)});bw.touch&&a.addEventListener&&(a.addEventListener("touchstart",function(a){1==a.touches.length&&(b.touchmoved=!1,b.drag_row(rcube_event.touchevent(a.touches[0]),this.uid))},!1),a.addEventListener("touchend",function(a){1==a.changedTouches.length&&(b.touchmoved||b.click_row(rcube_event.touchevent(a.changedTouches[0]),this.uid)||a.preventDefault())},!1),a.addEventListener("touchmove",function(a){1==a.changedTouches.length&&(b.touchmoved=!0,b.drag_active&&
+a.preventDefault())},!1));if(this.aria_listbox){var d="l:"+a.id;$(a).attr("role","option").attr("aria-labelledby",d).find(this.col_tagname()).eq(this.subject_col).attr("id",d)}document.all&&(a.onselectstart=function(){return!1});this.row_init(this.rows[c]);this.triggerEvent("initrow",this.rows[c]);return!0}},init_header:function(){if(this.thead){this.colcount=0;this.fixed_header?($(this.list.tHead).replaceWith($(this.fixed_header).find("thead").clone()),$(this.list.tHead).find("th,td").attr("style",
+"").find("a").attr("tabindex","-1")):!bw.touch&&0<=this.list.className.indexOf("fixedheader")&&this.init_fixed_header();var a,b,c=this;if(this.column_movable&&this.thead&&this.thead.rows)for(b=0;b<this.thead.rows[0].cells.length;b++)this.column_fixed!=b&&(a=this.thead.rows[0].cells[b],a.onmousedown=function(a){return c.drag_column(a,this)},this.colcount++)}},init_fixed_header:function(){var a=$(this.list.tHead).clone();if(this.fixed_header)$(this.fixed_header).find("thead").replaceWith(a);else{this.fixed_header=
+$("<table>").attr("class",this.list.className+" fixedcopy").attr("role","presentation").css({position:"fixed"}).append(a).append("<tbody></tbody>");$(this.list).before(this.fixed_header);var b=this;$(window).resize(function(){b.resize()});$(window).scroll(function(){var a=$(window);b.fixed_header.css({marginLeft:-a.scrollLeft()+"px",marginTop:-a.scrollTop()+"px"})})}$(this.list.tHead).find("a.sortcol").attr("tabindex","-1");a.find("a.sortcol").attr("tabindex","0");this.thead=a.get(0);this.resize()},
+resize:function(){if(this.fixed_header){var a=[];$(this.tbody).parent().find("thead th,thead td").each(function(b){a[b]=$(this).width()});$(this.thead).parent().width($(this.tbody).parent().width());$(this.thead).find("th,td").each(function(b){$(this).width(a[b])});$(window).scroll()}},clear:function(a){if("table"==this.tagname){var b=document.createElement("tbody");this.list.insertBefore(b,this.tbody);this.list.removeChild(this.list.tBodies[1]);this.tbody=b}else $(this.row_tagname()+":not(.thead)",
+this.tbody).remove();this.rows={};this.rowcount=0;this.last_selected=null;a&&this.clear_selection();this.frame&&(this.frame.scrollTop=0);this.resize()},remove_row:function(a,b){var c=this,d=this.rows[a]?this.rows[a].obj:null;d&&(d.style.display="none",b&&this.select_next(),delete this.rows[a],this.rowcount--,clearTimeout(this.resize_timeout),this.resize_timeout=setTimeout(function(){c.resize()},50))},insert_row:function(a,b){var c=this,d=this.tbody;if(void 0===a.nodeName){var e=document.createElement(this.row_tagname());
+a.id&&(e.id=a.id);a.uid&&(e.uid=a.uid);a.className&&(e.className=a.className);a.style&&$.extend(e.style,a.style);for(var f,g,h,k=0;a.cols&&k<a.cols.length;k++){h=a.cols[k];g=document.createElement(this.col_tagname());h.className&&(g.className=h.className);h.innerHTML&&(g.innerHTML=h.innerHTML);for(f in h.events)g["on"+f]=h.events[f];e.appendChild(g)}a=e}b&&d.childNodes.length?d.insertBefore(a,"object"==typeof b&&b.parentNode==d?b:d.firstChild):d.appendChild(a);this.init_row(a);this.rowcount++;clearTimeout(this.resize_timeout);
+this.resize_timeout=setTimeout(function(){c.resize()},50)},update_row:function(a,b,c,d){var e=this.rows[a];if(!e)return!1;for(var f=e.obj,e=0;b&&e<b.length;e++)this.get_cell(f,e).html(b[e]);c&&(delete this.rows[a],f.uid=c,f.id="rcmrow"+c,this.init_row(f),d&&(this.selection[0]=c),this.last_selected==a&&(this.last_selected=c))},focus:function(a){this.focused||(this.focused=!0,a&&rcube_event.cancel(a),a=null,this.last_selected&&this.rows[this.last_selected]&&(a=$(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_col).attr("tabindex",
"0")),a&&a.length?this.focus_noscroll(a):($("iframe,:focus:not(body)").blur(),window.focus()),$(this.list).addClass("focus").removeAttr("tabindex"),this.last_selected||this.select_first(CONTROL_KEY))},blur:function(a){this.focused=!1;var b=this;setTimeout(function(){$(b.list).removeClass("focus").attr("tabindex","0")},20);this.last_selected&&this.rows[this.last_selected]&&$(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_col).removeAttr("tabindex")},focus_noscroll:function(a){var b=
this.frame.scrollTop||this.frame.scrollY;a.focus();this.frame.scrollTop=b},hide_column:function(a,b){var c=b?"addClass":"removeClass";if(this.fixed_header)$(this.row_tagname()+" "+this.col_tagname()+"."+a,this.fixed_header)[c]("hidden");$(this.row_tagname()+" "+this.col_tagname()+"."+a,this.list)[c]("hidden")},drag_column:function(a,b){if(1<this.colcount){this.drag_start=!0;this.drag_mouse_start=rcube_event.get_mouse_pos(a);rcube_event.add_listener({event:"mousemove",object:this,method:"column_drag_mouse_move"});
rcube_event.add_listener({event:"mouseup",object:this,method:"column_drag_mouse_up"});this.add_dragfix();for(var c=0;c<this.thead.rows[0].cells.length;c++)if(b==this.thead.rows[0].cells[c]){this.selected_column=c;break}}return!1},drag_row:function(a,b){if(!this.is_event_target(a)||2==rcube_event.get_button(a))return!0;this.in_selection_before=a&&a.istouch||this.in_selection(b)?b:!1;if(!this.in_selection_before){var c=rcube_event.get_modifier(a);this.select_row(b,c,!0)}this.draggable&&this.selection.length&&
@@ -52,9 +52,9 @@
!0),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj})):(e=this.tbody.firstChild,f=d=0);for(;e;){if(1==e.nodeType&&(b=this.rows[e.uid])){if(a&&(!b.depth||b.depth<=d))break;if(b.parent_uid)if((c=this.rows[b.parent_uid])&&c.expanded){if(a&&c==a||f>=c.depth-1)f=c.depth,$(e).css("display",""),b.expanded=!0,this.triggerEvent("expandcollapse",{uid:b.uid,expanded:b.expanded,obj:e})}else if(a&&(!c||c.depth<=d))break}e=e.nextSibling}this.resize();this.triggerEvent("listupdate");
return!1},collapse_all:function(a){var b,c,d;if(a){if(a.expanded=!1,b=a.depth,c=a.obj.nextSibling,this.update_expando(a.id),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj}),b&&this.multiexpand)return!1}else c=this.tbody.firstChild,b=0;for(;c;){if(1==c.nodeType&&(d=this.rows[c.uid])){if(a&&(!d.depth||d.depth<=b))break;(a||d.depth)&&$(c).css("display","none");d.has_children&&d.expanded&&(d.expanded=!1,this.update_expando(d.id,!1),this.triggerEvent("expandcollapse",{uid:d.uid,
expanded:d.expanded,obj:c}))}c=c.nextSibling}this.resize();this.triggerEvent("listupdate");return!1},expand_all:function(a){var b,c,d;a?(a.expanded=!0,b=a.depth,c=a.obj.nextSibling,this.update_expando(a.id,!0),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj})):(c=this.tbody.firstChild,b=0);for(;c;){if(1==c.nodeType&&(d=this.rows[c.uid])){if(a&&d.depth<=b)break;$(c).css("display","");d.has_children&&!d.expanded&&(d.expanded=!0,this.update_expando(d.id,!0),this.triggerEvent("expandcollapse",
-{uid:d.uid,expanded:d.expanded,obj:c}))}c=c.nextSibling}this.resize();this.triggerEvent("listupdate");return!1},update_expando:function(a,b){var c=document.getElementById("rcmexpando"+a);c&&(c.className=b?"expanded":"collapsed")},get_row_uid:function(a){if(a&&a.uid)return a.uid;var b;a&&(b=$(a).data("uid"))?a.uid=b:a&&String(a.id).match(this.id_regexp)&&(a.uid=RegExp.$1);return a.uid},get_next_row:function(){if(!this.rowcount)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.nextSibling:
-null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.nextSibling;return a},get_prev_row:function(){if(!this.rowcount)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.previousSibling:null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.previousSibling;return a},get_first_row:function(){if(this.rowcount){var a,b,c=this.tbody.childNodes;for(a=0;a<c.length;a++)if(c[a].id&&(b=this.get_row_uid(c[a])))return b}return null},get_last_row:function(){if(this.rowcount){var a,b,c=this.tbody.childNodes;
-for(a=c.length-1;0<=a;a--)if(c[a].id&&(b=this.get_row_uid(c[a])))return b}return null},row_tagname:function(){var a={table:"tr",ul:"li","*":"div"};return a[this.tagname]||a["*"]},col_tagname:function(){var a={table:"td","*":"span"};return a[this.tagname]||a["*"]},get_cell:function(a,b){return $(this.col_tagname(),a).eq(b)},select_row:function(a,b,c){var d=this.selection.join(","),e=this.in_selection(a);!this.multiselect&&c&&(b=0);this.shift_start||(this.shift_start=a);if(b){switch(b){case SHIFT_KEY:this.shift_select(a,
+{uid:d.uid,expanded:d.expanded,obj:c}))}c=c.nextSibling}this.resize();this.triggerEvent("listupdate");return!1},update_expando:function(a,b){var c=document.getElementById("rcmexpando"+a);c&&(c.className=b?"expanded":"collapsed")},get_row_uid:function(a){if(a){if(!a.uid){var b=$(a).data("uid");b?a.uid=b:String(a.id).match(this.id_regexp)&&(a.uid=RegExp.$1)}return a.uid}},get_next_row:function(){if(!this.rowcount)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.nextSibling:null;a&&(1!=a.nodeType||
+"none"==a.style.display);)a=a.nextSibling;return a},get_prev_row:function(){if(!this.rowcount)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.previousSibling:null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.previousSibling;return a},get_first_row:function(){if(this.rowcount){var a,b,c=this.tbody.childNodes;for(a=0;a<c.length;a++)if(c[a].id&&(b=this.get_row_uid(c[a])))return b}return null},get_last_row:function(){if(this.rowcount){var a,b,c=this.tbody.childNodes;for(a=c.length-1;0<=
+a;a--)if(c[a].id&&(b=this.get_row_uid(c[a])))return b}return null},row_tagname:function(){var a={table:"tr",ul:"li","*":"div"};return a[this.tagname]||a["*"]},col_tagname:function(){var a={table:"td","*":"span"};return a[this.tagname]||a["*"]},get_cell:function(a,b){return $(this.col_tagname(),a).eq(b)},select_row:function(a,b,c){var d=this.selection.join(","),e=this.in_selection(a);!this.multiselect&&c&&(b=0);this.shift_start||(this.shift_start=a);if(b){switch(b){case SHIFT_KEY:this.shift_select(a,
!1);break;case CONTROL_KEY:c&&(this.shift_start=a,this.highlight_row(a,!0));break;case CONTROL_SHIFT_KEY:this.shift_select(a,!0);break;default:this.highlight_row(a,!1)}this.multi_selecting=!0}else this.shift_start=a,this.highlight_row(a,!1),this.multi_selecting=!1;this.last_selected&&this.rows[this.last_selected]&&$(this.rows[this.last_selected].obj).removeClass("focused").find(this.col_tagname()).eq(this.subject_col).removeAttr("tabindex");this.toggleselect&&e&&!b?this.clear_selection():this.selection.join(",")!=
d&&this.triggerEvent("select");this.rows[a]&&($(this.rows[a].obj).addClass("focused"),this.focused&&this.focus_noscroll($(this.rows[a].obj).find(this.col_tagname()).eq(this.subject_col).attr("tabindex","0")));this.selection.length||(this.shift_start=null);this.last_selected=a},select:function(a){this.select_row(a,!1);this.scrollto(a)},select_next:function(){var a=this.get_next_row(),b=this.get_prev_row();(a=a?a:b)&&this.select_row(a.uid,!1,!1)},select_first:function(a){var b=this.get_first_row();
b&&(this.select_row(b,a,!1),this.scrollto(b))},select_last:function(a){var b=this.get_last_row();b&&(this.select_row(b,a,!1),this.scrollto(b))},select_children:function(a){var b=this.row_children(a),c=b.length;for(a=0;a<c;a++)this.in_selection(b[a])||this.select_row(b[a],CONTROL_KEY,!0)},shift_select:function(a,b){this.rows[this.shift_start]&&this.selection.length||(this.shift_start=a);var c,d,e;d=this.rows[a];e=this._rowIndex(this.rows[this.shift_start].obj);var f=this._rowIndex(d.obj);e<f&&!d.expanded&&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/bootstrap.php new/roundcubemail-1.1.4/program/lib/Roundcube/bootstrap.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/bootstrap.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/bootstrap.php 2015-12-23 10:18:12.000000000 +0100
@@ -54,7 +54,7 @@
}
// framework constants
-define('RCUBE_VERSION', '1.1.3');
+define('RCUBE_VERSION', '1.1.4');
define('RCUBE_CHARSET', 'UTF-8');
if (!defined('RCUBE_LIB_DIR')) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube.php 2015-12-23 10:18:12.000000000 +0100
@@ -524,8 +524,13 @@
// use database for storing session data
$this->session = new rcube_session($this->get_dbh(), $this->config);
+ $path = $_SERVER['SCRIPT_NAME'];
+ if (strpos($path, '://')) {
+ $path = parse_url($path, PHP_URL_PATH); // #1490582
+ }
+
$this->session->register_gc_handler(array($this, 'gc'));
- $this->session->set_secret($this->config->get('des_key') . dirname($_SERVER['SCRIPT_NAME']));
+ $this->session->set_secret($this->config->get('des_key') . dirname($path));
$this->session->set_ip_check($this->config->get('ip_check'));
if ($this->config->get('session_auth_name')) {
@@ -1027,15 +1032,14 @@
*/
public function get_request_token()
{
- $sess_id = $_COOKIE[ini_get('session.name')];
- if (!$sess_id) {
- $sess_id = session_id();
- }
+ if (empty($_SESSION['request_token'])) {
+ $plugin = $this->plugins->exec_hook('request_token', array(
+ 'value' => rcube_utils::random_bytes(32)));
- $plugin = $this->plugins->exec_hook('request_token', array(
- 'value' => md5('RT' . $this->get_user_id() . $this->config->get('des_key') . $sess_id)));
+ $_SESSION['request_token'] = $plugin['value'];
+ }
- return $plugin['value'];
+ return $_SESSION['request_token'];
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_html2text.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_html2text.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_html2text.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_html2text.php 2015-12-23 10:18:12.000000000 +0100
@@ -136,12 +136,15 @@
* @see $replace
*/
protected $search = array(
- "/\r/", // Non-legal carriage return
- "/[\n\t]+/", // Newlines and tabs
+ '/\r/', // Non-legal carriage return
+ '/^.*<body[^>]*>\n*/i', // Anything before <body>
'/<head[^>]*>.*?<\/head>/i', // <head>
- '/<script[^>]*>.*?<\/script>/i', // <script>s -- which strip_tags supposedly has problems with
- '/<style[^>]*>.*?<\/style>/i', // <style>s -- which strip_tags supposedly has problems with
- '/<p[^>]*>/i', // <P>
+ '/<script[^>]*>.*?<\/script>/i', // <script>
+ '/<style[^>]*>.*?<\/style>/i', // <style>
+ '/[\n\t]+/', // Newlines and tabs
+ '/<p[^>]*>/i', // <p>
+ '/<\/p>[\s\n\t]*<div[^>]*>/i', // </p> before <div>
+ '/<br[^>]*>[\s\n\t]*<div[^>]*>/i', // <br> before <div>
'/<br[^>]*>\s*/i', // <br>
'/<i[^>]*>(.*?)<\/i>/i', // <i>
'/<em[^>]*>(.*?)<\/em>/i', // <em>
@@ -164,11 +167,14 @@
*/
protected $replace = array(
'', // Non-legal carriage return
- ' ', // Newlines and tabs
+ '', // Anything before <body>
'', // <head>
- '', // <script>s -- which strip_tags supposedly has problems with
- '', // <style>s -- which strip_tags supposedly has problems with
- "\n\n", // <P>
+ '', // <script>
+ '', // <style>
+ ' ', // Newlines and tabs
+ "\n\n", // <p>
+ "\n<div>", // </p> before <div>
+ '<div>', // <br> before <div>
"\n", // <br>
'_\\1_', // <i>
'_\\1_', // <em>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_imap.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_imap.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_imap.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_imap.php 2015-12-23 10:18:12.000000000 +0100
@@ -57,7 +57,6 @@
protected $icache = array();
protected $plugins;
- protected $list_page = 1;
protected $delimiter;
protected $namespace;
protected $sort_field = '';
@@ -2814,7 +2813,7 @@
}
// INBOX should always be available
- if ((!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) {
+ if (!strlen($root) && (!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) {
array_unshift($a_mboxes, 'INBOX');
}
@@ -2942,7 +2941,7 @@
}
// INBOX should always be available
- if ((!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) {
+ if (!strlen($root) && (!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) {
array_unshift($a_mboxes, 'INBOX');
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_message.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_message.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_message.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_message.php 2015-12-23 10:18:12.000000000 +0100
@@ -677,24 +677,16 @@
$mail_part = &$structure->parts[$i];
$primary_type = $mail_part->ctype_primary;
$secondary_type = $mail_part->ctype_secondary;
+ $part_mimetype = $mail_part->mimetype;
- // real content-type of message/rfc822
- if ($mail_part->real_mimetype) {
- $part_orig_mimetype = $mail_part->mimetype;
- $part_mimetype = $mail_part->real_mimetype;
- list($primary_type, $secondary_type) = explode('/', $part_mimetype);
- }
- else {
- $part_mimetype = $part_orig_mimetype = $mail_part->mimetype;
- }
-
- // multipart/alternative
- if ($primary_type == 'multipart') {
+ // multipart/alternative or message/rfc822
+ if ($primary_type == 'multipart' || $part_mimetype == 'message/rfc822') {
$this->parse_structure($mail_part, true);
// list message/rfc822 as attachment as well (mostly .eml)
- if ($part_orig_mimetype == 'message/rfc822' && !empty($mail_part->filename))
+ if ($primary_type == 'message' && !empty($mail_part->filename)) {
$this->attachments[] = $mail_part;
+ }
}
// part text/[plain|html] or delivery status
else if ((($part_mimetype == 'text/plain' || $part_mimetype == 'text/html') && $mail_part->disposition != 'attachment') ||
@@ -705,8 +697,9 @@
array('object' => $this, 'structure' => $mail_part,
'mimetype' => $part_mimetype, 'recursive' => true));
- if ($plugin['abort'])
+ if ($plugin['abort']) {
continue;
+ }
if ($part_mimetype == 'text/html' && $mail_part->size) {
$this->got_html_part = true;
@@ -729,14 +722,6 @@
$this->attachments[] = $mail_part;
}
}
- // part message/*
- else if ($primary_type == 'message') {
- $this->parse_structure($mail_part, true);
-
- // list as attachment as well (mostly .eml)
- if (!empty($mail_part->filename))
- $this->attachments[] = $mail_part;
- }
// ignore "virtual" protocol parts
else if ($primary_type == 'protocol') {
continue;
@@ -760,7 +745,8 @@
// part belongs to a related message and is linked
if (preg_match('/^multipart\/(related|relative)/', $mimetype)
- && ($mail_part->headers['content-id'] || $mail_part->headers['content-location'])) {
+ && ($mail_part->headers['content-id'] || $mail_part->headers['content-location'])
+ ) {
if ($mail_part->headers['content-id'])
$mail_part->content_id = preg_replace(array('/^</', '/>$/'), '', $mail_part->headers['content-id']);
if ($mail_part->headers['content-location'])
@@ -768,14 +754,6 @@
$this->inline_parts[] = $mail_part;
}
- // attachment encapsulated within message/rfc822 part needs further decoding (#1486743)
- else if ($part_orig_mimetype == 'message/rfc822') {
- $this->parse_structure($mail_part, true);
-
- // list as attachment as well (mostly .eml)
- if (!empty($mail_part->filename))
- $this->attachments[] = $mail_part;
- }
// regular attachment with valid content type
// (content-type name regexp according to RFC4288.4.2)
else if (preg_match('/^[a-z0-9!#$&.+^_-]+\/[a-z0-9!#$&.+^_-]+$/i', $part_mimetype)) {
@@ -791,10 +769,6 @@
$this->attachments[] = $mail_part;
}
}
- // attachment part as message/rfc822 (#1488026)
- else if ($mail_part->mimetype == 'message/rfc822') {
- $this->parse_structure($mail_part);
- }
// calendar part not marked as attachment (#1490325)
else if ($part_mimetype == 'text/calendar') {
if (!$mail_part->filename) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_storage.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_storage.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_storage.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_storage.php 2015-12-23 10:18:12.000000000 +0100
@@ -47,6 +47,7 @@
protected $search_set;
protected $options = array('auth_type' => 'check');
protected $page_size = 10;
+ protected $list_page = 1;
protected $threading = false;
/**
@@ -219,7 +220,9 @@
*/
public function set_page($page)
{
- $this->list_page = (int) $page;
+ if ($page = intval($page)) {
+ $this->list_page = $page;
+ }
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_utils.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_utils.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_utils.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_utils.php 2015-12-23 10:18:12.000000000 +0100
@@ -993,12 +993,18 @@
*/
public static function words_match($haystack, $needle)
{
- $a_needle = self::tokenize_string($needle, 1);
- $haystack = join(" ", self::tokenize_string($haystack, 1));
+ $a_needle = self::tokenize_string($needle, 1);
+ $_haystack = join(" ", self::tokenize_string($haystack, 1));
+ $valid = strlen($_haystack) > 0;
+ $hits = 0;
- $hits = 0;
foreach ($a_needle as $w) {
- if (stripos($haystack, $w) !== false) {
+ if ($valid) {
+ if (stripos($_haystack, $w) !== false) {
+ $hits++;
+ }
+ }
+ else if (stripos($haystack, $w) !== false) {
$hits++;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_washtml.php new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_washtml.php
--- old/roundcubemail-1.1.3/program/lib/Roundcube/rcube_washtml.php 2015-09-13 21:10:03.000000000 +0200
+++ new/roundcubemail-1.1.4/program/lib/Roundcube/rcube_washtml.php 2015-12-23 10:18:12.000000000 +0100
@@ -313,7 +313,7 @@
$dump = '';
do {
- switch($node->nodeType) {
+ switch ($node->nodeType) {
case XML_ELEMENT_NODE: //Check element
$tagName = strtolower($node->tagName);
if ($callback = $this->handlers[$tagName]) {
@@ -345,14 +345,9 @@
case XML_HTML_DOCUMENT_NODE:
$dump .= $this->dumpHtml($node, $level);
break;
-
- case XML_DOCUMENT_TYPE_NODE:
- break;
-
- default:
- $dump .= '<!-- node type ' . $node->nodeType . ' -->';
}
- } while($node = $node->nextSibling);
+ }
+ while($node = $node->nextSibling);
return $dump;
}
Files old/roundcubemail-1.1.3/program/resources/dummy.pdf and new/roundcubemail-1.1.4/program/resources/dummy.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/steps/addressbook/photo.inc new/roundcubemail-1.1.4/program/steps/addressbook/photo.inc
--- old/roundcubemail-1.1.3/program/steps/addressbook/photo.inc 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/program/steps/addressbook/photo.inc 2015-12-23 10:18:12.000000000 +0100
@@ -89,6 +89,9 @@
header('Content-Type: ' . rcube_mime::image_content_type($data));
echo $data;
}
+else if (!empty($_GET['_error'])) {
+ header('HTTP/1.0 404 Photo not found');
+}
else {
header('Content-Type: image/gif');
echo base64_decode(rcmail_output::BLANK_GIF);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/steps/mail/compose.inc new/roundcubemail-1.1.4/program/steps/mail/compose.inc
--- old/roundcubemail-1.1.3/program/steps/mail/compose.inc 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/program/steps/mail/compose.inc 2015-12-23 10:18:12.000000000 +0100
@@ -749,11 +749,9 @@
if (!empty($MESSAGE->parts)) {
// collect IDs of message/rfc822 parts
- if ($compose_mode == RCUBE_COMPOSE_EDIT || $compose_mode == RCUBE_COMPOSE_DRAFT) {
- foreach ($MESSAGE->attachments as $part) {
- if ($part->mimetype == 'message/rfc822') {
- $messages[] = $part->mime_id;
- }
+ foreach ($MESSAGE->mime_parts as $part) {
+ if ($part->mimetype == 'message/rfc822') {
+ $messages[] = $part->mime_id;
}
}
@@ -763,7 +761,7 @@
continue;
}
- // skip all content parts inside the message/rfc822 part in DRAFT/EDIT mode
+ // skip all content parts inside the message/rfc822 part
foreach ($messages as $mimeid) {
if (strpos($part->mime_id, $mimeid . '.') === 0) {
continue 2;
@@ -1180,6 +1178,10 @@
$messages = array();
foreach ((array)$message->mime_parts as $pid => $part) {
+ if ($part->mimetype == 'message/rfc822') {
+ $messages[] = $part->mime_id;
+ }
+
if ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) {
// skip parts that aren't valid attachments
if ($part->ctype_primary == 'multipart' || $part->mimetype == 'application/ms-tnef') {
@@ -1196,23 +1198,10 @@
continue;
}
- // skip message/rfc822 attachments on forwards (#1489214)
- // Thunderbird when forwarding in inline mode displays such attachments
- // and skips any attachments from inside of such part, this however
- // skipped e.g. images used in HTML body or other attachments. So,
- // better to skip .eml attachments but not their content (included files).
- if ($part->mimetype == 'message/rfc822') {
- if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
- continue;
- }
- $messages[] = $part->mime_id;
- }
- else if ($compose_mode != RCUBE_COMPOSE_FORWARD) {
- // skip attachments included in message/rfc822 attachment (#1486487)
- foreach ($messages as $mimeid) {
- if (strpos($part->mime_id, $mimeid . '.') === 0) {
- continue 2;
- }
+ // skip attachments included in message/rfc822 attachment (#1486487, #1490607)
+ foreach ($messages as $mimeid) {
+ if (strpos($part->mime_id, $mimeid . '.') === 0) {
+ continue 2;
}
}
@@ -1244,9 +1233,22 @@
{
global $RCMAIL, $COMPOSE;
- $cid_map = array();
+ $cid_map = array();
+ $messages = array();
+
foreach ((array)$message->mime_parts as $pid => $part) {
+ if ($part->mimetype == 'message/rfc822') {
+ $messages[] = $part->mime_id;
+ }
+
if (($part->content_id || $part->content_location) && $part->filename) {
+ // skip attachments included in message/rfc822 attachment (#1486487, #1490607)
+ foreach ($messages as $mimeid) {
+ if (strpos($part->mime_id, $mimeid . '.') === 0) {
+ continue 2;
+ }
+ }
+
if ($attachment = rcmail_save_attachment($message, $pid)) {
$COMPOSE['attachments'][$attachment['id']] = $attachment;
$url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/program/steps/mail/func.inc new/roundcubemail-1.1.4/program/steps/mail/func.inc
--- old/roundcubemail-1.1.3/program/steps/mail/func.inc 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/program/steps/mail/func.inc 2015-12-23 10:18:12.000000000 +0100
@@ -948,6 +948,13 @@
break;
case 'style':
+ // Crazy big styles may freeze the browser (#1490539)
+ // remove content with more than 5k lines
+ if (substr_count($content, "\n") > 5000) {
+ $out = '';
+ break;
+ }
+
// decode all escaped entities and reduce to ascii strings
$stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcube_utils::xss_entity_decode($content));
@@ -1211,15 +1218,6 @@
// fetch part body
$body = $MESSAGE->get_part_body($part->mime_id, true);
- // extract headers from message/rfc822 parts
- if ($part->mimetype == 'message/rfc822') {
- $msgpart = rcube_mime::parse_message($body);
- if (!empty($msgpart->headers)) {
- $part = $msgpart;
- $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers));
- }
- }
-
// message is cached but not exists (#1485443), or other error
if ($body === false) {
rcmail_message_error($MESSAGE->uid);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/skins/larry/styles.css new/roundcubemail-1.1.4/skins/larry/styles.css
--- old/roundcubemail-1.1.3/skins/larry/styles.css 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/skins/larry/styles.css 2015-12-23 10:18:12.000000000 +0100
@@ -1,7 +1,7 @@
/**
* Roundcube webmail styles for skin "Larry"
*
- * Copyright (c) 2012, The Roundcube Dev Team
+ * Copyright (c) 2012-2015, The Roundcube Dev Team
* Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
*
* The contents are subject to the Creative Commons Attribution-ShareAlike
@@ -23,6 +23,11 @@
overflow: hidden;
}
+.iphone body.noscroll {
+ /* revert on iPhone (#1490551) */
+ overflow: auto;
+}
+
a {
color: #0069a6;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/skins/larry/styles.min.css new/roundcubemail-1.1.4/skins/larry/styles.min.css
--- old/roundcubemail-1.1.3/skins/larry/styles.min.css 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/skins/larry/styles.min.css 2015-12-23 10:18:12.000000000 +0100
@@ -1 +1 @@
-body{font-family:"Lucida Grande",Verdana,Arial,Helvetica,sans-serif;font-size:11px;color:#333;background:url(images/linen.jpg?v=0382.14157) repeat #d1d5d8;margin:0}body.noscroll{overflow:hidden}a{color:#0069a6}a:visited{color:#0186ba}img{border:0}.voice{position:absolute;border:0;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}html.mozilla select{padding:2px 1px}input,textarea,select,button{font-family:inherit;font-size:inherit;vertical-align:middle}input[type="text"],input[type="password"],textarea{margin:0;padding:4px;border:1px solid #b2b2b2;border-radius:4px;box-shadow:inset 0 0 2px 1px rgba(0,0,0,0.1);-webkit-box-shadow:inset 0 0 2px 1px rgba(0,0,0,0.1)}input[type="text"]:focus,input[type="password"]:focus,input.button:focus,textarea:focus{border-color:#4787b1;box-shadow:0 0 5px 2px rgba(71,135,177,0.9);-webkit-box-shadow:0 0 5px 2px rgba(71,135,177,0.9);outline:0}input[type="text"]:required,input[type="password"]:required{border-color:#4787b1}input.placeholder,textarea.placeholder{color:#aaa}.bold{font-weight:bold}label input+span{vertical-align:middle}input.button{display:inline-block;margin:0 2px;padding:2px 5px;color:#525252;text-shadow:0 1px 1px #fff;border:1px solid silver;border-radius:4px;background:#f7f7f7;background:-moz-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f9f9f9),color-stop(100%,#e6e6e6));background:-o-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:linear-gradient(to bottom,#f9f9f9 0,#e6e6e6 100%);box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);-webkit-box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);text-decoration:none;outline:0}.formbuttons input.button{color:#ddd;font-size:110%;text-shadow:0 1px 1px #333;padding:4px 12px;border-color:#465864;border-radius:5px;background:#7a7b7d;background:-moz-linear-gradient(top,#7b7b7b 0,#606060 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#7b7b7b),color-stop(100%,#606060));background:-o-linear-gradient(top,#7b7b7b 0,#606060 100%);background:-ms-linear-gradient(top,#7b7b7b 0,#606060 100%);background:linear-gradient(to bottom,#7b7b7b 0,#606060 100%);box-shadow:0 1px 1px 0 #ccc,inset 0 1px 0 0 #888;-webkit-box-shadow:0 1px 1px 0 #ccc,inset 0 1px 0 0 #888}.formbuttons input.button:hover,.formbuttons input.button:focus,input.button.mainaction:hover,input.button.mainaction:focus{color:#f2f2f2;border-color:#465864;box-shadow:0 0 5px 2px rgba(71,135,177,0.6),inset 0 1px 0 0 #888;-webkit-box-shadow:0 0 5px 2px rgba(71,135,177,0.6),inset 0 1px 0 0 #888}.formbuttons input.button:active{color:#fff;background:-moz-linear-gradient(top,#5c5c5c 0,#7b7b7b 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5c5c5c),color-stop(100%,#7b7b7b));background:-o-linear-gradient(top,#5c5c5c 0,#7b7b7b 100%);background:-ms-linear-gradient(top,#5c5c5c 0,#7b7b7b 100%);background:linear-gradient(to bottom,#5c5c5c 0,#7b7b7b 100%)}input.button.mainaction{color:#ededed;text-shadow:0 1px 1px #333;border-color:#1f262c;background:#505050;background:-moz-linear-gradient(top,#505050 0,#2a2e31 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#505050),color-stop(100%,#2a2e31));background:-o-linear-gradient(top,#505050 0,#2a2e31 100%);background:-ms-linear-gradient(top,#505050 0,#2a2e31 100%);background:linear-gradient(to bottom,#505050 0,#2a2e31 100%);box-shadow:inset 0 1px 0 0 #777;-webkit-box-shadow:inset 0 1px 0 0 #777}input.button.mainaction:active{color:#fff;background:#515151;background:-moz-linear-gradient(top,#2a2e31 0,#505050 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#2a2e31),color-stop(100%,#505050));background:-o-linear-gradient(top,#2a2e31 0,#505050 100%);background:-ms-linear-gradient(top,#2a2e31 0,#505050 100%);background:linear-gradient(to bottom,#2a2e31 0,#505050 100%)}input.button[disabled],input.button[disabled]:hover,input.button.mainaction[disabled]{color:#aaa !important}input.mainaction{font-weight:bold}a.button,.buttongroup{display:inline-block;margin:0 2px;padding:2px 5px;color:#525252;text-shadow:0 1px 1px #fff;border:1px solid #c6c6c6;border-radius:4px;background:#f7f7f7;background:-moz-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f9f9f9),color-stop(100%,#e6e6e6));background:-o-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:linear-gradient(to bottom,#f9f9f9 0,#e6e6e6 100%);box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);-webkit-box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);text-decoration:none}.buttongroup{padding:0;white-space:nowrap}a.button:focus,input.button:focus{border-color:#4fadd5;box-shadow:0 0 2px 1px rgba(71,135,177,0.6);-webkit-box-shadow:0 0 2px 1px rgba(71,135,177,0.6);outline:0}label.disabled,a.button.disabled{color:#999}a.button.disabled,input.button.disabled,input.button[disabled],a.button.disabled:hover,input.button.disabled:hover,input.button[disabled]:hover{border-color:#c6c6c6;box-shadow:0 1px 1px 0 rgba(160,160,160,0.4);-webkit-box-shadow:0 1px 1px 0 rgba(160,160,160,0.4)}a.button.disabled span.inner{opacity:.4}.buttongroup a.button{margin:0;border-width:0 1px 0 0;border-radius:0;background:0;box-shadow:none;-webkit-box-shadow:none}.buttongroup a.button.first,.buttongroup a.button:first-child{border-radius:4px 0 0 4px;border-left:0}.buttongroup a.button.last,.buttongroup a.button:last-child{border-radius:0 4px 4px 0;border-right:0}a.button.pressed,a.button:active,input.button:active{background:#e6e6e6;background:-moz-linear-gradient(top,#e6e6e6 0,#f9f9f9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(100%,#f9f9f9));background:-o-linear-gradient(top,#e6e6e6 0,#f9f9f9 100%);background:-ms-linear-gradient(top,#e6e6e6 0,#f9f9f9 100%);background:linear-gradient(to bottom,#e6e6e6 0,#f9f9f9 100%)}.pagenav.dark a.button{font-weight:bold;border-color:#e6e6e6;background:#d8d8d8;background:-moz-linear-gradient(top,#d8d8d8 0,#bababa 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d8d8d8),color-stop(100%,#bababa));background:-o-linear-gradient(top,#d8d8d8 0,#bababa 100%);background:-ms-linear-gradient(top,#d8d8d8 0,#bababa 100%);background:linear-gradient(to bottom,#d8d8d8 0,#bababa 100%);box-shadow:0 1px 1px 0 #999;-webkit-box-shadow:0 1px 1px 0 #999}.pagenav.dark a.button.pressed{background:#bababa;background:-moz-linear-gradient(top,#bababa 0,#d8d8d8 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#bababa),color-stop(100%,#d8d8d8));background:-o-linear-gradient(top,#bababa 0,#d8d8d8 100%);background:-ms-linear-gradient(top,#bababa 0,#d8d8d8 100%);background:linear-gradient(to bottom,#bababa 0,#d8d8d8 100%)}.buttongroup a.button.selected,.buttongroup a.button.selected:hover{background:#8a8a8a;background:-moz-linear-gradient(top,#909090 0,#858585 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#909090),color-stop(100%,#858585));background:-o-linear-gradient(top,#909090 0,#858585 100%);background:-ms-linear-gradient(top,#909090 0,#858585 100%);background:linear-gradient(to bottom,#909090 0,#858585 100%);box-shadow:inset 0 1px 2px 0 #555;-webkit-box-shadow:inset 0 1px 2px 0 #555;border-right-color:#555;border-left-color:#555}.buttongroup a.button:focus,.buttongroup a.button.selected:focus{background:#f2f2f2;background:-moz-linear-gradient(top,#49b3d2 0,#66bcd9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#49b3d2),color-stop(100%,#66bcd9));background:-o-linear-gradient(top,#49b3d2 0,#66bcd9 100%);background:-ms-linear-gradient(top,#49b3d2 0,#66bcd9 100%);background:linear-gradient(to bottom,#49b3d2 0,#66bcd9 100%)}.pagenav a.button{padding:1px 3px;height:16px;vertical-align:middle;margin-bottom:1px}.pagenav .buttongroup a.button,.pagenav .buttongroup a.button:hover{padding:1px 5px;margin-bottom:0}a.button span.icon,.pagenav a.button span.inner{display:inline-block;width:16px;height:13px;text-indent:1000px;overflow:hidden;background:url(images/buttons.png?v=51d4.15699) -6px -211px no-repeat}a.button.prevpage span.icon,.pagenav a.prevpage span.inner{background-position:-7px -226px}a.button.nextpage span.icon,.pagenav a.nextpage span.inner{background-position:-28px -226px}a.button.lastpage span.icon,.pagenav a.lastpage span.inner{background-position:-28px -211px}a.button.pageup span.icon,.pagenav a.pageup span.inner{background-position:-7px -241px}a.button.pagedown span.icon,.pagenav a.pagedown span.inner{background-position:-29px -241px}a.button.reply span.icon,.pagenav a.reply span.inner{background-position:-7px -256px}a.button.forward span.icon,.pagenav a.forward span.inner{background-position:-29px -256px}a.button.replyall span.icon,.pagenav a.replyall span.inner{background-position:-7px -271px}a.button.extwin span.icon,.pagenav a.extwin span.inner{background-position:-29px -271px}a.button.changeformat.html span.icon,.pagenav a.changeformat.html span.inner{background-position:-7px -1859px}a.button.changeformat.html.selected span.icon,.pagenav a.changeformat.html.selected span.inner{background-position:-29px -1859px}a.button.changeformat.text span.icon,.pagenav a.changeformat.text span.inner{background-position:-7px -1874px}a.button.changeformat.text.selected span.icon,.pagenav a.changeformat.text.selected span.inner{background-position:-29px -1874px}a.button.add span.icon{background-position:-7px -2009px}a.button.delete span.icon{background-position:-29px -2009px}.pagenav .countdisplay{display:inline-block;padding:3px 1em 0 1em;text-shadow:0 1px 1px #fff;min-width:16em}.pagenavbuttons{position:relative;top:-2px}a.iconbutton{display:inline-block;width:20px;height:18px;text-decoration:none;text-indent:-5000px;background:url(images/buttons.png?v=51d4.15699) -1000px 0 no-repeat}a.iconbutton.disabled{opacity:.4;cursor:default}a.iconbutton.searchicon,a.iconbutton.searchoptions{width:24px;background-position:-2px -317px}a.iconbutton.searchicon{width:15px}a.iconbutton.reset{width:24px;background-position:-25px -317px}a.iconbutton.remove,a.iconbutton.cancel{background-position:-7px -378px}a.iconbutton.delete{background-position:-7px -338px}a.iconbutton.add{background-position:-7px -358px}a.iconbutton.remove{background-position:-7px -379px}a.iconbutton.cancel{background-position:-7px -398px}a.iconbutton.edit{background-position:-7px -418px}a.iconbutton.upload{background-position:-6px -438px}a.iconlink{display:inline-block;color:#888;text-decoration:none;white-space:nowrap;padding:2px 8px 2px 20px;background:url(images/buttons.png?v=51d4.15699) -1000px 0 no-repeat}a.iconlink:hover{text-decoration:underline}a.iconlink.delete{background-position:-7px -337px}a.iconlink.add{background-position:-7px -357px}a.iconlink.remove{background-position:-7px -378px}a.iconlink.cancel{background-position:-7px -397px}a.iconlink.edit{background-position:-7px -417px}a.iconlink.upload{background-position:-6px -437px}#message div.loading,#message div.uploading,#message div.warning,#message div.error,#message div.notice,#message div.confirmation,#message-objects div.notice{color:#555;font-weight:bold;padding:6px 30px 6px 25px;display:inline-block;white-space:nowrap;background:url(images/messages.png?v=3a4f.1461) 0 5px no-repeat;cursor:default}#message div.warning{color:#960;background-position:0 -86px}#message div.error{color:#cf2734;background-position:0 -55px}#message div.confirmation{color:#093;background-position:0 -25px}#message div.loading{background:url(images/ajaxloader.gif?v=c252.1434) 2px 6px no-repeat}#message div a,#message div span{padding-right:.5em;text-decoration:none}#message div a:hover{text-decoration:underline;cursor:pointer}#message.statusbar{display:none;position:absolute;bottom:0;left:0;right:0;height:27px;padding-left:8px;border-top:1px solid #ddd;border-radius:0 0 4px 4px;background:#eaeaea;background:-moz-linear-gradient(top,#eaeaea 0,#c8c8c8 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eaeaea),color-stop(100%,#c8c8c8));background:-o-linear-gradient(top,#eaeaea 0,#c8c8c8 100%);background:-ms-linear-gradient(top,#eaeaea 0,#c8c8c8 100%);background:linear-gradient(to bottom,#eaeaea 0,#c8c8c8 100%);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#messagestack{position:absolute;bottom:20px;right:12px;z-index:50000;width:auto;height:auto;max-height:85%;overflow-y:auto;padding:2px}#messagestack div{display:block;position:relative;width:280px;height:auto;min-height:16px;margin:3px 2px 5px 2px;padding:8px 10px 7px 30px;cursor:default;font-size:12px;font-weight:bold;border-radius:4px;border:1px solid #444;color:#ebebeb;text-shadow:0 1px 1px #000;background:rgba(64,64,64,0.85);background:-moz-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.9) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(64,64,64,0.85)),color-stop(100%,rgba(48,48,48,0.9)));background:-webkit-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);background:-o-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);background:-ms-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);background:linear-gradient(to bottom,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);box-shadow:0 1px 4px 0 rgba(50,50,50,0.8),inset 0 1px 0 0 #888;-webkit-box-shadow:0 1px 4px 0 rgba(50,50,50,0.8),inset 0 1px 0 0 #888}#messagestack div:after{content:"";position:absolute;display:block;top:0;left:4px;width:20px;height:24px;background:url(images/messages_dark.png?v=270a.1471) 0 7px no-repeat}#messagestack div.error{color:#ff615d}#messagestack div.error:after{background-position:0 -55px}#messagestack div.warning{color:#f4bf0e}#messagestack div.warning:after{background-position:0 -84px}#messagestack div.confirmation{color:#00e05a}#messagestack div.confirmation:after{background-position:0 -25px}#messagestack div.uploading,#messagestack div.loading{color:#ddd}#messagestack div.uploading:after,#messagestack div.loading:after{top:4px;left:6px;background:url(images/ajaxloader_dark.gif?v=cf1b.1849) 0 4px no-repeat}#messagestack div.voice{position:absolute;top:-1000px}#messagestack div a{color:#94c0da}#messagestack div a:hover{text-decoration:underline;cursor:pointer}.ui-dialog.error .ui-dialog-title,.ui-dialog.warning .ui-dialog-title,.ui-dialog.confirmation .ui-dialog-title{padding-left:25px;background:url(images/messages.png?v=3a4f.1461) 0 5px no-repeat;text-shadow:0 1px 1px #fff}.ui-dialog.warning .ui-dialog-title{color:#960;background-position:0 -90px}.ui-dialog.error .ui-dialog-title{color:#cf2734;background-position:0 -60px}.ui-dialog.confirmation .ui-dialog-title{color:#093;background-position:0 -30px}.ui-dialog.popupmessage .ui-dialog-titlebar{padding:8px 1em 4px 1em;background:#e3e3e3;background:-moz-linear-gradient(top,#e3e3e3 0,#cfcfcf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e3e3e3),color-stop(100%,#cfcfcf));background:-o-linear-gradient(top,#e3e3e3 0,#cfcfcf 100%);background:-ms-linear-gradient(top,#e3e3e3 0,#cfcfcf 100%);background:linear-gradient(to bottom,#e3e3e3 0,#cfcfcf 100%)}.ui-dialog.popupmessage .ui-widget-content{font-size:12px;background:#eee;background:-moz-linear-gradient(top,#eee 0,#dcdcdc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(100%,#dcdcdc));background:-o-linear-gradient(top,#eee 0,#dcdcdc 100%);background:-ms-linear-gradient(top,#eee 0,#dcdcdc 100%);background:linear-gradient(to bottom,#eee 0,#dcdcdc 100%)}#header{overflow-x:hidden}#topline{height:18px;background:url(images/linen_header.jpg?v=514a.580) repeat #666;border-bottom:1px solid #4f4f4f;padding:2px 0 2px 10px;color:#aaa;text-align:center}#topnav{position:relative;height:46px;margin-bottom:10px;padding:0 0 0 10px;background:#111;background:-moz-linear-gradient(top,#404040 0,#060606 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#404040),color-stop(100%,#060606));background:-o-linear-gradient(top,#404040 0,#060606 100%);background:-ms-linear-gradient(top,#404040 0,#060606 100%);background:linear-gradient(to bottom,#404040 0,#060606 100%)}#topline a,#topnav a{color:#eee;text-decoration:none}#topline a:hover{text-decoration:underline}#toplogo{padding-top:2px;cursor:pointer;border:0}.topleft{float:left}.topright{float:right}.closelink{display:inline-block;padding:2px 10px 2px 20px}#topline span.username{padding-right:1em}#topline .topleft a{display:inline-block;padding:2px .8em 0 0;color:#aaa}#topline a.button-logout{display:inline-block;padding:2px 10px 2px 20px;background:url(images/buttons.png?v=51d4.15699) -6px -193px no-repeat;color:#fff}#taskbar .button-logout{display:none}#taskbar a.button-logout span.button-inner{background-position:-2px -1791px}#taskbar a.button-logout:hover span.button-inner{background-position:-2px -1829px}.minimal #topline{position:fixed;top:-18px;background:#444;z-index:5000;width:100%;height:22px;-moz-box-sizing:border-box;box-sizing:border-box}.minimal #topline:hover{top:0;opacity:.94;-webkit-transition:top .3s ease-in-out;-moz-transition:top .3s ease-in-out;-o-transition:top .3s ease-in-out;transition:top .3s ease-in-out}.extwin #topline,.extwin #topline:hover{position:static;top:0;height:18px;width:auto;-moz-box-sizing:content-box;box-sizing:content-box;opacity:.999}.minimal #topline a.button-logout{display:none}.minimal #topline span.username{display:inline-block;padding-top:2px}.minimal #topnav{position:relative;top:4px;height:42px}.minimal #taskbar a{position:relative;padding:10px 10px 0 6px;height:32px}.minimal #taskbar .button-logout{display:inline-block}.minimal #taskbar .button-inner{top:-4px;padding:0;height:24px !important;width:27px;text-indent:-5000px}#taskbar .tooltip{display:none}.minimal #taskbar .tooltip{position:absolute;top:-500px;right:2px;display:inline-block;padding:2px 8px 3px 8px;background:#444;background:-moz-linear-gradient(top,#444 0,#333 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#444),color-stop(100%,#333));background:-o-linear-gradient(top,#444 0,#333 100%);background:-ms-linear-gradient(top,#444 0,#333 100%);background:linear-gradient(to bottom,#444 0,#333 100%);color:#eee;font-weight:bold;white-space:nowrap;border:1px solid #777;box-shadow:0 1px 5px 0 #333;-webkit-box-shadow:0 1px 5px 0 #333;z-index:200;white-space:nowrap;text-shadow:0 1px 1px #000}.minimal #taskbar .tooltip:after{content:"";position:absolute;top:-4px;right:15px;border-style:solid;border-width:0 4px 4px;border-color:#888 transparent;display:block;width:0;z-index:251}.minimal #taskbar a:hover .tooltip{display:block;top:39px}#taskbar{position:relative;padding-right:18px}#taskbar a{display:inline-block;height:34px;padding:12px 10px 0 6px}#taskbar a span.button-inner{display:inline-block;font-size:110%;font-weight:normal;text-shadow:0 1px 1px black;padding:5px 0 0 34px;height:19px;background:url(images/buttons.png?v=51d4.15699) -1000px 0 no-repeat}#taskbar a:focus{color:#fff;text-shadow:0 1px 1px #666;background-color:rgba(73,180,210,0.7);outline:0}#taskbar a.button-selected{color:#3cf;background-color:#2c2c2c}#taskbar a.button-mail span.button-inner{background-position:0 2px}#taskbar a.button-mail:hover span.button-inner,#taskbar a.button-mail.button-selected span.button-inner{background-position:0 -22px}#taskbar a.button-addressbook span.button-inner{background-position:0 -48px}#taskbar a.button-addressbook:hover span.button-inner,#taskbar a.button-addressbook.button-selected span.button-inner{background-position:0 -72px}#taskbar a.button-settings span.button-inner{background-position:0 -96px}#taskbar a.button-settings:hover span.button-inner,#taskbar a.button-settings.button-selected span.button-inner{background-position:0 -120px}#taskbar a.button-calendar span.button-inner{background-position:0 -144px}#taskbar a.button-calendar:hover span.button-inner,#taskbar a.button-calendar.button-selected span.button-inner{background-position:0 -168px}#taskbar .minmodetoggle{position:absolute;top:0;right:0;display:block;width:19px;height:46px;cursor:pointer;background:url(images/buttons.png?v=51d4.15699) -35px -1778px no-repeat}.minimal #taskbar .minmodetoggle{height:42px;background-position:-35px -1820px}#mainscreen{position:absolute;top:88px;left:10px;right:10px;bottom:20px}#mainscreencontent{position:absolute;top:42px;left:0;right:0;bottom:0}#mainscreen.offset{top:132px}#mainscreen .offset{top:42px}.minimal #mainscreen{top:62px}.minimal #mainscreen.offset{top:102px}.extwin #mainscreen{top:40px}.extwin #mainscreen.offset{top:86px}.uibox{border:1px solid #a3a3a3;border-radius:4px;overflow:hidden;box-shadow:0 0 2px #999;-webkit-box-shadow:0 0 2px #999;background:#fff}.minwidth{min-width:1024px}.scroller{overflow:auto}.watermark{background-image:url(images/watermark.jpg?v=e784.5000);background-position:center;background-repeat:no-repeat}@media screen and (-webkit-min-device-pixel-ratio:0) and (max-device-width:1024px){.iframebox{overflow:auto;-webkit-overflow-scrolling:touch}}.listbox{background:#d9ecf4;overflow:hidden}.listbox .scroller{position:absolute;top:0;left:0;width:100%;bottom:0;overflow-x:hidden;overflow-y:auto}.listbox .scroller.withfooter{bottom:42px}.listbox .boxtitle+.scroller{top:34px}.boxtitle,.uibox .listing thead th,.uibox .listing thead td{font-size:12px;font-weight:bold;padding:7px 8px 6px 8px;line-height:20px;margin:0;text-shadow:0 1px 1px #fff;border-bottom:1px solid #bbd3da;white-space:nowrap}.uibox .listing thead th,.uibox .listing thead td{padding-bottom:8px;height:auto}.uibox .boxtitle,.uibox .listing thead th,.uibox .listing thead td{background:#b0ccd7;color:#004458;border-radius:4px 4px 0 0}.listbox .listitem,.listbox .tablink,.listing tbody td,.listing li{display:block;border-top:1px solid #fff;border-bottom:1px solid #bbd3da;cursor:default;font-weight:normal}.listbox .listitem a,.listbox .listitem span,.listbox .tablink a,.listing tbody td,.listing li a{display:block;color:#376572;text-shadow:0 1px 1px #fff;text-decoration:none;cursor:default;padding:4px 8px;line-height:17px;height:17px;white-space:nowrap}.listing tbody td{display:table-cell;min-height:14px;outline:0}.listing tbody td a{color:#376572;text-shadow:0 1px 1px #fff;text-decoration:none}.webkit .listing tbody td{height:14px}.listing thead tr td:first-child,.listing tbody tr td:first-child{border-left:2px solid transparent;padding-left:6px}.listing.iconized thead tr td:first-child,.listing.iconized tbody tr td:first-child{padding-left:34px}.listing.focus tbody tr.focused>td:first-child{border-left:2px solid #739da8}.listbox .listitem.selected,.listbox .tablink.selected,.listbox .listitem.selected>a,.listbox .tablink.selected>a,.listing tbody tr.selected td,.listing li.selected,.listing li.selected>a{color:#004458;font-weight:bold;background-color:#c7e3ef}ul.listing{display:block;list-style:none;margin:0;padding:0}ul.listing li{background-color:#d9ecf4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ul.listing li ul{border-top:1px solid #bbd3da}ul.listing li.droptarget,table.listing tr.droptarget td{background-color:#e8e798}.listbox table.listing{background-color:#d9ecf4}table.listing,table.layout{border:0;width:100%;border-spacing:0}table.layout td{vertical-align:top}ul.treelist li{position:relative}ul.treelist li ul{margin:0;padding:0}ul.treelist li ul li:last-child{border-bottom:0}ul.treelist li a{display:block;padding-left:20px;overflow:hidden;text-overflow:ellipsis}ul.treelist li a:focus,ul.listing .listitem a:focus,ul.listing .listitem span:focus,ul.listing.focus .listitem.focused span{color:#fff !important;background-color:rgba(73,180,210,0.6);text-shadow:0 1px 1px #666;outline:0}ul.treelist ul li a{padding-left:38px}ul.treelist ul ul li a{padding-left:54px}ul.treelist.iconized li a{padding-left:36px}ul.treelist.iconized ul li a{padding-left:62px}ul.treelist.iconized ul ul li a{padding-left:88px}ul.treelist.iconized ul ul ul li a{padding-left:114px}ul.treelist li div.treetoggle{position:absolute;top:7px;left:4px;width:13px;height:13px;background:url(images/listicons.png?v=1877.13442) -3px -144px no-repeat;cursor:pointer}ul.treelist li ul li div.treetoggle{left:22px}ul.treelist.iconized li div.treetoggle{top:13px;left:19px}ul.treelist.iconized ul li div.treetoggle{left:45px}ul.treelist.iconized ul ul li div.treetoggle{left:71px}ul.treelist li div.treetoggle.expanded{background-position:-3px -168px}ul.treelist li.selected>div.collapsed{background-position:-23px -144px}ul.treelist li.selected>div.expanded{background-position:-23px -168px}.listbox .boxfooter{position:absolute;bottom:0;left:0;width:100%;height:42px;border-top:1px solid #ccdde4;background:#d9ecf4;box-shadow:inset 0 1px 0 0 #fff;-webkit-box-shadow:inset 0 1px 0 0 #fff;white-space:nowrap;overflow:hidden}.uibox .boxfooter{border-radius:0 0 4px 4px}.boxfooter .listbutton{display:inline-block;text-decoration:none;width:48px;border-right:1px solid #fff;background:#c7e3ef;padding:3px 0;margin-top:1px}.boxfooter a.listbutton:focus{color:#fff;background-color:rgba(73,180,210,0.6);text-shadow:0 1px 1px #666;outline:0}.uibox .boxfooter .listbutton:first-child{border-radius:0 0 0 4px}.boxfooter .listbutton .inner{display:inline-block;width:48px;height:35px;text-indent:-5000px;background-image:url(images/buttons.png?v=51d4.15699);background-position:-1000px 0;background-repeat:no-repeat}.boxfooter .listbutton.add .inner{background-position:10px -1301px}.boxfooter .listbutton.delete .inner{background-position:10px -1342px}.boxfooter .listbutton.groupactions .inner{background-position:5px -1382px}.boxfooter .listbutton.addto .inner{background-position:5px -1422px}.boxfooter .listbutton.addcc .inner{background-position:5px -1462px}.boxfooter .listbutton.addbcc{width:54px}.boxfooter .listbutton.addbcc .inner{width:54px;background-position:2px -1502px}.boxfooter .listbutton.removegroup .inner{background-position:5px -1540px}.boxfooter .listbutton.disabled .inner{opacity:.4}.boxfooter .countdisplay{display:inline-block;position:relative;top:10px;color:#69929e;padding:3px 6px}.boxpagenav{position:absolute;top:10px;right:6px;width:auto}.boxpagenav a.icon{display:inline-block;padding:1px 3px;height:13px;width:14px;text-indent:1000px;vertical-align:bottom;overflow:hidden;background:url(images/buttons.png?v=51d4.15699) -4px -286px no-repeat}.boxpagenav a.icon.prevpage{background-position:-4px -301px}.boxpagenav a.icon.nextpage{background-position:-28px -301px}.boxpagenav a.icon.lastpage{background-position:-28px -286px}.boxpagenav a.icon.disabled{opacity:.4}.centerbox{width:40em;margin:16px auto}.errorbox{width:40em;padding:20px}.errorbox h3{font-size:16px;margin-top:0}table.records-table{display:table;width:100%;table-layout:fixed;border-spacing:0;border:1px solid #bbd3da}.boxlistcontent .records-table{border:0}.records-table thead th,.records-table thead td{color:#69939e;font-size:11px;font-weight:bold;background:#d6eaf3;background:-moz-linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#e3f2f6),color-stop(8%,#d6eaf3),color-stop(100%,#d6eaf3));background:-o-linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);background:-ms-linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);background:linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);border-left:1px solid #bbd3da;padding:8px 7px;overflow:hidden;text-overflow:ellipsis;text-align:left}.records-table.sortheader thead th,.records-table.sortheader thead td{padding:0}.records-table thead th a,.records-table thead td a,.records-table thead th span,.records-table thead td span{display:block;padding:7px 7px;color:#69939e;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.records-table thead th a:focus,.records-table thead td a:focus{color:#fff;background-color:rgba(73,180,210,0.7);text-shadow:0 1px 1px #666;outline:0}.records-table tbody td{padding:2px 7px;border-bottom:1px solid #ddd;border-left:1px dotted #bbd3da;white-space:nowrap;cursor:default;overflow:hidden;text-overflow:ellipsis;background-color:#fff;outline:0}.records-table thead tr th:first-child,.records-table thead tr td:first-child,.records-table tbody tr td:first-child{border-left:2px solid transparent;padding-left:4px}.records-table.focus tbody tr.focused>td:first-child{border-left:2px solid #49b3d2}.records-table tr.selected td{color:#fff !important;background-color:#4db0d2 !important}.records-table.focus tr.selected td{background:#019bc6;background:-moz-linear-gradient(top,#019bc6 0,#017cb4 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#019bc6),color-stop(100%,#017cb4));background:-o-linear-gradient(top,#019bc6 0,#017cb4 100%);background:-ms-linear-gradient(top,#019bc6 0,#017cb4 100%);background:linear-gradient(to bottom,#019bc6 0,#017cb4 100%)}.records-table tr.selected td a,.records-table tr.selected td span{color:#fff !important}.records-table tr.deleted td,.records-table tr.deleted td a{color:#ccc !important}#aboutframe{width:97%;height:100%;border:0;padding:0}body.iframe{background:#fff;margin:38px 0 10px 0}body.iframe.error{background:#ededed}body.iframe.floatingbuttons{margin-bottom:40px}body.iframe.fullheight{margin:0}.contentbox .boxtitle,body.iframe .boxtitle{color:#777;background:#eee;background:-moz-linear-gradient(top,#eee 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(100%,#dfdfdf));background:-o-linear-gradient(top,#eee 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#eee 0,#dfdfdf 100%);background:linear-gradient(to bottom,#eee 0,#dfdfdf 100%);border-bottom:1px solid #ccc}body.iframe .boxtitle{position:fixed;top:0;left:0;width:100%;z-index:100}body.iframe .footerleft.floating,#composeview-bottom .formbuttons.floating{position:fixed;left:0;bottom:0;width:100%;z-index:110;background:#fff;padding-top:8px;padding-bottom:12px}body.iframe .footerleft.floating:before,#composeview-bottom .formbuttons.floating:before{content:" ";position:absolute;top:-6px;left:0;width:100%;height:6px;background:url(images/overflowshadow.png?v=71ba.250) top center no-repeat}.boxcontent{padding:10px}.contentbox .scroller{position:absolute;top:34px;left:0;right:0;bottom:0;overflow:auto}.iframebox{position:absolute;top:0;left:0;right:0;bottom:0}.footerleft{padding:0 12px 4px 12px}.propform fieldset{margin-bottom:20px;border:0;padding:0}.propform fieldset legend{display:block;font-size:14px;font-weight:bold;padding-bottom:10px;margin-bottom:0}.propform fieldset fieldset legend{color:#666;font-size:12px}.propform div.prop{margin-bottom:.5em}.propform div.prop.block label{display:block;margin-bottom:.3em}.propform div.prop.block input,.propform div.prop.block textarea{width:95%}.propform a.disabled{color:#999;text-decoration:none;cursor:default}fieldset.floating{float:left;margin-right:10px;margin-bottom:10px}table.propform{width:100%;border-spacing:0;border-collapse:collapse}ul.proplist li,table.propform td{width:80%;padding:4px 10px;background:#eee;border-bottom:2px solid #fff}table.propform td.title{width:20%;color:#333;padding-right:20px;white-space:nowrap}table.propform .mceLayout td{padding:0;border-bottom:0}ul.proplist{list-style:none;margin:0;padding:0}ul.proplist li{width:auto}#pluginbody{position:absolute;top:0;left:0;right:0;bottom:0}#login-form{position:relative;width:580px;margin:20ex auto 2ex auto}#login-form .box-inner{width:430px;background:url(images/linen_login.jpg?v=0484.10363) top left no-repeat #5c5c5c;margin:0 50px;padding:10px 24px 24px 24px;border:1px solid #333;border-radius:5px;box-shadow:inset 0 0 1px #ccc;-webkit-box-shadow:inset 0 0 1px #ccc}#login-form .box-bottom{background:url(images/login_shadow.png?v=1169.789) top center no-repeat;margin-top:-3px;padding-top:10px}#login-form .noscriptwarning{margin:0 auto;width:430px;color:#cf2734;font-size:110%;font-weight:bold}#login-form td.input{width:80%;padding:8px}#login-form input[type="text"],#login-form input[type="password"]{width:100%;border-color:#666}#login-form input.button{color:#444;text-shadow:0 1px 1px #fff;border-color:#f9f9f9;background:#f9f9f9;background:-moz-linear-gradient(top,#f9f9f9 0,#e2e2e2 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f9f9f9),color-stop(100%,#e2e2e2));background:-o-linear-gradient(top,#f9f9f9 0,#e2e2e2 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#e2e2e2 100%);background:linear-gradient(to bottom,#f9f9f9 0,#e2e2e2 100%);box-shadow:inset 0 1px 0 0 #fff;-webkit-box-shadow:inset 0 1px 0 0 #fff}#login-form input.button:hover,#login-form input.button:focus{box-shadow:0 0 5px 2px rgba(71,135,177,0.9),inset 0 1px 0 0 #fff;-webkit-box-shadow:0 0 5px 2px rgba(71,135,177,0.9),inset 0 1px 0 0 #fff}#login-form input.button:active{color:#333;background:-moz-linear-gradient(top,#dcdcdc 0,#f9f9f9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dcdcdc),color-stop(100%,#f9f9f9));background:-o-linear-gradient(top,#dcdcdc 0,#f9f9f9 100%);background:-ms-linear-gradient(top,#dcdcdc 0,#f9f9f9 100%);background:linear-gradient(to bottom,#dcdcdc 0,#f9f9f9 100%)}#login-form form table{width:98%}#login-form td.title{width:20%;white-space:nowrap;color:#cecece;text-shadow:0 1px 1px black;text-align:right;padding-right:1em}#login-form p.formbuttons{margin-top:2em;text-align:center}#login-form #logo{margin-bottom:20px;border:0}#login-form #message{min-height:40px;padding:5px 25px;text-align:center;font-size:1.1em}#login-form #message div{display:inline-block;padding-right:0;font-size:12px}#bottomline{font-size:90%;text-align:center;margin-top:2em}.searchbox{position:relative}#quicksearchbar{position:absolute;right:2px;top:2px;width:240px}.searchbox input,#quicksearchbar input{width:176px;margin:0;padding:3px 30px 3px 34px;height:18px;background:#f1f1f1;border-color:#ababab;font-weight:bold;font-size:11px}.searchbox .searchicon,.searchbox #searchmenulink,#quicksearchbar #searchmenulink{position:absolute;top:5px;left:6px}.searchbox #searchreset,.searchbox .iconbutton.reset,#quicksearchbar #searchreset{position:absolute;top:4px;right:1px}.listsearchbox{padding:4px;background:#c7e3ef;display:none}.listsearchbox input{width:100%;height:26px;-moz-box-sizing:border-box;box-sizing:border-box}.toolbar .spacer{display:inline-block;width:24px;height:40px;padding:0}.toolbar a.button{text-align:center;font-size:10px;color:#555;min-width:50px;max-width:70px;height:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:28px 2px 0 2px;text-shadow:0 1px 1px #eee;box-shadow:none;-webkit-box-shadow:none;background:url(images/buttons.png?v=51d4.15699) -100px 0 no-repeat transparent;border:0;border-radius:0}.dropbutton .dropbuttontip:focus,.toolbar a.button:focus{color:#fff;text-shadow:0 1px 1px #666;background-color:rgba(30,150,192,0.5);border-radius:3px}.toolbar a.button.disabled{opacity:.4}.dropbutton{display:inline-block;position:relative}.dropbutton .dropbuttontip{display:block;position:absolute;right:0;top:0;height:41px;width:18px;overflow:hidden;text-indent:-5000px;background:url(images/buttons.png?v=51d4.15699) 0 -1255px no-repeat;cursor:pointer;outline:0}.dropbutton .dropbuttontip:focus,.dropbutton .dropbuttontip:hover{background-position:-26px -1255px}.dropbutton a.button.disabled+.dropbuttontip{opacity:.5}.dropbutton a.button.disabled+.dropbuttontip:hover{background-position:0 -1255px}.dropbutton a.button{margin-left:0;padding-left:0;margin-right:0;padding-right:0}.toolbar a.button.back{background-position:0 -1216px}.toolbar a.button.checkmail{background-position:center -1176px}.toolbar a.button.compose{background-position:center -530px}.toolbar a.button.reply{background-position:center -570px}.toolbar a.button.reply-all{min-width:64px;background-position:0 -610px}.toolbar a.button.forward{min-width:64px;background-position:0 -650px}.toolbar a.button.delete{background-position:center -690px}.toolbar a.button.archive{background-position:center -730px}.toolbar a.button.junk{background-position:center -770px}.toolbar a.button.print{background-position:center -810px}.toolbar a.button.markmessage{background-position:center -1094px}.toolbar a.button.move{background-position:center -1971px}.toolbar a.button.more{background-position:center -850px}.toolbar a.button.attach{background-position:center -890px}.toolbar a.button.spellcheck{min-width:64px;background-position:0 -930px}.toolbar a.button.spellcheck.selected{background-position:0 -1620px;color:#1978a1}.toolbar a.button.insertsig{background-position:center -1135px}.toolbar a.button.search{background-position:center -970px}.toolbar a.button.import{background-position:center -1012px}.toolbar a.button.export{min-width:64px;background-position:0 -1054px}.toolbar a.button.send{background-position:center -1660px}.toolbar a.button.savedraft{background-position:center -1700px}.toolbar a.button.close{background-position:0 -1745px}.toolbar a.button.download{background-position:center -1892px}.toolbar a.button.responses{background-position:center -1932px}a.menuselector{display:inline-block;border:1px solid #ababab;border-radius:4px;background:#f8f8f8;background:-moz-linear-gradient(top,#f8f8f8 0,#ddd 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#ddd));background:-o-linear-gradient(top,#f8f8f8 0,#ddd 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#ddd 100%);background:linear-gradient(to bottom,#f8f8f8 0,#ddd 100%);text-decoration:none;color:#333;cursor:pointer;white-space:nowrap}a.menuselector .handle{display:inline-block;padding:0 32px 0 6px;height:20px;line-height:19px;text-shadow:0 1px 1px #fff;background:url(images/selector.png?v=799c.181) right center no-repeat;border-radius:4px}a.menuselector:active{background:#ddd;background:-moz-linear-gradient(top,#ddd 0,#f8f8f8 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(100%,#f8f8f8));background:-o-linear-gradient(top,#ddd 0,#f8f8f8 100%);background:-ms-linear-gradient(top,#ddd 0,#f8f8f8 100%);background:linear-gradient(to bottom,#ddd 0,#f8f8f8 100%);text-decoration:none}select.decorated{position:relative;z-index:10;opacity:0;height:22px;cursor:pointer;-khtml-appearance:none;-webkit-appearance:none;border:0}html.opera select.decorated{opacity:1}select.decorated option{color:#fff;background:#444;border:0;border-top:1px solid #5a5a5a;border-bottom:1px solid #333;text-shadow:0 1px 1px #333;padding:4px 6px;outline:0;cursor:default}a.menuselector:focus,a.menuselector.focus,a.iconbutton:focus,.pagenav a.button:focus{border-color:#4fadd5;box-shadow:0 0 4px 2px rgba(71,135,177,0.8);-webkit-box-shadow:0 0 4px 2px rgba(71,135,177,0.8);outline:0}#quotadisplay{left:6px;height:18px;font-size:12px;font-weight:bold;text-shadow:0 1px 1px #fff;padding-left:30px;background:url(images/quota.png?v=7ea4.2033) -100px 0 no-repeat}table.quota-info{border-spacing:0;border-collapse:collapse;table-layout:fixed;margin:5px}table.quota-info td,table.quota-info th{color:white;border:1px solid lightgrey;padding:2px 3px;text-align:center;min-width:80px}table.quota-info td.name{text-align:left}table.quota-info td.root{font-style:italic}.popupmenu,#rcmKSearchpane{display:none;position:absolute;top:32px;left:90px;width:auto;max-height:70%;overflow:-moz-scrollbars-vertical;overflow-y:auto;background:#444;border:1px solid #999;z-index:240;border-radius:4px;box-shadow:0 2px 6px 0 #333;-webkit-box-shadow:0 2px 6px 0 #333}.popupmenu.dropdown{border-radius:0 0 4px 4px;border-top:0}ul.toolbarmenu,ul.toolbarmenu ul,#rcmKSearchpane ul{margin:0;padding:0;list-style:none}.googie_list td,ul.toolbarmenu li,#rcmKSearchpane ul li{color:#fff;white-space:nowrap;min-width:130px;margin:0;border-top:1px solid #5a5a5a;border-bottom:1px solid #333}.googie_list tr:first-child td,ul.toolbarmenu>li:first-child,select.decorated option:first-child{border-top:0}.googie_list tr:last-child td,ul.toolbarmenu>li:last-child,select.decorated option:last-child{border-bottom:0}.googie_list td span,ul.toolbarmenu li a{display:block;color:#666;text-shadow:0 1px 1px #333;text-decoration:none;min-height:14px;padding:6px 16px 6px 10px}.googie_list td span{padding:3px 10px}.googie_list td span,ul.toolbarmenu li a.active{color:#fff;cursor:default}.googie_list td.googie_list_onhover,ul.toolbarmenu li a.active:hover,ul.toolbarmenu li a.active:focus,#rcmKSearchpane ul li.selected,select.decorated option:hover,select.decorated option[selected='selected']{background-color:#00aad6;background:-moz-linear-gradient(top,#00aad6 0,#008fc9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#00aad6),color-stop(100%,#008fc9));background:-o-linear-gradient(top,#00aad6 0,#008fc9 100%);background:-ms-linear-gradient(top,#00aad6 0,#008fc9 100%);background:linear-gradient(to bottom,#00aad6 0,#008fc9 100%);outline:0}ul.toolbarmenu.iconized li a,ul.toolbarmenu.selectable li a{padding-left:30px}ul.toolbarmenu.selectable li a.selected{background:url(images/messages.png?v=3a4f.1461) 4px -27px no-repeat}ul.toolbarmenu li label{display:block;color:#fff;padding:4px 8px;text-shadow:0 1px 1px #333}ul.toolbarmenu li.separator label{color:#bbb;font-style:italic}ul.toolbarmenu li a.icon{color:#eee;padding:2px 6px}ul.toolbarmenu li span.icon,#rcmKSearchpane ul li i.icon{display:block;min-height:14px;padding:4px 4px 1px 24px;height:17px;background-image:url(images/listicons.png?v=1877.13442);background-position:-100px 0;background-repeat:no-repeat;opacity:.2}ul.toolbarmenu li a.active span.icon{opacity:.99}ul.toolbarmenu li span.read{background-position:0 -1220px}ul.toolbarmenu li span.unread{background-position:0 -1196px}ul.toolbarmenu li span.flagged{background-position:0 -1244px}ul.toolbarmenu li span.unflagged{background-position:0 -1268px}ul.toolbarmenu li span.mail{background-position:0 -1293px}ul.toolbarmenu li span.list{background-position:0 -1317px}ul.toolbarmenu li span.invert{background-position:0 -1340px}ul.toolbarmenu li span.cross{background-position:0 -1365px}ul.toolbarmenu li span.print{background-position:0 -1436px}ul.toolbarmenu li span.download{background-position:0 -1412px}ul.toolbarmenu li span.edit{background-position:0 -1388px}ul.toolbarmenu li span.viewsource{background-position:0 -1460px}ul.toolbarmenu li span.extwin{background-position:0 -1484px}ul.toolbarmenu li span.conversation{background-position:0 -1532px}ul.toolbarmenu li span.move{background-position:0 -2126px}ul.toolbarmenu li span.copy{background-position:0 -2150px}#snippetslist{max-width:200px}#snippetslist li a{overflow:hidden;text-overflow:ellipsis}#rcmKSearchpane{border-radius:0 0 4px 4px;border-top:0}#rcmKSearchpane ul li{text-shadow:0 1px 1px #333;text-decoration:none;min-height:14px;padding:6px 10px 6px 28px;border:0;cursor:default;position:relative}#rcmKSearchpane ul li i.icon{opacity:.99;position:absolute;top:4px;left:5px;width:18px;height:18px;padding:0;background-position:-1px -2223px}#rcmKSearchpane ul li.group i.icon{background-position:-1px -2247px}.popupdialog{display:none;padding:10px}.popupdialog .formbuttons{margin:20px 0 4px 0}.ui-dialog .prompt input{display:block;margin:8px 0}.hint{margin:4px 0;color:#999;text-shadow:0 1px 1px #fff}.splitter{user-select:none;-moz-user-select:none;-khtml-user-select:none;position:absolute;background:url(images/splitter.png?v=2724.136) center no-repeat}.splitter-h{height:10px;width:100%;cursor:n-resize;cursor:row-resize;background-position:center 0}.splitter-v{width:10px;height:100%;cursor:e-resize;cursor:col-resize;background-position:0 center}#rcmdraglayer{min-width:260px;width:auto !important;width:260px;padding:6px 8px;background:#444;border:1px solid #555;border-radius:4px;box-shadow:0 2px 6px 0 #333;-webkit-box-shadow:0 2px 6px 0 #333;z-index:250;color:#ccc;white-space:nowrap;opacity:.92;text-shadow:0 1px 1px #333}#rcmdraglayer:after{content:"";position:absolute;top:6px;left:-6px;border-style:solid;border-width:6px 6px 6px 0;border-color:transparent #444;display:block;width:0;z-index:251}.draglayercopy:before{position:absolute;bottom:-6px;left:-6px;content:" ";width:16px;height:16px;background:url(images/buttons.png?v=51d4.15699) -7px -358px no-repeat;z-index:255}.popup label>input{margin-left:10px}#folder-selector{z-index:1000}#folder-selector li a span{background:url(images/listicons.png?v=1877.13442) 4px -2021px no-repeat;display:block;height:17px;min-height:14px;padding:4px 4px 1px 28px;overflow:hidden;max-width:120px;text-overflow:ellipsis}#folder-selector li a.virtual{opacity:.2}#folder-selector li a.inbox span{background-position:4px -2049px}#folder-selector li a.drafts span{background-position:4px -1388px}#folder-selector li a.sent span{background-position:4px -2074px}#folder-selector li a.trash span{background-position:4px -1508px}#folder-selector li a.junk span{background-position:4px -2100px}.folderlist li.mailbox a{padding-left:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-image:url(images/listicons.png?v=1877.13442);background-repeat:no-repeat;background-position:6px 3px}.folderlist li.mailbox.unread>a{padding-right:36px}.folderlist li.mailbox>a:focus,.folderlist li.mailbox.selected>a{background-position:6px -21px}.folderlist li.mailbox.inbox>a{background-position:6px -189px}.folderlist li.mailbox.inbox>a:focus,.folderlist li.mailbox.inbox.selected>a{background-position:6px -213px}.folderlist li.mailbox.drafts>a{background-position:6px -238px}.folderlist li.mailbox.drafts>a:focus,.folderlist li.mailbox.drafts.selected>a{background-position:6px -262px}.folderlist li.mailbox.sent>a{background-position:6px -286px}.folderlist li.mailbox.sent>a:focus,.folderlist li.mailbox.sent.selected>a{background-position:6px -310px}.folderlist li.mailbox.junk>a{background-position:6px -334px}.folderlist li.mailbox.junk>a:focus,.folderlist li.mailbox.junk.selected>a{background-position:6px -358px}.folderlist li.mailbox.trash>a{background-position:6px -382px}.folderlist li.mailbox.trash>a:focus,.folderlist li.mailbox.trash.selected>a{background-position:6px -406px}.folderlist li.mailbox.trash.empty>a{background-position:6px -1924px}.folderlist li.mailbox.trash.empty>a:focus,.folderlist li.mailbox.trash.empty.selected>a{background-position:6px -1948px}.folderlist li.mailbox.archive>a{background-position:6px -1699px}.folderlist li.mailbox.archive>a:focus,.folderlist li.mailbox.archive.selected>a{background-position:6px -1723px}.folderlist li.mailbox ul li.drafts>a{background-position:23px -238px}.folderlist li.mailbox ul li.drafts>a:focus,.folderlist li.mailbox ul li.drafts.selected>a{background-position:23px -262px}.folderlist li.mailbox ul li.sent>a{background-position:23px -286px}.folderlist li.mailbox ul li.sent>a:focus,.folderlist li.mailbox ul li.sent.selected>a{background-position:23px -310px}.folderlist li.mailbox ul li.junk>a{background-position:23px -334px}.folderlist li.mailbox ul li.junk>a:focus,.folderlist li.mailbox ul li.junk.selected>a{background-position:23px -358px}.folderlist li.mailbox ul li.trash>a{background-position:23px -382px}.folderlist li.mailbox ul li.trash>a:focus,.folderlist li.mailbox ul li.trash.selected>a{background-position:23px -406px}.folderlist li.mailbox ul li.trash.empty>a{background-position:23px -1924px}.folderlist li.mailbox ul li.trash.empty>a:focus,.folderlist li.mailbox ul li.trash.empty.selected>a{background-position:23px -1948px}.folderlist li.mailbox ul li.archive>a{background-position:23px -1699px}.folderlist li.mailbox ul li.archive>a:focus,.folderlist li.mailbox ul li.archive.selected>a{background-position:23px -1723px}.folderlist li.virtual>a{color:#aaa}.folderlist li.mailbox div.treetoggle{top:13px;left:19px}.folderlist li.mailbox ul li:last-child{border-bottom:0}.folderlist li.mailbox ul{list-style:none;margin:0;padding:0;border-top:1px solid #bbd3da}.folderlist li.mailbox ul li a{padding-left:52px;background-position:22px -95px}.folderlist li.mailbox ul li>a:focus,.folderlist li.mailbox ul li.selected>a{background-position:22px -119px}.folderlist li.mailbox ul li div.treetoggle{left:33px;top:14px}.folderlist li.mailbox ul ul li.mailbox a{padding-left:68px;background-position:38px -95px}.folderlist li.mailbox ul ul li>a:focus,.folderlist li.mailbox ul ul li.selected>a{background-position:38px -119px}.folderlist li.mailbox ul ul li div.treetoggle{left:48px}.folderlist li.mailbox ul ul ul li.mailbox a{padding-left:84px;background-position:54px -95px}.folderlist li.mailbox ul ul ul li>a:focus,.folderlist li.mailbox ul ul ul li.selected>a{background-position:54px -119px}.folderlist li.mailbox ul ul ul li div.treetoggle{left:64px}.folderlist li.mailbox ul ul ul ul li.mailbox a{padding-left:100px;background-position:70px -95px}.folderlist li.mailbox ul ul ul ul li>a:focus,.folderlist li.mailbox ul ul ul ul li.selected>a{background-position:70px -119px}.folderlist li.mailbox ul ul ul ul li div.treetoggle{left:80px}.folderlist li.mailbox ul ul ul ul ul li{padding-left:16px}.folderlist li.mailbox ul ul ul ul ul li div.treetoggle{left:96px}.attachmentslist{list-style:none;margin:0;padding:0;overflow:hidden;text-overflow:ellipsis}.attachmentslist li{display:block;position:relative;background:url(images/filetypes.png?v=91f3.4626) 0 0 no-repeat;margin-bottom:1px}.attachmentslist li.txt,.attachmentslist li.text{background-position:0 -416px}.attachmentslist li.pdf{background-position:0 -26px}.attachmentslist li.doc,.attachmentslist li.docx,.attachmentslist li.msword{background-position:0 -52px}.attachmentslist li.odt{background-position:0 -78px}.attachmentslist li.xls,.attachmentslist li.xlsx,.attachmentslist li.msexcel{background-position:0 -104px}.attachmentslist li.ods{background-position:0 -130px}.attachmentslist li.zip,.attachmentslist li.gz{background-position:0 -156px}.attachmentslist li.rar{background-position:0 -182px}.attachmentslist li.image{background-position:0 -208px}.attachmentslist li.jpg,.attachmentslist li.jpeg{background-position:0 -234px}.attachmentslist li.png{background-position:0 -260px}.attachmentslist li.m4p{background-position:0 -286px}.attachmentslist li.mp3,.attachmentslist li.audio{background-position:0 -312px}.attachmentslist li.video{background-position:0 -338px}.attachmentslist li.ics,.attachmentslist li.calendar{background-position:0 -364px}.attachmentslist li.vcard{background-position:0 -390px}.attachmentslist li.sig,.attachmentslist li.pgp-signature,.attachmentslist li.pkcs7-signature{background-position:0 -442px}.attachmentslist li.html{background-position:0 -468px}.attachmentslist li.eml,.attachmentslist li.rfc822{background-position:0 -494px}.attachmentslist li.ppt,.attachmentslist li.pptx,.attachmentslist li.ppsx,.attachmentslist li.vnd.mspowerpoint{background-position:0 -520px}.attachmentslist li.odp,.attachmentslist li.otp{background-position:0 -546px}.attachmentslist li a,#compose-attachments ul li{display:block;color:#333;font-weight:bold;padding:3px 15px 3px 30px;text-shadow:0 1px 1px #fff;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px;outline:0}.attachmentslist li a.drop{background:url(images/buttons.png?v=51d4.15699) no-repeat scroll center -1570px;width:14px;height:20px;cursor:pointer;position:absolute;right:0;top:0;padding:0;overflow:hidden;text-indent:-5000px;outline:0}.attachmentslist li a:focus,.attachmentslist li a.drop:focus{background-color:rgba(30,150,192,0.5);border-radius:2px}#compose-attachments ul li{padding-right:28px}.attachmentslist li a:hover{text-decoration:underline}.attachmentslist li.uploading{background:url(images/ajaxloader.gif?v=c252.1434) 2px 6px no-repeat}.attachmentslist li a.delete,.attachmentslist li a.cancelupload{position:absolute;top:4px;right:0;width:20px;height:18px;padding:0;text-decoration:none;text-indent:-5000px;background-image:url(images/buttons.png?v=51d4.15699);background-position:-6px -338px;background-repeat:no-repeat}.attachmentslist li a.cancelupload{background-position:-6px -378px}.tabbed.ui-tabs{padding:0;border:0 !important;background:0}.ui-dialog .tabbed.ui-tabs{margin:-12px -8px 0 -8px}.boxcontent.tabbed.ui-tabs{padding:10px}.ui-tabs .tabsbar.ui-tabs-nav{margin-bottom:10px}.ui-dialog-content .ui-tabs .tabsbar.ui-tabs-nav{margin-bottom:0}.tabsbar .tablink:last-child{background:0}.tabsbar .tablink:last-child a{border-right:0}.ui-tabs .ui-tabs-nav li.tablink a{background:#fff}.ui-tabs fieldset.ui-tabs-panel{border:0;padding:0;margin-left:0;background:0}.ui-dialog .propform .ui-tabs-panel{display:block;background:#efefef;padding:.5em 1em}#image-selector-form.droptarget{background:url(images/filedrop.png?v=ba79.421) center bottom no-repeat}.mce-btn-small .mce-ico{display:inline}.mce-btn-small i{line-height:16px !important;vertical-align:text-top !important}_:not(),_:-moz-handler-blocked,.mozilla .mce-btn-small i{line-height:20px !important}
\ No newline at end of file
+body{font-family:"Lucida Grande",Verdana,Arial,Helvetica,sans-serif;font-size:11px;color:#333;background:url(images/linen.jpg?v=0382.14157) repeat #d1d5d8;margin:0}body.noscroll{overflow:hidden}.iphone body.noscroll{overflow:auto}a{color:#0069a6}a:visited{color:#0186ba}img{border:0}.voice{position:absolute;border:0;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}html.mozilla select{padding:2px 1px}input,textarea,select,button{font-family:inherit;font-size:inherit;vertical-align:middle}input[type="text"],input[type="password"],textarea{margin:0;padding:4px;border:1px solid #b2b2b2;border-radius:4px;box-shadow:inset 0 0 2px 1px rgba(0,0,0,0.1);-webkit-box-shadow:inset 0 0 2px 1px rgba(0,0,0,0.1)}input[type="text"]:focus,input[type="password"]:focus,input.button:focus,textarea:focus{border-color:#4787b1;box-shadow:0 0 5px 2px rgba(71,135,177,0.9);-webkit-box-shadow:0 0 5px 2px rgba(71,135,177,0.9);outline:0}input[type="text"]:required,input[type="password"]:required{border-color:#4787b1}input.placeholder,textarea.placeholder{color:#aaa}.bold{font-weight:bold}label input+span{vertical-align:middle}input.button{display:inline-block;margin:0 2px;padding:2px 5px;color:#525252;text-shadow:0 1px 1px #fff;border:1px solid silver;border-radius:4px;background:#f7f7f7;background:-moz-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f9f9f9),color-stop(100%,#e6e6e6));background:-o-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:linear-gradient(to bottom,#f9f9f9 0,#e6e6e6 100%);box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);-webkit-box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);text-decoration:none;outline:0}.formbuttons input.button{color:#ddd;font-size:110%;text-shadow:0 1px 1px #333;padding:4px 12px;border-color:#465864;border-radius:5px;background:#7a7b7d;background:-moz-linear-gradient(top,#7b7b7b 0,#606060 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#7b7b7b),color-stop(100%,#606060));background:-o-linear-gradient(top,#7b7b7b 0,#606060 100%);background:-ms-linear-gradient(top,#7b7b7b 0,#606060 100%);background:linear-gradient(to bottom,#7b7b7b 0,#606060 100%);box-shadow:0 1px 1px 0 #ccc,inset 0 1px 0 0 #888;-webkit-box-shadow:0 1px 1px 0 #ccc,inset 0 1px 0 0 #888}.formbuttons input.button:hover,.formbuttons input.button:focus,input.button.mainaction:hover,input.button.mainaction:focus{color:#f2f2f2;border-color:#465864;box-shadow:0 0 5px 2px rgba(71,135,177,0.6),inset 0 1px 0 0 #888;-webkit-box-shadow:0 0 5px 2px rgba(71,135,177,0.6),inset 0 1px 0 0 #888}.formbuttons input.button:active{color:#fff;background:-moz-linear-gradient(top,#5c5c5c 0,#7b7b7b 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5c5c5c),color-stop(100%,#7b7b7b));background:-o-linear-gradient(top,#5c5c5c 0,#7b7b7b 100%);background:-ms-linear-gradient(top,#5c5c5c 0,#7b7b7b 100%);background:linear-gradient(to bottom,#5c5c5c 0,#7b7b7b 100%)}input.button.mainaction{color:#ededed;text-shadow:0 1px 1px #333;border-color:#1f262c;background:#505050;background:-moz-linear-gradient(top,#505050 0,#2a2e31 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#505050),color-stop(100%,#2a2e31));background:-o-linear-gradient(top,#505050 0,#2a2e31 100%);background:-ms-linear-gradient(top,#505050 0,#2a2e31 100%);background:linear-gradient(to bottom,#505050 0,#2a2e31 100%);box-shadow:inset 0 1px 0 0 #777;-webkit-box-shadow:inset 0 1px 0 0 #777}input.button.mainaction:active{color:#fff;background:#515151;background:-moz-linear-gradient(top,#2a2e31 0,#505050 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#2a2e31),color-stop(100%,#505050));background:-o-linear-gradient(top,#2a2e31 0,#505050 100%);background:-ms-linear-gradient(top,#2a2e31 0,#505050 100%);background:linear-gradient(to bottom,#2a2e31 0,#505050 100%)}input.button[disabled],input.button[disabled]:hover,input.button.mainaction[disabled]{color:#aaa !important}input.mainaction{font-weight:bold}a.button,.buttongroup{display:inline-block;margin:0 2px;padding:2px 5px;color:#525252;text-shadow:0 1px 1px #fff;border:1px solid #c6c6c6;border-radius:4px;background:#f7f7f7;background:-moz-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f9f9f9),color-stop(100%,#e6e6e6));background:-o-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#e6e6e6 100%);background:linear-gradient(to bottom,#f9f9f9 0,#e6e6e6 100%);box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);-webkit-box-shadow:0 1px 1px 0 rgba(140,140,140,0.3);text-decoration:none}.buttongroup{padding:0;white-space:nowrap}a.button:focus,input.button:focus{border-color:#4fadd5;box-shadow:0 0 2px 1px rgba(71,135,177,0.6);-webkit-box-shadow:0 0 2px 1px rgba(71,135,177,0.6);outline:0}label.disabled,a.button.disabled{color:#999}a.button.disabled,input.button.disabled,input.button[disabled],a.button.disabled:hover,input.button.disabled:hover,input.button[disabled]:hover{border-color:#c6c6c6;box-shadow:0 1px 1px 0 rgba(160,160,160,0.4);-webkit-box-shadow:0 1px 1px 0 rgba(160,160,160,0.4)}a.button.disabled span.inner{opacity:.4}.buttongroup a.button{margin:0;border-width:0 1px 0 0;border-radius:0;background:0;box-shadow:none;-webkit-box-shadow:none}.buttongroup a.button.first,.buttongroup a.button:first-child{border-radius:4px 0 0 4px;border-left:0}.buttongroup a.button.last,.buttongroup a.button:last-child{border-radius:0 4px 4px 0;border-right:0}a.button.pressed,a.button:active,input.button:active{background:#e6e6e6;background:-moz-linear-gradient(top,#e6e6e6 0,#f9f9f9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e6e6e6),color-stop(100%,#f9f9f9));background:-o-linear-gradient(top,#e6e6e6 0,#f9f9f9 100%);background:-ms-linear-gradient(top,#e6e6e6 0,#f9f9f9 100%);background:linear-gradient(to bottom,#e6e6e6 0,#f9f9f9 100%)}.pagenav.dark a.button{font-weight:bold;border-color:#e6e6e6;background:#d8d8d8;background:-moz-linear-gradient(top,#d8d8d8 0,#bababa 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d8d8d8),color-stop(100%,#bababa));background:-o-linear-gradient(top,#d8d8d8 0,#bababa 100%);background:-ms-linear-gradient(top,#d8d8d8 0,#bababa 100%);background:linear-gradient(to bottom,#d8d8d8 0,#bababa 100%);box-shadow:0 1px 1px 0 #999;-webkit-box-shadow:0 1px 1px 0 #999}.pagenav.dark a.button.pressed{background:#bababa;background:-moz-linear-gradient(top,#bababa 0,#d8d8d8 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#bababa),color-stop(100%,#d8d8d8));background:-o-linear-gradient(top,#bababa 0,#d8d8d8 100%);background:-ms-linear-gradient(top,#bababa 0,#d8d8d8 100%);background:linear-gradient(to bottom,#bababa 0,#d8d8d8 100%)}.buttongroup a.button.selected,.buttongroup a.button.selected:hover{background:#8a8a8a;background:-moz-linear-gradient(top,#909090 0,#858585 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#909090),color-stop(100%,#858585));background:-o-linear-gradient(top,#909090 0,#858585 100%);background:-ms-linear-gradient(top,#909090 0,#858585 100%);background:linear-gradient(to bottom,#909090 0,#858585 100%);box-shadow:inset 0 1px 2px 0 #555;-webkit-box-shadow:inset 0 1px 2px 0 #555;border-right-color:#555;border-left-color:#555}.buttongroup a.button:focus,.buttongroup a.button.selected:focus{background:#f2f2f2;background:-moz-linear-gradient(top,#49b3d2 0,#66bcd9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#49b3d2),color-stop(100%,#66bcd9));background:-o-linear-gradient(top,#49b3d2 0,#66bcd9 100%);background:-ms-linear-gradient(top,#49b3d2 0,#66bcd9 100%);background:linear-gradient(to bottom,#49b3d2 0,#66bcd9 100%)}.pagenav a.button{padding:1px 3px;height:16px;vertical-align:middle;margin-bottom:1px}.pagenav .buttongroup a.button,.pagenav .buttongroup a.button:hover{padding:1px 5px;margin-bottom:0}a.button span.icon,.pagenav a.button span.inner{display:inline-block;width:16px;height:13px;text-indent:1000px;overflow:hidden;background:url(images/buttons.png?v=51d4.15699) -6px -211px no-repeat}a.button.prevpage span.icon,.pagenav a.prevpage span.inner{background-position:-7px -226px}a.button.nextpage span.icon,.pagenav a.nextpage span.inner{background-position:-28px -226px}a.button.lastpage span.icon,.pagenav a.lastpage span.inner{background-position:-28px -211px}a.button.pageup span.icon,.pagenav a.pageup span.inner{background-position:-7px -241px}a.button.pagedown span.icon,.pagenav a.pagedown span.inner{background-position:-29px -241px}a.button.reply span.icon,.pagenav a.reply span.inner{background-position:-7px -256px}a.button.forward span.icon,.pagenav a.forward span.inner{background-position:-29px -256px}a.button.replyall span.icon,.pagenav a.replyall span.inner{background-position:-7px -271px}a.button.extwin span.icon,.pagenav a.extwin span.inner{background-position:-29px -271px}a.button.changeformat.html span.icon,.pagenav a.changeformat.html span.inner{background-position:-7px -1859px}a.button.changeformat.html.selected span.icon,.pagenav a.changeformat.html.selected span.inner{background-position:-29px -1859px}a.button.changeformat.text span.icon,.pagenav a.changeformat.text span.inner{background-position:-7px -1874px}a.button.changeformat.text.selected span.icon,.pagenav a.changeformat.text.selected span.inner{background-position:-29px -1874px}a.button.add span.icon{background-position:-7px -2009px}a.button.delete span.icon{background-position:-29px -2009px}.pagenav .countdisplay{display:inline-block;padding:3px 1em 0 1em;text-shadow:0 1px 1px #fff;min-width:16em}.pagenavbuttons{position:relative;top:-2px}a.iconbutton{display:inline-block;width:20px;height:18px;text-decoration:none;text-indent:-5000px;background:url(images/buttons.png?v=51d4.15699) -1000px 0 no-repeat}a.iconbutton.disabled{opacity:.4;cursor:default}a.iconbutton.searchicon,a.iconbutton.searchoptions{width:24px;background-position:-2px -317px}a.iconbutton.searchicon{width:15px}a.iconbutton.reset{width:24px;background-position:-25px -317px}a.iconbutton.remove,a.iconbutton.cancel{background-position:-7px -378px}a.iconbutton.delete{background-position:-7px -338px}a.iconbutton.add{background-position:-7px -358px}a.iconbutton.remove{background-position:-7px -379px}a.iconbutton.cancel{background-position:-7px -398px}a.iconbutton.edit{background-position:-7px -418px}a.iconbutton.upload{background-position:-6px -438px}a.iconlink{display:inline-block;color:#888;text-decoration:none;white-space:nowrap;padding:2px 8px 2px 20px;background:url(images/buttons.png?v=51d4.15699) -1000px 0 no-repeat}a.iconlink:hover{text-decoration:underline}a.iconlink.delete{background-position:-7px -337px}a.iconlink.add{background-position:-7px -357px}a.iconlink.remove{background-position:-7px -378px}a.iconlink.cancel{background-position:-7px -397px}a.iconlink.edit{background-position:-7px -417px}a.iconlink.upload{background-position:-6px -437px}#message div.loading,#message div.uploading,#message div.warning,#message div.error,#message div.notice,#message div.confirmation,#message-objects div.notice{color:#555;font-weight:bold;padding:6px 30px 6px 25px;display:inline-block;white-space:nowrap;background:url(images/messages.png?v=3a4f.1461) 0 5px no-repeat;cursor:default}#message div.warning{color:#960;background-position:0 -86px}#message div.error{color:#cf2734;background-position:0 -55px}#message div.confirmation{color:#093;background-position:0 -25px}#message div.loading{background:url(images/ajaxloader.gif?v=c252.1434) 2px 6px no-repeat}#message div a,#message div span{padding-right:.5em;text-decoration:none}#message div a:hover{text-decoration:underline;cursor:pointer}#message.statusbar{display:none;position:absolute;bottom:0;left:0;right:0;height:27px;padding-left:8px;border-top:1px solid #ddd;border-radius:0 0 4px 4px;background:#eaeaea;background:-moz-linear-gradient(top,#eaeaea 0,#c8c8c8 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eaeaea),color-stop(100%,#c8c8c8));background:-o-linear-gradient(top,#eaeaea 0,#c8c8c8 100%);background:-ms-linear-gradient(top,#eaeaea 0,#c8c8c8 100%);background:linear-gradient(to bottom,#eaeaea 0,#c8c8c8 100%);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#messagestack{position:absolute;bottom:20px;right:12px;z-index:50000;width:auto;height:auto;max-height:85%;overflow-y:auto;padding:2px}#messagestack div{display:block;position:relative;width:280px;height:auto;min-height:16px;margin:3px 2px 5px 2px;padding:8px 10px 7px 30px;cursor:default;font-size:12px;font-weight:bold;border-radius:4px;border:1px solid #444;color:#ebebeb;text-shadow:0 1px 1px #000;background:rgba(64,64,64,0.85);background:-moz-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.9) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(64,64,64,0.85)),color-stop(100%,rgba(48,48,48,0.9)));background:-webkit-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);background:-o-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);background:-ms-linear-gradient(top,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);background:linear-gradient(to bottom,rgba(64,64,64,0.85) 0,rgba(48,48,48,0.85) 100%);box-shadow:0 1px 4px 0 rgba(50,50,50,0.8),inset 0 1px 0 0 #888;-webkit-box-shadow:0 1px 4px 0 rgba(50,50,50,0.8),inset 0 1px 0 0 #888}#messagestack div:after{content:"";position:absolute;display:block;top:0;left:4px;width:20px;height:24px;background:url(images/messages_dark.png?v=270a.1471) 0 7px no-repeat}#messagestack div.error{color:#ff615d}#messagestack div.error:after{background-position:0 -55px}#messagestack div.warning{color:#f4bf0e}#messagestack div.warning:after{background-position:0 -84px}#messagestack div.confirmation{color:#00e05a}#messagestack div.confirmation:after{background-position:0 -25px}#messagestack div.uploading,#messagestack div.loading{color:#ddd}#messagestack div.uploading:after,#messagestack div.loading:after{top:4px;left:6px;background:url(images/ajaxloader_dark.gif?v=cf1b.1849) 0 4px no-repeat}#messagestack div.voice{position:absolute;top:-1000px}#messagestack div a{color:#94c0da}#messagestack div a:hover{text-decoration:underline;cursor:pointer}.ui-dialog.error .ui-dialog-title,.ui-dialog.warning .ui-dialog-title,.ui-dialog.confirmation .ui-dialog-title{padding-left:25px;background:url(images/messages.png?v=3a4f.1461) 0 5px no-repeat;text-shadow:0 1px 1px #fff}.ui-dialog.warning .ui-dialog-title{color:#960;background-position:0 -90px}.ui-dialog.error .ui-dialog-title{color:#cf2734;background-position:0 -60px}.ui-dialog.confirmation .ui-dialog-title{color:#093;background-position:0 -30px}.ui-dialog.popupmessage .ui-dialog-titlebar{padding:8px 1em 4px 1em;background:#e3e3e3;background:-moz-linear-gradient(top,#e3e3e3 0,#cfcfcf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e3e3e3),color-stop(100%,#cfcfcf));background:-o-linear-gradient(top,#e3e3e3 0,#cfcfcf 100%);background:-ms-linear-gradient(top,#e3e3e3 0,#cfcfcf 100%);background:linear-gradient(to bottom,#e3e3e3 0,#cfcfcf 100%)}.ui-dialog.popupmessage .ui-widget-content{font-size:12px;background:#eee;background:-moz-linear-gradient(top,#eee 0,#dcdcdc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(100%,#dcdcdc));background:-o-linear-gradient(top,#eee 0,#dcdcdc 100%);background:-ms-linear-gradient(top,#eee 0,#dcdcdc 100%);background:linear-gradient(to bottom,#eee 0,#dcdcdc 100%)}#header{overflow-x:hidden}#topline{height:18px;background:url(images/linen_header.jpg?v=514a.580) repeat #666;border-bottom:1px solid #4f4f4f;padding:2px 0 2px 10px;color:#aaa;text-align:center}#topnav{position:relative;height:46px;margin-bottom:10px;padding:0 0 0 10px;background:#111;background:-moz-linear-gradient(top,#404040 0,#060606 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#404040),color-stop(100%,#060606));background:-o-linear-gradient(top,#404040 0,#060606 100%);background:-ms-linear-gradient(top,#404040 0,#060606 100%);background:linear-gradient(to bottom,#404040 0,#060606 100%)}#topline a,#topnav a{color:#eee;text-decoration:none}#topline a:hover{text-decoration:underline}#toplogo{padding-top:2px;cursor:pointer;border:0}.topleft{float:left}.topright{float:right}.closelink{display:inline-block;padding:2px 10px 2px 20px}#topline span.username{padding-right:1em}#topline .topleft a{display:inline-block;padding:2px .8em 0 0;color:#aaa}#topline a.button-logout{display:inline-block;padding:2px 10px 2px 20px;background:url(images/buttons.png?v=51d4.15699) -6px -193px no-repeat;color:#fff}#taskbar .button-logout{display:none}#taskbar a.button-logout span.button-inner{background-position:-2px -1791px}#taskbar a.button-logout:hover span.button-inner{background-position:-2px -1829px}.minimal #topline{position:fixed;top:-18px;background:#444;z-index:5000;width:100%;height:22px;-moz-box-sizing:border-box;box-sizing:border-box}.minimal #topline:hover{top:0;opacity:.94;-webkit-transition:top .3s ease-in-out;-moz-transition:top .3s ease-in-out;-o-transition:top .3s ease-in-out;transition:top .3s ease-in-out}.extwin #topline,.extwin #topline:hover{position:static;top:0;height:18px;width:auto;-moz-box-sizing:content-box;box-sizing:content-box;opacity:.999}.minimal #topline a.button-logout{display:none}.minimal #topline span.username{display:inline-block;padding-top:2px}.minimal #topnav{position:relative;top:4px;height:42px}.minimal #taskbar a{position:relative;padding:10px 10px 0 6px;height:32px}.minimal #taskbar .button-logout{display:inline-block}.minimal #taskbar .button-inner{top:-4px;padding:0;height:24px !important;width:27px;text-indent:-5000px}#taskbar .tooltip{display:none}.minimal #taskbar .tooltip{position:absolute;top:-500px;right:2px;display:inline-block;padding:2px 8px 3px 8px;background:#444;background:-moz-linear-gradient(top,#444 0,#333 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#444),color-stop(100%,#333));background:-o-linear-gradient(top,#444 0,#333 100%);background:-ms-linear-gradient(top,#444 0,#333 100%);background:linear-gradient(to bottom,#444 0,#333 100%);color:#eee;font-weight:bold;white-space:nowrap;border:1px solid #777;box-shadow:0 1px 5px 0 #333;-webkit-box-shadow:0 1px 5px 0 #333;z-index:200;white-space:nowrap;text-shadow:0 1px 1px #000}.minimal #taskbar .tooltip:after{content:"";position:absolute;top:-4px;right:15px;border-style:solid;border-width:0 4px 4px;border-color:#888 transparent;display:block;width:0;z-index:251}.minimal #taskbar a:hover .tooltip{display:block;top:39px}#taskbar{position:relative;padding-right:18px}#taskbar a{display:inline-block;height:34px;padding:12px 10px 0 6px}#taskbar a span.button-inner{display:inline-block;font-size:110%;font-weight:normal;text-shadow:0 1px 1px black;padding:5px 0 0 34px;height:19px;background:url(images/buttons.png?v=51d4.15699) -1000px 0 no-repeat}#taskbar a:focus{color:#fff;text-shadow:0 1px 1px #666;background-color:rgba(73,180,210,0.7);outline:0}#taskbar a.button-selected{color:#3cf;background-color:#2c2c2c}#taskbar a.button-mail span.button-inner{background-position:0 2px}#taskbar a.button-mail:hover span.button-inner,#taskbar a.button-mail.button-selected span.button-inner{background-position:0 -22px}#taskbar a.button-addressbook span.button-inner{background-position:0 -48px}#taskbar a.button-addressbook:hover span.button-inner,#taskbar a.button-addressbook.button-selected span.button-inner{background-position:0 -72px}#taskbar a.button-settings span.button-inner{background-position:0 -96px}#taskbar a.button-settings:hover span.button-inner,#taskbar a.button-settings.button-selected span.button-inner{background-position:0 -120px}#taskbar a.button-calendar span.button-inner{background-position:0 -144px}#taskbar a.button-calendar:hover span.button-inner,#taskbar a.button-calendar.button-selected span.button-inner{background-position:0 -168px}#taskbar .minmodetoggle{position:absolute;top:0;right:0;display:block;width:19px;height:46px;cursor:pointer;background:url(images/buttons.png?v=51d4.15699) -35px -1778px no-repeat}.minimal #taskbar .minmodetoggle{height:42px;background-position:-35px -1820px}#mainscreen{position:absolute;top:88px;left:10px;right:10px;bottom:20px}#mainscreencontent{position:absolute;top:42px;left:0;right:0;bottom:0}#mainscreen.offset{top:132px}#mainscreen .offset{top:42px}.minimal #mainscreen{top:62px}.minimal #mainscreen.offset{top:102px}.extwin #mainscreen{top:40px}.extwin #mainscreen.offset{top:86px}.uibox{border:1px solid #a3a3a3;border-radius:4px;overflow:hidden;box-shadow:0 0 2px #999;-webkit-box-shadow:0 0 2px #999;background:#fff}.minwidth{min-width:1024px}.scroller{overflow:auto}.watermark{background-image:url(images/watermark.jpg?v=e784.5000);background-position:center;background-repeat:no-repeat}@media screen and (-webkit-min-device-pixel-ratio:0) and (max-device-width:1024px){.iframebox{overflow:auto;-webkit-overflow-scrolling:touch}}.listbox{background:#d9ecf4;overflow:hidden}.listbox .scroller{position:absolute;top:0;left:0;width:100%;bottom:0;overflow-x:hidden;overflow-y:auto}.listbox .scroller.withfooter{bottom:42px}.listbox .boxtitle+.scroller{top:34px}.boxtitle,.uibox .listing thead th,.uibox .listing thead td{font-size:12px;font-weight:bold;padding:7px 8px 6px 8px;line-height:20px;margin:0;text-shadow:0 1px 1px #fff;border-bottom:1px solid #bbd3da;white-space:nowrap}.uibox .listing thead th,.uibox .listing thead td{padding-bottom:8px;height:auto}.uibox .boxtitle,.uibox .listing thead th,.uibox .listing thead td{background:#b0ccd7;color:#004458;border-radius:4px 4px 0 0}.listbox .listitem,.listbox .tablink,.listing tbody td,.listing li{display:block;border-top:1px solid #fff;border-bottom:1px solid #bbd3da;cursor:default;font-weight:normal}.listbox .listitem a,.listbox .listitem span,.listbox .tablink a,.listing tbody td,.listing li a{display:block;color:#376572;text-shadow:0 1px 1px #fff;text-decoration:none;cursor:default;padding:4px 8px;line-height:17px;height:17px;white-space:nowrap}.listing tbody td{display:table-cell;min-height:14px;outline:0}.listing tbody td a{color:#376572;text-shadow:0 1px 1px #fff;text-decoration:none}.webkit .listing tbody td{height:14px}.listing thead tr td:first-child,.listing tbody tr td:first-child{border-left:2px solid transparent;padding-left:6px}.listing.iconized thead tr td:first-child,.listing.iconized tbody tr td:first-child{padding-left:34px}.listing.focus tbody tr.focused>td:first-child{border-left:2px solid #739da8}.listbox .listitem.selected,.listbox .tablink.selected,.listbox .listitem.selected>a,.listbox .tablink.selected>a,.listing tbody tr.selected td,.listing li.selected,.listing li.selected>a{color:#004458;font-weight:bold;background-color:#c7e3ef}ul.listing{display:block;list-style:none;margin:0;padding:0}ul.listing li{background-color:#d9ecf4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ul.listing li ul{border-top:1px solid #bbd3da}ul.listing li.droptarget,table.listing tr.droptarget td{background-color:#e8e798}.listbox table.listing{background-color:#d9ecf4}table.listing,table.layout{border:0;width:100%;border-spacing:0}table.layout td{vertical-align:top}ul.treelist li{position:relative}ul.treelist li ul{margin:0;padding:0}ul.treelist li ul li:last-child{border-bottom:0}ul.treelist li a{display:block;padding-left:20px;overflow:hidden;text-overflow:ellipsis}ul.treelist li a:focus,ul.listing .listitem a:focus,ul.listing .listitem span:focus,ul.listing.focus .listitem.focused span{color:#fff !important;background-color:rgba(73,180,210,0.6);text-shadow:0 1px 1px #666;outline:0}ul.treelist ul li a{padding-left:38px}ul.treelist ul ul li a{padding-left:54px}ul.treelist.iconized li a{padding-left:36px}ul.treelist.iconized ul li a{padding-left:62px}ul.treelist.iconized ul ul li a{padding-left:88px}ul.treelist.iconized ul ul ul li a{padding-left:114px}ul.treelist li div.treetoggle{position:absolute;top:7px;left:4px;width:13px;height:13px;background:url(images/listicons.png?v=1877.13442) -3px -144px no-repeat;cursor:pointer}ul.treelist li ul li div.treetoggle{left:22px}ul.treelist.iconized li div.treetoggle{top:13px;left:19px}ul.treelist.iconized ul li div.treetoggle{left:45px}ul.treelist.iconized ul ul li div.treetoggle{left:71px}ul.treelist li div.treetoggle.expanded{background-position:-3px -168px}ul.treelist li.selected>div.collapsed{background-position:-23px -144px}ul.treelist li.selected>div.expanded{background-position:-23px -168px}.listbox .boxfooter{position:absolute;bottom:0;left:0;width:100%;height:42px;border-top:1px solid #ccdde4;background:#d9ecf4;box-shadow:inset 0 1px 0 0 #fff;-webkit-box-shadow:inset 0 1px 0 0 #fff;white-space:nowrap;overflow:hidden}.uibox .boxfooter{border-radius:0 0 4px 4px}.boxfooter .listbutton{display:inline-block;text-decoration:none;width:48px;border-right:1px solid #fff;background:#c7e3ef;padding:3px 0;margin-top:1px}.boxfooter a.listbutton:focus{color:#fff;background-color:rgba(73,180,210,0.6);text-shadow:0 1px 1px #666;outline:0}.uibox .boxfooter .listbutton:first-child{border-radius:0 0 0 4px}.boxfooter .listbutton .inner{display:inline-block;width:48px;height:35px;text-indent:-5000px;background-image:url(images/buttons.png?v=51d4.15699);background-position:-1000px 0;background-repeat:no-repeat}.boxfooter .listbutton.add .inner{background-position:10px -1301px}.boxfooter .listbutton.delete .inner{background-position:10px -1342px}.boxfooter .listbutton.groupactions .inner{background-position:5px -1382px}.boxfooter .listbutton.addto .inner{background-position:5px -1422px}.boxfooter .listbutton.addcc .inner{background-position:5px -1462px}.boxfooter .listbutton.addbcc{width:54px}.boxfooter .listbutton.addbcc .inner{width:54px;background-position:2px -1502px}.boxfooter .listbutton.removegroup .inner{background-position:5px -1540px}.boxfooter .listbutton.disabled .inner{opacity:.4}.boxfooter .countdisplay{display:inline-block;position:relative;top:10px;color:#69929e;padding:3px 6px}.boxpagenav{position:absolute;top:10px;right:6px;width:auto}.boxpagenav a.icon{display:inline-block;padding:1px 3px;height:13px;width:14px;text-indent:1000px;vertical-align:bottom;overflow:hidden;background:url(images/buttons.png?v=51d4.15699) -4px -286px no-repeat}.boxpagenav a.icon.prevpage{background-position:-4px -301px}.boxpagenav a.icon.nextpage{background-position:-28px -301px}.boxpagenav a.icon.lastpage{background-position:-28px -286px}.boxpagenav a.icon.disabled{opacity:.4}.centerbox{width:40em;margin:16px auto}.errorbox{width:40em;padding:20px}.errorbox h3{font-size:16px;margin-top:0}table.records-table{display:table;width:100%;table-layout:fixed;border-spacing:0;border:1px solid #bbd3da}.boxlistcontent .records-table{border:0}.records-table thead th,.records-table thead td{color:#69939e;font-size:11px;font-weight:bold;background:#d6eaf3;background:-moz-linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0,#e3f2f6),color-stop(8%,#d6eaf3),color-stop(100%,#d6eaf3));background:-o-linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);background:-ms-linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);background:linear-gradient(left,#e3f2f6 0,#d6eaf3 14px,#d6eaf3 100%);border-left:1px solid #bbd3da;padding:8px 7px;overflow:hidden;text-overflow:ellipsis;text-align:left}.records-table.sortheader thead th,.records-table.sortheader thead td{padding:0}.records-table thead th a,.records-table thead td a,.records-table thead th span,.records-table thead td span{display:block;padding:7px 7px;color:#69939e;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.records-table thead th a:focus,.records-table thead td a:focus{color:#fff;background-color:rgba(73,180,210,0.7);text-shadow:0 1px 1px #666;outline:0}.records-table tbody td{padding:2px 7px;border-bottom:1px solid #ddd;border-left:1px dotted #bbd3da;white-space:nowrap;cursor:default;overflow:hidden;text-overflow:ellipsis;background-color:#fff;outline:0}.records-table thead tr th:first-child,.records-table thead tr td:first-child,.records-table tbody tr td:first-child{border-left:2px solid transparent;padding-left:4px}.records-table.focus tbody tr.focused>td:first-child{border-left:2px solid #49b3d2}.records-table tr.selected td{color:#fff !important;background-color:#4db0d2 !important}.records-table.focus tr.selected td{background:#019bc6;background:-moz-linear-gradient(top,#019bc6 0,#017cb4 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#019bc6),color-stop(100%,#017cb4));background:-o-linear-gradient(top,#019bc6 0,#017cb4 100%);background:-ms-linear-gradient(top,#019bc6 0,#017cb4 100%);background:linear-gradient(to bottom,#019bc6 0,#017cb4 100%)}.records-table tr.selected td a,.records-table tr.selected td span{color:#fff !important}.records-table tr.deleted td,.records-table tr.deleted td a{color:#ccc !important}#aboutframe{width:97%;height:100%;border:0;padding:0}body.iframe{background:#fff;margin:38px 0 10px 0}body.iframe.error{background:#ededed}body.iframe.floatingbuttons{margin-bottom:40px}body.iframe.fullheight{margin:0}.contentbox .boxtitle,body.iframe .boxtitle{color:#777;background:#eee;background:-moz-linear-gradient(top,#eee 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(100%,#dfdfdf));background:-o-linear-gradient(top,#eee 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#eee 0,#dfdfdf 100%);background:linear-gradient(to bottom,#eee 0,#dfdfdf 100%);border-bottom:1px solid #ccc}body.iframe .boxtitle{position:fixed;top:0;left:0;width:100%;z-index:100}body.iframe .footerleft.floating,#composeview-bottom .formbuttons.floating{position:fixed;left:0;bottom:0;width:100%;z-index:110;background:#fff;padding-top:8px;padding-bottom:12px}body.iframe .footerleft.floating:before,#composeview-bottom .formbuttons.floating:before{content:" ";position:absolute;top:-6px;left:0;width:100%;height:6px;background:url(images/overflowshadow.png?v=71ba.250) top center no-repeat}.boxcontent{padding:10px}.contentbox .scroller{position:absolute;top:34px;left:0;right:0;bottom:0;overflow:auto}.iframebox{position:absolute;top:0;left:0;right:0;bottom:0}.footerleft{padding:0 12px 4px 12px}.propform fieldset{margin-bottom:20px;border:0;padding:0}.propform fieldset legend{display:block;font-size:14px;font-weight:bold;padding-bottom:10px;margin-bottom:0}.propform fieldset fieldset legend{color:#666;font-size:12px}.propform div.prop{margin-bottom:.5em}.propform div.prop.block label{display:block;margin-bottom:.3em}.propform div.prop.block input,.propform div.prop.block textarea{width:95%}.propform a.disabled{color:#999;text-decoration:none;cursor:default}fieldset.floating{float:left;margin-right:10px;margin-bottom:10px}table.propform{width:100%;border-spacing:0;border-collapse:collapse}ul.proplist li,table.propform td{width:80%;padding:4px 10px;background:#eee;border-bottom:2px solid #fff}table.propform td.title{width:20%;color:#333;padding-right:20px;white-space:nowrap}table.propform .mceLayout td{padding:0;border-bottom:0}ul.proplist{list-style:none;margin:0;padding:0}ul.proplist li{width:auto}#pluginbody{position:absolute;top:0;left:0;right:0;bottom:0}#login-form{position:relative;width:580px;margin:20ex auto 2ex auto}#login-form .box-inner{width:430px;background:url(images/linen_login.jpg?v=0484.10363) top left no-repeat #5c5c5c;margin:0 50px;padding:10px 24px 24px 24px;border:1px solid #333;border-radius:5px;box-shadow:inset 0 0 1px #ccc;-webkit-box-shadow:inset 0 0 1px #ccc}#login-form .box-bottom{background:url(images/login_shadow.png?v=1169.789) top center no-repeat;margin-top:-3px;padding-top:10px}#login-form .noscriptwarning{margin:0 auto;width:430px;color:#cf2734;font-size:110%;font-weight:bold}#login-form td.input{width:80%;padding:8px}#login-form input[type="text"],#login-form input[type="password"]{width:100%;border-color:#666}#login-form input.button{color:#444;text-shadow:0 1px 1px #fff;border-color:#f9f9f9;background:#f9f9f9;background:-moz-linear-gradient(top,#f9f9f9 0,#e2e2e2 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f9f9f9),color-stop(100%,#e2e2e2));background:-o-linear-gradient(top,#f9f9f9 0,#e2e2e2 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#e2e2e2 100%);background:linear-gradient(to bottom,#f9f9f9 0,#e2e2e2 100%);box-shadow:inset 0 1px 0 0 #fff;-webkit-box-shadow:inset 0 1px 0 0 #fff}#login-form input.button:hover,#login-form input.button:focus{box-shadow:0 0 5px 2px rgba(71,135,177,0.9),inset 0 1px 0 0 #fff;-webkit-box-shadow:0 0 5px 2px rgba(71,135,177,0.9),inset 0 1px 0 0 #fff}#login-form input.button:active{color:#333;background:-moz-linear-gradient(top,#dcdcdc 0,#f9f9f9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dcdcdc),color-stop(100%,#f9f9f9));background:-o-linear-gradient(top,#dcdcdc 0,#f9f9f9 100%);background:-ms-linear-gradient(top,#dcdcdc 0,#f9f9f9 100%);background:linear-gradient(to bottom,#dcdcdc 0,#f9f9f9 100%)}#login-form form table{width:98%}#login-form td.title{width:20%;white-space:nowrap;color:#cecece;text-shadow:0 1px 1px black;text-align:right;padding-right:1em}#login-form p.formbuttons{margin-top:2em;text-align:center}#login-form #logo{margin-bottom:20px;border:0}#login-form #message{min-height:40px;padding:5px 25px;text-align:center;font-size:1.1em}#login-form #message div{display:inline-block;padding-right:0;font-size:12px}#bottomline{font-size:90%;text-align:center;margin-top:2em}.searchbox{position:relative}#quicksearchbar{position:absolute;right:2px;top:2px;width:240px}.searchbox input,#quicksearchbar input{width:176px;margin:0;padding:3px 30px 3px 34px;height:18px;background:#f1f1f1;border-color:#ababab;font-weight:bold;font-size:11px}.searchbox .searchicon,.searchbox #searchmenulink,#quicksearchbar #searchmenulink{position:absolute;top:5px;left:6px}.searchbox #searchreset,.searchbox .iconbutton.reset,#quicksearchbar #searchreset{position:absolute;top:4px;right:1px}.listsearchbox{padding:4px;background:#c7e3ef;display:none}.listsearchbox input{width:100%;height:26px;-moz-box-sizing:border-box;box-sizing:border-box}.toolbar .spacer{display:inline-block;width:24px;height:40px;padding:0}.toolbar a.button{text-align:center;font-size:10px;color:#555;min-width:50px;max-width:70px;height:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:28px 2px 0 2px;text-shadow:0 1px 1px #eee;box-shadow:none;-webkit-box-shadow:none;background:url(images/buttons.png?v=51d4.15699) -100px 0 no-repeat transparent;border:0;border-radius:0}.dropbutton .dropbuttontip:focus,.toolbar a.button:focus{color:#fff;text-shadow:0 1px 1px #666;background-color:rgba(30,150,192,0.5);border-radius:3px}.toolbar a.button.disabled{opacity:.4}.dropbutton{display:inline-block;position:relative}.dropbutton .dropbuttontip{display:block;position:absolute;right:0;top:0;height:41px;width:18px;overflow:hidden;text-indent:-5000px;background:url(images/buttons.png?v=51d4.15699) 0 -1255px no-repeat;cursor:pointer;outline:0}.dropbutton .dropbuttontip:focus,.dropbutton .dropbuttontip:hover{background-position:-26px -1255px}.dropbutton a.button.disabled+.dropbuttontip{opacity:.5}.dropbutton a.button.disabled+.dropbuttontip:hover{background-position:0 -1255px}.dropbutton a.button{margin-left:0;padding-left:0;margin-right:0;padding-right:0}.toolbar a.button.back{background-position:0 -1216px}.toolbar a.button.checkmail{background-position:center -1176px}.toolbar a.button.compose{background-position:center -530px}.toolbar a.button.reply{background-position:center -570px}.toolbar a.button.reply-all{min-width:64px;background-position:0 -610px}.toolbar a.button.forward{min-width:64px;background-position:0 -650px}.toolbar a.button.delete{background-position:center -690px}.toolbar a.button.archive{background-position:center -730px}.toolbar a.button.junk{background-position:center -770px}.toolbar a.button.print{background-position:center -810px}.toolbar a.button.markmessage{background-position:center -1094px}.toolbar a.button.move{background-position:center -1971px}.toolbar a.button.more{background-position:center -850px}.toolbar a.button.attach{background-position:center -890px}.toolbar a.button.spellcheck{min-width:64px;background-position:0 -930px}.toolbar a.button.spellcheck.selected{background-position:0 -1620px;color:#1978a1}.toolbar a.button.insertsig{background-position:center -1135px}.toolbar a.button.search{background-position:center -970px}.toolbar a.button.import{background-position:center -1012px}.toolbar a.button.export{min-width:64px;background-position:0 -1054px}.toolbar a.button.send{background-position:center -1660px}.toolbar a.button.savedraft{background-position:center -1700px}.toolbar a.button.close{background-position:0 -1745px}.toolbar a.button.download{background-position:center -1892px}.toolbar a.button.responses{background-position:center -1932px}a.menuselector{display:inline-block;border:1px solid #ababab;border-radius:4px;background:#f8f8f8;background:-moz-linear-gradient(top,#f8f8f8 0,#ddd 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#ddd));background:-o-linear-gradient(top,#f8f8f8 0,#ddd 100%);background:-ms-linear-gradient(top,#f9f9f9 0,#ddd 100%);background:linear-gradient(to bottom,#f8f8f8 0,#ddd 100%);text-decoration:none;color:#333;cursor:pointer;white-space:nowrap}a.menuselector .handle{display:inline-block;padding:0 32px 0 6px;height:20px;line-height:19px;text-shadow:0 1px 1px #fff;background:url(images/selector.png?v=799c.181) right center no-repeat;border-radius:4px}a.menuselector:active{background:#ddd;background:-moz-linear-gradient(top,#ddd 0,#f8f8f8 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(100%,#f8f8f8));background:-o-linear-gradient(top,#ddd 0,#f8f8f8 100%);background:-ms-linear-gradient(top,#ddd 0,#f8f8f8 100%);background:linear-gradient(to bottom,#ddd 0,#f8f8f8 100%);text-decoration:none}select.decorated{position:relative;z-index:10;opacity:0;height:22px;cursor:pointer;-khtml-appearance:none;-webkit-appearance:none;border:0}html.opera select.decorated{opacity:1}select.decorated option{color:#fff;background:#444;border:0;border-top:1px solid #5a5a5a;border-bottom:1px solid #333;text-shadow:0 1px 1px #333;padding:4px 6px;outline:0;cursor:default}a.menuselector:focus,a.menuselector.focus,a.iconbutton:focus,.pagenav a.button:focus{border-color:#4fadd5;box-shadow:0 0 4px 2px rgba(71,135,177,0.8);-webkit-box-shadow:0 0 4px 2px rgba(71,135,177,0.8);outline:0}#quotadisplay{left:6px;height:18px;font-size:12px;font-weight:bold;text-shadow:0 1px 1px #fff;padding-left:30px;background:url(images/quota.png?v=7ea4.2033) -100px 0 no-repeat}table.quota-info{border-spacing:0;border-collapse:collapse;table-layout:fixed;margin:5px}table.quota-info td,table.quota-info th{color:white;border:1px solid lightgrey;padding:2px 3px;text-align:center;min-width:80px}table.quota-info td.name{text-align:left}table.quota-info td.root{font-style:italic}.popupmenu,#rcmKSearchpane{display:none;position:absolute;top:32px;left:90px;width:auto;max-height:70%;overflow:-moz-scrollbars-vertical;overflow-y:auto;background:#444;border:1px solid #999;z-index:240;border-radius:4px;box-shadow:0 2px 6px 0 #333;-webkit-box-shadow:0 2px 6px 0 #333}.popupmenu.dropdown{border-radius:0 0 4px 4px;border-top:0}ul.toolbarmenu,ul.toolbarmenu ul,#rcmKSearchpane ul{margin:0;padding:0;list-style:none}.googie_list td,ul.toolbarmenu li,#rcmKSearchpane ul li{color:#fff;white-space:nowrap;min-width:130px;margin:0;border-top:1px solid #5a5a5a;border-bottom:1px solid #333}.googie_list tr:first-child td,ul.toolbarmenu>li:first-child,select.decorated option:first-child{border-top:0}.googie_list tr:last-child td,ul.toolbarmenu>li:last-child,select.decorated option:last-child{border-bottom:0}.googie_list td span,ul.toolbarmenu li a{display:block;color:#666;text-shadow:0 1px 1px #333;text-decoration:none;min-height:14px;padding:6px 16px 6px 10px}.googie_list td span{padding:3px 10px}.googie_list td span,ul.toolbarmenu li a.active{color:#fff;cursor:default}.googie_list td.googie_list_onhover,ul.toolbarmenu li a.active:hover,ul.toolbarmenu li a.active:focus,#rcmKSearchpane ul li.selected,select.decorated option:hover,select.decorated option[selected='selected']{background-color:#00aad6;background:-moz-linear-gradient(top,#00aad6 0,#008fc9 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#00aad6),color-stop(100%,#008fc9));background:-o-linear-gradient(top,#00aad6 0,#008fc9 100%);background:-ms-linear-gradient(top,#00aad6 0,#008fc9 100%);background:linear-gradient(to bottom,#00aad6 0,#008fc9 100%);outline:0}ul.toolbarmenu.iconized li a,ul.toolbarmenu.selectable li a{padding-left:30px}ul.toolbarmenu.selectable li a.selected{background:url(images/messages.png?v=3a4f.1461) 4px -27px no-repeat}ul.toolbarmenu li label{display:block;color:#fff;padding:4px 8px;text-shadow:0 1px 1px #333}ul.toolbarmenu li.separator label{color:#bbb;font-style:italic}ul.toolbarmenu li a.icon{color:#eee;padding:2px 6px}ul.toolbarmenu li span.icon,#rcmKSearchpane ul li i.icon{display:block;min-height:14px;padding:4px 4px 1px 24px;height:17px;background-image:url(images/listicons.png?v=1877.13442);background-position:-100px 0;background-repeat:no-repeat;opacity:.2}ul.toolbarmenu li a.active span.icon{opacity:.99}ul.toolbarmenu li span.read{background-position:0 -1220px}ul.toolbarmenu li span.unread{background-position:0 -1196px}ul.toolbarmenu li span.flagged{background-position:0 -1244px}ul.toolbarmenu li span.unflagged{background-position:0 -1268px}ul.toolbarmenu li span.mail{background-position:0 -1293px}ul.toolbarmenu li span.list{background-position:0 -1317px}ul.toolbarmenu li span.invert{background-position:0 -1340px}ul.toolbarmenu li span.cross{background-position:0 -1365px}ul.toolbarmenu li span.print{background-position:0 -1436px}ul.toolbarmenu li span.download{background-position:0 -1412px}ul.toolbarmenu li span.edit{background-position:0 -1388px}ul.toolbarmenu li span.viewsource{background-position:0 -1460px}ul.toolbarmenu li span.extwin{background-position:0 -1484px}ul.toolbarmenu li span.conversation{background-position:0 -1532px}ul.toolbarmenu li span.move{background-position:0 -2126px}ul.toolbarmenu li span.copy{background-position:0 -2150px}#snippetslist{max-width:200px}#snippetslist li a{overflow:hidden;text-overflow:ellipsis}#rcmKSearchpane{border-radius:0 0 4px 4px;border-top:0}#rcmKSearchpane ul li{text-shadow:0 1px 1px #333;text-decoration:none;min-height:14px;padding:6px 10px 6px 28px;border:0;cursor:default;position:relative}#rcmKSearchpane ul li i.icon{opacity:.99;position:absolute;top:4px;left:5px;width:18px;height:18px;padding:0;background-position:-1px -2223px}#rcmKSearchpane ul li.group i.icon{background-position:-1px -2247px}.popupdialog{display:none;padding:10px}.popupdialog .formbuttons{margin:20px 0 4px 0}.ui-dialog .prompt input{display:block;margin:8px 0}.hint{margin:4px 0;color:#999;text-shadow:0 1px 1px #fff}.splitter{user-select:none;-moz-user-select:none;-khtml-user-select:none;position:absolute;background:url(images/splitter.png?v=2724.136) center no-repeat}.splitter-h{height:10px;width:100%;cursor:n-resize;cursor:row-resize;background-position:center 0}.splitter-v{width:10px;height:100%;cursor:e-resize;cursor:col-resize;background-position:0 center}#rcmdraglayer{min-width:260px;width:auto !important;width:260px;padding:6px 8px;background:#444;border:1px solid #555;border-radius:4px;box-shadow:0 2px 6px 0 #333;-webkit-box-shadow:0 2px 6px 0 #333;z-index:250;color:#ccc;white-space:nowrap;opacity:.92;text-shadow:0 1px 1px #333}#rcmdraglayer:after{content:"";position:absolute;top:6px;left:-6px;border-style:solid;border-width:6px 6px 6px 0;border-color:transparent #444;display:block;width:0;z-index:251}.draglayercopy:before{position:absolute;bottom:-6px;left:-6px;content:" ";width:16px;height:16px;background:url(images/buttons.png?v=51d4.15699) -7px -358px no-repeat;z-index:255}.popup label>input{margin-left:10px}#folder-selector{z-index:1000}#folder-selector li a span{background:url(images/listicons.png?v=1877.13442) 4px -2021px no-repeat;display:block;height:17px;min-height:14px;padding:4px 4px 1px 28px;overflow:hidden;max-width:120px;text-overflow:ellipsis}#folder-selector li a.virtual{opacity:.2}#folder-selector li a.inbox span{background-position:4px -2049px}#folder-selector li a.drafts span{background-position:4px -1388px}#folder-selector li a.sent span{background-position:4px -2074px}#folder-selector li a.trash span{background-position:4px -1508px}#folder-selector li a.junk span{background-position:4px -2100px}.folderlist li.mailbox a{padding-left:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-image:url(images/listicons.png?v=1877.13442);background-repeat:no-repeat;background-position:6px 3px}.folderlist li.mailbox.unread>a{padding-right:36px}.folderlist li.mailbox>a:focus,.folderlist li.mailbox.selected>a{background-position:6px -21px}.folderlist li.mailbox.inbox>a{background-position:6px -189px}.folderlist li.mailbox.inbox>a:focus,.folderlist li.mailbox.inbox.selected>a{background-position:6px -213px}.folderlist li.mailbox.drafts>a{background-position:6px -238px}.folderlist li.mailbox.drafts>a:focus,.folderlist li.mailbox.drafts.selected>a{background-position:6px -262px}.folderlist li.mailbox.sent>a{background-position:6px -286px}.folderlist li.mailbox.sent>a:focus,.folderlist li.mailbox.sent.selected>a{background-position:6px -310px}.folderlist li.mailbox.junk>a{background-position:6px -334px}.folderlist li.mailbox.junk>a:focus,.folderlist li.mailbox.junk.selected>a{background-position:6px -358px}.folderlist li.mailbox.trash>a{background-position:6px -382px}.folderlist li.mailbox.trash>a:focus,.folderlist li.mailbox.trash.selected>a{background-position:6px -406px}.folderlist li.mailbox.trash.empty>a{background-position:6px -1924px}.folderlist li.mailbox.trash.empty>a:focus,.folderlist li.mailbox.trash.empty.selected>a{background-position:6px -1948px}.folderlist li.mailbox.archive>a{background-position:6px -1699px}.folderlist li.mailbox.archive>a:focus,.folderlist li.mailbox.archive.selected>a{background-position:6px -1723px}.folderlist li.mailbox ul li.drafts>a{background-position:23px -238px}.folderlist li.mailbox ul li.drafts>a:focus,.folderlist li.mailbox ul li.drafts.selected>a{background-position:23px -262px}.folderlist li.mailbox ul li.sent>a{background-position:23px -286px}.folderlist li.mailbox ul li.sent>a:focus,.folderlist li.mailbox ul li.sent.selected>a{background-position:23px -310px}.folderlist li.mailbox ul li.junk>a{background-position:23px -334px}.folderlist li.mailbox ul li.junk>a:focus,.folderlist li.mailbox ul li.junk.selected>a{background-position:23px -358px}.folderlist li.mailbox ul li.trash>a{background-position:23px -382px}.folderlist li.mailbox ul li.trash>a:focus,.folderlist li.mailbox ul li.trash.selected>a{background-position:23px -406px}.folderlist li.mailbox ul li.trash.empty>a{background-position:23px -1924px}.folderlist li.mailbox ul li.trash.empty>a:focus,.folderlist li.mailbox ul li.trash.empty.selected>a{background-position:23px -1948px}.folderlist li.mailbox ul li.archive>a{background-position:23px -1699px}.folderlist li.mailbox ul li.archive>a:focus,.folderlist li.mailbox ul li.archive.selected>a{background-position:23px -1723px}.folderlist li.virtual>a{color:#aaa}.folderlist li.mailbox div.treetoggle{top:13px;left:19px}.folderlist li.mailbox ul li:last-child{border-bottom:0}.folderlist li.mailbox ul{list-style:none;margin:0;padding:0;border-top:1px solid #bbd3da}.folderlist li.mailbox ul li a{padding-left:52px;background-position:22px -95px}.folderlist li.mailbox ul li>a:focus,.folderlist li.mailbox ul li.selected>a{background-position:22px -119px}.folderlist li.mailbox ul li div.treetoggle{left:33px;top:14px}.folderlist li.mailbox ul ul li.mailbox a{padding-left:68px;background-position:38px -95px}.folderlist li.mailbox ul ul li>a:focus,.folderlist li.mailbox ul ul li.selected>a{background-position:38px -119px}.folderlist li.mailbox ul ul li div.treetoggle{left:48px}.folderlist li.mailbox ul ul ul li.mailbox a{padding-left:84px;background-position:54px -95px}.folderlist li.mailbox ul ul ul li>a:focus,.folderlist li.mailbox ul ul ul li.selected>a{background-position:54px -119px}.folderlist li.mailbox ul ul ul li div.treetoggle{left:64px}.folderlist li.mailbox ul ul ul ul li.mailbox a{padding-left:100px;background-position:70px -95px}.folderlist li.mailbox ul ul ul ul li>a:focus,.folderlist li.mailbox ul ul ul ul li.selected>a{background-position:70px -119px}.folderlist li.mailbox ul ul ul ul li div.treetoggle{left:80px}.folderlist li.mailbox ul ul ul ul ul li{padding-left:16px}.folderlist li.mailbox ul ul ul ul ul li div.treetoggle{left:96px}.attachmentslist{list-style:none;margin:0;padding:0;overflow:hidden;text-overflow:ellipsis}.attachmentslist li{display:block;position:relative;background:url(images/filetypes.png?v=91f3.4626) 0 0 no-repeat;margin-bottom:1px}.attachmentslist li.txt,.attachmentslist li.text{background-position:0 -416px}.attachmentslist li.pdf{background-position:0 -26px}.attachmentslist li.doc,.attachmentslist li.docx,.attachmentslist li.msword{background-position:0 -52px}.attachmentslist li.odt{background-position:0 -78px}.attachmentslist li.xls,.attachmentslist li.xlsx,.attachmentslist li.msexcel{background-position:0 -104px}.attachmentslist li.ods{background-position:0 -130px}.attachmentslist li.zip,.attachmentslist li.gz{background-position:0 -156px}.attachmentslist li.rar{background-position:0 -182px}.attachmentslist li.image{background-position:0 -208px}.attachmentslist li.jpg,.attachmentslist li.jpeg{background-position:0 -234px}.attachmentslist li.png{background-position:0 -260px}.attachmentslist li.m4p{background-position:0 -286px}.attachmentslist li.mp3,.attachmentslist li.audio{background-position:0 -312px}.attachmentslist li.video{background-position:0 -338px}.attachmentslist li.ics,.attachmentslist li.calendar{background-position:0 -364px}.attachmentslist li.vcard{background-position:0 -390px}.attachmentslist li.sig,.attachmentslist li.pgp-signature,.attachmentslist li.pkcs7-signature{background-position:0 -442px}.attachmentslist li.html{background-position:0 -468px}.attachmentslist li.eml,.attachmentslist li.rfc822{background-position:0 -494px}.attachmentslist li.ppt,.attachmentslist li.pptx,.attachmentslist li.ppsx,.attachmentslist li.vnd.mspowerpoint{background-position:0 -520px}.attachmentslist li.odp,.attachmentslist li.otp{background-position:0 -546px}.attachmentslist li a,#compose-attachments ul li{display:block;color:#333;font-weight:bold;padding:3px 15px 3px 30px;text-shadow:0 1px 1px #fff;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px;outline:0}.attachmentslist li a.drop{background:url(images/buttons.png?v=51d4.15699) no-repeat scroll center -1570px;width:14px;height:20px;cursor:pointer;position:absolute;right:0;top:0;padding:0;overflow:hidden;text-indent:-5000px;outline:0}.attachmentslist li a:focus,.attachmentslist li a.drop:focus{background-color:rgba(30,150,192,0.5);border-radius:2px}#compose-attachments ul li{padding-right:28px}.attachmentslist li a:hover{text-decoration:underline}.attachmentslist li.uploading{background:url(images/ajaxloader.gif?v=c252.1434) 2px 6px no-repeat}.attachmentslist li a.delete,.attachmentslist li a.cancelupload{position:absolute;top:4px;right:0;width:20px;height:18px;padding:0;text-decoration:none;text-indent:-5000px;background-image:url(images/buttons.png?v=51d4.15699);background-position:-6px -338px;background-repeat:no-repeat}.attachmentslist li a.cancelupload{background-position:-6px -378px}.tabbed.ui-tabs{padding:0;border:0 !important;background:0}.ui-dialog .tabbed.ui-tabs{margin:-12px -8px 0 -8px}.boxcontent.tabbed.ui-tabs{padding:10px}.ui-tabs .tabsbar.ui-tabs-nav{margin-bottom:10px}.ui-dialog-content .ui-tabs .tabsbar.ui-tabs-nav{margin-bottom:0}.tabsbar .tablink:last-child{background:0}.tabsbar .tablink:last-child a{border-right:0}.ui-tabs .ui-tabs-nav li.tablink a{background:#fff}.ui-tabs fieldset.ui-tabs-panel{border:0;padding:0;margin-left:0;background:0}.ui-dialog .propform .ui-tabs-panel{display:block;background:#efefef;padding:.5em 1em}#image-selector-form.droptarget{background:url(images/filedrop.png?v=ba79.421) center bottom no-repeat}.mce-btn-small .mce-ico{display:inline}.mce-btn-small i{line-height:16px !important;vertical-align:text-top !important}_:not(),_:-moz-handler-blocked,.mozilla .mce-btn-small i{line-height:20px !important}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/temp/.gitignore new/roundcubemail-1.1.4/temp/.gitignore
--- old/roundcubemail-1.1.3/temp/.gitignore 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/temp/.gitignore 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-*
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/roundcubemail-1.1.3/temp/.htaccess new/roundcubemail-1.1.4/temp/.htaccess
--- old/roundcubemail-1.1.3/temp/.htaccess 2015-09-13 21:10:04.000000000 +0200
+++ new/roundcubemail-1.1.4/temp/.htaccess 2015-12-23 10:18:12.000000000 +0100
@@ -1,2 +1,7 @@
# deny webserver access to this directory
-Deny from all
+<ifModule mod_authz_core.c>
+ Require all denied
+</ifModule>
+<ifModule !mod_authz_core.c>
+ Deny from all
+</ifModule>
1
0
Hello community,
here is the log from the commit of package libindicator for openSUSE:Factory checked in at 2016-01-01 19:48:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libindicator (Old)
and /work/SRC/openSUSE:Factory/.libindicator.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libindicator"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libindicator/libindicator.changes 2015-10-20 00:08:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libindicator.new/libindicator.changes 2016-01-01 19:51:17.000000000 +0100
@@ -1,0 +2,7 @@
+Sat Dec 26 21:14:56 UTC 2015 - sor.alexei(a)meowr.ru
+
+- Update to 12.10.2+bzr20140922:
+ * Add -lm via LDADD to resolve FTBFS in Ubuntu 16.04.
+- Remove fix-compilation.patch: fixed upstream.
+
+-------------------------------------------------------------------
Old:
----
fix-compilation.patch
libindicator_12.10.2+14.10.20140922.orig.tar.gz
New:
----
libindicator_12.10.2+16.04.20151208.orig.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libindicator.spec ++++++
--- /var/tmp/diff_new_pack.o67b7E/_old 2016-01-01 19:51:18.000000000 +0100
+++ /var/tmp/diff_new_pack.o67b7E/_new 2016-01-01 19:51:18.000000000 +0100
@@ -19,9 +19,9 @@
%define soname libindicator3
%define soname_gtk2 libindicator
%define sover 7
-%define _version 12.10.2+14.10.20140922
+%define _version 12.10.2+16.04.20151208
Name: libindicator
-Version: 12.10.2+bzr20140922
+Version: 12.10.2+bzr20151208
Release: 0
Summary: Panel indicator applet libraries
License: GPL-3.0
@@ -30,8 +30,6 @@
Source: http://archive.ubuntu.com/ubuntu/pool/main/libi/%{name}/%{name}_%{_version}…
# PATCH-FIX-OPENSUSE dont-build-debug-tools.patch hrvoje.senjan(a)gmail.com -- Do not build debug tools that are used only for tests & developing indicators, which pulls libido.
Patch0: dont-build-debug-tools.patch
-# PATCH-FIX-OPENSUSE fix-compilation.patch sor.alexei(a)meowr.ru -- Fix "cannot find -lglib-2.0-lm" compilation error.
-Patch1: fix-compilation.patch
BuildRequires: gnome-common
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(gio-unix-2.0)
@@ -80,7 +78,6 @@
%prep
%setup -q -n %{name}-%{_version}
%patch0 -p1
-%patch1 -p1
%build
++++++ libindicator_12.10.2+14.10.20140922.orig.tar.gz -> libindicator_12.10.2+16.04.20151208.orig.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libindicator-12.10.2+14.10.20140922/configure.ac new/libindicator-12.10.2+16.04.20151208/configure.ac
--- old/libindicator-12.10.2+14.10.20140922/configure.ac 2014-09-22 15:40:07.000000000 +0200
+++ new/libindicator-12.10.2+16.04.20151208/configure.ac 2015-12-08 12:30:03.000000000 +0100
@@ -68,7 +68,7 @@
AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3])
LT_LIB_M
-LIBINDICATOR_LIBS+="$LIBM"
+AC_SUBST(LIBM)
##############################
# Custom Junk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libindicator-12.10.2+14.10.20140922/libindicator/Makefile.am new/libindicator-12.10.2+16.04.20151208/libindicator/Makefile.am
--- old/libindicator-12.10.2+14.10.20140922/libindicator/Makefile.am 2014-09-22 15:40:07.000000000 +0200
+++ new/libindicator-12.10.2+16.04.20151208/libindicator/Makefile.am 2015-12-08 12:30:03.000000000 +0100
@@ -68,7 +68,8 @@
-Wall -Werror -Wno-error=deprecated-declarations
libindicator_la_LIBADD = \
- $(LIBINDICATOR_LIBS)
+ $(LIBINDICATOR_LIBS) \
+ $(LIBM)
libindicator_la_LDFLAGS = \
$(COVERAGE_LDFLAGS) \
1
0
Hello community,
here is the log from the commit of package libosmocore for openSUSE:Factory checked in at 2016-01-01 19:48:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libosmocore (Old)
and /work/SRC/openSUSE:Factory/.libosmocore.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libosmocore"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libosmocore/libosmocore.changes 2015-09-24 06:14:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libosmocore.new/libosmocore.changes 2016-01-01 19:51:16.000000000 +0100
@@ -1,0 +2,16 @@
+Wed Dec 23 17:19:46 UTC 2015 - jengelh(a)inai.de
+
+- Update to new upstream release 0.9.0
+* ipaccess: add OAP proto_ext (in design).
+* stats: Report stat item values
+* stats: Implement timer based reporting
+* stats/vty: Add stats configuration
+* stat/vty: Add vty_out_statistics_full to show all statistics
+* stats: Add vty_out_stat_item_group
+* LaPDm: Refuse SUSPEND/RESUME/RECONNECT in BTS mode
+* ns: Force a defined state when sending NS RESET
+- Drop osmo-symbols.diff (solved better upstream),
+ osmo-talloc.diff, osmo-talloc2.diff, osmo-talloc3.diff (solved
+ upstream)
+
+-------------------------------------------------------------------
Old:
----
libosmocore-0.8.3.tar.xz
osmo-symbols.diff
osmo-talloc.diff
osmo-talloc2.diff
osmo-talloc3.diff
New:
----
libosmocore-0.9.0.45.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libosmocore.spec ++++++
--- /var/tmp/diff_new_pack.5cZB0r/_old 2016-01-01 19:51:17.000000000 +0100
+++ /var/tmp/diff_new_pack.5cZB0r/_new 2016-01-01 19:51:17.000000000 +0100
@@ -17,7 +17,7 @@
Name: libosmocore
-Version: 0.8.3
+Version: 0.9.0.45
Release: 0
Summary: Open Source Mobile Communications Core Library
License: GPL-2.0 and GPL-2.0+ and LGPL-3.0+ and AGPL-3.0+
@@ -25,13 +25,9 @@
Url: http://bb.osmocom.org/trac/wiki/libosmocore
#Git-Clone: git://git.osmocom.org/libosmocore
-#Update osmo-version.diff too!
+#Snapshot: 0.9.0-45-ga2db75f
Source: %name-%version.tar.xz
-Patch1: osmo-talloc.diff
-Patch2: osmo-talloc2.diff
-Patch3: osmo-talloc3.diff
Patch4: osmo-pkgconfig.diff
-Patch5: osmo-symbols.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: autoconf
BuildRequires: automake >= 1.6
@@ -97,14 +93,14 @@
This subpackage contains libraries and header files for developing
applications that want to make use of libosmocodec.
-%package -n libosmocore6
+%package -n libosmocore7
Summary: Osmocom core library
License: GPL-2.0 and GPL-2.0+
Group: System/Libraries
# crc16.c has GPL2-only clauses, the rest (*.c) is GPL-2.0+
# talloc.c (LGPL-3.0+) is not part of libosmocore.so
-%description -n libosmocore6
+%description -n libosmocore7
libosmocore is a library with various utility functions shared
between OpenBSC and OsmocomBB.
@@ -113,7 +109,7 @@
License: GPL-2.0 and GPL-2.0+
Group: Development/Libraries/C and C++
# crc16.h has GPL2-only clauses, the rest (*.h) is GPL-2.0+
-Requires: libosmocore6 = %version
+Requires: libosmocore7 = %version
Requires: libtalloc-devel
%description -n libosmocore-devel
@@ -238,12 +234,12 @@
This subpackage contains libraries and header files for developing
applications that want to make use of libosmosim.
-%package -n libosmovty2
+%package -n libosmovty3
Summary: Osmocom VTY interface library
License: GPL-2.0+
Group: System/Libraries
-%description -n libosmovty2
+%description -n libosmovty3
libosmocore is a library with various utility functions that were
originally developed as part of the OpenBSC project, but which are of
a more generic nature and thus useful to (at least) other programs
@@ -255,7 +251,7 @@
License: GPL-2.0+
Group: Development/Libraries/C and C++
Requires: libosmocore-devel = %version
-Requires: libosmovty2 = %version
+Requires: libosmovty3 = %version
%description -n libosmovty-devel
libosmocore is a library with various utility functions that were
@@ -269,7 +265,7 @@
%prep
%setup -qn %name
-%patch -P 1 -P 2 -P 3 -P 4 -P 5 -p1
+%patch -P 4 -p1
%build
echo "%version" >.tarball-version
@@ -287,8 +283,8 @@
%post -n libosmocodec0 -p /sbin/ldconfig
%postun -n libosmocodec0 -p /sbin/ldconfig
-%post -n libosmocore6 -p /sbin/ldconfig
-%postun -n libosmocore6 -p /sbin/ldconfig
+%post -n libosmocore7 -p /sbin/ldconfig
+%postun -n libosmocore7 -p /sbin/ldconfig
%post -n libosmoctrl0 -p /sbin/ldconfig
%postun -n libosmoctrl0 -p /sbin/ldconfig
%post -n libosmogb4 -p /sbin/ldconfig
@@ -297,8 +293,8 @@
%postun -n libosmogsm5 -p /sbin/ldconfig
%post -n libosmosim0 -p /sbin/ldconfig
%postun -n libosmosim0 -p /sbin/ldconfig
-%post -n libosmovty2 -p /sbin/ldconfig
-%postun -n libosmovty2 -p /sbin/ldconfig
+%post -n libosmovty3 -p /sbin/ldconfig
+%postun -n libosmovty3 -p /sbin/ldconfig
%files tools
%defattr(-,root,root)
@@ -315,9 +311,9 @@
%_libdir/libosmocodec.so
%_libdir/pkgconfig/libosmocodec.pc
-%files -n libosmocore6
+%files -n libosmocore7
%defattr(-,root,root)
-%_libdir/libosmocore.so.6*
+%_libdir/libosmocore.so.7*
%files -n libosmocore-devel
%defattr(-,root,root)
@@ -371,9 +367,9 @@
%_libdir/libosmosim.so
%_libdir/pkgconfig/libosmosim.pc
-%files -n libosmovty2
+%files -n libosmovty3
%defattr(-,root,root)
-%_libdir/libosmovty.so.2*
+%_libdir/libosmovty.so.3*
%files -n libosmovty-devel
%defattr(-,root,root)
++++++ libosmocore-0.8.3.tar.xz -> libosmocore-0.9.0.45.tar.xz ++++++
++++ 6753 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package libosmo-abis for openSUSE:Factory checked in at 2016-01-01 19:48:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libosmo-abis (Old)
and /work/SRC/openSUSE:Factory/.libosmo-abis.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libosmo-abis"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libosmo-abis/libosmo-abis.changes 2015-04-07 09:29:29.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libosmo-abis.new/libosmo-abis.changes 2016-01-01 19:51:15.000000000 +0100
@@ -1,0 +2,8 @@
+Wed Dec 23 17:34:54 UTC 2015 - jengelh(a)inai.de
+
+- Update to new upstream release 0.3.2.3
+* ortp: Guard the jitter stats with a version check
+* ortp: Export statistics for the bts or similar
+* export lapd_tei_alloc for libosmo-netif
+
+-------------------------------------------------------------------
Old:
----
libosmo-abis-0.3.1.tar.xz
New:
----
libosmo-abis-0.3.2.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libosmo-abis.spec ++++++
--- /var/tmp/diff_new_pack.3QKQsa/_old 2016-01-01 19:51:16.000000000 +0100
+++ /var/tmp/diff_new_pack.3QKQsa/_new 2016-01-01 19:51:16.000000000 +0100
@@ -17,15 +17,15 @@
Name: libosmo-abis
-Version: 0.3.1
+Version: 0.3.2.3
Release: 0
Summary: Osmocom library for A-bis interface between BTS and BSC
License: AGPL-3.0+ and GPL-2.0+
-Group: Development/Libraries/C and C++
+Group: Productivity/Telephony/Utilities
Url: http://openbsc.osmocom.org/trac/wiki/libosmo-abis
#Git-Clone: git://git.osmocom.org/libosmo-abis
-#Snapshot: 0.3.1
+#Snapshot: 0.3.2-1-g86fc3c8
Source: %name-%version.tar.xz
Patch1: osmo-talloc.diff
Patch2: 0001-build-resolve-compiler-warnings.patch
@@ -46,12 +46,12 @@
BSC. This interface allows control of the radio equipment and radio
frequency allocation in the BTS.
-%package -n libosmoabis4
+%package -n libosmoabis5
Summary: Osmocom A-bis interface core library
License: AGPL-3.0+
Group: System/Libraries
-%description -n libosmoabis4
+%description -n libosmoabis5
In the GSM system architecture, A-bis is a Base Station
System-internal interface linking the Base Transceiver Stations (BTS)
and Base Station Controller (BSC). This interface allows control of
@@ -61,7 +61,7 @@
Summary: Development files for the Osmocom A-bis core library
License: AGPL-3.0+
Group: Development/Libraries/C and C++
-Requires: libosmoabis4 = %version
+Requires: libosmoabis5 = %version
Requires: libosmocore-devel >= 0.3.0
Requires: libosmogsm-devel >= 0.3.10
@@ -73,12 +73,12 @@
This subpackage contains libraries and header files for developing
applications that want to make use of libosmoabis.
-%package -n libosmotrau0
+%package -n libosmotrau1
Summary: Osmocom TRAU (E1/RTP) library
License: GPL-2.0+
Group: System/Libraries
-%description -n libosmotrau0
+%description -n libosmotrau1
The Transcoder Rate Adaptor Unit enables the use of lower rates (32,
16 or 8 kbps) over the A-bis interface instead of the 64 kbps ISDN
rate for which the Mobile Switching Center (MSC) is designed.
@@ -87,7 +87,7 @@
Summary: Development files for the Osmocom TRAU (E1/RTP) library
License: GPL-2.0+
Group: Development/Libraries/C and C++
-Requires: libosmotrau0 = %version
+Requires: libosmotrau1 = %version
%description -n libosmotrau-devel
The Transcoder Rate Adaptor Unit enables the use of lower bitrates
@@ -115,14 +115,14 @@
%check
make %{?_smp_mflags} check
-%post -n libosmoabis4 -p /sbin/ldconfig
-%postun -n libosmoabis4 -p /sbin/ldconfig
-%post -n libosmotrau0 -p /sbin/ldconfig
-%postun -n libosmotrau0 -p /sbin/ldconfig
+%post -n libosmoabis5 -p /sbin/ldconfig
+%postun -n libosmoabis5 -p /sbin/ldconfig
+%post -n libosmotrau1 -p /sbin/ldconfig
+%postun -n libosmotrau1 -p /sbin/ldconfig
-%files -n libosmoabis4
+%files -n libosmoabis5
%defattr(-,root,root)
-%_libdir/libosmoabis.so.4*
+%_libdir/libosmoabis.so.5*
%files -n libosmoabis-devel
%defattr(-,root,root)
@@ -132,9 +132,9 @@
%_libdir/libosmoabis.so
%_libdir/pkgconfig/libosmoabis.pc
-%files -n libosmotrau0
+%files -n libosmotrau1
%defattr(-,root,root)
-%_libdir/libosmotrau.so.0*
+%_libdir/libosmotrau.so.1*
%files -n libosmotrau-devel
%defattr(-,root,root)
++++++ 0001-build-resolve-compiler-warnings.patch ++++++
--- /var/tmp/diff_new_pack.3QKQsa/_old 2016-01-01 19:51:16.000000000 +0100
+++ /var/tmp/diff_new_pack.3QKQsa/_new 2016-01-01 19:51:16.000000000 +0100
@@ -1,4 +1,4 @@
-From 025e2dd7129483300efe8dd02f8e1198c92aaad5 Mon Sep 17 00:00:00 2001
+From 34ce619dc89fa82f55cc2ebba85e3435d04d2531 Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jengelh(a)inai.de>
Date: Thu, 2 Apr 2015 14:25:43 +0200
Subject: [PATCH] build: resolve compiler warnings
@@ -23,7 +23,7 @@
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
-index fedc977..55fce87 100644
+index 65ec269..f605af9 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -326,16 +326,16 @@ struct osmo_rtp_socket *osmo_rtp_socket_create(void *talloc_ctx, unsigned int fl
@@ -48,5 +48,5 @@
/* initialize according to the RFC */
rtp_session_set_seq_number(rs->sess, random());
--
-2.1.4
+2.4.3
++++++ libosmo-abis-0.3.1.tar.xz -> libosmo-abis-0.3.2.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/configure.ac new/libosmo-abis/configure.ac
--- old/libosmo-abis/configure.ac 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/configure.ac 2015-12-23 18:32:12.000000000 +0100
@@ -2,7 +2,7 @@
m4_esyscmd([./git-version-gen .tarball-version]),
[openbsc(a)lists.osmocom.org]
-AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip 1.6])
+AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip 1.6 subdir-objects])
AC_CONFIG_TESTDIR(tests)
dnl kernel style compile messages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/changelog new/libosmo-abis/debian/changelog
--- old/libosmo-abis/debian/changelog 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/changelog 2015-12-23 18:32:12.000000000 +0100
@@ -1,4 +1,10 @@
-libosmo-abis (0.3.1) UNRELEASED; urgency=medium
+libosmo-abis (0.3.2) UNRELEASED; urgency=medium
+
+ * Bump so version to re-link libosmovty
+
+ -- Holger Hans Peter Freyther <holger(a)moiji-mobile.com> Tue, 03 Nov 2015 09:42:01 +0100
+
+libosmo-abis (0.3.1) unstable; urgency=medium
* New upstream release of libosmo-abis
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/compat new/libosmo-abis/debian/compat
--- old/libosmo-abis/debian/compat 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/compat 2015-12-23 18:32:12.000000000 +0100
@@ -1 +1 @@
-7
+9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/control new/libosmo-abis/debian/control
--- old/libosmo-abis/debian/control 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/control 2015-12-23 18:32:12.000000000 +0100
@@ -2,8 +2,8 @@
Section: libs
Priority: optional
Maintainer: Harald Welte <laforge(a)gnumonks.org>
-Build-Depends: debhelper (>= 7.0.50~), autotools-dev, autoconf, automake, libtool, dh-autoreconf, libdpkg-perl, git, libosmocore-dev (>= 0.6.4), pkg-config, libortp-dev
-Standards-Version: 3.9.0
+Build-Depends: debhelper (>= 9), autotools-dev, autoconf, automake, libtool, dh-autoreconf, libdpkg-perl, git, libosmocore-dev (>= 0.6.4), pkg-config, libortp-dev
+Standards-Version: 3.9.6
Homepage: http://openbsc.osmocom.org/trac/wiki/libosmo-abis
Vcs-Git: git://git.osmocom.org/libosmo-abis.git
Vcs-Browser: http://git.osmocom.org/gitweb?p=libosmo-abis.git;a=summary
@@ -11,32 +11,37 @@
Package: libosmo-abis
Section: oldlibs
Architecture: any
-Depends: libosmoabis4, libosmotrau0, ${misc:Depends}
+Depends: libosmoabis5 (= ${binary:Version}), libosmotrau1 (= ${binary:Version}), ${misc:Depends}
+Multi-Arch: same
Description: Legacy package for libosmo-abis
libosmo-abis is an empty package helping in the transition to one
package per DSO.
-Package: libosmoabis4
+Package: libosmoabis5
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
Description: GSM A-bis handling
-Package: libosmotrau0
+Package: libosmotrau1
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
Description: GSM trau handling
Package: libosmo-abis-dev
Section: libdevel
Architecture: any
-Depends: ${misc:Depends}, libosmotrau0, libosmoabis4
+Depends: ${misc:Depends}, libosmotrau1 (= ${binary:Version}), libosmoabis5 (= ${binary:Version})
+Multi-Arch: same
Description: Development headers for A-bis interface.
Package: libosmo-abis-dbg
Section: debug
Architecture: any
Priority: extra
-Depends: libosmoabis4 (= ${binary:Version}), libosmotrau0 (= ${binary:Version}), ${misc:Depends}
+Depends: libosmoabis5 (= ${binary:Version}), libosmotrau1 (= ${binary:Version}), ${misc:Depends}
+Multi-Arch: same
Description: Debug symbols for A-bis interface.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/libosmo-abis-dev.install new/libosmo-abis/debian/libosmo-abis-dev.install
--- old/libosmo-abis/debian/libosmo-abis-dev.install 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/libosmo-abis-dev.install 2015-12-23 18:32:12.000000000 +0100
@@ -1,5 +1,5 @@
usr/include/*
-usr/lib/lib*.a
-usr/lib/lib*.so
-usr/lib/lib*.la
-usr/lib/pkgconfig/*
+usr/lib/*/lib*.a
+usr/lib/*/lib*.so
+usr/lib/*/lib*.la
+usr/lib/*/pkgconfig/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/libosmoabis4.install new/libosmo-abis/debian/libosmoabis4.install
--- old/libosmo-abis/debian/libosmoabis4.install 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/libosmoabis4.install 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-usr/lib/libosmoabis.so.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/libosmoabis5.install new/libosmo-abis/debian/libosmoabis5.install
--- old/libosmo-abis/debian/libosmoabis5.install 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmo-abis/debian/libosmoabis5.install 2015-12-23 18:32:12.000000000 +0100
@@ -0,0 +1 @@
+usr/lib/*/libosmoabis.so.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/libosmotrau0.install new/libosmo-abis/debian/libosmotrau0.install
--- old/libosmo-abis/debian/libosmotrau0.install 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/libosmotrau0.install 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-usr/lib/libosmotrau.so.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/libosmotrau1.install new/libosmo-abis/debian/libosmotrau1.install
--- old/libosmo-abis/debian/libosmotrau1.install 1970-01-01 01:00:00.000000000 +0100
+++ new/libosmo-abis/debian/libosmotrau1.install 2015-12-23 18:32:12.000000000 +0100
@@ -0,0 +1 @@
+usr/lib/*/libosmotrau.so.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/debian/rules new/libosmo-abis/debian/rules
--- old/libosmo-abis/debian/rules 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/debian/rules 2015-12-23 18:32:12.000000000 +0100
@@ -4,11 +4,11 @@
DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1)
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g')
-export DH_VERBOSE=1
+#export DH_VERBOSE=1
export DEB_BUILD_HARDENING=1
%:
- dh --with autoreconf $@ --fail-missing
+ dh $@ --with autoreconf --fail-missing
override_dh_strip:
dh_strip --dbg-package=libosmo-abis-dbg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/include/osmocom/abis/lapd.h new/libosmo-abis/include/osmocom/abis/lapd.h
--- old/libosmo-abis/include/osmocom/abis/lapd.h 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/include/osmocom/abis/lapd.h 2015-12-23 18:41:55.000000000 +0100
@@ -50,6 +50,8 @@
__LAPD_ERR_MAX
};
+struct lapd_tei *lapd_tei_alloc(struct lapd_instance *li, uint8_t tei);
+
int lapd_receive(struct lapd_instance *li, struct msgb *msg, int *error);
void lapd_transmit(struct lapd_instance *li, uint8_t tei, uint8_t sapi,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/include/osmocom/trau/osmo_ortp.h new/libosmo-abis/include/osmocom/trau/osmo_ortp.h
--- old/libosmo-abis/include/osmocom/trau/osmo_ortp.h 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/include/osmocom/trau/osmo_ortp.h 2015-12-23 18:32:12.000000000 +0100
@@ -79,4 +79,10 @@
int subsys, int level,
const char *pfx);
+void osmo_rtp_socket_stats(struct osmo_rtp_socket *rs,
+ uint32_t *sent_packets, uint32_t *sent_octets,
+ uint32_t *recv_packets, uint32_t *recv_octets,
+ uint32_t *recv_lost, uint32_t *last_jitter);
+
+
#endif /* _OSMO_ORTP_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/src/Makefile.am new/libosmo-abis/src/Makefile.am
--- old/libosmo-abis/src/Makefile.am 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/src/Makefile.am 2015-12-23 18:32:12.000000000 +0100
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read Chapter 6 "Library interface versions" of the libtool documentation before making any modification
-ABIS_LIBVERSION=4:0:0
-TRAU_LIBVERSION=0:0:0
+ABIS_LIBVERSION=5:0:0
+TRAU_LIBVERSION=1:0:0
AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_builddir)
AM_CFLAGS= -Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(COVERAGE_CFLAGS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/src/subchan_demux.c new/libosmo-abis/src/subchan_demux.c
--- old/libosmo-abis/src/subchan_demux.c 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/src/subchan_demux.c 2015-12-23 18:32:12.000000000 +0100
@@ -44,7 +44,6 @@
}
#define SYNC_HDR_BITS 16
-static const uint8_t nullbytes[SYNC_HDR_BITS];
/* check if we have just completed the 16 bit zero + 1 bit one sync
* header, in accordance with GSM TS 08.60 Chapter 4.8.1 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libosmo-abis/src/trau/osmo_ortp.c new/libosmo-abis/src/trau/osmo_ortp.c
--- old/libosmo-abis/src/trau/osmo_ortp.c 2015-03-01 02:14:11.000000000 +0100
+++ new/libosmo-abis/src/trau/osmo_ortp.c 2015-12-23 18:32:32.000000000 +0100
@@ -546,3 +546,32 @@
stats->packet_recv, stats->hw_recv, stats->outoftime,
stats->cum_packet_loss, stats->discarded);
}
+
+void osmo_rtp_socket_stats(struct osmo_rtp_socket *rs,
+ uint32_t *sent_packets, uint32_t *sent_octets,
+ uint32_t *recv_packets, uint32_t *recv_octets,
+ uint32_t *recv_lost, uint32_t *last_jitter)
+{
+ const rtp_stats_t *stats;
+
+ *sent_packets = *sent_octets = *recv_packets = *recv_octets = 0;
+ *recv_lost = *last_jitter = 0;
+
+ stats = rtp_session_get_stats(rs->sess);
+ if (stats) {
+ /* truncate from 64bit to 32bit here */
+ *sent_packets = stats->packet_sent;
+ *sent_octets = stats->sent;
+ *recv_packets = stats->packet_recv;
+ *recv_octets = stats->recv;
+ *recv_lost = stats->cum_packet_loss;
+ }
+
+#if HAVE_ORTP_021
+ const jitter_stats_t *jitter;
+
+ jitter = rtp_session_get_jitter_stats(rs->sess);
+ if (jitter)
+ *last_jitter = jitter->jitter;
+#endif
+}
1
0
Hello community,
here is the log from the commit of package libinfinity for openSUSE:Factory checked in at 2016-01-01 19:48:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libinfinity (Old)
and /work/SRC/openSUSE:Factory/.libinfinity.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libinfinity"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libinfinity/libinfinity.changes 2015-05-15 10:06:09.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libinfinity.new/libinfinity.changes 2016-01-01 19:51:13.000000000 +0100
@@ -1,0 +2,7 @@
+Wed Dec 30 15:49:54 UTC 2015 - netzheimer(a)yahoo.de
+
+- Update to version 0.6.7:
+ + Fix crash when library is linked against glib 2.46 or newer.
+ + Fixes potential crashes in some other uncommon situations.
+
+-------------------------------------------------------------------
Old:
----
libinfinity-0.6.6.tar.gz
New:
----
libinfinity-0.6.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libinfinity.spec ++++++
--- /var/tmp/diff_new_pack.uuaz6e/_old 2016-01-01 19:51:14.000000000 +0100
+++ /var/tmp/diff_new_pack.uuaz6e/_new 2016-01-01 19:51:14.000000000 +0100
@@ -20,7 +20,7 @@
Summary: Implementation of the Infinote collaborative editing protocol
License: LGPL-2.1+
Group: Development/Libraries/GNOME
-Version: 0.6.6
+Version: 0.6.7
Release: 0
%define _version 0.6
Url: http://gobby.0x539.de/
++++++ libinfinity-0.6.6.tar.gz -> libinfinity-0.6.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/ChangeLog new/libinfinity-0.6.7/ChangeLog
--- old/libinfinity-0.6.6/ChangeLog 2015-05-13 02:57:57.000000000 +0200
+++ new/libinfinity-0.6.7/ChangeLog 2015-10-14 01:34:53.000000000 +0200
@@ -1,6 +1,115 @@
+commit a7bdd262474898d180285129f5aed3e87b04461a
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Tue Oct 13 19:34:35 2015 -0400
+
+ Release libinfinity 0.6.7
+
+ NEWS | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit d447fc406c0ceb2766f69ffec28f017baa7ed7a9
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Mon Oct 12 19:51:50 2015 -0400
+
+ InfTextChunk: fix segment lookup for offset=0 (#10)
+
+ This used to work with glib 2.42, but it seems that the semantics of
+ g_sequence_search() have changed with respect to what item is returned
+ when the comparison function returns 0. The behavior in that case is not
+ documented. Fix this by passing a different comparison function that
+ never returns 0, so that there is no ambiguity in which segment is
+ returned.
+
+ libinftext/inf-text-chunk.c | 29 ++++++++++++++++++++++++++++-
+ 1 file changed, 28 insertions(+), 1 deletion(-)
+
+commit 3fb2be4fb355ed44541d6da486dc73c5dd739ca3
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Mon Oct 12 19:51:40 2015 -0400
+
+ Fix integrity check in inf_text_chunk_get_byte_index_utf8()
+
+ libinftext/inf-text-chunk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4fc1227317eea35b87e10686daf467642c9abe1e
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Tue Jun 9 21:20:23 2015 -0400
+
+ Fix uninitialized variable when suggesting a SASL mechanism
+
+ libinfinity/common/inf-xmpp-connection.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 28dd0736c7618861dd9a23e8793e4db865ce6a5e
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Sun Jun 7 21:27:23 2015 -0400
+
+ InfXmppConnection: Fix strncmp invocation when suggesting SASL mechanism
+
+ libinfinity/common/inf-xmpp-connection.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4dfaf22925dbe12008627d0a604b179fd6e4b7b4
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Wed May 27 22:21:22 2015 -0400
+
+ Fix g_free / g_slice_free mismatch
+
+ libinfinity/server/infd-directory.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+commit d17398a0f850a79ffbe78c10bbe8ebfd0cd5e63c
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Wed May 27 21:12:28 2015 -0400
+
+ InfdDirectory: Fix error reply to client when session proxy cannot
+ be created
+
+ libinfinity/server/infd-directory.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 822b227c662e5fcaab3c1bdfdf224eebaefe7728
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Sat May 23 14:39:59 2015 -0400
+
+ Fix session becoming inconsistent with active local users during
+ subscription
+
+ When the server sends the vector time of local users during subscription,
+ it now sends the last send vector instead of the real value of the
+ user time,
+ so that subsequent state vector diffs are consistent for the newly joined
+ client.
+
+ Conflicts:
+ libinfinity/adopted/inf-adopted-session.c
+
+ libinfinity/adopted/inf-adopted-session.c | 34 ++++++++++++++++++++++++++++-
+ 1 file changed, 33 insertions(+), 1 deletion(-)
+
+commit cf4588011a5023af36d6393f1f724a11742b84f1
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Fri May 22 19:22:26 2015 -0400
+
+ Fix a possible crash when removing a browser entry
+
+ libinfgtk/inf-gtk-browser-store.c | 5 +++++
+ libinfgtk/inf-gtk-browser-view.c | 11 +++++++++++
+ 2 files changed, 16 insertions(+)
+
+commit 4522baf6a975f38e6874c90695b00af0d2854dfc
+Author: Armin Burgmeier <armin(a)arbur.net>
+Date: Tue May 12 20:58:49 2015 -0400
+
+ Post-release bump to 0.6.7
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
commit a5bc24e87714d3c3fa75711c5d06b9b8e4c81d53
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue May 12 20:12:52 2015 -0400
+Date: Tue May 12 20:12:52 2015 -0400
Release libinfinity 0.6.6
@@ -9,7 +118,7 @@
commit 3862714b942fe626308f06e01730df7b48921faf
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue May 12 20:55:41 2015 -0400
+Date: Tue May 12 20:55:41 2015 -0400
Fix make distcheck for recent automake versions
@@ -22,7 +131,7 @@
commit 06fa9455c687a67e4fc2c2f201817c64c73a3fcf
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Mon May 11 22:59:34 2015 -0400
+Date: Mon May 11 22:59:34 2015 -0400
Fix expired certificate validation (gobby #61)
@@ -31,7 +140,7 @@
commit 244c7e8d69b98330ac7a285922c6fcb0a167ae20
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue May 5 20:45:45 2015 -0400
+Date: Tue May 5 20:45:45 2015 -0400
Update caret position when only updating fixline state
@@ -45,7 +154,7 @@
commit fb0c8532694476f3f624f66eb12becf851147e27
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Mon May 4 20:31:12 2015 -0400
+Date: Mon May 4 20:31:12 2015 -0400
fixline buffer: Fix crash when iterating backwards through empty
base buffer
@@ -55,7 +164,7 @@
commit da06a82642c1d2d0d5a44f1ea3f62ad0b2b22c9a
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Sun May 3 17:07:46 2015 -0400
+Date: Sun May 3 17:07:46 2015 -0400
Fix insert/erase notifications in InfTextFixlineBuffer
@@ -69,7 +178,7 @@
commit 9b009160dd658fe9272d69025a8225b02eafb8de
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Thu Apr 30 21:37:23 2015 -0400
+Date: Thu Apr 30 21:37:23 2015 -0400
Fix create_end_iter() implementation in InfTextFixlineBuffer
@@ -78,7 +187,7 @@
commit 8990cf98ab43f3aca6a7bf12e9608b0e2e9b5c70
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Fri Apr 3 13:04:24 2015 -0400
+Date: Fri Apr 3 13:04:24 2015 -0400
Fix a crash when the server explicitly changes client account to default
@@ -87,7 +196,7 @@
commit 0ce00121225662125b2ae4e48ff5d9f712e86a70
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Sat Jan 17 20:33:25 2015 -0500
+Date: Sat Jan 17 20:33:25 2015 -0500
Post-release bump to 0.6.6
@@ -96,7 +205,7 @@
commit 1a0ff8091afdfe831d317d10c377a8a025ea259d
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Sat Jan 17 20:19:38 2015 -0500
+Date: Sat Jan 17 20:19:38 2015 -0500
Release libinfinity 0.6.5
@@ -105,7 +214,7 @@
commit 7b4efd3ec7fcf7ca44550d7b29e8448cd8fb5f44
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Wed Jan 14 15:28:16 2015 -0500
+Date: Wed Jan 14 15:28:16 2015 -0500
Check whether we need -lresolv for res_query() (gobby #23)
@@ -117,7 +226,7 @@
commit 66432aa0b9b48906db8c258cc70dec4c012787d5
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue Jan 6 16:48:10 2015 +0100
+Date: Tue Jan 6 16:48:10 2015 +0100
Fix a crash when sending unsubscribe message causes connection failure
@@ -126,7 +235,7 @@
commit 70913b5b64a85b9d5e0870b73cafff0f9c0aed55
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue Jan 6 14:13:38 2015 +0100
+Date: Tue Jan 6 14:13:38 2015 +0100
InfdDirectory: Fail add-subdirectory request if name already exists
@@ -135,7 +244,7 @@
commit 4fd9cadf82d2ee24d9c966ad30c64db3aa83696f
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue Jan 6 13:30:37 2015 +0100
+Date: Tue Jan 6 13:30:37 2015 +0100
Fix assertion failure when directory without storage is disposed
@@ -144,7 +253,7 @@
commit 0ea3d867cdedad32483fe7507a41680ab7e704ef
Author: Armin Burgmeier <armin(a)arbur.net>
-Date: Tue Oct 28 13:39:53 2014 -0400
+Date: Tue Oct 28 13:39:53 2014 -0400
Fix a memory leak in the plugin manager
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/NEWS new/libinfinity-0.6.7/NEWS
--- old/libinfinity-0.6.6/NEWS 2015-05-13 02:57:32.000000000 +0200
+++ new/libinfinity-0.6.7/NEWS 2015-10-14 01:34:32.000000000 +0200
@@ -1,3 +1,11 @@
+libinfinity 0.6.7:
+ * Fix a possible crash when an entry is removed from the document
+ browser.
+ * Fix a possible crash in infinoted when access control lists are
+ enabled.
+ * Fix an assertion failure when operating with text documents and
+ using glib 2.46 or newer.
+
libinfinity 0.6.6:
* Fix certificates being only verified for expiration and other
criteria such as weak algorithms if the CA is not trusted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/configure new/libinfinity-0.6.7/configure
--- old/libinfinity-0.6.6/configure 2015-05-13 02:14:48.000000000 +0200
+++ new/libinfinity-0.6.7/configure 2015-10-14 01:34:48.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libinfinity 0.6.6.
+# Generated by GNU Autoconf 2.69 for libinfinity 0.6.7.
#
# Report bugs to <armin(a)arbur.net>.
#
@@ -590,8 +590,8 @@
# Identity of this package.
PACKAGE_NAME='libinfinity'
PACKAGE_TARNAME='libinfinity'
-PACKAGE_VERSION='0.6.6'
-PACKAGE_STRING='libinfinity 0.6.6'
+PACKAGE_VERSION='0.6.7'
+PACKAGE_STRING='libinfinity 0.6.7'
PACKAGE_BUGREPORT='armin(a)arbur.net'
PACKAGE_URL=''
@@ -1416,7 +1416,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libinfinity 0.6.6 to adapt to many kinds of systems.
+\`configure' configures libinfinity 0.6.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1486,7 +1486,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libinfinity 0.6.6:";;
+ short | recursive ) echo "Configuration of libinfinity 0.6.7:";;
esac
cat <<\_ACEOF
@@ -1641,7 +1641,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libinfinity configure 0.6.6
+libinfinity configure 0.6.7
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2010,7 +2010,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libinfinity $as_me 0.6.6, which was
+It was created by libinfinity $as_me 0.6.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2873,7 +2873,7 @@
# Define the identity of the package.
PACKAGE='libinfinity'
- VERSION='0.6.6'
+ VERSION='0.6.7'
cat >>confdefs.h <<_ACEOF
@@ -3117,7 +3117,7 @@
ac_config_headers="$ac_config_headers config.h libinfinity/inf-config.h"
-LIBINFINITY_VERSION=0.6.6
+LIBINFINITY_VERSION=0.6.7
LIBINFINITY_API_VERSION=0.6
LIBINFINITY_LIBTOOL_VERSION=0:0:0
@@ -16210,7 +16210,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libinfinity $as_me 0.6.6, which was
+This file was extended by libinfinity $as_me 0.6.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16276,7 +16276,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libinfinity config.status 0.6.6
+libinfinity config.status 0.6.7
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/configure.ac new/libinfinity-0.6.7/configure.ac
--- old/libinfinity-0.6.6/configure.ac 2015-05-12 05:05:50.000000000 +0200
+++ new/libinfinity-0.6.7/configure.ac 2015-10-14 01:21:06.000000000 +0200
@@ -1,4 +1,4 @@
-m4_define([libinfinity_version], [0.6.6])
+m4_define([libinfinity_version], [0.6.7])
m4_define([libinfinity_api_version], [0.6])
m4_define([libinfinity_libtool_version], [0:0:0])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/docs/reference/libinfgtk/html/index.html new/libinfinity-0.6.7/docs/reference/libinfgtk/html/index.html
--- old/libinfinity-0.6.6/docs/reference/libinfgtk/html/index.html 2015-05-13 02:57:58.000000000 +0200
+++ new/libinfinity-0.6.7/docs/reference/libinfgtk/html/index.html 2015-10-14 01:35:21.000000000 +0200
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libinfgtk-0.6 Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for libinfgtk 0.6.6.
+ for libinfgtk 0.6.7.
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://infinote.0x539.de/libinfinity/API/libinfgtk/index.html" target="_top">http://infinote.0x539.de/libinfinity/API/libinfgtk/</a>.
</p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/docs/reference/libinfinity/html/index.html new/libinfinity-0.6.7/docs/reference/libinfinity/html/index.html
--- old/libinfinity-0.6.6/docs/reference/libinfinity/html/index.html 2015-05-13 02:57:58.000000000 +0200
+++ new/libinfinity-0.6.7/docs/reference/libinfinity/html/index.html 2015-10-14 01:35:16.000000000 +0200
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libinfinity-0.6 Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for libinfinity 0.6.6.
+ for libinfinity 0.6.7.
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://infinote.0x539.de/libinfinity/API/libinfinity/index.html" target="_top">http://infinote.0x539.de/libinfinity/API/libinfinity/</a>.
</p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/docs/reference/libinfinoted-plugin-manager/html/index.html new/libinfinity-0.6.7/docs/reference/libinfinoted-plugin-manager/html/index.html
--- old/libinfinity-0.6.6/docs/reference/libinfinoted-plugin-manager/html/index.html 2015-05-13 02:57:59.000000000 +0200
+++ new/libinfinity-0.6.7/docs/reference/libinfinoted-plugin-manager/html/index.html 2015-10-14 01:35:25.000000000 +0200
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libinfinoted-plugin-manager-0.6 Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for libinfinoted-plugin-manager 0.6.6.
+ for libinfinoted-plugin-manager 0.6.7.
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://infinote.0x539.de/libinfinity/API/libinftext/index.html" target="_top">http://infinote.0x539.de/libinfinity/API/libinfinoted-plugin-manager/</a>.
</p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/docs/reference/libinftext/html/index.html new/libinfinity-0.6.7/docs/reference/libinftext/html/index.html
--- old/libinfinity-0.6.6/docs/reference/libinftext/html/index.html 2015-05-13 02:57:58.000000000 +0200
+++ new/libinfinity-0.6.7/docs/reference/libinftext/html/index.html 2015-10-14 01:35:19.000000000 +0200
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libinftext-0.6 Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for libinftext 0.6.6.
+ for libinftext 0.6.7.
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://infinote.0x539.de/libinfinity/API/libinftext/index.html" target="_top">http://infinote.0x539.de/libinfinity/API/libinftext/</a>.
</p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/docs/reference/libinftextgtk/html/index.html new/libinfinity-0.6.7/docs/reference/libinftextgtk/html/index.html
--- old/libinfinity-0.6.6/docs/reference/libinftextgtk/html/index.html 2015-05-13 02:57:58.000000000 +0200
+++ new/libinfinity-0.6.7/docs/reference/libinftextgtk/html/index.html 2015-10-14 01:35:23.000000000 +0200
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libinftextgtk-0.6 Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for libinftextgtk 0.6.6.
+ for libinftextgtk 0.6.7.
The latest version of this documentation can be found on-line at
<a class="ulink" href="http://infinote.0x539.de/libinfinity/API/libinftextgtk/index.html" target="_top">http://infinote.0x539.de/libinfinity/API/libinftextgtk/</a>.
</p></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/docs/reference/version.xml new/libinfinity-0.6.7/docs/reference/version.xml
--- old/libinfinity-0.6.6/docs/reference/version.xml 2015-05-13 02:51:15.000000000 +0200
+++ new/libinfinity-0.6.7/docs/reference/version.xml 2015-10-13 02:11:50.000000000 +0200
@@ -1 +1 @@
-0.6.6
\ No newline at end of file
+0.6.7
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/libinfgtk/inf-gtk-browser-store.c new/libinfinity-0.6.7/libinfgtk/inf-gtk-browser-store.c
--- old/libinfinity-0.6.6/libinfgtk/inf-gtk-browser-store.c 2015-02-25 02:50:00.000000000 +0100
+++ new/libinfinity-0.6.7/libinfgtk/inf-gtk-browser-store.c 2015-10-13 01:55:48.000000000 +0200
@@ -520,6 +520,11 @@
/* Note we need to reset the browser before we unlink because
* inf_gtk_browser_store_item_set_browser() requires item still being
* linked for change notifications. */
+ /* TODO: This is a bit cumbersome. A better way might be to be able for
+ * the iter parameter to be NULL to indicate that an entry with
+ * its browser has been deleted. However, this would still need to do
+ * lots of the unregistration that is now happening in
+ * inf_gtk_browser_store_item_set_browser(). */
if(item->browser != NULL)
{
inf_gtk_browser_store_item_set_browser(store, item, path, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/libinfgtk/inf-gtk-browser-view.c new/libinfinity-0.6.7/libinfgtk/inf-gtk-browser-view.c
--- old/libinfinity-0.6.6/libinfgtk/inf-gtk-browser-view.c 2015-02-25 02:50:00.000000000 +0100
+++ new/libinfinity-0.6.7/libinfgtk/inf-gtk-browser-view.c 2015-10-13 01:55:48.000000000 +0200
@@ -2073,6 +2073,12 @@
switch(status)
{
+ case INF_GTK_BROWSER_MODEL_INVALID:
+ /* This can happen when the cell data func is called between the
+ * resetting of an item and its removal from the tree. But in any case
+ * it will be removed soon, so no need to do anything here. */
+ stock_id = NULL;
+ break;
case INF_GTK_BROWSER_MODEL_DISCONNECTED:
case INF_GTK_BROWSER_MODEL_DISCOVERED:
case INF_GTK_BROWSER_MODEL_RESOLVING:
@@ -2326,6 +2332,11 @@
switch(status)
{
+ case INF_GTK_BROWSER_MODEL_INVALID:
+ /* This can happen when the cell data func is called between the
+ * resetting of an item and its removal from the tree. But in any case
+ * it will be removed soon, so no need to do anything here. */
+ break;
case INF_GTK_BROWSER_MODEL_DISCOVERED:
case INF_GTK_BROWSER_MODEL_DISCONNECTED:
g_object_set(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/libinfinity/adopted/inf-adopted-session.c new/libinfinity-0.6.7/libinfinity/adopted/inf-adopted-session.c
--- old/libinfinity-0.6.6/libinfinity/adopted/inf-adopted-session.c 2015-02-25 02:50:00.000000000 +0100
+++ new/libinfinity-0.6.7/libinfinity/adopted/inf-adopted-session.c 2015-10-13 01:55:48.000000000 +0200
@@ -1397,10 +1397,16 @@
guint n_params,
xmlNodePtr xml)
{
+ InfAdoptedSessionPrivate* priv;
const GParameter* time;
InfAdoptedStateVector* vector;
gchar* time_string;
+ const GParameter* id_param;
+ guint id;
+ GSList* item;
+ InfAdoptedSessionLocalUser* local_user;
+
INF_SESSION_CLASS(parent_class)->set_xml_user_props(
session,
params,
@@ -1408,10 +1414,36 @@
xml
);
+ priv = INF_ADOPTED_SESSION_PRIVATE(INF_ADOPTED_SESSION(session));
+
time = inf_session_lookup_user_property(params, n_params, "vector");
if(time != NULL)
{
- vector = (InfAdoptedStateVector*)g_value_get_boxed(&time->value);
+ /* If this is a local user, use last_send_vector instead of the user's
+ * vector, so that subsequent differential updates are consistent. */
+ vector = NULL;
+ id_param = inf_session_lookup_user_property(params, n_params, "id");
+
+ if(id_param != NULL)
+ {
+ id = g_value_get_uint(&id_param->value);
+ for(item = priv->local_users; item != NULL; item = item->next)
+ {
+ local_user = (InfAdoptedSessionLocalUser*)item->data;
+ if(inf_user_get_id(INF_USER(local_user->user)) == id)
+ {
+ vector = local_user->last_send_vector;
+ break;
+ }
+ }
+ }
+
+ if(vector == NULL)
+ {
+ /* remote user, or a user join request */
+ vector = (InfAdoptedStateVector*)g_value_get_boxed(&time->value);
+ }
+
time_string = inf_adopted_state_vector_to_string(vector);
inf_xml_util_set_attribute(xml, "time", time_string);
g_free(time_string);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/libinfinity/common/inf-xmpp-connection.c new/libinfinity-0.6.7/libinfinity/common/inf-xmpp-connection.c
--- old/libinfinity-0.6.6/libinfinity/common/inf-xmpp-connection.c 2015-04-03 17:31:30.000000000 +0200
+++ new/libinfinity-0.6.7/libinfinity/common/inf-xmpp-connection.c 2015-10-14 01:21:06.000000000 +0200
@@ -2203,6 +2203,7 @@
gboolean has_mechanism;
priv = INF_XMPP_CONNECTION_PRIVATE(xmpp);
+ suggestion = NULL;
if(priv->sasl_own_context != NULL)
{
@@ -2219,7 +2220,7 @@
}
if(strncmp(iter, "ANONYMOUS",
- MAX((size_t) (end - iter), sizeof("ANONYMOUS") - 1) == 0))
+ MAX((size_t) (end - iter), sizeof("ANONYMOUS") - 1)) == 0)
{
suggestion = "ANONYMOUS";
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/libinfinity/server/infd-directory.c new/libinfinity-0.6.7/libinfinity/server/infd-directory.c
--- old/libinfinity-0.6.6/libinfinity/server/infd-directory.c 2015-04-03 19:37:42.000000000 +0200
+++ new/libinfinity-0.6.7/libinfinity/server/infd-directory.c 2015-10-13 01:55:48.000000000 +0200
@@ -2701,6 +2701,7 @@
InfdDirectoryPrivate* priv;
InfdDirectoryTransientAccount* transient;
InfAclAccount* result;
+ InfAclAccount* result_copy;
guint i;
priv = INFD_DIRECTORY_PRIVATE(directory);
@@ -2735,8 +2736,21 @@
return NULL;
}
- if(transient_index != NULL) *transient_index = priv->n_transient_accounts;
- return result;
+ if(transient_index != NULL)
+ *transient_index = priv->n_transient_accounts;
+
+ /* Note that the return value that we got from
+ * infd_account_storage_lookup_accounts() is actually an array, and
+ * therefore needs to be freed with inf_acl_account_array_free(). However,
+ * we only return a single account that we want to be freed with
+ * inf_acl_account_free(). Therefore, we are making a copy here -- note
+ * that the two free functions are in fact different if GSlice is enabled,
+ * since an array of InfAclAccounts in allocated with g_malloc, while a
+ * single InfAclAccount is allocated with GSlice. */
+ result_copy = inf_acl_account_copy(result);
+ inf_acl_account_array_free(result, 1);
+
+ return result_copy;
}
static InfAclAccountId
@@ -5979,9 +5993,9 @@
/* Only if we have already a proxy we could not have a request here */
g_assert(request != NULL);
inf_request_fail(INF_REQUEST(request), local_error);
- g_error_free(local_error);
g_object_unref(request);
g_free(seq);
+ g_propagate_error(error, local_error);
return FALSE;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/libinftext/inf-text-chunk.c new/libinfinity-0.6.7/libinftext/inf-text-chunk.c
--- old/libinfinity-0.6.6/libinftext/inf-text-chunk.c 2015-02-25 02:50:00.000000000 +0100
+++ new/libinfinity-0.6.7/libinftext/inf-text-chunk.c 2015-10-14 01:21:06.000000000 +0200
@@ -90,7 +90,7 @@
guint offset)
{
#ifdef CHUNK_CHECK_INTEGRITY
- g_assert(offset <= g_utf8_strlen(self, bytes));
+ g_assert(offset <= g_utf8_strlen(text, bytes));
#endif
return g_utf8_offset_to_pointer(text, offset) - text;
@@ -181,6 +181,33 @@
return 1;
}
+/* This is a special comparison function which is only used
+ * in inf_text_chunk_get_segment. It makes sure that when two segments
+ * have the same offset, the second one gets sorted behind. This ensures
+ * that the first segment in the sequence is never returned, since it
+ * always has offset 0, which is a precondition for the algorithm
+ * in inf_text_chunk_get_segment. See also libinfinity github issue #10. */
+static int
+inf_text_chunk_segment_cmp_for_get_segment(gconstpointer first,
+ gconstpointer second,
+ gpointer userdata)
+{
+ const InfTextChunkSegment* first_segment;
+ const InfTextChunkSegment* second_segment;
+
+ first_segment = (const InfTextChunkSegment*)first;
+ second_segment = (const InfTextChunkSegment*)second;
+
+ g_return_val_if_fail(second != NULL && first != NULL, 0);
+
+ if (first_segment->offset < second_segment->offset)
+ return -1;
+ else if (first_segment->offset == second_segment->offset)
+ return -1;
+ else
+ return 1;
+}
+
static guint
inf_text_chunk_next_offset(InfTextChunk* self,
GSequenceIter* iter)
@@ -247,7 +274,7 @@
iter = g_sequence_search(
self->segments,
&key,
- inf_text_chunk_segment_cmp,
+ inf_text_chunk_segment_cmp_for_get_segment,
NULL
);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libinfinity-0.6.6/po/libinfinity-0.6.pot new/libinfinity-0.6.7/po/libinfinity-0.6.pot
--- old/libinfinity-0.6.6/po/libinfinity-0.6.pot 2015-05-13 02:57:28.000000000 +0200
+++ new/libinfinity-0.6.7/po/libinfinity-0.6.pot 2015-10-14 01:35:25.000000000 +0200
@@ -9,7 +9,7 @@
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2014-08-27 01:11+0200\n"
+"POT-Creation-Date: 2015-10-13 19:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -180,87 +180,87 @@
msgid "Need a pam service to authenticate users."
msgstr ""
-#: ../infinoted/infinoted-options.c:238
+#: ../infinoted/infinoted-options.c:241
msgid "WARNING: Requiring password through unencrypted connection."
msgstr ""
-#: ../infinoted/infinoted-options.c:249
+#: ../infinoted/infinoted-options.c:252
msgid ""
"Creating a new private key also requires creating a new certificate signed "
"with it."
msgstr ""
-#: ../infinoted/infinoted-options.c:263
+#: ../infinoted/infinoted-options.c:266
msgid ""
"No private key file given. If you don't have a suitable key file, either "
"create one using the --create-key command line argument, or disable TLS by "
"setting the security policy to \"no-tls\"."
msgstr ""
-#: ../infinoted/infinoted-options.c:278
+#: ../infinoted/infinoted-options.c:281
msgid ""
"No certificate file given. If you don't have a suitable certificate file, "
"either create one using the --create-certificate command line agument, or "
"disable TLS via by setting the security policy to \"no-tls\"."
msgstr ""
-#: ../infinoted/infinoted-options.c:322
+#: ../infinoted/infinoted-options.c:325
#, c-format
msgid "Error reading configuration file \"%s\": "
msgstr ""
-#: ../infinoted/infinoted-options.c:380 ../infinoted/infinoted-options.c:424
-#: ../infinoted/infinoted-options.c:498
+#: ../infinoted/infinoted-options.c:383 ../infinoted/infinoted-options.c:427
+#: ../infinoted/infinoted-options.c:501
#, c-format
msgid "The option \"%s\" can only be given once"
msgstr ""
-#: ../infinoted/infinoted-options.c:409
+#: ../infinoted/infinoted-options.c:412
#, c-format
msgid "\"%s\" cannot be interpreted as a boolean value"
msgstr ""
-#: ../infinoted/infinoted-options.c:439
+#: ../infinoted/infinoted-options.c:442
#, c-format
msgid "\"%s\" is not a number"
msgstr ""
-#: ../infinoted/infinoted-options.c:451
+#: ../infinoted/infinoted-options.c:454
#, c-format
msgid "Could not read the number \"%s\": %s"
msgstr ""
-#: ../infinoted/infinoted-options.c:464
+#: ../infinoted/infinoted-options.c:467
#, c-format
msgid "Number \"%s\" is too small"
msgstr ""
-#: ../infinoted/infinoted-options.c:476
+#: ../infinoted/infinoted-options.c:479
#, c-format
msgid "Number \"%s\" is too large"
msgstr ""
-#: ../infinoted/infinoted-options.c:686
+#: ../infinoted/infinoted-options.c:689
msgid "Configuration file to load, instead of the default configuration file"
msgstr ""
-#: ../infinoted/infinoted-options.c:688
+#: ../infinoted/infinoted-options.c:691
msgid "CONFIG-FILE"
msgstr ""
-#: ../infinoted/infinoted-options.c:692
+#: ../infinoted/infinoted-options.c:695
msgid ""
"Creates a new random private key. The new key will be stored at the given "
"location for the server's private key."
msgstr ""
-#: ../infinoted/infinoted-options.c:698
+#: ../infinoted/infinoted-options.c:701
msgid ""
"Creates a new self-signed certificate signed with the given private key. The "
"certificate is stored at the given location for the server's certificate."
msgstr ""
-#: ../infinoted/infinoted-options.c:705
+#: ../infinoted/infinoted-options.c:708
msgid ""
"Allows one to override configuration entries for plugins from the command "
"line. The syntax is --plugin-parameter=plugin:key:value, where plugin is the "
@@ -268,35 +268,35 @@
"the parameter which to override and value is the new value of the parameter"
msgstr ""
-#: ../infinoted/infinoted-options.c:710
+#: ../infinoted/infinoted-options.c:713
msgid "PLUGIN:PARAMETER:VALUE"
msgstr ""
-#: ../infinoted/infinoted-options.c:715
+#: ../infinoted/infinoted-options.c:718
msgid "Daemonize the server, i.e. run it in the background"
msgstr ""
-#: ../infinoted/infinoted-options.c:719
+#: ../infinoted/infinoted-options.c:722
msgid "Kill a running daemon and exit"
msgstr ""
-#: ../infinoted/infinoted-options.c:724
+#: ../infinoted/infinoted-options.c:727
msgid "Display version information and exit"
msgstr ""
-#: ../infinoted/infinoted-options.c:783
+#: ../infinoted/infinoted-options.c:786
msgid "Infinoted Options"
msgstr ""
-#: ../infinoted/infinoted-options.c:784
+#: ../infinoted/infinoted-options.c:787
msgid "Main Program Options"
msgstr ""
-#: ../infinoted/infinoted-options.c:793
+#: ../infinoted/infinoted-options.c:796
msgid "infinote dedicated server"
msgstr ""
-#: ../infinoted/infinoted-options.c:828
+#: ../infinoted/infinoted-options.c:831
msgid "Could not kill daemon"
msgstr ""
@@ -358,27 +358,27 @@
msgid "Unloaded plugin \"%s\" from \"%s\""
msgstr ""
-#: ../infinoted/infinoted-run.c:353
+#: ../infinoted/infinoted-run.c:370
#, c-format
msgid "Failed to generate Diffie-Hellman parameters: %s"
msgstr ""
-#: ../infinoted/infinoted-run.c:373
+#: ../infinoted/infinoted-run.c:390
#, c-format
msgid "IPv6 Server running on port %u"
msgstr ""
-#: ../infinoted/infinoted-run.c:396
+#: ../infinoted/infinoted-run.c:413
#, c-format
msgid "IPv4 Server running on port %u"
msgstr ""
-#: ../infinoted/infinoted-run.c:417
+#: ../infinoted/infinoted-run.c:434
#, c-format
msgid "Failed to start server: %s"
msgstr ""
-#: ../infinoted/infinoted-run.c:435
+#: ../infinoted/infinoted-run.c:452
msgid "Infinoted shutting down..."
msgstr ""
@@ -412,27 +412,27 @@
msgid "Generating self-signed certificate..."
msgstr ""
-#: ../infinoted/infinoted-startup.c:318
+#: ../infinoted/infinoted-startup.c:321
#, c-format
msgid "User %s failed to log in from %s: PAM authentication failed"
msgstr ""
-#: ../infinoted/infinoted-startup.c:338
+#: ../infinoted/infinoted-startup.c:341
#, c-format
msgid "User %s failed to log in from %s: PAM user not allowed"
msgstr ""
-#: ../infinoted/infinoted-startup.c:358
+#: ../infinoted/infinoted-startup.c:361
#, c-format
msgid "User %s logged in from %s via PAM"
msgstr ""
-#: ../infinoted/infinoted-startup.c:374
+#: ../infinoted/infinoted-startup.c:392
#, c-format
msgid "User %s logged in from %s via password"
msgstr ""
-#: ../infinoted/infinoted-startup.c:385
+#: ../infinoted/infinoted-startup.c:403
#, c-format
msgid "User %s failed to log in from %s: wrong password"
msgstr ""
@@ -627,11 +627,11 @@
"standard tools that operate on normal UTF-8 encoded text files"
msgstr ""
-#: ../infinoted/plugins/infinoted-plugin-document-stream.c:663
+#: ../infinoted/plugins/infinoted-plugin-document-stream.c:668
msgid "Not a text or chat node"
msgstr ""
-#: ../infinoted/plugins/infinoted-plugin-document-stream.c:1482
+#: ../infinoted/plugins/infinoted-plugin-document-stream.c:1501
msgid "Allows streaming of document changes to external programs"
msgstr ""
@@ -873,27 +873,27 @@
msgid "Create New Account"
msgstr ""
-#: ../libinfgtk/inf-gtk-browser-store.c:676
+#: ../libinfgtk/inf-gtk-browser-store.c:681
msgid "Disconnected"
msgstr ""
-#: ../libinfgtk/inf-gtk-browser-view.c:2216
+#: ../libinfgtk/inf-gtk-browser-view.c:2222
msgid "Exploring..."
msgstr ""
-#: ../libinfgtk/inf-gtk-browser-view.c:2255
+#: ../libinfgtk/inf-gtk-browser-view.c:2261
msgid "Synchronizing..."
msgstr ""
-#: ../libinfgtk/inf-gtk-browser-view.c:2333
+#: ../libinfgtk/inf-gtk-browser-view.c:2344
msgid "Not connected"
msgstr ""
-#: ../libinfgtk/inf-gtk-browser-view.c:2344
+#: ../libinfgtk/inf-gtk-browser-view.c:2355
msgid "Connecting..."
msgstr ""
-#: ../libinfgtk/inf-gtk-browser-view.c:2354
+#: ../libinfgtk/inf-gtk-browser-view.c:2365
msgid "Connected"
msgstr ""
@@ -976,20 +976,20 @@
msgid "Failed to write file with known hosts \"%s\": %s"
msgstr ""
-#: ../libinfgtk/inf-gtk-certificate-manager.c:577
+#: ../libinfgtk/inf-gtk-certificate-manager.c:572
#, c-format
msgid "Failed to add certificate to list of known hosts: %s"
msgstr ""
-#: ../libinfgtk/inf-gtk-certificate-manager.c:847
+#: ../libinfgtk/inf-gtk-certificate-manager.c:845
msgid "_Cancel connection"
msgstr ""
-#: ../libinfgtk/inf-gtk-certificate-manager.c:858
+#: ../libinfgtk/inf-gtk-certificate-manager.c:856
msgid "C_ontinue connection"
msgstr ""
-#: ../libinfgtk/inf-gtk-certificate-manager.c:865
+#: ../libinfgtk/inf-gtk-certificate-manager.c:863
#, c-format
msgid ""
"Do you want to continue the connection to host \"%s\"? If you choose to "
@@ -1175,11 +1175,11 @@
"received request \"%s\""
msgstr ""
-#: ../libinfinity/adopted/inf-adopted-session.c:1462
+#: ../libinfinity/adopted/inf-adopted-session.c:1494
msgid "'time' attribute in user message is missing"
msgstr ""
-#: ../libinfinity/adopted/inf-adopted-session.c:1949
+#: ../libinfinity/adopted/inf-adopted-session.c:1981
msgid "Operation for request missing"
msgstr ""
@@ -1366,44 +1366,44 @@
"available, but it did not do so."
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4433
+#: ../libinfinity/client/infc-browser.c:4434
msgid "No certificate request has been made"
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4461
-#: ../libinfinity/client/infc-browser.c:4492
+#: ../libinfinity/client/infc-browser.c:4462
+#: ../libinfinity/client/infc-browser.c:4493
msgid "No certificate provided"
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4511
+#: ../libinfinity/client/infc-browser.c:4512
msgid "Cannot verify the certificate without server certificate"
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4561
+#: ../libinfinity/client/infc-browser.c:4562
#, c-format
msgid "Server sent an invalid certificate (%s)"
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4669
-#: ../libinfinity/server/infd-directory.c:3265
+#: ../libinfinity/client/infc-browser.c:4670
+#: ../libinfinity/server/infd-directory.c:3280
msgid "The default account cannot be removed"
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4822
+#: ../libinfinity/client/infc-browser.c:4823
#, c-format
msgid ""
"The request contains a sequence number refering to a request of type '%s', "
"but a request of either 'query-acl' or 'set-acl' was expected."
msgstr ""
-#: ../libinfinity/client/infc-browser.c:4997
-#: ../libinfinity/client/infc-session-proxy.c:519
+#: ../libinfinity/client/infc-browser.c:4998
+#: ../libinfinity/client/infc-session-proxy.c:523
#, c-format
msgid "Error comes from unknown error domain '%s' (code %u)"
msgstr ""
-#: ../libinfinity/client/infc-browser.c:5244
-#: ../libinfinity/client/infc-session-proxy.c:985
+#: ../libinfinity/client/infc-browser.c:5245
+#: ../libinfinity/client/infc-session-proxy.c:989
#, c-format
msgid "Server reply could not be processed: %s"
msgstr ""
@@ -1439,11 +1439,11 @@
msgid "The request does not contain a sequence number, but one is required"
msgstr ""
-#: ../libinfinity/client/infc-session-proxy.c:662
+#: ../libinfinity/client/infc-session-proxy.c:666
msgid "Request does not contain required attribute 'id'"
msgstr ""
-#: ../libinfinity/client/infc-session-proxy.c:680
+#: ../libinfinity/client/infc-session-proxy.c:684
#: ../libinfinity/common/inf-session.c:753
#, c-format
msgid "No such user with ID %u"
@@ -1657,7 +1657,7 @@
msgstr ""
#: ../libinfinity/common/inf-error.c:184
-#: ../libinfinity/server/infd-directory.c:5801
+#: ../libinfinity/server/infd-directory.c:5839
msgid "The root node cannot be removed"
msgstr ""
@@ -1674,7 +1674,7 @@
msgstr ""
#: ../libinfinity/common/inf-error.c:192
-#: ../libinfinity/server/infd-directory.c:6068
+#: ../libinfinity/server/infd-directory.c:6106
msgid "The requesting connection is not subscribed to the session"
msgstr ""
@@ -1802,11 +1802,11 @@
msgid "The certificate is invalid"
msgstr ""
-#: ../libinfinity/common/inf-name-resolver.c:205
+#: ../libinfinity/common/inf-name-resolver.c:207
msgid "The reply from the DNS server is incomplete"
msgstr ""
-#: ../libinfinity/common/inf-name-resolver.c:744
+#: ../libinfinity/common/inf-name-resolver.c:746
#, c-format
msgid ""
"Failure during SRV record lookup: %s\n"
@@ -2151,63 +2151,63 @@
msgid "An unknown authentication error has occured"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:1271
+#: ../libinfinity/common/inf-xmpp-connection.c:1272
msgid "The server did not provide a certificate"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2085
+#: ../libinfinity/common/inf-xmpp-connection.c:2086
msgid "Stream is not yet secured with TLS"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2152
+#: ../libinfinity/common/inf-xmpp-connection.c:2153
msgid "Stream is not yet authorized"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2280
+#: ../libinfinity/common/inf-xmpp-connection.c:2282
msgid "The server does not offer a suitable authentication mechanism"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2325
+#: ../libinfinity/common/inf-xmpp-connection.c:2327
msgid "The server does not support transport layer security (TLS)"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2348
+#: ../libinfinity/common/inf-xmpp-connection.c:2350
msgid "The server requires transport layer security (TLS)"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2382
+#: ../libinfinity/common/inf-xmpp-connection.c:2384
msgid "The server does not provide any authentication mechanism"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:2440
+#: ../libinfinity/common/inf-xmpp-connection.c:2442
msgid "The server cannot perform the TLS handshake"
msgstr ""
#. XML Warning from <IP Address>: <Warning Text>
-#: ../libinfinity/common/inf-xmpp-connection.c:2923
+#: ../libinfinity/common/inf-xmpp-connection.c:2925
#, c-format
msgid "XML warning from %s: %s\n"
msgstr ""
#. The server sent something which is not XML
-#: ../libinfinity/common/inf-xmpp-connection.c:2967
+#: ../libinfinity/common/inf-xmpp-connection.c:2969
msgid "Remote site is not an XMPP server"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:4583
+#: ../libinfinity/common/inf-xmpp-connection.c:4587
msgid "The server certificate is not trusted"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:4591
+#: ../libinfinity/common/inf-xmpp-connection.c:4595
#, c-format
msgid "The server certificate is not trusted: %s"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:4603
+#: ../libinfinity/common/inf-xmpp-connection.c:4607
msgid "The client certificate is not trusted"
msgstr ""
-#: ../libinfinity/common/inf-xmpp-connection.c:4611
+#: ../libinfinity/common/inf-xmpp-connection.c:4615
#, c-format
msgid "The client certificate is not trusted: %s"
msgstr ""
@@ -2241,7 +2241,7 @@
msgstr ""
#: ../libinfinity/server/infd-chat-filesystem-format.c:145
-#: ../libinfinity/server/infd-filesystem-storage.c:249
+#: ../libinfinity/server/infd-filesystem-storage.c:259
#: ../libinftext/inf-text-filesystem-format.c:368
#, c-format
msgid "Error parsing XML in file \"%s\": [%d]: %s"
@@ -2294,7 +2294,7 @@
"start the server."
msgstr ""
-#: ../libinfinity/server/infd-directory.c:2055
+#: ../libinfinity/server/infd-directory.c:2056
#, c-format
msgid ""
"Could not write session \"%s\" to storage: %s\n"
@@ -2302,25 +2302,25 @@
"All changes since the document das been saved are lost."
msgstr ""
-#: ../libinfinity/server/infd-directory.c:2857
+#: ../libinfinity/server/infd-directory.c:2872
msgid "Server does not support issuing certificates"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:2971
+#: ../libinfinity/server/infd-directory.c:2986
msgid "The certificate request has no common name set"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:3026
+#: ../libinfinity/server/infd-directory.c:3041
#, c-format
msgid "There is already a transient account with name \"%s\""
msgstr ""
-#: ../libinfinity/server/infd-directory.c:3090
+#: ../libinfinity/server/infd-directory.c:3105
msgid "This server does not support creating accounts"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:3292
-#: ../libinfinity/server/infd-directory.c:11182
+#: ../libinfinity/server/infd-directory.c:3307
+#: ../libinfinity/server/infd-directory.c:11223
#: ../libinfinity/server/infd-filesystem-account-storage.c:1268
#: ../libinfinity/server/infd-filesystem-account-storage.c:1450
#: ../libinfinity/server/infd-filesystem-account-storage.c:1564
@@ -2328,11 +2328,11 @@
msgid "There is no such account with ID \"%s\""
msgstr ""
-#: ../libinfinity/server/infd-directory.c:3349
+#: ../libinfinity/server/infd-directory.c:3364
msgid "This server does not support removing accounts"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:3690
+#: ../libinfinity/server/infd-directory.c:3705
#, c-format
msgid ""
"Session \"%s\" could not be saved: %s\n"
@@ -2340,122 +2340,122 @@
"server is shut down."
msgstr ""
-#: ../libinfinity/server/infd-directory.c:4202
+#: ../libinfinity/server/infd-directory.c:4217
#, c-format
msgid "Name \"%s\" is an invalid name: contains non-printable characters"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:4220
+#: ../libinfinity/server/infd-directory.c:4235
#, c-format
msgid "Name \"%s\" is an invalid name: contains only space characters"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:4233
+#: ../libinfinity/server/infd-directory.c:4248
#, c-format
msgid "Name \"%s\" is an invalid name: contains \"/\""
msgstr ""
-#: ../libinfinity/server/infd-directory.c:4248
+#: ../libinfinity/server/infd-directory.c:4263
#, c-format
msgid "A node with name \"%s\" exists already"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5069
+#: ../libinfinity/server/infd-directory.c:5107
#: ../libinfinity/server/infd-session-proxy.c:418
msgid "Permission denied"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5216
+#: ../libinfinity/server/infd-directory.c:5254
#, c-format
msgid "Failed to look up account: %s. Logging out user..."
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5287
+#: ../libinfinity/server/infd-directory.c:5325
msgid "No subscription request for the server chat"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5306
+#: ../libinfinity/server/infd-directory.c:5344
#, c-format
msgid "No subscription request with ID %u"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5374
+#: ../libinfinity/server/infd-directory.c:5412
#, c-format
msgid "Node with ID \"%u\" is not a subdirectory node"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5386
+#: ../libinfinity/server/infd-directory.c:5424
#, c-format
msgid "Node with ID \"%u\" has unsupported type \"%s\""
msgstr ""
-#: ../libinfinity/server/infd-directory.c:5397
+#: ../libinfinity/server/infd-directory.c:5435
#, c-format
msgid "Node with ID \"%u\" is not a leaf node"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6042
-#: ../libinfinity/server/infd-directory.c:11267
+#: ../libinfinity/server/infd-directory.c:6080
+#: ../libinfinity/server/infd-directory.c:11308
msgid "No background storage available"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6167
+#: ../libinfinity/server/infd-directory.c:6205
msgid "The chat is disabled"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6277
+#: ../libinfinity/server/infd-directory.c:6315
msgid "No certificate request provided"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6809
+#: ../libinfinity/server/infd-directory.c:6847
msgid "The ACL for this node has already been queried"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6897
+#: ../libinfinity/server/infd-directory.c:6935
msgid "The ACL for this node has not been queried yet"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6924
+#: ../libinfinity/server/infd-directory.c:6962
msgid "The set-acl request does not have any ACL provided"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:6941
-#: ../libinfinity/server/infd-directory.c:10322
+#: ../libinfinity/server/infd-directory.c:6979
+#: ../libinfinity/server/infd-directory.c:10363
msgid "This server does not support the requested permissions"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:7209
+#: ../libinfinity/server/infd-directory.c:7247
msgid "The node to be subscribed to has been removed"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:7331
-#: ../libinfinity/server/infd-directory.c:7447
+#: ../libinfinity/server/infd-directory.c:7369
+#: ../libinfinity/server/infd-directory.c:7485
msgid "The parent node of the node to be added has been removed"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:7532
+#: ../libinfinity/server/infd-directory.c:7570
msgid "Client did not acknowledge initial subscription"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:7854
+#: ../libinfinity/server/infd-directory.c:7892
#, c-format
msgid "Failed to explore the root directory of the new storage: %s"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:7945
+#: ../libinfinity/server/infd-directory.c:7983
#, c-format
msgid ""
"Failed to lookup account IDs on account storage change: %s. Demoting clients "
"to default account."
msgstr ""
-#: ../libinfinity/server/infd-directory.c:8025
+#: ../libinfinity/server/infd-directory.c:8063
#, c-format
msgid "Failed to obtain account list from account storage: %s"
msgstr ""
-#: ../libinfinity/server/infd-directory.c:8157
-#: ../libinfinity/server/infd-directory.c:8242
+#: ../libinfinity/server/infd-directory.c:8195
+#: ../libinfinity/server/infd-directory.c:8280
#, c-format
msgid "Failed to look up accounts in new account storage: %s"
msgstr ""
@@ -2528,23 +2528,27 @@
msgid "The certificate with DN=%s is already in use by another account"
msgstr ""
-#: ../libinfinity/server/infd-filesystem-storage.c:79
+#: ../libinfinity/server/infd-filesystem-storage.c:74
+msgid "The path does not start with \"/\""
+msgstr ""
+
+#: ../libinfinity/server/infd-filesystem-storage.c:89
msgid "The path contains invalid components"
msgstr ""
-#: ../libinfinity/server/infd-filesystem-storage.c:109
+#: ../libinfinity/server/infd-filesystem-storage.c:119
#, c-format
msgid "Failed to convert root directory to filename encoding: %s"
msgstr ""
-#: ../libinfinity/server/infd-filesystem-storage.c:120
+#: ../libinfinity/server/infd-filesystem-storage.c:130
#, c-format
msgid ""
"Failed to create root directory: %s\n"
"Subsequent storage operations will most likely fail\n"
msgstr ""
-#: ../libinfinity/server/infd-filesystem-storage.c:264
+#: ../libinfinity/server/infd-filesystem-storage.c:274
#, c-format
msgid "Error processing file \"%s\": Toplevel tag is not \"%s\""
msgstr ""
1
0
Hello community,
here is the log from the commit of package python3-twine for openSUSE:Factory checked in at 2016-01-01 19:48:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-twine (Old)
and /work/SRC/openSUSE:Factory/.python3-twine.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-twine"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-twine/python3-twine.changes 2015-11-05 11:35:42.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-twine.new/python3-twine.changes 2016-01-01 19:51:12.000000000 +0100
@@ -1,0 +2,6 @@
+Tue Dec 29 19:37:02 UTC 2015 - arun(a)gmx.de
+
+- update to version 1.6.5:
+ * Bump requests-toolbelt version to ensure we avoid ConnectionErrors
+
+-------------------------------------------------------------------
Old:
----
twine-1.6.4.tar.gz
New:
----
twine-1.6.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-twine.spec ++++++
--- /var/tmp/diff_new_pack.AQk3fg/_old 2016-01-01 19:51:13.000000000 +0100
+++ /var/tmp/diff_new_pack.AQk3fg/_new 2016-01-01 19:51:13.000000000 +0100
@@ -17,7 +17,7 @@
Name: python3-twine
-Version: 1.6.4
+Version: 1.6.5
Release: 0
Summary: Collection of utilities for interacting with PyPI
License: Apache-2.0
++++++ twine-1.6.4.tar.gz -> twine-1.6.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.6.4/PKG-INFO new/twine-1.6.5/PKG-INFO
--- old/twine-1.6.4/PKG-INFO 2015-10-28 04:10:17.000000000 +0100
+++ new/twine-1.6.5/PKG-INFO 2015-12-17 00:36:32.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: twine
-Version: 1.6.4
+Version: 1.6.5
Summary: Collection of utilities for interacting with PyPI
Home-page: https://github.com/pypa/twine
Author: Donald Stufft and individual contributors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.6.4/docs/changelog.rst new/twine-1.6.5/docs/changelog.rst
--- old/twine-1.6.4/docs/changelog.rst 2015-10-28 04:09:50.000000000 +0100
+++ new/twine-1.6.5/docs/changelog.rst 2015-12-17 00:34:22.000000000 +0100
@@ -4,6 +4,11 @@
Changelog
=========
+* :release:`1.6.5 <2015-12-16>`
+
+ * :bug:`155` Bump requests-toolbelt version to ensure we avoid
+ ConnectionErrors
+
* :release:`1.6.4 <2015-10-27>`
* :bug:`145` Paths with hyphens in them break the Wheel regular expression.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.6.4/setup.py new/twine-1.6.5/setup.py
--- old/twine-1.6.4/setup.py 2015-09-17 03:33:30.000000000 +0200
+++ new/twine-1.6.5/setup.py 2015-12-17 00:32:09.000000000 +0100
@@ -21,7 +21,7 @@
install_requires = [
"pkginfo >= 1.0",
"requests >= 2.3.0",
- "requests-toolbelt >= 0.4.0",
+ "requests-toolbelt >= 0.5.1",
"setuptools >= 0.7.0",
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.6.4/twine/__init__.py new/twine-1.6.5/twine/__init__.py
--- old/twine-1.6.4/twine/__init__.py 2015-10-28 04:09:50.000000000 +0100
+++ new/twine-1.6.5/twine/__init__.py 2015-12-17 00:34:33.000000000 +0100
@@ -23,7 +23,7 @@
__summary__ = "Collection of utilities for interacting with PyPI"
__uri__ = "https://github.com/pypa/twine"
-__version__ = "1.6.4"
+__version__ = "1.6.5"
__author__ = "Donald Stufft and individual contributors"
__email__ = "donald(a)stufft.io"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.6.4/twine.egg-info/PKG-INFO new/twine-1.6.5/twine.egg-info/PKG-INFO
--- old/twine-1.6.4/twine.egg-info/PKG-INFO 2015-10-28 04:10:16.000000000 +0100
+++ new/twine-1.6.5/twine.egg-info/PKG-INFO 2015-12-17 00:36:32.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: twine
-Version: 1.6.4
+Version: 1.6.5
Summary: Collection of utilities for interacting with PyPI
Home-page: https://github.com/pypa/twine
Author: Donald Stufft and individual contributors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/twine-1.6.4/twine.egg-info/requires.txt new/twine-1.6.5/twine.egg-info/requires.txt
--- old/twine-1.6.4/twine.egg-info/requires.txt 2015-10-28 04:10:16.000000000 +0100
+++ new/twine-1.6.5/twine.egg-info/requires.txt 2015-12-17 00:36:32.000000000 +0100
@@ -1,4 +1,4 @@
pkginfo >= 1.0
requests >= 2.3.0
-requests-toolbelt >= 0.4.0
+requests-toolbelt >= 0.5.1
setuptools >= 0.7.0
1
0
Hello community,
here is the log from the commit of package x-tile for openSUSE:Factory checked in at 2016-01-01 19:48:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/x-tile (Old)
and /work/SRC/openSUSE:Factory/.x-tile.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "x-tile"
Changes:
--------
--- /work/SRC/openSUSE:Factory/x-tile/x-tile.changes 2012-09-25 14:17:57.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.x-tile.new/x-tile.changes 2016-01-01 19:51:11.000000000 +0100
@@ -1,0 +2,7 @@
+Wed Dec 30 15:03:11 UTC 2015 - netzheimer(a)yahoo.de
+
+- Update to version 2.5.1:
+ + Support for python 2.7.10.
+ + Bugfix: atom.io crashing x-tile.
+
+-------------------------------------------------------------------
Old:
----
x-tile-2.5.tar.xz
New:
----
x-tile-2.5.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ x-tile.spec ++++++
--- /var/tmp/diff_new_pack.a0pXGO/_old 2016-01-01 19:51:12.000000000 +0100
+++ /var/tmp/diff_new_pack.a0pXGO/_new 2016-01-01 19:51:12.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package x-tile
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 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: x-tile
-Version: 2.5
+Version: 2.5.1
Release: 0
Summary: Panel applet for tiling windows
License: GPL-2.0+
++++++ x-tile-2.5.tar.xz -> x-tile-2.5.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/debian/changelog new/x-tile-2.5.1/debian/changelog
--- old/x-tile-2.5/debian/changelog 2012-09-10 16:23:08.000000000 +0200
+++ new/x-tile-2.5.1/debian/changelog 2015-11-15 21:54:19.000000000 +0100
@@ -1,4 +1,4 @@
-x-tile (2.5-1) stable; urgency=low
+x-tile (2.5.1-1) stable; urgency=low
* Fellow upstream.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/glade/x-tile.glade new/x-tile-2.5.1/glade/x-tile.glade
--- old/x-tile-2.5/glade/x-tile.glade 2012-09-18 12:24:49.000000000 +0200
+++ new/x-tile-2.5.1/glade/x-tile.glade 2015-11-15 21:57:20.000000000 +0100
@@ -14,7 +14,7 @@
<property name="type_hint">dialog</property>
<property name="transient_for">window</property>
<property name="program_name">X Tile</property>
- <property name="copyright" translatable="yes">Copyright © 2009-2012
+ <property name="copyright" translatable="no">Copyright © 2009-2015
Giuseppe Penone <giuspen(a)gmail.com>
Chris Camacho <codifies(a)gmail.com></property>
<property name="comments" translatable="yes">Tile the Windows Upon your X Desktop</property>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/glade/x-tile.glade.h new/x-tile-2.5.1/glade/x-tile.glade.h
--- old/x-tile-2.5/glade/x-tile.glade.h 2012-07-12 12:08:36.000000000 +0200
+++ new/x-tile-2.5.1/glade/x-tile.glade.h 1970-01-01 01:00:00.000000000 +0100
@@ -1,61 +0,0 @@
-char *s = N_("About X Tile");
-char *s = N_("Copyright © 2009-2012\n"
- "Giuseppe Penone <giuspen(a)gmail.com>\n"
- "Chris Camacho <chris_camacho(a)yahoo.com>");
-char *s = N_("Tile the Windows Upon your X Desktop");
-char *s = N_("http://www.giuspen.com/x-tile/");
-char *s = N_("\n"
- "This program is free software; you can redistribute it and/or modify\n"
- "it under the terms of the GNU General Public License as published by\n"
- "the Free Software Foundation; either version 2 of the License, or\n"
- "(at your option) any later version.\n"
- "\n"
- "This program is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
- "GNU General Public License for more details.\n"
- "\n"
- "You should have received a copy of the GNU General Public License\n"
- "along with this program; if not, write to the Free Software\n"
- "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n"
- "MA 02110-1301, USA.");
-char *s = N_("Chinese Simplified (zh_CN) Khiyuan Fan <Fan.Khiyuan(a)gmail.com>\n"
- "Chinese Traditional (zh_TW) Yan-ren Tsai <elleryq(a)gmail.com>\n"
- "Czech (cs) Pavel Fric <fripohled(a)blogspot.com\n"
- "Spanish (es_AR) MeloPixel <melopixel(a)gmail.com>\n"
- "French (fr) Ludovic Troisi <axalis(a)cegetel.net>\n"
- "German (de) Jöran Zeller <joeran(a)zeller.ws>\n"
- "Italian (it) Giuseppe Penone <giuspen(a)gmail.com>\n"
- "Polish (pl) Dominik Wójt <domin144(a)o2.pl>\n"
- "Russian (ru) Andriy Kovtun <kovtunos(a)yandex.ru>");
-char *s = N_("Preferences");
-char *s = N_(" Language ");
-char *s = N_("Do Not List Minimized Windows");
-char *s = N_("Only Current Workspace");
-char *s = N_("Enable System Tray Docking");
-char *s = N_("Start Minimized in the System Tray");
-char *s = N_("Show Toolbar");
-char *s = N_("Override Monitor 1 Tiling Area");
-char *s = N_("X");
-char *s = N_("Y");
-char *s = N_("Position");
-char *s = N_("Width");
-char *s = N_("Height");
-char *s = N_("Size");
-char *s = N_("Override Monitor 2 Tiling Area");
-char *s = N_("Close");
-char *s = N_("Cancel");
-char *s = N_("OK");
-char *s = N_("<b>Custom Tiling Layout</b>");
-char *s = N_("1) Tile Some Windows Manually");
-char *s = N_("2) Select Them in the X Tile Windows List");
-char *s = N_("3) Click the Update Button");
-char *s = N_("Update");
-char *s = N_("Rows to Filter");
-char *s = N_("Add an Application Filter");
-char *s = N_("Remove an Application Filter");
-char *s = N_("Add Row");
-char *s = N_("Rows to be Selected by Default");
-char *s = N_("X Tile");
-char *s = N_("Set Destination Workspace");
-char *s = N_("Exit After Tile");
Files old/x-tile-2.5/linux/x-tile.1.gz and new/x-tile-2.5.1/linux/x-tile.1.gz differ
Files old/x-tile-2.5/locale/cs/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/cs/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/de/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/de/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/es_AR/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/es_AR/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/fr/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/fr/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/it/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/it/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/pl/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/pl/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/ru/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/ru/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/zh_CN/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/zh_CN/LC_MESSAGES/x-tile.mo differ
Files old/x-tile-2.5/locale/zh_TW/LC_MESSAGES/x-tile.mo and new/x-tile-2.5.1/locale/zh_TW/LC_MESSAGES/x-tile.mo differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/modules/cons.py new/x-tile-2.5.1/modules/cons.py
--- old/x-tile-2.5/modules/cons.py 2012-09-18 12:24:49.000000000 +0200
+++ new/x-tile-2.5.1/modules/cons.py 2015-11-15 21:54:35.000000000 +0100
@@ -2,7 +2,7 @@
#
# cons.py
#
-# Copyright 2009-2012
+# Copyright 2009-2015
# Giuseppe Penone <giuspen(a)gmail.com>,
# Chris Camacho (chris_c) <codifies(a)gmail.com>.
#
@@ -28,7 +28,7 @@
APP_NAME = "x-tile"
-VERSION = "2.5"
+VERSION = "2.5.1"
if os.path.isdir("glade"):
GLADE_PATH = os.path.join(os.getcwd(), "glade/")
LOCALE_PATH = "locale/"
Files old/x-tile-2.5/modules/cons.pyc and new/x-tile-2.5.1/modules/cons.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/modules/core.py new/x-tile-2.5.1/modules/core.py
--- old/x-tile-2.5/modules/core.py 2012-09-18 12:30:42.000000000 +0200
+++ new/x-tile-2.5.1/modules/core.py 2015-11-15 22:41:13.000000000 +0100
@@ -2,7 +2,7 @@
#
# core.py
#
-# Copyright 2009-2012
+# Copyright 2009-2015
# Giuseppe Penone <giuspen(a)gmail.com>,
# Chris Camacho (chris_c) <codifies(a)gmail.com>.
#
Files old/x-tile-2.5/modules/core.pyc and new/x-tile-2.5.1/modules/core.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/modules/globs.py new/x-tile-2.5.1/modules/globs.py
--- old/x-tile-2.5/modules/globs.py 2012-09-10 16:23:08.000000000 +0200
+++ new/x-tile-2.5.1/modules/globs.py 2015-11-13 10:10:06.000000000 +0100
@@ -2,7 +2,7 @@
#
# globs.py
#
-# Copyright 2009-2012
+# Copyright 2009-2015
# Giuseppe Penone <giuspen(a)gmail.com>,
# Chris Camacho (chris_c) <codifies(a)gmail.com>.
#
@@ -100,7 +100,8 @@
support.glob = self
# x11 reference to xlib library display and root window globals
self.x11 = ctypes.CDLL(ctypes.util.find_library("X11"))
- self.disp = self.x11.XOpenDisplay(0)
+ self.x11.XOpenDisplay.restype = ctypes.c_void_p
+ self.disp = ctypes.c_void_p(self.x11.XOpenDisplay(0))
self.root = self.x11.XDefaultRootWindow(self.disp)
# property atoms for moveresize
# assigned once here so they are not recreated
Files old/x-tile-2.5/modules/globs.pyc and new/x-tile-2.5.1/modules/globs.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/modules/support.py new/x-tile-2.5.1/modules/support.py
--- old/x-tile-2.5/modules/support.py 2012-09-18 12:24:49.000000000 +0200
+++ new/x-tile-2.5.1/modules/support.py 2015-11-15 22:47:38.000000000 +0100
@@ -2,7 +2,7 @@
#
# support.py
#
-# Copyright 2009-2012
+# Copyright 2009-2015
# Giuseppe Penone <giuspen(a)gmail.com>,
# Chris Camacho (chris_c) <codifies(a)gmail.com>.
#
@@ -134,9 +134,13 @@
""" this returns a gtk.gdk.pixbuf of the windows icon
converts argb into rgba in the process """
get_property("_NET_WM_ICON", win, glob.XA_CARDINAL)
- if not glob.ret_pointer : return None
+ if not glob.ret_pointer:
+ return None
w = glob.ret_pointer[0]
h = glob.ret_pointer[1]
+ #print w,h
+ if w > 48 or h > 48:
+ return None
s = w*h
buff = ""
i = 0
@@ -310,6 +314,7 @@
"""Get Screen Index"""
xwa = globs.XWindowAttributes()
glob.x11.XGetWindowAttributes(glob.disp, glob.root,ctypes.byref(xwa))
+ glob.x11.XScreenNumberOfScreen.argtypes = [ctypes.c_void_p]
screen_index = glob.x11.XScreenNumberOfScreen(xwa.screen)
return screen_index
Files old/x-tile-2.5/modules/support.pyc and new/x-tile-2.5.1/modules/support.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/modules/tilings.py new/x-tile-2.5.1/modules/tilings.py
--- old/x-tile-2.5/modules/tilings.py 2012-07-16 13:47:43.000000000 +0200
+++ new/x-tile-2.5.1/modules/tilings.py 2015-07-15 01:10:34.000000000 +0200
@@ -2,7 +2,7 @@
#
# core.py
#
-# Copyright 2009-2012
+# Copyright 2009-2015
# Giuseppe Penone <giuspen(a)gmail.com>,
# Chris Camacho (chris_c) <codifies(a)gmail.com>.
#
Files old/x-tile-2.5/modules/tilings.pyc and new/x-tile-2.5.1/modules/tilings.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/x-tile-2.5/x-tile new/x-tile-2.5.1/x-tile
--- old/x-tile-2.5/x-tile 2012-09-18 12:24:49.000000000 +0200
+++ new/x-tile-2.5.1/x-tile 2015-11-15 22:27:21.000000000 +0100
@@ -1,10 +1,10 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
# -*- coding: UTF-8 -*-
"""X Tile main module"""
# x-tile
#
-# Copyright 2009-2011
+# Copyright 2009-2015
# Giuseppe Penone <giuspen(a)gmail.com>,
# Chris Camacho (chris_c) <codifies(a)gmail.com>.
#
1
0
Hello community,
here is the log from the commit of package golang-org-x-crypto for openSUSE:Factory checked in at 2016-01-01 19:48:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/golang-org-x-crypto (Old)
and /work/SRC/openSUSE:Factory/.golang-org-x-crypto.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "golang-org-x-crypto"
Changes:
--------
--- /work/SRC/openSUSE:Factory/golang-org-x-crypto/golang-org-x-crypto.changes 2015-09-08 17:46:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.golang-org-x-crypto.new/golang-org-x-crypto.changes 2016-01-01 19:51:10.000000000 +0100
@@ -1,0 +2,16 @@
+Sat Dec 26 11:23:42 UTC 2015 - matwey.kornilov(a)gmail.com
+
+- Update to version 1.5.2+git20151215.f18420e:
+ + x/crypto/pkcs12: deal with short byte array in PBKDF
+ + otr: smpFailureError processing tlvTypeSMP3 prevents sending tlvTypeSMP4
+ + x/crypto/openpgp/packet: fix message for errors resulting from an unknown cipher.
+ + crypto/ssh: fix typo in error string.
+ + x/crypto/otr: clear key slots when handshaking.
+ + x/crypto/otr: make errors fatal.
+ + x/crypto/otr: update libotr test code for version 4.
+ + x/crypto/otr: reformat the libotr test harness with clang-format.
+ + x/crypto/ssh: run go fmt
+ + x/crypto/ssh/agent: Fix keyring removing the wrong key(s)
+- Removed crypto-fix-ssh.patch: has been upstreamed
+
+-------------------------------------------------------------------
Old:
----
crypto-0.0.0+git20150711.f6a608d.tar.xz
crypto-fix-ssh.patch
New:
----
_servicedata
crypto-1.5.2+git20151215.f18420e.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ golang-org-x-crypto.spec ++++++
--- /var/tmp/diff_new_pack.xTRuUn/_old 2016-01-01 19:51:10.000000000 +0100
+++ /var/tmp/diff_new_pack.xTRuUn/_new 2016-01-01 19:51:10.000000000 +0100
@@ -17,14 +17,13 @@
Name: golang-org-x-crypto
-Version: 0.0.0+git20150711.f6a608d
+Version: 1.5.2+git20151215.f18420e
Release: 0
Summary: Go supplementary cryptography libraries
License: BSD-3-Clause
Group: Development/Languages/Other
Url: https://github.com/golang/crypto
Source: crypto-%{version}.tar.xz
-Patch0: crypto-fix-ssh.patch
BuildRequires: golang-packaging
BuildRequires: xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -41,7 +40,6 @@
%prep
%setup -q -n crypto-%{version}
-%patch0 -p1
%build
%goprep golang.org/x/crypto
++++++ _service ++++++
--- /var/tmp/diff_new_pack.xTRuUn/_old 2016-01-01 19:51:11.000000000 +0100
+++ /var/tmp/diff_new_pack.xTRuUn/_new 2016-01-01 19:51:11.000000000 +0100
@@ -1,16 +1,19 @@
<services>
- <service name="tar_scm" mode="localonly">
+ <service mode="disabled" name="tar_scm">
<param name="url">https://github.com/golang/crypto.git</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="versionformat">0.0.0+git%cd.%h</param>
+ <param name="versionformat">1.5.2+git%cd.%h</param>
<param name="revision">master</param>
- </service>
- <service name="recompress" mode="localonly">
+ <param name="changesgenerate">enable</param></service>
+ <service mode="disabled" name="recompress">
<param name="file">crypto-*.tar</param>
<param name="compression">xz</param>
</service>
- <service name="set_version" mode="localonly">
+ <service name="refresh_patches" mode="disabled">
+ <param name="changesgenerate">enable</param>
+ </service>
+ <service mode="disabled" name="set_version">
<param name="basename">crypto</param>
</service>
</services>
++++++ _servicedata ++++++
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/golang/crypto.git</param>
<param name="changesrevision">f18420efc3b4f8e9f3d51f6bd2476e92c46260e9</param></service></servicedata>++++++ crypto-0.0.0+git20150711.f6a608d.tar.xz -> crypto-1.5.2+git20151215.f18420e.tar.xz ++++++
++++ 4899 lines of diff (skipped)
1
0