From cb3538d2abe1a333bae0d91d6ff221a1ec8cacc2 Mon Sep 17 00:00:00 2001 From: thomascube Date: Thu, 31 Jul 2008 20:27:46 +0000 Subject: [PATCH] Make special folders configurable for the user --- program/include/html.php | 6 +++--- program/include/main.inc | 27 ++++++++++++++++++++++++++- program/steps/settings/func.inc | 26 ++++++++++++++++++++++++-- program/steps/settings/save_prefs.inc | 4 ++++ 4 files changed, 57 insertions(+), 6 deletions(-) diff --git a/program/include/html.php b/program/include/html.php index 236dec291..704d10a0a 100644 --- a/program/include/html.php +++ b/program/include/html.php @@ -248,7 +248,7 @@ class html_inputfield extends html { protected $tagname = 'input'; protected $type = 'text'; - protected $allowed = array('type','name','value','size','tabindex','autocomplete','checked','onchange','onclick'); + protected $allowed = array('type','name','value','size','tabindex','autocomplete','checked','onchange','onclick','disabled'); public function __construct($attrib = array()) { @@ -416,7 +416,7 @@ class html_checkbox extends html_inputfield class html_textarea extends html { protected $tagname = 'textarea'; - protected $allowed = array('name','rows','cols','wrap','tabindex','onchange'); + protected $allowed = array('name','rows','cols','wrap','tabindex','onchange','disabled'); /** * Get HTML code for this object @@ -473,7 +473,7 @@ class html_select extends html { protected $tagname = 'select'; protected $options = array(); - protected $allowed = array('name','size','tabindex','autocomplete','multiple','onchange'); + protected $allowed = array('name','size','tabindex','autocomplete','multiple','onchange','disabled'); /** * Add a new option to this drop-down diff --git a/program/include/main.inc b/program/include/main.inc index c2a35c695..0a1cf60da 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -934,6 +934,31 @@ function rcmail_mailbox_list($attrib) } +/** + * Return the mailboxlist as html_select object + * + * @param array Named parameters + * @return object html_select HTML drop-down object + */ +function rcmail_mailbox_select($p = array()) +{ + global $RCMAIL; + + $p += array('maxlength' => 100); + $a_mailboxes = array(); + + foreach ($RCMAIL->imap->list_mailboxes() as $folder) + rcmail_build_folder_tree($a_mailboxes, $folder, $RCMAIL->imap->get_hierarchy_delimiter()); + + $select = new html_select($p); + + if ($p['noselection']) + $select->add($p['noselection'], ''); + + rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select); + + return $select; +} /** @@ -981,7 +1006,7 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, $maxlength, $ $out = ''; foreach ($arrFolders as $key => $folder) { - $zebra_class = ($nestLevel*$idx)%2 ? 'even' : 'odd'; + $zebra_class = (($nestLevel+1)*$idx) % 2 == 0 ? 'even' : 'odd'; $title = null; if ($folder_class = rcmail_folder_classname($folder['id'])) diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index c5f97b25e..1b4481881 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -213,9 +213,9 @@ function rcmail_user_prefs_form($attrib) $table->add(null, $input_htmleditor->show($config['htmleditor']?1:0)); } - if (!empty($config['drafts_mbox']) && !isset($no_override['draft_autosave'])) { + if (!isset($no_override['draft_autosave'])) { $field_id = 'rcmfd_autosave'; - $select_autosave = new html_select(array('name' => '_draft_autosave', 'id' => $field_id)); + $select_autosave = new html_select(array('name' => '_draft_autosave', 'id' => $field_id, 'disabled' => empty($config['drafts_mbox']))); $select_autosave->add(rcube_label('never'), 0); foreach (array(3, 5, 10) as $i => $min) $select_autosave->add(rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min))), $min*60); @@ -226,6 +226,28 @@ function rcmail_user_prefs_form($attrib) $out .= html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('messagescomposition'))) . $table->show($attrib)); + // Configure special folders + if (!isset($no_override['folders'])) { + $RCMAIL->imap_init(true); + $select = rcmail_mailbox_select(array('noselection' => '---')); + + $table = new html_table(array('cols' => 2)); + + $table->add('title', Q(rcube_label('drafts'))); + $table->add(null, $select->show($config['drafts_mbox'], array('name' => "_drafts_mbox", 'onchange' => "document.getElementById('rcmfd_autosave').disabled=this.selectedIndex==0"))); + + $table->add('title', Q(rcube_label('sent'))); + $table->add(null, $select->show($config['sent_mbox'], array('name' => "_sent_mbox"))); + + $table->add('title', Q(rcube_label('junk'))); + $table->add(null, $select->show($config['junk_mbox'], array('name' => "_junk_mbox"))); + + $table->add('title', Q(rcube_label('trash'))); + $table->add(null, $select->show($config['trash_mbox'], array('name' => "_trash_mbox"))); + + $out .= html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('specialfolders'))) . $table->show($attrib)); + } + $table = new html_table(array('cols' => 2)); if (!isset($no_override['read_when_deleted'])) { diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index 750b33bf0..ccd6e5f7b 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -36,6 +36,10 @@ $a_user_prefs = array( 'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0, 'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0, 'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'], + 'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST), + 'sent_mbox' => get_input_value('_sent_mbox', RCUBE_INPUT_POST), + 'junk_mbox' => get_input_value('_junk_mbox', RCUBE_INPUT_POST), + 'trash_mbox' => get_input_value('_trash_mbox', RCUBE_INPUT_POST), ); // don't override these parameters