From d08333ea578e3b6c6ab42bed05f808a2b7b93cf1 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 05 May 2011 08:46:54 -0400
Subject: [PATCH] - Fix problems with subfolders of INBOX folder on some IMAP servers (#1487725)                                                             - Fix handling of folders that doesn't belong to any namespace (#1487637)

---
 program/steps/settings/edit_folder.inc |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc
index 34dc064..c57ec69 100644
--- a/program/steps/settings/edit_folder.inc
+++ b/program/steps/settings/edit_folder.inc
@@ -54,6 +54,20 @@
     else {
         $options = array();
         $path    = $parent_imap;
+
+        // allow creating subfolders of INBOX folder
+        if ($path == 'INBOX') {
+            $path = $RCMAIL->imap->mod_mailbox($path, 'in');
+        }
+    }
+
+    // remove personal namespace prefix
+    if (strlen($path)) {
+        $path_id = $path;
+        $path    = $RCMAIL->imap->mod_mailbox($path.$delimiter);
+        if ($path[strlen($path)-1] == $delimiter) {
+            $path = substr($path, 0, -1);
+        }
     }
 
     $form = array();
@@ -93,15 +107,15 @@
     );
 
     if (strlen($path)) {
-        if ($options['norename'] || $options['namespace'] != 'personal') {
+        if (!empty($options) && ($options['norename'] || $options['namespace'] != 'personal')) {
             // prevent user from moving folder
             $hidden_path = new html_hiddenfield(array('name' => '_parent', 'value' => $path));
             $form['props']['fieldsets']['location']['content']['name']['value'] .= $hidden_path->show();
         }
         else {
             $radio1 = new html_radiobutton(array('name' => '_parent', 'value' => ''));
-            $radio2 = new html_radiobutton(array('name' => '_parent', 'value' => $path));
-            $selected  = isset($_POST['_parent']) ? $_POST['_parent'] : $path;
+            $radio2 = new html_radiobutton(array('name' => '_parent', 'value' => $path_id));
+            $selected  = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id;
 
             $html_path = str_replace($delimiter, ' &raquo; ', rcmail_localize_folderpath($path));
 

--
Gitblit v1.9.1