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