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