Projects
Kolab:3.4:Updates
kolab-syncroton
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 68
View file
kolab-syncroton.spec
Changed
@@ -30,7 +30,7 @@ %global _ap_sysconfdir %{_sysconfdir}/%{httpd_name} Name: kolab-syncroton -Version: 2.3.0 +Version: 2.3.1 Release: 1%{?dist} Summary: ActiveSync for Kolab Groupware @@ -209,6 +209,11 @@ %attr(0770,%{httpd_user},%{httpd_group}) %{_var}/log/%{name} %changelog +* Thu Feb 5 2015 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 2.3.1-1 +- Release of version 2.3.1, see; + + https://issues.kolab.org/buglist.cgi?target_milestone=2.3.1&product=Syncroton + * Tue Jan 27 2015 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 2.3.0-1 - Release of version 2.3.0, see;
View file
debian.changelog
Changed
@@ -1,3 +1,11 @@ +kolab-syncroton (2.3.1-0~kolab1) unstable; urgency=low + + * Release of version 2.3.1, see: + + https://issues.kolab.org/buglist.cgi?target_milestone=2.3.1&product=Syncroton + + -- Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Thu, 5 Feb 2015 15:13:40 +0200 + kolab-syncroton (2.3.0-0~kolab1) unstable; urgency=low * Release of version 2.3.0, see:
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/package.xml
Deleted
@@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.0 - http://pear.php.net/dtd/package-2.0.xsd"> - <name>kolab_auth</name> - <uri>http://git.kolab.org/roundcubemail-plugins-kolab/</uri> - <summary>Kolab Authentication</summary> - <description> - Authenticates on LDAP server, finds canonized authentication ID for IMAP - and for new users creates identity based on LDAP information. - Supports impersonate feature (login as another user). To use this feature - imap_auth_type/smtp_auth_type must be set to DIGEST-MD5 or PLAIN. - </description> - <lead> - <name>Aleksander Machniak</name> - <user>machniak</user> - <email>machniak@kolabsys.com</email> - <active>yes</active> - </lead> - <date>2013-10-04</date> - <version> - <release>1.0</release> - <api>1.0</api> - </version> - <stability> - <release>stable</release> - <api>stable</api> - </stability> - <license uri="http://www.gnu.org/licenses/agpl.html">GNU AGPLv3</license> - <notes>-</notes> - <contents> - <dir baseinstalldir="/" name="/"> - <file name="kolab_auth.php" role="php"> - <tasks:replace from="@name@" to="name" type="package-info"/> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="kolab_auth_ldap.php" role="php"> - <tasks:replace from="@name@" to="name" type="package-info"/> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="config.inc.php.dist" role="data"></file> - <file name="LICENSE" role="data"></file> - - <file name="localization/de_CH.inc" role="data"></file> - <file name="localization/de_DE.inc" role="data"></file> - <file name="localization/en_US.inc" role="data"></file> - <file name="localization/pl_PL.inc" role="data"></file> - </dir> - <!-- / --> - </contents> - <dependencies> - <required> - <php> - <min>5.2.1</min> - </php> - <pearinstaller> - <min>1.7.0</min> - </pearinstaller> - </required> - </dependencies> - <phprelease/> -</package>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/package.xml
Deleted
@@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.0 - http://pear.php.net/dtd/package-2.0.xsd"> - <name>kolab_folders</name> - <uri>http://git.kolab.org/roundcubemail-plugins-kolab/</uri> - <summary>Type-aware folder management/listing for Kolab</summary> - <description> - The plugin extends folders handling with features of the Kolab Suite - according to specified format (http://www.kolab.org/doc/kolabformat-2.0-html). - With this plugin enabled it is possible to: - - set/get/change folder's type, - - filter folders list by folder type, - - style folders list rows (in folder manager), - - create default folders with specified type. - </description> - <lead> - <name>Aleksander Machniak</name> - <user>machniak</user> - <email>machniak@kolabsys.com</email> - <active>yes</active> - </lead> - <date>2012-10.25</date> - <version> - <release>2.1</release> - <api>2.0</api> - </version> - <stability> - <release>stable</release> - <api>stable</api> - </stability> - <license uri="http://www.gnu.org/licenses/agpl.html">GNU AGPLv3</license> - <notes>-</notes> - <contents> - <dir baseinstalldir="/" name="/"> - <file name="kolab_folders.php" role="php"> - <tasks:replace from="@name@" to="name" type="package-info"/> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="kolab_folders.js" role="data"> - <tasks:replace from="@name@" to="name" type="package-info"/> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="config.inc.php.dist" role="data"></file> - <file name="localization/en_US.inc" role="data"></file> - <file name="localization/pl_PL.inc" role="data"></file> - <file name="LICENSE" role="data"></file> - </dir> - <!-- / --> - </contents> - <dependencies> - <required> - <php> - <min>5.2.1</min> - </php> - <pearinstaller> - <min>1.7.0</min> - </pearinstaller> - </required> - </dependencies> - <phprelease /> -</package>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/package.xml
Deleted
@@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.0 - http://pear.php.net/dtd/package-2.0.xsd"> - <name>libkolab</name> - <uri>http://git.kolab.org/roundcubemail-plugins-kolab/</uri> - <summary>Kolab core library</summary> - <description>Plugin to setup a basic environment for the interaction with a Kolab server.</description> - <lead> - <name>Thomas Bruederli</name> - <user>bruederli</user> - <email>bruederli@kolabsys.com</email> - <active>yes</active> - </lead> - <developer> - <name>Alensader Machniak</name> - <user>machniak</user> - <email>machniak@kolabsys.com</email> - <active>yes</active> - </developer> - <date>2013-04-19</date> - <version> - <release>0.9</release> - <api>0.9</api> - </version> - <stability> - <release>stable</release> - <api>stable</api> - </stability> - <license uri="http://www.gnu.org/licenses/agpl.html">GNU AGPLv3</license> - <notes>-</notes> - <contents> - <dir baseinstalldir="/" name="/"> - <file name="libkolab.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_configuration.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_contact.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_distributionlist.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_event.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_file.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_journal.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_note.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_task.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_format_xcal.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_storage.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_storage_cache.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_storage_folder.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/kolab_date_recurrence.php" role="php"> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - - <file name="bin/modcache.php" role="php"></file> - - <file name="config.inc.php.dist" role="data"></file> - <file name="LICENSE" role="data"></file> - <file name="README" role="data"></file> - <file name="UPGRADING" role="data"></file> - </dir> - <!-- / --> - </contents> - <dependencies> - <required> - <php> - <min>5.3.1</min> - </php> - <pearinstaller> - <min>1.7.0</min> - </pearinstaller> - </required> - </dependencies> - <phprelease/> -</package>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/package.xml
Deleted
@@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.0 - http://pear.php.net/dtd/package-2.0.xsd"> - <name>managesieve</name> - <channel>pear.roundcube.net</channel> - <summary>Sieve filters manager for Roundcube</summary> - <description> - Adds a possibility to manage Sieve scripts (incoming mail filters). - It's clickable interface which operates on text scripts and communicates - with server using managesieve protocol. Adds Filters tab in Settings. - </description> - <lead> - <name>Aleksander Machniak</name> - <user>alec</user> - <email>alec@alec.pl</email> - <active>yes</active> - </lead> - <date>2014-02-14</date> - <version> - <release>7.2</release> - <api>7.0</api> - </version> - <stability> - <release>stable</release> - <api>stable</api> - </stability> - <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license> - <notes>-</notes> - <contents> - <dir baseinstalldir="/" name="/"> - <file name="managesieve.php" role="php"> - <tasks:replace from="@name@" to="name" type="package-info"/> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="managesieve.js" role="data"> - <tasks:replace from="@name@" to="name" type="package-info"/> - <tasks:replace from="@package_version@" to="version" type="package-info"/> - </file> - <file name="lib/Roundcube/rcube_sieve.php" role="php"></file> - <file name="lib/Roundcube/rcube_sieve_engine.php" role="php"></file> - <file name="lib/Roundcube/rcube_sieve_script.php" role="php"></file> - <file name="lib/Net/Sieve.php" role="php"></file> - <file name="localization/be_BE.inc" role="data"></file> - <file name="localization/bg_BG.inc" role="data"></file> - <file name="localization/bs_BA.inc" role="data"></file> - <file name="localization/ca_ES_BA.inc" role="data"></file> - <file name="localization/cs_CZ.inc" role="data"></file> - <file name="localization/cy_GB.inc" role="data"></file> - <file name="localization/da_DK.inc" role="data"></file> - <file name="localization/de_CH.inc" role="data"></file> - <file name="localization/de_DE.inc" role="data"></file> - <file name="localization/el_GR.inc" role="data"></file> - <file name="localization/en_GB.inc" role="data"></file> - <file name="localization/en_US.inc" role="data"></file> - <file name="localization/eo.inc" role="data"></file> - <file name="localization/es_AR.inc" role="data"></file> - <file name="localization/es_ES.inc" role="data"></file> - <file name="localization/et_EE.inc" role="data"></file> - <file name="localization/fa_IR.inc" role="data"></file> - <file name="localization/fi_FI.inc" role="data"></file> - <file name="localization/fr_FR.inc" role="data"></file> - <file name="localization/gl_ES.inc" role="data"></file> - <file name="localization/he_IL.inc" role="data"></file> - <file name="localization/hr_HR.inc" role="data"></file> - <file name="localization/hu_HU.inc" role="data"></file> - <file name="localization/ia_IA.inc" role="data"></file> - <file name="localization/id_ID.inc" role="data"></file> - <file name="localization/it_IT.inc" role="data"></file> - <file name="localization/ja_JP.inc" role="data"></file> - <file name="localization/lt_LT.inc" role="data"></file> - <file name="localization/lv_LV.inc" role="data"></file> - <file name="localization/ml_ML.inc" role="data"></file> - <file name="localization/mr_IN.inc" role="data"></file> - <file name="localization/nb_NO.inc" role="data"></file> - <file name="localization/nl_NL.inc" role="data"></file> - <file name="localization/pl_PL.inc" role="data"></file> - <file name="localization/pt_BR.inc" role="data"></file> - <file name="localization/pt_PT.inc" role="data"></file> - <file name="localization/ro_RO.inc" role="data"></file> - <file name="localization/ru_RU.inc" role="data"></file> - <file name="localization/si_LK.inc" role="data"></file> - <file name="localization/sk_SK.inc" role="data"></file> - <file name="localization/sl_SI.inc" role="data"></file> - <file name="localization/sv_SE.inc" role="data"></file> - <file name="localization/tr_TR.inc" role="data"></file> - <file name="localization/uk_UA.inc" role="data"></file> - <file name="localization/vi_VN.inc" role="data"></file> - <file name="localization/zh_CN.inc" role="data"></file> - <file name="localization/zh_TW.inc" role="data"></file> - <file name="skins/classic/managesieve.css" role="data"></file> - <file name="skins/classic/managesieve_mail.css" role="data"></file> - <file name="skins/classic/templates/filteredit.html" role="data"></file> - <file name="skins/classic/templates/managesieve.html" role="data"></file> - <file name="skins/classic/templates/setedit.html" role="data"></file> - <file name="skins/classic/images/add.png" role="data"></file> - <file name="skins/classic/images/del.png" role="data"></file> - <file name="skins/classic/images/down_small.gif" role="data"></file> - <file name="skins/classic/images/erase.png" role="data"></file> - <file name="skins/classic/images/filter.png" role="data"></file> - <file name="skins/classic/images/up_small.gif" role="data"></file> - <file name="skins/larry/managesieve.css" role="data"></file> - <file name="skins/larry/managesieve_mail.css" role="data"></file> - <file name="skins/larry/templates/filteredit.html" role="data"></file> - <file name="skins/larry/templates/managesieve.html" role="data"></file> - <file name="skins/larry/templates/setedit.html" role="data"></file> - <file name="skins/larry/images/add.png" role="data"></file> - <file name="skins/larry/images/del.png" role="data"></file> - <file name="skins/larry/images/down_small.gif" role="data"></file> - <file name="skins/larry/images/erase.png" role="data"></file> - <file name="skins/larry/images/up_small.gif" role="data"></file> - <file name="config.inc.php.dist" role="data"></file> - </dir> - <!-- / --> - </contents> - <dependencies> - <required> - <php> - <min>5.2.1</min> - </php> - <pearinstaller> - <min>1.7.0</min> - </pearinstaller> - </required> - </dependencies> - <phprelease/> -</package>
View file
kolab-syncroton-2.3.0.tar.gz/lib/ext/Syncroton/Command/FolderCreate.php -> kolab-syncroton-2.3.1.tar.gz/lib/ext/Syncroton/Command/FolderCreate.php
Changed
@@ -15,13 +15,13 @@ * @package Syncroton * @subpackage Command */ -class Syncroton_Command_FolderCreate extends Syncroton_Command_Wbxml -{ +class Syncroton_Command_FolderCreate extends Syncroton_Command_Wbxml +{ protected $_defaultNameSpace = 'uri:FolderHierarchy'; protected $_documentElement = 'FolderCreate'; /** - * + * * @var Syncroton_Model_Folder */ protected $_folder; @@ -70,11 +70,10 @@ break; default: - throw new Syncroton_Exception_UnexpectedValue('invalid type defined'); - break; + // unsupported type + return; } - $dataController = Syncroton_Data_Factory::factory($folder->class, $this->_device, $this->_syncTimeStamp); $this->_folder = $dataController->createFolder($folder); @@ -96,7 +95,8 @@ if ($this->_logger instanceof Zend_Log) $this->_logger->info(__METHOD__ . '::' . __LINE__ . " invalid synckey provided. FolderSync 0 needed."); $folderCreate->appendChild($this->_outputDom->createElementNS('uri:FolderHierarchy', 'Status', Syncroton_Command_FolderSync::STATUS_INVALID_SYNC_KEY)); - + } else if (!$this->_folder) { + $folderCreate->appendChild($this->_outputDom->createElementNS('uri:FolderHierarchy', 'Status', Syncroton_Command_FolderSync::STATUS_UNKNOWN_ERROR)); } else { $this->_syncState->counter++; $this->_syncState->lastsync = $this->_syncTimeStamp;
View file
kolab-syncroton-2.3.0.tar.gz/lib/ext/Syncroton/Command/Ping.php -> kolab-syncroton-2.3.1.tar.gz/lib/ext/Syncroton/Command/Ping.php
Changed
@@ -87,12 +87,16 @@ } $lifeTime = $this->_device->pinglifetime; - $maxLifeTime = Syncroton_Registry::getPingInterval(); + $maxInterval = Syncroton_Registry::getPingInterval(); - if ($maxLifeTime > 0 && $lifeTime > $maxLifeTime) { + if ($maxInterval <= 0 || $maxInterval > Syncroton_Server::MAX_HEARTBEAT_INTERVAL) { + $maxInterval = Syncroton_Server::MAX_HEARTBEAT_INTERVAL; + } + + if ($lifeTime > $maxInterval) { $ping = $this->_outputDom->documentElement; $ping->appendChild($this->_outputDom->createElementNS('uri:Ping', 'Status', self::STATUS_INTERVAL_TO_GREAT_OR_SMALL)); - $ping->appendChild($this->_outputDom->createElementNS('uri:Ping', 'HeartbeatInterval', $maxLifeTime)); + $ping->appendChild($this->_outputDom->createElementNS('uri:Ping', 'HeartbeatInterval', $maxInterval)); return; }
View file
kolab-syncroton-2.3.0.tar.gz/lib/ext/Syncroton/Command/Sync.php -> kolab-syncroton-2.3.1.tar.gz/lib/ext/Syncroton/Command/Sync.php
Changed
@@ -123,11 +123,24 @@ return $this->_outputDom; } - if (isset($requestXML->HeartbeatInterval)) { + $intervalDiv = 1; $this->_heartbeatInterval = (int)$requestXML->HeartbeatInterval; - } elseif (isset($requestXML->Wait)) { - $this->_heartbeatInterval = (int)$requestXML->Wait * 60; + } else if (isset($requestXML->Wait)) { + $intervalDiv = 60; + $this->_heartbeatInterval = (int)$requestXML->Wait * $intervalDiv; + } + + $maxInterval = Syncroton_Registry::getPingInterval(); + if ($maxInterval <= 0 || $maxInterval > Syncroton_Server::MAX_HEARTBEAT_INTERVAL) { + $maxInterval = Syncroton_Server::MAX_HEARTBEAT_INTERVAL; + } + + if ($this->_heartbeatInterval && $this->_heartbeatInterval > $maxInterval) { + $sync = $this->_outputDom->documentElement; + $sync->appendChild($this->_outputDom->createElementNS('uri:Sync', 'Status', self::STATUS_WAIT_INTERVAL_OUT_OF_RANGE)); + $sync->appendChild($this->_outputDom->createElementNS('uri:Sync', 'Limit', floor($maxInterval/$intervalDiv))); + $this->_heartbeatInterval = null; } $this->_globalWindowSize = isset($requestXML->WindowSize) ? (int)$requestXML->WindowSize : 100;
View file
kolab-syncroton-2.3.0.tar.gz/lib/ext/Syncroton/Server.php -> kolab-syncroton-2.3.1.tar.gz/lib/ext/Syncroton/Server.php
Changed
@@ -19,6 +19,7 @@ const PARAMETER_COLLECTIONID = 1; const PARAMETER_ITEMID = 3; const PARAMETER_OPTIONS = 7; + const MAX_HEARTBEAT_INTERVAL = 3540; // 59 minutes protected $_body;
View file
kolab-syncroton-2.3.0.tar.gz/lib/init.php -> kolab-syncroton-2.3.1.tar.gz/lib/init.php
Changed
@@ -35,9 +35,6 @@ $include_path .= ini_get('include_path'); set_include_path($include_path); -// @TODO: what is a reasonable value for ActiveSync? -@set_time_limit(600); - // include global functions from Roundcube Framework require_once 'Roundcube/bootstrap.php';
View file
kolab-syncroton-2.3.0.tar.gz/lib/kolab_sync.php -> kolab-syncroton-2.3.1.tar.gz/lib/kolab_sync.php
Changed
@@ -46,7 +46,7 @@ public $password; const CHARSET = 'UTF-8'; - const VERSION = "2.3.0"; + const VERSION = "2.3.1"; /**
View file
kolab-syncroton-2.3.0.tar.gz/lib/kolab_sync_backend.php -> kolab-syncroton-2.3.1.tar.gz/lib/kolab_sync_backend.php
Changed
@@ -790,7 +790,7 @@ // get all folders of specified type $folderdata = $this->folder_meta(); - if (!is_array($folderdata)) { + if (!is_array($folderdata) || $id === null) { return null; } @@ -802,10 +802,11 @@ continue; } - $uid = self::folder_id($folder); - $this->folder_uids[$folder] = $uid; + if ($uid = self::folder_id($folder)) { + $this->folder_uids[$folder] = $uid; + } - if ($uid == $id) { + if ($uid === $id) { $name = $folder; } }
View file
kolab-syncroton-2.3.0.tar.gz/lib/kolab_sync_data.php -> kolab-syncroton-2.3.1.tar.gz/lib/kolab_sync_data.php
Changed
@@ -377,13 +377,12 @@ foreach ($folders as $folderid) { $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null) { - continue; + if (!$folder || !$folder->valid) { + throw new Syncroton_Exception_Status_ItemOperations(Syncroton_Exception_Status_ItemOperations::ITEM_SERVER_ERROR); } - $folder = $this->getFolderObject($foldername); - // Remove all entries $folder->delete_all(); @@ -392,13 +391,12 @@ $list = $this->listFolders($folderid); foreach ($list as $folderid => $folder) { $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null) { - continue; + if (!$folder || !$folder->valid) { + throw new Syncroton_Exception_Status_ItemOperations(Syncroton_Exception_Status_ItemOperations::ITEM_SERVER_ERROR); } - $folder = $this->getFolderObject($foldername); - // Remove all entries $folder->delete_all(); } @@ -545,9 +543,10 @@ foreach ($folders as $folder_id) { $foldername = $this->backend->folder_id2name($folder_id, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null || !($folder = $this->getFolderObject($foldername))) { - continue; + if (!$folder || !$folder->valid) { + throw new Syncroton_Exception_Status(Syncroton_Exception_Status::SERVER_ERROR); } $found++; @@ -911,14 +910,9 @@ foreach ($folders as $folderid) { $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); + $folder = $this->getFolderObject($foldername); - if ($foldername === null) { - continue; - } - - $folder = $this->getFolderObject($foldername); - - if ($folder && ($object = $folder->get_object($entryid))) { + if ($folder && $folder->valid && ($object = $folder->get_object($entryid))) { $object['_folderid'] = $folderid; return $object; @@ -950,7 +944,7 @@ $foldername = $this->backend->folder_id2name($folderid, $this->device->deviceid); $folder = $this->getFolderObject($foldername); - if ($folder && $folder->save($data)) { + if ($folder && $folder->valid && $folder->save($data)) { if (!empty($tags)) { $this->setKolabTags($data['uid'], $tags); } @@ -975,7 +969,7 @@ unset($data['categories']); } - if ($folder && $folder->save($data)) { + if ($folder && $folder->valid && $folder->save($data)) { if (isset($tags)) { $this->setKolabTags($data['uid'], $tags); } @@ -995,7 +989,7 @@ if ($object) { $folder = $this->getFolderObject($object['_mailbox']); - if ($folder && $folder->delete($entryid)) { + if ($folder && $folder->valid && $folder->delete($entryid)) { if ($this->tag_categories) { $this->setKolabTags($object['uid'], null); } @@ -1078,12 +1072,12 @@ */ protected function getFolderObject($name) { - if ($name === null) { + if ($name === null || $name === '') { return null; } if (!isset($this->folders[$name])) { - $this->folders[$name] = kolab_storage::get_folder($name); + $this->folders[$name] = kolab_storage::get_folder($name, $this->modelName); } return $this->folders[$name];
View file
kolab-syncroton-2.3.0.tar.gz/lib/kolab_sync_data_email.php -> kolab-syncroton-2.3.1.tar.gz/lib/kolab_sync_data_email.php
Changed
@@ -845,10 +845,10 @@ $modseq_data[$foldername] = $folder_data['HIGHESTMODSEQ']; if ($modseq_data[$foldername] != $modseq[$foldername]) { $modseq_update = true; - } - else if ($modseq && $modseq[$foldername]) { - $modified = true; - $filter_str .= " MODSEQ " . ($modseq[$foldername] + 1); + if ($modseq && $modseq[$foldername]) { + $modified = true; + $filter_str .= " MODSEQ " . ($modseq[$foldername] + 1); + } } } }
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/composer.json
Added
@@ -0,0 +1,30 @@ +{ + "name": "kolab/kolab_auth", + "type": "roundcube-plugin", + "description": "Kolab authentication", + "homepage": "http://git.kolab.org/roundcubemail-plugins-kolab/", + "license": "AGPLv3", + "version": "3.2.2", + "authors": [ + { + "name": "Thomas Bruederli", + "email": "bruederli@kolabsys.com", + "role": "Lead" + }, + { + "name": "Aleksander Machniak", + "email": "machniak@kolabsys.com", + "role": "Lead" + } + ], + "repositories": [ + { + "type": "composer", + "url": "http://plugins.roundcube.net" + } + ], + "require": { + "php": ">=5.3.0", + "roundcube/plugin-installer": ">=0.1.3" + } +}
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/config.inc.php.dist -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/config.inc.php.dist
Changed
@@ -13,48 +13,55 @@ // With this %dc variable in base_dn and groups/base_dn will be // replaced with DN string of resolved domain //--------------------------------------------------------------------- -$rcmail_config['kolab_auth_addressbook'] = ''; +$config['kolab_auth_addressbook'] = ''; // This will overwrite defined filter -$rcmail_config['kolab_auth_filter'] = '(&(objectClass=kolabInetOrgPerson)(|(uid=%u)(mail=%fu)(alias=%fu)))'; +$config['kolab_auth_filter'] = '(&(objectClass=kolabInetOrgPerson)(|(uid=%u)(mail=%fu)(alias=%fu)))'; -// Use this fields (from fieldmap configuration) to get authentication ID -$rcmail_config['kolab_auth_login'] = 'email'; +// Use this field (from fieldmap configuration) to get authentication ID. Don't use an array here! +$config['kolab_auth_login'] = 'email'; -// Use this fields (from fieldmap configuration) for default identity. +// Use these fields (from fieldmap configuration) for default identity. // If the value array contains more than one field, first non-empty will be used // Note: These aren't LDAP attributes, but field names in config // Note: If there's more than one email address, as many identities will be created -$rcmail_config['kolab_auth_name'] = array('name', 'cn'); -$rcmail_config['kolab_auth_email'] = array('email'); -$rcmail_config['kolab_auth_organization'] = array('organization'); +$config['kolab_auth_name'] = array('name', 'cn'); +$config['kolab_auth_email'] = array('email'); +$config['kolab_auth_organization'] = array('organization'); + +// Role field (from fieldmap configuration) +$config['kolab_auth_role'] = 'role'; // Template for user names displayed in the UI. // You can use all attributes from the 'fieldmap' property of the 'kolab_auth_addressbook' configuration -$rcmail_config['kolab_auth_user_displayname'] = '{name} ({ou})'; +$config['kolab_auth_user_displayname'] = '{name} ({ou})'; // Login and password of the admin user. Enables "Login As" feature. -$rcmail_config['kolab_auth_admin_login'] = ''; -$rcmail_config['kolab_auth_admin_password'] = ''; +$config['kolab_auth_admin_login'] = ''; +$config['kolab_auth_admin_password'] = ''; // Enable audit logging for abuse of administrative privileges. -$rcmail_config['kolab_auth_auditlog'] = false; - -// Role field (from fieldmap configuration) -$rcmail_config['kolab_auth_role'] = 'role'; -// The required value for the role attribute to contain should the user be allowed -// to login as another user. -$rcmail_config['kolab_auth_role_value'] = ''; +$config['kolab_auth_auditlog'] = false; -// Administrative group name to which user must be assigned to -// which adds privilege to login as another user. -$rcmail_config['kolab_auth_group'] = ''; +// As set of rules to define the required rights on the target entry +// which allow an admin user to login as another user (the target). +// The effective rights value refers to either entry level attribute level rights: +// * entry:[read|add|delete] +// * attrib:<attribute-name>:[read|write|delete] +$config['kolab_auth_admin_rights'] = array( + // Roundcube task => required effective right + 'settings' => 'entry:read', + 'mail' => 'entry:delete', + 'addressbook' => 'entry:delete', + // or use a wildcard entry like this: + '*' => 'entry:read', +); // Enable plugins on a role-by-role basis. In this example, the 'acl' plugin // is enabled for people with a 'cn=professional-user,dc=mykolab,dc=ch' role. // // Note that this does NOT mean the 'acl' plugin is disabled for other people. -$rcmail_config['kolab_auth_role_plugins'] = Array( +$config['kolab_auth_role_plugins'] = Array( 'cn=professional-user,dc=mykolab,dc=ch' => Array( 'acl', ), @@ -66,7 +73,7 @@ // do not allow the setting to be controlled through the preferences, enable the // html editor for professional users and allow them to override the setting in // the preferences. -$rcmail_config['kolab_auth_role_settings'] = Array( +$config['kolab_auth_role_settings'] = Array( 'cn=professional-user,dc=mykolab,dc=ch' => Array( 'htmleditor' => Array( 'mode' => 'override', @@ -79,6 +86,6 @@ // List of LDAP addressbooks (keys of ldap_public configuration array) // for which base_dn variables (%dc, etc.) will be replaced according to authenticated user DN // Note: special name '*' for all LDAP addressbooks -$rcmail_config['kolab_auth_ldap_addressbooks'] = array('*'); +$config['kolab_auth_ldap_addressbooks'] = array('*'); ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/kolab_auth.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/kolab_auth.php
Changed
@@ -83,8 +83,30 @@ } } + /** + * Startup hook handler + */ public function startup($args) { + // Check access rights when logged in as another user + if (!empty($_SESSION['kolab_auth_admin']) && $args['task'] != 'login' && $args['task'] != 'logout') { + // access to specified task is forbidden, + // redirect to the first task on the list + if (!empty($_SESSION['kolab_auth_allowed_tasks'])) { + $tasks = (array)$_SESSION['kolab_auth_allowed_tasks']; + if (!in_array($args['task'], $tasks) && !in_array('*', $tasks)) { + header('Location: ?_task=' . array_shift($tasks)); + die; + } + + // add script that will remove disabled taskbar buttons + if (!in_array('*', $tasks)) { + $this->add_hook('render_page', array($this, 'render_page')); + } + } + } + + // load per-user settings $this->load_user_role_plugins_and_settings(); return $args; @@ -103,21 +125,36 @@ foreach ($args['result'] as $name => $config) { if (in_array($name, $kolab_books) || in_array('*', $kolab_books)) { - $args['result'][$name]['base_dn'] = self::parse_ldap_vars($config['base_dn']); - $args['result'][$name]['search_base_dn'] = self::parse_ldap_vars($config['search_base_dn']); - $args['result'][$name]['bind_dn'] = str_replace('%dn', $_SESSION['kolab_dn'], $config['bind_dn']); - - if (!empty($config['groups'])) { - $args['result'][$name]['groups']['base_dn'] = self::parse_ldap_vars($config['groups']['base_dn']); - } + $args['result'][$name] = $this->patch_ldap_config($config); } } } + else if ($args['name'] == 'kolab_users_directory' && !empty($args['result'])) { + $args['result'] = $this->patch_ldap_config($args['result']); + } return $args; } /** + * Helper method to patch the given LDAP directory config with user-specific values + */ + protected function patch_ldap_config($config) + { + if (is_array($config)) { + $config['base_dn'] = self::parse_ldap_vars($config['base_dn']); + $config['search_base_dn'] = self::parse_ldap_vars($config['search_base_dn']); + $config['bind_dn'] = str_replace('%dn', $_SESSION['kolab_dn'], $config['bind_dn']); + + if (!empty($config['groups'])) { + $config['groups']['base_dn'] = self::parse_ldap_vars($config['groups']['base_dn']); + } + } + + return $config; + } + + /** * Modifies list of plugins and settings according to * specified LDAP roles */ @@ -429,24 +466,69 @@ return $args; } - // check if the original user has/belongs to administrative role/group $isadmin = false; - $group = $rcmail->config->get('kolab_auth_group'); - $role_dn = $rcmail->config->get('kolab_auth_role_value'); - - // check role attribute - if (!empty($role_attr) && !empty($role_dn) && !empty($record[$role_attr])) { - $role_dn = $ldap->parse_vars($role_dn, $user, $host); - if (in_array($role_dn, (array)$record[$role_attr])) { - $isadmin = true; + $admin_rights = $rcmail->config->get('kolab_auth_admin_rights', array()); + + // @deprecated: fall-back to the old check if the original user has/belongs to administrative role/group + if (empty($admin_rights)) { + $group = $rcmail->config->get('kolab_auth_group'); + $role_dn = $rcmail->config->get('kolab_auth_role_value'); + + // check role attribute + if (!empty($role_attr) && !empty($role_dn) && !empty($record[$role_attr])) { + $role_dn = $ldap->parse_vars($role_dn, $user, $host); + if (in_array($role_dn, (array)$record[$role_attr])) { + $isadmin = true; + } + } + + // check group + if (!$isadmin && !empty($group)) { + $groups = $ldap->get_user_groups($record['dn'], $user, $host); + if (in_array($group, $groups)) { + $isadmin = true; + } + } + + if ($isadmin) { + // user has admin privileges privilage, get "login as" user credentials + $target_entry = $ldap->get_user_record($loginas, $host); + $allowed_tasks = $rcmail->config->get('kolab_auth_allowed_tasks'); } } + else { + // get "login as" user credentials + $target_entry = $ldap->get_user_record($loginas, $host); + + if (!empty($target_entry)) { + // get effective rights to determine login-as permissions + $effective_rights = (array)$ldap->effective_rights($target_entry['dn']); + + if (!empty($effective_rights)) { + $effective_rights['attrib'] = $effective_rights['attributeLevelRights']; + $effective_rights['entry'] = $effective_rights['entryLevelRights']; + + // compare the rights with the permissions mapping + $allowed_tasks = array(); + foreach ($admin_rights as $task => $perms) { + $perms_ = explode(':', $perms); + $type = array_shift($perms_); + $req = array_pop($perms_); + $attrib = array_pop($perms_); + + if (array_key_exists($type, $effective_rights)) { + if ($type == 'entry' && in_array($req, $effective_rights[$type])) { + $allowed_tasks[] = $task; + } + else if ($type == 'attrib' && array_key_exists($attrib, $effective_rights[$type]) && + in_array($req, $effective_rights[$type][$attrib])) { + $allowed_tasks[] = $task; + } + } + } - // check group - if (!$isadmin && !empty($group)) { - $groups = $ldap->get_user_groups($record['dn'], $user, $host); - if (in_array($group, $groups)) { - $isadmin = true; + $isadmin = !empty($allowed_tasks); + } } } @@ -458,22 +540,22 @@ $origname = $user; } - $record = null; - - // user has the privilage, get "login as" user credentials - if ($isadmin) { - $record = $ldap->get_user_record($loginas, $host); - } + if (!$isadmin || empty($target_entry)) { + $this->add_texts('localization/'); - if (empty($record)) { $args['abort'] = true; + $args['error'] = $this->gettext(array( + 'name' => 'loginasnotallowed', + 'vars' => array('user' => Q($loginas)), + )); + $message = sprintf( 'Login failure for user %s (as user %s) from %s in session %s (error %s)', $user, $loginas, rcube_utils::remote_ip(), session_id(), - "No user record found for '" . $loginas . "'" + "No privileges to login as '" . $loginas . "'" ); rcube::write_log('userlogins', $message); @@ -481,12 +563,16 @@ return $args; } + // replace $record with target entry + $record = $target_entry; + $args['user'] = $this->username = $loginas; // Mark session to use SASL proxy for IMAP authentication $_SESSION['kolab_auth_admin'] = strtolower($origname); $_SESSION['kolab_auth_login'] = $rcmail->encrypt($admin_login); $_SESSION['kolab_auth_password'] = $rcmail->encrypt($admin_pass); + $_SESSION['kolab_auth_allowed_tasks'] = $allowed_tasks; } // Store UID and DN of logged user in session for use by other plugins @@ -634,6 +720,28 @@ } /** + * Action executed before the page is rendered to add an onload script + * that will remove all taskbar buttons for disabled tasks + */ + public function render_page($args) + { + $rcmail = rcube::get_instance(); + $tasks = (array)$_SESSION['kolab_auth_allowed_tasks']; + $tasks[] = 'logout'; + + // disable buttons in taskbar + $script = " + \$('a').filter(function() { + var ev = \$(this).attr('onclick'); + return ev && ev.match(/'switch-task','([a-z]+)'/) + && \$.inArray(RegExp.\$1, " . json_encode($tasks) . ") < 0; + }).remove(); + "; + + $rcmail->output->add_script($script, 'docready'); + } + + /** * Initializes LDAP object and connects to LDAP server */ public static function ldap()
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/kolab_auth_ldap.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/kolab_auth_ldap.php
Changed
@@ -57,8 +57,6 @@ */ private function _connect() { - $rcube = rcube::get_instance(); - // try to connect + bind for every host configured // with OpenLDAP 2.x ldap_connect() always succeeds but ldap_bind will fail if host isn't reachable // see http://www.php.net/manual/en/function.ldap-connect.php @@ -157,11 +155,10 @@ $groups = array(); foreach ($result as $entry) { + $dn = $entry['dn']; $entry = rcube_ldap_generic::normalize_entry($entry); - if (!$entry['dn']) { - $entry['dn'] = key($result->entries(true)); - } - $groups[$entry['dn']] = $entry[$name_attr]; + + $groups[$dn] = $entry[$name_attr]; } return $groups; @@ -310,7 +307,8 @@ if ($limit && $limit <= $i) { break; } - $dn = key($result->entries(true)); + + $dn = $entry['dn']; $entry = rcube_ldap_generic::normalize_entry($entry); $list[$dn] = $this->field_mapping($dn, $entry); $i++;
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/de_CH.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/de_CH.inc
Changed
@@ -1,3 +1,10 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'Anmelden als'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/de_DE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/de_DE.inc
Changed
@@ -1,3 +1,11 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'Anmelden als'; +$labels['loginasnotallowed'] = 'Keine Privilegien zum Anmelden als $user'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/en_US.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/en_US.inc
Changed
@@ -9,5 +9,6 @@ */ $labels['loginas'] = 'Login As'; +$labels['loginasnotallowed'] = 'No privileges to login as $user'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/fr_FR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/fr_FR.inc
Changed
@@ -1,3 +1,11 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'Se connecter en tant que'; +$labels['loginasnotallowed'] = 'Pas de privilège de se connecter comme $utilisateur'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/ja_JP.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/ja_JP.inc
Changed
@@ -1,3 +1,10 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'ログイン'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/nl_NL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/nl_NL.inc
Changed
@@ -1,3 +1,10 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'Log in als'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/pl_PL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/pl_PL.inc
Changed
@@ -1,3 +1,10 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'Zaloguj jako'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_auth/localization/ru_RU.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_auth/localization/ru_RU.inc
Changed
@@ -1,3 +1,11 @@ <?php +/** + * Localizations for the Kolab Auth plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_auth/ + */ $labels['loginas'] = 'Войти как'; +$labels['loginasnotallowed'] = 'Нет привилегий войти как $user'; ?>
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/composer.json
Added
@@ -0,0 +1,26 @@ +{ + "name": "kolab/kolab_folders", + "type": "roundcube-plugin", + "description": "Type-aware folder management/listing for Kolab", + "homepage": "http://git.kolab.org/roundcubemail-plugins-kolab/", + "license": "AGPLv3", + "version": "3.2.3", + "authors": [ + { + "name": "Aleksander Machniak", + "email": "machniak@kolabsys.com", + "role": "Lead" + } + ], + "repositories": [ + { + "type": "composer", + "url": "http://plugins.roundcube.net" + } + ], + "require": { + "php": ">=5.3.0", + "roundcube/plugin-installer": ">=0.1.3", + "kolab/libkolab": ">=3.2.3" + } +}
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/config.inc.php.dist -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/config.inc.php.dist
Changed
@@ -7,32 +7,30 @@ // Note: Mail folders will be also subscribed. // Default Configuration folder -$rcmail_config['kolab_folders_configuration_default'] = ''; +$config['kolab_folders_configuration_default'] = ''; // Default Calendar folder -$rcmail_config['kolab_folders_event_default'] = ''; +$config['kolab_folders_event_default'] = ''; // Default Contacts (Addressbook) folder -$rcmail_config['kolab_folders_contact_default'] = ''; +$config['kolab_folders_contact_default'] = ''; // Default Tasks folder -$rcmail_config['kolab_folders_task_default'] = ''; +$config['kolab_folders_task_default'] = ''; // Default Notes folder -$rcmail_config['kolab_folders_note_default'] = ''; +$config['kolab_folders_note_default'] = ''; // Default Journal folder -$rcmail_config['kolab_folders_journal_default'] = ''; +$config['kolab_folders_journal_default'] = ''; // Default Files folder -$rcmail_config['kolab_folders_file_default'] = ''; +$config['kolab_folders_file_default'] = ''; // Default FreeBusy folder -$rcmail_config['kolab_folders_freebusy_default'] = ''; +$config['kolab_folders_freebusy_default'] = ''; // INBOX folder -$rcmail_config['kolab_folders_mail_inbox'] = ''; +$config['kolab_folders_mail_inbox'] = ''; // Drafts folder -$rcmail_config['kolab_folders_mail_drafts'] = ''; +$config['kolab_folders_mail_drafts'] = ''; // Sent folder -$rcmail_config['kolab_folders_mail_sentitems'] = ''; +$config['kolab_folders_mail_sentitems'] = ''; // Trash folder -$rcmail_config['kolab_folders_mail_wastebasket'] = ''; +$config['kolab_folders_mail_wastebasket'] = ''; // Others folders -$rcmail_config['kolab_folders_mail_outbox'] = ''; -$rcmail_config['kolab_folders_mail_junkemail'] = ''; - -?> +$config['kolab_folders_mail_outbox'] = ''; +$config['kolab_folders_mail_junkemail'] = '';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/kolab_folders.js -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/kolab_folders.js
Changed
@@ -50,47 +50,23 @@ }); window.rcmail && rcmail.env.action != 'folders' && $(document).ready(function() { - // IE doesn't allow setting OPTION's display/visibility - // We'll need to remove SELECT's options, see below - if (bw.ie) { - rcmail.env.subtype_html = $('#_subtype').html(); - } - // Add onchange handler for folder type SELECT, and call it on form init $('#_ctype').change(function() { var type = $(this).val(), sub = $('#_subtype'), - subtype = sub.val(); + subtypes = rcmail.env.kolab_folder_subtypes[type] || {}; - // For IE we need to revert the whole SELECT to the original state - if (bw.ie) { - sub.html(rcmail.env.subtype_html).val(subtype); - } + // reset subtype selector + sub.html('<option value=""></option>'); - // For non-mail folders we must hide mail-specific subtypes - $('option', sub).each(function() { - var opt = $(this), val = opt.val(); - if (val == '') - return; - // there's no mail.default - if (val == 'default' && type != 'mail') { - opt.show(); - return; - }; - - if (type == 'mail' && val != 'default') - opt.show(); - else if (bw.ie) - opt.remove(); - else - opt.hide(); + // append available subtypes for the given folder type + $.each(subtypes, function(val, label) { + $('<option>').attr('value', val).text(label).appendTo(sub); }); // And re-set subtype - if (type != 'mail' && subtype != '' && subtype != 'default') { - sub.val(''); - } - }).change(); + sub.val(rcmail.env.kolab_folder_subtype); + }); }); function kolab_folders_filter(filter)
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/kolab_folders.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/kolab_folders.php
Changed
@@ -27,7 +27,17 @@ public $task = '?(?!login).*'; public $types = array('mail', 'event', 'journal', 'task', 'note', 'contact', 'configuration', 'file', 'freebusy'); - public $mail_types = array('inbox', 'drafts', 'sentitems', 'outbox', 'wastebasket', 'junkemail'); + public $subtypes = array( + 'mail' => array('inbox', 'drafts', 'sentitems', 'outbox', 'wastebasket', 'junkemail'), + 'event' => array('default', 'confidential'), + 'task' => array('default', 'confidential'), + 'journal' => array('default'), + 'note' => array('default'), + 'contact' => array('default'), + 'configuration' => array('default'), + 'file' => array('default'), + 'freebusy' => array('default'), + ); public $act_types = array('event', 'task'); private $rc; @@ -202,8 +212,8 @@ $mbox = strlen($args['name']) ? $args['name'] : $args['parent_name']; if (isset($_POST['_ctype'])) { - $new_ctype = trim(get_input_value('_ctype', RCUBE_INPUT_POST)); - $new_subtype = trim(get_input_value('_subtype', RCUBE_INPUT_POST)); + $new_ctype = trim(rcube_utils::get_input_value('_ctype', rcube_utils::INPUT_POST)); + $new_subtype = trim(rcube_utils::get_input_value('_subtype', rcube_utils::INPUT_POST)); } // Get type of the folder or the parent @@ -248,6 +258,7 @@ // build type SELECT fields $type_select = new html_select(array('name' => '_ctype', 'id' => '_ctype')); $sub_select = new html_select(array('name' => '_subtype', 'id' => '_subtype')); + $sub_select->add('', ''); foreach ($this->types as $type) { $type_select->add($this->gettext('foldertype'.$type), $type); @@ -257,10 +268,14 @@ $type_select->add($ctype, $ctype); } - $sub_select->add('', ''); - $sub_select->add($this->gettext('default'), 'default'); - foreach ($this->mail_types as $type) { - $sub_select->add($this->gettext($type), $type); + $sub_types = array(); + foreach ($this->subtypes as $ftype => $subtypes) { + $sub_types[$ftype] = array_combine($subtypes, array_map(array($this, 'gettext'), $subtypes)); + + // fill options for the current folder type + if ($ftype == $ctype || $ftype == $new_ctype) { + $sub_select->add(array_values($sub_types[$ftype]), $subtypes); + } } $args['form']['props']['fieldsets']['settings']['content']['foldertype'] = array( @@ -269,6 +284,9 @@ . $sub_select->show(isset($new_subtype) ? $new_subtype : $subtype), ); + $this->rc->output->set_env('kolab_folder_subtypes', $sub_types); + $this->rc->output->set_env('kolab_folder_subtype', isset($new_subtype) ? $new_subtype : $subtype); + return $args; } @@ -283,8 +301,8 @@ } // Folder create/update with form - $ctype = trim(get_input_value('_ctype', RCUBE_INPUT_POST)); - $subtype = trim(get_input_value('_subtype', RCUBE_INPUT_POST)); + $ctype = trim(rcube_utils::get_input_value('_ctype', rcube_utils::INPUT_POST)); + $subtype = trim(rcube_utils::get_input_value('_subtype', rcube_utils::INPUT_POST)); $mbox = $args['record']['name']; $old_mbox = $args['record']['oldname']; $subscribe = $args['record']['subscribe']; @@ -312,7 +330,7 @@ } } // Subtype sanity-checks - else if ($subtype && ($ctype != 'mail' || !in_array($subtype, $this->mail_types))) { + else if ($subtype && (!($subtypes = $this->subtypes[$ctype]) || !in_array($subtype, $subtypes))) { $subtype = ''; } @@ -522,8 +540,7 @@ // get configured defaults foreach ($this->types as $type) { - $subtypes = $type == 'mail' ? $this->mail_types : array('default'); - foreach ($subtypes as $subtype) { + foreach ((array)$this->subtypes[$type] as $subtype) { $opt_name = 'kolab_folders_' . $type . '_' . $subtype; if ($folder = $this->rc->config->get($opt_name)) { // convert configuration value to UTF7-IMAP charset
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/de_CH.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/de_CH.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'Ordnerinhalt'; $labels['foldertypemail'] = 'E-Mail'; $labels['foldertypeevent'] = 'Kalender'; @@ -16,5 +23,6 @@ $labels['outbox'] = 'Postausgang'; $labels['wastebasket'] = 'Gelöscht'; $labels['junkemail'] = 'Spam'; +$labels['confidential'] = 'Confidential'; $messages['defaultfolderexists'] = 'Es existiert bereits ein Standardordner für den angegebenen Typ'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/de_DE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/de_DE.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'Ordnerinhalt'; $labels['foldertypemail'] = 'E-Mail'; $labels['foldertypeevent'] = 'Kalender'; @@ -16,5 +23,6 @@ $labels['outbox'] = 'Postausgang'; $labels['wastebasket'] = 'Mülleimer'; $labels['junkemail'] = 'Spam'; +$labels['confidential'] = 'Vertraulich'; $messages['defaultfolderexists'] = 'Es gibt bereits einen Standardordner dieses Typs'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/en_US.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/en_US.inc
Changed
@@ -28,6 +28,7 @@ $labels['outbox'] = 'Outbox'; $labels['wastebasket'] = 'Trash'; $labels['junkemail'] = 'Junk'; +$labels['confidential'] = 'Confidential'; $messages['defaultfolderexists'] = 'There is already default folder of specified type';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/es_ES.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/es_ES.inc
Changed
@@ -1,7 +1,28 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ +$labels['folderctype'] = 'Content type'; +$labels['foldertypemail'] = 'Mail'; $labels['foldertypeevent'] = 'Calendar'; +$labels['foldertypejournal'] = 'Journal'; $labels['foldertypetask'] = 'Tareas'; $labels['foldertypenote'] = 'Notas'; $labels['foldertypecontact'] = 'Contactos'; $labels['foldertypeconfiguration'] = 'Configuración'; +$labels['foldertypefile'] = 'Files'; +$labels['foldertypefreebusy'] = 'Free-Busy'; +$labels['default'] = 'Default'; +$labels['inbox'] = 'Inbox'; +$labels['drafts'] = 'Drafts'; +$labels['sentitems'] = 'Sent'; +$labels['outbox'] = 'Outbox'; +$labels['wastebasket'] = 'Trash'; +$labels['junkemail'] = 'Junk'; +$labels['confidential'] = 'Confidential'; +$messages['defaultfolderexists'] = 'There is already default folder of specified type'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/et_EE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/et_EE.inc
Changed
@@ -1,3 +1,28 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ +$labels['folderctype'] = 'Content type'; +$labels['foldertypemail'] = 'Mail'; $labels['foldertypeevent'] = 'Calendar'; +$labels['foldertypejournal'] = 'Journal'; +$labels['foldertypetask'] = 'Tasks'; +$labels['foldertypenote'] = 'Notes'; +$labels['foldertypecontact'] = 'Contacts'; +$labels['foldertypeconfiguration'] = 'Configuration'; +$labels['foldertypefile'] = 'Files'; +$labels['foldertypefreebusy'] = 'Free-Busy'; +$labels['default'] = 'Default'; +$labels['inbox'] = 'Inbox'; +$labels['drafts'] = 'Drafts'; +$labels['sentitems'] = 'Sent'; +$labels['outbox'] = 'Outbox'; +$labels['wastebasket'] = 'Trash'; +$labels['junkemail'] = 'Junk'; +$labels['confidential'] = 'Confidential'; +$messages['defaultfolderexists'] = 'There is already default folder of specified type'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/fr_FR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/fr_FR.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'Type de contenu'; $labels['foldertypemail'] = 'Courriel'; $labels['foldertypeevent'] = 'Calendrier'; @@ -16,5 +23,6 @@ $labels['outbox'] = 'Courrier sortant'; $labels['wastebasket'] = 'Corbeille'; $labels['junkemail'] = 'Indésirables'; +$labels['confidential'] = 'Confidentiel'; $messages['defaultfolderexists'] = 'Il existe déjà un répertoire par défaut pour le type spécifié'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/ja_JP.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/ja_JP.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'コンテンツタイプ'; $labels['foldertypemail'] = 'メール'; $labels['foldertypeevent'] = 'カレンダー'; @@ -16,5 +23,6 @@ $labels['outbox'] = '送信箱'; $labels['wastebasket'] = 'ごみ箱'; $labels['junkemail'] = '迷惑メール'; +$labels['confidential'] = 'Confidential'; $messages['defaultfolderexists'] = '指定したタイプの初期フォルダは既にあります。'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/nl_NL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/nl_NL.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'Inhoudstype'; $labels['foldertypemail'] = 'Mail'; $labels['foldertypeevent'] = 'Agenda'; @@ -16,5 +23,6 @@ $labels['outbox'] = 'Te versturen'; $labels['wastebasket'] = 'Prullenbak'; $labels['junkemail'] = 'Ongewenst'; +$labels['confidential'] = 'Vertrouwelijk'; $messages['defaultfolderexists'] = 'Er is reeds een standaard map voor dit type inhoud'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/pl_PL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/pl_PL.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'Typ treści'; $labels['foldertypemail'] = 'Poczta'; $labels['foldertypeevent'] = 'Kalendarz'; @@ -16,5 +23,6 @@ $labels['outbox'] = 'Poczta wychodząca'; $labels['wastebasket'] = 'Kosz'; $labels['junkemail'] = 'Spam'; +$labels['confidential'] = 'Confidential'; $messages['defaultfolderexists'] = 'Folder domyślny wybranego typu już istnieje'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/kolab_folders/localization/ru_RU.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/kolab_folders/localization/ru_RU.inc
Changed
@@ -1,4 +1,11 @@ <?php +/** + * Localizations for the Kolab Folders plugin + * + * Copyright (C) 2014, Kolab Systems AG + * + * For translation see https://www.transifex.com/projects/p/kolab/resource/kolab_folders/ + */ $labels['folderctype'] = 'Тип ящика'; $labels['foldertypemail'] = 'Почта'; $labels['foldertypeevent'] = 'Календарь'; @@ -16,5 +23,6 @@ $labels['outbox'] = 'Исходящие'; $labels['wastebasket'] = 'Корзина'; $labels['junkemail'] = 'Спам'; +$labels['confidential'] = 'Конфиденциально'; $messages['defaultfolderexists'] = 'Уже назначен ящик по умолчанию для указанного типа'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/SQL/mysql.initial.sql -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/SQL/mysql.initial.sql
Changed
@@ -31,7 +31,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `type` VARCHAR(32) CHARACTER SET ascii NOT NULL, `name` VARCHAR(255) NOT NULL, @@ -55,7 +55,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `dtstart` DATETIME, `dtend` DATETIME, @@ -75,7 +75,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `dtstart` DATETIME, `dtend` DATETIME, @@ -95,7 +95,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `dtstart` DATETIME, `dtend` DATETIME, @@ -115,7 +115,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, CONSTRAINT `fk_kolab_cache_note_folder` FOREIGN KEY (`folder_id`) REFERENCES `kolab_folders`(`folder_id`) ON DELETE CASCADE ON UPDATE CASCADE, @@ -133,7 +133,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `filename` varchar(255) DEFAULT NULL, CONSTRAINT `fk_kolab_cache_file_folder` FOREIGN KEY (`folder_id`) @@ -153,7 +153,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `type` VARCHAR(32) CHARACTER SET ascii NOT NULL, CONSTRAINT `fk_kolab_cache_configuration_folder` FOREIGN KEY (`folder_id`) @@ -173,7 +173,7 @@ `changed` DATETIME DEFAULT NULL, `data` LONGTEXT NOT NULL, `xml` LONGBLOB NOT NULL, - `tags` VARCHAR(255) NOT NULL, + `tags` TEXT NOT NULL, `words` TEXT NOT NULL, `dtstart` DATETIME, `dtend` DATETIME, @@ -184,4 +184,4 @@ ) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; -INSERT INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2014021000'); +INSERT INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2015011600');
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/SQL/mysql/2014112700.sql
Added
@@ -0,0 +1,2 @@ +-- delete cache entries for old folder identifiers +DELETE FROM `kolab_folders` WHERE `resource` LIKE 'imap://anonymous@%';
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/SQL/mysql/2015011600.sql
Added
@@ -0,0 +1,8 @@ +ALTER TABLE `kolab_cache_contact` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_event` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_task` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_journal` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_note` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_file` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_configuration` MODIFY `tags` text NOT NULL; +ALTER TABLE `kolab_cache_freebusy` MODIFY `tags` text NOT NULL;
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/SQL/oracle
Added
+(directory)
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/SQL/oracle.initial.sql
Added
@@ -0,0 +1,184 @@ +/** + * libkolab database schema + * + * @version 1.1 + * @author Aleksander Machniak + * @licence GNU AGPL + **/ + + +CREATE TABLE "kolab_folders" ( + "folder_id" number NOT NULL PRIMARY KEY, + "resource" VARCHAR(255) NOT NULL, + "type" VARCHAR(32) NOT NULL, + "synclock" integer DEFAULT 0 NOT NULL, + "ctag" VARCHAR(40) DEFAULT NULL +); + +CREATE INDEX "kolab_folders_resource_idx" ON "kolab_folders" ("resource", "type"); + +CREATE SEQUENCE "kolab_folders_seq" + START WITH 1 INCREMENT BY 1 NOMAXVALUE; + +CREATE TRIGGER "kolab_folders_seq_trig" +BEFORE INSERT ON "kolab_folders" FOR EACH ROW +BEGIN + :NEW."folder_id" := "kolab_folders_seq".nextval; +END; +/ + +CREATE TABLE "kolab_cache_contact" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "type" varchar(32) NOT NULL, + "name" varchar(255) DEFAULT NULL, + "firstname" varchar(255) DEFAULT NULL, + "surname" varchar(255) DEFAULT NULL, + "email" varchar(255) DEFAULT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_contact_type_idx" ON "kolab_cache_contact" ("folder_id", "type"); +CREATE INDEX "kolab_cache_contact_uid2msguid" ON "kolab_cache_contact" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_event" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "dtstart" timestamp DEFAULT NULL, + "dtend" timestamp DEFAULT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_event_uid2msguid" ON "kolab_cache_event" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_task" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "dtstart" timestamp DEFAULT NULL, + "dtend" timestamp DEFAULT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_task_uid2msguid" ON "kolab_cache_task" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_journal" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "dtstart" timestamp DEFAULT NULL, + "dtend" timestamp DEFAULT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_journal_uid2msguid" ON "kolab_cache_journal" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_note" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_note_uid2msguid" ON "kolab_cache_note" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_file" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "filename" varchar(255) DEFAULT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_file_filename" ON "kolab_cache_file" ("folder_id", "filename"); +CREATE INDEX "kolab_cache_file_uid2msguid" ON "kolab_cache_file" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_configuration" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "type" varchar(32) NOT NULL, + PRIMARY KEY ("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_config_type" ON "kolab_cache_configuration" ("folder_id", "type"); +CREATE INDEX "kolab_cache_config_uid2msguid" ON "kolab_cache_configuration" ("folder_id", "uid", "msguid"); + + +CREATE TABLE "kolab_cache_freebusy" ( + "folder_id" number NOT NULL + REFERENCES "kolab_folders" ("folder_id") ON DELETE CASCADE, + "msguid" number NOT NULL, + "uid" varchar(128) NOT NULL, + "created" timestamp DEFAULT NULL, + "changed" timestamp DEFAULT NULL, + "data" clob NOT NULL, + "xml" clob NOT NULL, + "tags" clob DEFAULT NULL, + "words" clob DEFAULT NULL, + "dtstart" timestamp DEFAULT NULL, + "dtend" timestamp DEFAULT NULL, + PRIMARY KEY("folder_id", "msguid") +); + +CREATE INDEX "kolab_cache_fb_uid2msguid" ON "kolab_cache_freebusy" ("folder_id", "uid", "msguid"); + + +INSERT INTO "system" ("name", "value") VALUES ('libkolab-version', '2015011600');
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/SQL/oracle/2015011600.sql
Added
@@ -0,0 +1,40 @@ +-- direct change from varchar to clob does not work, need temp column (#4257) +ALTER TABLE "kolab_cache_contact" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_contact" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_contact" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_contact" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_event" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_event" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_event" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_event" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_task" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_task" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_task" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_task" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_journal" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_journal" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_journal" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_journal" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_note" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_note" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_note" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_note" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_file" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_file" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_file" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_file" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_configuration" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_configuration" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_configuration" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_configuration" RENAME COLUMN "tags1" TO "tags"; + +ALTER TABLE "kolab_cache_freebusy" ADD "tags1" clob DEFAULT NULL; +UPDATE "kolab_cache_freebusy" SET "tags1" = "tags"; +ALTER TABLE "kolab_cache_freebusy" DROP COLUMN "tags"; +ALTER TABLE "kolab_cache_freebusy" RENAME COLUMN "tags1" TO "tags";
View file
kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/bin/readcache.sh
Added
@@ -0,0 +1,150 @@ +#!/usr/bin/env php +<?php + +/** + * Kolab storage cache testing script + * + * @author Thomas Bruederli <bruederli@kolabsys.com> + * + * Copyright (C) 2014, Kolab Systems AG <contact@kolabsys.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +define('INSTALL_PATH', realpath('.') . '/' ); +ini_set('display_errors', 1); +libxml_use_internal_errors(true); + +if (!file_exists(INSTALL_PATH . 'program/include/clisetup.php')) + die("Execute this from the Roundcube installation dir!\n\n"); + +require_once INSTALL_PATH . 'program/include/clisetup.php'; + +function print_usage() +{ + print "Usage: readcache.sh [OPTIONS] FOLDER\n"; + print "-h, --host IMAP host name\n"; + print "-l, --limit Limit the number of records to be listed\n"; +} + +// read arguments +$opts = get_opt(array( + 'h' => 'host', + 'l' => 'limit', + 'v' => 'verbose', +)); + +$folder = $opts[0]; +$imap_host = $opts['host']; + +$rcmail = rcube::get_instance(rcube::INIT_WITH_DB | rcube::INIT_WITH_PLUGINS); + +if (empty($imap_host)) { + $default_host = $rcmail->config->get('default_host'); + if (is_array($default_host)) { + list($k,$v) = each($default_host); + $imap_host = is_numeric($k) ? $v : $k; + } + else { + $imap_host = $default_host; + } + + // strip protocol prefix + $imap_host = preg_replace('!^[a-z]+://!', '', $imap_host); +} + +if (empty($folder) || empty($imap_host)) { + print_usage(); + exit; +} + +// connect to database +$db = $rcmail->get_dbh(); +$db->db_connect('r'); +if (!$db->is_connected() || $db->is_error()) + die("No DB connection\n"); + + +// resolve folder_id +if (!is_numeric($folder)) { + if (strpos($folder, '@')) { + list($mailbox, $domain) = explode('@', $folder); + list($username, $subpath) = explode('/', preg_replace('!^user/!', '', $mailbox), 2); + $folder_uri = 'imap://' . urlencode($username.'@'.$domain) . '@' . $imap_host . '/' . $subpath; + } + else { + die("Invalid mailbox identifier! Example: user/john.doe/Calendar@example.org\n"); + } + + print "Resolving folder $folder_uri..."; + $sql_result = $db->query('SELECT * FROM `kolab_folders` WHERE `resource`=?', $folder_uri); + if ($sql_result && ($folder_data = $db->fetch_assoc($sql_result))) { + $folder_id = $folder_data['folder_id']; + print $folder_id; + } + print "\n"; +} +else { + $folder_id = intval($folder); + $sql_result = $db->query('SELECT * FROM `kolab_folders` WHERE `folder_id`=?', $folder_id); + if ($sql_result) { + $folder_data = $db->fetch_assoc($sql_result); + } +} + +if (empty($folder_data)) { + die("Can't find cache mailbox for '$folder'\n"); +} + +print "Querying cache for folder $folder_id ($folder_data[type])...\n"; + +$extra_cols = array( + 'event' => array('dtstart','dtend'), + 'contact' => array('type'), +); + +$cache_table = $db->table_name('kolab_cache_' . $folder_data['type']); +$extra_cols_ = $extra_cols[$folder_data['type']] ?: array(); +$sql_arr = $db->fetch_assoc($db->query("SELECT COUNT(*) as cnt FROM `$cache_table` WHERE `folder_id`=?", intval($folder_id))); + +print "CTag = " . $folder_data['ctag'] . "\n"; +print "Lock = " . $folder_data['synclock'] . "\n"; +print "Count = " . $sql_arr['cnt'] . "\n"; +print "----------------------------------------------------------------------------------\n"; +print "<MSG>\t<UUID>\t<CHANGED>\t<DATA>\t<XML>\t"; +print join("\t", array_map(function($c) { return '<' . strtoupper($c) . '>'; }, $extra_cols_)); +print "\n----------------------------------------------------------------------------------\n"; + +$result = $db->limitquery("SELECT * FROM `$cache_table` WHERE `folder_id`=?", 0, $opts['limit'], intval($folder_id)); +while ($result && ($sql_arr = $db->fetch_assoc($result))) { + print $sql_arr['msguid'] . "\t" . $sql_arr['uid'] . "\t" . $sql_arr['changed']; + + // try to unserialize data block + $object = @unserialize(@base64_decode($sql_arr['data'])); + print "\t" . ($object === false ? 'FAIL!' : ($object['uid'] == $sql_arr['uid'] ? 'OK' : '!!!')); + + // check XML validity + $xml = simplexml_load_string($sql_arr['xml']); + print "\t" . ($xml === false ? 'FAIL!' : 'OK'); + + // print extra cols + array_walk($extra_cols_, function($c) use ($sql_arr) { + print "\t" . $sql_arr[$c]; + }); + + print "\n"; +} + +print "----------------------------------------------------------------------------------\n"; +echo "Done.\n";
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/composer.json -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/composer.json
Changed
@@ -4,7 +4,7 @@ "description": "Plugin to setup a basic environment for the interaction with a Kolab server.", "homepage": "http://git.kolab.org/roundcubemail-plugins-kolab/", "license": "AGPLv3", - "version": "1.1.0", + "version": "3.2.3", "authors": [ { "name": "Thomas Bruederli",
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/config.inc.php.dist -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/config.inc.php.dist
Changed
@@ -3,56 +3,57 @@ /* Configuration for libkolab */ // Enable caching of Kolab objects in local database -$rcmail_config['kolab_cache'] = true; +$config['kolab_cache'] = true; // Specify format version to write Kolab objects (must be a string value!) -$rcmail_config['kolab_format_version'] = '3.0'; +$config['kolab_format_version'] = '3.0'; // Optional override of the URL to read and trigger Free/Busy information of Kolab users // Defaults to https://<imap-server->/freebusy -$rcmail_config['kolab_freebusy_server'] = 'https://<some-host>/<freebusy-path>'; +$config['kolab_freebusy_server'] = null; // Enables listing of only subscribed folders. This e.g. will limit // folders in calendar view or available addressbooks -$rcmail_config['kolab_use_subscriptions'] = false; +$config['kolab_use_subscriptions'] = false; // List any of 'personal','shared','other' namespaces to be excluded from groupware folder listing // example: array('other'); -$rcmail_config['kolab_skip_namespace'] = null; +$config['kolab_skip_namespace'] = null; // Enables the use of displayname folder annotations as introduced in KEP:? // for displaying resource folder names (experimental!) -$rcmail_config['kolab_custom_display_names'] = false; +$config['kolab_custom_display_names'] = false; // Configuration of HTTP requests. // See http://pear.php.net/manual/en/package.http.http-request2.config.php // for list of supported configuration options (array keys) -$rcmail_config['kolab_http_request'] = array(); +$config['kolab_http_request'] = array(); // When kolab_cache is enabled Roundcube's messages cache will be redundant // when working on kolab folders. Here we can: // 2 - bypass messages/indexes cache completely // 1 - bypass only messages, but use index cache -$rcmail_config['kolab_messages_cache_bypass'] = 0; +$config['kolab_messages_cache_bypass'] = 0; // LDAP directory to find avilable users for folder sharing. // Either contains an array with LDAP addressbook configuration or refers to entry in $config['ldap_public']. // If not specified, the configuraton from 'kolab_auth_addressbook' will be used. -$rcmail_config['kolab_users_directory'] = null; +// Should be provided for multi-domain setups with placeholders like %dc, %d, %u, %fu or %dn. +$config['kolab_users_directory'] = null; // Filter to be used for resolving user folders in LDAP. // Defaults to the 'kolab_auth_filter' configuration option. -$rcmail_config['kolab_users_filter'] = '(&(objectclass=kolabInetOrgPerson)(|(uid=%u)(mail=%fu)))'; +$config['kolab_users_filter'] = '(&(objectclass=kolabInetOrgPerson)(|(uid=%u)(mail=%fu)))'; // Which property of the LDAP user record to use for user folder mapping in IMAP. // Defaults to the 'kolab_auth_login' configuration option. -$rcmail_config['kolab_users_id_attrib'] = null; +$config['kolab_users_id_attrib'] = null; // Use these attributes when searching users in LDAP -$rcmail_config['kolab_users_search_attrib'] = array('cn','mail','alias'); +$config['kolab_users_search_attrib'] = array('cn','mail','alias'); // JSON-RPC endpoint configuration of the Bonnie web service providing historic data for groupware objects -$rcmail_config['kolab_bonnie_api'] = array( +$config['kolab_bonnie_api'] = array( 'uri' => 'https://<kolab-hostname>:8080/api/rpc', 'user' => 'webclient', 'pass' => 'Welcome2KolabSystems',
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/js/folderlist.js -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/js/folderlist.js
Changed
@@ -68,7 +68,7 @@ id = li.attr('id').replace(new RegExp('^'+p.id_prefix), ''); if (p.id_decode) id = p.id_decode(id); - node = search_results_widget.get_node(id), + node = search_results_widget.get_node(id); has_children = node.children && node.children.length; e.stopPropagation(); @@ -81,6 +81,11 @@ li.children().first() .toggleClass('subscribed') .find('input[type=checkbox]').get(0).checked = true; + + if (has_children && search_results[id].group == 'other user') { + li.find('ul li > div').addClass('subscribed') + .find('a.subscribed').attr('aria-checked', 'true');; + } } else if (!this.checked) { return; @@ -97,6 +102,11 @@ li.remove(); } + // set partial subscription status + if (search_results[id].subscribed && search_results[id].parent && search_results[id].group == 'other') { + parent_subscription_status($(me.get_item(id, true))); + } + // set focus to cloned checkbox if (rcube_event.is_keyboard(e)) { $(me.get_item(id, true)).find('input[type=checkbox]').first().focus(); @@ -149,7 +159,8 @@ prop = search_results[id], parent_id = prop.parent || null, has_children = node.children && node.children.length, - dom_node = has_children ? li.children().first().clone(true, true) : li.children().first(); + dom_node = has_children ? li.children().first().clone(true, true) : li.children().first(), + childs = []; // find parent node and insert at the right place if (parent_id && me.get_node(parent_id)) { @@ -171,18 +182,58 @@ .removeClass('virtual'); } else { + // copy childs, too + if (has_children && prop.group == 'other user') { + for (var cid, j=0; j < node.children.length; j++) { + if ((cid = node.children[j].id) && search_results[cid]) { + childs.push(search_results_widget.get_node(cid)); + } + } + } + // move this result item to the main list widget me.insert({ id: id, classes: [ prop.group || '' ], virtual: prop.virtual, html: dom_node, + level: node.level, + collapsed: true, + children: childs }, parent_id, prop.group); } delete prop.html; prop.active = active; me.triggerEvent('insert-item', { id: id, data: prop, item: li }); + + // register childs, too + if (childs.length) { + for (var cid, j=0; j < node.children.length; j++) { + if ((cid = node.children[j].id) && search_results[cid]) { + prop = search_results[cid]; + delete prop.html; + prop.active = false; + me.triggerEvent('insert-item', { id: cid, data: prop }); + } + } + } + } + + // update the given item's parent's (partial) subscription state + function parent_subscription_status(li) + { + var top_li = li.closest(me.container.children('li')), + all_childs = $('li > div:not(.treetoggle)', top_li), + subscribed = all_childs.filter('.subscribed').length; + + if (subscribed == 0) { + top_li.children('div:first').removeClass('subscribed partial'); + } + else { + top_li.children('div:first') + .addClass('subscribed')[subscribed < all_childs.length ? 'addClass' : 'removeClass']('partial'); + } } // do some magic when search is performed on the widget @@ -239,25 +290,60 @@ } }); - this.container.on('click', 'a.subscribed, span.subscribed', function(e){ + this.container.on('click', 'a.subscribed, span.subscribed', function(e) { var li = $(this).closest('li'), id = li.attr('id').replace(new RegExp('^'+p.id_prefix), ''), - div = li.children().first(); + div = li.children().first(), + is_subscribed; - if (me.is_search()) - id = id.replace(/--xsR$/, ''); + if (me.is_search()) { + id = id.replace(/--xsR$/, ''); + li = $(me.get_item(id, true)); + div = $(div).add(li.children().first()); + } if (p.id_decode) id = p.id_decode(id); div.toggleClass('subscribed'); - $(this).attr('aria-checked', div.hasClass('subscribed') ? 'true' : 'false'); - me.triggerEvent('subscribe', { id: id, subscribed: div.hasClass('subscribed'), item: li }); + is_subscribed = div.hasClass('subscribed'); + $(this).attr('aria-checked', is_subscribed ? 'true' : 'false'); + me.triggerEvent('subscribe', { id: id, subscribed: is_subscribed, item: li }); + + // update subscribe state of all 'virtual user' child folders + if (li.hasClass('other user')) { + $('ul li > div', li).each(function() { + $(this)[is_subscribed ? 'addClass' : 'removeClass']('subscribed'); + $('.subscribed', div).attr('aria-checked', is_subscribed ? 'true' : 'false'); + }); + div.removeClass('partial'); + } + // propagate subscription state to parent 'virtual user' folder + else if (li.closest('li.other.user').length) { + parent_subscription_status(li); + } e.stopPropagation(); return false; - }) + }); + + this.container.on('click', 'a.remove', function(e) { + var li = $(this).closest('li'), + id = li.attr('id').replace(new RegExp('^'+p.id_prefix), ''); + + if (me.is_search()) { + id = id.replace(/--xsR$/, ''); + li = $(me.get_item(id, true)); + } + if (p.id_decode) + id = p.id_decode(id); + + me.triggerEvent('remove', { id: id, item: li }); + + e.stopPropagation(); + return false; + }); } // link prototype from base class
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_bonnie_api.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_bonnie_api.php
Changed
@@ -36,7 +36,7 @@ */ public function __construct($config) { - $this->config = $confg; + $this->config = $config; $this->client = new kolab_bonnie_api_client($config['uri'], $config['timeout'] ?: 5, (bool)$config['debug']);
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_format.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_format.php
Changed
@@ -47,6 +47,117 @@ const KTYPE_PREFIX = 'application/x-vnd.kolab.'; const PRODUCT_ID = 'Roundcube-libkolab-1.1'; + // mapping table for valid PHP timezones not supported by libkolabxml + // basically the entire list of ftp://ftp.iana.org/tz/data/backward + protected static $timezone_map = array( + 'Africa/Asmera' => 'Africa/Asmara', + 'Africa/Timbuktu' => 'Africa/Abidjan', + 'America/Argentina/ComodRivadavia' => 'America/Argentina/Catamarca', + 'America/Atka' => 'America/Adak', + 'America/Buenos_Aires' => 'America/Argentina/Buenos_Aires', + 'America/Catamarca' => 'America/Argentina/Catamarca', + 'America/Coral_Harbour' => 'America/Atikokan', + 'America/Cordoba' => 'America/Argentina/Cordoba', + 'America/Ensenada' => 'America/Tijuana', + 'America/Fort_Wayne' => 'America/Indiana/Indianapolis', + 'America/Indianapolis' => 'America/Indiana/Indianapolis', + 'America/Jujuy' => 'America/Argentina/Jujuy', + 'America/Knox_IN' => 'America/Indiana/Knox', + 'America/Louisville' => 'America/Kentucky/Louisville', + 'America/Mendoza' => 'America/Argentina/Mendoza', + 'America/Porto_Acre' => 'America/Rio_Branco', + 'America/Rosario' => 'America/Argentina/Cordoba', + 'America/Virgin' => 'America/Port_of_Spain', + 'Asia/Ashkhabad' => 'Asia/Ashgabat', + 'Asia/Calcutta' => 'Asia/Kolkata', + 'Asia/Chungking' => 'Asia/Shanghai', + 'Asia/Dacca' => 'Asia/Dhaka', + 'Asia/Katmandu' => 'Asia/Kathmandu', + 'Asia/Macao' => 'Asia/Macau', + 'Asia/Saigon' => 'Asia/Ho_Chi_Minh', + 'Asia/Tel_Aviv' => 'Asia/Jerusalem', + 'Asia/Thimbu' => 'Asia/Thimphu', + 'Asia/Ujung_Pandang' => 'Asia/Makassar', + 'Asia/Ulan_Bator' => 'Asia/Ulaanbaatar', + 'Atlantic/Faeroe' => 'Atlantic/Faroe', + 'Atlantic/Jan_Mayen' => 'Europe/Oslo', + 'Australia/ACT' => 'Australia/Sydney', + 'Australia/Canberra' => 'Australia/Sydney', + 'Australia/LHI' => 'Australia/Lord_Howe', + 'Australia/NSW' => 'Australia/Sydney', + 'Australia/North' => 'Australia/Darwin', + 'Australia/Queensland' => 'Australia/Brisbane', + 'Australia/South' => 'Australia/Adelaide', + 'Australia/Tasmania' => 'Australia/Hobart', + 'Australia/Victoria' => 'Australia/Melbourne', + 'Australia/West' => 'Australia/Perth', + 'Australia/Yancowinna' => 'Australia/Broken_Hill', + 'Brazil/Acre' => 'America/Rio_Branco', + 'Brazil/DeNoronha' => 'America/Noronha', + 'Brazil/East' => 'America/Sao_Paulo', + 'Brazil/West' => 'America/Manaus', + 'Canada/Atlantic' => 'America/Halifax', + 'Canada/Central' => 'America/Winnipeg', + 'Canada/East-Saskatchewan' => 'America/Regina', + 'Canada/Eastern' => 'America/Toronto', + 'Canada/Mountain' => 'America/Edmonton', + 'Canada/Newfoundland' => 'America/St_Johns', + 'Canada/Pacific' => 'America/Vancouver', + 'Canada/Saskatchewan' => 'America/Regina', + 'Canada/Yukon' => 'America/Whitehorse', + 'Chile/Continental' => 'America/Santiago', + 'Chile/EasterIsland' => 'Pacific/Easter', + 'Cuba' => 'America/Havana', + 'Egypt' => 'Africa/Cairo', + 'Eire' => 'Europe/Dublin', + 'Europe/Belfast' => 'Europe/London', + 'Europe/Tiraspol' => 'Europe/Chisinau', + 'GB' => 'Europe/London', + 'GB-Eire' => 'Europe/London', + 'Greenwich' => 'Etc/GMT', + 'Hongkong' => 'Asia/Hong_Kong', + 'Iceland' => 'Atlantic/Reykjavik', + 'Iran' => 'Asia/Tehran', + 'Israel' => 'Asia/Jerusalem', + 'Jamaica' => 'America/Jamaica', + 'Japan' => 'Asia/Tokyo', + 'Kwajalein' => 'Pacific/Kwajalein', + 'Libya' => 'Africa/Tripoli', + 'Mexico/BajaNorte' => 'America/Tijuana', + 'Mexico/BajaSur' => 'America/Mazatlan', + 'Mexico/General' => 'America/Mexico_City', + 'NZ' => 'Pacific/Auckland', + 'NZ-CHAT' => 'Pacific/Chatham', + 'Navajo' => 'America/Denver', + 'PRC' => 'Asia/Shanghai', + 'Pacific/Ponape' => 'Pacific/Pohnpei', + 'Pacific/Samoa' => 'Pacific/Pago_Pago', + 'Pacific/Truk' => 'Pacific/Chuuk', + 'Pacific/Yap' => 'Pacific/Chuuk', + 'Poland' => 'Europe/Warsaw', + 'Portugal' => 'Europe/Lisbon', + 'ROC' => 'Asia/Taipei', + 'ROK' => 'Asia/Seoul', + 'Singapore' => 'Asia/Singapore', + 'Turkey' => 'Europe/Istanbul', + 'UCT' => 'Etc/UCT', + 'US/Alaska' => 'America/Anchorage', + 'US/Aleutian' => 'America/Adak', + 'US/Arizona' => 'America/Phoenix', + 'US/Central' => 'America/Chicago', + 'US/East-Indiana' => 'America/Indiana/Indianapolis', + 'US/Eastern' => 'America/New_York', + 'US/Hawaii' => 'Pacific/Honolulu', + 'US/Indiana-Starke' => 'America/Indiana/Knox', + 'US/Michigan' => 'America/Detroit', + 'US/Mountain' => 'America/Denver', + 'US/Pacific' => 'America/Los_Angeles', + 'US/Samoa' => 'Pacific/Pago_Pago', + 'Universal' => 'Etc/UTC', + 'W-SU' => 'Europe/Moscow', + 'Zulu' => 'Etc/UTC', + ); + /** * Factory method to instantiate a kolab_format object of the given type and version * @@ -63,7 +174,7 @@ if (!self::supports($version)) return PEAR::raiseError("No support for Kolab format version " . $version); - $type = preg_replace('/configuration\.[a-z.]+$/', 'configuration', $type); + $type = preg_replace('/configuration\.[a-z._]+$/', 'configuration', $type); $suffix = preg_replace('/[^a-z]+/', '', $type); $classname = 'kolab_format_' . $suffix; if (class_exists($classname)) @@ -112,7 +223,7 @@ if ($tz) $datetime->setTimezone($tz); } else if (is_string($datetime) && strlen($datetime)) { - $datetime = new DateTime($datetime, $tz ?: null); + $datetime = $tz ? new DateTime($datetime, $tz) : new DateTime($datetime); } } catch (Exception $e) {} @@ -123,10 +234,15 @@ if (!$dateonly) $result->setTime($datetime->format('G'), $datetime->format('i'), $datetime->format('s')); - if ($tz && in_array($tz->getName(), array('UTC', 'GMT', '+00:00', 'Z'))) + if ($tz && in_array($tz->getName(), array('UTC', 'GMT', '+00:00', 'Z'))) { $result->setUTC(true); - else if ($tz !== false) - $result->setTimezone($tz->getName()); + } + else if ($tz !== false) { + $tzid = $tz->getName(); + if (array_key_exists($tzid, self::$timezone_map)) + $tzid = self::$timezone_map[$tzid]; + $result->setTimezone($tzid); + } } return $result;
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_format_configuration.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_format_configuration.php
Changed
@@ -24,7 +24,7 @@ class kolab_format_configuration extends kolab_format { - public $CTYPE = 'application/x-vnd.kolab.configuration'; + public $CTYPE = 'application/vnd.kolab+xml'; public $CTYPEv2 = 'application/x-vnd.kolab.configuration'; protected $objclass = 'Configuration'; @@ -32,12 +32,14 @@ protected $write_func = 'writeConfiguration'; private $type_map = array( - 'category' => Configuration::TypeCategoryColor, - 'dictionary' => Configuration::TypeDictionary, - 'relation' => Configuration::TypeRelation, - 'snippet' => Configuration::TypeSnippet, + 'category' => Configuration::TypeCategoryColor, + 'dictionary' => Configuration::TypeDictionary, + 'file_driver' => Configuration::TypeFileDriver, + 'relation' => Configuration::TypeRelation, + 'snippet' => Configuration::TypeSnippet, ); + private $driver_settings_fields = array('host', 'port', 'username', 'password'); /** * Set properties to the kolabformat object @@ -46,9 +48,6 @@ */ public function set(&$object) { - // set common object properties - parent::set($object); - // read type-specific properties switch ($object['type']) { case 'dictionary': @@ -63,6 +62,21 @@ $this->obj = new Configuration($categories); break; + case 'file_driver': + $driver = new FileDriver($object['driver'], $object['title']); + + $driver->setEnabled((bool) $object['enabled']); + + foreach ($this->driver_settings_fields as $field) { + $value = $object[$field]; + if ($value !== null) { + $driver->{'set' . ucfirst($field)}($value); + } + } + + $this->obj = new Configuration($driver); + break; + case 'relation': $relation = new Relation(strval($object['name']), strval($object['category'])); @@ -109,7 +123,12 @@ } // adjust content-type string - $this->CTYPE = $this->CTYPEv2 = 'application/x-vnd.kolab.configuration.' . $object['type']; + $this->CTYPEv2 = 'application/x-vnd.kolab.configuration.' . $object['type']; + + // reset old object data, otherwise set() will overwrite current data (#4095) + $this->xmldata = null; + // set common object properties + parent::set($object); // cache this data $this->data = $object; @@ -157,6 +176,19 @@ // TODO: implement this break; + case 'file_driver': + $driver = $this->obj->fileDriver(); + + $object['driver'] = $driver->driver(); + $object['title'] = $driver->title(); + $object['enabled'] = $driver->enabled(); + + foreach ($this->driver_settings_fields as $field) { + $object[$field] = $driver->{$field}(); + } + + break; + case 'relation': $relation = $this->obj->relation(); @@ -192,7 +224,7 @@ // adjust content-type string if ($object['type']) { - $this->CTYPE = $this->CTYPEv2 = 'application/x-vnd.kolab.configuration.' . $object['type']; + $this->CTYPEv2 = 'application/x-vnd.kolab.configuration.' . $object['type']; } $this->data = $object; @@ -241,6 +273,10 @@ else if (!empty($member['params']['message-id'])) { $words[] = $member['params']['message-id']; } + else { + // derive message identifier from URI + $words[] = md5($url); + } } return $words;
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_format_event.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_format_event.php
Changed
@@ -96,11 +96,13 @@ // save recurrence exceptions if (is_array($object['recurrence']) && $object['recurrence']['EXCEPTIONS']) { $vexceptions = new vectorevent; - foreach((array)$object['recurrence']['EXCEPTIONS'] as $exception) { + foreach((array)$object['recurrence']['EXCEPTIONS'] as $i => $exception) { $exevent = new kolab_format_event; - $exevent->set($this->compact_exception($exception, $object)); // only save differing values + $exevent->set(($compacted = $this->compact_exception($exception, $object))); // only save differing values $exevent->obj->setRecurrenceID(self::get_datetime($exception['start'], null, true), (bool)$exception['thisandfuture']); $vexceptions->push($exevent->obj); + // write cleaned-up exception data back to memory/cache + $object['recurrence']['EXCEPTIONS'][$i] = $this->expand_exception($compacted, $object); } $this->obj->setExceptions($vexceptions); } @@ -217,6 +219,12 @@ } } + foreach ($master as $prop => $value) { + if (isset($exception[$prop]) && gettype($exception[$prop]) == gettype($value) && $exception[$prop] == $value) { + unset($exception[$prop]); + } + } + return $exception; }
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_format_xcal.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_format_xcal.php
Changed
@@ -237,7 +237,7 @@ if ($type == 'EMAIL') { $valarm['attendees'] = array(); - $attvec = $this->obj->attendees(); + $attvec = $alarm->attendees(); for ($j=0; $j < $attvec->size(); $j++) { $cr = $attvec->get($j); $valarm['attendees'][] = $cr->email(); @@ -364,14 +364,17 @@ $cr = new ContactReference(ContactReference::EmailReference, $attendee['email']); $cr->setName($attendee['name']); + // set attendee RSVP if missing + if (!isset($attendee['rsvp'])) { + $object['attendees'][$i]['rsvp'] = $attendee['rsvp'] = true; + } + $att = new Attendee; $att->setContact($cr); $att->setPartStat($this->part_status_map[$attendee['status']]); $att->setRole($this->role_map[$attendee['role']] ? $this->role_map[$attendee['role']] : kolabformat::Required); $att->setCutype($this->cutype_map[$attendee['cutype']] ? $this->cutype_map[$attendee['cutype']] : kolabformat::CutypeIndividual); - $att->setRSVP((bool)$attendee['rsvp'] || $reschedule); - - $object['attendees'][$i]['rsvp'] = $attendee['rsvp'] || $reschedule; + $att->setRSVP((bool)$attendee['rsvp']); if (!empty($attendee['delegated-from'])) { $vdelegators = new vectorcontactref;
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage.php
Changed
@@ -35,6 +35,11 @@ const UID_KEY_PRIVATE = '/private/vendor/kolab/uniqueid'; const UID_KEY_CYRUS = '/shared/vendor/cmu/cyrus-imapd/uniqueid'; + const ERROR_IMAP_CONN = 1; + const ERROR_CACHE_DB = 2; + const ERROR_NO_PERMISSION = 3; + const ERROR_INVALID_FOLDER = 4; + public static $version = '3.0'; public static $last_error; public static $encode_ids = false; @@ -139,7 +144,6 @@ return self::$ldap; } - /** * Get a list of storage folders for the given data type * @@ -154,7 +158,7 @@ if (self::setup()) { foreach ((array)self::list_folders('', '*', $type, $subscribed, $folderdata) as $foldername) { - $folders[$foldername] = new kolab_storage_folder($foldername, $folderdata[$foldername]); + $folders[$foldername] = new kolab_storage_folder($foldername, $type, $folderdata[$foldername]); } } @@ -171,26 +175,26 @@ { if (self::setup()) { foreach ((array)self::list_folders('', '*', $type . '.default', false, $folderdata) as $foldername) { - return new kolab_storage_folder($foldername, $folderdata[$foldername]); + return new kolab_storage_folder($foldername, $type, $folderdata[$foldername]); } } return null; } - /** * Getter for a specific storage folder * - * @param string IMAP folder to access (UTF7-IMAP) + * @param string IMAP folder to access (UTF7-IMAP) + * @param string Expected folder type + * * @return object kolab_storage_folder The folder object */ - public static function get_folder($folder) + public static function get_folder($folder, $type = null) { - return self::setup() ? new kolab_storage_folder($folder) : null; + return self::setup() ? new kolab_storage_folder($folder, $type) : null; } - /** * Getter for a single Kolab object, identified by its UID. * This will search all folders storing objects of the given type. @@ -203,11 +207,11 @@ { self::setup(); $folder = null; - foreach ((array)self::list_folders('', '*', $type) as $foldername) { + foreach ((array)self::list_folders('', '*', $type, null, $folderdata) as $foldername) { if (!$folder) - $folder = new kolab_storage_folder($foldername); + $folder = new kolab_storage_folder($foldername, $type, $folderdata[$foldername]); else - $folder->set_folder($foldername); + $folder->set_folder($foldername, $type, $folderdata[$foldername]); if ($object = $folder->get_object($uid, '*')) return $object; @@ -230,11 +234,11 @@ $folder = null; $result = array(); - foreach ((array)self::list_folders('', '*', $type) as $foldername) { + foreach ((array)self::list_folders('', '*', $type, null, $folderdata) as $foldername) { if (!$folder) - $folder = new kolab_storage_folder($foldername); + $folder = new kolab_storage_folder($foldername, $type, $folderdata[$foldername]); else - $folder->set_folder($foldername); + $folder->set_folder($foldername, $type, $folderdata[$foldername]); foreach ($folder->select($query, '*') as $object) { $result[] = $object; @@ -245,13 +249,16 @@ } /** - * + * Returns Free-busy server URL */ public static function get_freebusy_server() { - return unslashify(self::$config->get('kolab_freebusy_server', 'https://' . $_SESSION['imap_host'] . '/freebusy')); - } + $url = 'https://' . $_SESSION['imap_host'] . '/freebusy'; + $url = self::$config->get('kolab_freebusy_server', $url); + $url = rcube_utils::resolve_url($url); + return unslashify($url); + } /** * Compose an URL to query the free/busy status for the given user @@ -261,7 +268,6 @@ return self::get_freebusy_server() . '/' . $email . '.ifb'; } - /** * Creates folder ID from folder name * @@ -276,7 +282,6 @@ asciiwords(strtr($folder, '/.-', '___')); } - /** * Encode the given ID to a safe ascii representation * @@ -300,7 +305,6 @@ return base64_decode(str_pad(strtr($id, '-_', '+/'), strlen($id) % 4, '=', STR_PAD_RIGHT)); } - /** * Return the (first) path of the requested IMAP namespace * @@ -403,13 +407,13 @@ 'oldname' => $oldname, 'newname' => $newname)); $oldfolder = self::get_folder($oldname); - $active = self::folder_is_active($oldname); - $success = self::$imap->rename_folder($oldname, $newname); + $active = self::folder_is_active($oldname); + $success = self::$imap->rename_folder($oldname, $newname); self::$last_error = self::$imap->get_error_str(); // pass active state to new folder name if ($success && $active) { - self::set_state($oldnam, false); + self::set_state($oldname, false); self::set_state($newname, true); } @@ -901,7 +905,7 @@ !self::folder_is_subscribed($foldername, true) && !in_array(self::$imap->folder_namespace($foldername), (array)$exclude_ns) ) { - $folders[] = new kolab_storage_folder($foldername, $folderdata[$foldername]); + $folders[] = new kolab_storage_folder($foldername, $type, $folderdata[$foldername]); } } @@ -974,7 +978,7 @@ $parent_parent = join($delim, $path); if (!$refs[$parent]) { if ($folder->type && self::folder_type($parent) == $folder->type) { - $refs[$parent] = new kolab_storage_folder($parent, $folder->type); + $refs[$parent] = new kolab_storage_folder($parent, $folder->type, $folder->type); $refs[$parent]->parent = $parent_parent; } else if ($parent_parent == $other_ns) { @@ -1049,7 +1053,8 @@ foreach ((array)self::$imap->get_metadata('%', $type_keys) as $folder => $metadata) { if (!in_array($folder, $blacklist)) { $folderdata[$folder] = $metadata; - if ($data = self::$imap->get_metadata($folder.$delimiter.'*', $type_keys)) { + $opts = self::$imap->folder_attributes($folder); + if (!in_array('\\HasNoChildren', $opts) && ($data = self::$imap->get_metadata($folder.$delimiter.'*', $type_keys))) { $folderdata += $data; } } @@ -1085,7 +1090,7 @@ return $types[self::CTYPE_KEY_PRIVATE]; } else if (!empty($types[self::CTYPE_KEY])) { - list($ctype, $suffix) = explode('.', $types[self::CTYPE_KEY]); + list($ctype, ) = explode('.', $types[self::CTYPE_KEY]); return $ctype; } return null; @@ -1104,8 +1109,10 @@ self::setup(); // return in-memory cached result - if (is_array(self::$typedata['*']) && array_key_exists($folder, self::$typedata['*'])) { - return self::$typedata['*'][$folder]; + foreach (self::$typedata as $typedata) { + if (array_key_exists($folder, $typedata)) { + return $typedata[$folder]; + } } $metadata = self::$imap->get_metadata($folder, array(self::CTYPE_KEY, self::CTYPE_KEY_PRIVATE)); @@ -1190,7 +1197,7 @@ } } else if (self::$imap->subscribe($folder)) { - self::$subscriptions === null; + self::$subscriptions = null; return true; } @@ -1218,7 +1225,7 @@ return true; } else if (self::$imap->unsubscribe($folder)) { - self::$subscriptions === null; + self::$subscriptions = null; return true; } @@ -1461,7 +1468,7 @@ $user_attrib = self::$config->get('kolab_users_id_attrib', self::$config->get('kolab_auth_login', 'mail')); array_walk($results, function(&$user, $dn) use ($root, $user_attrib) { - list($localpart, $domain) = explode('@', $user[$user_attrib]); + list($localpart, ) = explode('@', $user[$user_attrib]); $user['kolabtargetfolder'] = $root . $localpart; }); @@ -1534,6 +1541,16 @@ $folders[$foldername] = new kolab_storage_folder_user($foldername, $other_ns); } } + + // for every (subscribed) user folder, list all (unsubscribed) subfolders + foreach ($folders as $userfolder) { + foreach ((array)self::list_folders($userfolder->name . $delimiter, '*', $type, false, $folderdata) as $foldername) { + if (!$folders[$foldername]) { + $folders[$foldername] = new kolab_storage_folder($foldername, $type, $folderdata[$foldername]); + $userfolder->children[] = $folders[$foldername]; + } + } + } } return $folders; @@ -1549,8 +1566,6 @@ { $db = rcmail::get_instance()->get_dbh(); $prefix = 'imap://' . urlencode($args['username']) . '@' . $args['host'] . '/%'; - $db->query("DELETE FROM " . $db->table_name('kolab_folders') . " WHERE resource LIKE ?", $prefix); + $db->query("DELETE FROM " . $db->table_name('kolab_folders', true) . " WHERE `resource` LIKE ?", $prefix); } - } -
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage_cache.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage_cache.php
Changed
@@ -26,6 +26,8 @@ { const DB_DATE_FORMAT = 'Y-m-d H:i:s'; + public $sync_complete = false; + protected $db; protected $imap; protected $folder; @@ -46,6 +48,7 @@ protected $extra_cols = array(); protected $order_by = null; protected $limit = null; + protected $error = 0; /** @@ -78,6 +81,7 @@ $this->db = $rcmail->get_dbh(); $this->imap = $rcmail->get_storage(); $this->enabled = $rcmail->config->get('kolab_cache', false); + $this->folders_table = $this->db->table_name('kolab_folders'); if ($this->enabled) { // always read folder cache and lock state from DB master @@ -96,8 +100,7 @@ */ public function select_by_id($folder_id) { - $folders_table = $this->db->table_name('kolab_folders'); - $sql_arr = $this->db->fetch_assoc($this->db->query("SELECT * FROM $folders_table WHERE folder_id=?", $folder_id)); + $sql_arr = $this->db->fetch_assoc($this->db->query("SELECT * FROM `{$this->folders_table}` WHERE `folder_id` = ?", $folder_id)); if ($sql_arr) { $this->metadata = $sql_arr; $this->folder_id = $sql_arr['folder_id']; @@ -118,14 +121,13 @@ { $this->folder = $storage_folder; - if (empty($this->folder->name)) { + if (empty($this->folder->name) || !$this->folder->valid) { $this->ready = false; return; } // compose fully qualified ressource uri for this instance $this->resource_uri = $this->folder->get_resource_uri(); - $this->folders_table = $this->db->table_name('kolab_folders'); $this->cache_table = $this->db->table_name('kolab_cache_' . $this->folder->type); $this->ready = $this->enabled && !empty($this->folder->type); $this->folder_id = null; @@ -149,6 +151,16 @@ } /** + * Returns code of last error + * + * @return int Error code + */ + public function get_error() + { + return $this->error; + } + + /** * Synchronize local cache data with remote */ public function synchronize() @@ -158,7 +170,14 @@ return; // increase time limit - @set_time_limit($this->max_sync_lock_time); + @set_time_limit($this->max_sync_lock_time - 60); + + // get effective time limit we have for synchronization (~70% of the execution time) + $time_limit = ini_get('max_execution_time') * 0.7; + $sync_start = time(); + + // assume sync will be completed + $this->sync_complete = true; if (!$this->ready) { // kolab cache is disabled, synchronize IMAP mailbox cache only @@ -188,20 +207,26 @@ // read cache index $sql_result = $this->db->query( - "SELECT msguid, uid FROM $this->cache_table WHERE folder_id=?", + "SELECT `msguid`, `uid` FROM `{$this->cache_table}` WHERE `folder_id` = ?", $this->folder_id ); $old_index = array(); while ($sql_arr = $this->db->fetch_assoc($sql_result)) { $old_index[] = $sql_arr['msguid']; - $this->uid2msg[$sql_arr['uid']] = $sql_arr['msguid']; } // fetch new objects from imap + $i = 0; foreach (array_diff($imap_index, $old_index) as $msguid) { if ($object = $this->folder->read_object($msguid, '*')) { $this->_extended_insert($msguid, $object); + + // check time limit and abort sync if running too long + if (++$i % 50 == 0 && time() - $sync_start > $time_limit) { + $this->sync_complete = false; + break; + } } } $this->_extended_insert(0, null); @@ -211,13 +236,15 @@ if (!empty($del_index)) { $quoted_ids = join(',', array_map(array($this->db, 'quote'), $del_index)); $this->db->query( - "DELETE FROM $this->cache_table WHERE folder_id=? AND msguid IN ($quoted_ids)", + "DELETE FROM `{$this->cache_table}` WHERE `folder_id` = ? AND `msguid` IN ($quoted_ids)", $this->folder_id ); } // update ctag value (will be written to database in _sync_unlock()) - $this->metadata['ctag'] = $this->folder->get_ctag(); + if ($this->sync_complete) { + $this->metadata['ctag'] = $this->folder->get_ctag(); + } } $this->bypass(false); @@ -227,6 +254,7 @@ } } + $this->check_error(); $this->synched = time(); } @@ -243,7 +271,12 @@ { // delegate to another cache instance if ($foldername && $foldername != $this->folder->name) { - return kolab_storage::get_folder($foldername)->cache->get($msguid, $type); + $success = false; + if ($targetfolder = kolab_storage::get_folder($foldername)) { + $success = $targetfolder->cache->get($msguid, $type); + $this->error = $targetfolder->cache->get_error(); + } + return $success; } // load object if not in memory @@ -252,8 +285,8 @@ $this->_read_folder_data(); $sql_result = $this->db->query( - "SELECT * FROM $this->cache_table ". - "WHERE folder_id=? AND msguid=?", + "SELECT * FROM `{$this->cache_table}` ". + "WHERE `folder_id` = ? AND `msguid` = ?", $this->folder_id, $msguid ); @@ -265,11 +298,14 @@ // fetch from IMAP if not present in cache if (empty($this->objects[$msguid])) { - $result = $this->_fetch(array($msguid), $type, $foldername); - $this->objects = array($msguid => $result[0]); // store only this object in memory (#2827) + if ($object = $this->folder->read_object($msguid, $type ?: '*', $foldername)) { + $this->objects = array($msguid => $object); + $this->set($msguid, $object); + } } } + $this->check_error(); return $this->objects[$msguid]; } @@ -289,14 +325,17 @@ // delegate to another cache instance if ($foldername && $foldername != $this->folder->name) { - kolab_storage::get_folder($foldername)->cache->set($msguid, $object); - return; + if ($targetfolder = kolab_storage::get_folder($foldername)) { + $targetfolder->cache->set($msguid, $object); + $this->error = $targetfolder->cache->get_error(); + } + return; } // remove old entry if ($this->ready) { $this->_read_folder_data(); - $this->db->query("DELETE FROM $this->cache_table WHERE folder_id=? AND msguid=?", + $this->db->query("DELETE FROM `{$this->cache_table}` WHERE `folder_id` = ? AND `msguid` = ?", $this->folder_id, $msguid); } @@ -308,6 +347,8 @@ // ...or set in-memory cache to false $this->objects[$msguid] = $object; } + + $this->check_error(); } @@ -343,13 +384,13 @@ $cols[$idx] = "$col = ?"; } - $query = "UPDATE $this->cache_table SET " . implode(', ', $cols) - . " WHERE folder_id = ? AND msguid = ?"; + $query = "UPDATE `{$this->cache_table}` SET " . implode(', ', $cols) + . " WHERE `folder_id` = ? AND `msguid` = ?"; $args[] = $this->folder_id; $args[] = $olduid; } else { - $query = "INSERT INTO $this->cache_table (created, " . implode(', ', $cols) + $query = "INSERT INTO `{$this->cache_table}` (`created`, " . implode(', ', $cols) . ") VALUES (" . $this->db->now() . str_repeat(', ?', count($cols)) . ")"; } @@ -366,6 +407,8 @@ // keep a copy in memory for fast access $this->objects = array($msguid => $object); $this->uid2msg = array($object['uid'] => $msguid); + + $this->check_error(); } @@ -374,20 +417,21 @@ * * @param string Entry's IMAP message UID * @param string Entry's Object UID - * @param string Target IMAP folder to move it to + * @param object kolab_storage_folder Target storage folder instance */ - public function move($msguid, $uid, $target_folder) + public function move($msguid, $uid, $target) { if ($this->ready) { - $target = kolab_storage::get_folder($target_folder); + // clear cached uid mapping and force new lookup + unset($target->cache->uid2msg[$uid]); // resolve new message UID in target folder if ($new_msguid = $target->cache->uid2msguid($uid)) { $this->_read_folder_data(); $this->db->query( - "UPDATE $this->cache_table SET folder_id=?, msguid=? ". - "WHERE folder_id=? AND msguid=?", + "UPDATE `{$this->cache_table}` SET `folder_id` = ?, `msguid` = ? ". + "WHERE `folder_id` = ? AND `msguid` = ?", $target->cache->get_folder_id(), $new_msguid, $this->folder_id, @@ -404,13 +448,14 @@ } unset($this->uid2msg[$uid]); + $this->check_error(); } /** * Remove all objects from local cache */ - public function purge($type = null) + public function purge() { if (!$this->ready) { return true; @@ -419,7 +464,7 @@ $this->_read_folder_data(); $result = $this->db->query( - "DELETE FROM $this->cache_table WHERE folder_id=?", + "DELETE FROM `{$this->cache_table}` WHERE `folder_id` = ?", $this->folder_id ); @@ -437,15 +482,20 @@ return; } - $target = kolab_storage::get_folder($new_folder); + if ($target = kolab_storage::get_folder($new_folder)) { + // resolve new message UID in target folder + $this->db->query( + "UPDATE `{$this->folders_table}` SET `resource` = ? ". + "WHERE `resource` = ?", + $target->get_resource_uri(), + $this->resource_uri + ); - // resolve new message UID in target folder - $this->db->query( - "UPDATE $this->folders_table SET resource=? ". - "WHERE resource=?", - $target->get_resource_uri(), - $this->resource_uri - ); + $this->check_error(); + } + else { + $this->error = kolab_storage::ERROR_IMAP_CONN; + } } /** @@ -466,8 +516,8 @@ // fetch full object data on one query if a small result set is expected $fetchall = !$uids && ($this->limit ? $this->limit[0] : $this->count($query)) < 500; - $sql_query = "SELECT " . ($fetchall ? '*' : 'msguid AS _msguid, uid') . " FROM $this->cache_table ". - "WHERE folder_id=? " . $this->_sql_where($query); + $sql_query = "SELECT " . ($fetchall ? '*' : '`msguid` AS `_msguid`, `uid`') . " FROM `{$this->cache_table}` ". + "WHERE `folder_id` = ? " . $this->_sql_where($query); if (!empty($this->order_by)) { $sql_query .= ' ORDER BY ' . $this->order_by; } @@ -510,6 +560,7 @@ } if ($index->is_error()) { + $this->check_error(); if ($uids) { return null; } @@ -532,6 +583,8 @@ } } + $this->check_error(); + return $result; } @@ -549,8 +602,8 @@ $this->_read_folder_data(); $sql_result = $this->db->query( - "SELECT COUNT(*) AS numrows FROM $this->cache_table ". - "WHERE folder_id=? " . $this->_sql_where($query), + "SELECT COUNT(*) AS `numrows` FROM `{$this->cache_table}` ". + "WHERE `folder_id` = ?" . $this->_sql_where($query), $this->folder_id ); @@ -574,6 +627,7 @@ } if ($index->is_error()) { + $this->check_error(); return null; } @@ -582,6 +636,7 @@ $count = $index->count(); } + $this->check_error(); return $count; } @@ -591,7 +646,7 @@ public function set_order_by($sortcols) { if (!empty($sortcols)) { - $this->order_by = join(', ', (array)$sortcols); + $this->order_by = '`' . join('`, `', (array)$sortcols) . '`'; } else { $this->order_by = null; @@ -787,6 +842,40 @@ $line = ''; if ($object) { $sql_data = $this->_serialize($object); + + // Skip multifolder insert for Oracle, we can't put long data inline + if ($this->db->db_provider == 'oracle') { + $extra_cols = ''; + if ($this->extra_cols) { + $extra_cols = array_map(function($n) { return "`{$n}`"; }, $this->extra_cols); + $extra_cols = ', ' . join(', ', $extra_cols); + $extra_args = str_repeat(', ?', count($this->extra_cols)); + } + + $params = array($this->folder_id, $msguid, $object['uid'], $sql_data['changed'], + $sql_data['data'], $sql_data['xml'], $sql_data['tags'], $sql_data['words']); + + foreach ($this->extra_cols as $col) { + $params[] = $sql_data[$col]; + } + + $result = $this->db->query( + "INSERT INTO `{$this->cache_table}` " + . " (`folder_id`, `msguid`, `uid`, `created`, `changed`, `data`, `xml`, `tags`, `words` $extra_cols)" + . " VALUES (?, ?, ?, " . $this->db->now() . ", ?, ?, ?, ?, ? $extra_args)", + $params + ); + + if (!$this->db->affected_rows($result)) { + rcube::raise_error(array( + 'code' => 900, 'type' => 'php', + 'message' => "Failed to write to kolab cache" + ), true); + } + + return; + } + $values = array( $this->db->quote($this->folder_id), $this->db->quote($msguid), @@ -805,12 +894,18 @@ } if ($buffer && (!$msguid || (strlen($buffer) + strlen($line) > $this->max_sql_packet()))) { - $extra_cols = $this->extra_cols ? ', ' . join(', ', $this->extra_cols) : ''; + $extra_cols = ''; + if ($this->extra_cols) { + $extra_cols = array_map(function($n) { return "`{$n}`"; }, $this->extra_cols); + $extra_cols = ', ' . join(', ', $extra_cols); + } + $result = $this->db->query( - "INSERT INTO $this->cache_table ". - " (folder_id, msguid, uid, created, changed, data, xml, tags, words $extra_cols)". + "INSERT INTO `{$this->cache_table}` ". + " (`folder_id`, `msguid`, `uid`, `created`, `changed`, `data`, `xml`, `tags`, `words` $extra_cols)". " VALUES $buffer" ); + if (!$this->db->affected_rows($result)) { rcube::raise_error(array( 'code' => 900, 'type' => 'php', @@ -847,13 +942,20 @@ if (!empty($this->folder_id) || !$this->ready) return; - $sql_arr = $this->db->fetch_assoc($this->db->query("SELECT folder_id, synclock, ctag FROM $this->folders_table WHERE resource=?", $this->resource_uri)); + $sql_arr = $this->db->fetch_assoc($this->db->query( + "SELECT `folder_id`, `synclock`, `ctag`" + . " FROM `{$this->folders_table}` WHERE `resource` = ?", + $this->resource_uri + )); + if ($sql_arr) { $this->metadata = $sql_arr; $this->folder_id = $sql_arr['folder_id']; } else { - $this->db->query("INSERT INTO $this->folders_table (resource, type) VALUES (?, ?)", $this->resource_uri, $this->folder->type); + $this->db->query("INSERT INTO `{$this->folders_table}` (`resource`, `type`)" + . " VALUES (?, ?)", $this->resource_uri, $this->folder->type); + $this->folder_id = $this->db->insert_id('kolab_folders'); $this->metadata = array(); } @@ -868,24 +970,29 @@ return; $this->_read_folder_data(); - $sql_query = "SELECT synclock, ctag FROM $this->folders_table WHERE folder_id=?"; // abort if database is not set-up if ($this->db->is_error()) { + $this->check_error(); $this->ready = false; return; } - $this->synclock = true; + $read_query = "SELECT `synclock`, `ctag` FROM `{$this->folders_table}` WHERE `folder_id` = ?"; + $write_query = "UPDATE `{$this->folders_table}` SET `synclock` = ? WHERE `folder_id` = ? AND `synclock` = ?"; - // wait if locked (expire locks after 10 minutes) - while ($this->metadata && intval($this->metadata['synclock']) > 0 && $this->metadata['synclock'] + $this->max_sync_lock_time > time()) { + // wait if locked (expire locks after 10 minutes) ... + // ... or if setting lock fails (another process meanwhile set it) + while ( + (intval($this->metadata['synclock']) + $this->max_sync_lock_time > time()) || + (($res = $this->db->query($write_query, time(), $this->folder_id, intval($this->metadata['synclock']))) && + !($affected = $this->db->affected_rows($res))) + ) { usleep(500000); - $this->metadata = $this->db->fetch_assoc($this->db->query($sql_query, $this->folder_id)); + $this->metadata = $this->db->fetch_assoc($this->db->query($read_query, $this->folder_id)); } - // set lock - $this->db->query("UPDATE $this->folders_table SET synclock = ? WHERE folder_id = ?", time(), $this->folder_id); + $this->synclock = $affected > 0; } /** @@ -897,7 +1004,7 @@ return; $this->db->query( - "UPDATE $this->folders_table SET synclock = 0, ctag = ? WHERE folder_id = ?", + "UPDATE `{$this->folders_table}` SET `synclock` = 0, `ctag` = ? WHERE `folder_id` = ?", $this->metadata['ctag'], $this->folder_id ); @@ -906,6 +1013,22 @@ } /** + * Check IMAP connection error state + */ + protected function check_error() + { + if (($err_code = $this->imap->get_error_code()) < 0) { + $this->error = kolab_storage::ERROR_IMAP_CONN; + if (($res_code = $this->imap->get_response_code()) !== 0 && in_array($res_code, array(rcube_storage::NOPERM, rcube_storage::READONLY))) { + $this->error = kolab_storage::ERROR_NO_PERMISSION; + } + } + else if ($this->db->is_error()) { + $this->error = kolab_storage::ERROR_CACHE_DB; + } + } + + /** * Resolve an object UID into an IMAP message UID * * @param string Kolab object UID @@ -919,8 +1042,8 @@ $this->_read_folder_data(); $sql_result = $this->db->query( - "SELECT msguid FROM $this->cache_table ". - "WHERE folder_id=? AND uid=? ORDER BY msguid DESC", + "SELECT `msguid` FROM `{$this->cache_table}` ". + "WHERE `folder_id` = ? AND `uid` = ? ORDER BY `msguid` DESC", $this->folder_id, $uid );
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage_cache_configuration.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage_cache_configuration.php
Changed
@@ -39,6 +39,28 @@ } /** + * Select Kolab objects filtered by the given query + * + * @param array Pseudo-SQL query as list of filter parameter triplets + * @param boolean Set true to only return UIDs instead of complete objects + * @return array List of Kolab data objects (each represented as hash array) or UIDs + */ + public function select($query = array(), $uids = false) + { + // modify query for IMAP search: query param 'type' is actually a subtype + if (!$this->ready) { + foreach ($query as $i => $tuple) { + if ($tuple[0] == 'type') { + $tuple[2] = 'configuration.' . $tuple[2]; + $query[$i] = $tuple; + } + } + } + + return parent::select($query, $uids); + } + + /** * Helper method to compose a valid SQL query from pseudo filter triplets */ protected function _sql_where($query)
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage_config.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage_config.php
Changed
@@ -125,6 +125,7 @@ } foreach ($folder->select($filter) as $object) { + unset($object['_formatobj']); $list[] = $object; } } @@ -350,6 +351,8 @@ 'params' => $params, ); } + + return false; } /** @@ -626,20 +629,24 @@ // use faster method if ($uid && $uid != '*') { $filter[] = array('member', '=', $uid); - return $this->get_objects($filter, $default); + $tags = $this->get_objects($filter, $default); + } + else { + $this->tags = $tags = $this->get_objects($filter, $default); } - - $this->tags = $this->get_objects($filter, $default); + } + else { + $tags = $this->tags; } if ($uid === '*') { - return $this->tags; + return $tags; } $result = array(); $search = self::build_member_url($uid); - foreach ($this->tags as $tag) { + foreach ($tags as $tag) { if (in_array($search, (array) $tag['members'])) { $result[] = $tag; } @@ -649,6 +656,100 @@ } /** + * Find objects linked with the given groupware object through a relation + * + * @param string Object UUID + * @param array List of related URIs + */ + public function get_object_links($uid) + { + $links = array(); + $object_uri = self::build_member_url($uid); + + foreach ($this->get_relations_for_member($uid) as $relation) { + if (in_array($object_uri, (array) $relation['members'])) { + // make relation members up-to-date + kolab_storage_config::resolve_members($relation); + + foreach ($relation['members'] as $member) { + if ($member != $object_uri) { + $links[] = $member; + } + } + } + } + + return array_unique($links); + } + + /** + * + */ + public function save_object_links($uid, $links, $remove = array()) + { + $object_uri = self::build_member_url($uid); + $relations = $this->get_relations_for_member($uid); + $done = false; + + foreach ($relations as $relation) { + // make relation members up-to-date + kolab_storage_config::resolve_members($relation); + + // remove and add links + $members = array_diff($relation['members'], (array)$remove); + $members = array_unique(array_merge($members, $links)); + + // make sure the object_uri is still a member + if (!in_array($object_uri, $members)) { + $members[$object_uri]; + } + + // remove relation if no other members remain + if (count($members) <= 1) { + $done = $this->delete($relation['uid']); + } + // update relation object if members changed + else if (count(array_diff($members, $relation['members'])) || count(array_diff($relation['members'], $members))) { + $relation['members'] = $members; + $done = $this->save($relation, 'relation'); + $links = array(); + } + // no changes, we're happy + else { + $done = true; + $links = array(); + } + } + + // create a new relation + if (!$done && !empty($links)) { + $relation = array( + 'members' => array_merge($links, array($object_uri)), + 'category' => 'generic', + ); + + $ret = $this->save($relation, 'relation'); + } + + return $ret; + } + + /** + * Find relation objects referring to specified note + */ + public function get_relations_for_member($uid, $reltype = 'generic') + { + $default = true; + $filter = array( + array('type', '=', 'relation'), + array('category', '=', $reltype), + array('member', '=', $uid), + ); + + return $this->get_objects($filter, $default, 100); + } + + /** * Find kolab objects assigned to specified e-mail message * * @param rcube_message $message E-mail message @@ -659,6 +760,8 @@ */ public function get_message_relations($message, $folder, $type) { + static $_cache = array(); + $result = array(); $uids = array(); $default = true; @@ -666,28 +769,42 @@ $filter = array( array('type', '=', 'relation'), array('category', '=', 'generic'), - // @TODO: what if Message-Id (and Date) does not exist? - array('member', '=', $message->get('message-id', false)), ); - // get UIDs of assigned notes - foreach ($this->get_objects($filter, $default) as $relation) { - // we don't need to update members if the URI is found - if (in_array($uri, $relation['members'])) { - // update members... - $messages = kolab_storage_config::resolve_members($relation); - // ...and check again - if (empty($messages[$folder]) || !in_array($message->uid, $messages[$folder])) { - continue; + // query by message-id + $member_id = $message->get('message-id', false); + if (empty($member_id)) { + // derive message identifier from URI + $member_id = md5($uri); + } + $filter[] = array('member', '=', $member_id); + + if (!isset($_cache[$uri])) { + // get UIDs of related groupware objects + foreach ($this->get_objects($filter, $default) as $relation) { + // we don't need to update members if the URI is found + if (!in_array($uri, $relation['members'])) { + // update members... + $messages = kolab_storage_config::resolve_members($relation); + // ...and check again + if (empty($messages[$folder]) || !in_array($message->uid, $messages[$folder])) { + continue; + } } - } - // find note UID(s) - foreach ($relation['members'] as $member) { - if (strpos($member, 'urn:uuid:') === 0) { - $uids[] = substr($member, 9); + // find groupware object UID(s) + foreach ($relation['members'] as $member) { + if (strpos($member, 'urn:uuid:') === 0) { + $uids[] = substr($member, 9); + } } } + + // remember this lookup + $_cache[$uri] = $uids; + } + else { + $uids = $_cache[$uri]; } // get kolab objects of specified type @@ -720,4 +837,30 @@ return self::build_member_url($params); } + + /** + * Resolve the email message reference from the given URI + */ + public function get_message_reference($uri, $rel = null) + { + if ($linkref = self::parse_member_url($uri)) { + $linkref['subject'] = $linkref['params']['subject']; + $linkref['uri'] = $uri; + + $rcmail = rcube::get_instance(); + if (method_exists($rcmail, 'url')) { + $linkref['mailurl'] = $rcmail->url(array( + 'task' => 'mail', + 'action' => 'show', + 'mbox' => $linkref['folder'], + 'uid' => $linkref['uid'], + 'rel' => $rel, + )); + } + + unset($linkref['params']); + } + + return $linkref; + } }
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage_folder.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage_folder.php
Changed
@@ -30,18 +30,28 @@ */ public $cache; - private $type_annotation; - private $resource_uri; + /** + * Indicate validity status + * @var boolean + */ + public $valid = false; + + protected $error = 0; + + protected $resource_uri; /** * Default constructor + * + * @param string The folder name/path + * @param string Expected folder type */ - function __construct($name, $type = null) + function __construct($name, $type = null, $type_annotation = null) { parent::__construct($name); $this->imap->set_options(array('skip_deleted' => true)); - $this->set_folder($name, $type); + $this->set_folder($name, $type, $type_annotation); } @@ -49,29 +59,63 @@ * Set the IMAP folder this instance connects to * * @param string The folder name/path + * @param string Expected folder type * @param string Optional folder type if known */ - public function set_folder($name, $type = null) + public function set_folder($name, $type = null, $type_annotation = null) { - $this->type_annotation = $type ? $type : kolab_storage::folder_type($name); + if (empty($type_annotation)) { + $type_annotation = kolab_storage::folder_type($name); + } $oldtype = $this->type; - list($this->type, $suffix) = explode('.', $this->type_annotation); + list($this->type, $suffix) = explode('.', $type_annotation); $this->default = $suffix == 'default'; + $this->subtype = $this->default ? '' : $suffix; $this->name = $name; $this->id = kolab_storage::folder_id($name); + $this->valid = !empty($this->type) && $this->type != 'mail' && (!$type || $this->type == $type); + + if (!$this->valid) { + $this->error = $this->imap->get_error_code() < 0 ? kolab_storage::ERROR_IMAP_CONN : kolab_storage::ERROR_INVALID_FOLDER; + } // reset cached object properties $this->owner = $this->namespace = $this->resource_uri = $this->info = $this->idata = null; - // get a new cache instance of folder type changed - if (!$this->cache || $type != $oldtype) + // get a new cache instance if folder type changed + if (!$this->cache || $this->type != $oldtype) $this->cache = kolab_storage_cache::factory($this); + else + $this->cache->set_folder($this); $this->imap->set_folder($this->name); - $this->cache->set_folder($this); } + /** + * Returns code of last error + * + * @return int Error code + */ + public function get_error() + { + return $this->error ?: $this->cache->get_error(); + } + + /** + * Check IMAP connection error state + */ + public function check_error() + { + if (($err_code = $this->imap->get_error_code()) < 0) { + $this->error = kolab_storage::ERROR_IMAP_CONN; + if (($res_code = $this->imap->get_response_code()) !== 0 && in_array($res_code, array(rcube_storage::NOPERM, rcube_storage::READONLY))) { + $this->error = kolab_storage::ERROR_NO_PERMISSION; + } + } + + return $this->error; + } /** * Compose a unique resource URI for this IMAP folder @@ -96,7 +140,7 @@ } // compose fully qualified ressource uri for this instance - $this->resource_uri = 'imap://' . urlencode($this->get_owner()) . '@' . $this->imap->options['host'] . '/' . $subpath; + $this->resource_uri = 'imap://' . urlencode($this->get_owner(true)) . '@' . $this->imap->options['host'] . '/' . $subpath; return $this->resource_uri; } @@ -118,9 +162,12 @@ // generate a folder UID and set it to IMAP $uid = rtrim(chunk_split(md5($this->name . $this->get_owner() . uniqid('-', true)), 12, '-'), '-'); - $this->set_uid($uid); + if ($this->set_uid($uid)) { + return $uid; + } - return $uid; + // create hash from folder name if we can't write the UID metadata + return md5($this->name . $this->get_owner()); } /** @@ -134,6 +181,8 @@ if (!($success = $this->set_metadata(array(kolab_storage::UID_KEY_SHARED => $uid)))) { $success = $this->set_metadata(array(kolab_storage::UID_KEY_PRIVATE => $uid)); } + + $this->check_error(); return $success; } @@ -143,6 +192,7 @@ public function get_ctag() { $fdata = $this->get_imap_data(); + $this->check_error(); return sprintf('%d-%d-%d', $fdata['UIDVALIDITY'], $fdata['HIGHESTMODSEQ'], $fdata['UIDNEXT']); } @@ -200,6 +250,10 @@ */ public function count($query = null) { + if (!$this->valid) { + return 0; + } + // synchronize cache first $this->cache->synchronize(); @@ -217,6 +271,10 @@ { if (!$type) $type = $this->type; + if (!$this->valid) { + return array(); + } + // synchronize caches $this->cache->synchronize(); @@ -234,9 +292,14 @@ */ public function select($query = array()) { + if (!$this->valid) { + return array(); + } + // check query argument - if (empty($query)) + if (empty($query)) { return $this->get_objects(); + } // synchronize caches $this->cache->synchronize(); @@ -254,6 +317,10 @@ */ public function get_uids($query = array()) { + if (!$this->valid) { + return array(); + } + // synchronize caches $this->cache->synchronize(); @@ -315,6 +382,10 @@ */ public function get_object($uid, $type = null) { + if (!$this->valid) { + return false; + } + // synchronize caches $this->cache->synchronize(); @@ -344,7 +415,7 @@ */ public function get_attachment($uid, $part, $mailbox = null, $print = false, $fp = null, $skip_charset_conv = false) { - if ($msguid = ($mailbox ? $uid : $this->cache->uid2msguid($uid))) { + if ($this->valid && ($msguid = ($mailbox ? $uid : $this->cache->uid2msguid($uid)))) { $this->imap->set_folder($mailbox ? $mailbox : $this->name); if (substr($part, 0, 2) == 'i:') { @@ -356,7 +427,7 @@ $object['_formatobj']->get_attachments($object); } - foreach ($object['_attachments'] as $k => $attach) { + foreach ($object['_attachments'] as $attach) { if ($attach['id'] == $part) { if ($print) echo $attach['content']; else if ($fp) fwrite($fp, $attach['content']); @@ -388,6 +459,10 @@ */ public function read_object($msguid, $type = null, $folder = null) { + if (!$this->valid) { + return false; + } + if (!$type) $type = $this->type; if (!$folder) $folder = $this->name; @@ -440,7 +515,7 @@ // get XML part foreach ((array)$message->attachments as $part) { if (!$xml && ($part->mimetype == $content_type || preg_match('!application/([a-z.]+\+)?xml!', $part->mimetype))) { - $xml = $part->body ? $part->body : $message->get_part_content($part->mime_id); + $xml = $message->get_part_body($part->mime_id, true); } else if ($part->filename || $part->content_id) { $key = $part->content_id ? trim($part->content_id, '<>') : $part->filename; @@ -533,6 +608,10 @@ */ public function save(&$object, $type = null, $uid = null) { + if (!$this->valid) { + return false; + } + if (!$type) $type = $this->type; @@ -728,6 +807,10 @@ */ public function delete($object, $expunge = true) { + if (!$this->valid) { + return false; + } + $msguid = is_array($object) ? $object['_msguid'] : $this->cache->uid2msguid($object); $success = false; @@ -755,6 +838,10 @@ */ public function delete_all() { + if (!$this->valid) { + return false; + } + $this->cache->purge(); $this->cache->bypass(true); $result = $this->imap->clear_folder($this->name); @@ -772,6 +859,10 @@ */ public function undelete($uid) { + if (!$this->valid) { + return false; + } + if ($msguid = $this->cache->uid2msguid($uid, true)) { $this->cache->bypass(true); $result = $this->imap->set_flag($msguid, 'UNDELETED', $this->name); @@ -795,9 +886,16 @@ */ public function move($uid, $target_folder) { + if (!$this->valid) { + return false; + } + + if (is_string($target_folder)) + $target_folder = kolab_storage::get_folder($target_folder); + if ($msguid = $this->cache->uid2msguid($uid)) { $this->cache->bypass(true); - $result = $this->imap->move_message($msguid, $target_folder, $this->name); + $result = $this->imap->move_message($msguid, $target_folder->name, $this->name); $this->cache->bypass(false); if ($result) { @@ -875,7 +973,7 @@ if (!empty($object['_attachments']) && ($mem_limit = parse_bytes(ini_get('memory_limit'))) > 0) { $memory = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB - foreach ($object['_attachments'] as $id => $attachment) { + foreach ($object['_attachments'] as $attachment) { $memory += $attachment['size']; } @@ -1047,8 +1145,6 @@ */ private function trigger_url($url, $auth_user = null, $auth_passwd = null) { - require_once('HTTP/Request2.php'); - try { $request = libkolab::http_request($url);
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage_folder_api.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage_folder_api.php
Changed
@@ -41,6 +41,12 @@ public $type; /** + * The subtype of this folder. + * @var string + */ + public $subtype; + + /** * Is this folder set to be the default for its type * @var boolean */ @@ -79,9 +85,10 @@ /** * Returns the owner of the folder. * + * @param boolean Return a fully qualified owner name (i.e. including domain for shared folders) * @return string The owner of this folder. */ - public function get_owner() + public function get_owner($fully_qualified = false) { // return cached value if (isset($this->owner)) @@ -100,16 +107,21 @@ break; default: - list($prefix, $user) = explode($this->imap->get_hierarchy_delimiter(), $info['name']); - if (strpos($user, '@') === false) { - $domain = strstr($rcmail->get_user_name(), '@'); - if (!empty($domain)) - $user .= $domain; - } - $this->owner = $user; + list($prefix, $this->owner) = explode($this->imap->get_hierarchy_delimiter(), $info['name']); + $fully_qualified = true; // enforce email addresses (backwards compatibility) break; } + if ($fully_qualified && strpos($this->owner, '@') === false) { + // extract domain from current user name + $domain = strstr($rcmail->get_user_name(), '@'); + // fall back to mail_domain config option + if (empty($domain) && ($mdomain = $rcmail->config->mail_domain($this->imap->options['host']))) { + $domain = '@' . $mdomain; + } + $this->owner .= $domain; + } + return $this->owner; } @@ -326,5 +338,14 @@ return $subscribed ? kolab_storage::folder_subscribe($this->name) : kolab_storage::folder_unsubscribe($this->name); } + /** + * Return folder name as string representation of this object + * + * @return string Full IMAP folder name + */ + public function __toString() + { + return $this->name; + } }
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/libkolab/lib/kolab_storage_folder_user.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/libkolab/lib/kolab_storage_folder_user.php
Changed
@@ -26,6 +26,7 @@ protected static $ldapcache = array(); public $ldaprec; + public $type; /** * Default constructor @@ -85,13 +86,28 @@ } /** - * Check subscription status of this folder + * Check subscription status of this folder. + * Subscription of a virtual user folder depends on the subscriptions of subfolders. * * @return boolean True if subscribed, false if not */ public function is_subscribed() { - return kolab_storage::folder_is_subscribed($this->name, true); + if (!empty($this->type)) { + $children = $subscribed = 0; + $delimiter = $this->imap->get_hierarchy_delimiter(); + foreach ((array)kolab_storage::list_folders($this->name . $delimiter, '*', $this->type, false) as $subfolder) { + if (kolab_storage::folder_is_subscribed($subfolder)) { + $subscribed++; + } + $children++; + } + if ($subscribed > 0) { + return $subscribed == $children ? true : 2; + } + } + + return false; } /** @@ -103,9 +119,17 @@ */ public function subscribe($subscribed) { - return $subscribed ? - kolab_storage::folder_subscribe($this->name, true) : - kolab_storage::folder_unsubscribe($this->name, true); + $success = false; + + // (un)subscribe all subfolders of a given type + if (!empty($this->type)) { + $delimiter = $this->imap->get_hierarchy_delimiter(); + foreach ((array)kolab_storage::list_folders($this->name . $delimiter, '*', $this->type, false) as $subfolder) { + $success |= ($subscribed ? kolab_storage::folder_subscribe($subfolder) : kolab_storage::folder_unsubscribe($subfolder)); + } + } + + return $success; } } \ No newline at end of file
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/Changelog -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/Changelog
Changed
@@ -1,6 +1,17 @@ +* version 8.2 [2015-01-14] +----------------------------------------------------------- +- Fix bug where actions without if/elseif/else in sieve scripts were skipped +- Support "not allof" test as a negation of all sub-tests +- Fix bug where vacation rule was saved to wrong script if managesieve_kolab_master=true +- Improve procedure of script selection to write a vacation rule + +* version 8.1 [2014-12-09] +----------------------------------------------------------- +- Added simple API to manage vacation rule - Fix missing css/js scripts in filter form in mail task - Fix default vacation status (#1490019) - Make possible to set vacation start/end date and time +- Fix compatibility with contextmenu plugin * version 8.0 [2014-07-16] -----------------------------------------------------------
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/composer.json -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/composer.json
Changed
@@ -2,8 +2,8 @@ "name": "roundcube/managesieve", "type": "roundcube-plugin", "description": "Adds a possibility to manage Sieve scripts (incoming mail filters). It's clickable interface which operates on text scripts and communicates with server using managesieve protocol. Adds Filters tab in Settings.", - "license": "GNU GPLv3+", - "version": "7.2", + "license": "GPLv3+", + "version": "8.2", "authors": [ { "name": "Aleksander Machniak",
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/config.inc.php.dist -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/config.inc.php.dist
Changed
@@ -31,7 +31,7 @@ // Connection scket context options // See http://php.net/manual/en/context.ssl.php // The example below enables server certificate validation -//$config['imap_conn_options'] = array( +//$config['managesieve_conn_options'] = array( // 'ssl' => array( // 'verify_peer' => true, // 'verify_depth' => 3,
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
Changed
@@ -5,8 +5,8 @@ * * Engine part of Managesieve plugin implementing UI and backend access. * - * Copyright (C) 2008-2013, The Roundcube Dev Team - * Copyright (C) 2011-2013, Kolab Systems AG + * Copyright (C) 2008-2014, The Roundcube Dev Team + * Copyright (C) 2011-2014, Kolab Systems AG * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,7 +63,7 @@ 1 => 'notifyimportancehigh' ); - const VERSION = '8.0'; + const VERSION = '8.2'; const PROGNAME = 'Roundcube (Managesieve)'; const PORT = 4190; @@ -220,14 +220,14 @@ * * @return int Connection status: 0 on success, >0 on failure */ - public function load_script($script_name = null) + protected function load_script($script_name = null) { // Get list of scripts $list = $this->list_scripts(); if ($script_name === null || $script_name === '') { // get (first) active script - if (!empty($this->active[0])) { + if (!empty($this->active)) { $script_name = $this->active[0]; } else if ($list) { @@ -349,7 +349,7 @@ } } else if ($action == 'setact' && !$error) { - $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_GPC, true); + $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_POST, true); $result = $this->activate_script($script_name); $kep14 = $this->rc->config->get('managesieve_kolab_master'); @@ -363,7 +363,7 @@ } } else if ($action == 'deact' && !$error) { - $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_GPC, true); + $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_POST, true); $result = $this->deactivate_script($script_name); if ($result === true) { @@ -376,7 +376,7 @@ } } else if ($action == 'setdel' && !$error) { - $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_GPC, true); + $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_POST, true); $result = $this->remove_script($script_name); if ($result === true) { @@ -419,14 +419,14 @@ $this->rc->output->command('managesieve_updatelist', 'list', array('list' => $result)); } else if ($action == 'ruleadd') { - $rid = rcube_utils::get_input_value('_rid', rcube_utils::INPUT_GPC); + $rid = rcube_utils::get_input_value('_rid', rcube_utils::INPUT_POST); $id = $this->genid(); $content = $this->rule_div($fid, $id, false); $this->rc->output->command('managesieve_rulefill', $content, $id, $rid); } else if ($action == 'actionadd') { - $aid = rcube_utils::get_input_value('_aid', rcube_utils::INPUT_GPC); + $aid = rcube_utils::get_input_value('_aid', rcube_utils::INPUT_POST); $id = $this->genid(); $content = $this->action_div($fid, $id, false); @@ -1177,16 +1177,7 @@ function filter_frame($attrib) { - if (!$attrib['id']) - $attrib['id'] = 'rcmfilterframe'; - - $attrib['name'] = $attrib['id']; - - $this->rc->output->set_env('contentframe', $attrib['name']); - $this->rc->output->set_env('blankpage', $attrib['src'] ? - $this->rc->output->abs_url($attrib['src']) : 'program/resources/blank.gif'); - - return $this->rc->output->frame($attrib); + return $this->rc->output->frame($attrib, true); } function filterset_form($attrib) @@ -1279,8 +1270,11 @@ $out .= $hiddenfields->show(); // 'any' flag - if (sizeof($scr['tests']) == 1 && $scr['tests'][0]['test'] == 'true' && !$scr['tests'][0]['not']) + if ((!isset($this->form) && empty($scr['tests']) && !empty($scr)) + || (sizeof($scr['tests']) == 1 && $scr['tests'][0]['test'] == 'true' && !$scr['tests'][0]['not']) + ) { $any = true; + } // filter name input $field_id = '_name'; @@ -1341,7 +1335,7 @@ $out .= sprintf("%s<label for=\"%s\">%s</label>\n", $input_join, $field_id, rcube::Q($this->plugin->gettext('filterany'))); - $rows_num = isset($scr) ? sizeof($scr['tests']) : 1; + $rows_num = !empty($scr['tests']) ? sizeof($scr['tests']) : 1; $out .= '<div id="rules"'.($any ? ' style="display: none"' : '').'>'; for ($x=0; $x<$rows_num; $x++) @@ -1472,31 +1466,26 @@ $select_op->add(rcube::Q($this->plugin->gettext('valuenotequals')), 'value-ne'); } + $test = self::rule_test($rule); + $target = ''; + // target(s) input if (in_array($rule['test'], array('header', 'address', 'envelope'))) { - $test = ($rule['not'] ? 'not' : '').($rule['type'] ? $rule['type'] : 'is'); $target = $rule['arg2']; } else if (in_array($rule['test'], array('body', 'date', 'currentdate'))) { - $test = ($rule['not'] ? 'not' : '').($rule['type'] ? $rule['type'] : 'is'); $target = $rule['arg']; } else if ($rule['test'] == 'size') { - $test = ''; - $target = ''; if (preg_match('/^([0-9]+)(K|M|G)?$/', $rule['arg'], $matches)) { $sizetarget = $matches[1]; - $sizeitem = $matches[2]; + $sizeitem = $matches[2]; } else { $sizetarget = $rule['arg']; - $sizeitem = $rule['item']; + $sizeitem = $rule['item']; } } - else { - $test = ($rule['not'] ? 'not' : '').$rule['test']; - $target = ''; - } // (current)date part select if (in_array('date', $this->exts) || in_array('currentdate', $this->exts)) { @@ -1646,6 +1635,43 @@ return $out; } + private static function rule_test(&$rule) + { + // first modify value/count tests with 'not' keyword + // we'll revert the meaning of operators + if ($rule['not'] && preg_match('/^(count|value)-([gteqnl]{2})/', $rule['type'], $m)) { + $rule['not'] = false; + + switch ($m[2]) { + case 'gt': $rule['type'] = $m[1] . '-le'; break; + case 'ge': $rule['type'] = $m[1] . '-lt'; break; + case 'lt': $rule['type'] = $m[1] . '-ge'; break; + case 'le': $rule['type'] = $m[1] . '-gt'; break; + case 'eq': $rule['type'] = $m[1] . '-ne'; break; + case 'ne': $rule['type'] = $m[1] . '-eq'; break; + } + } + else if ($rule['not'] && $rule['test'] == 'size') { + $rule['not'] = false; + $rule['type'] = $rule['type'] == 'over' ? 'under' : 'over'; + } + + $set = array('header', 'address', 'envelope', 'body', 'date', 'currentdate'); + + // build test string supported by select element + if ($rule['size']) { + $test = $rule['type']; + } + else if (in_array($rule['test'], $set)) { + $test = ($rule['not'] ? 'not' : '') . ($rule['type'] ? $rule['type'] : 'is'); + } + else { + $test = ($rule['not'] ? 'not' : '') . $rule['test']; + } + + return $test; + } + function action_div($fid, $id, $div=true) { $action = isset($this->form) ? $this->form['actions'][$id] : $this->script[$fid]['actions'][$id]; @@ -2052,7 +2078,6 @@ // Handle active script(s) and list of scripts according to Kolab's KEP:14 if ($this->rc->config->get('managesieve_kolab_master')) { - // Skip protected names foreach ((array)$this->list as $idx => $name) { $_name = strtoupper($name); @@ -2080,7 +2105,10 @@ foreach ($rules['actions'] as $action) { if ($action['type'] == 'include' && empty($action['global'])) { $name = preg_replace($filename_regex, '', $action['target']); - $this->active[] = $name; + // make sure the script exist + if (in_array($name, $this->list)) { + $this->active[] = $name; + } } } } @@ -2114,6 +2142,11 @@ } } + // reindex + if (!empty($this->list)) { + $this->list = array_values($this->list); + } + return $this->list; } @@ -2291,7 +2324,7 @@ $i = 1; foreach ($this->script as $idx => $filter) { - if ($filter['type'] != 'if') { + if (empty($filter['actions'])) { continue; } $fname = $filter['name'] ? $filter['name'] : "#$i";
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/lib/Roundcube/rcube_sieve_script.php
Changed
@@ -622,6 +622,7 @@ $disabled = false; $join = false; + $join_not = false; // disabled rule (false + comment): if false # ..... if (preg_match('/^\s*false\s+#/i', $content)) { @@ -650,15 +651,22 @@ $not = false; } + // we support "not allof" as a negation of allof sub-tests + if ($join_not) { + $not = !$not; + } + switch ($token) { case 'allof': - $join = true; + $join = true; + $join_not = $not; break; + case 'anyof': break; case 'size': - $test = array('test' => 'size', 'not' => $not); + $test = array('test' => 'size', 'not' => $not); $test['arg'] = array_pop($tokens); @@ -740,16 +748,16 @@ break; case 'exists': - $tests[] = array('test' => 'exists', 'not' => $not, + $tests[] = array('test' => 'exists', 'not' => $not, 'arg' => array_pop($tokens)); break; case 'true': - $tests[] = array('test' => 'true', 'not' => $not); + $tests[] = array('test' => 'true', 'not' => $not); break; case 'false': - $tests[] = array('test' => 'true', 'not' => !$not); + $tests[] = array('test' => 'true', 'not' => !$not); break; }
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
Changed
@@ -24,6 +24,8 @@ class rcube_sieve_vacation extends rcube_sieve_engine { protected $error; + protected $script_name; + protected $vacation = array(); function actions() { @@ -34,6 +36,7 @@ $this->vacation_rule(); $this->vacation_post(); } + $this->plugin->add_label('vacation.saving'); $this->rc->output->add_handlers(array( 'vacationform' => array($this, 'vacation_form'), @@ -43,15 +46,90 @@ $this->rc->output->send('managesieve.vacation'); } - private function vacation_rule() + /** + * Find and load sieve script with/for vacation rule + * + * @return int Connection status: 0 on success, >0 on failure + */ + protected function load_script() { - $this->vacation = array(); + if ($this->script_name !== null) { + return 0; + } + + $list = $this->list_scripts(); + $master = $this->rc->config->get('managesieve_kolab_master'); + $included = array(); + + $this->script_name = false; + + // first try the active script(s)... + if (!empty($this->active)) { + // Note: there can be more than one active script on KEP:14-enabled server + foreach ($this->active as $script) { + if ($this->sieve->load($script)) { + foreach ($this->sieve->script->as_array() as $rule) { + if (!empty($rule['actions'])) { + if ($rule['actions'][0]['type'] == 'vacation') { + $this->script_name = $script; + return 0; + } + else if (empty($master) && $rule['actions'][0]['type'] == 'include') { + $included[] = $rule['actions'][0]['target']; + } + } + } + } + } + + // ...else try scripts included in active script (not for KEP:14) + foreach ($included as $script) { + if ($this->sieve->load($script)) { + foreach ($this->sieve->script->as_array() as $rule) { + if (!empty($rule['actions']) && $rule['actions'][0]['type'] == 'vacation') { + $this->script_name = $script; + return 0; + } + } + } + } + } + + // try all other scripts + if (!empty($list)) { + // else try included scripts + foreach (array_diff($list, $included, $this->active) as $script) { + if ($this->sieve->load($script)) { + foreach ($this->sieve->script->as_array() as $rule) { + if (!empty($rule['actions']) && $rule['actions'][0]['type'] == 'vacation') { + $this->script_name = $script; + return 0; + } + } + } + } + + // none of the scripts contains existing vacation rule + // use any (first) active or just existing script (in that order) + if (!empty($this->active)) { + $this->sieve->load($this->script_name = $this->active[0]); + } + else { + $this->sieve->load($this->script_name = $list[0]); + } + } + + return $this->sieve->error(); + } - if (empty($this->active)) { + private function vacation_rule() + { + if ($this->script_name === false || $this->script_name === null || !$this->sieve->load($this->script_name)) { return; } - $list = array(); + $list = array(); + $active = in_array($this->script_name, $this->active); // find (first) vacation rule foreach ($this->script as $idx => $rule) { @@ -68,14 +146,14 @@ $this->vacation = array_merge($rule['actions'][0], array( 'idx' => $idx, - 'disabled' => $rule['disabled'], + 'disabled' => $rule['disabled'] || !$active, 'name' => $rule['name'], 'tests' => $rule['tests'], 'action' => $action ?: 'keep', 'target' => $target, )); } - else { + else if ($active) { $list[$idx] = $rule['name']; } } @@ -202,8 +280,6 @@ $vacation_tests = $this->rc->config->get('managesieve_vacation_test', array(array('test' => 'true'))); } - // @TODO: handle situation when there's no active script - if (!$error) { $rule = $this->vacation; $rule['type'] = 'if'; @@ -212,6 +288,7 @@ $rule['tests'] = $vacation_tests; $rule['join'] = $date_extension ? count($vacation_tests) > 1 : false; $rule['actions'] = array($vacation_action); + $rule['after'] = $after; if ($action && $action != 'keep') { $rule['actions'][] = array( @@ -221,40 +298,7 @@ ); } - // reset original vacation rule - if (isset($this->vacation['idx'])) { - $this->script[$this->vacation['idx']] = null; - } - - // re-order rules if needed - if (isset($after) && $after !== '') { - // add at target position - if ($after >= count($this->script) - 1) { - $this->script[] = $rule; - } - else { - $script = array(); - - foreach ($this->script as $idx => $r) { - if ($r) { - $script[] = $r; - } - - if ($idx == $after) { - $script[] = $rule; - } - } - - $this->script = $script; - } - } - else { - array_unshift($this->script, $rule); - } - - $this->sieve->script->content = array_values(array_filter($this->script)); - - if ($this->save_script()) { + if ($this->save_vacation_script($rule)) { $this->rc->output->show_message('managesieve.vacationsaved', 'confirmation'); $this->rc->output->send(); } @@ -507,6 +551,87 @@ } /** + * Saves vacation script (adding some variables) + */ + protected function save_vacation_script($rule) + { + // if script does not exist create a new one + if ($this->script_name === null || $this->script_name === false) { + $this->script_name = $this->rc->config->get('managesieve_script_name'); + if (empty($this->script_name)) { + $this->script_name = 'roundcube'; + } + + $this->script = array($rule); + $script_active = false; + } + // if script exists + else { + $script_active = in_array($this->script_name, $this->active); + + // re-order rules if needed + if (isset($rule['after']) && $rule['after'] !== '') { + // reset original vacation rule + if (isset($this->vacation['idx'])) { + $this->script[$this->vacation['idx']] = null; + } + + // add at target position + if ($rule['after'] >= count($this->script) - 1) { + $this->script[] = $rule; + } + else { + $script = array(); + + foreach ($this->script as $idx => $r) { + if ($r) { + $script[] = $r; + } + + if ($idx == $rule['after']) { + $script[] = $rule; + } + } + + $this->script = $script; + } + + $this->script = array_values(array_filter($this->script)); + } + // update original vacation rule if it exists + else if (isset($this->vacation['idx'])) { + $this->script[$this->vacation['idx']] = $rule; + } + // otherwise put vacation rule on top + else { + array_unshift($this->script, $rule); + } + + // if the script was not active, we need to de-activate + // all rules except the vacation rule, but only if it is not disabled + if (!$script_active && !$rule['disabled']) { + foreach ($this->script as $idx => $r) { + if (empty($r['actions']) || $r['actions'][0]['type'] != 'vacation') { + $this->script[$idx]['disabled'] = true; + } + } + } + } + + $this->sieve->script->content = $this->script; + + // save the script + $saved = $this->save_script($this->script_name); + + // activate the script + if ($saved && !$script_active && !$rule['disabled']) { + $this->activate_script($this->script_name); + } + + return $saved; + } + + /** * API: get vacation rule * * @return array Vacation rule information @@ -684,8 +809,6 @@ $vacation_tests = $this->rc->config->get('managesieve_vacation_test', array(array('test' => 'true'))); } - // @TODO: handle situation when there's no active script - $rule = $this->vacation; $rule['type'] = 'if'; $rule['name'] = $rule['name'] ?: 'Out-of-Office'; @@ -702,16 +825,7 @@ ); } - // reset original vacation rule - if (isset($this->vacation['idx'])) { - $this->script[$this->vacation['idx']] = null; - } - - array_unshift($this->script, $rule); - - $this->sieve->script->content = array_values(array_filter($this->script)); - - return $this->save_script(); + return $this->save_vacation_script($rule); } /**
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/ar_SA.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/ar_SA.inc
Changed
@@ -15,19 +15,174 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-managesieve/ */ +$labels['filters'] = 'تصفية'; +$labels['managefilters'] = 'ادارة تصفية البريد الوارد'; +$labels['filtername'] = 'اسم التصفية'; +$labels['newfilter'] = 'تصفية جديدة'; +$labels['filteradd'] = 'اضافة تصفية'; +$labels['filterdel'] = 'حذف تصفية'; +$labels['moveup'] = 'نقل الى الاعلى '; +$labels['movedown'] = 'نقل الى الاسفل'; +$labels['filterallof'] = 'مطابقة جميع القواعد التالية'; +$labels['filteranyof'] = 'مطابقة اي القواعد التالية'; +$labels['filterany'] = 'كل الرسائل'; +$labels['filtercontains'] = 'محتوى'; +$labels['filternotcontains'] = 'بدون محتوى'; +$labels['filteris'] = 'مساوي الى'; +$labels['filterisnot'] = 'لا يساوي'; +$labels['filterexists'] = 'موجود'; +$labels['filternotexists'] = 'غير موجود'; +$labels['filtermatches'] = 'يطابق التعبير'; +$labels['filternotmatches'] = 'لا يطابق التعبير'; +$labels['filterregex'] = 'يطابق التعبير العادي'; +$labels['filternotregex'] = 'لا يطابق التعبير العادي'; +$labels['filterunder'] = 'تحت'; +$labels['filterover'] = 'خلال'; +$labels['addrule'] = 'اضافة قاعدة'; +$labels['delrule'] = 'حذف قاعدة'; +$labels['messagemoveto'] = 'نقل الرساله الى '; +$labels['messageredirect'] = 'إعادة توجيه الرسالة الى '; +$labels['messagecopyto'] = 'نسخ الرسالة الى '; +$labels['messagesendcopy'] = 'ارسال نسخة من الرسالة الى '; +$labels['messagereply'] = 'الرد مع رسالة'; $labels['messagedelete'] = 'حذف الرسالة'; +$labels['messagediscard'] = 'تجاهل مع الرسالة'; +$labels['messagekeep'] = 'إبقاء الرسالة في علبة الوارد'; +$labels['messagesrules'] = 'للبريد الوارد:'; +$labels['messagesactions'] = '...تنفيذ المهام التالية:'; $labels['add'] = 'إضافة'; $labels['del'] = 'حذف'; +$labels['sender'] = 'المرسل'; $labels['recipient'] = 'مستلم'; +$labels['vacationaddr'] = 'عناوين البريد الالكتروني(ـة) الاضافية:'; +$labels['vacationdays'] = 'في الغالب كم رسالة ترسل (بالايام):'; +$labels['vacationinterval'] = 'كم عدد الرسائل المرسلة عادةً:'; +$labels['vacationreason'] = 'نص الرسالة (بسبب الاجازة):'; +$labels['vacationsubject'] = 'موضوع الرسالة:'; +$labels['days'] = 'ايام'; +$labels['seconds'] = 'ثواني'; +$labels['rulestop'] = 'ايقاف تقييم القواعد'; +$labels['enable'] = 'تفعيل/تعطيل'; +$labels['filterset'] = 'مجموعة مصفياة'; +$labels['filtersets'] = 'مجموعة تصفية'; +$labels['filtersetadd'] = 'اضافة مجموعة تصفية'; +$labels['filtersetdel'] = 'حذف مجموعة التصفية الحالية'; +$labels['filtersetact'] = 'تفعيل مجموعة التصفية الحالية '; +$labels['filtersetdeact'] = 'تعطيل مجموعة التصفية الحالية '; +$labels['filterdef'] = 'تعريف التصفية '; +$labels['filtersetname'] = 'اسم مجموعة التصفية'; +$labels['newfilterset'] = 'مجموعة تصفية جديدة'; $labels['active'] = 'نشط'; +$labels['none'] = 'لاشيء'; +$labels['fromset'] = 'من مجموعة'; +$labels['fromfile'] = 'من ملف'; +$labels['filterdisabled'] = 'تعطيل التصفية'; +$labels['countisgreaterthan'] = 'العدد اكبر من '; +$labels['countisgreaterthanequal'] = 'العدد اكبر من او يساوي '; +$labels['countislessthan'] = 'العدد اقل من '; +$labels['countislessthanequal'] = 'العدد اقل من او يساوي'; +$labels['countequals'] = 'العدد يساوي '; +$labels['countnotequals'] = 'العدد لا يساوي'; +$labels['valueisgreaterthan'] = 'القيمة اكبر من '; +$labels['valueisgreaterthanequal'] = 'القيمة اكبر من او تساوي'; +$labels['valueislessthan'] = 'القيمة اقل من '; +$labels['valueislessthanequal'] = 'القيمة اقل من او يساوي'; +$labels['valueequals'] = 'القيمة تساوي'; +$labels['valuenotequals'] = 'القيمة لا تساوي'; +$labels['setflags'] = 'ضع وسم على هذه الرسالة '; +$labels['addflags'] = 'اضف وسم على هذه الرسالة '; +$labels['removeflags'] = 'احذف الوسم الموجود على هذه الرسالة '; +$labels['flagread'] = 'قراءة '; $labels['flagdeleted'] = 'محذوف'; +$labels['flaganswered'] = 'مجابة'; $labels['flagflagged'] = 'موسوم'; $labels['flagdraft'] = 'مسودة'; +$labels['setvariable'] = 'تعيين متغير'; +$labels['setvarname'] = 'اسم المتغير:'; +$labels['setvarvalue'] = 'قيمة المتغير:'; +$labels['setvarmodifiers'] = 'تعديلات:'; +$labels['varquotewildcard'] = 'أقتبس أحرف خاصة'; +$labels['varlength'] = 'الطول'; +$labels['notify'] = 'ارسل تنبية'; +$labels['notifyimportance'] = 'اهمية:'; $labels['notifyimportancelow'] = 'منخفض'; $labels['notifyimportancenormal'] = 'عادي'; $labels['notifyimportancehigh'] = 'مرتفع'; +$labels['filtercreate'] = 'انشئ تصفية'; +$labels['usedata'] = 'استخدم البيانات التالية في الفلتر:'; +$labels['nextstep'] = 'الخطوة التالية'; +$labels['...'] = '...'; +$labels['currdate'] = 'التاريخ الحالي'; +$labels['datetest'] = 'التاريخ'; +$labels['dateheader'] = 'الراس:'; +$labels['year'] = 'السنة'; +$labels['month'] = 'شهر'; +$labels['day'] = 'يوم'; +$labels['date'] = 'التاريخ (yyyy-mm-dd)'; +$labels['julian'] = 'التاريخ (يوليان)'; +$labels['hour'] = 'ساعات'; +$labels['minute'] = 'دقائق'; +$labels['second'] = 'ثواني'; +$labels['time'] = 'الوقت (hh:mm:ss)'; +$labels['iso8601'] = 'التاريخ (ISO8601)'; +$labels['std11'] = 'التاريخ (RFC2822)'; +$labels['zone'] = 'المنطقة الزمنية'; +$labels['weekday'] = 'ايام العمل (0-6)'; $labels['advancedopts'] = 'خيارات متقدّمة'; +$labels['body'] = 'نص'; $labels['address'] = 'العنوان'; +$labels['modifier'] = 'تعديل:'; +$labels['text'] = 'نص'; +$labels['contenttype'] = 'نوع المحتوى'; +$labels['modtype'] = 'نوع:'; $labels['allparts'] = 'الكل'; $labels['domain'] = 'المجال'; +$labels['localpart'] = 'الجزء المحلي'; +$labels['user'] = 'مستخدم'; +$labels['detail'] = 'تفاصيل'; +$labels['default'] = 'افتراضي'; +$labels['index'] = 'الوارد:'; +$labels['indexlast'] = 'تراجع'; +$labels['vacation'] = 'اجازة '; +$labels['vacation.advanced'] = 'اعدادات متقدمة'; +$labels['vacation.subject'] = 'موضوع'; +$labels['vacation.body'] = 'محتوى '; +$labels['vacation.status'] = 'الحالة '; +$labels['vacation.on'] = 'تشغيل'; +$labels['vacation.off'] = 'ايقاف'; +$labels['vacation.addresses'] = 'عناوينني الاضافية'; +$labels['vacation.saving'] = 'يتم حفظ البيانات...'; +$messages['filterunknownerror'] = 'خطا غير معروف من الخادم.'; +$messages['filterconnerror'] = 'لا يمكن الاتصال بالخادم.'; +$messages['filterdeleteerror'] = 'لا يمكن حذف التصفية.خطا في الخادم.'; +$messages['filterdeleted'] = 'تم حذف التصفية بنجاح.'; +$messages['filtersaved'] = 'تم حفظ التصفية بنجاح.'; +$messages['filtersaveerror'] = 'لا يمكن حفظ التصفية.خطا في الخادم.'; +$messages['filterdeleteconfirm'] = 'هل تريد فعلاً حذف التصفية المحددة؟'; +$messages['ruledeleteconfirm'] = 'هل تريد فعلاً حذف القواعد المحددة؟'; +$messages['actiondeleteconfirm'] = 'هل تريد فعلاً حذف الاجراءات المحددة؟'; +$messages['forbiddenchars'] = 'احرف محظورة في هذا الحقل.'; +$messages['cannotbeempty'] = 'لا يمكن ترك الحقل فارغاً'; +$messages['ruleexist'] = 'اسم هذة التصفية موجود مسبقاً'; +$messages['setactivateerror'] = 'لا يمكن تفعيل مجموعة التصفية المحددة.خطا في الخادم.'; +$messages['setdeactivateerror'] = 'لا يمكن تعطيل مجموعة التصفية المحددة.خطا في الخادم.'; +$messages['setdeleteerror'] = 'لا يمكن حذف مجموعة التصفية المحددة.خطا في الخادم.'; +$messages['setactivated'] = 'تم تفعيل مجموعة التصفية بنجاح.'; +$messages['setdeactivated'] = 'تم تعطيل مجموعة التصفية بنجاح.'; +$messages['setdeleted'] = 'تم حذف مجموعة التصفية بنجاح.'; +$messages['setdeleteconfirm'] = 'هل تريد فعلاً حذف مجموعات التصفية المحددة؟'; +$messages['setcreateerror'] = 'لا يمكن انشاء مجموعة تصفية.خطا في الخادم.'; +$messages['setcreated'] = 'تم انشاء مجموعة التصفية بنجاح.'; +$messages['activateerror'] = 'لا يمكن تمكين التصفية(ـات) المحددة .خطا في الخادم.'; +$messages['deactivateerror'] = 'لا يمكن تعطيل التصفية(ـات) المحددة .خطا في الخادم.'; +$messages['deactivated'] = 'تم تعطيل المصفيـ(ـاة) بنجاح.'; +$messages['activated'] = 'تم تفعيل المصفيـ(ـاة) بنجاح.'; +$messages['moved'] = 'تم نقل التصفية بنجاح.'; +$messages['moveerror'] = 'لا يمكن نقل التصفياة المحددة.خطا في الخادم.'; +$messages['nametoolong'] = 'الإسم طويل جداً'; +$messages['setexist'] = 'المجموعة موجودة مسبقا.'; +$messages['nodata'] = 'يجب تحديد موضع واحد على الأقل!'; +$messages['invaliddateformat'] = 'تاريخ غير صحيح او يوجد خطا في تنسق اجزاء التاريخ'; +$messages['saveerror'] = 'لا يمكن حفظ البيانات. خطا في الخادم.'; +$messages['vacationsaved'] = 'تم حفظ تاريخ الاجازة بنجاح.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/az_AZ.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/az_AZ.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Mənim əlavə e-poçt ünvan(lar)ım: '; $labels['vacationdays'] = 'Məktub neçə müddətdən bir göndərilsin (gündə):'; $labels['vacationinterval'] = 'Məktublar nə qədər sıx göndərilsin:'; -$labels['days'] = 'günlər'; -$labels['seconds'] = 'saniyələr'; $labels['vacationreason'] = 'Məktubun mətni (səbəb yoxdur):'; $labels['vacationsubject'] = 'Məktubun mövzusu:'; +$labels['days'] = 'günlər'; +$labels['seconds'] = 'saniyələr'; $labels['rulestop'] = 'Yerinə yetirməyi dayandır'; $labels['enable'] = 'Yandır/Söndür'; $labels['filterset'] = 'Süzgəc dəsti'; @@ -108,10 +108,6 @@ $labels['varquotewildcard'] = 'dırnaq simvolu'; $labels['varlength'] = 'uzunluq'; $labels['notify'] = 'Bildiriş göndər'; -$labels['notifyaddress'] = 'Poçt ünvanı:'; -$labels['notifybody'] = 'Bildiriş mətni'; -$labels['notifysubject'] = 'Bildiriş mövzusu'; -$labels['notifyfrom'] = 'Bildirişi yolla:'; $labels['notifyimportance'] = 'Vaciblik'; $labels['notifyimportancelow'] = 'aşağı'; $labels['notifyimportancenormal'] = 'normal';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/be_BE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/be_BE.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Дадатковы(я) адрасы эл. пошты:'; $labels['vacationdays'] = 'Як часта дасылаць паведамленні (у днях):'; $labels['vacationinterval'] = 'Як часта дасылаць паведамленні:'; -$labels['days'] = 'дзён'; -$labels['seconds'] = 'секунд'; $labels['vacationreason'] = 'Цела паведамлення (прычына вакацый):'; $labels['vacationsubject'] = 'Тэма паведамлення:'; +$labels['days'] = 'дзён'; +$labels['seconds'] = 'секунд'; $labels['rulestop'] = 'Перастаць выконваць праверку правілаў'; $labels['enable'] = 'Уключыць/Выключыць'; $labels['filterset'] = 'Набор фільтраў'; @@ -108,10 +108,6 @@ $labels['varquotewildcard'] = 'службовыя знакі забіраць у апострафы'; $labels['varlength'] = 'даўжыня'; $labels['notify'] = 'Паслаць апавяшчэнне'; -$labels['notifyaddress'] = 'На эл. адрас:'; -$labels['notifybody'] = 'Цела апавяшчэння:'; -$labels['notifysubject'] = 'Тэма апавяшчэння:'; -$labels['notifyfrom'] = 'Адпраўнік апавяшчэння:'; $labels['notifyimportance'] = 'Важнасць:'; $labels['notifyimportancelow'] = 'нізкая'; $labels['notifyimportancenormal'] = 'звычайная';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/bg_BG.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/bg_BG.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Мои допълнителни e-mail адреси:'; $labels['vacationdays'] = 'Колко често да праща писма (в дни):'; $labels['vacationinterval'] = 'Колко често да праща писма:'; -$labels['days'] = 'дни'; -$labels['seconds'] = 'секунди'; $labels['vacationreason'] = 'Текст на писмото (причина за ваканцията)'; $labels['vacationsubject'] = 'Заглавие на писмото'; +$labels['days'] = 'дни'; +$labels['seconds'] = 'секунди'; $labels['rulestop'] = 'Спри проверка на други условия'; $labels['enable'] = 'Включи/Изключи'; $labels['filterset'] = 'Набор филтри'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'цитиране на специални знаци'; $labels['varlength'] = 'дължина'; $labels['notify'] = 'Изпрати известие'; -$labels['notifyaddress'] = 'До e-mail адрес:'; -$labels['notifybody'] = 'Основен текст на известието:'; -$labels['notifysubject'] = 'Заглавие на известието:'; -$labels['notifyfrom'] = 'Подател на известието:'; +$labels['notifytarget'] = 'Известие към:'; +$labels['notifymessage'] = 'Съдържание на известие (опционално):'; +$labels['notifyoptions'] = 'Опции на известие (опционално):'; +$labels['notifyfrom'] = 'Известие от (опционално):'; $labels['notifyimportance'] = 'Приоритет:'; $labels['notifyimportancelow'] = 'нисък'; $labels['notifyimportancenormal'] = 'нормален'; $labels['notifyimportancehigh'] = 'висок'; +$labels['notifymethodmailto'] = 'Ел. поща'; +$labels['notifymethodtel'] = 'Телефон'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Използвай за нов филтър'; $labels['usedata'] = 'Използвай следните данни във филтъра:'; $labels['nextstep'] = 'Следваща стъпка'; @@ -157,6 +160,18 @@ $labels['asciinumeric'] = 'цифрово'; $labels['index'] = 'индекс:'; $labels['indexlast'] = 'наобратно'; +$labels['vacation'] = 'Отпуск'; +$labels['vacation.reply'] = 'Писмо отговор'; +$labels['vacation.advanced'] = 'Разширени настройки'; +$labels['vacation.subject'] = 'Относно'; +$labels['vacation.body'] = 'Съдържание'; +$labels['vacation.status'] = 'Статус'; +$labels['vacation.on'] = 'Вкл.'; +$labels['vacation.off'] = 'Изкл.'; +$labels['vacation.addresses'] = 'Моите допълнителни адреси'; +$labels['vacation.interval'] = 'Интервал на отговор'; +$labels['vacation.after'] = 'Постави правило за отпуск след'; +$labels['vacation.saving'] = 'Запис на данни...'; $messages['filterunknownerror'] = 'Неизвестна сървърна грешка.'; $messages['filterconnerror'] = 'Неуспешно свързване с managesieve сървъра.'; $messages['filterdeleteerror'] = 'Невъзможно изтриване на филтъра. Възникна сървърна грешка.'; @@ -189,4 +204,6 @@ $messages['setexist'] = 'Вече има такъв набор филтри.'; $messages['nodata'] = 'Поне една позиция трябва да е избрана!'; $messages['invaliddateformat'] = 'невалидна дата или формат на част от дата'; +$messages['saveerror'] = 'Невъзможен запис на данни. Грешка при достъп до сървър.'; +$messages['vacationsaved'] = 'Данните за отпуск са записани успешно.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/bs_BA.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/bs_BA.inc
Changed
@@ -165,9 +165,8 @@ $labels['vacation.advanced'] = 'Napredmen postavke'; $labels['vacation.subject'] = 'Naslov'; $labels['vacation.body'] = 'Tijelo'; -$labels['vacation.dates'] = 'Vrijeme odmora'; -$labels['vacation.from'] = 'Od:'; -$labels['vacation.to'] = 'Do:'; +$labels['vacation.start'] = 'Početak odmora'; +$labels['vacation.end'] = 'Kraj odmora'; $labels['vacation.status'] = 'Status'; $labels['vacation.on'] = 'Uključeno'; $labels['vacation.off'] = 'Isključeno';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/ca_ES.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/ca_ES.inc
Changed
@@ -24,7 +24,7 @@ $labels['moveup'] = 'Mou amunt'; $labels['movedown'] = 'Mou avall'; $labels['filterallof'] = 'que coincideixi amb totes les regles següents'; -$labels['filteranyof'] = 'que no coincideixi amb cap de les regles següents'; +$labels['filteranyof'] = 'que coincideixi amb qualsevol de les regles següents'; $labels['filterany'] = 'tots els missatges'; $labels['filtercontains'] = 'conté'; $labels['filternotcontains'] = 'no conté'; @@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Les meves adreces de correu addicionals:'; $labels['vacationdays'] = 'Cada quan enviar un missatge (en dies):'; $labels['vacationinterval'] = 'Amb quina freqüència s\'han d\'enviar els missatges:'; -$labels['days'] = 'dies'; -$labels['seconds'] = 'segons'; $labels['vacationreason'] = 'Cos del missatge (raó de l\'absència):'; $labels['vacationsubject'] = 'Assumpte del missatge:'; +$labels['days'] = 'dies'; +$labels['seconds'] = 'segons'; $labels['rulestop'] = 'Deixa d\'avaluar regles'; $labels['enable'] = 'Habilita/Deshabilita'; $labels['filterset'] = 'Conjunt de filtres'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'engloba els caràcters especials amb cometes'; $labels['varlength'] = 'llargada'; $labels['notify'] = 'Envia notificació'; -$labels['notifyaddress'] = 'A l\'adreça de correu electrònic:'; -$labels['notifybody'] = 'Cos de la notificació:'; -$labels['notifysubject'] = 'Assumpte de la notificació:'; -$labels['notifyfrom'] = 'Remitent de la notificació:'; +$labels['notifytarget'] = 'Objectiu de la notificació:'; +$labels['notifymessage'] = 'Missatge de notificació (opcional):'; +$labels['notifyoptions'] = 'Opcions de notificació (opcional):'; +$labels['notifyfrom'] = 'Remitent de la notificació (opcional):'; $labels['notifyimportance'] = 'Importància:'; $labels['notifyimportancelow'] = 'baixa'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'alta'; +$labels['notifymethodmailto'] = 'Correu electrònic'; +$labels['notifymethodtel'] = 'Telèfon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Crea filtre'; $labels['usedata'] = 'Fes servir les següents dades al filtre:'; $labels['nextstep'] = 'Següent pas'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numèric (ascii-numeric)'; $labels['index'] = 'índex:'; $labels['indexlast'] = 'cap enrere'; +$labels['vacation'] = 'Vacances'; +$labels['vacation.reply'] = 'Missatge de resposta'; +$labels['vacation.advanced'] = 'Paràmetres avançats'; +$labels['vacation.subject'] = 'Assumpte'; +$labels['vacation.body'] = 'Cos'; +$labels['vacation.start'] = 'Inici de vacances'; +$labels['vacation.end'] = 'Finalització de vacances'; +$labels['vacation.status'] = 'Estat'; +$labels['vacation.on'] = 'Activat'; +$labels['vacation.off'] = 'Desactivat'; +$labels['vacation.addresses'] = 'Les meves adreces addicionals:'; +$labels['vacation.interval'] = 'Interval de resposta'; +$labels['vacation.after'] = 'Posa la regla de vacances després'; +$labels['vacation.saving'] = 'S\'estan desant les dades...'; +$labels['vacation.action'] = 'Acció pel missatge entrant'; +$labels['vacation.keep'] = 'Conserva'; +$labels['vacation.discard'] = 'Descarta'; +$labels['vacation.redirect'] = 'Redirigeix cap a'; +$labels['vacation.copy'] = 'Envia còpia a'; +$labels['arialabelfiltersetactions'] = 'Accions pel conjunt de filtres'; +$labels['arialabelfilteractions'] = 'Accions del filtre'; +$labels['arialabelfilterform'] = 'Propietats del filtre'; +$labels['ariasummaryfilterslist'] = 'Llistat de filtres'; +$labels['ariasummaryfiltersetslist'] = 'Llistat de conjunts de filtres'; +$labels['filterstitle'] = 'Edita els filtres pels missatges entrants'; +$labels['vacationtitle'] = 'Edita la norma "fora de l\'oficina"'; $messages['filterunknownerror'] = 'Error desconegut al servidor.'; $messages['filterconnerror'] = 'No s\'ha pogut connectar al servidor.'; $messages['filterdeleteerror'] = 'No s\'ha pogut suprimir el filtre. Hi ha hagut un error al servidor.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'El conjunt ja existeix.'; $messages['nodata'] = 'S\'ha de seleccionar com a mínim una posició!'; $messages['invaliddateformat'] = 'data no vàlida o format no vàlid'; +$messages['saveerror'] = 'No s\'han pogut desar les dades. Hi ha hagut un error al servidor.'; +$messages['vacationsaved'] = 'Les dades de les vacances s\'han desat correctament.'; +$messages['emptyvacationbody'] = 'És obligatori definir el cos del missatge de vacances'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/cs_CZ.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/cs_CZ.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Moje další e-mailová adresa(y):'; $labels['vacationdays'] = 'Počet dnů mezi automatickými odpověďmi:'; $labels['vacationinterval'] = 'Prodleva mezi automatickými odpověďmi:'; -$labels['days'] = 'dnů'; -$labels['seconds'] = 'sekund'; $labels['vacationreason'] = 'Zpráva (Důvod nepřítomnosti):'; $labels['vacationsubject'] = 'Předmět zprávy:'; +$labels['days'] = 'dnů'; +$labels['seconds'] = 'sekund'; $labels['rulestop'] = 'Zastavit pravidla'; $labels['enable'] = 'Zapnout/Vypnout'; $labels['filterset'] = 'Sada filtrů'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'uvodit speciální znaky uvozovkama'; $labels['varlength'] = 'délka'; $labels['notify'] = 'Odeslat oznámení'; -$labels['notifyaddress'] = 'Na emailovou adresu:'; -$labels['notifybody'] = 'Zpráva oznámení:'; -$labels['notifysubject'] = 'Předmět oznámení:'; -$labels['notifyfrom'] = 'Odesílatel oznámení:'; +$labels['notifytarget'] = 'Cíl oznámení:'; +$labels['notifymessage'] = 'Zpráva oznámení (nepovinné):'; +$labels['notifyoptions'] = 'Možnosti oznámení (nepovinné):'; +$labels['notifyfrom'] = 'Odesílatel oznámení (nepovinné):'; $labels['notifyimportance'] = 'Důležitost:'; $labels['notifyimportancelow'] = 'nízká'; $labels['notifyimportancenormal'] = 'normální'; $labels['notifyimportancehigh'] = 'vysoká'; +$labels['notifymethodmailto'] = 'E-mail'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Vytvořit filtr'; $labels['usedata'] = 'Použít následující údaje ve filtru:'; $labels['nextstep'] = 'Další krok'; @@ -157,6 +160,26 @@ $labels['asciinumeric'] = 'číslené (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'pozpátku'; +$labels['vacation'] = 'Dovolená'; +$labels['vacation.reply'] = 'Odpověd'; +$labels['vacation.advanced'] = 'Pokročilá nastavení'; +$labels['vacation.subject'] = 'Předmět'; +$labels['vacation.body'] = 'Tělo'; +$labels['vacation.start'] = 'Začátek dovolené'; +$labels['vacation.end'] = 'Konec dovolené'; +$labels['vacation.status'] = 'Stav'; +$labels['vacation.on'] = 'Zapnuto'; +$labels['vacation.off'] = 'Vypnuto'; +$labels['vacation.addresses'] = 'Moje další adresy:'; +$labels['vacation.interval'] = 'Doba mezi odpověďmi'; +$labels['vacation.after'] = 'Uložit pravidlo o dovolené za'; +$labels['vacation.saving'] = 'Ukládám data...'; +$labels['vacation.keep'] = 'Zachovat'; +$labels['vacation.discard'] = 'Zrušit'; +$labels['vacation.copy'] = 'Odeslat kopii zprávy na'; +$labels['arialabelfilterform'] = 'Vlastnosti filtru'; +$labels['ariasummaryfilterslist'] = 'Seznam filtrů'; +$labels['ariasummaryfiltersetslist'] = 'Seznam sad filtrů'; $messages['filterunknownerror'] = 'Neznámá chyba serveru'; $messages['filterconnerror'] = 'Nebylo možné se připojit k sieve serveru'; $messages['filterdeleteerror'] = 'Nebylo možné smazat filtr. Došlo k chybě serveru.'; @@ -180,7 +203,7 @@ $messages['setcreated'] = 'Sada filtrů úspěšně vytvořena.'; $messages['activateerror'] = 'Nelze zapnout vybrané filtr/y. Došlo k chybě serveru.'; $messages['deactivateerror'] = 'Nelze vypnout vybrané filtr/y. Došlo k chybě serveru.'; -$messages['deactivated'] = 'Filtr/y úspěšne vypnuty.'; +$messages['deactivated'] = 'Filtr(y) úspěšně vypnuty.'; $messages['activated'] = 'Filtr/y úspěšně zapnuty.'; $messages['moved'] = 'Filtr byl úspěšně přesunut.'; $messages['moveerror'] = 'Nelze přesunout vybraný filtr. Došlo k chybě serveru.'; @@ -189,4 +212,7 @@ $messages['setexist'] = 'Sada již existuje.'; $messages['nodata'] = 'Musí být vybrána minimálně jedna pozice!'; $messages['invaliddateformat'] = 'Neplatné datum nebo část data'; +$messages['saveerror'] = 'Nebylo možné uložit data. Došlo k chybě serveru.'; +$messages['vacationsaved'] = 'Data o dovolené byla uložena.'; +$messages['emptyvacationbody'] = 'Tělo zprávy'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/cy_GB.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/cy_GB.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Fy nghyfeiriad(au) ebost ychwanegol:'; $labels['vacationdays'] = 'Pa mor aml i ddanfon negeseuon (mewn dyddiau):'; $labels['vacationinterval'] = 'Pa mor aml i ddanfon negeseuon:'; -$labels['days'] = 'dyddiau'; -$labels['seconds'] = 'eiliadau'; $labels['vacationreason'] = 'Corff neges (rheswm ar wyliau):'; $labels['vacationsubject'] = 'Pwnc neges:'; +$labels['days'] = 'dyddiau'; +$labels['seconds'] = 'eiliadau'; $labels['rulestop'] = 'Stopio gwerthuso rheolau'; $labels['enable'] = 'Galluogi/Analluogi'; $labels['filterset'] = 'Set hidlyddion'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'dyfynnu nodau arbennig'; $labels['varlength'] = 'hyd'; $labels['notify'] = 'Anfon hysbysiad'; -$labels['notifyaddress'] = 'I gyfeiriad ebost:'; -$labels['notifybody'] = 'Corff hysbysiad:'; -$labels['notifysubject'] = 'Pwnc hysbysiad:'; -$labels['notifyfrom'] = 'Anfonwr hysbysiad:'; +$labels['notifytarget'] = 'Target hysbysu:'; +$labels['notifymessage'] = 'Neges hysbysu (dewisol):'; +$labels['notifyoptions'] = 'Dewisiadau hysbysu (dewisol):'; +$labels['notifyfrom'] = 'Anfonwr hysbysiad (dewisol):'; $labels['notifyimportance'] = 'Pwysigrwydd:'; $labels['notifyimportancelow'] = 'isel'; $labels['notifyimportancenormal'] = 'arferol'; $labels['notifyimportancehigh'] = 'uchel'; +$labels['notifymethodmailto'] = 'Ebost'; +$labels['notifymethodtel'] = 'Ffôn'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Creu hidlydd'; $labels['usedata'] = 'Defnyddio\'r wybodaeth ganlynol yn yr hidlydd:'; $labels['nextstep'] = 'Cam nesaf'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'rhifau (ascii-numeric)'; $labels['index'] = 'mynegai:'; $labels['indexlast'] = 'o chwith'; +$labels['vacation'] = 'Gwyliau'; +$labels['vacation.reply'] = 'Neges ymateb'; +$labels['vacation.advanced'] = 'Gosodiadau uwch'; +$labels['vacation.subject'] = 'Pwnc'; +$labels['vacation.body'] = 'Corff'; +$labels['vacation.start'] = 'Dechrau gwyliau'; +$labels['vacation.end'] = 'Diwedd gwyliau'; +$labels['vacation.status'] = 'Statws'; +$labels['vacation.on'] = 'Ymlaen'; +$labels['vacation.off'] = 'I ffwrdd'; +$labels['vacation.addresses'] = 'Fy nghyfeiriadau ychwanegol'; +$labels['vacation.interval'] = 'Cyfnod ymateb'; +$labels['vacation.after'] = 'Rhoi rheol gwyliau ar ôl'; +$labels['vacation.saving'] = 'Yn cadw\'r data...'; +$labels['vacation.action'] = 'Gweithred neges i fewn'; +$labels['vacation.keep'] = 'Cadw'; +$labels['vacation.discard'] = 'Gwaredu'; +$labels['vacation.redirect'] = 'Ailgyfeirio i'; +$labels['vacation.copy'] = 'Danfon copi i'; +$labels['arialabelfiltersetactions'] = 'Gweithrediadau set hidlydd'; +$labels['arialabelfilteractions'] = 'Gweithrediadau hidlydd'; +$labels['arialabelfilterform'] = 'Nodweddion hidlydd'; +$labels['ariasummaryfilterslist'] = 'Rhestr o hidlyddion'; +$labels['ariasummaryfiltersetslist'] = 'Rhestr o setiau hidlyddion'; +$labels['filterstitle'] = 'Golygu hidlyddion ebost i fewn'; +$labels['vacationtitle'] = 'Golygu rheol allan-o\'r-swyddfa'; $messages['filterunknownerror'] = 'Gwall gweinydd anhysbys.'; $messages['filterconnerror'] = 'Methwyd cysylltu a\'r gweinydd.'; $messages['filterdeleteerror'] = 'Methwyd dileu hidlydd. Cafwydd gwall gweinydd.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Mae\'r set yn bodoli\'n barod.'; $messages['nodata'] = 'Rhaid dewis o leia un safle!'; $messages['invaliddateformat'] = 'Dyddiad neu fformat dyddiad annilys'; +$messages['saveerror'] = 'Methwyd cadw\'r data. Cafwyd gwall gweinydd.'; +$messages['vacationsaved'] = 'Cadwyd y data gwyliau yn llwyddiannus.'; +$messages['emptyvacationbody'] = 'Mae angen rhoi corff y neges wyliau!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/da_DK.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/da_DK.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Min(e) yderligere email-adresse(r):'; $labels['vacationdays'] = 'Hvor tit skal besked sendes (i dage):'; $labels['vacationinterval'] = 'Hvor tit skal besked sendes:'; -$labels['days'] = 'dage'; -$labels['seconds'] = 'sekunder'; $labels['vacationreason'] = 'Besked (ved ferie):'; $labels['vacationsubject'] = 'Besked emne:'; +$labels['days'] = 'dage'; +$labels['seconds'] = 'sekunder'; $labels['rulestop'] = 'Stop behandling af regler'; $labels['enable'] = 'Aktivér/Deaktivér'; $labels['filterset'] = 'Filter sæt'; @@ -108,14 +108,13 @@ $labels['varquotewildcard'] = 'Sæt specialle tegn i citationstegn '; $labels['varlength'] = 'længde'; $labels['notify'] = 'Send meddelelse'; -$labels['notifyaddress'] = 'Til e-mail adresse:'; -$labels['notifybody'] = 'meddelelses indhold:'; -$labels['notifysubject'] = 'Meddelelses emne:'; -$labels['notifyfrom'] = 'Meddelelses afsender:'; $labels['notifyimportance'] = 'Vigtighed:'; $labels['notifyimportancelow'] = 'lav'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'høj'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Opret filter'; $labels['usedata'] = 'Brug følgende data i filteret:'; $labels['nextstep'] = 'Næste trin'; @@ -157,6 +156,18 @@ $labels['asciinumeric'] = 'numerisk (ascii-numerisk)'; $labels['index'] = 'indeks:'; $labels['indexlast'] = 'baglends'; +$labels['vacation'] = 'Ferie'; +$labels['vacation.reply'] = 'Svar besked'; +$labels['vacation.advanced'] = 'Avanceret indstillinger '; +$labels['vacation.subject'] = 'Emne'; +$labels['vacation.start'] = 'Ferie star'; +$labels['vacation.end'] = 'Ferie slut'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.saving'] = 'Gemmer data...'; +$labels['vacation.keep'] = 'Behold'; +$labels['vacation.discard'] = 'Kasser'; +$labels['vacation.redirect'] = 'Omdiriger til '; +$labels['vacation.copy'] = 'Send kopi til'; $messages['filterunknownerror'] = 'Ukendt server fejl.'; $messages['filterconnerror'] = 'Kan ikke forbinde til server.'; $messages['filterdeleteerror'] = 'Kunne ikke slette filter. Serverfejl opstod.'; @@ -189,4 +200,6 @@ $messages['setexist'] = 'Filterv sæt eksisterer allerede'; $messages['nodata'] = 'Mindst en position skal vælges!'; $messages['invaliddateformat'] = 'Ugyldigt dato- eller tidsformat'; +$messages['saveerror'] = 'Kunne ikke gemme data. Server fejl'; +$messages['vacationsaved'] = 'Ferie data gemt'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/de_CH.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/de_CH.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Meine weiteren E-Mail-Adressen:'; $labels['vacationdays'] = 'Antwort wird erneut gesendet nach (in Tagen):'; $labels['vacationinterval'] = 'Wie oft senden:'; -$labels['days'] = 'Tage'; -$labels['seconds'] = 'Sekunden'; $labels['vacationreason'] = 'Inhalt der Nachricht (Abwesenheitsgrund):'; $labels['vacationsubject'] = 'Betreff'; +$labels['days'] = 'Tage'; +$labels['seconds'] = 'Sekunden'; $labels['rulestop'] = 'Regelauswertung anhalten'; $labels['enable'] = 'Aktivieren/Deaktivieren'; $labels['filterset'] = 'Filtersätze'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'Sonderzeichen auszeichnen'; $labels['varlength'] = 'Länge'; $labels['notify'] = 'Mitteilung senden'; -$labels['notifyaddress'] = 'Empfängeradresse:'; -$labels['notifybody'] = 'Mitteilungstext:'; -$labels['notifysubject'] = 'Mitteilungsbetreff:'; -$labels['notifyfrom'] = 'Absender:'; +$labels['notifytarget'] = 'Mitteilungsempfänger:'; +$labels['notifymessage'] = 'Mitteilungstext (optional):'; +$labels['notifyoptions'] = 'Mitteilungsoptionen (optional):'; +$labels['notifyfrom'] = 'Absender (optional):'; $labels['notifyimportance'] = 'Wichtigkeit:'; $labels['notifyimportancelow'] = 'tief'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'hoch'; +$labels['notifymethodmailto'] = 'E-Mail'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Filter erstellen'; $labels['usedata'] = 'Die folgenden Daten im Filter benutzen:'; $labels['nextstep'] = 'Nächster Schritt'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerisch (ascii-numeric)'; $labels['index'] = 'Index:'; $labels['indexlast'] = 'rückwärts'; +$labels['vacation'] = 'Abwesenheit'; +$labels['vacation.reply'] = 'Antworte mit Nachricht'; +$labels['vacation.advanced'] = 'Erweiterte Einstellungen'; +$labels['vacation.subject'] = 'Betreff'; +$labels['vacation.body'] = 'Inhalt'; +$labels['vacation.start'] = 'Beginn der Abwesenheit'; +$labels['vacation.end'] = 'Ende der Abwesenheit'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'Ein'; +$labels['vacation.off'] = 'Aus'; +$labels['vacation.addresses'] = 'Meine weiteren E-Mail-Adressen'; +$labels['vacation.interval'] = 'Antwort-Intervall'; +$labels['vacation.after'] = 'Abwesenheitsregel einfügen nach'; +$labels['vacation.saving'] = 'Speichere Daten...'; +$labels['vacation.action'] = 'Aktion für eingehende Nachrichten'; +$labels['vacation.keep'] = 'Behalten'; +$labels['vacation.discard'] = 'Verwerfen'; +$labels['vacation.redirect'] = 'Weiterleiten an'; +$labels['vacation.copy'] = 'Kopie an'; +$labels['arialabelfiltersetactions'] = 'Filtersatz-Aktionen'; +$labels['arialabelfilteractions'] = 'Filteraktionen'; +$labels['arialabelfilterform'] = 'Filtereigenschaften'; +$labels['ariasummaryfilterslist'] = 'Filterliste'; +$labels['ariasummaryfiltersetslist'] = 'Filtersatzliste'; +$labels['filterstitle'] = 'Eingehende Nachrichtenfilter bearbeiten'; +$labels['vacationtitle'] = 'Abwesenheitsregel bearbeiten'; $messages['filterunknownerror'] = 'Unbekannter Serverfehler'; $messages['filterconnerror'] = 'Kann nicht zum Sieve-Server verbinden'; $messages['filterdeleteerror'] = 'Serverfehler beim Löschen des Filters.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Filtersatz existiert bereits.'; $messages['nodata'] = 'Mindestens eine Position muss ausgewählt werden!'; $messages['invaliddateformat'] = 'Ungültiges Datumsformat'; +$messages['saveerror'] = 'Fehler beim Speichern (Serverfehler)'; +$messages['vacationsaved'] = 'Abwesenheitsnotiz erfolgreich gespeichert.'; +$messages['emptyvacationbody'] = 'Mitteilungstext ist erforderlich!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/de_DE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/de_DE.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Meine zusätzliche E-Mail-Adresse(n):'; $labels['vacationdays'] = 'Wie oft sollen Nachrichten gesendet werden (in Tagen):'; $labels['vacationinterval'] = 'Wie oft sollen Nachrichten gesendet werden:'; -$labels['days'] = 'Tage'; -$labels['seconds'] = 'Sekunden'; $labels['vacationreason'] = 'Nachrichteninhalt (Abwesenheitsgrund):'; $labels['vacationsubject'] = 'Nachrichtenbetreff'; +$labels['days'] = 'Tage'; +$labels['seconds'] = 'Sekunden'; $labels['rulestop'] = 'Regelauswertung anhalten'; $labels['enable'] = 'Aktivieren/Deaktivieren'; $labels['filterset'] = 'Filtersätze'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'maskiere Sonderzeichen'; $labels['varlength'] = 'Länge'; $labels['notify'] = 'Sende Benachrichtigung'; -$labels['notifyaddress'] = 'An Email Adresse:'; -$labels['notifybody'] = 'Benachrichtigungs-Text:'; -$labels['notifysubject'] = 'Benachrichtigungs-Betreff:'; -$labels['notifyfrom'] = 'Benachrichtigungs-Absender:'; +$labels['notifytarget'] = 'Benachrichtigungs-Empfänger:'; +$labels['notifymessage'] = 'Inhalt der Benachrichtigung (optional):'; +$labels['notifyoptions'] = 'Optionen für die Benachrichtigung (optional)'; +$labels['notifyfrom'] = 'Absender der Benachrichtigung (optional):'; $labels['notifyimportance'] = 'Priorität:'; $labels['notifyimportancelow'] = 'niedrig'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'hoch'; +$labels['notifymethodmailto'] = 'E-Mail'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Filter erstellen'; $labels['usedata'] = 'Die folgenden Daten im Filter benutzen:'; $labels['nextstep'] = 'Nächster Schritt'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerisch (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'rückwärts'; +$labels['vacation'] = 'Urlaub'; +$labels['vacation.reply'] = 'Antwort'; +$labels['vacation.advanced'] = 'Erweiterte Einstellungen'; +$labels['vacation.subject'] = 'Betreff'; +$labels['vacation.body'] = 'Hauptteil'; +$labels['vacation.start'] = 'Beginn des Urlaubs'; +$labels['vacation.end'] = 'Ende des Urlaubs'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'An'; +$labels['vacation.off'] = 'Aus'; +$labels['vacation.addresses'] = 'Meine weiteren Adressen'; +$labels['vacation.interval'] = 'Antwort Intervall'; +$labels['vacation.after'] = 'Setze Urlaubsregel nach'; +$labels['vacation.saving'] = 'Speichere Daten...'; +$labels['vacation.action'] = 'Eingehende Nachrichtaktion'; +$labels['vacation.keep'] = 'Behalten'; +$labels['vacation.discard'] = 'Verwerfen'; +$labels['vacation.redirect'] = 'Weiterleiten an'; +$labels['vacation.copy'] = 'Kopie senden an'; +$labels['arialabelfiltersetactions'] = 'Aktionen für Filtersätze'; +$labels['arialabelfilteractions'] = 'Aktionen für Filter'; +$labels['arialabelfilterform'] = 'Filtereigenschaften'; +$labels['ariasummaryfilterslist'] = 'Liste von Filtern'; +$labels['ariasummaryfiltersetslist'] = 'Liste von Filtersätzen'; +$labels['filterstitle'] = 'Eingehende Mailfilter bearbeiten'; +$labels['vacationtitle'] = 'Abwesendheitsregel bearbeiten'; $messages['filterunknownerror'] = 'Unbekannter Serverfehler'; $messages['filterconnerror'] = 'Kann keine Verbindung mit Managesieve-Server herstellen'; $messages['filterdeleteerror'] = 'Filter kann nicht gelöscht werden. Ein Serverfehler ist aufgetreten.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Filtersatz existiert bereits.'; $messages['nodata'] = 'Mindestens eine Position muss ausgewählt werden!'; $messages['invaliddateformat'] = 'Ungültiges Datum oder Teil-Format'; +$messages['saveerror'] = 'Ein Serverfehler ist aufgetreten, Speicherung war nicht möglich.'; +$messages['vacationsaved'] = 'Urlaubsdaten erfolgreich gespeichert.'; +$messages['emptyvacationbody'] = 'Inhalt der Abwesenheitsbenachrichtigung wird benötigt!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/el_GR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/el_GR.inc
Changed
@@ -47,18 +47,20 @@ $labels['messagereply'] = 'Απάντηση με μήνυμα'; $labels['messagedelete'] = 'Διαγραφή μηνύματος'; $labels['messagediscard'] = 'Απόρριψη με μήνυμα'; +$labels['messagekeep'] = 'Διατήρηση μηνύματος στα Εισερχόμενα'; $labels['messagesrules'] = 'Για εισερχόμενα μηνύματα που:'; $labels['messagesactions'] = '...εκτέλεση των παρακάτω ενεργειών:'; $labels['add'] = 'Προσθήκη'; $labels['del'] = 'Διαγραφή'; $labels['sender'] = 'Αποστολέας'; $labels['recipient'] = 'Παραλήπτης'; +$labels['vacationaddr'] = 'Πρόσθετες διευθύνσεις email:'; $labels['vacationdays'] = 'Συχνότητα αποστολής μηνυμάτων (σε ημέρες):'; $labels['vacationinterval'] = 'Συχνότητα αποστολής μηνυμάτων:'; -$labels['days'] = 'ημερες'; -$labels['seconds'] = 'δευτερόλεπτα'; $labels['vacationreason'] = 'Σώμα μηνύματος (λόγος απουσίας):'; $labels['vacationsubject'] = 'Θέμα μηνύματος: '; +$labels['days'] = 'ημερες'; +$labels['seconds'] = 'δευτερόλεπτα'; $labels['rulestop'] = 'Παύση επαλήθευσης κανόνων'; $labels['enable'] = 'Ενεργοποιηση/Απενεργοποιηση'; $labels['filterset'] = 'Φίλτρα'; @@ -106,14 +108,17 @@ $labels['varquotewildcard'] = 'παραθέση ειδικων χαρακτήρων'; $labels['varlength'] = 'Μήκος'; $labels['notify'] = 'Αποστολή ειδοποίησης '; -$labels['notifyaddress'] = 'Σε διεύθυνση email:'; -$labels['notifybody'] = 'Οργανισμός ειδοποιησης:'; -$labels['notifysubject'] = 'Θεμα ειδοποιησης:'; -$labels['notifyfrom'] = 'Αποστολεας ειδοποιησης:'; +$labels['notifytarget'] = 'Παραλήπτης ειδοποίησης:'; +$labels['notifymessage'] = 'Μήνυμα ειδοποίησης (προαιρετικά):'; +$labels['notifyoptions'] = 'Επιλογές ειδοποίησης (προαιρετικά):'; +$labels['notifyfrom'] = 'Αποστολέας ειδοποίησης (προαιρετικά):'; $labels['notifyimportance'] = 'Σημασία: '; $labels['notifyimportancelow'] = 'Χαμηλή'; $labels['notifyimportancenormal'] = 'Κανονική'; $labels['notifyimportancehigh'] = 'Υψηλή'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Τηλέφωνο'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Δημιουργία φίλτρου'; $labels['usedata'] = 'Χρησιμοποιηση ακολουθων δεδομενων στο φιλτρο:'; $labels['nextstep'] = 'Επομενο βημα'; @@ -155,27 +160,65 @@ $labels['asciinumeric'] = 'αριθμητικό (ascii-αριθμητικο)'; $labels['index'] = 'ευρετήριο:'; $labels['indexlast'] = 'προς τα πίσω'; +$labels['vacation'] = 'Διακοπές'; +$labels['vacation.reply'] = 'Μήνυμα απάντησης'; +$labels['vacation.advanced'] = 'Προηγμένες ρυθμίσεις'; +$labels['vacation.subject'] = 'Θέμα'; +$labels['vacation.body'] = 'Σώμα'; +$labels['vacation.start'] = 'Έναρξη διακοπών'; +$labels['vacation.end'] = 'Λήξη διακοπών'; +$labels['vacation.status'] = 'Κατάσταση'; +$labels['vacation.on'] = 'Ενεργό'; +$labels['vacation.off'] = 'Ανενεργό'; +$labels['vacation.addresses'] = 'Επιπλέον διευθύνσεις'; +$labels['vacation.interval'] = 'Διάστημα απάντησης'; +$labels['vacation.after'] = 'Εισαγωγή κανόνα διακοπών μετά από'; +$labels['vacation.saving'] = 'Αποθήκευση δεδομένων...'; +$labels['vacation.action'] = 'Ενέργεια εισερχόμενου μηνύματος'; +$labels['vacation.keep'] = 'Διατήρηση'; +$labels['vacation.discard'] = 'Διαγραφή'; +$labels['vacation.redirect'] = 'Ανακατεύθυνση σε'; +$labels['vacation.copy'] = 'Αποστολή αντιγράφου σε'; +$labels['arialabelfiltersetactions'] = 'Ενέργειες ομάδας φίλτρων'; +$labels['arialabelfilteractions'] = 'Ενέργειες φίλτρων'; +$labels['arialabelfilterform'] = 'Ιδιότητες φίλτρων'; +$labels['ariasummaryfilterslist'] = 'Λίστα φίλτρων'; +$labels['ariasummaryfiltersetslist'] = 'Λίστα ομάδων φίλτρων'; +$labels['filterstitle'] = 'Επεξεργασία φίλτρων εισερχόμενης αλληλογραφίας'; +$labels['vacationtitle'] = 'Επεξεργασία κανόνα εκτός-γραφείου'; $messages['filterunknownerror'] = 'Άγνωστο σφάλμα διακομιστή'; $messages['filterconnerror'] = 'Αδυναμία σύνδεσης στον διακομιστή managesieve'; +$messages['filterdeleteerror'] = 'Αδυναμία διαγραφής φίλτρου. Προέκυψε σφάλμα στον διακομιστή'; $messages['filterdeleted'] = 'Το φίλτρο διαγράφηκε επιτυχώς'; $messages['filtersaved'] = 'Το φίλτρο αποθηκεύτηκε επιτυχώς'; +$messages['filtersaveerror'] = 'Αδυναμία αποθήκευσης φίλτρου. Προέκυψε σφάλμα στον διακομιστή'; $messages['filterdeleteconfirm'] = 'Είστε σίγουροι ότι θέλετε να διαγράψετε το επιλεγμένο φίλτρο? '; $messages['ruledeleteconfirm'] = 'Θέλετε όντως να διαγράψετε τον επιλεγμένο κανόνα;'; $messages['actiondeleteconfirm'] = 'Θέλετε όντως να διαγράψετε την επιλεγμένη ενέργεια;'; $messages['forbiddenchars'] = 'Μη επιτρεπτοί χαρακτήρες στο πεδίο'; $messages['cannotbeempty'] = 'Το πεδίο δεν μπορεί να είναι κενό'; $messages['ruleexist'] = 'Φιλτρο με αυτο το όνομα υπάρχει ήδη. '; +$messages['setactivateerror'] = 'Αδυναμία ενεργοποίησης επιλεγμένων ομάδων φίλτρων. Προέκυψε σφάλμα στον διακομιστή.'; +$messages['setdeactivateerror'] = 'Αδυναμία απενεργοποίησης επιλεγμένων ομάδων φίλτρων. Προέκυψε σφάλμα στον διακομιστή.'; +$messages['setdeleteerror'] = 'Αδυναμία διαγραφής των επιλεγμένων ομάδων φίλτρων. Προέκυψε σφάλμα στον διακομιστή'; $messages['setactivated'] = 'Φίλτρα ενεργοποιήθηκαν με επιτυχία.'; $messages['setdeactivated'] = 'Φίλτρα απενεργοποιήθηκαν με επιτυχία.'; $messages['setdeleted'] = 'Τα φίλτρα διαγράφηκαν επιτυχώς.'; $messages['setdeleteconfirm'] = 'Θέλετε όντως να διαγράψετε τα επιλεγμένα φιλτρα?'; +$messages['setcreateerror'] = 'Αδυναμία δημιουργίας ομάδας φίλτρων. Προέκυψε σφάλμα στον διακομιστή.'; $messages['setcreated'] = 'Τα φιλτρα δημιουργηθηκαν επιτυχως.'; +$messages['activateerror'] = 'Αδυναμία ενεργοποίησης επιλεγμένου φίλτρου(ων). Προέκυψε σφάλμα στον διακομιστή.'; +$messages['deactivateerror'] = 'Αδυναμία απενεργοποίησης επιλεγμένου φίλτρου(ων). Προέκυψε σφάλμα στον διακομιστή.'; $messages['deactivated'] = 'Το φιλτρο(α) απενεργοποιηθηκαν επιτυχως.'; $messages['activated'] = 'Το φίλτρο(α) ενεργοποιηθηκαν επιτυχώς.'; $messages['moved'] = 'Το φίλτρο μετακινηθηκε επιτυχώς.'; +$messages['moveerror'] = 'Αδυναμία μετακίνησης επιλεγμένου φίλτρου. Προέκυψε σφάλμα στον διακομιστή.'; $messages['nametoolong'] = 'Το όνομα είναι πολύ μεγάλο.'; $messages['namereserved'] = 'Δεσμευμένο όνομα. '; $messages['setexist'] = 'Set υπάρχει ήδη. '; $messages['nodata'] = 'Τουλάχιστον μία θέση πρέπει να επιλεγεί!'; $messages['invaliddateformat'] = 'Μη έγκυρη ημερομηνία ή η ημερομηνία μορφής τμήμα'; +$messages['saveerror'] = 'Αδύνατη η αποθήκευση δεδομένων. Προέκυψε σφάλμα στον διακομιστή'; +$messages['vacationsaved'] = 'Τα δεδομένα διακοπών αποθηκεύτηκαν επιτυχώς.'; +$messages['emptyvacationbody'] = 'Απαιτείται σώμα για το μήνυμα διακοπών!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/en_CA.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/en_CA.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'My additional e-mail address(es):'; $labels['vacationdays'] = 'How often send messages (in days):'; $labels['vacationinterval'] = 'How often send messages:'; -$labels['days'] = 'days'; -$labels['seconds'] = 'seconds'; $labels['vacationreason'] = 'Message body (vacation reason):'; $labels['vacationsubject'] = 'Message subject:'; +$labels['days'] = 'days'; +$labels['seconds'] = 'seconds'; $labels['rulestop'] = 'Stop evaluating rules'; $labels['enable'] = 'Enable/Disable'; $labels['filterset'] = 'Filters set'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'quote special characters'; $labels['varlength'] = 'length'; $labels['notify'] = 'Send notification'; -$labels['notifyaddress'] = 'To e-mail address:'; -$labels['notifybody'] = 'Notification body:'; -$labels['notifysubject'] = 'Notification subject:'; -$labels['notifyfrom'] = 'Notification sender:'; +$labels['notifytarget'] = 'Notification target:'; +$labels['notifymessage'] = 'Notification message (optional):'; +$labels['notifyoptions'] = 'Notification options (optional):'; +$labels['notifyfrom'] = 'Notification sender (optional):'; $labels['notifyimportance'] = 'Importance:'; $labels['notifyimportancelow'] = 'low'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'high'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Phone'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Create filter'; $labels['usedata'] = 'Use following data in the filter:'; $labels['nextstep'] = 'Next Step'; @@ -157,6 +160,18 @@ $labels['asciinumeric'] = 'numeric (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'backwards'; +$labels['vacation'] = 'Vacation'; +$labels['vacation.reply'] = 'Reply message'; +$labels['vacation.advanced'] = 'Advanced settings'; +$labels['vacation.subject'] = 'Subject'; +$labels['vacation.body'] = 'Body'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'On'; +$labels['vacation.off'] = 'Off'; +$labels['vacation.addresses'] = 'My additional addresses'; +$labels['vacation.interval'] = 'Reply interval'; +$labels['vacation.after'] = 'Put vacation rule after'; +$labels['vacation.saving'] = 'Saving data...'; $messages['filterunknownerror'] = 'Unknown server error.'; $messages['filterconnerror'] = 'Unable to connect to server.'; $messages['filterdeleteerror'] = 'Unable to delete filter. Server error occurred.'; @@ -189,4 +204,6 @@ $messages['setexist'] = 'Set already exists.'; $messages['nodata'] = 'At least one position must be selected!'; $messages['invaliddateformat'] = 'Invalid date or date part format'; +$messages['saveerror'] = 'Unable to save data. Server error occurred.'; +$messages['vacationsaved'] = 'Vacation data saved successfully.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/en_GB.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/en_GB.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'My additional e-mail address(es):'; $labels['vacationdays'] = 'How often send messages (in days):'; $labels['vacationinterval'] = 'How often send messages:'; -$labels['days'] = 'days'; -$labels['seconds'] = 'seconds'; $labels['vacationreason'] = 'Message body (vacation reason):'; $labels['vacationsubject'] = 'Message subject:'; +$labels['days'] = 'days'; +$labels['seconds'] = 'seconds'; $labels['rulestop'] = 'Stop evaluating rules'; $labels['enable'] = 'Enable/Disable'; $labels['filterset'] = 'Filters set'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'quote special characters'; $labels['varlength'] = 'length'; $labels['notify'] = 'Send notification'; -$labels['notifyaddress'] = 'To e-mail address:'; -$labels['notifybody'] = 'Notification body:'; -$labels['notifysubject'] = 'Notification subject:'; -$labels['notifyfrom'] = 'Notification sender:'; +$labels['notifytarget'] = 'Notification target:'; +$labels['notifymessage'] = 'Notification message (optional):'; +$labels['notifyoptions'] = 'Notification options (optional):'; +$labels['notifyfrom'] = 'Notification sender (optional):'; $labels['notifyimportance'] = 'Importance:'; $labels['notifyimportancelow'] = 'low'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'high'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Phone'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Create filter'; $labels['usedata'] = 'Use following data in the filter:'; $labels['nextstep'] = 'Next Step'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numeric (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'backwards'; +$labels['vacation'] = 'Vacation'; +$labels['vacation.reply'] = 'Reply message'; +$labels['vacation.advanced'] = 'Advanced settings'; +$labels['vacation.subject'] = 'Subject'; +$labels['vacation.body'] = 'Body'; +$labels['vacation.start'] = 'Vacation start'; +$labels['vacation.end'] = 'Vacation end'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'On'; +$labels['vacation.off'] = 'Off'; +$labels['vacation.addresses'] = 'My additional addresses'; +$labels['vacation.interval'] = 'Reply interval'; +$labels['vacation.after'] = 'Put vacation rule after'; +$labels['vacation.saving'] = 'Saving data...'; +$labels['vacation.action'] = 'Incoming message action'; +$labels['vacation.keep'] = 'Keep'; +$labels['vacation.discard'] = 'Discard'; +$labels['vacation.redirect'] = 'Redirect to'; +$labels['vacation.copy'] = 'Send copy to'; +$labels['arialabelfiltersetactions'] = 'Filter set actions'; +$labels['arialabelfilteractions'] = 'Filter actions'; +$labels['arialabelfilterform'] = 'Filter properties'; +$labels['ariasummaryfilterslist'] = 'List of filters'; +$labels['ariasummaryfiltersetslist'] = 'List of filter sets'; +$labels['filterstitle'] = 'Edit incoming mail filters'; +$labels['vacationtitle'] = 'Edit out-of-office rule'; $messages['filterunknownerror'] = 'Unknown server error'; $messages['filterconnerror'] = 'Unable to connect to managesieve server'; $messages['filterdeleteerror'] = 'Unable to delete filter. Server error occurred.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Set already exists.'; $messages['nodata'] = 'At least one position must be selected!'; $messages['invaliddateformat'] = 'Invalid date or date part format'; +$messages['saveerror'] = 'Unable to save data. Server error occurred.'; +$messages['vacationsaved'] = 'Vacation data saved successfully.'; +$messages['emptyvacationbody'] = 'Body of vacation message is required!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/en_US.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/en_US.inc
Changed
@@ -167,9 +167,8 @@ $labels['vacation.advanced'] = 'Advanced settings'; $labels['vacation.subject'] = 'Subject'; $labels['vacation.body'] = 'Body'; -$labels['vacation.dates'] = 'Vacation time'; -$labels['vacation.from'] = 'From:'; -$labels['vacation.to'] = 'To:'; +$labels['vacation.start'] = 'Vacation start'; +$labels['vacation.end'] = 'Vacation end'; $labels['vacation.status'] = 'Status'; $labels['vacation.on'] = 'On'; $labels['vacation.off'] = 'Off';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/es_419.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/es_419.inc
Changed
@@ -165,9 +165,8 @@ $labels['vacation.advanced'] = 'Opciones avanzadas'; $labels['vacation.subject'] = 'Asunto'; $labels['vacation.body'] = 'Cuerpo'; -$labels['vacation.dates'] = 'Horario de vacaciones'; -$labels['vacation.from'] = 'De:'; -$labels['vacation.to'] = 'Para:'; +$labels['vacation.start'] = 'Inicio de vacaciones'; +$labels['vacation.end'] = 'Final de vacaciones'; $labels['vacation.status'] = 'Estado'; $labels['vacation.on'] = 'Encendido'; $labels['vacation.off'] = 'Apagado';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/es_AR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/es_AR.inc
Changed
@@ -165,9 +165,8 @@ $labels['vacation.advanced'] = 'Opciones avanzdas'; $labels['vacation.subject'] = 'Asunto'; $labels['vacation.body'] = 'Cuerpo'; -$labels['vacation.dates'] = 'Período de vacaciones'; -$labels['vacation.from'] = 'De:'; -$labels['vacation.to'] = 'Para:'; +$labels['vacation.start'] = 'Inicio de vacaciones'; +$labels['vacation.end'] = 'Final de vacaciones'; $labels['vacation.status'] = 'Estado'; $labels['vacation.on'] = 'On'; $labels['vacation.off'] = 'Off';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/es_ES.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/es_ES.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Mis direcciones adicionales de correo electrónico:'; $labels['vacationdays'] = 'Cada cuánto enviar mensajes (en días):'; $labels['vacationinterval'] = 'Cada cuánto enviar mensajes:'; -$labels['days'] = 'días'; -$labels['seconds'] = 'segundos'; $labels['vacationreason'] = 'Cuerpo del mensaje (razón de vacaciones):'; $labels['vacationsubject'] = 'Asunto del Mensaje:'; +$labels['days'] = 'días'; +$labels['seconds'] = 'segundos'; $labels['rulestop'] = 'Parar de evaluar reglas'; $labels['enable'] = 'Habilitar/Deshabilitar'; $labels['filterset'] = 'Conjunto de filtros'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'entrecomillar caracteres especiales'; $labels['varlength'] = 'longitud'; $labels['notify'] = 'Enviar notificación'; -$labels['notifyaddress'] = 'A la dirección de correo:'; -$labels['notifybody'] = 'Cuerpo de la notificación:'; -$labels['notifysubject'] = 'Tema de la notificación:'; -$labels['notifyfrom'] = 'Remitente de la notificación:'; +$labels['notifytarget'] = 'Destino de la notificación:'; +$labels['notifymessage'] = 'Mensaje de notificación (opcional):'; +$labels['notifyoptions'] = 'Opciones de notificación (opcional):'; +$labels['notifyfrom'] = 'Remitente de la notificación (opcional):'; $labels['notifyimportance'] = 'Importancia:'; $labels['notifyimportancelow'] = 'baja'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'alta'; +$labels['notifymethodmailto'] = 'Correo electrónico'; +$labels['notifymethodtel'] = 'Teléfono'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Crear Filtro'; $labels['usedata'] = 'Usar los siguientes datos en el filtro:'; $labels['nextstep'] = 'Siguiente paso'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerico (ascii-numeric)'; $labels['index'] = 'índice:'; $labels['indexlast'] = 'hacia atrás'; +$labels['vacation'] = 'Vacaciones'; +$labels['vacation.reply'] = 'Mensaje de respuesta'; +$labels['vacation.advanced'] = 'Configuración avanzada'; +$labels['vacation.subject'] = 'Asunto'; +$labels['vacation.body'] = 'Cuerpo'; +$labels['vacation.start'] = 'Comienzo de las vacaciones'; +$labels['vacation.end'] = 'Final de las vacaciones'; +$labels['vacation.status'] = 'Estado'; +$labels['vacation.on'] = 'Activado'; +$labels['vacation.off'] = 'Desactivado'; +$labels['vacation.addresses'] = 'Mis direcciones adicionales'; +$labels['vacation.interval'] = 'Intervalo de respuesta'; +$labels['vacation.after'] = 'Poner regla de vacaciones después de'; +$labels['vacation.saving'] = 'Guardando datos...'; +$labels['vacation.action'] = 'Acción de mensaje entrante'; +$labels['vacation.keep'] = 'Mantener'; +$labels['vacation.discard'] = 'Descartar'; +$labels['vacation.redirect'] = 'Redireccionar a'; +$labels['vacation.copy'] = 'Enviar copia a'; +$labels['arialabelfiltersetactions'] = 'Acciones de un paquete de filtros'; +$labels['arialabelfilteractions'] = 'Acciones de filtro'; +$labels['arialabelfilterform'] = 'Propiedades de filtro'; +$labels['ariasummaryfilterslist'] = 'Lista de filtros'; +$labels['ariasummaryfiltersetslist'] = 'Lista de paquetes de filtros'; +$labels['filterstitle'] = 'Editar filtros de mensajes entrantes'; +$labels['vacationtitle'] = 'Editar la regla fuera-de-la-oficina'; $messages['filterunknownerror'] = 'Error desconocido en el servidor.'; $messages['filterconnerror'] = 'No se ha podido conectar con el servidor managesieve.'; $messages['filterdeleteerror'] = 'No se ha podido borrar el filtro. Ha ocurrido un error en el servidor.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'El conjunto ya existe.'; $messages['nodata'] = '¡Al menos una posición debe ser seleccionada!'; $messages['invaliddateformat'] = 'Fecha o formato de parte de la fecha no válido'; +$messages['saveerror'] = 'No fue posible guardar los datos. Ha ocurrido un error en el servidor.'; +$messages['vacationsaved'] = 'Datos de vacaciones guardados correctamente.'; +$messages['emptyvacationbody'] = '¡Hace falta un texto en el mensaje de vacaciones!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/et_EE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/et_EE.inc
Changed
@@ -55,10 +55,10 @@ $labels['recipient'] = 'Saaja'; $labels['vacationdays'] = 'Kui tihti kirju saata (päevades):'; $labels['vacationinterval'] = 'Kui tihti kirju saata:'; -$labels['days'] = 'päeva'; -$labels['seconds'] = 'sekundit'; $labels['vacationreason'] = 'Kirja sisu (puhkuse põhjus):'; $labels['vacationsubject'] = 'Kirja teema:'; +$labels['days'] = 'päeva'; +$labels['seconds'] = 'sekundit'; $labels['rulestop'] = 'Peata reeglite otsimine'; $labels['enable'] = 'Luba/keela'; $labels['filterset'] = 'Filtrite kogum'; @@ -106,10 +106,6 @@ $labels['varquotewildcard'] = 'tsiteeri erimärke'; $labels['varlength'] = 'pikkus'; $labels['notify'] = 'Saada teavitus'; -$labels['notifyaddress'] = 'Saaja e-posti aadress:'; -$labels['notifybody'] = 'Teavituse sisu:'; -$labels['notifysubject'] = 'Teavituse pealkiri:'; -$labels['notifyfrom'] = 'Teavituse saatja:'; $labels['notifyimportance'] = 'Tähtsus:'; $labels['notifyimportancelow'] = 'madal'; $labels['notifyimportancenormal'] = 'tavaline';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/eu_ES.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/eu_ES.inc
Changed
@@ -32,10 +32,10 @@ $labels['filterisnot'] = 'ez da honen berdina'; $labels['filterexists'] = 'badago'; $labels['filternotexists'] = 'ez dago'; -$labels['filtermatches'] = 'bat datorren espresio'; -$labels['filternotmatches'] = 'bat ez datorren espresio'; -$labels['filterregex'] = 'bat datozen adierazpen erregularrak'; -$labels['filternotregex'] = 'bat ez datorren espresio erregularrak'; +$labels['filtermatches'] = 'bat datorren espresioa'; +$labels['filternotmatches'] = 'bat ez datorren espresioa'; +$labels['filterregex'] = 'bat datozen adierazpen erregularra'; +$labels['filternotregex'] = 'bat ez datorren espresio erregularra'; $labels['filterunder'] = 'azpian'; $labels['filterover'] = 'gainean'; $labels['addrule'] = 'Gehitu araua'; @@ -55,12 +55,12 @@ $labels['sender'] = 'Bidaltzailea'; $labels['recipient'] = 'Hartzailea'; $labels['vacationaddr'] = 'Nire helbide elektroniko osagarria(k):'; -$labels['vacationdays'] = 'Zer maiztasunarekin bidaltzen ditu mezuak (egunak)'; +$labels['vacationdays'] = 'Zenbatero bidali mezuak (egunak)'; $labels['vacationinterval'] = 'Zenbatero bidali mezuak:'; +$labels['vacationreason'] = 'Mezuaren gorputza (oporrak direla medio):'; +$labels['vacationsubject'] = 'Mezuaren gaia:'; $labels['days'] = 'egun'; $labels['seconds'] = 'segundo'; -$labels['vacationreason'] = 'Mezuaren gorputza (oporrak direla medio):'; -$labels['vacationsubject'] = 'Mezuaren izenburua:'; $labels['rulestop'] = 'Gelditu arauak ebaluatzen'; $labels['enable'] = 'Gaitu/Ezgaitu'; $labels['filterset'] = 'Iragazki-paketea'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'aipatu karaktere bereziak'; $labels['varlength'] = 'luzera'; $labels['notify'] = 'Bidali jakinarazpena'; -$labels['notifyaddress'] = 'e-posta helbidera:'; -$labels['notifybody'] = 'Jakinarazpenaren gorputza:'; -$labels['notifysubject'] = 'Jakinarazpenaren subjektua:'; -$labels['notifyfrom'] = 'Jakinarazpenaren bidaltzailea:'; +$labels['notifytarget'] = 'Jakinarazpenaren xedea:'; +$labels['notifymessage'] = 'Jakinarazpenaren mezua (aukerakoa):'; +$labels['notifyoptions'] = 'Jakinarazpenaren aukerak (aukerakoa):'; +$labels['notifyfrom'] = 'Jakinarazpenaren bidaltzailea (aukerakoa):'; $labels['notifyimportance'] = 'Garrantzia:'; $labels['notifyimportancelow'] = 'baxua'; $labels['notifyimportancenormal'] = 'normala'; $labels['notifyimportancehigh'] = 'altua'; +$labels['notifymethodmailto'] = 'Helbide elektronikoa'; +$labels['notifymethodtel'] = 'Telefonoa'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Sortu iragazkia'; $labels['usedata'] = 'Erabili datorren data iragazkian:'; $labels['nextstep'] = 'Hurrengo urratsa'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerikoa (ascii-numeric)'; $labels['index'] = 'indexatu:'; $labels['indexlast'] = 'atzeraka'; +$labels['vacation'] = 'Oporraldia'; +$labels['vacation.reply'] = 'Erantzun mezua'; +$labels['vacation.advanced'] = 'Ezarpen aurreratuak'; +$labels['vacation.subject'] = 'Gaia'; +$labels['vacation.body'] = 'Gorputza'; +$labels['vacation.start'] = 'Oporraldiaren hasiera'; +$labels['vacation.end'] = 'Oporraldiaren bukaera'; +$labels['vacation.status'] = 'Egoera'; +$labels['vacation.on'] = 'Piztuta'; +$labels['vacation.off'] = 'Itzalita'; +$labels['vacation.addresses'] = 'Nire helbide osagarriak'; +$labels['vacation.interval'] = 'Erantzun tartea'; +$labels['vacation.after'] = 'Jarri oporren erregela honen ondoren'; +$labels['vacation.saving'] = 'Datuak gordetzen...'; +$labels['vacation.action'] = 'Sarrerako mezuaren ekintza'; +$labels['vacation.keep'] = 'Mantendu'; +$labels['vacation.discard'] = 'Baztertu'; +$labels['vacation.redirect'] = 'Birbideratu hona'; +$labels['vacation.copy'] = 'Bidali kopia hona'; +$labels['arialabelfiltersetactions'] = 'Iragazki-paketearen ekintzak'; +$labels['arialabelfilteractions'] = 'Iragazki-ekintzak'; +$labels['arialabelfilterform'] = 'Iragazkiaren ezaugarriak'; +$labels['ariasummaryfilterslist'] = 'Iragazkien zerrenda'; +$labels['ariasummaryfiltersetslist'] = 'Iragazki-paketeen zerrenda'; +$labels['filterstitle'] = 'Editatu postaren sarrera-iragazkiak'; +$labels['vacationtitle'] = 'Bulegotik-kanpo -erantzun automatiko- araua'; $messages['filterunknownerror'] = 'Zerbitzari ezezaguna errorea'; $messages['filterconnerror'] = 'Ezin da konektatu zerbitzariarekin.'; $messages['filterdeleteerror'] = 'Ezin da ezabatu iragazkia. Errore bat gertatu da zerbitzarian.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Lehendik badago pakete hori.'; $messages['nodata'] = 'Gutxienez posizio bat hautatu behar da!'; $messages['invaliddateformat'] = 'Dataren edo dataren zati baten formatua ez da baliozkoa '; +$messages['saveerror'] = 'Ezin dira datuak gorde. Errorea gertatu da zerbitzarian.'; +$messages['vacationsaved'] = 'Oporren data ongi gorde da.'; +$messages['emptyvacationbody'] = 'Beharrezkoa da oporraldiko mezua jartzea!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/fa_IR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/fa_IR.inc
Changed
@@ -15,18 +15,18 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-managesieve/ */ -$labels['filters'] = 'صافیها'; -$labels['managefilters'] = 'مدیریت صافیهای نامه ورودی'; -$labels['filtername'] = 'نام صافی'; -$labels['newfilter'] = 'صافی جدید'; -$labels['filteradd'] = 'افزودن صافی'; -$labels['filterdel'] = 'حذف صافی'; +$labels['filters'] = 'پالایهها'; +$labels['managefilters'] = 'مدیریت پالایههای نامه ورودی'; +$labels['filtername'] = 'نام پالایه'; +$labels['newfilter'] = 'پالایه جدید'; +$labels['filteradd'] = 'افزودن پالایه'; +$labels['filterdel'] = 'حذف پالایه'; $labels['moveup'] = 'انتقال به بالا'; $labels['movedown'] = 'انتقال به پایین'; $labels['filterallof'] = 'مطابقت همه قوانین ذیل'; $labels['filteranyof'] = 'مطابقت هر کدام از قوانین ذیل'; $labels['filterany'] = 'همه پیغام ها'; -$labels['filtercontains'] = 'شامل'; +$labels['filtercontains'] = 'دربرگیرنده'; $labels['filternotcontains'] = 'بدون'; $labels['filteris'] = 'برابر است با'; $labels['filterisnot'] = 'برابر نیست با'; @@ -54,29 +54,29 @@ $labels['del'] = 'حذف'; $labels['sender'] = 'فرستنده'; $labels['recipient'] = 'گیرنده'; -$labels['vacationaddr'] = 'آدرس(های) ایمیل اضافی من:'; +$labels['vacationaddr'] = 'نشانی(های) رایانامه دیگر من:'; $labels['vacationdays'] = 'پیغام ها در چه مواقعی فرستاده شدند (در روزهای):'; $labels['vacationinterval'] = 'مواقعی که پیغامها ارسال میشوند:'; -$labels['days'] = 'روزها'; -$labels['seconds'] = 'ثانیهها'; $labels['vacationreason'] = 'بدنه پیغام (علت مسافرت):'; $labels['vacationsubject'] = 'موضوع پیغام:'; +$labels['days'] = 'روزها'; +$labels['seconds'] = 'ثانیهها'; $labels['rulestop'] = 'توقف قوانین ارزیابی'; $labels['enable'] = 'فعال/غیرفعالسازی'; -$labels['filterset'] = 'مجموعه صافیها'; -$labels['filtersets'] = 'مجموعههای صافیها'; -$labels['filtersetadd'] = 'افزودن مجموعه صافیها'; -$labels['filtersetdel'] = 'حذف مجموعه صافیهای جاری'; -$labels['filtersetact'] = 'فعال کردن مجموعه صافیهای جاری'; -$labels['filtersetdeact'] = 'غیرفعال کردن مجموعه صافیهای جاری'; -$labels['filterdef'] = 'تعریف صافی'; -$labels['filtersetname'] = 'نام مجموعه صافیها'; -$labels['newfilterset'] = 'مجموعه صافیهای جدید'; +$labels['filterset'] = 'مجموعه پالایهها'; +$labels['filtersets'] = 'مجموعههای پالایهها'; +$labels['filtersetadd'] = 'افزودن مجموعه پالایهها'; +$labels['filtersetdel'] = 'حذف مجموعه پالایههای جاری'; +$labels['filtersetact'] = 'فعال کردن مجموعه پالایههای جاری'; +$labels['filtersetdeact'] = 'غیرفعال کردن مجموعه پالایههای جاری'; +$labels['filterdef'] = 'تعریف پالایه'; +$labels['filtersetname'] = 'نام مجموعه پالایهها'; +$labels['newfilterset'] = 'مجموعه پالایههای جدید'; $labels['active'] = 'فعال'; $labels['none'] = 'هیچکدام'; $labels['fromset'] = 'از مجموعه'; $labels['fromfile'] = 'از پرونده'; -$labels['filterdisabled'] = 'صافی غیرفعال شد'; +$labels['filterdisabled'] = 'پالایه غیرفعال شد'; $labels['countisgreaterthan'] = 'تعداد بیشتر است از'; $labels['countisgreaterthanequal'] = 'تعداد بیشتر یا مساوی است با'; $labels['countislessthan'] = 'تعداد کمتر است از'; @@ -108,16 +108,19 @@ $labels['varquotewildcard'] = 'نقل قول کاراکترهای خاص'; $labels['varlength'] = 'طول'; $labels['notify'] = 'ارسال تذکر'; -$labels['notifyaddress'] = 'به آدرس پست الکترونیکی:'; -$labels['notifybody'] = 'بدنه تذکر:'; -$labels['notifysubject'] = 'موضوع تذکر:'; -$labels['notifyfrom'] = 'فرستنده تذکر:'; +$labels['notifytarget'] = 'مقصد آگاهسازی:'; +$labels['notifymessage'] = 'متن آگاهسازی (تختیاری):'; +$labels['notifyoptions'] = 'گزینههای آگاهسازی (اختیاری):'; +$labels['notifyfrom'] = 'فرستنده آگاهسازی (اختیاری):'; $labels['notifyimportance'] = 'اهمیت:'; $labels['notifyimportancelow'] = 'کم'; $labels['notifyimportancenormal'] = 'معمولی'; $labels['notifyimportancehigh'] = 'زیاد'; -$labels['filtercreate'] = 'ایجاد صافی'; -$labels['usedata'] = 'استفاده از داده ذیل در صافی:'; +$labels['notifymethodmailto'] = 'رایانامه'; +$labels['notifymethodtel'] = 'تلفن'; +$labels['notifymethodsms'] = 'پیامک'; +$labels['filtercreate'] = 'ایجاد پالایه'; +$labels['usedata'] = 'استفاده از داده ذیل در پالایه:'; $labels['nextstep'] = 'مرحله بعدی'; $labels['...'] = '...'; $labels['currdate'] = 'تاریخ جاری'; @@ -157,36 +160,65 @@ $labels['asciinumeric'] = 'عددی (ascii-numeric)'; $labels['index'] = 'فهرست:'; $labels['indexlast'] = 'به عقب'; +$labels['vacation'] = 'مسافرت'; +$labels['vacation.reply'] = 'پاسخ به یغام'; +$labels['vacation.advanced'] = 'تنظیمات پیشرفته'; +$labels['vacation.subject'] = 'موضوع'; +$labels['vacation.body'] = 'بدنه'; +$labels['vacation.start'] = 'شروع تعطیلی'; +$labels['vacation.end'] = 'پایان تعطیلی'; +$labels['vacation.status'] = 'وضعیت'; +$labels['vacation.on'] = 'روشن'; +$labels['vacation.off'] = 'خاموش'; +$labels['vacation.addresses'] = 'نشانیهای دیگر من'; +$labels['vacation.interval'] = 'فاصله پاسخ'; +$labels['vacation.after'] = 'قرار دادن قانون مسافرت بعد از'; +$labels['vacation.saving'] = 'ذخیره دادهها...'; +$labels['vacation.action'] = 'کنش عملکرد ورودی'; +$labels['vacation.keep'] = 'نگه داشتن'; +$labels['vacation.discard'] = 'دور انداختن'; +$labels['vacation.redirect'] = 'بازگردانی به'; +$labels['vacation.copy'] = 'ارسال رونوشت به'; +$labels['arialabelfiltersetactions'] = 'کنشهای مجموعه پالایه'; +$labels['arialabelfilteractions'] = 'کنشهای پالایه'; +$labels['arialabelfilterform'] = 'خصوصیات پالایه'; +$labels['ariasummaryfilterslist'] = 'فهرست پالایهها'; +$labels['ariasummaryfiltersetslist'] = 'فهرست مجموعه پالایهها'; +$labels['filterstitle'] = 'ویرایش پالایههای پست ورودی'; +$labels['vacationtitle'] = 'ویرایش نقش بیرون از دفتر'; $messages['filterunknownerror'] = 'خطای سرور نامعلوم.'; $messages['filterconnerror'] = 'ناتوانی در اتصال به سرور.'; -$messages['filterdeleteerror'] = 'ناتوانی در حذف صافی. خطای سرور رخ داد.'; -$messages['filterdeleted'] = 'صافی با موفقیت حذف شد.'; -$messages['filtersaved'] = 'صافی با موفقیت ذخیره شد.'; +$messages['filterdeleteerror'] = 'ناتوانی در حذف پالایه. خطای سرور رخ داد.'; +$messages['filterdeleted'] = 'پالایه با کامیابی حذف شد.'; +$messages['filtersaved'] = 'پالایه با کامیابی ذخیره شد.'; $messages['filtersaveerror'] = 'ناتوانی در ذخیره فیلتر. خطای سرور رخ داد.'; -$messages['filterdeleteconfirm'] = 'آیا مطمئن به حذف صافی انتخاب شده هستید؟'; +$messages['filterdeleteconfirm'] = 'آیا مطمئن به حذف پالایه انتخاب شده هستید؟'; $messages['ruledeleteconfirm'] = 'آیا مطمئن هستید که می خواهید قانون انتخاب شده را حذف کنید؟'; $messages['actiondeleteconfirm'] = 'آیا مطمئن هستید که می خواهید عمل انتخاب شده را حذف کنید.'; $messages['forbiddenchars'] = 'حروف ممنوعه در فیلد.'; $messages['cannotbeempty'] = 'فیلد نمی تواند خالی باشد.'; -$messages['ruleexist'] = 'صافی با این نام مشخص وجود دارد.'; -$messages['setactivateerror'] = 'ناتوان در فعال کردن مجموعه صافیها انتخاب شده. خطای سرور رخ داد.'; -$messages['setdeactivateerror'] = 'ناتوان در غیرفعال کردن مجموعه صافیها انتخاب شده. خطای سرور رخ داد.'; -$messages['setdeleteerror'] = 'ناتوان در حذف مجموعه صافیها انتخاب شده. خطای سرور رخ داد.'; -$messages['setactivated'] = 'مجموعه صافیها با موفقیت فعال شد.'; -$messages['setdeactivated'] = 'مجموعه صافیها با موفقیت غیرفعال شد.'; -$messages['setdeleted'] = 'مجموعه صافیها با موفقیت حذف شد.'; -$messages['setdeleteconfirm'] = 'آیا مطمئن هستید که میخواهید مجموعه صافیها انتخاب شده را حذف کنید؟'; -$messages['setcreateerror'] = 'ناتوانی در ایجاد مجموعه صافیها. خطای سرور رخ داد.'; -$messages['setcreated'] = 'مجموعه صافیها با موفقیت ایجاد شد.'; -$messages['activateerror'] = 'ناتوانی در فعال کردن صافی(های) انتخاب شده. خطای سرور رخ داد.'; -$messages['deactivateerror'] = 'ناتوانی در غیرفعال کردن صافی(های) انتخاب شده. خطای سرور رخ داد.'; -$messages['deactivated'] = 'صافی(ها) با موفقیت فعال شدند.'; -$messages['activated'] = 'صافی(ها) با موفقیت غیرفعال شدند.'; -$messages['moved'] = 'صافی با موفقیت منتقل شد.'; -$messages['moveerror'] = 'ناتوانی در انتقال صافی انتخاب شده. خطای سرور رخ داد.'; +$messages['ruleexist'] = 'پالایه با این نام مشخص وجود دارد.'; +$messages['setactivateerror'] = 'ناتوان در فعال کردن مجموعه پالایهها انتخاب شده. خطای سرور رخ داد.'; +$messages['setdeactivateerror'] = 'ناتوان در غیرفعال کردن مجموعه پالایهها انتخاب شده. خطای سرور رخ داد.'; +$messages['setdeleteerror'] = 'ناتوان در حذف مجموعه پالایهها انتخاب شده. خطای سرور رخ داد.'; +$messages['setactivated'] = 'مجموعه پالایهها با کامیابی فعال شد.'; +$messages['setdeactivated'] = 'مجموعه پالایهها با کامیابی غیرفعال شد.'; +$messages['setdeleted'] = 'مجموعه پالایهها با کامیابی حذف شد.'; +$messages['setdeleteconfirm'] = 'آیا مطمئن هستید که میخواهید مجموعه پالایهها انتخاب شده را حذف کنید؟'; +$messages['setcreateerror'] = 'ناتوانی در ایجاد مجموعه پالایهها. خطای سرور رخ داد.'; +$messages['setcreated'] = 'مجموعه پالایهها با کامیابی ایجاد شد.'; +$messages['activateerror'] = 'ناتوانی در فعال کردن پالایه(های) انتخاب شده. خطای سرور رخ داد.'; +$messages['deactivateerror'] = 'ناتوانی در غیرفعال کردن پالایه(های) انتخاب شده. خطای سرور رخ داد.'; +$messages['deactivated'] = 'پالایه(ها) با کامیابی فعال شدند.'; +$messages['activated'] = 'پالایه(ها) با کامیابی غیرفعال شدند.'; +$messages['moved'] = 'پالایه با کامیابی منتقل شد.'; +$messages['moveerror'] = 'ناتوانی در انتقال پالایه انتخاب شده. خطای سرور رخ داد.'; $messages['nametoolong'] = 'نام خیلی بلند.'; $messages['namereserved'] = 'نام رزرو شده.'; $messages['setexist'] = 'مجموعه در حال حاضر موجود است.'; $messages['nodata'] = 'حداقل باید یک موقعیت باید انتخاب شود.'; $messages['invaliddateformat'] = 'قالب تاریخ اشتباه'; +$messages['saveerror'] = 'ناتوانی در ذخیره اطلاعات. خطای سرور رخ داد.'; +$messages['vacationsaved'] = 'اطلاعات مسافرت با کامیابی ذخیره شد.'; +$messages['emptyvacationbody'] = 'متن پیغام تعطیلی لازم است!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/fi_FI.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/fi_FI.inc
Changed
@@ -48,17 +48,48 @@ $labels['messagedelete'] = 'Poista viesti'; $labels['messagediscard'] = 'Hylkää viestillä'; $labels['messagekeep'] = 'Säilytä viesti saapuneissa'; +$labels['messagesrules'] = 'Saapuville viesteille:'; $labels['messagesactions'] = '...suorita seuraavat toiminnot:'; $labels['add'] = 'Lisää'; $labels['del'] = 'Poista'; $labels['sender'] = 'Lähettäjä'; $labels['recipient'] = 'Vastaanottaja'; +$labels['vacationaddr'] = 'Muut sähköpostiosoitteeni:'; +$labels['vacationreason'] = 'Viestin runko (loman syy):'; $labels['vacationsubject'] = 'Viestin aihe:'; $labels['days'] = 'päivää'; $labels['seconds'] = 'sekuntia'; +$labels['rulestop'] = 'Lopeta sääntöjen arviointi'; +$labels['enable'] = 'Ota käyttöön/poista käytöstä'; +$labels['filterset'] = 'Suodattimien asetus'; +$labels['filtersets'] = 'Suodattimen asetus'; +$labels['filtersetadd'] = 'Lisää suodatinasetus'; +$labels['filtersetdel'] = 'Poista nykyiset suodatinasetukset'; +$labels['filtersetact'] = 'Aktivoi nykyinen suodattimien asetus'; +$labels['filtersetdeact'] = 'Poista käytöstä nykyinen suodattimien asetus'; +$labels['filterdef'] = 'Suodattimen määrittely'; +$labels['filtersetname'] = 'Suodattimien asetuksen nimi'; +$labels['active'] = 'aktiivinen'; +$labels['none'] = 'Ei mikään'; +$labels['fromset'] = 'sarjasta'; +$labels['fromfile'] = 'tiedostosta'; +$labels['filterdisabled'] = 'Suodatin poistettu käytöstä'; +$labels['countisgreaterthan'] = 'määrä on suurempi kuin'; +$labels['countisgreaterthanequal'] = 'määrä on suurempi tai yhtä suuri kuin'; +$labels['countislessthan'] = 'määrä on vähemmän kuin'; +$labels['countislessthanequal'] = 'määrä on vähemmän tai yhtä suuri kuin'; +$labels['countequals'] = 'määrä on yhtä suuri kuin'; +$labels['countnotequals'] = 'määrä ei ole yhtä suuri kuin'; +$labels['valueisgreaterthan'] = 'arvo on suurempi kuin'; +$labels['valueisgreaterthanequal'] = 'arvo on suurempi kuin tai yhtä suuri kuin'; +$labels['valueislessthan'] = 'arvo on vähemmän kuin'; +$labels['valueislessthanequal'] = 'määrä on vähemmän tai yhtä suuri kuin'; +$labels['valueequals'] = 'arvo on yhtä suuri kuin'; +$labels['valuenotequals'] = 'arvo ei ole yhtä suuri kuin'; $labels['setflags'] = 'Aseta liput viestiin'; $labels['addflags'] = 'Lisää liput viestiin'; $labels['removeflags'] = 'Poista liput viestistä'; +$labels['flagread'] = 'Lue'; $labels['flagdeleted'] = 'Poistettu'; $labels['flaganswered'] = 'Vastattu'; $labels['flagflagged'] = 'Liputettu'; @@ -66,42 +97,84 @@ $labels['setvariable'] = 'Aseta muuttuja'; $labels['setvarname'] = 'Muuttujan nimi:'; $labels['setvarvalue'] = 'Muuttujan arvo:'; +$labels['setvarmodifiers'] = 'Muuntimet:'; +$labels['varlower'] = 'pienellä kirjoitettu'; +$labels['varupper'] = 'isolla kirjoitettu'; +$labels['varlowerfirst'] = 'ensimmäinen merkki pienellä kirjoitettuna'; +$labels['varupperfirst'] = 'ensimmäinen merkki isolla kirjoitettuna'; +$labels['varquotewildcard'] = 'lainaa erikoismerkit'; +$labels['varlength'] = 'pituus'; +$labels['notify'] = 'Lähetä ilmoitus'; +$labels['notifytarget'] = 'Ilmoituksen kohde:'; +$labels['notifymessage'] = 'Ilmoituksen viesti (valinnainen):'; +$labels['notifyoptions'] = 'Ilmoituksen valinnat (valinnainen)'; +$labels['notifyfrom'] = 'Ilmoituksen lähettäjä (valinnainen):'; $labels['notifyimportance'] = 'Tärkeysaste:'; +$labels['notifyimportancelow'] = 'matala'; +$labels['notifyimportancenormal'] = 'normaali'; +$labels['notifyimportancehigh'] = 'korkea'; $labels['notifymethodmailto'] = 'Sähköposti'; $labels['notifymethodtel'] = 'Puhelin'; $labels['notifymethodsms'] = 'Tekstiviesti'; $labels['filtercreate'] = 'Luo suodatin'; +$labels['usedata'] = 'Käytä seuraavaa dataa suodattimessa:'; +$labels['nextstep'] = 'Seuraava vaihe'; $labels['...'] = '...'; +$labels['currdate'] = 'Nykyinen päivämäärä'; +$labels['datetest'] = 'Päivämäärä'; +$labels['dateheader'] = 'otsikko:'; $labels['year'] = 'vuosi'; $labels['month'] = 'kuukausi'; $labels['day'] = 'päivä'; +$labels['date'] = 'päivämäärä (vvvv-kk-pp)'; +$labels['julian'] = 'päivämäärä (juliaaninen)'; $labels['hour'] = 'tunti'; $labels['minute'] = 'minuutti'; $labels['second'] = 'sekunti'; $labels['time'] = 'aika (hh:mm:ss)'; +$labels['iso8601'] = 'päivämäärä (ISO8601)'; +$labels['std11'] = 'päivämäärä (RFC2882)'; $labels['zone'] = 'aikavyöhyke'; +$labels['weekday'] = 'viikonpäivä (0-6)'; $labels['advancedopts'] = 'Lisävalinnat'; +$labels['body'] = 'Runko'; $labels['address'] = 'osoite'; +$labels['envelope'] = 'kirjekuori'; +$labels['modifier'] = 'muuntaja:'; +$labels['text'] = 'teksti'; +$labels['undecoded'] = 'dekoodaamaton (raaka)'; +$labels['contenttype'] = 'sisällön tyyppi'; +$labels['modtype'] = 'tyyppi:'; $labels['allparts'] = 'kaikki'; +$labels['domain'] = 'domain'; +$labels['localpart'] = 'paikallinen osa'; $labels['user'] = 'käyttäjä'; +$labels['detail'] = 'yksityiskohta'; +$labels['comparator'] = 'vertailija:'; $labels['default'] = 'oletus'; $labels['vacation'] = 'Loma'; $labels['vacation.reply'] = 'Vastausviesti'; $labels['vacation.advanced'] = 'Lisäasetukset'; $labels['vacation.subject'] = 'Aihe'; $labels['vacation.body'] = 'Sisältö'; -$labels['vacation.dates'] = 'Loma-aika'; -$labels['vacation.from'] = 'Lähettäjä:'; -$labels['vacation.to'] = 'Vastaanottaja:'; $labels['vacation.status'] = 'Tila'; $labels['vacation.on'] = 'Päällä'; $labels['vacation.off'] = 'Pois'; $labels['vacation.saving'] = 'Tallennetaan tietoja...'; +$labels['vacation.action'] = 'Toiminto saapuvalle viestille'; +$labels['vacation.keep'] = 'Säilytä'; +$labels['vacation.discard'] = 'Hylkää'; +$labels['vacation.redirect'] = 'Ohjaa uudelleen osoitteeseen'; +$labels['vacation.copy'] = 'Lähetä kopio osoitteeseen'; $messages['filterunknownerror'] = 'Tuntematon palvelinvirhe.'; $messages['filterconnerror'] = 'Yhteys palvelimeen epäonnistui.'; $messages['filterdeleted'] = 'Suodatin poistettu onnistuneesti.'; +$messages['filtersaved'] = 'Suodatin tallennettu onnistuneesti.'; +$messages['filtersaveerror'] = 'Suodattimen tallennus epäonnistui palvelinvirheen vuoksi.'; $messages['filterdeleteconfirm'] = 'Haluatko varmasti poistaa valitun suodattimen?'; +$messages['forbiddenchars'] = 'Virheellisiä merkkejä kentässä.'; $messages['cannotbeempty'] = 'Kenttä ei voi olla tyhjä.'; +$messages['ruleexist'] = 'Suodatin samalla nimellä on jo olemassa.'; $messages['moved'] = 'Suodatin siirretty onnistuneesti.'; $messages['nametoolong'] = 'Nimi on liian pitkä.'; $messages['saveerror'] = 'Tietojen tallennus epäonnistui palvelinvirheen vuoksi.';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/fr_FR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/fr_FR.inc
Changed
@@ -16,14 +16,14 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-managesieve/ */ $labels['filters'] = 'Filtres'; -$labels['managefilters'] = 'Gérer les filtres sur les courriels entrants'; +$labels['managefilters'] = 'Gérer les filtres de courriels entrants'; $labels['filtername'] = 'Nom du filtre'; $labels['newfilter'] = 'Nouveau filtre'; $labels['filteradd'] = 'Ajouter un filtre'; $labels['filterdel'] = 'Supprimer le filtre'; $labels['moveup'] = 'Monter'; $labels['movedown'] = 'Descendre'; -$labels['filterallof'] = 'valident toutes les conditions suivantes'; +$labels['filterallof'] = 'correspondant à toutes les règles suivantes'; $labels['filteranyof'] = 'valident au moins une des conditions suivantes'; $labels['filterany'] = 'tous les messages'; $labels['filtercontains'] = 'contient'; @@ -32,16 +32,16 @@ $labels['filterisnot'] = 'est différent de'; $labels['filterexists'] = 'existe'; $labels['filternotexists'] = 'n\'existe pas'; -$labels['filtermatches'] = 'concorde avec l\'expression'; -$labels['filternotmatches'] = 'ne concorde pas avec l\'expression'; -$labels['filterregex'] = 'concorde avec l\'expression régulière'; -$labels['filternotregex'] = 'ne concorde pas avec l\'expression régulière'; -$labels['filterunder'] = 'est plus petit que'; -$labels['filterover'] = 'est plus grand que'; +$labels['filtermatches'] = 'correspond à l\'expression'; +$labels['filternotmatches'] = 'ne correspond pas à l\'expression'; +$labels['filterregex'] = 'correspond à l\'expression rationnelle'; +$labels['filternotregex'] = 'ne correspond pas à l\'expression rationnelle'; +$labels['filterunder'] = 'plus petit que'; +$labels['filterover'] = 'plus grand que'; $labels['addrule'] = 'Ajouter une règle'; $labels['delrule'] = 'Supprimer une règle'; $labels['messagemoveto'] = 'Déplacer le message vers'; -$labels['messageredirect'] = 'Transférer le message à'; +$labels['messageredirect'] = 'Rediriger le message à'; $labels['messagecopyto'] = 'Copier le message vers'; $labels['messagesendcopy'] = 'Envoyer une copie du message à'; $labels['messagereply'] = 'Répondre avec le message'; @@ -49,84 +49,87 @@ $labels['messagediscard'] = 'Rejeter avec le message'; $labels['messagekeep'] = 'Conserver le message dans la boîte de réception'; $labels['messagesrules'] = 'Pour les courriels entrants :'; -$labels['messagesactions'] = '...exécuter les actions suivantes:'; +$labels['messagesactions'] = '...exécuter les actions suivantes :'; $labels['add'] = 'Ajouter'; $labels['del'] = 'Supprimer'; $labels['sender'] = 'Expéditeur'; $labels['recipient'] = 'Destinataire'; -$labels['vacationaddr'] = 'Adresse(s) e-mail additionnelle(s):'; -$labels['vacationdays'] = 'Ne pas renvoyer un message avant (jours) :'; -$labels['vacationinterval'] = 'Comment envoyer les messages :'; +$labels['vacationaddr'] = 'Mes adresses courriel additionnelles :'; +$labels['vacationdays'] = 'Fréquence d\'envoi des messages (en jours) :'; +$labels['vacationinterval'] = 'Fréquence d\'envoi des messages :'; +$labels['vacationreason'] = 'Corps du message (raison de l\'absence) :'; +$labels['vacationsubject'] = 'Objet du message :'; $labels['days'] = 'jours'; $labels['seconds'] = 'secondes'; -$labels['vacationreason'] = 'Corps du message (raison de l\'absence) :'; -$labels['vacationsubject'] = 'Sujet du message:'; -$labels['rulestop'] = 'Arrêter d\'évaluer les prochaines règles'; -$labels['enable'] = 'Activer/Désactiver'; -$labels['filterset'] = 'Groupe de filtres'; -$labels['filtersets'] = 'Groupes de filtres'; -$labels['filtersetadd'] = 'Ajouter un groupe de filtres'; -$labels['filtersetdel'] = 'Supprimer le groupe de filtres actuel'; -$labels['filtersetact'] = 'Activer le groupe de filtres actuel'; -$labels['filtersetdeact'] = 'Désactiver le groupe de filtres actuel'; +$labels['rulestop'] = 'Arrêter l\'évaluation des règles'; +$labels['enable'] = 'Activer/désactiver'; +$labels['filterset'] = 'Jeu de filtres'; +$labels['filtersets'] = 'Jeux de filtres'; +$labels['filtersetadd'] = 'Ajouter un jeu de filtres'; +$labels['filtersetdel'] = 'Supprimer le jeu de filtres actuel'; +$labels['filtersetact'] = 'Activer le jeu de filtres actuel'; +$labels['filtersetdeact'] = 'Désactiver le jeu de filtres actuel'; $labels['filterdef'] = 'Définition du filtre'; -$labels['filtersetname'] = 'Nom du groupe de filtres'; -$labels['newfilterset'] = 'Nouveau groupe de filtres'; -$labels['active'] = 'actif'; +$labels['filtersetname'] = 'Nom du jeu de filtres'; +$labels['newfilterset'] = 'Nouveau jeu de filtres'; +$labels['active'] = 'activer'; $labels['none'] = 'aucun'; -$labels['fromset'] = 'à partir du filtre'; +$labels['fromset'] = 'à partir du jeu'; $labels['fromfile'] = 'à partir du fichier'; $labels['filterdisabled'] = 'Filtre désactivé'; $labels['countisgreaterthan'] = 'total supérieur à'; $labels['countisgreaterthanequal'] = 'total supérieur ou égal à'; $labels['countislessthan'] = 'total inférieur à'; -$labels['countislessthanequal'] = 'total inférieur à'; +$labels['countislessthanequal'] = 'total inférieur ou égal à'; $labels['countequals'] = 'total égal à'; -$labels['countnotequals'] = 'le comptage n\'est pas égal à'; +$labels['countnotequals'] = 'le nombre n\'est pas égal à'; $labels['valueisgreaterthan'] = 'valeur supérieure à'; $labels['valueisgreaterthanequal'] = 'valeur supérieure ou égale à'; $labels['valueislessthan'] = 'valeur inférieure à'; $labels['valueislessthanequal'] = 'valeur inférieure ou égale à'; $labels['valueequals'] = 'valeur égale à'; $labels['valuenotequals'] = 'la valeur n\'est pas égale à'; -$labels['setflags'] = 'Mettre les marqueurs au message'; -$labels['addflags'] = 'Ajouter les marqueurs au message'; -$labels['removeflags'] = 'Supprimer les marqueurs du message'; +$labels['setflags'] = 'Définir les drapeaux pour le message'; +$labels['addflags'] = 'Ajouter les drapeaux au message'; +$labels['removeflags'] = 'Supprimer les drapeaux du message'; $labels['flagread'] = 'Lu'; $labels['flagdeleted'] = 'Supprimé'; -$labels['flaganswered'] = 'Répondu'; -$labels['flagflagged'] = 'Marqué'; +$labels['flaganswered'] = 'Réponse envoyée'; +$labels['flagflagged'] = 'Signalé'; $labels['flagdraft'] = 'Brouillon'; $labels['setvariable'] = 'Définir une variable'; $labels['setvarname'] = 'Nom de la variable :'; $labels['setvarvalue'] = 'Valeur de la variable :'; -$labels['setvarmodifiers'] = 'Modifications :'; +$labels['setvarmodifiers'] = 'Modificateurs :'; $labels['varlower'] = 'minuscule'; $labels['varupper'] = 'majuscule'; -$labels['varlowerfirst'] = 'premier caractère minuscule'; -$labels['varupperfirst'] = 'premier caractère majuscule'; -$labels['varquotewildcard'] = 'Échapper les caractères spéciaux'; +$labels['varlowerfirst'] = 'premier caractère en minuscule'; +$labels['varupperfirst'] = 'premier caractère en majuscule'; +$labels['varquotewildcard'] = 'citer les caractères spéciaux'; $labels['varlength'] = 'longueur'; $labels['notify'] = 'Envoyer la notification'; -$labels['notifyaddress'] = 'A l\'adresse e-mail :'; -$labels['notifybody'] = 'Corps de la notification :'; -$labels['notifysubject'] = 'Objet de la notification :'; -$labels['notifyfrom'] = 'Expéditeur de la notification :'; +$labels['notifytarget'] = 'Cible de la notification :'; +$labels['notifymessage'] = 'Message de notification (optionnel) :'; +$labels['notifyoptions'] = 'Options de notification (optionnel) :'; +$labels['notifyfrom'] = 'Expéditeur de la notification (optionnel) :'; $labels['notifyimportance'] = 'Importance :'; $labels['notifyimportancelow'] = 'faible'; -$labels['notifyimportancenormal'] = 'normal'; +$labels['notifyimportancenormal'] = 'normale'; $labels['notifyimportancehigh'] = 'haute'; +$labels['notifymethodmailto'] = 'Courriel'; +$labels['notifymethodtel'] = 'Téléphone'; +$labels['notifymethodsms'] = 'Message texte'; $labels['filtercreate'] = 'Créer un filtre'; -$labels['usedata'] = 'Utiliser les informations suivantes dans le filtre'; +$labels['usedata'] = 'Utiliser les données suivantes dans le filtre :'; $labels['nextstep'] = 'Étape suivante'; $labels['...'] = '...'; $labels['currdate'] = 'Date actuelle'; $labels['datetest'] = 'Date'; -$labels['dateheader'] = 'header:'; +$labels['dateheader'] = 'en-tête :'; $labels['year'] = 'année'; $labels['month'] = 'mois'; $labels['day'] = 'jour'; -$labels['date'] = 'date (yyyy-mm-dd)'; +$labels['date'] = 'date (aaaa-mm-jj)'; $labels['julian'] = 'date (julien)'; $labels['hour'] = 'heure'; $labels['minute'] = 'minute'; @@ -137,56 +140,85 @@ $labels['zone'] = 'fuseau horaire'; $labels['weekday'] = 'jour de la semaine (0-6)'; $labels['advancedopts'] = 'Options avancées'; -$labels['body'] = 'Corps du message'; +$labels['body'] = 'Corps'; $labels['address'] = 'adresse'; $labels['envelope'] = 'enveloppe'; -$labels['modifier'] = 'modificateur:'; +$labels['modifier'] = 'modificateur :'; $labels['text'] = 'texte'; $labels['undecoded'] = 'non décodé (brut)'; $labels['contenttype'] = 'type de contenu'; -$labels['modtype'] = 'type:'; +$labels['modtype'] = 'type :'; $labels['allparts'] = 'tout'; $labels['domain'] = 'domaine'; $labels['localpart'] = 'partie locale'; $labels['user'] = 'utilisateur'; $labels['detail'] = 'détail'; -$labels['comparator'] = 'comparateur'; +$labels['comparator'] = 'comparateur :'; $labels['default'] = 'par défaut'; $labels['octet'] = 'strict (octet)'; $labels['asciicasemap'] = 'insensible à la casse (ascii-casemap)'; $labels['asciinumeric'] = 'numérique (ascii-numeric)'; -$labels['index'] = 'index:'; -$labels['indexlast'] = 'retour arrière'; -$messages['filterunknownerror'] = 'Erreur du serveur inconnue'; -$messages['filterconnerror'] = 'Connexion au serveur Managesieve impossible'; -$messages['filterdeleteerror'] = 'Impossible de supprimer le filtre. Une erreur serveur est survenue.'; -$messages['filterdeleted'] = 'Le filtre a bien été supprimé'; -$messages['filtersaved'] = 'Le filtre a bien été enregistré'; -$messages['filtersaveerror'] = 'Impossible de sauvegarder le filtre. Une erreur serveur est survenue.'; -$messages['filterdeleteconfirm'] = 'Voulez-vous vraiment supprimer le filtre sélectionné?'; -$messages['ruledeleteconfirm'] = 'Voulez-vous vraiment supprimer la règle sélectionnée?'; -$messages['actiondeleteconfirm'] = 'Voulez-vous vraiment supprimer l\'action sélectionnée?'; +$labels['index'] = 'index :'; +$labels['indexlast'] = 'à l\'envers'; +$labels['vacation'] = 'Vacances'; +$labels['vacation.reply'] = 'Message de réponse'; +$labels['vacation.advanced'] = 'Paramètres avancés'; +$labels['vacation.subject'] = 'Objet'; +$labels['vacation.body'] = 'Corps'; +$labels['vacation.start'] = 'Début de vacances'; +$labels['vacation.end'] = 'Fin de vacances'; +$labels['vacation.status'] = 'État'; +$labels['vacation.on'] = 'Arrêt'; +$labels['vacation.off'] = 'Marche'; +$labels['vacation.addresses'] = 'Mes adresses supplémentaires'; +$labels['vacation.interval'] = 'Plage de réponse'; +$labels['vacation.after'] = 'Mettre en place la règle de vacances après'; +$labels['vacation.saving'] = 'Enregistrement des données...'; +$labels['vacation.action'] = 'Action pour message entrant'; +$labels['vacation.keep'] = 'Garder'; +$labels['vacation.discard'] = 'Rejeter'; +$labels['vacation.redirect'] = 'Réacheminer à'; +$labels['vacation.copy'] = 'Envoyer une copie à'; +$labels['arialabelfiltersetactions'] = 'Actions des jeux de filtrage'; +$labels['arialabelfilteractions'] = 'Actions de filtrage'; +$labels['arialabelfilterform'] = 'Propriété du filtrage'; +$labels['ariasummaryfilterslist'] = 'Liste des filtres'; +$labels['ariasummaryfiltersetslist'] = 'Liste des jeux de filtrage'; +$labels['filterstitle'] = 'Modifier les filtres de courriels entrants'; +$labels['vacationtitle'] = 'Modifier la règle d\'absence du bureau'; +$messages['filterunknownerror'] = 'Erreur de serveur inconnue'; +$messages['filterconnerror'] = 'Connexion au serveur impossible.'; +$messages['filterdeleteerror'] = 'Impossible de supprimer le filtre. Une erreur de serveur est survenue.'; +$messages['filterdeleted'] = 'Le filtre a été supprimé avec succès.'; +$messages['filtersaved'] = 'Le filtre a été enregistré avec succès.'; +$messages['filtersaveerror'] = 'Impossible d\'enregistrer le filtre. Une erreur de serveur est survenue.'; +$messages['filterdeleteconfirm'] = 'Voulez-vous vraiment supprimer le filtre sélectionné ?'; +$messages['ruledeleteconfirm'] = 'Voulez-vous vraiment supprimer la règle sélectionnée ?'; +$messages['actiondeleteconfirm'] = 'Voulez-vous vraiment supprimer l\'action sélectionnée ?'; $messages['forbiddenchars'] = 'Caractères interdits dans le champ'; $messages['cannotbeempty'] = 'Le champ ne peut pas être vide'; $messages['ruleexist'] = 'Un filtre existe déjà avec ce nom.'; -$messages['setactivateerror'] = 'Impossible d\'activer le set de filtres sélectionné. Une erreur serveur est survenue.'; -$messages['setdeactivateerror'] = 'Impossible de désactiver le set de filtres sélectionné. Une erreur serveur est survenue.'; -$messages['setdeleteerror'] = 'Impossible de supprimer les set de filtres sélectionné. Une erreur serveur est survenue.'; -$messages['setactivated'] = 'Le groupe de filtres a bien été activé.'; -$messages['setdeactivated'] = 'Le groupe de filtres a bien été désactivé.'; -$messages['setdeleted'] = 'Le groupe de filtres a bien été supprimé.'; -$messages['setdeleteconfirm'] = 'Voulez vous vraiment supprimer le groupe de filtres sélectionné ?'; -$messages['setcreateerror'] = 'Impossible de créer un set de filtres. Une erreur serveur est survenue.'; -$messages['setcreated'] = 'Le groupe de filtres a bien été créé.'; -$messages['activateerror'] = 'Impossible d\'activer le ou les filtres sélectionné(s). Une erreur serveur est survenue.'; -$messages['deactivateerror'] = 'Impossible de désactiver le ou les filtres sélectionné(s). Une erreur serveur est survenue.'; +$messages['setactivateerror'] = 'Impossible d\'activer le jeu de filtres sélectionné. Une erreur de serveur est survenue.'; +$messages['setdeactivateerror'] = 'Impossible de désactiver le jeu de filtres sélectionné. Une erreur de serveur est survenue.'; +$messages['setdeleteerror'] = 'Impossible de supprimer le jeu de filtres sélectionné. Une erreur de serveur est survenue.'; +$messages['setactivated'] = 'Le jeu de filtres a été activé avec succès.'; +$messages['setdeactivated'] = 'Le jeu de filtres a été désactivé avec succès.'; +$messages['setdeleted'] = 'Le jeu de filtres a été supprimé avec succès.'; +$messages['setdeleteconfirm'] = 'Voulez vous vraiment supprimer le jeu de filtres sélectionné ?'; +$messages['setcreateerror'] = 'Impossible de créer un jeu de filtres. Une erreur de serveur est survenue.'; +$messages['setcreated'] = 'Le jeu de filtres a été créé avec succès.'; +$messages['activateerror'] = 'Impossible d\'activer le/les filtre(s) sélectionné(s). Une erreur de serveur est survenue.'; +$messages['deactivateerror'] = 'Impossible de désactiver le/les filtre(s) sélectionné(s). Une erreur de serveur est survenue.'; $messages['deactivated'] = 'Filtre(s) désactivé(s) avec succès.'; $messages['activated'] = 'Filtre(s) activé(s) avec succès.'; $messages['moved'] = 'Filtre déplacé avec succès.'; -$messages['moveerror'] = 'Impossible de déplacer le filtre sélectionné. Une erreur serveur est survenue.'; +$messages['moveerror'] = 'Impossible de déplacer le filtre sélectionné. Une erreur de serveur est survenue.'; $messages['nametoolong'] = 'Nom trop long.'; $messages['namereserved'] = 'Nom réservé.'; -$messages['setexist'] = 'Ce groupe existe déjà.'; -$messages['nodata'] = 'Au moins un élément doit être selectionné !'; -$messages['invaliddateformat'] = 'Date non valide ou format d\'une partie de la date'; +$messages['setexist'] = 'Le jeu existe déjà.'; +$messages['nodata'] = 'Au moins un élément doit être sélectionné !'; +$messages['invaliddateformat'] = 'Format de date ou d\'une partie de la date invalide'; +$messages['saveerror'] = 'Impossible d\'enregistrer les données. Une erreur du serveur est survenue.'; +$messages['vacationsaved'] = 'Les données de vacances ont été enregistrées avec succès.'; +$messages['emptyvacationbody'] = 'Le corps du message de vacances est nécessaire !'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/gl_ES.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/gl_ES.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'O(s) meu(s) outro (s) enderezo(s) de correo:'; $labels['vacationdays'] = 'Cada canto enviar mensaxes (en días):'; $labels['vacationinterval'] = 'Con que frecuencia se van enviar mensaxes:'; -$labels['days'] = 'días'; -$labels['seconds'] = 'segundos'; $labels['vacationreason'] = 'Corpo da mensaxe (por vacacións):'; $labels['vacationsubject'] = 'Asunto da mensaxe:'; +$labels['days'] = 'días'; +$labels['seconds'] = 'segundos'; $labels['rulestop'] = 'Parar de avaliar regras'; $labels['enable'] = 'Activar/Desactivar'; $labels['filterset'] = 'Conxunto de filtros'; @@ -108,14 +108,13 @@ $labels['varquotewildcard'] = 'poñer entre aspas caracteres especiais'; $labels['varlength'] = 'lonxitude'; $labels['notify'] = 'Enviar notificación'; -$labels['notifyaddress'] = 'A este enderezo de correo:'; -$labels['notifybody'] = 'Corpo da notificación:'; -$labels['notifysubject'] = 'Asunto da notificación:'; -$labels['notifyfrom'] = 'Remite da notificación:'; $labels['notifyimportance'] = 'Importancia:'; $labels['notifyimportancelow'] = 'baixa'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'alta'; +$labels['notifymethodmailto'] = 'Correo electrónico'; +$labels['notifymethodtel'] = 'Teléfono'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Crear filtro'; $labels['usedata'] = 'Usar os seguintes datos no filtro:'; $labels['nextstep'] = 'Seguinte paso'; @@ -157,6 +156,21 @@ $labels['asciinumeric'] = 'numérico (ascii-numerico)'; $labels['index'] = 'índice:'; $labels['indexlast'] = 'atrás'; +$labels['vacation.reply'] = 'Respostar á mensaxe'; +$labels['vacation.advanced'] = 'Opcións avanzadas'; +$labels['vacation.subject'] = 'Asunto'; +$labels['vacation.body'] = 'Corpo'; +$labels['vacation.status'] = 'Estado'; +$labels['vacation.on'] = 'Activar'; +$labels['vacation.off'] = 'Desactivar'; +$labels['vacation.saving'] = 'Gardando datos...'; +$labels['vacation.keep'] = 'Manter'; +$labels['vacation.discard'] = 'Descartar'; +$labels['vacation.redirect'] = 'Redirixir a'; +$labels['vacation.copy'] = 'Enviar copia a'; +$labels['arialabelfilteractions'] = 'Accións de filtrado'; +$labels['arialabelfilterform'] = 'Propiedades dos filtros'; +$labels['ariasummaryfilterslist'] = 'Lista de filtros'; $messages['filterunknownerror'] = 'Erro descoñecido do servidor'; $messages['filterconnerror'] = 'Imposíbel conectar co servidor.'; $messages['filterdeleteerror'] = 'Non se pode eliminar filtro. Produciuse un erro de servidor.';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/he_IL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/he_IL.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'כתובות דוא"ל נוספות:'; $labels['vacationdays'] = 'באיזו תדירות ( בימים ) לשלוח הודעות:'; $labels['vacationinterval'] = 'באיזו תדירות לשלוח ההודעה'; -$labels['days'] = 'ימים'; -$labels['seconds'] = 'שניות'; $labels['vacationreason'] = 'גוף ההודעה (סיבת החופשה):'; $labels['vacationsubject'] = 'נושא ההודעה:'; +$labels['days'] = 'ימים'; +$labels['seconds'] = 'שניות'; $labels['rulestop'] = 'עצירה של בחינת הכללים'; $labels['enable'] = 'אפשור/ניטרול'; $labels['filterset'] = 'קבוצת מסננים'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'תו מיוחד יש לשים בין מרכאות'; $labels['varlength'] = 'אורך'; $labels['notify'] = 'משלוח התראה'; -$labels['notifyaddress'] = 'אל כתובת דו"אל:'; -$labels['notifybody'] = 'גוף ההתראה:'; -$labels['notifysubject'] = 'נושא ההתראה:'; -$labels['notifyfrom'] = 'שולח ההתראה:'; +$labels['notifytarget'] = 'יעד התראה:'; +$labels['notifymessage'] = 'הודעת התראה (רשות):'; +$labels['notifyoptions'] = 'אפשרויות התראה (רשות):'; +$labels['notifyfrom'] = 'שולח התראה (רשות):'; $labels['notifyimportance'] = 'חשיובת:'; $labels['notifyimportancelow'] = 'נמוכה'; $labels['notifyimportancenormal'] = 'רגילה'; $labels['notifyimportancehigh'] = 'גבוהה'; +$labels['notifymethodmailto'] = 'דוא״ל'; +$labels['notifymethodtel'] = 'טלפון'; +$labels['notifymethodsms'] = 'מסרון'; $labels['filtercreate'] = 'יצירת מסנן'; $labels['usedata'] = 'שימוש במידע שלהלן ליצירת המסנן:'; $labels['nextstep'] = 'הצעד הבא'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numeric (ascii-numeric)'; $labels['index'] = 'אינדקס:'; $labels['indexlast'] = 'בחזרה'; +$labels['vacation'] = 'חופשה'; +$labels['vacation.reply'] = 'הודעת תשובה'; +$labels['vacation.advanced'] = 'הגדרות מתקדמות'; +$labels['vacation.subject'] = 'נושא'; +$labels['vacation.body'] = 'גוף ההודעה'; +$labels['vacation.start'] = 'תאריך התחלה'; +$labels['vacation.end'] = 'תאריך סיום'; +$labels['vacation.status'] = 'מצב'; +$labels['vacation.on'] = 'מופעל'; +$labels['vacation.off'] = 'כבוי'; +$labels['vacation.addresses'] = 'כתובות נוספות שלי'; +$labels['vacation.interval'] = 'מרווח בין תשובות'; +$labels['vacation.after'] = 'העתקת סרגל החופשה אחרי'; +$labels['vacation.saving'] = 'שמירת מידע...'; +$labels['vacation.action'] = 'פעולה על הודעה נכנסת'; +$labels['vacation.keep'] = 'להשאיר'; +$labels['vacation.discard'] = 'להפטר'; +$labels['vacation.redirect'] = 'הפניה אל'; +$labels['vacation.copy'] = 'שליחת העתק אל'; +$labels['arialabelfiltersetactions'] = 'פעולות על קבוצה של חוקי סינון'; +$labels['arialabelfilteractions'] = 'פעולות מסנן'; +$labels['arialabelfilterform'] = 'מאפייני מסנן'; +$labels['ariasummaryfilterslist'] = 'רשימה של מסננים'; +$labels['ariasummaryfiltersetslist'] = 'רשימת קבוצות של חוקי סינון'; +$labels['filterstitle'] = 'ערוך מסנני דואר נכנס'; +$labels['vacationtitle'] = 'ערוך כלל מחוץ-אל-משרדי'; $messages['filterunknownerror'] = 'שגיאת שרת בלתי מוכרת.'; $messages['filterconnerror'] = 'לא ניתן להתחבר לשרת.'; $messages['filterdeleteerror'] = 'לא ניתן למחוק סינון. שגיאת שרת.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'הערכה כבר קיימת.'; $messages['nodata'] = 'חובה לבחור במיקום אחד לפחות!'; $messages['invaliddateformat'] = 'תאריך לא חוקי אן פורמט לא תקין'; +$messages['saveerror'] = 'לא ניתן לשמור המידע בשל שגיאה של השרת'; +$messages['vacationsaved'] = 'הודעת החופשה נשמרה בהצלחה'; +$messages['emptyvacationbody'] = 'גוף של הודעת חופשה נדרש!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/hr_HR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/hr_HR.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Dodatna e-mail adresa(e):'; $labels['vacationdays'] = 'Koliko često slati poruku (u danima):'; $labels['vacationinterval'] = 'Koliko često slati poruku:'; -$labels['days'] = 'dana'; -$labels['seconds'] = 'sekundi'; $labels['vacationreason'] = 'Tijelo poruke (razlog odmora):'; $labels['vacationsubject'] = 'Naslov poruke:'; +$labels['days'] = 'dana'; +$labels['seconds'] = 'sekundi'; $labels['rulestop'] = 'Prekini izvođenje filtera'; $labels['enable'] = 'Omogući/Onemogući'; $labels['filterset'] = 'Grupa filtera'; @@ -108,10 +108,6 @@ $labels['varquotewildcard'] = 'Citiraj specijalne znakove'; $labels['varlength'] = 'duljina'; $labels['notify'] = 'Pošalji obavijest'; -$labels['notifyaddress'] = 'Na e-mail adresu:'; -$labels['notifybody'] = 'Tekst obavijesti:'; -$labels['notifysubject'] = 'Naslov obavijesti:'; -$labels['notifyfrom'] = 'Pošiljatelj obavijesti:'; $labels['notifyimportance'] = 'Važnost:'; $labels['notifyimportancelow'] = 'niska'; $labels['notifyimportancenormal'] = 'normalna'; @@ -157,6 +153,11 @@ $labels['asciinumeric'] = 'numerički (ascii-numeric)'; $labels['index'] = 'indeks:'; $labels['indexlast'] = 'unatrag'; +$labels['vacation.advanced'] = 'Napredne postavke'; +$labels['vacation.subject'] = 'Naslov'; +$labels['vacation.body'] = 'Tijelo poruke'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.saving'] = 'Spremanje podataka...'; $messages['filterunknownerror'] = 'Nepoznata greška na poslužitelju'; $messages['filterconnerror'] = 'Nemoguće spajanje na poslužitelj (managesieve)'; $messages['filterdeleteerror'] = 'Nemoguće brisanje filtera. Greška na poslužitelju.'; @@ -189,4 +190,5 @@ $messages['setexist'] = 'Skup već postoji.'; $messages['nodata'] = 'Barem jedan pozicija mora biti odabrana!'; $messages['invaliddateformat'] = 'Neispravan datum ili dio datuma'; +$messages['saveerror'] = 'Nemoguće spremiti podatke. Greška na poslužitelju.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/hu_HU.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/hu_HU.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'További e-mail címeim:'; $labels['vacationdays'] = 'Válaszüzenet küldése ennyi naponként:'; $labels['vacationinterval'] = 'Milyen gyakran küld üzeneteket:'; -$labels['days'] = 'napok'; -$labels['seconds'] = 'másodpercek'; $labels['vacationreason'] = 'Levél szövege (automatikus válasz):'; $labels['vacationsubject'] = 'Üzenet tárgya:'; +$labels['days'] = 'napok'; +$labels['seconds'] = 'másodpercek'; $labels['rulestop'] = 'Műveletek végrehajtásának befejezése'; $labels['enable'] = 'Bekapcsol/Kikapcsol'; $labels['filterset'] = 'Szűrök készlet'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'speciális karakterek idézése'; $labels['varlength'] = 'hossz'; $labels['notify'] = 'Értesítés küldése'; -$labels['notifyaddress'] = 'Címzett e-mail címe:'; -$labels['notifybody'] = 'Értesítés levéltörzse:'; -$labels['notifysubject'] = 'Értesítés tárgya:'; -$labels['notifyfrom'] = 'Értesítés feladója:'; +$labels['notifytarget'] = 'Értesítés célja:'; +$labels['notifymessage'] = 'Értesítési üzenet (opcionális):'; +$labels['notifyoptions'] = 'Értesítés opcióik (opcionális):'; +$labels['notifyfrom'] = 'Értesítés feladója (opcionális):'; $labels['notifyimportance'] = 'Fontosság:'; $labels['notifyimportancelow'] = 'alacsony'; $labels['notifyimportancenormal'] = 'normál'; $labels['notifyimportancehigh'] = 'magas'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Telefonszám'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Szűrő létrehozása'; $labels['usedata'] = 'A következő adatok használata a szűrőben'; $labels['nextstep'] = 'Következő lépés'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'számszerü (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'visszafelé'; +$labels['vacation'] = 'Vakáció'; +$labels['vacation.reply'] = 'Válasz az üzenetre'; +$labels['vacation.advanced'] = 'Haladó beállítások'; +$labels['vacation.subject'] = 'Tárgy'; +$labels['vacation.body'] = 'Törzs'; +$labels['vacation.start'] = 'Szünidő kezdete'; +$labels['vacation.end'] = 'Szünidő vége'; +$labels['vacation.status'] = 'Állapot'; +$labels['vacation.on'] = 'Be'; +$labels['vacation.off'] = 'Ki'; +$labels['vacation.addresses'] = 'További címeim'; +$labels['vacation.interval'] = 'Válasz intervallum'; +$labels['vacation.after'] = 'Rakd a szabadság szabályt ez után '; +$labels['vacation.saving'] = 'Adatok mentése...'; +$labels['vacation.action'] = 'Beérkező üzenet akció'; +$labels['vacation.keep'] = 'Megtartás'; +$labels['vacation.discard'] = 'Érvénytelenít'; +$labels['vacation.redirect'] = 'Átírányítás ide'; +$labels['vacation.copy'] = 'Másolat kűldése ide'; +$labels['arialabelfiltersetactions'] = 'Szűrő készlet müveletek'; +$labels['arialabelfilteractions'] = 'Szűrő müveletek'; +$labels['arialabelfilterform'] = 'Szűrő tulajdonságai'; +$labels['ariasummaryfilterslist'] = 'Szűrők listája'; +$labels['ariasummaryfiltersetslist'] = 'Szűrő készletek listája'; +$labels['filterstitle'] = 'Bejövő üzenetek szűrőinek szerkesztése'; +$labels['vacationtitle'] = 'Irodán kiívül szabász szerkesztése'; $messages['filterunknownerror'] = 'Ismeretlen szerverhiba'; $messages['filterconnerror'] = 'Nem tudok a szűrőszerverhez kapcsolódni'; $messages['filterdeleteerror'] = 'A szűrőt nem lehet törölni. Szerverhiba történt'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'A készlet már létezik.'; $messages['nodata'] = 'Legalább egyet ki kell választani.'; $messages['invaliddateformat'] = 'hibás dátum formátum'; +$messages['saveerror'] = 'Az adat mentése sikertelen. Szerverhiba történt'; +$messages['vacationsaved'] = 'Vakáció adatai sikeresen elmentve.'; +$messages['emptyvacationbody'] = 'A vakácíó üzenet szövegtörzse kötelező!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/id_ID.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/id_ID.inc
Changed
@@ -165,9 +165,6 @@ $labels['vacation.advanced'] = 'Pengaturan Lanjutan'; $labels['vacation.subject'] = 'Judul'; $labels['vacation.body'] = 'Isi'; -$labels['vacation.dates'] = 'Waktu Liburan'; -$labels['vacation.from'] = 'Pengirim:'; -$labels['vacation.to'] = 'Kepada:'; $labels['vacation.status'] = 'Status'; $labels['vacation.on'] = 'Nyala'; $labels['vacation.off'] = 'Mati';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/it_IT.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/it_IT.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Account email aggiuntivo(i):'; $labels['vacationdays'] = 'Ogni quanti giorni ribadire il messaggio allo stesso mittente'; $labels['vacationinterval'] = 'Ogni quanto tempo inviare i messaggi:'; -$labels['days'] = 'giorni'; -$labels['seconds'] = 'secondi'; $labels['vacationreason'] = 'Corpo del messaggio (dettagli relativi all\'assenza):'; $labels['vacationsubject'] = 'Oggetto del messaggio'; +$labels['days'] = 'giorni'; +$labels['seconds'] = 'secondi'; $labels['rulestop'] = 'Non valutare le regole successive'; $labels['enable'] = 'Abilita/disabilita'; $labels['filterset'] = 'Gruppi di filtri'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'caratteri speciali di quoting'; $labels['varlength'] = 'lunghezza'; $labels['notify'] = 'Invia notifica'; -$labels['notifyaddress'] = 'All\'indirizzo email:'; -$labels['notifybody'] = 'Corpo della notifica:'; -$labels['notifysubject'] = 'Oggetto della notifica:'; -$labels['notifyfrom'] = 'Mittente della notifica:'; +$labels['notifytarget'] = 'Destinatario della notifica'; +$labels['notifymessage'] = 'Messaggio di notifica (opzionale):'; +$labels['notifyoptions'] = 'Opzioni di notifica (opzionale):'; +$labels['notifyfrom'] = 'Mittente della notifica (opzionale):'; $labels['notifyimportance'] = 'Importanza:'; $labels['notifyimportancelow'] = 'bassa'; $labels['notifyimportancenormal'] = 'normale'; $labels['notifyimportancehigh'] = 'alta'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Telefono'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Crea filtro'; $labels['usedata'] = 'utilizza i seguenti dati nel filtro'; $labels['nextstep'] = 'passo successivo'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerico'; $labels['index'] = 'indice:'; $labels['indexlast'] = 'indietro'; +$labels['vacation'] = 'Vacanza'; +$labels['vacation.reply'] = 'Messaggio di risposta'; +$labels['vacation.advanced'] = 'Impostazioni avanzate'; +$labels['vacation.subject'] = 'Oggetto'; +$labels['vacation.body'] = 'Testo'; +$labels['vacation.start'] = 'Inizio vacanza'; +$labels['vacation.end'] = 'Fine vacanza'; +$labels['vacation.status'] = 'Stato'; +$labels['vacation.on'] = 'Attivato'; +$labels['vacation.off'] = 'Disattivato'; +$labels['vacation.addresses'] = 'I miei indirizzi aggiuntivi'; +$labels['vacation.interval'] = 'Intervallo di risposta'; +$labels['vacation.after'] = 'Imposta regola di vacanza dopo'; +$labels['vacation.saving'] = 'Salvataggio...'; +$labels['vacation.action'] = 'Azione messaggio in arrivo'; +$labels['vacation.keep'] = 'Mantieni'; +$labels['vacation.discard'] = 'Elimina'; +$labels['vacation.redirect'] = 'Ridireziona a'; +$labels['vacation.copy'] = 'Invia copia a'; +$labels['arialabelfiltersetactions'] = 'Azione settaggio dei filtri '; +$labels['arialabelfilteractions'] = 'Azione Filtri'; +$labels['arialabelfilterform'] = 'Proprietà filtri'; +$labels['ariasummaryfilterslist'] = 'Lista dei filtri'; +$labels['ariasummaryfiltersetslist'] = 'Lista settaggio dei filtri'; +$labels['filterstitle'] = 'Modifica filtri dei messaggio in arrivo'; +$labels['vacationtitle'] = 'Modifica le regole del Risponditore automatico'; $messages['filterunknownerror'] = 'Errore sconosciuto del server'; $messages['filterconnerror'] = 'Collegamento al server managesieve fallito'; $messages['filterdeleteerror'] = 'Eliminazione del filtro fallita. Si è verificato un errore nel server.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Il gruppo esiste già'; $messages['nodata'] = 'selezionare almeno una posizione'; $messages['invaliddateformat'] = 'Formato della data non valido'; +$messages['saveerror'] = 'Impossibile salvare i dati. Errore del server.'; +$messages['vacationsaved'] = 'Dati di vacanza salvati correttamente.'; +$messages['emptyvacationbody'] = 'Il testo del messaggio non puo\' essere vuoto!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/ja_JP.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/ja_JP.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'My additional e-mail address(es):'; $labels['vacationdays'] = 'メッセージを(1日に)送信する頻度:'; $labels['vacationinterval'] = 'メッセージを送信する頻度:'; -$labels['days'] = '日'; -$labels['seconds'] = '秒'; $labels['vacationreason'] = 'メッセージ本体(休暇の理由):'; $labels['vacationsubject'] = 'メッセージの件名:'; +$labels['days'] = '日'; +$labels['seconds'] = '秒'; $labels['rulestop'] = 'ルールの評価を停止'; $labels['enable'] = '有効/無効'; $labels['filterset'] = 'フィルターセット'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = '特殊文字を引用処理'; $labels['varlength'] = '長さ'; $labels['notify'] = '通知を送信'; -$labels['notifyaddress'] = '送信先の電子メールアドレス:'; -$labels['notifybody'] = '通知の本文:'; -$labels['notifysubject'] = '通知の件名:'; -$labels['notifyfrom'] = '通知の送信者:'; +$labels['notifytarget'] = '通知の対象:'; +$labels['notifymessage'] = '通知のメッセージ(任意):'; +$labels['notifyoptions'] = '通知のオプション(任意):'; +$labels['notifyfrom'] = '通知の送信者(任意):'; $labels['notifyimportance'] = '重要度:'; $labels['notifyimportancelow'] = '低'; $labels['notifyimportancenormal'] = '通常'; $labels['notifyimportancehigh'] = '高'; +$labels['notifymethodmailto'] = '電子メール'; +$labels['notifymethodtel'] = '電話'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'フィルターを作成'; $labels['usedata'] = 'フィルターで次のデータを使用'; $labels['nextstep'] = '次のステップ'; @@ -157,6 +160,23 @@ $labels['asciinumeric'] = '数値(ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'backwards'; +$labels['vacation'] = '休暇'; +$labels['vacation.reply'] = '返信のメッセージ'; +$labels['vacation.advanced'] = '詳細な設定'; +$labels['vacation.subject'] = '件名'; +$labels['vacation.body'] = '本文'; +$labels['vacation.status'] = '状態'; +$labels['vacation.on'] = 'オン'; +$labels['vacation.off'] = 'オフ'; +$labels['vacation.addresses'] = '追加のアドレス'; +$labels['vacation.interval'] = '返信の間隔'; +$labels['vacation.after'] = '後に休暇のルールを記入'; +$labels['vacation.saving'] = 'データを保存中...'; +$labels['arialabelfiltersetactions'] = 'フィルターセットの動作'; +$labels['arialabelfilteractions'] = 'フィルターの動作'; +$labels['arialabelfilterform'] = 'フィルターの特性'; +$labels['ariasummaryfilterslist'] = 'フィルターの一覧'; +$labels['ariasummaryfiltersetslist'] = 'フィルターセットの一覧'; $messages['filterunknownerror'] = '不明なサーバーのエラーです。'; $messages['filterconnerror'] = 'サーバに接続できません。'; $messages['filterdeleteerror'] = 'フィルターを削除できません。サーバーでエラーが発生しました。'; @@ -189,4 +209,6 @@ $messages['setexist'] = 'フィルターセットが既に存在します。'; $messages['nodata'] = '少なくとも1つの場所を選択しなければなりません!'; $messages['invaliddateformat'] = '無効な日付または日付部分の書式'; +$messages['saveerror'] = 'フィルターの保存できません。サーバーでエラーが発生しました。'; +$messages['vacationsaved'] = '休暇のデータを保存しました。'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/km_KH.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/km_KH.inc
Changed
@@ -51,16 +51,17 @@ $labels['sender'] = 'អ្នកផ្ញើ'; $labels['recipient'] = 'អ្នកទទួល'; $labels['vacationdays'] = 'តើផ្ញើសារញឹកញាប់ប៉ុណ្ណា (ក្នុងមួយថ្ងៃ)៖'; -$labels['days'] = 'ថ្ងៃ'; -$labels['seconds'] = 'វិនាទី'; $labels['vacationreason'] = 'តួសារ (ហេតុផលវិស្សមកាល)៖'; $labels['vacationsubject'] = 'ប្រធានបទសារ៖'; +$labels['days'] = 'ថ្ងៃ'; +$labels['seconds'] = 'វិនាទី'; $labels['rulestop'] = 'ឈប់គិតទៅលើលក្ខខណ្ឌ'; $labels['enable'] = 'បើក/បិទ'; $labels['filterdef'] = 'អត្ថន័យតម្រង'; $labels['active'] = 'សកម្ម'; $labels['none'] = 'គ្មាន'; $labels['fromfile'] = 'ពីឯកសារ'; +$labels['filterdisabled'] = 'បានបិទតម្រង'; $labels['valuenotequals'] = 'តម្លៃមិនស្មើនឹង'; $labels['flagread'] = 'បានអាន'; $labels['flagdeleted'] = 'បានលុប'; @@ -74,10 +75,6 @@ $labels['varupper'] = 'អក្សរធំ'; $labels['varlength'] = 'ប្រវែង'; $labels['notify'] = 'ផ្ញើការជូនដំណឹង'; -$labels['notifyaddress'] = 'ទៅអាសយដ្ឋានអ៊ីមែល៖'; -$labels['notifybody'] = 'តួការជូនដំណឹង៖'; -$labels['notifysubject'] = 'ប្រធានបទការជូនដំណឹង៖'; -$labels['notifyfrom'] = 'អ្នកផ្ញើការជូនដំណឹង៖'; $labels['notifyimportance'] = 'សំខាន់៖'; $labels['notifyimportancelow'] = 'ទាប'; $labels['notifyimportancenormal'] = 'ធម្មតា';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/ko_KR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/ko_KR.inc
Changed
@@ -18,18 +18,18 @@ $labels['filters'] = '필터'; $labels['managefilters'] = '수신 메일 필터 관리'; $labels['filtername'] = '필터명'; -$labels['newfilter'] = '새 필터'; +$labels['newfilter'] = '새로운 필터'; $labels['filteradd'] = '필터 추가'; $labels['filterdel'] = '필터 삭제'; $labels['moveup'] = '위로 이동'; $labels['movedown'] = '아래로 이동'; -$labels['filterallof'] = '다음의 모든 규칙과 일치함'; +$labels['filterallof'] = '다음 모든 규칙과 일치함'; $labels['filteranyof'] = '다음 규칙 중 하나라도 일치함'; $labels['filterany'] = '모든 메시지'; $labels['filtercontains'] = '다음을 포함함'; $labels['filternotcontains'] = '다음을 포함하지 않음'; -$labels['filteris'] = '다음과 같음'; -$labels['filterisnot'] = '다음과 같지 않음'; +$labels['filteris'] = '다음과 일치함'; +$labels['filterisnot'] = '다음과 일치하지 않음'; $labels['filterexists'] = '다음이 존재함'; $labels['filternotexists'] = '다음이 존재하지 않음'; $labels['filtermatches'] = '다음 표현식과 일치함'; @@ -40,38 +40,39 @@ $labels['filterover'] = '다음보다 위임'; $labels['addrule'] = '규칙 추가'; $labels['delrule'] = '규칙 삭제'; -$labels['messagemoveto'] = '메시지를 다음 위치로 이동함'; -$labels['messageredirect'] = '메시지를 다음 주소로 전송함'; -$labels['messagecopyto'] = '메시지를 다음 위치로 복사함'; -$labels['messagesendcopy'] = '메시지의 사본을 다음 위치로 보냄'; +$labels['messagemoveto'] = '메시지를 다음 위치로 이동'; +$labels['messageredirect'] = '메시지를 다음 주소로 재전송'; +$labels['messagecopyto'] = '메시지를 다음 위치로 복사'; +$labels['messagesendcopy'] = '메시지 사본을 다음 대상에게 보내기'; $labels['messagereply'] = '다음 메시지로 회신'; -$labels['messagedelete'] = '메시지를 삭제'; +$labels['messagedelete'] = '메시지 삭제'; $labels['messagediscard'] = '다음 메시지와 함께 폐기'; $labels['messagekeep'] = '메시지를 받은 편지함에 보관'; $labels['messagesrules'] = '해당 받은 메일:'; $labels['messagesactions'] = '...다음 동작을 실행:'; $labels['add'] = '추가'; $labels['del'] = '삭제'; -$labels['sender'] = '발신인'; -$labels['recipient'] = '수신인'; +$labels['sender'] = '발송자'; +$labels['recipient'] = '수신자'; +$labels['vacationaddr'] = '나의 추가적인 이메일 주소:'; $labels['vacationdays'] = '메시지 발신 주기 (일):'; $labels['vacationinterval'] = '메시지 발신 주기:'; -$labels['days'] = '일'; -$labels['seconds'] = '초'; $labels['vacationreason'] = '메시지 본문 (휴가 사유):'; $labels['vacationsubject'] = '메시지 제목:'; +$labels['days'] = '일'; +$labels['seconds'] = '초'; $labels['rulestop'] = '규칙 평가를 중단'; $labels['enable'] = '활성화/비활성화'; $labels['filterset'] = '필터 세트'; $labels['filtersets'] = '필터 세트'; $labels['filtersetadd'] = '필터 세트 추가'; $labels['filtersetdel'] = '현재 필터 세트를 삭제'; -$labels['filtersetact'] = '현재 필터 세트를 활성화'; -$labels['filtersetdeact'] = '현재 필터 세트를 비활성화'; +$labels['filtersetact'] = '현재 필터 세트 활성화'; +$labels['filtersetdeact'] = '현재 필터 세트 비활성화'; $labels['filterdef'] = '필터 정의'; $labels['filtersetname'] = '필터 세트명'; $labels['newfilterset'] = '새 필터 세트'; -$labels['active'] = '활성'; +$labels['active'] = '활성화됨'; $labels['none'] = '없음'; $labels['fromset'] = '세트로부터'; $labels['fromfile'] = '파일로부터'; @@ -81,20 +82,20 @@ $labels['countislessthan'] = '개수가 다음보다 작음'; $labels['countislessthanequal'] = '개수가 작거나 같음'; $labels['countequals'] = '개수가 다음과 같음'; -$labels['countnotequals'] = '갯수가 다음과 같지 않음'; +$labels['countnotequals'] = '개수가 다음과 일치하지 않음'; $labels['valueisgreaterthan'] = '값이 다음보다 큼'; $labels['valueisgreaterthanequal'] = '값이 다음보다 크거나 같음'; $labels['valueislessthan'] = '값이 다음보다 작음'; $labels['valueislessthanequal'] = '값이 다음보다 작거나 같음'; $labels['valueequals'] = '값이 다음과 같음'; -$labels['valuenotequals'] = '값이 다음과 같지 않음'; -$labels['setflags'] = '메시지에 깃발을 설정'; +$labels['valuenotequals'] = '값이 다음과 일치하지 않음'; +$labels['setflags'] = '메시지를 깃발로 표시'; $labels['addflags'] = '메시지에 깃발을 추가'; $labels['removeflags'] = '메시지에서 깃발을 제거'; $labels['flagread'] = '읽음'; $labels['flagdeleted'] = '삭제됨'; $labels['flaganswered'] = '응답함'; -$labels['flagflagged'] = '깃발을 추가함'; +$labels['flagflagged'] = '깃발로 표시함'; $labels['flagdraft'] = '임시 보관함'; $labels['setvariable'] = '변수 설정'; $labels['setvarname'] = '변수명:'; @@ -107,14 +108,17 @@ $labels['varquotewildcard'] = '특수 기호를 인용'; $labels['varlength'] = '길이'; $labels['notify'] = '알림 메시지 보내기'; -$labels['notifyaddress'] = '대상 이메일 주소:'; -$labels['notifybody'] = '알림 메시지 본문:'; -$labels['notifysubject'] = '알림 메시지 제목:'; -$labels['notifyfrom'] = '알림 메시지 발신인:'; +$labels['notifytarget'] = '알림 대상:'; +$labels['notifymessage'] = '알림 메시지(옵션):'; +$labels['notifyoptions'] = '알림 옵션(옵션):'; +$labels['notifyfrom'] = '알림 발송자(옵션):'; $labels['notifyimportance'] = '중요도:'; $labels['notifyimportancelow'] = '낮음'; $labels['notifyimportancenormal'] = '보통'; $labels['notifyimportancehigh'] = '높음'; +$labels['notifymethodmailto'] = '이메일'; +$labels['notifymethodtel'] = '전화'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = '필터 생성'; $labels['usedata'] = '필터에서 다음 데이터를 사용:'; $labels['nextstep'] = '다음 단계'; @@ -141,7 +145,7 @@ $labels['envelope'] = '봉투'; $labels['modifier'] = '수식자:'; $labels['text'] = '텍스트'; -$labels['undecoded'] = '암호화되지 않음 (원상태)'; +$labels['undecoded'] = '암호화되지 않음(원상태)'; $labels['contenttype'] = '내용 유형'; $labels['modtype'] = '유형:'; $labels['allparts'] = '모두'; @@ -156,27 +160,65 @@ $labels['asciinumeric'] = '숫자 (ascii-numeric)'; $labels['index'] = '색인:'; $labels['indexlast'] = '역방향'; +$labels['vacation'] = '휴가'; +$labels['vacation.reply'] = '메시지 회신'; +$labels['vacation.advanced'] = '고급 설정'; +$labels['vacation.subject'] = '제목'; +$labels['vacation.body'] = '본문'; +$labels['vacation.start'] = '휴가 시작'; +$labels['vacation.end'] = '휴가 끝'; +$labels['vacation.status'] = '상태'; +$labels['vacation.on'] = '켬'; +$labels['vacation.off'] = '끔'; +$labels['vacation.addresses'] = '내 추가적인 주소'; +$labels['vacation.interval'] = '회신 주기'; +$labels['vacation.after'] = '다음 이후에 휴가 규칙을 위치함'; +$labels['vacation.saving'] = '데이터를 저장하는 중...'; +$labels['vacation.action'] = '수신 메시지 동작'; +$labels['vacation.keep'] = '보관'; +$labels['vacation.discard'] = '폐기'; +$labels['vacation.redirect'] = '재전송'; +$labels['vacation.copy'] = '사본을 다음 대상에게 전송'; +$labels['arialabelfiltersetactions'] = '필터 세트 동작'; +$labels['arialabelfilteractions'] = '필터 동작'; +$labels['arialabelfilterform'] = '필터 속성'; +$labels['ariasummaryfilterslist'] = '필터 목록'; +$labels['ariasummaryfiltersetslist'] = '필터 세트 목록'; +$labels['filterstitle'] = '수신 메일 필터 편집'; +$labels['vacationtitle'] = '자리비움 규칙 편집'; $messages['filterunknownerror'] = '알수 없는 서버 오류.'; -$messages['filterconnerror'] = '서버에 연결할 수 없음.'; +$messages['filterconnerror'] = '서버에 연결할 수 없습니다.'; +$messages['filterdeleteerror'] = '필터를 삭제할 수 없습니다. 서버 오류가 발생했습니다.'; $messages['filterdeleted'] = '필터가 성공적으로 삭제됨.'; $messages['filtersaved'] = '필터가 성공적으로 저장됨.'; +$messages['filtersaveerror'] = '필터를 저장할 수 없습니다. 서버 오류가 발생했습니다.'; $messages['filterdeleteconfirm'] = '정말로 선택한 필터를 삭제하시겠습니까?'; $messages['ruledeleteconfirm'] = '정말로 선택한 규칙을 삭제하시겠습니까?'; $messages['actiondeleteconfirm'] = '정말로 선택한 동작을 삭제하시겠습니까?'; -$messages['forbiddenchars'] = '필드에 금지된 문자가 존재함.'; -$messages['cannotbeempty'] = '필드는 비워둘 수 없음.'; -$messages['ruleexist'] = '지정한 이름의 필터가 이미 존재함.'; +$messages['forbiddenchars'] = '필드에 금지된 문자가 존재합니다.'; +$messages['cannotbeempty'] = '필드는 비어둘 수 없습니다.'; +$messages['ruleexist'] = '지정한 이름의 필터가 이미 존재합니다.'; +$messages['setactivateerror'] = '선택한 필터 세트를 활성화할 수 없습니다. 서버 오류가 발생했습니다.'; +$messages['setdeactivateerror'] = '선택한 필터 세트를 비활성화할 수 없습니다. 서버 오류가 발생했습니다.'; +$messages['setdeleteerror'] = '선택한 필터 세트를 삭제할 수 없습니다. 서버 오류가 발생했습니다.'; $messages['setactivated'] = '필터 세트가 성공적으로 활성화됨.'; $messages['setdeactivated'] = '필터 세트가 성공적으로 비활성화됨.'; $messages['setdeleted'] = '필터 세트가 성공적으로 삭제됨.'; $messages['setdeleteconfirm'] = '정말로 선택한 필터 세트를 삭제하시겠습니까?'; +$messages['setcreateerror'] = '선택한 필터 세트를 생성할 수 없습니다. 서버 오류가 발생했습니다.'; $messages['setcreated'] = '필터 세트가 성공적으로 생성됨.'; +$messages['activateerror'] = '선택한 필터를 활성화할 수 없습니다. 서버 오류가 발생했습니다.'; +$messages['deactivateerror'] = '선택한 필터를 비활성화할 수 없습니다. 서버 오류가 발생했습니다.'; $messages['deactivated'] = '필터가 성공적으로 비활성화됨.'; $messages['activated'] = '필터가 성공적으로 활성화됨.'; -$messages['moved'] = '필터가 성공적으로 이동함.'; -$messages['nametoolong'] = '이름이 너무 김.'; -$messages['namereserved'] = '예약된 이름.'; -$messages['setexist'] = '세트가 이미 존재함.'; +$messages['moved'] = '필터가 성공적으로 이동되었습니다.'; +$messages['moveerror'] = '선택한 필터를 이동할 수 없습니다. 서버 오류가 발생했습니다.'; +$messages['nametoolong'] = '이름이 너무 깁니다.'; +$messages['namereserved'] = '예약된 이름입니다.'; +$messages['setexist'] = '세트가 이미 존재합니다.'; $messages['nodata'] = '최소 하나의 위치가 선택되어야 합니다!'; $messages['invaliddateformat'] = '유효하지 않은 날짜 또는 날짜 일부 형식'; +$messages['saveerror'] = '데이터를 저장할 수 없습니다.. 서버 오류가 발생했습니다.'; +$messages['vacationsaved'] = '휴가 데이터가 성공적으로 저장됨.'; +$messages['emptyvacationbody'] = '휴가 메시지의 본문이 필요합니다!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/lt_LT.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/lt_LT.inc
Changed
@@ -46,6 +46,8 @@ $labels['messagesendcopy'] = 'Nusiųsti laiško kopiją'; $labels['messagereply'] = 'Atsakyti laišku'; $labels['messagedelete'] = 'Pašalinti laišką'; +$labels['messagediscard'] = 'Panaikinti su laišku'; +$labels['messagekeep'] = 'Palikti laišką gautųjų aplanke'; $labels['messagesrules'] = 'Gaunamiems laiškams:'; $labels['messagesactions'] = '…vykdyti šiuos veiksmus:'; $labels['add'] = 'Pridėti'; @@ -55,10 +57,10 @@ $labels['vacationaddr'] = 'Papildomas gavėjų adresų sąrašas:'; $labels['vacationdays'] = 'Kaip dažnai išsiųsti laiškus (dienomis):'; $labels['vacationinterval'] = 'Kaip dažnai siųsti laiškus:'; -$labels['days'] = 'd.'; -$labels['seconds'] = 'sek.'; $labels['vacationreason'] = 'Laiško tekstas'; $labels['vacationsubject'] = 'Laiško tema:'; +$labels['days'] = 'd.'; +$labels['seconds'] = 'sek.'; $labels['rulestop'] = 'Nutraukti taisyklių vykdymą'; $labels['enable'] = 'Įjungti / išjungti'; $labels['filterset'] = 'Filtrų rinkinys'; @@ -106,14 +108,17 @@ $labels['varquotewildcard'] = 'cituoti specialius simbolius'; $labels['varlength'] = 'ilgis'; $labels['notify'] = 'Siųsti priminimą'; -$labels['notifyaddress'] = 'Kam, el. pašto adresas:'; -$labels['notifybody'] = 'Priminimo tekstas'; -$labels['notifysubject'] = 'Priminimo pavadinimas'; -$labels['notifyfrom'] = 'Priminimo siuntėjas'; +$labels['notifytarget'] = 'Priminimo gavėjas:'; +$labels['notifymessage'] = 'Priminimo laiškas (nebūtina):'; +$labels['notifyoptions'] = 'Priminimo nustatymai (nebūtina):'; +$labels['notifyfrom'] = 'Priminimo siuntėjas (nebūtina):'; $labels['notifyimportance'] = 'Svarbumas'; $labels['notifyimportancelow'] = 'žemas'; $labels['notifyimportancenormal'] = 'normalus'; $labels['notifyimportancehigh'] = 'aukštas'; +$labels['notifymethodmailto'] = 'El. paštas'; +$labels['notifymethodtel'] = 'Telefono numeris'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Kurti filtrą'; $labels['usedata'] = 'Filtrui naudoti šiuos duomenis:'; $labels['nextstep'] = 'Kitas žingsnis'; @@ -155,27 +160,62 @@ $labels['asciinumeric'] = 'skaitinis („ascii-numeric“)'; $labels['index'] = 'turinys:'; $labels['indexlast'] = 'atbulai'; +$labels['vacation'] = 'Atostogos'; +$labels['vacation.reply'] = 'Atsakyti laišku'; +$labels['vacation.advanced'] = 'Papildomos nuostatos'; +$labels['vacation.subject'] = 'Tema'; +$labels['vacation.body'] = 'Laiško tekstas'; +$labels['vacation.status'] = 'Būsena'; +$labels['vacation.on'] = 'Įjungta'; +$labels['vacation.off'] = 'Išjungta'; +$labels['vacation.addresses'] = 'Mano papildomi adresai'; +$labels['vacation.interval'] = 'Atsakymo intervalas'; +$labels['vacation.after'] = 'Atostogų taisyklę pastatyti po'; +$labels['vacation.saving'] = 'Išsaugomi duomenys...'; +$labels['vacation.action'] = 'Veiksmas su gaunamais laiškais'; +$labels['vacation.keep'] = 'Palikti'; +$labels['vacation.discard'] = 'Panaikinti'; +$labels['vacation.redirect'] = 'Peradresuoti kam'; +$labels['vacation.copy'] = 'Siųsti kopiją kam'; +$labels['arialabelfiltersetactions'] = 'Filtrų rinkinio veiksmai'; +$labels['arialabelfilteractions'] = 'Filtro veiksmai'; +$labels['arialabelfilterform'] = 'Filtro nustatymai'; +$labels['ariasummaryfilterslist'] = 'Filtrų sąrašas'; +$labels['ariasummaryfiltersetslist'] = 'Filtrų rinkinių sąrašas'; +$labels['filterstitle'] = 'Tvarkyti gaunamų laiškų filtrus'; +$labels['vacationtitle'] = 'Redaguoti ne-biure taisyklę'; $messages['filterunknownerror'] = 'Nežinoma serverio klaida.'; $messages['filterconnerror'] = 'Neįmanoma užmegzti ryšio su serveriu.'; +$messages['filterdeleteerror'] = 'Nepavyksta ištrinti filtro. Įvyko serverio klaida.'; $messages['filterdeleted'] = 'Filtras panaikintas sėkmingai.'; $messages['filtersaved'] = 'Filtras sėkmingai išsaugotas'; +$messages['filtersaveerror'] = 'Nepavyksta išsaugoti filtro. Įvyko serverio klaida.'; $messages['filterdeleteconfirm'] = 'Ar jūs esate įsitikinęs, jog norite panaikinti pasirinktus filtrus(-ą)?'; $messages['ruledeleteconfirm'] = 'Ar jūs įsitikinęs, jog norite panaikinti pasirinktą taisyklę?'; $messages['actiondeleteconfirm'] = 'Ar jūs įsitikinęs, jog norite panaikinti pasirinktą veiksmą?'; $messages['forbiddenchars'] = 'Laukelyje yra draudžiamų simbolių.'; $messages['cannotbeempty'] = 'Laukelis negali būti tuščias'; $messages['ruleexist'] = 'Filtras tokiu vardu jau yra.'; +$messages['setactivateerror'] = 'Neįmanoma aktyvuoti pasirinkto filtrų rinkinio. Įvyko serverio klaida.'; +$messages['setdeactivateerror'] = 'Neįmanoma išjungti pasirinkto filtrų rinkinio. Įvyko serverio klaida.'; +$messages['setdeleteerror'] = 'Neįmanoma panaikinti pasirinkto filtrų rinkinio. Įvyko serverio klaida.'; $messages['setactivated'] = 'Filtrų rinkinys sėkmingai aktyvuotas.'; $messages['setdeactivated'] = 'Filtrų rinkinys sėkmingai deaktyvuotas.'; $messages['setdeleted'] = 'Filtrų rinkinys sėkmingai panaikintas.'; $messages['setdeleteconfirm'] = 'Ar jūs esate tikri, jog norite panaikinti pasirinktą filtrų rinkinį?'; +$messages['setcreateerror'] = 'Neįmanoma sukurti filtrų rinkinio. Įvyko serverio klaida.'; $messages['setcreated'] = 'Filtrų rinkinys sėkmingai sukurtas.'; +$messages['activateerror'] = 'Neįmanoma įjungti pasirinktų filtrų(-o). Įvyko serverio klaida.'; +$messages['deactivateerror'] = 'Neįmanoma išjungti pasirinktų filtrų(-o). Įvyko serverio klaida.'; $messages['deactivated'] = 'Filtras(-as) sėkmingai išjungti.'; $messages['activated'] = 'Filtras(-as) sėkmingai įjungti.'; $messages['moved'] = 'Filtrai perkelti sėkmingai.'; +$messages['moveerror'] = 'Pasirinkto filtro perkelti neįmanoma. Įvyko serverio klaida.'; $messages['nametoolong'] = 'Vardas per ilgas.'; $messages['namereserved'] = 'Rezervuotas vardas.'; $messages['setexist'] = 'Rinkinys jau yra sukurtas.'; $messages['nodata'] = 'Būtina pasirinkti bent vieną poziciją!'; $messages['invaliddateformat'] = 'Neteisingas datos ar jos dalies formatas'; +$messages['saveerror'] = 'Nepavyksta išsaugoti duomenų. Įvyko serverio klaida.'; +$messages['vacationsaved'] = 'Sėkmingai išsaugoti atostogų duomenys.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/lv_LV.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/lv_LV.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Mana(s) papildus e-pasta adrese(s):'; $labels['vacationdays'] = 'Cik bieži sūtī ziņojumus (dienās):'; $labels['vacationinterval'] = 'Cik bieži sūtīt vēstules:'; -$labels['days'] = 'dienas'; -$labels['seconds'] = 'sekundes'; $labels['vacationreason'] = 'Atvaļinājuma paziņojuma teksts:'; $labels['vacationsubject'] = 'Vēstules tēma:'; +$labels['days'] = 'dienas'; +$labels['seconds'] = 'sekundes'; $labels['rulestop'] = 'Apturēt nosacījumu pārbaudi'; $labels['enable'] = 'Ieslēgt/Izslēgt'; $labels['filterset'] = 'Filtru kopa'; @@ -108,10 +108,6 @@ $labels['varquotewildcard'] = '"citēt" speciālās rakstzīmes'; $labels['varlength'] = 'garums'; $labels['notify'] = 'Sūtīt paziņojumus'; -$labels['notifyaddress'] = 'Uz e-pasta adresi:'; -$labels['notifybody'] = 'Paziņojuma teksts:'; -$labels['notifysubject'] = 'Paziņojuma tēma:'; -$labels['notifyfrom'] = 'Paziņojuma sūtītājs:'; $labels['notifyimportance'] = 'Svarīgums:'; $labels['notifyimportancelow'] = 'zems'; $labels['notifyimportancenormal'] = 'parasts';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/nb_NO.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/nb_NO.inc
Changed
@@ -47,18 +47,20 @@ $labels['messagereply'] = 'Svar med melding'; $labels['messagedelete'] = 'Slett melding'; $labels['messagediscard'] = 'Avvis med melding'; +$labels['messagekeep'] = 'Behold melding i innboks'; $labels['messagesrules'] = 'For innkommende e-post'; $labels['messagesactions'] = '... gjør følgende:'; $labels['add'] = 'Legg til'; $labels['del'] = 'Slett'; $labels['sender'] = 'Avsender'; $labels['recipient'] = 'Mottaker'; +$labels['vacationaddr'] = 'Tilleggs epost-adresse(r):'; $labels['vacationdays'] = 'Periode mellom meldinger (i dager):'; $labels['vacationinterval'] = 'Periode mellom meldinger:'; -$labels['days'] = 'dager'; -$labels['seconds'] = 'sekunder'; $labels['vacationreason'] = 'Innhold (begrunnelse for fravær)'; $labels['vacationsubject'] = 'Meldingsemne:'; +$labels['days'] = 'dager'; +$labels['seconds'] = 'sekunder'; $labels['rulestop'] = 'Stopp evaluering av regler'; $labels['enable'] = 'Aktiver/Deaktiver'; $labels['filterset'] = 'Filtersett'; @@ -106,10 +108,6 @@ $labels['varquotewildcard'] = 'sitér spesialtegn'; $labels['varlength'] = 'lengde'; $labels['notify'] = 'Send melding'; -$labels['notifyaddress'] = 'Til e-postadresse:'; -$labels['notifybody'] = 'Varseltekst:'; -$labels['notifysubject'] = 'Varselemne:'; -$labels['notifyfrom'] = 'Varselavsender:'; $labels['notifyimportance'] = 'Viktighet:'; $labels['notifyimportancelow'] = 'lav'; $labels['notifyimportancenormal'] = 'normal'; @@ -157,22 +155,31 @@ $labels['indexlast'] = 'baklengs'; $messages['filterunknownerror'] = 'Ukjent problem med tjener.'; $messages['filterconnerror'] = 'Kunne ikke koble til tjeneren.'; +$messages['filterdeleteerror'] = 'Kunne ikke slette filter. Fikk feilmelding fra server.'; $messages['filterdeleted'] = 'Filteret er blitt slettet.'; $messages['filtersaved'] = 'Filteret er blitt lagret.'; +$messages['filtersaveerror'] = 'Kunne ikke lagre filter. Fikk feilmelding fra server.'; $messages['filterdeleteconfirm'] = 'Vil du virkelig slette det valgte filteret?'; $messages['ruledeleteconfirm'] = 'Er du sikker på at du vil slette valgte regel?'; $messages['actiondeleteconfirm'] = 'Er du sikker på at du vil slette valgte hendelse?'; $messages['forbiddenchars'] = 'Ugyldige tegn i felt.'; $messages['cannotbeempty'] = 'Feltet kan ikke stå tomt.'; $messages['ruleexist'] = 'Det finnes allerede et filter med dette navnet.'; +$messages['setactivateerror'] = 'Kunne ikke aktivere valgte filtersett. Fikk feilmelding fra server.'; +$messages['setdeactivateerror'] = 'Kunne ikke deaktivere valgte filtersett. Fikk feilmelding fra server.'; +$messages['setdeleteerror'] = 'Kunne ikke slette valgte filtersett. Fikk feilmelding fra server.'; $messages['setactivated'] = 'Filtersett aktivert.'; $messages['setdeactivated'] = 'Filtersett deaktivert.'; $messages['setdeleted'] = 'Filtersett slettet.'; $messages['setdeleteconfirm'] = 'Er du sikker på at du vil slette det valgte filtersettet?'; +$messages['setcreateerror'] = 'Kunne ikke opprette filtersett. Fikk feilmelding fra server.'; $messages['setcreated'] = 'Filtersett opprettet.'; +$messages['activateerror'] = 'Kunne ikke aktivere valgte filter(e). Fikk feilmelding fra server.'; +$messages['deactivateerror'] = 'Kunne ikke deaktivere valgte filter(e). Fikk feilmelding fra server.'; $messages['deactivated'] = 'Filter skrudd på.'; $messages['activated'] = 'Filter skrudd av.'; $messages['moved'] = 'Filter ble flyttet.'; +$messages['moveerror'] = 'Kunne ikke flytte valgte filter. Fikk feilmelding fra server.'; $messages['nametoolong'] = 'Navnet er for langt.'; $messages['namereserved'] = 'Navnet er reservert.'; $messages['setexist'] = 'Settet eksisterer allerede.';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/nl_NL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/nl_NL.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Mijn extra e-mailadres(sen):'; $labels['vacationdays'] = 'Hoe vaak moet een bericht verstuurd worden (in dagen):'; $labels['vacationinterval'] = 'Hoe vaak moet een bericht verstuurd worden:'; -$labels['days'] = 'dagen'; -$labels['seconds'] = 'seconden'; $labels['vacationreason'] = 'Bericht (vakantiereden):'; $labels['vacationsubject'] = 'Onderwerp:'; +$labels['days'] = 'dagen'; +$labels['seconds'] = 'seconden'; $labels['rulestop'] = 'Stop met regels uitvoeren'; $labels['enable'] = 'In-/uitschakelen'; $labels['filterset'] = 'Filterset'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'speciale karakters quoten'; $labels['varlength'] = 'lengte'; $labels['notify'] = 'Stuur melding'; -$labels['notifyaddress'] = 'Naar e-mailadres:'; -$labels['notifybody'] = 'Meldingsbericht:'; -$labels['notifysubject'] = 'Onderwerp van melding:'; -$labels['notifyfrom'] = 'Afzender:'; +$labels['notifytarget'] = 'Meldingsdoel:'; +$labels['notifymessage'] = 'Meldingsbericht (optioneel):'; +$labels['notifyoptions'] = 'Meldingsopties (optioneel):'; +$labels['notifyfrom'] = 'Meldingsafzender (optioneel):'; $labels['notifyimportance'] = 'Prioriteit:'; $labels['notifyimportancelow'] = 'laag'; $labels['notifyimportancenormal'] = 'normaal'; $labels['notifyimportancehigh'] = 'hoog'; +$labels['notifymethodmailto'] = 'E-mail'; +$labels['notifymethodtel'] = 'Telefoon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Filter aanmaken'; $labels['usedata'] = 'Gebruik de volgende gegevens in het filter:'; $labels['nextstep'] = 'Volgende stap'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numeriek (ascii-numeriek)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'terugwaarts'; +$labels['vacation'] = 'Vakantie'; +$labels['vacation.reply'] = 'Antwoordbericht'; +$labels['vacation.advanced'] = 'Geavanceerde instellingen'; +$labels['vacation.subject'] = 'Onderwerp'; +$labels['vacation.body'] = 'Inhoud'; +$labels['vacation.start'] = 'Begin van vakantie'; +$labels['vacation.end'] = 'Einde van vakantie'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'Aan'; +$labels['vacation.off'] = 'Uit'; +$labels['vacation.addresses'] = 'Mijn extra e-mailadressen'; +$labels['vacation.interval'] = 'Antwoordinterval'; +$labels['vacation.after'] = 'Voeg een vakantieregel toe na'; +$labels['vacation.saving'] = 'Gegevens worden opgeslagen...'; +$labels['vacation.action'] = 'Actie voor inkomend bericht'; +$labels['vacation.keep'] = 'Bewaren'; +$labels['vacation.discard'] = 'Weggooien'; +$labels['vacation.redirect'] = 'Doorsturen naar'; +$labels['vacation.copy'] = 'Kopie sturen naar'; +$labels['arialabelfiltersetactions'] = 'Filtersetacties'; +$labels['arialabelfilteractions'] = 'Filteracties'; +$labels['arialabelfilterform'] = 'Filtereigenschappen'; +$labels['ariasummaryfilterslist'] = 'Filterlijst'; +$labels['ariasummaryfiltersetslist'] = 'Lijst met filtersets'; +$labels['filterstitle'] = 'Bewerk filters voor inkomende berichten'; +$labels['vacationtitle'] = 'Bewerk vakantieregel'; $messages['filterunknownerror'] = 'Onbekende fout'; $messages['filterconnerror'] = 'Kan geen verbinding maken met de managesieve server'; $messages['filterdeleteerror'] = 'Kan filter niet verwijderen. Er trad een serverfout op.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Filterset bestaat al.'; $messages['nodata'] = 'Tenminste één positie moet geselecteerd worden!'; $messages['invaliddateformat'] = 'Ongeldige datum of datumformaat'; +$messages['saveerror'] = 'Opslaan van de gegevens is mislukt. Er trad een serverfout op.'; +$messages['vacationsaved'] = 'Vakantiegegevens succesvol opgeslagen.'; +$messages['emptyvacationbody'] = 'Inhoud van vakantiebericht is verplicht!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/pl_PL.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/pl_PL.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Moje dodatkowe adresy email:'; $labels['vacationdays'] = 'Częstotliwość wysyłania wiadomości (w dniach):'; $labels['vacationinterval'] = 'Jak często wysyłać wiadomości:'; -$labels['days'] = 'dni'; -$labels['seconds'] = 'sekundy'; $labels['vacationreason'] = 'Treść (przyczyna nieobecności):'; $labels['vacationsubject'] = 'Temat wiadomości:'; +$labels['days'] = 'dni'; +$labels['seconds'] = 'sekundy'; $labels['rulestop'] = 'Przerwij przetwarzanie reguł'; $labels['enable'] = 'Włącz/Wyłącz'; $labels['filterset'] = 'Zbiór filtrów'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'zamień znaki specjalne'; $labels['varlength'] = 'długość'; $labels['notify'] = 'Wyślij powiadomienie'; -$labels['notifyaddress'] = 'Na adres e-mail:'; -$labels['notifybody'] = 'Treść powiadomienia:'; -$labels['notifysubject'] = 'Tytuł powiadomienia:'; -$labels['notifyfrom'] = 'Nadawca powiadomienia:'; +$labels['notifytarget'] = 'Odbiorca powiadomienia:'; +$labels['notifymessage'] = 'Wiadomość powiadomienia (opcjonalne):'; +$labels['notifyoptions'] = 'Opcje powiadomienia (opcjonalne):'; +$labels['notifyfrom'] = 'Nadawca powiadomienia (opcjonalne):'; $labels['notifyimportance'] = 'Priorytet:'; $labels['notifyimportancelow'] = 'niski'; $labels['notifyimportancenormal'] = 'normalny'; $labels['notifyimportancehigh'] = 'wysoki'; +$labels['notifymethodmailto'] = 'E-Mail'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Utwórz filtr'; $labels['usedata'] = 'Użyj następujących danych do utworzenia filtra:'; $labels['nextstep'] = 'Następny krok'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numeryczny (ascii-numeric)'; $labels['index'] = 'indeks:'; $labels['indexlast'] = 'wstecz'; +$labels['vacation'] = 'Nieobecność'; +$labels['vacation.reply'] = 'Odpowiedź'; +$labels['vacation.advanced'] = 'Ustawienia zaawansowane'; +$labels['vacation.subject'] = 'Temat'; +$labels['vacation.body'] = 'Treść'; +$labels['vacation.start'] = 'Początek nieobecności'; +$labels['vacation.end'] = 'Koniec nieobecności'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'włączone'; +$labels['vacation.off'] = 'wyłączone'; +$labels['vacation.addresses'] = 'Moje dodatkowe adresy'; +$labels['vacation.interval'] = 'Częstotliwość odpowiedzi'; +$labels['vacation.after'] = 'Umieść regułę odpowiedzi po'; +$labels['vacation.saving'] = 'Zapisywanie danych...'; +$labels['vacation.action'] = 'Akcje wiadomości przychodzących'; +$labels['vacation.keep'] = 'Zachowaj'; +$labels['vacation.discard'] = 'Odrzuć'; +$labels['vacation.redirect'] = 'Przekaż do'; +$labels['vacation.copy'] = 'Wyślij kopię do'; +$labels['arialabelfiltersetactions'] = 'Zbiór filtrów akcji'; +$labels['arialabelfilteractions'] = 'Akcje filtrów'; +$labels['arialabelfilterform'] = 'Ustawienia filtrów'; +$labels['ariasummaryfilterslist'] = 'Spis filtrów'; +$labels['ariasummaryfiltersetslist'] = 'Lista zbiorów filtrów'; +$labels['filterstitle'] = 'Zarządzaj filtrami wiadomości przychodzących'; +$labels['vacationtitle'] = 'Zarządzaj asystentem nieobecności'; $messages['filterunknownerror'] = 'Nieznany błąd serwera.'; $messages['filterconnerror'] = 'Nie można nawiązać połączenia z serwerem.'; $messages['filterdeleteerror'] = 'Nie można usunąć filtra. Błąd serwera.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Zbiór już istnieje.'; $messages['nodata'] = 'Należy wybrać co najmniej jedną pozycję!'; $messages['invaliddateformat'] = 'Nieprawidłowy format daty lub fragmentu daty'; +$messages['saveerror'] = 'Nie można zapisać danych. Wystąpił błąd serwera.'; +$messages['vacationsaved'] = 'Dane nieobecności zapisano pomyślnie.'; +$messages['emptyvacationbody'] = 'Treść wiadomości jest wymagana!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/pt_BR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/pt_BR.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Meu endereço de e-mail adicional:'; $labels['vacationdays'] = 'Enviar mensagens com que frequência (em dias):'; $labels['vacationinterval'] = 'Como geralmente enviam mensagens:'; -$labels['days'] = 'dias'; -$labels['seconds'] = 'segundos'; $labels['vacationreason'] = 'Corpo da mensagem (motivo de férias):'; $labels['vacationsubject'] = 'Título da mensagem:'; +$labels['days'] = 'dias'; +$labels['seconds'] = 'segundos'; $labels['rulestop'] = 'Parar de avaliar regras'; $labels['enable'] = 'Habilitar/Desabilitar'; $labels['filterset'] = 'Conjunto de filtros'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'caracteres especiais de citação'; $labels['varlength'] = 'tamanho'; $labels['notify'] = 'Enviar notificação'; -$labels['notifyaddress'] = 'Para endereço de e-mail:'; -$labels['notifybody'] = 'Corpo da notificação:'; -$labels['notifysubject'] = 'Título da notificação:'; -$labels['notifyfrom'] = 'Remetente da notificação:'; +$labels['notifytarget'] = 'Destino da notificação:'; +$labels['notifymessage'] = 'Mensagem de notificação (opcional):'; +$labels['notifyoptions'] = 'Opções de notificação (opcional):'; +$labels['notifyfrom'] = 'Remetente da notificação (opcional):'; $labels['notifyimportance'] = 'Importância'; $labels['notifyimportancelow'] = 'baixa'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'alta'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Telefone'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Criar filtro'; $labels['usedata'] = 'Usar os seguintes dados no filtro:'; $labels['nextstep'] = 'Próximo Passo'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numérico (ascii-numeric)'; $labels['index'] = 'índice:'; $labels['indexlast'] = 'retroceder'; +$labels['vacation'] = 'Férias'; +$labels['vacation.reply'] = 'Responder mensagem'; +$labels['vacation.advanced'] = 'Opções avançadas'; +$labels['vacation.subject'] = 'Assunto'; +$labels['vacation.body'] = 'Conteúdo'; +$labels['vacation.start'] = 'Início das férias'; +$labels['vacation.end'] = 'Término das férias'; +$labels['vacation.status'] = 'Estado'; +$labels['vacation.on'] = 'Ligado'; +$labels['vacation.off'] = 'Desligado'; +$labels['vacation.addresses'] = 'Meus endereços de e-mail adicionais'; +$labels['vacation.interval'] = 'Intervalo de resposta'; +$labels['vacation.after'] = 'Colocar regra de férias após'; +$labels['vacation.saving'] = 'Salvando dados...'; +$labels['vacation.action'] = 'Ações para mensagens recebidas'; +$labels['vacation.keep'] = 'Manter'; +$labels['vacation.discard'] = 'Descartar'; +$labels['vacation.redirect'] = 'Redirecionar para'; +$labels['vacation.copy'] = 'Enviar cópia para'; +$labels['arialabelfiltersetactions'] = 'Ações do grupo de filtros'; +$labels['arialabelfilteractions'] = 'Ações do filtro'; +$labels['arialabelfilterform'] = 'Propriedades do filtro'; +$labels['ariasummaryfilterslist'] = 'Lista dos filtros'; +$labels['ariasummaryfiltersetslist'] = 'Lista de grupo de filtros'; +$labels['filterstitle'] = 'Editar filtro dos e-mails recebidos'; +$labels['vacationtitle'] = 'Editar regra de ausência'; $messages['filterunknownerror'] = 'Erro desconhecido de servidor'; $messages['filterconnerror'] = 'Não foi possível conectar ao servidor managesieve'; $messages['filterdeleteerror'] = 'Impossível excluir o filtro. Ocorreu um erro no servidor.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Conjunto já existe.'; $messages['nodata'] = 'Pelo menos uma posição precisa ser selecionada!'; $messages['invaliddateformat'] = 'Data inválida'; +$messages['saveerror'] = 'Impossível salvar dados. Ocorreu um erro no servidor.'; +$messages['vacationsaved'] = 'Dados de férias salvos com sucesso.'; +$messages['emptyvacationbody'] = 'Conteúdo da mensagem de férias necessário!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/pt_PT.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/pt_PT.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Os meus endereços de e-mail adicionais:'; $labels['vacationdays'] = 'Enviar mensagens com que frequência (em dias):'; $labels['vacationinterval'] = 'Com que frequência envia mensagens:'; -$labels['days'] = 'dias'; -$labels['seconds'] = 'segundos'; $labels['vacationreason'] = 'Conteúdo da mensagem (motivo da ausência):'; $labels['vacationsubject'] = 'Assunto da mensagem:'; +$labels['days'] = 'dias'; +$labels['seconds'] = 'segundos'; $labels['rulestop'] = 'Parar de avaliar regras'; $labels['enable'] = 'Activar/Desactivar'; $labels['filterset'] = 'Filtros definidos'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'citar caracteres especiais'; $labels['varlength'] = 'tamanho'; $labels['notify'] = 'Enviar notificação'; -$labels['notifyaddress'] = 'Endereço de E-mail to:'; -$labels['notifybody'] = 'Corpo de Notificação:'; -$labels['notifysubject'] = 'Assunto Notificação:'; -$labels['notifyfrom'] = 'Remetente Notificação:'; +$labels['notifytarget'] = 'Destino da notificação:'; +$labels['notifymessage'] = 'Mensagem de notificação (opcional):'; +$labels['notifyoptions'] = 'Opções de notificação (opcional):'; +$labels['notifyfrom'] = 'Remetente da notificação (opcional):'; $labels['notifyimportance'] = 'Importância:'; $labels['notifyimportancelow'] = 'baixa'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'alta'; +$labels['notifymethodmailto'] = 'Email'; +$labels['notifymethodtel'] = 'Telefone'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Criar filtro'; $labels['usedata'] = 'Usar os seguintes dados no filtro:'; $labels['nextstep'] = 'Próximo passo'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numérico (numérico ascii)'; $labels['index'] = 'índice:'; $labels['indexlast'] = 'retroceder'; +$labels['vacation'] = 'Férias'; +$labels['vacation.reply'] = 'Mensagem de resposta'; +$labels['vacation.advanced'] = 'Definições avançadas'; +$labels['vacation.subject'] = 'Assunto'; +$labels['vacation.body'] = 'Corpo da mensagem'; +$labels['vacation.start'] = 'Início de férias'; +$labels['vacation.end'] = 'Fim de férias'; +$labels['vacation.status'] = 'Estado'; +$labels['vacation.on'] = 'Ligar'; +$labels['vacation.off'] = 'Desligar'; +$labels['vacation.addresses'] = 'Meus endereços adicionais'; +$labels['vacation.interval'] = 'Intervalo de resposta'; +$labels['vacation.after'] = 'Coloque regra de férias depois'; +$labels['vacation.saving'] = 'A guardar dados...'; +$labels['vacation.action'] = 'Acção para mensagem recebida'; +$labels['vacation.keep'] = 'Manter'; +$labels['vacation.discard'] = 'Rejeitar'; +$labels['vacation.redirect'] = 'Redireccionar para'; +$labels['vacation.copy'] = 'Enviar cópia para'; +$labels['arialabelfiltersetactions'] = 'Acções do conjunto de filtros'; +$labels['arialabelfilteractions'] = 'Acções dos filtros'; +$labels['arialabelfilterform'] = 'Propriedades dos filtro'; +$labels['ariasummaryfilterslist'] = 'Lista de filtros'; +$labels['ariasummaryfiltersetslist'] = 'Lista de conjuntos de filtros'; +$labels['filterstitle'] = 'Editar filtros de mensagens recebidas'; +$labels['vacationtitle'] = 'Editar regra de ausência do escritório'; $messages['filterunknownerror'] = 'Erro de servidor desconhecido'; $messages['filterconnerror'] = 'Não é possível ligar ao servidor Sieve'; $messages['filterdeleteerror'] = 'Não foi possível eliminar o filtro. Ocorreu um erro no servidor.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'O conjunto já existe.'; $messages['nodata'] = 'Deve selecionar pelo menos uma posição.'; $messages['invaliddateformat'] = 'Data ou formato de data inválido.'; +$messages['saveerror'] = 'Não foi possível guardar os dados. Ocorreu um erro no servidor.'; +$messages['vacationsaved'] = 'Dados de férias guardados com sucesso.'; +$messages['emptyvacationbody'] = 'É necessário o corpo da mensagem de férias!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/ro_RO.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/ro_RO.inc
Changed
@@ -54,13 +54,13 @@ $labels['del'] = 'Sterge'; $labels['sender'] = 'Expeditor'; $labels['recipient'] = 'Destinatar'; -$labels['vacationaddr'] = 'Adrese(le) mele de email suplimentare:'; +$labels['vacationaddr'] = 'Adresele mele de e-mail (adiţionale)'; $labels['vacationdays'] = 'Cat de des sa trimit mesajele (in zile):'; $labels['vacationinterval'] = 'Cât de des să trimit mesaje:'; -$labels['days'] = 'zile'; -$labels['seconds'] = 'secunde'; $labels['vacationreason'] = 'Corpul mesajului (motivul vacantei):'; $labels['vacationsubject'] = 'Subiectul mesajului:'; +$labels['days'] = 'zile'; +$labels['seconds'] = 'secunde'; $labels['rulestop'] = 'Nu mai evalua reguli'; $labels['enable'] = 'Activeaza/Dezactiveaza'; $labels['filterset'] = 'Filtre setate'; @@ -108,10 +108,6 @@ $labels['varquotewildcard'] = 'caracterele speciale in citat'; $labels['varlength'] = 'lungime'; $labels['notify'] = 'Notificare trimitere'; -$labels['notifyaddress'] = 'La adresa de e-mail'; -$labels['notifybody'] = 'Mesajul de notificare:'; -$labels['notifysubject'] = 'Subiectul notificării:'; -$labels['notifyfrom'] = 'Expeditorul notificării:'; $labels['notifyimportance'] = 'Importanța:'; $labels['notifyimportancelow'] = 'mică'; $labels['notifyimportancenormal'] = 'normală'; @@ -157,27 +153,50 @@ $labels['asciinumeric'] = 'numeric (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'invers'; +$labels['vacation'] = 'Vacanta'; +$labels['vacation.reply'] = 'Raspunde mesajului'; +$labels['vacation.advanced'] = 'Setari avansate'; +$labels['vacation.subject'] = 'Subiect'; +$labels['vacation.body'] = 'Corp'; +$labels['vacation.status'] = 'Statut'; +$labels['vacation.on'] = 'Pe'; +$labels['vacation.off'] = 'De pe'; +$labels['vacation.addresses'] = 'Adresa mea aditionala'; +$labels['vacation.interval'] = 'Interval de raspundere'; +$labels['vacation.after'] = 'Pune regula de vacanta dupa'; +$labels['vacation.saving'] = 'Salvez datele...'; $messages['filterunknownerror'] = 'Eroare necunoscută la server:'; $messages['filterconnerror'] = 'Nu mă pot conecta la server.'; +$messages['filterdeleteerror'] = 'Nu pot şterge filtrul. S-a produs o eroare la server.'; $messages['filterdeleted'] = 'Filtrul a fost şters cu succes.'; $messages['filtersaved'] = 'Filtrul a fost salvat cu succes.'; +$messages['filtersaveerror'] = 'Nu am putut salva filtrul. S-a produs o eroare la server.'; $messages['filterdeleteconfirm'] = 'Chiar vrei să ştergi filtrul selectat?'; $messages['ruledeleteconfirm'] = 'Eşti sigur că vrei să ştergi regula selectată?'; $messages['actiondeleteconfirm'] = 'Eşti sigur că vrei să ştergi acţiunea selectată?'; $messages['forbiddenchars'] = 'Caractere nepermise în câmp.'; $messages['cannotbeempty'] = 'Câmpul nu poate fi gol.'; $messages['ruleexist'] = 'Filtrul cu numele specificat există deja.'; +$messages['setactivateerror'] = 'Nu pot activa setul de filtre selectat. S-a produs o eroare la server.'; +$messages['setdeactivateerror'] = 'Nu pot dezactiva setul de filtre selectat. S-a produs o eroare la server.'; +$messages['setdeleteerror'] = 'Nu pot şterge setul de filtre selectat. S-a produs o eroare la server.'; $messages['setactivated'] = 'Setul de filtre activat cu succes.'; $messages['setdeactivated'] = 'Setul de filtre dezactivat cu succes.'; $messages['setdeleted'] = 'Setul de filtre şters cu succes.'; $messages['setdeleteconfirm'] = 'Eşti sigur(ă) că vrei să ştergi setul de filtre selectat?'; +$messages['setcreateerror'] = 'Nu am putut crea setul de filtre. S-a produs o eroare la server.'; $messages['setcreated'] = 'Setul de filtre creat cu succes.'; +$messages['activateerror'] = 'Nu am putut activa filtrul (filtrele) selectate. S-a produs o eroare la server.'; +$messages['deactivateerror'] = 'Nu am putut dezactiva filtrele (filtrele) selectate. S-a produs o eroare la server.'; $messages['deactivated'] = 'Filtrele au fost activate cu succes.'; $messages['activated'] = 'Filtrele au fost dezactivate cu succes.'; $messages['moved'] = 'Filtrele au fost mutate cu succes.'; +$messages['moveerror'] = 'Nu am putut muta filtrul selectat. S-a produs o eroare la server.'; $messages['nametoolong'] = 'Numele este prea lung.'; $messages['namereserved'] = 'Nume rezervat.'; $messages['setexist'] = 'Setul există deja.'; $messages['nodata'] = 'Trebuie selectată cel putin o poziţie!'; $messages['invaliddateformat'] = 'Data sau parte din data in format invalid'; +$messages['saveerror'] = 'Nu am putut salva datele. A aparut o eroare de server.'; +$messages['vacationsaved'] = 'Data de vacanta salvata cu succes'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/ru_RU.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/ru_RU.inc
Changed
@@ -165,9 +165,8 @@ $labels['vacation.advanced'] = 'Дополнительные настройки'; $labels['vacation.subject'] = 'Тема'; $labels['vacation.body'] = 'Тело письма'; -$labels['vacation.dates'] = 'Время отпуска'; -$labels['vacation.from'] = 'От:'; -$labels['vacation.to'] = 'Кому:'; +$labels['vacation.start'] = 'Начало отпуска'; +$labels['vacation.end'] = 'Конец отпуска'; $labels['vacation.status'] = 'Состояние'; $labels['vacation.on'] = 'Вкл.'; $labels['vacation.off'] = 'Выкл.';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/sk_SK.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/sk_SK.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Iná moja e-mailová adresa (adresy):'; $labels['vacationdays'] = 'Ako často odosielať správy (v dňoch):'; $labels['vacationinterval'] = 'Ako často odosielať správy:'; -$labels['days'] = 'dní'; -$labels['seconds'] = 'sekúnd'; $labels['vacationreason'] = 'Telo správy (dôvod neprítomnosti):'; $labels['vacationsubject'] = 'Predmet správy:'; +$labels['days'] = 'dní'; +$labels['seconds'] = 'sekúnd'; $labels['rulestop'] = 'Koniec pravidiel'; $labels['enable'] = 'Zapnúť/vypnúť'; $labels['filterset'] = 'Súprava filtrov'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'k špeciálnym znakom pridať úvodzovky'; $labels['varlength'] = 'dĺžka'; $labels['notify'] = 'Odoslať oznámenie'; -$labels['notifyaddress'] = 'Na e-mailovú adresu:'; -$labels['notifybody'] = 'Telo oznámenia:'; -$labels['notifysubject'] = 'Predmet oznámenia:'; -$labels['notifyfrom'] = 'Odosielateľ oznámenia:'; +$labels['notifytarget'] = 'Cieľ notifikácie:'; +$labels['notifymessage'] = 'Notifikačná správa (voliteľne):'; +$labels['notifyoptions'] = 'Nastavenia notifikácie (voliteľné):'; +$labels['notifyfrom'] = 'Odosielateľ notifikácie (voliteľne):'; $labels['notifyimportance'] = 'Priorita:'; $labels['notifyimportancelow'] = 'nízka'; $labels['notifyimportancenormal'] = 'normálna'; $labels['notifyimportancehigh'] = 'vysoká'; +$labels['notifymethodmailto'] = 'E-mail'; +$labels['notifymethodtel'] = 'Telefón'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Vytvoriť filter'; $labels['usedata'] = 'Použiť tieto údaje vo filtri:'; $labels['nextstep'] = 'Ďalší krok'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerické (ascii čísla)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'dozadu'; +$labels['vacation'] = 'Dovolenka'; +$labels['vacation.reply'] = 'Odpoveď na správu'; +$labels['vacation.advanced'] = 'Pokročilé nastavenia'; +$labels['vacation.subject'] = 'Predmet'; +$labels['vacation.body'] = 'Telo'; +$labels['vacation.start'] = 'Začiatok dovolenky'; +$labels['vacation.end'] = 'Koniec dovolenky'; +$labels['vacation.status'] = 'Stav'; +$labels['vacation.on'] = 'Zap.'; +$labels['vacation.off'] = 'Vyp.'; +$labels['vacation.addresses'] = 'Moje ďalšie adresy'; +$labels['vacation.interval'] = 'Interval odpovedania'; +$labels['vacation.after'] = 'Nastaviť pravidlo pre dovolenku po'; +$labels['vacation.saving'] = 'Ukladanie údajov...'; +$labels['vacation.action'] = 'Akcia pre prichádzajúcu správu'; +$labels['vacation.keep'] = 'Zachovať'; +$labels['vacation.discard'] = 'Vyhodiť do koša'; +$labels['vacation.redirect'] = 'Presmerovať na'; +$labels['vacation.copy'] = 'Poslať kópiu na'; +$labels['arialabelfiltersetactions'] = 'Akcie zo súpravy filtrov'; +$labels['arialabelfilteractions'] = 'Akcie filtra'; +$labels['arialabelfilterform'] = 'Nastavenia filtra'; +$labels['ariasummaryfilterslist'] = 'Zoznam filtrov'; +$labels['ariasummaryfiltersetslist'] = 'Zoznam súprav s filtrami'; +$labels['filterstitle'] = 'Upraviť filtre prichádzajúcich e-mailov'; +$labels['vacationtitle'] = 'Upraviť pravidlo pre čas mimo kancelárie'; $messages['filterunknownerror'] = 'Neznáma chyba servera.'; $messages['filterconnerror'] = 'Nepodarilo sa pripojiť k serveru.'; $messages['filterdeleteerror'] = 'Nemožno vymazať filter. Nastala chyba servera.'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Súprava už existuje.'; $messages['nodata'] = 'Aspoň jedna pozícia musí byť zvolená!'; $messages['invaliddateformat'] = 'Neplatný formát dátumu alebo časti dátumu'; +$messages['saveerror'] = 'Údaje nemožno uložiť. Nastala chyba servera.'; +$messages['vacationsaved'] = 'Údaje o dovolenke boli úspešne uložené.'; +$messages['emptyvacationbody'] = 'Musíte zadať telo správy, zobrazovanej v čase neprítomnosti!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/sl_SI.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/sl_SI.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Moji dodatni e-naslovi'; $labels['vacationdays'] = 'Kako pogosto naj bodo sporočila poslana (v dnevih):'; $labels['vacationinterval'] = 'Sporočila pošlji na:'; -$labels['days'] = 'dni'; -$labels['seconds'] = 'sekund'; $labels['vacationreason'] = 'Vsebina sporočila (vzrok za odsotnost):'; $labels['vacationsubject'] = 'Zadeva sporočila'; +$labels['days'] = 'dni'; +$labels['seconds'] = 'sekund'; $labels['rulestop'] = 'Prekini z izvajanjem pravil'; $labels['enable'] = 'Omogoči/Onemogoči'; $labels['filterset'] = 'Nastavitev filtrov'; @@ -108,10 +108,6 @@ $labels['varquotewildcard'] = 'citiraj posebne znake'; $labels['varlength'] = 'dolžina'; $labels['notify'] = 'Poštlji obvestilo'; -$labels['notifyaddress'] = 'Na elektronski naslov:'; -$labels['notifybody'] = 'Telo obvestila:'; -$labels['notifysubject'] = 'Zadeva obvestila:'; -$labels['notifyfrom'] = 'Pošiljatelj obvestila:'; $labels['notifyimportance'] = 'Pomembnost:'; $labels['notifyimportancelow'] = 'nizko'; $labels['notifyimportancenormal'] = 'običajno';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/sv_SE.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/sv_SE.inc
Changed
@@ -19,7 +19,7 @@ $labels['managefilters'] = 'Administrera filter'; $labels['filtername'] = 'Filternamn'; $labels['newfilter'] = 'Nytt filter'; -$labels['filteradd'] = 'Lägg till filter'; +$labels['filteradd'] = 'Nytt filter'; $labels['filterdel'] = 'Ta bort filter'; $labels['moveup'] = 'Flytta upp filter'; $labels['movedown'] = 'Flytta ner filter'; @@ -57,15 +57,15 @@ $labels['vacationaddr'] = 'Ytterligare mottagaradresser:'; $labels['vacationdays'] = 'Antal dagar mellan auto-svar:'; $labels['vacationinterval'] = 'Tid mellan auto-svar:'; +$labels['vacationreason'] = 'Meddelandetext (frånvaroanledning):'; +$labels['vacationsubject'] = 'Meddelandeämne:'; $labels['days'] = 'Dagar'; $labels['seconds'] = 'Sekunder'; -$labels['vacationreason'] = 'Meddelande i auto-svar:'; -$labels['vacationsubject'] = 'Meddelandeämne:'; $labels['rulestop'] = 'Avsluta filtrering'; $labels['enable'] = 'Aktivera/deaktivera'; $labels['filterset'] = 'Filtergrupp'; $labels['filtersets'] = 'Filtergrupper'; -$labels['filtersetadd'] = 'Lägg till filtergrupp'; +$labels['filtersetadd'] = 'Ny filtergrupp'; $labels['filtersetdel'] = 'Ta bort filtergrupp'; $labels['filtersetact'] = 'Aktivera filtergrupp'; $labels['filtersetdeact'] = 'Deaktivera filtergrupp'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'Koda specialtecken'; $labels['varlength'] = 'Längd'; $labels['notify'] = 'Skicka avisering'; -$labels['notifyaddress'] = 'Mottagaradress:'; -$labels['notifybody'] = 'Aviseringsmeddelande:'; -$labels['notifysubject'] = 'Aviseringsämne:'; -$labels['notifyfrom'] = 'Aviseringsavsändare:'; +$labels['notifytarget'] = 'Aviseringsmål:'; +$labels['notifymessage'] = 'Aviseringsmeddelande (valfritt):'; +$labels['notifyoptions'] = 'Aviseringstillval (valfritt):'; +$labels['notifyfrom'] = 'Aviseringsavsändare (valfri):'; $labels['notifyimportance'] = 'Prioritet:'; $labels['notifyimportancelow'] = 'Låg'; $labels['notifyimportancenormal'] = 'Normal'; $labels['notifyimportancehigh'] = 'Hög'; +$labels['notifymethodmailto'] = 'E-post'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Skapa filter'; $labels['usedata'] = 'Använd följande information i filtret:'; $labels['nextstep'] = 'Nästa steg'; @@ -157,6 +160,32 @@ $labels['asciinumeric'] = 'numerisk (ascii-numeric)'; $labels['index'] = 'index:'; $labels['indexlast'] = 'omvänd'; +$labels['vacation'] = 'Frånvaro'; +$labels['vacation.reply'] = 'Besvara meddelande'; +$labels['vacation.advanced'] = 'Avancerade inställningar'; +$labels['vacation.subject'] = 'Ämne'; +$labels['vacation.body'] = 'Innehåll'; +$labels['vacation.start'] = 'Frånvaron börjar'; +$labels['vacation.end'] = 'Frånvaron slutar'; +$labels['vacation.status'] = 'Status'; +$labels['vacation.on'] = 'På'; +$labels['vacation.off'] = 'Av'; +$labels['vacation.addresses'] = 'Ytterligare mottagaradresser'; +$labels['vacation.interval'] = 'Svarsintervall'; +$labels['vacation.after'] = 'Placera frånvaroregel efter'; +$labels['vacation.saving'] = 'Sparar data...'; +$labels['vacation.action'] = 'Hantering av inkommande meddelanden'; +$labels['vacation.keep'] = 'Behåll'; +$labels['vacation.discard'] = 'Förkasta'; +$labels['vacation.redirect'] = 'Ändra mottagare till'; +$labels['vacation.copy'] = 'Skicka kopia till'; +$labels['arialabelfiltersetactions'] = 'Hantera filtergrupper'; +$labels['arialabelfilteractions'] = 'Hantera filter'; +$labels['arialabelfilterform'] = 'Filteregenskaper'; +$labels['ariasummaryfilterslist'] = 'Lista med filter'; +$labels['ariasummaryfiltersetslist'] = 'Lista med filtergrupper'; +$labels['filterstitle'] = 'Ändra filter för inkommande meddelanden'; +$labels['vacationtitle'] = 'Ändra regel för frånvaromeddelande'; $messages['filterunknownerror'] = 'Okänt serverfel'; $messages['filterconnerror'] = 'Anslutning till serverns filtertjänst misslyckades'; $messages['filterdeleteerror'] = 'Filtret kunde inte tas bort på grund av serverfel'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Filtergrupp finns redan.'; $messages['nodata'] = 'Minst en position måste väljas!'; $messages['invaliddateformat'] = 'Ogiltigt datum eller del av datumformat'; +$messages['saveerror'] = 'Datan kunde inte sparas på grund av serverfel.'; +$messages['vacationsaved'] = 'Frånvarodatan har sparats.'; +$messages['emptyvacationbody'] = 'Text för frånvaromeddelande saknas!'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/tr_TR.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/tr_TR.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = 'Ek e-posta adres(ler)im:'; $labels['vacationdays'] = 'Ne sıklıkla mesajlar gönderilir(gün)'; $labels['vacationinterval'] = 'Ne kadar sıklıkla mesaj gönderirsiniz:'; -$labels['days'] = 'günler'; -$labels['seconds'] = 'saniyeler'; $labels['vacationreason'] = 'Mesaj gövdesi(tatil sebebi):'; $labels['vacationsubject'] = 'Mesaj konusu:'; +$labels['days'] = 'günler'; +$labels['seconds'] = 'saniyeler'; $labels['rulestop'] = 'Kuralları değerlendirmeyi bitir'; $labels['enable'] = 'Etkinleştir/Etkisiz Kıl'; $labels['filterset'] = 'Filtre seti'; @@ -98,7 +98,7 @@ $labels['flagflagged'] = 'İşaretli'; $labels['flagdraft'] = 'Taslak'; $labels['setvariable'] = 'Değişken tanımla'; -$labels['setvarname'] = 'Değişken adı'; +$labels['setvarname'] = 'Değişken adı:'; $labels['setvarvalue'] = 'Değişken değeri:'; $labels['setvarmodifiers'] = 'Değiştiriciler:'; $labels['varlower'] = 'küçük harf'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'özel karakterleri tırnak içine al'; $labels['varlength'] = 'uzunluk'; $labels['notify'] = 'Bildirim gönder'; -$labels['notifyaddress'] = 'Alıcı e-posta adresi'; -$labels['notifybody'] = 'Bildirim gövdesi:'; -$labels['notifysubject'] = 'Bildirim konusu:'; -$labels['notifyfrom'] = 'Bildirim göndericisi:'; -$labels['notifyimportance'] = 'Önem derecesi'; +$labels['notifytarget'] = 'Bildirim hedefi:'; +$labels['notifymessage'] = 'Bildirim mesajı (tercihe bağlı):'; +$labels['notifyoptions'] = 'Bildirim tercihleri (tercihe bağlı):'; +$labels['notifyfrom'] = 'Bildirim göndericisi (tercihe bağlı):'; +$labels['notifyimportance'] = 'Önem derecesi:'; $labels['notifyimportancelow'] = 'düşük'; $labels['notifyimportancenormal'] = 'normal'; $labels['notifyimportancehigh'] = 'yüksek'; +$labels['notifymethodmailto'] = 'E-posta'; +$labels['notifymethodtel'] = 'Telefon'; +$labels['notifymethodsms'] = 'SMS'; $labels['filtercreate'] = 'Süzgeç oluştur'; $labels['usedata'] = 'Aşağıdaki verileri süzgeçte kullan'; $labels['nextstep'] = 'Sonraki adım'; @@ -157,11 +160,37 @@ $labels['asciinumeric'] = 'sayı (ascii-numeric)'; $labels['index'] = 'indeks:'; $labels['indexlast'] = 'geriye yönelik'; +$labels['vacation'] = 'Tatil'; +$labels['vacation.reply'] = 'Cevap mesajı'; +$labels['vacation.advanced'] = 'Gelişmiş seçenekler'; +$labels['vacation.subject'] = 'Konu'; +$labels['vacation.body'] = 'Gövde'; +$labels['vacation.start'] = 'Tatil başlangıcı'; +$labels['vacation.end'] = 'Tatil bitişi'; +$labels['vacation.status'] = 'Durum'; +$labels['vacation.on'] = 'Etkin'; +$labels['vacation.off'] = 'Devre dışı'; +$labels['vacation.addresses'] = 'Ek adresler'; +$labels['vacation.interval'] = 'Cevap aralığı'; +$labels['vacation.after'] = 'Şundan sonra tatil kuralı koy'; +$labels['vacation.saving'] = 'Veri kaydediliyor...'; +$labels['vacation.action'] = 'Gelen mesaj aksiyonu'; +$labels['vacation.keep'] = 'Koru'; +$labels['vacation.discard'] = 'Yoksay'; +$labels['vacation.redirect'] = 'Şuraya yönlendir'; +$labels['vacation.copy'] = 'Şuraya kopya gönder'; +$labels['arialabelfiltersetactions'] = 'Filtre seti aksiyonları'; +$labels['arialabelfilteractions'] = 'Filtre aksiyonları'; +$labels['arialabelfilterform'] = 'Filtre özellikleri'; +$labels['ariasummaryfilterslist'] = 'Filtre listesi'; +$labels['ariasummaryfiltersetslist'] = 'Filtre seti listesi'; +$labels['filterstitle'] = 'Gelen e-posta filtrelerini düzenle'; +$labels['vacationtitle'] = 'Ofis dışında kuralını düzenle'; $messages['filterunknownerror'] = 'Bilinmeyen sunucu hatası.'; $messages['filterconnerror'] = 'Sunucuya bağlanamıyor.'; $messages['filterdeleteerror'] = 'Filtre silinemedi. Sunucuda hata oluştu.'; $messages['filterdeleted'] = 'Filtre başarıyla silindi.'; -$messages['filtersaved'] = 'Filter başarıyla kaydedildi.'; +$messages['filtersaved'] = 'Filtre başarıyla kaydedildi.'; $messages['filtersaveerror'] = 'Filtre kaydedilemedi. Sunucuda hata oluştu.'; $messages['filterdeleteconfirm'] = 'Seçilen filtreleri gerçekten silmek istiyor musun?'; $messages['ruledeleteconfirm'] = 'Seçili kuralları silmek istediğinizden emin misiniz?'; @@ -189,4 +218,7 @@ $messages['setexist'] = 'Set zaten var.'; $messages['nodata'] = 'En az bir pozisyon seçilmelidir.'; $messages['invaliddateformat'] = 'geçersiz tarih veya tarih biçimi'; +$messages['saveerror'] = 'Veri kaydedilemedi. Sunucuda hata oluştu.'; +$messages['vacationsaved'] = 'Tatil verisi başarıyla kaydedildi.'; +$messages['emptyvacationbody'] = 'Tatil mesajı metni gerekmektedir.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/uk_UA.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/uk_UA.inc
Changed
@@ -52,10 +52,10 @@ $labels['recipient'] = 'Отримувач'; $labels['vacationaddr'] = 'Додаткова адреса(и):'; $labels['vacationdays'] = 'Як часто повторювати (у днях):'; -$labels['days'] = 'днів'; -$labels['seconds'] = 'секунд'; $labels['vacationreason'] = 'Текст повідомлення:'; $labels['vacationsubject'] = 'Тема листа:'; +$labels['days'] = 'днів'; +$labels['seconds'] = 'секунд'; $labels['rulestop'] = 'Зупинити перевірку правил'; $labels['enable'] = 'Увімкнути/Вимкнуни'; $labels['filterset'] = 'Набір фільтрів'; @@ -93,10 +93,6 @@ $labels['varupperfirst'] = 'перший символ в верхньому регістрі'; $labels['varlength'] = 'довжина'; $labels['notify'] = 'Надсилати сповіщення'; -$labels['notifyaddress'] = 'На електронну адресу:'; -$labels['notifybody'] = 'Тіло сповіщення:'; -$labels['notifysubject'] = 'Тема сповіщення:'; -$labels['notifyfrom'] = 'Відправник сповіщення:'; $labels['filtercreate'] = 'Створити фільтр'; $labels['nextstep'] = 'Наступний крок'; $labels['...'] = '...';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/vi_VN.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/vi_VN.inc
Changed
@@ -57,10 +57,10 @@ $labels['vacationaddr'] = '(Các) Địa chỉ email bổ sung của tôi:'; $labels['vacationdays'] = 'Số lần gửi thư (trong ngày)'; $labels['vacationinterval'] = 'Tần suất gửi thư:'; -$labels['days'] = 'ngày'; -$labels['seconds'] = 'giây'; $labels['vacationreason'] = 'Nội dung chính'; $labels['vacationsubject'] = 'Tiêu đề thư'; +$labels['days'] = 'ngày'; +$labels['seconds'] = 'giây'; $labels['rulestop'] = 'Ngừng đánh giá qui luật'; $labels['enable'] = 'Kích hoạt/Không kích hoạt'; $labels['filterset'] = 'Đặt các bộ lọc'; @@ -108,14 +108,17 @@ $labels['varquotewildcard'] = 'trích dẫn ký tự đặc biệt'; $labels['varlength'] = 'độ dài'; $labels['notify'] = 'Gửi thông báo'; -$labels['notifyaddress'] = 'Gửi đến địa chỉ email:'; -$labels['notifybody'] = 'Nội dung thông báo:'; -$labels['notifysubject'] = 'Tiêu đề thông báo:'; -$labels['notifyfrom'] = 'Người gửi thông báo:'; +$labels['notifytarget'] = 'Mục tiêu thông báo:'; +$labels['notifymessage'] = 'Nội dung thông báo (tuỳ chọn):'; +$labels['notifyoptions'] = 'Lựa chọn thông báo (tuỳ chọn):'; +$labels['notifyfrom'] = 'Người gửi thông báo (tuỳ chọn):'; $labels['notifyimportance'] = 'Mức độ quan trọng:'; $labels['notifyimportancelow'] = 'thấp'; $labels['notifyimportancenormal'] = 'vừa phải'; $labels['notifyimportancehigh'] = 'cao'; +$labels['notifymethodmailto'] = 'Thư điện tử'; +$labels['notifymethodtel'] = 'Điện thoại'; +$labels['notifymethodsms'] = 'Tin nhắn'; $labels['filtercreate'] = 'Tạo bộ lọc'; $labels['usedata'] = 'Dùng dữ liệu trong bộ lọc sau:'; $labels['nextstep'] = 'Bước tiếp theo'; @@ -157,6 +160,18 @@ $labels['asciinumeric'] = 'Bảng mã ASCII'; $labels['index'] = 'chỉ mục:'; $labels['indexlast'] = 'ngược'; +$labels['vacation'] = 'Thiết lập tự động trả lời trong kỳ nghỉ'; +$labels['vacation.reply'] = 'Trả lời thư'; +$labels['vacation.advanced'] = 'Tùy chọn tính năng cao hơn'; +$labels['vacation.subject'] = 'Tiêu đề'; +$labels['vacation.body'] = 'Nội dung thư'; +$labels['vacation.status'] = 'Trạng thái'; +$labels['vacation.on'] = 'Bật'; +$labels['vacation.off'] = 'Tắt'; +$labels['vacation.addresses'] = 'Các địa chỉ bổ sung của tôi'; +$labels['vacation.interval'] = 'Khoảng thời gian trả lời'; +$labels['vacation.after'] = 'Đặt quy định kỳ nghỉ sau'; +$labels['vacation.saving'] = 'Lưu lại dữ liệu...'; $messages['filterunknownerror'] = 'Không tìm được lỗi máy chủ'; $messages['filterconnerror'] = 'Không kết nối được với máy chủ.'; $messages['filterdeleteerror'] = 'Không thể xóa bộ lọc. Xuất hiện lỗi ở máy chủ'; @@ -189,4 +204,6 @@ $messages['setexist'] = 'Thiết lập đã tồn tại'; $messages['nodata'] = 'Ít nhất một vị trí phải được chọn'; $messages['invaliddateformat'] = 'Lỗi không đúng cú pháp ngày hoặc nhập ngày sai'; +$messages['saveerror'] = 'Không thể lưu trữ dữ liệu. Xuất hiện lỗi ở máy chủ.'; +$messages['vacationsaved'] = 'Thiết lập kỳ nghỉ đã được lưu lại thành công.'; ?>
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/localization/zh_CN.inc -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/localization/zh_CN.inc
Changed
@@ -55,10 +55,10 @@ $labels['recipient'] = '收件人'; $labels['vacationdays'] = '发送邮件频率(单位:天):'; $labels['vacationinterval'] = '发送邮件频率:'; -$labels['days'] = '天'; -$labels['seconds'] = '秒'; $labels['vacationreason'] = '邮件正文(假期原因)'; $labels['vacationsubject'] = '邮件主题'; +$labels['days'] = '天'; +$labels['seconds'] = '秒'; $labels['rulestop'] = '停止评价规则'; $labels['enable'] = '启用/禁用'; $labels['filterset'] = '过滤器设置'; @@ -104,10 +104,6 @@ $labels['varquotewildcard'] = '引用特殊字符'; $labels['varlength'] = '长度'; $labels['notify'] = '发送通知'; -$labels['notifyaddress'] = '收件地址:'; -$labels['notifybody'] = '通知正文:'; -$labels['notifysubject'] = '通知主题'; -$labels['notifyfrom'] = '通知的发送人:'; $labels['notifyimportance'] = '优先级:'; $labels['notifyimportancelow'] = '低'; $labels['notifyimportancenormal'] = '中';
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/managesieve.js -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/managesieve.js
Changed
@@ -736,6 +736,9 @@ if (field.attr('disabled')) area.hide(); + // disable the original field anyway, we don't want it in POST + else + field.prop('disabled', true); field.after(area); @@ -930,7 +933,7 @@ rcube_webmail.prototype.managesieve_create = function(force) { - if (!force && this.env.action != 'show' && !$('#'+this.env.contentframe).is(':visible')) { + if (!force && this.env.action != 'show') { var uid = this.message_list.get_single_selection(), lock = this.set_busy(true, 'loading');
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/managesieve.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/managesieve.php
Changed
@@ -51,7 +51,9 @@ } else if ($this->rc->task == 'mail') { // register message hook - $this->add_hook('message_headers_output', array($this, 'mail_headers')); + if ($this->rc->action == 'show') { + $this->add_hook('message_headers_output', array($this, 'mail_headers')); + } // inject Create Filter popup stuff if (empty($this->rc->action) || $this->rc->action == 'show' @@ -83,14 +85,10 @@ // include styles $skin_path = $this->local_skin_path(); if ($this->rc->task == 'settings' || $sieve_action) { - if (is_file($this->home . "/$skin_path/managesieve.css")) { - $this->include_stylesheet("$skin_path/managesieve.css"); - } + $this->include_stylesheet("$skin_path/managesieve.css"); } else { - if (is_file($this->home . "/$skin_path/managesieve_mail.css")) { - $this->include_stylesheet("$skin_path/managesieve_mail.css"); - } + $this->include_stylesheet("$skin_path/managesieve_mail.css"); } $this->ui_initialized = true; @@ -192,9 +190,10 @@ function managesieve_actions() { // handle fetching email headers for the new filter form - if ($uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GPC)) { - $mailbox = $this->rc->get_storage()->get_folder(); - $message = new rcube_message($uid, $mailbox); + if ($uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)) { + $uids = rcmail::get_uids(); + $mailbox = key($uids); + $message = new rcube_message($uids[$mailbox][0], $mailbox); $headers = $this->parse_headers($message->headers); $this->rc->output->set_env('sieve_headers', $headers);
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/skins/larry/managesieve.css -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/skins/larry/managesieve.css
Changed
@@ -309,19 +309,10 @@ max-width: 280px; } -html.mozilla #filter-form select -{ - padding-top: 3px; - padding-bottom: 3px; -} - /* revert larry style button */ #filter-form input.button { - padding-bottom: 2px; - padding-left: 5px; - padding-right: 5px; - padding-top: 2px; + padding: inherit; } fieldset
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/tests/Managesieve.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/tests/Managesieve.php
Changed
@@ -5,7 +5,7 @@ function setUp() { - include_once dirname(__FILE__) . '/../managesieve.php'; + include_once __DIR__ . '/../managesieve.php'; } /**
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/tests/Parser.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/tests/Parser.php
Changed
@@ -5,7 +5,7 @@ function setUp() { - include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_script.php'; + include_once __DIR__ . '/../lib/Roundcube/rcube_sieve_script.php'; } /** @@ -34,7 +34,7 @@ */ function data_parser() { - $dir_path = realpath(dirname(__FILE__) . '/src'); + $dir_path = realpath(__DIR__ . '/src'); $dir = opendir($dir_path); $result = array();
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/tests/Tokenizer.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/tests/Tokenizer.php
Changed
@@ -5,7 +5,7 @@ function setUp() { - include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_script.php'; + include_once __DIR__ . '/../lib/Roundcube/rcube_sieve_script.php'; } function data_tokenizer()
View file
kolab-syncroton-2.3.0.tar.gz/lib/plugins/managesieve/tests/Vacation.php -> kolab-syncroton-2.3.1.tar.gz/lib/plugins/managesieve/tests/Vacation.php
Changed
@@ -5,8 +5,8 @@ function setUp() { - include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_engine.php'; - include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_vacation.php'; + include_once __DIR__ . '/../lib/Roundcube/rcube_sieve_engine.php'; + include_once __DIR__ . '/../lib/Roundcube/rcube_sieve_vacation.php'; } /**
View file
kolab-syncroton.dsc
Changed
@@ -2,7 +2,7 @@ Source: kolab-syncroton Binary: kolab-syncroton Architecture: all -Version: 2.3.0-0~kolab1 +Version: 2.3.1-0~kolab1 Maintainer: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Uploaders: Paul Klos <kolab@klos2day.nl> Homepage: http://www.kolab.org/ @@ -12,5 +12,5 @@ Package-List: kolab-syncroton deb utils extra Files: - 00000000000000000000000000000000 0 kolab-syncroton-2.3.0.tar.gz + 00000000000000000000000000000000 0 kolab-syncroton-2.3.1.tar.gz 00000000000000000000000000000000 0 debian.tar.gz
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.