* move some more vars from the session context to strbuf (the use of StrBufAppendTemp...
[citadel.git] / webcit / iconbar.c
index bbc0b9f3115c4ca44051169eed806db258cb28b8..ee216df1df16947bcbcaafbd0819309d10a8a1a0 100644 (file)
@@ -16,8 +16,8 @@
 void do_iconbar(void);
 void do_iconbar_roomlist(void);
 
-/**
- * \brief draw the icon bar?????
+/*
+ * Render the left side iconbar
  */
 void do_selected_iconbar(void) {
        if (WC->current_iconbar == current_iconbar_roomlist) {
@@ -28,7 +28,7 @@ void do_selected_iconbar(void) {
        }
 }
 
-void DontDeleteThis(void *Data){};
+void DontDeleteThis(void *Data){}
 
 #define IconbarIsEnabled(a, b) IconbarIsENABLED(a, sizeof(a) - 1, b)
 
@@ -42,22 +42,26 @@ long IconbarIsENABLED(const char *key, size_t keylen, long defval)
                return defval;
 }
 
+#ifdef DBG_ICONBAR_HASH
 static char nbuf[32];
 inline const char *PrintInt(void *Prefstr)
 {
        snprintf(nbuf, sizeof(nbuf), "%ld", (long)Prefstr);
        return nbuf;
 }
+#endif
 
 void LoadIconSettings(void)
 {
-       struct wcsession *WCC = WC;
+       wcsession *WCC = WC;
        StrBuf *iconbar = NULL;
-       StrBuf *buf = NewStrBuf();;
-       StrBuf *key = NewStrBuf();
+       StrBuf *buf;
+       StrBuf *key;
        long val;
        int i, nTokens;
 
+       buf = NewStrBuf();;
+       key = NewStrBuf();
        WCC->current_iconbar = current_iconbar_menu;
        if (WCC->IconBarSetttings == NULL)
                WCC->IconBarSetttings = NewHash(1, NULL);
@@ -79,7 +83,10 @@ void LoadIconSettings(void)
                            (void*)val, DontDeleteThis);
                }
        }
+
+#ifdef DBG_ICONBAR_HASH
        dbg_PrintHash(WCC->IconBarSetttings, PrintInt, NULL);
+#endif
 
        FreeStrBuf(&key);
        FreeStrBuf(&buf);
@@ -257,7 +264,7 @@ void do_iconbar(void) {
 /** Users icon */
        if (IconbarIsEnabled("ib_users", 1)) {
                wprintf("<li>"
-                       "<a href=\"who\" title=\"%s\" "
+                       "<a href=\"do_template?template=who\" title=\"%s\" "
                        ">",
                        _("See who is online right now")
                );
@@ -299,7 +306,7 @@ void do_iconbar(void) {
 /** Advanced Options icon */
        if (IconbarIsEnabled("ib_advanced", 1)) {
                wprintf("<li>"
-                       "<a href=\"display_main_menu\" "
+                       "<a href=\"do_template?template=display_main_menu\" "
                        "title=\"%s\" "
                        ">",
                        _("Advanced Options Menu: Advanced Room commands, Account Info, and Chat")
@@ -316,7 +323,7 @@ void do_iconbar(void) {
 
        if ((WC->axlevel >= 6) || (WC->is_room_aide)) {
                wprintf("<li>"
-                       "<a href=\"display_aide_menu\" "
+                       "<a href=\"do_template?template=display_aide_menu\" "
                        "title=\"%s\" "
                        ">",
                        _("Room and system administration functions")
@@ -359,12 +366,11 @@ void do_iconbar(void) {
 
        wprintf("</ul>\n");
 
-       if (IconbarIsEnabled("ib_users", 0)) {
-               wprintf(
-                       "<script type=\"text/javascript\"> "
-                       " new Ajax.PeriodicalUpdater('wholist', 'wholist_section', { method: 'get', frequency: 30 } );"
-                       "</script> \n"
-                       );
+       if (IconbarIsEnabled("ib_users", 0) == 2) {
+               StrBufAppendPrintf(WC->trailing_javascript,
+                       "new Ajax.PeriodicalUpdater('wholist', 'do_template?template=wholist_section', "
+                       "{ method: 'get', frequency: 30 } );    \n"
+               );
        }
 }
 
@@ -375,6 +381,7 @@ void do_iconbar(void) {
  * we generate its innerHTML...
  */
 void do_iconbar_roomlist(void) {
+       int ib_displayas;
                                
        WC->current_iconbar = current_iconbar_roomlist;
 
@@ -384,7 +391,6 @@ void do_iconbar_roomlist(void) {
         * their iconbars.  These should probably be set in a master
         * configuration somewhere.
         */
-       int ib_displayas;
 
        LoadIconSettings();
 
@@ -792,10 +798,25 @@ void commit_iconbar(void) {
                "choices to continue."));
        wprintf("</td></tr></table>\n");
        wDumpContent(2);
+#ifdef DBG_ICONBAR_HASH
        dbg_PrintHash(WC->IconBarSetttings, PrintInt, NULL);
+#endif
 }
 
 
+void tmplput_iconbar(StrBuf *Target, WCTemplputParams *TP)
+{
+       wcsession *WCC = WC;
+       
+       if ((WCC != NULL) && (WCC->logged_in)) {
+               wprintf("<div id=\"iconbar\">");
+               do_selected_iconbar();
+               /** check for instant messages (these display in a new window) */
+               page_popup();
+               wprintf("</div>");
+       }
+}
+
 void 
 InitModule_ICONBAR
 (void)
@@ -804,6 +825,8 @@ InitModule_ICONBAR
        WebcitAddUrlHandler(HKEY("iconbar_ajax_rooms"), do_iconbar_roomlist, AJAX);
        WebcitAddUrlHandler(HKEY("display_customize_iconbar"), display_customize_iconbar, 0);
        WebcitAddUrlHandler(HKEY("commit_iconbar"), commit_iconbar, 0);
+       RegisterNamespace("ICONBAR", 0, 0, tmplput_iconbar, 0);
+
 }