X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fsubst.c;h=7443515e7bbaec272e78ab9e83995cc85667c42e;hb=356f669e4ad23fa0fc801b0cec3ff3f05eaca070;hp=52f50f4489d3a4e9f4827c0bcbe8101b91688b91;hpb=d0c328172f7e59ea95cc1ba3b167bacdbe9f9d2e;p=citadel.git diff --git a/webcit/subst.c b/webcit/subst.c index 52f50f448..7443515e7 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -448,6 +448,7 @@ int HaveTemplateTokenString(StrBuf *Target, case TYPE_STR: case TYPE_BSTR: case TYPE_PREFSTR: + case TYPE_ROOMPREFSTR: case TYPE_GETTEXT: case TYPE_SUBTEMPLATE: return 1; @@ -509,6 +510,19 @@ void GetTemplateTokenString(StrBuf *Target, *Value = ChrPtr(Buf); *len = StrLength(Buf); break; + case TYPE_ROOMPREFSTR: + if (TP->Tokens->Params[N]->len == 0) { + LogTemplateError(Target, + "TokenParameter", N, TP, + "Requesting parameter %d; of type PREFSTR, empty lookup string not admitted.", N); + *len = 0; + *Value = EmptyStr; + break; + } + Buf = get_ROOM_PREFS(TKEY(N)); + *Value = ChrPtr(Buf); + *len = StrLength(Buf); + break; case TYPE_LONG: LogTemplateError(Target, "TokenParameter", N, TP, @@ -588,6 +602,19 @@ long GetTemplateTokenNumber(StrBuf *Target, WCTemplputParams *TP, int N, long df if (get_PREF_LONG(TKEY(N), &Ret, dflt)) return Ret; return 0; + case TYPE_ROOMPREFSTR: + LogTemplateError(Target, + "TokenParameter", N, TP, + "requesting a prefstring in param %d want a number", N); + if (TP->Tokens->Params[N]->len == 0) { + LogTemplateError(Target, + "TokenParameter", N, TP, + "Requesting parameter %d; of type PREFSTR, empty lookup string not admitted.", N); + return 0; + } + if (get_ROOM_PREFS_LONG(TKEY(N), &Ret, dflt)) + return Ret; + return 0; case TYPE_INTDEFINE: case TYPE_LONG: return TP->Tokens->Params[N]->lvalue; @@ -730,6 +757,14 @@ int GetNextParameter(StrBuf *Buf, ParamBrace = 1; } } + else if (*pch == '.') { + Parm->Type = TYPE_ROOMPREFSTR; + pch ++; + if (*pch == '(') { + pch ++; + ParamBrace = 1; + } + } else if (*pch == ';') { Parm->Type = TYPE_PREFINT; pch ++;