From c8c1e0ef3b229a82e74c70aeacc29f2ba021afbe Mon Sep 17 00:00:00 2001 From: svncommit Date: Tue, 27 Jun 2006 21:56:44 +0000 Subject: Renameable folders, mail-checking changes, other fixes (richs) --- program/steps/mail/check_recent.inc | 52 +++++++++++++---------- program/steps/mail/func.inc | 4 +- program/steps/settings/manage_folders.inc | 68 ++++++++++++++++++++++++++++++- 3 files changed, 98 insertions(+), 26 deletions(-) (limited to 'program/steps') diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc index 8a563c4c4..e51cbf867 100644 --- a/program/steps/mail/check_recent.inc +++ b/program/steps/mail/check_recent.inc @@ -9,40 +9,48 @@ | Licensed under the GNU GPL | | | | PURPOSE: | - | Check for recent messages | + | Check for recent messages, in all mailboxes | | | +-----------------------------------------------------------------------+ | Author: Thomas Bruederli | +-----------------------------------------------------------------------+ - $Id$ + $Id: check_recent.inc 233 2006-06-26 17:31:20Z richs $ */ $REMOTE_REQUEST = TRUE; -$mbox_name = $IMAP->get_mailbox_name(); -if ($recent_count = $IMAP->messagecount(NULL, 'RECENT', TRUE)) +$a_mailboxes = $IMAP->list_mailboxes(); + +foreach ($a_mailboxes as $mbox_name) { - $count = $IMAP->messagecount(); - $unread_count = $IMAP->messagecount(NULL, 'UNSEEN', TRUE); - - $commands = sprintf("this.set_unread_count('%s', %d, true);\n", addslashes($mbox_name), $unread_count); - $commands .= sprintf("this.set_env('messagecount', %d);\n", $count); - $commands .= sprintf("this.set_rowcount('%s');\n", rcmail_get_messagecount_text()); - $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota()); - - // add new message headers to list - $a_headers = array(); - for ($i=$recent_count, $id=$count-$recent_count+1; $i>0; $i--, $id++) - $a_headers[] = $IMAP->get_headers($id, NULL, FALSE); - - $commands .= rcmail_js_message_list($a_headers, TRUE); + if ($mbox_name == $IMAP->get_mailbox_name()) + { + if ($recent_count = $IMAP->messagecount(NULL, 'RECENT', TRUE)) + { + $count = $IMAP->messagecount(); + $unread_count = $IMAP->messagecount(NULL, 'UNSEEN', TRUE); + + $commands .= sprintf("this.set_unread_count('%s', %d, true);\n", addslashes($mbox_name), $unread_count); + $commands .= sprintf("this.set_env('messagecount', %d);\n", $count); + $commands .= sprintf("this.set_rowcount('%s');\n", rcmail_get_messagecount_text()); + $commands .= sprintf("this.set_quota('%s');\n", $IMAP->get_quota()); + + // add new message headers to list + $a_headers = array(); + for ($i=$recent_count, $id=$count-$recent_count+1; $i>0; $i--, $id++) + $a_headers[] = $IMAP->get_headers($id, NULL, FALSE); + + $commands .= rcmail_js_message_list($a_headers, TRUE); + } + } + else + { + if ($IMAP->messagecount($mbox_name, 'RECENT')) + $commands .= sprintf("this.set_unread_count('%s', %d);\n", addslashes($mbox_name), $IMAP->messagecount($mbox_name, 'UNSEEN')); + } } -if (strtoupper($mbox_name)!='INBOX' && $IMAP->messagecount('INBOX', 'RECENT')) - $commands = sprintf("this.set_unread_count('INBOX', %d);\n", $IMAP->messagecount('INBOX', 'UNSEEN')); - - rcube_remote_response($commands); ?> diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 8eff11c06..eac4e3747 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -304,10 +304,10 @@ function rcmail_message_list($attrib) // define list of cols to be displayed $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); - $a_sort_cols = array('subject', 'date', 'from', 'to'); + $a_sort_cols = array('subject', 'date', 'from', 'to', 'size'); // show 'to' instead of from in sent messages - if (strtolower($IMAP->get_mailbox_name())=='sent' && ($f = array_search('from', $a_show_cols)) + if (($IMAP->get_mailbox_name()==$CONFIG['sent_mbox'] || $IMAP->get_mailbox_name()==$CONFIG['drafts_mbox']) && ($f = array_search('from', $a_show_cols)) && !array_search('to', $a_show_cols)) $a_show_cols[$f] = 'to'; diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc index 86b9bb7fe..dd321f0d8 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); @@ -63,6 +63,27 @@ else if ($_action=='create-folder') 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'); + } + // delete an existing IMAP mailbox else if ($_action=='delete-folder') { @@ -120,6 +141,9 @@ function rcube_subscription_form($attrib) // 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 @@ function rcube_create_folder_form($attrib) 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 +?> -- cgit v1.2.3