]> code.citadel.org Git - citadel.git/blobdiff - webcit/roomops.c
* remove old wiki navbar code
[citadel.git] / webcit / roomops.c
index a68f896f29291792e4cdaae1a783de9f7fd83c1e..8217b2a1ed984c8fcaf99ca5278e47417c267934 100644 (file)
@@ -173,257 +173,7 @@ void embed_room_banner(void)
        if (WC->is_mobile)
                return;
 
-
-       wc_printf("<div id=\"navbar\"><ul>");
-
-       wc_printf(
-               "<li class=\"ungoto\">"
-               "<a href=\"ungoto\">"
-               "<img src=\"static/ungoto2_24x.gif\" alt=\"\" width=\"24\" height=\"24\">"
-               "<span class=\"navbar_link\">%s</span></A>"
-               "</li>\n", _("Ungoto")
-               );
-       
-       if (WC->CurRoom.view == VIEW_BBS) {
-               wc_printf(
-                       "<li class=\"newmess\">"
-                       "<a href=\"readnew\">"
-                       "<img src=\"static/newmess2_24x.gif\" alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">%s</span></A>"
-                       "</li>\n", _("Read new messages")
-                       );
-       }
-
-       switch(WC->CurRoom.view) {
-       case VIEW_ADDRESSBOOK:
-               wc_printf(
-                       "<li class=\"viewcontacts\">"
-                       "<a href=\"readfwd\">"
-                       "<img src=\"static/viewcontacts_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("View contacts")
-                       );
-               wc_printf(
-                       "<li class=\"addnewcontact\">"
-                       "<a href=\"display_enter\">"
-                       "<img src=\"static/addnewcontact_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Add new contact")
-                       );
-               break;
-       case VIEW_CALENDAR:
-               wc_printf(
-                       "<li class=\"staskday\">"
-                       "<a href=\"readfwd?calview=day\">"
-                       "<img src=\"static/taskday2_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Day view")
-                       );
-               wc_printf(
-                       "<li class=\"monthview\">"
-                       "<a href=\"readfwd?calview=month\">"
-                       "<img src=\"static/monthview2_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Month view")
-                       );
-               wc_printf("<li class=\"addevent\"><a href=\"display_enter");
-               if (havebstr("year" )) wc_printf("?year=%s", bstr("year"));
-               if (havebstr("month")) wc_printf("?month=%s", bstr("month"));
-               if (havebstr("day"  )) wc_printf("?day=%s", bstr("day"));
-               wc_printf("\">"
-                         "<img  src=\"static/addevent_24x.gif\" "
-                         "alt=\"\" width=\"24\" height=\"24\">"
-                         "<span class=\"navbar_link\">"
-                         "%s"
-                         "</span></a></li>\n", _("Add new event")
-                       );
-               break;
-       case VIEW_CALBRIEF:
-               wc_printf(
-                       "<li class=\"monthview\">"
-                       "<a href=\"readfwd?calview=month\">"
-                       "<img src=\"static/monthview2_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Calendar list")
-                       );
-               break;
-       case VIEW_TASKS:
-               wc_printf(
-                       "<li class=\"taskmanag\">"
-                       "<a href=\"readfwd\">"
-                       "<img src=\"static/taskmanag_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("View tasks")
-                       );
-               wc_printf(
-                       "<li class=\"newmess\">"
-                       "<a href=\"display_enter\">"
-                       "<img  src=\"static/newmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Add new task")
-                       );
-               break;
-       case VIEW_NOTES:
-               wc_printf(
-                       "<li class=\"viewnotes\">"
-                       "<a href=\"readfwd\">"
-                       "<img src=\"static/viewnotes_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("View notes")
-                       );
-               wc_printf(
-                       "<li class=\"enternewnote\">"
-                       "<a href=\"add_new_note\">"
-                       "<img  src=\"static/enternewnote_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Add new note")
-                       );
-               break;
-       case VIEW_MAILBOX:
-               wc_printf(
-                       "<li class=\"readallmess\">"
-                       "<a id=\"m_refresh\" href=\"readfwd\">"
-                       "<img src=\"static/readallmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Refresh message list")
-                       );
-               wc_printf(
-                       "<li class=\"readallmess\">"
-                       "<a href=\"readfwd\">"
-                       "<img src=\"static/readallmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Read all messages")
-                       );
-               wc_printf(
-                       "<li class=\"newmess\">"
-                       "<a href=\"display_enter\">"
-                       "<img  src=\"static/newmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Write mail")
-                       );
-               break;
-       case VIEW_WIKI:
-               wc_printf(
-                       "<li class=\"readallmess\">"
-                       "<a href=\"wiki?page=home\">"
-                       "<img src=\"static/readallmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Wiki home")
-                       );
-               safestrncpy(buf, bstr("page"), sizeof buf);
-               if (IsEmptyStr(buf)) {
-                       safestrncpy(buf, "home", sizeof buf);
-               }
-               str_wiki_index(buf);
-               wc_printf(
-                       "<li class=\"newmess\">"
-                       "<a href=\"display_enter?page=%s\">"
-                       "<img  src=\"static/newmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", buf, _("Edit this page")
-                       );
-               
-               if (bmstrcasestr((char *)ChrPtr(WCC->Hdr->HR.ReqLine), "wiki_history")) {
-                       /* already viewing history; display a link to the current page */
-                       wc_printf(
-                               "<li class=\"newmess\">"
-                               "<a href=\"wiki?page=%s\">"
-                               "<img  src=\"static/newmess3_24x.gif\" "
-                               "alt=\"\" width=\"24\" height=\"24\">"
-                               "<span class=\"navbar_link\">"
-                               "%s"
-                               "</span></a></li>\n", buf, _("Current version")
-                               );
-               }
-               else {
-                       /* display a link to the history */
-                       wc_printf(
-                               "<li class=\"newmess\">"
-                               "<a href=\"wiki_history?page=%s\">"
-                               "<img  src=\"static/newmess3_24x.gif\" "
-                               "alt=\"\" width=\"24\" height=\"24\">"
-                               "<span class=\"navbar_link\">"
-                               "%s"
-                               "</span></a></li>\n", buf, _("History")
-                               );
-               }
-               break;
-               break;
-       default:
-               wc_printf(
-                       "<li class=\"readallmess\">"
-                       "<a href=\"readfwd\">"
-                       "<img src=\"static/readallmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Read all messages")
-                       );
-               wc_printf(
-                       "<li class=\"newmess\">"
-                       "<a href=\"display_enter\">"
-                       "<img  src=\"static/newmess3_24x.gif\" "
-                       "alt=\"\" width=\"24\" height=\"24\">"
-                       "<span class=\"navbar_link\">"
-                       "%s"
-                       "</span></a></li>\n", _("Enter a message")
-                       );
-               break;
-       }
-       
-       wc_printf(
-               "<li class=\"skipthisroom\">"
-               "<a href=\"skip\" "
-               "title=\"%s\">"
-               "<img  src=\"static/skipthisroom_24x.gif\" alt=\"\" "
-               "width=\"24\" height=\"24\">"
-               "<span class=\"navbar_link\">%s</span></a>"
-               "</li>\n",
-               _("Leave all messages marked as unread, go to next room with unread messages"),
-               _("Skip this room")
-               );
-       
-       wc_printf(
-               "<li class=\"markngo\">"
-               "<a href=\"gotonext\" "
-               "title=\"%s\">"
-               "<img  src=\"static/markngo_24x.gif\" alt=\"\" "
-               "width=\"24\" height=\"24\">"
-               "<span class=\"navbar_link\">%s</span></a>"
-               "</li>\n",
-               _("Mark all messages as read, go to next room with unread messages"),
-               _("Goto next room")
-               );
-       
-       wc_printf("</ul></div>\n");
+       do_template("navbar", NULL);
 }
 
 
