* add macro to register defines with just a define as param
authorWilfried Göesgens <willi@citadel.org>
Sat, 16 Jan 2010 16:54:08 +0000 (16:54 +0000)
committerWilfried Göesgens <willi@citadel.org>
Sat, 16 Jan 2010 16:54:08 +0000 (16:54 +0000)
* flip the Current room QR-Flag conditionals to _one_ conditional working with a parameter
* make the templates follow that change.

webcit/roomops.c
webcit/static/t/edit_message.html
webcit/static/t/files.html
webcit/static/t/menu/basic_commands.html
webcit/subst.h

index 470b8cca8d4a45ba60f7b68435f628affafd1804..783c1cb5108d6e5e861cdcd64e2f8360ce6e5866 100644 (file)
@@ -3125,130 +3125,33 @@ int ConditionalHaveUngoto(StrBuf *Target, WCTemplputParams *TP)
                (strcasecmp(WCC->ugname, ChrPtr(WCC->CurRoom.name)) == 0));
 }
 
-int ConditionalRoomHas_QR_PERMANENT(StrBuf *Target, WCTemplputParams *TP)
+int ConditionalCurrentRoomHas_QRFlag(StrBuf *Target, WCTemplputParams *TP)
 {
+       long QR_CheckFlag;
        wcsession *WCC = WC;
        
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_PERMANENT) != 0));
-}
-
-int ConditionalRoomHas_QR_INUSE(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_INUSE) != 0));
-}
-
-int ConditionalRoomHas_QR_PRIVATE(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_PRIVATE) != 0));
-}
-
-int ConditionalRoomHas_QR_PASSWORDED(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_PASSWORDED) != 0));
-}
-
-int ConditionalRoomHas_QR_GUESSNAME(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_GUESSNAME) != 0));
-}
-
-int ConditionalRoomHas_QR_DIRECTORY(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_DIRECTORY) != 0));
-}
-
-int ConditionalRoomHas_QR_UPLOAD(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_UPLOAD) != 0));
-}
-
-int ConditionalRoomHas_QR_DOWNLOAD(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_DOWNLOAD) != 0));
-}
-
-int ConditionalRoomHas_QR_VISDIR(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_VISDIR) != 0));
-}
-
-int ConditionalRoomHas_QR_ANONONLY(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_ANONONLY) != 0));
-}
-
-int ConditionalRoomHas_QR_ANONOPT(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_ANONOPT) != 0));
-}
-
-int ConditionalRoomHas_QR_NETWORK(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_NETWORK) != 0));
-}
+       QR_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0);
+       if (QR_CheckFlag == 0)
+               LogTemplateError(Target, "Conditional", ERR_PARM1, TP,
+                                "requires one of the #\"QR*\"- defines or an integer flag 0 is invalid!");
 
-int ConditionalRoomHas_QR_PREFONLY(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
        return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_PREFONLY) != 0));
+               ((WCC->CurRoom.QRFlags & QR_CheckFlag) != 0));
 }
 
-int ConditionalRoomHas_QR_READONLY(StrBuf *Target, WCTemplputParams *TP)
+int ConditionalRoomHas_QRFlag(StrBuf *Target, WCTemplputParams *TP)
 {
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_READONLY) != 0));
-}
+       long QR_CheckFlag;
+       folder *Folder = (folder *)(TP->Context);
 
-int ConditionalRoomHas_QR_MAILBOX(StrBuf *Target, WCTemplputParams *TP)
-{
-       wcsession *WCC = WC;
-       
-       return ((WCC!=NULL) &&
-               ((WCC->CurRoom.QRFlags & QR_MAILBOX) != 0));
+       QR_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0);
+       if (QR_CheckFlag == 0)
+               LogTemplateError(Target, "Conditional", ERR_PARM1, TP,
+                                "requires one of the #\"QR*\"- defines or an integer flag 0 is invalid!");
+       return ((Folder->QRFlags & QR_CheckFlag) != 0);
 }
 
 
