]> code.citadel.org Git - citadel.git/blobdiff - webcit/roomops.c
* add conditional to check room-types
[citadel.git] / webcit / roomops.c
index 6011b116e99298be20155eadd49216638e4dc4bc..99527f1314ba779dfad03cd49509b6e851705a6e 100644 (file)
@@ -451,7 +451,7 @@ void embed_search_o_matic(StrBuf *Target, WCTemplputParams *TP)
        wprintf("<label for=\"srchquery\">");
        wprintf(_("Search: "));
        wprintf("</label><input ");
-       wprintf("%s", serv_info.serv_fulltext_enabled ? "" : "disabled ");
+       wprintf("%s", WC->serv_info->serv_fulltext_enabled ? "" : "disabled ");
        wprintf("type=\"text\" name=\"query\" id=\"srchquery\" size=\"15\" maxlength=\"128\" class=\"inputbox\">\n"
                );
        wprintf("</div></form>\n");
@@ -725,6 +725,14 @@ void embed_room_banner(char *got, int navbar_style) {
                                        "%s"
                                        "</span></a></li>\n", _("Write mail")
                                        );
+                               wprintf(
+                                       "<li class=\"newmess\">"
+                                       "<a href=\"javascript:deleteAllSelectedMessages();\">"
+                                       "<img  src=\"static/delete.gif\" "
+                                       "alt=\"\"><span class=\"navbar_link\">"
+                                       "%s"
+                                       "</span></a></li>\n", _("Delete")
+                                       );
                                break;
                        default:
                                wprintf(
@@ -2148,6 +2156,12 @@ void editroom(void)
                FreeStrBuf(&Buf);
                return;
        }
+
+       er_name = NewStrBuf();
+       er_password = NewStrBuf();
+       er_dirname = NewStrBuf();
+       er_roomaide = NewStrBuf();
+
        StrBufCutLeft(Buf, 4);
        StrBufExtract_token(er_name, Buf, 0, '|');
        StrBufExtract_token(er_password, Buf, 1, '|');
@@ -3633,7 +3647,7 @@ void knrooms(void)
 
        /** title bar */
        wprintf("<div id=\"banner\">\n");
-       wprintf("<div class=\"room_banner\">");
+       wprintf("<div class=\"room_banner\" id=\"room_banner\">");
        wprintf("<h1>");
        if (!strcasecmp(ChrPtr(ListView), "rooms")) {
                wprintf(_("Room list"));
@@ -3722,7 +3736,7 @@ HashList *GetFloorListHash(StrBuf *Target, WCTemplputParams *TP) {
        StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err); /* '100', we hope */
        if (ChrPtr(Buf)[0] == '1') while(StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err), strcmp(ChrPtr(Buf), "000")) {
                        int a;
-                       const char *floorNum;
+                       const char *floorNum = NULL;
                        floor = NewHash(1, NULL);
                        for(a=0; a<FLOOR_PARAM_LEN; a++) {
                                Buf2 = NewStrBuf();
@@ -3765,7 +3779,7 @@ HashList *GetRoomListHash(StrBuf *Target, WCTemplputParams *TP)
        StrBufTCP_read_line(buf, &WC->serv_sock, 0, &Err);
        if (ChrPtr(buf)[0] == '1') while(StrBufTCP_read_line(buf, &WC->serv_sock, 0, &Err), strcmp(ChrPtr(buf), "000")) {
                        int i;
-                       const char *rmName;
+                       const char *rmName = NULL;
                        room = NewHash(1, NULL);
                        for(i=0; i<ROOM_PARAM_LEN; i++) {
                                buf2 = NewStrBuf();
@@ -3814,7 +3828,7 @@ void jsonRoomFlr(void) {
        /* Send as our own (application/json) content type */
   hprintf("HTTP/1.1 200 OK\r\n");
   hprintf("Content-type: application/json; charset=utf-8\r\n");
-  hprintf("Server: %s / %s\r\n", PACKAGE_STRING, ChrPtr(serv_info.serv_software));
+  hprintf("Server: %s / %s\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software));
   hprintf("Connection: close\r\n");
   hprintf("Pragma: no-cache\r\nCache-Control: no-store\r\nExpires:-1\r\n");
   begin_burst();
@@ -3994,15 +4008,56 @@ int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP)
                  (WCC->is_mailbox) ));
 }
 
+int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP)
+{
+       wcsession *WCC = WC;
+
+       if ((WCC == NULL) ||
+           (TP->Tokens->nParameters < 3) ||
+           (TP->Tokens->Params[2]->Type != TYPE_STR)||
+           (TP->Tokens->Params[2]->len < 7))
+               return 0;
+
+       switch(WCC->wc_view) {
+       case VIEW_BBS:
+               return TP->Tokens->Params[2]->Start[7]=='B';
+       case VIEW_MAILBOX:
+               return TP->Tokens->Params[2]->Start[7]=='M';
+       case VIEW_ADDRESSBOOK:
+               return TP->Tokens->Params[2]->Start[7]=='A';
+       case VIEW_TASKS:
+               return TP->Tokens->Params[2]->Start[7]=='T';
+       case VIEW_NOTES:
+               return TP->Tokens->Params[2]->Start[7]=='N';
+       case VIEW_WIKI:
+               return TP->Tokens->Params[2]->Start[7]=='W';
+       case VIEW_JOURNAL:
+               return TP->Tokens->Params[2]->Start[7]=='J';
+
+       case VIEW_CALENDAR:
+               if (TP->Tokens->Params[2]->len < 13)
+                       return 0;
+               return TP->Tokens->Params[2]->Start[10]=='E';
+
+       case VIEW_CALBRIEF:
+               if (TP->Tokens->Params[3]->len < 13)
+                       return 0;
+               return TP->Tokens->Params[2]->Start[10]=='B';
+
+       default:
+               return 0;
+       }
+}
+
 void 
 InitModule_ROOMOPS
 (void)
 {
-       RegisterPreference(HKEY("roomlistview"),
+       RegisterPreference("roomlistview",
                            _("Room list view"),
                            PRF_STRING,
                            NULL);
-        RegisterPreference(HKEY("emptyfloors"), _("Show empty floors"), PRF_YESNO, NULL);
+        RegisterPreference("emptyfloors", _("Show empty floors"), PRF_YESNO, NULL);
 
        RegisterNamespace("ROOMNAME", 0, 1, tmplput_RoomName, 0);
 
@@ -4032,6 +4087,7 @@ InitModule_ROOMOPS
        WebcitAddUrlHandler(HKEY("json_roomflr"), jsonRoomFlr, 0);
        RegisterNamespace("ROOMBANNER", 0, 1, tmplput_roombanner, 0);
 
+       RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE);
        RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PERMANENT"), 0, ConditionalRoomHas_QR_PERMANENT, CTX_NONE);
        RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_INUSE"), 0, ConditionalRoomHas_QR_INUSE, CTX_NONE);
        RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PRIVATE"), 0, ConditionalRoomHas_QR_PRIVATE, CTX_NONE);