From a894ba5029a09fb9d0453b5cf9c944ce313f8a48 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Thu, 29 Jun 2006 19:41:40 -0400
Subject: [PATCH] Removeable attachments, Auto-default folder creation, bug fixes

---
 program/steps/settings/manage_folders.inc |   90 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 76 insertions(+), 14 deletions(-)

diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc
index 0702ce9..7274bdc 100644
--- a/program/steps/settings/manage_folders.inc
+++ b/program/steps/settings/manage_folders.inc
@@ -19,9 +19,7 @@
 
 */
 
-require_once('lib/utf7.inc');
-
-// init IAMP connection
+// init IMAP connection
 rcmail_imap_init(TRUE);
 
 
@@ -31,7 +29,7 @@
   if (strlen($_GET['_mboxes']))
     $IMAP->subscribe(array($_GET['_mboxes']));
 
-  if ($_GET['_remote'])
+  if ($REMOTE_REQUEST)
     rcube_remote_response('// subscribed');
   }
 
@@ -41,27 +39,48 @@
   if (strlen($_GET['_mboxes']))
     $IMAP->unsubscribe(array($_GET['_mboxes']));
 
-  if ($_GET['_remote'])
+  if ($REMOTE_REQUEST)
     rcube_remote_response('// unsubscribed');
   }
 
 // create a new mailbox
 else if ($_action=='create-folder')
   {
-  if (strlen($_GET['_name']))
-    $create = $IMAP->create_mailbox(strip_tags(trim($_GET['_name'])), TRUE);
+  if (!empty($_GET['_name']))
+    $create = $IMAP->create_mailbox(trim(get_input_value('_name', RCUBE_INPUT_GET)), TRUE);
 
-  if ($create && $_GET['_remote'])
+  if ($create && $REMOTE_REQUEST)
     {
-    $commands = sprintf("this.add_folder_row('%s')", $OUTPUT->encode_string(rep_specialchars_output($create, 'js')));
+    $commands = sprintf("this.add_folder_row('%s')", rep_specialchars_output($create, 'js'));
     rcube_remote_response($commands);
     }
-  else if (!$create && $_GET['_remote'])
+  else if (!$create && $REMOTE_REQUEST)
     {
     $commands = show_message('errorsaving', 'error');
     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');\n", addslashes(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');
   }
 
@@ -71,9 +90,9 @@
   if (strlen($_GET['_mboxes']))
     $deleted = $IMAP->delete_mailbox(array($_GET['_mboxes']));
 
-  if ($_GET['_remote'] && $deleted)
+  if ($REMOTE_REQUEST && $deleted)
     rcube_remote_response(sprintf("this.remove_folder_row('%s')", rep_specialchars_output($_GET['_mboxes'], 'js')));
-  else if ($_GET['_remote'])
+  else if ($REMOTE_REQUEST)
     {
     $commands = show_message('errorsaving', 'error');
     rcube_remote_response($commands);
@@ -122,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;
@@ -129,7 +151,7 @@
     $out .= sprintf('<tr id="rcmrow%d" class="%s"><td>%s</td><td>%s</td><td><a href="#delete" onclick="%s.command(\'delete-folder\',\'%s\')" title="%s">%s</a></td>',
                     $i+1,
                     $zebra_class,
-                    $OUTPUT->encode_string(rep_specialchars_output(UTF7DecodeString($folder), 'html', 'all')),
+                    rep_specialchars_output(rcube_charset_convert($folder, 'UTF-7', 'UTF-8'), 'html', 'all'),
                     $checkbox_subscribe->show(in_array($folder, $a_subscribed)?$folder:'', array('value' => $folder)),
                     $JS_OBJECT_NAME,
                     $folder_js,
@@ -178,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