5 * \defgroup IconBar Displays and customizes the iconbar.
6 * \ingroup MenuInfrastructure
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 */
19 * \brief draw the icon bar?????
21 void do_selected_iconbar(void) {
22 if (WC->current_iconbar == current_iconbar_roomlist) {
23 do_iconbar_roomlist();
31 * \brief draw the icon bar???
33 void do_iconbar(void) {
36 char key[SIZ], value[SIZ];
39 WC->current_iconbar = current_iconbar_menu;
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.
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 */
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);
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);
85 if (ib_displayas != IB_TEXTONLY) {
86 wprintf("<div class=\"logo\"> <img "
87 "src=\"image&name=hello\" alt=\" \"> "
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\"> "
99 "src=\"static/citadel-logo.gif\" alt=\"%s\"></a> "
101 _("Find out more about Citadel"),
105 wprintf("<ul id=\"button\">\n");
107 wprintf("<li class=\"switch\"><a href=\"javascript:switch_to_room_list()\">");
108 wprintf(_("switch to room list"));
109 wprintf("</a></li>");
112 wprintf("<li><a href=\"summary\" "
114 ">", _("Your summary page")
116 if (ib_displayas != IB_TEXTONLY) {
117 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
118 "src=\"static/summscreen_32x.gif\">");
120 if (ib_displayas != IB_PICONLY) {
121 wprintf(_("Summary"));
123 wprintf("</a></li>\n");
128 "<a href=\"dotgoto?room=_MAIL_\" "
131 _("Go to your email inbox")
133 if (ib_displayas != IB_TEXTONLY) {
134 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
135 "src=\"static/privatemess_32x.gif\">");
137 if (ib_displayas != IB_PICONLY) {
139 if (WC->new_mail != WC->remember_new_mail) {
141 if (WC->new_mail > 0) {
142 wprintf(" <b>(%d)</b>", WC->new_mail);
145 WC->remember_new_mail = WC->new_mail;
148 wprintf("</a></li>\n");
153 "<a href=\"dotgoto?room=_CALENDAR_\" "
156 _("Go to your personal calendar")
158 if (ib_displayas != IB_TEXTONLY) {
159 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
160 "src=\"static/calarea_32x.gif\">");
162 if (ib_displayas != IB_PICONLY) {
163 wprintf(_("Calendar"));
165 wprintf("</a></li>\n");
170 "<a href=\"dotgoto?room=_CONTACTS_\" "
173 _("Go to your personal address book")
175 if (ib_displayas != IB_TEXTONLY) {
176 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
177 "src=\"static/viewcontacts_32x.gif\">");
179 if (ib_displayas != IB_PICONLY) {
180 wprintf(_("Contacts"));
182 wprintf("</a></li>\n");
187 "<a href=\"dotgoto?room=_NOTES_\" "
190 _("Go to your personal notes")
192 if (ib_displayas != IB_TEXTONLY) {
193 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
194 "src=\"static/storenotes_32x.gif\">");
196 if (ib_displayas != IB_PICONLY) {
199 wprintf("</a></li>\n");
204 "<a href=\"dotgoto?room=_TASKS_\" "
207 _("Go to your personal task list")
209 if (ib_displayas != IB_TEXTONLY) {
210 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
211 "src=\"static/taskmanag_32x.gif\">");
213 if (ib_displayas != IB_PICONLY) {
216 wprintf("</a></li>\n");
221 "<a href=\"knrooms\" title=\"%s\" >",
222 _("List all of your accessible rooms")
224 if (ib_displayas != IB_TEXTONLY) {
225 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
226 "src=\"static/chatrooms_32x.gif\">");
228 if (ib_displayas != IB_PICONLY) {
231 wprintf("</a></li>\n");
236 "<a href=\"who\" title=\"%s\" "
238 _("See who is online right now")
240 if (ib_displayas != IB_TEXTONLY) {
241 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
242 "src=\"static/usermanag_32x.gif\">");
244 if (ib_displayas != IB_PICONLY) {
245 wprintf(_("Who is online?"));
249 wprintf("<ul id=\"wholist\">");
250 wprintf("</ul></li>\n");
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');\""
261 if (ib_displayas != IB_TEXTONLY) {
262 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
263 "src=\"static/citadelchat_32x.gif\">");
265 if (ib_displayas != IB_PICONLY) {
268 wprintf("</a></li>\n");
273 "<a href=\"display_main_menu\" "
276 _("Advanced Options Menu: Advanced Room commands, Account Info, and Chat")
278 if (ib_displayas != IB_TEXTONLY) {
279 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
280 "src=\"static/advanpage2_32x.gif\">");
282 if (ib_displayas != IB_PICONLY) {
283 wprintf(_("Advanced"));
285 wprintf("</a></li>\n");
288 if ((WC->axlevel >= 6) || (WC->is_room_aide)) {
290 "<a href=\"display_aide_menu\" "
293 _("Room and system administration functions")
295 if (ib_displayas != IB_TEXTONLY) {
296 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
297 "src=\"static/advanpage2_32x.gif\">");
299 if (ib_displayas != IB_PICONLY) {
300 wprintf(_("Administration"));
302 wprintf("</a></li>\n");
306 "<a href=\"termquit\" title=\"%s\" "
307 "onClick=\"return confirm('%s');\">",
312 if (ib_displayas != IB_TEXTONLY) {
313 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
314 "src=\"static/logoff_32x.gif\">");
316 if (ib_displayas != IB_PICONLY) {
317 wprintf(_("Log off"));
319 wprintf("</a></li>\n");
322 "<li class=\"switch\">"
323 "<a href=\"display_customize_iconbar\" "
327 _("Customize this menu"),
328 _("customize this menu")
334 "<script type=\"text/javascript\"> "
335 " new Ajax.PeriodicalUpdater('wholist', 'wholist_section', "
336 " { method: 'get', frequency: 30 } ); "
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...
348 void do_iconbar_roomlist(void) {
351 char key[SIZ], value[SIZ];
354 WC->current_iconbar = current_iconbar_roomlist;
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.
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 */
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);
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);
380 if (ib_displayas != IB_TEXTONLY) {
381 wprintf("<div class=\"logo\"> <img "
382 "src=\"image&name=hello\" alt=\" \"> "
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\"> "
393 "src=\"static/citadel-logo.gif\" alt=\"%s\"></a> "
395 _("Find out more about Citadel"),
399 wprintf("<ul id=\"button\">\n");
401 wprintf("<li class=\"switch\"><a href=\"javascript:switch_to_menu_buttons()\">");
402 wprintf(_("switch to menu"));
403 wprintf("</a></li>");
406 "<a href=\"termquit\" title=\"%s\" "
407 "onClick=\"return confirm('%s');\">",
412 if (ib_displayas != IB_TEXTONLY) {
413 wprintf("<img border=\"0\" width=\"32\" height=\"32\" "
414 "src=\"static/logoff_32x.gif\">");
416 if (ib_displayas != IB_PICONLY) {
417 wprintf(_("Log off"));
419 wprintf("</a></li>\n");
423 /** embed the room list */
424 list_all_rooms_by_floor("iconbar");
431 * \brief display a customized version of the iconbar
433 void display_customize_iconbar(void) {
436 char key[SIZ], value[SIZ];
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.
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 */
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);
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);
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"));
489 "</td></tr></table>\n"
490 "</div>\n<div id=\"content\">\n"
493 wprintf("<div class=\"fix_scrollbar_bug\">"
494 "<table class=\"iconbar_background\"><tr><td>");
496 wprintf("<FORM METHOD=\"POST\" action=\"commit_iconbar\">\n");
497 wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
500 wprintf(_("Display icons as:"));
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");
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"));
511 wprintf("<br /><br />\n");
513 wprintf(_("Select the icons you would like to see displayed "
514 "in the 'icon bar' menu on the left side of the "
516 wprintf("</CENTER><br />\n");
518 wprintf("<TABLE border=0 cellspacing=0 cellpadding=3 width=100%%>\n");
520 wprintf("<tr BGCOLOR=%s><td>"
521 "<input type=\"checkbox\" name=\"ib_logo\" value=\"yes\" %s>"
523 "<img border=\"0\" width=\"48\" "
524 "src=\"image&name=hello\" alt=\" \">"
529 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
530 (ib_logo ? "CHECKED" : ""),
532 _("An icon describing this site")
535 wprintf("<tr bgcolor=%s><td>"
536 "<input type=\"checkbox\" name=\"ib_summary\" value=\"yes\" %s>"
538 "<img border=\"0\" width=\"48\" height=\"48\" "
539 "src=\"static/summscreen_48x.gif\" alt=\" \">"
544 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
545 (ib_summary ? "CHECKED" : ""),
547 _("Your summary page")
550 wprintf("<tr bgcolor=%s><td>"
551 "<input type=\"checkbox\" name=\"ib_inbox\" value=\"yes\" %s>"
553 "<img border=\"0\" width=\"48\" height=\"48\" "
554 "src=\"static/privatemess_48x.gif\" alt=\" \">"
559 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
560 (ib_inbox ? "CHECKED" : ""),
562 _("A shortcut to your email Inbox")
565 wprintf("<tr bgcolor=%s><td>"
566 "<input type=\"checkbox\" name=\"ib_contacts\" "
569 "<img border=\"0\" width=\"48\" height=\"48\" "
570 "src=\"static/viewcontacts_48x.gif\" alt=\" \">"
575 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
576 (ib_contacts ? "CHECKED" : ""),
578 _("Your personal address book")
581 wprintf("<tr bgcolor=%s><td>"
582 "<input type=\"checkbox\" name=\"ib_notes\" "
585 "<img border=\"0\" width=\"48\" height=\"48\" "
586 "src=\"static/storenotes_48x.gif\" alt=\" \">"
591 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
592 (ib_notes ? "CHECKED" : ""),
594 _("Your personal notes")
597 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
598 wprintf("<tr bgcolor=%s><td>"
599 "<input type=\"checkbox\" name=\"ib_calendar\" "
602 "<img border=\"0\" width=\"48\" height=\"48\" "
603 "src=\"static/calarea_48x.gif\" alt=\" \">"
608 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
609 (ib_calendar ? "CHECKED" : ""),
611 _("A shortcut to your personal calendar")
614 wprintf("<tr bgcolor=%s><td>"
615 "<input type=\"checkbox\" name=\"ib_tasks\" value=\"yes\" %s>"
617 "<img border=\"0\" width=\"48\" height=\"48\" "
618 "src=\"static/taskmanag_48x.gif\" alt=\" \">"
623 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
624 (ib_tasks ? "CHECKED" : ""),
626 _("A shortcut to your personal task list")
628 #endif /* WEBCIT_WITH_CALENDAR_SERVICE */
630 wprintf("<tr bgcolor=%s><td>"
631 "<input type=\"checkbox\" name=\"ib_rooms\" value=\"yes\" %s>"
633 "<img border=\"0\" width=\"48\" height=\"48\" "
634 "src=\"static/chatrooms_48x.gif\" alt=\" \">"
639 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
640 (ib_rooms ? "CHECKED" : ""),
642 _("Clicking this icon displays a list of all accessible "
643 "rooms (or folders) available.")
646 wprintf("<tr bgcolor=%s><td>"
647 "<input type=\"checkbox\" name=\"ib_users\" value=\"yes\" %s>"
649 "<img border=\"0\" width=\"48\" height=\"48\" "
650 "src=\"static/usermanag_48x.gif\" alt=\" \">"
655 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
656 (ib_users ? "CHECKED" : ""),
658 _("Clicking this icon displays a list of all users "
659 "currently logged in.")
662 wprintf("<tr bgcolor=%s><td>"
663 "<input type=\"checkbox\" name=\"ib_chat\" value=\"yes\" %s>"
665 "<img border=\"0\" width=\"48\" height=\"48\" "
666 "src=\"static/citadelchat_48x.gif\" alt=\" \">"
671 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
672 (ib_chat ? "CHECKED" : ""),
674 _("Clicking this icon enters real-time chat mode "
675 "with other users in the same room.")
679 wprintf("<tr bgcolor=%s><td>"
680 "<input type=\"checkbox\" name=\"ib_advanced\" "
683 "<img border=\"0\" width=\"48\" height=\"48\" "
684 "src=\"static/advanpage2_48x.gif\" alt=\" \">"
689 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
690 (ib_advanced ? "CHECKED" : ""),
691 _("Advanced options"),
692 _("Access to the complete menu of Citadel functions.")
696 wprintf("<tr bgcolor=%s><td>"
697 "<input type=\"checkbox\" name=\"ib_citadel\" "
700 "<img border=\"0\" width=\"48\" height=\"48\" "
701 "src=\"static/citadel-logo.gif\" alt=\" \">"
706 ((bar = 1 - bar), (bar ? "\"#CCCCCC\"" : "\"#FFFFFF\"")),
707 (ib_citadel ? "CHECKED" : ""),
709 _("Displays the 'Powered by Citadel' icon")
712 wprintf("</table><br />\n"
714 "<input type=\"submit\" name=\"ok_button\" value=\"%s\">"
716 "<input type=\"submit\" name=\"cancel_button\" value=\"%s\">"
717 "</CENTER></FORM>\n",
722 wprintf("</td></tr></table></div>\n");
727 * \brief commit the changes of an edited iconbar ????
729 void commit_iconbar(void) {
749 if (strlen(bstr("ok_button")) == 0) {
754 sprintf(iconbar, "ib_displayas=%d", atoi(bstr("ib_displayas")));
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");
762 sprintf(&iconbar[strlen(iconbar)], "0");
766 set_preference("iconbar", iconbar, 1);
768 output_headers(1, 1, 0, 0, 0, 0);
770 "<center><table border=1 bgcolor=\"#ffffff\"><tr><td>"
771 "<img src=\"static/advanpage2_48x.gif\">"
773 wprintf(_("Your icon bar has been updated. Please select any of its "
774 "choices to continue."));
775 wprintf("</td></tr></table>\n");