X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fmsg_renderers.c;h=d2de1f4bdf89313408ce64e2eff38ed9169b9876;hb=dca4414169da8ea7161d5b95fc9ccbefe5d39651;hp=10e20e90d2f2bfda4cf5baf2be49bf54f83bc62e;hpb=5dd116cf07d991263431624a735698374c6fb692;p=citadel.git diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index 10e20e90d..d2de1f4bd 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -1,6 +1,6 @@ #include "webcit.h" #include "webserver.h" -#include "groupdav.h" +#include "dav.h" @@ -869,15 +869,11 @@ void tmplput_MAIL_SUMM_PERMALINK(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX; char perma_link[1024]; - char encoded_link[1024]; strcpy(perma_link, "/readfwd?go="); urlesc(&perma_link[12], sizeof(perma_link) - 12, (char *)ChrPtr(WC->CurRoom.name) ); sprintf(&perma_link[strlen(perma_link)], "?start_reading_at=%ld#%ld", Msg->msgnum, Msg->msgnum); - - - CtdlEncodeBase64(encoded_link, perma_link, strlen(perma_link), 0); - StrBufAppendPrintf(Target, "/B64%s", encoded_link); + StrBufAppendPrintf(Target, "%s", perma_link); } @@ -942,7 +938,10 @@ void tmplput_EDIT_WIKI_BODY(StrBuf *Target, WCTemplputParams *TP) * to do it again. */ if (!havebstr("attach_button")) { - msgnum = locate_message_by_uid(BSTR("page")); + char *wikipage = strdup(bstr("page")); + str_wiki_index(wikipage); + msgnum = locate_message_by_uid(wikipage); + free(wikipage); if (msgnum >= 0L) { Buf = NewStrBuf(); read_message(Buf, HKEY("view_message_wikiedit"), msgnum, NULL, &Mime); @@ -1367,59 +1366,83 @@ int ParseMessageListHeaders_Detail(StrBuf *Line, return 1; } -/* Spit out the new summary view. This is basically a static page, so clients can cache the layout, all the dirty work is javascript :) */ -void new_summary_view(void) { - DoTemplate(HKEY("msg_listview"),NULL,&NoCtx); -} - int mailview_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, - long len) -{ - if (!WC->is_ajax) { - new_summary_view(); - return 200; - } else { - Stat->defaultsortorder = 2; - Stat->sortit = 1; - Stat->load_seen = 1; - /* Generally using maxmsgs|startmsg is not required - in mailbox view, but we have a 'safemode' for clients - (*cough* Exploder) that simply can't handle too many */ - if (havebstr("maxmsgs")) Stat->maxmsgs = ibstr("maxmsgs"); - else Stat->maxmsgs = 9999999; - if (havebstr("startmsg")) Stat->startmsg = lbstr("startmsg"); - snprintf(cmd, len, "MSGS %s|%s||1", - (oper == do_search) ? "SEARCH" : "ALL", - (oper == do_search) ? bstr("query") : "" - ); - } + long len, + char *filter, + long flen) +{ + DoTemplate(HKEY("msg_listview"),NULL,&NoCtx); + return 200; } -int mailview_RenderView_or_Tail(SharedMessageStatus *Stat, +int mailview_Cleanup(void **ViewSpecific) +{ + /* Note: wDumpContent() will output one additional tag. */ + /* We ought to move this out into template */ + wDumpContent(1); + + return 0; +} + + +int json_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, - long oper) + long oper, + char *cmd, + long len, + char *filter, + long flen) +{ + Stat->defaultsortorder = 2; + Stat->sortit = 1; + Stat->load_seen = 1; + /* Generally using maxmsgs|startmsg is not required + in mailbox view, but we have a 'safemode' for clients + (*cough* Exploder) that simply can't handle too many */ + if (havebstr("maxmsgs")) Stat->maxmsgs = ibstr("maxmsgs"); + else Stat->maxmsgs = 9999999; + if (havebstr("startmsg")) Stat->startmsg = lbstr("startmsg"); + snprintf(cmd, len, "MSGS %s|%s||1", + (oper == do_search) ? "SEARCH" : "ALL", + (oper == do_search) ? bstr("query") : "" + ); + + return 200; +} +int json_MessageListHdr(SharedMessageStatus *Stat, void **ViewSpecific) +{ + /* TODO: make a generic function */ + hprintf("HTTP/1.1 200 OK\r\n"); + hprintf("Content-type: application/json; charset=utf-8\r\n"); + hprintf("Server: %s / %s\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software)); + hprintf("Connection: close\r\n"); + hprintf("Pragma: no-cache\r\nCache-Control: no-store\r\nExpires:-1\r\n"); + begin_burst(); + return 0; +} + +int json_RenderView_or_Tail(SharedMessageStatus *Stat, + void **ViewSpecific, + long oper) { WCTemplputParams SubTP; - if (WC->is_ajax) - DoTemplate(HKEY("mailsummary_json"),NULL, &SubTP); + memset(&SubTP, 0, sizeof(WCTemplputParams)); + DoTemplate(HKEY("mailsummary_json"),NULL, &SubTP); return 0; } -int mailview_Cleanup(void **ViewSpecific) +int json_Cleanup(void **ViewSpecific) { /* Note: wDumpContent() will output one additional tag. */ /* We ought to move this out into template */ - if (WC->is_ajax) - end_burst(); - else - wDumpContent(1); + end_burst(); return 0; } @@ -1434,11 +1457,22 @@ InitModule_MSGRENDERERS VIEW_MAILBOX, mailview_GetParamsGetServerCall, NULL, /* TODO: is this right? */ + NULL, ParseMessageListHeaders_Detail, NULL, - mailview_RenderView_or_Tail, + NULL, mailview_Cleanup); + RegisterReadLoopHandlerset( + VIEW_JSON_LIST, + json_GetParamsGetServerCall, + json_MessageListHdr, + NULL, /* TODO: is this right? */ + ParseMessageListHeaders_Detail, + NULL, + json_RenderView_or_Tail, + json_Cleanup); + RegisterSortFunc(HKEY("date"), NULL, 0, summcmp_date, @@ -1540,8 +1574,6 @@ InitModule_MSGRENDERERS RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1); RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html, 1, 100); RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN, 0, 0); - /* and finalize the anouncement to the server... */ - CreateMimeStr(); /* these headers are citserver replies to MSG4 and friends. one evaluator for each */ RegisterMsgHdr(HKEY("nhdr"), examine_nhdr, 0); @@ -1572,6 +1604,13 @@ InitModule_MSGRENDERERS RegisterMsgHdr(HKEY("path"), examine_path, 0); } +void +InitModule2_MSGRENDERERS +(void) +{ + /* and finalize the anouncement to the server... */ + CreateMimeStr(); +} void ServerStartModule_MSGRENDERERS (void)