summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2010-12-17 15:07:04 +0000
committerthomascube <thomas@roundcube.net>2010-12-17 15:07:04 +0000
commitdb1a87cd6c506f2afbd1a37c64cb56ae11120b49 (patch)
tree07e1d350a06e0529db08316621b9c629bfb90b58
parentacd5200b2110498793e04fb016cbbc69ea5fe9f3 (diff)
Update branch for 0.5-rc releasev0.5-rc@4349
-rw-r--r--CHANGELOG24
-rw-r--r--INSTALL3
-rw-r--r--README3
-rw-r--r--UPGRADING5
-rwxr-xr-xbin/update.sh2
-rw-r--r--config/main.inc.php.dist10
-rw-r--r--index.php27
-rw-r--r--plugins/emoticons/emoticons.php63
-rw-r--r--plugins/managesieve/localization/fr_FR.inc2
-rw-r--r--plugins/managesieve/localization/ru_RU.inc33
-rw-r--r--plugins/new_user_dialog/localization/es_ES.inc4
-rw-r--r--plugins/new_user_dialog/new_user_dialog.php1
-rw-r--r--plugins/new_user_dialog/package.xml26
-rw-r--r--plugins/password/config.inc.php.dist2
-rw-r--r--plugins/password/drivers/chpasswd.php2
-rw-r--r--plugins/password/drivers/ldap.php38
-rw-r--r--plugins/password/drivers/ldap_simple.php35
-rw-r--r--plugins/password/drivers/sql.php8
-rw-r--r--plugins/password/package.xml4
-rwxr-xr-xprogram/include/iniset.php2
-rw-r--r--program/include/main.inc178
-rw-r--r--program/include/rcmail.php32
-rw-r--r--program/include/rcube_imap.php327
-rw-r--r--program/include/rcube_imap_generic.php2817
-rw-r--r--program/include/rcube_message.php6
-rwxr-xr-xprogram/include/rcube_template.php20
-rw-r--r--program/include/rcube_user.php8
-rw-r--r--program/js/app.js329
-rw-r--r--program/js/editor.js4
-rw-r--r--program/js/list.js9
-rw-r--r--program/lib/Mail/mime.php57
-rw-r--r--program/lib/Mail/mimePart.php104
-rw-r--r--program/localization/ar_SA/labels.inc92
-rw-r--r--program/localization/ar_SA/messages.inc28
-rw-r--r--program/localization/ast/labels.inc3
-rw-r--r--program/localization/ast/messages.inc3
-rw-r--r--program/localization/az_AZ/labels.inc3
-rw-r--r--program/localization/az_AZ/messages.inc3
-rw-r--r--program/localization/bg_BG/labels.inc9
-rw-r--r--program/localization/bg_BG/messages.inc5
-rw-r--r--program/localization/bn_BD/labels.inc5
-rw-r--r--program/localization/bn_BD/messages.inc3
-rw-r--r--program/localization/br/labels.inc3
-rw-r--r--program/localization/bs_BA/labels.inc3
-rw-r--r--program/localization/ca_ES/labels.inc3
-rw-r--r--program/localization/ca_ES/messages.inc3
-rw-r--r--program/localization/cs_CZ/labels.inc3
-rw-r--r--program/localization/cs_CZ/messages.inc23
-rw-r--r--program/localization/cy_GB/labels.inc26
-rw-r--r--program/localization/cy_GB/messages.inc29
-rw-r--r--program/localization/da_DK/labels.inc3
-rw-r--r--program/localization/da_DK/messages.inc3
-rw-r--r--program/localization/de_CH/labels.inc16
-rw-r--r--program/localization/de_CH/messages.inc15
-rw-r--r--program/localization/de_DE/labels.inc16
-rw-r--r--program/localization/de_DE/messages.inc15
-rw-r--r--program/localization/el_GR/labels.inc3
-rw-r--r--program/localization/el_GR/messages.inc3
-rw-r--r--program/localization/en_GB/labels.inc24
-rw-r--r--program/localization/en_GB/messages.inc29
-rw-r--r--program/localization/en_US/labels.inc21
-rw-r--r--program/localization/en_US/messages.inc15
-rw-r--r--program/localization/eo/labels.inc3
-rw-r--r--program/localization/eo/messages.inc1
-rw-r--r--program/localization/es_AR/labels.inc3
-rw-r--r--program/localization/es_AR/messages.inc3
-rw-r--r--program/localization/es_ES/labels.inc21
-rw-r--r--program/localization/es_ES/messages.inc17
-rw-r--r--program/localization/et_EE/labels.inc16
-rw-r--r--program/localization/et_EE/messages.inc18
-rw-r--r--program/localization/eu_ES/labels.inc3
-rw-r--r--program/localization/eu_ES/messages.inc1
-rw-r--r--program/localization/fa/labels.inc4
-rw-r--r--program/localization/fa/messages.inc3
-rw-r--r--program/localization/fa_AF/labels.inc3
-rw-r--r--program/localization/fa_AF/messages.inc3
-rw-r--r--program/localization/fi_FI/labels.inc3
-rw-r--r--program/localization/fi_FI/messages.inc3
-rw-r--r--program/localization/fr_FR/labels.inc19
-rw-r--r--program/localization/fr_FR/messages.inc19
-rwxr-xr-xprogram/localization/ga_IE/labels.inc3
-rw-r--r--program/localization/gl_ES/labels.inc41
-rw-r--r--program/localization/gl_ES/messages.inc27
-rw-r--r--program/localization/he_IL/labels.inc21
-rw-r--r--program/localization/he_IL/messages.inc17
-rw-r--r--program/localization/hi_IN/labels.inc3
-rw-r--r--program/localization/hr_HR/labels.inc88
-rw-r--r--program/localization/hr_HR/messages.inc3
-rw-r--r--program/localization/hu_HU/labels.inc13
-rw-r--r--program/localization/hu_HU/messages.inc3
-rw-r--r--program/localization/hy_AM/labels.inc3
-rw-r--r--program/localization/hy_AM/messages.inc3
-rw-r--r--program/localization/id_ID/labels.inc25
-rw-r--r--program/localization/id_ID/messages.inc21
-rw-r--r--program/localization/is_IS/labels.inc3
-rw-r--r--program/localization/it_IT/labels.inc13
-rw-r--r--program/localization/it_IT/messages.inc3
-rw-r--r--program/localization/ja_JP/labels.inc280
-rw-r--r--program/localization/ja_JP/messages.inc46
-rwxr-xr-xprogram/localization/ka_GE/labels.inc3
-rwxr-xr-xprogram/localization/ka_GE/messages.inc3
-rw-r--r--program/localization/kh_KH/labels.inc3
-rw-r--r--program/localization/kh_KH/messages.inc3
-rw-r--r--program/localization/ko_KR/labels.inc3
-rw-r--r--program/localization/ko_KR/messages.inc3
-rw-r--r--program/localization/ku/labels.inc3
-rw-r--r--program/localization/ku/messages.inc1
-rw-r--r--program/localization/lt_LT/labels.inc34
-rw-r--r--program/localization/lt_LT/messages.inc30
-rw-r--r--program/localization/lv_LV/labels.inc3
-rw-r--r--program/localization/lv_LV/messages.inc3
-rwxr-xr-xprogram/localization/mk_MK/labels.inc3
-rwxr-xr-xprogram/localization/mk_MK/messages.inc3
-rwxr-xr-xprogram/localization/mr_IN/labels.inc3
-rwxr-xr-xprogram/localization/mr_IN/messages.inc3
-rw-r--r--program/localization/ms_MY/labels.inc3
-rw-r--r--program/localization/ms_MY/messages.inc1
-rw-r--r--program/localization/nb_NO/labels.inc3
-rw-r--r--program/localization/nb_NO/messages.inc3
-rw-r--r--program/localization/ne_NP/labels.inc3
-rw-r--r--program/localization/nl_BE/labels.inc3
-rw-r--r--program/localization/nl_BE/messages.inc3
-rw-r--r--program/localization/nl_NL/labels.inc15
-rw-r--r--program/localization/nl_NL/messages.inc3
-rw-r--r--program/localization/nn_NO/labels.inc3
-rw-r--r--program/localization/nn_NO/messages.inc3
-rw-r--r--program/localization/pl_PL/labels.inc21
-rw-r--r--program/localization/pl_PL/messages.inc15
-rwxr-xr-xprogram/localization/ps/labels.inc3
-rwxr-xr-xprogram/localization/ps/messages.inc3
-rw-r--r--program/localization/pt_BR/labels.inc3
-rw-r--r--program/localization/pt_BR/messages.inc3
-rw-r--r--program/localization/pt_PT/labels.inc18
-rw-r--r--program/localization/pt_PT/messages.inc14
-rw-r--r--program/localization/ro_RO/labels.inc3
-rw-r--r--program/localization/ro_RO/messages.inc3
-rw-r--r--program/localization/ru_RU/labels.inc13
-rw-r--r--program/localization/ru_RU/messages.inc3
-rw-r--r--program/localization/si_LK/labels.inc3
-rw-r--r--program/localization/si_LK/messages.inc1
-rw-r--r--program/localization/sk_SK/labels.inc3
-rw-r--r--program/localization/sk_SK/messages.inc3
-rw-r--r--program/localization/sl_SI/labels.inc13
-rw-r--r--program/localization/sl_SI/messages.inc3
-rw-r--r--program/localization/sq_AL/labels.inc3
-rw-r--r--program/localization/sq_AL/messages.inc1
-rw-r--r--program/localization/sr_CS/labels.inc3
-rw-r--r--program/localization/sr_CS/messages.inc1
-rw-r--r--program/localization/sv_SE/labels.inc12
-rw-r--r--program/localization/sv_SE/messages.inc15
-rw-r--r--program/localization/ta_IN/labels.inc3
-rw-r--r--program/localization/ta_IN/messages.inc3
-rw-r--r--program/localization/th_TH/labels.inc3
-rw-r--r--program/localization/tr_TR/labels.inc3
-rw-r--r--program/localization/tr_TR/messages.inc3
-rw-r--r--program/localization/uk_UA/labels.inc16
-rw-r--r--program/localization/uk_UA/messages.inc16
-rw-r--r--program/localization/vi_VN/labels.inc3
-rw-r--r--program/localization/zh_CN/labels.inc3
-rw-r--r--program/localization/zh_CN/messages.inc3
-rw-r--r--program/localization/zh_TW/labels.inc9
-rw-r--r--program/localization/zh_TW/messages.inc4
-rw-r--r--program/steps/mail/compose.inc22
-rw-r--r--program/steps/mail/copy.inc4
-rw-r--r--program/steps/mail/folders.inc84
-rw-r--r--program/steps/mail/func.inc93
-rw-r--r--program/steps/mail/getunread.inc13
-rw-r--r--program/steps/mail/list.inc3
-rw-r--r--program/steps/mail/mark.inc6
-rw-r--r--program/steps/mail/move_del.inc10
-rw-r--r--program/steps/mail/search.inc3
-rw-r--r--program/steps/mail/sendmail.inc69
-rw-r--r--program/steps/mail/show.inc7
-rw-r--r--program/steps/settings/edit_folder.inc294
-rw-r--r--program/steps/settings/edit_identity.inc3
-rw-r--r--program/steps/settings/folders.inc377
-rw-r--r--program/steps/settings/manage_folders.inc443
-rw-r--r--program/steps/settings/save_folder.inc176
-rw-r--r--program/steps/utils/html2text.inc7
-rw-r--r--skins/default/common.css19
-rw-r--r--skins/default/functions.js2
-rw-r--r--skins/default/iehacks.css8
-rw-r--r--skins/default/mail.css22
-rw-r--r--skins/default/settings.css118
-rw-r--r--skins/default/splitter.js6
-rw-r--r--skins/default/templates/compose.html18
-rw-r--r--skins/default/templates/folderedit.html24
-rw-r--r--skins/default/templates/folders.html62
-rw-r--r--skins/default/templates/identityedit.html2
-rw-r--r--skins/default/templates/managefolders.html41
190 files changed, 4248 insertions, 3421 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 988c97baa..12ada2349 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,30 @@
CHANGELOG Roundcube Webmail
===========================
+- Plugin API: Add 'pass' argument in 'authenticate' hook (#1487134)
+- Fix attachments of type message/rfc822 are not listed on attachments list
+- Add 'login_lc' config option for case-insensitive authentication (#1487113)
+- Fix window is blur'ed in IE when selecting a message (#1487316)
+- Fix cursor position on compose form in Webkit browsers (#1486674)
+- Fix setting charset of attachment filenames (#1487122)
+- Allow setting autocomplete attribute for all inputs separately (#1487313)
+- New Folder Manager UI
+- Fix invalid Request when creating a folder (#1487443)
+- Add folder size and quota indicator in folder manager (#1485780)
+- Add possibility to move a subfolder into root folder (#1486791)
+- Fix copying all messages in a folder copies only messages from current page
+- Improve performance of moving or copying of all messages in a folder
+- Fix plaintext versions of HTML messages don't contain placeholders for emotions (#1485206)
+- Improve performance of folder rename and delete actions
+- Better support for READ-ONLY and NOPERM responses handling (#1487083)
+- Add confirmation message on purge/expunge command response
+- Fix handling of untagged responses for AUTHENTICATE command (#1487450)
+- Add username and IP address to log message on unsuccessful login (#1487626)
+- Improved Mail-Followup-To and Mail-Reply-To headers handling
+- Fix charset conversion for text attachments without charset specification (#1487634)
+
+RELEASE 0.5-BETA
+----------------
- Make session data storage more robust against garbage session data (#1487136)
- Config option for autocomplete on login screen
- Allow plugin templates to include local files (#1487133)
diff --git a/INSTALL b/INSTALL
index 534eac65b..eb8399786 100644
--- a/INSTALL
+++ b/INSTALL
@@ -17,8 +17,9 @@ REQUIREMENTS
- mbstring, fileinfo, mcrypt (optional)
* PEAR packages distributed with Roundcube or external:
- MDB2 2.5.0 or newer
- - Mail_Mime 1.7.0 or newer
+ - Mail_Mime 1.8.1 or newer
- Net_SMTP 1.4.2 or newer
+ - Auth_SASL 1.0.3 or newer
* php.ini options (see .htaccess file):
- error_reporting E_ALL & ~E_NOTICE (or lower)
- memory_limit > 16MB (increase as suitable to support large attachments)
diff --git a/README b/README
index 06530b25b..a4e661a52 100644
--- a/README
+++ b/README
@@ -25,9 +25,6 @@ Installation:
For detailed instructions on how to install Roundcube webmail on your server,
please refer to the INSTALL document in the same directory as this document.
-If you're updating an older version of Roundcube please follow the steps
-described in the UPGRADING file.
-
Licensing:
----------
diff --git a/UPGRADING b/UPGRADING
index 1cc890281..e98fd16d3 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -22,6 +22,7 @@ installation as well as the database before executig the following steps.
./SQL/[yourdbtype].update.sql that are superscribed with the
currently installed version number.
5. Make sure 'enable_installer' is set to false again.
-6. IMPORTANT: clear all records from the sessions table in your database.
- The session storage format has changed so all existing data cannot be read anymore.
+6. IMPORTANT (when upgrading from 0.4.x): clear all records from the sessions
+ table in your database. The session storage format has changed so all
+ existing data cannot be read anymore.
diff --git a/bin/update.sh b/bin/update.sh
index 5f4e3f24c..a2988879c 100755
--- a/bin/update.sh
+++ b/bin/update.sh
@@ -80,7 +80,7 @@ if ($RCI->configured) {
// Success!
if ($write1 && $write2) {
echo "Done.\n";
- echo "Your configuration files are now up-tp-date!\n";
+ echo "Your configuration files are now up-to-date!\n";
}
else {
echo "Failed to write config files!\n";
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 2b18da333..e2f9aea3b 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -83,6 +83,7 @@ $rcmail_config['imap_delimiter'] = null;
// set these options. All can be strings or arrays of strings.
// Folders need to be ended with directory separator, e.g. "INBOX."
// (special directory "~" is an exception to this rule)
+// These can be used also to overwrite server's namespaces
$rcmail_config['imap_ns_personal'] = null;
$rcmail_config['imap_ns_other'] = null;
$rcmail_config['imap_ns_shared'] = null;
@@ -180,8 +181,13 @@ $rcmail_config['message_cache_lifetime'] = '10d';
// set the port for the ssl connection as value of this option if it differs from the default 443
$rcmail_config['force_https'] = false;
-// Allow browser-autocompletion on login form
-$rcmail_config['login_autocomplete'] = false;
+// Allow browser-autocompletion on login form.
+// 0 - disabled, 1 - username and host only, 2 - username, host, password
+$rcmail_config['login_autocomplete'] = 0;
+
+// If users authentication is not case sensitive this must be enabled.
+// You can also use it to force conversion of logins to lower case.
+$rcmail_config['login_lc'] = false;
// automatically create a new Roundcube user when log-in the first time.
// a new user will be created once the IMAP login succeeds.
diff --git a/index.php b/index.php
index 0da3c129f..ff9b0080b 100644
--- a/index.php
+++ b/index.php
@@ -2,7 +2,7 @@
/*
+-------------------------------------------------------------------------+
| Roundcube Webmail IMAP Client |
- | Version 0.5-beta |
+ | Version 0.5-rc |
| |
| Copyright (C) 2005-2010, Roundcube Dev. - Switzerland |
| |
@@ -77,16 +77,14 @@ $RCMAIL->action = $startup['action'];
if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
// purge the session in case of new login when a session already exists
$RCMAIL->kill_session();
-
+
$auth = $RCMAIL->plugins->exec_hook('authenticate', array(
'host' => $RCMAIL->autoselect_host(),
'user' => trim(get_input_value('_user', RCUBE_INPUT_POST)),
+ 'pass' => get_input_value('_pass', RCUBE_INPUT_POST, true,
+ $RCMAIL->config->get('password_charset', 'ISO-8859-1')),
'cookiecheck' => true,
));
-
- if (!isset($auth['pass']))
- $auth['pass'] = get_input_value('_pass', RCUBE_INPUT_POST, true,
- $RCMAIL->config->get('password_charset', 'ISO-8859-1'));
// check if client supports cookies
if ($auth['cookiecheck'] && empty($_COOKIE)) {
@@ -220,16 +218,15 @@ $action_map = array(
'group-addmembers' => 'groups.inc',
'group-delmembers' => 'groups.inc',
),
-
+
'settings' => array(
- 'folders' => 'manage_folders.inc',
- 'create-folder' => 'manage_folders.inc',
- 'rename-folder' => 'manage_folders.inc',
- 'delete-folder' => 'manage_folders.inc',
- 'subscribe' => 'manage_folders.inc',
- 'unsubscribe' => 'manage_folders.inc',
- 'enable-threading' => 'manage_folders.inc',
- 'disable-threading' => 'manage_folders.inc',
+ 'folders' => 'folders.inc',
+ 'rename-folder' => 'folders.inc',
+ 'delete-folder' => 'folders.inc',
+ 'subscribe' => 'folders.inc',
+ 'unsubscribe' => 'folders.inc',
+ 'purge' => 'folders.inc',
+ 'folder-size' => 'folders.inc',
'add-identity' => 'edit_identity.inc',
)
);
diff --git a/plugins/emoticons/emoticons.php b/plugins/emoticons/emoticons.php
index e929c9f9d..95f5ecf39 100644
--- a/plugins/emoticons/emoticons.php
+++ b/plugins/emoticons/emoticons.php
@@ -5,7 +5,7 @@
*
* Sample plugin to replace emoticons in plain text message body with real icons
*
- * @version 1.2.0
+ * @version 1.3
* @author Thomas Bruederli
* @author Aleksander Machniak
* @website http://roundcube.net
@@ -35,38 +35,30 @@ class emoticons extends rcube_plugin
// map of emoticon replacements
$map = array(
- '/:\)/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif',
- 'title' => ':)'
- )),
- '/:-\)/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif',
- 'title' => ':-)'
- )),
- '/(?<!mailto):D/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif',
- 'title' => ':D'
- )),
- '/:-D/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif',
- 'title' => ':-D'
- )),
- '/:\(/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif',
- 'title' => ':('
- )),
- '/:-\(/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif',
- 'title' => ':-('
- )),
- '/'.$entity.';\)/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif',
- 'title' => ';)'
- )),
- '/'.$entity.';-\)/' => html::img(array(
- 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif',
- 'title' => ';-)'
- )),
+ '/:\)/' => $this->img_tag('smiley-smile.gif', ':)' ),
+ '/:-\)/' => $this->img_tag('smiley-smile.gif', ':-)' ),
+ '/(?<!mailto):D/' => $this->img_tag('smiley-laughing.gif', ':D' ),
+ '/:-D/' => $this->img_tag('smiley-laughing.gif', ':-D' ),
+ '/:\(/' => $this->img_tag('smiley-frown.gif', ':(' ),
+ '/:-\(/' => $this->img_tag('smiley-frown.gif', ':-(' ),
+ '/'.$entity.';\)/' => $this->img_tag('smiley-wink.gif', ';)' ),
+ '/'.$entity.';-\)/' => $this->img_tag('smiley-wink.gif', ';-)' ),
+ '/8\)/' => $this->img_tag('smiley-cool.gif', '8)' ),
+ '/8-\)/' => $this->img_tag('smiley-cool.gif', '8-)' ),
+ '/(?<!mailto):O/i' => $this->img_tag('smiley-surprised.gif', ':O' ),
+ '/(?<!mailto):-O/i' => $this->img_tag('smiley-surprised.gif', ':-O' ),
+ '/(?<!mailto):P/i' => $this->img_tag('smiley-tongue-out.gif', ':P' ),
+ '/(?<!mailto):-P/i' => $this->img_tag('smiley-tongue-out.gif', ':-P' ),
+ '/(?<!mailto):@/i' => $this->img_tag('smiley-yell.gif', ':@' ),
+ '/(?<!mailto):-@/i' => $this->img_tag('smiley-yell.gif', ':-@' ),
+ '/O:\)/i' => $this->img_tag('smiley-innocent.gif', 'O:)' ),
+ '/O:-\)/i' => $this->img_tag('smiley-innocent.gif', 'O:-)' ),
+ '/(?<!mailto):$/' => $this->img_tag('smiley-embarassed.gif', ':$' ),
+ '/(?<!mailto):-$/' => $this->img_tag('smiley-embarassed.gif', ':-$' ),
+ '/(?<!mailto):\*/i' => $this->img_tag('smiley-kiss.gif', ':*' ),
+ '/(?<!mailto):-\*/i' => $this->img_tag('smiley-kiss.gif', ':-*' ),
+ '/(?<!mailto):S/i' => $this->img_tag('smiley-undecided.gif', ':S' ),
+ '/(?<!mailto):-S/i' => $this->img_tag('smiley-undecided.gif', ':-S' ),
);
if ($args['type'] == 'plain') {
@@ -77,4 +69,9 @@ class emoticons extends rcube_plugin
return $args;
}
+ private function img_tag($ico, $title)
+ {
+ $path = './program/js/tiny_mce/plugins/emotions/img/';
+ return html::img(array('src' => $path.$ico, 'title' => $title));
+ }
}
diff --git a/plugins/managesieve/localization/fr_FR.inc b/plugins/managesieve/localization/fr_FR.inc
index e7d09945a..0b494f041 100644
--- a/plugins/managesieve/localization/fr_FR.inc
+++ b/plugins/managesieve/localization/fr_FR.inc
@@ -26,6 +26,8 @@ $labels['messageredirect'] = 'Transférer le message à';
$labels['messagereply'] = 'Répondre avec le message';
$labels['messagedelete'] = 'Supprimer le message';
$labels['messagediscard'] = 'Rejeter avec le message';
+$labels['messagecopyto'] = 'Copier le message vers';
+$labels['messagesendcopy'] = 'Envoyer une copie du message à';
$labels['messagesrules'] = 'Pour les mails entrants:';
$labels['messagesactions'] = '...exécuter les actions suivantes:';
$labels['add'] = 'Ajouter';
diff --git a/plugins/managesieve/localization/ru_RU.inc b/plugins/managesieve/localization/ru_RU.inc
index 95f302818..d485f0ed3 100644
--- a/plugins/managesieve/localization/ru_RU.inc
+++ b/plugins/managesieve/localization/ru_RU.inc
@@ -1,4 +1,22 @@
<?php
+/*
+
++-----------------------------------------------------------------------+
+| plugins/managesieve/localization/ru_RU.inc |
+| |
+| Russian translation for roundcube/managesieve plugin |
+| Copyright (C) 2008-2010 |
+| Licensed under the GNU GPL |
+| |
++-----------------------------------------------------------------------+
+| Author: |
+| Updates: Sergey Dukachev <iam@dukess.ru> |
++-----------------------------------------------------------------------+
+
+@version 2010-10-11
+
+*/
+
$labels['filters'] = 'Фильтры';
$labels['managefilters'] = 'Управление фильтрами Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñщей почты';
$labels['filtername'] = 'Ðазвание фильтра';
@@ -21,7 +39,9 @@ $labels['filterover'] = 'на';
$labels['addrule'] = 'Добавить правило';
$labels['delrule'] = 'Удалить правило';
$labels['messagemoveto'] = 'ПеремеÑтить Ñообщение в';
-$labels['messageredirect'] = 'Перенаправить Ñообщение на ';
+$labels['messageredirect'] = 'Перенаправить Ñообщение на';
+$labels['messagecopyto'] = 'Скопировать Ñообщение в';
+$labels['messagesendcopy'] = 'Отправить копию ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð°';
$labels['messagereply'] = 'Ответить Ñ Ñообщением';
$labels['messagedelete'] = 'Удалить Ñообщение';
$labels['messagediscard'] = 'ОтброÑить Ñ Ñообщением';
@@ -38,12 +58,13 @@ $labels['rulestop'] = 'Закончить выполнение';
$labels['filterset'] = 'Ðабор фильтров';
$labels['filtersetadd'] = 'Добавить набор фильтров';
$labels['filtersetdel'] = 'Удалить текущий набор фильтров';
-$labels['filtersetact'] = 'Ðктивировать текущий набор фильтров';
+$labels['filtersetact'] = 'Включить текущий набор фильтров';
+$labels['filtersetdeact'] = 'Отключить текущий набор фильтров';
$labels['filtersetget'] = 'Скачать набор фильтров в виде текÑта';
$labels['filterdef'] = 'ОпиÑание фильтра';
$labels['filtersetname'] = 'Ðазвание набора фильтров';
$labels['newfilterset'] = 'Ðовый набор фильтров';
-$labels['active'] = 'активный';
+$labels['active'] = 'иÑпользуетÑÑ';
$labels['none'] = 'пуÑтой';
$labels['fromset'] = 'из набора';
$labels['fromfile'] = 'из файла';
@@ -61,9 +82,11 @@ $messages['ruledeleteconfirm'] = 'Ð’Ñ‹ уверенны, что хотите уÐ
$messages['actiondeleteconfirm'] = 'Ð’Ñ‹ уверенны, что хотите удалить Ñто дейÑтвие?';
$messages['forbiddenchars'] = 'ÐедопуÑтимые Ñимволы в поле';
$messages['cannotbeempty'] = 'Поле не может быть пуÑтым';
-$messages['setactivateerror'] = 'Ðевозможно активировать выбранный набор фильтров. Ошибка Ñервера';
+$messages['setactivateerror'] = 'Ðевозможно включить выбранный набор фильтров. Ошибка Ñервера';
+$messages['setdeactivateerror'] = 'Ðевозможно отключить выбранный набор фильтров. Ошибка Ñервера';
$messages['setdeleteerror'] = 'Ðевозможно удалить выбранный набор фильтров. Ошибка Ñервера';
-$messages['setactivated'] = 'Ðабор фильтров уÑпешно активирован';
+$messages['setactivated'] = 'Ðабор фильтров уÑпешно включён';
+$messages['setdeactivated'] = 'Ðабор фильтров уÑпешно отключён';
$messages['setdeleted'] = 'Ðабор фильтров уÑпешно удалён';
$messages['setdeleteconfirm'] = 'Вы уверены в том, что хотите удалить выбранный набор фильтров?';
$messages['setcreateerror'] = 'Ðевозможно Ñоздать набор фильтров. Ошибка Ñервера';
diff --git a/plugins/new_user_dialog/localization/es_ES.inc b/plugins/new_user_dialog/localization/es_ES.inc
index 73f47f25a..2d2ccfe0a 100644
--- a/plugins/new_user_dialog/localization/es_ES.inc
+++ b/plugins/new_user_dialog/localization/es_ES.inc
@@ -1,7 +1,7 @@
<?php
$labels = array();
-$labels['identitydialogtitle'] = 'Por favor completa tus datos';
-$labels['identitydialoghint'] = 'Este diálogo sólo aparece la primera vez que te conectas.';
+$labels['identitydialogtitle'] = 'Por favor, complete sus datos personales';
+$labels['identitydialoghint'] = 'Este diálogo sólo aparecerá la primera vez que se conecte al correo.';
?>
diff --git a/plugins/new_user_dialog/new_user_dialog.php b/plugins/new_user_dialog/new_user_dialog.php
index 9b773be65..96cd0da23 100644
--- a/plugins/new_user_dialog/new_user_dialog.php
+++ b/plugins/new_user_dialog/new_user_dialog.php
@@ -85,6 +85,7 @@ class new_user_dialog extends rcube_plugin
"$(document).ready(function () {
rcmail.message_list.key_press = function(){};
rcmail.message_list.key_down = function(){};
+ $('input[name=_name]').focus();
});", 'foot');
$this->include_stylesheet('newuserdialog.css');
diff --git a/plugins/new_user_dialog/package.xml b/plugins/new_user_dialog/package.xml
index 7caa87ca4..198a9fadb 100644
--- a/plugins/new_user_dialog/package.xml
+++ b/plugins/new_user_dialog/package.xml
@@ -13,10 +13,10 @@
<email>roundcube@gmail.com</email>
<active>yes</active>
</lead>
- <date>2010-05-27</date>
+ <date>2010-12-02</date>
<time>12:00:00</time>
<version>
- <release>1.2</release>
+ <release>1.3</release>
<api>1.0</api>
</version>
<stability>
@@ -25,8 +25,8 @@
</stability>
<license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
<notes>
-- Add overlay box only to mail task main template
-- Fix possible error on form submission (#1486103)
+- Added setting of focus on name input
+- Added gl_ES translation
</notes>
<contents>
<dir baseinstalldir="/" name="/">
@@ -45,6 +45,7 @@
<file name="de_DE.inc" role="data" />
<file name="es_ES.inc" role="data" />
<file name="et_EE.inc" role="data" />
+ <file name="gl_ES.inc" role="data" />
<file name="it_IT.inc" role="data" />
<file name="ja_JP.inc" role="data" />
<file name="nl_NL.inc" role="data" />
@@ -101,5 +102,22 @@
- Fix space bar and backspace buttons not working (#1486726)
</notes>
</release>
+ <release>
+ <date>2010-05-27</date>
+ <time>12:00:00</time>
+ <version>
+ <release>1.2</release>
+ <api>1.0</api>
+ </version>
+ <stability>
+ <release>stable</release>
+ <api>stable</api>
+ </stability>
+ <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
+ <notes>
+- Add overlay box only to mail task main template
+- Fix possible error on form submission (#1486103)
+ </notes>
+ </release>
</changelog>
</package>
diff --git a/plugins/password/config.inc.php.dist b/plugins/password/config.inc.php.dist
index b412663ba..10a659d32 100644
--- a/plugins/password/config.inc.php.dist
+++ b/plugins/password/config.inc.php.dist
@@ -127,6 +127,7 @@ $rcmail_config['password_ldap_adminPW'] = null;
// '%login' will be replaced by the current roundcube user's login
// '%name' will be replaced by the current roundcube user's name part
// '%domain' will be replaced by the current roundcube user's domain part
+// '%dc' will be replaced by domain name hierarchal string e.g. "dc=test,dc=domain,dc=com"
// Exemple: 'uid=%login,ou=people,dc=exemple,dc=com'
$rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=people,dc=exemple,dc=com';
@@ -164,6 +165,7 @@ $rcmail_config['password_ldap_search_base'] = 'ou=people,dc=example,dc=com';
// '%login' will be replaced by the current roundcube user's login
// '%name' will be replaced by the current roundcube user's name part
// '%domain' will be replaced by the current roundcube user's domain part
+// '%dc' will be replaced by domain name hierarchal string e.g. "dc=test,dc=domain,dc=com"
// Example: '(uid=%login)'
// Example: '(&(objectClass=posixAccount)(uid=%login))'
$rcmail_config['password_ldap_search_filter'] = '(uid=%login)';
diff --git a/plugins/password/drivers/chpasswd.php b/plugins/password/drivers/chpasswd.php
index 8450af154..28c3e5d7a 100644
--- a/plugins/password/drivers/chpasswd.php
+++ b/plugins/password/drivers/chpasswd.php
@@ -18,7 +18,7 @@ function password_save($currpass, $newpass)
$username = $_SESSION['username'];
$handle = popen($cmd, "w");
- fwrite($handle, "$username:$newpass");
+ fwrite($handle, "$username:$newpass\n");
if (pclose($handle) == 0) {
return PASSWORD_SUCCESS;
diff --git a/plugins/password/drivers/ldap.php b/plugins/password/drivers/ldap.php
index c5cb2328a..98b6636be 100644
--- a/plugins/password/drivers/ldap.php
+++ b/plugins/password/drivers/ldap.php
@@ -18,18 +18,18 @@ function password_save($curpass, $passwd)
{
$rcmail = rcmail::get_instance();
require_once ('Net/LDAP2.php');
-
+
// Building user DN
if ($userDN = $rcmail->config->get('password_ldap_userDN_mask')) {
$userDN = substitute_vars($userDN);
} else {
$userDN = search_userdn($rcmail);
}
-
+
if (empty($userDN)) {
return PASSWORD_CONNECT_ERROR;
}
-
+
// Connection Method
switch($rcmail->config->get('password_ldap_method')) {
case 'admin':
@@ -42,7 +42,7 @@ function password_save($curpass, $passwd)
$bindpw = $curpass;
break;
}
-
+
// Configuration array
$ldapConfig = array (
'binddn' => $binddn,
@@ -53,27 +53,27 @@ function password_save($curpass, $passwd)
'starttls' => $rcmail->config->get('password_ldap_starttls'),
'version' => $rcmail->config->get('password_ldap_version'),
);
-
+
// Connecting using the configuration array
$ldap = Net_LDAP2::connect($ldapConfig);
-
+
// Checking for connection error
if (PEAR::isError($ldap)) {
return PASSWORD_CONNECT_ERROR;
}
-
+
// Crypting new password
$newCryptedPassword = hashPassword($passwd, $rcmail->config->get('password_ldap_encodage'));
if (!$newCryptedPassword) {
return PASSWORD_CRYPT_ERROR;
}
-
+
// Writing new crypted password to LDAP
$userEntry = $ldap->getEntry($userDN);
if (Net_LDAP2::isError($userEntry)) {
return PASSWORD_CONNECT_ERROR;
}
-
+
$pwattr = $rcmail->config->get('password_ldap_pwattr');
$force = $rcmail->config->get('password_ldap_force_replace');
@@ -132,25 +132,30 @@ function search_userdn($rcmail)
if (PEAR::isError($result) || ($result->count() != 1)) {
return '';
}
-
+
return $result->current()->dn();
}
/**
- * Substitute %login, %name and %domain in $str.
+ * Substitute %login, %name, %domain, %dc in $str.
* See plugin config for details.
*/
function substitute_vars($str)
{
$rcmail = rcmail::get_instance();
+ $domain = $rcmail->user->get_username('domain');
+ $dc = 'dc='.strtr($domain, array('.' => ',dc=')); // hierarchal domain string
+
$str = str_replace(array(
'%login',
'%name',
'%domain',
+ '%dc',
), array(
$_SESSION['username'],
$rcmail->user->get_username('local'),
- $rcmail->user->get_username('domain'),
+ $domain,
+ $dc,
), $str
);
@@ -178,7 +183,7 @@ function hashPassword( $passwordClear, $encodageType )
case 'crypt':
$cryptedPassword = '{CRYPT}' . crypt($passwordClear,randomSalt(2));
break;
-
+
case 'ext_des':
// extended des crypt. see OpenBSD crypt man page.
if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 ) {
@@ -263,8 +268,7 @@ function hashPassword( $passwordClear, $encodageType )
* @param int $length The length of the salt string to generate.
* @return string The generated salt string.
*/
-
-function randomSalt( $length )
+function randomSalt( $length )
{
$possible = '0123456789'.
'abcdefghijklmnopqrstuvwxyz'.
@@ -273,8 +277,8 @@ function randomSalt( $length )
$str = '';
// mt_srand((double)microtime() * 1000000);
- while( strlen( $str ) < $length )
- $str .= substr( $possible, ( rand() % strlen( $possible ) ), 1 );
+ while (strlen($str) < $length)
+ $str .= substr($possible, (rand() % strlen($possible)), 1);
return $str;
}
diff --git a/plugins/password/drivers/ldap_simple.php b/plugins/password/drivers/ldap_simple.php
index 541afa96b..38db9f129 100644
--- a/plugins/password/drivers/ldap_simple.php
+++ b/plugins/password/drivers/ldap_simple.php
@@ -20,7 +20,7 @@ function password_save($curpass, $passwd)
return PASSWORD_CONNECT_ERROR;
}
- /* Set protocol version */
+ /* Set protocol version */
if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $rcmail->config->get('password_ldap_version'))) {
ldap_unbind($ds);
return PASSWORD_CONNECT_ERROR;
@@ -40,12 +40,12 @@ function password_save($curpass, $passwd)
} else {
$user_dn = ldap_simple_search_userdn($rcmail, $ds);
}
-
+
if (empty($user_dn)) {
ldap_unbind($ds);
return PASSWORD_CONNECT_ERROR;
}
-
+
/* Connection method */
switch ($rcmail->config->get('password_ldap_method')) {
case 'admin':
@@ -64,27 +64,27 @@ function password_save($curpass, $passwd)
ldap_unbind($ds);
return PASSWORD_CONNECT_ERROR;
}
-
+
/* Crypting new password */
$passwd = ldap_simple_hash_password($passwd, $rcmail->config->get('password_ldap_encodage'));
if (!$passwd) {
ldap_unbind($ds);
return PASSWORD_CRYPT_ERROR;
}
-
+
$entree[$rcmail->config->get('password_ldap_pwattr')] = $passwd;
/* Updating PasswordLastChange Attribute if desired */
if ($lchattr = $rcmail->config->get('password_ldap_lchattr')) {
- $entree[$lchattr] = (int)(time() / 86400)
+ $entree[$lchattr] = (int)(time() / 86400);
}
-
+
if (!ldap_modify($ds, $user_dn, $entree)) {
ldap_unbind($ds);
return PASSWORD_CONNECT_ERROR;
}
-
+
/* All done, no error */
ldap_unbind($ds);
return PASSWORD_SUCCESS;
@@ -101,34 +101,37 @@ function ldap_simple_search_userdn($rcmail, $ds)
if (!ldap_bind($ds, $rcmail->config->get('password_ldap_searchDN'), $rcmail->config->get('password_ldap_searchPW'))) {
return false;
}
-
+
/* Search for the DN */
if (!$sr = ldap_search($ds, $rcmail->config->get('password_ldap_search_base'), ldap_simple_substitute_vars($rcmail->config->get('password_ldap_search_filter')))) {
return false;
}
-
+
/* If no or more entries were found, return false */
if (ldap_count_entries($ds, $sr) != 1) {
return false;
}
-
+
return ldap_get_dn($ds, ldap_first_entry($ds, $sr));
}
/**
- * Substitute %login, %name and %domain in $str
+ * Substitute %login, %name, %domain, %dc in $str
* See plugin config for details
*/
function ldap_simple_substitute_vars($str)
{
$str = str_replace('%login', $_SESSION['username'], $str);
$str = str_replace('%l', $_SESSION['username'], $str);
-
+
$parts = explode('@', $_SESSION['username']);
+
if (count($parts) == 2) {
+ $dc = 'dc='.strtr($parts[1], array('.' => ',dc=')); // hierarchal domain string
+
$str = str_replace('%name', $parts[0], $str);
- $str = str_replace('%n', $parts[0], $str);
-
+ $str = str_replace('%n', $parts[0], $str);
+ $str = str_replace('%dc', $dc, $str);
$str = str_replace('%domain', $parts[1], $str);
$str = str_replace('%d', $parts[1], $str);
}
@@ -228,6 +231,6 @@ function ldap_simple_random_salt($length)
while (strlen($str) < $length) {
$str .= substr($possible, (rand() % strlen($possible)), 1);
}
-
+
return $str;
}
diff --git a/plugins/password/drivers/sql.php b/plugins/password/drivers/sql.php
index 70e564396..33469ec62 100644
--- a/plugins/password/drivers/sql.php
+++ b/plugins/password/drivers/sql.php
@@ -33,7 +33,7 @@ function password_save($curpass, $passwd)
if ($err = $db->is_error())
return PASSWORD_ERROR;
-
+
// crypted password
if (strpos($sql, '%c') !== FALSE) {
$salt = '';
@@ -56,7 +56,11 @@ function password_save($curpass, $passwd)
$dovecotpw = 'dovecotpw';
if (!($method = $rcmail->config->get('password_dovecotpw_method')))
$method = 'CRAM-MD5';
- $tmpfile = tempnam('/tmp', 'roundcube-');
+
+ // use common temp dir
+ $tmp_dir = $rcmail->config->get('temp_dir');
+ $tmpfile = tempnam($tmp_dir, 'roundcube-');
+
$pipe = popen("'$dovecotpw' -s '$method' > '$tmpfile'", "w");
if (!$pipe) {
unlink($tmpfile);
diff --git a/plugins/password/package.xml b/plugins/password/package.xml
index 1fe49fb74..381783b97 100644
--- a/plugins/password/package.xml
+++ b/plugins/password/package.xml
@@ -29,6 +29,10 @@
<notes>
- hMail driver: add username_domain detection (#1487100)
- hMail driver: HTML tags in logged messages should be stripped off (#1487099)
+- Chpasswd driver: add newline at end of input to chpasswd binary (#1487141)
+- Fix usage of configured temp_dir instead of /tmp (#1487447)
+- ldap_simple driver: fix parse error
+- ldap/ldap_simple drivers: support %dc variable in config
</notes>
<contents>
<dir baseinstalldir="/" name="/">
diff --git a/program/include/iniset.php b/program/include/iniset.php
index a48ca9edf..8ccef8a7d 100755
--- a/program/include/iniset.php
+++ b/program/include/iniset.php
@@ -36,7 +36,7 @@ foreach ($crit_opts as $optname => $optval) {
}
// application constants
-define('RCMAIL_VERSION', '0.5-beta');
+define('RCMAIL_VERSION', '0.5-rc');
define('RCMAIL_CHARSET', 'UTF-8');
define('JS_OBJECT_NAME', 'rcmail');
define('RCMAIL_START', microtime(true));
diff --git a/program/include/main.inc b/program/include/main.inc
index 7ea4ae20f..b61f8aea2 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -1193,21 +1193,33 @@ function rcmail_log_login()
if (!$RCMAIL->config->get('log_logins') || !$RCMAIL->user)
return;
- $address = $_SERVER['REMOTE_ADDR'];
- // append the NGINX X-Real-IP header, if set
- if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
- $remote_ip[] = 'X-Real-IP: ' . $_SERVER['HTTP_X_REAL_IP'];
- }
- // append the X-Forwarded-For header, if set
- if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $remote_ip[] = 'X-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
- }
+ write_log('userlogins', sprintf('Successful login for %s (ID: %d) from %s',
+ $RCMAIL->user->get_username(), $RCMAIL->user->ID, rcmail_remote_ip()));
+}
- if (!empty($remote_ip))
- $address .= '(' . implode(',', $remote_ip) . ')';
- write_log('userlogins', sprintf('Successful login for %s (ID: %d) from %s',
- $RCMAIL->user->get_username(), $RCMAIL->user->ID, $address));
+/**
+ * Returns remote IP address and forwarded addresses if found
+ *
+ * @return string Remote IP address(es)
+ */
+function rcmail_remote_ip()
+{
+ $address = $_SERVER['REMOTE_ADDR'];
+
+ // append the NGINX X-Real-IP header, if set
+ if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
+ $remote_ip[] = 'X-Real-IP: ' . $_SERVER['HTTP_X_REAL_IP'];
+ }
+ // append the X-Forwarded-For header, if set
+ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $remote_ip[] = 'X-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
+ }
+
+ if (!empty($remote_ip))
+ $address .= '(' . implode(',', $remote_ip) . ')';
+
+ return $address;
}
@@ -1219,7 +1231,7 @@ function rcube_timer()
{
return microtime(true);
}
-
+
/**
* @access private
@@ -1314,8 +1326,13 @@ function rcmail_mailbox_select($p = array())
$p += array('maxlength' => 100, 'realnames' => false);
$a_mailboxes = array();
-
- foreach ($RCMAIL->imap->list_mailboxes() as $folder)
+
+ if ($p['unsubscribed'])
+ $list = $RCMAIL->imap->list_unsubscribed();
+ else
+ $list = $RCMAIL->imap->list_mailboxes();
+
+ foreach ($list as $folder)
if (empty($p['exceptions']) || !in_array($folder, $p['exceptions']))
rcmail_build_folder_tree($a_mailboxes, $folder, $RCMAIL->imap->get_hierarchy_delimiter());
@@ -1551,6 +1568,97 @@ function rcmail_localize_foldername($name)
}
+function rcmail_quota_display($attrib)
+{
+ global $OUTPUT;
+
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmquotadisplay';
+
+ if(isset($attrib['display']))
+ $_SESSION['quota_display'] = $attrib['display'];
+
+ $OUTPUT->add_gui_object('quotadisplay', $attrib['id']);
+
+ $quota = rcmail_quota_content($attrib);
+
+ $OUTPUT->add_script('$(document).ready(function(){
+ rcmail.set_quota('.json_serialize($quota).')});', 'foot');
+
+ return html::span($attrib, '');
+}
+
+
+function rcmail_quota_content($attrib=NULL)
+{
+ global $RCMAIL;
+
+ $quota = $RCMAIL->imap->get_quota();
+ $quota = $RCMAIL->plugins->exec_hook('quota', $quota);
+
+ $quota_result = (array) $quota;
+ $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
+
+ if (!$quota['total'] && $RCMAIL->config->get('quota_zero_as_unlimited')) {
+ $quota_result['title'] = rcube_label('unlimited');
+ $quota_result['percent'] = 0;
+ }
+ else if ($quota['total']) {
+ if (!isset($quota['percent']))
+ $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100));
+
+ $title = sprintf('%s / %s (%.0f%%)',
+ show_bytes($quota['used'] * 1024), show_bytes($quota['total'] * 1024),
+ $quota_result['percent']);
+
+ $quota_result['title'] = $title;
+
+ if ($attrib['width'])
+ $quota_result['width'] = $attrib['width'];
+ if ($attrib['height'])
+ $quota_result['height'] = $attrib['height'];
+ }
+ else {
+ $quota_result['title'] = rcube_label('unknown');
+ $quota_result['percent'] = 0;
+ }
+
+ return $quota_result;
+}
+
+
+/**
+ * Outputs error message according to server error/response codes
+ *
+ * @param string Fallback message label
+ * @param string Fallback message label arguments
+ *
+ * @return void
+ */
+function rcmail_display_server_error($fallback=null, $fallback_args=null)
+{
+ global $RCMAIL;
+
+ $err_code = $RCMAIL->imap->get_error_code();
+ $res_code = $RCMAIL->imap->get_response_code();
+
+ if ($res_code == rcube_imap::NOPERM) {
+ $RCMAIL->output->show_message('errornoperm', 'error');
+ }
+ else if ($res_code == rcube_imap::READONLY) {
+ $RCMAIL->output->show_message('errorreadonly', 'error');
+ }
+ else if ($err_code && ($err_str = $RCMAIL->imap->get_error_str())) {
+ $RCMAIL->output->show_message('servererrormsg', 'error', array('msg' => $err_str));
+ }
+ else if ($fallback) {
+ $RCMAIL->output->show_message($fallback, 'error', $fallback_args);
+ }
+
+ return true;
+}
+
+
/**
* Output HTML editor scripts
*
@@ -1583,6 +1691,43 @@ function rcube_html_editor($mode='')
/**
+ * Replaces TinyMCE's emoticon images with plain-text representation
+ *
+ * @param string HTML content
+ * @return string HTML content
+ */
+function rcmail_replace_emoticons($html)
+{
+ $emoticons = array(
+ '8-)' => 'smiley-cool',
+ ':-#' => 'smiley-foot-in-mouth',
+ ':-*' => 'smiley-kiss',
+ ':-X' => 'smiley-sealed',
+ ':-P' => 'smiley-tongue-out',
+ ':-@' => 'smiley-yell',
+ ":'(" => 'smiley-cry',
+ ':-(' => 'smiley-frown',
+ ':-D' => 'smiley-laughing',
+ ':-)' => 'smiley-smile',
+ ':-S' => 'smiley-undecided',
+ ':-$' => 'smiley-embarassed',
+ 'O:-)' => 'smiley-innocent',
+ ':-|' => 'smiley-money-mouth',
+ ':-O' => 'smiley-surprised',
+ ';-)' => 'smiley-wink',
+ );
+
+ foreach ($emoticons as $idx => $file) {
+ // <img title="Cry" src="http://.../program/js/tiny_mce/plugins/emotions/img/smiley-cry.gif" border="0" alt="Cry" />
+ $search[] = '/<img title="[a-z ]+" src="https?:\/\/[a-z0-9_.\/-]+\/tiny_mce\/plugins\/emotions\/img\/'.$file.'.gif"[^>]+\/>/i';
+ $replace[] = $idx;
+ }
+
+ return preg_replace($search, $replace, $html);
+}
+
+
+/**
* Check if working in SSL mode
*
* @param integer HTTPS port number
@@ -1817,3 +1962,4 @@ function log_bug($arg_arr)
flush();
}
}
+
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index e76b1420a..0eecd8ddb 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -678,10 +678,16 @@ class rcmail
$username .= '@'.rcube_parse_host($config['username_domain']);
}
+ // Convert username to lowercase. If IMAP backend
+ // is case-insensitive we need to store always the same username (#1487113)
+ if ($config['login_lc']) {
+ $username = mb_strtolower($username);
+ }
+
// try to resolve email address from virtuser table
- if (strpos($username, '@'))
- if ($virtuser = rcube_user::email2user($username))
- $username = $virtuser;
+ if (strpos($username, '@') && ($virtuser = rcube_user::email2user($username))) {
+ $username = $virtuser;
+ }
// Here we need IDNA ASCII
// Only rcube_contacts class is using domain names in Unicode
@@ -704,8 +710,14 @@ class rcmail
if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) {
// try with lowercase
$username_lc = mb_strtolower($username);
- if ($username_lc != $username && ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl)))
- $username = $username_lc;
+ if ($username_lc != $username) {
+ // try to find user record again -> overwrite username
+ if (!$user && ($user = rcube_user::query($username_lc, $host)))
+ $username_lc = $user->data['username'];
+
+ if ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl))
+ $username = $username_lc;
+ }
}
// exit if IMAP login failed
@@ -1203,8 +1215,14 @@ class rcmail
if (function_exists('mcrypt_module_open') &&
($td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_CBC, "")))
{
- $iv = substr($cipher, 0, mcrypt_enc_get_iv_size($td));
- $cipher = substr($cipher, mcrypt_enc_get_iv_size($td));
+ $iv_size = mcrypt_enc_get_iv_size($td);
+ $iv = substr($cipher, 0, $iv_size);
+
+ // session corruption? (#1485970)
+ if (strlen($iv) < $iv_size)
+ return '';
+
+ $cipher = substr($cipher, $iv_size);
mcrypt_generic_init($td, $this->config->get_crypto_key($key), $iv);
$clear = mdecrypt_generic($td, $cipher);
mcrypt_generic_deinit($td);
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 212e8865e..5715459a8 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -100,6 +100,16 @@ class rcube_imap
'RETURN-PATH',
);
+ const UNKNOWN = 0;
+ const NOPERM = 1;
+ const READONLY = 2;
+ const TRYCREATE = 3;
+ const INUSE = 4;
+ const OVERQUOTA = 5;
+ const ALREADYEXISTS = 6;
+ const NONEXISTENT = 7;
+ const CONTACTADMIN = 8;
+
/**
* Object constructor
@@ -156,21 +166,20 @@ class rcube_imap
$this->ssl = $use_ssl;
if ($this->conn->connected()) {
- // print trace messages
- if ($this->conn->message && ($this->debug_level & 8)) {
- console($this->conn->message);
- }
// get namespace and delimiter
$this->set_env();
-
return true;
}
// write error log
else if ($this->conn->error) {
- if ($pass && $user)
+ if ($pass && $user) {
+ $message = sprintf("Login failed for %s from %s. %s",
+ $user, rcmail_remote_ip(), $this->conn->error);
+
raise_error(array('code' => 403, 'type' => 'imap',
'file' => __FILE__, 'line' => __LINE__,
- 'message' => $this->conn->error), true, false);
+ 'message' => $message), true, false);
+ }
}
return false;
@@ -185,7 +194,7 @@ class rcube_imap
*/
function close()
{
- $this->conn->close();
+ $this->conn->closeConnection();
$this->write_cache();
}
@@ -198,11 +207,11 @@ class rcube_imap
*/
function reconnect()
{
- $this->close();
- $this->connect($this->host, $this->user, $this->pass, $this->port, $this->ssl);
+ $this->conn->closeConnection();
+ $connected = $this->connect($this->host, $this->user, $this->pass, $this->port, $this->ssl);
// issue SELECT command to restore connection status
- if ($this->mailbox)
+ if ($connected && strlen($this->mailbox))
$this->conn->select($this->mailbox);
}
@@ -225,7 +234,51 @@ class rcube_imap
*/
function get_error_str()
{
- return ($this->conn) ? $this->conn->error : '';
+ return ($this->conn) ? $this->conn->error : null;
+ }
+
+
+ /**
+ * Returns code of last command response
+ *
+ * @return int Response code
+ */
+ function get_response_code()
+ {
+ if (!$this->conn)
+ return self::UNKNOWN;
+
+ switch ($this->conn->resultcode) {
+ case 'NOPERM':
+ return self::NOPERM;
+ case 'READ-ONLY':
+ return self::READONLY;
+ case 'TRYCREATE':
+ return self::TRYCREATE;
+ case 'INUSE':
+ return self::INUSE;
+ case 'OVERQUOTA':
+ return self::OVERQUOTA;
+ case 'ALREADYEXISTS':
+ return self::ALREADYEXISTS;
+ case 'NONEXISTENT':
+ return self::NONEXISTENT;
+ case 'CONTACTADMIN':
+ return self::CONTACTADMIN;
+ default:
+ return self::UNKNOWN;
+ }
+ }
+
+
+ /**
+ * Returns last command response
+ *
+ * @return string Response
+ */
+ function get_response_str()
+ {
+ return ($this->conn) ? $this->conn->result : null;
}
@@ -300,9 +353,9 @@ class rcube_imap
* @param string $mailbox Mailbox/Folder name
* @access public
*/
- function select_mailbox($mailbox)
+ function select_mailbox($mailbox=null)
{
- $mailbox = $this->mod_mailbox($mailbox);
+ $mailbox = strlen($mailbox) ? $this->mod_mailbox($mailbox) : $this->mailbox;
$selected = $this->conn->select($mailbox);
@@ -493,56 +546,56 @@ class rcube_imap
$imap_shared = $config->get('imap_ns_shared');
$imap_delimiter = $config->get('imap_delimiter');
- if ($imap_delimiter) {
- $this->delimiter = $imap_delimiter;
- }
-
if (!$this->conn)
return;
$ns = $this->conn->getNamespace();
- // NAMESPACE supported
+ // Set namespaces (NAMESPACE supported)
if (is_array($ns)) {
$this->namespace = $ns;
-
- if (empty($this->delimiter))
- $this->delimiter = $ns['personal'][0][1];
- if (empty($this->delimiter))
- $this->delimiter = $this->conn->getHierarchyDelimiter();
- if (empty($this->delimiter))
- $this->delimiter = '/';
}
- // not supported, get namespace from config
- else if ($imap_personal !== null || $imap_shared !== null || $imap_other !== null) {
- if (empty($this->delimiter))
- $this->delimiter = $this->conn->getHierarchyDelimiter();
- if (empty($this->delimiter))
- $this->delimiter = '/';
-
+ else {
$this->namespace = array(
'personal' => NULL,
'other' => NULL,
'shared' => NULL,
);
+ }
- if ($imap_personal !== null) {
- foreach ((array)$imap_personal as $dir) {
- $this->namespace['personal'][] = array($dir, $this->delimiter);
- }
+ if ($imap_delimiter) {
+ $this->delimiter = $imap_delimiter;
+ }
+ if (empty($this->delimiter)) {
+ $this->delimiter = $this->namespace['personal'][0][1];
+ }
+ if (empty($this->delimiter)) {
+ $this->delimiter = $this->conn->getHierarchyDelimiter();
+ }
+ if (empty($this->delimiter)) {
+ $this->delimiter = '/';
+ }
+
+ // Overwrite namespaces
+ if ($imap_personal !== null) {
+ $this->namespace['personal'] = NULL;
+ foreach ((array)$imap_personal as $dir) {
+ $this->namespace['personal'][] = array($dir, $this->delimiter);
}
- if ($imap_other !== null) {
- foreach ((array)$imap_other as $dir) {
- if ($dir) {
- $this->namespace['other'][] = array($dir, $this->delimiter);
- }
+ }
+ if ($imap_other !== null) {
+ $this->namespace['other'] = NULL;
+ foreach ((array)$imap_other as $dir) {
+ if ($dir) {
+ $this->namespace['other'][] = array($dir, $this->delimiter);
}
}
- if ($imap_shared !== null) {
- foreach ((array)$imap_shared as $dir) {
- if ($dir) {
- $this->namespace['shared'][] = array($dir, $this->delimiter);
- }
+ }
+ if ($imap_shared !== null) {
+ $this->namespace['shared'] = NULL;
+ foreach ((array)$imap_shared as $dir) {
+ if ($dir) {
+ $this->namespace['shared'][] = array($dir, $this->delimiter);
}
}
}
@@ -617,7 +670,7 @@ class rcube_imap
}
// RECENT count is fetched a bit different
else if ($mode == 'RECENT') {
- $count = $this->conn->checkForRecent($mailbox);
+ $count = $this->conn->countRecent($mailbox);
}
// use SEARCH for message counting
else if ($this->skip_deleted) {
@@ -2376,20 +2429,21 @@ class rcube_imap
// TODO: Add caching for message parts
- if (!$part) $part = 'TEXT';
+ if (!$part) {
+ $part = 'TEXT';
+ }
$body = $this->conn->handlePartBody($this->mailbox, $uid, true, $part,
$o_part->encoding, $print, $fp);
- if ($fp || $print)
+ if ($fp || $print) {
return true;
+ }
- // convert charset (if text or message part)
- if ($body && ($o_part->ctype_primary == 'text' || $o_part->ctype_primary == 'message')) {
- // assume default if no charset specified
- if (empty($o_part->charset) || strtolower($o_part->charset) == 'us-ascii')
- $o_part->charset = $this->default_charset;
-
+ // convert charset (if text or message part) and part's charset is specified
+ if ($body && $o_part->charset
+ && preg_match('/^(text|message)$/', $o_part->ctype_primary)
+ ) {
$body = rcube_charset_convert($body, $o_part->charset);
}
@@ -2553,6 +2607,9 @@ class rcube_imap
$to_mbox = $this->mod_mailbox($to_mbox);
$from_mbox = strlen($from_mbox) ? $this->mod_mailbox($from_mbox) : $this->mailbox;
+ if ($to_mbox === $from_mbox)
+ return false;
+
list($uids, $all_mode) = $this->_parse_uids($uids, $from_mbox);
// exit if no message uids are specified
@@ -2771,7 +2828,23 @@ class rcube_imap
else
$a_uids = NULL;
- $result = $this->conn->expunge($mailbox, $a_uids);
+ // force mailbox selection and check if mailbox is writeable
+ // to prevent a situation when CLOSE is executed on closed
+ // or EXPUNGE on read-only mailbox
+ $result = $this->conn->select($mailbox);
+ if (!$result) {
+ return false;
+ }
+ if (!$this->conn->data['READ-WRITE']) {
+ $this->conn->setError(rcube_imap_generic::ERROR_READONLY, "Mailbox is read-only");
+ return false;
+ }
+
+ // CLOSE(+SELECT) should be faster than EXPUNGE
+ if (empty($a_uids) || $a_uids == '1:*')
+ $result = $this->conn->close();
+ else
+ $result = $this->conn->expunge($mailbox, $a_uids);
if ($result && $clear_cache) {
$this->clear_message_cache($mailbox.'.msg');
@@ -3009,6 +3082,26 @@ class rcube_imap
/**
+ * Get mailbox size (size of all messages in a mailbox)
+ *
+ * @param string $name Mailbox name
+ * @return int Mailbox size in bytes, False on error
+ */
+ function get_mailbox_size($name)
+ {
+ $name = $this->mod_mailbox($name);
+
+ // @TODO: could we try to use QUOTA here?
+ $result = $this->conn->fetchHeaderIndex($name, '1:*', 'SIZE', false);
+
+ if (is_array($result))
+ $result = array_sum($result);
+
+ return $result;
+ }
+
+
+ /**
* Subscribe to a specific mailbox(es)
*
* @param array $a_mboxes Mailbox name(s)
@@ -3043,130 +3136,120 @@ class rcube_imap
/**
* Create a new mailbox on the server and register it in local cache
*
- * @param string $name New mailbox name (as utf-7 string)
+ * @param string $name New mailbox name
* @param boolean $subscribe True if the new mailbox should be subscribed
- * @param string Name of the created mailbox, false on error
+ * @param boolean True on success
*/
function create_mailbox($name, $subscribe=false)
{
- $result = false;
-
- // reduce mailbox name to 100 chars
- $name = substr($name, 0, 100);
+ $result = false;
$abs_name = $this->mod_mailbox($name);
- $result = $this->conn->createFolder($abs_name);
+ $result = $this->conn->createFolder($abs_name);
// try to subscribe it
if ($result && $subscribe)
$this->subscribe($name);
- return $result ? $name : false;
+ return $result;
}
/**
* Set a new name to an existing mailbox
*
- * @param string $mbox_name Mailbox to rename (as utf-7 string)
- * @param string $new_name New mailbox name (as utf-7 string)
- * @return string Name of the renames mailbox, False on error
+ * @param string $mbox_name Mailbox to rename
+ * @param string $new_name New mailbox name
+ *
+ * @return boolean True on success
*/
function rename_mailbox($mbox_name, $new_name)
{
$result = false;
- // encode mailbox name and reduce it to 100 chars
- $name = substr($new_name, 0, 100);
-
// make absolute path
- $mailbox = $this->mod_mailbox($mbox_name);
- $abs_name = $this->mod_mailbox($name);
-
- // check if mailbox is subscribed
- $a_subscribed = $this->_list_mailboxes();
- $subscribed = in_array($mailbox, $a_subscribed);
+ $mailbox = $this->mod_mailbox($mbox_name);
+ $abs_name = $this->mod_mailbox($new_name);
+ $delm = $this->get_hierarchy_delimiter();
- // unsubscribe folder
- if ($subscribed)
- $this->conn->unsubscribe($mailbox);
+ // get list of subscribed folders
+ if ((strpos($mailbox, '%') === false) && (strpos($mailbox, '*') === false)) {
+ $a_subscribed = $this->_list_mailboxes('', $mbox_name . $delm . '*');
+ $subscribed = $this->mailbox_exists($mbox_name, true);
+ }
+ else {
+ $a_subscribed = $this->_list_mailboxes();
+ $subscribed = in_array($mailbox, $a_subscribed);
+ }
if (strlen($abs_name))
$result = $this->conn->renameFolder($mailbox, $abs_name);
if ($result) {
- $delm = $this->get_hierarchy_delimiter();
+ // unsubscribe the old folder, subscribe the new one
+ if ($subscribed) {
+ $this->conn->unsubscribe($mailbox);
+ $this->conn->subscribe($abs_name);
+ }
// check if mailbox children are subscribed
- foreach ($a_subscribed as $c_subscribed)
+ foreach ($a_subscribed as $c_subscribed) {
if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_subscribed)) {
$this->conn->unsubscribe($c_subscribed);
$this->conn->subscribe(preg_replace('/^'.preg_quote($mailbox, '/').'/',
$abs_name, $c_subscribed));
}
+ }
// clear cache
$this->clear_message_cache($mailbox.'.msg');
$this->clear_cache('mailboxes');
}
- // try to subscribe it
- if ($result && $subscribed)
- $this->conn->subscribe($abs_name);
-
- return $result ? $name : false;
+ return $result;
}
/**
- * Remove mailboxes from server
+ * Remove mailbox from server
+ *
+ * @param string $mbox_name Mailbox name
*
- * @param string|array $mbox_name sMailbox name(s) string/array
* @return boolean True on success
*/
function delete_mailbox($mbox_name)
{
- $deleted = false;
+ $result = false;
+ $mailbox = $this->mod_mailbox($mbox_name);
+ $delm = $this->get_hierarchy_delimiter();
- if (is_array($mbox_name))
- $a_mboxes = $mbox_name;
- else if (is_string($mbox_name) && strlen($mbox_name))
- $a_mboxes = explode(',', $mbox_name);
+ // get list of folders
+ if ((strpos($mailbox, '%') === false) && (strpos($mailbox, '*') === false))
+ $sub_mboxes = $this->list_unsubscribed('', $mailbox . $delm . '*');
+ else
+ $sub_mboxes = $this->list_unsubscribed();
- if (is_array($a_mboxes)) {
- $delimiter = $this->get_hierarchy_delimiter();
-
- foreach ($a_mboxes as $mbox_name) {
- $mailbox = $this->mod_mailbox($mbox_name);
- $sub_mboxes = $this->conn->listMailboxes('', $mbox_name . $delimiter . '*');
+ // send delete command to server
+ $result = $this->conn->deleteFolder($mailbox);
- // unsubscribe mailbox before deleting
- $this->conn->unsubscribe($mailbox);
+ if ($result) {
+ // unsubscribe mailbox
+ $this->conn->unsubscribe($mailbox);
- // send delete command to server
- $result = $this->conn->deleteFolder($mailbox);
- if ($result) {
- $deleted = true;
- $this->clear_message_cache($mailbox.'.msg');
- }
-
- foreach ($sub_mboxes as $c_mbox) {
- if ($c_mbox != 'INBOX') {
- $this->conn->unsubscribe($c_mbox);
- $result = $this->conn->deleteFolder($c_mbox);
- if ($result) {
- $deleted = true;
- $this->clear_message_cache($c_mbox.'.msg');
- }
+ foreach ($sub_mboxes as $c_mbox) {
+ if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_mbox)) {
+ $this->conn->unsubscribe($c_mbox);
+ if ($this->conn->deleteFolder($c_mbox)) {
+ $this->clear_message_cache($c_mbox.'.msg');
}
}
}
- }
- // clear mailboxlist cache
- if ($deleted)
+ // clear mailbox-related cache
+ $this->clear_message_cache($mailbox.'.msg');
$this->clear_cache('mailboxes');
+ }
- return $deleted;
+ return $result;
}
@@ -3208,7 +3291,7 @@ class rcube_imap
}
else {
$a_folders = $this->conn->listMailboxes('', $mbox);
- }
+ }
if (is_array($a_folders) && in_array($mbox, $a_folders)) {
$this->icache[$key][] = $mbox;
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 16c9d4a64..e5e06c440 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -1,6 +1,6 @@
<?php
-/*
+/**
+-----------------------------------------------------------------------+
| program/include/rcube_imap_generic.php |
| |
@@ -29,45 +29,45 @@
/**
* Struct representing an e-mail message header
*
- * @package Mail
- * @author Aleksander Machniak <alec@alec.pl>
+ * @package Mail
+ * @author Aleksander Machniak <alec@alec.pl>
*/
class rcube_mail_header
{
- public $id;
- public $uid;
- public $subject;
- public $from;
- public $to;
- public $cc;
- public $replyto;
- public $in_reply_to;
- public $date;
- public $messageID;
- public $size;
- public $encoding;
- public $charset;
- public $ctype;
- public $flags;
- public $timestamp;
- public $body_structure;
- public $internaldate;
- public $references;
- public $priority;
- public $mdn_to;
- public $mdn_sent = false;
- public $is_draft = false;
- public $seen = false;
- public $deleted = false;
- public $recent = false;
- public $answered = false;
- public $forwarded = false;
- public $junk = false;
- public $flagged = false;
- public $has_children = false;
- public $depth = 0;
- public $unread_children = 0;
- public $others = array();
+ public $id;
+ public $uid;
+ public $subject;
+ public $from;
+ public $to;
+ public $cc;
+ public $replyto;
+ public $in_reply_to;
+ public $date;
+ public $messageID;
+ public $size;
+ public $encoding;
+ public $charset;
+ public $ctype;
+ public $flags;
+ public $timestamp;
+ public $body_structure;
+ public $internaldate;
+ public $references;
+ public $priority;
+ public $mdn_to;
+ public $mdn_sent = false;
+ public $is_draft = false;
+ public $seen = false;
+ public $deleted = false;
+ public $recent = false;
+ public $answered = false;
+ public $forwarded = false;
+ public $junk = false;
+ public $flagged = false;
+ public $has_children = false;
+ public $depth = 0;
+ public $unread_children = 0;
+ public $others = array();
}
// For backward compatibility with cached messages (#1486602)
@@ -78,14 +78,15 @@ class iilBasicHeader extends rcube_mail_header
/**
* PHP based wrapper class to connect to an IMAP server
*
- * @package Mail
- * @author Aleksander Machniak <alec@alec.pl>
+ * @package Mail
+ * @author Aleksander Machniak <alec@alec.pl>
*/
class rcube_imap_generic
{
public $error;
public $errornum;
- public $message;
+ public $result;
+ public $resultcode;
public $data = array();
public $flags = array(
'SEEN' => '\\Seen',
@@ -100,11 +101,11 @@ class rcube_imap_generic
);
private $selected;
- private $fp;
- private $host;
- private $logged = false;
- private $capability = array();
- private $capability_readed = false;
+ private $fp;
+ private $host;
+ private $logged = false;
+ private $capability = array();
+ private $capability_readed = false;
private $prefs;
private $cmd_tag;
private $cmd_num = 0;
@@ -113,8 +114,9 @@ class rcube_imap_generic
const ERROR_NO = -1;
const ERROR_BAD = -2;
const ERROR_BYE = -3;
- const ERROR_COMMAND = -5;
const ERROR_UNKNOWN = -4;
+ const ERROR_COMMAND = -5;
+ const ERROR_READONLY = -6;
const COMMAND_NORESPONSE = 1;
const COMMAND_CAPABILITY = 2;
@@ -140,16 +142,16 @@ class rcube_imap_generic
if (!$this->fp)
return false;
- if (!empty($this->prefs['debug_mode'])) {
- write_log('imap', 'C: '. rtrim($string));
- }
+ if (!empty($this->prefs['debug_mode'])) {
+ write_log('imap', 'C: '. rtrim($string));
+ }
$res = fwrite($this->fp, $string . ($endln ? "\r\n" : ''));
- if ($res === false) {
- @fclose($this->fp);
- $this->fp = null;
- }
+ if ($res === false) {
+ @fclose($this->fp);
+ $this->fp = null;
+ }
return $res;
}
@@ -168,161 +170,174 @@ class rcube_imap_generic
if (!$this->fp)
return false;
- if ($endln)
- $string .= "\r\n";
+ if ($endln)
+ $string .= "\r\n";
- $res = 0;
- if ($parts = preg_split('/(\{[0-9]+\}\r\n)/m', $string, -1, PREG_SPLIT_DELIM_CAPTURE)) {
- for ($i=0, $cnt=count($parts); $i<$cnt; $i++) {
- if (preg_match('/^\{[0-9]+\}\r\n$/', $parts[$i+1])) {
+ $res = 0;
+ if ($parts = preg_split('/(\{[0-9]+\}\r\n)/m', $string, -1, PREG_SPLIT_DELIM_CAPTURE)) {
+ for ($i=0, $cnt=count($parts); $i<$cnt; $i++) {
+ if (preg_match('/^\{[0-9]+\}\r\n$/', $parts[$i+1])) {
// LITERAL+ support
if ($this->prefs['literal+'])
$parts[$i+1] = preg_replace('/([0-9]+)/', '\\1+', $parts[$i+1]);
- $bytes = $this->putLine($parts[$i].$parts[$i+1], false);
+ $bytes = $this->putLine($parts[$i].$parts[$i+1], false);
if ($bytes === false)
return false;
$res += $bytes;
// don't wait if server supports LITERAL+ capability
if (!$this->prefs['literal+']) {
- $line = $this->readLine(1000);
- // handle error in command
- if ($line[0] != '+')
- return false;
- }
+ $line = $this->readLine(1000);
+ // handle error in command
+ if ($line[0] != '+')
+ return false;
+ }
$i++;
- }
- else {
- $bytes = $this->putLine($parts[$i], false);
+ }
+ else {
+ $bytes = $this->putLine($parts[$i], false);
if ($bytes === false)
return false;
$res += $bytes;
}
- }
- }
+ }
+ }
- return $res;
+ return $res;
}
function readLine($size=1024)
{
- $line = '';
+ $line = '';
- if (!$this->fp) {
- return NULL;
- }
+ if (!$this->fp) {
+ return NULL;
+ }
- if (!$size) {
- $size = 1024;
- }
+ if (!$size) {
+ $size = 1024;
+ }
- do {
- if (feof($this->fp)) {
- return $line ? $line : NULL;
- }
+ do {
+ if (feof($this->fp)) {
+ return $line ? $line : NULL;
+ }
- $buffer = fgets($this->fp, $size);
+ $buffer = fgets($this->fp, $size);
- if ($buffer === false) {
- @fclose($this->fp);
- $this->fp = null;
- break;
- }
- if (!empty($this->prefs['debug_mode'])) {
- write_log('imap', 'S: '. rtrim($buffer));
- }
+ if ($buffer === false) {
+ @fclose($this->fp);
+ $this->fp = null;
+ break;
+ }
+ if (!empty($this->prefs['debug_mode'])) {
+ write_log('imap', 'S: '. rtrim($buffer));
+ }
$line .= $buffer;
- } while ($buffer[strlen($buffer)-1] != "\n");
+ } while ($buffer[strlen($buffer)-1] != "\n");
- return $line;
+ return $line;
}
function multLine($line, $escape=false)
{
- $line = rtrim($line);
- if (preg_match('/\{[0-9]+\}$/', $line)) {
- $out = '';
+ $line = rtrim($line);
+ if (preg_match('/\{[0-9]+\}$/', $line)) {
+ $out = '';
- preg_match_all('/(.*)\{([0-9]+)\}$/', $line, $a);
- $bytes = $a[2][0];
- while (strlen($out) < $bytes) {
- $line = $this->readBytes($bytes);
- if ($line === NULL)
- break;
- $out .= $line;
- }
+ preg_match_all('/(.*)\{([0-9]+)\}$/', $line, $a);
+ $bytes = $a[2][0];
+ while (strlen($out) < $bytes) {
+ $line = $this->readBytes($bytes);
+ if ($line === NULL)
+ break;
+ $out .= $line;
+ }
- $line = $a[1][0] . ($escape ? $this->escape($out) : $out);
- }
+ $line = $a[1][0] . ($escape ? $this->escape($out) : $out);
+ }
return $line;
}
function readBytes($bytes)
{
- $data = '';
- $len = 0;
- while ($len < $bytes && !feof($this->fp))
- {
- $d = fread($this->fp, $bytes-$len);
- if (!empty($this->prefs['debug_mode'])) {
- write_log('imap', 'S: '. $d);
+ $data = '';
+ $len = 0;
+ while ($len < $bytes && !feof($this->fp))
+ {
+ $d = fread($this->fp, $bytes-$len);
+ if (!empty($this->prefs['debug_mode'])) {
+ write_log('imap', 'S: '. $d);
}
$data .= $d;
- $data_len = strlen($data);
- if ($len == $data_len) {
- break; // nothing was read -> exit to avoid apache lockups
- }
- $len = $data_len;
- }
+ $data_len = strlen($data);
+ if ($len == $data_len) {
+ break; // nothing was read -> exit to avoid apache lockups
+ }
+ $len = $data_len;
+ }
- return $data;
+ return $data;
}
- // don't use it in loops, until you exactly know what you're doing
function readReply(&$untagged=null)
{
- do {
- $line = trim($this->readLine(1024));
+ do {
+ $line = trim($this->readLine(1024));
// store untagged response lines
- if ($line[0] == '*')
+ if ($line[0] == '*')
$untagged[] = $line;
- } while ($line[0] == '*');
+ } while ($line[0] == '*');
if ($untagged)
$untagged = join("\n", $untagged);
- return $line;
+ return $line;
}
function parseResult($string, $err_prefix='')
{
- if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) {
- $res = strtoupper($matches[1]);
+ if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) {
+ $res = strtoupper($matches[1]);
$str = trim($matches[2]);
- if ($res == 'OK') {
- return $this->errornum = self::ERROR_OK;
- } else if ($res == 'NO') {
+ if ($res == 'OK') {
+ $this->errornum = self::ERROR_OK;
+ } else if ($res == 'NO') {
$this->errornum = self::ERROR_NO;
- } else if ($res == 'BAD') {
- $this->errornum = self::ERROR_BAD;
- } else if ($res == 'BYE') {
+ } else if ($res == 'BAD') {
+ $this->errornum = self::ERROR_BAD;
+ } else if ($res == 'BYE') {
@fclose($this->fp);
$this->fp = null;
- $this->errornum = self::ERROR_BYE;
- }
+ $this->errornum = self::ERROR_BYE;
+ }
+
+ if ($str) {
+ $str = trim($str);
+ // get response string and code (RFC5530)
+ if (preg_match("/^\[([a-z-]+)\]/i", $str, $m)) {
+ $this->resultcode = strtoupper($m[1]);
+ $str = trim(substr($str, strlen($m[1]) + 2));
+ }
+ else {
+ $this->resultcode = null;
+ }
+ $this->result = $str;
- if ($str)
- $this->error = $err_prefix ? $err_prefix.$str : $str;
+ if ($this->errornum != self::ERROR_OK) {
+ $this->error = $err_prefix ? $err_prefix.$str : $str;
+ }
+ }
- return $this->errornum;
- }
- return self::ERROR_UNKNOWN;
+ return $this->errornum;
+ }
+ return self::ERROR_UNKNOWN;
}
- private function setError($code, $msg='')
+ function setError($code, $msg='')
{
$this->errornum = $code;
$this->error = $msg;
@@ -331,59 +346,59 @@ class rcube_imap_generic
// check if $string starts with $match (or * BYE/BAD)
function startsWith($string, $match, $error=false, $nonempty=false)
{
- $len = strlen($match);
- if ($len == 0) {
- return false;
- }
+ $len = strlen($match);
+ if ($len == 0) {
+ return false;
+ }
if (!$this->fp) {
return true;
}
- if (strncmp($string, $match, $len) == 0) {
- return true;
- }
- if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) {
+ if (strncmp($string, $match, $len) == 0) {
+ return true;
+ }
+ if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) {
if (strtoupper($m[1]) == 'BYE') {
@fclose($this->fp);
$this->fp = null;
}
- return true;
- }
+ return true;
+ }
if ($nonempty && !strlen($string)) {
return true;
}
- return false;
+ return false;
}
function getCapability($name)
{
- if (in_array($name, $this->capability)) {
- return true;
- }
- else if ($this->capability_readed) {
- return false;
- }
+ if (in_array($name, $this->capability)) {
+ return true;
+ }
+ else if ($this->capability_readed) {
+ return false;
+ }
- // get capabilities (only once) because initial
- // optional CAPABILITY response may differ
+ // get capabilities (only once) because initial
+ // optional CAPABILITY response may differ
$result = $this->execute('CAPABILITY');
if ($result[0] == self::ERROR_OK) {
$this->parseCapability($result[1]);
}
- $this->capability_readed = true;
+ $this->capability_readed = true;
- if (in_array($name, $this->capability)) {
- return true;
- }
+ if (in_array($name, $this->capability)) {
+ return true;
+ }
- return false;
+ return false;
}
function clearCapability()
{
- $this->capability = array();
- $this->capability_readed = false;
+ $this->capability = array();
+ $this->capability_readed = false;
}
/**
@@ -401,18 +416,18 @@ class rcube_imap_generic
if ($type == 'DIGEST-MD5' && !class_exists('Auth_SASL')) {
$this->setError(self::ERROR_BYE,
"The Auth_SASL package is required for DIGEST-MD5 authentication");
- return self::ERROR_BAD;
+ return self::ERROR_BAD;
}
- $this->putLine($this->nextTag() . " AUTHENTICATE $type");
- $line = trim($this->readLine(1024));
+ $this->putLine($this->nextTag() . " AUTHENTICATE $type");
+ $line = trim($this->readReply());
- if ($line[0] == '+') {
- $challenge = substr($line, 2);
+ if ($line[0] == '+') {
+ $challenge = substr($line, 2);
}
else {
return $this->parseResult($line);
- }
+ }
if ($type == 'CRAM-MD5') {
// RFC2195: CRAM-MD5
@@ -455,10 +470,10 @@ class rcube_imap_generic
// send result
$this->putLine($reply);
- $line = $this->readLine(1024);
+ $line = trim($this->readReply());
if ($line[0] == '+') {
- $challenge = substr($line, 2);
+ $challenge = substr($line, 2);
}
else {
return $this->parseResult($line);
@@ -475,7 +490,7 @@ class rcube_imap_generic
$this->putLine('');
}
- $line = $this->readLine(1024);
+ $line = $this->readReply();
$result = $this->parseResult($line);
}
else { // PLAIN
@@ -496,29 +511,29 @@ class rcube_imap_generic
self::COMMAND_LASTLINE | self::COMMAND_CAPABILITY);
}
else {
- $this->putLine($this->nextTag() . " AUTHENTICATE PLAIN");
- $line = trim($this->readLine(1024));
+ $this->putLine($this->nextTag() . " AUTHENTICATE PLAIN");
+ $line = trim($this->readReply());
- if ($line[0] != '+') {
- return $this->parseResult($line);
- }
+ if ($line[0] != '+') {
+ return $this->parseResult($line);
+ }
// send result, get reply and process it
$this->putLine($reply);
- $line = $this->readLine(1024);
+ $line = $this->readReply();
$result = $this->parseResult($line);
}
}
if ($result == self::ERROR_OK) {
- // optional CAPABILITY response
- if ($line && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
- $this->parseCapability($matches[1], true);
- }
+ // optional CAPABILITY response
+ if ($line && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
+ $this->parseCapability($matches[1], true);
+ }
return $this->fp;
}
else {
- $this->setError($result, "Unable to authenticate user ($type): $line");
+ $this->setError($result, "AUTHENTICATE $type: $line");
}
return $result;
@@ -538,9 +553,9 @@ class rcube_imap_generic
$this->escape($user), $this->escape($password)), self::COMMAND_CAPABILITY);
// re-set capabilities list if untagged CAPABILITY response provided
- if (preg_match('/\* CAPABILITY (.+)/i', $response, $matches)) {
- $this->parseCapability($matches[1], true);
- }
+ if (preg_match('/\* CAPABILITY (.+)/i', $response, $matches)) {
+ $this->parseCapability($matches[1], true);
+ }
if ($code == self::ERROR_OK) {
return $this->fp;
@@ -556,21 +571,21 @@ class rcube_imap_generic
*/
function getHierarchyDelimiter()
{
- if ($this->prefs['delimiter']) {
- return $this->prefs['delimiter'];
- }
+ if ($this->prefs['delimiter']) {
+ return $this->prefs['delimiter'];
+ }
- // try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8)
- list($code, $response) = $this->execute('LIST',
- array($this->escape(''), $this->escape('')));
+ // try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8)
+ list($code, $response) = $this->execute('LIST',
+ array($this->escape(''), $this->escape('')));
if ($code == self::ERROR_OK) {
$args = $this->tokenizeResponse($response, 4);
$delimiter = $args[3];
- if (strlen($delimiter) > 0) {
- return ($this->prefs['delimiter'] = $delimiter);
- }
+ if (strlen($delimiter) > 0) {
+ return ($this->prefs['delimiter'] = $delimiter);
+ }
}
return NULL;
@@ -588,18 +603,18 @@ class rcube_imap_generic
}
if (!$this->getCapability('NAMESPACE')) {
- return self::ERROR_BAD;
- }
+ return self::ERROR_BAD;
+ }
- list($code, $response) = $this->execute('NAMESPACE');
+ list($code, $response) = $this->execute('NAMESPACE');
- if ($code == self::ERROR_OK && preg_match('/^\* NAMESPACE /', $response)) {
- $data = $this->tokenizeResponse(substr($response, 11));
- }
+ if ($code == self::ERROR_OK && preg_match('/^\* NAMESPACE /', $response)) {
+ $data = $this->tokenizeResponse(substr($response, 11));
+ }
- if (!is_array($data)) {
- return $code;
- }
+ if (!is_array($data)) {
+ return $code;
+ }
$this->prefs['namespace'] = array(
'personal' => $data[0],
@@ -612,134 +627,132 @@ class rcube_imap_generic
function connect($host, $user, $password, $options=null)
{
- // set options
- if (is_array($options)) {
+ // set options
+ if (is_array($options)) {
$this->prefs = $options;
}
// set auth method
if (!empty($this->prefs['auth_method'])) {
$auth_method = strtoupper($this->prefs['auth_method']);
- } else {
- $auth_method = 'CHECK';
+ } else {
+ $auth_method = 'CHECK';
}
- $result = false;
+ $result = false;
- // initialize connection
- $this->error = '';
- $this->errornum = self::ERROR_OK;
- $this->selected = '';
- $this->user = $user;
- $this->host = $host;
+ // initialize connection
+ $this->error = '';
+ $this->errornum = self::ERROR_OK;
+ $this->selected = '';
+ $this->user = $user;
+ $this->host = $host;
$this->logged = false;
- // check input
- if (empty($host)) {
- $this->setError(self::ERROR_BAD, "Empty host");
- return false;
- }
+ // check input
+ if (empty($host)) {
+ $this->setError(self::ERROR_BAD, "Empty host");
+ return false;
+ }
if (empty($user)) {
- $this->setError(self::ERROR_NO, "Empty user");
- return false;
- }
- if (empty($password)) {
- $this->setError(self::ERROR_NO, "Empty password");
- return false;
- }
-
- if (!$this->prefs['port']) {
- $this->prefs['port'] = 143;
- }
- // check for SSL
- if ($this->prefs['ssl_mode'] && $this->prefs['ssl_mode'] != 'tls') {
- $host = $this->prefs['ssl_mode'] . '://' . $host;
- }
+ $this->setError(self::ERROR_NO, "Empty user");
+ return false;
+ }
+ if (empty($password)) {
+ $this->setError(self::ERROR_NO, "Empty password");
+ return false;
+ }
+
+ if (!$this->prefs['port']) {
+ $this->prefs['port'] = 143;
+ }
+ // check for SSL
+ if ($this->prefs['ssl_mode'] && $this->prefs['ssl_mode'] != 'tls') {
+ $host = $this->prefs['ssl_mode'] . '://' . $host;
+ }
// Connect
if ($this->prefs['timeout'] > 0)
- $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']);
- else
- $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr);
+ $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']);
+ else
+ $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr);
- if (!$this->fp) {
- $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s", $host, $this->prefs['port'], $errstr));
- return false;
- }
+ if (!$this->fp) {
+ $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s", $host, $this->prefs['port'], $errstr));
+ return false;
+ }
if ($this->prefs['timeout'] > 0)
- stream_set_timeout($this->fp, $this->prefs['timeout']);
+ stream_set_timeout($this->fp, $this->prefs['timeout']);
- $line = trim(fgets($this->fp, 8192));
+ $line = trim(fgets($this->fp, 8192));
- if ($this->prefs['debug_mode'] && $line) {
- write_log('imap', 'S: '. $line);
+ if ($this->prefs['debug_mode'] && $line) {
+ write_log('imap', 'S: '. $line);
}
- // Connected to wrong port or connection error?
- if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) {
- if ($line)
- $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $this->prefs['port'], $line);
- else
- $error = sprintf("Empty startup greeting (%s:%d)", $host, $this->prefs['port']);
-
- $this->setError(self::ERROR_BAD, $error);
- $this->close();
- return false;
- }
+ // Connected to wrong port or connection error?
+ if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) {
+ if ($line)
+ $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $this->prefs['port'], $line);
+ else
+ $error = sprintf("Empty startup greeting (%s:%d)", $host, $this->prefs['port']);
- // RFC3501 [7.1] optional CAPABILITY response
- if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
- $this->parseCapability($matches[1], true);
- }
+ $this->setError(self::ERROR_BAD, $error);
+ $this->closeConnection();
+ return false;
+ }
- $this->message = $line;
+ // RFC3501 [7.1] optional CAPABILITY response
+ if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
+ $this->parseCapability($matches[1], true);
+ }
- // TLS connection
- if ($this->prefs['ssl_mode'] == 'tls' && $this->getCapability('STARTTLS')) {
- if (version_compare(PHP_VERSION, '5.1.0', '>=')) {
- $res = $this->execute('STARTTLS');
+ // TLS connection
+ if ($this->prefs['ssl_mode'] == 'tls' && $this->getCapability('STARTTLS')) {
+ if (version_compare(PHP_VERSION, '5.1.0', '>=')) {
+ $res = $this->execute('STARTTLS');
if ($res[0] != self::ERROR_OK) {
- $this->close();
+ $this->closeConnection();
return false;
}
- if (!stream_socket_enable_crypto($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
- $this->setError(self::ERROR_BAD, "Unable to negotiate TLS");
- $this->close();
- return false;
- }
+ if (!stream_socket_enable_crypto($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
+ $this->setError(self::ERROR_BAD, "Unable to negotiate TLS");
+ $this->closeConnection();
+ return false;
+ }
- // Now we're secure, capabilities need to be reread
- $this->clearCapability();
- }
- }
+ // Now we're secure, capabilities need to be reread
+ $this->clearCapability();
+ }
+ }
- $auth_methods = array();
+ $auth_methods = array();
$result = null;
- // check for supported auth methods
- if ($auth_method == 'CHECK') {
- if ($this->getCapability('AUTH=DIGEST-MD5')) {
- $auth_methods[] = 'DIGEST-MD5';
- }
- if ($this->getCapability('AUTH=CRAM-MD5') || $this->getCapability('AUTH=CRAM_MD5')) {
- $auth_methods[] = 'CRAM-MD5';
- }
- if ($this->getCapability('AUTH=PLAIN')) {
- $auth_methods[] = 'PLAIN';
- }
+ // check for supported auth methods
+ if ($auth_method == 'CHECK') {
+ if ($this->getCapability('AUTH=DIGEST-MD5')) {
+ $auth_methods[] = 'DIGEST-MD5';
+ }
+ if ($this->getCapability('AUTH=CRAM-MD5') || $this->getCapability('AUTH=CRAM_MD5')) {
+ $auth_methods[] = 'CRAM-MD5';
+ }
+ if ($this->getCapability('AUTH=PLAIN')) {
+ $auth_methods[] = 'PLAIN';
+ }
// RFC 2595 (LOGINDISABLED) LOGIN disabled when connection is not secure
- if (!$this->getCapability('LOGINDISABLED')) {
- $auth_methods[] = 'LOGIN';
- }
- }
+ if (!$this->getCapability('LOGINDISABLED')) {
+ $auth_methods[] = 'LOGIN';
+ }
+ }
else {
// Prevent from sending credentials in plain text when connection is not secure
- if ($auth_method == 'LOGIN' && $this->getCapability('LOGINDISABLED')) {
- $this->setError(self::ERROR_BAD, "Login disabled by IMAP server");
- $this->close();
- return false;
+ if ($auth_method == 'LOGIN' && $this->getCapability('LOGINDISABLED')) {
+ $this->setError(self::ERROR_BAD, "Login disabled by IMAP server");
+ $this->closeConnection();
+ return false;
}
// replace AUTH with CRAM-MD5 for backward compat.
$auth_methods[] = $auth_method == 'AUTH' ? 'CRAM-MD5' : $auth_method;
@@ -753,61 +766,68 @@ class rcube_imap_generic
switch ($method) {
case 'DIGEST-MD5':
case 'CRAM-MD5':
- case 'PLAIN':
- $result = $this->authenticate($user, $password, $method);
- break;
+ case 'PLAIN':
+ $result = $this->authenticate($user, $password, $method);
+ break;
case 'LOGIN':
- $result = $this->login($user, $password);
+ $result = $this->login($user, $password);
break;
default:
$this->setError(self::ERROR_BAD, "Configuration error. Unknown auth method: $method");
}
- if (is_resource($result)) {
- break;
- }
- }
+ if (is_resource($result)) {
+ break;
+ }
+ }
// Connected and authenticated
- if (is_resource($result)) {
+ if (is_resource($result)) {
if ($this->prefs['force_caps']) {
- $this->clearCapability();
+ $this->clearCapability();
}
$this->logged = true;
- return true;
+ return true;
}
- // Close connection
- $this->close();
+ $this->closeConnection();
return false;
}
function connected()
{
- return ($this->fp && $this->logged) ? true : false;
+ return ($this->fp && $this->logged) ? true : false;
}
- function close()
+ function closeConnection()
{
- if ($this->putLine($this->nextTag() . ' LOGOUT')) {
- $this->readReply();
+ if ($this->putLine($this->nextTag() . ' LOGOUT')) {
+ $this->readReply();
}
- @fclose($this->fp);
- $this->fp = false;
+ @fclose($this->fp);
+ $this->fp = false;
}
+ /**
+ * Executes SELECT command (if mailbox is already not in selected state)
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return boolean True on success, false on error
+ * @access public
+ */
function select($mailbox)
{
- if (!strlen($mailbox)) {
- return false;
- }
+ if (!strlen($mailbox)) {
+ return false;
+ }
- if ($this->selected == $mailbox) {
- return true;
- }
+ if ($this->selected == $mailbox) {
+ return true;
+ }
/*
Temporary commented out because Courier returns \Noselect for INBOX
Requires more investigation
@@ -823,26 +843,28 @@ class rcube_imap_generic
if ($code == self::ERROR_OK) {
$response = explode("\r\n", $response);
foreach ($response as $line) {
- if (preg_match('/^\* ([0-9]+) (EXISTS|RECENT)$/i', $line, $m)) {
- $this->data[strtoupper($m[2])] = (int) $m[1];
- }
- else if (preg_match('/^\* OK \[(UIDNEXT|UIDVALIDITY|UNSEEN) ([0-9]+)\]/i', $line, $match)) {
- $this->data[strtoupper($match[1])] = (int) $match[2];
- }
- else if (preg_match('/^\* OK \[PERMANENTFLAGS \(([^\)]+)\)\]/iU', $line, $match)) {
- $this->data['PERMANENTFLAGS'] = explode(' ', $match[1]);
- }
+ if (preg_match('/^\* ([0-9]+) (EXISTS|RECENT)$/i', $line, $m)) {
+ $this->data[strtoupper($m[2])] = (int) $m[1];
+ }
+ else if (preg_match('/^\* OK \[(UIDNEXT|UIDVALIDITY|UNSEEN) ([0-9]+)\]/i', $line, $match)) {
+ $this->data[strtoupper($match[1])] = (int) $match[2];
+ }
+ else if (preg_match('/^\* OK \[PERMANENTFLAGS \(([^\)]+)\)\]/iU', $line, $match)) {
+ $this->data['PERMANENTFLAGS'] = explode(' ', $match[1]);
+ }
}
- $this->selected = $mailbox;
- return true;
- }
+ $this->data['READ-WRITE'] = $this->resultcode != 'READ-ONLY';
+
+ $this->selected = $mailbox;
+ return true;
+ }
return false;
}
/**
- * Executes STATUS comand
+ * Executes STATUS command
*
* @param string $mailbox Mailbox name
* @param array $items Additional requested item names. By default
@@ -855,9 +877,9 @@ class rcube_imap_generic
*/
function status($mailbox, $items=array())
{
- if (!strlen($mailbox)) {
- return false;
- }
+ if (!strlen($mailbox)) {
+ return false;
+ }
if (!in_array('MESSAGES', $items)) {
$items[] = 'MESSAGES';
@@ -881,36 +903,157 @@ class rcube_imap_generic
$this->data['STATUS:'.$mailbox] = $result;
- return $result;
- }
+ return $result;
+ }
return false;
}
- function checkForRecent($mailbox)
+ /**
+ * Executes EXPUNGE command
+ *
+ * @param string $mailbox Mailbox name
+ * @param string $messages Message UIDs to expunge
+ *
+ * @return boolean True on success, False on error
+ * @access public
+ */
+ function expunge($mailbox, $messages=NULL)
{
- if (!strlen($mailbox)) {
- $mailbox = 'INBOX';
- }
+ if (!$this->select($mailbox)) {
+ return false;
+ }
+
+ if (!$this->data['READ-WRITE']) {
+ $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'EXPUNGE');
+ return false;
+ }
- $this->select($mailbox);
+ // Clear internal status cache
+ unset($this->data['STATUS:'.$mailbox]);
- if ($this->selected == $mailbox) {
- return $this->data['RECENT'];
- }
+ if ($messages)
+ $result = $this->execute('UID EXPUNGE', array($messages), self::COMMAND_NORESPONSE);
+ else
+ $result = $this->execute('EXPUNGE', null, self::COMMAND_NORESPONSE);
- return false;
+ if ($result == self::ERROR_OK) {
+ $this->selected = ''; // state has changed, need to reselect
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Executes CLOSE command
+ *
+ * @return boolean True on success, False on error
+ * @access public
+ * @since 0.5
+ */
+ function close()
+ {
+ $result = $this->execute('CLOSE', NULL, self::COMMAND_NORESPONSE);
+
+ if ($result == self::ERROR_OK) {
+ $this->selected = '';
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Executes SUBSCRIBE command
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return boolean True on success, False on error
+ * @access public
+ */
+ function subscribe($mailbox)
+ {
+ $result = $this->execute('SUBSCRIBE', array($this->escape($mailbox)),
+ self::COMMAND_NORESPONSE);
+
+ return ($result == self::ERROR_OK);
+ }
+
+ /**
+ * Executes UNSUBSCRIBE command
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return boolean True on success, False on error
+ * @access public
+ */
+ function unsubscribe($mailbox)
+ {
+ $result = $this->execute('UNSUBSCRIBE', array($this->escape($mailbox)),
+ self::COMMAND_NORESPONSE);
+
+ return ($result == self::ERROR_OK);
}
+ /**
+ * Executes DELETE command
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return boolean True on success, False on error
+ * @access public
+ */
+ function deleteFolder($mailbox)
+ {
+ $result = $this->execute('DELETE', array($this->escape($mailbox)),
+ self::COMMAND_NORESPONSE);
+
+ return ($result == self::ERROR_OK);
+ }
+
+ /**
+ * Removes all messages in a folder
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return boolean True on success, False on error
+ * @access public
+ */
+ function clearFolder($mailbox)
+ {
+ $num_in_trash = $this->countMessages($mailbox);
+ if ($num_in_trash > 0) {
+ $res = $this->delete($mailbox, '1:*');
+ }
+
+ if ($res) {
+ if ($this->selected == $mailbox)
+ $res = $this->close();
+ else
+ $res = $this->expunge($mailbox);
+ }
+
+ return $res;
+ }
+
+ /**
+ * Returns count of all messages in a folder
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return int Number of messages, False on error
+ * @access public
+ */
function countMessages($mailbox, $refresh = false)
{
- if ($refresh) {
- $this->selected = '';
- }
+ if ($refresh) {
+ $this->selected = '';
+ }
- if ($this->selected == $mailbox) {
- return $this->data['EXISTS'];
- }
+ if ($this->selected == $mailbox) {
+ return $this->data['EXISTS'];
+ }
// Check internal cache
$cache = $this->data['STATUS:'.$mailbox];
@@ -928,6 +1071,29 @@ class rcube_imap_generic
}
/**
+ * Returns count of messages with \Recent flag in a folder
+ *
+ * @param string $mailbox Mailbox name
+ *
+ * @return int Number of messages, False on error
+ * @access public
+ */
+ function countRecent($mailbox)
+ {
+ if (!strlen($mailbox)) {
+ $mailbox = 'INBOX';
+ }
+
+ $this->select($mailbox);
+
+ if ($this->selected == $mailbox) {
+ return $this->data['RECENT'];
+ }
+
+ return false;
+ }
+
+ /**
* Returns count of messages without \Seen flag in a specified folder
*
* @param string $mailbox Mailbox name
@@ -960,218 +1126,218 @@ class rcube_imap_generic
function sort($mailbox, $field, $add='', $is_uid=FALSE, $encoding = 'US-ASCII')
{
- $field = strtoupper($field);
- if ($field == 'INTERNALDATE') {
- $field = 'ARRIVAL';
- }
+ $field = strtoupper($field);
+ if ($field == 'INTERNALDATE') {
+ $field = 'ARRIVAL';
+ }
- $fields = array('ARRIVAL' => 1,'CC' => 1,'DATE' => 1,
+ $fields = array('ARRIVAL' => 1,'CC' => 1,'DATE' => 1,
'FROM' => 1, 'SIZE' => 1, 'SUBJECT' => 1, 'TO' => 1);
- if (!$fields[$field]) {
- return false;
- }
+ if (!$fields[$field]) {
+ return false;
+ }
- if (!$this->select($mailbox)) {
- return false;
- }
+ if (!$this->select($mailbox)) {
+ return false;
+ }
- // message IDs
- if (!empty($add))
- $add = $this->compressMessageSet($add);
+ // message IDs
+ if (!empty($add))
+ $add = $this->compressMessageSet($add);
- list($code, $response) = $this->execute($is_uid ? 'UID SORT' : 'SORT',
- array("($field)", $encoding, 'ALL' . (!empty($add) ? ' '.$add : '')));
+ list($code, $response) = $this->execute($is_uid ? 'UID SORT' : 'SORT',
+ array("($field)", $encoding, 'ALL' . (!empty($add) ? ' '.$add : '')));
- if ($code == self::ERROR_OK) {
- // remove prefix and \r\n from raw response
+ if ($code == self::ERROR_OK) {
+ // remove prefix and \r\n from raw response
$response = str_replace("\r\n", '', substr($response, 7));
- return preg_split('/\s+/', $response, -1, PREG_SPLIT_NO_EMPTY);
- }
+ return preg_split('/\s+/', $response, -1, PREG_SPLIT_NO_EMPTY);
+ }
return false;
}
function fetchHeaderIndex($mailbox, $message_set, $index_field='', $skip_deleted=true, $uidfetch=false)
{
- if (is_array($message_set)) {
- if (!($message_set = $this->compressMessageSet($message_set)))
- return false;
- } else {
- list($from_idx, $to_idx) = explode(':', $message_set);
- if (empty($message_set) ||
- (isset($to_idx) && $to_idx != '*' && (int)$from_idx > (int)$to_idx)) {
- return false;
- }
- }
-
- $index_field = empty($index_field) ? 'DATE' : strtoupper($index_field);
-
- $fields_a['DATE'] = 1;
- $fields_a['INTERNALDATE'] = 4;
- $fields_a['ARRIVAL'] = 4;
- $fields_a['FROM'] = 1;
- $fields_a['REPLY-TO'] = 1;
- $fields_a['SENDER'] = 1;
- $fields_a['TO'] = 1;
- $fields_a['CC'] = 1;
- $fields_a['SUBJECT'] = 1;
- $fields_a['UID'] = 2;
- $fields_a['SIZE'] = 2;
- $fields_a['SEEN'] = 3;
- $fields_a['RECENT'] = 3;
- $fields_a['DELETED'] = 3;
-
- if (!($mode = $fields_a[$index_field])) {
- return false;
- }
-
- /* Do "SELECT" command */
- if (!$this->select($mailbox)) {
- return false;
- }
-
- // build FETCH command string
- $key = $this->nextTag();
- $cmd = $uidfetch ? 'UID FETCH' : 'FETCH';
- $deleted = $skip_deleted ? ' FLAGS' : '';
-
- if ($mode == 1 && $index_field == 'DATE')
- $request = " $cmd $message_set (INTERNALDATE BODY.PEEK[HEADER.FIELDS (DATE)]$deleted)";
- else if ($mode == 1)
- $request = " $cmd $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)]$deleted)";
- else if ($mode == 2) {
- if ($index_field == 'SIZE')
- $request = " $cmd $message_set (RFC822.SIZE$deleted)";
- else
- $request = " $cmd $message_set ($index_field$deleted)";
- } else if ($mode == 3)
- $request = " $cmd $message_set (FLAGS)";
- else // 4
- $request = " $cmd $message_set (INTERNALDATE$deleted)";
-
- $request = $key . $request;
-
- if (!$this->putLine($request)) {
+ if (is_array($message_set)) {
+ if (!($message_set = $this->compressMessageSet($message_set)))
+ return false;
+ } else {
+ list($from_idx, $to_idx) = explode(':', $message_set);
+ if (empty($message_set) ||
+ (isset($to_idx) && $to_idx != '*' && (int)$from_idx > (int)$to_idx)) {
+ return false;
+ }
+ }
+
+ $index_field = empty($index_field) ? 'DATE' : strtoupper($index_field);
+
+ $fields_a['DATE'] = 1;
+ $fields_a['INTERNALDATE'] = 4;
+ $fields_a['ARRIVAL'] = 4;
+ $fields_a['FROM'] = 1;
+ $fields_a['REPLY-TO'] = 1;
+ $fields_a['SENDER'] = 1;
+ $fields_a['TO'] = 1;
+ $fields_a['CC'] = 1;
+ $fields_a['SUBJECT'] = 1;
+ $fields_a['UID'] = 2;
+ $fields_a['SIZE'] = 2;
+ $fields_a['SEEN'] = 3;
+ $fields_a['RECENT'] = 3;
+ $fields_a['DELETED'] = 3;
+
+ if (!($mode = $fields_a[$index_field])) {
+ return false;
+ }
+
+ /* Do "SELECT" command */
+ if (!$this->select($mailbox)) {
+ return false;
+ }
+
+ // build FETCH command string
+ $key = $this->nextTag();
+ $cmd = $uidfetch ? 'UID FETCH' : 'FETCH';
+ $deleted = $skip_deleted ? ' FLAGS' : '';
+
+ if ($mode == 1 && $index_field == 'DATE')
+ $request = " $cmd $message_set (INTERNALDATE BODY.PEEK[HEADER.FIELDS (DATE)]$deleted)";
+ else if ($mode == 1)
+ $request = " $cmd $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)]$deleted)";
+ else if ($mode == 2) {
+ if ($index_field == 'SIZE')
+ $request = " $cmd $message_set (RFC822.SIZE$deleted)";
+ else
+ $request = " $cmd $message_set ($index_field$deleted)";
+ } else if ($mode == 3)
+ $request = " $cmd $message_set (FLAGS)";
+ else // 4
+ $request = " $cmd $message_set (INTERNALDATE$deleted)";
+
+ $request = $key . $request;
+
+ if (!$this->putLine($request)) {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
- return false;
- }
-
- $result = array();
-
- do {
- $line = rtrim($this->readLine(200));
- $line = $this->multLine($line);
-
- if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) {
- $id = $m[1];
- $flags = NULL;
-
- if ($skip_deleted && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
- $flags = explode(' ', strtoupper($matches[1]));
- if (in_array('\\DELETED', $flags)) {
- $deleted[$id] = $id;
- continue;
- }
- }
-
- if ($mode == 1 && $index_field == 'DATE') {
- if (preg_match('/BODY\[HEADER\.FIELDS \("*DATE"*\)\] (.*)/', $line, $matches)) {
- $value = preg_replace(array('/^"*[a-z]+:/i'), '', $matches[1]);
- $value = trim($value);
- $result[$id] = $this->strToTime($value);
- }
- // non-existent/empty Date: header, use INTERNALDATE
- if (empty($result[$id])) {
- if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches))
- $result[$id] = $this->strToTime($matches[1]);
- else
- $result[$id] = 0;
- }
- } else if ($mode == 1) {
- if (preg_match('/BODY\[HEADER\.FIELDS \("?(FROM|REPLY-TO|SENDER|TO|SUBJECT)"?\)\] (.*)/', $line, $matches)) {
- $value = preg_replace(array('/^"*[a-z]+:/i', '/\s+$/sm'), array('', ''), $matches[2]);
- $result[$id] = trim($value);
- } else {
- $result[$id] = '';
- }
- } else if ($mode == 2) {
- if (preg_match('/\((UID|RFC822\.SIZE) ([0-9]+)/', $line, $matches)) {
- $result[$id] = trim($matches[2]);
- } else {
- $result[$id] = 0;
- }
- } else if ($mode == 3) {
- if (!$flags && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
- $flags = explode(' ', $matches[1]);
- }
- $result[$id] = in_array('\\'.$index_field, $flags) ? 1 : 0;
- } else if ($mode == 4) {
- if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) {
- $result[$id] = $this->strToTime($matches[1]);
- } else {
- $result[$id] = 0;
- }
- }
- }
- } while (!$this->startsWith($line, $key, true, true));
-
- return $result;
+ return false;
+ }
+
+ $result = array();
+
+ do {
+ $line = rtrim($this->readLine(200));
+ $line = $this->multLine($line);
+
+ if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) {
+ $id = $m[1];
+ $flags = NULL;
+
+ if ($skip_deleted && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
+ $flags = explode(' ', strtoupper($matches[1]));
+ if (in_array('\\DELETED', $flags)) {
+ $deleted[$id] = $id;
+ continue;
+ }
+ }
+
+ if ($mode == 1 && $index_field == 'DATE') {
+ if (preg_match('/BODY\[HEADER\.FIELDS \("*DATE"*\)\] (.*)/', $line, $matches)) {
+ $value = preg_replace(array('/^"*[a-z]+:/i'), '', $matches[1]);
+ $value = trim($value);
+ $result[$id] = $this->strToTime($value);
+ }
+ // non-existent/empty Date: header, use INTERNALDATE
+ if (empty($result[$id])) {
+ if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches))
+ $result[$id] = $this->strToTime($matches[1]);
+ else
+ $result[$id] = 0;
+ }
+ } else if ($mode == 1) {
+ if (preg_match('/BODY\[HEADER\.FIELDS \("?(FROM|REPLY-TO|SENDER|TO|SUBJECT)"?\)\] (.*)/', $line, $matches)) {
+ $value = preg_replace(array('/^"*[a-z]+:/i', '/\s+$/sm'), array('', ''), $matches[2]);
+ $result[$id] = trim($value);
+ } else {
+ $result[$id] = '';
+ }
+ } else if ($mode == 2) {
+ if (preg_match('/\((UID|RFC822\.SIZE) ([0-9]+)/', $line, $matches)) {
+ $result[$id] = trim($matches[2]);
+ } else {
+ $result[$id] = 0;
+ }
+ } else if ($mode == 3) {
+ if (!$flags && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
+ $flags = explode(' ', $matches[1]);
+ }
+ $result[$id] = in_array('\\'.$index_field, $flags) ? 1 : 0;
+ } else if ($mode == 4) {
+ if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) {
+ $result[$id] = $this->strToTime($matches[1]);
+ } else {
+ $result[$id] = 0;
+ }
+ }
+ }
+ } while (!$this->startsWith($line, $key, true, true));
+
+ return $result;
}
static function compressMessageSet($messages, $force=false)
{
- // given a comma delimited list of independent mid's,
- // compresses by grouping sequences together
+ // given a comma delimited list of independent mid's,
+ // compresses by grouping sequences together
if (!is_array($messages)) {
- // if less than 255 bytes long, let's not bother
- if (!$force && strlen($messages)<255) {
- return $messages;
- }
-
- // see if it's already been compressed
- if (strpos($messages, ':') !== false) {
- return $messages;
- }
+ // if less than 255 bytes long, let's not bother
+ if (!$force && strlen($messages)<255) {
+ return $messages;
+ }
+
+ // see if it's already been compressed
+ if (strpos($messages, ':') !== false) {
+ return $messages;
+ }
- // separate, then sort
- $messages = explode(',', $messages);
+ // separate, then sort
+ $messages = explode(',', $messages);
}
- sort($messages);
+ sort($messages);
- $result = array();
- $start = $prev = $messages[0];
-
- foreach ($messages as $id) {
- $incr = $id - $prev;
- if ($incr > 1) { //found a gap
- if ($start == $prev) {
- $result[] = $prev; //push single id
- } else {
- $result[] = $start . ':' . $prev; //push sequence as start_id:end_id
- }
- $start = $id; //start of new sequence
- }
- $prev = $id;
- }
+ $result = array();
+ $start = $prev = $messages[0];
+
+ foreach ($messages as $id) {
+ $incr = $id - $prev;
+ if ($incr > 1) { // found a gap
+ if ($start == $prev) {
+ $result[] = $prev; // push single id
+ } else {
+ $result[] = $start . ':' . $prev; // push sequence as start_id:end_id
+ }
+ $start = $id; // start of new sequence
+ }
+ $prev = $id;
+ }
- // handle the last sequence/id
- if ($start == $prev) {
- $result[] = $prev;
- } else {
- $result[] = $start.':'.$prev;
- }
+ // handle the last sequence/id
+ if ($start == $prev) {
+ $result[] = $prev;
+ } else {
+ $result[] = $start.':'.$prev;
+ }
- // return as comma separated string
- return implode(',', $result);
+ // return as comma separated string
+ return implode(',', $result);
}
static function uncompressMessageSet($messages)
{
- $result = array();
- $messages = explode(',', $messages);
+ $result = array();
+ $messages = explode(',', $messages);
foreach ($messages as $part) {
$items = explode(':', $part);
@@ -1196,13 +1362,13 @@ class rcube_imap_generic
*/
function UID2ID($mailbox, $uid)
{
- if ($uid > 0) {
- $id_a = $this->search($mailbox, "UID $uid");
- if (is_array($id_a) && count($id_a) == 1) {
- return (int) $id_a[0];
- }
- }
- return null;
+ if ($uid > 0) {
+ $id_a = $this->search($mailbox, "UID $uid");
+ if (is_array($id_a) && count($id_a) == 1) {
+ return (int) $id_a[0];
+ }
+ }
+ return null;
}
/**
@@ -1216,417 +1382,408 @@ class rcube_imap_generic
*/
function ID2UID($mailbox, $id)
{
- if (empty($id) || $id < 0) {
- return null;
- }
+ if (empty($id) || $id < 0) {
+ return null;
+ }
- if (!$this->select($mailbox)) {
+ if (!$this->select($mailbox)) {
return null;
}
list($code, $response) = $this->execute('FETCH', array($id, '(UID)'));
if ($code == self::ERROR_OK && preg_match("/^\* $id FETCH \(UID (.*)\)/i", $response, $m)) {
- return (int) $m[1];
+ return (int) $m[1];
}
- return null;
+ return null;
}
function fetchUIDs($mailbox, $message_set=null)
{
- if (is_array($message_set))
- $message_set = join(',', $message_set);
+ if (is_array($message_set))
+ $message_set = join(',', $message_set);
else if (empty($message_set))
- $message_set = '1:*';
+ $message_set = '1:*';
- return $this->fetchHeaderIndex($mailbox, $message_set, 'UID', false);
+ return $this->fetchHeaderIndex($mailbox, $message_set, 'UID', false);
}
function fetchHeaders($mailbox, $message_set, $uidfetch=false, $bodystr=false, $add='')
{
- $result = array();
+ $result = array();
- if (!$this->select($mailbox)) {
- return false;
- }
+ if (!$this->select($mailbox)) {
+ return false;
+ }
- $message_set = $this->compressMessageSet($message_set);
+ $message_set = $this->compressMessageSet($message_set);
- if ($add)
- $add = ' '.trim($add);
+ if ($add)
+ $add = ' '.trim($add);
- /* FETCH uid, size, flags and headers */
- $key = $this->nextTag();
- $request = $key . ($uidfetch ? ' UID' : '') . " FETCH $message_set ";
- $request .= "(UID RFC822.SIZE FLAGS INTERNALDATE ";
- if ($bodystr)
- $request .= "BODYSTRUCTURE ";
- $request .= "BODY.PEEK[HEADER.FIELDS (DATE FROM TO SUBJECT CONTENT-TYPE ";
- $request .= "LIST-POST DISPOSITION-NOTIFICATION-TO".$add.")])";
+ /* FETCH uid, size, flags and headers */
+ $key = $this->nextTag();
+ $request = $key . ($uidfetch ? ' UID' : '') . " FETCH $message_set ";
+ $request .= "(UID RFC822.SIZE FLAGS INTERNALDATE ";
+ if ($bodystr)
+ $request .= "BODYSTRUCTURE ";
+ $request .= "BODY.PEEK[HEADER.FIELDS (DATE FROM TO SUBJECT CONTENT-TYPE ";
+ $request .= "LIST-POST DISPOSITION-NOTIFICATION-TO".$add.")])";
- if (!$this->putLine($request)) {
+ if (!$this->putLine($request)) {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
- return false;
- }
- do {
- $line = $this->readLine(4096);
- $line = $this->multLine($line);
+ return false;
+ }
+ do {
+ $line = $this->readLine(4096);
+ $line = $this->multLine($line);
if (!$line)
break;
- if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) {
- $id = intval($m[1]);
-
- $result[$id] = new rcube_mail_header;
- $result[$id]->id = $id;
- $result[$id]->subject = '';
- $result[$id]->messageID = 'mid:' . $id;
-
- $lines = array();
- $ln = 0;
-
- // Sample reply line:
- // * 321 FETCH (UID 2417 RFC822.SIZE 2730 FLAGS (\Seen)
- // INTERNALDATE "16-Nov-2008 21:08:46 +0100" BODYSTRUCTURE (...)
- // BODY[HEADER.FIELDS ...
-
- if (preg_match('/^\* [0-9]+ FETCH \((.*) BODY/s', $line, $matches)) {
- $str = $matches[1];
-
- // swap parents with quotes, then explode
- $str = preg_replace('/[()]/', '"', $str);
- $a = rcube_explode_quoted_string(' ', $str);
-
- // did we get the right number of replies?
- $parts_count = count($a);
- if ($parts_count>=6) {
- for ($i=0; $i<$parts_count; $i=$i+2) {
- if ($a[$i] == 'UID')
- $result[$id]->uid = intval($a[$i+1]);
- else if ($a[$i] == 'RFC822.SIZE')
- $result[$id]->size = intval($a[$i+1]);
- else if ($a[$i] == 'INTERNALDATE')
- $time_str = $a[$i+1];
- else if ($a[$i] == 'FLAGS')
- $flags_str = $a[$i+1];
- }
-
- $time_str = str_replace('"', '', $time_str);
-
- // if time is gmt...
- $time_str = str_replace('GMT','+0000',$time_str);
-
- $result[$id]->internaldate = $time_str;
- $result[$id]->timestamp = $this->StrToTime($time_str);
- $result[$id]->date = $time_str;
- }
-
- // BODYSTRUCTURE
- if($bodystr) {
- while (!preg_match('/ BODYSTRUCTURE (.*) BODY\[HEADER.FIELDS/s', $line, $m)) {
- $line2 = $this->readLine(1024);
- $line .= $this->multLine($line2, true);
- }
- $result[$id]->body_structure = $m[1];
- }
-
- // the rest of the result
- preg_match('/ BODY\[HEADER.FIELDS \(.*?\)\]\s*(.*)$/s', $line, $m);
- $reslines = explode("\n", trim($m[1], '"'));
- // re-parse (see below)
- foreach ($reslines as $resln) {
- if (ord($resln[0])<=32) {
- $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($resln);
- } else {
- $lines[++$ln] = trim($resln);
- }
- }
- }
-
- // Start parsing headers. The problem is, some header "lines" take up multiple lines.
- // So, we'll read ahead, and if the one we're reading now is a valid header, we'll
- // process the previous line. Otherwise, we'll keep adding the strings until we come
- // to the next valid header line.
-
- do {
- $line = rtrim($this->readLine(300), "\r\n");
-
- // The preg_match below works around communigate imap, which outputs " UID <number>)".
- // Without this, the while statement continues on and gets the "FH0 OK completed" message.
- // If this loop gets the ending message, then the outer loop does not receive it from radline on line 1249.
- // This in causes the if statement on line 1278 to never be true, which causes the headers to end up missing
- // If the if statement was changed to pick up the fh0 from this loop, then it causes the outer loop to spin
- // An alternative might be:
- // if (!preg_match("/:/",$line) && preg_match("/\)$/",$line)) break;
- // however, unsure how well this would work with all imap clients.
- if (preg_match("/^\s*UID [0-9]+\)$/", $line)) {
- break;
- }
-
- // handle FLAGS reply after headers (AOL, Zimbra?)
- if (preg_match('/\s+FLAGS \((.*)\)\)$/', $line, $matches)) {
- $flags_str = $matches[1];
- break;
- }
-
- if (ord($line[0])<=32) {
- $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($line);
- } else {
- $lines[++$ln] = trim($line);
- }
- // patch from "Maksim Rubis" <siburny@hotmail.com>
- } while ($line[0] != ')' && !$this->startsWith($line, $key, true));
-
- if (strncmp($line, $key, strlen($key))) {
- // process header, fill rcube_mail_header obj.
- // initialize
- if (is_array($headers)) {
- reset($headers);
- while (list($k, $bar) = each($headers)) {
- $headers[$k] = '';
- }
- }
-
- // create array with header field:data
- while ( list($lines_key, $str) = each($lines) ) {
- list($field, $string) = $this->splitHeaderLine($str);
-
- $field = strtolower($field);
- $string = preg_replace('/\n\s*/', ' ', $string);
-
- switch ($field) {
- case 'date';
- $result[$id]->date = $string;
- $result[$id]->timestamp = $this->strToTime($string);
- break;
- case 'from':
- $result[$id]->from = $string;
- break;
- case 'to':
- $result[$id]->to = preg_replace('/undisclosed-recipients:[;,]*/', '', $string);
- break;
- case 'subject':
- $result[$id]->subject = $string;
- break;
- case 'reply-to':
- $result[$id]->replyto = $string;
- break;
- case 'cc':
- $result[$id]->cc = $string;
- break;
- case 'bcc':
- $result[$id]->bcc = $string;
- break;
- case 'content-transfer-encoding':
- $result[$id]->encoding = $string;
- break;
- case 'content-type':
- $ctype_parts = preg_split('/[; ]/', $string);
- $result[$id]->ctype = array_shift($ctype_parts);
- if (preg_match('/charset\s*=\s*"?([a-z0-9\-\.\_]+)"?/i', $string, $regs)) {
- $result[$id]->charset = $regs[1];
- }
- break;
- case 'in-reply-to':
- $result[$id]->in_reply_to = str_replace(array("\n", '<', '>'), '', $string);
- break;
- case 'references':
- $result[$id]->references = $string;
- break;
- case 'return-receipt-to':
- case 'disposition-notification-to':
- case 'x-confirm-reading-to':
- $result[$id]->mdn_to = $string;
- break;
- case 'message-id':
- $result[$id]->messageID = $string;
- break;
- case 'x-priority':
- if (preg_match('/^(\d+)/', $string, $matches))
- $result[$id]->priority = intval($matches[1]);
- break;
- default:
- if (strlen($field) > 2)
- $result[$id]->others[$field] = $string;
- break;
- } // end switch ()
- } // end while ()
- }
-
- // process flags
- if (!empty($flags_str)) {
- $flags_str = preg_replace('/[\\\"]/', '', $flags_str);
- $flags_a = explode(' ', $flags_str);
-
- if (is_array($flags_a)) {
- foreach($flags_a as $flag) {
- $flag = strtoupper($flag);
- if ($flag == 'SEEN') {
- $result[$id]->seen = true;
- } else if ($flag == 'DELETED') {
- $result[$id]->deleted = true;
- } else if ($flag == 'RECENT') {
- $result[$id]->recent = true;
- } else if ($flag == 'ANSWERED') {
- $result[$id]->answered = true;
- } else if ($flag == '$FORWARDED') {
- $result[$id]->forwarded = true;
- } else if ($flag == 'DRAFT') {
- $result[$id]->is_draft = true;
- } else if ($flag == '$MDNSENT') {
- $result[$id]->mdn_sent = true;
- } else if ($flag == 'FLAGGED') {
- $result[$id]->flagged = true;
- }
- }
- $result[$id]->flags = $flags_a;
- }
- }
- }
- } while (!$this->startsWith($line, $key, true));
-
- return $result;
+ if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) {
+ $id = intval($m[1]);
+
+ $result[$id] = new rcube_mail_header;
+ $result[$id]->id = $id;
+ $result[$id]->subject = '';
+ $result[$id]->messageID = 'mid:' . $id;
+
+ $lines = array();
+ $ln = 0;
+
+ // Sample reply line:
+ // * 321 FETCH (UID 2417 RFC822.SIZE 2730 FLAGS (\Seen)
+ // INTERNALDATE "16-Nov-2008 21:08:46 +0100" BODYSTRUCTURE (...)
+ // BODY[HEADER.FIELDS ...
+
+ if (preg_match('/^\* [0-9]+ FETCH \((.*) BODY/s', $line, $matches)) {
+ $str = $matches[1];
+
+ // swap parents with quotes, then explode
+ $str = preg_replace('/[()]/', '"', $str);
+ $a = rcube_explode_quoted_string(' ', $str);
+
+ // did we get the right number of replies?
+ $parts_count = count($a);
+ if ($parts_count>=6) {
+ for ($i=0; $i<$parts_count; $i=$i+2) {
+ if ($a[$i] == 'UID') {
+ $result[$id]->uid = intval($a[$i+1]);
+ }
+ else if ($a[$i] == 'RFC822.SIZE') {
+ $result[$id]->size = intval($a[$i+1]);
+ }
+ else if ($a[$i] == 'INTERNALDATE') {
+ $time_str = $a[$i+1];
+ }
+ else if ($a[$i] == 'FLAGS') {
+ $flags_str = $a[$i+1];
+ }
+ }
+
+ $time_str = str_replace('"', '', $time_str);
+
+ // if time is gmt...
+ $time_str = str_replace('GMT','+0000',$time_str);
+
+ $result[$id]->internaldate = $time_str;
+ $result[$id]->timestamp = $this->StrToTime($time_str);
+ $result[$id]->date = $time_str;
+ }
+
+ // BODYSTRUCTURE
+ if ($bodystr) {
+ while (!preg_match('/ BODYSTRUCTURE (.*) BODY\[HEADER.FIELDS/s', $line, $m)) {
+ $line2 = $this->readLine(1024);
+ $line .= $this->multLine($line2, true);
+ }
+ $result[$id]->body_structure = $m[1];
+ }
+
+ // the rest of the result
+ if (preg_match('/ BODY\[HEADER.FIELDS \(.*?\)\]\s*(.*)$/s', $line, $m)) {
+ $reslines = explode("\n", trim($m[1], '"'));
+ // re-parse (see below)
+ foreach ($reslines as $resln) {
+ if (ord($resln[0])<=32) {
+ $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($resln);
+ } else {
+ $lines[++$ln] = trim($resln);
+ }
+ }
+ }
+ }
+
+ // Start parsing headers. The problem is, some header "lines" take up multiple lines.
+ // So, we'll read ahead, and if the one we're reading now is a valid header, we'll
+ // process the previous line. Otherwise, we'll keep adding the strings until we come
+ // to the next valid header line.
+
+ do {
+ $line = rtrim($this->readLine(300), "\r\n");
+
+ // The preg_match below works around communigate imap, which outputs " UID <number>)".
+ // Without this, the while statement continues on and gets the "FH0 OK completed" message.
+ // If this loop gets the ending message, then the outer loop does not receive it from radline on line 1249.
+ // This in causes the if statement on line 1278 to never be true, which causes the headers to end up missing
+ // If the if statement was changed to pick up the fh0 from this loop, then it causes the outer loop to spin
+ // An alternative might be:
+ // if (!preg_match("/:/",$line) && preg_match("/\)$/",$line)) break;
+ // however, unsure how well this would work with all imap clients.
+ if (preg_match("/^\s*UID [0-9]+\)$/", $line)) {
+ break;
+ }
+
+ // handle FLAGS reply after headers (AOL, Zimbra?)
+ if (preg_match('/\s+FLAGS \((.*)\)\)$/', $line, $matches)) {
+ $flags_str = $matches[1];
+ break;
+ }
+
+ if (ord($line[0])<=32) {
+ $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($line);
+ } else {
+ $lines[++$ln] = trim($line);
+ }
+ // patch from "Maksim Rubis" <siburny@hotmail.com>
+ } while ($line[0] != ')' && !$this->startsWith($line, $key, true));
+
+ if (strncmp($line, $key, strlen($key))) {
+ // process header, fill rcube_mail_header obj.
+ // initialize
+ if (is_array($headers)) {
+ reset($headers);
+ while (list($k, $bar) = each($headers)) {
+ $headers[$k] = '';
+ }
+ }
+
+ // create array with header field:data
+ while (list($lines_key, $str) = each($lines)) {
+ list($field, $string) = $this->splitHeaderLine($str);
+
+ $field = strtolower($field);
+ $string = preg_replace('/\n\s*/', ' ', $string);
+
+ switch ($field) {
+ case 'date';
+ $result[$id]->date = $string;
+ $result[$id]->timestamp = $this->strToTime($string);
+ break;
+ case 'from':
+ $result[$id]->from = $string;
+ break;
+ case 'to':
+ $result[$id]->to = preg_replace('/undisclosed-recipients:[;,]*/', '', $string);
+ break;
+ case 'subject':
+ $result[$id]->subject = $string;
+ break;
+ case 'reply-to':
+ $result[$id]->replyto = $string;
+ break;
+ case 'cc':
+ $result[$id]->cc = $string;
+ break;
+ case 'bcc':
+ $result[$id]->bcc = $string;
+ break;
+ case 'content-transfer-encoding':
+ $result[$id]->encoding = $string;
+ break;
+ case 'content-type':
+ $ctype_parts = preg_split('/[; ]/', $string);
+ $result[$id]->ctype = array_shift($ctype_parts);
+ if (preg_match('/charset\s*=\s*"?([a-z0-9\-\.\_]+)"?/i', $string, $regs)) {
+ $result[$id]->charset = $regs[1];
+ }
+ break;
+ case 'in-reply-to':
+ $result[$id]->in_reply_to = str_replace(array("\n", '<', '>'), '', $string);
+ break;
+ case 'references':
+ $result[$id]->references = $string;
+ break;
+ case 'return-receipt-to':
+ case 'disposition-notification-to':
+ case 'x-confirm-reading-to':
+ $result[$id]->mdn_to = $string;
+ break;
+ case 'message-id':
+ $result[$id]->messageID = $string;
+ break;
+ case 'x-priority':
+ if (preg_match('/^(\d+)/', $string, $matches)) {
+ $result[$id]->priority = intval($matches[1]);
+ }
+ break;
+ default:
+ if (strlen($field) > 2) {
+ $result[$id]->others[$field] = $string;
+ }
+ break;
+ } // end switch ()
+ } // end while ()
+ }
+
+ // process flags
+ if (!empty($flags_str)) {
+ $flags_str = preg_replace('/[\\\"]/', '', $flags_str);
+ $flags_a = explode(' ', $flags_str);
+
+ if (is_array($flags_a)) {
+ foreach($flags_a as $flag) {
+ $flag = strtoupper($flag);
+ if ($flag == 'SEEN') {
+ $result[$id]->seen = true;
+ } else if ($flag == 'DELETED') {
+ $result[$id]->deleted = true;
+ } else if ($flag == 'RECENT') {
+ $result[$id]->recent = true;
+ } else if ($flag == 'ANSWERED') {
+ $result[$id]->answered = true;
+ } else if ($flag == '$FORWARDED') {
+ $result[$id]->forwarded = true;
+ } else if ($flag == 'DRAFT') {
+ $result[$id]->is_draft = true;
+ } else if ($flag == '$MDNSENT') {
+ $result[$id]->mdn_sent = true;
+ } else if ($flag == 'FLAGGED') {
+ $result[$id]->flagged = true;
+ }
+ }
+ $result[$id]->flags = $flags_a;
+ }
+ }
+ }
+ } while (!$this->startsWith($line, $key, true));
+
+ return $result;
}
function fetchHeader($mailbox, $id, $uidfetch=false, $bodystr=false, $add='')
{
- $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add);
- if (is_array($a)) {
- return array_shift($a);
- }
- return false;
+ $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add);
+ if (is_array($a)) {
+ return array_shift($a);
+ }
+ return false;
}
function sortHeaders($a, $field, $flag)
{
- if (empty($field)) {
- $field = 'uid';
- }
+ if (empty($field)) {
+ $field = 'uid';
+ }
else {
- $field = strtolower($field);
- }
-
- if ($field == 'date' || $field == 'internaldate') {
- $field = 'timestamp';
- }
-
- if (empty($flag)) {
- $flag = 'ASC';
- } else {
- $flag = strtoupper($flag);
- }
-
- $c = count($a);
- if ($c > 0) {
- // Strategy:
- // First, we'll create an "index" array.
- // Then, we'll use sort() on that array,
- // and use that to sort the main array.
-
- // create "index" array
- $index = array();
- reset($a);
- while (list($key, $val) = each($a)) {
- if ($field == 'timestamp') {
- $data = $this->strToTime($val->date);
- if (!$data) {
- $data = $val->timestamp;
- }
- } else {
- $data = $val->$field;
- if (is_string($data)) {
- $data = str_replace('"', '', $data);
- if ($field == 'subject') {
- $data = preg_replace('/^(Re: \s*|Fwd:\s*|Fw:\s*)+/i', '', $data);
- }
- $data = strtoupper($data);
- }
- }
- $index[$key] = $data;
- }
-
- // sort index
- if ($flag == 'ASC') {
- asort($index);
- } else {
- arsort($index);
- }
-
- // form new array based on index
- $result = array();
- reset($index);
- while (list($key, $val) = each($index)) {
- $result[$key] = $a[$key];
- }
- }
-
- return $result;
- }
+ $field = strtolower($field);
+ }
- function expunge($mailbox, $messages=NULL)
- {
- if (!$this->select($mailbox)) {
- return false;
+ if ($field == 'date' || $field == 'internaldate') {
+ $field = 'timestamp';
}
- // Clear internal status cache
- unset($this->data['STATUS:'.$mailbox]);
+ if (empty($flag)) {
+ $flag = 'ASC';
+ } else {
+ $flag = strtoupper($flag);
+ }
- if ($messages)
- $result = $this->execute('UID EXPUNGE', array($messages), self::COMMAND_NORESPONSE);
- else
- $result = $this->execute('EXPUNGE', null, self::COMMAND_NORESPONSE);
+ $c = count($a);
+ if ($c > 0) {
+ // Strategy:
+ // First, we'll create an "index" array.
+ // Then, we'll use sort() on that array,
+ // and use that to sort the main array.
- if ($result == self::ERROR_OK) {
- $this->selected = ''; // state has changed, need to reselect
- return true;
- }
+ // create "index" array
+ $index = array();
+ reset($a);
+ while (list($key, $val) = each($a)) {
+ if ($field == 'timestamp') {
+ $data = $this->strToTime($val->date);
+ if (!$data) {
+ $data = $val->timestamp;
+ }
+ } else {
+ $data = $val->$field;
+ if (is_string($data)) {
+ $data = str_replace('"', '', $data);
+ if ($field == 'subject') {
+ $data = preg_replace('/^(Re: \s*|Fwd:\s*|Fw:\s*)+/i', '', $data);
+ }
+ $data = strtoupper($data);
+ }
+ }
+ $index[$key] = $data;
+ }
+
+ // sort index
+ if ($flag == 'ASC') {
+ asort($index);
+ } else {
+ arsort($index);
+ }
+
+ // form new array based on index
+ $result = array();
+ reset($index);
+ while (list($key, $val) = each($index)) {
+ $result[$key] = $a[$key];
+ }
+ }
- return false;
+ return $result;
}
+
function modFlag($mailbox, $messages, $flag, $mod)
{
- if ($mod != '+' && $mod != '-') {
+ if ($mod != '+' && $mod != '-') {
$mod = '+';
- }
+ }
+
+ if (!$this->select($mailbox)) {
+ return false;
+ }
- if (!$this->select($mailbox)) {
- return false;
- }
+ if (!$this->data['READ-WRITE']) {
+ $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE');
+ return false;
+ }
// Clear internal status cache
if ($flag == 'SEEN') {
unset($this->data['STATUS:'.$mailbox]['UNSEEN']);
}
- $flag = $this->flags[strtoupper($flag)];
+ $flag = $this->flags[strtoupper($flag)];
$result = $this->execute('UID STORE', array(
$this->compressMessageSet($messages), $mod . 'FLAGS.SILENT', "($flag)"),
self::COMMAND_NORESPONSE);
- return ($result == self::ERROR_OK);
+ return ($result == self::ERROR_OK);
}
function flag($mailbox, $messages, $flag) {
- return $this->modFlag($mailbox, $messages, $flag, '+');
+ return $this->modFlag($mailbox, $messages, $flag, '+');
}
function unflag($mailbox, $messages, $flag) {
- return $this->modFlag($mailbox, $messages, $flag, '-');
+ return $this->modFlag($mailbox, $messages, $flag, '-');
}
function delete($mailbox, $messages) {
- return $this->modFlag($mailbox, $messages, 'DELETED', '+');
+ return $this->modFlag($mailbox, $messages, 'DELETED', '+');
}
function copy($messages, $from, $to)
{
- if (!$this->select($from)) {
- return false;
- }
+ if (!$this->select($from)) {
+ return false;
+ }
// Clear internal status cache
unset($this->data['STATUS:'.$to]);
@@ -1635,11 +1792,20 @@ class rcube_imap_generic
$this->compressMessageSet($messages), $this->escape($to)),
self::COMMAND_NORESPONSE);
- return ($result == self::ERROR_OK);
+ return ($result == self::ERROR_OK);
}
function move($messages, $from, $to)
{
+ if (!$this->select($from)) {
+ return false;
+ }
+
+ if (!$this->data['READ-WRITE']) {
+ $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE');
+ return false;
+ }
+
$r = $this->copy($messages, $from, $to);
if ($r) {
@@ -1656,76 +1822,76 @@ class rcube_imap_generic
// http://derickrethans.nl/files/phparch-php-variables-article.pdf
private function parseThread($str, $begin, $end, $root, $parent, $depth, &$depthmap, &$haschildren)
{
- $node = array();
- if ($str[$begin] != '(') {
- $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin);
- $msg = substr($str, $begin, $stop - $begin);
- if ($msg == 0)
- return $node;
- if (is_null($root))
- $root = $msg;
- $depthmap[$msg] = $depth;
- $haschildren[$msg] = false;
- if (!is_null($parent))
- $haschildren[$parent] = true;
- if ($stop + 1 < $end)
- $node[$msg] = $this->parseThread($str, $stop + 1, $end, $root, $msg, $depth + 1, $depthmap, $haschildren);
- else
- $node[$msg] = array();
- } else {
- $off = $begin;
- while ($off < $end) {
- $start = $off;
- $off++;
- $n = 1;
- while ($n > 0) {
- $p = strpos($str, ')', $off);
- if ($p === false) {
- error_log('Mismatched brackets parsing IMAP THREAD response:');
- error_log(substr($str, ($begin < 10) ? 0 : ($begin - 10), $end - $begin + 20));
- error_log(str_repeat(' ', $off - (($begin < 10) ? 0 : ($begin - 10))));
- return $node;
- }
- $p1 = strpos($str, '(', $off);
- if ($p1 !== false && $p1 < $p) {
- $off = $p1 + 1;
- $n++;
- } else {
- $off = $p + 1;
- $n--;
- }
- }
- $node += $this->parseThread($str, $start + 1, $off - 1, $root, $parent, $depth, $depthmap, $haschildren);
- }
- }
-
- return $node;
+ $node = array();
+ if ($str[$begin] != '(') {
+ $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin);
+ $msg = substr($str, $begin, $stop - $begin);
+ if ($msg == 0)
+ return $node;
+ if (is_null($root))
+ $root = $msg;
+ $depthmap[$msg] = $depth;
+ $haschildren[$msg] = false;
+ if (!is_null($parent))
+ $haschildren[$parent] = true;
+ if ($stop + 1 < $end)
+ $node[$msg] = $this->parseThread($str, $stop + 1, $end, $root, $msg, $depth + 1, $depthmap, $haschildren);
+ else
+ $node[$msg] = array();
+ } else {
+ $off = $begin;
+ while ($off < $end) {
+ $start = $off;
+ $off++;
+ $n = 1;
+ while ($n > 0) {
+ $p = strpos($str, ')', $off);
+ if ($p === false) {
+ error_log("Mismatched brackets parsing IMAP THREAD response:");
+ error_log(substr($str, ($begin < 10) ? 0 : ($begin - 10), $end - $begin + 20));
+ error_log(str_repeat(' ', $off - (($begin < 10) ? 0 : ($begin - 10))));
+ return $node;
+ }
+ $p1 = strpos($str, '(', $off);
+ if ($p1 !== false && $p1 < $p) {
+ $off = $p1 + 1;
+ $n++;
+ } else {
+ $off = $p + 1;
+ $n--;
+ }
+ }
+ $node += $this->parseThread($str, $start + 1, $off - 1, $root, $parent, $depth, $depthmap, $haschildren);
+ }
+ }
+
+ return $node;
}
function thread($mailbox, $algorithm='REFERENCES', $criteria='', $encoding='US-ASCII')
{
$old_sel = $this->selected;
- if (!$this->select($mailbox)) {
- return false;
- }
+ if (!$this->select($mailbox)) {
+ return false;
+ }
// return empty result when folder is empty and we're just after SELECT
if ($old_sel != $mailbox && !$this->data['EXISTS']) {
return array(array(), array(), array());
- }
+ }
- $encoding = $encoding ? trim($encoding) : 'US-ASCII';
- $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES';
- $criteria = $criteria ? 'ALL '.trim($criteria) : 'ALL';
+ $encoding = $encoding ? trim($encoding) : 'US-ASCII';
+ $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES';
+ $criteria = $criteria ? 'ALL '.trim($criteria) : 'ALL';
$data = '';
list($code, $response) = $this->execute('THREAD', array(
$algorithm, $encoding, $criteria));
- if ($code == self::ERROR_OK && preg_match('/^\* THREAD /i', $response)) {
- // remove prefix and \r\n from raw response
- $response = str_replace("\r\n", '', substr($response, 9));
+ if ($code == self::ERROR_OK && preg_match('/^\* THREAD /i', $response)) {
+ // remove prefix and \r\n from raw response
+ $response = str_replace("\r\n", '', substr($response, 9));
$depthmap = array();
$haschildren = array();
@@ -1733,9 +1899,9 @@ class rcube_imap_generic
null, null, 0, $depthmap, $haschildren);
return array($tree, $depthmap, $haschildren);
- }
+ }
- return false;
+ return false;
}
/**
@@ -1752,9 +1918,9 @@ class rcube_imap_generic
{
$old_sel = $this->selected;
- if (!$this->select($mailbox)) {
- return false;
- }
+ if (!$this->select($mailbox)) {
+ return false;
+ }
// return empty result when folder is empty and we're just after SELECT
if ($old_sel != $mailbox && !$this->data['EXISTS']) {
@@ -1762,7 +1928,7 @@ class rcube_imap_generic
return array_combine($items, array_fill(0, count($items), 0));
else
return array();
- }
+ }
$esearch = empty($items) ? false : $this->getCapability('ESEARCH');
$criteria = trim($criteria);
@@ -1779,13 +1945,13 @@ class rcube_imap_generic
$params .= 'ALL';
}
- list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH',
- array($params));
+ list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH',
+ array($params));
- if ($code == self::ERROR_OK) {
- // remove prefix and \r\n from raw response
+ if ($code == self::ERROR_OK) {
+ // remove prefix and \r\n from raw response
$response = substr($response, $esearch ? 10 : 9);
- $response = str_replace("\r\n", '', $response);
+ $response = str_replace("\r\n", '', $response);
if ($esearch) {
// Skip prefix: ... (TAG "A285") UID ...
@@ -1803,29 +1969,33 @@ class rcube_imap_generic
return $result;
}
- else {
+ else {
$response = preg_split('/\s+/', $response, -1, PREG_SPLIT_NO_EMPTY);
if (!empty($items)) {
$result = array();
- if (in_array('COUNT', $items))
+ if (in_array('COUNT', $items)) {
$result['COUNT'] = count($response);
- if (in_array('MIN', $items))
+ }
+ if (in_array('MIN', $items)) {
$result['MIN'] = !empty($response) ? min($response) : 0;
- if (in_array('MAX', $items))
+ }
+ if (in_array('MAX', $items)) {
$result['MAX'] = !empty($response) ? max($response) : 0;
- if (in_array('ALL', $items))
+ }
+ if (in_array('ALL', $items)) {
$result['ALL'] = $this->compressMessageSet($response, true);
+ }
return $result;
}
else {
return $response;
}
- }
+ }
}
- return false;
+ return false;
}
/**
@@ -1879,9 +2049,9 @@ class rcube_imap_generic
private function _listMailboxes($ref, $mailbox, $subscribed=false,
$status_opts=array(), $select_opts=array())
{
- if (!strlen($mailbox)) {
- $mailbox = '*';
- }
+ if (!strlen($mailbox)) {
+ $mailbox = '*';
+ }
$args = array();
@@ -1913,7 +2083,7 @@ class rcube_imap_generic
// Add to result array
if (!$lstatus) {
- $folders[] = $mailbox;
+ $folders[] = $mailbox;
}
else {
$folders[$mailbox] = array();
@@ -1937,406 +2107,378 @@ class rcube_imap_generic
$folders[$mailbox][$name] = $value;
}
}
- }
+ }
return $folders;
}
- return false;
+ return false;
}
function fetchMIMEHeaders($mailbox, $id, $parts, $mime=true)
{
- if (!$this->select($mailbox)) {
- return false;
- }
+ if (!$this->select($mailbox)) {
+ return false;
+ }
- $result = false;
- $parts = (array) $parts;
- $key = $this->nextTag();
- $peeks = '';
- $idx = 0;
+ $result = false;
+ $parts = (array) $parts;
+ $key = $this->nextTag();
+ $peeks = '';
+ $idx = 0;
$type = $mime ? 'MIME' : 'HEADER';
- // format request
- foreach($parts as $part)
- $peeks[] = "BODY.PEEK[$part.$type]";
+ // format request
+ foreach($parts as $part) {
+ $peeks[] = "BODY.PEEK[$part.$type]";
+ }
- $request = "$key FETCH $id (" . implode(' ', $peeks) . ')';
+ $request = "$key FETCH $id (" . implode(' ', $peeks) . ')';
- // send request
- if (!$this->putLine($request)) {
+ // send request
+ if (!$this->putLine($request)) {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
- return false;
- }
+ return false;
+ }
- do {
- $line = $this->readLine(1024);
- $line = $this->multLine($line);
+ do {
+ $line = $this->readLine(1024);
+ $line = $this->multLine($line);
- if (preg_match('/BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) {
- $idx = $matches[1];
- $result[$idx] = preg_replace('/^(\* '.$id.' FETCH \()?\s*BODY\['.$idx.'\.'.$type.'\]\s+/', '', $line);
- $result[$idx] = trim($result[$idx], '"');
- $result[$idx] = rtrim($result[$idx], "\t\r\n\0\x0B");
- }
- } while (!$this->startsWith($line, $key, true));
+ if (preg_match('/BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) {
+ $idx = $matches[1];
+ $result[$idx] = preg_replace('/^(\* '.$id.' FETCH \()?\s*BODY\['.$idx.'\.'.$type.'\]\s+/', '', $line);
+ $result[$idx] = trim($result[$idx], '"');
+ $result[$idx] = rtrim($result[$idx], "\t\r\n\0\x0B");
+ }
+ } while (!$this->startsWith($line, $key, true));
- return $result;
+ return $result;
}
function fetchPartHeader($mailbox, $id, $is_uid=false, $part=NULL)
{
- $part = empty($part) ? 'HEADER' : $part.'.MIME';
+ $part = empty($part) ? 'HEADER' : $part.'.MIME';
return $this->handlePartBody($mailbox, $id, $is_uid, $part);
}
function handlePartBody($mailbox, $id, $is_uid=false, $part='', $encoding=NULL, $print=NULL, $file=NULL)
{
- if (!$this->select($mailbox)) {
+ if (!$this->select($mailbox)) {
return false;
}
- switch ($encoding) {
- case 'base64':
- $mode = 1;
- break;
- case 'quoted-printable':
- $mode = 2;
- break;
- case 'x-uuencode':
- case 'x-uue':
- case 'uue':
- case 'uuencode':
- $mode = 3;
- break;
- default:
- $mode = 0;
- }
-
- // format request
- $reply_key = '* ' . $id;
- $key = $this->nextTag();
- $request = $key . ($is_uid ? ' UID' : '') . " FETCH $id (BODY.PEEK[$part])";
-
- // send request
- if (!$this->putLine($request)) {
+ switch ($encoding) {
+ case 'base64':
+ $mode = 1;
+ break;
+ case 'quoted-printable':
+ $mode = 2;
+ break;
+ case 'x-uuencode':
+ case 'x-uue':
+ case 'uue':
+ case 'uuencode':
+ $mode = 3;
+ break;
+ default:
+ $mode = 0;
+ }
+
+ // format request
+ $reply_key = '* ' . $id;
+ $key = $this->nextTag();
+ $request = $key . ($is_uid ? ' UID' : '') . " FETCH $id (BODY.PEEK[$part])";
+
+ // send request
+ if (!$this->putLine($request)) {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
- return false;
- }
-
- // receive reply line
- do {
- $line = rtrim($this->readLine(1024));
- $a = explode(' ', $line);
- } while (!($end = $this->startsWith($line, $key, true)) && $a[2] != 'FETCH');
-
- $len = strlen($line);
- $result = false;
-
- // handle empty "* X FETCH ()" response
- if ($line[$len-1] == ')' && $line[$len-2] != '(') {
- // one line response, get everything between first and last quotes
- if (substr($line, -4, 3) == 'NIL') {
- // NIL response
- $result = '';
- } else {
- $from = strpos($line, '"') + 1;
- $to = strrpos($line, '"');
- $len = $to - $from;
- $result = substr($line, $from, $len);
- }
-
- if ($mode == 1)
- $result = base64_decode($result);
- else if ($mode == 2)
- $result = quoted_printable_decode($result);
- else if ($mode == 3)
- $result = convert_uudecode($result);
-
- } else if ($line[$len-1] == '}') {
- // multi-line request, find sizes of content and receive that many bytes
- $from = strpos($line, '{') + 1;
- $to = strrpos($line, '}');
- $len = $to - $from;
- $sizeStr = substr($line, $from, $len);
- $bytes = (int)$sizeStr;
- $prev = '';
-
- while ($bytes > 0) {
- $line = $this->readLine(4096);
-
- if ($line === NULL)
- break;
-
- $len = strlen($line);
-
- if ($len > $bytes) {
- $line = substr($line, 0, $bytes);
- $len = strlen($line);
- }
- $bytes -= $len;
+ return false;
+ }
+
+ // receive reply line
+ do {
+ $line = rtrim($this->readLine(1024));
+ $a = explode(' ', $line);
+ } while (!($end = $this->startsWith($line, $key, true)) && $a[2] != 'FETCH');
+
+ $len = strlen($line);
+ $result = false;
+
+ // handle empty "* X FETCH ()" response
+ if ($line[$len-1] == ')' && $line[$len-2] != '(') {
+ // one line response, get everything between first and last quotes
+ if (substr($line, -4, 3) == 'NIL') {
+ // NIL response
+ $result = '';
+ } else {
+ $from = strpos($line, '"') + 1;
+ $to = strrpos($line, '"');
+ $len = $to - $from;
+ $result = substr($line, $from, $len);
+ }
+
+ if ($mode == 1) {
+ $result = base64_decode($result);
+ }
+ else if ($mode == 2) {
+ $result = quoted_printable_decode($result);
+ }
+ else if ($mode == 3) {
+ $result = convert_uudecode($result);
+ }
+
+ } else if ($line[$len-1] == '}') {
+ // multi-line request, find sizes of content and receive that many bytes
+ $from = strpos($line, '{') + 1;
+ $to = strrpos($line, '}');
+ $len = $to - $from;
+ $sizeStr = substr($line, $from, $len);
+ $bytes = (int)$sizeStr;
+ $prev = '';
+
+ while ($bytes > 0) {
+ $line = $this->readLine(4096);
+
+ if ($line === NULL) {
+ break;
+ }
+
+ $len = strlen($line);
+
+ if ($len > $bytes) {
+ $line = substr($line, 0, $bytes);
+ $len = strlen($line);
+ }
+ $bytes -= $len;
// BASE64
- if ($mode == 1) {
- $line = rtrim($line, "\t\r\n\0\x0B");
- // create chunks with proper length for base64 decoding
- $line = $prev.$line;
- $length = strlen($line);
- if ($length % 4) {
- $length = floor($length / 4) * 4;
- $prev = substr($line, $length);
- $line = substr($line, 0, $length);
- }
- else
- $prev = '';
- $line = base64_decode($line);
+ if ($mode == 1) {
+ $line = rtrim($line, "\t\r\n\0\x0B");
+ // create chunks with proper length for base64 decoding
+ $line = $prev.$line;
+ $length = strlen($line);
+ if ($length % 4) {
+ $length = floor($length / 4) * 4;
+ $prev = substr($line, $length);
+ $line = substr($line, 0, $length);
+ }
+ else
+ $prev = '';
+ $line = base64_decode($line);
// QUOTED-PRINTABLE
- } else if ($mode == 2) {
- $line = rtrim($line, "\t\r\0\x0B");
+ } else if ($mode == 2) {
+ $line = rtrim($line, "\t\r\0\x0B");
$line = quoted_printable_decode($line);
// Remove NULL characters (#1486189)
$line = str_replace("\x00", '', $line);
// UUENCODE
- } else if ($mode == 3) {
- $line = rtrim($line, "\t\r\n\0\x0B");
- if ($line == 'end' || preg_match('/^begin\s+[0-7]+\s+.+$/', $line))
- continue;
+ } else if ($mode == 3) {
+ $line = rtrim($line, "\t\r\n\0\x0B");
+ if ($line == 'end' || preg_match('/^begin\s+[0-7]+\s+.+$/', $line))
+ continue;
$line = convert_uudecode($line);
// default
- } else {
- $line = rtrim($line, "\t\r\n\0\x0B") . "\n";
- }
-
- if ($file)
- fwrite($file, $line);
- else if ($print)
- echo $line;
- else
- $result .= $line;
- }
- }
+ } else {
+ $line = rtrim($line, "\t\r\n\0\x0B") . "\n";
+ }
- // read in anything up until last line
- if (!$end)
- do {
- $line = $this->readLine(1024);
- } while (!$this->startsWith($line, $key, true));
+ if ($file)
+ fwrite($file, $line);
+ else if ($print)
+ echo $line;
+ else
+ $result .= $line;
+ }
+ }
- if ($result !== false) {
- if ($file) {
- fwrite($file, $result);
- } else if ($print) {
- echo $result;
- } else
- return $result;
- return true;
- }
+ // read in anything up until last line
+ if (!$end)
+ do {
+ $line = $this->readLine(1024);
+ } while (!$this->startsWith($line, $key, true));
+
+ if ($result !== false) {
+ if ($file) {
+ fwrite($file, $result);
+ } else if ($print) {
+ echo $result;
+ } else
+ return $result;
+ return true;
+ }
- return false;
+ return false;
}
function createFolder($mailbox)
{
$result = $this->execute('CREATE', array($this->escape($mailbox)),
- self::COMMAND_NORESPONSE);
+ self::COMMAND_NORESPONSE);
- return ($result == self::ERROR_OK);
+ return ($result == self::ERROR_OK);
}
function renameFolder($from, $to)
{
$result = $this->execute('RENAME', array($this->escape($from), $this->escape($to)),
- self::COMMAND_NORESPONSE);
-
- return ($result == self::ERROR_OK);
- }
-
- function deleteFolder($mailbox)
- {
- $result = $this->execute('DELETE', array($this->escape($mailbox)),
- self::COMMAND_NORESPONSE);
-
- return ($result == self::ERROR_OK);
- }
-
- function clearFolder($mailbox)
- {
- $num_in_trash = $this->countMessages($mailbox);
- if ($num_in_trash > 0) {
- $this->delete($mailbox, '1:*');
- }
- return ($this->expunge($mailbox) >= 0);
- }
-
- function subscribe($mailbox)
- {
- $result = $this->execute('SUBSCRIBE', array($this->escape($mailbox)),
- self::COMMAND_NORESPONSE);
-
- return ($result == self::ERROR_OK);
- }
-
- function unsubscribe($mailbox)
- {
- $result = $this->execute('UNSUBSCRIBE', array($this->escape($mailbox)),
- self::COMMAND_NORESPONSE);
+ self::COMMAND_NORESPONSE);
- return ($result == self::ERROR_OK);
+ return ($result == self::ERROR_OK);
}
function append($mailbox, &$message)
{
- if (!$mailbox) {
- return false;
- }
+ if (!$mailbox) {
+ return false;
+ }
- $message = str_replace("\r", '', $message);
- $message = str_replace("\n", "\r\n", $message);
+ $message = str_replace("\r", '', $message);
+ $message = str_replace("\n", "\r\n", $message);
- $len = strlen($message);
- if (!$len) {
- return false;
- }
+ $len = strlen($message);
+ if (!$len) {
+ return false;
+ }
$key = $this->nextTag();
- $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox),
+ $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox),
$len, ($this->prefs['literal+'] ? '+' : ''));
- if ($this->putLine($request)) {
+ if ($this->putLine($request)) {
// Don't wait when LITERAL+ is supported
if (!$this->prefs['literal+']) {
- $line = $this->readLine(512);
+ $line = $this->readReply();
- if ($line[0] != '+') {
- $this->parseResult($line, 'APPEND: ');
- return false;
- }
+ if ($line[0] != '+') {
+ $this->parseResult($line, 'APPEND: ');
+ return false;
+ }
}
- if (!$this->putLine($message)) {
+ if (!$this->putLine($message)) {
return false;
}
- do {
- $line = $this->readLine();
- } while (!$this->startsWith($line, $key, true, true));
+ do {
+ $line = $this->readLine();
+ } while (!$this->startsWith($line, $key, true, true));
// Clear internal status cache
unset($this->data['STATUS:'.$mailbox]);
- return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK);
- }
+ return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK);
+ }
else {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
}
- return false;
+ return false;
}
function appendFromFile($mailbox, $path, $headers=null)
{
- if (!$mailbox) {
- return false;
- }
+ if (!$mailbox) {
+ return false;
+ }
- // open message file
- $in_fp = false;
- if (file_exists(realpath($path))) {
- $in_fp = fopen($path, 'r');
- }
- if (!$in_fp) {
- $this->setError(self::ERROR_UNKNOWN, "Couldn't open $path for reading");
- return false;
- }
+ // open message file
+ $in_fp = false;
+ if (file_exists(realpath($path))) {
+ $in_fp = fopen($path, 'r');
+ }
+ if (!$in_fp) {
+ $this->setError(self::ERROR_UNKNOWN, "Couldn't open $path for reading");
+ return false;
+ }
$body_separator = "\r\n\r\n";
- $len = filesize($path);
+ $len = filesize($path);
- if (!$len) {
- return false;
- }
+ if (!$len) {
+ return false;
+ }
if ($headers) {
$headers = preg_replace('/[\r\n]+$/', '', $headers);
$len += strlen($headers) + strlen($body_separator);
}
- // send APPEND command
- $key = $this->nextTag();
- $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox),
+ // send APPEND command
+ $key = $this->nextTag();
+ $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox),
$len, ($this->prefs['literal+'] ? '+' : ''));
- if ($this->putLine($request)) {
+ if ($this->putLine($request)) {
// Don't wait when LITERAL+ is supported
if (!$this->prefs['literal+']) {
- $line = $this->readLine(512);
+ $line = $this->readReply();
- if ($line[0] != '+') {
- $this->parseResult($line, 'APPEND: ');
- return false;
- }
+ if ($line[0] != '+') {
+ $this->parseResult($line, 'APPEND: ');
+ return false;
+ }
}
// send headers with body separator
if ($headers) {
- $this->putLine($headers . $body_separator, false);
+ $this->putLine($headers . $body_separator, false);
}
- // send file
- while (!feof($in_fp) && $this->fp) {
- $buffer = fgets($in_fp, 4096);
- $this->putLine($buffer, false);
- }
- fclose($in_fp);
+ // send file
+ while (!feof($in_fp) && $this->fp) {
+ $buffer = fgets($in_fp, 4096);
+ $this->putLine($buffer, false);
+ }
+ fclose($in_fp);
- if (!$this->putLine('')) { // \r\n
+ if (!$this->putLine('')) { // \r\n
return false;
}
- // read response
- do {
- $line = $this->readLine();
- } while (!$this->startsWith($line, $key, true, true));
+ // read response
+ do {
+ $line = $this->readLine();
+ } while (!$this->startsWith($line, $key, true, true));
// Clear internal status cache
unset($this->data['STATUS:'.$mailbox]);
- return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK);
- }
+ return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK);
+ }
else {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
}
- return false;
+ return false;
}
function fetchStructureString($mailbox, $id, $is_uid=false)
{
- if (!$this->select($mailbox)) {
+ if (!$this->select($mailbox)) {
return false;
}
- $key = $this->nextTag();
- $result = false;
+ $key = $this->nextTag();
+ $result = false;
$command = $key . ($is_uid ? ' UID' : '') ." FETCH $id (BODYSTRUCTURE)";
- if ($this->putLine($command)) {
- do {
- $line = $this->readLine(5000);
- $line = $this->multLine($line, true);
- if (!preg_match("/^$key /", $line))
- $result .= $line;
- } while (!$this->startsWith($line, $key, true, true));
+ if ($this->putLine($command)) {
+ do {
+ $line = $this->readLine(5000);
+ $line = $this->multLine($line, true);
+ if (!preg_match("/^$key /", $line))
+ $result .= $line;
+ } while (!$this->startsWith($line, $key, true, true));
- $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, -1));
- }
+ $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, -1));
+ }
else {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $command");
}
- return $result;
+ return $result;
}
function getQuota()
@@ -2347,49 +2489,50 @@ class rcube_imap_generic
* QUOTA user/rchijiiwa1 (STORAGE 654 9765)
* OK Completed
*/
- $result = false;
- $quota_lines = array();
- $key = $this->nextTag();
+ $result = false;
+ $quota_lines = array();
+ $key = $this->nextTag();
$command = $key . ' GETQUOTAROOT INBOX';
- // get line(s) containing quota info
- if ($this->putLine($command)) {
- do {
- $line = rtrim($this->readLine(5000));
- if (preg_match('/^\* QUOTA /', $line)) {
- $quota_lines[] = $line;
- }
- } while (!$this->startsWith($line, $key, true, true));
- }
+ // get line(s) containing quota info
+ if ($this->putLine($command)) {
+ do {
+ $line = rtrim($this->readLine(5000));
+ if (preg_match('/^\* QUOTA /', $line)) {
+ $quota_lines[] = $line;
+ }
+ } while (!$this->startsWith($line, $key, true, true));
+ }
else {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $command");
}
- // return false if not found, parse if found
- $min_free = PHP_INT_MAX;
- foreach ($quota_lines as $key => $quota_line) {
- $quota_line = str_replace(array('(', ')'), '', $quota_line);
- $parts = explode(' ', $quota_line);
- $storage_part = array_search('STORAGE', $parts);
+ // return false if not found, parse if found
+ $min_free = PHP_INT_MAX;
+ foreach ($quota_lines as $key => $quota_line) {
+ $quota_line = str_replace(array('(', ')'), '', $quota_line);
+ $parts = explode(' ', $quota_line);
+ $storage_part = array_search('STORAGE', $parts);
- if (!$storage_part)
+ if (!$storage_part) {
continue;
+ }
- $used = intval($parts[$storage_part+1]);
- $total = intval($parts[$storage_part+2]);
- $free = $total - $used;
-
- // return lowest available space from all quotas
- if ($free < $min_free) {
- $min_free = $free;
- $result['used'] = $used;
- $result['total'] = $total;
- $result['percent'] = min(100, round(($used/max(1,$total))*100));
- $result['free'] = 100 - $result['percent'];
- }
- }
+ $used = intval($parts[$storage_part+1]);
+ $total = intval($parts[$storage_part+2]);
+ $free = $total - $used;
+
+ // return lowest available space from all quotas
+ if ($free < $min_free) {
+ $min_free = $free;
+ $result['used'] = $used;
+ $result['total'] = $total;
+ $result['percent'] = min(100, round(($used/max(1,$total))*100));
+ $result['free'] = 100 - $result['percent'];
+ }
+ }
- return $result;
+ return $result;
}
/**
@@ -2414,7 +2557,7 @@ class rcube_imap_generic
$this->escape($mailbox), $this->escape($user), strtolower($acl)),
self::COMMAND_NORESPONSE);
- return ($result == self::ERROR_OK);
+ return ($result == self::ERROR_OK);
}
/**
@@ -2434,7 +2577,7 @@ class rcube_imap_generic
$this->escape($mailbox), $this->escape($user)),
self::COMMAND_NORESPONSE);
- return ($result == self::ERROR_OK);
+ return ($result == self::ERROR_OK);
}
/**
@@ -2554,11 +2697,12 @@ class rcube_imap_generic
}
foreach ($entries as $name => $value) {
- if ($value === null)
+ if ($value === null) {
$value = 'NIL';
- else
+ }
+ else {
$value = sprintf("{%d}\r\n%s", strlen($value), $value);
-
+ }
$entries[$name] = $this->escape($name) . ' ' . $value;
}
@@ -2583,16 +2727,18 @@ class rcube_imap_generic
*/
function deleteMetadata($mailbox, $entries)
{
- if (!is_array($entries) && !empty($entries))
+ if (!is_array($entries) && !empty($entries)) {
$entries = explode(' ', $entries);
+ }
if (empty($entries)) {
$this->setError(self::ERROR_COMMAND, "Wrong argument for SETMETADATA command");
return false;
}
- foreach ($entries as $entry)
+ foreach ($entries as $entry) {
$data[$entry] = NULL;
+ }
return $this->setMetadata($mailbox, $data);
}
@@ -2628,13 +2774,16 @@ class rcube_imap_generic
$options = array_change_key_case($options, CASE_UPPER);
$opts = array();
- if (!empty($options['MAXSIZE']))
+ if (!empty($options['MAXSIZE'])) {
$opts[] = 'MAXSIZE '.intval($options['MAXSIZE']);
- if (!empty($options['DEPTH']))
+ }
+ if (!empty($options['DEPTH'])) {
$opts[] = 'DEPTH '.intval($options['DEPTH']);
+ }
- if ($opts)
+ if ($opts) {
$optlist = '(' . implode(' ', $opts) . ')';
+ }
}
$optlist .= ($optlist ? ' ' : '') . $entlist;
@@ -2701,10 +2850,12 @@ class rcube_imap_generic
$attr = $entry[1];
$value = $entry[2];
- if ($value === null)
+ if ($value === null) {
$value = 'NIL';
- else
+ }
+ else {
$value = sprintf("{%d}\r\n%s", strlen($value), $value);
+ }
$entries[] = sprintf('%s (%s %s)',
$this->escape($name), $this->escape($attr), $value);
@@ -2796,10 +2947,12 @@ class rcube_imap_generic
for ($x=0, $len=count($attribs); $x<$len;) {
$attr = $attribs[$x++];
$value = $attribs[$x++];
- if ($attr == 'value.priv')
+ if ($attr == 'value.priv') {
$res['/private' . $entry] = $value;
- else if ($attr == 'value.shared')
+ }
+ else if ($attr == 'value.shared') {
$res['/shared' . $entry] = $value;
+ }
}
}
$last_entry = $entry;
@@ -2847,43 +3000,45 @@ class rcube_imap_generic
$noresp = ($options & self::COMMAND_NORESPONSE);
$response = $noresp ? null : '';
- if (!empty($arguments))
+ if (!empty($arguments)) {
$query .= ' ' . implode(' ', $arguments);
+ }
// Send command
- if (!$this->putLineC($query)) {
+ if (!$this->putLineC($query)) {
$this->setError(self::ERROR_COMMAND, "Unable to send command: $query");
- return $noresp ? self::ERROR_COMMAND : array(self::ERROR_COMMAND, '');
- }
+ return $noresp ? self::ERROR_COMMAND : array(self::ERROR_COMMAND, '');
+ }
// Parse response
- do {
- $line = $this->readLine(4096);
- if ($response !== null)
- $response .= $line;
- } while (!$this->startsWith($line, $tag . ' ', true, true));
+ do {
+ $line = $this->readLine(4096);
+ if ($response !== null) {
+ $response .= $line;
+ }
+ } while (!$this->startsWith($line, $tag . ' ', true, true));
- $code = $this->parseResult($line, $command . ': ');
+ $code = $this->parseResult($line, $command . ': ');
// Remove last line from response
- if ($response) {
- $line_len = min(strlen($response), strlen($line) + 2);
+ if ($response) {
+ $line_len = min(strlen($response), strlen($line) + 2);
$response = substr($response, 0, -$line_len);
}
- // optional CAPABILITY response
- if (($options & self::COMMAND_CAPABILITY) && $code == self::ERROR_OK
+ // optional CAPABILITY response
+ if (($options & self::COMMAND_CAPABILITY) && $code == self::ERROR_OK
&& preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)
) {
- $this->parseCapability($matches[1], true);
- }
+ $this->parseCapability($matches[1], true);
+ }
- // return last line only (without command tag and result)
+ // return last line only (without command tag, result and response code)
if ($line && ($options & self::COMMAND_LASTLINE)) {
- $response = preg_replace("/^$tag (OK|NO|BAD|BYE|PREAUTH)?\s*/i", '', trim($line));
+ $response = preg_replace("/^$tag (OK|NO|BAD|BYE|PREAUTH)?\s*(\[[a-z-]+\])?\s*/i", '', trim($line));
}
- return $noresp ? $code : array($code, $response);
+ return $noresp ? $code : array($code, $response);
}
/**
@@ -2917,7 +3072,7 @@ class rcube_imap_generic
$result[] = substr($str, $epos + 3, $bytes);
// Advance the string
$str = substr($str, $epos + 3 + $bytes);
- break;
+ break;
// Quoted string
case '"':
@@ -2939,17 +3094,17 @@ class rcube_imap_generic
// we need to strip slashes for a quoted string
$result[] = stripslashes(substr($str, 1, $pos - 1));
$str = substr($str, $pos + 1);
- break;
+ break;
// Parenthesized list
case '(':
$str = substr($str, 1);
$result[] = self::tokenizeResponse($str);
- break;
+ break;
case ')':
$str = substr($str, 1);
return $result;
- break;
+ break;
// String atom, number, NIL, *, %
default:
@@ -2968,7 +3123,7 @@ class rcube_imap_generic
$result[] = $m[1] == 'NIL' ? NULL : $m[1];
$str = substr($str, strlen($m[1]));
}
- break;
+ break;
}
}
@@ -2977,12 +3132,14 @@ class rcube_imap_generic
private function _xor($string, $string2)
{
- $result = '';
- $size = strlen($string);
- for ($i=0; $i<$size; $i++) {
- $result .= chr(ord($string[$i]) ^ ord($string2[$i]));
- }
- return $result;
+ $result = '';
+ $size = strlen($string);
+
+ for ($i=0; $i<$size; $i++) {
+ $result .= chr(ord($string[$i]) ^ ord($string2[$i]));
+ }
+
+ return $result;
}
/**
@@ -2994,31 +3151,33 @@ class rcube_imap_generic
*/
private function strToTime($date)
{
- // support non-standard "GMTXXXX" literal
- $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date);
+ // support non-standard "GMTXXXX" literal
+ $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date);
// if date parsing fails, we have a date in non-rfc format.
- // remove token from the end and try again
- while ((($ts = @strtotime($date))===false) || ($ts < 0)) {
- $d = explode(' ', $date);
- array_pop($d);
- if (!$d) break;
- $date = implode(' ', $d);
- }
+ // remove token from the end and try again
+ while ((($ts = @strtotime($date))===false) || ($ts < 0)) {
+ $d = explode(' ', $date);
+ array_pop($d);
+ if (!$d) {
+ break;
+ }
+ $date = implode(' ', $d);
+ }
- $ts = (int) $ts;
+ $ts = (int) $ts;
- return $ts < 0 ? 0 : $ts;
+ return $ts < 0 ? 0 : $ts;
}
private function splitHeaderLine($string)
{
- $pos = strpos($string, ':');
- if ($pos>0) {
- $res[0] = substr($string, 0, $pos);
- $res[1] = trim(substr($string, $pos+1));
- return $res;
- }
- return $string;
+ $pos = strpos($string, ':');
+ if ($pos>0) {
+ $res[0] = substr($string, 0, $pos);
+ $res[1] = trim(substr($string, $pos+1));
+ return $res;
+ }
+ return $string;
}
private function parseCapability($str, $trusted=false)
@@ -3046,17 +3205,15 @@ class rcube_imap_generic
*/
static function escape($string)
{
- // NIL
if ($string === null) {
return 'NIL';
}
- // empty string
else if ($string === '') {
return '""';
}
- // string: special chars: SP, CTL, (, ), {, %, *, ", \, ]
else if (preg_match('/([\x00-\x20\x28-\x29\x7B\x25\x2A\x22\x5C\x5D\x7F]+)/', $string)) {
- return '"' . strtr($string, array('"'=>'\\"', '\\' => '\\\\')) . '"';
+ // string: special chars: SP, CTL, (, ), {, %, *, ", \, ]
+ return '"' . strtr($string, array('"'=>'\\"', '\\' => '\\\\')) . '"';
}
// atom
@@ -3065,7 +3222,7 @@ class rcube_imap_generic
static function unEscape($string)
{
- return strtr($string, array('\\"'=>'"', '\\\\' => '\\'));
+ return strtr($string, array('\\"'=>'"', '\\\\' => '\\'));
}
}
diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php
index 790f8d9bd..b6c865d1c 100644
--- a/program/include/rcube_message.php
+++ b/program/include/rcube_message.php
@@ -426,7 +426,7 @@ class rcube_message
$mail_part->type = 'content';
$this->parts[] = $mail_part;
}
-
+
// list as attachment as well
if (!empty($mail_part->filename))
$this->attachments[] = $mail_part;
@@ -473,6 +473,10 @@ class rcube_message
// attachment encapsulated within message/rfc822 part needs further decoding (#1486743)
else if ($part_orig_mimetype == 'message/rfc822') {
$this->parse_structure($mail_part, true);
+
+ // list as attachment as well (mostly .eml)
+ if (!empty($mail_part->filename))
+ $this->attachments[] = $mail_part;
}
// is a regular attachment (content-type name regexp according to RFC4288.4.2)
else if (preg_match('/^[a-z0-9!#$&.+^_-]+\/[a-z0-9!#$&.+^_-]+$/i', $part_mimetype)) {
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index 8a9eff4f5..d6ea3dce2 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -1045,7 +1045,7 @@ class rcube_template extends rcube_html_page
private function login_form($attrib)
{
$default_host = $this->config['default_host'];
- $attrib['autocomplete'] = $this->config['login_autocomplete'] ? null : 'off';
+ $autocomplete = (int) $this->config['login_autocomplete'];
$_SESSION['temp'] = true;
@@ -1054,11 +1054,18 @@ class rcube_template extends rcube_html_page
if (empty($url) && !preg_match('/_(task|action)=logout/', $_SERVER['QUERY_STRING']))
$url = $_SERVER['QUERY_STRING'];
- $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser') + $attrib);
- $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd') + $attrib);
+ // set atocomplete attribute
+ $user_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off');
+ $host_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off');
+ $pass_attrib = $autocomplete > 1 ? array() : array('autocomplete' => 'off');
+
$input_action = new html_hiddenfield(array('name' => '_action', 'value' => 'login'));
$input_tzone = new html_hiddenfield(array('name' => '_timezone', 'id' => 'rcmlogintz', 'value' => '_default_'));
$input_url = new html_hiddenfield(array('name' => '_url', 'id' => 'rcmloginurl', 'value' => $url));
+ $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser')
+ + $attrib + $user_attrib);
+ $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd')
+ + $attrib + $pass_attrib);
$input_host = null;
if (is_array($default_host) && count($default_host) > 1) {
@@ -1080,7 +1087,8 @@ class rcube_template extends rcube_html_page
'name' => '_host', 'id' => 'rcmloginhost', 'value' => $host) + $attrib);
}
else if (empty($default_host)) {
- $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost') + $attrib);
+ $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost')
+ + $attrib + $host_attrib);
}
$form_name = !empty($attrib['form']) ? $attrib['form'] : 'form';
@@ -1090,7 +1098,7 @@ class rcube_template extends rcube_html_page
$table = new html_table(array('cols' => 2));
$table->add('title', html::label('rcmloginuser', Q(rcube_label('username'))));
- $table->add(null, $input_user->show(get_input_value('_user', RCUBE_INPUT_POST)));
+ $table->add(null, $input_user->show(get_input_value('_user', RCUBE_INPUT_GPC)));
$table->add('title', html::label('rcmloginpwd', Q(rcube_label('password'))));
$table->add(null, $input_pass->show());
@@ -1098,7 +1106,7 @@ class rcube_template extends rcube_html_page
// add host selection row
if (is_object($input_host) && !$hide_host) {
$table->add('title', html::label('rcmloginhost', Q(rcube_label('server'))));
- $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_POST)));
+ $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_GPC)));
}
$out = $input_action->show();
diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php
index e4506cff7..ee6db77cc 100644
--- a/program/include/rcube_user.php
+++ b/program/include/rcube_user.php
@@ -358,13 +358,17 @@ class rcube_user
{
$dbh = rcmail::get_instance()->get_dbh();
+ // use BINARY (case-sensitive) comparison on MySQL, other engines are case-sensitive
+ $prefix = preg_match('/^mysql/', $dbh->db_provider) ? 'BINARY ' : '';
+
// query for matching user name
$query = "SELECT * FROM ".get_table_name('users')." WHERE mail_host = ? AND %s = ?";
- $sql_result = $dbh->query(sprintf($query, 'username'), $host, $user);
+
+ $sql_result = $dbh->query(sprintf($query, $prefix.'username'), $host, $user);
// query for matching alias
if (!($sql_arr = $dbh->fetch_assoc($sql_result))) {
- $sql_result = $dbh->query(sprintf($query, 'alias'), $host, $user);
+ $sql_result = $dbh->query(sprintf($query, $prefix.'alias'), $host, $user);
$sql_arr = $dbh->fetch_assoc($sql_result);
}
diff --git a/program/js/app.js b/program/js/app.js
index 7ab31cb46..90c18b6e6 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -148,7 +148,7 @@ function rcube_webmail()
this.init_buttons();
// tell parent window that this frame is loaded
- if (this.env.framed && parent.rcmail && parent.rcmail.set_busy) {
+ if (this.is_framed()) {
parent.rcmail.set_busy(false, null, parent.rcmail.env.frame_lock);
parent.rcmail.env.frame_lock = null;
}
@@ -222,7 +222,7 @@ function rcube_webmail()
}
// make preview/message frame visible
- if (this.env.action == 'preview' && this.env.framed && parent.rcmail) {
+ if (this.env.action == 'preview' && this.is_framed()) {
this.enable_command('compose', 'add-contact', false);
parent.rcmail.show_contentframe(true);
}
@@ -343,8 +343,15 @@ function rcube_webmail()
this.enable_command('add', this.env.identities_level < 2);
this.enable_command('save', 'delete', 'edit', 'toggle-editor', true);
}
- else if (this.env.action=='folders')
- this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', 'delete-folder', 'enable-threading', 'disable-threading', true);
+ else if (this.env.action=='folders') {
+ this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
+ }
+ else if (this.env.action == 'edit-folder' && this.gui_objects.editform) {
+ this.enable_command('save', 'folder-size', true);
+ parent.rcmail.env.messagecount = this.env.messagecount;
+ parent.rcmail.enable_command('purge', this.env.messagecount);
+ $("input[type='text']").first().select();
+ }
if (this.gui_objects.identitieslist) {
this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist, {multiselect:false, draggable:false, keyboard:false});
@@ -435,7 +442,7 @@ function rcube_webmail()
// command not supported or allowed
if (!this.commands[command]) {
// pass command to parent window
- if (this.env.framed && parent.rcmail && parent.rcmail.command)
+ if (this.is_framed())
parent.rcmail.command(command, props);
return false;
@@ -1120,12 +1127,12 @@ function rcube_webmail()
this.reload = function(delay)
{
- if (this.env.framed && parent.rcmail)
+ if (this.is_framed())
parent.rcmail.reload(delay);
else if (delay)
window.setTimeout(function(){ rcmail.reload(); }, delay);
else if (window.location)
- location.href = this.env.comm_path;
+ location.href = this.env.comm_path + (this.env.action ? '&_action='+this.env.action : '');
};
// Add variable to GET string, replace old value if exists
@@ -1149,6 +1156,12 @@ function rcube_webmail()
return url + '?' + name + '=' + value;
};
+ this.is_framed = function()
+ {
+ return (this.env.framed && parent.rcmail);
+ };
+
+
/*********************************************************/
/********* event handling methods *********/
/*********************************************************/
@@ -1528,7 +1541,7 @@ function rcube_webmail()
if (this.task == 'mail')
allow = (this.env.mailboxes[id] && this.env.mailboxes[id].id != this.env.mailbox && !this.env.mailboxes[id].virtual);
else if (this.task == 'settings')
- allow = (id != this.env.folder);
+ allow = (id != this.env.mailbox);
else if (this.task == 'addressbook') {
if (id != this.env.source && this.env.contactfolders[id]) {
if (this.env.contactfolders[id].type == 'group') {
@@ -1823,7 +1836,7 @@ function rcube_webmail()
this.show_contentframe(true);
else {
if (!this.env.frame_lock) {
- (parent.rcmail ? parent.rcmail : this).env.frame_lock = this.set_busy(true, 'loading');
+ (this.is_framed() ? parent.rcmail : this).env.frame_lock = this.set_busy(true, 'loading');
}
target.location.href = this.env.comm_path+url;
@@ -2373,8 +2386,10 @@ function rcube_webmail()
}
}
+ add_url += '&_uid='+this.uids_to_list(a_uids);
+
// send request to server
- this.http_post('copy', '_uid='+a_uids.join(',')+'&_mbox='+urlencode(this.env.mailbox)+add_url, lock);
+ this.http_post('copy', '_mbox='+urlencode(this.env.mailbox)+add_url, lock);
};
// move selected messages to the specified mailbox
@@ -2387,8 +2402,8 @@ function rcube_webmail()
if (!mbox || mbox == this.env.mailbox || (!this.env.uid && (!this.message_list || !this.message_list.get_selection().length)))
return;
- var lock = false;
- var add_url = '&_target_mbox='+urlencode(mbox)+'&_from='+(this.env.action ? this.env.action : '');
+ var lock = false,
+ add_url = '&_target_mbox='+urlencode(mbox)+'&_from='+(this.env.action ? this.env.action : '');
// show wait message
if (this.env.action == 'show') {
@@ -2729,24 +2744,23 @@ function rcube_webmail()
this.expunge_mailbox = function(mbox)
{
- var lock = false;
- var add_url = '';
+ var lock = false,
+ url = '_mbox='+urlencode(mbox);
// lock interface if it's the active mailbox
if (mbox == this.env.mailbox) {
lock = this.set_busy(true, 'loading');
- add_url = '&_reload=1';
+ url += '&_reload=1';
}
// send request to server
- var url = '_mbox='+urlencode(mbox);
- this.http_post('expunge', url+add_url, lock);
+ this.http_post('expunge', url, lock);
};
this.purge_mailbox = function(mbox)
{
- var lock = false;
- var add_url = '';
+ var lock = false,
+ url = '_mbox='+urlencode(mbox);
if (!confirm(this.get_label('purgefolderconfirm')))
return false;
@@ -2754,13 +2768,11 @@ function rcube_webmail()
// lock interface if it's the active mailbox
if (mbox == this.env.mailbox) {
lock = this.set_busy(true, 'loading');
- add_url = '&_reload=1';
+ url += '&_reload=1';
}
// send request to server
- var url = '_mbox='+urlencode(mbox);
- this.http_post('purge', url+add_url, lock);
- return true;
+ this.http_post('purge', url, lock);
};
// test if purge command is allowed
@@ -2807,7 +2819,7 @@ function rcube_webmail()
input_subject = $("input[name='_subject']"),
input_message = $("[name='_message']").get(0),
html_mode = $("input[name='_is_html']").val() == '1',
- ac_fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto'];
+ ac_fields = ['cc', 'bcc', 'replyto', 'followupto'];
// init live search events
this.init_address_input_events(input_to);
@@ -3974,16 +3986,12 @@ function rcube_webmail()
this.init_subscription_list = function()
{
var p = this;
- this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist, {multiselect:false, draggable:true, keyboard:false, toggleselect:true});
+ this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist,
+ {multiselect:false, draggable:true, keyboard:false, toggleselect:true});
this.subscription_list.addEventListener('select', function(o){ p.subscription_select(o); });
this.subscription_list.addEventListener('dragstart', function(o){ p.drag_active = true; });
this.subscription_list.addEventListener('dragend', function(o){ p.subscription_move_folder(o); });
this.subscription_list.row_init = function (row) {
- var anchors = row.obj.getElementsByTagName('a');
- if (anchors[0])
- anchors[0].onclick = function() { p.command('rename-folder', row.id); return false; };
- if (anchors[1])
- anchors[1].onclick = function() { p.command('delete-folder', row.id); return false; };
row.obj.onmouseover = function() { p.focus_subscription(row.id); };
row.obj.onmouseout = function() { p.unfocus_subscription(row.id); };
};
@@ -4060,18 +4068,18 @@ function rcube_webmail()
delim = RegExp.escape(this.env.delimiter),
reg = RegExp('['+delim+']?[^'+delim+']+$');
- if (this.drag_active && this.env.folder && (row = document.getElementById(id)))
+ if (this.drag_active && this.env.mailbox && (row = document.getElementById(id)))
if (this.env.subscriptionrows[id] &&
(folder = this.env.subscriptionrows[id][0])) {
if (this.check_droptarget(folder) &&
- !this.env.subscriptionrows[this.get_folder_row_id(this.env.folder)][2] &&
- (folder != this.env.folder.replace(reg, '')) &&
- (!folder.match(new RegExp('^'+RegExp.escape(this.env.folder+this.env.delimiter))))) {
+ !this.env.subscriptionrows[this.get_folder_row_id(this.env.mailbox)][2] &&
+ (folder != this.env.mailbox.replace(reg, '')) &&
+ (!folder.match(new RegExp('^'+RegExp.escape(this.env.mailbox+this.env.delimiter))))) {
this.set_env('dstfolder', folder);
$(row).addClass('droptarget');
}
}
- else if (this.env.folder.match(new RegExp(delim))) {
+ else if (this.env.mailbox.match(new RegExp(delim))) {
this.set_env('dstfolder', this.env.delimiter);
$(this.subscription_list.frame).addClass('droptarget');
}
@@ -4091,15 +4099,19 @@ function rcube_webmail()
this.subscription_select = function(list)
{
var id, folder;
- if ((id = list.get_single_selection()) &&
- this.env.subscriptionrows['rcmrow'+id] &&
- (folder = this.env.subscriptionrows['rcmrow'+id][0]))
- this.set_env('folder', folder);
- else
- this.set_env('folder', null);
- if (this.gui_objects.createfolderhint)
- $(this.gui_objects.createfolderhint).html(this.env.folder ? this.get_label('addsubfolderhint') : '');
+ if (list && (id = list.get_single_selection()) &&
+ (folder = this.env.subscriptionrows['rcmrow'+id])
+ ) {
+ this.set_env('mailbox', folder[0]);
+ this.show_folder(folder[0]);
+ this.enable_command('delete-folder', !folder[2]);
+ }
+ else {
+ this.env.mailbox = null;
+ this.show_contentframe(false);
+ this.enable_command('delete-folder', 'purge', false);
+ }
};
this.subscription_move_folder = function(list)
@@ -4107,129 +4119,35 @@ function rcube_webmail()
var delim = RegExp.escape(this.env.delimiter),
reg = RegExp('['+delim+']?[^'+delim+']+$');
- if (this.env.folder && this.env.dstfolder && (this.env.dstfolder != this.env.folder) &&
- (this.env.dstfolder != this.env.folder.replace(reg, ''))) {
- var reg = new RegExp('[^'+delim+']*['+delim+']', 'g');
- var basename = this.env.folder.replace(reg, '');
- var newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename;
+ if (this.env.mailbox && this.env.dstfolder && (this.env.dstfolder != this.env.mailbox) &&
+ (this.env.dstfolder != this.env.mailbox.replace(reg, ''))
+ ) {
+ reg = new RegExp('[^'+delim+']*['+delim+']', 'g');
+ var lock = this.set_busy(true, 'foldermoving'),
+ basename = this.env.mailbox.replace(reg, ''),
+ newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename;
- var lock = this.set_busy(true, 'foldermoving');
- this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.folder)+'&_folder_newname='+urlencode(newname), lock);
+ this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), lock);
}
this.drag_active = false;
this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder));
};
// tell server to create and subscribe a new mailbox
- this.create_folder = function(name)
- {
- if (this.edit_folder)
- this.reset_folder_rename();
-
- var form;
- if ((form = this.gui_objects.editform) && form.elements['_folder_name']) {
- name = form.elements['_folder_name'].value;
-
- if (name.indexOf(this.env.delimiter)>=0) {
- alert(this.get_label('forbiddencharacter')+' ('+this.env.delimiter+')');
- return false;
- }
-
- if (this.env.folder && name != '')
- name = this.env.folder+this.env.delimiter+name;
-
- var lock = this.set_busy(true, 'foldercreating');
- this.http_post('create-folder', '_name='+urlencode(name), lock);
- }
- else if (form.elements['_folder_name'])
- form.elements['_folder_name'].focus();
- };
-
- // start renaming the mailbox name.
- // this will replace the name string with an input field
- this.rename_folder = function(id)
- {
- var temp, row, form;
-
- // reset current renaming
- if (temp = this.edit_folder) {
- this.reset_folder_rename();
- if (temp == id)
- return;
- }
-
- if (id && this.env.subscriptionrows[id] && (row = document.getElementById(id))) {
- var delim = RegExp.escape(this.env.delimiter),
- reg = new RegExp('.*['+delim+']');
-
- this.name_input = document.createElement('input');
- this.name_input.type = 'text';
- this.name_input.value = this.env.subscriptionrows[id][0].replace(reg, '');
-
- reg = new RegExp('['+delim+']?[^'+delim+']+$');
- this.name_input.__parent = this.env.subscriptionrows[id][0].replace(reg, '');
- this.name_input.onkeydown = function(e){ rcmail.name_input_keydown(e); };
-
- row.cells[0].replaceChild(this.name_input, row.cells[0].firstChild);
- this.edit_folder = id;
- this.name_input.select();
-
- if (form = this.gui_objects.editform)
- form.onsubmit = function(){ return false; };
- }
- };
-
- // remove the input field and write the current mailbox name to the table cell
- this.reset_folder_rename = function()
+ this.create_folder = function()
{
- var cell = this.name_input ? this.name_input.parentNode : null;
-
- if (cell && this.edit_folder && this.env.subscriptionrows[this.edit_folder])
- $(cell).html(this.env.subscriptionrows[this.edit_folder][1]);
-
- this.edit_folder = null;
- };
-
- // handler for keyboard events on the input field
- this.name_input_keydown = function(e)
- {
- var key = rcube_event.get_keycode(e);
-
- // enter
- if (key==13) {
- var newname = this.name_input ? this.name_input.value : null;
- if (this.edit_folder && newname) {
- if (newname.indexOf(this.env.delimiter)>=0) {
- alert(this.get_label('forbiddencharacter')+' ('+this.env.delimiter+')');
- return false;
- }
-
- if (this.name_input.__parent)
- newname = this.name_input.__parent + this.env.delimiter + newname;
-
- var lock = this.set_busy(true, 'folderrenaming');
- this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.subscriptionrows[this.edit_folder][0])+'&_folder_newname='+urlencode(newname), lock);
- }
- }
- // escape
- else if (key==27)
- this.reset_folder_rename();
+ this.show_folder('', this.env.mailbox);
};
// delete a specific mailbox with all its messages
- this.delete_folder = function(id)
+ this.delete_folder = function(name)
{
- var folder = this.env.subscriptionrows[id][0];
-
- if (this.edit_folder)
- this.reset_folder_rename();
+ var id = this.get_folder_row_id(name ? name : this.env.mailbox),
+ folder = this.env.subscriptionrows[id][0];
if (folder && confirm(this.get_label('deletefolderconfirm'))) {
var lock = this.set_busy(true, 'folderdeleting');
- this.http_post('delete-folder', '_mboxes='+urlencode(folder), lock);
- this.set_env('folder', null);
-
- $(this.gui_objects.createfolderhint).html('');
+ this.http_post('delete-folder', '_mbox='+urlencode(folder), lock);
}
};
@@ -4286,18 +4204,8 @@ function rcube_webmail()
// set messages count to zero
row.cells[1].innerHTML = '*';
- // update subscription/threading checkboxes
+ // update subscription checkbox
$('input[name="_subscribed[]"]', row).val(name).attr('checked', true);
- $('input[name="_threaded[]"]', row).val(name).attr('checked', false);
-
- var elem;
- // add new folder to rename-folder list and clear input field
- if (form = this.gui_objects.editform) {
- if (elem = form.elements['_folder_oldname'])
- elem.options[elem.options.length] = new Option(name, name);
- if (elem = form.elements['_folder_name'])
- elem.value = '';
- }
}
this.init_subscription_list();
@@ -4311,72 +4219,37 @@ function rcube_webmail()
// replace an existing table row with a new folder line
this.replace_folder_row = function(oldfolder, newfolder, display_name, before)
{
- var form, elm,
- id = this.get_folder_row_id(oldfolder),
+ var id = this.get_folder_row_id(oldfolder),
row = document.getElementById(id);
// replace an existing table row (if found)
this.add_folder_row(newfolder, display_name, row, before);
-
- // rename folder in rename-folder dropdown
- if ((form = this.gui_objects.editform) && (elm = form.elements['_folder_oldname'])) {
- for (var i=0; i<elm.options.length; i++) {
- if (elm.options[i].value == oldfolder) {
- elm.options[i].text = display_name;
- elm.options[i].value = newfolder;
- break;
- }
- }
-
- form.elements['_folder_newname'].value = '';
- }
};
// remove the table row of a specific mailbox from the table
// (the row will not be removed, just hidden)
this.remove_folder_row = function(folder)
{
- var form, elm, row, id = this.get_folder_row_id(folder);
+ var row, id = this.get_folder_row_id(folder);
if (id && (row = document.getElementById(id)))
row.style.display = 'none';
-
- // remove folder from rename-folder list
- if ((form = this.gui_objects.editform) && (elm = form.elements['_folder_oldname'])) {
- for (var i=0; i<elm.options.length; i++) {
- if (elm.options[i].value == folder) {
- elm.options[i] = null;
- break;
- }
- }
- }
-
- if (form && (elm = form.elements['_folder_newname']))
- elm.value = '';
};
this.subscribe = function(folder)
{
- if (folder)
- this.http_post('subscribe', '_mbox='+urlencode(folder));
+ if (folder) {
+ var lock = this.display_message(this.get_label('foldersubscribing'), 'loading');
+ this.http_post('subscribe', '_mbox='+urlencode(folder), lock);
+ }
};
this.unsubscribe = function(folder)
{
- if (folder)
- this.http_post('unsubscribe', '_mbox='+urlencode(folder));
- };
-
- this.enable_threading = function(folder)
- {
- if (folder)
- this.http_post('enable-threading', '_mbox='+urlencode(folder));
- };
-
- this.disable_threading = function(folder)
- {
- if (folder)
- this.http_post('disable-threading', '_mbox='+urlencode(folder));
+ if (folder) {
+ var lock = this.display_message(this.get_label('folderunsubscribing'), 'loading');
+ this.http_post('unsubscribe', '_mbox='+urlencode(folder), lock);
+ }
};
// helper method to find a specific mailbox row ID
@@ -4395,7 +4268,7 @@ function rcube_webmail()
var cell, td,
new_row = document.createElement('tr');
- for(var n=0; n<row.cells.length; n++) {
+ for (var n=0; n<row.cells.length; n++) {
cell = row.cells[n];
td = document.createElement('td');
@@ -4411,6 +4284,42 @@ function rcube_webmail()
return new_row;
};
+ // when user select a folder in manager
+ this.show_folder = function(folder, path, force)
+ {
+ var target = window,
+ url = '&_action=edit-folder&_mbox='+urlencode(folder);
+
+ if (path)
+ url += '&_path='+urlencode(path);
+
+ if (this.env.contentframe && window.frames && window.frames[this.env.contentframe]) {
+ target = window.frames[this.env.contentframe];
+ url += '&_framed=1';
+ }
+
+ if (String(target.location.href).indexOf(url) >= 0 && !force) {
+ this.show_contentframe(true);
+ }
+ else {
+ if (!this.env.frame_lock) {
+ (parent.rcmail ? parent.rcmail : this).env.frame_lock = this.set_busy(true, 'loading');
+ }
+ target.location.href = this.env.comm_path+url;
+ }
+ };
+
+ this.folder_size = function(folder)
+ {
+ var lock = this.set_busy(true, 'loading');
+ this.http_post('folder-size', '_mbox='+urlencode(folder), lock);
+ };
+
+ this.folder_size_update = function(size)
+ {
+ $('#folder-size').replaceWith(size);
+ };
+
/*********************************************************/
/********* GUI functionality *********/
@@ -4599,7 +4508,7 @@ function rcube_webmail()
this.display_message = function(msg, type)
{
// pass command to parent window
- if (this.env.framed && parent.rcmail)
+ if (this.is_framed())
return parent.rcmail.display_message(msg, type);
if (!this.gui_objects.message) {
@@ -4647,7 +4556,7 @@ function rcube_webmail()
this.hide_message = function(obj, fade)
{
// pass command to parent window
- if (this.env.framed && parent.rcmail)
+ if (this.is_framed())
return parent.rcmail.hide_message(obj, fade);
if (typeof(obj) == 'object') {
diff --git a/program/js/editor.js b/program/js/editor.js
index 2ee4ac1ce..3845e3de4 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -71,8 +71,10 @@ function rcmail_editor_callback()
if (elem && elem.type == 'select-one') {
rcmail.change_identity(elem);
// Focus previously focused element
- if (fe && fe.id != rcmail.env.composebody)
+ if (fe && fe.id != rcmail.env.composebody) {
+ window.focus(); // for WebKit (#1486674)
fe.focus();
+ }
}
// set tabIndex and set focus to element that was focused before
diff --git a/program/js/list.js b/program/js/list.js
index 406590b4c..ae4890f60 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -110,7 +110,7 @@ init_row: function(row)
// set eventhandlers to table row
row.onmousedown = function(e){ return self.drag_row(e, this.uid); };
row.onmouseup = function(e){ return self.click_row(e, this.uid); };
-
+
if (bw.iphone || bw.ipad) {
row.addEventListener('touchstart', function(e) {
if (e.touches.length == 1) {
@@ -223,7 +223,8 @@ focus: function(e)
}
// Un-focus already focused elements
- $('*:focus').blur();
+ $('*:focus', window).blur();
+ $('iframe').each(function() { this.blur(); });
if (e || (e = window.event))
rcube_event.cancel(e);
@@ -699,7 +700,7 @@ select_next: function()
var prev_row = this.get_prev_row();
var new_row = (next_row) ? next_row : prev_row;
if (new_row)
- this.select_row(new_row.uid, false, false);
+ this.select_row(new_row.uid, false, false);
},
@@ -728,7 +729,7 @@ select_last: function(mod_key)
if (row && mod_key) {
this.shift_select(row, mod_key);
this.triggerEvent('select');
- this.scrollto(row);
+ this.scrollto(row);
}
else if (row)
this.select(row);
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
index 481764a5a..c5dd305fa 100644
--- a/program/lib/Mail/mime.php
+++ b/program/lib/Mail/mime.php
@@ -365,30 +365,28 @@ class Mail_mime
* Adds a file to the list of attachments.
*
* @param string $file The file name of the file to attach
- * OR the file contents itself
+ * or the file contents itself
* @param string $c_type The content type
* @param string $name The filename of the attachment
* Only use if $file is the contents
- * @param bool $isfile Whether $file is a filename or not
- * Defaults to true
- * @param string $encoding The type of encoding to use.
- * Defaults to base64.
- * Possible values: 7bit, 8bit, base64,
- * or quoted-printable.
+ * @param bool $isfile Whether $file is a filename or not. Defaults to true
+ * @param string $encoding The type of encoding to use. Defaults to base64.
+ * Possible values: 7bit, 8bit, base64 or quoted-printable.
* @param string $disposition The content-disposition of this file
* Defaults to attachment.
* Possible values: attachment, inline.
- * @param string $charset The character set used in the filename
- * of this attachment.
+ * @param string $charset The character set of attachment's content.
* @param string $language The language of the attachment
* @param string $location The RFC 2557.4 location of the attachment
- * @param string $n_encoding Encoding for attachment name (Content-Type)
+ * @param string $n_encoding Encoding of the attachment's name in Content-Type
* By default filenames are encoded using RFC2231 method
* Here you can set RFC2047 encoding (quoted-printable
* or base64) instead
- * @param string $f_encoding Encoding for attachment filename (Content-Disposition)
- * See $n_encoding description
+ * @param string $f_encoding Encoding of the attachment's filename
+ * in Content-Disposition header.
* @param string $description Content-Description header
+ * @param string $h_charset The character set of the headers e.g. filename
+ * If not specified, $charset will be used
*
* @return mixed True on success or PEAR_Error object
* @access public
@@ -404,7 +402,8 @@ class Mail_mime
$location = '',
$n_encoding = null,
$f_encoding = null,
- $description = ''
+ $description = '',
+ $h_charset = null
) {
$bodyfile = null;
@@ -437,14 +436,15 @@ class Mail_mime
'body_file' => $bodyfile,
'name' => $filename,
'c_type' => $c_type,
- 'encoding' => $encoding,
'charset' => $charset,
+ 'encoding' => $encoding,
'language' => $language,
'location' => $location,
'disposition' => $disposition,
'description' => $description,
'name_encoding' => $n_encoding,
- 'filename_encoding' => $f_encoding
+ 'filename_encoding' => $f_encoding,
+ 'headers_charset' => $h_charset,
);
return true;
@@ -621,7 +621,7 @@ class Mail_mime
$params['content_type'] = $value['c_type'];
$params['encoding'] = 'base64';
$params['disposition'] = 'inline';
- $params['dfilename'] = $value['name'];
+ $params['filename'] = $value['name'];
$params['cid'] = $value['cid'];
$params['body_file'] = $value['body_file'];
$params['eol'] = $this->_build_params['eol'];
@@ -650,19 +650,25 @@ class Mail_mime
function &_addAttachmentPart(&$obj, $value)
{
$params['eol'] = $this->_build_params['eol'];
- $params['dfilename'] = $value['name'];
+ $params['filename'] = $value['name'];
$params['encoding'] = $value['encoding'];
$params['content_type'] = $value['c_type'];
$params['body_file'] = $value['body_file'];
$params['disposition'] = isset($value['disposition']) ?
$value['disposition'] : 'attachment';
- if ($value['charset']) {
+
+ // content charset
+ if (!empty($value['charset'])) {
$params['charset'] = $value['charset'];
}
- if ($value['language']) {
+ // headers charset (filename, description)
+ if (!empty($value['headers_charset'])) {
+ $params['headers_charset'] = $value['headers_charset'];
+ }
+ if (!empty($value['language'])) {
$params['language'] = $value['language'];
}
- if ($value['location']) {
+ if (!empty($value['location'])) {
$params['location'] = $value['location'];
}
if (!empty($value['name_encoding'])) {
@@ -1387,18 +1393,23 @@ class Mail_mime
if ($headers['Content-Type'] == 'text/plain') {
// single-part message: add charset and encoding
+ $charset = 'charset=' . $this->_build_params['text_charset'];
+ // place charset parameter in the same line, if possible
+ // 26 = strlen("Content-Type: text/plain; ")
$headers['Content-Type']
- .= ";$eol charset=" . $this->_build_params['text_charset'];
+ .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset";
$headers['Content-Transfer-Encoding']
= $this->_build_params['text_encoding'];
} else if ($headers['Content-Type'] == 'text/html') {
// single-part message: add charset and encoding
+ $charset = 'charset=' . $this->_build_params['html_charset'];
+ // place charset parameter in the same line, if possible
$headers['Content-Type']
- .= ";$eol charset=" . $this->_build_params['html_charset'];
+ .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset";
$headers['Content-Transfer-Encoding']
= $this->_build_params['html_encoding'];
} else {
- // multipart message: add charset and boundary
+ // multipart message: and boundary
if (!empty($this->_build_params['boundary'])) {
$boundary = $this->_build_params['boundary'];
} else if (!empty($this->_headers['Content-Type'])
diff --git a/program/lib/Mail/mimePart.php b/program/lib/Mail/mimePart.php
index 55ea7a670..60b3601e0 100644
--- a/program/lib/Mail/mimePart.php
+++ b/program/lib/Mail/mimePart.php
@@ -141,17 +141,19 @@ class Mail_mimePart
* content_type - The content type for this part eg multipart/mixed
* encoding - The encoding to use, 7bit, 8bit,
* base64, or quoted-printable
+ * charset - Content character set
* cid - Content ID to apply
* disposition - Content disposition, inline or attachment
* dfilename - Filename parameter for content disposition
* description - Content description
- * charset - Character set to use
- * name_encoding - Encoding for attachment name (Content-Type)
+ * name_encoding - Encoding of the attachment name (Content-Type)
* By default filenames are encoded using RFC2231
* Here you can set RFC2047 encoding (quoted-printable
* or base64) instead
- * filename_encoding - Encoding for attachment filename (Content-Disposition)
+ * filename_encoding - Encoding of the attachment filename (Content-Disposition)
* See 'name_encoding'
+ * headers_charset - Charset of the headers e.g. filename, description.
+ * If not set, 'charset' will be used
* eol - End of line sequence. Default: "\r\n"
* body_file - Location of file with part's body (instead of $body)
*
@@ -165,14 +167,8 @@ class Mail_mimePart
$this->_eol = MAIL_MIMEPART_CRLF;
}
- $c_type = array();
- $c_disp = array();
foreach ($params as $key => $value) {
switch ($key) {
- case 'content_type':
- $c_type['type'] = $value;
- break;
-
case 'encoding':
$this->_encoding = $value;
$headers['Content-Transfer-Encoding'] = $value;
@@ -182,29 +178,6 @@ class Mail_mimePart
$headers['Content-ID'] = '<' . $value . '>';
break;
- case 'disposition':
- $c_disp['disp'] = $value;
- break;
-
- case 'dfilename':
- $c_disp['filename'] = $value;
- $c_type['name'] = $value;
- break;
-
- case 'description':
- $headers['Content-Description'] = $value;
- break;
-
- case 'charset':
- $c_type['charset'] = $value;
- $c_disp['charset'] = $value;
- break;
-
- case 'language':
- $c_type['language'] = $value;
- $c_disp['language'] = $value;
- break;
-
case 'location':
$headers['Content-Location'] = $value;
break;
@@ -216,53 +189,56 @@ class Mail_mimePart
}
// Default content-type
- if (empty($c_type['type'])) {
- $c_type['type'] = 'text/plain';
+ if (empty($params['content_type'])) {
+ $params['content_type'] = 'text/plain';
}
// Content-Type
- if (!empty($c_type['type'])) {
- $headers['Content-Type'] = $c_type['type'];
- if (!empty($c_type['charset'])) {
- $charset = "charset={$c_type['charset']}";
- // place charset parameter in the same line, if possible
- if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) {
- $headers['Content-Type'] .= '; ';
- } else {
- $headers['Content-Type'] .= ';' . $this->_eol . ' ';
- }
- $headers['Content-Type'] .= $charset;
+ $headers['Content-Type'] = $params['content_type'];
+ if (!empty($params['charset'])) {
+ $charset = "charset={$params['charset']}";
+ // place charset parameter in the same line, if possible
+ if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) {
+ $headers['Content-Type'] .= '; ';
+ } else {
+ $headers['Content-Type'] .= ';' . $this->_eol . ' ';
}
- if (!empty($c_type['name'])) {
- $headers['Content-Type'] .= ';' . $this->_eol;
- $headers['Content-Type'] .= $this->_buildHeaderParam(
- 'name', $c_type['name'],
- isset($c_type['charset']) ? $c_type['charset'] : 'US-ASCII',
- isset($c_type['language']) ? $c_type['language'] : null,
- isset($params['name_encoding']) ? $params['name_encoding'] : null
- );
+ $headers['Content-Type'] .= $charset;
+
+ // Default headers charset
+ if (!isset($params['headers_charset'])) {
+ $params['headers_charset'] = $params['charset'];
}
}
+ if (!empty($params['filename'])) {
+ $headers['Content-Type'] .= ';' . $this->_eol;
+ $headers['Content-Type'] .= $this->_buildHeaderParam(
+ 'name', $params['filename'],
+ !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII',
+ !empty($params['language']) ? $params['language'] : null,
+ !empty($params['name_encoding']) ? $params['name_encoding'] : null
+ );
+ }
// Content-Disposition
- if (!empty($c_disp['disp'])) {
- $headers['Content-Disposition'] = $c_disp['disp'];
- if (!empty($c_disp['filename'])) {
+ if (!empty($params['disposition'])) {
+ $headers['Content-Disposition'] = $params['disposition'];
+ if (!empty($params['filename'])) {
$headers['Content-Disposition'] .= ';' . $this->_eol;
$headers['Content-Disposition'] .= $this->_buildHeaderParam(
- 'filename', $c_disp['filename'],
- isset($c_disp['charset']) ? $c_disp['charset'] : 'US-ASCII',
- isset($c_disp['language']) ? $c_disp['language'] : null,
- isset($params['filename_encoding']) ? $params['filename_encoding'] : null
+ 'filename', $params['filename'],
+ !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII',
+ !empty($params['language']) ? $params['language'] : null,
+ !empty($params['filename_encoding']) ? $params['filename_encoding'] : null
);
}
}
- if (!empty($headers['Content-Description'])) {
+ if (!empty($params['description'])) {
$headers['Content-Description'] = $this->encodeHeader(
- 'Content-Description', $headers['Content-Description'],
- isset($c_type['charset']) ? $c_type['charset'] : 'US-ASCII',
- isset($params['name_encoding']) ? $params['name_encoding'] : 'quoted-printable',
+ 'Content-Description', $params['description'],
+ !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII',
+ !empty($params['name_encoding']) ? $params['name_encoding'] : 'quoted-printable',
$this->_eol
);
}
diff --git a/program/localization/ar_SA/labels.inc b/program/localization/ar_SA/labels.inc
index f54bb5278..c2534f1c5 100644
--- a/program/localization/ar_SA/labels.inc
+++ b/program/localization/ar_SA/labels.inc
@@ -38,14 +38,18 @@ $labels['to'] = 'المستقبل';
$labels['cc'] = 'نسخة';
$labels['bcc'] = 'نسخة مخÙية';
$labels['replyto'] = 'الرد إلى';
+$labels['followupto'] = 'Mail-Followup-To';
$labels['date'] = 'التاريخ';
$labels['size'] = 'الحجم';
$labels['priority'] = 'الأولوية';
$labels['organization'] = 'المنظمة';
+$labels['readstatus'] = 'حالة القراءة';
$labels['reply-to'] = 'الرد إلى';
+$labels['mail-reply-to'] = 'Mail-Reply-To';
+$labels['mail-followup-to'] = 'Mail-Followup-To';
$labels['mailboxlist'] = 'المجلدات';
-$labels['messagesfromto'] = 'الرسالة $from إلى $to من $count';
-$labels['threadsfromto'] = 'المراسلات $from إلى $to من $count';
+$labels['messagesfromto'] = 'الرسالة $from إلى $to من مجموع $count';
+$labels['threadsfromto'] = 'جهات الإتصال $from إلى $to من مجموع $count';
$labels['messagenrof'] = 'الرسالة $nr من $count';
$labels['copy'] = 'نسخ';
$labels['move'] = 'نقل';
@@ -54,13 +58,13 @@ $labels['download'] = 'تنزيل';
$labels['filename'] = 'اسم الملÙ';
$labels['filesize'] = 'حجم الملÙ';
$labels['addtoaddressbook'] = 'إضاÙØ© إلى دÙتر العناوين';
-$labels['sun'] = 'أح';
-$labels['mon'] = 'إث';
-$labels['tue'] = 'ثل';
-$labels['wed'] = 'أر';
-$labels['thu'] = 'خم';
-$labels['fri'] = 'جم';
-$labels['sat'] = 'سب';
+$labels['sun'] = 'أحد';
+$labels['mon'] = 'إثنين';
+$labels['tue'] = 'ثلاثاء';
+$labels['wed'] = 'أربعاء';
+$labels['thu'] = 'خميس';
+$labels['fri'] = 'جمعة';
+$labels['sat'] = 'سبت';
$labels['sunday'] = 'الأحد';
$labels['monday'] = 'الإثنين';
$labels['tuesday'] = 'الثلاثاء';
@@ -68,22 +72,22 @@ $labels['wednesday'] = 'الأربعاء';
$labels['thursday'] = 'الخميس';
$labels['friday'] = 'الجمعة';
$labels['saturday'] = 'السبت';
-$labels['jan'] = 'ينا';
-$labels['feb'] = 'Ùبر';
-$labels['mar'] = 'مار';
-$labels['apr'] = 'أبر';
-$labels['may'] = 'ماي';
-$labels['jun'] = 'يون';
-$labels['jul'] = 'يول';
-$labels['aug'] = 'أغس';
-$labels['sep'] = 'سبت';
-$labels['oct'] = 'أكت';
-$labels['nov'] = 'نوÙ';
-$labels['dec'] = 'ديس';
+$labels['jan'] = 'يناير';
+$labels['feb'] = 'Ùبراير';
+$labels['mar'] = 'مارس';
+$labels['apr'] = 'أبريل';
+$labels['may'] = 'مايو';
+$labels['jun'] = 'يونيو';
+$labels['jul'] = 'يوليو';
+$labels['aug'] = 'أغسطس';
+$labels['sep'] = 'سبتمبر';
+$labels['oct'] = 'أكتوبر';
+$labels['nov'] = 'نوÙمبر';
+$labels['dec'] = 'ديسمبر';
$labels['longjan'] = 'يناير';
$labels['longfeb'] = 'Ùبراير';
$labels['longmar'] = 'مارس';
-$labels['longapr'] = 'أبريل';
+$labels['longapr'] = 'إبريل';
$labels['longmay'] = 'مايو';
$labels['longjun'] = 'يونيو';
$labels['longjul'] = 'يوليو';
@@ -97,6 +101,8 @@ $labels['checkmail'] = 'التحقق من وجود رسائل جديدة';
$labels['writenewmessage'] = 'إنشاء رسالة جديدة';
$labels['replytomessage'] = 'الرد على الرسالة';
$labels['replytoallmessage'] = 'الرد على المرسل وجميع مستقبلي الرسالة';
+$labels['replyall'] = 'الرد على الجميع';
+$labels['replylist'] = 'الرد على القائمة';
$labels['forwardmessage'] = 'تمرير الرسالة';
$labels['deletemessage'] = 'حذ٠الرسالة إلى المهملات';
$labels['movemessagetotrash'] = 'انقل الرسالة إلى سلة المهملات';
@@ -169,6 +175,8 @@ $labels['addattachment'] = 'إرÙاق ملÙ';
$labels['charset'] = 'مجموعة المحارÙ';
$labels['editortype'] = 'نوع المÙحرّر';
$labels['returnreceipt'] = 'ايصال استلام';
+$labels['dsn'] = 'تنويه حالة التوصيل';
+$labels['editidents'] = 'تعديل الهويات';
$labels['checkspelling'] = 'التدقيق الإملائي';
$labels['resumeediting'] = 'متابعة التحرير';
$labels['revertto'] = 'استعادة إلى';
@@ -192,6 +200,7 @@ $labels['maxuploadsize'] = 'أقصى حجم للمل٠هو $size';
$labels['addcc'] = 'أض٠CC';
$labels['addbcc'] = 'أض٠BCC';
$labels['addreplyto'] = 'أضي٠Reply-To';
+$labels['addfollowupto'] = 'إضاÙØ© Mail-Followup-To';
$labels['mdnrequest'] = 'طلب المرسل إعلامه عند قراءتك لرسالته. هل تود إعلام المرسل؟';
$labels['receiptread'] = 'إيصال الاستلام )بالقراءة)';
$labels['yourmessage'] = 'هذا إيصال بقراءة رسالتك';
@@ -203,6 +212,7 @@ $labels['email'] = 'البريد الإلكتروني';
$labels['addcontact'] = 'إضاÙØ© المراسل المحدد إلى دÙتر عناويني';
$labels['editcontact'] = 'تحرير بيانات المراسل';
$labels['contacts'] = 'المراسلين';
+$labels['contactproperties'] = 'خواص جهة الإتصال';
$labels['edit'] = 'تحرير';
$labels['cancel'] = 'إلغاء';
$labels['save'] = 'Ø­Ùظ';
@@ -246,33 +256,36 @@ $labels['setdefault'] = 'تعيين كإÙتراضي';
$labels['autodetect'] = 'آلي';
$labels['language'] = 'اللغة';
$labels['timezone'] = 'المنطقة الزمنية';
-$labels['pagesize'] = 'أسطر ÙÙŠ الصÙحة';
+$labels['pagesize'] = 'عدد الرسائل ÙÙŠ الصÙحة';
$labels['signature'] = 'التوقيع';
$labels['dstactive'] = 'التوقيت الصيÙÙŠ';
$labels['htmleditor'] = 'إنشاء رسائل بنسق HTML';
+$labels['htmlonreply'] = 'حال الرد على الرسائل بصيغة HTML Ùقط';
$labels['htmlsignature'] = 'توقيع HTML';
$labels['previewpane'] = 'إظهار قسم المعاينة';
$labels['skin'] = 'شكل الواجهة';
-$labels['logoutclear'] = 'Ø£Ùرغ المحذوÙات عند الخروج';
-$labels['logoutcompact'] = 'اضغط الوارد عن الخروج';
+$labels['logoutclear'] = 'Ø¥Ùراغ سلة المحذوÙات عند الخروج';
+$labels['logoutcompact'] = 'ضغط صندوق الوارد عن الخروج';
$labels['uisettings'] = 'واجهة المستخدم';
$labels['serversettings'] = 'إعدادات الخادم';
$labels['mailboxview'] = 'مظهر صندوق البريد';
-$labels['mdnrequests'] = 'تنويهات المÙرسÙÙ„';
+$labels['mdnrequests'] = 'عند طلب إشعار استلام';
$labels['askuser'] = 'اسأل المستخدم';
-$labels['autosend'] = 'أأرسلها تلقائياً';
+$labels['autosend'] = 'أرسلها تلقائياً';
+$labels['autosendknown'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلا اسألني';
+$labels['autosendknownignore'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلا تجاهل الأمر';
$labels['ignore'] = 'تجاهلها';
-$labels['readwhendeleted'] = 'حدد الرسالة كمقروءة عند حذÙها';
-$labels['flagfordeletion'] = 'ضع علامة على الرسالة لحذÙها بدلاً من حذÙها';
+$labels['readwhendeleted'] = 'تحديد الرسالة كمقروءة عند حذÙها';
+$labels['flagfordeletion'] = 'وضع علامة على الرسالة لحذÙها بدلاً من حذÙها';
$labels['skipdeleted'] = 'لا تظهر الرسائل المحذوÙØ©';
$labels['deletealways'] = 'حذ٠الرسائل مباشرة، إن تعذر نقلها إلى المهملات';
$labels['showremoteimages'] = 'إظهار الصور الخارجية المدمجة';
$labels['fromknownsenders'] = 'للمرسلين المعلومين';
$labels['always'] = 'دائماً';
-$labels['showinlineimages'] = 'أظهر الصّور المرÙقة أسÙÙ„ الرسالة';
+$labels['showinlineimages'] = 'إظهار الصّور المرÙقة أسÙÙ„ الرسالة';
$labels['autosavedraft'] = 'Ø­Ùظ المسودة تلقائياً';
$labels['everynminutes'] = 'كل $n دقيقة';
-$labels['keepalive'] = 'تحقق من وجود رسائل جديدة عند';
+$labels['keepalive'] = 'التحقق من وجود رسائل جديدة عند';
$labels['never'] = 'أبداً';
$labels['immediately'] = 'حالاً';
$labels['messagesdisplaying'] = 'إظهار الرسائل';
@@ -283,7 +296,7 @@ $labels['miscfolding'] = 'RFC 2047/2231 (ميكروسوÙت آوتلوك)';
$labels['2047folding'] = 'RFC 2047 بأكملها (غيرها)';
$labels['force7bit'] = 'استخدام ترميز MIME للحرو٠ذات الثمانية بتّات';
$labels['advancedoptions'] = 'خيارات متقدّمة';
-$labels['focusonnewmessage'] = 'وجّه ناÙذة المتصÙØ­ عند وجود رسالة جديدة';
+$labels['focusonnewmessage'] = 'التركيز على ناÙذة المتصÙØ­ عند وجود رسالة جديدة';
$labels['checkallfolders'] = 'التحقق من وجود رسائل جديدة ÙÙŠ جميع المجلدات';
$labels['displaynext'] = 'إظهار الرسالة التالية بعد حذÙ/نقل الرسالة الحالية';
$labels['mainoptions'] = 'الخيارات الأساسية';
@@ -305,6 +318,9 @@ $labels['abovequote'] = 'قبل الاقتباس';
$labels['insertsignature'] = 'إضاÙØ© التوقيع';
$labels['previewpanemarkread'] = 'تحديد الرسائل المÙعاينة كمقروءة';
$labels['afternseconds'] = 'بعد $n ثواني';
+$labels['reqmdn'] = 'طلب إشعار استلام دائماً';
+$labels['reqdsn'] = 'طلب تنويه لحالة التوصيل دائماً';
+$labels['replysamefolder'] = 'وضع الردود ÙÙŠ المجلد الذي يحوي الرسالة المردود عليها';
$labels['folder'] = 'مجلد';
$labels['folders'] = 'مجلدات';
$labels['foldername'] = 'اسم المجلد';
@@ -312,11 +328,15 @@ $labels['subscribed'] = 'مشترك';
$labels['messagecount'] = 'الرسائل';
$labels['create'] = 'أنشئ';
$labels['createfolder'] = 'أنشئ مجلد جديد';
-$labels['rename'] = 'إعادة التسمية';
-$labels['renamefolder'] = 'إعادة تسمية المجلد';
-$labels['deletefolder'] = 'احذ٠المجلد';
$labels['managefolders'] = 'إدارة المجلدات';
$labels['specialfolders'] = 'المجلّدات المÙميّزة';
+$labels['properties'] = 'الخواص';
+$labels['folderproperties'] = 'خواص المجلد';
+$labels['parentfolder'] = 'المجلد الحاوي';
+$labels['location'] = 'الموضع';
+$labels['info'] = 'معلومات';
+$labels['getfoldersize'] = 'اضغط لمعرÙØ© حجم المجلد';
+$labels['changesubscription'] = 'اضغط لتغيير حالة الإشتراك';
$labels['sortby'] = 'ترتيب بحسب';
$labels['sortasc'] = 'ترتيب تصاعدي';
$labels['sortdesc'] = 'ترتيب تنازلي';
@@ -325,7 +345,7 @@ $labels['KB'] = 'ك.ب';
$labels['MB'] = 'م.ب';
$labels['GB'] = 'ج.ب';
$labels['unicode'] = 'يونيكود';
-$labels['english'] = 'الانجليزية';
+$labels['english'] = 'الإنجليزية';
$labels['westerneuropean'] = 'الغرب أوروبية';
$labels['easterneuropean'] = 'الشرق أوروبية';
$labels['southeasterneuropean'] = 'الجنوب شرق أوروبية';
diff --git a/program/localization/ar_SA/messages.inc b/program/localization/ar_SA/messages.inc
index d9b9a9095..2d15a21fb 100644
--- a/program/localization/ar_SA/messages.inc
+++ b/program/localization/ar_SA/messages.inc
@@ -23,9 +23,10 @@ $messages['cookiesdisabled'] = 'المتصÙØ­ الخاص بك لا يقبل اÙ
$messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية أو أنها غير صالحة';
$messages['imaperror'] = 'Ùشل الاتصال بخادم IMAP';
$messages['servererror'] = 'خطأ ÙÙŠ الخادم!';
+$messages['servererrormsg'] = 'خطأ خادم: $msg';
$messages['invalidrequest'] = 'طلب غير صالح! لم تحÙظ أية بيانات.';
$messages['nomessagesfound'] = 'لم يعثر على أية رسائل ÙÙŠ صندوق البريد هذا';
-$messages['loggedout'] = 'لقد قمت بإنهاء هذه الجلسة بنجاح. إلى اللقاء!';
+$messages['loggedout'] = 'قمت بإنهاء هذه الجلسة بنجاح. إلى اللقاء!';
$messages['mailboxempty'] = 'صندوق البريد Ùارغ';
$messages['loading'] = 'جاري العمل...';
$messages['uploading'] = 'جاري رÙع الملÙ...';
@@ -54,10 +55,10 @@ $messages['deletecontactconfirm'] = 'هل تريد حقاً حذ٠المراسÙ
$messages['deletemessagesconfirm'] = 'هل تريد حذ٠الرسائل المحددة؟';
$messages['deletefolderconfirm'] = 'هل تريد حقاً حذ٠هذا المجلد؟';
$messages['purgefolderconfirm'] = 'هل تريد حقاً حذ٠جميع الرسائل ÙÙŠ هذا المجلد؟';
-$messages['foldercreating'] = 'جاري إنشاء المجلد...';
$messages['folderdeleting'] = 'جاري حذ٠المجلد...';
-$messages['folderrenaming'] = 'جاري إعادة تسمية المجلد...';
$messages['foldermoving'] = 'جاري نقل المجلد...';
+$messages['foldersubscribing'] = 'الإشتراك ÙÙŠ المجلد...';
+$messages['folderunsubscribing'] = 'إلغاء الإشتراك ÙÙŠ المجد...';
$messages['formincomplete'] = 'لم يتم تعبئة بيانات الاستمارة بالكامل';
$messages['noemailwarning'] = 'الرجاء إدخال عنوان بريد إلكتروني صالح';
$messages['nonamewarning'] = 'الرجاء إدخال اسم';
@@ -77,6 +78,9 @@ $messages['searching'] = 'جاري البحث...';
$messages['checking'] = 'جاري التحقق...';
$messages['nospellerrors'] = 'لم يعثر على أية أخطاء إملائية';
$messages['folderdeleted'] = 'تم حذ٠المجلد بنجاح';
+$messages['foldersubscribed'] = 'تم الإشتراك ÙÙŠ المجلد بنجاح';
+$messages['folderunsubscribed'] = 'تم إلغاء الإشتراك ÙÙŠ المجلد بنجاح';
+$messages['folderpurged'] = 'تم تÙريغ المجلد بنجاح';
$messages['deletedsuccessfully'] = 'تم الحذ٠بنجاح';
$messages['converting'] = 'إزالة التنسيق من الرسالة...';
$messages['messageopenerror'] = 'تعذرت قراءة الرسالة من الخادم';
@@ -88,10 +92,11 @@ $messages['sourceisreadonly'] = 'لا يمكن تعديل مصدر العنواÙ
$messages['errorsavingcontact'] = 'تعذر Ø­Ùظ عنوان المراسل';
$messages['movingmessage'] = 'جاري نقل الرسالة...';
$messages['copyingmessage'] = 'جاري نسخ الرسالة...';
+$messages['deletingmessage'] = 'جاري حذ٠الرسائل...';
+$messages['markingmessage'] = 'جاري تحديد الرسائل...';
$messages['receiptsent'] = 'أرسل إيصال الاستلام بنجاح';
$messages['errorsendingreceipt'] = 'تعذر إرسال إيصال الاستلام';
$messages['nodeletelastidentity'] = 'لا يمكن حذ٠هذا السجل حيث أنه الوحيد المتبقي.';
-$messages['addsubfolderhint'] = 'سيتم إنشاء هذا المجلد كمجلد Ùرعي للمحدد.';
$messages['forbiddencharacter'] = 'اسم المجلّد يحتوي حروÙاً ممنوعة';
$messages['selectimportfile'] = 'رجاء اختر ملÙاً لرÙعه';
$messages['addresswriterror'] = 'دÙتر العناوين المحدد غير قابل للكتابة';
@@ -109,10 +114,25 @@ $messages['smtpautherror'] = 'خطأ SMTP ($code): تعذر التحقق من ه
$messages['smtpfromerror'] = 'خطأ SMTP ($code): تعذر تحديد المرسل "$from" ($msg)';
$messages['smtptoerror'] = 'خطأ SMTP ($code): تعذرت إضاÙØ© المستلم "$to" ($msg)';
$messages['smtprecipientserror'] = 'خطأ SMTP: تعذرت قراءة قائمة المرسل إليهم';
+$messages['smtpdsnerror'] = 'خطأ SMTP: لا يوجد دعم لتنويهات حالة التوصيل';
$messages['smtperror'] = 'خطأ SMTP: $msg';
$messages['emailformaterror'] = 'عنوان بريد إلكتروني غير صالح: $email';
$messages['toomanyrecipients'] = 'عدد المرسل إليهم كبير. قلص العدد إلى $max.';
$messages['maxgroupmembersreached'] = 'عدد أعضاء المجموعة أكثر من $max';
$messages['internalerror'] = 'حدث خطأ داخلي. الرجاء المحاولة مرة أخرى';
+$messages['contactdelerror'] = 'تعذر حذ٠أسماء جهات الإتصال';
+$messages['contactdeleted'] = 'تم حذ٠أسماء جهات الإتصال بنجاح';
+$messages['groupdeleted'] = 'تم حذ٠المجموعة بنجاح';
+$messages['grouprenamed'] = 'تم تغيير إسم المجموعة بنجاح';
+$messages['groupcreated'] = 'تم إنشاء المجموعة بنجاح';
+$messages['messagedeleted'] = 'تم حذ٠الرسائل بنجاح';
+$messages['messagemoved'] = 'تم نقل الرسائل بنجاح';
+$messages['messagecopied'] = 'تم نسخ الرسائل بنجاح';
+$messages['messagemarked'] = 'تم تحديد الرسائل بنجاح';
+$messages['autocompletechars'] = 'إكتب $min أحر٠على الأقل للحصول على التكملة التلقائية';
+$messages['namecannotbeempty'] = 'لا يمكن ترك الإسم Ùارغاً';
+$messages['nametoolong'] = 'الإسم طويل جداً';
+$messages['folderupdated'] = 'تم تحديث المجلد بنجاح';
+$messages['foldercreated'] = 'تم إنشاء المجلد بنجاح';
?>
diff --git a/program/localization/ast/labels.inc b/program/localization/ast/labels.inc
index 752d643b6..427c7a810 100644
--- a/program/localization/ast/labels.inc
+++ b/program/localization/ast/labels.inc
@@ -265,9 +265,6 @@ $labels['subscribed'] = 'Soscrita';
$labels['messagecount'] = 'Mensaxes';
$labels['create'] = 'Facer';
$labels['createfolder'] = 'Facer una bandexa nueva';
-$labels['rename'] = 'Renomar';
-$labels['renamefolder'] = 'Renomar bandexa';
-$labels['deletefolder'] = 'Desaniciar bandexa';
$labels['managefolders'] = 'Alministrar bandexes';
$labels['specialfolders'] = 'Bandexes especiales';
$labels['sortby'] = 'Ordenar por';
diff --git a/program/localization/ast/messages.inc b/program/localization/ast/messages.inc
index c292ccf1b..cbc42762f 100644
--- a/program/localization/ast/messages.inc
+++ b/program/localization/ast/messages.inc
@@ -54,9 +54,7 @@ $messages['deletecontactconfirm'] = '¿Tas seguru de desaniciar los contautos qu
$messages['deletemessagesconfirm'] = '¿Tas seguru de desaniciar los mensaxes que marcaste?';
$messages['deletefolderconfirm'] = '¿Tas seguru de desaniciar esta bandexa?';
$messages['purgefolderconfirm'] = '¿Tas seguru de desaniciar tolos mensaxes d\'esta bandexa?';
-$messages['foldercreating'] = 'Faciendo la bandexa...';
$messages['folderdeleting'] = 'Desaniciando la bandexa...';
-$messages['folderrenaming'] = 'Renomando la bandexa...';
$messages['foldermoving'] = 'Moviendo la bandexa...';
$messages['formincomplete'] = 'Tienes de rellenar tolos campos del formulariu';
$messages['noemailwarning'] = 'Por favor, dame un corréu válidu';
@@ -89,7 +87,6 @@ $messages['movingmessage'] = 'Moviendo\'l mensaxe...';
$messages['receiptsent'] = 'Unviose correchamente l\'avisu de llectura.';
$messages['errorsendingreceipt'] = 'Nun fui a unviar l\'avisu de llectura.';
$messages['nodeletelastidentity'] = 'Nun puedo desaniciar esa identidá porque ye la última.';
-$messages['addsubfolderhint'] = 'Esta bandexa va ser subandexa de la que ta marcada';
$messages['forbiddencharacter'] = 'El nome de la bandexa tien un caráuter que nun val';
$messages['selectimportfile'] = 'Por favor escueye el ficheru que quies xubir';
$messages['addresswriterror'] = 'Nun puedo escribir nel llibru de direiciones qu\'escoyisti';
diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc
index 4e7d9d475..ce515e2d4 100644
--- a/program/localization/az_AZ/labels.inc
+++ b/program/localization/az_AZ/labels.inc
@@ -310,9 +310,6 @@ $labels['subscribed'] = 'İmzalanıb';
$labels['messagecount'] = 'Məktublar';
$labels['create'] = 'Yarad';
$labels['createfolder'] = 'Yeni qovluq yarad';
-$labels['rename'] = 'Adını dəyiş';
-$labels['renamefolder'] = 'Qovluğun adını dəyiş';
-$labels['deletefolder'] = 'QovluÄŸu sil';
$labels['managefolders'] = 'Qovluqlarla iÅŸ';
$labels['specialfolders'] = 'Xüsusi qovluqlar';
$labels['sortby'] = 'Çeşidlə';
diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc
index ef5ca5d77..dcef7c543 100644
--- a/program/localization/az_AZ/messages.inc
+++ b/program/localization/az_AZ/messages.inc
@@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Seçilən ünvanı (ünvanları) silməyə
$messages['deletemessagesconfirm'] = 'Seçilən məktubu (məktubları) silməyə əminsiniz?';
$messages['deletefolderconfirm'] = 'Bu qovluğu silməyə əminsiniz?';
$messages['purgefolderconfirm'] = 'Bu qovluqdakı bütün məktubları silməyə əminsiniz?';
-$messages['foldercreating'] = 'Qovluğun yaradılır...';
$messages['folderdeleting'] = 'QovluÄŸ silinir...';
-$messages['folderrenaming'] = 'Qovluğun adə dəyişir...';
$messages['foldermoving'] = 'Qovluq köçürülür...';
$messages['formincomplete'] = 'Bütün sətrlər doldurulmayıb';
$messages['noemailwarning'] = 'Lütfən, düzgün e-poçt ünvanı daxil edin';
@@ -89,7 +87,6 @@ $messages['copyingmessage'] = 'Məktub kopyalanır...';
$messages['receiptsent'] = 'Oxunulma haqda bildiriş göndərildi';
$messages['errorsendingreceipt'] = 'Oxunulma haqda bildiriş göndərilmədi';
$messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır. ';
-$messages['addsubfolderhint'] = 'Bu qovluq hazırki qovluqda alt qovluq olaraq yaradıldı';
$messages['forbiddencharacter'] = 'Qovlu adı qadağan olunmuş simvollar təşkil edir';
$messages['selectimportfile'] = 'Yüklənilən faylı seçin';
$messages['addresswriterror'] = 'Seçilmiş ünvan kitabçası yaddaşa yazıla bilməz';
diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc
index e380d2f43..14ad45aab 100644
--- a/program/localization/bg_BG/labels.inc
+++ b/program/localization/bg_BG/labels.inc
@@ -39,8 +39,7 @@ $labels['to'] = 'Получател';
$labels['cc'] = 'Копие до';
$labels['bcc'] = 'Скрито копие до';
$labels['replyto'] = 'Отговор до';
-$labels['mailreplyto'] = 'Отговор към';
-$labels['mailfollowupto'] = 'Препращане към';
+$labels['followupto'] = 'Препращане към';
$labels['date'] = 'Дата';
$labels['size'] = 'Размер';
$labels['priority'] = 'Приоритет';
@@ -202,8 +201,7 @@ $labels['maxuploadsize'] = 'МакÑимално позволен размер $
$labels['addcc'] = 'Копие до';
$labels['addbcc'] = 'Скрито копие до';
$labels['addreplyto'] = 'Отговор на';
-$labels['addmailreplyto'] = 'ДобавÑне на отговор към';
-$labels['addmailfollowupto'] = 'ДобавÑне на препращане към';
+$labels['addfollowupto'] = 'ДобавÑне на препращане към';
$labels['mdnrequest'] = 'ПодателÑÑ‚ на пиÑмото е пожелал да бъде уведомен, че Ñте го прочели. Желаете ли да изпратите обратна разпиÑка?';
$labels['receiptread'] = 'Обратна разпиÑка (прочетено)';
$labels['yourmessage'] = 'Това е обратна разпиÑка за пиÑмото Ви';
@@ -330,9 +328,6 @@ $labels['subscribed'] = 'Използвай';
$labels['messagecount'] = 'ПиÑма';
$labels['create'] = 'Създай';
$labels['createfolder'] = 'Ðаправи нова папка';
-$labels['rename'] = 'Преименувай';
-$labels['renamefolder'] = 'Преименувай папката';
-$labels['deletefolder'] = 'Изтрий';
$labels['managefolders'] = 'ÐаÑтройки на папките';
$labels['specialfolders'] = 'Служебни папки';
$labels['sortby'] = 'Сортирай по';
diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc
index cf9acbf55..c5bc90f9e 100644
--- a/program/localization/bg_BG/messages.inc
+++ b/program/localization/bg_BG/messages.inc
@@ -11,7 +11,7 @@
| |
+-----------------------------------------------------------------------+
| Author: Todor Dragnev <todor.dragnev@gmail.com> |
-| Nickolay Bunev <just4nick@gmail.com> |
+| Nickolay Bunev <just4nick@gmail.com> |
+-----------------------------------------------------------------------+
@version $Id$
@@ -56,9 +56,7 @@ $messages['deletecontactconfirm'] = 'ИÑкате ли да изтриете мÐ
$messages['deletemessagesconfirm'] = 'ИÑкате ли да изтриете маркираните ÑъобщениÑ?';
$messages['deletefolderconfirm'] = 'ИÑкате ли да изтриете тази папка?';
$messages['purgefolderconfirm'] = 'ИÑкате ли да изтриете вÑички пиÑма в тази папка?';
-$messages['foldercreating'] = 'Създаване на папка...';
$messages['folderdeleting'] = 'Изтриване на папка...';
-$messages['folderrenaming'] = 'Преименуване на папка...';
$messages['foldermoving'] = 'ПремеÑтване на папка...';
$messages['formincomplete'] = 'Ðе Ñте попълнили вÑички полета';
$messages['noemailwarning'] = 'МолÑ, въведете валиден e-mail адреÑ';
@@ -95,7 +93,6 @@ $messages['markingmessage'] = 'Маркиране на Ñъобщение';
$messages['receiptsent'] = 'Обратната разпиÑка е изпратена.';
$messages['errorsendingreceipt'] = 'Грешка при изпращането на обратна разпиÑка.';
$messages['nodeletelastidentity'] = 'Ðе можете да изтриете тази ÑамоличноÑÑ‚, Ñ‚Ñ€Ñбва да имате поне една.';
-$messages['addsubfolderhint'] = 'Тази папка ще бъде Ñъздадена като подпапка на текущо избраната';
$messages['forbiddencharacter'] = 'Името на папката Ñъдържа непозволени Ñимволи';
$messages['selectimportfile'] = 'ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ файл за качване';
$messages['addresswriterror'] = 'Избраната адреÑна книга не може да бъде запиÑвана';
diff --git a/program/localization/bn_BD/labels.inc b/program/localization/bn_BD/labels.inc
index 3917eec6a..37fcc867b 100644
--- a/program/localization/bn_BD/labels.inc
+++ b/program/localization/bn_BD/labels.inc
@@ -243,13 +243,10 @@ $labels['checkallfolders'] = 'সবগà§à¦²à§‹ মেইলবকà§à¦¸à§‡ ন
$labels['folder'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
$labels['folders'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
$labels['foldername'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ à¦à¦° নাম';
-$labels['subscribed'] = 'গà§à¦°à¦¹à¦¨à¦•à¦¾à¦°à¦¿(Subscribed) ';
+$labels['subscribed'] = 'গà§à¦°à¦¹à¦¨à¦•à¦¾à¦°à¦¿';
$labels['messagecount'] = 'মেইল/চিঠি';
$labels['create'] = 'পà§à¦°à¦¸à§à¦¤à§à¦¤ করà§à¦¨';
$labels['createfolder'] = 'নতà§à¦¨ ফোলà§à¦¡à¦¾à¦° / মেইলবকà§à¦¸ পà§à¦°à¦¸à§à¦¤à§à¦¤ করà§à¦¨';
-$labels['rename'] = 'নাম বদলান';
-$labels['renamefolder'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ à¦à¦° নাম বদলান';
-$labels['deletefolder'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ ফেলে দিন';
$labels['managefolders'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ গà§à¦²à§‹ কে গà§à¦›à¦¾à¦¨';
$labels['specialfolders'] = 'বিশেষ ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
$labels['sortby'] = 'সাজান';
diff --git a/program/localization/bn_BD/messages.inc b/program/localization/bn_BD/messages.inc
index 1026969de..6383242ce 100644
--- a/program/localization/bn_BD/messages.inc
+++ b/program/localization/bn_BD/messages.inc
@@ -46,9 +46,7 @@ $messages['deletecontactconfirm'] = 'আপনি কি আসলেই à¦à¦‡
$messages['deletemessagesconfirm'] = 'আপনি কি আসলেই à¦à¦‡ চিঠি(গà§à¦²à§‹) ফেলো দিতে চান?';
$messages['deletefolderconfirm'] = 'আপনি কি আসলেই à¦à¦‡ ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ ফেলো দিতে চান?';
$messages['purgefolderconfirm'] = 'আপনি কি আসলেই à¦à¦‡ ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ à¦à¦° সব চিঠি ফেলো দিতে চান?';
-$messages['foldercreating'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ পà§à¦°à¦¸à§à¦¤à§à¦¤ করা হচà§à¦›à§‡';
$messages['folderdeleting'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ ফেলে দেওয়া হচà§à¦›à§‡';
-$messages['folderrenaming'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ à¦à¦° নাম বদলানো হচà§à¦›à§‡';
$messages['foldermoving'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ সরানো হচà§à¦›à§‡';
$messages['formincomplete'] = 'আপনি সবগà§à¦²à§‹ জিনিষ লেখেননি';
$messages['noemailwarning'] = 'à¦à¦•à¦Ÿà¦¿ সঠিক ই-মেইল লিখà§à¦¨';
@@ -81,7 +79,6 @@ $messages['movingmessage'] = 'চিঠি সরানো হচà§à¦›à§‡..';
$messages['receiptsent'] = 'ঠিকঠাক মতো ফিরতি রশিদ পাঠানো হয়েছে';
$messages['errorsendingreceipt'] = 'রশিদ পাঠানো গেলোনা';
$messages['nodeletelastidentity'] = 'আপনি à¦à¦‡ পরিচিতি ফেলতে পারবেন না কারন à¦à¦‡à¦Ÿà¦¾à§Ÿ বরà§à¦¤à¦®à¦¾à¦¨à§‡ আপনার à¦à¦•à¦®à¦¾à¦¤à§à¦° পরিচিতি। ';
-$messages['addsubfolderhint'] = 'à¦à¦‡ ফোলà§à¦¡à¦¾à¦°à¦Ÿà¦¿ বরà§à¦¤à¦®à¦¾à¦¨ ফোলà§à¦¡à¦¾à¦° à¦à¦° সাব-ফোলà§à¦¡à¦¾à¦° হিসাবে তৈরি হবে';
$messages['forbiddencharacter'] = 'ফোলà§à¦¡à¦¾à¦° à¦à¦° নামের মধà§à¦¯à§‡ নিষিদà§à¦§ অকà§à¦·à¦° আছে';
$messages['selectimportfile'] = 'à¦à¦•à¦Ÿà¦¾ ফাইল বেছে নিন তোলার জনà§à¦¯';
$messages['addresswriterror'] = 'বেছে নেওয়া ঠিকানার বইটিতে লেখাযায় না';
diff --git a/program/localization/br/labels.inc b/program/localization/br/labels.inc
index f80ed3442..c8812d5c4 100644
--- a/program/localization/br/labels.inc
+++ b/program/localization/br/labels.inc
@@ -171,9 +171,6 @@ $labels['foldername'] = 'Anv ar renkell';
$labels['subscribed'] = 'Koumananer';
$labels['create'] = 'Krouiñ';
$labels['createfolder'] = 'Krouiñ ur renkell nevez';
-$labels['rename'] = 'Adanviñ';
-$labels['renamefolder'] = 'Adanviñ ar renkell';
-$labels['deletefolder'] = 'Dilemel ar renkell';
$labels['managefolders'] = 'Aozañ ar renkelloù';
$labels['sortby'] = 'Rummañ dre';
$labels['sortasc'] = 'Rumm diagentad';
diff --git a/program/localization/bs_BA/labels.inc b/program/localization/bs_BA/labels.inc
index 6d2ae5ddb..ab65eb72a 100644
--- a/program/localization/bs_BA/labels.inc
+++ b/program/localization/bs_BA/labels.inc
@@ -221,9 +221,6 @@ $labels['foldername'] = 'Ime fascikle';
$labels['subscribed'] = 'Pretplaćen';
$labels['create'] = 'Napravi';
$labels['createfolder'] = 'Napravi novu fasciklu';
-$labels['rename'] = 'Preimenuj';
-$labels['renamefolder'] = 'Preimenuj fasciklu';
-$labels['deletefolder'] = 'Obriši fasciklu';
$labels['managefolders'] = 'Podesi fasciklu';
$labels['sortby'] = 'Sortiraj po';
diff --git a/program/localization/ca_ES/labels.inc b/program/localization/ca_ES/labels.inc
index 3022887e3..d75a2f8e5 100644
--- a/program/localization/ca_ES/labels.inc
+++ b/program/localization/ca_ES/labels.inc
@@ -317,9 +317,6 @@ $labels['subscribed'] = 'Subscriure\'s';
$labels['messagecount'] = 'Missatges';
$labels['create'] = 'Crea';
$labels['createfolder'] = 'Crea nova carpeta';
-$labels['rename'] = 'Canvia el nom';
-$labels['renamefolder'] = 'Canvia el nom de la carpeta';
-$labels['deletefolder'] = 'Suprimeix carpeta';
$labels['managefolders'] = 'Gestiona carpetes';
$labels['specialfolders'] = 'Carpetes Especials';
$labels['sortby'] = 'Ordena per';
diff --git a/program/localization/ca_ES/messages.inc b/program/localization/ca_ES/messages.inc
index aa5065794..bea12697f 100644
--- a/program/localization/ca_ES/messages.inc
+++ b/program/localization/ca_ES/messages.inc
@@ -56,9 +56,7 @@ $messages['deletecontactconfirm'] = 'Esteu segurs de voler suprimir el(s) contac
$messages['deletemessagesconfirm'] = 'Esteu segurs de voler suprimir el(s) missatge(s) selecionat(s)?';
$messages['deletefolderconfirm'] = 'Esteu segurs de voler suprimir aquesta carpeta?';
$messages['purgefolderconfirm'] = 'Esteu segurs de voler suprimir tots els missatges d\'aquesta carpeta?';
-$messages['foldercreating'] = 'Creant la carpeta...';
$messages['folderdeleting'] = 'Suprimint la carpeta...';
-$messages['folderrenaming'] = 'Reanomenant la carpeta...';
$messages['foldermoving'] = 'Movent la carpeta...';
$messages['formincomplete'] = 'El formulari no ha sigut emplenat totalment';
$messages['noemailwarning'] = 'Introduïu una adreça d\'e-mail vàlida';
@@ -93,7 +91,6 @@ $messages['copyingmessage'] = 'Copiant missatge...';
$messages['receiptsent'] = 'Confirmació de lectura enviada satisfactòriament';
$messages['errorsendingreceipt'] = 'No es pot enviar la confirmació';
$messages['nodeletelastidentity'] = 'No podeu suprimir aquesta identitat, és l\'última.';
-$messages['addsubfolderhint'] = 'Aquesta carpeta serà creada com a subcarpeta de la seleccionada actualment';
$messages['forbiddencharacter'] = 'El nom de carpeta conté un caràcter prohibit';
$messages['selectimportfile'] = 'Si us plau, seleccioneu un fitxer per pujar';
$messages['addresswriterror'] = 'La llibreta d\'adreces seleccionada no és modificable';
diff --git a/program/localization/cs_CZ/labels.inc b/program/localization/cs_CZ/labels.inc
index e0363c4b6..67c571cd0 100644
--- a/program/localization/cs_CZ/labels.inc
+++ b/program/localization/cs_CZ/labels.inc
@@ -319,9 +319,6 @@ $labels['subscribed'] = 'Vybráno';
$labels['messagecount'] = 'PoÄet zpráv';
$labels['create'] = 'Vytvořit';
$labels['createfolder'] = 'Vytvořit novou složku';
-$labels['rename'] = 'Přejmenovat';
-$labels['renamefolder'] = 'Přejmenovat složku';
-$labels['deletefolder'] = 'Smazat složku';
$labels['managefolders'] = 'Spravovat složky';
$labels['specialfolders'] = 'Speciální složky';
$labels['sortby'] = 'Seřadit podle';
diff --git a/program/localization/cs_CZ/messages.inc b/program/localization/cs_CZ/messages.inc
index 4f806e1c8..6569ddcc3 100644
--- a/program/localization/cs_CZ/messages.inc
+++ b/program/localization/cs_CZ/messages.inc
@@ -26,6 +26,7 @@ $messages['cookiesdisabled'] = 'Váš prohlížeÄ nepodporuje cookies, které j
$messages['sessionerror'] = 'Vaše přihlášení je neplatné nebo vypršelo';
$messages['imaperror'] = 'Připojení na IMAP server selhalo';
$messages['servererror'] = 'Chyba serveru!';
+$messages['servererrormsg'] = 'Chyba serveru: $msg';
$messages['invalidrequest'] = 'Nesprávný požadavek. Data nebyla uložena.';
$messages['nomessagesfound'] = 'Ve schránce nebyla nalezena žádná zpráva';
$messages['loggedout'] = 'Byli jste úspěšně odhlášeni. Nashledanou!';
@@ -57,9 +58,7 @@ $messages['deletecontactconfirm'] = 'Opravdu chcete smazat oznaÄené kontakty?'
$messages['deletemessagesconfirm'] = 'Opravdu chcete smazat oznaÄené zprávy?';
$messages['deletefolderconfirm'] = 'Chcete opravdu smazat tento adresář?';
$messages['purgefolderconfirm'] = 'Opravdu chcete smazat všechny zprávy v této složce?';
-$messages['foldercreating'] = 'Vytvářím složku...';
$messages['folderdeleting'] = 'Odstraňuji složku...';
-$messages['folderrenaming'] = 'Přejmenovávám složku...';
$messages['foldermoving'] = 'Přesouvám složku...';
$messages['formincomplete'] = 'Formulář nebyl korektně vyplněn';
$messages['noemailwarning'] = 'Zadejte, prosím, platnou e-mailovou adresu';
@@ -91,10 +90,11 @@ $messages['sourceisreadonly'] = 'Tento zdroj adres je pouze pro Ätení';
$messages['errorsavingcontact'] = 'Nemohu uložit adresu kontaktu';
$messages['movingmessage'] = 'Přesouvám zprávu...';
$messages['copyingmessage'] = 'Kopíruji zprávu...';
+$messages['deletingmessage'] = 'Odstraňuji zprávu...';
+$messages['markingmessage'] = 'OznaÄuji zprávu...';
$messages['receiptsent'] = 'Potvrzení o přřijetí zprávy odesláno';
$messages['errorsendingreceipt'] = 'Potvrzení o přijetí zprávy nebylo možné odeslat';
$messages['nodeletelastidentity'] = 'Alespoň jedna identita musí být ponechána. Identitu nelze odstranit.';
-$messages['addsubfolderhint'] = 'Tato složka bude vytvořena jako podsložka aktuálně zvolené složky';
$messages['forbiddencharacter'] = 'Název složky obsahuje zakázaný znak';
$messages['selectimportfile'] = 'Prosím vyberte soubor k nahrání';
$messages['addresswriterror'] = 'Vybraný seznam kontaktů není zapisovatelný';
@@ -102,20 +102,31 @@ $messages['contactaddedtogroup'] = 'Kontakty byly úspěšně přidány do této
$messages['contactremovedfromgroup'] = 'Kontakty byly odstraněny z této skupiny';
$messages['importwait'] = 'Importuji, prosím Äekejte...';
$messages['importerror'] = 'Během importu nastala chyba! Nahraný soubor není ve formátu vCard.';
-$messages['importconfirm'] = '<b>ÚspěšnÄ› naimportováno $inserted kontaktů, $skipped existujících záznamů pÅ™eskoÄeno</b>:<p><em>$names</em></p>';
+$messages['importconfirm'] = 'ÚspěšnÄ› naimportováno $inserted kontaktů, $skipped existujících záznamů pÅ™eskoÄeno:$names';
$messages['opnotpermitted'] = 'Operace není povolena!';
$messages['nofromaddress'] = 'ChybÄ›jící e-mailová adresa v oznaÄeném profilu';
$messages['editorwarning'] = 'PÅ™epnutím do režimu prostého textu ztratíte veÅ¡keré formátování. Chcete pokraÄovat?';
-$messages['httpreceivedencrypterror'] = 'Vyskytla se vážná chyba v konfiguraci. Kontaktujte neprodleně administátora. <b>Vaše zpráva nemohla být odeslána.</b>';
+$messages['httpreceivedencrypterror'] = 'Vyskytla se vážná chyba v konfiguraci. Kontaktujte neprodleně administátora. Vaše zpráva nemohla být odeslána.';
$messages['smtpconnerror'] = 'Chyba SMTP ($code): Připojení k serveru selhalo';
$messages['smtpautherror'] = 'Chyba SMTP ($code): Chyba přihlášení';
$messages['smtpfromerror'] = 'Chyba SMTP ($code): Nelze nastavit odesílatele "$from" ($msg)';
$messages['smtptoerror'] = 'Chyba SMTP ($code): Nelze přidat příjemce "$to" ($msg)';
$messages['smtprecipientserror'] = 'Chyba SMTP: Nelze zpracovat seznam příjemců';
+$messages['smtpdsnerror'] = 'Chyba SMTP: Není podporováno oznamení o stavu doruÄení (DSN)';
$messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
$messages['toomanyrecipients'] = 'PříliÅ¡ mnoho příjemců. Změňte poÄet příjemců na $max.';
$messages['maxgroupmembersreached'] = 'PoÄet Älenských skupin dosáhl maximum z $max';
$messages['internalerror'] = 'Došlo k interní chybě. Zkuste to znovu';
+$messages['contactdelerror'] = 'Kontakty nelze odstranit';
+$messages['contactdeleted'] = 'Kontakty byly odstraněny';
+$messages['groupdeleted'] = 'Skupina byla odstraněna';
+$messages['grouprenamed'] = 'Skupina byla přejmenována';
+$messages['groupcreated'] = 'Skupina vytvořena';
+$messages['messagedeleted'] = 'Zpráva odstraněna';
+$messages['messagemoved'] = 'Zpráva byla přesunuta';
+$messages['messagecopied'] = 'Zpráva byla zkopirována';
+$messages['messagemarked'] = 'Zpráva oznaÄena';
+$messages['autocompletechars'] = 'Napište alespoň $min znaků pro automatické doplnění';
-?> \ No newline at end of file
+?>
diff --git a/program/localization/cy_GB/labels.inc b/program/localization/cy_GB/labels.inc
index 0f8e22c26..3e22ee4d4 100644
--- a/program/localization/cy_GB/labels.inc
+++ b/program/localization/cy_GB/labels.inc
@@ -35,15 +35,12 @@ $labels['to'] = 'Derbyniwr';
$labels['cc'] = 'Copi';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Ateb-I';
-$labels['mailreplyto'] = 'Neges-Ateb-I';
-$labels['mailfollowupto'] = 'Neges-Ddilynol-I';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Dyddiad';
$labels['size'] = 'Maint';
$labels['priority'] = 'Blaenoriaeth';
$labels['organization'] = 'Enw\'r Sefydliad';
-$labels['reply-to'] = 'Ateb-I';
-$labels['mail-reply-to'] = 'Neges-Ateb-I';
-$labels['mail-followup-to'] = 'Neges-Ddilynol-I';
+$labels['readstatus'] = 'Statws darllen';
$labels['mailboxlist'] = 'Ffolderi';
$labels['messagesfromto'] = 'Negeseuon $from i $to o $count';
$labels['threadsfromto'] = 'Edefau $from i $to o $count';
@@ -172,6 +169,7 @@ $labels['addattachment'] = 'Atodi ffeil';
$labels['charset'] = 'Set nodiau';
$labels['editortype'] = 'Math golygydd';
$labels['returnreceipt'] = 'Cadarnhau derbyn';
+$labels['dsn'] = 'Hysbysiad statws danfon';
$labels['editidents'] = 'Golygu personoliaethau';
$labels['checkspelling'] = 'Gwirio sillafu';
$labels['resumeediting'] = 'Ail-ddechrau golygu';
@@ -196,8 +194,7 @@ $labels['maxuploadsize'] = 'Y maint ffeil uchaf a ganiateir yw $size';
$labels['addcc'] = 'Ychwanegu Cc';
$labels['addbcc'] = 'Ychwanegu Bcc';
$labels['addreplyto'] = 'Ychwanegu Ateb-I';
-$labels['addmailreplyto'] = 'Ychwanegu Neges-Ateb-I';
-$labels['addmailfollowupto'] = 'Ychwanegu Neges-Ddilynol-I';
+$labels['addfollowupto'] = 'Ychwanegu Followup-To';
$labels['mdnrequest'] = 'Mae anfonwr y neges hwn wedi gofyn am hysbysiad eich bod wedi darllen y neges. Hoffech chi hysbysu\'r anfonwr?';
$labels['receiptread'] = 'Cadarnhad Derbyn (darllenwyd)';
$labels['yourmessage'] = 'Mae hwn yn gadarnhad o dderbyn eich neges';
@@ -209,6 +206,7 @@ $labels['email'] = 'E-bost';
$labels['addcontact'] = 'Ychwanegu cyswllt newydd';
$labels['editcontact'] = 'Golygu cyswllt';
$labels['contacts'] = 'Cysylltiadau';
+$labels['contactproperties'] = 'Nodweddion cyswllt';
$labels['edit'] = 'Golygu';
$labels['cancel'] = 'Canslo';
$labels['save'] = 'Cadw';
@@ -256,6 +254,7 @@ $labels['pagesize'] = 'Rhesi ar bob tudalen';
$labels['signature'] = 'Llofnod';
$labels['dstactive'] = 'Amser arbed golau ddydd';
$labels['htmleditor'] = 'Ysgrifennu negeseuon HTML';
+$labels['htmlonreply'] = 'wrth ateb i neges HTML yn unig';
$labels['htmlsignature'] = 'Llofnod HTML';
$labels['previewpane'] = 'Dangos ffenest rhagolwg';
$labels['skin'] = 'Croen rhyngwyneb';
@@ -268,6 +267,7 @@ $labels['mdnrequests'] = 'Hysbysiadau anfonwr';
$labels['askuser'] = 'gofyn i\'r defnyddiwr';
$labels['autosend'] = 'danfon yn awtomatig';
$labels['autosendknown'] = 'danfon y derbynneb i fy nghsylltiadau yn unig';
+$labels['autosendknownignore'] = 'danfon derbynneb i fy nghysylltiadau, anwybyddu fel arall';
$labels['ignore'] = 'anwybyddu';
$labels['readwhendeleted'] = 'Nodi\'r neges fel darllenwyd wrth ddileu';
$labels['flagfordeletion'] = 'Fflagio\'r neges i\'w ddileu yn hytrach na dileu yn syth';
@@ -313,6 +313,8 @@ $labels['insertsignature'] = 'Mewnosod llofnod';
$labels['previewpanemarkread'] = 'Nodi negeseuon rhagolwg fel darllenwyd';
$labels['afternseconds'] = 'ar ôl $n eiliad';
$labels['reqmdn'] = 'Bob amser gofyn am dderbynneb danfon';
+$labels['reqdsn'] = 'Gofyn am hysbysiad statws danfon bob amser';
+$labels['replysamefolder'] = 'Rhoi atebion yn yr un ffolder i\'r neges sy\'n cael ei ateb';
$labels['folder'] = 'Ffolder';
$labels['folders'] = 'Ffolderi';
$labels['foldername'] = 'Enw ffolder';
@@ -320,11 +322,15 @@ $labels['subscribed'] = 'Tanysgrifwyd';
$labels['messagecount'] = 'Negeseuon';
$labels['create'] = 'Creu';
$labels['createfolder'] = 'Creu ffolder newydd';
-$labels['rename'] = 'Ailenwi';
-$labels['renamefolder'] = 'Ailenwi ffolder';
-$labels['deletefolder'] = 'Dileu ffolder';
$labels['managefolders'] = 'Rheoli ffolderi';
$labels['specialfolders'] = 'Ffolderi arbennig';
+$labels['properties'] = 'Nodweddion';
+$labels['folderproperties'] = 'Ffolder nodweddion';
+$labels['parentfolder'] = 'Ffolder uwchben';
+$labels['location'] = 'Lleoliad';
+$labels['info'] = 'Gwybodaeth';
+$labels['getfoldersize'] = 'Cliciwch i gael maint ffolder';
+$labels['changesubscription'] = 'Cliciwch i newid y tanysgrifiad';
$labels['sortby'] = 'Trefnu yn ôl';
$labels['sortasc'] = 'Trefn esgynnol';
$labels['sortdesc'] = 'Trefn ddisgynnol';
diff --git a/program/localization/cy_GB/messages.inc b/program/localization/cy_GB/messages.inc
index 4a20d306a..486455b5d 100644
--- a/program/localization/cy_GB/messages.inc
+++ b/program/localization/cy_GB/messages.inc
@@ -20,6 +20,9 @@ $messages['cookiesdisabled'] = 'Nid yw eich porwr yn derbyn cwcis';
$messages['sessionerror'] = 'Mae\'r sesiwn yn anghywir neu wedi dod i ben';
$messages['imaperror'] = 'Methwyd cysylltu a\'r gweinydd IMAP';
$messages['servererror'] = 'Gwall Gweinydd!';
+$messages['servererrormsg'] = 'Gwall Gweinydd: $msg';
+$messages['errorreadonly'] = 'Methwyd gweithredu. Mae\'r ffolder yn darllen-yn-unig';
+$messages['errornoperm'] = 'Methwyd gweithredu. Gwrthodwyd caniatad';
$messages['invalidrequest'] = 'Cais annilys! Ni chadwyd unrhyw wybodaeth.';
$messages['nomessagesfound'] = 'Dim negeseuon wedi eu canfod yn y blwch hwn';
$messages['loggedout'] = 'Rydych wedi gorffen y sesiwn yn llwyddianus. Hwyl fawr!';
@@ -51,10 +54,10 @@ $messages['deletecontactconfirm'] = 'Ydych chi wir am ddileu y cysylltiadau ddew
$messages['deletemessagesconfirm'] = 'Ydych chi wir am ddileu y neges(euon) ddewiswyd?';
$messages['deletefolderconfirm'] = 'Ydych chi wir am ddileu y ffolder yma?';
$messages['purgefolderconfirm'] = 'Ydych chi wir am ddileu yr holl negeseuon yn y ffolder yma?';
-$messages['foldercreating'] = 'Yn creu ffolder...';
$messages['folderdeleting'] = 'Yn dileu ffolder...';
-$messages['folderrenaming'] = 'Yn ailenwi ffolder...';
$messages['foldermoving'] = 'Yn symud ffolder...';
+$messages['foldersubscribing'] = 'Yn tanysgrifio i\'r ffolder...';
+$messages['folderunsubscribing'] = 'Yn dad-danysgrifio i\'r ffolder...';
$messages['formincomplete'] = 'Nid oedd y ffurflen wedi ei gwblhau yn llawn';
$messages['noemailwarning'] = 'Rhowch gyfeiriad e-bost dilys';
$messages['nonamewarning'] = 'Rhowch enw';
@@ -74,6 +77,10 @@ $messages['searching'] = 'Yn chwilio...';
$messages['checking'] = 'Yn gofyn...';
$messages['nospellerrors'] = 'Ni gafwyd hyd i unrhyw wallau gwirio';
$messages['folderdeleted'] = 'Dilëwyd y ffolder yn llwyddiannus';
+$messages['foldersubscribed'] = 'Ffolder wedi ei danysgrifio yn llwyddiannus';
+$messages['folderunsubscribed'] = 'Ffolder wedi ei ddad-danysgrifio yn llwyddiannus';
+$messages['folderpurged'] = 'Ffolder wedi ei lanhau yn llwyddiannus';
+$messages['folderexpunged'] = 'Ffolder wedi ei wagio yn llwyddiannus';
$messages['deletedsuccessfully'] = 'Dilëwyd yn llwyddiannus';
$messages['converting'] = 'Yn cael gwared a\'r fformatio...';
$messages['messageopenerror'] = 'Methwyd llwytho\'r neges o\'r gweinydd';
@@ -85,10 +92,11 @@ $messages['sourceisreadonly'] = 'Mae ffynhonnell y cyfeiriadau i\'w ddarllen yn
$messages['errorsavingcontact'] = 'Methwyd cadw cyfeiriad y cyswllt';
$messages['movingmessage'] = 'Yn symud neges...';
$messages['copyingmessage'] = 'Yn copïo\'r neges';
+$messages['deletingmessage'] = 'Yn dileu neges(euon)...';
+$messages['markingmessage'] = 'Yn marcio neges(euon)...';
$messages['receiptsent'] = 'Danfonwyd cadarnhad derbyn yn llwyddiannus';
$messages['errorsendingreceipt'] = 'Methwyd danfon cadarnhad derbyn';
$messages['nodeletelastidentity'] = 'Allwch chi ddim dileu\'r personoliaeth yma, hwn yw\'r un olaf.';
-$messages['addsubfolderhint'] = 'Mi fydd y ffolder yma\'n cael ei greu fel is-ffolder o\'r un sydd wedi ei ddewis ar hyn o bryd';
$messages['forbiddencharacter'] = 'Mae enw\'r ffolder yn cynnwys llythyren annerbynniol';
$messages['selectimportfile'] = 'Dewiswch ffeil i\'w lwytho fyny';
$messages['addresswriterror'] = 'Nid yw\'n bosib ysgrifennu i\'r llyfr cyfeiriadau ';
@@ -106,10 +114,25 @@ $messages['smtpautherror'] = 'Gwall SMTP ($code): Methwyd dilysu\'r cyfrif';
$messages['smtpfromerror'] = 'Gwall SMTP ($code): Methwyd gosod y danfonwr "$from" ($msg)';
$messages['smtptoerror'] = 'Gwall SMTP ($code): Methwyd ychwanegu derbynwr "$to" ($msg)';
$messages['smtprecipientserror'] = 'Gwall SMTP: Nid oedd yn bosib darllen y rhestr o dderbynnwyr';
+$messages['smtpdsnerror'] = 'Gwall SMTP: Dim cefnogaeth i Hysbysiadau Statws Danfon';
$messages['smtperror'] = 'Gwall SMTP: $msg';
$messages['emailformaterror'] = 'Cyfeiriad e-bost anghywir: $email';
$messages['toomanyrecipients'] = 'Gormod o dderbynnwyr. Lleihewch y nifer i $max';
$messages['maxgroupmembersreached'] = 'Mae nifer o aelodau\'r grŵp yn fwy na\'r uchafswm o $max';
$messages['internalerror'] = 'Fe gafwyd gwall mewnol. Rhowch gynnig arni eto.';
+$messages['contactdelerror'] = 'Methwyd dileu cyswllt';
+$messages['contactdeleted'] = 'Cyswllt wedi ei ddileu yn llwyddiannus';
+$messages['groupdeleted'] = 'Grŵp wedi ei ddileu yn llwyddiannus';
+$messages['grouprenamed'] = 'Grŵp wedi ei ailenwi yn llwyddiannus';
+$messages['groupcreated'] = 'Grŵp wedi ei greu yn llwyddiannus';
+$messages['messagedeleted'] = 'Neges(euon) wedi eu dileu yn llwyddiannus';
+$messages['messagemoved'] = 'Neges(euon) wedi eu symud yn llwyddiannus';
+$messages['messagecopied'] = 'Neges(euon) wedi eu copïo yn llwyddiannus';
+$messages['messagemarked'] = 'Neges(euon) wedi eu marcio yn llwyddiannus';
+$messages['autocompletechars'] = 'Rhowch o leia $min llythyren ar gyfer awto-gwblhau';
+$messages['namecannotbeempty'] = 'Ni all yr enw fod yn wag';
+$messages['nametoolong'] = 'Mae\'r enw yn rhy hir';
+$messages['folderupdated'] = 'Diweddarwyd y ffolder yn llwyddiannus';
+$messages['foldercreated'] = 'Crëwyd y ffolder yn llwyddiannus';
?>
diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc
index 6d45c0455..3aa1ae44d 100644
--- a/program/localization/da_DK/labels.inc
+++ b/program/localization/da_DK/labels.inc
@@ -309,9 +309,6 @@ $labels['subscribed'] = 'Abonneret';
$labels['messagecount'] = 'Beskeder';
$labels['create'] = 'Opret';
$labels['createfolder'] = 'Opret ny mappe';
-$labels['rename'] = 'Omdøb';
-$labels['renamefolder'] = 'Omdøb mappe';
-$labels['deletefolder'] = 'Slet mappe';
$labels['managefolders'] = 'Administrér mapper';
$labels['specialfolders'] = 'Specielle mapper';
$labels['sortby'] = 'Sortér efter';
diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc
index e66099c5c..74d70b78e 100644
--- a/program/localization/da_DK/messages.inc
+++ b/program/localization/da_DK/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Vil du virkelig slette den/de valgte kontak
$messages['deletemessagesconfirm'] = 'Vil du virkelig slette den/de valgte besked(er)?';
$messages['deletefolderconfirm'] = 'Vil du virkelig slette den valgte mappe';
$messages['purgefolderconfirm'] = 'Vil du virkelig slette alle beskeder i denne mappe?';
-$messages['foldercreating'] = 'Opretter mappen...';
$messages['folderdeleting'] = 'Sletter mappen...';
-$messages['folderrenaming'] = 'Omdøber mappen...';
$messages['foldermoving'] = 'Flytter mappen...';
$messages['formincomplete'] = 'Formularen var ikke fuldstændig fyldt ud';
$messages['noemailwarning'] = 'Indtast venligst en gyldig e-mail adresse';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Kopierer besked...';
$messages['receiptsent'] = 'Kvittering for læsning er sendt';
$messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes';
$messages['nodeletelastidentity'] = 'Du kan ikke slette denne identitet, da det er den eneste der er tilbage.';
-$messages['addsubfolderhint'] = 'Denne mappe vil blive oprettet som en undermappe til den mappe der er valgt i øjeblikket.';
$messages['forbiddencharacter'] = 'Mappe-navnet indeholder ugyldige tegn';
$messages['selectimportfile'] = 'Vælg venligst den fil der skal uploades';
$messages['addresswriterror'] = 'Der kan ikke skrives i den valgte adressebog';
diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc
index 5c2bc6d98..c59cf61a2 100644
--- a/program/localization/de_CH/labels.inc
+++ b/program/localization/de_CH/labels.inc
@@ -38,8 +38,7 @@ $labels['to'] = 'Empfänger';
$labels['cc'] = 'Kopie (CC)';
$labels['bcc'] = 'Blind-Kopie';
$labels['replyto'] = 'Antwort an';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Datum';
$labels['size'] = 'Grösse';
$labels['priority'] = 'Priorität';
@@ -201,8 +200,7 @@ $labels['maxuploadsize'] = 'Maximal erlaubte Dateigrösse ist $size';
$labels['addcc'] = 'Cc hinzufügen';
$labels['addbcc'] = 'Bcc hinzufügen';
$labels['addreplyto'] = 'Antwortadresse hinzufügen';
-$labels['addmailreplyto'] = 'Mail-Reply-To hinzufügen';
-$labels['addmailfollowupto'] = 'Mail-Followup-To hinzufügen';
+$labels['addfollowupto'] = 'Followup-To hinzufügen';
$labels['mdnrequest'] = 'Der Sender dieser Nachricht hat eine Empfangsbestätigung angefordert. Möchten Sie diese jetzt senden?';
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dieses ist eine Empfangsbestätigung für Ihre Nachricht';
@@ -330,11 +328,15 @@ $labels['subscribed'] = 'Abonniert';
$labels['messagecount'] = 'Nachrichten';
$labels['create'] = 'Erstellen';
$labels['createfolder'] = 'Neuen Ordner erstellen';
-$labels['rename'] = 'Umbenennen';
-$labels['renamefolder'] = 'Ordner umbenennen';
-$labels['deletefolder'] = 'Ordner löschen';
$labels['managefolders'] = 'Ordner verwalten';
$labels['specialfolders'] = 'Spezialordner';
+$labels['properties'] = 'Eigenschaften';
+$labels['folderproperties'] = 'Ordnereigenschaften';
+$labels['parentfolder'] = 'Eltern';
+$labels['location'] = 'Speicherort';
+$labels['info'] = 'Informationen';
+$labels['getfoldersize'] = 'Ordnergrösse anzeigen';
+$labels['changesubscription'] = 'Abonnieren';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'aufsteigend sortieren';
$labels['sortdesc'] = 'absteigend sortieren';
diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc
index 56f3a4526..b753418e0 100644
--- a/program/localization/de_CH/messages.inc
+++ b/program/localization/de_CH/messages.inc
@@ -55,10 +55,10 @@ $messages['deletecontactconfirm'] = 'Wollen Sie die ausgewählten Kontakte wirkl
$messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?';
$messages['deletefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich löschen?';
$messages['purgefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich leeren?';
-$messages['foldercreating'] = 'Erstelle Ordner...';
$messages['folderdeleting'] = 'Lösche Ordner...';
-$messages['folderrenaming'] = 'Nenne Ordner um...';
$messages['foldermoving'] = 'Verschiebe Ordner...';
+$messages['foldersubscribing'] = 'Abonniere Ordner...';
+$messages['folderunsubscribing'] = 'Ordner abbstellen...';
$messages['formincomplete'] = 'Das Formular wurde nicht vollständig ausgefüllt';
$messages['noemailwarning'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein';
$messages['nonamewarning'] = 'Bitte geben Sie einen Namen ein';
@@ -78,6 +78,10 @@ $messages['searching'] = 'Suche...';
$messages['checking'] = 'Prüfe...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden';
$messages['folderdeleted'] = 'Ordner erfolgreich gelöscht';
+$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert';
+$messages['folderunsubscribed'] = 'Der Ordner wurde erfolgreich abbestellt';
+$messages['folderpurged'] = 'Der Ordner wurde erfolgreich gelöscht';
+$messages['folderexpunged'] = 'Der Ordner wurde erfolgreich gepackt';
$messages['deletedsuccessfully'] = 'Erfolgreich gelöscht';
$messages['converting'] = 'Entferne Formatierungen...';
$messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden';
@@ -94,7 +98,6 @@ $messages['markingmessage'] = 'Markiere Nachricht(en)...';
$messages['receiptsent'] = 'Lesebestätigung erfolgreich gesendet';
$messages['errorsendingreceipt'] = 'Bestätigung konnte nicht gesendet werden';
$messages['nodeletelastidentity'] = 'Diese Identität kann nicht gelöscht werden, da dies die letzte ist.';
-$messages['addsubfolderhint'] = 'Wird als Unterordner des aktuell selektierten Ordners erstellt';
$messages['forbiddencharacter'] = 'Der Ordnername enthält ein ungültiges Zeichen';
$messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren aus';
$messages['addresswriterror'] = 'Das gewählte Adressbuch kann nicht verändert werden';
@@ -128,5 +131,11 @@ $messages['messagemoved'] = 'Nachricht(en) erfolgreich verschoben';
$messages['messagecopied'] = 'Nachricht(en) erfolgreich kopiert';
$messages['messagemarked'] = 'Nachricht(en) erfolgreich markiert';
$messages['autocompletechars'] = 'Geben Sie mind. $min Zeichen für die Auto-Vervollständigung ein';
+$messages['namecannotbeempty'] = 'Der Name darf nicht leer sein';
+$messages['nametoolong'] = 'Der Name ist zu lang';
+$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert';
+$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt';
+$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
+$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.';
?>
diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc
index 791c32311..262127cf4 100644
--- a/program/localization/de_DE/labels.inc
+++ b/program/localization/de_DE/labels.inc
@@ -38,8 +38,7 @@ $labels['to'] = 'Empfänger';
$labels['cc'] = 'Kopie';
$labels['bcc'] = 'Blindkopie';
$labels['replyto'] = 'Antwort an';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Datum';
$labels['size'] = 'Größe';
$labels['priority'] = 'Priorität';
@@ -201,8 +200,7 @@ $labels['maxuploadsize'] = 'Maximal erlaubte Dateigröße ist $size';
$labels['addcc'] = 'Cc hinzufügen';
$labels['addbcc'] = 'Bcc hinzufügen';
$labels['addreplyto'] = 'Antwortadresse hinzufügen';
-$labels['addmailreplyto'] = 'Mail-Reply-To hinzufügen';
-$labels['addmailfollowupto'] = 'Mail-Followup-To hinzufügen';
+$labels['addfollowupto'] = 'Followup-To hinzufügen';
$labels['mdnrequest'] = 'Der Sender dieser Nachricht möchte gerne eine Lesebestätigung. Wollen Sie dieses bestätigen?';
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dies ist eine Empfangsbestätigung für Ihre Nachricht';
@@ -330,11 +328,15 @@ $labels['subscribed'] = 'Abonniert';
$labels['messagecount'] = 'Nachrichten';
$labels['create'] = 'Erstellen';
$labels['createfolder'] = 'Neuen Ordner erstellen';
-$labels['rename'] = 'Umbenennen';
-$labels['renamefolder'] = 'Ordner umbenennen';
-$labels['deletefolder'] = 'Ordner löschen';
$labels['managefolders'] = 'Ordner verwalten';
$labels['specialfolders'] = 'Spezialordner';
+$labels['properties'] = 'Eigenschaften';
+$labels['folderproperties'] = 'Ordnereigenschaften';
+$labels['parentfolder'] = 'Eltern';
+$labels['location'] = 'Speicherort';
+$labels['info'] = 'Informationen';
+$labels['getfoldersize'] = 'Ordnergröße anzeigen';
+$labels['changesubscription'] = 'Abonnieren';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'Aufsteigend sortieren';
$labels['sortdesc'] = 'Absteigend sortieren';
diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc
index 7f563a7a2..47e4e017d 100644
--- a/program/localization/de_DE/messages.inc
+++ b/program/localization/de_DE/messages.inc
@@ -55,10 +55,10 @@ $messages['deletecontactconfirm'] = 'Wollen Sie die ausgewählten Kontakte wirkl
$messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?';
$messages['deletefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich löschen?';
$messages['purgefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich leeren?';
-$messages['foldercreating'] = 'Erstelle Ordner...';
$messages['folderdeleting'] = 'Lösche Ordner...';
-$messages['folderrenaming'] = 'Nenne Ordner um...';
$messages['foldermoving'] = 'Verschiebe Ordner...';
+$messages['foldersubscribing'] = 'Abonniere Ordner...';
+$messages['folderunsubscribing'] = 'Ordner abbstellen...';
$messages['formincomplete'] = 'Das Formular wurde nicht vollständig ausgefüllt';
$messages['noemailwarning'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein';
$messages['nonamewarning'] = 'Bitte geben Sie einen Namen ein';
@@ -78,6 +78,10 @@ $messages['searching'] = 'Suche...';
$messages['checking'] = 'Prüfe...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden';
$messages['folderdeleted'] = 'Ordner erfolgreich gelöscht';
+$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert';
+$messages['folderunsubscribed'] = 'Der Ordner wurde erfolgreich abbestellt';
+$messages['folderpurged'] = 'Der Ordner wurde erfolgreich gelöscht';
+$messages['folderexpunged'] = 'Der Ordner wurde erfolgreich gepackt';
$messages['deletedsuccessfully'] = 'Erfolgreich gelöscht';
$messages['converting'] = 'Entferne Formatierungen der Nachricht...';
$messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden';
@@ -94,7 +98,6 @@ $messages['markingmessage'] = 'Markiere Nachricht(en)...';
$messages['receiptsent'] = 'Lesebestätigung erfolgreich gesendet';
$messages['errorsendingreceipt'] = 'Bestätigung konnte nicht gesendet werden';
$messages['nodeletelastidentity'] = 'Diese Identität kann nicht gelöscht werden, da dies die letzte ist.';
-$messages['addsubfolderhint'] = 'Wird als Unterordner des aktuell selektierten Ordners erstellt';
$messages['forbiddencharacter'] = 'Der Ordnername enthält ein ungültiges Zeichen';
$messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren aus';
$messages['addresswriterror'] = 'Das ausgewählte Adressbuch kann nicht verändert werden';
@@ -128,5 +131,11 @@ $messages['messagemoved'] = 'Nachricht(en) erfolgreich verschoben';
$messages['messagecopied'] = 'Nachricht(en) erfolgreich kopiert';
$messages['messagemarked'] = 'Nachricht(en) erfolgreich markiert';
$messages['autocompletechars'] = 'Geben Sie mind. $min Zeichen für die Auto-Vervollständigung ein';
+$messages['namecannotbeempty'] = 'Der Name darf nicht leer sein';
+$messages['nametoolong'] = 'Der Name ist zu lang';
+$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert';
+$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt';
+$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
+$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.';
?>
diff --git a/program/localization/el_GR/labels.inc b/program/localization/el_GR/labels.inc
index 5303a08f9..188477099 100644
--- a/program/localization/el_GR/labels.inc
+++ b/program/localization/el_GR/labels.inc
@@ -238,9 +238,6 @@ $labels['subscribed'] = 'ΕγγÏαφή';
$labels['messagecount'] = 'ΜηνÏματα';
$labels['create'] = 'ΔημιουÏγία';
$labels['createfolder'] = 'ΔημιουÏγία νέου φακέλου';
-$labels['rename'] = 'Μετονομασία';
-$labels['renamefolder'] = 'Μετονομασία φακέλου';
-$labels['deletefolder'] = 'ΔιαγÏαφή φακέλου';
$labels['managefolders'] = 'ΔιαχείÏιση φακέλων';
$labels['specialfolders'] = 'Ειδικοί Φάκελοι';
$labels['sortby'] = 'Ταξινόμηση κατά';
diff --git a/program/localization/el_GR/messages.inc b/program/localization/el_GR/messages.inc
index de617ce8e..0e781adb3 100644
--- a/program/localization/el_GR/messages.inc
+++ b/program/localization/el_GR/messages.inc
@@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Θέλετε να διαγÏάψετε τη
$messages['deletemessagesconfirm'] = 'Θέλετε να διαγÏάψετε το συγκεκÏιμένο μήνυμα/τα;';
$messages['deletefolderconfirm'] = 'Θέλετε να διαγÏάψετε το συγκεκÏιμένο φάκελο;';
$messages['purgefolderconfirm'] = 'Θέλετε να διαγÏάψετε όλα τα μηνÏματα στο συγκεκÏιμένο φάκελο;';
-$messages['foldercreating'] = 'ΔημιουÏγία φακέλου';
$messages['folderdeleting'] = 'ΔιαγÏαφή φακέλου';
-$messages['folderrenaming'] = 'Μετονομασία φακέλου';
$messages['foldermoving'] = 'ΜεταφοÏά φακέλου';
$messages['formincomplete'] = 'Η φόÏμα δεν έχει συμπληÏωθεί πλήÏως';
$messages['noemailwarning'] = 'ΠαÏακαλώ εισάγετε έγκυÏη διεÏθυνση email';
@@ -88,7 +86,6 @@ $messages['movingmessage'] = 'Μετακίνηση μηνÏματος...';
$messages['receiptsent'] = 'Επιτυχής αποστολή αναφοÏάς ανάγνωσης';
$messages['errorsendingreceipt'] = 'Αποστολή αναφοÏάς απέτυχε';
$messages['nodeletelastidentity'] = 'Δε μποÏείτε να διαγÏάψετε αυτήν την ταυτότητα, είναι η τελευταία.';
-$messages['addsubfolderhint'] = 'Αυτός ο φάκελος θα δημιουÏγηθεί ως υποφάκελος του επιλεγμένου';
$messages['forbiddencharacter'] = 'Η ονομασία φακέλου πεÏιέχει μη επιτÏεπτό χαÏακτήÏα';
$messages['selectimportfile'] = 'Επιλέξτε αÏχείο για ανέβασμα';
$messages['addresswriterror'] = 'Η επιλεγμένη ατζέντα διευθÏνσεων δεν είνα εγγÏάψιμη';
diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
index 44f4d114d..7a36f007e 100644
--- a/program/localization/en_GB/labels.inc
+++ b/program/localization/en_GB/labels.inc
@@ -38,11 +38,12 @@ $labels['to'] = 'Recipient';
$labels['cc'] = 'Copy';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Date';
$labels['size'] = 'Size';
$labels['priority'] = 'Priority';
$labels['organization'] = 'Organisation';
-$labels['reply-to'] = 'Reply-To';
+$labels['readstatus'] = 'Read status';
$labels['mailboxlist'] = 'Folders';
$labels['messagesfromto'] = 'Messages $from to $to of $count';
$labels['threadsfromto'] = 'Threads $from to $to of $count';
@@ -96,7 +97,9 @@ $labels['today'] = 'Today';
$labels['checkmail'] = 'Check for new messages';
$labels['writenewmessage'] = 'Create a new message';
$labels['replytomessage'] = 'Reply to sender';
-$labels['replytoallmessage'] = 'Reply to sender and all recipients';
+$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
+$labels['replyall'] = 'Reply all';
+$labels['replylist'] = 'Reply list';
$labels['forwardmessage'] = 'Forward the message';
$labels['deletemessage'] = 'Delete message';
$labels['movemessagetotrash'] = 'Move message to "Deleted Items"';
@@ -169,6 +172,7 @@ $labels['addattachment'] = 'Attach a file';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'Return receipt';
+$labels['dsn'] = 'Delivery status notification';
$labels['editidents'] = 'Edit identities';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
@@ -193,6 +197,7 @@ $labels['maxuploadsize'] = 'Maximum allowed file size is $size';
$labels['addcc'] = 'Add Cc';
$labels['addbcc'] = 'Add Bcc';
$labels['addreplyto'] = 'Add Reply-To';
+$labels['addfollowupto'] = 'Add Followup-To';
$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
$labels['receiptread'] = 'Return Receipt (read)';
$labels['yourmessage'] = 'This is a Return Receipt for your message';
@@ -204,6 +209,7 @@ $labels['email'] = 'E-Mail';
$labels['addcontact'] = 'Add new contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
+$labels['contactproperties'] = 'Contact properties';
$labels['edit'] = 'Edit';
$labels['cancel'] = 'Cancel';
$labels['save'] = 'Save';
@@ -251,6 +257,7 @@ $labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Summer time';
$labels['htmleditor'] = 'Compose HTML messages';
+$labels['htmlonreply'] = 'on reply to HTML message only';
$labels['htmlsignature'] = 'HTML signature';
$labels['previewpane'] = 'Show preview pane';
$labels['skin'] = 'Interface skin';
@@ -259,10 +266,11 @@ $labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'User Interface';
$labels['serversettings'] = 'Server Settings';
$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'Sender notifications';
-$labels['askuser'] = 'ask the user';
+$labels['mdnrequests'] = 'On request for return receipt';
+$labels['askuser'] = 'ask each time';
$labels['autosend'] = 'send automatically';
-$labels['autosendknown'] = 'send receipt to my contacts only';
+$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask';
+$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'ignore';
$labels['readwhendeleted'] = 'Mark the message as read on delete';
$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
@@ -308,16 +316,14 @@ $labels['insertsignature'] = 'Insert signature';
$labels['previewpanemarkread'] = 'Mark previewed messages as read';
$labels['afternseconds'] = 'after $n seconds';
$labels['reqmdn'] = 'Always request a return receipt';
+$labels['reqdsn'] = 'Always request a delivery status notification';
+$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Create';
$labels['createfolder'] = 'Create new folder';
-$labels['rename'] = 'Rename';
-$labels['renamefolder'] = 'Rename folder';
-$labels['deletefolder'] = 'Delete folder';
$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['sortby'] = 'Sort by';
diff --git a/program/localization/en_GB/messages.inc b/program/localization/en_GB/messages.inc
index ec4f6e70d..5c1286e6c 100644
--- a/program/localization/en_GB/messages.inc
+++ b/program/localization/en_GB/messages.inc
@@ -23,6 +23,7 @@ $messages['cookiesdisabled'] = 'Your browser does not accept cookies';
$messages['sessionerror'] = 'Your session is invalid or has expired';
$messages['imaperror'] = 'Connection to IMAP server failed';
$messages['servererror'] = 'Server Error!';
+$messages['servererrormsg'] = 'Server Error: $msg';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['nomessagesfound'] = 'No messages found in this mailbox';
$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
@@ -46,17 +47,15 @@ $messages['sendingfailed'] = 'Failed to send message';
$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message';
$messages['errorsavingsent'] = 'An error occurred while saving sent message';
$messages['errorsaving'] = 'An error occurred while saving';
-$messages['errormoving'] = 'Could not move the message';
+$messages['errormoving'] = 'Could not move the message(s)';
$messages['errorcopying'] = 'Could not copy the message(s)';
-$messages['errordeleting'] = 'Could not delete the message';
-$messages['errormarking'] = 'Could not mark the message';
+$messages['errordeleting'] = 'Could not delete the message(s)';
+$messages['errormarking'] = 'Could not mark the message(s)';
$messages['deletecontactconfirm'] = 'Do you really want to delete the selected contact(s)?';
$messages['deletemessagesconfirm'] = 'Do you really want to delete the selected message(s)?';
$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['foldercreating'] = 'Creating folder...';
$messages['folderdeleting'] = 'Deleting folder...';
-$messages['folderrenaming'] = 'Renaming folder...';
$messages['foldermoving'] = 'Moving folder...';
$messages['formincomplete'] = 'The form was not completely filled out';
$messages['noemailwarning'] = 'Please enter a valid email address';
@@ -86,12 +85,13 @@ $messages['copysuccess'] = 'Successfully copied $nr addresses';
$messages['copyerror'] = 'Could not copy any addresses';
$messages['sourceisreadonly'] = 'This address source is read-only';
$messages['errorsavingcontact'] = 'Could not save the contact address';
-$messages['movingmessage'] = 'Moving message...';
-$messages['copyingmessage'] = 'Copying message...';
+$messages['movingmessage'] = 'Moving message(s)...';
+$messages['copyingmessage'] = 'Copying message(s)...';
+$messages['deletingmessage'] = 'Deleting message(s)...';
+$messages['markingmessage'] = 'Marking message(s)...';
$messages['receiptsent'] = 'Successfully sent a read receipt';
$messages['errorsendingreceipt'] = 'Could not send the receipt';
$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['addsubfolderhint'] = 'This folder will be created as subfolder of the currently selected one';
$messages['forbiddencharacter'] = 'Folder name contains a forbidden character';
$messages['selectimportfile'] = 'Please select a file to upload';
$messages['addresswriterror'] = 'The selected address book is not writeable';
@@ -109,10 +109,21 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed';
$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list';
+$messages['smtpdsnerror'] = 'SMTP Error: Server does not support Delivery Status Notifications';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Incorrect e-mail address: $email';
$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max';
$messages['internalerror'] = 'An internal error occured. Please try again';
+$messages['contactdelerror'] = 'Could not delete contact(s)';
+$messages['contactdeleted'] = 'Contact(s) deleted successfully';
+$messages['groupdeleted'] = 'Group deleted successfully';
+$messages['grouprenamed'] = 'Group renamed successfully';
+$messages['groupcreated'] = 'Group created successfully';
+$messages['messagedeleted'] = 'Message(s) deleted successfully';
+$messages['messagemoved'] = 'Message(s) moved successfully';
+$messages['messagecopied'] = 'Message(s) copied successfully';
+$messages['messagemarked'] = 'Message(s) marked successfully';
+$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion';
-?>
+?> \ No newline at end of file
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index a212e65c3..dfeb1c2d4 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -46,19 +46,13 @@ $labels['to'] = 'Recipient';
$labels['cc'] = 'Copy';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Date';
$labels['size'] = 'Size';
$labels['priority'] = 'Priority';
$labels['organization'] = 'Organization';
$labels['readstatus'] = 'Read status';
-// aliases
-$labels['reply-to'] = $labels['replyto'];
-$labels['mail-reply-to'] = $labels['mailreplyto'];
-$labels['mail-followup-to'] = $labels['mailfollowupto'];
-
$labels['mailboxlist'] = 'Folders';
$labels['messagesfromto'] = 'Messages $from to $to of $count';
$labels['threadsfromto'] = 'Threads $from to $to of $count';
@@ -241,8 +235,7 @@ $labels['maxuploadsize'] = 'Maximum allowed file size is $size';
$labels['addcc'] = 'Add Cc';
$labels['addbcc'] = 'Add Bcc';
$labels['addreplyto'] = 'Add Reply-To';
-$labels['addmailreplyto'] = 'Add Mail-Reply-To';
-$labels['addmailfollowupto'] = 'Add Mail-Followup-To';
+$labels['addfollowupto'] = 'Add Followup-To';
// mdn
$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
@@ -387,11 +380,15 @@ $labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Create';
$labels['createfolder'] = 'Create new folder';
-$labels['rename'] = 'Rename';
-$labels['renamefolder'] = 'Rename folder';
-$labels['deletefolder'] = 'Delete folder';
$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
+$labels['properties'] = 'Properties';
+$labels['folderproperties'] = 'Folder properties';
+$labels['parentfolder'] = 'Parent folder';
+$labels['location'] = 'Location';
+$labels['info'] = 'Information';
+$labels['getfoldersize'] = 'Click to get folder size';
+$labels['changesubscription'] = 'Click to change subscription';
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 0f87c0505..df78b0f34 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -24,6 +24,8 @@ $messages['sessionerror'] = 'Your session is invalid or expired';
$messages['imaperror'] = 'Connection to IMAP server failed';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
+$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only';
+$messages['errornoperm'] = 'Unable to perform operation. Permission denied';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['nomessagesfound'] = 'No messages found in this mailbox';
$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
@@ -55,10 +57,10 @@ $messages['deletecontactconfirm'] = 'Do you really want to delete the selected
$messages['deletemessagesconfirm'] = 'Do you really want to delete the selected message(s)?';
$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['foldercreating'] = 'Creating folder...';
$messages['folderdeleting'] = 'Deleting folder...';
-$messages['folderrenaming'] = 'Renaming folder...';
$messages['foldermoving'] = 'Moving folder...';
+$messages['foldersubscribing'] = 'Subscribing folder...';
+$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'The form was not completely filled out';
$messages['noemailwarning'] = 'Please enter a valid email address';
$messages['nonamewarning'] = 'Please enter a name';
@@ -78,6 +80,10 @@ $messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
$messages['nospellerrors'] = 'No spelling errors found';
$messages['folderdeleted'] = 'Folder successfully deleted';
+$messages['foldersubscribed'] = 'Folder successfully subscribed';
+$messages['folderunsubscribed'] = 'Folder successfully unsubscribed';
+$messages['folderpurged'] = 'Folder successfully purged';
+$messages['folderexpunged'] = 'Folder successfully emptied';
$messages['deletedsuccessfully'] = 'Successfully deleted';
$messages['converting'] = 'Removing formatting...';
$messages['messageopenerror'] = 'Could not load message from server';
@@ -94,7 +100,6 @@ $messages['markingmessage'] = 'Marking message(s)...';
$messages['receiptsent'] = 'Successfully sent a read receipt';
$messages['errorsendingreceipt'] = 'Could not send the receipt';
$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['addsubfolderhint'] = 'This folder will be created as subfolder of the currently selected one';
$messages['forbiddencharacter'] = 'Folder name contains a forbidden character';
$messages['selectimportfile'] = 'Please select a file to upload';
$messages['addresswriterror'] = 'The selected address book is not writeable';
@@ -128,5 +133,9 @@ $messages['messagemoved'] = 'Message(s) moved successfully';
$messages['messagecopied'] = 'Message(s) copied successfully';
$messages['messagemarked'] = 'Message(s) marked successfully';
$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion';
+$messages['namecannotbeempty'] = 'Name cannot be empty';
+$messages['nametoolong'] = 'Name is too long';
+$messages['folderupdated'] = 'Folder updated successfully';
+$messages['foldercreated'] = 'Folder created successfully';
?>
diff --git a/program/localization/eo/labels.inc b/program/localization/eo/labels.inc
index df217047b..06fafd584 100644
--- a/program/localization/eo/labels.inc
+++ b/program/localization/eo/labels.inc
@@ -220,9 +220,6 @@ $labels['subscribed'] = 'Abonata';
$labels['messagecount'] = 'MesaÄoj';
$labels['create'] = 'Kreu';
$labels['createfolder'] = 'Kreu novan dosierujon';
-$labels['rename'] = 'Renomu';
-$labels['renamefolder'] = 'Renomu dosierujon';
-$labels['deletefolder'] = 'Forigu dosierujon';
$labels['managefolders'] = 'Administru dosierujon';
$labels['sortby'] = 'Ordigu per';
$labels['sortasc'] = 'Ordigu kreskante';
diff --git a/program/localization/eo/messages.inc b/program/localization/eo/messages.inc
index 956aed059..4aa85224e 100644
--- a/program/localization/eo/messages.inc
+++ b/program/localization/eo/messages.inc
@@ -75,7 +75,6 @@ $messages['movingmessage'] = 'Translokanta mesaÄon...';
$messages['receiptsent'] = 'Sukcese sendis konfirmon';
$messages['errorsendingreceipt'] = 'Ne povis sendi konfirmon';
$messages['nodeletelastidentity'] = 'Vi ne povas forigi ĉi tiun identon, ĉar Äi estas la lasta';
-$messages['addsubfolderhint'] = 'Ĉi tiu dosierujo estos farita kiel subdosierujo de la nune elektita dosierujo';
$messages['forbiddencharacter'] = 'Dosierujo-nomo enhavas malpermesitan karaktron';
?>
diff --git a/program/localization/es_AR/labels.inc b/program/localization/es_AR/labels.inc
index 6c2d16ba3..25f0cf928 100644
--- a/program/localization/es_AR/labels.inc
+++ b/program/localization/es_AR/labels.inc
@@ -301,9 +301,6 @@ $labels['subscribed'] = 'Suscripta';
$labels['messagecount'] = 'Mensajes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear nueva carpeta';
-$labels['rename'] = 'Renombrar';
-$labels['renamefolder'] = 'Renombrar carpeta';
-$labels['deletefolder'] = 'Eliminar carpeta';
$labels['managefolders'] = 'Administrar carpetas';
$labels['specialfolders'] = 'Carpetas Especiales';
$labels['sortby'] = 'Ordenar por';
diff --git a/program/localization/es_AR/messages.inc b/program/localization/es_AR/messages.inc
index 384349498..3319b6091 100644
--- a/program/localization/es_AR/messages.inc
+++ b/program/localization/es_AR/messages.inc
@@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = '¿Realmente quiere eliminar los contactos s
$messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?';
$messages['deletefolderconfirm'] = '¿Realmente quiere eliminar esta carpeta?';
$messages['purgefolderconfirm'] = '¿Realmente quiere eliminar todos los mensajes de esta carpeta?';
-$messages['foldercreating'] = 'Creando carpeta...';
$messages['folderdeleting'] = 'Eliminando carpeta...';
-$messages['folderrenaming'] = 'Renombrando carpeta...';
$messages['foldermoving'] = 'Moviendo carpeta...';
$messages['formincomplete'] = 'No se han llenado todos los campos del formulario';
$messages['noemailwarning'] = 'Por favor, introduzca un e-mail válido';
@@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Copiando mensaje...';
$messages['receiptsent'] = 'La notificación de lectura se ha enviado con éxito.';
$messages['errorsendingreceipt'] = 'No se ha podido enviar la notificación de lectura.';
$messages['nodeletelastidentity'] = 'No se puede borrar esta identidad puesto que es la última.';
-$messages['addsubfolderhint'] = 'Esta carpeta se creará como una subcarpeta dentro de la carpeta seleccionada';
$messages['forbiddencharacter'] = 'El nombre de la carpeta contiene un carácter prohibido';
$messages['selectimportfile'] = 'Por favor, seleccione el archivo a subir';
$messages['addresswriterror'] = 'La libreta de direcciones seleccionada es de solo-lectura';
diff --git a/program/localization/es_ES/labels.inc b/program/localization/es_ES/labels.inc
index 4e4829f6a..8365693d6 100644
--- a/program/localization/es_ES/labels.inc
+++ b/program/localization/es_ES/labels.inc
@@ -40,11 +40,15 @@ $labels['to'] = 'Destinatario';
$labels['cc'] = 'Copia';
$labels['bcc'] = 'Cco';
$labels['replyto'] = 'Respuesta a';
+$labels['followupto'] = 'Seguir a';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
+$labels['readstatus'] = 'Leer estado';
$labels['reply-to'] = 'Respuesta a';
+$labels['mail-reply-to'] = 'Responder a';
+$labels['mail-followup-to'] = 'Seguir a';
$labels['mailboxlist'] = 'Bandejas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
$labels['threadsfromto'] = 'Hilos $from a $to de $count';
@@ -99,6 +103,8 @@ $labels['checkmail'] = 'Revisar si hay nuevos mensajes';
$labels['writenewmessage'] = 'Crear nuevo mensaje';
$labels['replytomessage'] = 'Responder mensaje';
$labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios';
+$labels['replyall'] = 'Responder a todos';
+$labels['replylist'] = 'Responder a la lista';
$labels['forwardmessage'] = 'Reenviar mensaje';
$labels['deletemessage'] = 'Eliminar mensaje';
$labels['movemessagetotrash'] = 'Mover mensaje a la papelera';
@@ -171,13 +177,15 @@ $labels['addattachment'] = 'Adjuntar un archivo';
$labels['charset'] = 'Codificación';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Acuse de recibo';
+$labels['dsn'] = 'Entrega de notificaciones de estado';
+$labels['editidents'] = 'Editar identidades';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Continuar edición';
$labels['revertto'] = 'Revertir a';
$labels['attachments'] = 'Adjuntos';
$labels['upload'] = 'Subir';
$labels['close'] = 'Cerrar';
-$labels['messageoptions'] = 'Opciones de mensaje...';
+$labels['messageoptions'] = 'Opciones de mensaje...';
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Bajísimo';
$labels['normal'] = 'Normal';
@@ -194,6 +202,7 @@ $labels['maxuploadsize'] = 'Tamaño máximo permitido: $size';
$labels['addcc'] = 'Añadir Cc';
$labels['addbcc'] = 'Añadir Cco';
$labels['addreplyto'] = 'Añadir Respuesta a';
+$labels['addfollowupto'] = 'Añadir Seguir a';
$labels['mdnrequest'] = 'El emisor de este mensaje desea ser notificado cuando usted lo lea. ¿Quiere enviar esta notificación?';
$labels['receiptread'] = 'Notificación de lectura';
$labels['yourmessage'] = 'Esta es una notificación de lectura de su mensaje';
@@ -205,6 +214,7 @@ $labels['email'] = 'Correo';
$labels['addcontact'] = 'Añadir nuevo contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
+$labels['contactproperties'] = 'Propiedades del contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -252,6 +262,7 @@ $labels['pagesize'] = 'Filas por página';
$labels['signature'] = 'Firma';
$labels['dstactive'] = 'Cambio de horario';
$labels['htmleditor'] = 'Componer mensaje en HTML';
+$labels['htmlonreply'] = 'En respuesta al mensaje sólo HTML';
$labels['htmlsignature'] = 'Firma HTML';
$labels['previewpane'] = 'Mostrar vista preliminar';
$labels['skin'] = 'Apariencia de la interfaz';
@@ -263,6 +274,8 @@ $labels['mailboxview'] = 'Vista de buzón';
$labels['mdnrequests'] = 'Notificaciones de envío';
$labels['askuser'] = 'preguntar al usuario';
$labels['autosend'] = 'enviar automáticamente';
+$labels['autosendknown'] = 'Añade el destinatario a mis contacatos, sino pregunta me';
+$labels['autosendknownignore'] = 'Añade el destinatario a mis contacatos, ignoralo';
$labels['ignore'] = 'ignorar';
$labels['readwhendeleted'] = 'Marcar el mensaje como leído al borrarlo';
$labels['flagfordeletion'] = 'Marcar el mensaje para borrarse en vez de borrarlo';
@@ -307,6 +320,9 @@ $labels['abovequote'] = 'arriba del texto seleccionado';
$labels['insertsignature'] = 'Insertar firma';
$labels['previewpanemarkread'] = 'Marcar mensaje previsualizado como leído';
$labels['afternseconds'] = 'después de $n segundos';
+$labels['reqmdn'] = 'Solicitar siempre un acuse de recibo';
+$labels['reqdsn'] = 'Solicitar siempre la entrega de notificaciones de estado';
+$labels['replysamefolder'] = 'Coloque las respuestas en la carpeta del mensaje que se responde';
$labels['folder'] = 'Bandeja';
$labels['folders'] = 'Bandejas';
$labels['foldername'] = 'Nombre de bandeja';
@@ -314,9 +330,6 @@ $labels['subscribed'] = 'Suscrita';
$labels['messagecount'] = 'Mensajes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear nueva bandeja';
-$labels['rename'] = 'Renombrar';
-$labels['renamefolder'] = 'Renombrar bandeja';
-$labels['deletefolder'] = 'Eliminar bandeja';
$labels['managefolders'] = 'Administrar bandejas';
$labels['specialfolders'] = 'Bandejas Especiales';
$labels['sortby'] = 'Ordenar por';
diff --git a/program/localization/es_ES/messages.inc b/program/localization/es_ES/messages.inc
index d2d4a83e3..24014a72b 100644
--- a/program/localization/es_ES/messages.inc
+++ b/program/localization/es_ES/messages.inc
@@ -25,6 +25,7 @@ $messages['cookiesdisabled'] = 'Su navegador no acepta cookies';
$messages['sessionerror'] = 'Su sesión no existe o ha expirado';
$messages['imaperror'] = 'Error de conexión con el servidor IMAP';
$messages['servererror'] = '¡Error en el servidor!';
+$messages['servererrormsg'] = 'Error del Servidor: $msg';
$messages['invalidrequest'] = '¡Petición no válida! No se han guardado los datos.';
$messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla';
$messages['loggedout'] = 'Ha cerrado la sesión. ¡Hasta pronto!';
@@ -56,9 +57,7 @@ $messages['deletecontactconfirm'] = '¿Realmente quiere eliminar los contactos s
$messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?';
$messages['deletefolderconfirm'] = '¿Realmente quiere eliminar esta carpeta?';
$messages['purgefolderconfirm'] = '¿Realmente quiere eliminar todos los mensajes de esta carpeta?';
-$messages['foldercreating'] = 'Creando carpeta...';
$messages['folderdeleting'] = 'Borrando carpeta...';
-$messages['folderrenaming'] = 'Renombrando carpeta...';
$messages['foldermoving'] = 'Moviendo carpeta...';
$messages['formincomplete'] = 'No ha rellenado todos los campos del formulario';
$messages['noemailwarning'] = 'Por favor, introduzca un e-mail válido';
@@ -90,10 +89,11 @@ $messages['sourceisreadonly'] = 'Esta dirección es de sólo-lectura';
$messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto';
$messages['movingmessage'] = 'Moviendo mensaje...';
$messages['copyingmessage'] = 'Copiando mensaje...';
+$messages['deletingmessage'] = 'Eliminando Mensaje(s)...';
+$messages['markingmessage'] = 'Marcando Mensaje(s)...';
$messages['receiptsent'] = 'La notificación de lectura se ha enviado con éxito.';
$messages['errorsendingreceipt'] = 'No se ha podido enviar la notificación de lectura.';
$messages['nodeletelastidentity'] = 'No se puede borrar esta identidad puesto que es la última.';
-$messages['addsubfolderhint'] = 'Esta carpeta se creará como una subcarpeta dentro de la carpeta seleccionada';
$messages['forbiddencharacter'] = 'El nombre de la carpeta contiene un carácter prohibido';
$messages['selectimportfile'] = 'Por favor, seleccione un archivo para subir';
$messages['addresswriterror'] = 'No se puede escribir la dirección de contacto seleccionada';
@@ -111,10 +111,21 @@ $messages['smtpautherror'] = 'Error SMTP ($code): Error de autenticación';
$messages['smtpfromerror'] = 'Error SMTP ($code): No se ha podido asignar el emisor "$from" ($msg)';
$messages['smtptoerror'] = 'Error SMTP ($code): No se ha podido establecer remitente "$to" ($msg)';
$messages['smtprecipientserror'] = 'Error SMTP: No es posible analizar la lista de destinatarios';
+$messages['smtpdsnerror'] = 'Error SMTP: No hay soporte para las Notificaciones de Entrega';
$messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'Dirección e-mail incorrecta: $email';
$messages['toomanyrecipients'] = 'Hay demasiados destinatarios. Reduzca el número de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max.';
$messages['internalerror'] = 'Ocurrió un error interno. Por favor intentalo de nuevo';
+$messages['contactdelerror'] = 'No se ha podido eliminar el contacto(s)';
+$messages['contactdeleted'] = 'Contacto(s) eliminado(s) correctamente';
+$messages['groupdeleted'] = 'Grupo eliminado correctamente';
+$messages['grouprenamed'] = 'Grupo renombrado correctamente';
+$messages['groupcreated'] = 'Grupo creado correctamente';
+$messages['messagedeleted'] = 'Mensaje(s) eliminado(s) correctamente';
+$messages['messagemoved'] = 'Mensaje(s) movido(s) correctamente';
+$messages['messagecopied'] = 'Mensaje(s) copiado(s) correctamente';
+$messages['messagemarked'] = 'Mensaje(s) marcado(s) correctamente';
+$messages['autocompletechars'] = 'Introduce al menos $min caracteres para autocompletar';
?>
diff --git a/program/localization/et_EE/labels.inc b/program/localization/et_EE/labels.inc
index 6f8434fdc..a80155d70 100644
--- a/program/localization/et_EE/labels.inc
+++ b/program/localization/et_EE/labels.inc
@@ -40,8 +40,7 @@ $labels['to'] = 'Saaja';
$labels['cc'] = 'Koopia';
$labels['bcc'] = 'Pimekoopia';
$labels['replyto'] = 'Vastus aadressile';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Kuupäev';
$labels['size'] = 'Suurus';
$labels['priority'] = 'Tähtsus';
@@ -203,8 +202,7 @@ $labels['maxuploadsize'] = 'Faili maksimaalne lubatud suurus on $size';
$labels['addcc'] = 'Lisa koopia';
$labels['addbcc'] = 'Lisa pimekoopia';
$labels['addreplyto'] = 'Lisa vastus aadressile';
-$labels['addmailreplyto'] = 'Lisa Mail-Reply-To';
-$labels['addmailfollowupto'] = 'Lisa Mail-Followup-To';
+$labels['addfollowupto'] = 'Lisa Followup-To';
$labels['mdnrequest'] = 'Selle kirja saatja soovib saada kinnitust kirja lugemise kohta. Kas soovid kinnituse saata?';
$labels['receiptread'] = 'Kättesaamiskinnitus (leotud)';
$labels['yourmessage'] = 'See on sinu saadetud kirja kättesaamiskinnitus';
@@ -332,11 +330,15 @@ $labels['subscribed'] = 'Näitan';
$labels['messagecount'] = 'Kirju';
$labels['create'] = 'Loo';
$labels['createfolder'] = 'Uue kausta loomine';
-$labels['rename'] = 'Nimeta ümber';
-$labels['renamefolder'] = 'Nimeta olemasolev kaust ümber';
-$labels['deletefolder'] = 'Kustuta kaust';
$labels['managefolders'] = 'Halda kaustu';
$labels['specialfolders'] = 'Erilised kaustad';
+$labels['properties'] = 'Omadused';
+$labels['folderproperties'] = 'Kausta omadused';
+$labels['parentfolder'] = 'Ãœlemine kaust';
+$labels['location'] = 'Asukoht';
+$labels['info'] = 'Teave';
+$labels['getfoldersize'] = 'Kliki kausta suuruse teadasaamiseks';
+$labels['changesubscription'] = 'Kliki kausta tellimuste muutmiseks';
$labels['sortby'] = 'Järjesta';
$labels['sortasc'] = 'Järjesta kasvavalt';
$labels['sortdesc'] = 'Järjesta kahanevalt';
diff --git a/program/localization/et_EE/messages.inc b/program/localization/et_EE/messages.inc
index f67927768..391b04e3d 100644
--- a/program/localization/et_EE/messages.inc
+++ b/program/localization/et_EE/messages.inc
@@ -26,6 +26,8 @@ $messages['sessionerror'] = 'Sinu seanss on aegunud või vigane';
$messages['imaperror'] = 'Ei õnnestunud IMAP serveriga ühendust luua';
$messages['servererror'] = 'Serveri tõrge!';
$messages['servererrormsg'] = 'Serveri tõrge: $msg';
+$messages['errorreadonly'] = 'Operatsioon nurjus. Kaustale on vaid lugemisõigus';
+$messages['errornoperm'] = 'Operatsioon nurjus. Ligipääsu õigused puuduvad';
$messages['invalidrequest'] = 'Lubamatu päring! Andmeid ei salvestatud.';
$messages['nomessagesfound'] = 'Postkast paistab tühi olevat';
$messages['loggedout'] = 'Sinu seanss on edukalt lõpetatud. Nägemiseni!';
@@ -57,10 +59,10 @@ $messages['deletecontactconfirm'] = 'Soovid valitud kontaktid kustutada?';
$messages['deletemessagesconfirm'] = 'Soovid valitud kirja(d) kustutada?';
$messages['deletefolderconfirm'] = 'Soovid selle kataloogi kindlasti kustutada?';
$messages['purgefolderconfirm'] = 'Soovid sellest kaustast kõik kirjad kustutada?';
-$messages['foldercreating'] = 'Loon kausta...';
$messages['folderdeleting'] = 'Kustutan kausta...';
-$messages['folderrenaming'] = 'Nimetan kausta ümber...';
$messages['foldermoving'] = 'Liigutan kausta...';
+$messages['foldersubscribing'] = 'Tellin kausta...';
+$messages['folderunsubscribing'] = 'Peatan kausta tellimuse...';
$messages['formincomplete'] = 'Vormi kõik väljad ei ole täidetud';
$messages['noemailwarning'] = 'Palun sisesta toimiv e-posti aadress';
$messages['nonamewarning'] = 'Palun sisesta nimi';
@@ -80,6 +82,10 @@ $messages['searching'] = 'Otsin...';
$messages['checking'] = 'Kontrollin...';
$messages['nospellerrors'] = 'Õigekirjavigu ei leitud';
$messages['folderdeleted'] = 'Kausta kustutamine õnnestus';
+$messages['foldersubscribed'] = 'Kausta tellimine õnnestus';
+$messages['folderunsubscribed'] = 'Kausta tellimise peatamine õnnestus';
+$messages['folderpurged'] = 'Kaust puhastatud edukalt';
+$messages['folderexpunged'] = 'Kaust tühjendatud edukalt';
$messages['deletedsuccessfully'] = 'Edukalt kustutatud';
$messages['converting'] = 'Eemaldan kirjast vormindust...';
$messages['messageopenerror'] = 'Kirjade serverist laadimine ebaõnnestus';
@@ -96,7 +102,6 @@ $messages['markingmessage'] = 'Märgin kirja...';
$messages['receiptsent'] = 'Kättesaamiskinnitus saadetud';
$messages['errorsendingreceipt'] = 'Ei õnnestunud kättesaamiskinnitust saata';
$messages['nodeletelastidentity'] = 'See identiteet on viimane ja seda ei saa kustutada.';
-$messages['addsubfolderhint'] = 'See kataloog luuakse valitud kausta alamkataloogina.';
$messages['forbiddencharacter'] = 'Kausta nimi sisaldab keelatud sümbolit';
$messages['selectimportfile'] = 'Palun vali üleslaadimiseks fail';
$messages['addresswriterror'] = 'Valitud aadressiraamat pole kirjutatav';
@@ -130,8 +135,9 @@ $messages['messagemoved'] = 'Kiri edukalt liigutatud';
$messages['messagecopied'] = 'Kiri edukalt kopeeritud';
$messages['messagemarked'] = 'Kiri edukalt märgitud';
$messages['autocompletechars'] = 'Sisesta vähemalt $min märki autocompleteks';
+$messages['namecannotbeempty'] = 'Nimi ei saa olla tühi';
+$messages['nametoolong'] = 'Nimi liiga pikk';
+$messages['folderupdated'] = 'Kaust uuendatud edukalt';
+$messages['foldercreated'] = 'Kaust loodud edukalt';
?>
-
-
-
diff --git a/program/localization/eu_ES/labels.inc b/program/localization/eu_ES/labels.inc
index 1572ce2b5..9080f8a6d 100644
--- a/program/localization/eu_ES/labels.inc
+++ b/program/localization/eu_ES/labels.inc
@@ -224,9 +224,6 @@ $labels['subscribed'] = 'Harpideturik';
$labels['messagecount'] = 'Mezuak';
$labels['create'] = 'Sortu';
$labels['createfolder'] = 'Karpeta berria sortu';
-$labels['rename'] = 'Berrizendatu';
-$labels['renamefolder'] = 'Karpeta berrizendatu';
-$labels['deletefolder'] = 'Karpeta ezabatu';
$labels['managefolders'] = 'Karpeta kudeaketa';
$labels['specialfolders'] = 'Karpeta bereziak';
$labels['sortby'] = 'Honela ordenatu';
diff --git a/program/localization/eu_ES/messages.inc b/program/localization/eu_ES/messages.inc
index d3787af0e..df2af027d 100644
--- a/program/localization/eu_ES/messages.inc
+++ b/program/localization/eu_ES/messages.inc
@@ -78,7 +78,6 @@ $messages['movingmessage'] = 'Mezua mugitzen...';
$messages['receiptsent'] = 'Ondo bidalia irakurritako agiria';
$messages['errorsendingreceipt'] = 'Ezin da agiria bidali';
$messages['nodeletelastidentity'] = 'Ezin da izaera hau ezabatu, zure bakarra da';
-$messages['addsubfolderhint'] = 'Aukeratutakoaren azpikarpeta bezala sortuko da karpeta hau';
$messages['forbiddencharacter'] = 'Karpeta izenak debekatutako karaktereak ditu';
?>
diff --git a/program/localization/fa/labels.inc b/program/localization/fa/labels.inc
index 3bf67a640..1df874367 100644
--- a/program/localization/fa/labels.inc
+++ b/program/localization/fa/labels.inc
@@ -247,13 +247,9 @@ $labels['checkallfolders'] = 'همه پوشه ها رو برای مشاهده پ
$labels['folder'] = 'پوشه';
$labels['folders'] = 'پوشه‌ها';
$labels['foldername'] = 'نام پوشه';
-$labels['subscribed'] = 'مورد اشتراک';
$labels['messagecount'] = 'پیغام‌ها';
$labels['create'] = 'ایجاد';
$labels['createfolder'] = 'ایجاد پوشه‌ی جدید';
-$labels['rename'] = 'تغییر نام';
-$labels['renamefolder'] = 'تغییر نام پوشه';
-$labels['deletefolder'] = 'حذ٠پوشه';
$labels['managefolders'] = 'مدیریت پوشه‌ها';
$labels['specialfolders'] = 'پوشه های ویژه';
$labels['sortby'] = 'مرتب‌سازی بر اساس';
diff --git a/program/localization/fa/messages.inc b/program/localization/fa/messages.inc
index 69146df06..1a9673a39 100644
--- a/program/localization/fa/messages.inc
+++ b/program/localization/fa/messages.inc
@@ -50,9 +50,7 @@ $messages['deletecontactconfirm'] = 'آیا واقعاً می‌خواهید تÙ
$messages['deletemessagesconfirm'] = 'آیا واقعاً می‌خواهید پیغام (های) انتخاب شده را حذ٠کنید؟';
$messages['deletefolderconfirm'] = 'آیا واقعاً می‌خواهید این پوشه را حذ٠کنید؟';
$messages['purgefolderconfirm'] = 'آیا واقعاً می‌خواهید همه‌ی پیغام‌های داخل این پوشه را حذ٠کنید؟';
-$messages['foldercreating'] = '...در حال ایجاد پوشه ';
$messages['folderdeleting'] = '...در حال حذ٠پوشه ';
-$messages['folderrenaming'] = '...در حال تغییر نام پوشه ';
$messages['foldermoving'] = '...در حال انتقال پوشه ';
$messages['formincomplete'] = 'Ùرم کاملاً پر نشده بود';
$messages['noemailwarning'] = 'لطÙاً یک نشانی ایمیل معتبر وارد کنید';
@@ -85,7 +83,6 @@ $messages['movingmessage'] = '...در حال انتقال پیغام';
$messages['receiptsent'] = 'رسید خواندن با موÙقیت ارسال شد';
$messages['errorsendingreceipt'] = 'ناتوان در ارسال رسید';
$messages['nodeletelastidentity'] = '.نمی‌توانید این هویت را حذ٠کنید، زیرا آخرین هویت شماست';
-$messages['addsubfolderhint'] = 'پوشه به عنوان زیرپوشه ای ساخته خواهد شد که هم اکنون انتخاب شده است';
$messages['forbiddencharacter'] = 'نام پوشه شامل یک حر٠غیر مجاز است';
$messages['selectimportfile'] = 'لطÙاً Ùایل را جهت بارگذاری انتخاب کنید';
$messages['addresswriterror'] = 'در دÙترچه تلÙÙ† انتخابی ØŒ اجازه نوشتن ندارید';
diff --git a/program/localization/fa_AF/labels.inc b/program/localization/fa_AF/labels.inc
index 1fc3a01e1..19700a5da 100644
--- a/program/localization/fa_AF/labels.inc
+++ b/program/localization/fa_AF/labels.inc
@@ -287,9 +287,6 @@ $labels['subscribed'] = 'مشترک ';
$labels['messagecount'] = 'پيغام ها ';
$labels['create'] = 'ایجاد کردن';
$labels['createfolder'] = 'ایجاد پوشه جدید';
-$labels['rename'] = 'تغيير نام ';
-$labels['renamefolder'] = 'تغييرنام پوشه ';
-$labels['deletefolder'] = 'حذ٠کردن پوشه ';
$labels['managefolders'] = 'اداره کردن پوشه ها ';
$labels['specialfolders'] = 'پوشه های مخصوص';
diff --git a/program/localization/fa_AF/messages.inc b/program/localization/fa_AF/messages.inc
index 17394ac1c..f298e0f25 100644
--- a/program/localization/fa_AF/messages.inc
+++ b/program/localization/fa_AF/messages.inc
@@ -31,9 +31,7 @@ $messages['deletecontactconfirm'] = 'آيا واقعاً شما ميخواهيØ
$messages['deletemessagesconfirm'] = 'آيا واقعاً شما ميخواهيد که پيغام هاي انتخاب شده را حذ٠کنيد؟ ';
$messages['deletefolderconfirm'] = 'آيا واقعاً شما ميخواهيد که اين پوشه را حذ٠کنيد؟ ';
$messages['purgefolderconfirm'] = 'آيا واقعاً شما ميخواهيد تمام پيغام های که در اين پوشه وجود دارد حذ٠کنيد؟ ';
-$messages['foldercreating'] = 'در حال ایجاد پوشه';
$messages['folderdeleting'] = 'در حال حذ٠پوشه';
-$messages['folderrenaming'] = 'در حال تغییر نام پوشه';
$messages['foldermoving'] = 'در حال انتقال پوشه';
$messages['formincomplete'] = 'Ùورمه بصورت مکمل خانه پري نه شده است ';
$messages['noemailwarning'] = 'لطÙاً ÙŠÚ© ايميل ادرس موجود را داخل کنيد ';
@@ -66,7 +64,6 @@ $messages['movingmessage'] = 'ذر حال انتقال پیام...';
$messages['receiptsent'] = 'یک رسید برای ارسال کننده این پیام Ùرستاده شد.';
$messages['errorsendingreceipt'] = 'رسيد ارسال شده نتوانست ';
$messages['nodeletelastidentity'] = 'شما این شناخت نامه را حذ٠کرده نمیتوانید. این آخرین شناخت نامه شما است.';
-$messages['addsubfolderhint'] = 'این پوشه به حیث پوشه Ùرعی پوشه انتخاب شده Ùعلی ساخته خواهد شد.';
$messages['forbiddencharacter'] = 'نام پوشه دارای یک کرکتر ممنوعه است.';
$messages['selectimportfile'] = 'لطÙاً یک Ùایل را برای آپلود کردن انتخاب نمایید.';
$messages['addresswriterror'] = 'کتابچه آدرس انتخاب شده دارای اجازه نامه نوشتاری نیست.';
diff --git a/program/localization/fi_FI/labels.inc b/program/localization/fi_FI/labels.inc
index 31aaf834f..45a80327e 100644
--- a/program/localization/fi_FI/labels.inc
+++ b/program/localization/fi_FI/labels.inc
@@ -308,9 +308,6 @@ $labels['subscribed'] = 'Näytetään';
$labels['messagecount'] = 'Viestejä';
$labels['create'] = 'Luo uusi';
$labels['createfolder'] = 'Luo uusi kansio';
-$labels['rename'] = 'Nimeä uudelleen';
-$labels['renamefolder'] = 'Nimeä kansio uudelleen';
-$labels['deletefolder'] = 'Poista kansio';
$labels['managefolders'] = 'Kansioiden hallinta';
$labels['specialfolders'] = 'Erikoiskansiot';
$labels['sortby'] = 'Järjestä';
diff --git a/program/localization/fi_FI/messages.inc b/program/localization/fi_FI/messages.inc
index ddf98f4ca..641dedffb 100644
--- a/program/localization/fi_FI/messages.inc
+++ b/program/localization/fi_FI/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Haluatko varmasti poistaa valitut kontaktit
$messages['deletemessagesconfirm'] = 'Haluatko varmasti poistaa valitut viestit?';
$messages['deletefolderconfirm'] = 'Haluatko varmasti poistaa kansion?';
$messages['purgefolderconfirm'] = 'Haluatko varmasti poistaa kaikki viestit kansiosta?';
-$messages['foldercreating'] = 'Luodaan kansiota...';
$messages['folderdeleting'] = 'Poistetaan kansiota...';
-$messages['folderrenaming'] = 'Nimetään kansiota...';
$messages['foldermoving'] = 'Siirretään kansiota...';
$messages['formincomplete'] = 'Lomakkeen tiedot olivat puutteelliset';
$messages['noemailwarning'] = 'Anna sähköpostiosoite';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Kopioidaan viestiä...';
$messages['receiptsent'] = 'Lukukuittaus lähetetty onnistuneesti';
$messages['errorsendingreceipt'] = 'Lukukuittausta ei voitu lähettää';
$messages['nodeletelastidentity'] = 'Et voi poistaa tätä identiteettiä, koska se on ainoa jäljelläoleva';
-$messages['addsubfolderhint'] = 'Uusi kansio luodaan valitun kansion alikansiona';
$messages['forbiddencharacter'] = 'Kansion nimessä on kiellettyjä merkkejä';
$messages['selectimportfile'] = 'Valitse lähetettävä tiedosto';
$messages['addresswriterror'] = 'Valittuun osoitekirjaan ei voi kirjoittaa';
diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
index 09028f267..a3e4bc01d 100644
--- a/program/localization/fr_FR/labels.inc
+++ b/program/localization/fr_FR/labels.inc
@@ -44,6 +44,7 @@ $labels['date'] = 'Date';
$labels['size'] = 'Taille';
$labels['priority'] = 'Priorité';
$labels['organization'] = 'Organisation';
+$labels['readstatus'] = 'Status de lecture';
$labels['reply-to'] = 'Répondre à';
$labels['mailboxlist'] = 'Dossiers';
$labels['messagesfromto'] = 'Messages de $from à $to sur $count';
@@ -99,6 +100,8 @@ $labels['checkmail'] = 'Vérification des nouveaux messages';
$labels['writenewmessage'] = 'Écrire un nouveau message';
$labels['replytomessage'] = 'Répondre au message';
$labels['replytoallmessage'] = 'Répondre à tous';
+$labels['replyall'] = 'Répondre à tous';
+$labels['replylist'] = 'Répondre à la liste';
$labels['forwardmessage'] = 'Transmettre le message';
$labels['deletemessage'] = 'Déplacer le message dans la corbeille';
$labels['movemessagetotrash'] = 'Déplacer le message dans la corbeille';
@@ -171,6 +174,7 @@ $labels['addattachment'] = 'Joindre un fichier';
$labels['charset'] = 'Encodage';
$labels['editortype'] = 'Type d\'éditeur';
$labels['returnreceipt'] = 'Accusé de réception';
+$labels['dsn'] = 'Notification d\'état de distribution';
$labels['editidents'] = 'Modifier les identités';
$labels['checkspelling'] = 'Vérifier l\'orthographe';
$labels['resumeediting'] = 'Retourner à l\'édition';
@@ -206,6 +210,7 @@ $labels['email'] = 'Courriel';
$labels['addcontact'] = 'Ajouter le contact sélectionné à votre Carnet d\'adresses';
$labels['editcontact'] = 'Modifier le contact';
$labels['contacts'] = 'Contacts';
+$labels['contactproperties'] = 'Propriétés de contact';
$labels['edit'] = 'Modifier';
$labels['cancel'] = 'Annuler';
$labels['save'] = 'Sauvegarder';
@@ -253,6 +258,7 @@ $labels['pagesize'] = 'Nombre de lignes par page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Heure d\'été';
$labels['htmleditor'] = 'Composer un message au format HTML';
+$labels['htmlonreply'] = 'en réponse aux messages HTML uniquement';
$labels['htmlsignature'] = 'Signature HTML';
$labels['previewpane'] = 'Afficher le panneau d\'aperçu';
$labels['skin'] = 'Thème de l\'interface';
@@ -265,6 +271,7 @@ $labels['mdnrequests'] = 'Notifications à l\'expéditeur';
$labels['askuser'] = 'demander à l\'utilisateur';
$labels['autosend'] = 'envoyer automatiquement';
$labels['autosendknown'] = 'Envoyer un avis de réception uniquement à mes contacts';
+$labels['autosendknownignore'] = 'envoie un accusé à mes contacts, sinon ignorer';
$labels['ignore'] = 'ignorer';
$labels['readwhendeleted'] = 'Marquer le message comme lu à la suppression';
$labels['flagfordeletion'] = 'Mettre le drapeau de suppression au lieu de supprimer';
@@ -310,6 +317,8 @@ $labels['insertsignature'] = 'Insérer la signature';
$labels['previewpanemarkread'] = 'Marquer les messages prévisualisés comme lus';
$labels['afternseconds'] = 'après $n secondes';
$labels['reqmdn'] = 'Toujours demandé un avis de réception';
+$labels['reqdsn'] = 'Toujours demander une notification d\'état de distribution';
+$labels['replysamefolder'] = 'Placer les réponses dans le dossier du message étant répondu';
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossiers';
$labels['foldername'] = 'Nom du dossier';
@@ -317,11 +326,15 @@ $labels['subscribed'] = 'Abonné';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Créer';
$labels['createfolder'] = 'Créer un nouveau dossier';
-$labels['rename'] = 'Renommer';
-$labels['renamefolder'] = 'Renommer le dossier';
-$labels['deletefolder'] = 'Supprimer le dossier';
$labels['managefolders'] = 'Organiser les dossiers';
$labels['specialfolders'] = 'Dossiers spéciaux';
+$labels['properties'] = 'Propriétés';
+$labels['folderproperties'] = 'Propriétés du dossier';
+$labels['parentfolder'] = 'Dossier parant';
+$labels['location'] = 'Localisation';
+$labels['info'] = 'Information';
+$labels['getfoldersize'] = 'Cliquer pour obtenir la taille de dossier';
+$labels['changesubscription'] = 'Cliquer pour modifier l\'inscription';
$labels['sortby'] = 'Trier par';
$labels['sortasc'] = 'Tri ascendant';
$labels['sortdesc'] = 'Tri descendant';
diff --git a/program/localization/fr_FR/messages.inc b/program/localization/fr_FR/messages.inc
index a3018fafc..66239486e 100644
--- a/program/localization/fr_FR/messages.inc
+++ b/program/localization/fr_FR/messages.inc
@@ -25,6 +25,7 @@ $messages['cookiesdisabled'] = 'Votre navigateur n\'accepte pas les cookies';
$messages['sessionerror'] = 'Votre session est invalide ou a expiré';
$messages['imaperror'] = 'Erreur de connexion au serveur IMAP';
$messages['servererror'] = 'Erreur Serveur !';
+$messages['servererrormsg'] = 'Erreur du serveur: $msg';
$messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été sauvegardée.';
$messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte aux lettres';
$messages['loggedout'] = 'Vous venez de vous déconnecter avec succès. Au revoir !';
@@ -56,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Voulez-vous vraiment effacer le(s) contact(
$messages['deletemessagesconfirm'] = 'Voulez-vous vraiment supprimer le(s) message(s) sélectionné(s) ?';
$messages['deletefolderconfirm'] = 'Voulez-vous vraiment effacer ce dossier ?';
$messages['purgefolderconfirm'] = 'Voulez-vous vraiment effacer tous les messages de ce dossier ?';
-$messages['foldercreating'] = 'Création du dossier...';
$messages['folderdeleting'] = 'Suppression du dossier...';
-$messages['folderrenaming'] = 'Renommage du dossier...';
$messages['foldermoving'] = 'Déplacement du dossier...';
$messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli';
$messages['noemailwarning'] = 'Veuillez spécifier un courriel valide';
@@ -90,10 +89,11 @@ $messages['sourceisreadonly'] = 'Cette source d\'adresse est en lecture seule';
$messages['errorsavingcontact'] = 'Ne peut pas enregistrer l\'adresse du contact';
$messages['movingmessage'] = 'Déplacement du message...';
$messages['copyingmessage'] = 'Copie du message ...';
+$messages['deletingmessage'] = 'Suppression des messages...';
+$messages['markingmessage'] = 'Marquage des messages...';
$messages['receiptsent'] = 'L\'accusé de réception a bien été envoyé';
$messages['errorsendingreceipt'] = 'L\'accusé de réception n\'a pas pu être envoyé';
$messages['nodeletelastidentity'] = 'Vous ne pouvez pas effacer votre seule identité.';
-$messages['addsubfolderhint'] = 'Ce dossier sera créé comme sous-dossier de celui sélectionné.';
$messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit';
$messages['selectimportfile'] = 'Veuillez sélectionner un fichier à envoyer';
$messages['addresswriterror'] = 'Impossible d\'écrire dans le carnet d\'adresse sélectionné';
@@ -111,10 +111,21 @@ $messages['smtpautherror'] = 'Erreur SMTP ($code): Echec de l\'authentification'
$messages['smtpfromerror'] = 'Erreur SMTP ($code): Impossible de définir l\'expéditeur "$from" ($msg)';
$messages['smtptoerror'] = 'Erreur SMTP ($code): Impossible d\'ajouter le destinataire "$to" ($msg)';
$messages['smtprecipientserror'] = 'Erreur SMTP: Impossible de lire la liste des destinataires';
+$messages['smtpdsnerror'] = 'Erreur SMTP: Pas de support des notifications d\'état de distribution';
$messages['smtperror'] = 'Erreur SMTP: $msg';
$messages['emailformaterror'] = 'Adresse email incorrecte: $email';
$messages['toomanyrecipients'] = 'Trop de destinataires. Réduisez leur nombre à $max maximum.';
$messages['maxgroupmembersreached'] = 'Le nombre de membres du groupe dépasse le maximum de $max.';
$messages['internalerror'] = 'Une erreur interne est survenue. Merci de réessayer';
+$messages['contactdelerror'] = 'Les contacts n\'ont pas pu être supprimés';
+$messages['contactdeleted'] = 'Les contacts ont bien été supprimés';
+$messages['groupdeleted'] = 'Le groupe a bien été supprimé';
+$messages['grouprenamed'] = 'Le groupe a bien été renommé';
+$messages['groupcreated'] = 'Le groupe a bien été créé';
+$messages['messagedeleted'] = 'Les messages ont bien été supprimés';
+$messages['messagemoved'] = 'Les messages ont bien été déplacés';
+$messages['messagecopied'] = 'Les messages ont bien été copiés';
+$messages['messagemarked'] = 'Les messages ont bien été marqués';
+$messages['autocompletechars'] = 'Entrez au moins $min caractères pour l\'auto-complétion';
-?> \ No newline at end of file
+?>
diff --git a/program/localization/ga_IE/labels.inc b/program/localization/ga_IE/labels.inc
index d6c5f0530..40b99a232 100755
--- a/program/localization/ga_IE/labels.inc
+++ b/program/localization/ga_IE/labels.inc
@@ -167,9 +167,6 @@ $labels['foldername'] = 'Ainm fillteán';
$labels['subscribed'] = 'Síntiú';
$labels['create'] = 'Cruthaigh';
$labels['createfolder'] = 'Cruthaigh fillteán nua';
-$labels['rename'] = 'Ainmnigh arís';
-$labels['renamefolder'] = 'Ainmnigh fillteán arís';
-$labels['deletefolder'] = 'Scrios fillteán';
$labels['managefolders'] = 'Stiúir na fillteán';
$labels['sortby'] = 'Sórtáil trí';
$labels['sortasc'] = 'Sórtáil in ord méadaitheach';
diff --git a/program/localization/gl_ES/labels.inc b/program/localization/gl_ES/labels.inc
index 13e2a2ca8..1ba8edbd9 100644
--- a/program/localization/gl_ES/labels.inc
+++ b/program/localization/gl_ES/labels.inc
@@ -28,18 +28,22 @@ $labels['inbox'] = 'Caixa de entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviado';
$labels['trash'] = 'Cubo do Lixo';
-$labels['junk'] = 'Lixo';
+$labels['junk'] = 'Correo Lixo';
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['to'] = 'Destinatario';
-$labels['cc'] = 'Copia';
-$labels['bcc'] = 'Copia Oculta';
-$labels['replyto'] = 'Respostar a';
+$labels['cc'] = 'Copia (CC)';
+$labels['bcc'] = 'Copia Oculta (BCC)';
+$labels['replyto'] = 'Respostar a (Reply-To)';
+$labels['followupto'] = 'Respostar a todos (Followup-To)';
$labels['date'] = 'Data';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridade';
$labels['organization'] = 'Organización';
+$labels['readstatus'] = 'Estado da lectura';
$labels['reply-to'] = 'Respostar a';
+$labels['mail-reply-to'] = 'Respostar ao autor';
+$labels['mail-followup-to'] = 'Respostar a todos';
$labels['mailboxlist'] = 'Cartafoles';
$labels['messagesfromto'] = 'Mensaxes do $from ao $to de $count';
$labels['threadsfromto'] = 'Fíos do $from ao $to de $count';
@@ -93,10 +97,12 @@ $labels['today'] = 'Hoxe';
$labels['checkmail'] = 'Procurar novas mensaxes';
$labels['writenewmessage'] = 'Crear unha nova mensaxe';
$labels['replytomessage'] = 'Respostar a mensaxe';
-$labels['replytoallmessage'] = 'Respostar a todos';
+$labels['replytoallmessage'] = 'Respostar á lista ou ao remitente e a tódolos destinatarios';
+$labels['replyall'] = 'Respostar a todos';
+$labels['replylist'] = 'Respostar á lista de correo';
$labels['forwardmessage'] = 'Reenviar a mensaxe';
$labels['deletemessage'] = 'Eliminar a mensaxe';
-$labels['movemessagetotrash'] = 'Mover a mensaxe ó cubo do lixo';
+$labels['movemessagetotrash'] = 'Mover a mensaxe ao cubo do lixo';
$labels['printmessage'] = 'Imprimir esta mensaxe';
$labels['previousmessage'] = 'Amosar a mensaxe anterior';
$labels['previousmessages'] = 'Amosar o grupo anterior de mensaxes';
@@ -165,7 +171,9 @@ $labels['sendmessage'] = 'Enviar a mensaxe agora';
$labels['addattachment'] = 'Anexar un ficheiro';
$labels['charset'] = 'Codificación';
$labels['editortype'] = 'Tipo de editor';
-$labels['returnreceipt'] = 'Notificación de disposición';
+$labels['returnreceipt'] = 'Notificación da entrega';
+$labels['dsn'] = 'Notificación do estado de envío (DSN)';
+$labels['editidents'] = 'Modificar identidades';
$labels['checkspelling'] = 'Revisar a ortografía';
$labels['resumeediting'] = 'Voltar á edición';
$labels['revertto'] = 'Voltar a';
@@ -189,9 +197,10 @@ $labels['maxuploadsize'] = 'O tamaño máximo permitido de ficheiro é de $size'
$labels['addcc'] = 'Engadir Copia (CC)';
$labels['addbcc'] = 'Engadir Copia Oculta (BCC)';
$labels['addreplyto'] = 'Engadir Respostar a (Reply-To)';
+$labels['addfollowupto'] = 'Engadir Respostar a todos (Followup-To)';
$labels['mdnrequest'] = 'O remitente desta mensaxe pediu ser notificado cando vostede a lea. Quere notificar ao remitente?';
-$labels['receiptread'] = 'Notificación da disposición da mensaxe (lectura)';
-$labels['yourmessage'] = 'Esta é unha notificación de disposición para a súa mensaxe';
+$labels['receiptread'] = 'Notificación da entrega da mensaxe (lectura)';
+$labels['yourmessage'] = 'Esta é unha notificación da entrega da súa mensaxe';
$labels['receiptnote'] = 'Nota: Esta notificación só confirma que a mensaxe se abriu no computador do destinatario. Non asegura que o destinatario o lera ou entendera o seu contido.';
$labels['name'] = 'Nome completo';
$labels['firstname'] = 'Nome';
@@ -200,6 +209,7 @@ $labels['email'] = 'Correo Electrónico';
$labels['addcontact'] = 'Engadir novo contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
+$labels['contactproperties'] = 'Propiedades do contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Gardar';
@@ -247,6 +257,7 @@ $labels['pagesize'] = 'Liñas por páxina';
$labels['signature'] = 'Sinatura';
$labels['dstactive'] = 'Cambio de hora';
$labels['htmleditor'] = 'Redactar mensaxes HTML';
+$labels['htmlonreply'] = 'só cando se resposte a unha mensaxe HTML';
$labels['htmlsignature'] = 'Sinatura HTML';
$labels['previewpane'] = 'Amosar panel de previsualización';
$labels['skin'] = 'Aspecto da interface';
@@ -255,9 +266,11 @@ $labels['logoutcompact'] = 'Compactar a caixa de entrada ao saír.';
$labels['uisettings'] = 'Interface de usuario';
$labels['serversettings'] = 'Axustes do servidor';
$labels['mailboxview'] = 'Vista das caixas de correo';
-$labels['mdnrequests'] = 'Notificacións de envío';
-$labels['askuser'] = 'preguntar ao usuario';
+$labels['mdnrequests'] = 'Cando se solicitan notificacións da entrega';
+$labels['askuser'] = 'preguntarme qué facer';
$labels['autosend'] = 'enviar automáticamente';
+$labels['autosendknown'] = 'enviar aos meus contactos, noutros casos preguntarme';
+$labels['autosendknownignore'] = 'enviar aos meus contactos, noutros casos ignorar';
$labels['ignore'] = 'ignorar';
$labels['readwhendeleted'] = 'Marcar a mensaxe coma lida ao eliminar';
$labels['flagfordeletion'] = 'Marcar a mensaxe para eliminar no canto de eliminar';
@@ -302,6 +315,9 @@ $labels['abovequote'] = 'enriba do texto citado';
$labels['insertsignature'] = 'Engadir firma';
$labels['previewpanemarkread'] = 'Marcar como lidas as mensaxes previsualizadas';
$labels['afternseconds'] = 'logo de $n segundos';
+$labels['reqmdn'] = 'Solicitar sempre unha notificación da entrega';
+$labels['reqdsn'] = 'Solicitar sempre unha notificación do estado de envío';
+$labels['replysamefolder'] = 'Deixar as respostas no cartafol onde está a mensaxe á que se responde';
$labels['folder'] = 'Cartafol';
$labels['folders'] = 'Cartafoles';
$labels['foldername'] = 'Nome do cartafol';
@@ -309,9 +325,6 @@ $labels['subscribed'] = 'Subscrito';
$labels['messagecount'] = 'Mensaxes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear novo cartafol';
-$labels['rename'] = 'Renomear';
-$labels['renamefolder'] = 'Renomear cartafol';
-$labels['deletefolder'] = 'Eliminar cartafol';
$labels['managefolders'] = 'Xestionar cartafoles';
$labels['specialfolders'] = 'Cartafoles especiais';
$labels['sortby'] = 'Ordenar por';
diff --git a/program/localization/gl_ES/messages.inc b/program/localization/gl_ES/messages.inc
index 5eb5c898e..02e3fd716 100644
--- a/program/localization/gl_ES/messages.inc
+++ b/program/localization/gl_ES/messages.inc
@@ -19,7 +19,8 @@ $messages['loginfailed'] = 'Fallou o acceso';
$messages['cookiesdisabled'] = 'O seu navegador non acepta galletas';
$messages['sessionerror'] = 'A súa sesión non é válida ou expirou';
$messages['imaperror'] = 'Fallou a conexión co servidor IMAP';
-$messages['servererror'] = 'Erro no servidor!';
+$messages['servererror'] = 'Erro do servidor!';
+$messages['servererrormsg'] = 'Erro do servidor: $msg';
$messages['invalidrequest'] = 'Petición inválida!. Non se gardou ningún dato.';
$messages['nomessagesfound'] = 'Non se atoparon mensaxes nesta caixa de correo';
$messages['loggedout'] = 'Rematou correctamente a súa sesión. Ata logo!';
@@ -51,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Quere eliminar o(s) contacto(s) seleccionad
$messages['deletemessagesconfirm'] = 'Quere eliminar a(s) mensaxe(s) seleccionadas?';
$messages['deletefolderconfirm'] = 'Quere eliminar este cartafol?';
$messages['purgefolderconfirm'] = 'Quere eliminar tódalas mensaxes neste cartafol?';
-$messages['foldercreating'] = 'Creando o cartafol...';
$messages['folderdeleting'] = 'Eliminando o cartafol...';
-$messages['folderrenaming'] = 'Renomeando o cartafol...';
$messages['foldermoving'] = 'Movendo o cartafol...';
$messages['formincomplete'] = 'Non se cumprimentou completamente o formulario';
$messages['noemailwarning'] = 'Por favor, introduza un enderezo de correo electrónico válido';
@@ -83,12 +82,13 @@ $messages['copysuccess'] = 'Copiáronse correctamente $nr enderezos';
$messages['copyerror'] = 'Non foi posible copiar ningún enderezo';
$messages['sourceisreadonly'] = 'A orixe é de só lectura';
$messages['errorsavingcontact'] = 'Non foi posible gardar o contacto';
-$messages['movingmessage'] = 'Movendo a mensaxe...';
-$messages['copyingmessage'] = 'Copiando a mensaxe...';
-$messages['receiptsent'] = 'A notificación de disposición enviouse correctamente';
-$messages['errorsendingreceipt'] = 'Non foi posible enviar a notificación de disposición';
+$messages['movingmessage'] = 'Movendo a(s) mensaxe(s)...';
+$messages['copyingmessage'] = 'Copiando a(s) mensaxe(s)...';
+$messages['deletingmessage'] = 'Eliminando a(s) mensaxe(s)...';
+$messages['markingmessage'] = 'Marcando a(s) mensaxe(s)...';
+$messages['receiptsent'] = 'A notificación da entrega enviouse correctamente';
+$messages['errorsendingreceipt'] = 'Non foi posible enviar a notificación da entrega';
$messages['nodeletelastidentity'] = 'Non pode eliminar esta identidade, é a última';
-$messages['addsubfolderhint'] = 'Este cartafol vaise crear coma un subcartafol do seleccionado';
$messages['forbiddencharacter'] = 'O nome do cartafol contén un carácter non válido';
$messages['selectimportfile'] = 'Por favor, escolla un ficheiro para cargar';
$messages['addresswriterror'] = 'Non se pode escribir no caderno de enderezos que escolleu';
@@ -106,10 +106,21 @@ $messages['smtpautherror'] = 'Erro SMTP ($code): Fallou a autenticación';
$messages['smtpfromerror'] = 'Erro SMTP ($code): Non foi posible establecer o remitente "$from" ($msg)';
$messages['smtptoerror'] = 'Erro SMTP ($code): Non foi posible engadir o destinatario "$to" ($msg)';
$messages['smtprecipientserror'] = 'Erro SMTP: Non se pode analizar a lista de destinatarios';
+$messages['smtpdsnerror'] = 'Erro SMTP: Non hai soporte para notificacións do estado de envío (DSN)';
$messages['smtperror'] = 'Erro SMTP: $msg';
$messages['emailformaterror'] = 'O enderezo de correo electrónico é incorrecto: $email';
$messages['toomanyrecipients'] = 'Especificou demasiados destinatarios. Por favor, redúzaos a un máximo de $max.';
$messages['maxgroupmembersreached'] = 'O número de membros do grupo excede o máximo de $max.';
$messages['internalerror'] = 'Ocurriu un erro interno. Por favor, probe outra vez.';
+$messages['contactdelerror'] = 'Non foi posible borrar o(s) contacto(s)';
+$messages['contactdeleted'] = 'Borráronse correctamente o(s) contacto(s)';
+$messages['groupdeleted'] = 'Borrouse correctamente o grupo';
+$messages['grouprenamed'] = 'Mudouse correctamente o nome do grupo';
+$messages['groupcreated'] = 'Creouse correctamente o grupo';
+$messages['messagedeleted'] = 'Borráronse correctamente a(s) mensaxe(s)';
+$messages['messagemoved'] = 'Movéronse correctamente a(s) mensaxe(s)';
+$messages['messagecopied'] = 'Copiáronse correctamente a(s) mensaxe(s)';
+$messages['messagemarked'] = 'Marcáronse correctamente a(s) mensaxe(s)';
+$messages['autocompletechars'] = 'Introduza polo menos $min caracteres para autocompletar';
?>
diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc
index 0b0336794..61f27f769 100644
--- a/program/localization/he_IL/labels.inc
+++ b/program/localization/he_IL/labels.inc
@@ -11,7 +11,7 @@
+-----------------------------------------------------------------------+
| Author: Moshe Leibovitch <moish@mln.co.il> |
| Updates: Noor Dawod <noor@comrax.com> |
-| Updates: Moshe Leibovitch <moish@mln.co.il> 10112010 |
+| Updates: Moshe Leibovitch <moish@mln.co.il> 09122010 |
+-----------------------------------------------------------------------+
*/
@@ -36,16 +36,12 @@ $labels['to'] = 'הנמען';
$labels['cc'] = 'לידיעה';
$labels['bcc'] = 'מכותב מוסתר';
$labels['replyto'] = 'כתובת למענה';
-$labels['mailreplyto'] = 'כתובת למענה';
-$labels['mailfollowupto'] = 'כתובת להעברת הודעה';
+$labels['followupto'] = 'כתובת להעברת הודעה';
$labels['date'] = 'ת×ריך';
$labels['size'] = 'גודל';
$labels['priority'] = 'עדיפות';
$labels['organization'] = '×רגון';
$labels['readstatus'] = 'נקר×';
-$labels['reply-to'] = 'כתובת למענה';
-$labels['mail-reply-to'] = 'כתובת למענה';
-$labels['mail-followup-to'] = 'כתובת להעברת הודעה';
$labels['mailboxlist'] = 'תיקי×';
$labels['messagesfromto'] = 'הודעות $from עד $to מתוך $count';
$labels['threadsfromto'] = 'שרשור $from עד $to מתוך $count';
@@ -199,8 +195,7 @@ $labels['maxuploadsize'] = 'גודל מקסימלי לקובץ ×”×•× $size';
$labels['addcc'] = 'הוספת מכותב לידיעה';
$labels['addbcc'] = 'הוספת מכותב נסתר';
$labels['addreplyto'] = 'הוספת כתובת למענה';
-$labels['addmailreplyto'] = 'הוספת כתובת למענה';
-$labels['addmailfollowupto'] = 'הוספת כתובת להעברת הודעה';
+$labels['addfollowupto'] = 'הוספת כתובת להעברת הודעה';
$labels['mdnrequest'] = 'השולח ביקש לדעת ×× ×”×”×•×“×¢×” נקר××”. ×”×× ×œ×”×•×“×™×¢ לשולח?';
$labels['receiptread'] = '×ישור קבלה (נקר×)';
$labels['yourmessage'] = '×ישור קבלה להודעתך';
@@ -328,11 +323,15 @@ $labels['subscribed'] = 'מנוי';
$labels['messagecount'] = 'הודעות';
$labels['create'] = 'יצירה';
$labels['createfolder'] = 'יצירת תיק חדש';
-$labels['rename'] = 'שינוי ש×';
-$labels['renamefolder'] = 'שינוי ×©× ×ª×™×§';
-$labels['deletefolder'] = 'מחיקת תיק';
$labels['managefolders'] = 'ניהול תיקי×';
$labels['specialfolders'] = '×ª×™×§×™× ×ž×™×•×—×“×™×';
+$labels['properties'] = 'מ×פייני×';
+$labels['folderproperties'] = 'מ×פייני תיק';
+$labels['parentfolder'] = 'תיק ×ב';
+$labels['location'] = 'מיקו×';
+$labels['info'] = 'מידע';
+$labels['getfoldersize'] = 'הקשה להצגה של גודל תיק';
+$labels['changesubscription'] = 'הקשה לשינוי הרשמה';
$labels['sortby'] = 'מיון לפי';
$labels['sortasc'] = 'מיון בסדר עולה';
$labels['sortdesc'] = 'מיון בסדר יורד';
diff --git a/program/localization/he_IL/messages.inc b/program/localization/he_IL/messages.inc
index 3b3f9362b..9dd3c872b 100644
--- a/program/localization/he_IL/messages.inc
+++ b/program/localization/he_IL/messages.inc
@@ -11,7 +11,7 @@
+-----------------------------------------------------------------------+
| Author: Moshe Leibovitch <moish@mln.co.il> |
| Updates: Noor Dawod <noor@comrax.com> |
-| Updates: Moshe Leibovitch <moish@mln.co.il> 10112010 |
+| Updates: Moshe Leibovitch <moish@mln.co.il> 09122010 |
+-----------------------------------------------------------------------+
*/
@@ -23,6 +23,8 @@ $messages['sessionerror'] = 'כניסתך למערכת ××™× ×” חוקית ×ו
$messages['imaperror'] = 'הקשר לשרת הדו×ר נכשל';
$messages['servererror'] = '! שגי×ת שרת';
$messages['servererrormsg'] = '$msg שגי×ת שרת';
+$messages['errorreadonly'] = '×œ× × ×™×ª×Ÿ לבצע הפעולה ×›×™ התיק ניתן לקרי××” בלבד';
+$messages['errornoperm'] = '×œ× × ×™×ª×Ÿ לבצע הפעולה ×›×™ ×ין הרש××” לבצעה';
$messages['invalidrequest'] = 'בקשה ×œ× ×—×•×§×™×ª. המידע ×œ× × ×©×ž×¨';
$messages['nomessagesfound'] = '×œ× × ×ž×¦×ו הודעות בתיבה זו';
$messages['loggedout'] = 'הקשר הסתיי×. להתר×ות!';
@@ -54,10 +56,10 @@ $messages['deletecontactconfirm'] = '×”×× ×œ×ž×—×•×§ ×ת ×יש הקשר?';
$messages['deletemessagesconfirm'] = '×”×× ×œ×ž×—×•×§ ×ת ההודעות המסומנות?';
$messages['deletefolderconfirm'] = '×”×× ×œ×ž×—×•×§ תיק ×–×”?';
$messages['purgefolderconfirm'] = '×”×× ×œ×ž×—×•×§ ×ת כל ההודעות בתיק ×–×”?';
-$messages['foldercreating'] = 'התיקיה נוצרת...';
$messages['folderdeleting'] = 'התיקיה נמחקת...';
-$messages['folderrenaming'] = 'שינוי ×©× ×ª×™×§×™×”...';
$messages['foldermoving'] = 'העברת תיקיה...';
+$messages['foldersubscribing'] = 'התיק נרש×...';
+$messages['folderunsubscribing'] = '×¨×™×©×•× ×”×ª×™×§ בוטל...';
$messages['formincomplete'] = '×œ× ×”×•×–× ×• כל השדות בטופס ×–×”';
$messages['noemailwarning'] = '× × ×œ×”×•×¡×™×£ כתובת דו×\"ל חוקית';
$messages['nonamewarning'] = '× × ×œ×”×•×¡×™×£ ש×';
@@ -77,6 +79,10 @@ $messages['searching'] = 'חיפוש...';
$messages['checking'] = 'בדיקה...';
$messages['nospellerrors'] = '×œ× × ×ž×¦×ו שגי×ות כתיב';
$messages['folderdeleted'] = 'התיק נמחק בהצלחה';
+$messages['foldersubscribed'] = 'התיק × ×¨×©× ×‘×”×¦×œ×—×”';
+$messages['folderunsubscribed'] = 'ביטול ×¨×™×©×•× ×ª×™×§ הצליח';
+$messages['folderpurged'] = 'התיק נמחק בהצלחה';
+$messages['folderexpunged'] = 'התיק רוקן בהצלחה';
$messages['deletedsuccessfully'] = 'המחיקה הסתיימה בהצלחה';
$messages['converting'] = 'הסרת העיצוב מההודעה';
$messages['messageopenerror'] = '×œ× × ×™×ª×Ÿ לטעון ההודעה מהשרת';
@@ -93,7 +99,6 @@ $messages['markingmessage'] = 'סימון ההודעה בתהליך...';
$messages['receiptsent'] = '×ישור הקבלה נשלח בהצלחה';
$messages['errorsendingreceipt'] = '×œ× × ×™×ª×Ÿ לשלוח ×ישור קבלה';
$messages['nodeletelastidentity'] = 'זו הזהות ×”×חרונה ולכן ×œ× × ×™×ª×Ÿ לבטלה';
-$messages['addsubfolderhint'] = 'תיקיה זו ×ª×•×§× ×ª×—×ª התיקיה שנבחרה';
$messages['forbiddencharacter'] = '×©× ×”×ª×™×§×™×” מכיל ×ª×•×™× ×סורי×';
$messages['selectimportfile'] = '× × ×œ×‘×—×•×¨ קובץ לייבו×';
$messages['addresswriterror'] = 'פנקס הכתובות שנבחר ×ינו ניתן לכתיבה';
@@ -127,5 +132,9 @@ $messages['messagemoved'] = 'ההודעה הועברה בהצלחה';
$messages['messagecopied'] = 'ההודעה הועתקה בהצלחה';
$messages['messagemarked'] = 'ההודעה סומנה בהצלחה';
$messages['autocompletechars'] = 'יש להקיש לפחות $min ×ª×•×•×™× ×œ×”×©×œ×ž×” ×וטומטית של המחרוזת';
+$messages['namecannotbeempty'] = '×”×©× ×ינו יכול להיות ריק';
+$messages['nametoolong'] = '×”×©× ×רוך מדי';
+$messages['folderupdated'] = 'התיק עודכן בהצלחה';
+$messages['foldercreated'] = 'התיק נוצר בהצלחה';
?>
diff --git a/program/localization/hi_IN/labels.inc b/program/localization/hi_IN/labels.inc
index 6db8e028c..36d91fe57 100644
--- a/program/localization/hi_IN/labels.inc
+++ b/program/localization/hi_IN/labels.inc
@@ -226,9 +226,6 @@ $labels['foldername'] = 'फ़ोलà¥à¤¡à¤° नाम';
$labels['subscribed'] = 'सबसà¥à¤•à¥à¤°à¤¾à¤ˆà¤¬ किया गया';
$labels['create'] = 'बनाà¤à¤‚';
$labels['createfolder'] = 'फ़ोलडर बनाà¤à¤‚';
-$labels['rename'] = 'नाम बदलें';
-$labels['renamefolder'] = 'फ़ोलडर का नाम बदलें';
-$labels['deletefolder'] = 'फ़ोलडर मिटाà¤à¤‚';
$labels['managefolders'] = 'फ़ोलडर को वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¿à¤¤ करें';
$labels['sortby'] = 'à¤à¤¸à¥‡ तय करें';
diff --git a/program/localization/hr_HR/labels.inc b/program/localization/hr_HR/labels.inc
index 835159e96..2043f7c01 100644
--- a/program/localization/hr_HR/labels.inc
+++ b/program/localization/hr_HR/labels.inc
@@ -38,21 +38,25 @@ $labels['to'] = 'Za';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Odgovor-na';
+$labels['followupto'] = 'Nastavi-na';
$labels['date'] = 'Datum';
$labels['size'] = 'VeliÄina';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organizacija';
+$labels['readstatus'] = 'ProÄitano';
$labels['reply-to'] = 'Odgovor-na';
+$labels['mail-reply-to'] = 'Mail-Odogovori-na';
+$labels['mail-followup-to'] = 'Mail-Nastavi-na';
$labels['mailboxlist'] = 'Mape';
$labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
+$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
$labels['messagenrof'] = 'Poruka broj $nr od $count';
-$labels['moveto'] = 'prebaci u...';
-$labels['download'] = 'preuzmi (download)';
+$labels['copy'] = 'Kopiraj';
+$labels['move'] = 'Premjesti';
+$labels['moveto'] = 'Premjesti u...';
+$labels['download'] = 'Preuzmi (download)';
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'VeliÄina datoteke';
-$labels['preferhtml'] = 'HTML format u prednosti';
-$labels['htmlmessage'] = 'HTML format poruke';
-$labels['prettydate'] = 'Formatiran datum';
$labels['addtoaddressbook'] = 'Dodaj u imenik';
$labels['sun'] = 'Ned';
$labels['mon'] = 'Pon';
@@ -97,6 +101,8 @@ $labels['checkmail'] = 'Provjera novih poruka';
$labels['writenewmessage'] = 'Nova poruka';
$labels['replytomessage'] = 'Odgovori na poruku';
$labels['replytoallmessage'] = 'Odgovori pošiljaocu i svim primateljima';
+$labels['replyall'] = 'Odgovori svima';
+$labels['replylist'] = 'Odgovori listi';
$labels['forwardmessage'] = 'Prosljedi poruku';
$labels['deletemessage'] = 'Prebaci poruku u mapu smeće';
$labels['movemessagetotrash'] = 'Preseli poruke u smeće';
@@ -120,12 +126,35 @@ $labels['messageactions'] = 'Više akcija';
$labels['select'] = 'OznaÄi';
$labels['all'] = 'Sve';
$labels['none'] = 'Nijednu';
+$labels['currpage'] = 'Trenutna stranica';
$labels['unread'] = 'NeproÄitane';
$labels['flagged'] = 'Markirane';
$labels['unanswered'] = 'Neodgovrene';
$labels['deleted'] = 'Obrisano';
$labels['invert'] = 'Obrni';
$labels['filter'] = 'Filtriraj';
+$labels['list'] = 'Lista';
+$labels['threads'] = 'Teme';
+$labels['expand-all'] = 'Proširi sve';
+$labels['expand-unread'] = 'ProÅ¡iri neproÄitane';
+$labels['collapse-all'] = 'Zatvori sve';
+$labels['threaded'] = 'Tematski prikaz';
+$labels['autoexpand_threads'] = 'Proširi teme poruka';
+$labels['do_expand'] = 'Sve teme';
+$labels['expand_only_unread'] = 'samo sa neproÄitanim porukama';
+$labels['fromto'] = 'Pošiljatelj/Primatelj';
+$labels['flag'] = 'Zastava';
+$labels['attachment'] = 'Privitak';
+$labels['nonesort'] = 'Ništa';
+$labels['sentdate'] = 'Datum slanja';
+$labels['arrival'] = 'Datum primanja';
+$labels['asc'] = 'uzlazno';
+$labels['desc'] = 'silazno';
+$labels['listcolumns'] = 'Kolone';
+$labels['listsorting'] = 'Sortirajuća kolona';
+$labels['listorder'] = 'Sortirajući redoslijed';
+$labels['listmode'] = 'Model pregleda listi';
+$labels['folderactions'] = 'Akcije mapa';
$labels['compact'] = 'Kompresiranje';
$labels['empty'] = 'Isprazni ';
$labels['purge'] = 'OÄisti';
@@ -146,12 +175,15 @@ $labels['addattachment'] = 'Priloži datoteku';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Tip editora';
$labels['returnreceipt'] = 'Potvrda o primitku poruke';
+$labels['dsn'] = 'Potvrda o poslanoj poruci';
+$labels['editidents'] = 'Promijeni identitete';
$labels['checkspelling'] = 'Provjera pravopisa';
$labels['resumeediting'] = 'Povratak u pisanje';
$labels['revertto'] = 'Vrati na';
$labels['attachments'] = 'Privitci (Attachments)';
$labels['upload'] = 'Dodaj';
$labels['close'] = 'Zatvori';
+$labels['messageoptions'] = 'Opcije poruka...';
$labels['low'] = 'Nizak';
$labels['lowest'] = 'Najniži';
$labels['normal'] = 'Srednji';
@@ -168,6 +200,7 @@ $labels['maxuploadsize'] = 'Maksimalna dozvoljena velicina datoteke je $size';
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj Odgovori-na';
+$labels['addfollowupto'] = 'Dodaj Nastavak-na';
$labels['mdnrequest'] = 'Pošiljaoc ove poruke je tražio da bude obaviješten o njenom primitku. Želite li obavijestiti pošiljaoca?';
$labels['receiptread'] = 'Vrati potvrdu (proÄitano)';
$labels['yourmessage'] = 'Ovo je vraćena potvrda vaše poruke';
@@ -178,6 +211,8 @@ $labels['surname'] = 'Prezime';
$labels['email'] = 'E-Mail';
$labels['addcontact'] = 'Dodaj novi kontakt';
$labels['editcontact'] = 'Izmjeni kontakt';
+$labels['contacts'] = 'Kontakti';
+$labels['contactproperties'] = 'Svojstva kontakta';
$labels['edit'] = 'Izmjeni';
$labels['cancel'] = 'Odustani';
$labels['save'] = 'Spremi';
@@ -189,10 +224,13 @@ $labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
$labels['print'] = 'Print';
$labels['export'] = 'Export';
$labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
+$labels['newcontactgroup'] = 'Napravi novu kontaktnu grupu';
+$labels['groupactions'] = 'Akcije kontaktne grupe';
$labels['previouspage'] = 'Prethodna strana';
$labels['firstpage'] = 'Prva strana';
$labels['nextpage'] = 'Slijedeća strana';
$labels['lastpage'] = 'Zadnja strana';
+$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupe';
$labels['personaladrbook'] = 'Privatna adresa';
$labels['import'] = 'Uvoz';
@@ -210,6 +248,10 @@ $labels['manageidentities'] = 'Podesi identitete za ovaj nalog';
$labels['newidentity'] = 'Dodaj identitet';
$labels['newitem'] = 'Novo';
$labels['edititem'] = 'Uredi';
+$labels['preferhtml'] = 'HTML format u prednosti';
+$labels['defaultcharset'] = 'Zadani skup znakova';
+$labels['htmlmessage'] = 'HTML format poruke';
+$labels['prettydate'] = 'Formatiran datum';
$labels['setdefault'] = 'Postavi predodređeno';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Jezik';
@@ -218,6 +260,7 @@ $labels['pagesize'] = 'Redova po stranici';
$labels['signature'] = 'Potpis';
$labels['dstactive'] = 'Automatska promjena vremena';
$labels['htmleditor'] = 'Sastavi HTML poruke';
+$labels['htmlonreply'] = 'odgovor samo na HTML poruke';
$labels['htmlsignature'] = 'HTML potpis';
$labels['previewpane'] = 'Prikaži podruÄje pregleda';
$labels['skin'] = 'Tema izgleda';
@@ -229,10 +272,13 @@ $labels['mailboxview'] = 'Pregled Mailboxa';
$labels['mdnrequests'] = 'Obavijest pošiljatelja';
$labels['askuser'] = 'pitaj korisnika';
$labels['autosend'] = 'Å¡alji automatski';
-$labels['ignore'] = 'ignoriraj';
+$labels['autosendknown'] = 'Dodaj primatelja u moje kontakte, u suprotnom me pitaj';
+$labels['autosendknownignore'] = 'Dodaj primatelja u moje kontakte, u suprotnom zanemari';
+$labels['ignore'] = 'zanemari';
$labels['readwhendeleted'] = 'OznaÄi poruku kao proÄitanu pri brisanju';
$labels['flagfordeletion'] = 'OznaÄi poruku za brisanje umjesto brisanja';
$labels['skipdeleted'] = 'Ne prikazivaj pobrisane poruke';
+$labels['deletealways'] = 'Ukoliko premještanje poruka u mapu otpad ne uspije, izbrši poruku';
$labels['showremoteimages'] = 'Prikaži slike s interneta';
$labels['fromknownsenders'] = 'od poznatih pošiljatelja';
$labels['always'] = 'uvijek';
@@ -240,13 +286,15 @@ $labels['showinlineimages'] = 'Prikaži slike ispod poruke';
$labels['autosavedraft'] = 'Automatski spremi draft';
$labels['everynminutes'] = 'svakih $n minuta';
$labels['keepalive'] = 'Provjeri nove poruke';
-$labels['never'] = 'Nikada';
+$labels['never'] = 'nikada';
+$labels['immediately'] = 'odmah';
$labels['messagesdisplaying'] = 'Prikazujem poruke';
$labels['messagescomposition'] = 'Komponiram poruke';
$labels['mimeparamfolding'] = 'Nazivi privitaka';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (ostali)';
+$labels['force7bit'] = 'Koristi MIME postavke za 8-bitne znakove';
$labels['advancedoptions'] = 'Napredne postavke';
$labels['focusonnewmessage'] = 'Fokusiraj browser pri novoj poruci';
$labels['checkallfolders'] = 'Provjeri nove poruke u svim mapama';
@@ -268,6 +316,11 @@ $labels['replysignaturepos'] = 'Kod downloada ili proslijeđivanja postavi potpi
$labels['belowquote'] = 'ispod citata';
$labels['abovequote'] = 'iznad citata';
$labels['insertsignature'] = 'Umetni potpis';
+$labels['previewpanemarkread'] = 'Obilježi pregledane poruke kao proÄitane';
+$labels['afternseconds'] = 'nakon $n sekundi';
+$labels['reqmdn'] = 'Uvijek zatraži potvrdu o primitku poruke';
+$labels['reqdsn'] = 'Uvijek zatraži potvrdu o slanju poruke';
+$labels['replysamefolder'] = 'Spremi odgovore u mapu gdje se nalazi poruka';
$labels['folder'] = 'Mapa';
$labels['folders'] = 'Mape';
$labels['foldername'] = 'Ime mape';
@@ -275,9 +328,6 @@ $labels['subscribed'] = 'Pretplata';
$labels['messagecount'] = 'Poruke';
$labels['create'] = 'Napravi';
$labels['createfolder'] = 'Napravi novu mapu';
-$labels['rename'] = 'Preimenuj';
-$labels['renamefolder'] = 'Preimenuj Mapu';
-$labels['deletefolder'] = 'Obriši Mapu';
$labels['managefolders'] = 'Podesi Mapu';
$labels['specialfolders'] = 'Specijalna Mapa';
$labels['sortby'] = 'Sortiraj po';
@@ -287,5 +337,23 @@ $labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'Engleski';
+$labels['westerneuropean'] = 'Zapadno Europski';
+$labels['easterneuropean'] = 'IstoÄno Europski';
+$labels['southeasterneuropean'] = 'Južno-IstoÄni Europski';
+$labels['baltic'] = 'BalitÄki';
+$labels['cyrillic'] = 'ÄŒirilÄni';
+$labels['arabic'] = 'Arapski';
+$labels['greek'] = 'GrÄki';
+$labels['hebrew'] = 'Hibru';
+$labels['turkish'] = 'Turski';
+$labels['nordic'] = 'Nordski';
+$labels['thai'] = 'Tajlandski';
+$labels['celtic'] = 'Keltski';
+$labels['vietnamese'] = 'Vijetnamski';
+$labels['japanese'] = 'Japanski';
+$labels['korean'] = 'Korejski';
+$labels['chinese'] = 'Kineski';
?>
diff --git a/program/localization/hr_HR/messages.inc b/program/localization/hr_HR/messages.inc
index 4f4b7c519..7594efa3b 100644
--- a/program/localization/hr_HR/messages.inc
+++ b/program/localization/hr_HR/messages.inc
@@ -53,9 +53,7 @@ $messages['deletecontactconfirm'] = 'Želite li obrisati izabrane kontakte?';
$messages['deletemessagesconfirm'] = 'Sigurno želite obrisati odabrane poruke?';
$messages['deletefolderconfirm'] = 'Želite li obrisati ovu mapu?';
$messages['purgefolderconfirm'] = 'Želite li obrisati sve poruke u mapi?';
-$messages['foldercreating'] = 'Kreiram mapu...';
$messages['folderdeleting'] = 'Brišem mapu...';
-$messages['folderrenaming'] = 'Mijenjam naziv mape...';
$messages['foldermoving'] = 'Premještam mapu...';
$messages['formincomplete'] = 'Obrazac nije u cjelosti popunjen';
$messages['noemailwarning'] = 'Unesite valjanu e-mail adresu';
@@ -89,7 +87,6 @@ $messages['movingmessage'] = 'Premještanje poruke...';
$messages['receiptsent'] = 'UspjeÅ¡no poslana potvrda (proÄitano)';
$messages['errorsendingreceipt'] = 'Ne može poslati potvrdu';
$messages['nodeletelastidentity'] = 'Ne možete izbrisati zadnji identitet.';
-$messages['addsubfolderhint'] = 'Ova mapa će biti stvorena kao podmapa na trenutno oznaÄenoj';
$messages['forbiddencharacter'] = 'Naziv mape sadrži zabranjene znakove';
$messages['selectimportfile'] = 'Odaberite datoteku za prijenos';
$messages['addresswriterror'] = 'U odabrani adresar nije moguće zapisivat...';
diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc
index e2553884f..f8f2b6fce 100644
--- a/program/localization/hu_HU/labels.inc
+++ b/program/localization/hu_HU/labels.inc
@@ -40,16 +40,15 @@ $labels['to'] = 'Címzett';
$labels['cc'] = 'Másolat';
$labels['bcc'] = 'Titkos másolat';
$labels['replyto'] = 'Válaszcím';
-$labels['mailreplyto'] = 'Hírcsoport';
-$labels['mailfollowupto'] = 'Hírcsoport válasz';
+$labels['followupto'] = 'Hírcsoport válasz';
$labels['date'] = 'Dátum';
$labels['size'] = 'Méret';
$labels['priority'] = 'Sürgősség';
$labels['organization'] = 'Szervezet';
$labels['readstatus'] = 'Olvasott';
$labels['reply-to'] = 'Válaszcím';
-$labels['mailreply-to'] = 'Hírcsoport';
-$labels['mailfollowup-to'] = 'Hírcsoport válasz';
+$labels['mail-reply-to'] = 'Hírcsoport';
+$labels['mail-followup-to'] = 'Hírcsoport válasz';
$labels['mailboxlist'] = 'Mappák';
$labels['messagesfromto'] = 'Ãœzenetek: $from - $to / $count';
$labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)';
@@ -203,8 +202,7 @@ $labels['maxuploadsize'] = 'A maximális feltölthető fájl mérete $size';
$labels['addcc'] = 'Cc (Másolati cím) hozzáadása';
$labels['addbcc'] = 'Bcc (titkos másolati cím) hozzáadása';
$labels['addreplyto'] = 'Válaszcím hozzáadása';
-$labels['addmailreplyto'] = 'Hírcsoport hozzáadása';
-$labels['addmailfollowupto'] = 'Hírcsoport válasz hozzáadása';
+$labels['addfollowupto'] = 'Hírcsoport válasz hozzáadása';
$labels['mdnrequest'] = 'Az üzenet küldője értesítést kér arról, hogy elolvasta a levelet. El legyen küldve az olvasási visszaigazolás?';
$labels['receiptread'] = 'Olvasási visszaigazolás (olvasott)';
$labels['yourmessage'] = 'Ez az üzenete olvasási visszaigazolása';
@@ -331,9 +329,6 @@ $labels['subscribed'] = 'Feliratkozás';
$labels['messagecount'] = 'Ãœzenet';
$labels['create'] = 'Létrehozás';
$labels['createfolder'] = 'Új mappa létrehozása';
-$labels['rename'] = 'Ãtnevezés';
-$labels['renamefolder'] = 'Mappa átnevezése';
-$labels['deletefolder'] = 'Mappa törlése';
$labels['managefolders'] = 'Mappák kezelése';
$labels['specialfolders'] = 'Különleges mappák';
$labels['sortby'] = 'Rendezés';
diff --git a/program/localization/hu_HU/messages.inc b/program/localization/hu_HU/messages.inc
index 3f5d7de5b..c820bc28d 100644
--- a/program/localization/hu_HU/messages.inc
+++ b/program/localization/hu_HU/messages.inc
@@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Biztos, hogy törölni szeretné a kijelöl
$messages['deletemessagesconfirm'] = 'Biztos, hogy törölni szeretné a kijelölt üzenete(ke)t?';
$messages['deletefolderconfirm'] = 'Biztos, hogy törölni szeretné ezt a mappát?';
$messages['purgefolderconfirm'] = 'Biztos benne, hogy az összes üzenet törölhető?';
-$messages['foldercreating'] = 'Mappa létrehozása...';
$messages['folderdeleting'] = 'Mappa törlése...';
-$messages['folderrenaming'] = 'Mappa átnevezése...';
$messages['foldermoving'] = 'Mappa mozgatása...';
$messages['formincomplete'] = 'Az űrlap hiányosan lett kitöltve';
$messages['noemailwarning'] = 'Adjon meg egy valós e-mail címet';
@@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Üzenet másolása...';
$messages['receiptsent'] = 'Az olvasási visszaigazolás el lett küldve';
$messages['errorsendingreceipt'] = 'Az olvasási visszaigazolást nem sikerült elküldeni';
$messages['nodeletelastidentity'] = 'Nem törölheti ezt az azonosítót, ez az egyetlen';
-$messages['addsubfolderhint'] = 'Az új könyvtár az aktuálisan kiválasztott alkönyvtáraként lesz létrehozva';
$messages['forbiddencharacter'] = 'A mappa neve tiltott karaktert tartalmaz';
$messages['selectimportfile'] = 'Kérjük válassza ki a feltölteni kívánt fájlt';
$messages['addresswriterror'] = 'A kiválasztott címjegyzék nem írható';
diff --git a/program/localization/hy_AM/labels.inc b/program/localization/hy_AM/labels.inc
index 7081d44e8..5809c13f2 100644
--- a/program/localization/hy_AM/labels.inc
+++ b/program/localization/hy_AM/labels.inc
@@ -249,9 +249,6 @@ $labels['subscribed'] = 'Ô²Õ¡ÕªÕ¡Õ¶Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¾Õ¡Õ®';
$labels['messagecount'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€';
$labels['create'] = 'ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬';
$labels['createfolder'] = 'Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ Õ¤Õ¡Ö€Õ¡Õ¯';
-$labels['rename'] = 'ÕŽÕ¥Ö€Õ¡Õ¶Õ¾Õ¡Õ¶Õ¥Õ¬';
-$labels['renamefolder'] = 'ÕŽÕ¥Ö€Õ¡Õ¶Õ¾Õ¡Õ¶Õ¥Õ¬ Õ¤Õ¡Ö€Õ¡Õ¯Õ¨';
-$labels['deletefolder'] = 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ¤Õ¡Ö€Õ¡Õ¯Õ¨';
$labels['managefolders'] = 'Ô¿Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¤Õ¡Ö€Õ¡Õ¯Õ¶Õ¥Ö€Õ¨';
$labels['specialfolders'] = 'Õ€Õ¡Õ¿Õ¸Ö‚Õ¯ Õ¤Õ¡Ö€Õ¡Õ¯Õ¶Õ¥Ö€';
$labels['sortby'] = 'Ô´Õ¡Õ½Õ¡Õ¾Õ¸Ö€Õ¥Õ¬';
diff --git a/program/localization/hy_AM/messages.inc b/program/localization/hy_AM/messages.inc
index cd8aab234..5313ba112 100644
--- a/program/localization/hy_AM/messages.inc
+++ b/program/localization/hy_AM/messages.inc
@@ -48,9 +48,7 @@ $messages['deletecontactconfirm'] = 'ÕˆÖ‚Õ¦Õ¸Ö‚ÕžÕ´ Õ§Ö„ Õ»Õ¶Õ»Õ¥Õ¬ Õ¶Õ·Õ¾Õ¡Õ® Õ
$messages['deletemessagesconfirm'] = 'ÕˆÖ‚Õ¦Õ¸Ö‚ÕžÕ´ Õ§Ö„ Õ»Õ¶Õ»Õ¥Õ¬ Õ¶Õ·Õ¾Õ¡Õ® Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€Õ¨';
$messages['deletefolderconfirm'] = 'ÕˆÖ‚Õ¦Õ¸Ö‚ÕžÕ´ Õ§Ö„ Õ»Õ¶Õ»Õ¥Õ¬ Õ¡ÕµÕ½ Õ¤Õ¡Ö€Õ¡Õ¯Õ¨';
$messages['purgefolderconfirm'] = 'ÕˆÖ‚Õ¦Õ¸Ö‚ÕžÕ´ Õ§Ö„ Õ»Õ¶Õ»Õ¥Õ¬ Õ¡ÕµÕ½ Õ¤Õ¡Ö€Õ¡Õ¯Õ« Õ¢Õ¸Õ¬Õ¸Ö€ Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€Õ¨';
-$messages['foldercreating'] = 'Դարակը ստեղծվում է…';
$messages['folderdeleting'] = 'Դարակը ջնջվում է…';
-$messages['folderrenaming'] = 'Դարակը վերանվանվում է…';
$messages['foldermoving'] = 'Դարակը տեղափոխվում է…';
$messages['formincomplete'] = 'ÕÖ‡Õ¨ Õ©Õ¥Ö€Õ« Õ§ Õ¬Ö€Õ¡ÖÕ¾Õ¡Õ®';
$messages['noemailwarning'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ Õ³Õ«Õ·Õ¿ Õ§Õ¬. Õ°Õ¡Õ½ÖÕ¥';
@@ -83,7 +81,6 @@ $messages['movingmessage'] = 'Նամակը տեղափոխվում է…';
$messages['receiptsent'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ¨Õ¶Õ©Õ¥Ö€ÖÕ´Õ¡Õ¶ Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¡Õ£Õ«Ö€Õ¶ Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¾Õ¡Õ® Õ§';
$messages['errorsendingreceipt'] = 'Ô¾Õ¡Õ¶Õ¸Ö‚ÖÕ¡Õ£Ö€Õ« Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö';
$messages['nodeletelastidentity'] = 'Ô±Õ¶Õ°Õ¶Õ¡Ö€ Õ§ Õ»Õ¶Õ»Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ¨';
-$messages['addsubfolderhint'] = 'Ô±ÕµÕ½ Õ¤Õ¡Ö€Õ¡Õ¯Õ¨ Õ¯Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ« Õ¸Ö€ÕºÕ¥Õ½ Õ¶Õ·Õ¾Õ¡Õ®Õ« Õ¥Õ¶Õ©Õ¡Õ¤Õ¡Ö€Õ¡Õ¯';
$messages['forbiddencharacter'] = 'Ô´Õ¡Ö€Õ¡Õ¯Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¡Õ¶Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« Õ¶Õ·Õ¡Õ¶';
$messages['selectimportfile'] = 'Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¾Õ¸Õ² Ö†Õ¡ÕµÕ¬Õ¨';
$messages['addresswriterror'] = 'Ô¸Õ¶Õ¿Ö€Õ¾Õ¡Õ® Õ°Õ¡Õ½ÖÕ¥Õ¡Õ£Õ«Ö€Ö„Õ¨ Õ¥Õ¶Õ©Õ¡Õ¯Õ¡ Õ¹Õ§ ÖƒÕ¸ÖƒÕ¸Õ­Õ´Õ¡Õ¶';
diff --git a/program/localization/id_ID/labels.inc b/program/localization/id_ID/labels.inc
index 854712d1f..80a351adf 100644
--- a/program/localization/id_ID/labels.inc
+++ b/program/localization/id_ID/labels.inc
@@ -10,7 +10,7 @@
| Licensed under the GNU GPL |
| |
+-----------------------------------------------------------------------+
-| Author: Putu Arya Sabda Wijaya <klunxer@gmail.com> |
+| Author: Putu Arya Sabda Wijaya <ptaryasw@isi-dps.ac.id> |
+-----------------------------------------------------------------------+
@version $Id$
@@ -38,11 +38,15 @@ $labels['to'] = 'Penerima';
$labels['cc'] = 'Lampiran';
$labels['bcc'] = 'Lampiran tersembunyi';
$labels['replyto'] = 'Balas kepada';
+$labels['followupto'] = 'Surat Tindak Lanjut Untuk';
$labels['date'] = 'Tanggal';
$labels['size'] = 'Ukuran';
$labels['priority'] = 'Prioritas';
$labels['organization'] = 'Organisasi';
+$labels['readstatus'] = 'Status Terbaca';
$labels['reply-to'] = 'Balas kepada';
+$labels['mail-reply-to'] = 'Surat Balasan Untuk';
+$labels['mail-followup-to'] = 'Surat Tindak Lanjut Untuk';
$labels['mailboxlist'] = 'Map';
$labels['messagesfromto'] = 'Pesan ke $from sampai $to dari $count';
$labels['threadsfromto'] = 'Untaian ke $from sampai $to dari $count';
@@ -97,6 +101,8 @@ $labels['checkmail'] = 'Periksa pesan baru';
$labels['writenewmessage'] = 'Buat pesan baru';
$labels['replytomessage'] = 'Balas pesan';
$labels['replytoallmessage'] = 'Balas ke pengirim dan yang lain';
+$labels['replyall'] = 'Balas ke semua';
+$labels['replylist'] = 'Balas ke milis';
$labels['forwardmessage'] = 'Teruskan pesan';
$labels['deletemessage'] = 'Hapus pesan';
$labels['movemessagetotrash'] = 'Pindahkan pesan ke tong sampah';
@@ -168,7 +174,9 @@ $labels['sendmessage'] = 'Kirim pesan sekarang';
$labels['addattachment'] = 'Sisipkan sebuah berkas';
$labels['charset'] = 'Set karakter';
$labels['editortype'] = 'Tipe penyunting';
-$labels['returnreceipt'] = 'Kembalikan penerima';
+$labels['returnreceipt'] = 'Tanda terima kembali';
+$labels['dsn'] = 'Pemberitahuan status terkirim';
+$labels['editidents'] = 'Ubah identitas';
$labels['checkspelling'] = 'Pemeriksaan ejaan';
$labels['resumeediting'] = 'Lanjutkan menyunting';
$labels['revertto'] = 'Balikkan ke';
@@ -192,6 +200,7 @@ $labels['maxuploadsize'] = 'Ukuran file maksimal adalah $size';
$labels['addcc'] = 'Tambah Cc';
$labels['addbcc'] = 'Tambah Bcc';
$labels['addreplyto'] = 'Tambah Balas Ke';
+$labels['addfollowupto'] = 'Tambahkan Tindak-Lanjut-Ke';
$labels['mdnrequest'] = 'Pengirim pesan ini telah meminta untuk diberitahu ketika Anda membaca pesan ini. Apakah anda ingin memberitahu pengirim?';
$labels['receiptread'] = 'Tanda Terima (baca)';
$labels['yourmessage'] = 'Ini adalah Tanda Terima untuk pesan Anda';
@@ -203,6 +212,7 @@ $labels['email'] = 'E-Mail';
$labels['addcontact'] = 'Tambah kontak baru';
$labels['editcontact'] = 'Ubah kontak';
$labels['contacts'] = 'Daftar kontak';
+$labels['contactproperties'] = 'Properti kontak';
$labels['edit'] = 'Ubah';
$labels['cancel'] = 'Batal';
$labels['save'] = 'Simpan';
@@ -250,6 +260,7 @@ $labels['pagesize'] = 'Baris per halaman';
$labels['signature'] = 'Tanda tangan';
$labels['dstactive'] = 'Waktu Musim Panas';
$labels['htmleditor'] = 'Tulis pesan HTML';
+$labels['htmlonreply'] = 'balasan untuk pesan HTML saja';
$labels['htmlsignature'] = 'Tandatangan HTML';
$labels['previewpane'] = 'Perlihatkan tempat melihat';
$labels['skin'] = 'Tampilan antarmuka';
@@ -258,9 +269,11 @@ $labels['logoutcompact'] = 'Mampatkan Kotak Masuk saat keluar';
$labels['uisettings'] = 'Antarmuka pengguna';
$labels['serversettings'] = 'Pengaturan Server';
$labels['mailboxview'] = 'Tampilan Kotak Surat';
-$labels['mdnrequests'] = 'Pemberitahuan pada pengirim';
+$labels['mdnrequests'] = 'Sedang dimintakan tanda terima kembali';
$labels['askuser'] = 'tanya pengguna';
$labels['autosend'] = 'kirim otomatis';
+$labels['autosendknown'] = 'kirim tanda terima kepada kontak saya, selain itu tanyai saya';
+$labels['autosendknownignore'] = 'kirim tanda terima kepada kontak saya, selain acuhkan';
$labels['ignore'] = 'acuhkan';
$labels['readwhendeleted'] = 'Tandai pesan sebagai terbaca saat dihapus';
$labels['flagfordeletion'] = 'Tandai pesan untuk penghapusan daripada dihapus';
@@ -305,6 +318,9 @@ $labels['abovequote'] = 'Diatas kutipan';
$labels['insertsignature'] = 'Isi tanda tangan';
$labels['previewpanemarkread'] = 'Tandai pesan yang sudah dilihat ';
$labels['afternseconds'] = 'setelah $n detik';
+$labels['reqmdn'] = 'Selalu meminta tanda terima kembali';
+$labels['reqdsn'] = 'Selalu meminta pemberitahuan status terkirim';
+$labels['replysamefolder'] = 'Taruh balasan di folder yang sama dengan pesan yang dibalas';
$labels['folder'] = 'Map';
$labels['folders'] = 'Map-map';
$labels['foldername'] = 'Nama map';
@@ -312,9 +328,6 @@ $labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Pesan-pesan';
$labels['create'] = 'Buat';
$labels['createfolder'] = 'Buat map baru';
-$labels['rename'] = 'Namai ulang';
-$labels['renamefolder'] = 'Namai ulang map';
-$labels['deletefolder'] = 'Hapus map';
$labels['managefolders'] = 'Atur map';
$labels['specialfolders'] = 'Map Khusus';
$labels['sortby'] = 'Urut berdasarkan';
diff --git a/program/localization/id_ID/messages.inc b/program/localization/id_ID/messages.inc
index f0b49e4d6..39502492c 100644
--- a/program/localization/id_ID/messages.inc
+++ b/program/localization/id_ID/messages.inc
@@ -10,7 +10,7 @@
| Licensed under the GNU GPL |
| |
+-----------------------------------------------------------------------+
-| Author: Putu Arya Sabda Wijaya <klunxer@gmail.com> |
+| Author: Putu Arya Sabda Wijaya <ptaryasw@isi-dps.ac.id> |
+-----------------------------------------------------------------------+
@version $Id$
@@ -23,6 +23,7 @@ $messages['cookiesdisabled'] = 'Browser Anda tidak menerima cookies';
$messages['sessionerror'] = 'Session Anda invalid atau kadaluwarsa';
$messages['imaperror'] = 'Koneksi ke IMAP server gagal';
$messages['servererror'] = 'Server Error!';
+$messages['servererrormsg'] = 'Server Error: $msg';
$messages['invalidrequest'] = 'Permintaan tidak valid! Tidak ada data yang tersimpan.';
$messages['nomessagesfound'] = 'Surat tidak ditemukan di kotak masuk ini';
$messages['loggedout'] = 'Anda berhasil mengakhiri session. Selamat Tinggal!';
@@ -34,7 +35,7 @@ $messages['checkingmail'] = 'Memeriksa pesan baru...';
$messages['sendingmessage'] = 'Mengirim pesan...';
$messages['messagesent'] = 'Pesan terkirim';
$messages['savingmessage'] = 'Menyimpan pesan...';
-$messages['messagesaved'] = 'MMenyimpan pesan ke daftar tunggu';
+$messages['messagesaved'] = 'Menyimpan pesan ke daftar tunggu';
$messages['successfullysaved'] = 'Berhasil disimpan';
$messages['addedsuccessfully'] = 'Kontak berhasil ditambahkan ke buku alamat';
$messages['contactexists'] = 'Kontak dengan alamat e-mail ini sudah ada';
@@ -54,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Apakah anda yakin untuk menghapus kontak te
$messages['deletemessagesconfirm'] = 'Yakin menghapus pesan terpilih?';
$messages['deletefolderconfirm'] = 'Apakah anda benar-benar ingin menghapus map ini?';
$messages['purgefolderconfirm'] = 'Yakin menghapus semua pesan pada map ini?';
-$messages['foldercreating'] = 'Membuat map...';
$messages['folderdeleting'] = 'Menghapus map...';
-$messages['folderrenaming'] = 'Mengubah nama map...';
$messages['foldermoving'] = 'Memindahkan map...';
$messages['formincomplete'] = 'Isian tidak terisi semua';
$messages['noemailwarning'] = 'Tolong masukkan alamat email yang valid';
@@ -88,10 +87,11 @@ $messages['sourceisreadonly'] = 'Sumber dari alamat ini hanya dapat dibaca';
$messages['errorsavingcontact'] = 'Tidak bisa menyimpan alamat kontak';
$messages['movingmessage'] = 'Memindahkan pesan...';
$messages['copyingmessage'] = 'Menyalin pesan...';
+$messages['deletingmessage'] = 'Menghapus pesan...';
+$messages['markingmessage'] = 'Menandai Pesan...';
$messages['receiptsent'] = 'Berhasil mengirim pemberitahuan tanda terima telah terbaca';
$messages['errorsendingreceipt'] = 'Tidak dapat mengirim tanda terima';
$messages['nodeletelastidentity'] = 'Anda tidak bida mengapus identitas ini, ini identitas yang terakhir';
-$messages['addsubfolderhint'] = 'Folder ini akan dibuat sebagai subfolder pada folder yang terpilih';
$messages['forbiddencharacter'] = 'Nama folder mengandung karakter terlarang';
$messages['selectimportfile'] = 'Mohon pilih sebuah berkas untuk diunggah';
$messages['addresswriterror'] = 'Buku alamat terpilih tidak dapat ditulisi';
@@ -109,10 +109,21 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Otentifikasi gagal';
$messages['smtpfromerror'] = 'SMTP Error ($code): Gagal mengatur pengirim "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): Gagal menambah penerima "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error ($code): Tidak dapat menguraikan daftar penerima';
+$messages['smtpdsnerror'] = 'SMTP Error: Tidak ada dukungan untuk pemberitahuan status terkirim';
$messages['smtperror'] = 'SMTP Error : $msg';
$messages['emailformaterror'] = 'Alamat e-mail salah: $email';
$messages['toomanyrecipients'] = 'Terlalu banyak penerima. Batas maksimal penerima adalah $max';
$messages['maxgroupmembersreached'] = 'Jumlah grup melebihi jumlah maksimum $max';
$messages['internalerror'] = 'Terjadi kesalahan internal. Silahkan diulang kembali';
+$messages['contactdelerror'] = 'Kontak tidak bisa dihapus';
+$messages['contactdeleted'] = 'Kontak berhasil dihapus';
+$messages['groupdeleted'] = 'Grup berhasil dihapus';
+$messages['grouprenamed'] = 'Grup berhasil dinamai kembali';
+$messages['groupcreated'] = 'Grub berhasil dibuat';
+$messages['messagedeleted'] = 'Pesan berhasil dihapus';
+$messages['messagemoved'] = 'Pesan berhasil dipindahkan';
+$messages['messagecopied'] = 'Pesan berhasil disalin';
+$messages['messagemarked'] = 'Pesan berhasil ditandai';
+$messages['autocompletechars'] = 'Masukkan setidaknya $min karakter untuk swaparipurna';
?>
diff --git a/program/localization/is_IS/labels.inc b/program/localization/is_IS/labels.inc
index f21a3b5cc..edb0ce348 100644
--- a/program/localization/is_IS/labels.inc
+++ b/program/localization/is_IS/labels.inc
@@ -250,9 +250,6 @@ $labels['subscribed'] = 'Valin';
$labels['messagecount'] = 'Skeyti';
$labels['create'] = 'Búa til';
$labels['createfolder'] = 'Búa til nýja möppu';
-$labels['rename'] = 'Endurnefna';
-$labels['renamefolder'] = 'Breyta nafni möppu';
-$labels['deletefolder'] = 'Eyða möppu';
$labels['managefolders'] = 'Sýsla með möppum';
$labels['specialfolders'] = 'Sérstakar möppur';
$labels['sortby'] = 'Raða eftir';
diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc
index 5f6cc8505..327791c82 100644
--- a/program/localization/it_IT/labels.inc
+++ b/program/localization/it_IT/labels.inc
@@ -39,15 +39,14 @@ $labels['to'] = 'Destinatario';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcn';
$labels['replyto'] = 'Rispondi a';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Dimensione';
$labels['priority'] = 'Priorità';
$labels['organization'] = 'Società';
$labels['reply-to'] = 'Rispondi a';
-$labels['mailreply-to'] = 'Mail-Reply-To';
-$labels['mailfollowup-to'] = 'Mail-Followup-To';
+$labels['mail-reply-to'] = 'Mail-Reply-To';
+$labels['mail-followup-to'] = 'Mail-Followup-To';
$labels['mailboxlist'] = 'Cartelle';
$labels['messagesfromto'] = 'Messaggi da $from a $to di $count';
$labels['threadsfromto'] = 'Thread da $from a $to di $count';
@@ -201,8 +200,7 @@ $labels['maxuploadsize'] = 'La dimensione massima consentita è $size';
$labels['addcc'] = 'Aggiungi Cc';
$labels['addbcc'] = 'Aggiungi Bcc';
$labels['addreplyto'] = 'Aggiungi Rispondi a';
-$labels['addmailreplyto'] = 'Aggiungi Mail-Reply-To';
-$labels['addmailfollowupto'] = 'Aggiungi Mail-Followup-To';
+$labels['addfollowupto'] = 'Aggiungi Followup-To';
$labels['mdnrequest'] = 'Il mittente ha richiesto di ricevere una notifica dell\'avvenuta lettura del messaggio. Si desidera inviare tale notifica?';
$labels['receiptread'] = 'Ricevuta di ritorno (letto)';
$labels['yourmessage'] = 'Questa è la ricevuta di ritorno del messaggio inviato';
@@ -328,9 +326,6 @@ $labels['subscribed'] = 'Sottoscritta';
$labels['messagecount'] = 'Messaggi';
$labels['create'] = 'Crea';
$labels['createfolder'] = 'Crea nuova cartella';
-$labels['rename'] = 'Rinomina';
-$labels['renamefolder'] = 'Rinomina cartella';
-$labels['deletefolder'] = 'Cancella cartella';
$labels['managefolders'] = 'Gestione cartelle';
$labels['specialfolders'] = 'Cartelle Speciali';
$labels['sortby'] = 'Ordina per';
diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc
index 1a0c9db76..665a9e5ba 100644
--- a/program/localization/it_IT/messages.inc
+++ b/program/localization/it_IT/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Sei sicuro di voler eliminare i contatti se
$messages['deletemessagesconfirm'] = 'Sei sicuro di voler eliminare i messaggi selezionati?';
$messages['deletefolderconfirm'] = 'Sei sicuro di voler eliminare la cartella selezionata?';
$messages['purgefolderconfirm'] = 'Sei sicuro di voler eliminare tutti i messaggi in questa cartella?';
-$messages['foldercreating'] = 'Creazione cartella...';
$messages['folderdeleting'] = 'Eliminazione cartella...';
-$messages['folderrenaming'] = 'Rinominazione cartella...';
$messages['foldermoving'] = 'Spostamento cartella...';
$messages['formincomplete'] = 'Per favore, compila tutti i campi';
$messages['noemailwarning'] = 'Per favore, immetti un indirizzo e-mail valido';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Copia del messaggio';
$messages['receiptsent'] = 'Ricevuta di ritorno inviata con successo';
$messages['errorsendingreceipt'] = 'Impossibile spedire la ricevuta di ritorno';
$messages['nodeletelastidentity'] = 'Impossibile eliminare l\'unica identità disponibile';
-$messages['addsubfolderhint'] = 'La cartella verrà creata come sotto cartella della cartella corrente';
$messages['forbiddencharacter'] = 'Il nome della cartella contiene un carattere vietato';
$messages['selectimportfile'] = 'Per favore, seleziona il file da caricare';
$messages['addresswriterror'] = 'La rubrica selezionata non è scrivibile';
diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc
index c8ff8ac1b..317ba6ea2 100644
--- a/program/localization/ja_JP/labels.inc
+++ b/program/localization/ja_JP/labels.inc
@@ -16,68 +16,51 @@
@version $Id$
-EN-Revision: 4184
+EN-Revision: 3891
*/
$labels = array();
-
-// login page
$labels['welcome'] = 'よã†ã“ã $product ã¸';
$labels['username'] = 'ユーザーå';
$labels['password'] = 'パスワード';
$labels['server'] = 'サーãƒãƒ¼';
$labels['login'] = 'ログイン';
-
-// taskbar
$labels['logout'] = 'ログアウト';
$labels['mail'] = 'é›»å­ãƒ¡ãƒ¼ãƒ«';
$labels['settings'] = '個人設定';
$labels['addressbook'] = 'アドレス帳';
-
-// mailbox names
$labels['inbox'] = 'å—信トレイ';
$labels['drafts'] = '下書ã';
$labels['sent'] = 'é€ä¿¡æ¸ˆã¿ã‚¢ã‚¤ãƒ†ãƒ ';
$labels['trash'] = 'ã”ã¿ç®±';
$labels['junk'] = '迷惑メール';
-
-// message listing
$labels['subject'] = '件å';
$labels['from'] = '差出人';
$labels['to'] = '宛先';
$labels['cc'] = 'コピー';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To (返信先)';
-$labels['mailreplyto'] = 'Mail-Reply-To (ML 投稿者)';
-$labels['mailfollowupto'] = 'Mail-Followup-To (ML ã®å®›å…ˆ)';
+$labels['followupto'] = 'Followup-To ( ã®å®›å…ˆ)';
$labels['date'] = '日付';
-$labels['size'] = '容é‡';
+$labels['size'] = 'サイズ';
$labels['priority'] = '優先度';
$labels['organization'] = '所属';
-$labels['readstatus'] = '閲覧ã®çŠ¶æ…‹';
-
-// aliases
-$labels['reply-to'] = $labels['replyto'];
-$labels['mail-reply-to'] = $labels['mailreplyto'];
-$labels['mail-followup-to'] = $labels['mailfollowupto'];
-
-$labels['mailboxlist'] = 'フォルダー一覧';
+$labels['readstatus'] = '閲覧状æ³';
+$labels['reply-to'] = '返信先';
+$labels['mail-reply-to'] = 'Mail-Reply-To (ML 投稿者)';
+$labels['mail-followup-to'] = 'Mail-Followup-To (ML ã®å®›å…ˆ)';
+$labels['mailboxlist'] = 'フォルダ一覧';
$labels['messagesfromto'] = '表示中ã®ãƒ¡ãƒ¼ãƒ«: $from ~ $to (å…¨: $count 件)';
$labels['threadsfromto'] = '表示中ã®ã‚¹ãƒ¬ãƒƒãƒ‰: $from ~ $to (å…¨: $count 件)';
$labels['messagenrof'] = 'ç¾åœ¨ã®ãƒ¡ãƒ¼ãƒ«: $nr (å…¨: $count 件)';
-
-$labels['copy'] = 'コピー';
-$labels['move'] = '移動';
-$labels['moveto'] = 'フォルダーã®ç§»å‹•';
+$labels['copy'] = 'コピー';
+$labels['move'] = '移動';
+$labels['moveto'] = 'フォルダã®ç§»å‹•';
$labels['download'] = 'ダウンロード';
-
$labels['filename'] = 'ファイルå';
$labels['filesize'] = 'ファイル サイズ';
-
$labels['addtoaddressbook'] = 'アドレス帳ã«è¿½åŠ ';
-
-// weekdays short
$labels['sun'] = 'æ—¥';
$labels['mon'] = '月';
$labels['tue'] = 'ç«';
@@ -85,74 +68,64 @@ $labels['wed'] = 'æ°´';
$labels['thu'] = '木';
$labels['fri'] = '金';
$labels['sat'] = '土';
-
-// weekdays long
-$labels['sunday'] = '日曜日';
-$labels['monday'] = '月曜日';
-$labels['tuesday'] = 'ç«æ›œæ—¥';
+$labels['sunday'] = '日曜日';
+$labels['monday'] = '月曜日';
+$labels['tuesday'] = 'ç«æ›œæ—¥';
$labels['wednesday'] = '水曜日';
-$labels['thursday'] = '木曜日';
-$labels['friday'] = '金曜日';
-$labels['saturday'] = '土曜日';
-
-// months short
-$labels['jan'] = '1 月';
-$labels['feb'] = '2 月';
-$labels['mar'] = '3 月';
-$labels['apr'] = '4 月';
-$labels['may'] = '5 月';
-$labels['jun'] = '6 月';
-$labels['jul'] = '7 月';
-$labels['aug'] = '8 月';
-$labels['sep'] = '9 月';
-$labels['oct'] = '10 月';
-$labels['nov'] = '11 月';
-$labels['dec'] = '12 月';
-
-// months long
-$labels['longjan'] = '1 月';
-$labels['longfeb'] = '2 月';
-$labels['longmar'] = '3 月';
-$labels['longapr'] = '4 月';
-$labels['longmay'] = '5 月';
-$labels['longjun'] = '6 月';
-$labels['longjul'] = '7 月';
-$labels['longaug'] = '8 月';
-$labels['longsep'] = '9 月';
-$labels['longoct'] = '10 月';
-$labels['longnov'] = '11 月';
-$labels['longdec'] = '12 月';
-
+$labels['thursday'] = '木曜日';
+$labels['friday'] = '金曜日';
+$labels['saturday'] = '土曜日';
+$labels['jan'] = '1 月';
+$labels['feb'] = '2 月';
+$labels['mar'] = '3 月';
+$labels['apr'] = '4 月';
+$labels['may'] = '5 月';
+$labels['jun'] = '6 月';
+$labels['jul'] = '7 月';
+$labels['aug'] = '8 月';
+$labels['sep'] = '9 月';
+$labels['oct'] = '10 月';
+$labels['nov'] = '11 月';
+$labels['dec'] = '12 月';
+$labels['longjan'] = '1 月';
+$labels['longfeb'] = '2 月';
+$labels['longmar'] = '3 月';
+$labels['longapr'] = '4 月';
+$labels['longmay'] = '5 月';
+$labels['longjun'] = '6 月';
+$labels['longjul'] = '7 月';
+$labels['longaug'] = '8 月';
+$labels['longsep'] = '9 月';
+$labels['longoct'] = '10 月';
+$labels['longnov'] = '11 月';
+$labels['longdec'] = '12 月';
$labels['today'] = '今日';
-
-// toolbar buttons
-$labels['checkmail'] = 'æ–°ç€ã®ç¢ºèª';
-$labels['writenewmessage'] = 'æ–°è¦ãƒ¡ãƒ¼ãƒ«ã®ä½œæˆ';
-$labels['replytomessage'] = '返信';
+$labels['checkmail'] = 'æ–°ç€ã®ç¢ºèª';
+$labels['writenewmessage'] = 'æ–°è¦ãƒ¡ãƒ¼ãƒ«ã®ä½œæˆ';
+$labels['replytomessage'] = '返信';
$labels['replytoallmessage'] = '差出人ã¨ã™ã¹ã¦ã®å®›å…ˆã«è¿”ä¿¡';
-$labels['replyall'] = '全員ã«è¿”ä¿¡';
-$labels['replylist'] = 'ML ã«è¿”ä¿¡';
-$labels['forwardmessage'] = '転é€';
-$labels['deletemessage'] = '削除';
+$labels['replyall'] = '全員ã«è¿”ä¿¡';
+$labels['replylist'] = 'ML ã«è¿”ä¿¡';
+$labels['forwardmessage'] = '転é€';
+$labels['deletemessage'] = '削除';
$labels['movemessagetotrash'] = 'ã”ã¿ç®±ã«ç§»å‹•';
-$labels['printmessage'] = 'å°åˆ·';
-$labels['previousmessage'] = 'å‰ã®ãƒ¡ãƒ¼ãƒ«ã¸';
+$labels['printmessage'] = 'å°åˆ·';
+$labels['previousmessage'] = 'å‰ã®ãƒ¡ãƒ¼ãƒ«ã¸';
$labels['previousmessages'] = 'å‰ã®ä¸€è¦§ã¸';
-$labels['firstmessage'] = '最åˆã®ãƒ¡ãƒ¼ãƒ«ã¸';
-$labels['firstmessages'] = '最åˆã®ä¸€è¦§ã¸';
-$labels['nextmessage'] = '次ã®ãƒ¡ãƒ¼ãƒ«ã¸';
-$labels['nextmessages'] = '次ã®ä¸€è¦§ã¸';
-$labels['lastmessage'] = '最後ã®ãƒ¡ãƒ¼ãƒ«ã¸';
-$labels['lastmessages'] = '最後ã®ä¸€è¦§ã¸';
-$labels['backtolist'] = '一覧ã«æˆ»ã‚‹';
-$labels['viewsource'] = 'ソースã®è¡¨ç¤º';
-$labels['markmessages'] = 'マークを付ã‘ã‚‹';
-$labels['markread'] = '既読ã«ã™ã‚‹';
-$labels['markunread'] = '未読ã«ã™ã‚‹';
-$labels['markflagged'] = 'フラグを付ã‘ã‚‹';
-$labels['markunflagged'] = 'フラグを外ã™';
+$labels['firstmessage'] = '最åˆã®ãƒ¡ãƒ¼ãƒ«ã¸';
+$labels['firstmessages'] = '最åˆã®ä¸€è¦§ã¸';
+$labels['nextmessage'] = '次ã®ãƒ¡ãƒ¼ãƒ«ã¸';
+$labels['nextmessages'] = '次ã®ä¸€è¦§ã¸';
+$labels['lastmessage'] = '最後ã®ãƒ¡ãƒ¼ãƒ«ã¸';
+$labels['lastmessages'] = '最後ã®ä¸€è¦§ã¸';
+$labels['backtolist'] = '一覧ã«æˆ»ã‚‹';
+$labels['viewsource'] = 'ソースã®è¡¨ç¤º';
+$labels['markmessages'] = 'マークを付ã‘ã‚‹';
+$labels['markread'] = '既読ã«ã™ã‚‹';
+$labels['markunread'] = '未読ã«ã™ã‚‹';
+$labels['markflagged'] = 'フラグを付ã‘ã‚‹';
+$labels['markunflagged'] = 'フラグを外ã™';
$labels['messageactions'] = 'ãã®ä»–ã®æ“作...';
-
$labels['select'] = 'é¸æŠž';
$labels['all'] = 'ã™ã¹ã¦';
$labels['none'] = 'ãªã—';
@@ -163,14 +136,12 @@ $labels['unanswered'] = '未返信';
$labels['deleted'] = '削除済ã¿';
$labels['invert'] = 'å転';
$labels['filter'] = 'フィルター';
-
$labels['list'] = '一覧';
$labels['threads'] = 'スレッド';
$labels['expand-all'] = 'ã™ã¹ã¦å±•é–‹';
$labels['expand-unread'] = '未開å°ã®ãƒ¡ãƒ¼ãƒ«ã‚’展開';
$labels['collapse-all'] = 'ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€';
$labels['threaded'] = 'スレッドã«ã™ã‚‹';
-
$labels['autoexpand_threads'] = 'スレッドã®å±•é–‹';
$labels['do_expand'] = 'ã™ã¹ã¦ã®ã‚¹ãƒ¬ãƒƒãƒ‰';
$labels['expand_only_unread'] = '未開å°ã®ãƒ¡ãƒ¼ãƒ«ã®ã¿';
@@ -186,89 +157,69 @@ $labels['listcolumns'] = '列ã®ä¸€è¦§';
$labels['listsorting'] = '整列基準';
$labels['listorder'] = '整列順';
$labels['listmode'] = '一覧表示モード';
-
-$labels['folderactions'] = 'フォルダーã®æ“作...';
+$labels['folderactions'] = 'フォルダã®æ“作...';
$labels['compact'] = 'コンパクト';
$labels['empty'] = '空';
$labels['purge'] = 'ã”ã¿ç®±ã‚’空ã«ã™ã‚‹';
-
$labels['quota'] = 'ディスク使用é‡';
-$labels['unknown'] = 'ä¸æ˜Ž';
-$labels['unlimited'] = '無制é™';
-
+$labels['unknown'] = 'ä¸æ˜Ž';
+$labels['unlimited'] = '無制é™';
$labels['quicksearch'] = '検索';
$labels['resetsearch'] = '検索解除';
-$labels['searchmod'] = '検索æ¡ä»¶';
-$labels['msgtext'] = 'ã™ã¹ã¦ã®ãƒ¡ãƒ¼ãƒ«';
-
+$labels['searchmod'] = '検索æ¡ä»¶';
+$labels['msgtext'] = 'ã™ã¹ã¦ã®ãƒ¡ãƒ¼ãƒ«';
$labels['openinextwin'] = 'æ–°ã—ã„ウィンドウã§é–‹ã';
$labels['emlsave'] = 'eml å½¢å¼ã§ä¿å­˜ã™ã‚‹';
-
-// message compose
-$labels['compose'] = 'メールã®ä½œæˆ';
-$labels['editasnew'] = 'æ–°è¦ã¨ã—ã¦ç·¨é›†';
-$labels['savemessage'] = '下書ãã«ä¿å­˜';
-$labels['sendmessage'] = '今ã™ãé€ä¿¡';
-$labels['addattachment'] = 'ファイルã®æ·»ä»˜';
-$labels['charset'] = '文字エンコード';
-$labels['editortype'] = 'エディターã®ç¨®é¡ž';
-$labels['returnreceipt'] = 'é–‹å°ç¢ºèª';
-$labels['dsn'] = 'é…é€çŠ¶æ³ã®é€šçŸ¥';
-
-$labels['editidents'] = '個人情報ã®ç·¨é›†';
+$labels['compose'] = 'メールã®ä½œæˆ';
+$labels['editasnew'] = 'æ–°è¦ã¨ã—ã¦ç·¨é›†';
+$labels['savemessage'] = '下書ãã«ä¿å­˜';
+$labels['sendmessage'] = '今ã™ãé€ä¿¡';
+$labels['addattachment'] = 'ファイルã®æ·»ä»˜';
+$labels['charset'] = '文字エンコード';
+$labels['editortype'] = 'エディターã®ç¨®é¡ž';
+$labels['returnreceipt'] = 'é–‹å°ç¢ºèª';
+$labels['dsn'] = 'é…é€çŠ¶æ³é€šçŸ¥';
+$labels['editidents'] = '個人情報ã®ç·¨é›†';
$labels['checkspelling'] = 'スペル ãƒã‚§ãƒƒã‚¯';
$labels['resumeediting'] = 'メール作æˆã«æˆ»ã‚‹';
-$labels['revertto'] = 'å…ƒã«æˆ»ã™';
-
+$labels['revertto'] = 'å…ƒã«æˆ»ã™';
$labels['attachments'] = '添付ファイル';
$labels['upload'] = 'アップロード';
-$labels['close'] = 'é–‰ã˜ã‚‹';
+$labels['close'] = 'é–‰ã˜ã‚‹';
$labels['messageoptions'] = 'メッセージã®ã‚ªãƒ—ション...';
-
-$labels['low'] = '低ã„';
-$labels['lowest'] = '最低';
-$labels['normal'] = '通常';
-$labels['high'] = '高ã„';
+$labels['low'] = '低ã„';
+$labels['lowest'] = '最低';
+$labels['normal'] = '通常';
+$labels['high'] = '高ã„';
$labels['highest'] = '最高';
-
$labels['nosubject'] = '(件åãªã—)';
$labels['showimages'] = 'ç”»åƒã®è¡¨ç¤º';
$labels['alwaysshow'] = '$sender ã‹ã‚‰å±Šã„ãŸç”»åƒã¯å¸¸ã«è¡¨ç¤º';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'テキスト';
$labels['savesentmessagein'] = 'é€ä¿¡æ¸ˆã¿ãƒ¡ãƒ¼ãƒ«ã®ä¿å­˜å…ˆ';
$labels['dontsave'] = 'ä¿å­˜ã—ãªã„';
$labels['maxuploadsize'] = '添付å¯èƒ½ãªãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚µã‚¤ã‚ºã¯æœ€å¤§ $size ã§ã™ã€‚';
-
$labels['addcc'] = 'Cc 追加';
$labels['addbcc'] = 'Bcc 追加';
$labels['addreplyto'] = 'Reply-To 追加';
-$labels['addmailreplyto'] = 'Mail-Reply-To 追加';
-$labels['addmailfollowupto'] = 'Mail-Followup-To 追加';
-
-// mdn
+$labels['addfollowupto'] = 'Followup-To 追加';
$labels['mdnrequest'] = 'メールã®å·®å‡ºäººã¯é–‹å°ç¢ºèªã®é€ä»˜ã‚’求ã‚ã¦ã„ã¾ã™ã€‚é–‹å°ç¢ºèªã®ãƒ¡ãƒ¼ãƒ«ã‚’é€ä»˜ã—ã¾ã™ã‹?';
$labels['receiptread'] = 'é–‹å°ç¢ºèª (表示済ã¿)';
$labels['yourmessage'] = 'ã“ã‚Œã¯ã‚ãªãŸãŒé€ä¿¡ã—ãŸãƒ¡ãƒ¼ãƒ«ã«å¯¾ã™ã‚‹é–‹å°ç¢ºèªã§ã™ã€‚';
$labels['receiptnote'] = '注æ„: ã“ã®é–‹å°ç¢ºèªã¯ãƒ¡ãƒ¼ãƒ«ãŒå—信者ã«è¡¨ç¤ºã•ã‚ŒãŸã“ã¨ã®é€šçŸ¥ã§ã™ã€‚å—信者ãŒãƒ¡ãƒ¼ãƒ«ã‚’読んã ã“ã¨ã€å†…容をç†è§£ã—ãŸã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。';
-
-// address boook
$labels['name'] = '表示å';
$labels['firstname'] = 'å (ファースト ãƒãƒ¼ãƒ )';
$labels['surname'] = '姓 (ラスト ãƒãƒ¼ãƒ )';
$labels['email'] = 'メールアドレス';
-
$labels['addcontact'] = '連絡先ã®æ–°è¦è¿½åŠ ';
$labels['editcontact'] = '連絡先ã®ç·¨é›†';
$labels['contacts'] = '連絡先';
$labels['contactproperties'] = '連絡先ã®ãƒ—ロパティ';
-
$labels['edit'] = '編集';
$labels['cancel'] = 'キャンセル';
$labels['save'] = 'ä¿å­˜';
$labels['delete'] = '削除';
-
$labels['newcontact'] = '連絡先ã®æ–°è¦ä½œæˆ';
$labels['deletecontact'] = '連絡先ã®å‰Šé™¤';
$labels['composeto'] = 'ã“ã®é€£çµ¡å…ˆã¸ãƒ¡ãƒ¼ãƒ«ã®é€ä¿¡';
@@ -278,37 +229,28 @@ $labels['export'] = 'エクスãƒãƒ¼ãƒˆ';
$labels['exportvcards'] = 'vCard å½¢å¼ã§ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ';
$labels['newcontactgroup'] = '連絡先グループã®æ–°è¦ä½œæˆ';
$labels['groupactions'] = '連絡先グループã®æ“作...';
-
$labels['previouspage'] = 'å‰ã®ä¸€è¦§ã¸';
$labels['firstpage'] = '最åˆã®ä¸€è¦§ã¸';
$labels['nextpage'] = '次ã®ä¸€è¦§ã¸';
$labels['lastpage'] = '最後ã®ä¸€è¦§ã¸';
-
$labels['group'] = 'グループ';
$labels['groups'] = 'グループ';
$labels['personaladrbook'] = '個人アドレス';
-
$labels['import'] = 'インãƒãƒ¼ãƒˆ';
$labels['importcontacts'] = '連絡先ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ';
$labels['importfromfile'] = 'インãƒãƒ¼ãƒˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«:';
$labels['importreplace'] = 'ç¾åœ¨ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã¨ç½®ãæ›ãˆã‚‹';
$labels['importtext'] = '既存ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã®é€£çµ¡å…ˆã‚’アップロードã§ãã¾ã™ã€‚ç¾åœ¨ã€<a href="http://ja.wikipedia.org/wiki/VCard">vCard</a> å½¢å¼ã‹ã‚‰ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚';
$labels['done'] = '完了';
-
-// settings
$labels['settingsfor'] = '次ã®è¨­å®š:';
-
$labels['preferences'] = '設定';
$labels['userpreferences'] = 'ユーザー設定';
$labels['editpreferences'] = 'ユーザー設定ã®å¤‰æ›´';
-
$labels['identities'] = '個人情報';
$labels['manageidentities'] = 'アカウントã®å€‹äººæƒ…報管ç†';
$labels['newidentity'] = '個人情報ã®æ–°è¦ä½œæˆ';
-
$labels['newitem'] = 'æ–°ã—ã„é …ç›®';
$labels['edititem'] = 'é …ç›®ã®ç·¨é›†';
-
$labels['preferhtml'] = 'HTML を表示ã™ã‚‹';
$labels['defaultcharset'] = '標準ã®æ–‡å­—セット';
$labels['htmlmessage'] = 'HTML メール';
@@ -320,19 +262,19 @@ $labels['timezone'] = 'タイムゾーン';
$labels['pagesize'] = '1 ページã®è¡¨ç¤ºä»¶æ•°';
$labels['signature'] = 'ç½²å';
$labels['dstactive'] = 'サマータイムをé©ç”¨ã™ã‚‹';
-$labels['htmleditor'] = 'æ–°è¦ãƒ¡ãƒ¼ãƒ«ã§ã¯ HTML を標準ã«ã™ã‚‹';
-$labels['htmlonreply'] = 'メールã®è¿”信時ã¯å¸¸ã« HTML を使用ã™ã‚‹';
+$labels['htmleditor'] = 'æ–°è¦ãƒ¡ãƒ¼ãƒ«ã¯ HTML を標準ã«ã™ã‚‹';
+$labels['htmlonreply'] = '返信メールã§ã¯å¸¸ã« HTML を使用';
$labels['htmlsignature'] = 'ç½²åã« HTML タグを使用ã™ã‚‹';
$labels['previewpane'] = 'プレビュー ペインを表示ã™ã‚‹';
$labels['skin'] = 'スキン';
$labels['logoutclear'] = 'ログアウト時ã«ã”ã¿ç®±ã‚’空ã«ã™ã‚‹';
-$labels['logoutcompact'] = 'ログアウト時ã«ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã®ã‚³ãƒ³ãƒ‘クト化を実行ã™ã‚‹';
+$labels['logoutcompact'] = 'ログアウト時ã«ãƒ•ã‚©ãƒ«ãƒ€ã®ã‚³ãƒ³ãƒ‘クト化を実行ã™ã‚‹';
$labels['uisettings'] = 'ユーザー インターフェース';
$labels['serversettings'] = 'サーãƒãƒ¼ã®è¨­å®š';
$labels['mailboxview'] = 'å—ä¿¡ç®±';
-$labels['mdnrequests'] = 'é–‹å°ç¢ºèªã®é€ä¿¡è¦æ±‚時';
-$labels['askuser'] = 'é–‹å°ç¢ºèªãƒ¡ãƒ¼ãƒ«ã®é€ä¿¡ã‚’確èªã™ã‚‹';
-$labels['autosend'] = 'é–‹å°ç¢ºèªãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã™ã‚‹';
+$labels['mdnrequests'] = '差出人ã¸ã®é€šçŸ¥';
+$labels['askuser'] = 'ユーザーã«ç¢ºèª';
+$labels['autosend'] = '自動的ã«é€ä¿¡';
$labels['autosendknown'] = '差出人ãŒé€£çµ¡å…ˆã«ç™»éŒ²ã•ã‚Œã¦ã„ã‚Œã°é–‹å°ç¢ºèªã‚’é€ä¿¡ã—ã€ãれ以外ã¯å•ã„åˆã‚ã›ã‚‹';
$labels['autosendknownignore'] = '差出人ãŒé€£çµ¡å…ˆã«ç™»éŒ²ã•ã‚Œã¦ã„ã‚Œã°é–‹å°ç¢ºèªã‚’é€ä¿¡ã—ã€ãれ以外ã¯ç„¡è¦–ã™ã‚‹';
$labels['ignore'] = '無視';
@@ -358,7 +300,7 @@ $labels['2047folding'] = 'RFC 2047 準拠 (ä»–ã®ãƒ¡ãƒ¼ãƒ©ãƒ¼)';
$labels['force7bit'] = 'マルãƒãƒã‚¤ãƒˆæ–‡å­—列を MIME エンコードã™ã‚‹';
$labels['advancedoptions'] = '高度ãªè¨­å®š';
$labels['focusonnewmessage'] = 'æ–°ç€ãƒ¡ãƒ¼ãƒ«ãŒå±Šã„ãŸã‚‰ãƒ–ラウザーをアクティブã«ã™ã‚‹';
-$labels['checkallfolders'] = 'ã™ã¹ã¦ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã§æ–°ç€ãƒ¡ãƒ¼ãƒ«ã‚’表示ã™ã‚‹';
+$labels['checkallfolders'] = 'ã™ã¹ã¦ã®ãƒ•ã‚©ãƒ«ãƒ€ã§æ–°ç€ãƒ¡ãƒ¼ãƒ«ã‚’表示ã™ã‚‹';
$labels['displaynext'] = 'メールã®å‰Šé™¤ã‚„移動後ã«æ¬¡ã®ãƒ¡ãƒ¼ãƒ«ã‚’表示ã™ã‚‹';
$labels['mainoptions'] = '基本設定';
$labels['section'] = '設定項目';
@@ -370,7 +312,7 @@ $labels['whenreplying'] = '返信時ã®æœ¬æ–‡';
$labels['replytopposting'] = 'å…ƒã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å¼•ç”¨éƒ¨ã®å‰ã«æœ¬æ–‡ã‚’作æˆã™ã‚‹';
$labels['replybottomposting'] = 'å…ƒã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å¼•ç”¨éƒ¨ã®å¾Œã«æœ¬æ–‡ã‚’作æˆã™ã‚‹';
$labels['replyremovesignature'] = '返信時ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‹ã‚‰ã‚ªãƒªã‚¸ãƒŠãƒ«ã®ç½²åを除去ã™ã‚‹';
-$labels['autoaddsignature'] = '自動的ã«ç½²åを付加ã™ã‚‹';
+$labels['autoaddsignature'] = 'ç½²åを自動的ã«ä»˜åŠ ã™ã‚‹';
$labels['newmessageonly'] = 'æ–°è¦ä½œæˆæ™‚ã®ã¿';
$labels['replyandforwardonly'] = '返信・転é€æ™‚ã®ã¿';
$labels['replysignaturepos'] = '返信・転é€æ™‚ã«ç½²åを挿入ã™ã‚‹ä½ç½®';
@@ -379,34 +321,32 @@ $labels['abovequote'] = '引用部ã®å‰';
$labels['insertsignature'] = 'ç½²åã®æŒ¿å…¥';
$labels['previewpanemarkread'] = 'é–‹å°æ¸ˆã¿ã«ã™ã‚‹';
$labels['afternseconds'] = '$n 秒後';
-$labels['reqmdn'] = '常ã«é–‹å°ç¢ºèªé€šçŸ¥ã‚’è¦æ±‚ã™ã‚‹';
-$labels['reqdsn'] = '常ã«é…é€çŠ¶æ³ã®é€šçŸ¥ã‚’è¦æ±‚ã™ã‚‹';
-$labels['replysamefolder'] = '返信ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã‚’返信元メールã¨åŒã˜ãƒ•ã‚©ãƒ«ãƒ€ã«ä¿å­˜';
-
-$labels['folder'] = 'フォルダー';
-$labels['folders'] = 'フォルダー一覧';
-$labels['foldername'] = 'フォルダーå';
+$labels['reqmdn'] = '常ã«é–‹å°ç¢ºèªã‚’è¦æ±‚';
+$labels['reqdsn'] = '常ã«é…é€çŠ¶æ³é€šçŸ¥ã‚’è¦æ±‚';
+$labels['replysamefolder'] = '返信ã•ã‚Œã¦ããŸãƒ¡ãƒ¼ãƒ«ã‚’返信元メールã¨åŒã˜ãƒ•ã‚©ãƒ«ãƒ€ã«ä¿å­˜';
+$labels['folder'] = 'フォルダ';
+$labels['folders'] = 'フォルダ一覧';
+$labels['foldername'] = 'フォルダå';
$labels['subscribed'] = '購読済';
$labels['messagecount'] = 'メール';
-$labels['create'] = '作æˆ';
-$labels['createfolder'] = 'フォルダーã®æ–°è¦ä½œæˆ';
-$labels['rename'] = 'åå‰ã®å¤‰æ›´';
-$labels['renamefolder'] = 'フォルダーåã®å¤‰æ›´';
-$labels['deletefolder'] = 'フォルダーã®å‰Šé™¤';
-$labels['managefolders'] = 'フォルダーã®ç®¡ç†';
-$labels['specialfolders'] = '特殊ãªãƒ•ã‚©ãƒ«ãƒ€ãƒ¼';
-
+$labels['create'] = '作æˆ';
+$labels['createfolder'] = 'フォルダã®æ–°è¦ä½œæˆ';
+$labels['managefolders'] = 'フォルダã®ç®¡ç†';
+$labels['specialfolders'] = '特殊ãªãƒ•ã‚©ãƒ«ãƒ€';
+$labels['properties'] = 'プロパティ';
+$labels['folderproperties'] = 'フォルダã®ãƒ—ロパティ';
+$labels['parentfolder'] = '親フォルダ';
+$labels['location'] = 'フォルダパス';
+$labels['info'] = 'フォルダ情報';
+$labels['getfoldersize'] = 'クリックã§ãƒ•ã‚©ãƒ«ãƒ€ã‚µã‚¤ã‚ºã‚’表示';
+$labels['changesubscription'] = 'クリックã§åŒæœŸè¨­å®šã‚’変更';
$labels['sortby'] = '並ã³æ›¿ãˆã®åŸºæº–';
$labels['sortasc'] = '昇順ã§ä¸¦ã³æ›¿ãˆ';
$labels['sortdesc'] = 'é™é †ã§ä¸¦ã³æ›¿ãˆ';
-
-// units
$labels['B'] = 'ãƒã‚¤ãƒˆ';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = '英語';
$labels['westerneuropean'] = '西ヨーロッパ言語';
diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc
index b1b88b0c4..3c3e7bdad 100644
--- a/program/localization/ja_JP/messages.inc
+++ b/program/localization/ja_JP/messages.inc
@@ -26,7 +26,7 @@ $messages['cookiesdisabled'] = 'ブラウザ㧠Cookie ãŒç„¡åŠ¹ã«è¨­å®šã•ã‚Œã
$messages['sessionerror'] = 'セッションãŒæ­£ã—ããªã„ã‹æœŸé™åˆ‡ã‚Œã§ã™ã€‚';
$messages['imaperror'] = 'IMAP サーãƒãƒ¼ã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸã€‚';
$messages['servererror'] = 'サーãƒãƒ¼ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚';
-$messages['servererrormsg'] = 'サーãƒãƒ¼ エラー: $msg';
+$messages['servererrormsg'] = 'サーãƒãƒ¼ã‚¨ãƒ©ãƒ¼: $msg';
$messages['invalidrequest'] = 'ä¸æ­£ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ã™ã€‚データã¯ä¿å­˜ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚';
$messages['nomessagesfound'] = 'メールã¯ã‚ã‚Šã¾ã›ã‚“。';
$messages['loggedout'] = 'ログアウトã—ã¾ã—ãŸã€‚';
@@ -53,15 +53,15 @@ $messages['errorsaving'] = 'ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚';
$messages['errormoving'] = 'メールを移動ã§ãã¾ã›ã‚“。';
$messages['errorcopying'] = 'メールをコピーã§ãã¾ã›ã‚“。';
$messages['errordeleting'] = 'メールを削除ã§ãã¾ã›ã‚“。';
-$messages['errormarking'] = 'メールã®ãƒžãƒ¼ã‚¯ã‚’設定ã§ãã¾ã›ã‚“。';
+$messages['errormarking'] = 'メールã«ãƒžãƒ¼ã‚¯ã‚’付ã‘られã¾ã›ã‚“。';
$messages['deletecontactconfirm'] = 'é¸æŠžã—ãŸé€£çµ¡å…ˆã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
$messages['deletemessagesconfirm'] = 'é¸æŠžã—ãŸãƒ¡ãƒ¼ãƒ«ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
-$messages['deletefolderconfirm'] = 'ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
-$messages['purgefolderconfirm'] = 'ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã®å…¨ãƒ¡ãƒ¼ãƒ«ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
-$messages['foldercreating'] = 'フォルダーを作æˆã—ã¦ã„ã¾ã™...';
-$messages['folderdeleting'] = 'フォルダーを削除ã—ã¦ã„ã¾ã™...';
-$messages['folderrenaming'] = 'フォルダーåを変更ã—ã¦ã„ã¾ã™...';
-$messages['foldermoving'] = 'フォルダーを移動ã—ã¦ã„ã¾ã™...';
+$messages['deletefolderconfirm'] = 'ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
+$messages['purgefolderconfirm'] = 'ã“ã®ãƒ•ã‚©ãƒ«ãƒ€ã®å…¨ãƒ¡ãƒ¼ãƒ«ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
+$messages['folderdeleting'] = 'フォルダを削除ã—ã¦ã„ã¾ã™...';
+$messages['foldermoving'] = 'フォルダを移動ã—ã¦ã„ã¾ã™...';
+$messages['foldersubscribing'] = 'フォルダã®åŒæœŸã‚’登録ã—ã¦ã„ã¾ã™...';
+$messages['folderunsubscribing'] = 'フォルダã®åŒæœŸã‚’解除ã—ã¦ã„ã¾ã™...';
$messages['formincomplete'] = 'ã™ã¹ã¦ã®ãƒ•ã‚©ãƒ¼ãƒ ã®é …目を入力ã—ã¦ã„ã¾ã›ã‚“。';
$messages['noemailwarning'] = '有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„。';
$messages['nonamewarning'] = 'åå‰ã‚’入力ã—ã¦ãã ã•ã„。';
@@ -80,7 +80,10 @@ $messages['searchnomatch'] = '一致ã™ã‚‹ãƒ¡ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“。';
$messages['searching'] = '検索ã—ã¦ã„ã¾ã™...';
$messages['checking'] = '確èªã—ã¦ã„ã¾ã™...';
$messages['nospellerrors'] = 'スペル ミスã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚';
-$messages['folderdeleted'] = 'フォルダーを削除ã—ã¾ã—ãŸã€‚';
+$messages['folderdeleted'] = 'フォルダを削除ã—ã¾ã—ãŸã€‚';
+$messages['foldersubscribed'] = 'フォルダã®åŒæœŸãŒè¨­å®šã•ã‚Œã¾ã—ãŸã€‚';
+$messages['folderunsubscribed'] = 'フォルダã®åŒæœŸãŒè§£é™¤ã•ã‚Œã¾ã—ãŸã€‚';
+$messages['folderpurged'] = 'フォルダを削除ã—ã¾ã—ãŸã€‚';
$messages['deletedsuccessfully'] = '削除ã—ã¾ã—ãŸã€‚';
$messages['converting'] = 'メールã‹ã‚‰æ›¸å¼ã‚’削除ã—ã¦ã„ã¾ã™...';
$messages['messageopenerror'] = 'サーãƒãƒ¼ã‹ã‚‰ãƒ¡ãƒ¼ãƒ«ã‚’å–å¾—ã§ãã¾ã›ã‚“。';
@@ -93,12 +96,11 @@ $messages['errorsavingcontact'] = '連絡先ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ä¿å­˜ã§ãã¾ã›
$messages['movingmessage'] = 'メールを移動ã—ã¦ã„ã¾ã™...';
$messages['copyingmessage'] = 'メールをコピーã—ã¦ã„ã¾ã™...';
$messages['deletingmessage'] = 'メールを削除ã—ã¦ã„ã¾ã™...';
-$messages['markingmessage'] = 'メールã®ãƒžãƒ¼ã‚¯ã‚’設定ã—ã¦ã„ã¾ã™...';
+$messages['markingmessage'] = 'メールã«ãƒžãƒ¼ã‚¯ã‚’付ã‘ã¦ã„ã¾ã™...';
$messages['receiptsent'] = 'é–‹å°ç¢ºèªã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚';
$messages['errorsendingreceipt'] = 'é–‹å°ç¢ºèªã‚’é€ä¿¡ã§ãã¾ã›ã‚“。';
$messages['nodeletelastidentity'] = '削除ã§ãã¾ã›ã‚“。少ãªãã¨ã‚‚ 1 ã¤ã®å€‹äººæƒ…å ±ãŒå¿…è¦ã§ã™ã€‚';
-$messages['addsubfolderhint'] = 'ç¾åœ¨é¸æŠžã—ã¦ã„るフォルダーã®ã‚µãƒ– フォルダーã¨ã—ã¦ä½œæˆã•ã‚Œã¾ã™ã€‚';
-$messages['forbiddencharacter'] = 'フォルダーåã«åˆ©ç”¨ã§ããªã„文字ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚';
+$messages['forbiddencharacter'] = 'フォルダåã«åˆ©ç”¨ã§ããªã„文字ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚';
$messages['selectimportfile'] = 'アップロードã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„。';
$messages['addresswriterror'] = 'é¸æŠžã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。';
$messages['contactaddedtogroup'] = 'グループã«é€£çµ¡å…ˆã‚’追加ã—ã¾ã—ãŸã€‚';
@@ -110,26 +112,30 @@ $messages['opnotpermitted'] = '許å¯ã•ã‚Œã¦ã„ãªã„æ“作ã§ã™ã€‚';
$messages['nofromaddress'] = 'é¸æŠžä¸­ã®å€‹äººæƒ…å ±ã«ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“。';
$messages['editorwarning'] = 'テキスト エディターã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã¨ã™ã¹ã¦ã®æ›¸å¼ãŒå¤±ã‚ã‚Œã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹?';
$messages['httpreceivedencrypterror'] = '致命的ãªè¨­å®šã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚<b>メッセージã¯é€ä¿¡ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚</b>システム管ç†è€…ã«è‡³æ€¥é€£çµ¡ã—ã¦ãã ã•ã„。';
-$messages['smtpconnerror'] = 'SMTP Error ($code): サーãƒãƒ¼ã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸã€‚';
-$messages['smtpautherror'] = 'SMTP Error ($code): èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚';
+$messages['smtpconnerror'] = 'SMTP Error ($code): サーãƒãƒ¼ã¸ã®æŽ¥ç¶šã«å¤±æ•—ã—ã¾ã—ãŸ';
+$messages['smtpautherror'] = 'SMTP Error ($code): èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸ';
$messages['smtpfromerror'] = 'SMTP Error ($code): 差出人 "$from" を設定ã§ãã¾ã›ã‚“ ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): 宛先 "$to" を追加ã§ãã¾ã›ã‚“ ($msg)';
-$messages['smtprecipientserror'] = 'SMTP Error: 宛先ã®ä¸€è¦§ã‚’解æžã§ãã¾ã›ã‚“。';
-$messages['smtpdsnerror'] = 'SMTP エラー: é…é€çŠ¶æ³é€šçŸ¥ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。';
-$messages['smtperror'] = 'SMTP エラー: $msg';
+$messages['smtprecipientserror'] = 'SMTP Error: 宛先ã®ãƒªã‚¹ãƒˆã‚’解æžã§ãã¾ã›ã‚“';
+$messages['smtpdsnerror'] = 'SMTP Error: é…é€çŠ¶æ³é€šçŸ¥ (DSN) ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“';
+$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'メールアドレスãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: $email';
$messages['toomanyrecipients'] = '宛先ãŒå¤šã™ãŽã¾ã™ã€‚$max 件以内ã«ã—ã¦ãã ã•ã„。';
$messages['maxgroupmembersreached'] = 'グループã®ãƒ¡ãƒ³ãƒãƒ¼ãŒå¤šã™ãŽã¾ã™ã€‚$max 件以内ã«ã—ã¦ãã ã•ã„。';
$messages['internalerror'] = '内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。';
-$messages['contactdelerror'] = '連絡先を削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚';
+$messages['contactdelerror'] = '連絡先を削除ã§ãã¾ã›ã‚“。';
$messages['contactdeleted'] = '連絡先を削除ã—ã¾ã—ãŸã€‚';
$messages['groupdeleted'] = 'グループを削除ã—ã¾ã—ãŸã€‚';
-$messages['grouprenamed'] = 'グループåを変更ã—ã¾ã—ãŸï¼Ž';
+$messages['grouprenamed'] = 'グループåを変更ã—ã¾ã—ãŸã€‚';
$messages['groupcreated'] = 'グループを作æˆã—ã¾ã—ãŸã€‚';
$messages['messagedeleted'] = 'メールを削除ã—ã¾ã—ãŸã€‚';
$messages['messagemoved'] = 'メールを移動ã—ã¾ã—ãŸã€‚';
$messages['messagecopied'] = 'メールをコピーã—ã¾ã—ãŸã€‚';
-$messages['messagemarked'] = 'メールã®ãƒžãƒ¼ã‚¯ã‚’設定ã—ã¾ã—ãŸã€‚';
+$messages['messagemarked'] = 'メールã«ãƒžãƒ¼ã‚¯ã‚’付ã‘ã¾ã—ãŸã€‚';
$messages['autocompletechars'] = '自動補完ã«ã¯å°‘ãªãã¨ã‚‚ $min 文字入力ã—ã¦ãã ã•ã„。';
+$messages['namecannotbeempty'] = 'åå‰ãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“。';
+$messages['nametoolong'] = 'åå‰ãŒé•·ã™ãŽã¾ã™ã€‚';
+$messages['folderupdated'] = 'フォルダを更新ã—ã¾ã—ãŸã€‚';
+$messages['foldercreated'] = 'フォルダを作æˆã—ã¾ã—ãŸã€‚';
?>
diff --git a/program/localization/ka_GE/labels.inc b/program/localization/ka_GE/labels.inc
index 8234318c9..7a56fc41b 100755
--- a/program/localization/ka_GE/labels.inc
+++ b/program/localization/ka_GE/labels.inc
@@ -274,9 +274,6 @@ $labels['subscribed'] = 'გáƒáƒ›áƒáƒ¬áƒ”რილიáƒ';
$labels['messagecount'] = 'შეტყáƒáƒ‘ინებები';
$labels['create'] = 'შექმნáƒ';
$labels['createfolder'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შექმნáƒ';
-$labels['rename'] = 'სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ';
-$labels['renamefolder'] = 'სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვრსáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ისთვის';
-$labels['deletefolder'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის წáƒáƒ¨áƒšáƒ';
$labels['managefolders'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების მáƒáƒ áƒ—ვáƒ';
$labels['specialfolders'] = 'სპეციáƒáƒšáƒ£áƒ áƒ˜ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე';
$labels['sortby'] = 'დáƒáƒšáƒáƒ’ებáƒ';
diff --git a/program/localization/ka_GE/messages.inc b/program/localization/ka_GE/messages.inc
index 33767dded..6e526b768 100755
--- a/program/localization/ka_GE/messages.inc
+++ b/program/localization/ka_GE/messages.inc
@@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ
$messages['deletemessagesconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ შეტყáƒáƒ‘ინებების წáƒáƒ¨áƒšáƒ?';
$messages['deletefolderconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ áƒáƒ› სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის წáƒáƒ¨áƒšáƒ?';
$messages['purgefolderconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ ყველრშეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ áƒáƒ¦áƒœáƒ˜áƒ¨áƒœáƒ£áƒš სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში?';
-$messages['foldercreating'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შექმნáƒ...';
$messages['folderdeleting'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის წáƒáƒ¨áƒšáƒ...';
-$messages['folderrenaming'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის სáƒáƒ®áƒ”ლის შეცვლáƒ...';
$messages['foldermoving'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის გáƒáƒ“áƒáƒ¢áƒáƒœáƒ...';
$messages['formincomplete'] = 'ყველრველი áƒáƒ  áƒáƒ áƒ˜áƒ¡ შევსებული';
$messages['noemailwarning'] = 'მიუთითეთ სწáƒáƒ áƒ˜ ელ–ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი';
@@ -88,7 +86,6 @@ $messages['movingmessage'] = 'შეტყáƒáƒ‘ინების გáƒáƒ“áƒá
$messages['receiptsent'] = 'წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით გáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ';
$messages['errorsendingreceipt'] = 'áƒáƒ  გáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ';
$messages['nodeletelastidentity'] = 'წáƒáƒ¨áƒšáƒ შეუძლებელიáƒ, ის თქვენთვის ერთáƒáƒ“ერთიáƒ';
-$messages['addsubfolderhint'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე შეიქმნებრრáƒáƒ’áƒáƒ áƒª ქვესáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒš სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში';
$messages['forbiddencharacter'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის სáƒáƒ®áƒ”ლი შეიცáƒáƒ•áƒ¡ áƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒš სიმბáƒáƒšáƒáƒ”ბს';
$messages['selectimportfile'] = 'გთხáƒáƒ•áƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒáƒ— ფáƒáƒ˜áƒšáƒ˜ áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ“';
$messages['addresswriterror'] = 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒš მისáƒáƒ›áƒáƒ áƒ—ებში ჩáƒáƒ¬áƒ”რრშეუძლებელიáƒ';
diff --git a/program/localization/kh_KH/labels.inc b/program/localization/kh_KH/labels.inc
index 7782b285e..75799a292 100644
--- a/program/localization/kh_KH/labels.inc
+++ b/program/localization/kh_KH/labels.inc
@@ -312,9 +312,6 @@ $labels['subscribed'] = 'ភ្ជាប់ជាប្រចាំ';
$labels['messagecount'] = 'សារ';
$labels['create'] = 'បង្កើáž';
$labels['createfolder'] = 'បង្កើហFolder ážáŸ’មី';
-$labels['rename'] = 'ប្ážáž¼ážˆáŸ’មោះ';
-$labels['renamefolder'] = 'ប្ážáž¼ážˆáŸ’មោះážáž';
-$labels['deletefolder'] = 'លុបážáž';
$labels['managefolders'] = 'រៀបចំážáž';
$labels['specialfolders'] = 'ážážáž–ិសáŸážŸ';
$labels['sortby'] = 'ážáŸ†ážšáŸ€áž”ážáž¶áž˜';
diff --git a/program/localization/kh_KH/messages.inc b/program/localization/kh_KH/messages.inc
index db148d374..9d67d9dc0 100644
--- a/program/localization/kh_KH/messages.inc
+++ b/program/localization/kh_KH/messages.inc
@@ -54,9 +54,7 @@ $messages['deletecontactconfirm'] = 'ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់á
$messages['deletemessagesconfirm'] = 'ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់លុបសារនáŸáŸ‡áž˜áŸ‚áž“áž‘áŸ?';
$messages['deletefolderconfirm'] = 'ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់លុបážážáž“áŸáŸ‡áž˜áŸ‚áž“áž‘áŸ?';
$messages['purgefolderconfirm'] = 'ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់លុបសារទាំងអស់មែនទáŸ?';
-$messages['foldercreating'] = 'កំពុងបង្កើážážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
$messages['folderdeleting'] = 'កំពុងលុបážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
-$messages['folderrenaming'] = 'កំពុងប្ážáž¼ážšážˆáŸ’មោះážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
$messages['foldermoving'] = 'កំពុងផ្ážáŸážšážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
$messages['formincomplete'] = 'ទំរង់នáŸáŸ‡áž˜áž·áž“ទាន់ពáŸáž‰áž›áŸáž‰áž“ៅឡើយទáŸ';
$messages['noemailwarning'] = 'សូមវាយបញ្ចូលអ៊ីមែលរបស់អ្នក';
@@ -91,7 +89,6 @@ $messages['copyingmessage'] = 'កំពុងចំលងសារ...';
$messages['receiptsent'] = 'ការបញ្ជូន read receipt បានសំរáŸáž…';
$messages['errorsendingreceipt'] = 'មិនអាចបញ្ជុន receipt áž‘áŸ';
$messages['nodeletelastidentity'] = 'អ្នកមិនអាចលុបអážáŸ’ážážŸáž‰áŸ’ញាណនáŸáŸ‡áž‘០ព្រោះវានៅសល់ចុងក្រោយគáŸ';
-$messages['addsubfolderhint'] = 'Folder áž“áŸáŸ‡áž“ឹងបង្កើážáž‡áž¶ Subfolder នៃ Folder ដែលកំពុងស្ážáž·ážáž“ៅនáŸáŸ‡';
$messages['forbiddencharacter'] = 'ឈ្មោះ Folder áž“áŸáŸ‡áž˜áž¶áž“អក្សរដែលážáŸ’រូវហាមឃាážáŸ‹';
$messages['selectimportfile'] = 'សូមជ្រើសរើសឯកសារដើម្បីផ្ញើ';
$messages['addresswriterror'] = 'សៀវភៅអាសយដ្ឋាននោះមិនអាចសរសáŸážšáž…ូលបានទáŸ';
diff --git a/program/localization/ko_KR/labels.inc b/program/localization/ko_KR/labels.inc
index 2d9799824..15bb8e7a3 100644
--- a/program/localization/ko_KR/labels.inc
+++ b/program/localization/ko_KR/labels.inc
@@ -250,9 +250,6 @@ $labels['subscribed'] = '가입ë¨';
$labels['messagecount'] = '메시지';
$labels['create'] = '만들기';
$labels['createfolder'] = '새 í´ë” 만들기';
-$labels['rename'] = 'ì´ë¦„ 바꾸기';
-$labels['renamefolder'] = 'í´ë” ì´ë¦„ 바꾸기';
-$labels['deletefolder'] = 'í´ë” 지우기';
$labels['managefolders'] = 'í´ë” 관리';
$labels['specialfolders'] = '특수 í´ë”';
$labels['sortby'] = 'ì •ë ¬';
diff --git a/program/localization/ko_KR/messages.inc b/program/localization/ko_KR/messages.inc
index ea2b45143..596e2b162 100644
--- a/program/localization/ko_KR/messages.inc
+++ b/program/localization/ko_KR/messages.inc
@@ -49,9 +49,7 @@ $messages['deletecontactconfirm'] = 'ì •ë§ ì„ íƒí•œ ì—°ë½ì²˜ë“¤ì„ 삭제하ì
$messages['deletemessagesconfirm'] = 'ì •ë§ ì„ íƒí•œ ë©”ì¼ë“¤ì„ 삭제하시겠습니까?';
$messages['deletefolderconfirm'] = 'ì •ë§ ì´ í´ë”를 삭제하시겠습니까?';
$messages['purgefolderconfirm'] = 'ì •ë§ ì´ í´ë”ì˜ ëª¨ë“  ë©”ì¼ì„ 삭제하시겠습니까?';
-$messages['foldercreating'] = 'í´ë” 만드는 중...';
$messages['folderdeleting'] = 'í´ë” 지우는 중...';
-$messages['folderrenaming'] = 'í´ë” ì´ë¦„ 바꾸는 중...';
$messages['foldermoving'] = 'í´ë” 옮기는 중...';
$messages['formincomplete'] = 'ì–‘ì‹ì„ 완전히 채우지 않았습니다';
$messages['noemailwarning'] = '유효한 ì´ë©”ì¼ ì£¼ì†Œë¥¼ 넣어주십시오';
@@ -84,7 +82,6 @@ $messages['movingmessage'] = '메시지 ì´ë™ 중...';
$messages['receiptsent'] = 'ë©”ì¼ ì½ìŒ 확ì¸ì„ 보냈습니다';
$messages['errorsendingreceipt'] = 'ì½ìŒ 확ì¸ì„ 보낼 수 없습니다';
$messages['nodeletelastidentity'] = 'ì´ ì •ë³´ëŠ” 마지막 ë‚¨ì€ ê²ƒì´ë¯€ë¡œ 지울 수 없습니다';
-$messages['addsubfolderhint'] = 'ì´ í´ë”는 현재 ì„ íƒëœ í´ë”ì˜ ì„œë¸Œ í´ë”ë¡œ 만들어질 것입니다';
$messages['forbiddencharacter'] = 'í´ë” ì´ë¦„ì— ì“¸ 수 없는 문ìžê°€ í¬í•¨ë˜ì–´ 있습니다';
$messages['selectimportfile'] = '업로드할 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”';
$messages['addresswriterror'] = 'ì„ íƒí•œ 주소ë¡ì€ 쓸 수 없습니다';
diff --git a/program/localization/ku/labels.inc b/program/localization/ku/labels.inc
index c1b706862..699e37419 100644
--- a/program/localization/ku/labels.inc
+++ b/program/localization/ku/labels.inc
@@ -177,9 +177,6 @@ $labels['subscribed'] = 'Ni ÅŸanenav';
$labels['messagecount'] = 'Peyam';
$labels['create'] = 'Biafirîne';
$labels['createfolder'] = 'Peldankeke nû biafirîne';
-$labels['rename'] = 'Nav biguherîne';
-$labels['renamefolder'] = 'Navê peldankê biguherîne';
-$labels['deletefolder'] = 'Peldankê jê bibe';
$labels['managefolders'] = 'Rêveberiya peldankan';
$labels['sortby'] = 'Şêweyê rêzkirinê';
$labels['sortasc'] = 'Wekî zêde dibe';
diff --git a/program/localization/ku/messages.inc b/program/localization/ku/messages.inc
index 37029a9e2..d5d2e018a 100644
--- a/program/localization/ku/messages.inc
+++ b/program/localization/ku/messages.inc
@@ -74,6 +74,5 @@ $messages['movingmessage'] = 'Ciyê peyamê tê guhertin...';
$messages['receiptsent'] = 'Rapora şandina serkeftî';
$messages['errorsendingreceipt'] = 'Rapor nehat ÅŸandin';
$messages['nodeletelastidentity'] = 'Nikarî vê nasnameyê jê bibî. Ew ya dawî ye.';
-$messages['addsubfolderhint'] = 'Ev peldank wê wekî binepeldanka ya heyî bê afirandin';
?>
diff --git a/program/localization/lt_LT/labels.inc b/program/localization/lt_LT/labels.inc
index a72a125b3..392d7b208 100644
--- a/program/localization/lt_LT/labels.inc
+++ b/program/localization/lt_LT/labels.inc
@@ -39,11 +39,15 @@ $labels['to'] = 'GavÄ—jas';
$labels['cc'] = 'Kopija';
$labels['bcc'] = 'Slaptoji kopija';
$labels['replyto'] = 'AtsakymÄ… gaus';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Dydis';
$labels['priority'] = 'Prioritetas';
$labels['organization'] = 'Organizacija';
+$labels['readstatus'] = 'Neskaitytas';
$labels['reply-to'] = 'AtsakymÄ… gaus';
+$labels['mail-reply-to'] = 'Mail-Reply-To';
+$labels['mail-followup-to'] = 'Mail-Followup-To';
$labels['mailboxlist'] = 'Aplankai';
$labels['messagesfromto'] = 'Laiškai nuo $from iki $to iš $count';
$labels['threadsfromto'] = 'Gijos nuo $from iki $to iš $count';
@@ -97,7 +101,9 @@ $labels['today'] = 'Å iandien';
$labels['checkmail'] = 'Tikrinti, ar yra naujų laiškų';
$labels['writenewmessage'] = 'Rašyti naują laišką';
$labels['replytomessage'] = 'Atsakyti siuntÄ—jui';
-$labels['replytoallmessage'] = 'Atsakyti visiems';
+$labels['replytoallmessage'] = 'Atsakyti el. pašto grupei arba laiško siuntėjui ir visiems jo gavėjams';
+$labels['replyall'] = 'Atsakyti visiems';
+$labels['replylist'] = 'Atsakyti el. pašto grupei';
$labels['forwardmessage'] = 'Persiųsti laišką';
$labels['deletemessage'] = 'Pašalinti laišką';
$labels['movemessagetotrash'] = 'Perkelti laišką į šiukšlinę';
@@ -169,7 +175,8 @@ $labels['sendmessage'] = 'Išsiųsti laiską';
$labels['addattachment'] = 'PridÄ—ti failÄ…';
$labels['charset'] = 'KoduotÄ—';
$labels['editortype'] = 'Laiško tipas';
-$labels['returnreceipt'] = 'Prašyti gavimo pažymos';
+$labels['returnreceipt'] = 'Prašyti pristatymo pažymos';
+$labels['dsn'] = 'Laiško pristatymo pažyma';
$labels['editidents'] = 'Tvarkyti tapatybes';
$labels['checkspelling'] = 'Tikrinti rašybą';
$labels['resumeediting'] = 'Tęsti redagavimą';
@@ -194,6 +201,7 @@ $labels['maxuploadsize'] = 'Maksimalus leistinas failo dydis yra $size';
$labels['addcc'] = 'PridÄ—ti Cc';
$labels['addbcc'] = 'PridÄ—ti Bcc';
$labels['addreplyto'] = 'PridÄ—ti Reply-To';
+$labels['addfollowupto'] = 'PridÄ—ti Followup-To';
$labels['mdnrequest'] = 'Å io laiÅ¡ko siuntÄ—jas papraÅ¡Ä— patvirtinti, kad jÅ«s jį perskaitÄ—te. Ar iÅ¡siųsti tai patvirtinanÄiÄ… pažymÄ…?';
$labels['receiptread'] = 'Patvirtinimas (laiškas perskaitytas)';
$labels['yourmessage'] = 'Tai – pažyma, patvirtinanti, jog buvo perskaitytas Jūsų laiškas';
@@ -205,6 +213,7 @@ $labels['email'] = 'El. paštas';
$labels['addcontact'] = 'PridÄ—ti adresatÄ…';
$labels['editcontact'] = 'Taisyti adresatÄ…';
$labels['contacts'] = 'Adresatai';
+$labels['contactproperties'] = 'Adresato savybÄ—s';
$labels['edit'] = 'Redaguoti';
$labels['cancel'] = 'Atsisakyti';
$labels['save'] = 'Įrašyti';
@@ -252,6 +261,7 @@ $labels['pagesize'] = 'EiluÄių skaiÄius puslapyje';
$labels['signature'] = 'Parašas';
$labels['dstactive'] = 'Vasaros laikas skiriasi';
$labels['htmleditor'] = 'Laiškus kurti HTML formatu';
+$labels['htmlonreply'] = 'tik atsakymus į HTML formato laiškus';
$labels['htmlsignature'] = 'HTML parašas';
$labels['previewpane'] = 'Rodyti laiško peržiūros polangį';
$labels['skin'] = 'Grafinis apvalkalas';
@@ -259,12 +269,13 @@ $labels['logoutclear'] = 'Išvalyti Šiukšlinę atsijungiant';
$labels['logoutcompact'] = 'Suspausti Gautų laiškų aplanką atsijungiant';
$labels['uisettings'] = 'Naudotojo sÄ…saja';
$labels['serversettings'] = 'Serverio nustatymai';
-$labels['mailboxview'] = 'Pašto dėžutės rodinys';
-$labels['mdnrequests'] = 'Siuntėjų prašomos pažymos';
-$labels['askuser'] = 'kaskart klausti';
-$labels['autosend'] = 'siųsti automatiškai';
-$labels['autosendknown'] = 'siųsti tik adresų knygoje esantiems adresatams';
-$labels['ignore'] = 'nesiųsti';
+$labels['mailboxview'] = 'Pašto dėžutės rodymas';
+$labels['mdnrequests'] = 'Gavus prašymą patvirtinti, jog laiškas perskaitytas';
+$labels['askuser'] = 'visuomet klausti, ar siųsti patvirtinimą';
+$labels['autosend'] = 'visuomet siųsti patvirtinimą automatiškai';
+$labels['autosendknown'] = 'automatiškai siųsti patvirtinimą adresų knygoje esantiems adresatams, kitu atveju klausti';
+$labels['autosendknownignore'] = 'automatiškai siųsti patvirtinimą adresų knygoje esantiems adresatams, kitu atveju nesiųsti';
+$labels['ignore'] = 'niekada nesiųsti patvirtinimo';
$labels['readwhendeleted'] = 'Pažymėti laišką kaip skaitytą prieš šalinant';
$labels['flagfordeletion'] = 'Pažymėti laišką šalinimui užuot šalinus';
$labels['skipdeleted'] = 'Nerodyti pašalintų laiškų';
@@ -308,7 +319,9 @@ $labels['abovequote'] = 'virš citatos';
$labels['insertsignature'] = 'Pridėti parašą';
$labels['previewpanemarkread'] = 'Peržiūros polangyje parodytus laiškus žymėti skaitytais';
$labels['afternseconds'] = 'praÄ—jus $n sek.';
-$labels['reqmdn'] = 'Visuomet prašyti gavimo pažymos';
+$labels['reqmdn'] = 'Visuomet prašyti patvirtinimo, jog laiškas perskaitytas';
+$labels['reqdsn'] = 'Visuomet prašyti laiško pristatymo pažymos';
+$labels['replysamefolder'] = 'Atsakymus talpinti į tą patį aplanką, kuriame yra pirminis laiškas';
$labels['folder'] = 'Aplankas';
$labels['folders'] = 'Aplankai';
$labels['foldername'] = 'Aplanko vardas';
@@ -316,9 +329,6 @@ $labels['subscribed'] = 'Užsakytas';
$labels['messagecount'] = 'Laiškai';
$labels['create'] = 'Sukurti';
$labels['createfolder'] = 'Sukurti naujÄ… aplankÄ…';
-$labels['rename'] = 'Pervardinti';
-$labels['renamefolder'] = 'Pervardinti aplankÄ…';
-$labels['deletefolder'] = 'Pašalinti aplanką';
$labels['managefolders'] = 'Tvarkyti aplankus';
$labels['specialfolders'] = 'Specialieji aplankai';
$labels['sortby'] = 'Rikiuoti pagal';
diff --git a/program/localization/lt_LT/messages.inc b/program/localization/lt_LT/messages.inc
index 62d59dec4..f6cdb6247 100644
--- a/program/localization/lt_LT/messages.inc
+++ b/program/localization/lt_LT/messages.inc
@@ -24,6 +24,7 @@ $messages['cookiesdisabled'] = 'Jūsų naršyklė nepriima slapukų';
$messages['sessionerror'] = 'Jūsų sesija negaliojanti';
$messages['imaperror'] = 'Nepavyko prisijungti prie IMAP serverio';
$messages['servererror'] = 'Serverio klaida!';
+$messages['servererrormsg'] = 'Serverio klaida: $msg';
$messages['invalidrequest'] = 'Netinkama užklausa! Duomenys neišsaugoti.';
$messages['nomessagesfound'] = 'Šioje pašto dėžutėje laiškų nėra ';
$messages['loggedout'] = 'JÅ«s sÄ—kmingai atsijungÄ—te. Iki kito karto!';
@@ -55,10 +56,10 @@ $messages['deletecontactconfirm'] = 'Ar tikrai pašalinti pažymėtą(-us) adres
$messages['deletemessagesconfirm'] = 'Ar tikrai pašalinti pažymėtą(-us) laišką(-us)?';
$messages['deletefolderconfirm'] = 'Ar tikrai pašalinti šį aplanką?';
$messages['purgefolderconfirm'] = 'Ar tikrai paÅ¡alinti visus Å¡iame aplanke esanÄius laiÅ¡kus?';
-$messages['foldercreating'] = 'Aplankas kuriamas…';
$messages['folderdeleting'] = 'Aplankas šalinamas…';
-$messages['folderrenaming'] = 'Aplankas pervardinamas…';
$messages['foldermoving'] = 'Aplankas perkeliamas…';
+$messages['foldersubscribing'] = 'Aplankas prenumeruojamas…';
+$messages['folderunsubscribing'] = 'Atsisakoma aplanko prenumeratos…';
$messages['formincomplete'] = 'Formos laukai nepilnai užpildyti';
$messages['noemailwarning'] = 'Prašom įvesti teisingą el. pašto adresą';
$messages['nonamewarning'] = 'Prašom įvesti vardą';
@@ -78,6 +79,9 @@ $messages['searching'] = 'Ieškoma…';
$messages['checking'] = 'Tikrinama…';
$messages['nospellerrors'] = 'Rašybos klaidų nerasta';
$messages['folderdeleted'] = 'Aplankas sėkmingai pašalintas';
+$messages['foldersubscribed'] = 'Aplankas sėkmingai užprenumeruotas';
+$messages['folderunsubscribed'] = 'Aplanko prenumeratos sÄ—kmingai atsisakyta';
+$messages['folderpurged'] = 'Aplankas sėkmingai ištuštintas';
$messages['deletedsuccessfully'] = 'Sėkmingai pašalinta';
$messages['converting'] = 'Šalinamas laiško formatavimas…';
$messages['messageopenerror'] = 'Nepavyko įkelti laiško iš serverio';
@@ -87,12 +91,13 @@ $messages['copysuccess'] = 'Nukopijuota adresų: $nr';
$messages['copyerror'] = 'Adresų nukopijuoti nepavyko';
$messages['sourceisreadonly'] = 'Šis adresų šaltinis prieinamas tik skaitymui';
$messages['errorsavingcontact'] = 'Asmens adreso įrašyti nepavyko';
-$messages['movingmessage'] = 'Laiškas perkeliamas…';
-$messages['copyingmessage'] = 'Laiškas kopijuojamas…';
+$messages['movingmessage'] = 'Laiškas(-ai) perkeliamas(-i)…';
+$messages['copyingmessage'] = 'Laiškai(-ai) kopijuojamas(-i)…';
+$messages['deletingmessage'] = 'Laiškas(-ai) šalinamas(-i)…';
+$messages['markingmessage'] = 'Laiškas(-ai) žymimas(-i)…';
$messages['receiptsent'] = 'Laiško perskaitymo pažyma sėkmingai išsiųsta';
$messages['errorsendingreceipt'] = 'Laiško perskaitymo pažymos išsiųsti nepavyko';
$messages['nodeletelastidentity'] = 'Jūs negalite ištrinti šios tapatybės, nes ji yra vienintelė likusi.';
-$messages['addsubfolderhint'] = 'Šis aplankas bus sukurtas kaip pažymėtojo aplanko poaplankis';
$messages['forbiddencharacter'] = 'Aplanko varde rasta neleistinų simbolių';
$messages['selectimportfile'] = 'Parinkite įkelti norimą failą';
$messages['addresswriterror'] = 'Pasirinktoji adresų knyga prieinama tik skaitymui';
@@ -110,10 +115,25 @@ $messages['smtpautherror'] = 'SMTP klaida ($code): nepavyko autentikuotis';
$messages['smtpfromerror'] = 'SMTP klaida ($code): nepavyko nurodyti siuntėjo „$from“ ($msg)';
$messages['smtptoerror'] = 'SMTP klaida ($code): nepavyko pridėti gavėjo „$to“ ($msg)';
$messages['smtprecipientserror'] = 'SMTP klaida: nepavyko apdoroti gavėjų sąrašo';
+$messages['smtpdsnerror'] = 'SMTP klaida: laiškų pristatymo pažymos nepalaikomos';
$messages['smtperror'] = 'SMTP klaida: $msg';
$messages['emailformaterror'] = 'Netinkamas el. pašto adresas: $email';
$messages['toomanyrecipients'] = 'Per daug gavėjų. Sumažinkite jų bent iki $max.';
$messages['maxgroupmembersreached'] = 'GrupÄ—s narių skaiÄius virÅ¡ijo maksimalų leistinÄ… ($max)';
$messages['internalerror'] = 'Įvyko klaida. Prašom bandyti iš naujo.';
+$messages['contactdelerror'] = 'Nepavyko pašalinti adresato(-ų)';
+$messages['contactdeleted'] = 'Adresatas(-ai) sėkmingai pašalintas(-i)';
+$messages['groupdeleted'] = 'Grupė sėkmingai pašalinta';
+$messages['grouprenamed'] = 'GrupÄ— sÄ—kmingai pervardinta';
+$messages['groupcreated'] = 'GrupÄ— sÄ—kmingai sukurta';
+$messages['messagedeleted'] = 'Laiškas(-ai) sėkmingai pašalintas(-i)';
+$messages['messagemoved'] = 'Laiškas(-ai) sėkmingai perkeltas(-i)';
+$messages['messagecopied'] = 'Laiškas(-ai) sėkmingai nukopijuotas(-i)';
+$messages['messagemarked'] = 'Laiškas(-ai) sėkmingai pažymėtas(-i)';
+$messages['autocompletechars'] = 'Automatiniam užbaigimui būtini bent $min simboliai';
+$messages['namecannotbeempty'] = 'Vardas negali bÅ«ti tuÅ¡Äias';
+$messages['nametoolong'] = 'Vardas yra per ilgas';
+$messages['folderupdated'] = 'Aplanko savybÄ—s sÄ—kmingai atnaujintos';
+$messages['foldercreated'] = 'Aplankas sÄ—kmingai sukurtas';
?>
diff --git a/program/localization/lv_LV/labels.inc b/program/localization/lv_LV/labels.inc
index cafa1d397..797b455f8 100644
--- a/program/localization/lv_LV/labels.inc
+++ b/program/localization/lv_LV/labels.inc
@@ -277,9 +277,6 @@ $labels['subscribed'] = 'Abonēta';
$labels['messagecount'] = 'VÄ“stules';
$labels['create'] = 'Izveidot';
$labels['createfolder'] = 'Izveidot jaunu mapi';
-$labels['rename'] = 'PÄrsaukt';
-$labels['renamefolder'] = 'PÄrsaukt mapi';
-$labels['deletefolder'] = 'Dzēst mapi';
$labels['managefolders'] = 'Rediģēt mapes';
$labels['specialfolders'] = 'ĪpaÅ¡Äs mapes';
$labels['sortby'] = 'KÄrtot pÄ“c';
diff --git a/program/localization/lv_LV/messages.inc b/program/localization/lv_LV/messages.inc
index e84a83246..78b3a4abe 100644
--- a/program/localization/lv_LV/messages.inc
+++ b/program/localization/lv_LV/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Vai tieÅ¡Äm vÄ“laties dzÄ“st iezÄ«mÄ“to(Ä
$messages['deletemessagesconfirm'] = 'Vai tieÅ¡Äm vÄ“laties dzÄ“st iezÄ«mÄ“to(Äs) vÄ“stules?';
$messages['deletefolderconfirm'] = 'Vai tieÅ¡Äm vÄ“laties dzÄ“st Å¡o mapi?';
$messages['purgefolderconfirm'] = 'Vai tieÅ¡Äm vÄ“laties dzÄ“st visas vÄ“stules, kas atrodas Å¡ajÄ mapÄ“?';
-$messages['foldercreating'] = 'Izveidoju mapi...';
$messages['folderdeleting'] = 'Dzēšu mapi...';
-$messages['folderrenaming'] = 'PÄrsaucu mapi...';
$messages['foldermoving'] = 'PÄrvietoju mapi...';
$messages['formincomplete'] = 'FormulÄrs nav pilnÄ«bÄ aizpildÄ«ts';
$messages['noemailwarning'] = 'LÅ«dzu ievadiet pareizu e-pasta adresi';
@@ -91,7 +89,6 @@ $messages['movingmessage'] = 'PÄrvietoju vÄ“stules...';
$messages['receiptsent'] = 'SaņemÅ¡anas apstiprinÄjums nosÅ«tÄ«ts';
$messages['errorsendingreceipt'] = 'NeizdevÄs nosÅ«tÄ«t apstiprinÄjumu';
$messages['nodeletelastidentity'] = 'Å o identitÄti nevar izdzÄ“st, tÄ ir pati pÄ“dÄ“jÄ.';
-$messages['addsubfolderhint'] = 'Å is folderis tiks izveidots kÄ apakÅ¡folderis tam, kurÅ¡ patreiz ir izvÄ“lÄ“ts';
$messages['forbiddencharacter'] = 'Mapes nosaukums satur aizliegtus simbolus';
$messages['selectimportfile'] = 'LÅ«dzu izvÄ“lieties failu, ko vÄ“laties augÅ¡upielÄdÄ“t';
$messages['addresswriterror'] = 'IzvÄ“lÄ“tÄs adreÅ¡u grÄmatas datus nevar labot';
diff --git a/program/localization/mk_MK/labels.inc b/program/localization/mk_MK/labels.inc
index 4d8d69f56..462fdce4b 100755
--- a/program/localization/mk_MK/labels.inc
+++ b/program/localization/mk_MK/labels.inc
@@ -274,9 +274,6 @@ $labels['subscribed'] = 'Претплатен';
$labels['messagecount'] = 'Пораки';
$labels['create'] = 'Создај';
$labels['createfolder'] = 'Создај нова папка';
-$labels['rename'] = 'Преименувај';
-$labels['renamefolder'] = 'Преименувај папка';
-$labels['deletefolder'] = 'Избриши папка';
$labels['managefolders'] = 'Организирање на папки';
$labels['specialfolders'] = 'Специјални папки';
$labels['sortby'] = 'Сортирај по';
diff --git a/program/localization/mk_MK/messages.inc b/program/localization/mk_MK/messages.inc
index 4d51bb51c..03440616e 100755
--- a/program/localization/mk_MK/messages.inc
+++ b/program/localization/mk_MK/messages.inc
@@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Дали Ñте Ñигурни дека ÑÐ
$messages['deletemessagesconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да го(и) избришете обележаниот(те) пиÑмо(а)?';
$messages['deletefolderconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да ја избришете оваа папка?';
$messages['purgefolderconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да ги избршете Ñите пиÑма во оваа папка?';
-$messages['foldercreating'] = 'Ја Ñоздавам папката...';
$messages['folderdeleting'] = 'Ја бришам папката...';
-$messages['folderrenaming'] = 'Ја преименувам папката...';
$messages['foldermoving'] = 'Ја премеÑтувам папката...';
$messages['formincomplete'] = 'Имате изоÑтавено непополнети информации';
$messages['noemailwarning'] = 'ВнеÑете валидна е-поштенÑка адреÑа';
@@ -88,7 +86,6 @@ $messages['movingmessage'] = 'Пораката Ñе премеÑтува...';
$messages['receiptsent'] = 'ИзвеÑтувањето е уÑпешно пратено';
$messages['errorsendingreceipt'] = 'ИзвеÑтувањето не е пратено';
$messages['nodeletelastidentity'] = 'Овој идентитет неможе да Ñе избрише, тој е поÑледниот.';
-$messages['addsubfolderhint'] = 'Оваа папка ќе биде креирана како потпапка на моментално избраната.';
$messages['forbiddencharacter'] = 'Името на папката Ñодржи неÑоодветен формат';
$messages['selectimportfile'] = 'Изберете ја податотеката која Ñакате да ја прикачите';
$messages['addresswriterror'] = 'Одбраниот именик не може да Ñе менува';
diff --git a/program/localization/mr_IN/labels.inc b/program/localization/mr_IN/labels.inc
index a8cf8655e..218781381 100755
--- a/program/localization/mr_IN/labels.inc
+++ b/program/localization/mr_IN/labels.inc
@@ -378,9 +378,6 @@ $labels['subscribed'] = 'वरà¥à¤—णिदार होणे';
$labels['messagecount'] = 'संदेश';
$labels['create'] = 'तयार करा';
$labels['createfolder'] = 'नवीन फोलà¥à¤¡à¤° तयार करा';
-$labels['rename'] = 'नवीन नाव दà¥à¤¯à¤¾';
-$labels['renamefolder'] = 'फोलà¥à¤¡à¤°à¤²à¤¾ नवीन नाव दà¥à¤¯à¤¾';
-$labels['deletefolder'] = 'फोलà¥à¤¡à¤° काढून टाका';
$labels['managefolders'] = 'फोलà¥à¤¡à¤°à¥à¤¸à¤šà¥‡ नियोजन करा';
$labels['specialfolders'] = 'विषेश फोलà¥à¤¡à¤°';
$labels['sortby'] = 'ने वरà¥à¤—वारी करा';
diff --git a/program/localization/mr_IN/messages.inc b/program/localization/mr_IN/messages.inc
index 3dc07fd5f..6ee3a5e8b 100755
--- a/program/localization/mr_IN/messages.inc
+++ b/program/localization/mr_IN/messages.inc
@@ -51,9 +51,7 @@ $messages['deletecontactconfirm'] = 'खूण केलेले सरà¥à¤µ à
$messages['deletemessagesconfirm'] = 'खूण केलेले सरà¥à¤µ संदेश खरोखरच तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ काढून टाकायचे आहेत का?';
$messages['deletefolderconfirm'] = 'हा फोलà¥à¤¡à¤° खरोखरच तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ काढून टाकायचा आहेत का?';
$messages['purgefolderconfirm'] = 'या फोलà¥à¤¡à¤°à¤®à¤§à¤¿à¤² सरà¥à¤µ संदेश खरोखरच तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ काढून टाकायचे आहेत का?';
-$messages['foldercreating'] = 'फोलà¥à¤¡à¤° तयार करत आहे';
$messages['folderdeleting'] = 'फोलà¥à¤¡à¤° काढून टाकत आहे';
-$messages['folderrenaming'] = 'फोलà¥à¤¡à¤°à¤²à¤¾ नवीन नाव देत आहे.';
$messages['foldermoving'] = 'फोलà¥à¤¡à¤° हलवत आहे.';
$messages['formincomplete'] = 'फॉरà¥à¤® पूरà¥à¤£à¤ªà¤£à¥‡ भरलेला नाही. ';
$messages['noemailwarning'] = 'योगà¥à¤¯, बरोबर, आणि वैध इमेल पतà¥à¤¤à¤¾ दà¥à¤¯à¤¾. ';
@@ -88,7 +86,6 @@ $messages['copyingmessage'] = 'संदेशाची नकà¥â€à¤•à¤² कà¤
$messages['receiptsent'] = 'पोचपावती यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ पाठवणà¥à¤¯à¤¾à¤¤ आली आहे. ';
$messages['errorsendingreceipt'] = 'पोचपावती पाठवता आली नाही.';
$messages['nodeletelastidentity'] = 'तà¥à¤®à¥à¤¹à¥€ हे खाते काढून टाकू शकत नाही कारण हे तà¥à¤®à¤šà¥‡ शेवटचे खाते आहे.';
-$messages['addsubfolderhint'] = 'हा फोलà¥à¤¡à¤° निवडलेलà¥à¤¯à¤¾ फोलà¥à¤¡à¤°à¤šà¤¾ उप-फोलà¥à¤¡à¤° असेल';
$messages['forbiddencharacter'] = 'फोलà¥à¤¡à¤°à¤šà¥à¤¯à¤¾ नावात न चालणारी अकà¥à¤·à¤°à¥‡ किंवा खूणा आहेत.';
$messages['selectimportfile'] = 'चढवणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ फाईल निवडा';
$messages['addresswriterror'] = 'निवडलेलà¥à¤¯à¤¾ पतà¥à¤¤à¤¾ नोंदवहीत नोंद करता येत नाही.';
diff --git a/program/localization/ms_MY/labels.inc b/program/localization/ms_MY/labels.inc
index c6a585818..bf395daa1 100644
--- a/program/localization/ms_MY/labels.inc
+++ b/program/localization/ms_MY/labels.inc
@@ -215,9 +215,6 @@ $labels['subscribed'] = 'Dilanggan';
$labels['messagecount'] = 'Mesej-mesej';
$labels['create'] = 'Cipta';
$labels['createfolder'] = 'Cipta kabinet fail baru';
-$labels['rename'] = 'Namakan semula';
-$labels['renamefolder'] = 'Namakan semula kabinet fail';
-$labels['deletefolder'] = 'Hapus kabinet fail';
$labels['managefolders'] = 'Urus kabinet fail';
$labels['sortby'] = 'Susun dengan';
$labels['sortasc'] = 'Susun menaik';
diff --git a/program/localization/ms_MY/messages.inc b/program/localization/ms_MY/messages.inc
index 2dac2bc90..907903b58 100644
--- a/program/localization/ms_MY/messages.inc
+++ b/program/localization/ms_MY/messages.inc
@@ -77,6 +77,5 @@ $messages['movingmessage'] = 'Memindah mesej...';
$messages['receiptsent'] = 'Berjaya menghantar resip bacaan';
$messages['errorsendingreceipt'] = 'Tidak dapat menghantar resip';
$messages['nodeletelastidentity'] = 'Anda tidak boleh membuang identiti ini, ia milik anda yang terakhir.';
-$messages['addsubfolderhint'] = 'Folder ini akan dibina sebagai subfolder kepada folder yang dipilih sekarang';
?>
diff --git a/program/localization/nb_NO/labels.inc b/program/localization/nb_NO/labels.inc
index 0e828a26c..c9f3b0ff1 100644
--- a/program/localization/nb_NO/labels.inc
+++ b/program/localization/nb_NO/labels.inc
@@ -312,9 +312,6 @@ $labels['subscribed'] = 'Abonnere';
$labels['messagecount'] = 'Meldinger';
$labels['create'] = 'Opprett';
$labels['createfolder'] = 'Lag ny mappe';
-$labels['rename'] = 'Endre navn';
-$labels['renamefolder'] = 'Endre navn på mappe';
-$labels['deletefolder'] = 'Slett mappe';
$labels['managefolders'] = 'Rediger mapper';
$labels['specialfolders'] = 'Spesielle mapper';
$labels['sortby'] = 'Sorter etter';
diff --git a/program/localization/nb_NO/messages.inc b/program/localization/nb_NO/messages.inc
index db00818a7..4f823a587 100644
--- a/program/localization/nb_NO/messages.inc
+++ b/program/localization/nb_NO/messages.inc
@@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Vil du virkelig slette valgte kontakt(er)?'
$messages['deletemessagesconfirm'] = 'Vil du virkelig slette de(n) valgte meldingen(e)?';
$messages['deletefolderconfirm'] = 'Vil du virkelig slette denne mappen?';
$messages['purgefolderconfirm'] = 'Vil du virkelig slette alle meldingene i denne mappen?';
-$messages['foldercreating'] = 'Oppretter mappe...';
$messages['folderdeleting'] = 'Sletter mappe...';
-$messages['folderrenaming'] = 'Gir nytt navn til mappe...';
$messages['foldermoving'] = 'Flytter mappe...';
$messages['formincomplete'] = 'Skjemaet var ikke fullstendig fylt ut';
$messages['noemailwarning'] = 'Skriv inn en gyldig e-postadresse';
@@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Kopierer e-post...';
$messages['receiptsent'] = 'Kvittering er sent';
$messages['errorsendingreceipt'] = 'Kunne ikke sende kvittering';
$messages['nodeletelastidentity'] = 'Du kan ikke slette denne identiteten, det er din eneste.';
-$messages['addsubfolderhint'] = 'Mappen vil bli opprettet som en undermappe av nåværende valgt mappe';
$messages['forbiddencharacter'] = 'Mappenavnet inneholder tegn som ikke er tillatt';
$messages['selectimportfile'] = 'Vennligst velg en fil for opplasting';
$messages['addresswriterror'] = 'Den valgte adresseboken er ikke skrivbar';
diff --git a/program/localization/ne_NP/labels.inc b/program/localization/ne_NP/labels.inc
index ee1cc09ec..ec4ed1aca 100644
--- a/program/localization/ne_NP/labels.inc
+++ b/program/localization/ne_NP/labels.inc
@@ -166,9 +166,6 @@ $labels['foldername'] = 'फोलà¥à¤¡à¤°à¤•à¥‹ नाम';
$labels['subscribed'] = 'सबसà¥à¤•à¥à¤°à¤¾à¤ˆà¤¬ गरियो';
$labels['create'] = 'बनाउनà¥à¤¹à¥‹à¤¸';
$labels['createfolder'] = 'नया फोलडर बनाउनà¥à¤¹à¥‹à¤¸';
-$labels['rename'] = 'नाम बदलà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['renamefolder'] = 'फोलडरको नाम बदलà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['deletefolder'] = 'फोलडर मेटà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['managefolders'] = 'फोलडर वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['sortby'] = 'यसरी तय गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['sortasc'] = 'पहिलो देखि अनà¥à¤¤à¤¿à¤® समà¥à¤® तय गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
diff --git a/program/localization/nl_BE/labels.inc b/program/localization/nl_BE/labels.inc
index 2ac0eeae0..86b6c4b94 100644
--- a/program/localization/nl_BE/labels.inc
+++ b/program/localization/nl_BE/labels.inc
@@ -321,9 +321,6 @@ $labels['subscribed'] = 'Gebruiken';
$labels['messagecount'] = 'Berichten';
$labels['create'] = 'Aanmaken';
$labels['createfolder'] = 'Nieuwe map aanmaken';
-$labels['rename'] = 'Hernoemen';
-$labels['renamefolder'] = 'Hernoem map';
-$labels['deletefolder'] = 'Map verwijderen';
$labels['managefolders'] = 'Mappen beheren';
$labels['specialfolders'] = 'Speciale mappen';
$labels['sortby'] = 'Sorteren op';
diff --git a/program/localization/nl_BE/messages.inc b/program/localization/nl_BE/messages.inc
index 8739fa5b0..71fbb3dec 100644
--- a/program/localization/nl_BE/messages.inc
+++ b/program/localization/nl_BE/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Bent u zeker dat u de geselecteerde contact
$messages['deletemessagesconfirm'] = 'Bent u zeker dat u de geselecteerde bericht(en) wilt verwijderen?';
$messages['deletefolderconfirm'] = 'Weet u zeker dat u deze map wilt verwijderen?';
$messages['purgefolderconfirm'] = 'Bent u zeker dat u alle berichten in deze map wilt verwijderen?';
-$messages['foldercreating'] = 'Map aanmaken...';
$messages['folderdeleting'] = 'Map verwijderen...';
-$messages['folderrenaming'] = 'Map hernoemen...';
$messages['foldermoving'] = 'Map verplaatsen...';
$messages['formincomplete'] = 'Het formulier is niet volledig ingevuld...';
$messages['noemailwarning'] = 'Geef een geldig e-mailadres op...';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Bericht wordt gekopieerd...';
$messages['receiptsent'] = 'Ontvangstbevestiging verstuurd';
$messages['errorsendingreceipt'] = 'Kon de ontvangstbevestigign niet versturen';
$messages['nodeletelastidentity'] = 'U kunt dit laatste afzendadres niet verwijderen.';
-$messages['addsubfolderhint'] = 'De map wordt aangemaakt als submap van de geselecteerde map.';
$messages['forbiddencharacter'] = 'De naam van de map bevat een karakter dat niet is toegestaan';
$messages['selectimportfile'] = 'Selecteer een bestand om te uploaden';
$messages['addresswriterror'] = 'Het geselecteerde adresboek is alleen-lezen';
diff --git a/program/localization/nl_NL/labels.inc b/program/localization/nl_NL/labels.inc
index 97ad8cc18..5097ec7a4 100644
--- a/program/localization/nl_NL/labels.inc
+++ b/program/localization/nl_NL/labels.inc
@@ -42,16 +42,15 @@ $labels['to'] = 'Ontvanger';
$labels['cc'] = 'Kopie';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Antwoord-aan';
-$labels['mailreplyto'] = 'Mail-Antwoord-Aan';
-$labels['mailfollowupto'] = 'Mail-Followup-Aan';
+$labels['followupto'] = 'Followup-Aan';
$labels['date'] = 'Datum';
$labels['size'] = 'Grootte';
$labels['priority'] = 'Prioriteit';
$labels['organization'] = 'Organisatie';
$labels['readstatus'] = 'Gelezen?';
$labels['reply-to'] = 'Antwoord-aan';
-$labels['mailreply-to'] = 'Mail-Antwoord-Aan';
-$labels['mailfollowup-to'] = 'Mail-Followup-Aan';
+$labels['mail-reply-to'] = 'Mail-Antwoord-Aan';
+$labels['mail-followup-to'] = 'Mail-Followup-Aan';
$labels['mailboxlist'] = 'Mappen';
$labels['messagesfromto'] = 'Bericht $from t/m $to van $count';
$labels['threadsfromto'] = 'Conversatie $from t/m $to van $count';
@@ -205,8 +204,7 @@ $labels['maxuploadsize'] = 'Maximum toegestane bestandsgrootte is $size';
$labels['addcc'] = 'Cc toevoegen';
$labels['addbcc'] = 'Bcc toevoegen';
$labels['addreplyto'] = 'Antwoord-aan toevoegen';
-$labels['addmailreplyto'] = 'Mail-Antwoord-Aan toevoegen';
-$labels['addmailfollowupto'] = 'Mail-Followup-Aan toevoegen';
+$labels['addfollowupto'] = 'Mail-Followup-Aan toevoegen';
$labels['mdnrequest'] = 'De afzender van dit bericht heeft gevraagd een melding te ontvangen wanneer u dit bericht heeft gelezen. Wilt u deze melding verzenden?';
$labels['receiptread'] = 'Ontvangstbevestiging (gelezen)';
$labels['yourmessage'] = 'Dit is een ontvangstbevestiging voor uw bericht';
@@ -218,6 +216,7 @@ $labels['email'] = 'E-Mail';
$labels['addcontact'] = 'Nieuwe contactpersoon toevoegen';
$labels['editcontact'] = 'Contactpersoon wijzigen';
$labels['contacts'] = 'Contacten';
+$labels['contactproperties'] = 'Contact eigenschappen';
$labels['edit'] = 'Wijzig';
$labels['cancel'] = 'Annuleer';
$labels['save'] = 'Opslaan';
@@ -325,6 +324,7 @@ $labels['previewpanemarkread'] = 'Markeer voorbeeld bericht als gelezen';
$labels['afternseconds'] = 'Na $n seconden';
$labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging';
$labels['reqdsn'] = 'Vraag altijd een afleverings status notificatie (DSN)';
+$labels['replysamefolder'] = 'Plaats antwoorden in de folder van het beantwoorde bericht';
$labels['folder'] = 'Map';
$labels['folders'] = 'Mappen';
$labels['foldername'] = 'Mapnaam';
@@ -332,9 +332,6 @@ $labels['subscribed'] = 'Geabonneerd';
$labels['messagecount'] = 'Berichten';
$labels['create'] = 'Nieuw';
$labels['createfolder'] = 'Maak nieuwe map';
-$labels['rename'] = 'Wijzig naam';
-$labels['renamefolder'] = 'Wijzig mapnaam';
-$labels['deletefolder'] = 'Verwijder map';
$labels['managefolders'] = 'Beheer mappen';
$labels['specialfolders'] = 'Speciale mappen';
$labels['sortby'] = 'Sorteer op';
diff --git a/program/localization/nl_NL/messages.inc b/program/localization/nl_NL/messages.inc
index 9fd802a39..f83789dd4 100644
--- a/program/localization/nl_NL/messages.inc
+++ b/program/localization/nl_NL/messages.inc
@@ -58,9 +58,7 @@ $messages['deletecontactconfirm'] = 'Weet u zeker dat u de geselecteerde contact
$messages['deletemessagesconfirm'] = 'Weet u zeker dat u de geselecteerde bericht(en) wilt verwijderen?';
$messages['deletefolderconfirm'] = 'Weet u zeker dat u deze map wilt verwijderen?';
$messages['purgefolderconfirm'] = 'Weet u zeker dat u alle berichten in deze map wilt verwijderen?';
-$messages['foldercreating'] = 'Map aanmaken...';
$messages['folderdeleting'] = 'Map verwijderen...';
-$messages['folderrenaming'] = 'Mapnaam wijzigen...';
$messages['foldermoving'] = 'Map verplaatsen...';
$messages['formincomplete'] = 'Het formulier was niet volledig ingevuld';
$messages['noemailwarning'] = 'Geef een geldig e-mailadres op';
@@ -95,7 +93,6 @@ $messages['copyingmessage'] = 'Kopiëren bericht...';
$messages['receiptsent'] = 'Ontvangstbevestiging is verstuurd';
$messages['errorsendingreceipt'] = 'Kan de ontvangstbevestiging niet versturen';
$messages['nodeletelastidentity'] = 'U kunt uw enige identiteit niet verwijderen';
-$messages['addsubfolderhint'] = 'Deze map zal worden aangemaakt onder de geselecteerde map';
$messages['forbiddencharacter'] = 'De naam van de map bevat een karakter dat niet is toegestaan';
$messages['selectimportfile'] = 'Selecteer een bestand om de uploaden';
$messages['addresswriterror'] = 'Het geselecteerde adresboek is alleen lezen';
diff --git a/program/localization/nn_NO/labels.inc b/program/localization/nn_NO/labels.inc
index 5f4a0a91c..d79c67c20 100644
--- a/program/localization/nn_NO/labels.inc
+++ b/program/localization/nn_NO/labels.inc
@@ -310,9 +310,6 @@ $labels['subscribed'] = 'Abonnert';
$labels['messagecount'] = 'Meldingar';
$labels['create'] = 'Opprette';
$labels['createfolder'] = 'Opprett ny mappe';
-$labels['rename'] = 'Gje nytt namn';
-$labels['renamefolder'] = 'Gje nytt namn til mappe';
-$labels['deletefolder'] = 'Slett mappe';
$labels['managefolders'] = 'Mappehandsaming';
$labels['specialfolders'] = 'Spesialmapper';
$labels['sortby'] = 'Sorter etter';
diff --git a/program/localization/nn_NO/messages.inc b/program/localization/nn_NO/messages.inc
index 904e3b696..1e181a2dc 100644
--- a/program/localization/nn_NO/messages.inc
+++ b/program/localization/nn_NO/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Sletta kontakt(ar)?';
$messages['deletemessagesconfirm'] = 'Sletta melding(ar)?';
$messages['deletefolderconfirm'] = 'Sletta mappa?';
$messages['purgefolderconfirm'] = 'Sletta alle meldingane i denne mappa?';
-$messages['foldercreating'] = 'Lagar mappe...';
$messages['folderdeleting'] = 'Slettar mappe...';
-$messages['folderrenaming'] = 'Endrar namn på mappe...';
$messages['foldermoving'] = 'Flyttar mappe...';
$messages['formincomplete'] = 'Fyll ut skjema';
$messages['noemailwarning'] = 'Skriv inn korrekt epostadresse';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Kopierer epost...';
$messages['receiptsent'] = 'Sende melding-er-lest-kvittering';
$messages['errorsendingreceipt'] = 'Kunne ikkje senda melding-er-lest-kvittering';
$messages['nodeletelastidentity'] = 'Du kan ikkje sletta denne identiteten, det er den siste.';
-$messages['addsubfolderhint'] = 'Denne mappa vert laga som ei undermappe til den du hev markert';
$messages['forbiddencharacter'] = 'Mappenamn inneheld eit teikn som ikkje er støtta';
$messages['selectimportfile'] = 'Vel ei fil til å lasta opp';
$messages['addresswriterror'] = 'Denne adresseboka er ikkje skrivbar';
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index 03eaa97ed..519eb34ef 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -42,13 +42,12 @@ $labels['from'] = 'Nadawca';
$labels['to'] = 'Odbiorca';
$labels['cc'] = 'Kopia';
$labels['bcc'] = 'Ukryta kopia';
-$labels['replyto'] = 'Odp. do';
+$labels['replyto'] = 'Odpowiedź do';
$labels['date'] = 'Data';
$labels['size'] = 'Rozmiar';
$labels['readstatus'] = 'Przeczytano';
$labels['priority'] = 'Priorytet';
$labels['organization'] = 'Organizacja';
-$labels['reply-to'] = 'Odpowiedz do';
$labels['mailboxlist'] = 'Foldery';
$labels['messagesfromto'] = 'Wiadomości od $from do $to z $count';
$labels['threadsfromto'] = 'WÄ…tki od $from do $to z $count';
@@ -319,9 +318,6 @@ $labels['subscribed'] = 'Zasubskrybowany';
$labels['messagecount'] = 'Wiadomości';
$labels['create'] = 'Utwórz';
$labels['createfolder'] = 'Utwórz nowy folder';
-$labels['rename'] = 'Zmień nazwę';
-$labels['renamefolder'] = 'Zmień nazwę folderu';
-$labels['deletefolder'] = 'Usuń folder';
$labels['managefolders'] = 'ZarzÄ…dzaj folderami';
$labels['specialfolders'] = 'Foldery specjalne';
$labels['sortby'] = 'Sortuj wg';
@@ -352,18 +348,21 @@ $labels['chinese'] = 'chiński';
$labels['folderactions'] = 'Działania na folderach...';
$labels['contacts'] = 'Kontakty';
$labels['messageoptions'] = 'Opcje wiadomości...';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
-$labels['mail-reply-to'] = 'Mail-Reply-To';
-$labels['mail-followup-to'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Kontynuacja do';
$labels['replyall'] = 'Odpowiedz wszystkim';
$labels['replylist'] = 'Odpowiedz na listÄ™';
$labels['editidents'] = 'Edytuj tożsamości';
-$labels['addmailreplyto'] = 'Dodaj Mail-Reply-To';
-$labels['addmailfollowupto'] = 'Dodaj Mail-Followup-To';
+$labels['addfollowupto'] = 'Dodaj Followup-To';
$labels['dsn'] = 'Status dostarczenia (DSN)';
$labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)';
$labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam';
$labels['contactproperties'] = 'Właściwości';
+$labels['properties'] = 'Właściwości';
+$labels['folderproperties'] = 'Włąściwości folderu';
+$labels['parentfolder'] = 'Folder nadrzędny';
+$labels['location'] = 'Położenie';
+$labels['info'] = 'Informacje';
+$labels['getfoldersize'] = 'Kliknij aby pobrać rozmiar folderu';
+$labels['changesubscription'] = 'Kliknij aby zmienić subskrypcję';
?>
diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc
index 29749caae..d3c205bf0 100644
--- a/program/localization/pl_PL/messages.inc
+++ b/program/localization/pl_PL/messages.inc
@@ -60,9 +60,7 @@ $messages['deletecontactconfirm'] = 'Czy na pewno chcesz usunąć wybrane kontak
$messages['deletemessagesconfirm'] = 'Czy na pewno chcesz usunąć wybrane wiadomości?';
$messages['deletefolderconfirm'] = 'Czy na pewno chcesz usunąć wybrany folder?';
$messages['purgefolderconfirm'] = 'Czy na pewno chcesz usunąć wszystkie wiadomości w tym folderze?';
-$messages['foldercreating'] = 'Dodawanie folderu...';
$messages['folderdeleting'] = 'Usuwanie folderu...';
-$messages['folderrenaming'] = 'Zmiana nazwy folderu...';
$messages['foldermoving'] = 'Przenoszenie folderu...';
$messages['formincomplete'] = 'Uzupełnij formularz!';
$messages['noemailwarning'] = 'Podaj poprawny adres e-mail!';
@@ -99,7 +97,6 @@ $messages['markingmessage'] = 'Oznaczanie wiadomości...';
$messages['receiptsent'] = 'Pomyślnie wysłano potwierdzenie dostarczenia';
$messages['errorsendingreceipt'] = 'Nie można wysłać potwierdzenia';
$messages['nodeletelastidentity'] = 'Nie można skasować tej tożsamości, ponieważ jest ostatnią.';
-$messages['addsubfolderhint'] = 'Ten folder zostanie utworzony jako podfolder aktualnie wybranego.';
$messages['forbiddencharacter'] = 'Nazwa folderu zawiera niedozwolony znak';
$messages['selectimportfile'] = 'Proszę wybrać plik do wysłania';
$messages['addresswriterror'] = 'Wybrana książka adresowa jest tylko-do-odczytu';
@@ -133,5 +130,17 @@ $messages['messagemoved'] = 'Wiadomości zostały przeniesione';
$messages['messagecopied'] = 'Wiadomości zostały skopiowane';
$messages['messagemarked'] = 'Wiadomości zostały oznaczone';
$messages['autocompletechars'] = 'Wprowadź co najmniej $min znak(ów) aby skorzystać z autouzupełniania';
+$messages['foldersubscribing'] = 'Subskrybowanie folderu...';
+$messages['folderunsubscribing'] = 'Odsubskrybowanie folderu...';
+$messages['foldersubscribed'] = 'Folder pomyślnie zasubskrybowany';
+$messages['folderunsubscribed'] = 'Folder pomyślnie odsubskrybowany';
+$messages['folderpurged'] = 'Folder pomyślnie wyczyszczony';
+$messages['folderexpunged'] = 'Folder pomyślnie opróżniony';
+$messages['namecannotbeempty'] = 'Nazwa nie może być pusta';
+$messages['nametoolong'] = 'Name jest zbyt długa';
+$messages['folderupdated'] = 'Folder pomyślnie zaktualizowany';
+$messages['foldercreated'] = 'Folder pomyślnie utworzony';
+$messages['errorreadonly'] = 'Nie można wykonać operacji. Folder tylko do odczytu';
+$messages['errornoperm'] = 'Nie można wykonać operacji. Brak uprawnień';
?>
diff --git a/program/localization/ps/labels.inc b/program/localization/ps/labels.inc
index 7dd643045..e7692e7bc 100755
--- a/program/localization/ps/labels.inc
+++ b/program/localization/ps/labels.inc
@@ -287,9 +287,6 @@ $labels['subscribed'] = 'ګډ شو ';
$labels['messagecount'] = 'استوزي ';
$labels['create'] = 'جوړول، Ø±Ø§Ù…Ù†Ú ØªÙ‡ کول ';
$labels['createfolder'] = 'Ù†ÙˆÛ Ù¾ÙˆÚšÛ Ø¬ÙˆÚ“ Ú©Ú“Ù‡ ';
-$labels['rename'] = 'بيانومول ';
-$labels['renamefolder'] = 'Ù¾ÙˆÚšÛ Ø¨ÙŠØ§Ù†ÙˆÙ…ÙˆÙ„ ';
-$labels['deletefolder'] = 'Ù¾ÙˆÚšÛ Ú“Ù†Ú«ÙˆÙ„ ';
$labels['managefolders'] = 'پوښيو څارل ';
$labels['specialfolders'] = 'Úانګړي پوښÛÛ';
diff --git a/program/localization/ps/messages.inc b/program/localization/ps/messages.inc
index c5aae6aa9..f29475c6d 100755
--- a/program/localization/ps/messages.inc
+++ b/program/localization/ps/messages.inc
@@ -31,9 +31,7 @@ $messages['deletecontactconfirm'] = ' په رښتيا سره غواړئ Ú†Û Ù¼
$messages['deletemessagesconfirm'] = 'په رښتيا سره غواړئ Ú†Û Ù¼Ø§Ú©Ù„ شوي استوزي‌ړنګ کړئ؟';
$messages['deletefolderconfirm'] = 'په رښتيآ سره غواړئ Ú†Û Ø¯Ø§ Ù¾ÙˆÚšÛ Ú“Ù†Ú«Ù‡ کړئ؟';
$messages['purgefolderconfirm'] = 'په رښتيا سره غواړئ Ú†Û Ø¯Ø¯Û Ù¾ÙˆÚšÛ Ù¼ÙˆÙ„ استوزي‌ړنګ کړئ؟';
-$messages['foldercreating'] = 'Ù¾ÙˆÚšÛ Ø¬ÙˆÚ“ÙˆÙŠ';
$messages['folderdeleting'] = 'Ù¾ÙˆÚšÛ Ú“Ù†Ú«ÙˆÙŠ';
-$messages['folderrenaming'] = 'Ù¾ÙˆÚšÛ Ø¨ÙŠØ§Ù†ÙˆÙ…ÙˆÙŠ';
$messages['foldermoving'] = 'Ù¾ÙˆÚšÛ Ø®ÙˆÚوي';
$messages['formincomplete'] = 'دا پورمه بشپړه Ú‰Ú©Ù‡ Ø´ÙˆÛ Ù†Ù‡ ده';
$messages['noemailwarning'] = 'مهرباني وکړئ د يوه شته برÛښناليک پته ورÚای کړئ';
@@ -66,7 +64,6 @@ $messages['movingmessage'] = 'استوزه خوÚوي';
$messages['receiptsent'] = 'يو لوستل شوی رسليک په بشپړه توګه واستول شو';
$messages['errorsendingreceipt'] = 'رسليک ÙŠÛ ÙˆÙ†Ù‡ شوای ليږلی';
$messages['nodeletelastidentity'] = 'ØªØ§Ø³Û Ù†Ù‡ شئ کولی Ú†Û Ø¯Ø§ Ù¾Ûژندنه Ú“Ù†Ú«Ù‡ کړئ، داستاسو اخرنی پيژندنه ده';
-$messages['addsubfolderhint'] = 'دا Ù¾ÙˆÚšÛ Ø¯ Ø¯ÙˆÙŠÙ…Û Ù¾ÙˆÚšÛ Ù¾Ù‡ توګه د ټاکل شوي اوسني Úای Ú©Û Ø¬ÙˆÚ“Ø´ÙŠ';
$messages['forbiddencharacter'] = 'د Ù¾ÙˆÚšÛ Ù†ÙˆÙ… له Ùوربايډن تورو څخه جوړ دی';
$messages['selectimportfile'] = 'مهرباني وکړئ‌يو Ùايل د پورته کولو لپاره وټاکئ';
$messages['addresswriterror'] = 'ټاکل شوی Ù¾ØªÛ Ú©ØªØ§Ø¨ د بياليکلو نه دی';
diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc
index 27c5bb51b..ee236d7da 100644
--- a/program/localization/pt_BR/labels.inc
+++ b/program/localization/pt_BR/labels.inc
@@ -316,9 +316,6 @@ $labels['subscribed'] = 'Ativo';
$labels['messagecount'] = 'Mensagens';
$labels['create'] = 'Criar';
$labels['createfolder'] = 'Criar nova pasta';
-$labels['rename'] = 'Renomear';
-$labels['renamefolder'] = 'Renomear pasta';
-$labels['deletefolder'] = 'Apagar pasta';
$labels['managefolders'] = 'Gerenciar pastas';
$labels['specialfolders'] = 'Pastas especiais';
$labels['sortby'] = 'Ordenado por';
diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc
index 8e4e39f1b..2fd94373c 100644
--- a/program/localization/pt_BR/messages.inc
+++ b/program/localization/pt_BR/messages.inc
@@ -59,9 +59,7 @@ $messages['deletecontactconfirm'] = 'Deseja realmente excluir o(s) contato(s) se
$messages['deletemessagesconfirm'] = 'Deseja realmente excluir a(s) mensagem(s) selecionada(s)?';
$messages['deletefolderconfirm'] = 'Deseja realmente excluir esta pasta?';
$messages['purgefolderconfirm'] = 'Deseja realmente excluir todas mensagens desta pasta?';
-$messages['foldercreating'] = 'Criando pasta...';
$messages['folderdeleting'] = 'Apagando pasta...';
-$messages['folderrenaming'] = 'Renomeando pasta...';
$messages['foldermoving'] = 'Movendo pasta...';
$messages['formincomplete'] = 'Os campos não foram completamente preenchidos';
$messages['noemailwarning'] = 'Por favor, informe um endereço de e-mail válido';
@@ -96,7 +94,6 @@ $messages['copyingmessage'] = 'Copiando mensagem...';
$messages['receiptsent'] = 'Confirmação de recebimento enviada com sucesso';
$messages['errorsendingreceipt'] = 'Não foi possível enviar a confirmação de recebimento';
$messages['nodeletelastidentity'] = 'Você não pode excluir a única identidade';
-$messages['addsubfolderhint'] = 'Esta pasta será criada como uma sub-pasta da que está selecionada';
$messages['forbiddencharacter'] = 'O nome da pasta contém um caractere não permitido';
$messages['selectimportfile'] = 'Selecione o arquivo para envio';
$messages['addresswriterror'] = 'O catálogo de endereços selecionado não tem permissão de modificação';
diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc
index 0202eb373..8897c5138 100644
--- a/program/localization/pt_PT/labels.inc
+++ b/program/localization/pt_PT/labels.inc
@@ -42,8 +42,7 @@ $labels['to'] = 'Para';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Responder para';
-$labels['mailreplyto'] = 'Mensagem-Responder-Para';
-$labels['mailfollowupto'] = 'Mensagem-Reencaminhar-Para';
+$labels['followupto'] = 'Reencaminhar-Para';
$labels['date'] = 'Data';
$labels['size'] = 'Tamanho';
$labels['priority'] = 'Prioridade';
@@ -205,8 +204,7 @@ $labels['maxuploadsize'] = 'Tamanho máximo permitido do ficheiro é $size';
$labels['addcc'] = 'Adicionar Cc';
$labels['addbcc'] = 'Adicionar Bcc';
$labels['addreplyto'] = 'Adicionar Responder para';
-$labels['addmailreplyto'] = 'Adicionar Mensagem-Responder-Para';
-$labels['addmailfollowupto'] = 'Adicionar Mensagem-Reencaminhar-Para';
+$labels['addfollowupto'] = 'Adicionar Reencaminhar-Para';
$labels['mdnrequest'] = 'O remetente desta mensagem pediu para ser notificado quando esta mensagem fosse lida. Deseja enviar uma notificação?';
$labels['receiptread'] = 'Recibo de leitura';
$labels['yourmessage'] = 'Isto é um recibo de leitura da sua mensagem';
@@ -334,11 +332,15 @@ $labels['subscribed'] = 'Subscrita';
$labels['messagecount'] = 'Mensagens';
$labels['create'] = 'Criar';
$labels['createfolder'] = 'Criar nova pasta';
-$labels['rename'] = 'Renomear';
-$labels['renamefolder'] = 'Renomear pasta';
-$labels['deletefolder'] = 'Eliminar pasta';
$labels['managefolders'] = 'Gerir pastas';
$labels['specialfolders'] = 'Pastas especiais (predefinidas)';
+$labels['properties'] = 'Propriedades';
+$labels['folderproperties'] = 'Propriedades da pasta';
+$labels['parentfolder'] = 'Pasta de origem';
+$labels['location'] = 'Localização';
+$labels['info'] = 'Informação';
+$labels['getfoldersize'] = 'Clique para obter o tamanho da pasta';
+$labels['changesubscription'] = 'Clique para alterar a subscrição';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ordenação Ascendente';
$labels['sortdesc'] = 'Ordenação Descendente';
@@ -365,4 +367,4 @@ $labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
-?> \ No newline at end of file
+?>
diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc
index 511a2ed05..8bd4b3908 100644
--- a/program/localization/pt_PT/messages.inc
+++ b/program/localization/pt_PT/messages.inc
@@ -58,10 +58,10 @@ $messages['deletecontactconfirm'] = 'Deseja realmente eliminar o(s) contacto(s)
$messages['deletemessagesconfirm'] = 'Deseja realmente eliminar a(s) mensagem(ns) selecionada(s)?';
$messages['deletefolderconfirm'] = 'Deseja realmente eliminar esta pasta?';
$messages['purgefolderconfirm'] = 'Deseja realmente eliminar todas mensagens desta pasta?';
-$messages['foldercreating'] = 'A criar pasta...';
$messages['folderdeleting'] = 'A eliminar pasta...';
-$messages['folderrenaming'] = 'A renomear pasta...';
$messages['foldermoving'] = 'A mover pasta...';
+$messages['foldersubscribing'] = 'A subscrever pasta...';
+$messages['folderunsubscribing'] = 'A cancelar subscrição da pasta...';
$messages['formincomplete'] = 'Os campos não foram completamente preenchidos';
$messages['noemailwarning'] = 'Por favor escreva um endereço de e-mail válido';
$messages['nonamewarning'] = 'Por favor escreva o nome';
@@ -81,6 +81,9 @@ $messages['searching'] = 'A pesquisar...';
$messages['checking'] = 'A verificar...';
$messages['nospellerrors'] = 'Não foi encontrado nenhum erro ortográfico';
$messages['folderdeleted'] = 'Pasta eliminada com sucesso';
+$messages['foldersubscribed'] = 'Subscrição da pasta concluída com sucesso';
+$messages['folderunsubscribed'] = 'Subscrição da pasta cancelada com sucesso';
+$messages['folderpurged'] = 'Pasta eliminada com sucesso';
$messages['deletedsuccessfully'] = 'Eliminado com sucesso';
$messages['converting'] = 'A remover a formatação...';
$messages['messageopenerror'] = 'Não foi possível carregar a mensagem';
@@ -97,7 +100,6 @@ $messages['markingmessage'] = 'A marcar mensagens...';
$messages['receiptsent'] = 'Recibo de leitura enviadocom sucesso';
$messages['errorsendingreceipt'] = 'Não foi possível enviar o recibo';
$messages['nodeletelastidentity'] = 'Esta é a última identidade, não é possível eliminá-la.';
-$messages['addsubfolderhint'] = 'Esta pasta será criada como uma sub-pasta da que está seleccionada';
$messages['forbiddencharacter'] = 'O nome da pasta contém um caractere inválido';
$messages['selectimportfile'] = 'Por favor seleccione um ficheiro para carregar';
$messages['addresswriterror'] = 'Não é possível escrever no livro de endereços seleccionado';
@@ -131,5 +133,9 @@ $messages['messagemoved'] = 'Mensagens movidas com sucesso';
$messages['messagecopied'] = 'Mensagens copiadas com sucesso';
$messages['messagemarked'] = 'Mensagens marcadas com sucesso';
$messages['autocompletechars'] = 'Indique pelo menos $min caracteres para auto completar';
+$messages['namecannotbeempty'] = 'O nome não pode estar em branco';
+$messages['nametoolong'] = 'O nome é demasiado longo';
+$messages['folderupdated'] = 'Actualização da pasta concluída com sucesso';
+$messages['foldercreated'] = 'Pasta criada com sucesso';
-?> \ No newline at end of file
+?>
diff --git a/program/localization/ro_RO/labels.inc b/program/localization/ro_RO/labels.inc
index 6f77b1fed..83778a081 100644
--- a/program/localization/ro_RO/labels.inc
+++ b/program/localization/ro_RO/labels.inc
@@ -310,9 +310,6 @@ $labels['subscribed'] = 'ÃŽnscris';
$labels['messagecount'] = 'Mesaje';
$labels['create'] = 'Creează';
$labels['createfolder'] = 'Creează dosar nou';
-$labels['rename'] = 'RedenumeÅŸte';
-$labels['renamefolder'] = 'RedenumeÅŸte dosar';
-$labels['deletefolder'] = 'Åžterge dosar';
$labels['managefolders'] = 'Administrează dosare';
$labels['specialfolders'] = 'Dosare speciale';
$labels['sortby'] = 'Sortează după';
diff --git a/program/localization/ro_RO/messages.inc b/program/localization/ro_RO/messages.inc
index 8027f427a..8ced7d260 100644
--- a/program/localization/ro_RO/messages.inc
+++ b/program/localization/ro_RO/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi c
$messages['deletemessagesconfirm'] = 'Chiar doriţi să ştergeţi mesajele selectate ?';
$messages['deletefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi acest dosar?';
$messages['purgefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi toate mesajele din acest dosar?';
-$messages['foldercreating'] = 'Se creează dosarul...';
$messages['folderdeleting'] = 'Se ÅŸterge dosarul...';
-$messages['folderrenaming'] = 'Se redenumeÅŸte dosarul...';
$messages['foldermoving'] = 'Se mută dosarul...';
$messages['formincomplete'] = 'Formularul nu a fost completat corect';
$messages['noemailwarning'] = 'Vă rugăm să introduceţi o adresă de e-mail validă';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Copiere mesaj...';
$messages['receiptsent'] = 'Confirmarea de citire a fost trimisă cu succes';
$messages['errorsendingreceipt'] = 'Confirmarea nu a putut fi trimisă';
$messages['nodeletelastidentity'] = 'Nu puteţi şterge această identitate, este ultima.';
-$messages['addsubfolderhint'] = 'Acest dosar va fi creat ca subdosar al celui selectat.';
$messages['forbiddencharacter'] = 'Numele dosarului conţine un caracter nepermis.';
$messages['selectimportfile'] = 'Va rugăm să selectaţi fişierul pentru încărcare';
$messages['addresswriterror'] = 'Agenda selectată nu poate fi actualizată';
diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc
index d8e5ff84a..6aeeff4f4 100644
--- a/program/localization/ru_RU/labels.inc
+++ b/program/localization/ru_RU/labels.inc
@@ -40,13 +40,15 @@ $labels['to'] = 'Кому';
$labels['cc'] = 'КопиÑ';
$labels['bcc'] = 'СкрытаÑ';
$labels['replyto'] = 'Ответить';
-$labels['mailreplyto'] = 'Ответить в ÑпиÑке раÑÑылки';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Дата';
$labels['size'] = 'Размер';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'ОрганизациÑ';
+$labels['readstatus'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ';
$labels['reply-to'] = 'Ответить';
-$labels['mailreply-to'] = 'Ответить в ÑпиÑке раÑÑылки';
+$labels['mail-reply-to'] = 'Mail-Reply-To';
+$labels['mail-followup-to'] = 'Mail-Followup-To';
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ $from по $to из $count';
$labels['threadsfromto'] = 'ОбÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ñ $from по $to из $count';
@@ -200,7 +202,7 @@ $labels['maxuploadsize'] = 'МакÑимальный размер файла $si
$labels['addcc'] = 'КопиÑ';
$labels['addbcc'] = 'Ð¡ÐºÑ€Ñ‹Ñ‚Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ';
$labels['addreplyto'] = 'Кому ответить';
-$labels['addmailreplyto'] = 'Кому ответить в ÑпиÑке раÑÑылки';
+$labels['addfollowupto'] = 'Добавить Followup-To';
$labels['mdnrequest'] = 'Отправитель Ñтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñил уведомление о прочтении. Отправить уведомление?';
$labels['receiptread'] = 'Уведомление о прочтении';
$labels['yourmessage'] = 'Это уведомление о прочтении вашего ÑообщениÑ';
@@ -212,6 +214,7 @@ $labels['email'] = 'E-Mail';
$labels['addcontact'] = 'Добавить выбранные контакты в ÑпиÑок контактов';
$labels['editcontact'] = 'Редактировать контакт';
$labels['contacts'] = 'Контакты';
+$labels['contactproperties'] = 'СвойÑтва контакта';
$labels['edit'] = 'Правка';
$labels['cancel'] = 'Отмена';
$labels['save'] = 'Сохранить';
@@ -319,6 +322,7 @@ $labels['previewpanemarkread'] = 'Отмечать проÑмотренные Ñ
$labels['afternseconds'] = 'через $n Ñекунд';
$labels['reqmdn'] = 'Ð’Ñегда запрашивать уведомление о доÑтавке';
$labels['reqdsn'] = 'Ð’Ñегда запрашивать уведомление о ÑоÑтоÑнии доÑтавки';
+$labels['replysamefolder'] = 'Помещать ответы в ту же папку, где находитÑÑ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Ð˜Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸';
@@ -326,9 +330,6 @@ $labels['subscribed'] = 'ПодпиÑан';
$labels['messagecount'] = 'СообщениÑ';
$labels['create'] = 'Создать';
$labels['createfolder'] = 'Создать новую папку';
-$labels['rename'] = 'Переименовать';
-$labels['renamefolder'] = 'Переименовать папку';
-$labels['deletefolder'] = 'Удалить папку';
$labels['managefolders'] = 'Управление папками';
$labels['specialfolders'] = 'ОÑобые папки';
$labels['sortby'] = 'Сортировать по';
diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc
index 75c6d77ce..f37c07816 100644
--- a/program/localization/ru_RU/messages.inc
+++ b/program/localization/ru_RU/messages.inc
@@ -56,9 +56,7 @@ $messages['deletecontactconfirm'] = 'Ð’Ñ‹ дейÑтвительно хотитÐ
$messages['deletemessagesconfirm'] = 'Ð’Ñ‹ дейÑтвительно хотите удалить выбранные ÑообщениÑ?';
$messages['deletefolderconfirm'] = 'Ð’Ñ‹ дейÑтвительно хотите удалить Ñту папку?';
$messages['purgefolderconfirm'] = 'Ð’Ñ‹ дейÑтвительно хотите удалить вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой папке?';
-$messages['foldercreating'] = 'Создание папки...';
$messages['folderdeleting'] = 'Удаление папки...';
-$messages['folderrenaming'] = 'Переименование папки...';
$messages['foldermoving'] = 'Перемещение папки...';
$messages['formincomplete'] = 'Заполнены не вÑе полÑ';
$messages['noemailwarning'] = 'ПожалуйÑта, введите корректный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты';
@@ -95,7 +93,6 @@ $messages['markingmessage'] = 'Выделение Ñообщений...';
$messages['receiptsent'] = 'Уведомление о прочтении отправлено';
$messages['errorsendingreceipt'] = 'Уведомление о прочтении не отправлено';
$messages['nodeletelastidentity'] = 'Ð’Ñ‹ не можете удалить Ñтот профиль, он у Ð²Ð°Ñ Ð¿Ð¾Ñледний';
-$messages['addsubfolderhint'] = 'Эта папка будет Ñоздана как подпапка в текущей папке';
$messages['forbiddencharacter'] = 'Ð˜Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸ Ñодержит недопуÑтимые Ñимволы';
$messages['selectimportfile'] = 'Выберите файл Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸';
$messages['addresswriterror'] = 'Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð°Ð´Ñ€ÐµÑÐ½Ð°Ñ ÐºÐ½Ð¸Ð³Ð° недоÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи';
diff --git a/program/localization/si_LK/labels.inc b/program/localization/si_LK/labels.inc
index 632b9679e..6b3ad9ef8 100644
--- a/program/localization/si_LK/labels.inc
+++ b/program/localization/si_LK/labels.inc
@@ -179,9 +179,6 @@ $labels['subscribed'] = 'à·ƒà·à¶¸à·à¶¢à·’ක';
$labels['messagecount'] = 'පනිවුඩ';
$labels['create'] = 'සෑදීම';
$labels['createfolder'] = 'අඵත් à·†à·à¶½à·Šà¶©à¶»à¶ºà¶šà·Š සෑදීම';
-$labels['rename'] = 'නà·à·€à¶­ නම් කිරීම';
-$labels['renamefolder'] = 'à·†à·à¶½à·Šà¶©à¶»à¶º නà·à·€à¶­ නම් කිරීම';
-$labels['deletefolder'] = 'à·†à·à¶½à·Šà¶©à¶»à¶º මක෠දà·à¶¸à·“ම';
$labels['managefolders'] = 'à·„à·à·ƒà·’රවීම à·„à·à·ƒà·’රවීම';
$labels['sortby'] = 'චිසින් වර්ග කිරීම';
$labels['sortasc'] = 'ආරà·à·„ණ වර්ග කිරීම';
diff --git a/program/localization/si_LK/messages.inc b/program/localization/si_LK/messages.inc
index 61a0b429f..0a5a5fc25 100644
--- a/program/localization/si_LK/messages.inc
+++ b/program/localization/si_LK/messages.inc
@@ -76,6 +76,5 @@ $messages['movingmessage'] = 'පනිවුඩය ගෙනයමින් ප
$messages['receiptsent'] = 'කියවීම් භà·à¶» ගà·à¶±à·“ම à·ƒà·à¶»à·Šà¶®à¶šà·€ යවන ලදී';
$messages['errorsendingreceipt'] = 'කියවීම් භà·à¶» ගà·à¶±à·“ම යà·à·€à·“මට නොහà·à¶š';
$messages['nodeletelastidentity'] = 'අවසà·à¶± අනන්â€à¶ºà¶­à·à·€à¶º මක෠දà·à¶¸à·’ය නොහà·à¶š';
-$messages['addsubfolderhint'] = 'à·†à·à¶½à·Šà¶©à¶»à¶º දà·à¶±à¶§ තà·à¶»à·à¶œà·™à¶± ඇති à·†à·à¶½à·Šà¶©à¶»à¶ºà·™à·„à·’ අනු à·†à·à¶½à·Šà¶©à¶»à¶ºà¶šà·Š ලෙස සෑදේ';
?>
diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc
index e2c22e01e..ce93f888f 100644
--- a/program/localization/sk_SK/labels.inc
+++ b/program/localization/sk_SK/labels.inc
@@ -318,9 +318,6 @@ $labels['subscribed'] = 'Prihlásený k odberu';
$labels['messagecount'] = 'PoÄet správ';
$labels['create'] = 'Vytvoriť';
$labels['createfolder'] = 'Vytvor nový prieÄinok';
-$labels['rename'] = 'Premenovať';
-$labels['renamefolder'] = 'PremenovaÅ¥ prieÄinok';
-$labels['deletefolder'] = 'ZmazaÅ¥ prieÄinok';
$labels['managefolders'] = 'SpravovaÅ¥ prieÄinky';
$labels['specialfolders'] = 'Å peciálne prieÄinky';
$labels['sortby'] = 'Triediť podľa';
diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc
index 4476fd729..315038f96 100644
--- a/program/localization/sk_SK/messages.inc
+++ b/program/localization/sk_SK/messages.inc
@@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Ste si istý, že chcete zmazaÅ¥ zvolený(Ã
$messages['deletemessagesconfirm'] = 'Ste si istý, že chcete zmazať zvolenú(é) správu(y)?';
$messages['deletefolderconfirm'] = 'Ste si istý, že chcete zmazaÅ¥ tento prieÄinok?';
$messages['purgefolderconfirm'] = 'Ste si istý, že chcete zmazaÅ¥ vÅ¡etky správy v tomto prieÄinku?';
-$messages['foldercreating'] = 'Vytvára sa prieÄinok ...';
$messages['folderdeleting'] = 'Odstraňuje sa prieÄinok ...';
-$messages['folderrenaming'] = 'Mení sa názov prieÄinka ...';
$messages['foldermoving'] = 'PreÄinok sa presúva ...';
$messages['formincomplete'] = 'Formulár nie je kompletne vyplnený';
$messages['noemailwarning'] = 'Prosím, vložte platnú emailovú adresu';
@@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Správa sa kopíruje...';
$messages['receiptsent'] = 'Potvrdenie o prijatí správy bolo odoslané';
$messages['errorsendingreceipt'] = 'Potvrdenie o prijatí správy sa nedalo odoslať';
$messages['nodeletelastidentity'] = 'Identita sa nedá odstrániť, je posledná a musí zostať.';
-$messages['addsubfolderhint'] = 'Tento prieÄinok bude vytvorený ako podprieÄinok aktuálne zvoleného prieÄinka';
$messages['forbiddencharacter'] = 'Názov prieÄinka obsahuje nepovolený znak';
$messages['selectimportfile'] = 'Zvoľte súbor, ktorý chcete naÄítaÅ¥';
$messages['addresswriterror'] = 'Zvolený adresár kontaktov je iba na Äítanie';
diff --git a/program/localization/sl_SI/labels.inc b/program/localization/sl_SI/labels.inc
index 8b90a004c..191a55251 100644
--- a/program/localization/sl_SI/labels.inc
+++ b/program/localization/sl_SI/labels.inc
@@ -39,16 +39,15 @@ $labels['to'] = 'Prejemnik';
$labels['cc'] = 'Kp';
$labels['bcc'] = 'Skp';
$labels['replyto'] = 'Odgovor na';
-$labels['mailreplyto'] = 'Odgovor na';
-$labels['mailfollowupto'] = 'Odgovor na';
+$labels['followupto'] = 'Odgovor na';
$labels['date'] = 'Datum';
$labels['size'] = 'Velikost';
$labels['priority'] = 'Prioriteta';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Status';
$labels['reply-to'] = 'Odgovor na';
-$labels['mailreply-to'] = 'Odgovor na';
-$labels['mailfollowup-to'] = 'Odgovor na';
+$labels['mail-reply-to'] = 'Odgovor na';
+$labels['mail-followup-to'] = 'Odgovor na';
$labels['mailboxlist'] = 'Mape';
$labels['messagesfromto'] = 'SporoÄila $from do $to od $count';
$labels['threadsfromto'] = 'Nit $from do $to od $count';
@@ -202,8 +201,7 @@ $labels['maxuploadsize'] = 'NajveÄja dovoljena velikost datoteke je $size';
$labels['addcc'] = 'Dodaj Kp';
$labels['addbcc'] = 'Dodaj Skp';
$labels['addreplyto'] = 'Dodaj naslov za odgovor';
-$labels['addmailreplyto'] = 'Dodaj naslov za odgovor';
-$labels['addmailfollowupto'] = 'Dodaj naslov za odgovor';
+$labels['addfollowupto'] = 'Dodaj naslov za odgovor';
$labels['mdnrequest'] = 'PoÅ¡iljatelj tega sporoÄila je zaprosil za potrdilo o branju. Želite o tem obvestiti poÅ¡iljatelja?';
$labels['receiptread'] = 'Potrdilo o branju';
$labels['yourmessage'] = 'To je potrdilo o branju.';
@@ -329,9 +327,6 @@ $labels['subscribed'] = 'Vpisan';
$labels['messagecount'] = 'SporoÄila';
$labels['create'] = 'Ustvari';
$labels['createfolder'] = 'Ustvari novo mapo';
-$labels['rename'] = 'Preimenuj';
-$labels['renamefolder'] = 'Preimenuj mapo';
-$labels['deletefolder'] = 'Izbriši mapo';
$labels['managefolders'] = 'Uredi mape';
$labels['specialfolders'] = 'Posebne mape';
$labels['sortby'] = 'Uredi po';
diff --git a/program/localization/sl_SI/messages.inc b/program/localization/sl_SI/messages.inc
index 7570919b8..689685873 100644
--- a/program/localization/sl_SI/messages.inc
+++ b/program/localization/sl_SI/messages.inc
@@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Ste prepriÄani, da želite izbrisati oznaÄ
$messages['deletemessagesconfirm'] = 'Ste prepriÄani, da želite izbrisati oznaÄeno(a) sporoÄilo(a)?';
$messages['deletefolderconfirm'] = 'Ste prepriÄani, da želite to mapo izbrisati?';
$messages['purgefolderconfirm'] = 'Ste prepriÄani, da želite izbrisati vsa sporoÄila v mapi?';
-$messages['foldercreating'] = 'Ustvarjanje mape...';
$messages['folderdeleting'] = 'Brisanje mape...';
-$messages['folderrenaming'] = 'Preimenovanje mape...';
$messages['foldermoving'] = 'Premikanje mape...';
$messages['formincomplete'] = 'Obrazec ni v celoti izpolnjen';
$messages['noemailwarning'] = 'Vnesite veljaven elektronski naslov';
@@ -89,7 +87,6 @@ $messages['copyingmessage'] = 'Kopiranje sporoÄila...';
$messages['receiptsent'] = 'SporoÄilo o branju je bilo uspeÅ¡no poslano';
$messages['errorsendingreceipt'] = 'SporoÄila o branju ni bilo mogoÄe poslati';
$messages['nodeletelastidentity'] = 'Te identitete ni mogoÄe izbrisati, saj je edina.';
-$messages['addsubfolderhint'] = 'Ta mapa bo ustvarjena kot podmapa od izbrane mape.';
$messages['forbiddencharacter'] = 'Ime mape vsebuje nedovoljen znak';
$messages['selectimportfile'] = 'Izberite datoteko, ki jo želite prenesti';
$messages['addresswriterror'] = 'Izbran imenik ni zapisljiv';
diff --git a/program/localization/sq_AL/labels.inc b/program/localization/sq_AL/labels.inc
index 2e0f437b2..51ffb7aa8 100644
--- a/program/localization/sq_AL/labels.inc
+++ b/program/localization/sq_AL/labels.inc
@@ -180,9 +180,6 @@ $labels['subscribed'] = 'Regjistruar';
$labels['messagecount'] = 'Mesazhe';
$labels['create'] = 'Krijo';
$labels['createfolder'] = 'Krijo kuti të re';
-$labels['rename'] = 'Riemëro';
-$labels['renamefolder'] = 'Riemëro kutinë';
-$labels['deletefolder'] = 'Fshi kutinë';
$labels['managefolders'] = 'Sistemo kutitë';
$labels['sortby'] = 'Rradhit sipas';
$labels['sortasc'] = 'Rradhitje rritëse';
diff --git a/program/localization/sq_AL/messages.inc b/program/localization/sq_AL/messages.inc
index d5bcad621..4af0b1b37 100644
--- a/program/localization/sq_AL/messages.inc
+++ b/program/localization/sq_AL/messages.inc
@@ -77,6 +77,5 @@ $messages['movingmessage'] = 'Po lëviz mesazhin...';
$messages['receiptsent'] = 'U dërgua me sukses një njoftim leximi';
$messages['errorsendingreceipt'] = 'Nuk mund të dërgohet njoftimi';
$messages['nodeletelastidentity'] = 'Ju nuk mund ta fshini këtë identitet sepse nuk ju ka mbetur tjetër.';
-$messages['addsubfolderhint'] = 'Kjo kuti do të krijohet si një nënkuti e asaj që është e zgjedhur';
?>
diff --git a/program/localization/sr_CS/labels.inc b/program/localization/sr_CS/labels.inc
index 780e6d675..64f5f373e 100644
--- a/program/localization/sr_CS/labels.inc
+++ b/program/localization/sr_CS/labels.inc
@@ -180,9 +180,6 @@ $labels['subscribed'] = 'ПотпиÑана';
$labels['messagecount'] = 'Поруке';
$labels['create'] = 'Креирај';
$labels['createfolder'] = 'Креирај нову фаÑциклу';
-$labels['rename'] = 'Преименуј';
-$labels['renamefolder'] = 'Преименуј фаÑциклу';
-$labels['deletefolder'] = 'Обриши фаÑциклу';
$labels['managefolders'] = 'ПодеÑи фаÑциклу';
$labels['sortby'] = 'Сортирај по';
$labels['sortasc'] = 'Сортирај раÑтуће';
diff --git a/program/localization/sr_CS/messages.inc b/program/localization/sr_CS/messages.inc
index 4756b5cec..76f178c45 100644
--- a/program/localization/sr_CS/messages.inc
+++ b/program/localization/sr_CS/messages.inc
@@ -77,6 +77,5 @@ $messages['movingmessage'] = 'Премештам поруку...';
$messages['receiptsent'] = 'УÑпешно поÑлато обавештење о приÑпећу';
$messages['errorsendingreceipt'] = 'ÐеуÑпело Ñлање обавештења о приÑпећу';
$messages['nodeletelastidentity'] = 'Ðе можете обриÑати овај идентитет, он Вам је поÑледњи.';
-$messages['addsubfolderhint'] = 'Ова фаÑцикла ће бити креирана као подфаÑцикла тренутне';
?>
diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc
index 3519e2b91..55dfddad0 100644
--- a/program/localization/sv_SE/labels.inc
+++ b/program/localization/sv_SE/labels.inc
@@ -40,12 +40,12 @@ $labels['to'] = 'Mottagare';
$labels['cc'] = 'Kopia';
$labels['bcc'] = 'Hemlig kopia';
$labels['replyto'] = 'Svara till';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Datum';
$labels['size'] = 'Storlek';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisation';
+$labels['readstatus'] = 'Lässtatus';
$labels['reply-to'] = 'Svara till';
$labels['mail-reply-to'] = 'Mail-Reply-To';
$labels['mail-followup-to'] = 'Mail-Followup-To';
@@ -202,8 +202,7 @@ $labels['maxuploadsize'] = 'Tillåten filstorlek är $size';
$labels['addcc'] = 'Kopia';
$labels['addbcc'] = 'Hemlig kopia';
$labels['addreplyto'] = 'Svara till';
-$labels['addmailreplyto'] = 'Lägg till Mail-Reply-To';
-$labels['addmailfollowupto'] = 'Lägg till Mail-Followup-To';
+$labels['addfollowupto'] = 'Lägg till Mail-Followup-To';
$labels['mdnrequest'] = 'Avsändaren har begärt mottagarkvitto för det här meddelandet. Vill du skicka ett mottagarkvitto?';
$labels['receiptread'] = 'Mottagarkvitto (läst)';
$labels['yourmessage'] = 'Det här är ett mottagarkvitto för ditt meddelande';
@@ -215,6 +214,7 @@ $labels['email'] = 'E-post';
$labels['addcontact'] = 'Lägg till ny kontakt';
$labels['editcontact'] = 'Redigera kontakt';
$labels['contacts'] = 'Kontakter';
+$labels['contactproperties'] = 'Kontaktegenskaper';
$labels['edit'] = 'Redigera';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Spara';
@@ -322,6 +322,7 @@ $labels['previewpanemarkread'] = 'Märk meddelande som läst vid visning';
$labels['afternseconds'] = 'Efter $n sekunder';
$labels['reqmdn'] = 'Begär alltid mottagningskvitto';
$labels['reqdsn'] = 'Begär alltid leveransstatusmeddelande';
+$labels['replysamefolder'] = 'Placera svar i samma katalog som besvarat meddelande';
$labels['folder'] = 'Katalog';
$labels['folders'] = 'Kataloger';
$labels['foldername'] = 'Katalognamn';
@@ -329,9 +330,6 @@ $labels['subscribed'] = 'Ansluten';
$labels['messagecount'] = 'Meddelanden';
$labels['create'] = 'Skapa';
$labels['createfolder'] = 'Ny katalog';
-$labels['rename'] = 'Ändra namn';
-$labels['renamefolder'] = 'Ändra katalognamn';
-$labels['deletefolder'] = 'Radera katalog';
$labels['managefolders'] = 'Hantera kataloger';
$labels['specialfolders'] = 'Speciella kataloger';
$labels['sortby'] = 'Sortera på';
diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc
index 1933d73ce..6e2a419fa 100644
--- a/program/localization/sv_SE/messages.inc
+++ b/program/localization/sv_SE/messages.inc
@@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Vill du verkligen radera valda kontakter?';
$messages['deletemessagesconfirm'] = 'Vill du verkligen ta bort valda meddelanden?';
$messages['deletefolderconfirm'] = 'Vill du verkligen radera den här katalogen?';
$messages['purgefolderconfirm'] = 'Vill du verkligen radera alla meddelanden i den här katalogen?';
-$messages['foldercreating'] = 'Skapar katalog...';
$messages['folderdeleting'] = 'Raderar katalog...';
-$messages['folderrenaming'] = 'Namnändrar katalog...';
$messages['foldermoving'] = 'Flyttar katalog...';
$messages['formincomplete'] = 'Formuläret var inte ifyllt i sin helhet';
$messages['noemailwarning'] = 'Vänligen ange en giltig adress';
@@ -91,10 +89,11 @@ $messages['sourceisreadonly'] = 'Denna adresskälla är skrivskyddad';
$messages['errorsavingcontact'] = 'Kunde inte spara kontaktadressen';
$messages['movingmessage'] = 'Flyttar meddelande...';
$messages['copyingmessage'] = 'Kopierar meddelande...';
+$messages['deletingmessage'] = 'Raderar meddelande...';
+$messages['markingmessage'] = 'Markerar meddelande...';
$messages['receiptsent'] = 'Mottagarkvitto har skickats';
$messages['errorsendingreceipt'] = 'Kunde inte skicka mottagarkvitto';
$messages['nodeletelastidentity'] = 'Du kan inte radera den här identiteten, det är din sista.';
-$messages['addsubfolderhint'] = 'Den här katalogen kommer att skapas som en underkatalog till den valda';
$messages['forbiddencharacter'] = 'Katalognamnet innehåller otillåtna tecken';
$messages['selectimportfile'] = 'Välj en fil att ladda upp';
$messages['addresswriterror'] = 'Angiven adressbok är skrivskyddad';
@@ -118,5 +117,15 @@ $messages['emailformaterror'] = 'Felaktig adress: $email';
$messages['toomanyrecipients'] = 'Förmånga mottagare. Minska antalet till högst $max.';
$messages['maxgroupmembersreached'] = 'Antalet gruppmedlemmar får inte överstiga $max';
$messages['internalerror'] = 'Ett internt fel uppstod. Vänligen försök igen.';
+$messages['contactdelerror'] = 'Kunde inte radera kontakt';
+$messages['contactdeleted'] = 'Kontakt raderad';
+$messages['groupdeleted'] = 'Grupp raderad';
+$messages['grouprenamed'] = 'Gruppnamn ändrat';
+$messages['groupcreated'] = 'Grupp skapad';
+$messages['messagedeleted'] = 'Meddelande raderat';
+$messages['messagemoved'] = 'Meddelande flyttat';
+$messages['messagecopied'] = 'Meddelande kopierat';
+$messages['messagemarked'] = 'Meddelande markerat';
+$messages['autocompletechars'] = 'Ange minst $min tecken för automatisk komplettering';
?>
diff --git a/program/localization/ta_IN/labels.inc b/program/localization/ta_IN/labels.inc
index 9492ad999..2045c7b06 100644
--- a/program/localization/ta_IN/labels.inc
+++ b/program/localization/ta_IN/labels.inc
@@ -272,9 +272,6 @@ $labels['subscribed'] = 'சநà¯à®¤à®¾';
$labels['messagecount'] = 'செயà¯à®¤à®¿à®•à®³à¯';
$labels['create'] = 'உரà¯à®µà®¾à®•à¯à®•à¯';
$labels['createfolder'] = 'பà¯à®¤à¯ அடைவ௠உரà¯à®µà®¾à®•à¯à®•à¯';
-$labels['rename'] = 'மறà¯à®ªà¯†à®¯à®°à®¿à®Ÿà¯';
-$labels['renamefolder'] = 'அடைவை மறà¯à®ªà¯†à®¯à®°à®¿à®Ÿà¯';
-$labels['deletefolder'] = 'அடைவை நீகà¯à®•à¯';
$labels['managefolders'] = 'அடைவà¯à®•à®³à¯ˆ நிறà¯à®µà®•à®¿';
$labels['specialfolders'] = 'சிறபà¯à®ªà¯ அடைவà¯à®•à®³à¯';
$labels['sortby'] = 'வாரியாக அடà¯à®•à¯à®•à¯';
diff --git a/program/localization/ta_IN/messages.inc b/program/localization/ta_IN/messages.inc
index 40684a55b..7f722f6fb 100644
--- a/program/localization/ta_IN/messages.inc
+++ b/program/localization/ta_IN/messages.inc
@@ -50,9 +50,7 @@ $messages['deletecontactconfirm'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤
$messages['deletemessagesconfirm'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ செயà¯à®¤à®¿à®•à®³à¯ˆ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
$messages['deletefolderconfirm'] = 'நீஙà¯à®•à®³à¯ இநà¯à®¤ அடைவை நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
$messages['purgefolderconfirm'] = 'நீஙà¯à®•à®³à¯ இநà¯à®¤ அடைவிலிரà¯à®•à¯à®•à¯à®®à¯ எலà¯à®²à®¾ செயà¯à®¤à®¿à®•à®³à¯ˆà®¯à¯à®®à¯ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
-$messages['foldercreating'] = 'அடைவை உரà¯à®µà®¾à®•à¯à®•à¯à®•à®¿à®±à®¤à¯...';
$messages['folderdeleting'] = 'அடைவை நீகà¯à®•à¯à®•à®¿à®±à®¤à¯...';
-$messages['folderrenaming'] = 'அடைவை மறà¯à®ªà¯†à®¯à®°à®¿à®Ÿà¯à®•à®¿à®±à®¤à¯...';
$messages['foldermoving'] = 'அடைவை நகரà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯...';
$messages['formincomplete'] = 'விணà¯à®£à®ªà¯à®ªà®¤à¯à®¤à¯ˆ à®®à¯à®´à¯à®®à¯ˆà®¯à®¾à®• நிறைவ௠செயà¯à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['noemailwarning'] = 'தயவ௠செயà¯à®¤à¯ உணà¯à®®à¯ˆà®¯à®¾à®© மினà¯à®©à®žà¯à®šà®²à¯ˆ எழà¯à®¤à¯à®™à¯à®•à®³à¯';
@@ -86,7 +84,6 @@ $messages['movingmessage'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯à
$messages['receiptsent'] = 'படிதà¯à®¤ சீடà¯à®Ÿà¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['errorsendingreceipt'] = 'சீடà¯à®Ÿà¯ˆ அனà¯à®ªà¯à®ª à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['nodeletelastidentity'] = 'நீஙà¯à®•à®³à¯ இநà¯à®¤ அடையாளதà¯à®¤à¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ இத௠தான௠கடைசி';
-$messages['addsubfolderhint'] = 'இநà¯à®¤ அடைவ௠இபà¯à®ªà¯‡à®¾à®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à®©à¯ தà¯à®£à¯ˆ அடைவாக உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®®à¯';
$messages['forbiddencharacter'] = 'அடைவ௠பெயரில௠தடை செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯ உளà¯à®³à®¤à¯';
$messages['selectimportfile'] = 'தயவ௠செயà¯à®¤à¯ à®à®±à¯à®±à¯à®µà®¤à®±à¯à®•à¯ ஒர௠கோபà¯à®ªà¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®™à¯à®•à®³à¯';
$messages['addresswriterror'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ தொடரà¯à®ªà¯à®•à®³à®¿à®²à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯';
diff --git a/program/localization/th_TH/labels.inc b/program/localization/th_TH/labels.inc
index 4daa87bbb..3a6ea4948 100644
--- a/program/localization/th_TH/labels.inc
+++ b/program/localization/th_TH/labels.inc
@@ -162,9 +162,6 @@ $labels['foldername'] = 'ชื่อà¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
$labels['subscribed'] = 'ลงชื่อ';
$labels['create'] = 'สร้าง';
$labels['createfolder'] = 'สร้างà¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
-$labels['rename'] = 'เปลื่ยนชื่อ';
-$labels['renamefolder'] = 'เปลี่ยนชื่อà¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
-$labels['deletefolder'] = 'ลบà¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
$labels['managefolders'] = 'จัดà¸à¸²à¸£à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
$labels['sortby'] = 'เรียงตาม';
$labels['sortasc'] = 'เรียงจาà¸à¸«à¸™à¹‰à¸²à¹„ปหลัง';
diff --git a/program/localization/tr_TR/labels.inc b/program/localization/tr_TR/labels.inc
index fc1e0bdd2..31707336d 100644
--- a/program/localization/tr_TR/labels.inc
+++ b/program/localization/tr_TR/labels.inc
@@ -313,9 +313,6 @@ $labels['subscribed'] = 'Abonelik';
$labels['messagecount'] = 'Postalar';
$labels['create'] = 'OluÅŸtur';
$labels['createfolder'] = 'Yeni klasör oluştur';
-$labels['rename'] = 'Yeniden adlandır';
-$labels['renamefolder'] = 'Klasörü yeniden adlandır';
-$labels['deletefolder'] = 'Klasörü sil';
$labels['managefolders'] = 'Klasörleri düzenle';
$labels['specialfolders'] = 'Özel klasörler';
$labels['sortby'] = 'Sırala';
diff --git a/program/localization/tr_TR/messages.inc b/program/localization/tr_TR/messages.inc
index 2d057d35b..bab14905e 100644
--- a/program/localization/tr_TR/messages.inc
+++ b/program/localization/tr_TR/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Seçili kişileri silmek istediğinizden em
$messages['deletemessagesconfirm'] = 'Seçili postaları silmek istediğinizden emin misiniz?';
$messages['deletefolderconfirm'] = 'Bu klasörü silmek istediğinizden emin misiniz?';
$messages['purgefolderconfirm'] = 'Bu klasördeki tüm postaları silmek istediğinizden emin misiniz?';
-$messages['foldercreating'] = 'Klasör oluştuluyor...';
$messages['folderdeleting'] = 'Klasör siliniyor...';
-$messages['folderrenaming'] = 'Klasör yeniden adlandırılıyor...';
$messages['foldermoving'] = 'Klasör taşınıyor...';
$messages['formincomplete'] = 'Form tam olarak doldurulmadı';
$messages['noemailwarning'] = 'Lütfen geçerli bir e-posta adresi girin';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Posta kopyalanıyor...';
$messages['receiptsent'] = 'Okundu onayı gönderildi';
$messages['errorsendingreceipt'] = 'Okundu onayı gönderilemedi';
$messages['nodeletelastidentity'] = 'Son kimliğiniz olduğu için bu kimliği silemezsiniz';
-$messages['addsubfolderhint'] = 'Bu klasör, şu an seçili olanın alt klasörü olarak oluşturulacak';
$messages['forbiddencharacter'] = 'Klasör ismi yasaklanmış bir karakter içeriyor';
$messages['selectimportfile'] = 'Lütfen yüklenecek dosyayı seçin';
$messages['addresswriterror'] = 'Seçili adres defterine yazılamaz';
diff --git a/program/localization/uk_UA/labels.inc b/program/localization/uk_UA/labels.inc
index be69f41af..877682dd1 100644
--- a/program/localization/uk_UA/labels.inc
+++ b/program/localization/uk_UA/labels.inc
@@ -38,15 +38,15 @@ $labels['to'] = 'Кому';
$labels['cc'] = 'КопіÑ';
$labels['bcc'] = 'Прихована';
$labels['replyto'] = 'Ð—Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ñ Ð°Ð´Ñ€ÐµÑа';
-$labels['mailreplyto'] = 'Mail-Reply-To';
-$labels['mailfollowupto'] = 'Mail-Followup-To';
+$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Дата';
$labels['size'] = 'Розмір';
$labels['priority'] = 'Пріоритет';
$labels['organization'] = 'ОрганізаціÑ';
+$labels['readstatus'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ';
$labels['reply-to'] = 'ВідповіÑти';
-$labels['mailreply-to'] = 'Mail-Reply-To';
-$labels['mailfollowup-to'] = 'Mail-Followup-To';
+$labels['mail-reply-to'] = 'Mail-Reply-To';
+$labels['mail-followup-to'] = 'Mail-Followup-To';
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· $from по $to із $count';
$labels['threadsfromto'] = 'ÐžÐ±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· $from по $to із $count';
@@ -200,8 +200,7 @@ $labels['maxuploadsize'] = 'МакÑимальний розмір файлу $si
$labels['addcc'] = 'Додати копію';
$labels['addbcc'] = 'Додати приховану копію';
$labels['addreplyto'] = 'Додати зворотню адреÑу';
-$labels['addmailreplyto'] = 'Додати Mail-Reply-To';
-$labels['addmailfollowupto'] = 'Додати Mail-Followup-To';
+$labels['addfollowupto'] = 'Додати Followup-To';
$labels['mdnrequest'] = 'Відправник цього лиÑта запитав про прочитаннÑ. Повідомити відправника?';
$labels['receiptread'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ прочитаннÑ';
$labels['yourmessage'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð’Ð°ÑˆÐ¾Ð³Ð¾ лиÑта';
@@ -213,6 +212,7 @@ $labels['email'] = 'Електронна адреÑа';
$labels['addcontact'] = 'Додати вибрані контакти до ÑпиÑку контактів';
$labels['editcontact'] = 'Редагувати контакт';
$labels['contacts'] = 'Контакти';
+$labels['contactproperties'] = 'ВлаÑтивоÑÑ‚Ñ– контакта';
$labels['edit'] = 'Правка';
$labels['cancel'] = 'СкаÑувати';
$labels['save'] = 'Зберегти';
@@ -320,6 +320,7 @@ $labels['previewpanemarkread'] = 'Позначити переглÑнуті ли
$labels['afternseconds'] = 'через $n Ñекунд';
$labels['reqmdn'] = 'Завжди вимагати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ доÑтавку';
$labels['reqdsn'] = 'Завжди вимагати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð´Ð¾Ñтавки';
+$labels['replysamefolder'] = 'РозміÑтити відповіді у тій же папці, де знаходитьÑÑ Ð¾Ñ€Ð¸Ð³Ñ–Ð½Ð°Ð»';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Ðазва папки';
@@ -327,9 +328,6 @@ $labels['subscribed'] = 'ПідпиÑані';
$labels['messagecount'] = 'ЛиÑти';
$labels['create'] = 'Створити';
$labels['createfolder'] = 'Створити нову папку';
-$labels['rename'] = 'Перейменувати';
-$labels['renamefolder'] = 'Перейменувати папку';
-$labels['deletefolder'] = 'Видалити папку';
$labels['managefolders'] = 'ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ð¿ÐºÐ°Ð¼Ð¸';
$labels['specialfolders'] = 'ОÑобливі папки';
$labels['sortby'] = 'ВідÑортувати за';
diff --git a/program/localization/uk_UA/messages.inc b/program/localization/uk_UA/messages.inc
index 6ec33e506..c917c318b 100644
--- a/program/localization/uk_UA/messages.inc
+++ b/program/localization/uk_UA/messages.inc
@@ -23,6 +23,7 @@ $messages['cookiesdisabled'] = 'Ваш переглÑдач не приймає
$messages['sessionerror'] = 'Ваша ÑеÑÑ–Ñ Ð·Ð°Ñтаріла';
$messages['imaperror'] = 'Ðевдале з`Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· IMAP Ñервером';
$messages['servererror'] = 'Помилка Ñервера!';
+$messages['servererrormsg'] = 'Помилка Ñервера: $msg';
$messages['invalidrequest'] = 'Ðевірний запит! Дані не збережено.';
$messages['nomessagesfound'] = 'ЛиÑтів не знайдено';
$messages['loggedout'] = 'Вашу ÑеÑÑ–ÑŽ завершено. Ð’Ñього найкращого!';
@@ -54,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Ви дійÑно бажаєте видал
$messages['deletemessagesconfirm'] = 'Ви дійÑно бажаєте видалити вибрані лиÑти?';
$messages['deletefolderconfirm'] = 'Ви дійÑно бажаєте видалити цю папку?';
$messages['purgefolderconfirm'] = 'Ви дійÑно бажаєте видалити вÑÑ– лиÑти у цій папці?';
-$messages['foldercreating'] = 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð°Ð¿ÐºÐ¸...';
$messages['folderdeleting'] = 'Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ð¿ÐºÐ¸...';
-$messages['folderrenaming'] = 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ð¿ÐºÐ¸...';
$messages['foldermoving'] = 'ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð°Ð¿ÐºÐ¸...';
$messages['formincomplete'] = 'Заповнено не вÑÑ– полÑ';
$messages['noemailwarning'] = 'Будь лаÑка, введіть коректну адреÑу електронної пошти';
@@ -88,10 +87,11 @@ $messages['sourceisreadonly'] = 'Дане джерело Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ñтуп
$messages['errorsavingcontact'] = 'Ðеможливо зберегти адреÑу контакту';
$messages['movingmessage'] = 'ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð»Ð¸Ñта...';
$messages['copyingmessage'] = 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð»Ð¸Ñта...';
+$messages['deletingmessage'] = 'Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð»Ð¸Ñта (ів)';
+$messages['markingmessage'] = 'ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ð¸Ñта (ів)';
$messages['receiptsent'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾';
$messages['errorsendingreceipt'] = 'Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ прочитаннÑ';
$messages['nodeletelastidentity'] = 'Ви не можете видалити цей профіль, він у Ð’Ð°Ñ Ð¾Ñтанній.';
-$messages['addsubfolderhint'] = 'Цю папку буде Ñтворено Ñк підпапку в поточній.';
$messages['forbiddencharacter'] = 'Ім\'Ñ Ð¿Ð°Ð¿ÐºÐ¸ міÑтить заборонені Ñимволи';
$messages['selectimportfile'] = 'Виберіть файл Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ';
$messages['addresswriterror'] = 'Обрана адреÑна книга недоÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу';
@@ -115,5 +115,15 @@ $messages['emailformaterror'] = 'Ðевірна електронна адреÑÐ
$messages['toomanyrecipients'] = 'Занадто багато отримувачів. Зменшіть Ñ—Ñ… чиÑло до $max.';
$messages['maxgroupmembersreached'] = 'ЧиÑло Ð°Ð´Ñ€ÐµÑ Ñƒ групі перевищило макÑимум у $max.';
$messages['internalerror'] = 'Виникла Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Будь лаÑка, Ñпробуйте ще раз';
+$messages['contactdelerror'] = 'Ðеможливо видалити контакт(и)';
+$messages['contactdeleted'] = 'Контакт(и) видалено уÑпішно';
+$messages['groupdeleted'] = 'Група видалена уÑпішно';
+$messages['grouprenamed'] = 'Група перейменована уÑпішно';
+$messages['groupcreated'] = 'Група Ñтворена уÑпішно';
+$messages['messagedeleted'] = 'ЛиÑÑ‚(и) видалено уÑпішно';
+$messages['messagemoved'] = 'ЛиÑÑ‚(и) переміщено уÑпішно';
+$messages['messagecopied'] = 'ЛиÑÑ‚(и) Ñкопійовано уÑпішно';
+$messages['messagemarked'] = 'ЛиÑÑ‚(и) помічено уÑпішно';
+$messages['autocompletechars'] = 'Введіть щонайменьше $min Ñимволів Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ';
?>
diff --git a/program/localization/vi_VN/labels.inc b/program/localization/vi_VN/labels.inc
index 611b5a40c..ece0a5ced 100644
--- a/program/localization/vi_VN/labels.inc
+++ b/program/localization/vi_VN/labels.inc
@@ -205,9 +205,6 @@ $labels['foldername'] = 'Tên thư mục';
$labels['subscribed'] = 'Cho sử dụng';
$labels['create'] = 'Tạo';
$labels['createfolder'] = 'Tạo thư mục mới';
-$labels['rename'] = 'Äổi tên';
-$labels['renamefolder'] = 'Äổi tên thÆ° mục';
-$labels['deletefolder'] = 'Xóa thư mục';
$labels['managefolders'] = 'Quản trị thư mục';
$labels['sortby'] = 'Sắp xếp';
diff --git a/program/localization/zh_CN/labels.inc b/program/localization/zh_CN/labels.inc
index acebdf718..6c3c79ad6 100644
--- a/program/localization/zh_CN/labels.inc
+++ b/program/localization/zh_CN/labels.inc
@@ -311,9 +311,6 @@ $labels['subscribed'] = '已订阅';
$labels['messagecount'] = '邮件数é‡';
$labels['create'] = '建立';
$labels['createfolder'] = '建立新邮件夹';
-$labels['rename'] = 'é‡å‘½å';
-$labels['renamefolder'] = 'é‡å‘½å邮件夹';
-$labels['deletefolder'] = '删除邮件夹';
$labels['managefolders'] = '管ç†é‚®ä»¶å¤¹';
$labels['specialfolders'] = '指定邮件夹';
$labels['sortby'] = '排åº';
diff --git a/program/localization/zh_CN/messages.inc b/program/localization/zh_CN/messages.inc
index 5fc0d3f95..dbe5af585 100644
--- a/program/localization/zh_CN/messages.inc
+++ b/program/localization/zh_CN/messages.inc
@@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = '确定è¦åˆ é™¤å·²é€‰ä¸­çš„è”系人?';
$messages['deletemessagesconfirm'] = '确定è¦åˆ é™¤å·²é€‰ä¸­çš„邮件?';
$messages['deletefolderconfirm'] = '确定è¦åˆ é™¤å·²é€‰ä¸­çš„邮件夹?';
$messages['purgefolderconfirm'] = '是å¦ç¡®è®¤è¦åˆ é™¤å½“å‰é‚®ä»¶å¤¹ä¸­çš„所有邮件?';
-$messages['foldercreating'] = '正在创建邮件夹';
$messages['folderdeleting'] = '正在删除邮件夹';
-$messages['folderrenaming'] = '正在é‡å‘½å邮件夹';
$messages['foldermoving'] = '正在移动目录...';
$messages['formincomplete'] = '当å‰è¡¨å•æœªå¡«å†™å®Œæ•´ï¼Œè¯·å®Œæ•´å¡«å†™';
$messages['noemailwarning'] = '请输入一个有效的邮件地å€';
@@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'å¤åˆ¶é‚®ä»¶åˆ°...';
$messages['receiptsent'] = 'æˆåŠŸå‘é€äº†ä¸€ä¸ªå·²è¯»å›žæ‰§';
$messages['errorsendingreceipt'] = '无法å‘é€å›žæ‰§';
$messages['nodeletelastidentity'] = '无法删除这个身份,这是最åŽä¸€ä¸ªã€‚';
-$messages['addsubfolderhint'] = '新建的文件夹将æˆä¸ºæ‰€é€‰æ–‡ä»¶å¤¹çš„å­æ–‡ä»¶å¤¹';
$messages['forbiddencharacter'] = '目录å包å«éšè—字符';
$messages['selectimportfile'] = '请选择è¦ä¸Šä¼ çš„文件';
$messages['addresswriterror'] = '已选择的地å€ç°¿ä¸å¯å†™';
diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc
index c05622edf..886d3a380 100644
--- a/program/localization/zh_TW/labels.inc
+++ b/program/localization/zh_TW/labels.inc
@@ -40,8 +40,7 @@ $labels['to'] = '收件者';
$labels['cc'] = '副本';
$labels['bcc'] = '密件副本';
$labels['replyto'] = '回覆至';
-$labels['mailreplyto'] = '信件回覆至';
-$labels['mailfollowupto'] = '信件跟隨至';
+$labels['followupto'] = '信件跟隨至';
$labels['date'] = '日期';
$labels['size'] = '大å°';
$labels['priority'] = '優先順åº';
@@ -203,8 +202,7 @@ $labels['maxuploadsize'] = '上傳檔案大å°é™åˆ¶ç‚º $size';
$labels['addcc'] = '新增副本';
$labels['addbcc'] = '新增密件副本';
$labels['addreplyto'] = '新增回覆地å€';
-$labels['addmailreplyto'] = '新增 信件回覆至';
-$labels['addmailfollowupto'] = '新增 信件跟隨至';
+$labels['addfollowupto'] = '新增 信件跟隨至';
$labels['mdnrequest'] = '此郵件的寄件者希望在你閱讀此郵件時å—到通知。你想è¦é€šçŸ¥å¯„件者嗎?';
$labels['receiptread'] = '郵件回æ¢ï¼ˆå·²é–±è®€ï¼‰';
$labels['yourmessage'] = '這是你郵件的郵件回æ¢';
@@ -332,9 +330,6 @@ $labels['subscribed'] = '顯示';
$labels['messagecount'] = '郵件數目';
$labels['create'] = '建立';
$labels['createfolder'] = '建立新資料夾';
-$labels['rename'] = 'é‡æ–°å‘½å';
-$labels['renamefolder'] = 'é‡æ–°å‘½å資料夾';
-$labels['deletefolder'] = '刪除資料夾';
$labels['managefolders'] = '管ç†è³‡æ–™å¤¾';
$labels['specialfolders'] = 'é è¨­è³‡æ–™å¤¾è¨­å®š';
$labels['sortby'] = '排åº';
diff --git a/program/localization/zh_TW/messages.inc b/program/localization/zh_TW/messages.inc
index fc3ebbf8e..68c543fc2 100644
--- a/program/localization/zh_TW/messages.inc
+++ b/program/localization/zh_TW/messages.inc
@@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = '你確定è¦åˆªé™¤å·²é¸æ“‡çš„è¯çµ¡äººï¼Ÿ'
$messages['deletemessagesconfirm'] = '你確定è¦åˆªé™¤å·²é¸æ“‡çš„郵件?';
$messages['deletefolderconfirm'] = '你確定è¦åˆªé™¤é€™å€‹è³‡æ–™å¤¾å—Žï¼Ÿ';
$messages['purgefolderconfirm'] = '你確定è¦åˆªé™¤é€™å€‹è³‡æ–™å¤¾è£¡é¢æ‰€æœ‰çš„郵件嗎?';
-$messages['foldercreating'] = '建立資料夾中...';
$messages['folderdeleting'] = '刪除資料夾中...';
-$messages['folderrenaming'] = 'é‡æ–°å‘½å資料夾中...';
$messages['foldermoving'] = '移動資料夾中...';
$messages['formincomplete'] = '這個表單有部分未填,請完整填寫';
$messages['noemailwarning'] = '請輸入一個有效的電å­éƒµä»¶ä½å€';
@@ -96,7 +94,6 @@ $messages['markingmessage'] = '標示訊æ¯...';
$messages['receiptsent'] = '閱讀回æ¢å‚³é€æˆåŠŸ';
$messages['errorsendingreceipt'] = '無法傳é€å›žæ¢';
$messages['nodeletelastidentity'] = 'ä½ ä¸èƒ½åˆªé™¤æ­¤èº«ä»½ï¼Œå› ç‚ºåªå‰©ä¸€å€‹èº«ä»½ã€‚';
-$messages['addsubfolderhint'] = '此資料夾會æˆç‚ºç›®å‰æ‰€é¸è³‡æ–™å¤¾çš„å­è³‡æ–™å¤¾';
$messages['forbiddencharacter'] = '資料夾å稱中包å«éžæ³•çš„å­—å…ƒ';
$messages['selectimportfile'] = 'è«‹é¸æ“‡ä¸€å€‹ä¸Šå‚³çš„檔案';
$messages['addresswriterror'] = '無法寫入é¸æ“‡çš„通訊錄';
@@ -129,5 +126,6 @@ $messages['messagedeleted'] = '訊æ¯æˆåŠŸåˆªé™¤';
$messages['messagemoved'] = '訊æ¯æˆåŠŸç§»å‹•';
$messages['messagecopied'] = '訊æ¯æˆåŠŸè¤‡è£½';
$messages['messagemarked'] = '訊æ¯æˆåŠŸæ¨™ç¤º';
+$messages['autocompletechars'] = '輸入至少 $min å­—å…ƒæ‰èƒ½è‡ªå‹•å®Œæˆè‡ªå‹•å®Œæˆ';
?>
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 828a94f3b..45b95c937 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -267,19 +267,11 @@ function rcmail_compose_headers($attrib)
$param = 'replyto';
$header = 'reply-to';
- case 'mailreplyto':
- case 'mail-reply-to':
+ case 'followupto':
+ case 'followup-to':
if (!$fname) {
- $fname = '_mailreplyto';
- $param = 'mailreplyto';
- $header = 'mail-reply-to';
- }
-
- case 'mailfollowupto':
- case 'mail-followup-to':
- if (!$fname) {
- $fname = '_mailfollowupto';
- $param = 'mailfollowupto';
+ $fname = '_followupto';
+ $param = 'followupto';
$header = 'mail-followup-to';
}
@@ -354,10 +346,10 @@ function rcmail_compose_headers($attrib)
$fvalue = $MESSAGE->get_header('cc');
else if ($header=='bcc' && !empty($MESSAGE->headers->bcc))
$fvalue = $MESSAGE->get_header('bcc');
+ else if ($header=='reply-to' && !empty($MESSAGE->headers->others['mail-reply-to']))
+ $fvalue = $MESSAGE->get_header('mail-reply-to');
else if ($header=='reply-to' && !empty($MESSAGE->headers->replyto))
$fvalue = $MESSAGE->get_header('reply-to');
- else if ($header=='mail-reply-to' && !empty($MESSAGE->headers->others['mail-reply-to']))
- $fvalue = $MESSAGE->get_header('followup-to');
else if ($header=='mail-followup-to' && !empty($MESSAGE->headers->others['mail-followup-to']))
$fvalue = $MESSAGE->get_header('mail-followup-to');
@@ -742,7 +734,7 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
// build reply prefix
$from = array_pop($RCMAIL->imap->decode_address_list($MESSAGE->get_header('from')));
$prefix = sprintf("On %s, %s wrote:",
- $MESSAGE->headers->date, $from['name'] ? $from['name'] : idn_to_utf8($from['email']));
+ $MESSAGE->headers->date, $from['name'] ? $from['name'] : idn_to_utf8($from['mailto']));
if (!$bodyIsHtml) {
$body = preg_replace('/\r?\n/', "\n", $body);
diff --git a/program/steps/mail/copy.inc b/program/steps/mail/copy.inc
index 4cd51d816..8a7c5916b 100644
--- a/program/steps/mail/copy.inc
+++ b/program/steps/mail/copy.inc
@@ -33,7 +33,7 @@ if (!empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) {
if (!$copied) {
// send error message
- $OUTPUT->show_message('errorcopying', 'error');
+ rcmail_display_server_error('errorcopying');
$OUTPUT->send();
exit;
}
@@ -52,5 +52,3 @@ else {
// send response
$OUTPUT->send();
-
-
diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc
index 26f464b0c..3b96dc29c 100644
--- a/program/steps/mail/folders.inc
+++ b/program/steps/mail/folders.inc
@@ -20,55 +20,61 @@
// only process ajax requests
if (!$OUTPUT->ajax_call)
- return;
+ return;
$mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
// send EXPUNGE command
-if ($RCMAIL->action=='expunge')
-{
- $success = $IMAP->expunge($mbox);
+if ($RCMAIL->action == 'expunge') {
- // reload message list if current mailbox
- if ($success && !empty($_REQUEST['_reload']))
- {
- $OUTPUT->command('set_quota', rcmail_quota_content());
- $OUTPUT->command('message_list.clear');
- $RCMAIL->action = 'list';
- return;
- }
- else
- $commands = "// expunged: $success\n";
+ $success = $IMAP->expunge($mbox);
+
+ // reload message list if current mailbox
+ if ($success) {
+ $OUTPUT->show_message('folderexpunged', 'confirmation');
+
+ if (!empty($_REQUEST['_reload'])) {
+ $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('message_list.clear');
+ $RCMAIL->action = 'list';
+ return;
+ }
+ }
+ else {
+ rcmail_display_server_error();
+ }
}
// clear mailbox
-else if ($RCMAIL->action=='purge')
+else if ($RCMAIL->action == 'purge')
{
- $delimiter = $IMAP->get_hierarchy_delimiter();
- $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
- $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/';
+ $delimiter = $IMAP->get_hierarchy_delimiter();
+ $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
+ $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/';
- // we should only be purging trash and junk (or their subfolders)
- if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']
- || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox))
- {
- $success = $IMAP->clear_mailbox($mbox);
-
- if ($success && !empty($_REQUEST['_reload']))
- {
- $OUTPUT->set_env('messagecount', 0);
- $OUTPUT->set_env('pagecount', 0);
- $OUTPUT->command('message_list.clear');
- $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
- $OUTPUT->command('set_unread_count', $mbox, 0);
- $OUTPUT->command('set_quota', rcmail_quota_content());
- $_SESSION['unseen_count'][$mbox] = 0;
- }
- else
- $commands = "// purged: $success";
- }
-}
+ // we should only be purging trash and junk (or their subfolders)
+ if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']
+ || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox)
+ ) {
+ $success = $IMAP->clear_mailbox($mbox);
-$OUTPUT->send($commands);
+ if ($success) {
+ $OUTPUT->show_message('folderpurged', 'confirmation');
+ if (!empty($_REQUEST['_reload'])) {
+ $OUTPUT->set_env('messagecount', 0);
+ $OUTPUT->set_env('pagecount', 0);
+ $OUTPUT->command('message_list.clear');
+ $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
+ $OUTPUT->command('set_unread_count', $mbox, 0);
+ $OUTPUT->command('set_quota', rcmail_quota_content());
+ rcmail_set_unseen_count($mbox, 0);
+ }
+ }
+ else {
+ rcmail_display_server_error();
+ }
+ }
+}
+$OUTPUT->send();
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index c7498d5b1..750cf6f61 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -436,65 +436,6 @@ function rcmail_messagecount_display($attrib)
}
-function rcmail_quota_display($attrib)
- {
- global $OUTPUT;
-
- if (!$attrib['id'])
- $attrib['id'] = 'rcmquotadisplay';
-
- if(isset($attrib['display']))
- $_SESSION['quota_display'] = $attrib['display'];
-
- $OUTPUT->add_gui_object('quotadisplay', $attrib['id']);
-
- $quota = rcmail_quota_content($attrib);
-
- $OUTPUT->add_script('$(document).ready(function(){
- rcmail.set_quota('.json_serialize($quota).')});', 'foot');
-
- return html::span($attrib, '');
- }
-
-
-function rcmail_quota_content($attrib=NULL)
- {
- global $COMM_PATH, $RCMAIL;
-
- $quota = $RCMAIL->imap->get_quota();
- $quota = $RCMAIL->plugins->exec_hook('quota', $quota);
-
- $quota_result = (array) $quota;
- $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
-
- if (!$quota['total'] && $RCMAIL->config->get('quota_zero_as_unlimited')) {
- $quota_result['title'] = rcube_label('unlimited');
- $quota_result['percent'] = 0;
- }
- else if ($quota['total']) {
- if (!isset($quota['percent']))
- $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100));
-
- $title = sprintf('%s / %s (%.0f%%)',
- show_bytes($quota['used'] * 1024), show_bytes($quota['total'] * 1024),
- $quota_result['percent']);
-
- $quota_result['title'] = $title;
-
- if ($attrib['width'])
- $quota_result['width'] = $attrib['width'];
- if ($attrib['height'])
- $quota_result['height'] = $attrib['height'];
- }
- else {
- $quota_result['title'] = rcube_label('unknown');
- $quota_result['percent'] = 0;
- }
-
- return $quota_result;
- }
-
-
function rcmail_get_messagecount_text($count=NULL, $page=NULL)
{
global $RCMAIL, $IMAP;
@@ -545,7 +486,7 @@ function rcmail_send_unread_count($mbox_name, $force=false, $count=null)
{
global $RCMAIL;
- $old_unseen = $_SESSION['unseen_count'][$mbox_name];
+ $old_unseen = rcmail_get_unseen_count($mbox_name);
if ($count === null)
$unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force);
@@ -555,13 +496,33 @@ function rcmail_send_unread_count($mbox_name, $force=false, $count=null)
if ($unseen != $old_unseen || ($mbox_name == 'INBOX'))
$RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX'));
- // @TODO: this data is doubled (session and cache tables) if caching is enabled
- $_SESSION['unseen_count'][$mbox_name] = $unseen;
+ rcmail_set_unseen_count($mbox_name, $unseen);
return $unseen;
}
+function rcmail_set_unseen_count($mbox_name, $count)
+{
+ // @TODO: this data is doubled (session and cache tables) if caching is enabled
+
+ // Make sure we have an array here (#1487066)
+ if (!is_array($_SESSION['unseen_count']))
+ $_SESSION['unseen_count'] = array();
+
+ $_SESSION['unseen_count'][$mbox_name] = $count;
+}
+
+
+function rcmail_get_unseen_count($mbox_name)
+{
+ if (is_array($_SESSION['unseen_count']) && array_key_exists($mbox_name, $_SESSION['unseen_count']))
+ return $_SESSION['unseen_count'][$mbox_name];
+ else
+ return null;
+}
+
+
/**
* Sets message is_safe flag according to 'show_images' option value
*
@@ -966,10 +927,14 @@ function rcmail_message_headers($attrib, $headers=NULL)
else
$header_value = trim($IMAP->decode_header($value));
- $output_headers[$hkey] = array('title' => rcube_label($hkey), 'value' => $header_value, 'raw' => $value);
+ $output_headers[$hkey] = array(
+ 'title' => rcube_label(preg_replace('/(^mail-|-)/', '', $hkey)),
+ 'value' => $header_value, 'raw' => $value
+ );
}
- $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', array('output' => $output_headers, 'headers' => $MESSAGE->headers));
+ $plugin = $RCMAIL->plugins->exec_hook('message_headers_output',
+ array('output' => $output_headers, 'headers' => $MESSAGE->headers));
// compose html table
$table = new html_table(array('cols' => 2));
diff --git a/program/steps/mail/getunread.inc b/program/steps/mail/getunread.inc
index a035f5204..e60f36cae 100644
--- a/program/steps/mail/getunread.inc
+++ b/program/steps/mail/getunread.inc
@@ -28,15 +28,18 @@ if (!empty($a_folders))
$check_all = (bool)$RCMAIL->config->get('check_all_folders');
foreach ($a_folders as $mbox_row) {
- if (!$check_all && isset($_SESSION['unseen_count'][$mbox_row]) && $mbox_row != $current)
- $unseen = $_SESSION['unseen_count'][$mbox_row];
+ $unseen_old = rcmail_get_unseen_count($mbox_row);
+
+ if (!$check_all && $unseen_old !== null && $mbox_row != $current)
+ $unseen = $unseen_old;
else
- $unseen = $IMAP->messagecount($mbox_row, 'UNSEEN', !isset($_SESSION['unseen_count'][$mbox_row]));
+ $unseen = $IMAP->messagecount($mbox_row, 'UNSEEN', $unseen_old === null);
- if ($unseen || !isset($_SESSION['unseen_count'][$mbox_row])) {
+ if ($unseen || $unseen_old === null) {
$OUTPUT->command('set_unread_count', $mbox_row, $unseen, $inbox && $mbox_row == 'INBOX');
}
- $_SESSION['unseen_count'][$mbox_row] = $unseen;
+
+ rcmail_set_unseen_count($mbox_row, $unseen);
}
}
diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc
index 6353be7cc..7e6d294c8 100644
--- a/program/steps/mail/list.inc
+++ b/program/steps/mail/list.inc
@@ -106,8 +106,7 @@ if (isset($a_headers) && count($a_headers))
else {
// handle IMAP errors (e.g. #1486905)
if ($err_code = $IMAP->get_error_code()) {
- $err_str = $IMAP->get_error_str();
- $OUTPUT->show_message('servererrormsg', 'error', array('msg' => $err_str));
+ rcmail_display_server_error();
}
else if ($search_request)
$OUTPUT->show_message('searchnomatch', 'notice');
diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc
index 5411e3f46..1ff4407c5 100644
--- a/program/steps/mail/mark.inc
+++ b/program/steps/mail/mark.inc
@@ -47,7 +47,7 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va
// send error message
if ($_POST['_from'] != 'show')
$OUTPUT->command('list_mailbox');
- $OUTPUT->show_message('errormarking', 'error');
+ rcmail_display_server_error('errormarking');
$OUTPUT->send();
exit;
}
@@ -98,11 +98,11 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va
// update mailboxlist
$mbox = $IMAP->get_mailbox_name();
$unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0;
- $old_unseen = $_SESSION['unseen_count'][$mbox];
+ $old_unseen = rcmail_get_unseen_count($mbox);
if ($old_unseen != $unseen_count) {
$OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX'));
- $_SESSION['unseen_count'][$mbox] = $unseen_count;
+ rcmail_set_unseen_count($mbox, $unseen_count);
}
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count));
diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc
index 3940b6db9..2db3ec31a 100644
--- a/program/steps/mail/move_del.inc
+++ b/program/steps/mail/move_del.inc
@@ -39,7 +39,7 @@ if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && strlen($_POST['_targe
// send error message
if ($_POST['_from'] != 'show')
$OUTPUT->command('list_mailbox');
- $OUTPUT->show_message('errormoving', 'error');
+ rcmail_display_server_error('errormoving');
$OUTPUT->send();
exit;
}
@@ -60,7 +60,7 @@ else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) {
// send error message
if ($_POST['_from'] != 'show')
$OUTPUT->command('list_mailbox');
- $OUTPUT->show_message('errordeleting', 'error');
+ rcmail_display_server_error('errordeleting');
$OUTPUT->send();
exit;
}
@@ -109,11 +109,11 @@ else
// update mailboxlist
$mbox = $IMAP->get_mailbox_name();
$unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0;
- $old_unseen = $_SESSION['unseen_count'][$mbox];
-
+ $old_unseen = rcmail_get_unseen_count($mbox);
+
if ($old_unseen != $unseen_count) {
$OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX'));
- $_SESSION['unseen_count'][$mbox] = $unseen_count;
+ rcmail_set_unseen_count($mbox, $unseen_count);
}
if ($RCMAIL->action=='moveto' && strlen($target)) {
diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
index 90d1c374c..39fb32fc9 100644
--- a/program/steps/mail/search.inc
+++ b/program/steps/mail/search.inc
@@ -124,8 +124,7 @@ if (!empty($result_h)) {
}
// handle IMAP errors (e.g. #1486905)
else if ($err_code = $IMAP->get_error_code()) {
- $err_str = $IMAP->get_error_str();
- $OUTPUT->show_message('servererrormsg', 'error', array('msg' => $err_str));
+ rcmail_display_server_error();
}
else {
$OUTPUT->show_message('searchnomatch', 'notice');
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 796e7782b..09f12ed07 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -70,7 +70,7 @@ function rcmail_encrypt_header($what)
function rcmail_get_identity($id)
{
global $USER, $OUTPUT;
-
+
if ($sql_arr = $USER->get_identity($id)) {
$out = $sql_arr;
$out['mailto'] = $sql_arr['email'];
@@ -100,7 +100,7 @@ function rcmail_fix_emoticon_paths(&$mime_message)
// remove any null-byte characters before parsing
$body = preg_replace('/\x00/', '', $body);
-
+
$searchstr = 'program/js/tiny_mce/plugins/emotions/img/';
$offset = 0;
@@ -193,6 +193,7 @@ function rcmail_email_input_format($mailto, $count=false, $check=true)
return implode(', ', $result);
}
+
/****** compose message ********/
if (strlen($_POST['_draft_saveid']) > 3)
@@ -297,12 +298,12 @@ $headers['From'] = rcube_charset_convert($from_string, RCMAIL_CHARSET, $message_
$headers['To'] = $mailto;
// additional recipients
-if (!empty($mailcc))
+if (!empty($mailcc)) {
$headers['Cc'] = $mailcc;
-
-if (!empty($mailbcc))
+}
+if (!empty($mailbcc)) {
$headers['Bcc'] = $mailbcc;
-
+}
if (!empty($identity_arr['bcc'])) {
$headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc'];
$RECIPIENT_COUNT ++;
@@ -318,36 +319,43 @@ if (($max_recipients = (int) $RCMAIL->config->get('max_recipients')) > 0) {
// add subject
$headers['Subject'] = trim(get_input_value('_subject', RCUBE_INPUT_POST, TRUE, $message_charset));
-if (!empty($identity_arr['organization']))
+if (!empty($identity_arr['organization'])) {
$headers['Organization'] = $identity_arr['organization'];
-
-if (!empty($_POST['_replyto']))
+}
+if (!empty($_POST['_replyto'])) {
$headers['Reply-To'] = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset));
-else if (!empty($identity_arr['reply-to']))
+}
+else if (!empty($identity_arr['reply-to'])) {
$headers['Reply-To'] = rcmail_email_input_format($identity_arr['reply-to'], false, true);
-
-if (!empty($_POST['_mailfollowupto']))
- $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_mailfollowupto', RCUBE_INPUT_POST, TRUE, $message_charset));
-if (!empty($_POST['_mailreplyto']))
- $headers['Mail-Reply-To'] = rcmail_email_input_format(get_input_value('_mailreplyto', RCUBE_INPUT_POST, TRUE, $message_charset));
-
-if (!empty($_SESSION['compose']['reply_msgid']))
+}
+if (!empty($headers['Reply-To'])) {
+ $headers['Mail-Reply-To'] = $headers['Reply-To'];
+}
+if (!empty($_POST['_followupto'])) {
+ $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_followupto', RCUBE_INPUT_POST, TRUE, $message_charset));
+}
+if (!empty($_SESSION['compose']['reply_msgid'])) {
$headers['In-Reply-To'] = $_SESSION['compose']['reply_msgid'];
+}
// remember reply/forward UIDs in special headers
-if (!empty($_SESSION['compose']['reply_uid']) && $savedraft)
+if (!empty($_SESSION['compose']['reply_uid']) && $savedraft) {
$headers['X-Draft-Info'] = array('type' => 'reply', 'uid' => $_SESSION['compose']['reply_uid']);
-else if (!empty($_SESSION['compose']['forward_uid']) && $savedraft)
+}
+else if (!empty($_SESSION['compose']['forward_uid']) && $savedraft) {
$headers['X-Draft-Info'] = array('type' => 'forward', 'uid' => $_SESSION['compose']['forward_uid']);
+}
-if (!empty($_SESSION['compose']['references']))
+if (!empty($_SESSION['compose']['references'])) {
$headers['References'] = $_SESSION['compose']['references'];
+}
if (!empty($_POST['_priority'])) {
$priority = intval($_POST['_priority']);
$a_priorities = array(1=>'highest', 2=>'high', 4=>'low', 5=>'lowest');
- if ($str_priority = $a_priorities[$priority])
+ if ($str_priority = $a_priorities[$priority]) {
$headers['X-Priority'] = sprintf("%d (%s)", $priority, ucfirst($str_priority));
+ }
}
if (!empty($_POST['_receipt'])) {
@@ -359,11 +367,12 @@ if (!empty($_POST['_receipt'])) {
$headers['Message-ID'] = $message_id;
$headers['X-Sender'] = $from;
-if (is_array($headers['X-Draft-Info']))
+if (is_array($headers['X-Draft-Info'])) {
$headers['X-Draft-Info'] = rcmail_draftinfo_encode($headers['X-Draft-Info'] + array('folder' => $_SESSION['compose']['mailbox']));
-
-if (!empty($CONFIG['useragent']))
+}
+if (!empty($CONFIG['useragent'])) {
$headers['User-Agent'] = $CONFIG['useragent'];
+}
// exec hook for header checking and manipulation
$data = $RCMAIL->plugins->exec_hook('message_outgoing_headers', array('headers' => $headers));
@@ -441,13 +450,16 @@ if ($isHtml) {
$MAIL_MIME->setHTMLBody($plugin['body']);
+ // replace emoticons
+ $plugin['body'] = rcmail_replace_emoticons($plugin['body']);
+
// add a plain text version of the e-mail as an alternative part.
$h2t = new html2text($plugin['body'], false, true, 0);
$plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n");
$plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true);
if (!$plainTextPart) {
- // empty message body breaks attachment handling in drafts
- $plainTextPart = "\r\n";
+ // empty message body breaks attachment handling in drafts
+ $plainTextPart = "\r\n";
}
else {
// make sure all line endings are CRLF (#1486712)
@@ -513,9 +525,10 @@ if (is_array($_SESSION['compose']['attachments']))
($attachment['data'] ? false : true),
($ctype == 'message/rfc822' ? '8bit' : 'base64'),
($ctype == 'message/rfc822' ? 'inline' : 'attachment'),
- $message_charset, '', '',
+ '', '', '',
$CONFIG['mime_param_folding'] ? 'quoted-printable' : NULL,
- $CONFIG['mime_param_folding'] == 2 ? 'quoted-printable' : NULL
+ $CONFIG['mime_param_folding'] == 2 ? 'quoted-printable' : NULL,
+ '', RCMAIL_CHARSET
);
}
}
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index e660207cd..45dd8e168 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -196,8 +196,11 @@ else
if ($MESSAGE && $MESSAGE->headers && !$MESSAGE->headers->seen &&
($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($CONFIG['preview_pane_mark_read']) == 0)))
{
- if ($IMAP->set_flag($MESSAGE->uid, 'SEEN') && $_SESSION['unseen_count'][$mbox_name])
- $_SESSION['unseen_count'][$mbox_name] -= 1;
+ if ($IMAP->set_flag($MESSAGE->uid, 'SEEN')) {
+ if ($count = rcmail_get_unseen_count($mbox_name)) {
+ rcmail_set_unseen_count($mbox_name, $count - 1);
+ }
+ }
}
exit;
diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc
new file mode 100644
index 000000000..3a7c0d946
--- /dev/null
+++ b/program/steps/settings/edit_folder.inc
@@ -0,0 +1,294 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/edit_folder.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2009, Roundcube Dev. - Switzerland |
+ | Licensed under the GNU GPL |
+ | |
+ | PURPOSE: |
+ | Provide functionality to create/edit a folder |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl> |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
+
+// init IMAP connection
+$RCMAIL->imap_connect();
+
+function rcube_folder_form($attrib)
+{
+ global $RCMAIL;
+
+ // edited folder name (empty in create-folder mode)
+ $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true));
+ $mbox_imap = rcube_charset_convert($mbox, RCMAIL_CHARSET, 'UTF7-IMAP');
+
+ // predefined path for new folder
+ $parent = trim(get_input_value('_path', RCUBE_INPUT_GPC, true));
+ $parent_imap = rcube_charset_convert($parent, RCMAIL_CHARSET, 'UTF7-IMAP');
+
+ $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+ $special = (strlen($mbox_imap) && in_array($mbox_imap, (array) $RCMAIL->config->get('default_imap_folders')));
+ $protected = ($special && $RCMAIL->config->get('protect_default_folders'));
+ $threading_supported = $RCMAIL->imap->get_capability('thread=references')
+ || $IMAP->get_capability('thread=orderedsubject')
+ || $IMAP->get_capability('thread=refs');
+
+ // Get mailbox stats (messages count, etc.), mailbox name and parent
+ if (strlen($mbox)) {
+ $msgcount = $RCMAIL->imap->messagecount($mbox_imap, 'ALL', true, false);
+
+ $path = explode($delimiter, $mbox_imap);
+ $folder = array_pop($path);
+ $path = implode($delimiter, $path);
+
+ $folder = rcube_charset_convert($folder, 'UTF7-IMAP');
+
+ $hidden_fields = array('name' => '_mbox', 'value' => $mbox);
+ }
+ else {
+ $path = $parent_imap;
+ }
+
+ $form = array();
+
+ // General tab
+ $form['props'] = array(
+ 'name' => rcube_label('properties'),
+ );
+
+ // Location (name)
+ if ($protected)
+ $foldername = rcmail_localize_foldername($mbox_imap);
+ else {
+ if (isset($_POST['_name']))
+ $folder = trim(get_input_value('_name', RCUBE_INPUT_POST, true));
+
+ $foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30));
+ $foldername = $foldername->show($folder);
+
+ if ($special)
+ $foldername .= '&nbsp;(' . rcmail_localize_foldername($mbox_imap) .')';
+ }
+
+ $form['props']['fieldsets']['location'] = array(
+ 'name' => rcube_label('location'),
+ 'content' => array(
+ 'name' => array(
+ 'label' => rcube_label('foldername'),
+ 'value' => $foldername,
+ ),
+ ),
+ );
+
+ if (strlen($path)) {
+ $radio1 = new html_radiobutton(array('name' => '_parent', 'value' => ''));
+ $radio2 = new html_radiobutton(array('name' => '_parent', 'value' => $path));
+ $selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path;
+
+ $html_path = str_replace($delimiter, ' &raquo; ', rcmail_localize_folderpath($path));
+
+ $folderpath = $radio1->show($selected) . Q(rcube_label('none')) . '&nbsp;'
+ .$radio2->show($selected) . Q($html_path);
+
+ $form['props']['fieldsets']['location']['content']['path'] = array(
+ 'label' => rcube_label('parentfolder'),
+ 'value' => $folderpath,
+ );
+ }
+
+ // Settings
+ $form['props']['fieldsets']['settings'] = array(
+ 'name' => rcube_label('settings'),
+ );
+
+ // Settings: threading
+ if ($threading_supported) {
+ $select = new html_select(array('name' => '_viewmode', 'id' => '_listmode'));
+ $select->add(rcube_label('list'), 0);
+ $select->add(rcube_label('threads'), 1);
+
+ if (isset($_POST['_viewmode'])) {
+ $value = (int) $_POST['_viewmode'];
+ }
+ else if (strlen($mbox_imap)) {
+ $a_threaded = $RCMAIL->config->get('message_threading', array());
+ $value = (int) isset($a_threaded[$mbox_imap]);
+ }
+
+ $form['props']['fieldsets']['settings']['content']['viewmode'] = array(
+ 'label' => rcube_label('listmode'),
+ 'value' => $select->show($value),
+ );
+ }
+/*
+ // Settings: sorting column
+ $select = new html_select(array('name' => '_sortcol', 'id' => '_sortcol'));
+ $select->add(rcube_label('nonesort'), '');
+ $select->add(rcube_label('arrival'), 'arrival');
+ $select->add(rcube_label('sentdate'), 'date');
+ $select->add(rcube_label('subject'), 'subject');
+ $select->add(rcube_label('fromto'), 'from');
+ $select->add(rcube_label('replyto'), 'replyto');
+ $select->add(rcube_label('cc'), 'cc');
+ $select->add(rcube_label('size'), 'size');
+
+ $value = isset($_POST['_sortcol']) ? $_POST['_sortcol'] : '';
+
+ $form['props']['fieldsets']['settings']['content']['sortcol'] = array(
+ 'label' => rcube_label('listsorting'),
+ 'value' => $select->show($value),
+ );
+
+ // Settings: sorting order
+ $select = new html_select(array('name' => '_sortord', 'id' => '_sortord'));
+ $select->add(rcube_label('asc'), 'ASC');
+ $select->add(rcube_label('desc'), 'DESC');
+
+ $value = isset($_POST['_sortord']) ? $_POST['_sortord'] : '';
+
+ $form['props']['fieldsets']['settings']['content']['sortord'] = array(
+ 'label' => rcube_label('listorder'),
+ 'value' => $select->show(),
+ );
+*/
+ // Information (count, size) - Edit mode
+ if (strlen($mbox)) {
+ // Number of messages
+ $form['props']['fieldsets']['info'] = array(
+ 'name' => rcube_label('info'),
+ 'content' => array(
+ 'count' => array(
+ 'label' => rcube_label('messagecount'),
+ 'value' => (int) $msgcount,
+ ),
+ ),
+ );
+
+ // Size
+ if ($msgcount) {
+ // create link with folder-size command
+ $onclick = sprintf("return %s.command('folder-size', '%s', this)",
+ JS_OBJECT_NAME, JQ($mbox_imap));
+ $size = html::a(array('href' => '#', 'onclick' => $onclick, 'id' => 'folder-size'),
+ rcube_label('getfoldersize'));
+ }
+ else {
+ // no messages -> zero size
+ $size = 0;
+ }
+ $form['props']['fieldsets']['info']['content']['size'] = array(
+ 'label' => rcube_label('size'),
+ 'value' => $size,
+ );
+ }
+
+ // Allow plugins to modify folder form content
+ $plugin = $RCMAIL->plugins->exec_hook('folder_form', array('form' => $form));
+
+ $form = $plugin['form'];
+
+ // Set form tags and hidden fields
+ list($form_start, $form_end) = get_form_tags($attrib, 'save-folder', null, $hidden_fields);
+
+ unset($attrib['form']);
+
+ // return the complete edit form as table
+ $out = "$form_start\n";
+
+ // Create form output
+ foreach ($form as $tab) {
+ if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) {
+ $content = '';
+ foreach ($tab['fieldsets'] as $fieldset) {
+ $subcontent = rcmail_get_form_part($fieldset);
+ if ($subcontent) {
+ $content .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $subcontent) ."\n";
+ }
+ }
+ }
+ else {
+ $content = rcmail_get_form_part($tab);
+ }
+
+ if ($content) {
+ $out .= html::tag('fieldset', null, html::tag('legend', null, Q($tab['name'])) . $content) ."\n";
+ }
+ }
+
+ $out .= "\n$form_end";
+
+ $RCMAIL->output->set_env('messagecount', (int) $msgcount);
+
+ return $out;
+}
+
+function rcmail_get_form_part($form)
+{
+ $content = '';
+
+ if (is_array($form['content']) && !empty($form['content'])) {
+ $table = new html_table(array('cols' => 2));
+ foreach ($form['content'] as $col => $colprop) {
+ $colprop['id'] = '_'.$col;
+ $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col);
+
+ $table->add('title', sprintf('<label for="%s">%s</label>', $colprop['id'], Q($label)));
+ $table->add(null, $colprop['value']);
+ }
+ $content = $table->show();
+ }
+ else {
+ $content = $tag['content'];
+ }
+
+ return $content;
+}
+
+function rcmail_localize_folderpath($path)
+{
+ global $RCMAIL;
+
+ $protect_folders = $RCMAIL->config->get('protect_default_folders');
+ $default_folders = (array) $RCMAIL->config->get('default_imap_folders');
+ $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+ $path = explode($delimiter, $path);
+ $result = array();
+
+ foreach ($path as $idx => $dir) {
+ $directory = implode($delimiter, array_slice($path, 0, $idx+1));
+ if ($protect_folders && in_array($directory, $default_folders)) {
+ unset($result);
+ $result[] = rcmail_localize_foldername($directory);
+ }
+ else if ($protect_folders && in_array($dir, $default_folders)) {
+ $result[] = rcmail_localize_foldername($dir);
+ }
+ else {
+ $result[] = rcube_charset_convert($dir, 'UTF7-IMAP');
+ }
+ }
+
+ return implode($delimiter, $result);
+}
+
+
+//$OUTPUT->set_pagetitle(rcube_label('folders'));
+
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'folderdetails' => 'rcube_folder_form',
+));
+
+$OUTPUT->add_label('nonamewarning');
+
+$OUTPUT->send('folderedit');
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index ef2be6584..f458cbfee 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -126,7 +126,8 @@ function rcube_identity_form($attrib)
foreach ($fieldset['content'] as $col => $colprop) {
$colprop['id'] = 'rcmfd_'.$col;
- $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col);
+ $label = !empty($colprop['label']) ? $colprop['label'] :
+ rcube_label(str_replace('-', '', $col));
$value = !empty($colprop['value']) ? $colprop['value'] :
rcmail_get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']);
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
new file mode 100644
index 000000000..7ae4fb35d
--- /dev/null
+++ b/program/steps/settings/folders.inc
@@ -0,0 +1,377 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/folders.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2009, Roundcube Dev. - Switzerland |
+ | Licensed under the GNU GPL |
+ | |
+ | PURPOSE: |
+ | Provide functionality of folders management |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ | Author: Aleksander Machniak <alec@alec.pl> |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
+
+// init IMAP connection
+$RCMAIL->imap_connect();
+
+// subscribe mailbox
+if ($RCMAIL->action == 'subscribe')
+{
+ $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
+ if (strlen($mbox)) {
+ $result = $IMAP->subscribe(array($mbox));
+
+ // Handle virtual (non-existing) folders
+ if (!$result && $IMAP->get_error_code() == -1 &&
+ $IMAP->get_response_code() == rcube_imap::TRYCREATE
+ ) {
+ $result = $IMAP->create_mailbox($mbox, true);
+ if ($result) {
+ // @TODO: remove 'virtual' class of folder's row
+ }
+ }
+
+ if ($result)
+ $OUTPUT->show_message('foldersubscribed', 'confirmation');
+ else
+ rcmail_display_server_error('errorsaving');
+ }
+}
+
+// unsubscribe mailbox
+else if ($RCMAIL->action == 'unsubscribe')
+{
+ $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
+ if (strlen($mbox)) {
+ $result = $IMAP->unsubscribe(array($mbox));
+ if ($result)
+ $OUTPUT->show_message('folderunsubscribed', 'confirmation');
+ else
+ rcmail_display_server_error('errorsaving');
+ }
+}
+
+// delete an existing mailbox
+else if ($RCMAIL->action == 'delete-folder')
+{
+ $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true);
+ $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
+
+ // get folder's children or all folders if the name contains special characters
+ $delimiter = $IMAP->get_hierarchy_delimiter();
+ if ((strpos($mbox, '%') === false) && (strpos($mbox, '*') === false))
+ $a_mboxes = $IMAP->list_unsubscribed('', $mbox.$delimiter.'*');
+ else
+ $a_mboxes = $IMAP->list_unsubscribed();
+
+ if (strlen($mbox))
+ $deleted = $IMAP->delete_mailbox($mbox);
+
+ if ($OUTPUT->ajax_call && $deleted) {
+ // Remove folder and subfolders rows
+ $OUTPUT->command('remove_folder_row', $mbox_utf8);
+ foreach ($a_mboxes as $folder) {
+ if (preg_match('/^'. preg_quote($mbox.$delimiter, '/') .'/', $folder)) {
+ $OUTPUT->command('remove_folder_row', rcube_charset_convert($folder, 'UTF7-IMAP'));
+ }
+ }
+ $OUTPUT->show_message('folderdeleted', 'confirmation');
+ // Clear content frame
+ $OUTPUT->command('subscription_select');
+ $OUTPUT->command('set_quota', rcmail_quota_content());
+ }
+ else if (!$deleted) {
+ rcmail_display_server_error('errorsaving');
+ }
+}
+
+// rename an existing mailbox
+else if ($RCMAIL->action == 'rename-folder')
+{
+ $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST, true));
+ $oldname_utf8 = trim(get_input_value('_folder_oldname', RCUBE_INPUT_POST, true));
+
+ if (strlen($name_utf8) && strlen($oldname_utf8)) {
+ $name = rcube_charset_convert($name_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
+ $oldname = rcube_charset_convert($oldname_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
+
+ $rename = rcmail_rename_folder($oldname, $name);
+ }
+
+ if ($rename && $OUTPUT->ajax_call) {
+ $folderlist = $IMAP->list_unsubscribed();
+ $delimiter = $IMAP->get_hierarchy_delimiter();
+
+ $regexp = '/^' . preg_quote($name . $delimiter, '/') . '/';
+
+ // subfolders
+ for ($x=sizeof($folderlist)-1; $x>=0; $x--) {
+ if (preg_match($regexp, $folderlist[$x])) {
+ $oldfolder = $oldname . $delimiter . preg_replace($regexp, '', $folderlist[$x]);
+ $foldersplit = explode($delimiter, $folderlist[$x]);
+ $level = count($foldersplit) - 1;
+ $display_rename = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
+ . rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP');
+
+ $before = isset($folderlist[$x+1]) ? rcube_charset_convert($folderlist[$x+1], 'UTF7-IMAP') : false;
+
+ $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldfolder, 'UTF7-IMAP'),
+ rcube_charset_convert($folderlist[$x], 'UTF7-IMAP'), $display_rename, $before);
+ }
+ }
+
+ $foldersplit = explode($delimiter, $name);
+ $level = count($foldersplit) - 1;
+ $display_rename = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level) . rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP');
+ $index = array_search($name, $folderlist);
+ $before = $index !== false && isset($folderlist[$index+1]) ? rcube_charset_convert($folderlist[$index+1], 'UTF7-IMAP') : false;
+
+ $OUTPUT->command('replace_folder_row', $oldname_utf8,
+ rcube_charset_convert($name, 'UTF7-IMAP'), $display_rename, $before);
+ }
+ else if (!$rename) {
+ rcmail_display_server_error('errorsaving');
+ }
+}
+
+// clear mailbox
+else if ($RCMAIL->action == 'purge')
+{
+ $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true);
+ $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
+ $delimiter = $IMAP->get_hierarchy_delimiter();
+ $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
+
+ // we should only be purging trash (or their subfolders)
+ if (!strlen($CONFIG['trash_mbox']) || $mbox == $CONFIG['trash_mbox']
+ || preg_match($trash_regexp, $mbox)
+ ) {
+ $success = $IMAP->clear_mailbox($mbox);
+ $delete = true;
+ }
+ // copy to Trash
+ else {
+ $success = $IMAP->move_message('1:*', $CONFIG['trash_mbox'], $mbox);
+ $delete = false;
+ }
+
+ if ($success) {
+ $OUTPUT->set_env('messagecount', 0);
+ if ($delete) {
+ $OUTPUT->show_message('folderpurged', 'confirmation');
+ $OUTPUT->command('set_quota', rcmail_quota_content());
+ }
+ else {
+ $OUTPUT->show_message('messagemoved', 'confirmation');
+ }
+ $_SESSION['unseen_count'][$mbox] = 0;
+ $OUTPUT->command('show_folder', $mbox_utf8, null, true);
+ }
+ else {
+ rcmail_display_server_error('errorsaving');
+ }
+}
+
+// get mailbox size
+else if ($RCMAIL->action == 'folder-size')
+{
+ $name = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true));
+
+ $size = $IMAP->get_mailbox_size($name);
+
+ // @TODO: check quota and show percentage usage of specified mailbox?
+
+ if ($size !== false) {
+ $OUTPUT->command('folder_size_update', show_bytes($size));
+ }
+ else {
+ rcmail_display_server_error();
+ }
+}
+
+if ($OUTPUT->ajax_call)
+ $OUTPUT->send();
+
+
+// build table with all folders listed by server
+function rcube_subscription_form($attrib)
+{
+ global $RCMAIL, $IMAP, $CONFIG, $OUTPUT;
+
+ list($form_start, $form_end) = get_form_tags($attrib, 'folders');
+ unset($attrib['form']);
+
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmSubscriptionlist';
+
+ $table = new html_table();
+
+ if ($attrib['noheader'] !== true && $attrib['noheader'] != "true") {
+ // add table header
+ $table->add_header('name', rcube_label('foldername'));
+ $table->add_header('subscribed', '');
+ }
+
+ // get folders from server
+ $IMAP->clear_cache('mailboxes');
+
+ $a_unsubscribed = $IMAP->list_unsubscribed();
+ $a_subscribed = $IMAP->list_mailboxes();
+ $delimiter = $IMAP->get_hierarchy_delimiter();
+ $a_js_folders = array();
+ $seen = array();
+ $list_folders = array();
+
+ // pre-process folders list
+ foreach ($a_unsubscribed as $i => $folder) {
+ $foldersplit = explode($delimiter, $folder);
+ $name = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP');
+ $parent_folder = join($delimiter, $foldersplit);
+ $level = count($foldersplit);
+
+ // add any necessary "virtual" parent folders
+ if ($parent_folder && !$seen[$parent_folder]) {
+ for ($i=1; $i<=$level; $i++) {
+ $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i));
+ if ($ancestor_folder && !$seen[$ancestor_folder]++) {
+ $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP');
+ $list_folders[] = array(
+ 'id' => $ancestor_folder,
+ 'name' => $ancestor_name,
+ 'level' => $i-1,
+ 'virtual' => true,
+ );
+ }
+ }
+ }
+
+ $seen[$folder]++;
+
+ $list_folders[] = array(
+ 'id' => $folder,
+ 'name' => $name,
+ 'level' => $level,
+ );
+ }
+
+ unset($seen);
+
+ $checkbox_subscribe = new html_checkbox(array(
+ 'name' => '_subscribed[]',
+ 'title' => rcube_label('changesubscription'),
+ 'onclick' => JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)",
+ ));
+
+ // create list of available folders
+ foreach ($list_folders as $i => $folder) {
+ $idx = $i + 1;
+ $subscribed = in_array($folder['id'], $a_subscribed);
+ $protected = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders']));
+ $classes = array($i%2 ? 'even' : 'odd');
+
+ $folder_js = Q($folder['id']);
+ $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP');
+ $display_folder = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $folder['level'])
+ . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']);
+
+ if ($folder['virtual']) {
+ $classes[] = 'virtual';
+ }
+
+ if (!$protected) {
+ $opts = $IMAP->mailbox_options($folder['id']);
+ $noselect = in_array('\\Noselect', $opts);
+ }
+
+ $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes)));
+
+ $table->add('name', $display_folder);
+ $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''),
+ array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : '')));
+
+ $a_js_folders['rcmrow'.$idx] = array($folder_utf8, Q($display_folder), $protected || $folder['virtual']);
+ }
+
+ $RCMAIL->plugins->exec_hook('folders_list', array('table' => $table));
+
+ $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']);
+ $OUTPUT->set_env('subscriptionrows', $a_js_folders);
+ $OUTPUT->set_env('defaultfolders', $CONFIG['default_imap_folders']);
+ $OUTPUT->set_env('delimiter', $delimiter);
+
+ return $form_start . $table->show($attrib) . $form_end;
+}
+
+function rcmail_folder_frame($attrib)
+{
+ global $OUTPUT;
+
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmfolderframe';
+
+ $attrib['name'] = $attrib['id'];
+
+ $OUTPUT->set_env('contentframe', $attrib['name']);
+ $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif');
+
+ return html::iframe($attrib);
+}
+
+function rcmail_rename_folder($oldname, $newname)
+{
+ global $RCMAIL;
+
+ $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+ $rename = $RCMAIL->imap->rename_mailbox($oldname, $newname);
+
+ // update per-folder options for modified folder and its subfolders
+ if ($rename !== false) {
+ $a_threaded = (array) $RCMAIL->config->get('message_threading', array());
+ $oldprefix = '/^' . preg_quote($oldname . $delimiter, '/') . '/';
+
+ foreach ($a_threaded as $key => $val) {
+ if ($key == $oldname) {
+ unset($a_threaded[$key]);
+ $a_threaded[$newname] = true;
+ }
+ else if (preg_match($oldprefix, $key)) {
+ unset($a_threaded[$key]);
+ $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = true;
+ }
+ }
+ $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
+
+ return true;
+ }
+
+ return false;
+}
+
+$OUTPUT->set_pagetitle(rcube_label('folders'));
+$OUTPUT->include_script('list.js');
+$OUTPUT->set_env('quota', $IMAP->get_capability('QUOTA'));
+
+// add some labels to client
+$OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting',
+ 'foldermoving', 'foldersubscribing', 'folderunsubscribing', 'quota');
+
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'foldersubscription' => 'rcube_subscription_form',
+ 'folderframe' => 'rcmail_folder_frame',
+ 'quotadisplay' => 'rcmail_quota_display',
+));
+
+$OUTPUT->send('folders');
+
diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc
deleted file mode 100644
index 3a5d909e4..000000000
--- a/program/steps/settings/manage_folders.inc
+++ /dev/null
@@ -1,443 +0,0 @@
-<?php
-
-/*
- +-----------------------------------------------------------------------+
- | program/steps/settings/manage_folders.inc |
- | |
- | This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, Roundcube Dev. - Switzerland |
- | Licensed under the GNU GPL |
- | |
- | PURPOSE: |
- | Provide functionality to create/delete/rename folders |
- | |
- +-----------------------------------------------------------------------+
- | Author: Thomas Bruederli <roundcube@gmail.com> |
- +-----------------------------------------------------------------------+
-
- $Id$
-
-*/
-
-// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
-
-// init IMAP connection
-$RCMAIL->imap_connect();
-
-// subscribe to one or more mailboxes
-if ($RCMAIL->action=='subscribe')
- {
- $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
- if (strlen($mbox))
- $IMAP->subscribe(array($mbox));
- }
-
-// unsubscribe one or more mailboxes
-else if ($RCMAIL->action=='unsubscribe')
- {
- $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
- if (strlen($mbox))
- $IMAP->unsubscribe(array($mbox));
- }
-
-// enable threading for one or more mailboxes
-else if ($RCMAIL->action=='enable-threading')
- {
- $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
- if (strlen($mbox))
- rcube_set_threading($mbox, true);
- }
-
-// enable threading for one or more mailboxes
-else if ($RCMAIL->action=='disable-threading')
- {
- $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
- if (strlen($mbox))
- rcube_set_threading($mbox, false);
- }
-
-// create a new mailbox
-else if ($RCMAIL->action=='create-folder')
- {
- if (strlen(trim($_POST['_name'])))
- {
- $name = trim(get_input_value('_name', RCUBE_INPUT_POST, true, 'UTF7-IMAP'));
- $create = $IMAP->create_mailbox($name, TRUE);
- }
-
- if ($create && $OUTPUT->ajax_call)
- {
- $delimiter = $IMAP->get_hierarchy_delimiter();
- $folderlist = $IMAP->list_unsubscribed();
- $index = array_search($create, $folderlist);
- $before = $index !== false && isset($folderlist[$index+1]) ? rcube_charset_convert($folderlist[$index+1], 'UTF7-IMAP') : false;
-
- $create = rcube_charset_convert($create, 'UTF7-IMAP');
- $foldersplit = explode($delimiter, $create);
- $display_create = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', substr_count($create, $delimiter))
- . Q($foldersplit[count($foldersplit)-1]);
-
- $OUTPUT->command('add_folder_row', $create, $display_create, false, $before);
- }
- else if (!$create)
- {
- $OUTPUT->show_message('errorsaving', 'error');
- }
- }
-
-// rename a mailbox
-else if ($RCMAIL->action=='rename-folder')
- {
- if (strlen(trim($_POST['_folder_oldname'])) && strlen(trim($_POST['_folder_newname'])))
- {
- $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST, true));
- $oldname_utf8 = get_input_value('_folder_oldname', RCUBE_INPUT_POST, true);
- $name = rcube_charset_convert($name_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
- $oldname = rcube_charset_convert($oldname_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
-
- $rename = $IMAP->rename_mailbox($oldname, $name);
- }
-
- // update per-folder options for modified folder and its subfolders
- if ($rename) {
- $a_threaded = $RCMAIL->config->get('message_threading', array());
- $delimiter = $IMAP->get_hierarchy_delimiter();
- $oldprefix = '/^' . preg_quote($oldname . $delimiter, '/') . '/';
- foreach ($a_threaded as $key => $val)
- if ($key == $oldname) {
- unset($a_threaded[$key]);
- $a_threaded[$name] = true;
- }
- else if (preg_match($oldprefix, $key)) {
- unset($a_threaded[$key]);
- $a_threaded[preg_replace($oldprefix, $name.$delimiter, $key)] = true;
- }
-
- $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
- }
-
- if ($rename && $OUTPUT->ajax_call)
- {
- $folderlist = $IMAP->list_unsubscribed();
- $delimiter = $IMAP->get_hierarchy_delimiter();
-
- $regexp = '/^' . preg_quote($rename . $delimiter, '/') . '/';
-
- // subfolders
- for ($x=sizeof($folderlist)-1; $x>=0; $x--)
- {
- if (preg_match($regexp, $folderlist[$x]))
- {
- $oldfolder = $oldname . $delimiter . preg_replace($regexp, '', $folderlist[$x]);
- $foldersplit = explode($delimiter, $folderlist[$x]);
- $level = count($foldersplit) - 1;
- $display_rename = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
- . Q(rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'));
-
- $before = isset($folderlist[$x+1]) ? rcube_charset_convert($folderlist[$x+1], 'UTF7-IMAP') : false;
-
- $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldfolder, 'UTF7-IMAP'),
- rcube_charset_convert($folderlist[$x], 'UTF7-IMAP'), $display_rename, $before);
- }
- }
-
- $foldersplit = explode($delimiter, $rename);
- $level = count($foldersplit) - 1;
- $display_rename = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level) . Q(rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'));
- $index = array_search($rename, $folderlist);
- $before = $index !== false && isset($folderlist[$index+1]) ? rcube_charset_convert($folderlist[$index+1], 'UTF7-IMAP') : false;
-
- $OUTPUT->command('replace_folder_row', $oldname_utf8, rcube_charset_convert($rename, 'UTF7-IMAP'), $display_rename, $before);
- $OUTPUT->command('reset_folder_rename');
- }
- else if (!$rename && $OUTPUT->ajax_call)
- {
- $OUTPUT->command('reset_folder_rename');
- $OUTPUT->show_message('errorsaving', 'error');
- }
- else if (!$rename)
- $OUTPUT->show_message('errorsaving', 'error');
- }
-
-// delete an existing IMAP mailbox
-else if ($RCMAIL->action=='delete-folder')
- {
- $a_mboxes = $IMAP->list_unsubscribed();
- $delimiter = $IMAP->get_hierarchy_delimiter();
-
- $mboxes_utf8 = get_input_value('_mboxes', RCUBE_INPUT_POST, true);
- $mboxes = rcube_charset_convert($mboxes_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
-
- if (strlen($mboxes))
- $deleted = $IMAP->delete_mailbox(array($mboxes));
-
- if ($OUTPUT->ajax_call && $deleted)
- {
- $OUTPUT->command('remove_folder_row', $mboxes_utf8);
- foreach ($a_mboxes as $mbox)
- {
- if (preg_match('/^'. preg_quote($mboxes.$delimiter, '/') .'/', $mbox))
- {
- $OUTPUT->command('remove_folder_row', rcube_charset_convert($mbox, 'UTF7-IMAP'));
- }
- }
- $OUTPUT->show_message('folderdeleted', 'confirmation');
- }
- else if (!$deleted)
- {
- $OUTPUT->show_message('errorsaving', 'error');
- }
- }
-
-if ($OUTPUT->ajax_call)
- $OUTPUT->send();
-
-
-// build table with all folders listed by server
-function rcube_subscription_form($attrib)
- {
- global $RCMAIL, $IMAP, $CONFIG, $OUTPUT;
-
- $threading_supported = $IMAP->get_capability('thread=references')
- || $IMAP->get_capability('thread=orderedsubject')
- || $IMAP->get_capability('thread=refs');
-
- list($form_start, $form_end) = get_form_tags($attrib, 'folders');
- unset($attrib['form']);
-
- if (!$attrib['id'])
- $attrib['id'] = 'rcmSubscriptionlist';
-
- $table = new html_table();
-
- // add table header
- $table->add_header('name', rcube_label('foldername'));
- $table->add_header('msgcount', rcube_label('messagecount'));
- $table->add_header('subscribed', rcube_label('subscribed'));
- if ($threading_supported)
- $table->add_header('threaded', rcube_label('threaded'));
- $table->add_header('rename', '&nbsp;');
- $table->add_header('delete', '&nbsp;');
-
- // get folders from server
- $IMAP->clear_cache('mailboxes');
-
- $a_unsubscribed = $IMAP->list_unsubscribed();
- $a_subscribed = $IMAP->list_mailboxes();
- $a_threaded = $a_threaded_copy = $RCMAIL->config->get('message_threading', array());
- $delimiter = $IMAP->get_hierarchy_delimiter();
- $a_js_folders = $seen = $list_folders = array();
-
- // pre-process folders list
- foreach ($a_unsubscribed as $i => $folder) {
- $foldersplit = explode($delimiter, $folder);
- $name = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP');
- $parent_folder = join($delimiter, $foldersplit);
- $level = count($foldersplit);
-
- // add any necessary "virtual" parent folders
- if ($parent_folder && !$seen[$parent_folder]) {
- for ($i=1; $i<=$level; $i++) {
- $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i));
- if ($ancestor_folder && !$seen[$ancestor_folder]++) {
- $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP');
- $list_folders[] = array('id' => $ancestor_folder, 'name' => $ancestor_name, 'level' => $i-1, 'virtual' => true);
- }
- }
- }
-
- unset($a_threaded_copy[$folder]);
-
- $list_folders[] = array('id' => $folder, 'name' => $name, 'level' => $level);
- $seen[$folder]++;
- }
-
- unset($seen);
-
- // remove 'message_threading' option for not existing folders
- if ($a_threaded_copy) {
- foreach ($a_threaded_copy as $key => $val)
- unset($a_threaded[$key]);
- unset($a_threaded_copy);
- $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
- }
-
- $checkbox_subscribe = new html_checkbox(array(
- 'name' => '_subscribed[]',
- 'onclick' => JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)",
- ));
- $checkbox_threaded = new html_checkbox(array(
- 'name' => '_threaded[]',
- 'onclick' => JS_OBJECT_NAME.".command(this.checked?'enable-threading':'disable-threading',this.value)",
- ));
-
- if (!empty($attrib['deleteicon']))
- $del_button = html::img(array('src' => $CONFIG['skin_path'] . $attrib['deleteicon'], 'alt' => rcube_label('delete')));
- else
- $del_button = rcube_label('delete');
-
- if (!empty($attrib['renameicon']))
- $edit_button = html::img(array('src' => $CONFIG['skin_path'] . $attrib['renameicon'], 'alt' => rcube_label('rename')));
- else
- $edit_button = rcube_label('rename');
-
- // create list of available folders
- foreach ($list_folders as $i => $folder) {
- $idx = $i + 1;
- $subscribed = in_array($folder['id'], $a_subscribed);
- $threaded = $a_threaded[$folder['id']];
- $protected = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders']));
- $classes = array($i%2 ? 'even' : 'odd');
- $folder_js = Q($folder['id']);
- $display_folder = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $folder['level']) . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']);
- $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP');
-
- if ($folder['virtual']) {
- $classes[] = 'virtual';
- }
-
- if (!$protected) {
- $opts = $IMAP->mailbox_options($folder['id']);
- $noselect = in_array('\\Noselect', $opts);
- }
-
- $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes)));
-
- $table->add('name', $display_folder);
- $table->add('msgcount', (($folder['virtual'] || $noselect) ? '' : $IMAP->messagecount($folder['id'], 'ALL', false, false)));
- $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''),
- array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : '')));
- if ($threading_supported) {
- $table->add('threaded', $folder['virtual'] ? '' :
- $checkbox_threaded->show(($threaded ? $folder_utf8 : ''), array('value' => $folder_utf8)));
- }
-
- // add rename and delete buttons
- if (!$protected && !$folder['virtual']) {
- $table->add('rename', html::a(array('href' => "#rename", 'title' => rcube_label('renamefolder')), $edit_button));
- $table->add('delete', html::a(array('href' => "#delete", 'title' => rcube_label('deletefolder')), $del_button));
- }
- else {
- $table->add('rename', '&nbsp;');
- $table->add('delete', '&nbsp;');
- }
-
- $a_js_folders['rcmrow'.$idx] = array($folder_utf8, Q($display_folder), $protected || $folder['virtual']);
- }
-
- rcmail::get_instance()->plugins->exec_hook('folders_list', array('table' => $table));
-
- $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']);
- $OUTPUT->set_env('subscriptionrows', $a_js_folders);
- $OUTPUT->set_env('defaultfolders', $CONFIG['default_imap_folders']);
- $OUTPUT->set_env('delimiter', $delimiter);
-
- return $form_start . $table->show($attrib) . $form_end;
- }
-
-
-function rcube_create_folder_form($attrib)
- {
- global $OUTPUT;
-
- list($form_start, $form_end) = get_form_tags($attrib, 'create-folder');
- unset($attrib['form']);
-
- if ($attrib['hintbox'])
- $OUTPUT->add_gui_object('createfolderhint', $attrib['hintbox']);
-
- // return the complete edit form as table
- $out = "$form_start\n";
-
- $input = new html_inputfield(array('name' => '_folder_name'));
- $out .= $input->show();
-
- if (get_boolean($attrib['button']))
- {
- $button = new html_inputfield(array('type' => 'button',
- 'value' => rcube_label('create'),
- 'onclick' => JS_OBJECT_NAME.".command('create-folder',this.form)"));
- $out .= $button->show();
- }
-
- $out .= "\n$form_end";
-
- return $out;
- }
-
-function rcube_rename_folder_form($attrib)
- {
- global $CONFIG, $IMAP;
-
- list($form_start, $form_end) = get_form_tags($attrib, 'rename-folder');
- unset($attrib['form']);
-
- // return the complete edit form as table
- $out = "$form_start\n";
-
- $a_unsubscribed = $IMAP->list_unsubscribed();
- $select_folder = new html_select(array('name' => '_folder_oldname', 'id' => 'rcmfd_oldfolder'));
-
- foreach ($a_unsubscribed as $i => $folder)
- {
- if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders']))
- continue;
-
- $select_folder->add($folder);
- }
-
- $out .= $select_folder->show();
-
- $out .= " to ";
- $inputtwo = new html_inputfield(array('name' => '_folder_newname'));
- $out .= $inputtwo->show();
-
- if (get_boolean($attrib['button']))
- {
- $button = new html_inputfield(array('type' => 'button',
- 'value' => rcube_label('rename'),
- 'onclick' => JS_OBJECT_NAME.".command('rename-folder',this.form)"));
- $out .= $button->show();
- }
-
- $out .= "\n$form_end";
-
- return $out;
- }
-
-
-// (un)set 'threading' for selected folder
-function rcube_set_threading($mbox, $state=true)
- {
- global $RCMAIL;
- $mbox = (array)$mbox;
- $a_prefs = (array)$RCMAIL->config->get('message_threading');
-
- if ($state) {
- foreach ($mbox as $box)
- $a_prefs[$box] = true;
- }
- else {
- foreach ($mbox as $box)
- unset($a_prefs[$box]);
- }
-
- $RCMAIL->user->save_prefs(array('message_threading' => $a_prefs));
- }
-
-
-$OUTPUT->set_pagetitle(rcube_label('folders'));
-$OUTPUT->include_script('list.js');
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'foldersubscription' => 'rcube_subscription_form',
- 'createfolder' => 'rcube_create_folder_form',
- 'renamefolder' => 'rcube_rename_folder_form'
-));
-
-// add some labels to client
-$OUTPUT->add_label('deletefolderconfirm','addsubfolderhint','forbiddencharacter','folderdeleting','folderrenaming','foldercreating','foldermoving');
-
-$OUTPUT->send('managefolders');
-
diff --git a/program/steps/settings/save_folder.inc b/program/steps/settings/save_folder.inc
new file mode 100644
index 000000000..da646a56e
--- /dev/null
+++ b/program/steps/settings/save_folder.inc
@@ -0,0 +1,176 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/save_folder.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2009, Roundcube Dev. - Switzerland |
+ | Licensed under the GNU GPL |
+ | |
+ | PURPOSE: |
+ | Provide functionality to create/edit a folder |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl> |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
+
+// init IMAP connection
+$RCMAIL->imap_connect();
+
+
+$name = trim(get_input_value('_name', RCUBE_INPUT_POST, true));
+$old = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true));
+$path = trim(get_input_value('_parent', RCUBE_INPUT_POST, true));
+
+$name_imap = rcube_charset_convert($name, RCMAIL_CHARSET, 'UTF7-IMAP');
+$old_imap = rcube_charset_convert($old, RCMAIL_CHARSET, 'UTF7-IMAP');
+// $path is in UTF7-IMAP already
+
+$delimiter = $IMAP->get_hierarchy_delimiter();
+$special = (strlen($old_imap) && in_array($old_imap, (array) $RCMAIL->config->get('default_imap_folders')));
+$protected = ($special && $RCMAIL->config->get('protect_default_folders'));
+
+
+// Folder name checks
+if ($protected) {
+}
+else if (!strlen($name)) {
+ $error = rcube_label('cannotbeempty');
+}
+else if (mb_strlen($name) > 128) {
+ $error = rcube_label('nametoolong');
+}
+else {
+ // these characters are problematic e.g. when used in LIST/LSUB
+ foreach (array($delimiter, '%', '*') as $char) {
+ if (strpos($name, $delimiter) !== false) {
+ $error = rcube_label('forbiddencharacter') . " ($char)";
+ break;
+ }
+ }
+}
+
+if ($error) {
+ $OUTPUT->command('display_message', $error, 'error');
+}
+else {
+ if ($protected) {
+ $name_imap = $old_imap;
+ }
+ else if (strlen($path)) {
+ $name_imap = $path . $delimiter . $name_imap;
+ }
+
+ $folder['name'] = $name_imap;
+ $folder['oldname'] = $old_imap;
+ $folder['settings'] = array(
+ // List view mode: 0-list, 1-threads
+ 'view_mode' => (int) get_input_value('_viewmode', RCUBE_INPUT_POST),
+ 'sort_column' => get_input_value('_sortcol', RCUBE_INPUT_POST),
+ 'sort_order' => get_input_value('_sortord', RCUBE_INPUT_POST),
+ );
+}
+
+// create a new mailbox
+if (!$error && !strlen($old)) {
+
+ $plugin = $RCMAIL->plugins->exec_hook('folder_create', array('record' => $folder));
+
+ $folder = $plugin['record'];
+
+ if (!$plugin['abort']) {
+ $created = $IMAP->create_mailbox($folder['name'], TRUE);
+ }
+ else {
+ $created = $plugin['result'];
+ }
+
+ if ($created) {
+ // Save folder settings
+ if (isset($_POST['_viewmode'])) {
+ $a_threaded = (array) $RCMAIL->config->get('message_threading', array());
+
+ if ($_POST['_viewmode'])
+ $a_threaded[$folder['name']] = true;
+ else
+ unset($a_threaded[$folder['name']]);
+
+ $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
+ }
+
+ $OUTPUT->show_message('foldercreated', 'confirmation');
+ $OUTPUT->command('reload', 250);
+ $OUTPUT->send('iframe');
+ }
+ else {
+ // show error message
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
+ }
+}
+
+// update a mailbox
+else if (!$error) {
+ $plugin = $RCMAIL->plugins->exec_hook('folder_update', array('record' => $folder));
+
+ $folder = $plugin['record'];
+ $rename = ($folder['oldname'] != $folder['name']);
+
+ if (!$plugin['abort']) {
+ if ($rename) {
+ $updated = $RCMAIL->imap->rename_mailbox($folder['oldname'], $folder['name']);
+ }
+ else {
+ $updated = true;
+ }
+ }
+ else {
+ $updated = $plugin['result'];
+ }
+
+ if ($updated) {
+ // Update folder settings,
+ if (isset($_POST['_viewmode'])) {
+ $a_threaded = (array) $RCMAIL->config->get('message_threading', array());
+
+ // In case of name change update names of childrens in settings
+ if ($rename) {
+ $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+ $oldprefix = '/^' . preg_quote($folder['oldname'] . $delimiter, '/') . '/';
+ foreach ($a_threaded as $key => $val) {
+ if ($key == $folder['oldname']) {
+ unset($a_threaded[$key]);
+ }
+ else if (preg_match($oldprefix, $key)) {
+ unset($a_threaded[$key]);
+ $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = true;
+ }
+ }
+ }
+ if ($_POST['_viewmode'])
+ $a_threaded[$folder['name']] = true;
+ else
+ unset($a_threaded[$folder['name']]);
+
+ $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
+ }
+
+ $OUTPUT->show_message('folderupdated', 'confirmation');
+ if ($rename) {
+ $OUTPUT->command('reload', 250);
+ $OUTPUT->send('iframe');
+ }
+ }
+ else {
+ // show error message
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
+ }
+}
+
+rcmail_overwrite_action('edit-folder');
diff --git a/program/steps/utils/html2text.inc b/program/steps/utils/html2text.inc
index ef74ec49e..15c6a52a4 100644
--- a/program/steps/utils/html2text.inc
+++ b/program/steps/utils/html2text.inc
@@ -19,7 +19,12 @@
*/
-$converter = new html2text($HTTP_RAW_POST_DATA);
+$html = $HTTP_RAW_POST_DATA;
+
+// Replace emoticon images with its text representation
+$html = rcmail_replace_emoticons($html);
+
+$converter = new html2text($html);
header('Content-Type: text/plain; charset=UTF-8');
print rtrim($converter->get_text());
diff --git a/skins/default/common.css b/skins/default/common.css
index 938c68a5e..622fba949 100644
--- a/skins/default/common.css
+++ b/skins/default/common.css
@@ -249,6 +249,11 @@ img
background: url(images/listheader.gif) top left repeat-x #CCC;
}
+.boxtitle .rightalign
+{
+ float: right;
+}
+
.boxcontent
{
padding: 15px 10px 10px 10px;
@@ -861,3 +866,17 @@ fieldset.tabbed
padding-top: 12px;
}
+.quota_text {
+ text-align: center;
+ font-size: 10px;
+ color: #666;
+ border: 1px solid #999;
+ cursor: default;
+}
+.quota_bg { background-color: white; }
+.quota_high { background-color: #F33131; }
+.quota_mid { background-color: #F5AD3C; }
+.quota_low { background-color: #91E164; }
+.quota_text_high { color: white; }
+.quota_text_mid { color: #666; }
+.quota_text_low { color: #666; }
diff --git a/skins/default/functions.js b/skins/default/functions.js
index 3197c9847..77cdeb8d2 100644
--- a/skins/default/functions.js
+++ b/skins/default/functions.js
@@ -353,7 +353,7 @@ switch_preview_pane: function(elem)
/* Message composing */
init_compose_form: function()
{
- var f, field, fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto'],
+ var f, field, fields = ['cc', 'bcc', 'replyto', 'followupto'],
div = document.getElementById('compose-div'),
headers_div = document.getElementById('compose-headers-div');
diff --git a/skins/default/iehacks.css b/skins/default/iehacks.css
index 2b2180fb9..29ab8cb75 100644
--- a/skins/default/iehacks.css
+++ b/skins/default/iehacks.css
@@ -38,11 +38,6 @@ input, textarea
height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
}
-#folder-manager
-{
- height: expression((parseInt(this.parentNode.offsetHeight)-105)+'px');
-}
-
#messagetoolbar
{
width: expression((parseInt(document.documentElement.clientWidth)-215)+'px');
@@ -90,7 +85,8 @@ input, textarea
#messageframe,
#identity-details,
#contacts-box,
-#prefs-box
+#prefs-box,
+#folder-box
{
height: expression(parseInt(this.parentNode.offsetHeight)+'px');
}
diff --git a/skins/default/mail.css b/skins/default/mail.css
index ead0aa610..7bb308c06 100644
--- a/skins/default/mail.css
+++ b/skins/default/mail.css
@@ -1337,8 +1337,7 @@ input.from_address
#compose-cc,
#compose-bcc,
#compose-replyto,
-#compose-mailreplyto,
-#compose-mailfollowupto
+#compose-followupto
{
display: none;
}
@@ -1435,9 +1434,6 @@ input.from_address
margin-top: 4px;
}
-
-/** quota indicator */
-
#quota
{
position: absolute;
@@ -1453,19 +1449,3 @@ input.from_address
right: 6px;
z-index: 101;
}
-
-.quota_text {
- text-align: center;
- font-size: 10px;
- color: #666;
- border: 1px solid #999;
- cursor: default;
-}
-.quota_bg { background-color: white; }
-.quota_high { background-color: #F33131; }
-.quota_mid { background-color: #F5AD3C; }
-.quota_low { background-color: #91E164; }
-.quota_text_high { color: white; }
-.quota_text_mid { color: #666; }
-.quota_text_low { color: #666; }
-
diff --git a/skins/default/settings.css b/skins/default/settings.css
index c902740a6..5624f80e3 100644
--- a/skins/default/settings.css
+++ b/skins/default/settings.css
@@ -5,41 +5,20 @@
width: 300px;
}
-#folder-manager
-{
- position: absolute;
- width: 600px;
- top: 0;
- left: 0;
- bottom: 105px;
- overflow: auto;
- border: 1px solid #999999;
-}
-
#folder-manager.droptarget
{
border: 1px solid #CC3333;
background-color: #FFFFA6;
}
-#listbuttons
-{
- position: absolute;
- left: 20px;
- bottom: 18px;
-}
-
-#identities-table
+#identities-table,
+#subscription-table,
+#sections-table
{
width: 100%;
table-layout: fixed;
}
-#subscription-table
-{
- width: 100%;
-}
-
#subscription-table input
{
font: inherit;
@@ -50,14 +29,8 @@
#sections-table tbody td
{
cursor: default;
- overflow: hidden;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
-}
-
-#subscription-table tbody td
-{
- height: 22px !important;
height: 18px;
}
@@ -66,49 +39,26 @@
color: #666;
}
-#subscription-table tr.selected td,
-#subscription-table tr.selected td a
+#subscription-table tr.selected td
{
color: #FFFFFF;
background-color: #CC3333;
}
-#subscription-table tr.droptarget td,
-#subscription-table tr.droptarget td a
+#subscription-table tr.droptarget td
{
background-color: #FFFFA6;
}
-#subscription-table thead td.name
-{
- width: 95%;
-}
-
-#subscription-table thead td.msgcount,
-#subscription-table thead td.subscribed,
-#subscription-table thead td.threaded
-{
- white-space: nowrap;
- min-width: 50px;
-}
-
-#subscription-table tbody td.subscribed,
-#subscription-table tbody td.rename,
-#subscription-table tbody td.delete
-{
- padding: 1px 4px;
-}
-
-#subscription-table thead td.rename,
-#subscription-table thead td.delete
+#subscription-table td.name
{
- width: 30px;
+ width: auto;
}
-#subscription-table td.name input
+#subscription-table td.subscribed
{
- font: inherit;
- width: 90%;
+ text-align: right;
+ padding-right: 12px;
}
#identity-frame
@@ -118,7 +68,9 @@
border: 1px solid #999999;
}
-#identity-details
+#identity-details,
+#folder-box,
+#prefs-box
{
position: absolute;
top: 0;
@@ -129,7 +81,8 @@
background-color: #F2F2F2;
}
-#identity-details table td.title
+#identity-details table td.title,
+#folder-details table td.title
{
font-weight: bold;
text-align: right;
@@ -150,6 +103,7 @@ input.disabled
}
#identities-list,
+#folder-manager,
#sectionslist
{
position: absolute;
@@ -161,24 +115,9 @@ input.disabled
overflow: hidden;
}
-#sections-table
-{
- width: 100%;
- table-layout: fixed;
-}
-
-#prefs-box
-{
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- border: 1px solid #999999;
- overflow: hidden;
-}
-
body.iframe,
-#prefs-frame
+#prefs-frame,
+#folder-frame
{
background-color: #F2F2F2;
border: none;
@@ -203,3 +142,24 @@ body.iframe,
text-align: right;
float: right;
}
+
+#quota
+{
+ position: absolute;
+ top: 3px;
+ right: 8px;
+ width: 100px;
+}
+
+#quotaimg
+{
+ position: absolute;
+ top: 3px;
+ right: 6px;
+ z-index: 101;
+}
+
+#rcmfd_signature
+{
+ font-family: monospace;
+}
diff --git a/skins/default/splitter.js b/skins/default/splitter.js
index de228c58a..e11f9fea5 100644
--- a/skins/default/splitter.js
+++ b/skins/default/splitter.js
@@ -24,7 +24,7 @@ function rcube_splitter(attrib)
// create and position the handle for this splitter
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
-
+
if (this.horizontal) {
var top = this.p1pos.top + this.p1.offsetHeight;
this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10,
@@ -92,7 +92,7 @@ function rcube_splitter(attrib)
this.onDragStart = function(e)
{
// disable text selection while dragging the splitter
- if (window.webkit || bw.safari)
+ if (bw.konq || bw.chrome || bw.safari)
document.body.style.webkitUserSelect = 'none';
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
@@ -155,7 +155,7 @@ function rcube_splitter(attrib)
this.onDragStop = function(e)
{
// resume the ability to highlight text
- if (window.webkit || bw.safari)
+ if (bw.konq || bw.chrome || bw.safari)
document.body.style.webkitUserSelect = 'auto';
// cancel the listening for drag events
diff --git a/skins/default/templates/compose.html b/skins/default/templates/compose.html
index 99015abee..2dcf8b0c1 100644
--- a/skins/default/templates/compose.html
+++ b/skins/default/templates/compose.html
@@ -78,18 +78,12 @@
<label for="_replyto"><roundcube:label name="replyto" /></label>
</td>
<td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></td>
- </tr><tr id="compose-mailreplyto">
+ </tr><tr id="compose-followupto">
<td class="title top">
- <a href="#mailreplyto" onclick="return rcmail_ui.hide_header_form('mailreplyto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
- <label for="_mailreplyto"><roundcube:label name="mailreplyto" /></label>
+ <a href="#followupto" onclick="return rcmail_ui.hide_header_form('followupto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
+ <label for="_followupto"><roundcube:label name="followupto" /></label>
</td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="mailreplyto" form="form" id="_mailreplyto" size="70" tabindex="6" /></td>
- </tr><tr id="compose-mailfollowupto">
- <td class="title top">
- <a href="#mailfollowupto" onclick="return rcmail_ui.hide_header_form('mailfollowupto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
- <label for="_mailfollowupto"><roundcube:label name="mailfollowupto" /></label>
- </td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="mailfollowupto" form="form" id="_mailfollowupto" size="70" tabindex="7" /></td>
+ <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="7" /></td>
</tr><tr>
<td></td>
<td class="formlinks">
@@ -99,9 +93,7 @@
<span class="separator">|</span>
<a href="#reply-to" onclick="return rcmail_ui.show_header_form('replyto')" id="replyto-link"><roundcube:label name="addreplyto" /></a>
<span class="separator">|</span>
- <a href="#mailreply-to" onclick="return rcmail_ui.show_header_form('mailreplyto')" id="mailreplyto-link"><roundcube:label name="addmailreplyto" /></a>
- <span class="separator">|</span>
- <a href="#mailfollowup-to" onclick="return rcmail_ui.show_header_form('mailfollowupto')" id="mailfollowupto-link"><roundcube:label name="addmailfollowupto" /></a>
+ <a href="#followup-to" onclick="return rcmail_ui.show_header_form('followupto')" id="followupto-link"><roundcube:label name="addfollowupto" /></a>
</td>
</tr><tr>
<td class="title"><label for="compose-subject"><roundcube:label name="subject" /></label></td>
diff --git a/skins/default/templates/folderedit.html b/skins/default/templates/folderedit.html
new file mode 100644
index 000000000..78ddd335e
--- /dev/null
+++ b/skins/default/templates/folderedit.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe">
+
+<div id="folder-title" class="boxtitle"><roundcube:label name="folderproperties" /></div>
+
+<div id="folder-details" class="boxcontent">
+ <roundcube:object name="folderdetails" />
+ <p>
+ <roundcube:if condition="!strlen(request:_mbox)" />
+ <input type="button" value="<roundcube:label name="cancel" />" class="button" onclick="history.back()" />&nbsp;
+ <roundcube:endif />
+ <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+ </p>
+</div>
+<script type="text/javascript">rcube_init_tabs('folder-details')</script>
+
+</body>
+</html>
diff --git a/skins/default/templates/folders.html b/skins/default/templates/folders.html
new file mode 100644
index 000000000..1710b8ca0
--- /dev/null
+++ b/skins/default/templates/folders.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+<style type="text/css">
+#folder-manager { width: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter-5 : 295" />px; }
+#folder-box { left: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305" />px;
+ <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="mainscreen">
+
+<div id="folder-manager">
+<div id="folder-title" class="boxtitle"><roundcube:label name="folders" /><span class="rightalign"><roundcube:label name="subscribed" /></span></div>
+<div class="boxlistcontent">
+ <roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" noheader="true"
+ cellpadding="1" cellspacing="0" summary="Folder subscription table" class="records-table" />
+</div>
+<div class="boxfooter">
+ <roundcube:button command="create-folder" type="link" title="createfolder" class="buttonPas addgroup" classAct="button addgroup" content=" " />
+ <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
+
+ <roundcube:if condition="env:quota" />
+ <img id="quotaimg" src="/images/quota.gif" alt="" />
+ <div id="quota">
+ <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" />
+ </div>
+ <roundcube:endif />
+</div>
+</div>
+
+<script type="text/javascript">
+ var folderviewsplit = new rcube_splitter({id:'folderviewsplitter', p1: 'folder-manager', p2: 'folder-box', orientation: 'v', relative: true, start: 300 });
+ rcmail.add_onload('folderviewsplit.init()');
+</script>
+
+<div id="folder-box">
+ <roundcube:object name="folderframe" id="folder-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+
+<div id="mailboxoptionsmenu" class="popupmenu">
+ <ul>
+ <li><roundcube:button command="delete-folder" label="delete" classAct="active" /></li>
+ <li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
+ <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
+ </ul>
+</div>
+
+</body>
+</html>
diff --git a/skins/default/templates/identityedit.html b/skins/default/templates/identityedit.html
index 24c37a629..45c68f1ad 100644
--- a/skins/default/templates/identityedit.html
+++ b/skins/default/templates/identityedit.html
@@ -40,7 +40,7 @@
<div id="identity-title" class="boxtitle"><roundcube:object name="steptitle" /></div>
<div class="boxcontent">
-<roundcube:object name="identityform" size="40" textareacols="60" textarearows="6" />
+<roundcube:object name="identityform" size="40" textareacols="70" textarearows="6" />
<p>
<roundcube:button command="delete" type="input" class="button" label="delete" condition="env:action=='edit-identity'" style="margin-right:0.5em" />
<roundcube:button command="save" type="input" class="button mainaction" label="save" />
diff --git a/skins/default/templates/managefolders.html b/skins/default/templates/managefolders.html
deleted file mode 100644
index 164d56f54..000000000
--- a/skins/default/templates/managefolders.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/settingstabs.html" />
-
-<form name="subscriptionform" action="./" onsubmit="rcmail.command('create-folder');return false;">
-
-<div id="mainscreen">
-
-<div id="folder-manager">
-<roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table"
- cellpadding="1" cellspacing="0" summary="Folder subscription table" class="records-table"
- deleteIcon="/images/icons/delete.png"
- renameIcon="/images/icons/rename.png" />
-</div>
-
-<div id="bottomboxes" class="box">
-<div class="boxtitle"><roundcube:label name="createfolder" /></div>
-
-<div class="boxcontent">
-<roundcube:label name="foldername" />:&nbsp;
-<roundcube:object name="createfolder" form="subscriptionform" hintbox="rcmailaddfolderhint" />
-<roundcube:button command="create-folder" type="input" class="button" label="create" />
-<div id="rcmailaddfolderhint" class="hint" style="margin-top:1em; height:16px"></div>
-</div>
-</div>
-
-</div>
-
-</form>
-
-</body>
-</html>