* implement read state for room templates
authorWilfried Göesgens <willi@citadel.org>
Mon, 7 Sep 2009 23:06:43 +0000 (23:06 +0000)
committerWilfried Göesgens <willi@citadel.org>
Mon, 7 Sep 2009 23:06:43 +0000 (23:06 +0000)
webcit/roomlist.c
webcit/roomops.c
webcit/roomops.h
webcit/static/t/knrooms_rooms.html

index c58e43c41ca9a77b84259bfdce62de990f3f9326..e95e8f9228a4968cae5db46b162f9adc14b30f7f 100644 (file)
@@ -124,7 +124,7 @@ void DeleteFolder(void *vFolder)
        room = (folder*) vFolder;
 
        FreeStrBuf(&room->name);
-       FreeStrBuf(&room->ACL);
+       ////FreeStrBuf(&room->ACL);
 
        //// FreeStrBuf(&room->room);
 
@@ -169,16 +169,20 @@ HashList *GetRoomListHash(StrBuf *Target, WCTemplputParams *TP)
 
                        room->QRFlags = StrBufExtractNext_long(Buf, &Pos, '|');
                        room->floorid = StrBufExtractNext_long(Buf, &Pos, '|');
-
                        room->listorder = StrBufExtractNext_long(Buf, &Pos, '|');
+                       room->QRFlags2 = StrBufExtractNext_long(Buf, &Pos, '|');
+
+                       room->RAFlags = StrBufExtractNext_long(Buf, &Pos, '|');
 
+/*
+ ACWHUT?
                        room->ACL = NewStrBufPlain(NULL, StrLength(Buf));
                        StrBufExtract_NextToken(room->ACL, Buf, &Pos, '|');
+*/
 
                        room->view = StrBufExtractNext_long(Buf, &Pos, '|');
                        room->defview = StrBufExtractNext_long(Buf, &Pos, '|');
                        room->lastchange = StrBufExtractNext_long(Buf, &Pos, '|');
-/*
 
                        /* Evaluate the Server sent data for later use */
                        /* find out, whether we are in a sub-room */
@@ -451,7 +455,7 @@ void tmplput_ROOM_ACL(StrBuf *Target, WCTemplputParams *TP)
 {
        folder *Folder = (folder *)(TP->Context);
 
-       StrBufAppendTemplate(Target, TP, Folder->ACL, 0);
+       StrBufAppendPrintf(Target, "%ld", Folder->RAFlags, 0);
 }
 
 
@@ -523,15 +527,29 @@ void tmplput_ROOM_FLOOR_NROOMS(StrBuf *Target, WCTemplputParams *TP)
 
 
 
+int ConditionalRoomHas_UA_KNOWN(StrBuf *Target, WCTemplputParams *TP)
+{
+       folder *Folder = (folder *)(TP->Context);
+       return (Folder->RAFlags & UA_KNOWN) != 0;
+}
 
+int ConditionalRoomHas_UA_GOTOALLOWED(StrBuf *Target, WCTemplputParams *TP)
+{
+       folder *Folder = (folder *)(TP->Context);
+       return (Folder->RAFlags & UA_GOTOALLOWED) != 0;
+}
 
+int ConditionalRoomHas_UA_HASNEWMSGS(StrBuf *Target, WCTemplputParams *TP)
+{
+       folder *Folder = (folder *)(TP->Context);
+       return (Folder->RAFlags & UA_HASNEWMSGS) != 0;
+}
 
-
-
-
-
-
-
+int ConditionalRoomHas_UA_ZAPPED(StrBuf *Target, WCTemplputParams *TP)
+{
+       folder *Folder = (folder *)(TP->Context);
+       return (Folder->RAFlags & UA_ZAPPED) != 0;
+}
 
 
 void jsonRoomFlr(void) 
@@ -579,6 +597,14 @@ InitModule_ROOMLIST
        RegisterNamespace("ROOM:INFO:FLOOR:NAME", 0, 1, tmplput_ROOM_FLOOR_NAME, CTX_ROOMS);
        RegisterNamespace("ROOM:INFO:FLOOR:NROOMS", 0, 0, tmplput_ROOM_FLOOR_NROOMS, CTX_ROOMS);
 
+
+       RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_KNOWN"), 0, ConditionalRoomHas_UA_KNOWN, CTX_ROOMS);
+       RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_GOTOALLOWED"), 0, ConditionalRoomHas_UA_GOTOALLOWED, CTX_ROOMS);
+       RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_HASNEWMSGS"), 0, ConditionalRoomHas_UA_HASNEWMSGS, CTX_ROOMS);
+       RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_ZAPPED"), 0, ConditionalRoomHas_UA_ZAPPED, CTX_ROOMS);
+
+
+
        RegisterSortFunc(HKEY("byfloorroom"),
                         NULL, 0,
                         CompareRoomListByFloorRoomPrivFirst,
index f6347c660fc165d6fef89d0260ff975c3065c6d0..4fc79011e76b9205b472509788bf34fbce0e2a50 100644 (file)
@@ -3707,6 +3707,9 @@ int ConditionalRoomHas_QR_MAILBOX(StrBuf *Target, WCTemplputParams *TP)
 }
 
 
+
+
+
 int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP)
 {
        wcsession *WCC = WC;
index 50edc6ccf27ac45524fce86428037139097f66a6..ac2f607b7b7458cd5c665a96ecd307209e41bac0 100644 (file)
@@ -60,10 +60,11 @@ typedef struct _folder {
        int QRFlags;    /* roomflags */
        int floorid;      /* which floor is it on */
 
-
        int listorder; /* todo */
+       int QRFlags2;    /* Bitbucket NO2 */
 
-       StrBuf *ACL;    /* access Control list... */
+       long RAFlags;
+///    StrBuf *ACL;    /* access Control list... */
 
        int view;       /* whats its default view? inbox/calendar.... */
        int defview;
index 910ce027610f2693c85ab38f09b8e5c9b0d7ef67..e69d409394bd58cec33f607b4ed0cd475ce0a9dc 100644 (file)
@@ -7,5 +7,5 @@
 <?!("COND:ITERATE:ISGROUPCHANGE", 3, 2)></td><td valign=top> <?!("X", 3)>
 <?=("beginbox_1")><?ROOM:INFO:FLOOR:NAME><?=("beginbox_2")>
 <?!("X", 2)>
-&nbsp;<a href="dotgoto?room=<?ROOM:INFO:NAME("X")>"><span class="roomlist_old"><?ROOM:INFO:LEVELNTIMES("&nbsp;&nbsp;&nbsp;")><?ROOM:INFO:BASENAME></span></a><br />
+&nbsp;<a href="dotgoto?room=<?ROOM:INFO:NAME("X")>"><span class="<?%("COND:ROOM:FLAGS:UA_HASNEWMSGS", 1, 0, 0, "roomlist_new", "roomlist_old")>"><?ROOM:INFO:LEVELNTIMES("&nbsp;&nbsp;&nbsp;")><?ROOM:INFO:BASENAME></span></a><br />
 <?!("COND:ITERATE:LASTN", 2)><?=("endbox")></td></tr><??("X", 3)>