]> code.citadel.org Git - citadel.git/blobdiff - webcit/iconbar.c
* move some more vars from the session context to strbuf (the use of StrBufAppendTemp...
[citadel.git] / webcit / iconbar.c
index fe9699816cca66ff26f7470c15904615979dfe8b..ee216df1df16947bcbcaafbd0819309d10a8a1a0 100644 (file)
 #define IB_TEXTONLY    2 /**< just text */
 
 
-/**
- * \brief draw the icon bar?????
+void do_iconbar(void);
+void do_iconbar_roomlist(void);
+
+/*
+ * Render the left side iconbar
  */
 void do_selected_iconbar(void) {
        if (WC->current_iconbar == current_iconbar_roomlist) {
@@ -25,9 +28,9 @@ void do_selected_iconbar(void) {
        }
 }
 
-void DontDeleteThis(void *Data){};
+void DontDeleteThis(void *Data){}
 
-#define IconbarIsEnabled(a, b) IconbarIsENABLED(a, sizeof(a), b)
+#define IconbarIsEnabled(a, b) IconbarIsENABLED(a, sizeof(a) - 1, b)
 
 long IconbarIsENABLED(const char *key, size_t keylen, long defval)
 {
@@ -39,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", Prefstr);
+       snprintf(nbuf, sizeof(nbuf), "%ld", (long)Prefstr);
        return nbuf;
 }
+#endif
 
 void LoadIconSettings(void)
 {
-       struct wcsession *WCC = WC;
-       StrBuf *iconbar;
-       StrBuf *buf = NewStrBuf();;
-       StrBuf *key = NewStrBuf();
+       wcsession *WCC = WC;
+       StrBuf *iconbar = NULL;
+       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);
@@ -76,8 +83,10 @@ void LoadIconSettings(void)
                            (void*)val, DontDeleteThis);
                }
        }
-       printf("-----------icon-------------------\n");
+
+#ifdef DBG_ICONBAR_HASH
        dbg_PrintHash(WCC->IconBarSetttings, PrintInt, NULL);
+#endif
 
        FreeStrBuf(&key);
        FreeStrBuf(&buf);
@@ -88,10 +97,10 @@ void LoadIconSettings(void)
  * \brief draw the icon bar???
  */
 void do_iconbar(void) {
-       int ib_displayas = 0;   /**< pictures and text, pictures, text */
+       int ib_displayas = IB_PICTEXT;  /**< pictures and text, pictures, text */
 
        LoadIconSettings();
-       ib_displayas = IconbarIsEnabled("ib_displayas", 0);
+       ib_displayas = IconbarIsEnabled("ib_displayas", IB_PICTEXT);
 
 /** Site logo */
        if (IconbarIsEnabled("ib_logo", 0)) {
@@ -255,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")
                );
@@ -297,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")
@@ -314,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")
@@ -357,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"
+               );
        }
 }
 
@@ -373,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;
 
@@ -382,11 +391,10 @@ void do_iconbar_roomlist(void) {
         * their iconbars.  These should probably be set in a master
         * configuration somewhere.
         */
-       int ib_displayas;
 
        LoadIconSettings();
 
-       ib_displayas = IconbarIsEnabled("ib_displayas", 0);     /* pictures and text, pictures, text */
+       ib_displayas = IconbarIsEnabled("ib_displayas", IB_PICTEXT);    /* pictures and text, pictures, text */
 
 /** Site logo */
        if (IconbarIsEnabled("ib_logo", 0)) {
@@ -790,10 +798,36 @@ void commit_iconbar(void) {
                "choices to continue."));
        wprintf("</td></tr></table>\n");
        wDumpContent(2);
-       printf("-----------icon-------------------\n");
+#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)
+{
+       WebcitAddUrlHandler(HKEY("iconbar_ajax_menu"), do_iconbar, AJAX);
+       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);
+
+}
+
 
 /*@}*/