we need to create the rules hash regardles of the server reply; this fixes the broken...
[citadel.git] / webcit / sieve.c
index 4aa53e20bf8a8146e2d175c30d139f085c4c766d..8cf76e459a2b6fc85f7f2cd5a080aa9214e31c2e 100644 (file)
@@ -21,7 +21,7 @@
 #define MAX_SCRIPTS    100
 #define MAX_RULES      50
 #define RULES_SCRIPT   "__WebCit_Generated_Script__"
-#define FOO 1
+/*#define FOO 1*/
 /*
  * Helper function for output_sieve_rule() to output strings with quotes escaped
  */
@@ -378,8 +378,7 @@ void save_sieve(void) {
        char buf[256];
 
        if (!havebstr("save_button")) {
-               strcpy(WC->ImportantMessage,
-                       _("Cancelled.  Changes were not saved."));
+               AppendImportantMessage(_("Cancelled.  Changes were not saved."), -1);
                display_main_menu();
                return;
        }
@@ -435,7 +434,7 @@ void save_sieve(void) {
                }
        }
 
-       strcpy(WC->ImportantMessage, _("Your changes have been saved."));
+       AppendImportantMessage(_("Your changes have been saved."), -1);
        display_main_menu();
        return;
 }
@@ -466,12 +465,20 @@ void create_script(void) {
                serv_puts("000");
 #if FOO
                display_add_remove_scripts(_("A new script has been created.  Return to the script editing screen to edit and activate it."));
+#else
+       output_headers(1, 1, 2, 0, 0, 0);
+       do_template("sieve_add");
+       wDumpContent(1);
 #endif
                return;
        }
 
 #if FOO
        display_add_remove_scripts(&buf[4]);
+#else
+       output_headers(1, 1, 2, 0, 0, 0);
+       do_template("sieve_add");
+       wDumpContent(1);
 #endif
 }
 
@@ -488,6 +495,10 @@ void delete_script(void) {
        serv_getln(buf, sizeof buf);
 #if FOO
        display_add_remove_scripts(&buf[4]);
+#else
+       output_headers(1, 1, 2, 0, 0, 0);
+       do_template("sieve_add");
+       wDumpContent(1);
 #endif
 }
                
@@ -1457,36 +1468,11 @@ int ConditionalSieveRule_Active(StrBuf *Target, WCTemplputParams *TP)
        SieveRule     *Rule = (SieveRule *)CTX;
         return Rule->active;
 }
-
-
-/*
-void tmplput_SieveRule_hfield(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX;
-       StrBufAppendTemplate(Target, TP, Rule->hfield, 0);
-}
-void tmplput_SieveRule_compare(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX;
-       StrBufAppendTemplate(Target, TP, Rule->compare, 0);
-}
-*/
 void tmplput_SieveRule_htext(StrBuf *Target, WCTemplputParams *TP) 
 {
        SieveRule     *Rule = (SieveRule *)CTX;
        StrBufAppendTemplate(Target, TP, Rule->htext, 0);
 }
-/*
-void tmplput_SieveRule_sizecomp(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX;
-       StrBufAppendTemplate(Target, TP, Rule->sizecomp, 0);
-}
-void tmplput_SieveRule_action(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX;
-       StrBufAppendTemplate(Target, TP, Rule->action, 0);
-       }*/
 void tmplput_SieveRule_fileinto(StrBuf *Target, WCTemplputParams *TP) 
 {
        SieveRule     *Rule = (SieveRule *)CTX;
@@ -1502,13 +1488,6 @@ void tmplput_SieveRule_automsg(StrBuf *Target, WCTemplputParams *TP)
        SieveRule     *Rule = (SieveRule *)CTX;
        StrBufAppendTemplate(Target, TP, Rule->automsg, 0);
 }
