From: Wilfried Goesgens Date: Sun, 28 Aug 2011 07:49:19 +0000 (+0000) Subject: Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel X-Git-Tag: v8.01~63 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=7e6776db7e19e152f13599325daf51ac3b5e438a;hp=27547558109f4be7792966f9c9967fdbaa9aa027;p=citadel.git Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel --- diff --git a/webcit/listsub.c b/webcit/listsub.c index 2bb9cbb3a..d4de61bb2 100644 --- a/webcit/listsub.c +++ b/webcit/listsub.c @@ -23,6 +23,7 @@ /* * List subscription handling */ +#ifndef EXPERIMENTAL_LISTSUB void do_listsub(void) { char cmd[256]; @@ -237,13 +238,138 @@ FORM: wc_printf("
\n"); wDumpContent(0); end_webcit_session(); } +#endif +int Conditional_LISTSUB_EXECUTE_SUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) +{ + int rc; + StrBuf *Line; + const char *ImpMsg; + const StrBuf *Room, *Email, *SubType; + + Room = sbstr("room"); + if (Room == NULL) + { + ImpMsg = _("You need to specify the mailinglist to subscribe to."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + Email = sbstr("email"); + if (Email == NULL) + { + ImpMsg = _("You need to specify the email address you'd like to subscribe with."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + SubType = sbstr("subtype"); + Line = NewStrBuf(); + serv_printf("SUBS subscribe|%s|%s|%s|%s/listsub", + ChrPtr(Room), + ChrPtr(Email), + ChrPtr(SubType), + ChrPtr(site_prefix) + ); + StrBuf_ServGetln(Line); + rc = GetServerStatusMsg(Line, NULL, 1, 2); + FreeStrBuf(&Line); + if (rc == 2) + putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); + return rc == 2; +} + +int Conditional_LISTSUB_EXECUTE_UNSUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) +{ + int rc; + StrBuf *Line; + const char *ImpMsg; + const StrBuf *Room, *Email; + + Room = sbstr("room"); + if (Room == NULL) + { + ImpMsg = _("You need to specify the mailinglist to subscribe to."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + Email = sbstr("email"); + if (Email == NULL) + { + ImpMsg = _("You need to specify the email address you'd like to subscribe with."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + + serv_printf("SUBS unsubscribe|%s|%s|%s/listsub", + ChrPtr(Room), + ChrPtr(Email), + ChrPtr(site_prefix) + ); + Line = NewStrBuf(); + StrBuf_ServGetln(Line); + rc = GetServerStatusMsg(Line, NULL, 1, 2); + FreeStrBuf(&Line); + if (rc == 2) + putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); + return rc == 2; +} + +int Conditional_LISTSUB_EXECUTE_CONFIRM_SUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) +{ + int rc; + StrBuf *Line; + const char *ImpMsg; + const StrBuf *Room, *Token; + + Room = sbstr("room"); + if (Room == NULL) + { + ImpMsg = _("You need to specify the mailinglist to subscribe to."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + Token = sbstr("token"); + if (Room == NULL) + { + ImpMsg = _("You need to specify the mailinglist to subscribe to."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + + Line = NewStrBuf(); + serv_printf("SUBS confirm|%s|%s", + ChrPtr(Room), + ChrPtr(Token) + ); + StrBuf_ServGetln(Line); + rc = GetServerStatusMsg(Line, NULL, 1, 2); + FreeStrBuf(&Line); + if (rc == 2) + putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); + return rc == 2; +} + +#ifdef EXPERIMENTAL_LISTSUB +void do_listsub(void) +{ + if (!havebstr("cmd")) + { + putbstr("cmd", NewStrBufPlain(HKEY(""))); + } + output_headers(1, 0, 0, 0, 1, 0); + do_template("listsub_display"); + end_burst(); +} +#endif void InitModule_LISTSUB (void) { + RegisterConditional(HKEY("COND:LISTSUB:EXECUTE:SUBSCRIBE"), 0, Conditional_LISTSUB_EXECUTE_SUBSCRIBE, CTX_NONE); + RegisterConditional(HKEY("COND:LISTSUB:EXECUTE:UNSUBSCRIBE"), 0, Conditional_LISTSUB_EXECUTE_UNSUBSCRIBE, CTX_NONE); + RegisterConditional(HKEY("COND:LISTSUB:EXECUTE:CONFIRM:SUBSCRIBE"), 0, Conditional_LISTSUB_EXECUTE_CONFIRM_SUBSCRIBE, CTX_NONE); + WebcitAddUrlHandler(HKEY("listsub"), "", 0, do_listsub, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE); diff --git a/webcit/preferences.c b/webcit/preferences.c index 28f0b8416..f6dab3f10 100644 --- a/webcit/preferences.c +++ b/webcit/preferences.c @@ -1083,7 +1083,6 @@ void offer_start_page(StrBuf *Target, WCTemplputParams *TP) */ void change_start_page(void) { - wcsession *WCC = WC; const char *pch; void *vHandler; int ProhibitSave = 0; diff --git a/webcit/roomlist.c b/webcit/roomlist.c index 46600f9a8..3bd202b30 100644 --- a/webcit/roomlist.c +++ b/webcit/roomlist.c @@ -164,6 +164,12 @@ HashList *GetRoomListHashLKRA(StrBuf *Target, WCTemplputParams *TP) return WCC->Rooms; } +HashList *GetRoomListHashLPRM(StrBuf *Target, WCTemplputParams *TP) +{ + serv_puts("LPRM"); + return GetRoomListHash(Target, TP); +} + void FlushIgnetCfgs(folder *room) { @@ -679,6 +685,10 @@ InitModule_ROOMLIST RegisterIterator("LFLR", 0, NULL, GetFloorListHash, NULL, NULL, CTX_FLOORS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterIterator("LKRA", 0, NULL, GetRoomListHashLKRA, NULL, NULL, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterIterator("LZRM", 0, NULL, GetZappedRoomListHash, NULL, DeleteHash, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); + RegisterIterator("LPRM", 0, NULL, GetRoomListHashLPRM, NULL, DeleteHash, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); + + + RegisterConditional(HKEY("COND:ROOM:REST:ISSUBROOM"), 0, ConditionalRoomIsRESTSubRoom, CTX_ROOMS); diff --git a/webcit/static/t/listsub/display.html b/webcit/static/t/listsub/display.html new file mode 100644 index 000000000..5473bc82f --- /dev/null +++ b/webcit/static/t/listsub/display.html @@ -0,0 +1,97 @@ + + + + +<?_("List subscription")> + +
+
+ +

+ + + +
+

+ + + + + +

+ +
+ +
+ +:

+ + + + + +
+

+ + + +"" + + + +

+
+ +
+ +: +

+ + + + + +

+ +

+ +
    +
  • +
  • already successfully confirmed your subscribe/unsubscribe request and are attempting to do it again.")>
  • +
+ + + + + + + + + +

+ + + +

+ + +  +  +

+ + +

+ + +
+ + +
+ +
+ +
+ + diff --git a/webcit/static/t/listsub/subscribeable_rooms.html b/webcit/static/t/listsub/subscribeable_rooms.html new file mode 100644 index 000000000..3a757e31f --- /dev/null +++ b/webcit/static/t/listsub/subscribeable_rooms.html @@ -0,0 +1 @@ +