Nearly all <FORM> blocks now contain a hidden input
[citadel.git] / webcit / iconbar.c
1 /*
2  * $Id$
3  */
4 /**
5  * \defgroup IconBar Displays and customizes the iconbar.
6  * \ingroup MenuInfrastructure
7  */
8 /*@{*/
9 #include "webcit.h"
10
11
12 /** Values for ib_displayas */
13 #define IB_PICTEXT      0 /**< picture and text */
14 #define IB_PICONLY      1 /**< just a picture */
15 #define IB_TEXTONLY     2 /**< just text */
16
17
18 /**
19  * \brief draw the icon bar?????
20  */
21 void do_selected_iconbar(void) {
22         if (WC->current_iconbar == current_iconbar_roomlist) {
23                 do_iconbar_roomlist();
24         }
25         else {
26                 do_iconbar();
27         }
28 }
29
30 /**
31  * \brief draw the icon bar???
32  */
33 void do_iconbar(void) {
34         char iconbar[SIZ];
35         char buf[SIZ];
36         char key[SIZ], value[SIZ];
37         int i;
38
39         WC->current_iconbar = current_iconbar_menu;
40
41         /**
42          * The initialized values of these variables also happen to
43          * specify the default values for users who haven't customized
44          * their iconbars.  These should probably be set in a master
45          * configuration somewhere.
46          */
47         int ib_displayas = 0;   /**< pictures and text, pictures, text */
48         int ib_logo = 0;        /**< Site logo */
49         int ib_summary = 1;     /**< Summary page icon */
50         int ib_inbox = 1;       /**< Inbox icon */
51         int ib_calendar = 1;    /**< Calendar icon */
52         int ib_contacts = 1;    /**< Contacts icon */
53         int ib_notes = 1;       /**< Notes icon */
54         int ib_tasks = 1;       /**< Tasks icon */
55         int ib_rooms = 1;       /**< Rooms icon */
56         int ib_users = 1;       /**< Users icon */
57         int ib_chat = 1;        /**< Chat icon */
58         int ib_advanced = 1;    /**< Advanced Options icon */
59         int ib_citadel = 1;     /**< 'Powered by Citadel' logo */
60         /*
61          */
62
63         get_preference("iconbar", iconbar, sizeof iconbar);
64         for (i=0; i<num_tokens(iconbar, ','); ++i) {
65                 extract_token(buf, iconbar, i, ',', sizeof buf);
66                 extract_token(key, buf, 0, '=', sizeof key);
67                 extract_token(value, buf, 1, '=', sizeof value);
68
69                 if (!strcasecmp(key, "ib_displayas")) ib_displayas = atoi(value);
70                 if (!strcasecmp(key, "ib_logo")) ib_logo = atoi(value);
71                 if (!strcasecmp(key, "ib_summary")) ib_summary = atoi(value);
72                 if (!strcasecmp(key, "ib_inbox")) ib_inbox = atoi(value);
73                 if (!strcasecmp(key, "ib_calendar")) ib_calendar = atoi(value);
74                 if (!strcasecmp(key, "ib_contacts")) ib_contacts = atoi(value);
75                 if (!strcasecmp(key, "ib_notes")) ib_notes = atoi(value);
76                 if (!strcasecmp(key, "ib_tasks")) ib_tasks = atoi(value);
77                 if (!strcasecmp(key, "ib_rooms")) ib_rooms = atoi(value);
78                 if (!strcasecmp(key, "ib_users")) ib_users = atoi(value);
79                 if (!strcasecmp(key, "ib_chat")) ib_chat = atoi(value);
80                 if (!strcasecmp(key, "ib_advanced")) ib_advanced = atoi(value);
81                 if (!strcasecmp(key, "ib_citadel")) ib_citadel = atoi(value);
82         }
83
84         if (ib_logo) {
85                 if (ib_displayas != IB_TEXTONLY) {
86                         wprintf("<div class=\"logo\"> <img "
87                                 "src=\"image&name=hello\" alt=\"&nbsp;\"> "
88                                 "</div>\n"
89                         );
90                 }
91                 wprintf("\n");
92         }
93
94         if (ib_citadel) if (ib_displayas != IB_TEXTONLY) wprintf(
95                 "<div class=\"logo_citadel\"> "
96                 "<a href=\"http://www.citadel.org\" "
97                 "title=\"%s\" target=\"aboutcit\"> "
98                 "<img "
99                 "src=\"static/citadel-logo.gif\" alt=\"%s\"></a> "
100                 "</div>\n",
101                 _("Find out more about Citadel"),
102                 _("CITADEL")
103         );
104
105         wprintf("<ul id=\"button\">\n");
106
107         wprintf("<li class=\"switch\"><a href=\"javascript:switch_to_room_list()\">");
108         wprintf(_("switch to room list"));
109         wprintf("</a></li>");
110
111         if (ib_summary) {
112                 wprintf("<li><a href=\"summary\" "
113                         "title=\"%s\" "
114                         ">", _("Your summary page")
115                 );
116                 if (ib_displayas != IB_TEXTONLY) {
117                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
118                                 "src=\"static/summscreen_32x.gif\">");
119                 }
120                 if (ib_displayas != IB_PICONLY) {
121                         wprintf(_("Summary"));
122                 }
123                 wprintf("</a></li>\n");
124         }
125
126         if (ib_inbox) {
127                 wprintf("<li>"
128                         "<a href=\"dotgoto?room=_MAIL_\" "
129                         "title=\"%s\" "
130                         ">",
131                         _("Go to your email inbox")
132                 );
133                 if (ib_displayas != IB_TEXTONLY) {
134                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
135                                 "src=\"static/privatemess_32x.gif\">");
136                 }
137                 if (ib_displayas != IB_PICONLY) {
138                         wprintf(_("Mail"));
139                         if (WC->new_mail != WC->remember_new_mail) {
140 /*
141                                 if (WC->new_mail > 0) {
142                                         wprintf(" <b>(%d)</b>", WC->new_mail);
143                                 }
144 */
145                                 WC->remember_new_mail = WC->new_mail;
146                         }
147                 }
148                 wprintf("</a></li>\n");
149         }
150
151         if (ib_calendar) {
152                 wprintf("<li>"
153                         "<a href=\"dotgoto?room=_CALENDAR_\" "
154                         "title=\"%s\" "
155                         ">",
156                         _("Go to your personal calendar")
157                 );
158                 if (ib_displayas != IB_TEXTONLY) {
159                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
160                         "src=\"static/calarea_32x.gif\">");
161                 }
162                 if (ib_displayas != IB_PICONLY) {
163                         wprintf(_("Calendar"));
164                 }
165                 wprintf("</a></li>\n");
166         }
167
168         if (ib_contacts) {
169                 wprintf("<li>"
170                         "<a href=\"dotgoto?room=_CONTACTS_\" "
171                         "title=\"%s\" "
172                         ">",
173                         _("Go to your personal address book")
174                 );
175                 if (ib_displayas != IB_TEXTONLY) {
176                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
177                         "src=\"static/viewcontacts_32x.gif\">");
178                 }
179                 if (ib_displayas != IB_PICONLY) {
180                         wprintf(_("Contacts"));
181                 }
182                 wprintf("</a></li>\n");
183         }
184
185         if (ib_notes) {
186                 wprintf("<li>"
187                         "<a href=\"dotgoto?room=_NOTES_\" "
188                         "title=\"%s\" "
189                         ">",
190                         _("Go to your personal notes")
191                 );
192                 if (ib_displayas != IB_TEXTONLY) {
193                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
194                         "src=\"static/storenotes_32x.gif\">");
195                 }
196                 if (ib_displayas != IB_PICONLY) {
197                         wprintf(_("Notes"));
198                 }
199                 wprintf("</a></li>\n");
200         }
201
202         if (ib_tasks)  {
203                 wprintf("<li>"
204                         "<a href=\"dotgoto?room=_TASKS_\" "
205                         "title=\"%s\" "
206                         ">",
207                         _("Go to your personal task list")
208                 );
209                 if (ib_displayas != IB_TEXTONLY) {
210                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
211                         "src=\"static/taskmanag_32x.gif\">");
212                 }
213                 if (ib_displayas != IB_PICONLY) {
214                         wprintf(_("Tasks"));
215                 }
216                 wprintf("</a></li>\n");
217         }
218
219         if (ib_rooms) {
220                 wprintf("<li>"
221                         "<a href=\"knrooms\" title=\"%s\" >",
222                         _("List all of your accessible rooms")
223                 );
224                 if (ib_displayas != IB_TEXTONLY) {
225                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
226                         "src=\"static/chatrooms_32x.gif\">");
227                 }
228                 if (ib_displayas != IB_PICONLY) {
229                         wprintf(_("Rooms"));
230                 }
231                 wprintf("</a></li>\n");
232         }
233
234         if (ib_users) {
235                 wprintf("<li>"
236                         "<a href=\"who\" title=\"%s\" "
237                         ">",
238                         _("See who is online right now")
239                 );
240                 if (ib_displayas != IB_TEXTONLY) {
241                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
242                         "src=\"static/usermanag_32x.gif\">");
243                 }
244                 if (ib_displayas != IB_PICONLY) {
245                         wprintf(_("Who is online?"));
246                 }
247                  
248                 wprintf("</a>\n");
249                 wprintf("<ul id=\"wholist\">");
250                 wprintf("</ul></li>\n");
251         }
252
253         if (ib_chat) {
254                 wprintf("<li>"
255                         "<a href=\"#\" onClick=\"window.open('chat', "
256                         "'ctdl_chat_window', "
257                         "'toolbar=no,location=no,directories=no,copyhistory=no,"
258                         "status=no,scrollbars=yes,resizable=yes');\""
259                         ">"
260                 );
261                 if (ib_displayas != IB_TEXTONLY) {
262                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
263                         "src=\"static/citadelchat_32x.gif\">");
264                 }
265                 if (ib_displayas != IB_PICONLY) {
266                         wprintf(_("Chat"));
267                 }
268                 wprintf("</a></li>\n");
269         }
270
271         if (ib_advanced) {
272                 wprintf("<li>"
273                         "<a href=\"display_main_menu\" "
274                         "title=\"%s\" "
275                         ">",
276                         _("Advanced Options Menu: Advanced Room commands, Account Info, and Chat")
277                 );
278                 if (ib_displayas != IB_TEXTONLY) {
279                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
280                         "src=\"static/advanpage2_32x.gif\">");
281                 }
282                 if (ib_displayas != IB_PICONLY) {
283                         wprintf(_("Advanced"));
284                 }
285                 wprintf("</a></li>\n");
286         }
287
288         if ((WC->axlevel >= 6) || (WC->is_room_aide)) {
289                 wprintf("<li>"
290                         "<a href=\"display_aide_menu\" "
291                         "title=\"%s\" "
292                         ">",
293                         _("Room and system administration functions")
294                 );
295                 if (ib_displayas != IB_TEXTONLY) {
296                         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
297                         "src=\"static/advanpage2_32x.gif\">");
298                 }
299                 if (ib_displayas != IB_PICONLY) {
300                         wprintf(_("Administration"));
301                 }
302                 wprintf("</a></li>\n");
303         }
304
305         wprintf("<li>"
306                 "<a href=\"termquit\" title=\"%s\" "
307                 "onClick=\"return confirm('%s');\">",
308                 _("Log off"),
309                 _("Log off now?")
310                 
311         );
312         if (ib_displayas != IB_TEXTONLY) {
313         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
314                 "src=\"static/logoff_32x.gif\">");
315         }
316         if (ib_displayas != IB_PICONLY) {
317                 wprintf(_("Log off"));
318         }
319         wprintf("</a></li>\n");
320
321         wprintf(
322                 "<li class=\"switch\">"
323                 "<a href=\"display_customize_iconbar\" "
324                 "title=\"%s\" "
325                 ">%s"
326                 "</a></li>\n",
327                 _("Customize this menu"),
328                 _("customize this menu")
329         );
330
331         wprintf("</ul>\n");
332
333         wprintf(
334                 "<script type=\"text/javascript\">                                      "
335                 " new Ajax.PeriodicalUpdater('wholist', 'wholist_section',             "
336                 "                            { method: 'get', frequency: 30 }  );       "
337                 "</script>                                                              \n"
338         );
339
340 }
341
342
343 /**
344  * \brief roomtree view of the iconbar
345  * If the user has toggled the icon bar over to a room list, here's where
346  * we generate its innerHTML...
347  */
348 void do_iconbar_roomlist(void) {
349         char iconbar[SIZ];
350         char buf[SIZ];
351         char key[SIZ], value[SIZ];
352         int i;
353
354         WC->current_iconbar = current_iconbar_roomlist;
355
356         /**
357          * The initialized values of these variables also happen to
358          * specify the default values for users who haven't customized
359          * their iconbars.  These should probably be set in a master
360          * configuration somewhere.
361          */
362         int ib_displayas = 0;   /* pictures and text, pictures, text */
363         int ib_logo = 0;        /* Site logo */
364         int ib_citadel = 1;     /* 'Powered by Citadel' logo */
365         /*
366          */
367
368         get_preference("iconbar", iconbar, sizeof iconbar);
369         for (i=0; i<num_tokens(iconbar, ','); ++i) {
370                 extract_token(buf, iconbar, i, ',', sizeof buf);
371                 extract_token(key, buf, 0, '=', sizeof key);
372                 extract_token(value, buf, 1, '=', sizeof value);
373
374                 if (!strcasecmp(key, "ib_displayas")) ib_displayas = atoi(value);
375                 if (!strcasecmp(key, "ib_logo")) ib_logo = atoi(value);
376                 if (!strcasecmp(key, "ib_citadel")) ib_citadel = atoi(value);
377         }
378
379         if (ib_logo) {
380                 if (ib_displayas != IB_TEXTONLY) {
381                         wprintf("<div class=\"logo\"> <img "
382                                 "src=\"image&name=hello\" alt=\"&nbsp;\"> "
383                                 "</div>\n"
384                         );
385                 }
386         }
387
388         if (ib_citadel) if (ib_displayas != IB_TEXTONLY) wprintf(
389                 "<div class=\"logo_citadel\"> "
390                 "<a href=\"http://www.citadel.org\" "
391                 "title=\"%s\" target=\"aboutcit\"> "
392                 "<img "
393                 "src=\"static/citadel-logo.gif\" alt=\"%s\"></a> "
394                 "</div>\n",
395                 _("Find out more about Citadel"),
396                 _("CITADEL")
397         );
398
399         wprintf("<ul id=\"button\">\n");
400
401         wprintf("<li class=\"switch\"><a href=\"javascript:switch_to_menu_buttons()\">");
402         wprintf(_("switch to menu"));
403         wprintf("</a></li>");
404
405         wprintf("<li>"
406                 "<a href=\"termquit\" title=\"%s\" "
407                 "onClick=\"return confirm('%s');\">",
408                 _("Log off"),
409                 _("Log off now?")
410                 
411         );
412         if (ib_displayas != IB_TEXTONLY) {
413         wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
414                 "src=\"static/logoff_32x.gif\">");
415         }
416         if (ib_displayas != IB_PICONLY) {
417                 wprintf(_("Log off"));
418         }
419         wprintf("</a></li>\n");
420
421         wprintf("</ul>\n");
422
423         /** embed the room list */
424         list_all_rooms_by_floor("iconbar");
425
426         wprintf("</div>\n");
427 }
428
429
430 /**
431  * \brief display a customized version of the iconbar
432  */
433 void display_customize_iconbar(void) {
434         char iconbar[SIZ];
435         char buf[SIZ];
436         char key[SIZ], value[SIZ];
437         int i;
438         int bar = 0;
439
440         /**
441          * The initialized values of these variables also happen to
442          * specify the default values for users who haven't customized
443          * their iconbars.  These should probably be set in a master
444          * configuration somewhere.
445          */
446         int ib_displayas = IB_PICTEXT;  /**< pictures and text, pictures, text */
447         int ib_logo = 0;        /**< Site logo */
448         int ib_summary = 1;     /**< Summary page icon */
449         int ib_inbox = 1;       /**< Inbox icon */
450         int ib_calendar = 1;    /**< Calendar icon */
451         int ib_contacts = 1;    /**< Contacts icon */
452         int ib_notes = 1;       /**< Notes icon */
453         int ib_tasks = 1;       /**< Tasks icon */
454         int ib_rooms = 1;       /**< Rooms icon */
455         int ib_users = 1;       /**< Users icon */
456         int ib_chat = 1;        /**< Chat icon */
457         int ib_advanced = 1;    /**< Advanced Options icon */
458         int ib_citadel = 1;     /**< 'Powered by Citadel' logo */
459         /*
460          */
461
462         get_preference("iconbar", iconbar, sizeof iconbar);
463         for (i=0; i<num_tokens(iconbar, ','); ++i) {
464                 extract_token(buf, iconbar, i, ',', sizeof buf);
465                 extract_token(key, buf, 0, '=', sizeof key);
466                 extract_token(value, buf, 1, '=', sizeof value);
467
468                 if (!strcasecmp(key, "ib_displayas")) ib_displayas = atoi(value);
469                 if (!strcasecmp(key, "ib_logo")) ib_logo = atoi(value);
470                 if (!strcasecmp(key, "ib_summary")) ib_summary = atoi(value);
471                 if (!strcasecmp(key, "ib_inbox")) ib_inbox = atoi(value);
472                 if (!strcasecmp(key, "ib_calendar")) ib_calendar = atoi(value);
473                 if (!strcasecmp(key, "ib_contacts")) ib_contacts = atoi(value);
474                 if (!strcasecmp(key, "ib_notes")) ib_notes = atoi(value);
475                 if (!strcasecmp(key, "ib_tasks")) ib_tasks = atoi(value);
476                 if (!strcasecmp(key, "ib_rooms")) ib_rooms = atoi(value);
477                 if (!strcasecmp(key, "ib_users")) ib_users = atoi(value);
478                 if (!strcasecmp(key, "ib_chat")) ib_chat = atoi(value);
479                 if (!strcasecmp(key, "ib_advanced")) ib_advanced = atoi(value);
480                 if (!strcasecmp(key, "ib_citadel")) ib_citadel = atoi(value);
481         }
482
483         output_headers(1, 1, 2, 0, 0, 0);
484         wprintf("<div id=\"banner\">\n"
485                 "<TABLE class=\"iconbar_banner\"><tr><td>"
486                 "<SPAN CLASS=\"titlebar\">");
487         wprintf(_("Customize the icon bar"));
488         wprintf("</SPAN>"
489                 "</td></tr></table>\n"
490                 "</div>\n<div id=\"content\">\n"
491         );
492
493         wprintf("<div class=\"fix_scrollbar_bug\">"
494                 "<table class=\"iconbar_background\"><tr><td>");
495
496         wprintf("<FORM METHOD=\"POST\" action=\"commit_iconbar\">\n");
497         wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
498
499         wprintf("<CENTER>");
500         wprintf(_("Display icons as:"));
501         wprintf(" ");
502         for (i=0; i<=2; ++i) {
503                 wprintf("<input type=\"radio\" name=\"ib_displayas\" value=\"%d\"", i);
504                 if (ib_displayas == i) wprintf(" CHECKED");
505                 wprintf(">");
506                 if (i == IB_PICTEXT)    wprintf(_("pictures and text"));
507                 if (i == IB_PICONLY)    wprintf(_("pictures only"));
508                 if (i == IB_TEXTONLY)   wprintf(_("text only"));
509                 wprintf("\n");
510         }
511         wprintf("<br /><br />\n");
512
513         wprintf(_("Select the icons you would like to see displayed "
514                 "in the 'icon bar' menu on the left side of the "
515                 "screen."));
516         wprintf("</CENTER><br />\n");
517
518         wprintf("<TABLE border=0 cellspacing=0 cellpadding=3 width=100%%>\n");
519
520         wprintf("<tr BGCOLOR=%s><td>"
521                 "<input type=\"checkbox\" name=\"ib_logo\" value=\"yes\" %s>"
522                 "</td><td>"
523                 "<img border=\"0\" width=\"48\" "
524                 "src=\"image&name=hello\" alt=\"&nbsp;\">"
525                 "</td><td>"
526                 "<b>%s</b><br />"
527                 "%s"
528                 "</td></tr>\n",
529                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
530                 (ib_logo ? "CHECKED" : ""),
531                 _("Site logo"),
532                 _("An icon describing this site")
533         );
534
535         wprintf("<tr bgcolor=%s><td>"
536                 "<input type=\"checkbox\" name=\"ib_summary\" value=\"yes\" %s>"
537                 "</td><td>"
538                 "<img border=\"0\" width=\"48\" height=\"48\" "
539                 "src=\"static/summscreen_48x.gif\" alt=\"&nbsp;\">"
540                 "</td><td>"
541                 "<b>%s</b><br />"
542                 "%s"
543                 "</td></tr>\n",
544                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
545                 (ib_summary ? "CHECKED" : ""),
546                 _("Summary"),
547                 _("Your summary page")
548         );
549
550         wprintf("<tr bgcolor=%s><td>"
551                 "<input type=\"checkbox\" name=\"ib_inbox\" value=\"yes\" %s>"
552                 "</td><td>"
553                 "<img border=\"0\" width=\"48\" height=\"48\" "
554                 "src=\"static/privatemess_48x.gif\" alt=\"&nbsp;\">"
555                 "</td><td>"
556                 "<b>%s</b><br />"
557                 "%s"
558                 "</td></tr>\n",
559                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
560                 (ib_inbox ? "CHECKED" : ""),
561                 _("Mail (inbox)"),
562                 _("A shortcut to your email Inbox")
563         );
564
565         wprintf("<tr bgcolor=%s><td>"
566                 "<input type=\"checkbox\" name=\"ib_contacts\" "
567                 "value=\"yes\" %s>"
568                 "</td><td>"
569                 "<img border=\"0\" width=\"48\" height=\"48\" "
570                 "src=\"static/viewcontacts_48x.gif\" alt=\"&nbsp;\">"
571                 "</td><td>"
572                 "<b>%s</b><br />"
573                 "%s"
574                 "</td></tr>\n",
575                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
576                 (ib_contacts ? "CHECKED" : ""),
577                 _("Contacts"),
578                 _("Your personal address book")
579         );
580
581         wprintf("<tr bgcolor=%s><td>"
582                 "<input type=\"checkbox\" name=\"ib_notes\" "
583                 "value=\"yes\" %s>"
584                 "</td><td>"
585                 "<img border=\"0\" width=\"48\" height=\"48\" "
586                 "src=\"static/storenotes_48x.gif\" alt=\"&nbsp;\">"
587                 "</td><td>"
588                 "<b>%s</b><br />"
589                 "%s"
590                 "</td></tr>\n",
591                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
592                 (ib_notes ? "CHECKED" : ""),
593                 _("Notes"),
594                 _("Your personal notes")
595         );
596
597 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
598         wprintf("<tr bgcolor=%s><td>"
599                 "<input type=\"checkbox\" name=\"ib_calendar\" "
600                 "value=\"yes\" %s>"
601                 "</td><td>"
602                 "<img border=\"0\" width=\"48\" height=\"48\" "
603                 "src=\"static/calarea_48x.gif\" alt=\"&nbsp;\">"
604                 "</td><td>"
605                 "<b>%s</b><br />"
606                 "%s"
607                 "</td></tr>\n",
608                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
609                 (ib_calendar ? "CHECKED" : ""),
610                 _("Calendar"),
611                 _("A shortcut to your personal calendar")
612         );
613
614         wprintf("<tr bgcolor=%s><td>"
615                 "<input type=\"checkbox\" name=\"ib_tasks\" value=\"yes\" %s>"
616                 "</td><td>"
617                 "<img border=\"0\" width=\"48\" height=\"48\" "
618                 "src=\"static/taskmanag_48x.gif\" alt=\"&nbsp;\">"
619                 "</td><td>"
620                 "<b>%s</b><br />"
621                 "%s"
622                 "</td></tr>\n",
623                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
624                 (ib_tasks ? "CHECKED" : ""),
625                 _("Tasks"),
626                 _("A shortcut to your personal task list")
627         );
628 #endif /* WEBCIT_WITH_CALENDAR_SERVICE */
629
630         wprintf("<tr bgcolor=%s><td>"
631                 "<input type=\"checkbox\" name=\"ib_rooms\" value=\"yes\" %s>"
632                 "</td><td>"
633                 "<img border=\"0\" width=\"48\" height=\"48\" "
634                 "src=\"static/chatrooms_48x.gif\" alt=\"&nbsp;\">"
635                 "</td><td>"
636                 "<b>%s</b><br />"
637                 "%s"
638                 "</td></tr>\n",
639                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
640                 (ib_rooms ? "CHECKED" : ""),
641                 _("Rooms"),
642                 _("Clicking this icon displays a list of all accessible "
643                 "rooms (or folders) available.")
644         );
645
646         wprintf("<tr bgcolor=%s><td>"
647                 "<input type=\"checkbox\" name=\"ib_users\" value=\"yes\" %s>"
648                 "</td><td>"
649                 "<img border=\"0\" width=\"48\" height=\"48\" "
650                 "src=\"static/usermanag_48x.gif\" alt=\"&nbsp;\">"
651                 "</td><td>"
652                 "<b>%s</b><br />"
653                 "%s"
654                 "</td></tr>\n",
655                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
656                 (ib_users ? "CHECKED" : ""),
657                 _("Who is online?"),
658                 _("Clicking this icon displays a list of all users "
659                 "currently logged in.")
660         );
661
662         wprintf("<tr bgcolor=%s><td>"
663                 "<input type=\"checkbox\" name=\"ib_chat\" value=\"yes\" %s>"
664                 "</td><td>"
665                 "<img border=\"0\" width=\"48\" height=\"48\" "
666                 "src=\"static/citadelchat_48x.gif\" alt=\"&nbsp;\">"
667                 "</td><td>"
668                 "<b>%s</b><br />"
669                 "%s"
670                 "</td></tr>\n",
671                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
672                 (ib_chat ? "CHECKED" : ""),
673                 _("Chat"),
674                 _("Clicking this icon enters real-time chat mode "
675                 "with other users in the same room.")
676                 
677         );
678
679         wprintf("<tr bgcolor=%s><td>"
680                 "<input type=\"checkbox\" name=\"ib_advanced\" "
681                 "value=\"yes\" %s>"
682                 "</td><td>"
683                 "<img border=\"0\" width=\"48\" height=\"48\" "
684                 "src=\"static/advanpage2_48x.gif\" alt=\"&nbsp;\">"
685                 "</td><td>"
686                 "<b>%s</b><br />"
687                 "%s"
688                 "</td></tr>\n",
689                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
690                 (ib_advanced ? "CHECKED" : ""),
691                 _("Advanced options"),
692                 _("Access to the complete menu of Citadel functions.")
693
694         );
695
696         wprintf("<tr bgcolor=%s><td>"
697                 "<input type=\"checkbox\" name=\"ib_citadel\" "
698                 "value=\"yes\" %s>"
699                 "</td><td>"
700                 "<img border=\"0\" width=\"48\" height=\"48\" "
701                 "src=\"static/citadel-logo.gif\" alt=\"&nbsp;\">"
702                 "</td><td>"
703                 "<b>%s</b><br />"
704                 "%s"
705                 "</td></tr>\n",
706                 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
707                 (ib_citadel ? "CHECKED" : ""),
708                 _("Citadel logo"),
709                 _("Displays the 'Powered by Citadel' icon")
710         );
711
712         wprintf("</table><br />\n"
713                 "<CENTER>"
714                 "<input type=\"submit\" name=\"ok_button\" value=\"%s\">"
715                 "&nbsp;"
716                 "<input type=\"submit\" name=\"cancel_button\" value=\"%s\">"
717                 "</CENTER></FORM>\n",
718                 _("Save changes"),
719                 _("Cancel")
720         );
721
722         wprintf("</td></tr></table></div>\n");
723         wDumpContent(2);
724 }
725
726 /**
727  * \brief commit the changes of an edited iconbar ????
728  */
729 void commit_iconbar(void) {
730         char iconbar[SIZ];
731         int i;
732
733         char *boxen[] = {
734                 "ib_logo",
735                 "ib_summary",
736                 "ib_inbox",
737                 "ib_calendar",
738                 "ib_contacts",
739                 "ib_notes",
740                 "ib_tasks",
741                 "ib_rooms",
742                 "ib_users",
743                 "ib_chat",
744                 "ib_advanced",
745                 "ib_logoff",
746                 "ib_citadel"
747         };
748
749         if (strlen(bstr("ok_button")) == 0) {
750                 display_main_menu();
751                 return;
752         }
753
754         sprintf(iconbar, "ib_displayas=%d", atoi(bstr("ib_displayas")));
755
756         for (i=0; i<(sizeof(boxen)/sizeof(char *)); ++i) {
757                 sprintf(&iconbar[strlen(iconbar)], ",%s=", boxen[i]);
758                 if (!strcasecmp(bstr(boxen[i]), "yes")) {
759                         sprintf(&iconbar[strlen(iconbar)], "1");
760                 }
761                 else {
762                         sprintf(&iconbar[strlen(iconbar)], "0");
763                 }
764         }
765
766         set_preference("iconbar", iconbar, 1);
767
768         output_headers(1, 1, 0, 0, 0, 0);
769         wprintf(
770                 "<center><table border=1 bgcolor=\"#ffffff\"><tr><td>"
771                 "<img src=\"static/advanpage2_48x.gif\">"
772                 "&nbsp;");
773         wprintf(_("Your icon bar has been updated.  Please select any of its "
774                 "choices to continue."));
775         wprintf("</td></tr></table>\n");
776         wDumpContent(2);
777 }
778
779
780
781 /*@}*/