Roomediting: add permission check to to some dialogs
authorWilfried Goesgens <dothebart@citadel.org>
Tue, 24 Jan 2012 23:27:34 +0000 (00:27 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Tue, 24 Jan 2012 23:27:34 +0000 (00:27 +0100)
webcit/roomops.c
webcit/roomtokens.c
webcit/static/t/room/edit/tab_access.html
webcit/static/t/room/edit/tab_config.html
webcit/static/t/room/edit/tab_expire.html

index 85e998bcb77f1bcf52f0c7e6f7df2a3ead0ba8d4..b6fdaa8df8113f5154a3bddd45c2e60050fcb920 100644 (file)
@@ -481,7 +481,7 @@ int SaveRoomAide(folder *Room)
 }
 
 
-int GetCurrentRoomFlags(folder *Room)
+int GetCurrentRoomFlags(folder *Room, int CareForStatusMessage)
 {
        StrBuf *Buf;
 
@@ -492,8 +492,10 @@ int GetCurrentRoomFlags(folder *Room)
                FlushStrBuf(Room->XAPass);
                FlushStrBuf(Room->Directory);
                StrBufCutLeft(Buf, 4);
-               AppendImportantMessage (SKEY(Buf));
+               if (CareForStatusMessage)
+                       AppendImportantMessage (SKEY(Buf));
                FreeStrBuf(&Buf);
+               Room->XALoaded = 2;
                return 0;
        } else {
                const char *Pos;
@@ -560,10 +562,10 @@ void LoadRoomXA (void)
 {
        wcsession *WCC = WC;
                
-       if (WCC->CurRoom.XALoaded)
+       if (WCC->CurRoom.XALoaded > 0)
                return;
 
-       GetCurrentRoomFlags(&WCC->CurRoom);
+       GetCurrentRoomFlags(&WCC->CurRoom, 0);
 }
 
 
@@ -658,7 +660,7 @@ void LoadXRoomXCountFiles(void)
 void toggle_self_service(void) {
        wcsession *WCC = WC;
 
-       if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
+       if (GetCurrentRoomFlags (&WCC->CurRoom, 1) == 0)
                return;
 
        if (yesbstr("QR2_SelfList")) 
@@ -707,8 +709,10 @@ void editroom(void)
                http_transmit_thing(ChrPtr(do_template("room_edit")), 0);
                return;
        }
-       if (GetCurrentRoomFlags (&WCC->CurRoom) == 0)
+       if (GetCurrentRoomFlags (&WCC->CurRoom, 1) == 0) {
+               http_transmit_thing(ChrPtr(do_template("room_edit")), 0);
                return;
+       }
 
        LoadRoomAide();
 
@@ -849,7 +853,7 @@ void do_invt_kick(void)
        wcsession *WCC = WC;
 
 
-       if (GetCurrentRoomFlags(&WCC->CurRoom) == 1)
+       if (GetCurrentRoomFlags(&WCC->CurRoom, 1) == 1)
        {
                const char *Pos;
                UserNames = sbstr("username");
index d41b36af1a5e52a717f36fdab5670dae4471bbf0..21b8cc4a3a11d270f986643918183cff3fa733d7 100644 (file)
@@ -266,6 +266,15 @@ int ConditionalRoomIsInbox(StrBuf *Target, WCTemplputParams *TP)
 
 
 /****** Properties ******/
+int ConditionalRoom_MayEdit(StrBuf *Target, WCTemplputParams *TP)
+{
+       wcsession *WCC = WC;
+
+       LoadRoomXA ();
+
+       return WCC->CurRoom.XALoaded == 1;
+}
+
 int ConditionalThisRoomHas_QRFlag(StrBuf *Target, WCTemplputParams *TP)
 {
        long QR_CheckFlag;
@@ -613,6 +622,7 @@ InitModule_ROOMTOKENS
        /****** Properties ******/
        RegisterNamespace("ROOM:INFO:QRFLAGS", 0, 1, tmplput_ROOM_QRFLAGS, NULL, CTX_ROOMS);
        RegisterConditional(HKEY("COND:THISROOM:FLAG:QR"), 0, ConditionalThisRoomHas_QRFlag, CTX_NONE);
+       RegisterConditional(HKEY("COND:THISROOM:EDIT"), 0, ConditionalRoom_MayEdit, CTX_NONE);
        RegisterConditional(HKEY("COND:ROOM:FLAG:QR"), 0, ConditionalRoomHas_QRFlag, CTX_ROOMS);
 
        RegisterConditional(HKEY("COND:THISROOM:FLAG:QR2"), 0, ConditionalThisRoomHas_QRFlag2, CTX_NONE);
index 3048972f4bb3a6530859b344dbd84029cbe10422..8cad949fe37d6aa38c37e3741551b0aef0ab29a1 100644 (file)
@@ -1,4 +1,4 @@
-<div class="tabcontent">
+<?!("COND:THISROOM:EDIT", 1)><div class="tabcontent">
        <table border="0" cellspacing="10">
                <tr valign="top">
                        <td>
@@ -39,3 +39,4 @@
                </tr>
        </table>
 </div>
+<?!("X", 1)><??("COND:THISROOM:EDIT", 20)><div class="tabcontent"><?_("Higher access is required to access this function.")></div><??("X", 20)>
index 0a6891c4a2df66424b88461faeef1e575603b18c..7c45b6ec76fce126cc07568099f8570ed8ac4c94 100644 (file)
@@ -1,4 +1,4 @@
-<div class="tabcontent">
+<?!("COND:THISROOM:EDIT", 1)><div class="tabcontent">
        <form method="post" action="editroom">
                <input type="hidden" name="nonce" value="<?NONCE>" />
                <ul>   
        </center>
        </form>
 </div>
+<?!("X", 1)><??("COND:THISROOM:EDIT", 20)><div class="tabcontent"><?_("Higher access is required to access this function.")></div><??("X", 20)>
index dc4e61c215a94f8f56923597706cc9d746905fb5..fb958151b1971075f69e1b5ec462c06661bfe849 100644 (file)
@@ -1,4 +1,4 @@
-<div class="tabcontent">
+<?!("COND:THISROOM:EDIT", 1)><div class="tabcontent">
        <br />
        <form method="post" action="set_room_policy">
                <input type="hidden" name="nonce" value="<?NONCE>" />
@@ -69,3 +69,4 @@
                <input type="hidden" name="last_tabsel" value="<?TAB:N>" />
        </form>
 </div>
+<?!("X", 1)><??("COND:THISROOM:EDIT", 20)><div class="tabcontent"><?_("Higher access is required to access this function.")></div><??("X", 20)>