Another big chunk of changes to options pages.
[squirrelmail.git] / src / options.php
CommitLineData
59177427 1<?php
849bdf42 2 /**
3 * options.php
4 *
5 * Copyright (c) 1999-2001 The SquirrelMail Development Team
6 * Licensed under the GNU GPL. For full terms see the file COPYING.
7 *
8 * Displays the options page. Pulls from proper user preference files
9 * and config.php. Displays preferences as selected and other options.
10 *
11 * $Id$
12 */
13
14 require_once('../src/validate.php');
15 require_once('../functions/display_messages.php');
16 require_once('../functions/imap.php');
17 require_once('../functions/array.php');
88fa922a 18
849bdf42 19 ereg ("(^.*/)[^/]+/[^/]+$", $PHP_SELF, $regs);
20 $base_uri = $regs[1];
d3cdb279 21
849bdf42 22 if (isset($language)) {
23 setcookie('squirrelmail_language', $language, time()+2592000, $base_uri);
24 $squirrelmail_language = $language;
25 }
1e0628fb 26
849bdf42 27 displayPageHeader($color, _("None"));
f740c049 28
c36ed9cf 29?>
11307a4c 30
e9f8ea4e 31<br>
e7db48af 32<table bgcolor="<?php echo $color[0] ?>" width="95%" align="center" cellpadding="2" cellspacing="0" border="0">
33<tr><td align="center">
849bdf42 34 <b><?php echo _("Options") ?></b><br>
e7db48af 35
36 <table width="100%" border="0" cellpadding="5" cellspacing="0">
37 <tr><td bgcolor="<?php echo $color[4] ?>" align="center">
c36ed9cf 38
6170c5b6 39<?php
849bdf42 40 if (isset($submit_personal)) {
41 /* Save personal information. */
bbcafebd 42 setPref($data_dir, $username, 'full_name', $new_full_name);
43 setPref($data_dir, $username, 'email_address', $new_email_address);
44 setPref($data_dir, $username, 'reply_to', $new_reply_to);
849bdf42 45 setPref($data_dir, $username, 'reply_citation_style', $new_reply_citation_style);
46 setPref($data_dir, $username, 'reply_citation_start', $new_reply_citation_start);
47 setPref($data_dir, $username, 'reply_citation_end', $new_reply_citation_end);
bbcafebd 48 setPref($data_dir, $username, 'use_signature', $new_use_signature);
49 setPref($data_dir, $username, 'prefix_sig', $new_prefix_sig);
50 setSig($data_dir, $username, $new_signature_abs);
2848c630 51
849bdf42 52 do_hook('options_personal_save');
ef3c69f0 53
849bdf42 54 echo '<br><b>'._("Successfully saved personal information!").'</b><br>';
55 } else if (isset($submit_display)) {
ce393174 56 /* Do checking to make sure $new_theme is in the array. */
57 $theme_in_array = false;
849bdf42 58 for ($i=0; $i < count($theme); $i++) {
ce393174 59 if ($theme[$i]['PATH'] == $new_chosen_theme) {
60 $theme_in_array = true;
849bdf42 61 break;
62 }
63 }
ce393174 64 if (!$theme_in_array) {
65 $new_chosen_theme = '';
849bdf42 66 }
6b638171 67
849bdf42 68 /* Save display preferences. */
ce393174 69 setPref($data_dir, $username, 'chosen_theme', $new_chosen_theme);
70 setPref($data_dir, $username, 'language', $new_language);
71 setPref($data_dir, $username, 'use_javascript_addr_book', $new_use_javascript_addr_book);
23d6bd09 72 setPref($data_dir, $username, 'javascript_setting', $new_javascript_setting);
a3ec3c91 73 setPref($data_dir, $username, 'show_num', $new_show_num);
74 setPref($data_dir, $username, 'wrap_at', $new_wrap_at);
75 setPref($data_dir, $username, 'editor_size', $new_editor_size);
a3ec3c91 76 setPref($data_dir, $username, 'location_of_buttons', $new_location_of_buttons);
fd87494d 77 setPref($data_dir, $username, 'alt_index_colors', $new_alt_index_colors);
78 setPref($data_dir, $username, 'show_html_default', $new_show_html_default);
79 setPref($data_dir, $username, 'include_self_reply_all', $new_include_self_reply_all);
80 setPref($data_dir, $username, 'page_selector', $new_page_selector);
81 setPref($data_dir, $username, 'page_selector_max', $new_page_selector_max);
9ab0d96f 82 setPref($data_dir, $username, 'show_xmailer_default', $new_show_xmailer_default);
849bdf42 83
a3ec3c91 84 $js_autodetect_results = (isset($new_js_autodetect_results) ? $new_js_autodetect_results : SMPREF_JS_OFF);
23d6bd09 85 if ($new_javascript_setting == SMPREF_JS_AUTODETECT) {
86 if ($js_autodetect_results == SMPREF_JS_ON) {
87 setPref($data_dir, $username, 'javascript_on', SMPREF_JS_ON);
88 } else {
89 setPref($data_dir, $username, 'javascript_on', SMPREF_JS_OFF);
90 }
91 } else {
92 setPref($data_dir, $username, 'javascript_on', $new_javascript_setting);
93 }
94
849bdf42 95 do_hook('options_display_save');
96
97 echo '<br><b>'._("Successfully saved display preferences!").'</b><br>';
98 echo '<a href="../src/webmail.php?right_frame=options.php" target=_top>' . _("Refresh Page") . '</a><br>';
99 } else if (isset($submit_folder)) {
b5efadfa 100 /* Save trash folder preferences. */
101 if ($new_trash_folder != SMPREF_NONE) {
102 setPref($data_dir, $username, 'move_to_trash', SMPREF_ON);
103 setPref($data_dir, $username, 'trash_folder', $new_trash_folder);
849bdf42 104 } else {
b5efadfa 105 setPref($data_dir, $username, 'move_to_trash', SMPREF_OFF);
106 setPref($data_dir, $username, 'trash_folder', SMPREF_NONE);
849bdf42 107 }
b5efadfa 108
109 /* Save sent folder preferences. */
110 if ($new_sent_folder != SMPREF_NONE) {
111 setPref($data_dir, $username, 'move_to_sent', SMPREF_ON);
112 setPref($data_dir, $username, 'sent_folder', $new_sent_folder);
849bdf42 113 } else {
b5efadfa 114 setPref($data_dir, $username, 'move_to_sent', SMPREF_OFF);
115 setPref($data_dir, $username, 'sent_folder', SMPREF_NONE);
849bdf42 116 }
b5efadfa 117
118 /* Save draft folder preferences. */
119 if ($new_draft_folder != SMPREF_NONE) {
120 setPref($data_dir, $username, 'save_as_draft', SMPREF_ON);
121 setPref($data_dir, $username, 'draft_folder', $new_draft_folder);
849bdf42 122 } else {
b5efadfa 123 setPref($data_dir, $username, 'save_as_draft', SMPREF_OFF);
124 setPref($data_dir, $username, 'draft_folder', SMPREF_NONE);
849bdf42 125 }
b5efadfa 126
127 /* Save folder prefix preferences. */
849bdf42 128 if (isset($folderprefix)) {
129 setPref($data_dir, $username, 'folder_prefix', $folderprefix);
130 } else {
131 setPref($data_dir, $username, 'folder_prefix', '');
132 }
a440e68f 133
134 setPref($data_dir, $username, 'location_of_bar', $new_location_of_bar);
135 setPref($data_dir, $username, 'left_size', $new_left_size);
136 setPref($data_dir, $username, 'left_refresh', $new_left_refresh);
137 setPref($data_dir, $username, 'unseen_notify', $new_unseen_notify);
138 setPref($data_dir, $username, 'unseen_type', $new_unseen_type);
139 setPref($data_dir, $username, 'collapse_folders', $new_collapse_folders);
140 setPref($data_dir, $username, 'date_format', $new_date_format);
141 setPref($data_dir, $username, 'hour_format', $new_hour_format);
142
849bdf42 143 do_hook('options_folders_save');
144 echo '<br><b>'._("Successfully saved folder preferences!").'</b><br>';
145 echo '<a href="../src/left_main.php" target=left>' . _("Refresh Folder List") . '</a><br>';
146 } else {
147 do_hook('options_save');
148 }
149
150 /****************************************/
151 /* Now build our array of option pages. */
152 /****************************************/
153
154 /* Build a section for Personal Options. */
155 $optionpages[] = array(
156 'name' => _("Personal Information"),
157 'url' => 'options_personal.php',
158 'desc' => _("This contains personal information about yourself such as your name, your email address, etc."),
159 'js' => false
160 );
161
162 /* Build a section for Display Options. */
163 $optionpages[] = array(
164 'name' => _("Display Preferences"),
165 'url' => 'options_display.php',
166 'desc' => _("You can change the way that SquirrelMail looks and displays information to you, such as the colors, the language, and other settings."),
167 'js' => false
168 );
169
170 /* Build a section for Message Highlighting Options. */
171 $optionpages[] = array(
172 'name' =>_("Message Highlighting"),
173 'url' => 'options_highlight.php',
174 'desc' =>_("Based upon given criteria, incoming messages can have different background colors in the message list. This helps to easily distinguish who the messages are from, especially for mailing lists."),
175 'js' => false
176 );
177
178 /* Build a section for Folder Options. */
179 $optionpages[] = array(
180 'name' => _("Folder Preferences"),
181 'url' => 'options_folder.php',
182 'desc' => _("These settings change the way your folders are displayed and manipulated."),
183 'js' => false
184 );
185
186 /* Build a section for Index Order Options. */
187 $optionpages[] = array(
188 'name' => _("Index Order"),
189 'url' => 'options_order.php',
190 'desc' => _("The order of the message index can be rearanged and changed to contain the headers in any order you want."),
191 'js' => false
192 );
193 /* Build a section for plugins wanting to register an optionpage. */
194 do_hook('options_register');
195
196 /*****************************************************/
197 /* Let's sort Javascript Option Pages to the bottom. */
198 /*****************************************************/
199 foreach ($optionpages as $optpage) {
23d6bd09 200 if (!$optpage['js']) {
201 $reg_optionpages[] = $optpage;
202 } else if ($javascript_on == SMPREF_JS_ON) {
849bdf42 203 $js_optionpages[] = $optpage;
849bdf42 204 }
205 }
23d6bd09 206 $optionpages = array_merge($reg_optionpages, $js_optionpages);
849bdf42 207
208 /********************************************/
209 /* Now, print out each option page section. */
210 /********************************************/
211 $first_optpage = false;
212 foreach ($optionpages as $next_optpage) {
213 if ($first_optpage == false) {
214 $first_optpage = $next_optpage;
215 } else {
216 print_optionpages_row($first_optpage, $next_optpage);
217 $first_optpage = false;
218 }
219 }
220
221 if ($first_optpage != false) {
222 print_optionpages_row($first_optpage);
223 }
224
225 do_hook('options_link_and_description');
226
c36ed9cf 227?>
849bdf42 228 </td></tr>
229 </table>
230
231</td></tr>
232</table>
233
234</body></html>
235
236<?php
237
238 /*******************************************************************/
239 /* Please be warned. The code below this point sucks. This is just */
240 /* my first implementation to make the option rows work for both */
241 /* Javascript and non-Javascript option chunks. */
242 /* */
243 /* Please, someone make these better for me. All three functions */
244 /* below REALLY do close to the same thing. */
245 /* */
246 /* This code would be GREATLY improved by a templating system. */
247 /* Don't try to implement that now, however. That will come later. */
248 /*******************************************************************/
249
250 /*******************************************************************/
251 /* Actually, now that I think about it, don't do anything with */
252 /* this code yet. There is ACTUALLY supposed to be a difference */
253 /* between the three functions that write the option rows. I just */
254 /* have not yet gotten to integrating that yet. */
255 /*******************************************************************/
256
257 /**
23d6bd09 258 * This function prints out an option page row.
849bdf42 259 */
260 function print_optionpages_row($leftopt, $rightopt = false) {
849bdf42 261 global $color;
56b52934 262
263 echo "<table bgcolor=\"$color[4]\" width=\"100%\" cellpadding=0 cellspacing=5 border=0>" .
264 '<tr><td valign="top">' .
265 '<table width="100%" cellpadding="3" cellspacing="0" border="0">' .
266 '<tr>' .
267 "<td valign=top bgcolor=\"$color[9]\" width=\"50%\">" .
268 '<a href="' . $leftopt['url'] . '">' . $leftopt['name'] . '</a>'.
269 '</td>'.
270 "<td valign=top bgcolor=\"$color[4]\">&nbsp;</td>";
271 if( $rightopt ) {
272 echo "<td valign=top bgcolor=\"$color[9]\" width=\"50%\">" .
273 '<a href="' . $rightopt['url'] . '">' . $rightopt['name'] . '</a>' .
274 '</td>';
275 } else {
276 echo "<td valign=top bgcolor=\"$color[4]\" width=\"50%\">&nbsp;</td>";
277 }
278
279 echo '</tr>' .
280 '<tr>' .
281 "<td valign=top bgcolor=\"$color[0]\">" .
282 $leftopt['desc'] .
283 '</td>' .
284 "<td valign=top bgcolor=\"$color[4]\">&nbsp;</td>";
285 if( $rightopt ) {
286 echo "<td valign=top bgcolor=\"$color[0]\">" .
287 $rightopt['desc'] .
288 '</td>';
289 }else {
290 echo "<td valign=top bgcolor=\"$color[4]\">&nbsp;</td>";
291 }
292
293 echo '</tr>' .
294 '</table>' .
295 '</td></tr>' .
296 "</table>\n";
849bdf42 297 }
e7db48af 298
a3ec3c91 299?>