From 4d7964d9101d08b5e7533cea50e52e07bf3f783a Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Fri, 18 Jan 2013 07:24:52 -0500 Subject: [PATCH] Improved folder path presentation in page title (use unified delimiter, localize path). E.g. folder "INBOX.test" will be displayed as "Inbox >> test" --- program/steps/mail/list.inc | 1 - program/include/rcmail.php | 23 +++++++++++++++++++++-- program/steps/mail/func.inc | 8 ++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 249bd05..c734216 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -1677,12 +1677,31 @@ * 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 f82e60a..6b8879d 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -89,11 +89,12 @@ } $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 @@ '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 b8c3ee0..a238013 100644 --- a/program/steps/mail/list.inc +++ b/program/steps/mail/list.inc @@ -97,7 +97,6 @@ $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); -- Gitblit v1.9.1