Fix bug where namespace prefix could not be truncated on folders list if show_real_foldernames=true (#5695)

pull/5754/head
Aleksander Machniak 8 years ago
parent d5be34ad17
commit 2f6ca6d672

@ -2,6 +2,7 @@ CHANGELOG Roundcube Webmail
=========================== ===========================
- Fix so settings/upload.inc could not be used by plugins (#5694) - Fix so settings/upload.inc could not be used by plugins (#5694)
- Fix bug where namespace prefix could not be truncated on folders list if show_real_foldernames=true (#5695)
RELEASE 1.2.4 RELEASE 1.2.4
------------- -------------

@ -1676,10 +1676,11 @@ class rcmail extends rcube
* *
* @param string $name Folder name * @param string $name Folder name
* @param bool $with_path Enable path localization * @param bool $with_path Enable path localization
* @param bool $path_remove Remove the path
* *
* @return string Localized folder name in UTF-8 encoding * @return string Localized folder name in UTF-8 encoding
*/ */
public function localize_foldername($name, $with_path = false) public function localize_foldername($name, $with_path = false, $path_remove = false)
{ {
$realnames = $this->config->get('show_real_foldernames'); $realnames = $this->config->get('show_real_foldernames');
@ -1687,10 +1688,18 @@ class rcmail extends rcube
return $this->gettext($folder_class); return $this->gettext($folder_class);
} }
// try to localize path of the folder
if ($with_path && !$realnames) {
$storage = $this->get_storage(); $storage = $this->get_storage();
$delimiter = $storage->get_hierarchy_delimiter(); $delimiter = $storage->get_hierarchy_delimiter();
// Remove the path
if ($path_remove) {
if (strpos($name, $delimiter)) {
$path = explode($delimiter, $name);
$name = array_pop($path);
}
}
// try to localize path of the folder
else if ($with_path && !$realnames) {
$path = explode($delimiter, $name); $path = explode($delimiter, $name);
$count = count($path); $count = count($path);

@ -86,20 +86,21 @@ function rcmail_folder_form($attrib)
// Location (name) // Location (name)
if ($options['protected']) { if ($options['protected']) {
$foldername = str_replace($delimiter, ' » ', rcube::Q($RCMAIL->localize_folderpath($mbox))); $foldername = str_replace($delimiter, ' » ', rcube::Q($RCMAIL->localize_foldername($mbox, false, true)));
} }
else if ($options['norename']) { else if ($options['norename']) {
$foldername = rcube::Q($folder); $foldername = rcube::Q($folder);
} }
else { else {
if (isset($_POST['_name'])) if (isset($_POST['_name'])) {
$folder = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true)); $folder = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true));
}
$foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30)); $foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30));
$foldername = $foldername->show($folder); $foldername = $foldername->show($folder);
if ($options['special']) { if ($options['special'] && ($sname = $RCMAIL->localize_foldername($mbox, false, true)) != $folder) {
$foldername .= ' (' . rcube::Q($RCMAIL->localize_foldername($mbox)) .')'; $foldername .= ' (' . rcube::Q($sname) .')';
} }
} }

@ -277,12 +277,13 @@ function rcmail_subscription_form($attrib)
foreach ($list_folders as $i => $folder) { foreach ($list_folders as $i => $folder) {
$sub_key = array_search($folder['id'], $a_subscribed); $sub_key = array_search($folder['id'], $a_subscribed);
$subscribed = $sub_key !== false; $subscribed = $sub_key !== false;
$protected = $folder['id'] == 'INBOX' || ($protect_default && isset($special_folders[$folder['id']])); $special = $folder['id'] == 'INBOX' || isset($special_folders[$folder['id']]);
$protected = $folder['id'] == 'INBOX' || ($protect_default && $special);
$noselect = false; $noselect = false;
$classes = array(); $classes = array();
$folder_utf8 = rcube_charset::convert($folder['id'], 'UTF7-IMAP'); $folder_utf8 = rcube_charset::convert($folder['id'], 'UTF7-IMAP');
$display_folder = rcube::Q($protected ? $RCMAIL->localize_foldername($folder['id']) : $folder['name']); $display_folder = rcube::Q($special ? $RCMAIL->localize_foldername($folder['id'], false, true) : $folder['name']);
if ($folder['virtual']) { if ($folder['virtual']) {
$classes[] = 'virtual'; $classes[] = 'virtual';

Loading…
Cancel
Save