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