Bug #8554: Don't use translated folder prefixes in rename dialog
authorMichael M Slusarz <slusarz@curecanti.org>
Mon, 12 Oct 2009 22:21:15 +0000 (16:21 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Mon, 12 Oct 2009 22:21:15 +0000 (16:21 -0600)
imp/docs/CHANGES
imp/folders.php
imp/js/folders.js
imp/lib/IMP.php

index d8c1aac..02ba036 100644 (file)
@@ -104,6 +104,7 @@ v5.0-git
 v4.3.6-cvs
 ----------
 
+[mms] Don't use translated folder prefixes in rename dialog (Bug #8554).
 [jan] Add hook to retrieve public S/MIME and PGP keys.
 
 
index 4c4a7a2..756379f 100644 (file)
@@ -351,11 +351,19 @@ list($raw_rows, $newmsgs) = $imaptree->build();
 
 /* Build the list of display names. */
 reset($raw_rows);
-while (list(,$r) = each($raw_rows)) {
+$displayNames = $fullNames = array();
+while (list($k, $r) = each($raw_rows)) {
     $displayNames[] = $r['display'];
+
+    $tmp = IMP::displayFolder($r['value'], true);
+    if ($tmp != $r['display']) {
+        $fullNames[$k] = $tmp;
+    }
 }
+
 Horde::addInlineScript(array(
-    'ImpFolders.displayNames = ' . Horde_Serialize::serialize($displayNames, Horde_Serialize::JSON, $charset)
+    'ImpFolders.displayNames = ' . Horde_Serialize::serialize($displayNames, Horde_Serialize::JSON, $charset),
+    'ImpFolders.fullNames = ' . Horde_Serialize::serialize($fullNames, Horde_Serialize::JSON, $charset)
 ));
 
 /* Prepare the header template. */
index 0537b5b..81d6594 100644 (file)
@@ -136,7 +136,7 @@ var ImpFolders = {
                 if (IMP.conf.fixed_folders.indexOf(this.displayNames[j]) != -1) {
                     window.alert(IMP.text.folders_no_rename + ' ' + this.displayNames[j]);
                 } else {
-                    var tmp = window.prompt(IMP.text.folders_rename1 + ' ' + this.displayNames[j] + "\n" + IMP.text.folders_rename2, this.displayNames[j]);
+                    var tmp = window.prompt(IMP.text.folders_rename1 + ' ' + this.displayNames[j] + "\n" + IMP.text.folders_rename2, this.fullNames[j] ? this.fullNames[j] : this.displayNames[j]);
                     if (tmp) {
                         newnames += tmp + "\n";
                         oldnames += f.value + "\n";
index 1707796..4d3a76e 100644 (file)
@@ -430,17 +430,18 @@ class IMP
      * strip that prefix out. Additionally, translate prefix text if this
      * is one of the folders with special meaning.
      *
-     * @param string $folder  The folder name to display (UTF7-IMAP).
+     * @param string $folder        The folder name to display (UTF7-IMAP).
+     * @param boolean $notranslate  Do not translate the folder prefix.
      *
      * @return string  The folder, with any prefix gone/translated.
      */
-    static public function displayFolder($folder)
+    static public function displayFolder($folder, $notranslate = false)
     {
         global $prefs;
 
         $cache = &self::$_displaycache;
 
-        if (isset($cache[$folder])) {
+        if (!$notranslate && isset($cache[$folder])) {
             return $cache[$folder];
         }
 
@@ -466,6 +467,10 @@ class IMP
             $out = $folder;
         };
 
+        if ($notranslate) {
+            return $out;
+        }
+
         foreach ($sub_array as $key => $val) {
             if (stripos($out, $key) === 0) {
                 $len = strlen($key);