thomascube
2008-07-31 cb3538d2abe1a333bae0d91d6ff221a1ec8cacc2
Make special folders configurable for the user

4 files modified
63 ■■■■■ changed files
program/include/html.php 6 ●●●● patch | view | raw | blame | history
program/include/main.inc 27 ●●●●● patch | view | raw | blame | history
program/steps/settings/func.inc 26 ●●●●● patch | view | raw | blame | history
program/steps/settings/save_prefs.inc 4 ●●●● patch | view | raw | blame | history
program/include/html.php
@@ -248,7 +248,7 @@
{
    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_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 @@
{
    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
program/include/main.inc
@@ -934,6 +934,31 @@
  }
/**
 * 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 @@
  $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']))
program/steps/settings/func.inc
@@ -213,9 +213,9 @@
    $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 @@
  $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'])) {
program/steps/settings/save_prefs.inc
@@ -36,6 +36,10 @@
  '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