-/*
-void tmplput_SieveRule_final(StrBuf *Target, WCTemplputParams *TP) 
-{
-       SieveRule     *Rule = (SieveRule *)CTX;
-       StrBufAppendTemplate(Target, TP, Rule->final, 0);
-}
-*/
 void tmplput_SieveRule_sizeval(StrBuf *Target, WCTemplputParams *TP) 
 {
        SieveRule     *Rule = (SieveRule *)CTX;
@@ -1549,14 +1528,13 @@ HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP)
        int Done = 0;
        SieveRule *Rule;
 
+       SieveRules = NewHash(1, Flathash);
        serv_printf("MSIV getscript|"RULES_SCRIPT);
        Line = NewStrBuf();
        EncodedRule = NewStrBuf();
        StrBuf_ServGetln(Line);
        if (GetServerStatus(Line, NULL) == 1) 
        {
-               SieveRules = NewHash(1, Flathash);
-
                while(!Done && (StrBuf_ServGetln(Line) >= 0) )
                        if ( (StrLength(Line)==3) && 
                             !strcmp(ChrPtr(Line), "000")) 
@@ -1622,23 +1600,6 @@ HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP)
        return SieveRules;
 }
 
-
-HashList *GetEmptySieveRule(StrBuf *Target, WCTemplputParams *TP)
-{
-       int n = 0;
-       HashList *OneSieveRule;
-       SieveRule *Rule;
-
-       OneSieveRule = NewHash(1, Flathash);
-
-       /* We just care for our encoded header and skip everything else */
-       Rule = (SieveRule*) malloc(sizeof(SieveRule));
-       memset(Rule, 0, sizeof(SieveRule));
-       Put(OneSieveRule, IKEY(n), Rule, FreeSieveRule);
-
-       return OneSieveRule;
-}
-
 void
 SessionDetachModule_SIEVE
 (wcsession *sess)
@@ -1696,11 +1657,6 @@ InitModule_SIEVE
 
  
        RegisterIterator("SIEVE:RULES", 0, NULL, GetSieveRules, NULL, DeleteHash, CTX_SIEVESCRIPT, CTX_NONE, IT_NOFLAG);
-       RegisterIterator("SIEVE:RULE:EMPTY", 0, NULL, GetEmptySieveRule, NULL, DeleteHash, CTX_SIEVESCRIPT, CTX_NONE, IT_NOFLAG);
-/*
-<?ITERATE("SIEVE:RULE:EMPTY", ="sieve_display_one")>
-*/
-
 
        RegisterConditional(HKEY("COND:SIEVE:ACTIVE"), 1, ConditionalSieveRule_Active, CTX_SIEVESCRIPT);
        RegisterConditional(HKEY("COND:SIEVE:HFIELD"), 1, ConditionalSieveRule_hfield, CTX_SIEVESCRIPT);
@@ -1710,15 +1666,12 @@ InitModule_SIEVE
        RegisterConditional(HKEY("COND:SIEVE:FINAL"), 1, ConditionalSieveRule_final, CTX_SIEVESCRIPT);
        RegisterConditional(HKEY("COND:SIEVE:THISROOM"), 1, ConditionalSieveRule_ThisRoom, CTX_SIEVESCRIPT);
 
-       //RegisterNamespace("SIEVE:SCRIPT:HFIELD", 0, 1, tmplput_SieveRule_hfield, NULL, CTX_SIEVESCRIPT);
-       //RegisterNamespace("SIEVE:SCRIPT:COMPARE", 0, 1, tmplput_SieveRule_compare, NULL, CTX_SIEVESCRIPT);
        RegisterNamespace("SIEVE:SCRIPT:HTEXT", 0, 1, tmplput_SieveRule_htext, NULL, CTX_SIEVESCRIPT);
        RegisterNamespace("SIEVE:SCRIPT:SIZE", 0, 1, tmplput_SieveRule_sizeval, NULL, CTX_SIEVESCRIPT);
-       ///RegisterNamespace("SIEVE:SCRIPT:ACTION", 0, 1, tmplput_SieveRule_action, NULL, CTX_SIEVESCRIPT);
        RegisterNamespace("SIEVE:SCRIPT:FILEINTO", 0, 1, tmplput_SieveRule_fileinto, NULL, CTX_SIEVESCRIPT);
        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);