Aleksander Machniak
2012-06-28 ceaaebbc8c99711e143673d845d029a362bc848e
program/steps/settings/func.inc
@@ -5,8 +5,11 @@
 | program/steps/settings/func.inc                                       |
 |                                                                       |
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
 | Licensed under the GNU GPL                                            |
 | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality for user's settings & preferences             |
@@ -14,9 +17,6 @@
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
 $Id$
*/
if (!$OUTPUT->ajax_call)
@@ -156,7 +156,8 @@
    case 'general':
    $blocks = array(
      'main' => array('name' => Q(rcube_label('mainoptions'))),
      'main'    => array('name' => Q(rcube_label('mainoptions'))),
      'browser' => array('name' => Q(rcube_label('browseroptions'))),
    );
    // language selection
@@ -180,13 +181,15 @@
      $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id));
      $select_timezone->add(rcube_label('autodetect'), 'auto');
      $now = new DateTime();
      foreach (DateTimeZone::listIdentifiers() as $i => $tzs) {
        $tz = new DateTimeZone($tzs);
        $date = new DateTime('2012-12-21', $tz);
        $offset = $date->format('Z') + 45000;
        $sortkey = sprintf('%06d.%s', $offset, $tzs);
        $zones[$sortkey] = array($tzs, $date->format('P'));
        try {
          $tz = new DateTimeZone($tzs);
          $date = new DateTime('2012-12-21', $tz);
          $offset = $date->format('Z') + 45000;
          $sortkey = sprintf('%06d.%s', $offset, $tzs);
          $zones[$sortkey] = array($tzs, $date->format('P'));
        }
        catch (Exception $e) {}
      }
      ksort($zones);
@@ -260,6 +263,16 @@
      }
    }
    $product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail');
    $RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
      JS_OBJECT_NAME, JQ($product_name)), 'foot');
    $blocks['browser']['options']['mailtoprotohandler'] = array(
      'content' => html::a(array(
        'href' => '#',
        'id' => 'mailtoprotohandler'), Q(rcube_label('mailtoprotohandler'))),
    );
    break;
    // Mailbox view (mail screen)
@@ -317,8 +330,8 @@
      );
    }
    $RCMAIL->imap_connect();
    $threading_supported = $RCMAIL->imap->get_capability('THREAD');
    $storage             = $RCMAIL->get_storage();
    $threading_supported = $storage->get_capability('THREAD');
    if (!isset($no_override['autoexpand_threads']) && $threading_supported) {
      $field_id = 'rcmfd_autoexpand_threads';
@@ -603,6 +616,18 @@
      );
    }
    if (!isset($no_override['forward_attachment'])) {
      $field_id = 'rcmfd_forward_attachment';
      $select = new html_select(array('name' => '_forward_attachment', 'id' => $field_id));
      $select->add(rcube_label('inline'), 0);
      $select->add(rcube_label('asattachment'), 1);
      $blocks['main']['options']['forward_attachment'] = array(
        'title' => html::label($field_id, Q(rcube_label('forwardmode'))),
        'content' => $select->show(intval($config['forward_attachment'])),
      );
    }
    if (!isset($no_override['default_font'])) {
      $field_id     = 'rcmfd_default_font';
      $fonts        = rcube_fontdefs();
@@ -648,13 +673,32 @@
      );
    }
    if (!isset($no_override['autocomplete_single'])) {
      $field_id = 'rcmfd_autocomplete_single';
      $checkbox = new html_checkbox(array('name' => '_autocomplete_single', 'id' => $field_id, 'value' => 1));
    // show addressbook listing mode selection
    if (!isset($no_override['addressbook_name_listing'])) {
      $field_id = 'rcmfd_addressbook_name_listing';
      $select_listing = new html_select(array('name' => '_addressbook_name_listing', 'id' => $field_id));
      $select_listing->add(rcube_label('name'), 0);
      $select_listing->add(rcube_label('firstname') . ' '  . rcube_label('surname'), 1);
      $select_listing->add(rcube_label('surname')   . ' '  . rcube_label('firstname'), 2);
      $select_listing->add(rcube_label('surname')   . ', ' . rcube_label('firstname'), 3);
      $blocks['main']['options']['autocomplete_single'] = array(
        'title' => html::label($field_id, Q(rcube_label('autocompletesingle'))),
        'content' => $checkbox->show($config['autocomplete_single']?1:0),
      $blocks['main']['options']['list_name_listing'] = array(
        'title' => html::label($field_id, Q(rcube_label('listnamedisplay'))),
        'content' => $select_listing->show($config['addressbook_name_listing']),
      );
    }
    // show addressbook sort column
    if (!isset($no_override['addressbook_sort_col'])) {
      $field_id = 'rcmfd_addressbook_sort_col';
      $select_sort = new html_select(array('name' => '_addressbook_sort_col', 'id' => $field_id));
      $select_sort->add(rcube_label('name'), 'name');
      $select_sort->add(rcube_label('firstname'), 'firstname');
      $select_sort->add(rcube_label('surname'), 'surname');
      $blocks['main']['options']['sort_col'] = array(
        'title' => html::label($field_id, Q(rcube_label('listsorting'))),
        'content' => $select_sort->show($config['addressbook_sort_col']),
      );
    }
@@ -671,6 +715,16 @@
      );
    }
    if (!isset($no_override['autocomplete_single'])) {
      $field_id = 'rcmfd_autocomplete_single';
      $checkbox = new html_checkbox(array('name' => '_autocomplete_single', 'id' => $field_id, 'value' => 1));
      $blocks['main']['options']['autocomplete_single'] = array(
        'title' => html::label($field_id, Q(rcube_label('autocompletesingle'))),
        'content' => $checkbox->show($config['autocomplete_single']?1:0),
      );
    }
    break;
    // Special IMAP folders
