thomascube
2012-01-18 7fe3811c65a7c63154f03610e289a6d196f3ae2e
program/steps/settings/func.inc
@@ -6,7 +6,10 @@
 |                                                                       |
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | 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             |
@@ -157,7 +160,6 @@
    $blocks = array(
      'main' => array('name' => Q(rcube_label('mainoptions'))),
      'list' => array('name' => Q(rcube_label('listoptions'))),
    );
    // language selection
@@ -175,65 +177,33 @@
      );
    }
    // show page size selection
    // timezone selection
    if (!isset($no_override['timezone'])) {
      $field_id = 'rcmfd_timezone';
      $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id, 'onchange' => "$('#rcmfd_dst').attr('disabled', this.selectedIndex==0)"));
      $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id));
      $select_timezone->add(rcube_label('autodetect'), 'auto');
      $select_timezone->add('(GMT -11:00) Midway Island, Samoa', '-11');
      $select_timezone->add('(GMT -10:00) Hawaii', '-10');
      $select_timezone->add('(GMT -9:30) Marquesas Islands', '-9.5');
      $select_timezone->add('(GMT -9:00) Alaska', '-9');
      $select_timezone->add('(GMT -8:00) Pacific Time (US/Canada)', '-8');
      $select_timezone->add('(GMT -7:00) Mountain Time (US/Canada)', '-7');
      $select_timezone->add('(GMT -6:00) Central Time (US/Canada), Mexico City', '-6');
      $select_timezone->add('(GMT -5:00) Eastern Time (US/Canada), Bogota, Lima', '-5');
      $select_timezone->add('(GMT -4:30) Caracas', '-4.5');
      $select_timezone->add('(GMT -4:00) Atlantic Time (Canada), La Paz', '-4');
      $select_timezone->add('(GMT -3:30) Nfld Time (Canada), Nfld, S. Labador', '-3.5');
      $select_timezone->add('(GMT -3:00) Brazil, Buenos Aires, Georgetown', '-3');
      $select_timezone->add('(GMT -2:00) Mid-Atlantic', '-2');
      $select_timezone->add('(GMT -1:00) Azores, Cape Verde Islands', '-1');
      $select_timezone->add('(GMT) Western Europe, London, Lisbon, Casablanca', '0');
      $select_timezone->add('(GMT +1:00) Central European Time', '1');
      $select_timezone->add('(GMT +2:00) EET: Tallinn, Helsinki, Kaliningrad, South Africa', '2');
      $select_timezone->add('(GMT +3:00) Baghdad, Kuwait, Riyadh, Moscow, Nairobi', '3');
      $select_timezone->add('(GMT +3:30) Tehran', '3.5');
      $select_timezone->add('(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi', '4');
      $select_timezone->add('(GMT +4:30) Kabul', '4.5');
      $select_timezone->add('(GMT +5:00) Ekaterinburg, Islamabad, Karachi', '5');
      $select_timezone->add('(GMT +5:30) Chennai, Kolkata, Mumbai, New Delhi', '5.5');
      $select_timezone->add('(GMT +5:45) Kathmandu', '5.75');
      $select_timezone->add('(GMT +6:00) Almaty, Dhaka, Colombo', '6');
      $select_timezone->add('(GMT +6:30) Cocos Islands, Myanmar', '6.5');
      $select_timezone->add('(GMT +7:00) Bangkok, Hanoi, Jakarta', '7');
      $select_timezone->add('(GMT +8:00) Beijing, Perth, Singapore, Taipei', '8');
      $select_timezone->add('(GMT +8:45) Caiguna, Eucla, Border Village', '8.75');
      $select_timezone->add('(GMT +9:00) Tokyo, Seoul, Yakutsk', '9');
      $select_timezone->add('(GMT +9:30) Adelaide, Darwin', '9.5');
      $select_timezone->add('(GMT +10:00) EAST/AEST: Sydney, Guam, Vladivostok', '10');
      $select_timezone->add('(GMT +10:30) New South Wales', '10.5');
      $select_timezone->add('(GMT +11:00) Magadan, Solomon Islands', '11');
      $select_timezone->add('(GMT +11:30) Norfolk Island', '11.5');
      $select_timezone->add('(GMT +12:00) Auckland, Wellington, Kamchatka', '12');
      $select_timezone->add('(GMT +12:45) Chatham Islands', '12.75');
      $select_timezone->add('(GMT +13:00) Tonga, Pheonix Islands', '13');
      $select_timezone->add('(GMT +14:00) Kiribati', '14');
      $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'));
      }
      ksort($zones);
      foreach ($zones as $zone) {
        list($tzs, $offset) = $zone;
        $select_timezone->add('(GMT ' . $offset . ') ' . strtr($tzs, '_', ' '), $tzs);
      }
      if (is_numeric($config['timezone']))
        timezone_name_from_abbr("", $config['timezone'] * 3600, 0);
      $blocks['main']['options']['timezone'] = array(
        'title' => html::label($field_id, Q(rcube_label('timezone'))),
        'content' => $select_timezone->show((string)$config['timezone']),
      );
    }
    // daylight savings
    if (!isset($no_override['dst_active'])) {
      $field_id = 'rcmfd_dst';
      $input_dst = new html_checkbox(array('name' => '_dst_active', 'id' => $field_id, 'value' => 1, 'disabled' => ($config['timezone'] === 'auto')));
      $blocks['main']['options']['dstactive'] = array(
        'title' => html::label($field_id, Q(rcube_label('dstactive'))),
        'content' => $input_dst->show($config['dst_active']),
      );
    }