-
-
-
 int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP)
 {
        wcsession *WCC = WC;
@@ -3327,21 +3230,56 @@ InitModule_ROOMOPS
        RegisterNamespace("ROOMBANNER", 0, 1, tmplput_roombanner, NULL, CTX_NONE);
 
        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);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PASSWORDED"), 0, ConditionalRoomHas_QR_PASSWORDED, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_GUESSNAME"), 0, ConditionalRoomHas_QR_GUESSNAME, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_DIRECTORY"), 0, ConditionalRoomHas_QR_DIRECTORY, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_UPLOAD"), 0, ConditionalRoomHas_QR_UPLOAD, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_DOWNLOAD"), 0, ConditionalRoomHas_QR_DOWNLOAD, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_VISIDIR"), 0, ConditionalRoomHas_QR_VISDIR, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_ANONONLY"), 0, ConditionalRoomHas_QR_ANONONLY, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_ANONOPT"), 0, ConditionalRoomHas_QR_ANONOPT, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_NETWORK"), 0, ConditionalRoomHas_QR_NETWORK, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PREFONLY"), 0, ConditionalRoomHas_QR_PREFONLY, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_READONLY"), 0, ConditionalRoomHas_QR_READONLY, CTX_NONE);
-       RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_MAILBOX"), 0, ConditionalRoomHas_QR_MAILBOX, CTX_NONE);
+       RegisterConditional(HKEY("COND:THISROOM:FLAG:QR"), 0, ConditionalCurrentRoomHas_QRFlag, CTX_NONE);
+       RegisterConditional(HKEY("COND:ROOM:FLAG:QR"), 0, ConditionalRoomHas_QRFlag, CTX_ROOMS);
+
+       REGISTERTokenParamDefine(QR_PERMANENT);
+       REGISTERTokenParamDefine(QR_INUSE);
+       REGISTERTokenParamDefine(QR_PRIVATE);
+       REGISTERTokenParamDefine(QR_PASSWORDED);
+       REGISTERTokenParamDefine(QR_GUESSNAME);
+       REGISTERTokenParamDefine(QR_DIRECTORY);
+       REGISTERTokenParamDefine(QR_UPLOAD);
+       REGISTERTokenParamDefine(QR_DOWNLOAD);
+       REGISTERTokenParamDefine(QR_VISDIR);
+       REGISTERTokenParamDefine(QR_ANONONLY);
+       REGISTERTokenParamDefine(QR_ANONOPT);
+       REGISTERTokenParamDefine(QR_NETWORK);
+       REGISTERTokenParamDefine(QR_PREFONLY);
+       REGISTERTokenParamDefine(QR_READONLY);
+       REGISTERTokenParamDefine(QR_MAILBOX);
+       REGISTERTokenParamDefine(QR2_SYSTEM);
+       REGISTERTokenParamDefine(QR2_SELFLIST);
+       REGISTERTokenParamDefine(QR2_COLLABDEL);
+       REGISTERTokenParamDefine(QR2_SUBJECTREQ);
+       REGISTERTokenParamDefine(QR2_SMTP_PUBLIC);
+       REGISTERTokenParamDefine(QR2_MODERATED);
+
+       REGISTERTokenParamDefine(UA_KNOWN);
+       REGISTERTokenParamDefine(UA_GOTOALLOWED);
+       REGISTERTokenParamDefine(UA_HASNEWMSGS);
+       REGISTERTokenParamDefine(UA_ZAPPED);
+       REGISTERTokenParamDefine(UA_POSTALLOWED);
+       REGISTERTokenParamDefine(UA_ADMINALLOWED);
+       REGISTERTokenParamDefine(UA_DELETEALLOWED);
+       REGISTERTokenParamDefine(UA_ISTRASH);
+
+       REGISTERTokenParamDefine(US_NEEDVALID);
+       REGISTERTokenParamDefine(US_PERM);
+       REGISTERTokenParamDefine(US_LASTOLD);
+       REGISTERTokenParamDefine(US_EXPERT);
+       REGISTERTokenParamDefine(US_UNLISTED);
+       REGISTERTokenParamDefine(US_NOPROMPT);
+       REGISTERTokenParamDefine(US_PROMPTCTL);
+       REGISTERTokenParamDefine(US_DISAPPEAR);
+       REGISTERTokenParamDefine(US_REGIS);
+       REGISTERTokenParamDefine(US_PAGINATOR);
+       REGISTERTokenParamDefine(US_INTERNET);
+       REGISTERTokenParamDefine(US_FLOORS);
+       REGISTERTokenParamDefine(US_COLOR);
+       REGISTERTokenParamDefine(US_USER_SET);
+
+
        RegisterConditional(HKEY("COND:ROOMAIDE"), 2, ConditionalRoomAide, CTX_NONE);
        RegisterConditional(HKEY("COND:ACCESS:DELETE"), 2, ConditionalRoomAcessDelete, CTX_NONE);
 
