فهرست منبع

hiding default prefix in operations with folders. It is not visible in other
parts of interface

tokul 20 سال پیش
والد
کامیت
eea6fa8892
1فایلهای تغییر یافته به همراه34 افزوده شده و 21 حذف شده
  1. 34 21
      functions/folder_manip.php

+ 34 - 21
functions/folder_manip.php

@@ -1,19 +1,19 @@
 <?php
 
 /**
-* folder_manip.php
-*
-* Copyright (c) 1999-2005 The SquirrelMail Project Team
-* Licensed under the GNU GPL. For full terms see the file COPYING.
-*
-* Functions for IMAP folder manipulation:
-* (un)subscribe, create, rename, delete.
-*
-* @version $Id$
-* @package squirrelmail
-* @see folders.php
-* @author Thijs Kinkhorst - kink@squirrelmail.org
-*/
+ * folder_manip.php
+ *
+ * Copyright (c) 1999-2005 The SquirrelMail Project Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * Functions for IMAP folder manipulation:
+ * (un)subscribe, create, rename, delete.
+ *
+ * @version $Id$
+ * @package squirrelmail
+ * @see folders.php
+ * @author Thijs Kinkhorst - kink@squirrelmail.org
+ */
 
 
 /**
@@ -29,9 +29,9 @@ function folders_checkname($imapConnection, $folder_name, $delimiter)
         global $color;
         plain_error_message(_("Illegal folder name. Please select a different name.").
             '<br /><a href="../src/folders.php">'._("Click here to go back").'</a>.', $color);
-		    
+
         sqimap_logout($imapConnection);
-	    exit;
+        exit;
     }
 }
 
@@ -74,7 +74,7 @@ function folders_create ($imapConnection, $delimiter, $folder_name, $subfolder,
  * folder should be renamed to.
  */
 function folders_rename_getname ($imapConnection, $delimiter, $old) {
-    global $color;
+    global $color,$default_folder_prefix;
 
     if ( $old == '' ) {
         plain_error_message(_("You have not selected a folder to rename. Please do so.").
@@ -94,7 +94,15 @@ function folders_rename_getname ($imapConnection, $delimiter, $old) {
 
     if (strpos($old, $delimiter)) {
         $old_name = substr($old, strrpos($old, $delimiter)+1, strlen($old));
-        $old_parent = substr($old, 0, strrpos($old, $delimiter));
+        // hide default prefix (INBOX., mail/ or other)
+        $quoted_prefix=preg_quote($default_folder_prefix,'/');
+        $prefix_length=(preg_match("/^$quoted_prefix/",$old) ? strlen($default_folder_prefix) : 0);
+        if ($prefix_length>strrpos($old, $delimiter)) {
+            $old_parent = '';
+        } else {
+            $old_parent = substr($old, $prefix_length, (strrpos($old, $delimiter)-$prefix_length))
+                . ' ' . $delimiter;
+        }
     } else {
         $old_name = $old;
         $old_parent = '';
@@ -110,7 +118,7 @@ function folders_rename_getname ($imapConnection, $delimiter, $old) {
             addForm('folders.php').
             addHidden('smaction', 'rename').
              _("New name:").
-             '<br /><b>' . htmlspecialchars($old_parent) . ' ' . htmlspecialchars($delimiter) . '</b>' .
+             '<br /><b>' . htmlspecialchars($old_parent) . '</b>' .
              addInput('new_name', $old_name, 25) . '<br /><br />' . "\n";
              if ( $isfolder ) {
                  echo addHidden('isfolder', 'true');
@@ -170,7 +178,7 @@ function folders_rename_do($imapConnection, $delimiter, $orig, $old_name, $new_n
  */
 function folders_delete_ask ($imapConnection, $folder_name)
 {
-    global $color;
+    global $color,$default_folder_prefix;
 
     if ($folder_name == '') {
         plain_error_message(_("You have not selected a folder to delete. Please do so.").
@@ -178,6 +186,12 @@ function folders_delete_ask ($imapConnection, $folder_name)
         exit;
     }
 
+    // hide default folder prefix (INBOX., mail/ or other)
+    $visible_folder_name = imap_utf7_decode_local($folder_name);
+    $quoted_prefix = preg_quote($default_folder_prefix,'/');
+    $prefix_length = (preg_match("/^$quoted_prefix/",$visible_folder_name) ? strlen($default_folder_prefix) : 0);
+    $visible_folder_name = substr($visible_folder_name,$prefix_length);
+
     echo '<br />' .
         html_tag( 'table', '', 'center', '', 'width="95%" border="0"' ) .
         html_tag( 'tr',
@@ -186,8 +200,7 @@ function folders_delete_ask ($imapConnection, $folder_name)
         html_tag( 'tr' ) .
         html_tag( 'td', '', 'center', $color[4] ) .
         sprintf(_("Are you sure you want to delete %s?"),
-            str_replace(array(' ','<','>'),array('&nbsp;','&lt;','&gt;'),
-                imap_utf7_decode_local($folder_name))).
+            str_replace(array(' ','<','>'),array('&nbsp;','&lt;','&gt;'),$visible_folder_name)).
         addForm('folders.php', 'post')."<p>\n".
         addHidden('smaction', 'delete').
         addHidden('folder_name', $folder_name).