@@ -706,6 +456,9 @@ int SetCurrentRoomFlags(folder *Room)
        StrBuf *Buf;
 
        Buf = NewStrBuf();
+       DBG_QR(Room->QRFlags);
+       DBG_QR2(Room->QRFlags2);
+
        serv_printf("SETR %s|%s|%s|%ld|%d|%d|%ld|%ld|%ld",
                    ChrPtr(Room->name),
                    ChrPtr(Room->XAPass),
@@ -1296,45 +1049,61 @@ void editroom(void)
 /*
  * Display form for Invite, Kick, and show Who Knows a room
  */
-void do_invt_kick(void) {
-        char buf[SIZ], room[SIZ], username[SIZ];
-
-        serv_puts("GETR");
-        serv_getln(buf, sizeof buf);
-
-        if (buf[0] != '2') {
-               escputs(&buf[4]);
-               return;
-        }
-        extract_token(room, &buf[4], 0, '|', sizeof room);
-
-        strcpy(username, bstr("username"));
+void do_invt_kick(void) 
+{
+       StrBuf *Buf, *User;
+       const StrBuf *UserNames;
+       int Kick, Invite;
+       wcsession *WCC = WC;
 
-        if (havebstr("kick_button")) {
-                sprintf(buf, "KICK %s", username);
-                serv_puts(buf);
-                serv_getln(buf, sizeof buf);
 
-                if (buf[0] != '2') {
-                        strcpy(WC->ImportantMessage, &buf[4]);
-                } else {
-                        sprintf(WC->ImportantMessage,
-                               _("<B><I>User %s kicked out of room %s.</I></B>\n"), 
-                                username, room);
-                }
-        }
+       if (GetCurrentRoomFlags(&WCC->CurRoom) == 1)
+       {
+               const char *Pos;
+               UserNames = sbstr("username");
+               Kick = havebstr("kick_button");
+               Invite = havebstr("invite_button");
 
-       if (havebstr("invite_button")) {
-                sprintf(buf, "INVT %s", username);
-                serv_puts(buf);
-                serv_getln(buf, sizeof buf);
-
-                if (buf[0] != '2') {
-                        strcpy(WC->ImportantMessage, &buf[4]);
-                } else {
-                        sprintf(WC->ImportantMessage,
-                               _("<B><I>User %s invited to room %s.</I></B>\n"), 
-                                username, room);
+               User = NewStrBufPlain(NULL, StrLength(UserNames));
+               Buf = NewStrBuf();
+               
+               Pos = ChrPtr(UserNames);
+               while (Pos != StrBufNOTNULL)
+               {
+                       StrBufExtract_NextToken(User, UserNames, &Pos, ',');
+                       StrBufTrim(User);
+                       if ((StrLength(User) > 0) && (Kick))
+                       {
+                               serv_printf("KICK %s", ChrPtr(User));
+                               StrBuf_ServGetln(Buf);
+                               if (GetServerStatus(Buf, NULL) != 2) {
+                                       StrBufCutLeft(Buf, 4);
+                                       AppendImportantMessage(SKEY(Buf));
+                               } else {
+                                       StrBufPrintf(Buf, 
+                                                    _("User '%s' kicked out of room '%s'."), 
+                                                    ChrPtr(User), 
+                                                    ChrPtr(WCC->CurRoom.name)
+                                               );
+                                       AppendImportantMessage(SKEY(Buf));
+                               }
+                       }
+                       else if ((StrLength(User) > 0) && (Invite))
+                       {
+                               serv_printf("INVT %s", ChrPtr(User));
+                               StrBuf_ServGetln(Buf);
+                               if (GetServerStatus(Buf, NULL) != 2) {
+                                       StrBufCutLeft(Buf, 4);
+                                       AppendImportantMessage(SKEY(Buf));
+                               } else {
+                                       StrBufPrintf(Buf, 
+                                                    _("User '%s' invited to room '%s'."), 
+                                                    ChrPtr(User), 
+                                                    ChrPtr(WCC->CurRoom.name)
+                                               );
+                                       AppendImportantMessage(SKEY(Buf));
+                               }
+                       }
                 }
         }
 
@@ -1643,9 +1412,82 @@ void netedit(void) {
 
        serv_puts("000");
        fclose(fp);
+       FlushIgnetCfgs(&WC->CurRoom);
+
        http_transmit_thing(ChrPtr(do_template("room_edit", NULL)), 0);
 }
 
+/*
+ * delete the actual floor
+ */
+void delete_floor(void) {
+       int floornum;
+       StrBuf *Buf;
+       const char *Err;
+               
+       floornum = ibstr("floornum");
+       Buf = NewStrBuf();
+       serv_printf("KFLR %d|1", floornum);
+       
+       StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err);
+
+       if (GetServerStatus(Buf, NULL) == 2) {
+               StrBufPlain(Buf, _("Floor has been deleted."),-1);
+       }
+       else {
+               StrBufCutLeft(Buf, 4);
+       }
+       AppendImportantMessage (SKEY(Buf));
+
+       FlushRoomlist();
+       http_transmit_thing(ChrPtr(do_template("floors", NULL)), 0);
+       FreeStrBuf(&Buf);
+}
+
+/*
+ * start creating a new floor
+ */
+void create_floor(void) {
+       StrBuf *Buf;
+       const char *Err;
+
+       Buf = NewStrBuf();
+       serv_printf("CFLR %s|1", bstr("floorname"));
+       StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err);
+
+       if (GetServerStatus(Buf, NULL) == 2) {
+               StrBufPlain(Buf, _("New floor has been created."),-1);
+       }
+       else {
+               StrBufCutLeft(Buf, 4);
+       }
+       AppendImportantMessage (SKEY(Buf));
+       FlushRoomlist();
+       http_transmit_thing(ChrPtr(do_template("floors", NULL)), 0);
+       FreeStrBuf(&Buf);
+}
+
+
+/*
+ * rename this floor
+ */
+void rename_floor(void) {
+       StrBuf *Buf;
+
+       Buf = NewStrBuf();
+       FlushRoomlist();
+
+       serv_printf("EFLR %d|%s", ibstr("floornum"), bstr("floorname"));
+       StrBuf_ServGetln(Buf);
+
+       StrBufCutLeft(Buf, 4);
+       AppendImportantMessage (SKEY(Buf));
+
+       http_transmit_thing(ChrPtr(do_template("floors", NULL)), 0);
+       FreeStrBuf(&Buf);
+}
+
+
 
 /**
  * \brief Back end for change_view()
@@ -1950,6 +1792,7 @@ HashList *GetWhoKnowsHash(StrBuf *Target, WCTemplputParams *TP)
                                    IKEY(n),
                                    Token, 
                                    HFreeStrBuf);
+                               n++;
                        }
        }
        else if (State == 550)
@@ -2005,6 +1848,10 @@ InitModule_ROOMOPS
        RegisterNamespace("ROOMNAME", 0, 1, tmplput_RoomName, NULL, CTX_NONE);
 
 
+       WebcitAddUrlHandler(HKEY("delete_floor"), "", 0, delete_floor, 0);
+       WebcitAddUrlHandler(HKEY("rename_floor"), "", 0, rename_floor, 0);
+       WebcitAddUrlHandler(HKEY("create_floor"), "", 0, create_floor, 0);
+
        WebcitAddUrlHandler(HKEY("knrooms"), "", 0, knrooms, 0);
        WebcitAddUrlHandler(HKEY("dotgoto"), "", 0, dotgoto, NEED_URL);
        WebcitAddUrlHandler(HKEY("dotskip"), "", 0, dotskip, NEED_URL);
@@ -2113,6 +1960,11 @@ InitModule_ROOMOPS
        REGISTERTokenParamDefine(VIEW_BLOG);
 
        /* GNET types: */
+       /* server internal, we need to know but ignore them. */
+       REGISTERTokenParamDefine(subpending);
+       REGISTERTokenParamDefine(unsubpending);
+       REGISTERTokenParamDefine(lastsent);
+
        REGISTERTokenParamDefine(ignet_push_share);
        { /* these are the parts of an IGNET push config */
                REGISTERTokenParamDefine(GNET_IGNET_NODE);