index 7f25156bf952b150ec621e2e92b34d29a1ad1f6f..4f5b99adaca9bf9e5eb8c99b1106a2416c51a059 100644 (file)
@@ -27,7 +27,7 @@
 <??("COND:SUBST", 4, "RCPTREQUIRED")>
 <select name="display_name" size=1 id="from_id">
 <?ITERATE("PREF:VALID:EMAIL:NAME", "prefs_section_msg_handle_select")>
-<?!("COND:ROOM:FLAGS:QR_ANONOPT", 3)>
+<?!("COND:THISROOM:FLAG:QR", 3, #"QR_ANONOPT")>
 <option <?%("COND:BSTR", 1, "__ANONYMOUS__", "selected", "")> value="__ANONYMOUS__"><?_("Anonymous")></option>
 <?!("X", 3)>
 </select>
@@ -36,7 +36,7 @@
 <?!("COND:SUBST", 5, "RCPTREQUIRED")>
 <select name="display_name" size=1 id="from_id">
 <?ITERATE("PREF:VALID:EMAIL:NAME", "prefs_section_msg_sender_name_select")>
-<?!("COND:ROOM:FLAGS:QR_ANONOPT", 3)>
+<?!("COND:THISROOM:FLAG:QR", 3, #"QR_ANONOPT")>
 <option <?%("COND:BSTR", 1, "__ANONYMOUS__", "selected", "")> value="__ANONYMOUS__"><?_("Anonymous")></option>
 <?!("X", 3)>
 </select>
index 70ba56d597710a53a2d0b2967f8000a1df6154c7..cc671490008dd9bbf97945ab324e544657c72237 100644 (file)
@@ -28,7 +28,7 @@
 
 
 
-<?!("COND:ROOM:FLAGS:QR_UPLOAD", 2)>
+<?!("COND:THISROOM:FLAG:QR", 2, #"QR_UPLOAD")>
 <hr>
 <form enctype="multipart/form-data" method="POST" accept-charset="UTF-8" action="upload_file" name="upload_file_form">
 <input type="hidden" name="nonce" value="<?NONCE>">
index 641de14bc649d1640536b846575346d550e335ef..ae150b83a7e307b95b1dbc18a6dc3af75deb5264 100644 (file)
@@ -10,7 +10,7 @@
        <li><a href="readnew"><?_("Read new messages")></a><span><?_("...in this room")></span></li>
        <li><a href="readfwd"><?_("Read all messages")></a><span><?_("...old <em>and</em> new")></span></li>
        <li><a href="display_enter"><?_("Enter a message")></a><span><?_("(post in this room)")></span></li>
-       <?!("COND:ROOM:FLAGS:QR_VISIDIR", 2)><li><a href="do_template?template=files"><?_("File library")></a><span><?_("(List files available for download)")></span></li><??("X", 2)>
+       <?!("COND:THISROOM:FLAG:QR", 2, #"QR_VISDIR")><li><a href="do_template?template=files"><?_("File library")></a><span><?_("(List files available for download)")></span></li><??("X", 2)>
 </ul>
 <!-- start of third column -->
 <ul class="adminitems lastcol">
index ba27b21c3cbdcc8692c47a80e3ad9b722f85b2a5..7053a4936f921a9c3431ed4d48ac65ae5bfaf73c 100644 (file)
@@ -294,6 +294,10 @@ void RegisterConditional(const char *Name, long len,
  */
 void RegisterTokenParamDefine(const char *Name, long len, 
                              long Value);
+/**
+ * teh r0x0r! forward your favourite define from C to the templates with one easy call!
+ */
+#define REGISTERTokenParamDefine(a) RegisterTokenParamDefine(#a, sizeof(#a) - 1, a);
 
 #define IT_NOFLAG 0
 #define IT_FLAG_DETECT_GROUPCHANGE (1<<0)