Changeset 2830 in subversion


Ignore:
Timestamp:
Aug 3, 2009 2:27:53 PM (4 years ago)
Author:
alec
Message:
  • Re-designed User Preferences interface
Location:
trunk/roundcubemail
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/CHANGELOG

    r2829 r2830  
    22=========================== 
    33 
     4- Re-designed User Preferences interface  
    45- Fix MS SQL DDL (#1486020) 
    56- Fix rcube_mdb2.php: call to setCharset not implemented in mssql driver (#1486019) 
  • trunk/roundcubemail/plugins/password/password.php

    r2687 r2830  
    144144 
    145145    $out = html::div(array('class' => "settingsbox", 'style' => "margin:0"), 
    146       html::div(array('id' => "userprefs-title"), $this->gettext('changepasswd')) . 
     146      html::div(array('id' => "prefs-title"), $this->gettext('changepasswd')) . 
    147147      html::div(array('style' => "padding:15px"), $table->show() . 
    148148        html::p(null, 
  • trunk/roundcubemail/program/js/app.js

    r2822 r2830  
    238238             
    239239          document.onmouseup = function(e){ return p.doc_mouse_up(e); }; 
     240 
     241          // init message compose form 
     242          this.init_messageform(); 
    240243          } 
    241244 
     
    247250 
    248251        this.set_page_buttons(); 
    249  
    250         // init message compose form 
    251         if (this.env.action=='compose') 
    252           this.init_messageform(); 
    253252 
    254253        // show printing dialog 
     
    326325        this.enable_command('preferences', 'identities', 'save', 'folders', true); 
    327326         
    328         if (this.env.action=='identities' || this.env.action=='edit-identity' || this.env.action=='add-identity') { 
     327        if (this.env.action=='identities') { 
    329328          this.enable_command('add', this.env.identities_level < 2); 
    330           this.enable_command('delete', 'edit', true); 
    331         } 
    332  
    333         if (this.env.action=='edit-identity' || this.env.action=='add-identity') 
    334           this.enable_command('save', true); 
    335            
    336         if (this.env.action=='folders') 
     329          } 
     330        else if (this.env.action=='edit-identity' || this.env.action=='add-identity') { 
     331          this.enable_command('add', this.env.identities_level < 2); 
     332          this.enable_command('save', 'delete', 'edit', true); 
     333          } 
     334        else if (this.env.action=='folders') 
    337335          this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', 'delete-folder', true); 
    338336 
     
    347345            this.identity_list.highlight_row(this.env.iid); 
    348346          } 
    349  
    350         if (this.gui_objects.subscriptionlist) 
     347        else if (this.gui_objects.sectionslist) 
     348          { 
     349          this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:false}); 
     350          this.sections_list.addEventListener('select', function(o){ p.section_select(o); }); 
     351          this.sections_list.init(); 
     352          this.sections_list.focus(); 
     353          } 
     354        else if (this.gui_objects.subscriptionlist) 
    351355          this.init_subscription_list(); 
    352356 
     
    29422946    } 
    29432947 
     2948  // preferences section select and load options frame 
     2949  this.section_select = function(list) 
     2950    { 
     2951    var id = list.get_single_selection() 
     2952     
     2953    if (id) { 
     2954      var add_url = ''; 
     2955      var target = window; 
     2956      this.set_busy(true); 
     2957 
     2958      if (this.env.contentframe && window.frames && window.frames[this.env.contentframe]) { 
     2959        add_url = '&_framed=1'; 
     2960        target = window.frames[this.env.contentframe]; 
     2961        } 
     2962 
     2963      target.location.href = this.env.comm_path+'&_action=edit-prefs&_section='+id+add_url; 
     2964      } 
     2965 
     2966    return true; 
     2967    }; 
     2968 
    29442969  this.identity_select = function(list) 
    29452970    { 
  • trunk/roundcubemail/program/steps/settings/func.inc

    r2822 r2830  
    2323  $OUTPUT->set_pagetitle(rcube_label('preferences')); 
    2424 
    25 function rcmail_user_prefs_form($attrib) 
    26 { 
    27   global $RCMAIL; 
    28  
    29   $no_override = array_flip($RCMAIL->config->get('dont_override', array())); 
    30   $blocks = $attrib['parts'] ? preg_split('/[\s,;]+/', strip_quotes($attrib['parts'])) : array('general','mailbox','compose','mailview','folders','server'); 
    31  
    32   // add some labels to client 
    33   $RCMAIL->output->add_label('nopagesizewarning'); 
    34    
    35   list($form_start, $form_end) = get_form_tags($attrib, 'save-prefs'); 
    36   unset($attrib['form']); 
    37  
    38   $out = $form_start; 
    39    
    40   foreach ($blocks as $part) 
    41     $out .= rcmail_user_prefs_block($part, $no_override, $attrib); 
    42    
    43   return $out . $form_end; 
    44 } 
    45  
    46 function rcmail_user_prefs_block($part, $no_override, $attrib) 
    47 { 
    48   global $RCMAIL; 
    49   $config = $RCMAIL->config->all(); 
    50    
    51   switch ($part) 
    52   { 
    53   // General UI settings 
    54   case 'general': 
    55     $table = new html_table(array('cols' => 2)); 
    56  
    57     // show language selection 
    58     if (!isset($no_override['language'])) { 
    59       $a_lang = $RCMAIL->list_languages(); 
    60       asort($a_lang); 
    61  
    62       $field_id = 'rcmfd_lang'; 
    63       $select_lang = new html_select(array('name' => '_language', 'id' => $field_id)); 
    64       $select_lang->add(array_values($a_lang), array_keys($a_lang)); 
    65  
    66       $table->add('title', html::label($field_id, Q(rcube_label('language')))); 
    67       $table->add(null, $select_lang->show($RCMAIL->user->language)); 
    68     } 
    69  
    70     // show page size selection 
    71     if (!isset($no_override['timezone'])) { 
    72       $field_id = 'rcmfd_timezone'; 
    73       $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id, 'onchange' => "document.getElementById('rcmfd_dst').disabled=this.selectedIndex==0")); 
    74       $select_timezone->add(rcube_label('autodetect'), 'auto'); 
    75       $select_timezone->add('(GMT -11:00) Midway Island, Samoa', '-11'); 
    76       $select_timezone->add('(GMT -10:00) Hawaii', '-10'); 
    77       $select_timezone->add('(GMT -9:30) Marquesas Islands', '-9.5'); 
    78       $select_timezone->add('(GMT -9:00) Alaska', '-9'); 
    79       $select_timezone->add('(GMT -8:00) Pacific Time (US/Canada)', '-8'); 
    80       $select_timezone->add('(GMT -7:00) Mountain Time (US/Canada)', '-7'); 
    81       $select_timezone->add('(GMT -6:00) Central Time (US/Canada), Mexico City', '-6'); 
    82       $select_timezone->add('(GMT -5:00) Eastern Time (US/Canada), Bogota, Lima', '-5'); 
    83       $select_timezone->add('(GMT -4:30) Caracas', '-4.5'); 
    84       $select_timezone->add('(GMT -4:00) Atlantic Time (Canada), La Paz', '-4'); 
    85       $select_timezone->add('(GMT -3:30) Nfld Time (Canada), Nfld, S. Labador', '-3.5'); 
    86       $select_timezone->add('(GMT -3:00) Brazil, Buenos Aires, Georgetown', '-3'); 
    87       $select_timezone->add('(GMT -2:00) Mid-Atlantic', '-2'); 
    88       $select_timezone->add('(GMT -1:00) Azores, Cape Verde Islands', '-1'); 
    89       $select_timezone->add('(GMT) Western Europe, London, Lisbon, Casablanca', '0'); 
    90       $select_timezone->add('(GMT +1:00) Central European Time', '1'); 
    91       $select_timezone->add('(GMT +2:00) EET: Tallinn, Helsinki, Kaliningrad, South Africa', '2'); 
    92       $select_timezone->add('(GMT +3:00) Baghdad, Kuwait, Riyadh, Moscow, Nairobi', '3'); 
    93       $select_timezone->add('(GMT +3:30) Tehran', '3.5'); 
    94       $select_timezone->add('(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi', '4'); 
    95       $select_timezone->add('(GMT +4:30) Kabul', '4.5'); 
    96       $select_timezone->add('(GMT +5:00) Ekaterinburg, Islamabad, Karachi', '5'); 
    97       $select_timezone->add('(GMT +5:30) Chennai, Kolkata, Mumbai, New Delhi', '5.5'); 
    98       $select_timezone->add('(GMT +5:45) Kathmandu', '5.75'); 
    99       $select_timezone->add('(GMT +6:00) Almaty, Dhaka, Colombo', '6'); 
    100       $select_timezone->add('(GMT +6:30) Cocos Islands, Myanmar', '6.5'); 
    101       $select_timezone->add('(GMT +7:00) Bangkok, Hanoi, Jakarta', '7'); 
    102       $select_timezone->add('(GMT +8:00) Beijing, Perth, Singapore, Taipei', '8'); 
    103       $select_timezone->add('(GMT +8:45) Caiguna, Eucla, Border Village', '8.75'); 
    104       $select_timezone->add('(GMT +9:00) Tokyo, Seoul, Yakutsk', '9'); 
    105       $select_timezone->add('(GMT +9:30) Adelaide, Darwin', '9.5'); 
    106       $select_timezone->add('(GMT +10:00) EAST/AEST: Sydney, Guam, Vladivostok', '10'); 
    107       $select_timezone->add('(GMT +10:30) New South Wales', '10.5'); 
    108       $select_timezone->add('(GMT +11:00) Magadan, Solomon Islands', '11'); 
    109       $select_timezone->add('(GMT +11:30) Norfolk Island', '11.5'); 
    110       $select_timezone->add('(GMT +12:00) Auckland, Wellington, Kamchatka', '12'); 
    111       $select_timezone->add('(GMT +12:45) Chatham Islands', '12.75'); 
    112       $select_timezone->add('(GMT +13:00) Tonga, Pheonix Islands', '13'); 
    113       $select_timezone->add('(GMT +14:00) Kiribati', '14'); 
    114  
    115       $table->add('title', html::label($field_id, Q(rcube_label('timezone')))); 
    116       $table->add(null, $select_timezone->show((string)$config['timezone'])); 
    117     } 
    118  
    119     // daylight savings 
    120     if (!isset($no_override['dst_active'])) { 
    121       $field_id = 'rcmfd_dst'; 
    122       $input_dst = new html_checkbox(array('name' => '_dst_active', 'id' => $field_id, 'value' => 1, 'disabled' => ($config['timezone'] === 'auto'))); 
    123  
    124       $table->add('title', html::label($field_id, Q(rcube_label('dstactive')))); 
    125       $table->add(null, $input_dst->show($config['dst_active'])); 
    126     } 
    127  
    128     // MM: Show checkbox for toggling 'pretty dates'  
    129     if (!isset($no_override['prettydate'])) { 
    130       $field_id = 'rcmfd_prettydate'; 
    131       $input_prettydate = new html_checkbox(array('name' => '_pretty_date', 'id' => $field_id, 'value' => 1)); 
    132  
    133       $table->add('title', html::label($field_id, Q(rcube_label('prettydate')))); 
    134       $table->add(null, $input_prettydate->show($config['prettydate']?1:0)); 
    135     } 
    136  
    137     // show page size selection 
    138     if (!isset($no_override['pagesize'])) { 
    139       $field_id = 'rcmfd_pgsize'; 
    140       $input_pagesize = new html_inputfield(array('name' => '_pagesize', 'id' => $field_id, 'size' => 5)); 
    141  
    142       $table->add('title', html::label($field_id, Q(rcube_label('pagesize')))); 
    143       $table->add(null, $input_pagesize->show($config['pagesize'])); 
    144     } 
    145  
    146     // show drop-down for available skins 
    147     if (!isset($no_override['skin'])) { 
    148       $skins = rcmail_get_skins(); 
    149  
    150       if (count($skins) > 1) { 
    151         $field_id = 'rcmfd_skin'; 
    152         $input_skin = new html_select(array('name'=>'_skin', 'id'=>$field_id)); 
    153  
    154         foreach($skins as $skin) 
    155           $input_skin->add($skin, $skin); 
    156  
    157         $table->add('title', html::label($field_id, Q(rcube_label('skin')))); 
    158         $table->add(null, $input_skin->show($config['skin'])); 
    159       } 
    160     } 
    161      
    162     $RCMAIL->plugins->exec_hook('user_preferences', array('section' => $part, 'table' => $table)); 
    163      
    164     if ($table->size()) 
    165       $out = html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('uisettings'))) . $table->show($attrib)); 
    166     break; 
     25// define sections list 
     26$SECTIONS['general'] = array('id' => 'general', 'section' => rcube_label('uisettings')); 
     27$SECTIONS['mailbox'] = array('id' => 'mailbox', 'section' => rcube_label('mailboxview')); 
     28$SECTIONS['compose'] = array('id' => 'compose', 'section' => rcube_label('messagescomposition')); 
     29$SECTIONS['mailview'] = array('id' => 'mailview','section' => rcube_label('messagesdisplaying')); 
     30$SECTIONS['folders'] = array('id' => 'folders', 'section' => rcube_label('specialfolders')); 
     31$SECTIONS['server'] = array('id' => 'server',  'section' => rcube_label('serversettings')); 
    16732 
    16833 
    169   // Mailbox view (mail screen) 
    170   case 'mailbox': 
    171     $table = new html_table(array('cols' => 2)); 
     34// similar function as /steps/settings/identities.inc::rcmail_identity_frame() 
     35function rcmail_preferences_frame($attrib) 
     36  { 
     37  global $OUTPUT; 
    17238 
    173     if (!isset($no_override['focus_on_new_message'])) { 
    174       $field_id = 'rcmfd_focus_on_new_message'; 
    175       $input_focus_on_new_message = new html_checkbox(array('name' => '_focus_on_new_message', 'id' => $field_id, 'value' => 1)); 
    176       $table->add('title', html::label($field_id, Q(rcube_label('focusonnewmessage')))); 
    177       $table->add(null, $input_focus_on_new_message->show($config['focus_on_new_message']?1:0)); 
    178     } 
     39  if (!$attrib['id']) 
     40    $attrib['id'] = 'rcmprefsframe'; 
    17941 
    180     // show config parameter for preview pane 
    181     if (!isset($no_override['preview_pane'])) { 
    182       $field_id = 'rcmfd_preview'; 
    183       $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1)); 
     42  $attrib['name'] = $attrib['id']; 
    18443 
    185       $table->add('title', html::label($field_id, Q(rcube_label('previewpane')))); 
    186       $table->add(null, $input_preview->show($config['preview_pane']?1:0)); 
    187     } 
    188  
    189     if (!isset($no_override['mdn_requests'])) { 
    190       $field_id = 'rcmfd_mdn_requests'; 
    191       $select_mdn_requests = new html_select(array('name' => '_mdn_requests', 'id' => $field_id)); 
    192       $select_mdn_requests->add(rcube_label('askuser'), 0); 
    193       $select_mdn_requests->add(rcube_label('autosend'), 1); 
    194       $select_mdn_requests->add(rcube_label('ignore'), 2); 
    195  
    196       $table->add('title', html::label($field_id, Q(rcube_label('mdnrequests')))); 
    197       $table->add(null, $select_mdn_requests->show($config['mdn_requests'])); 
    198     } 
    199  
    200     if (!isset($no_override['keep_alive'])) { 
    201       $field_id = 'rcmfd_keep_alive'; 
    202       $select_keep_alive = new html_select(array('name' => '_keep_alive', 'id' => $field_id)); 
    203  
    204       foreach(array(1, 3, 5, 10, 15, 30, 60) as $min) 
    205         if((!$config['min_keep_alive'] || $config['min_keep_alive'] <= $min * 60) 
    206             && (!$config['session_lifetime'] || $config['session_lifetime'] > $min)) { 
    207           $select_keep_alive->add(rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min))), $min); 
    208         } 
    209  
    210       $table->add('title', html::label($field_id, Q(rcube_label('keepalive')))); 
    211       $table->add(null, $select_keep_alive->show($config['keep_alive']/60)); 
    212     } 
    213  
    214     if (!isset($no_override['check_all_folders'])) { 
    215       $field_id = 'rcmfd_check_all_folders'; 
    216       $input_check_all = new html_checkbox(array('name' => '_check_all_folders', 'id' => $field_id, 'value' => 1)); 
    217       $table->add('title', html::label($field_id, Q(rcube_label('checkallfolders')))); 
    218       $table->add(null, $input_check_all->show($config['check_all_folders']?1:0)); 
    219     } 
    220  
    221     $RCMAIL->plugins->exec_hook('user_preferences', array('section' => $part, 'table' => $table)); 
    222  
    223     if ($table->size()) 
    224       $out = html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('mailboxview'))) . $table->show($attrib)); 
    225     break; 
     44  $OUTPUT->set_env('contentframe', $attrib['name']); 
     45  $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif'); 
     46   
     47  return html::iframe($attrib); 
     48  } 
    22649 
    22750 
    228   // Message viewing 
    229   case 'mailview': 
    230     $table = new html_table(array('cols' => 2)); 
     51function rcmail_sections_list($attrib) 
     52  { 
     53  global $RCMAIL, $SECTIONS; 
     54   
     55  // add id to message list table if not specified 
     56  if (!strlen($attrib['id'])) 
     57    $attrib['id'] = 'rcmsectionslist'; 
    23158 
    232     // show checkbox for HTML/plaintext messages 
    233     if (!isset($no_override['prefer_html'])) { 
    234       $field_id = 'rcmfd_htmlmsg'; 
    235       $input_preferhtml = new html_checkbox(array('name' => '_prefer_html', 'id' => $field_id, 'value' => 1, 
    236         'onchange' => JS_OBJECT_NAME.'.toggle_prefer_html(this)')); 
     59  // hook + define list cols 
     60  $plugin = $RCMAIL->plugins->exec_hook('list_prefs_sections', 
     61    array('list' => $SECTIONS, 'cols' => array('section'))); 
     62             
     63  // create XHTML table 
     64  $out = rcube_table_output($attrib, $plugin['list'], $plugin['cols'], 'id'); 
    23765 
    238       $table->add('title', html::label($field_id, Q(rcube_label('preferhtml')))); 
    239       $table->add(null, $input_preferhtml->show($config['prefer_html']?1:0)); 
    240     } 
     66  // set client env 
     67  $RCMAIL->output->add_gui_object('sectionslist', $attrib['id']); 
     68  $RCMAIL->output->include_script('list.js'); 
    24169 
    242     if (!isset($no_override['show_images'])) { 
    243       $field_id = 'rcmfd_show_images'; 
    244       $input_show_images = new html_select(array('name' => '_show_images', 'id' => $field_id)); 
    245       $input_show_images->add(rcube_label('never'), 0); 
    246       $input_show_images->add(rcube_label('fromknownsenders'), 1); 
    247       $input_show_images->add(rcube_label('always'), 2); 
    248  
    249       $table->add('title', html::label($field_id, Q(rcube_label('showremoteimages')))); 
    250       $table->add(null, $input_show_images->show($config['show_images'])); 
    251     } 
    252  
    253     if (!isset($no_override['inline_images'])) { 
    254       $field_id = 'rcmfd_inline_images'; 
    255       $input_inline_images = new html_checkbox(array('name' => '_inline_images', 'id' => $field_id, 'value' => 1)); 
    256  
    257       $table->add('title', html::label($field_id, Q(rcube_label('showinlineimages')))); 
    258       $table->add(null, $input_inline_images->show($config['inline_images']?1:0)); 
    259     } 
    260  
    261     // "display after delete" checkbox 
    262     if (!isset($no_override['display_next'])) { 
    263       $field_id = 'rcmfd_displaynext'; 
    264       $input_displaynext = new html_checkbox(array('name' => '_display_next', 'id' => $field_id, 'value' => 1)); 
    265  
    266       $table->add('title', html::label($field_id, Q(rcube_label('displaynext')))); 
    267       $table->add(null, $input_displaynext->show($config['display_next']?1:0)); 
    268     } 
    269  
    270     $RCMAIL->plugins->exec_hook('user_preferences', array('section' => $part, 'table' => $table)); 
    271  
    272     if ($table->size()) 
    273       $out = html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('messagesdisplaying'))) . $table->show($attrib)); 
    274     break; 
    275  
    276   // Mail composition 
    277   case 'compose': 
    278     $table = new html_table(array('cols' => 2)); 
    279  
    280     // Show checkbox for HTML Editor 
    281     if (!isset($no_override['htmleditor'])) { 
    282       $field_id = 'rcmfd_htmleditor'; 
    283       $input_htmleditor = new html_checkbox(array('name' => '_htmleditor', 'id' => $field_id, 'value' => 1)); 
    284  
    285       $table->add('title', html::label($field_id, Q(rcube_label('htmleditor')))); 
    286       $table->add(null, $input_htmleditor->show($config['htmleditor']?1:0)); 
    287     } 
    288  
    289     if (!isset($no_override['draft_autosave'])) { 
    290       $field_id = 'rcmfd_autosave'; 
    291       $select_autosave = new html_select(array('name' => '_draft_autosave', 'id' => $field_id, 'disabled' => empty($config['drafts_mbox']))); 
    292       $select_autosave->add(rcube_label('never'), 0); 
    293       foreach (array(1, 3, 5, 10) as $i => $min) 
    294         $select_autosave->add(rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min))), $min*60); 
    295  
    296       $table->add('title', html::label($field_id, Q(rcube_label('autosavedraft')))); 
    297       $table->add(null, $select_autosave->show($config['draft_autosave'])); 
    298     } 
    299  
    300     if (!isset($no_override['mime_param_folding'])) { 
    301       $field_id = 'rcmfd_param_folding'; 
    302       $select_param_folding = new html_select(array('name' => '_mime_param_folding', 'id' => $field_id)); 
    303       $select_param_folding->add(rcube_label('2231folding'), 0); 
    304       $select_param_folding->add(rcube_label('miscfolding'), 1); 
    305       $select_param_folding->add(rcube_label('2047folding'), 2); 
    306  
    307       $table->set_row_attribs('advanced'); 
    308       $table->add('title', html::label($field_id, Q(rcube_label('mimeparamfolding')))); 
    309       $table->add(null, $select_param_folding->show($config['mime_param_folding'])); 
    310     } 
    311  
    312     $RCMAIL->plugins->exec_hook('user_preferences', array('section' => $part, 'table' => $table)); 
    313  
    314     if ($table->size()) 
    315       $out = html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('messagescomposition'))) . $table->show($attrib)); 
    316     break; 
    317  
    318  
    319   // Special IMAP folders 
    320   case 'folders': 
    321     // Configure special folders 
    322     if (!isset($no_override['default_imap_folders'])) { 
    323       $RCMAIL->imap_init(true); 
    324       $select = rcmail_mailbox_select(array('noselection' => '---', 'realnames' => true, 'maxlength' => 30)); 
    325  
    326       $table = new html_table(array('cols' => 2)); 
    327  
    328       if (!isset($no_override['drafts_mbox'])) { 
    329         $table->add('title', Q(rcube_label('drafts'))); 
    330         $table->add(null, $select->show($config['drafts_mbox'], array('name' => "_drafts_mbox", 'onchange' => "document.getElementById('rcmfd_autosave').disabled=this.selectedIndex==0"))); 
    331       } 
    332  
    333       if (!isset($no_override['sent_mbox'])) { 
    334         $table->add('title', Q(rcube_label('sent'))); 
    335         $table->add(null, $select->show($config['sent_mbox'], array('name' => "_sent_mbox"))); 
    336       } 
    337  
    338       if (!isset($no_override['junk_mbox'])) { 
    339         $table->add('title', Q(rcube_label('junk'))); 
    340         $table->add(null, $select->show($config['junk_mbox'], array('name' => "_junk_mbox"))); 
    341       } 
    342  
    343       if (!isset($no_override['trash_mbox'])) { 
    344         $table->add('title', Q(rcube_label('trash'))); 
    345         $table->add(null, $select->show($config['trash_mbox'], array('name' => "_trash_mbox"))); 
    346       } 
    347  
    348       $RCMAIL->plugins->exec_hook('user_preferences', array('section' => $part, 'table' => $table)); 
    349  
    350       $out = html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('specialfolders'))) . $table->show($attrib)); 
    351     } 
    352     break; 
    353  
    354  
    355   // Server settings 
    356   case 'server': 
    357     $table = new html_table(array('cols' => 2)); 
    358  
    359     if (!isset($no_override['read_when_deleted'])) { 
    360       $field_id = 'rcmfd_read_deleted'; 
    361       $input_readdeleted = new html_checkbox(array('name' => '_read_when_deleted', 'id' => $field_id, 'value' => 1)); 
    362  
    363       $table->add('title', html::label($field_id, Q(rcube_label('readwhendeleted')))); 
    364       $table->add(null, $input_readdeleted->show($config['read_when_deleted']?1:0)); 
    365     } 
    366  
    367     if (!isset($no_override['flag_for_deletion'])) { 
    368       $field_id = 'rcmfd_flag_for_deletion'; 
    369       $input_flagfordeletion = new html_checkbox(array('name' => '_flag_for_deletion', 'id' => $field_id, 'value' => 1)); 
    370  
    371       $table->add('title', html::label($field_id, Q(rcube_label('flagfordeletion')))); 
    372       $table->add(null, $input_flagfordeletion->show($config['flag_for_deletion']?1:0)); 
    373     } 
    374  
    375     // don't show deleted messages 
    376     if (!isset($no_override['skip_deleted'])) { 
    377       $field_id = 'rcmfd_skip_deleted'; 
    378       $input_purge = new html_checkbox(array('name' => '_skip_deleted', 'id' => $field_id, 'value' => 1)); 
    379  
    380       $table->add('title', html::label($field_id, Q(rcube_label('skipdeleted')))); 
    381       $table->add(null, $input_purge->show($config['skip_deleted']?1:0)); 
    382     } 
    383  
    384     // Trash purging on logout 
    385     if (!isset($no_override['logout_purge'])) { 
    386       $field_id = 'rcmfd_logout_purge'; 
    387       $input_purge = new html_checkbox(array('name' => '_logout_purge', 'id' => $field_id, 'value' => 1)); 
    388  
    389       $table->add('title', html::label($field_id, Q(rcube_label('logoutclear')))); 
    390       $table->add(null, $input_purge->show($config['logout_purge']?1:0)); 
    391     } 
    392  
    393     // INBOX compacting on logout 
    394     if (!isset($no_override['logout_expunge'])) { 
    395       $field_id = 'rcmfd_logout_expunge'; 
    396       $input_expunge = new html_checkbox(array('name' => '_logout_expunge', 'id' => $field_id, 'value' => 1)); 
    397  
    398       $table->add('title', html::label($field_id, Q(rcube_label('logoutcompact')))); 
    399       $table->add(null, $input_expunge->show($config['logout_expunge']?1:0)); 
    400     } 
    401  
    402     $RCMAIL->plugins->exec_hook('user_preferences', array('section' => $part, 'table' => $table)); 
    403  
    404     if ($table->size()) 
    405       $out = html::tag('fieldset', null, html::tag('legend', null, Q(rcube_label('serversettings'))) . $table->show($attrib)); 
    406     break; 
    407  
    408  
    409     default: 
    410       $out = ''; 
     70  return $out; 
    41171  } 
    412    
    413   return $out; 
    414 } 
    41572 
    41673 
     
    43895 
    43996 
    440  
    44197// similar function as in /steps/addressbook/edit.inc 
    44298function get_form_tags($attrib, $action, $id = null, $hidden = null) 
     
    448104  if (empty($EDIT_FORM)) { 
    449105    $request_key = $action . (isset($id) ? '.'.$id : ''); 
    450     $form_start = $RCMAIL->output->request_form(array('name' => "form", 'method' => "post", 'task' => $RCMAIL->task, 'action' => $action, 'request' => $request_key, 'noclose' => true) + $attrib); 
     106    $form_start = $RCMAIL->output->request_form(array( 
     107        'name' => 'form', 'method' => 'post', 
     108        'task' => $RCMAIL->task, 'action' => $action, 
     109        'request' => $request_key, 'noclose' => true) + $attrib); 
    451110     
    452111    if (is_array($hidden)) { 
     
    464123  } 
    465124 
    466 function rcmail_get_skins() 
    467   { 
    468   $path = 'skins'; 
    469   $skins = array(); 
    470  
    471   $dir = opendir($path); 
    472    
    473   if (!$dir) 
    474         return false; 
    475    
    476   while (($file = readdir($dir)) !== false) 
    477     { 
    478     $filename = $path.'/'.$file; 
    479     if (is_dir($filename) && is_readable($filename)  
    480         && !in_array($file, array('.', '..', '.svn'))) 
    481       $skins[] = $file; 
    482     } 
    483  
    484   closedir($dir); 
    485  
    486   return $skins; 
    487   } 
    488  
    489125 
    490126// register UI objects 
    491127$OUTPUT->add_handlers(array( 
    492   'userprefs' => 'rcmail_user_prefs_form', 
     128  'prefsframe' => 'rcmail_preferences_frame', 
     129  'sectionslist' => 'rcmail_sections_list', 
    493130  'identitieslist' => 'rcmail_identities_list', 
    494   'itentitieslist' => 'rcmail_identities_list'  // keep this for backward compatibility 
    495131)); 
    496132 
  • trunk/roundcubemail/program/steps/settings/save_prefs.inc

    r2822 r2830  
    2020*/ 
    2121 
    22 $a_user_prefs = array( 
    23   'language'     => isset($_POST['_language']) ? get_input_value('_language', RCUBE_INPUT_POST) : $CONFIG['language'], 
    24   'timezone'     => isset($_POST['_timezone']) ? (is_numeric($_POST['_timezone']) ? floatval($_POST['_timezone']) : get_input_value('_timezone', RCUBE_INPUT_POST)) : $CONFIG['timezone'], 
    25   'dst_active'   => isset($_POST['_dst_active']) ? TRUE : FALSE, 
    26   'pagesize'     => is_numeric($_POST['_pagesize']) ? max(2, intval($_POST['_pagesize'])) : $CONFIG['pagesize'], 
    27   'prettydate'   => isset($_POST['_pretty_date']) ? TRUE : FALSE, 
    28   'prefer_html'  => isset($_POST['_prefer_html']) ? TRUE : FALSE, 
    29   'htmleditor'   => isset($_POST['_htmleditor']) ? TRUE : FALSE, 
    30   'inline_images'   => isset($_POST['_inline_images']) ? TRUE : FALSE, 
    31   'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE, 
    32   'display_next' => isset($_POST['_display_next']) ? TRUE : FALSE, 
    33   'focus_on_new_message' => isset($_POST['_focus_on_new_message']) ? TRUE : FALSE, 
    34   'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE, 
    35   'skip_deleted' => isset($_POST['_skip_deleted']) ? TRUE : FALSE, 
    36   'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE, 
    37   'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE, 
    38   'logout_expunge' => isset($_POST['_logout_expunge']) ? TRUE : FALSE, 
    39   'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0, 
    40   'show_images' => isset($_POST['_show_images']) ? intval($_POST['_show_images']) : 0, 
    41   'keep_alive' => isset($_POST['_keep_alive']) ? intval($_POST['_keep_alive'])*60 : $CONFIG['keep_alive'], 
    42   'check_all_folders' => isset($_POST['_check_all_folders']) ? TRUE : FALSE, 
    43   'mime_param_folding' => isset($_POST['_mime_param_folding']) ? intval($_POST['_mime_param_folding']) : 0, 
    44   'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0, 
    45   'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'], 
    46   'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST), 
    47   'sent_mbox' => get_input_value('_sent_mbox', RCUBE_INPUT_POST), 
    48   'junk_mbox' => get_input_value('_junk_mbox', RCUBE_INPUT_POST), 
    49   'trash_mbox' => get_input_value('_trash_mbox', RCUBE_INPUT_POST), 
    50   ); 
     22$CURR_SECTION = get_input_value('_section', RCUBE_INPUT_POST); 
    5123 
    52 $data  =  rcmail::get_instance()->plugins->exec_hook('save_preferences', array('prefs' => $a_user_prefs)); 
     24$a_user_prefs = array(); 
     25 
     26// set options for specified section 
     27switch ($CURR_SECTION) 
     28{ 
     29  case 'general': 
     30    $a_user_prefs = array( 
     31      'language'     => isset($_POST['_language']) ? get_input_value('_language', RCUBE_INPUT_POST) : $CONFIG['language'], 
     32      'timezone'     => isset($_POST['_timezone']) ? (is_numeric($_POST['_timezone']) ? floatval($_POST['_timezone']) : get_input_value('_timezone', RCUBE_INPUT_POST)) : $CONFIG['timezone'], 
     33      'dst_active'   => isset($_POST['_dst_active']) ? TRUE : FALSE, 
     34      'pagesize'     => is_numeric($_POST['_pagesize']) ? max(2, intval($_POST['_pagesize'])) : $CONFIG['pagesize'], 
     35      'prettydate'   => isset($_POST['_pretty_date']) ? TRUE : FALSE, 
     36      'skin'         => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'], 
     37    ); 
     38 
     39  break; 
     40  case 'mailbox': 
     41    $a_user_prefs = array( 
     42      'focus_on_new_message' => isset($_POST['_focus_on_new_message']) ? TRUE : FALSE, 
     43      'preview_pane'         => isset($_POST['_preview_pane']) ? TRUE : FALSE, 
     44      'mdn_requests'         => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0, 
     45      'keep_alive'           => isset($_POST['_keep_alive']) ? intval($_POST['_keep_alive'])*60 : $CONFIG['keep_alive'], 
     46      'check_all_folders'    => isset($_POST['_check_all_folders']) ? TRUE : FALSE, 
     47    ); 
     48 
     49  break; 
     50  case 'mailview': 
     51    $a_user_prefs = array( 
     52      'prefer_html'     => isset($_POST['_prefer_html']) ? TRUE : FALSE, 
     53      'inline_images'   => isset($_POST['_inline_images']) ? TRUE : FALSE, 
     54      'show_images'     => isset($_POST['_show_images']) ? intval($_POST['_show_images']) : 0, 
     55      'display_next'    => isset($_POST['_display_next']) ? TRUE : FALSE, 
     56    ); 
     57 
     58  break; 
     59  case 'compose': 
     60    $a_user_prefs = array( 
     61      'htmleditor'         => isset($_POST['_htmleditor']) ? TRUE : FALSE, 
     62      'draft_autosave'     => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0, 
     63      'mime_param_folding' => isset($_POST['_mime_param_folding']) ? intval($_POST['_mime_param_folding']) : 0, 
     64    ); 
     65 
     66  break; 
     67  case 'server': 
     68    $a_user_prefs = array( 
     69      'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE, 
     70      'skip_deleted'      => isset($_POST['_skip_deleted']) ? TRUE : FALSE, 
     71      'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE, 
     72      'logout_purge'      => isset($_POST['_logout_purge']) ? TRUE : FALSE, 
     73      'logout_expunge'    => isset($_POST['_logout_expunge']) ? TRUE : FALSE, 
     74    ); 
     75 
     76  break; 
     77  case 'folders': 
     78    $a_user_prefs = array( 
     79      'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST), 
     80      'sent_mbox'   => get_input_value('_sent_mbox', RCUBE_INPUT_POST), 
     81      'junk_mbox'   => get_input_value('_junk_mbox', RCUBE_INPUT_POST), 
     82      'trash_mbox'  => get_input_value('_trash_mbox', RCUBE_INPUT_POST), 
     83    ); 
     84 
     85  break; 
     86} 
     87 
     88 
     89$data = rcmail::get_instance()->plugins->exec_hook('save_preferences', 
     90  array('prefs' => $a_user_prefs, 'section' => $CURR_SECTION)); 
     91 
    5392$a_user_prefs = $data['prefs']; 
    5493 
     
    5796  $a_user_prefs[$p] = $CONFIG[$p]; 
    5897 
    59 // special handling for 'default_imap_folders' 
    60 if (in_array('default_imap_folders', (array)$CONFIG['dont_override'])) { 
    61   foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) 
    62     $a_user_prefs[$p] = $CONFIG[$p]; 
     98 
     99// verify some options 
     100switch ($CURR_SECTION) 
     101{ 
     102  case 'general': 
     103 
     104    // switch UI language 
     105    if (isset($_POST['_language'])) { 
     106      $RCMAIL->load_language($a_user_prefs['language']); 
     107    } 
     108 
     109    // switch skin 
     110    $OUTPUT->set_skin($a_user_prefs['skin']); 
     111 
     112    // force min size 
     113    if ($a_user_prefs['pagesize'] < 1) 
     114      $a_user_prefs['pagesize'] = 10; 
     115 
     116    if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize'])) 
     117      $a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize']; 
     118 
     119  break; 
     120  case 'mailbox': 
     121 
     122    // force keep_alive 
     123    if (isset($a_user_prefs['keep_alive'])) { 
     124      $a_user_prefs['keep_alive'] = max(60, $CONFIG['min_keep_alive'], $a_user_prefs['keep_alive']); 
     125      if (!empty($CONFIG['session_lifetime'])) 
     126        $a_user_prefs['keep_alive'] = min($CONFIG['session_lifetime']*60, $a_user_prefs['keep_alive']); 
     127    } 
     128 
     129  break; 
     130  case 'folders': 
     131 
     132    // special handling for 'default_imap_folders' 
     133    if (in_array('default_imap_folders', (array)$CONFIG['dont_override'])) { 
     134      foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) 
     135        $a_user_prefs[$p] = $CONFIG[$p]; 
     136    } else { 
     137      $a_user_prefs['default_imap_folders'] = array('INBOX'); 
     138      foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) { 
     139        if ($a_user_prefs[$p]) 
     140          $a_user_prefs['default_imap_folders'][] = $a_user_prefs[$p]; 
     141        } 
     142    } 
     143   
     144  break; 
    63145} 
    64 else { 
    65   $a_user_prefs['default_imap_folders'] = array('INBOX'); 
    66   foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) { 
    67     if ($a_user_prefs[$p]) 
    68       $a_user_prefs['default_imap_folders'][] = $a_user_prefs[$p]; 
    69   } 
    70 } 
    71  
    72 // switch UI language 
    73 if (isset($_POST['_language'])) { 
    74   $RCMAIL->load_language($a_user_prefs['language']); 
    75 } 
    76  
    77 // switch skin 
    78 $OUTPUT->set_skin($a_user_prefs['skin']); 
    79  
    80 // force min size 
    81 if ($a_user_prefs['pagesize'] < 1) 
    82   $a_user_prefs['pagesize'] = 10; 
    83  
    84 if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize'])) 
    85   $a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize']; 
    86  
    87 // force keep_alive 
    88 if (isset($a_user_prefs['keep_alive'])) { 
    89     $a_user_prefs['keep_alive'] = max(60, $CONFIG['min_keep_alive'], $a_user_prefs['keep_alive']); 
    90     if (!empty($CONFIG['session_lifetime'])) 
    91       $a_user_prefs['keep_alive'] = min($CONFIG['session_lifetime']*60, $a_user_prefs['keep_alive']); 
    92 } 
    93  
    94146 
    95147if ($USER->save_prefs($a_user_prefs)) 
    96148  $OUTPUT->show_message('successfullysaved', 'confirmation'); 
    97149 
    98 // go to next step 
    99 rcmail_overwrite_action('preferences'); 
     150// display the form again 
     151rcmail_overwrite_action('edit-prefs'); 
    100152 
    101153?> 
  • trunk/roundcubemail/skins/default/iehacks.css

    r2809 r2830  
    3434} 
    3535 
    36 #userprefs-box 
    37 { 
    38   height: expression((parseInt(document.documentElement.clientHeight)-155)+'px'); 
    39   width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); 
    40 } 
    41  
    42 .userprefs-block 
    43 { 
    44   width: expression(Math.min(520, parseInt(document.documentElement.clientWidth))+'px'); 
    45 } 
    46  
    4736#folder-manager 
    4837{ 
     
    9584} 
    9685 
    97 #addresslist 
     86#addresslist, 
     87#sectionslist 
    9888{ 
    9989  height: expression(parseInt(this.parentNode.offsetHeight)+'px'); 
     
    201191} 
    202192 
     193#prefsscreen 
     194{ 
     195  width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); 
     196  height: expression((parseInt(document.documentElement.clientHeight)-125)+'px'); 
     197} 
     198 
    203199#importbox 
    204200{ 
     
    211207} 
    212208 
    213 #contacts-box 
     209#contacts-box, 
     210#prefs-box 
    214211{ 
    215212  height: expression(parseInt(this.parentNode.offsetHeight)+'px'); 
  • trunk/roundcubemail/skins/default/settings.css

    r2806 r2830  
    4545} 
    4646 
    47 #userprefs-box 
    48 { 
    49   position: absolute; 
    50   top: 95px; 
    51   left: 20px; 
    52   bottom: 60px; 
    53   right: 20px; 
    54   overflow: auto; 
    55   border: 1px solid #999999; 
    56 } 
    57  
    58 #userprefs-box table td.title 
    59 { 
    60   color: #666666; 
    61   padding-right: 10px; 
    62   white-space: nowrap; 
    63 } 
    64  
    65 #userprefs-box table tr.advanced 
    66 { 
    67   display: none; 
    68 } 
    69  
    70 .userprefs-block 
    71 { 
    72   float: left; 
    73   margin-right: 14px; 
    74   min-width: 520px; 
    75 } 
    76  
    7747#rcmfd_timezone 
    7848{ 
     
    250220} 
    251221 
    252 #userprefs-title, 
    253222#identity-title, 
     223#prefs-title, 
    254224div.boxtitle 
    255225{ 
     
    288258} 
    289259 
    290 div.advswitch 
    291 { 
     260#prefsscreen 
     261{ 
     262  position: absolute; 
     263  top: 95px; 
     264  right: 20px; 
     265  bottom: 30px; 
     266  left: 20px; 
     267} 
     268 
     269#sectionslist 
     270{ 
     271  position: absolute; 
     272  top: 0px; 
     273  left: 0px; 
     274  bottom: 0px; 
     275  border: 1px solid #999999; 
     276  background-color: #F9F9F9; 
     277  overflow: auto; 
     278} 
     279 
     280#sections-table 
     281{ 
     282  width: 100%; 
     283  table-layout: fixed; 
     284} 
     285 
     286#sections-table tbody td 
     287{ 
     288  cursor: default; 
     289} 
     290 
     291#prefs-box 
     292{ 
     293  position: absolute; 
     294  top: 0px; 
     295  right: 0px; 
     296  bottom: 0px; 
     297  border: 1px solid #999999; 
     298  overflow: hidden; 
     299} 
     300 
     301body.iframe, 
     302#prefs-frame 
     303{ 
     304  background-color: #F9F9F9; 
     305  border: none; 
     306} 
     307 
     308#prefs-details 
     309{ 
     310  margin: 15px; 
     311} 
     312 
     313#prefs-details table td.title 
     314{ 
     315  color: #666; 
     316  padding-right: 10px; 
     317} 
     318 
     319#prefs-details table tr.advanced 
     320{ 
     321  display: none; 
     322} 
     323 
     324#formfooter 
     325{ 
     326  width: 100%; 
     327} 
     328 
     329#formfooter .footerleft 
     330{ 
     331  padding-left: 20px; 
     332  white-space: nowrap; 
     333  float: left; 
     334} 
     335 
     336#formfooter .footerright 
     337{ 
     338  padding-right: 20px; 
    292339  white-space: nowrap; 
    293340  text-align: right; 
    294   position: absolute; 
    295   bottom: 35px; 
    296   right: 20px; 
    297   width: 460px; 
    298 } 
     341  float: right; 
     342} 
  • trunk/roundcubemail/skins/default/templates/settings.html

    r2541 r2830  
    55<roundcube:include file="/includes/links.html" /> 
    66<script type="text/javascript" src="/functions.js"></script> 
     7<script type="text/javascript" src="/splitter.js"></script> 
     8 
     9<style type="text/css"> 
     10#sectionslist { width: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter-5 : 205" />px; } 
     11#prefs-box { left: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 205" />px; 
     12<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 205).')+\\'px\\');') : ''" /> 
     13} 
     14</style> 
     15 
    716</head> 
    817<body> 
     
    1221<roundcube:include file="/includes/settingstabs.html" /> 
    1322 
    14 <form name="form" action="./" method="post"> 
     23<div id="prefsscreen"> 
    1524 
    16 <div id="userprefs-box"> 
    17 <div id="userprefs-title"><roundcube:label name="userpreferences" /></div> 
    18  
    19 <div id="userprefscontainer" style="padding:15px 0 15px 15px"> 
    20 <div class="userprefs-block"> 
    21   <roundcube:object name="userprefs" form="form" parts="general,mailbox,mailview" /> 
    22 </div> 
    23 <div class="userprefs-block"> 
    24   <roundcube:object name="userprefs" form="form" parts="compose,folders,server" /> 
    25 </div> 
    26 <div style="clear:left"></div> 
    27  
    28 <roundcube:container name="userprefs" id="userprefscontainer" /> 
    29 </div> 
     25<div id="sectionslist"> 
     26<roundcube:object name="sectionslist" id="sections-table" class="records-table" cellspacing="0" /> 
    3027</div> 
    3128 
    32 <p id="listbuttons"> 
    33 <roundcube:button command="save" type="input" class="button mainaction" label="save" /> 
    34 </p> 
     29<script type="text/javascript"> 
     30  var prefviewsplit = new rcube_splitter({id:'prefsviewsplitter', p1: 'sectionslist', p2: 'prefs-box', orientation: 'v', relative: true, start: 200}); 
     31  rcmail.add_onload('prefviewsplit.init()'); 
     32</script> 
    3533 
    36 </form> 
     34<div id="prefs-box"> 
     35<roundcube:object name="prefsframe" id="prefs-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" /> 
     36</div> 
    3737 
    38 <div class="advswitch"> 
    39 <label for="advswitch"><roundcube:label name="advancedoptions"></label> 
    40 <input type="checkbox" id="advswitch" name="_advanced" value="0" onclick="rcube_show_advanced(this.checked)" /> 
    4138</div> 
    4239 
Note: See TracChangeset for help on using the changeset viewer.