From c8c1e0ef3b229a82e74c70aeacc29f2ba021afbe Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Tue, 27 Jun 2006 17:56:44 -0400
Subject: [PATCH] Renameable folders, mail-checking changes, other fixes (richs)

---
 program/steps/settings/manage_folders.inc |   68 +++++++++++++++++++++++++++++++++-
 1 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc
index 86b9bb7..dd321f0 100644
--- a/program/steps/settings/manage_folders.inc
+++ b/program/steps/settings/manage_folders.inc
@@ -19,7 +19,7 @@
 
 */
 
-// init IAMP connection
+// init IMAP connection
 rcmail_imap_init(TRUE);
 
 
@@ -60,6 +60,27 @@
     rcube_remote_response($commands);
     }
   else if (!$create)
+    show_message('errorsaving', 'error');
+  }
+
+// rename a mailbox
+else if ($_action=='rename-folder')
+  {
+  if (!empty($_GET['_folder_oldname']) && !empty($_GET['_folder_newname']))
+    $rename = $IMAP->rename_mailbox(get_input_value('_folder_oldname', RCUBE_INPUT_GET), trim(get_input_value('_folder_newname', RCUBE_INPUT_GET)), TRUE);
+
+  if ($rename && $REMOTE_REQUEST)
+    {
+    $commands = sprintf("this.add_folder_row('%s');", rep_specialchars_output($rename, 'js')); 
+    $commands .= sprintf("this.remove_folder_row('%s')", rep_specialchars_output($_GET['_folder_oldname'], 'js'));
+    rcube_remote_response($commands);
+    }
+  else if (!$rename && $REMOTE_REQUEST)
+    {
+    $commands = show_message('errorsaving', 'error');
+    rcube_remote_response($commands);
+    }
+  else if (!$rename)
     show_message('errorsaving', 'error');
   }
 
@@ -120,6 +141,9 @@
   // create list of available folders
   foreach ($a_unsubscribed as $i => $folder)
     {
+    if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders']))
+      continue;
+
     $zebra_class = $i%2 ? 'even' : 'odd';
     $folder_js = rep_specialchars_output($folder, 'js');
     $a_js_folders['rcmrow'.($i+1)] = $folder_js;
@@ -176,10 +200,50 @@
   return $out;
   }
 
+function rcube_rename_folder_form($attrib)
+  {
+  global $CONFIG, $IMAP, $JS_OBJECT_NAME;
+
+  list($form_start, $form_end) = get_form_tags($attrib, 'rename-folder');
+  unset($attrib['form']);
+
+  // return the complete edit form as table
+  $out = "$form_start\n";
+
+  $a_unsubscribed = $IMAP->list_unsubscribed();
+  $select_folder = new select(array('name' => '_folder_oldname', 'id' => 'rcmfd_oldfolder'));
+
+  foreach ($a_unsubscribed as $i => $folder)
+    {
+    if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders'])) 
+      continue;
+
+    $select_folder->add($folder);
+    }
+
+  $out .= $select_folder->show();
+
+  $out .= " to ";
+  $inputtwo = new textfield(array('name' => '_folder_newname'));
+  $out .= $inputtwo->show();
+
+  if (get_boolean($attrib['button']))
+    {
+    $button = new input_field(array('type' => 'button',
+                                    'value' => rcube_label('rename'),
+                                    'onclick' => "$JS_OBJECT_NAME.command('rename-folder',this.form)"));
+    $out .= $button->show();
+    }
+
+  $out .= "\n$form_end";
+
+  return $out;
+  }
+
 
 // add some labels to client
 rcube_add_label('deletefolderconfirm');
 
 
 parse_template('managefolders');
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1