]> code.citadel.org Git - citadel.git/blobdiff - webcit/roomops.c
* embed_view_o_matic(): rest in pieces.
[citadel.git] / webcit / roomops.c
index f1488411e1745c5c48c6e9b6a9acff626d972d71..ad90f2d3ad9d580deb9e78fc740b65ba41de92f2 100644 (file)
@@ -247,46 +247,6 @@ void zapped_list(void)
        wDumpContent(1);
 }
 
-/*
- * Display the current view and offer an option to change it
- */
-void embed_view_o_matic(StrBuf *Target, WCTemplputParams *TP)
-{
-       int i;
-
-       wc_printf("<form name=\"viewomatic\" action=\"changeview\">\n");
-       wc_printf("\t<div style=\"display: inline;\">\n\t<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
-       wc_printf("<label for=\"view_name\">");
-       wc_printf(_("View as:"));
-       wc_printf("</label> "
-               "<select name=\"newview\" size=\"1\" "
-               "id=\"view_name\" class=\"selectbox\" "
-               "OnChange=\"location.href=viewomatic.newview.options"
-               "[selectedIndex].value\">\n");
-
-       for (i=0; i<(sizeof viewdefs / sizeof (char *)); ++i) {
-               /*
-                * Only offer the views that make sense, given the default
-                * view for the room.  For example, don't offer a Calendar
-                * view in a non-Calendar room.
-                */
-               if (
-                       (i == WC->CurRoom.view)
-                       ||      (i == WC->CurRoom.defview)                      /* default */
-                       ||      ( (i == 0) && (WC->CurRoom.defview == 1) )      /* mail or bulletin */
-                       ||      ( (i == 1) && (WC->CurRoom.defview == 0) )      /* mail or bulletin */
-                       /* ||   ( (i == 7) && (WC->CurRoom.defview == 3) )      (calendar list temporarily disabled) */
-                       ) {
-
-                       wc_printf("<option %s value=\"changeview?view=%d\">",
-                               ((i == WC->CurRoom.view) ? "selected" : ""),
-                               i );
-                       escputs(viewdefs[i]);
-                       wc_printf("</option>\n");
-               }
-       }
-       wc_printf("</select></div></form>\n");
-}
 
 
 
@@ -341,29 +301,6 @@ void embed_room_banner(char *got, int navbar_style) {
        WC->new_mail = extract_int(&got[4], 9);
        WC->CurRoom.view = extract_int(&got[4], 11);
 
-       /* Is this a directory room and does it contain files and how many? */
-       if ((WC->CurRoom.QRFlags & QR_DIRECTORY) && (WC->CurRoom.QRFlags & QR_VISDIR))
-       {
-               serv_puts("RDIR");
-               serv_getln(buf2, sizeof buf2);
-               if (buf2[0] == '1') while (serv_getln(buf2, sizeof buf2), strcmp(buf2, "000"))
-                                           file_count++;
-               snprintf (with_files, sizeof with_files, 
-                         "; <a href=\"do_template?template=files\"> %d %s </a>", 
-                         file_count, 
-                         ((file_count>1) || (file_count == 0)  ? _("files") : _("file")));
-       }
-       else
-               strcpy (with_files, "");
-       
-       svprintf(HKEY("NUMMSGS"), WCS_STRING,
-                _("%d new of %d messages%s"),
-                extract_int(&got[4], 1),
-                extract_int(&got[4], 2),
-                with_files
-               );
-       svcallback("VIEWOMATIC", embed_view_o_matic); 
        do_template("roombanner", NULL);
        /* roombanner contains this for mobile */
        if (navbar_style != navbar_none && (WC->is_mobile < 1)) { 
@@ -1132,6 +1069,25 @@ void tmplput_CurrentRoomViewString(StrBuf *Target, WCTemplputParams *TP)
        FreeStrBuf(&Buf);
 }
 
+void tmplput_RoomViewString(StrBuf *Target, WCTemplputParams *TP) 
+{
+       long CheckThis;
+       StrBuf *Buf;
+
+       CheckThis = GetTemplateTokenNumber(Target, TP, 0, 0);
+       if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS))
+       {
+               LogTemplateError(Target, "Token", ERR_PARM2, TP,
+                                "Roomview [%ld] not valid\n", 
+                                CheckThis);
+               return;
+       }
+
+       Buf = NewStrBufPlain(_(viewdefs[CheckThis]), -1);
+       StrBufAppendTemplate(Target, TP, Buf, 0);
+       FreeStrBuf(&Buf);
+}
+
 
 /*
  * goto next room
@@ -3571,7 +3527,8 @@ InitModule_ROOMOPS
        RegisterNamespace("THISROOM:ORDER", 0, 0, tmplput_CurrentRoomOrder, NULL, CTX_NONE);
        RegisterNamespace("THISROOM:DEFAULT_VIEW", 0, 0, tmplput_CurrentRoomDefView, NULL, CTX_NONE);
        RegisterConditional(HKEY("COND:THISROOM:HAVE_VIEW"), 0, ConditionalThisRoomHaveView, CTX_NONE);
-       RegisterNamespace("THISROOM:VIEW_STRING", 0, 0, tmplput_CurrentRoomViewString, NULL, CTX_NONE);
+       RegisterNamespace("THISROOM:VIEW_STRING", 0, 1, tmplput_CurrentRoomViewString, NULL, CTX_NONE);
+       RegisterNamespace("ROOM:VIEW_STRING", 1, 2, tmplput_RoomViewString, NULL, CTX_NONE);
 
        RegisterNamespace("THISROOM:INFOTEXT", 1, 2, tmplput_CurrentRoomInfoText, NULL, CTX_NONE);
        RegisterConditional(HKEY("COND:THISROOM:ORDER"), 0, ConditionalThisRoomOrder, CTX_NONE);