X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Froomops.c;h=99527f1314ba779dfad03cd49509b6e851705a6e;hb=a01ee562094720e6f45f284e1536897bbd0f3b03;hp=10beb732d400f4b162dc848e369674cae5afc446;hpb=861c24fd883fcb626ade4c729aba590af48d8d14;p=citadel.git diff --git a/webcit/roomops.c b/webcit/roomops.c index 10beb732d..99527f131 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -4008,6 +4008,47 @@ int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP) (WCC->is_mailbox) )); } +int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP) +{ + wcsession *WCC = WC; + + if ((WCC == NULL) || + (TP->Tokens->nParameters < 3) || + (TP->Tokens->Params[2]->Type != TYPE_STR)|| + (TP->Tokens->Params[2]->len < 7)) + return 0; + + switch(WCC->wc_view) { + case VIEW_BBS: + return TP->Tokens->Params[2]->Start[7]=='B'; + case VIEW_MAILBOX: + return TP->Tokens->Params[2]->Start[7]=='M'; + case VIEW_ADDRESSBOOK: + return TP->Tokens->Params[2]->Start[7]=='A'; + case VIEW_TASKS: + return TP->Tokens->Params[2]->Start[7]=='T'; + case VIEW_NOTES: + return TP->Tokens->Params[2]->Start[7]=='N'; + case VIEW_WIKI: + return TP->Tokens->Params[2]->Start[7]=='W'; + case VIEW_JOURNAL: + return TP->Tokens->Params[2]->Start[7]=='J'; + + case VIEW_CALENDAR: + if (TP->Tokens->Params[2]->len < 13) + return 0; + return TP->Tokens->Params[2]->Start[10]=='E'; + + case VIEW_CALBRIEF: + if (TP->Tokens->Params[3]->len < 13) + return 0; + return TP->Tokens->Params[2]->Start[10]=='B'; + + default: + return 0; + } +} + void InitModule_ROOMOPS (void) @@ -4046,6 +4087,7 @@ InitModule_ROOMOPS WebcitAddUrlHandler(HKEY("json_roomflr"), jsonRoomFlr, 0); RegisterNamespace("ROOMBANNER", 0, 1, tmplput_roombanner, 0); + RegisterConditional(HKEY("COND:ROOM:TYPE_IS"), 0, ConditionalIsRoomtype, CTX_NONE); RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PERMANENT"), 0, ConditionalRoomHas_QR_PERMANENT, CTX_NONE); RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_INUSE"), 0, ConditionalRoomHas_QR_INUSE, CTX_NONE); RegisterConditional(HKEY("COND:ROOM:FLAGS:QR_PRIVATE"), 0, ConditionalRoomHas_QR_PRIVATE, CTX_NONE);