}
+int ConditionalIsThisThatRoom(StrBuf *Target, WCTemplputParams *TP)
+{
+ folder *Folder = (folder *)CTX;
+ wcsession *WCC = WC;
+
+ if (WCC == NULL)
+ return 0;
+
+ return Folder == WCC->ThisRoom;
+}
+
+
void
InitModule_ROOMTOKENS
(void)
RegisterNamespace("THISROOM:DIRECTORY", 0, 1, tmplput_ThisRoomDirectory, NULL, CTX_NONE);
RegisterNamespace("ROOM:INFO:ACL", 0, 1, tmplput_ROOM_ACL, NULL, CTX_ROOMS);
+ RegisterConditional(HKEY("COND:THIS:THAT:ROOM"), 0, ConditionalIsThisThatRoom, CTX_ROOMS);
}
SieveRule *Rule = (SieveRule *)CTX;
wc_printf("%d", Rule->sizeval);
}
+
+void tmplput_SieveRule_lookup_FileIntoRoom(StrBuf *Target, WCTemplputParams *TP)
+{
+ void *vRoom;
+ SieveRule *Rule = (SieveRule *)CTX;
+ wcsession *WCC = WC;
+ HashList *Rooms = GetRoomListHashLKRA(Target, TP);
+
+ GetHash(Rooms, SKEY(Rule->fileinto), &vRoom);
+ WCC->ThisRoom = (folder*) vRoom;
+}
+
void FreeSieveRule(void *vRule)
{
- SieveRule *Rule = (SieveRule*) Rule;
+ SieveRule *Rule = (SieveRule*) vRule;
FreeStrBuf(&Rule->htext);
FreeStrBuf(&Rule->fileinto);
RegisterNamespace("SIEVE:SCRIPT:REDIRECT", 0, 1, tmplput_SieveRule_redirect, NULL, CTX_SIEVESCRIPT);
RegisterNamespace("SIEVE:SCRIPT:AUTOMSG", 0, 1, tmplput_SieveRule_automsg, NULL, CTX_SIEVESCRIPT);
///RegisterNamespace("SIEVE:SCRIPT:FINAL", 0, 1, tmplput_SieveRule_final, NULL, CTX_SIEVESCRIPT);
+ /* fetch our room into WCC->ThisRoom, to evaluate while iterating over rooms with COND:THIS:THAT:ROOM */
+ RegisterNamespace("SIEVE:SCRIPT:LOOKUP_FILEINTO", 0, 1, tmplput_SieveRule_lookup_FileIntoRoom, NULL, CTX_SIEVESCRIPT);
#if FOO
WebcitAddUrlHandler(HKEY("display_sieve"), "", 0, display_sieve, 0);
-<option <?%("COND:SIEVE:THISROOM", 1, 0, 0, "checked", "")> value='<?ROOM:INFO:NAME("U")>' ><?ROOM:INFO:NAME("X")></select>
+<option <?%("COND:THIS:THAT:ROOM", 1, 0, 0, "checked", "")> value='<?ROOM:INFO:NAME("U")>' ><?ROOM:INFO:NAME("X")></select>