summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-01-18 13:24:52 +0100
committerAleksander Machniak <alec@alec.pl>2013-01-18 13:24:52 +0100
commit4d7964d9101d08b5e7533cea50e52e07bf3f783a (patch)
tree20066128d8218f5054075fe85dc517ab954813b0
parent8e8f3b96b51fde1df953de7398b15e0f01e10777 (diff)
Improved folder path presentation in page title (use unified delimiter, localize path).
E.g. folder "INBOX.test" will be displayed as "Inbox >> test"
-rw-r--r--program/include/rcmail.php23
-rw-r--r--program/steps/mail/func.inc8
-rw-r--r--program/steps/mail/list.inc1
3 files changed, 27 insertions, 5 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 249bd0559..c734216ac 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -1677,12 +1677,31 @@ class rcmail extends rcube
* Try to localize the given IMAP folder name.
* UTF-7 decode it in case no localized text was found
*
- * @param string $name Folder name
+ * @param string $name Folder name
+ * @param bool $with_path Enable path localization
*
* @return string Localized folder name in UTF-8 encoding
*/
- public function localize_foldername($name)
+ public function localize_foldername($name, $with_path = true)
{
+ // try to localize path of the folder
+ if ($with_path) {
+ $storage = $this->get_storage();
+ $delimiter = $storage->get_hierarchy_delimiter();
+ $path = explode($delimiter, $name);
+ $count = count($path);
+
+ if ($count > 1) {
+ for ($i = 1; $i < $count; $i++) {
+ $folder = implode($delimiter, array_slice($path, 0, -$i));
+ if ($folder_class = $this->folder_classname($folder)) {
+ $name = implode($delimiter, array_slice($path, $count - $i));
+ return $this->gettext($folder_class) . $delimiter . rcube_charset::convert($name, 'UTF7-IMAP');
+ }
+ }
+ }
+ }
+
if ($folder_class = $this->folder_classname($name)) {
return $this->gettext($folder_class);
}
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index f82e60a36..6b8879dcf 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -89,11 +89,12 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
}
$threading = (bool) $RCMAIL->storage->get_threading();
+ $delimiter = $RCMAIL->storage->get_hierarchy_delimiter();
// set current mailbox and some other vars in client environment
$OUTPUT->set_env('mailbox', $mbox_name);
$OUTPUT->set_env('pagesize', $RCMAIL->storage->get_pagesize());
- $OUTPUT->set_env('delimiter', $RCMAIL->storage->get_hierarchy_delimiter());
+ $OUTPUT->set_env('delimiter', $delimiter);
$OUTPUT->set_env('threading', $threading);
$OUTPUT->set_env('threads', $threading || $RCMAIL->storage->get_capability('THREAD'));
$OUTPUT->set_env('preview_pane_mark_read', $RCMAIL->config->get('preview_pane_mark_read', 0));
@@ -121,7 +122,10 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
'copy', 'move', 'quota');
- $OUTPUT->set_pagetitle(rcmail_localize_foldername($RCMAIL->storage->mod_folder($mbox_name)));
+ $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true);
+ $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle);
+
+ $OUTPUT->set_pagetitle($pagetitle);
}
/**
diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc
index b8c3ee021..a2380131a 100644
--- a/program/steps/mail/list.inc
+++ b/program/steps/mail/list.inc
@@ -97,7 +97,6 @@ $OUTPUT->set_env('threading', $threading);
$OUTPUT->set_env('current_page', $count ? $RCMAIL->storage->get_page() : 1);
$OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count), $mbox_name);
-$OUTPUT->command('set_mailboxname', rcmail_get_mailbox_name_text());
// add message rows
rcmail_js_message_list($a_headers, FALSE, $cols);