@@ -681,10 +735,7 @@
    );
    // Configure special folders
    if (!isset($no_override['default_imap_folders'])) {
      $RCMAIL->imap_connect();
    if (!isset($no_override['default_folders'])) {
      // load folders list only when needed
      if ($current) {
        $select = rcmail_mailbox_select(array(
@@ -776,6 +827,16 @@
      );
    }
    if (!isset($no_override['delete_junk'])) {
      $field_id = 'rcmfd_delete_junk';
      $input_delete_junk = new html_checkbox(array('name' => '_delete_junk', 'id' => $field_id, 'value' => 1));
      $blocks['main']['options']['delete_junk'] = array(
        'title' => html::label($field_id, Q(rcube_label('deletejunk'))),
        'content' => $input_delete_junk->show($config['delete_junk']?1:0),
      );
    }
    // Trash purging on logout
    if (!isset($no_override['logout_purge'])) {
      $field_id = 'rcmfd_logout_purge';
@@ -849,7 +910,7 @@
{
    global $RCMAIL;
    $options = $RCMAIL->imap->mailbox_info($mailbox);
    $options = $RCMAIL->get_storage()->folder_info($mailbox);
    $options['protected'] = $options['is_root'] || ($options['special'] && $RCMAIL->config->get('protect_default_folders'));
    return $options;
@@ -865,13 +926,17 @@
 */
function rcmail_update_folder_row($name, $oldname=null, $subscribe=false, $class_name=null)
{
    global $RCMAIL, $CONFIG, $OUTPUT;
    global $RCMAIL, $OUTPUT;
    $delimiter    = $RCMAIL->imap->get_hierarchy_delimiter();
    $default_folders = (array) $RCMAIL->config->get('default_folders');
    $protect_folders = $RCMAIL->config->get('protect_default_folders');
    $storage      = $RCMAIL->get_storage();
    $delimiter    = $storage->get_hierarchy_delimiter();
    $name_utf8    = rcube_charset_convert($name, 'UTF7-IMAP');
    $protected    = ($CONFIG['protect_default_folders'] == true && in_array($name, $CONFIG['default_imap_folders']));
    $protected    = $protect_folders && in_array($name, $default_folders);
    $foldersplit  = explode($delimiter, $RCMAIL->imap->mod_mailbox($name));
    $foldersplit  = explode($delimiter, $storage->mod_folder($name));
    $level        = count($foldersplit) - 1;
    $display_name = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
        . Q($protected ? rcmail_localize_foldername($name) : rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'));