@@ -275,17 +245,6 @@
      );
    }
    // show page size selection
    if (!isset($no_override['pagesize'])) {
      $field_id = 'rcmfd_pgsize';
      $input_pagesize = new html_inputfield(array('name' => '_pagesize', 'id' => $field_id, 'size' => 5));
      $blocks['list']['options']['pagesize'] = array(
        'title' => html::label($field_id, Q(rcube_label('pagesize'))),
        'content' => $input_pagesize->show($config['pagesize']),
      );
    }
    // show drop-down for available skins
    if (!isset($no_override['skin'])) {
      $skins = rcmail_get_skins();
@@ -318,7 +277,7 @@
    if (!isset($no_override['preview_pane'])) {
      $field_id = 'rcmfd_preview';
      $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1,
        'onchange' => JS_OBJECT_NAME.'.toggle_preview_pane(this)'));
        'onchange' => "$('#rcmfd_preview_pane_mark_read').prop('disabled', !this.checked)"));
      $blocks['main']['options']['preview_pane'] = array(
        'title' => html::label($field_id, Q(rcube_label('previewpane'))),
@@ -361,8 +320,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';
@@ -374,6 +333,19 @@
      $blocks['main']['options']['autoexpand_threads'] = array(
        'title' => html::label($field_id, Q(rcube_label('autoexpand_threads'))),
        'content' => $select_autoexpand_threads->show($config['autoexpand_threads']),
      );
    }
    // show page size selection
    if (!isset($no_override['mail_pagesize'])) {
      $field_id = 'rcmfd_mail_pagesize';
      $input_pagesize = new html_inputfield(array('name' => '_mail_pagesize', 'id' => $field_id, 'size' => 5));
      $size = intval($config['mail_pagesize'] ? $config['mail_pagesize'] : $config['pagesize']);
      $blocks['main']['options']['pagesize'] = array(
        'title' => html::label($field_id, Q(rcube_label('pagesize'))),
        'content' => $input_pagesize->show($size ? $size : 50),
      );
    }
@@ -416,7 +388,7 @@
    if (!isset($no_override['prefer_html'])) {
      $field_id = 'rcmfd_htmlmsg';
      $input_preferhtml = new html_checkbox(array('name' => '_prefer_html', 'id' => $field_id, 'value' => 1,
        'onchange' => JS_OBJECT_NAME.'.toggle_prefer_html(this)'));
        'onchange' => "$('#rcmfd_show_images').prop('disabled', !this.checked).val(0)"));
      $blocks['main']['options']['prefer_html'] = array(
        'title' => html::label($field_id, Q(rcube_label('preferhtml'))),
@@ -430,8 +402,8 @@
      $blocks['main']['options']['default_charset'] = array(
        'title' => html::label($field_id, Q(rcube_label('defaultcharset'))),
        'content' => $RCMAIL->output->charset_selector(array(
     'name' => '_default_charset', 'selected' => $config['default_charset']
     ))
          'name' => '_default_charset', 'selected' => $config['default_charset']
        ))
      );
    }
@@ -563,7 +535,8 @@
    if (!isset($no_override['top_posting'])) {
      $field_id = 'rcmfd_top_posting';
      $select_replymode = new html_select(array('name' => '_top_posting', 'id' => $field_id, 'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex==0)"));
      $select_replymode = new html_select(array('name' => '_top_posting', 'id' => $field_id,
        'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex==0)"));
      $select_replymode->add(rcube_label('replybottomposting'), 0);
      $select_replymode->add(rcube_label('replytopposting'), 1);
@@ -688,6 +661,19 @@
      );
    }
    // show addressbook page size selection
    if (!isset($no_override['addressbook_pagesize'])) {
      $field_id = 'rcmfd_addressbook_pagesize';
      $input_pagesize = new html_inputfield(array('name' => '_addressbook_pagesize', 'id' => $field_id, 'size' => 5));
      $size = intval($config['addressbook_pagesize'] ? $config['addressbook_pagesize'] : $config['pagesize']);
      $blocks['main']['options']['pagesize'] = array(
        'title' => html::label($field_id, Q(rcube_label('pagesize'))),
        'content' => $input_pagesize->show($size ? $size : 50),
      );
    }
    break;
    // Special IMAP folders
@@ -698,10 +684,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(
@@ -866,7 +849,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;
@@ -884,11 +867,12 @@
{
    global $RCMAIL, $CONFIG, $OUTPUT;
    $delimiter    = $RCMAIL->imap->get_hierarchy_delimiter();
    $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    = ($CONFIG['protect_default_folders'] == true && in_array($name, $CONFIG['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('    ', $level)
        . Q($protected ? rcmail_localize_foldername($name) : rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'));