diff options
author | thomascube <thomas@roundcube.net> | 2005-09-25 14:18:03 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2005-09-25 14:18:03 +0000 |
commit | 4e17e6c9dbac8991ee8b302cb2581241247dc8bc (patch) | |
tree | d877546f6bd334b041734498e81f6299e005b01c /program/steps/settings/manage_folders.inc |
Initial revision
Diffstat (limited to 'program/steps/settings/manage_folders.inc')
-rw-r--r-- | program/steps/settings/manage_folders.inc | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc new file mode 100644 index 000000000..38f9e1a0e --- /dev/null +++ b/program/steps/settings/manage_folders.inc @@ -0,0 +1,176 @@ +<?php + +/* + +-----------------------------------------------------------------------+ + | program/steps/settings/manage_folders.inc | + | | + | This file is part of the RoundCube Webmail client | + | Copyright (C) 2005, RoundCube Dev. - Switzerland | + | All rights reserved. | + | | + | PURPOSE: | + | Provide functionality to create/delete/rename folders | + | | + +-----------------------------------------------------------------------+ + | Author: Thomas Bruederli <roundcube@gmail.com> | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +// init IAMP connection +rcmail_imap_init(TRUE); + + +// subscribe to one or more mailboxes +if ($_action=='subscribe') + { + if (strlen($_GET['_mboxes'])) + $IMAP->subscribe(explode(',', $_GET['_mboxes'])); + + if ($_GET['_remote']) + rcube_remote_response('// subscribed'); + } + +// unsubscribe one or more mailboxes +else if ($_action=='unsubscribe') + { + if (strlen($_GET['_mboxes'])) + $IMAP->unsubscribe(explode(',', $_GET['_mboxes'])); + + if ($_GET['_remote']) + rcube_remote_response('// unsubscribed'); + } + +// create a new mailbox +else if ($_action=='create-folder') + { + if (strlen($_GET['_name'])) + $create = $IMAP->create_mailbox(trim($_GET['_name']), TRUE); + + if ($create && $_GET['_remote']) + { + $commands = sprintf("this.add_folder_row('%s')", rep_specialchars_output($_GET['_name'], 'js')); + rcube_remote_response($commands); + } + else if (!$create && $_GET['_remote']) + { + $commands = show_message('errorsaving', 'error'); + rcube_remote_response($commands); + } + else if (!$create) + show_message('errorsaving', 'error'); + } + +// delete an existing IMAP mailbox +else if ($_action=='delete-folder') + { + if (strlen($_GET['_mboxes'])) + $IMAP->delete_mailbox(explode(',', $_GET['_mboxes'])); + + if ($_GET['_remote']) + rcube_remote_response('// deleted'); + } + + + +// build table with all folders listed by server +function rcube_subscription_form($attrib) + { + global $IMAP, $CONFIG, $OUTPUT, $JS_OBJECT_NAME; + + list($form_start, $form_end) = get_form_tags($attrib, 'folders'); + unset($attrib['form']); + + + if (!$attrib['id']) + $attrib['id'] = 'rcmSubscriptionlist'; + + // allow the following attributes to be added to the <table> tag + $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id', 'cellpadding', 'cellspacing', 'border', 'summary')); + + $out = "$form_start\n<table" . $attrib_str . ">\n"; + + + // add table header + $out .= "<thead><tr>\n"; + $out .= sprintf('<td>%s</td><td>%s</td><td></td>', rcube_label('foldername'), rcube_label('subscribed')); + $out .= "\n</tr></thead>\n<tbody>\n"; + + + // get folders from server + $a_unsubscribed = $IMAP->list_unsubscribed(); + $a_subscribed = $IMAP->list_mailboxes(); + $a_js_folders = array(); + + $checkbox_subscribe = new checkbox(array('name' => '_subscribed[]', 'onclick' => "$JS_OBJECT_NAME.command(this.checked?'subscribe':'unsubscribe',this.value)")); + + if ($attrib['deleteicon']) + $button = sprintf('<img src="%s%s" alt="%s" border="0" />', $CONFIG['skin_path'], $attrib['deleteicon'], rcube_label('delete')); + else + $button = rcube_label('delete'); + + + // create list of available folders + foreach ($a_unsubscribed as $i => $folder) + { + $zebra_class = $i%2 ? 'even' : 'odd'; + $folder_js = rep_specialchars_output($folder, 'js'); + $a_js_folders['rcmrow'.($i+1)] = $folder_js; + + $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, + rep_specialchars_output($folder, 'html'), + $checkbox_subscribe->show(in_array($folder, $a_subscribed)?$folder:'', array('value' => $folder)), + $JS_OBJECT_NAME, + $folder_js, + rcube_label('deletefolder'), + $button); + + $out .= "</tr>\n"; + } + + $out .= "</tbody>\n</table>"; + $out .= "\n$form_end"; + + + $javascript = sprintf("%s.gui_object('subscriptionlist', '%s');\n", $JS_OBJECT_NAME, $attrib['id']); + $javascript .= sprintf("%s.set_env('subscriptionrows', %s);", $JS_OBJECT_NAME, array2js($a_js_folders)); + $OUTPUT->add_script($javascript); + + return $out; + } + + +function rcube_create_folder_form($attrib) + { + global $JS_OBJECT_NAME; + + list($form_start, $form_end) = get_form_tags($attrib, 'create-folder'); + unset($attrib['form']); + + + // return the complete edit form as table + $out = "$form_start\n"; + + $input = new textfield(array('name' => '_folder_name')); + $out .= $input->show(); + + if (get_boolean($attrib['button'])) + { + $button = new input_field(array('type' => 'button', + 'value' => rcube_label('create'), + 'onclick' => "$JS_OBJECT_NAME.command('create-folder',this.form)")); + $out .= $button->show(); + } + + $out .= "\n$form_end"; + + return $out; + } + + +parse_template('managefolders'); +?>
\ No newline at end of file |