]> code.citadel.org Git - citadel.git/blobdiff - webcit/sieve.c
Implement selecting of sieve rule target room in dropdown.
[citadel.git] / webcit / sieve.c
index 486164ec6f80695f607b5b9626adb3673e7884a5..3a8067845f73db4ad3be864dc58f91a2f0e8a122 100644 (file)
@@ -1513,9 +1513,21 @@ void tmplput_SieveRule_sizeval(StrBuf *Target, WCTemplputParams *TP)
        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);
@@ -1692,6 +1704,8 @@ InitModule_SIEVE
        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);