X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fpreferences.c;h=1155a182da6b846d68fccacde2646ec0207835f5;hb=f81a5a37a8c492f1061c8cca886d820acc9e3fb6;hp=f0a1776c1d8d058dfb8e06d35ef373017d1b8e6c;hpb=8fa4194e2733c63de7342d696983513f0828e927;p=citadel.git diff --git a/webcit/preferences.c b/webcit/preferences.c index f0a1776c1..1155a182d 100644 --- a/webcit/preferences.c +++ b/webcit/preferences.c @@ -184,6 +184,20 @@ void ParsePref(HashList **List, StrBuf *ReadBuf) Data->Val = NewStrBuf(); StrBufExtract_token(Data->Key, ReadBuf, 0, '|'); StrBufExtract_token(Data->Val, ReadBuf, 1, '|'); + + /***************** BEGIN VILE SLEAZY HACK ************************/ + + /* some users might still have this start page configured, which now breaks */ + + if ( (!strcasecmp(ChrPtr(Data->Key), "startpage")) + && (!strcasecmp(ChrPtr(Data->Val), "/do_template?template=summary_page")) + ) { + FreeStrBuf(&Data->Val); + Data->Val = NewStrBufPlain(HKEY("/summary")); + } + + /******************* END VILE SLEAZY HACK ************************/ + if (!IsEmptyStr(ChrPtr(Data->Key))) { Put(*List, @@ -989,6 +1003,28 @@ int ConditionalHasPreference(StrBuf *Target, WCTemplputParams *TP) /******************************************************************************** * preferences stored discrete in citserver ********************************************************************************/ +CtxType CTX_VEA = CTX_NONE; +typedef struct __ValidEmailAddress { + StrBuf *Address; + int IsDefault; +}ValidEmailAddress; + +void DeleteValidEmailAddress(void *v) +{ + ValidEmailAddress *VEA = (ValidEmailAddress*)v; + FreeStrBuf(&VEA->Address); + free(VEA); +} +void tmplput_VEA(StrBuf *Target, WCTemplputParams *TP) +{ + ValidEmailAddress* VEA = (ValidEmailAddress*) CTX((CTX_VEA)); + StrBufAppendTemplate(Target, TP, VEA->Address, 0); +} +int ConditionalPreferenceIsDefaulVEA(StrBuf *Target, WCTemplputParams *TP) +{ + ValidEmailAddress* VEA = (ValidEmailAddress*) CTX((CTX_VEA)); + return VEA->IsDefault; +} HashList *GetGVEAHash(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Rcp; @@ -996,7 +1032,12 @@ HashList *GetGVEAHash(StrBuf *Target, WCTemplputParams *TP) int Done = 0; int i, n = 1; char N[64]; + StrBuf *DefaultFrom = NULL; + const StrBuf *EnvelopeTo; + ValidEmailAddress *VEA; + get_preference("defaultfrom", &DefaultFrom); + EnvelopeTo = sbstr("nvto"); Rcp = NewStrBuf(); serv_puts("GVEA"); StrBuf_ServGetln(Rcp); @@ -1010,9 +1051,18 @@ HashList *GetGVEAHash(StrBuf *Target, WCTemplputParams *TP) Done = 1; } else { + VEA = (ValidEmailAddress*) malloc(sizeof(ValidEmailAddress)); i = snprintf(N, sizeof(N), "%d", n); StrBufTrim(Rcp); - Put(List, N, i, Rcp, HFreeStrBuf); + VEA->Address = Rcp; + if (EnvelopeTo != NULL) + VEA->IsDefault = strstr(ChrPtr(EnvelopeTo), ChrPtr(Rcp)) != NULL; + else if (DefaultFrom != NULL) + VEA->IsDefault = !strcmp(ChrPtr(Rcp), ChrPtr(DefaultFrom)); + else + VEA->IsDefault = 0; + + Put(List, N, i, VEA, DeleteValidEmailAddress); Rcp = NewStrBuf(); } n++; @@ -1162,6 +1212,8 @@ void InitModule_PREFERENCES (void) { + RegisterCTX(CTX_VEA); + WebcitAddUrlHandler(HKEY("set_preferences"), "", 0, set_preferences, 0); WebcitAddUrlHandler(HKEY("change_start_page"), "", 0, change_start_page, 0); @@ -1174,12 +1226,15 @@ InitModule_PREFERENCES RegisterNamespace("PREF:DESCR", 1, 1, tmplput_CFG_Descr, NULL, CTX_NONE); - RegisterConditional(HKEY("COND:PREF"), 4, ConditionalPreference, CTX_NONE); - RegisterConditional(HKEY("COND:PREF:SET"), 4, ConditionalHasPreference, CTX_NONE); - RegisterConditional(HKEY("COND:ROOM:SET"), 4, ConditionalHasRoomPreference, CTX_NONE); + RegisterConditional("COND:PREF", 4, ConditionalPreference, CTX_NONE); + RegisterConditional("COND:PREF:SET", 4, ConditionalHasPreference, CTX_NONE); + RegisterConditional("COND:ROOM:SET", 4, ConditionalHasRoomPreference, CTX_NONE); RegisterIterator("PREF:VALID:EMAIL:ADDR", 0, NULL, - GetGVEAHash, NULL, DeleteGVEAHash, CTX_STRBUF, CTX_NONE, IT_NOFLAG); + GetGVEAHash, NULL, DeleteGVEAHash, CTX_VEA, CTX_NONE, IT_NOFLAG); + RegisterNamespace("PREF:VALID:EMAIL:ADDR:STR", 1, 1, tmplput_VEA, NULL, CTX_VEA); + RegisterConditional("COND:PREF:VALID:EMAIL:ADDR:STR", 4, ConditionalPreferenceIsDefaulVEA, CTX_VEA); + RegisterIterator("PREF:VALID:EMAIL:NAME", 0, NULL, GetGVSNHash, NULL, DeleteGVSNHash, CTX_STRBUF, CTX_NONE, IT_NOFLAG);