Changeset 2830 in subversion
- Timestamp:
- Aug 3, 2009 2:27:53 PM (4 years ago)
- Location:
- trunk/roundcubemail
- Files:
-
- 2 added
- 8 edited
-
CHANGELOG (modified) (1 diff)
-
plugins/password/password.php (modified) (1 diff)
-
program/js/app.js (modified) (5 diffs)
-
program/steps/settings/edit_prefs.inc (added)
-
program/steps/settings/func.inc (modified) (4 diffs)
-
program/steps/settings/save_prefs.inc (modified) (2 diffs)
-
skins/default/iehacks.css (modified) (4 diffs)
-
skins/default/settings.css (modified) (3 diffs)
-
skins/default/templates/settings.html (modified) (2 diffs)
-
skins/default/templates/settingsedit.html (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/roundcubemail/CHANGELOG
r2829 r2830 2 2 =========================== 3 3 4 - Re-designed User Preferences interface 4 5 - Fix MS SQL DDL (#1486020) 5 6 - Fix rcube_mdb2.php: call to setCharset not implemented in mssql driver (#1486019) -
trunk/roundcubemail/plugins/password/password.php
r2687 r2830 144 144 145 145 $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')) . 147 147 html::div(array('style' => "padding:15px"), $table->show() . 148 148 html::p(null, -
trunk/roundcubemail/program/js/app.js
r2822 r2830 238 238 239 239 document.onmouseup = function(e){ return p.doc_mouse_up(e); }; 240 241 // init message compose form 242 this.init_messageform(); 240 243 } 241 244 … … 247 250 248 251 this.set_page_buttons(); 249 250 // init message compose form251 if (this.env.action=='compose')252 this.init_messageform();253 252 254 253 // show printing dialog … … 326 325 this.enable_command('preferences', 'identities', 'save', 'folders', true); 327 326 328 if (this.env.action=='identities' || this.env.action=='edit-identity' || this.env.action=='add-identity') {327 if (this.env.action=='identities') { 329 328 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') 337 335 this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', 'delete-folder', true); 338 336 … … 347 345 this.identity_list.highlight_row(this.env.iid); 348 346 } 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) 351 355 this.init_subscription_list(); 352 356 … … 2942 2946 } 2943 2947 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 2944 2969 this.identity_select = function(list) 2945 2970 { -
trunk/roundcubemail/program/steps/settings/func.inc
r2822 r2830 23 23 $OUTPUT->set_pagetitle(rcube_label('preferences')); 24 24 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')); 167 32 168 33 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() 35 function rcmail_preferences_frame($attrib) 36 { 37 global $OUTPUT; 172 38 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'; 179 41 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']; 184 43 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 } 226 49 227 50 228 // Message viewing 229 case 'mailview': 230 $table = new html_table(array('cols' => 2)); 51 function 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'; 231 58 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'); 237 65 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'); 241 69 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; 411 71 } 412 413 return $out;414 }415 72 416 73 … … 438 95 439 96 440 441 97 // similar function as in /steps/addressbook/edit.inc 442 98 function get_form_tags($attrib, $action, $id = null, $hidden = null) … … 448 104 if (empty($EDIT_FORM)) { 449 105 $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); 451 110 452 111 if (is_array($hidden)) { … … 464 123 } 465 124 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 489 125 490 126 // register UI objects 491 127 $OUTPUT->add_handlers(array( 492 'userprefs' => 'rcmail_user_prefs_form', 128 'prefsframe' => 'rcmail_preferences_frame', 129 'sectionslist' => 'rcmail_sections_list', 493 130 'identitieslist' => 'rcmail_identities_list', 494 'itentitieslist' => 'rcmail_identities_list' // keep this for backward compatibility495 131 )); 496 132 -
trunk/roundcubemail/program/steps/settings/save_prefs.inc
r2822 r2830 20 20 */ 21 21 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); 51 23 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 27 switch ($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 53 92 $a_user_prefs = $data['prefs']; 54 93 … … 57 96 $a_user_prefs[$p] = $CONFIG[$p]; 58 97 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 100 switch ($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; 63 145 } 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 language73 if (isset($_POST['_language'])) {74 $RCMAIL->load_language($a_user_prefs['language']);75 }76 77 // switch skin78 $OUTPUT->set_skin($a_user_prefs['skin']);79 80 // force min size81 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_alive88 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 94 146 95 147 if ($USER->save_prefs($a_user_prefs)) 96 148 $OUTPUT->show_message('successfullysaved', 'confirmation'); 97 149 98 // go to next step99 rcmail_overwrite_action(' preferences');150 // display the form again 151 rcmail_overwrite_action('edit-prefs'); 100 152 101 153 ?> -
trunk/roundcubemail/skins/default/iehacks.css
r2809 r2830 34 34 } 35 35 36 #userprefs-box37 {38 height: expression((parseInt(document.documentElement.clientHeight)-155)+'px');39 width: expression((parseInt(document.documentElement.clientWidth)-40)+'px');40 }41 42 .userprefs-block43 {44 width: expression(Math.min(520, parseInt(document.documentElement.clientWidth))+'px');45 }46 47 36 #folder-manager 48 37 { … … 95 84 } 96 85 97 #addresslist 86 #addresslist, 87 #sectionslist 98 88 { 99 89 height: expression(parseInt(this.parentNode.offsetHeight)+'px'); … … 201 191 } 202 192 193 #prefsscreen 194 { 195 width: expression((parseInt(document.documentElement.clientWidth)-40)+'px'); 196 height: expression((parseInt(document.documentElement.clientHeight)-125)+'px'); 197 } 198 203 199 #importbox 204 200 { … … 211 207 } 212 208 213 #contacts-box 209 #contacts-box, 210 #prefs-box 214 211 { 215 212 height: expression(parseInt(this.parentNode.offsetHeight)+'px'); -
trunk/roundcubemail/skins/default/settings.css
r2806 r2830 45 45 } 46 46 47 #userprefs-box48 {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.title59 {60 color: #666666;61 padding-right: 10px;62 white-space: nowrap;63 }64 65 #userprefs-box table tr.advanced66 {67 display: none;68 }69 70 .userprefs-block71 {72 float: left;73 margin-right: 14px;74 min-width: 520px;75 }76 77 47 #rcmfd_timezone 78 48 { … … 250 220 } 251 221 252 #userprefs-title,253 222 #identity-title, 223 #prefs-title, 254 224 div.boxtitle 255 225 { … … 288 258 } 289 259 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 301 body.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; 292 339 white-space: nowrap; 293 340 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 5 5 <roundcube:include file="/includes/links.html" /> 6 6 <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 7 16 </head> 8 17 <body> … … 12 21 <roundcube:include file="/includes/settingstabs.html" /> 13 22 14 < form name="form" action="./" method="post">23 <div id="prefsscreen"> 15 24 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" /> 30 27 </div> 31 28 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> 35 33 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> 37 37 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)" />41 38 </div> 42 39
Note: See TracChangeset
for help on using the changeset viewer.
