From: Wilfried Göesgens Date: Wed, 13 May 2009 21:51:12 +0000 (+0000) Subject: * output the mime type of the tepmlate in read_message so we can have different ones X-Git-Tag: v7.86~1171 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=ab56ffdeaf94733bbfaf3b2d2852592852580ab3 * output the mime type of the tepmlate in read_message so we can have different ones * switch msg to set the mimetype of the template * add eDELETE HTTP Command to msg so we can do exactly that in this situation. previously executed stuff needs to let this through to there. --- diff --git a/webcit/messages.c b/webcit/messages.c index 97d7f02fb..6b683a1e6 100644 --- a/webcit/messages.c +++ b/webcit/messages.c @@ -206,7 +206,7 @@ int load_message(message_summary *Msg, * printable_view Nonzero to display a printable view * section Optional for encapsulated message/rfc822 submessage */ -int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, const StrBuf *PartNum) +int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, const StrBuf *PartNum, const StrBuf **OutMime) { StrBuf *Buf; StrBuf *FoundCharset; @@ -267,7 +267,7 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, co memset(&SubTP, 0, sizeof(WCTemplputParams)); SubTP.Filter.ContextType = CTX_MAILSUM; SubTP.Context = Msg; - DoTemplate(tmpl, tmpllen, Target, &SubTP); + *OutMime = DoTemplate(tmpl, tmpllen, Target, &SubTP); DestroyMessageSummary(Msg); FreeStrBuf(&FoundCharset); @@ -287,15 +287,40 @@ int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, co * msgnum_as_string == Message number, as a string instead of as a long int */ void embed_message(void) { + const StrBuf *Mime; long msgnum = 0L; wcsession *WCC = WC; - const StrBuf *Tmpl = sbstr("template"); + const StrBuf *Tmpl; + StrBuf *CmdBuf = NULL; msgnum = StrTol(WCC->UrlFragment2); - if (StrLength(Tmpl) > 0) - read_message(WCC->WBuf, SKEY(Tmpl), msgnum, NULL); - else - read_message(WCC->WBuf, HKEY("view_message"), msgnum, NULL); + switch (WCC->eReqType) + { + case eGET: + case ePOST: + Tmpl = sbstr("template"); + if (StrLength(Tmpl) > 0) + read_message(WCC->WBuf, SKEY(Tmpl), msgnum, NULL, &Mime); + else + read_message(WCC->WBuf, HKEY("view_message"), msgnum, NULL, &Mime); + http_transmit_thing(ChrPtr(Mime), 0); + break; + case eDELETE: + CmdBuf = NewStrBuf (); + if (WCC->wc_is_trash) { /** Delete from Trash is a real delete */ + serv_printf("DELE %ld", msgnum); + } + else { /** Otherwise move it to Trash */ + serv_printf("MOVE %ld|_TRASH_|0", msgnum); + } + StrBuf_ServGetln(CmdBuf); + FlushStrBuf(WCC->ImportantMsg); + StrBufAppendBuf(WCC->ImportantMsg, CmdBuf, 4); + break; + default: + break; + + } } @@ -306,6 +331,7 @@ void embed_message(void) { */ void print_message(void) { long msgnum = 0L; + const StrBuf *Mime; msgnum = StrTol(WC->UrlFragment2); output_headers(0, 0, 0, 0, 0, 0); @@ -316,7 +342,7 @@ void print_message(void) { begin_burst(); - read_message(WC->WBuf, HKEY("view_message_print"), msgnum, NULL); + read_message(WC->WBuf, HKEY("view_message_print"), msgnum, NULL, &Mime); wDumpContent(0); } @@ -326,14 +352,17 @@ void print_message(void) { * * @param msg_num_as_string Message number as a string instead of as a long int */ -void mobile_message_view(void) { - long msgnum = 0L; - msgnum = StrTol(WC->UrlFragment2); - output_headers(1, 0, 0, 0, 0, 1); - begin_burst(); - do_template("msgcontrols", NULL); - read_message(WC->WBuf, HKEY("view_message"), msgnum, NULL); - wDumpContent(0); +void mobile_message_view(void) +{ + long msgnum = 0L; + const StrBuf *Mime; + + msgnum = StrTol(WC->UrlFragment2); + output_headers(1, 0, 0, 0, 0, 1); + begin_burst(); + do_template("msgcontrols", NULL); + read_message(WC->WBuf, HKEY("view_message"), msgnum, NULL, &Mime); + wDumpContent(0); } /** @@ -693,6 +722,7 @@ void readloop(long oper) int defaultsortorder = 0; WCTemplputParams SubTP; char *ab_name; + const StrBuf *Mime; if (havebstr("is_summary") && (1 == (ibstr("is_summary")))) WCC->wc_view = VIEW_MAILBOX; @@ -926,7 +956,7 @@ void readloop(long oper) /** if we do a split bbview in the future, begin messages div here */ for (a=0; aWBuf, HKEY("view_message"), displayed_msgs[a], NULL); + read_message(WCC->WBuf, HKEY("view_message"), displayed_msgs[a], NULL, &Mime); } /** if we do a split bbview in the future, end messages div here */ @@ -960,7 +990,7 @@ DONE: break; case VIEW_ADDRESSBOOK: if (is_singlecard) - read_message(WC->WBuf, HKEY("view_message"), lbstr("startmsg"), NULL); + read_message(WC->WBuf, HKEY("view_message"), lbstr("startmsg"), NULL, &Mime); else do_addrbook_view(addrbook, num_ab); /** Render the address book */ break; @@ -1752,7 +1782,7 @@ InitModule_MSG WebcitAddUrlHandler(HKEY("move_msg"), move_msg, 0); WebcitAddUrlHandler(HKEY("delete_msg"), delete_msg, 0); WebcitAddUrlHandler(HKEY("confirm_move_msg"), confirm_move_msg, 0); - WebcitAddUrlHandler(HKEY("msg"), embed_message, NEED_URL|AJAX); + WebcitAddUrlHandler(HKEY("msg"), embed_message, NEED_URL); WebcitAddUrlHandler(HKEY("printmsg"), print_message, NEED_URL); WebcitAddUrlHandler(HKEY("mobilemsg"), mobile_message_view, NEED_URL); WebcitAddUrlHandler(HKEY("msgheaders"), display_headers, NEED_URL); diff --git a/webcit/messages.h b/webcit/messages.h index c7c3c0a54..cd2e8ecfc 100644 --- a/webcit/messages.h +++ b/webcit/messages.h @@ -88,7 +88,8 @@ void readloop(long oper); int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, - const StrBuf *section); + const StrBuf *section, + const StrBuf **OutMime); int load_message(message_summary *Msg, StrBuf *FoundCharset, StrBuf **Error); diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c index f33cd782b..3f774992c 100644 --- a/webcit/msg_renderers.c +++ b/webcit/msg_renderers.c @@ -462,8 +462,10 @@ void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, WCTemplputParams *TP) void render_MAIL(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset) { + const StrBuf *TemplateMime; + Mime->Data = NewStrBufPlain(NULL, Mime->length); - read_message(Mime->Data, HKEY("view_submessage"), Mime->msgnum, Mime->PartNum); + read_message(Mime->Data, HKEY("view_submessage"), Mime->msgnum, Mime->PartNum, &TemplateMime); /* if ( (!IsEmptyStr(mime_submessages)) && (!section[0]) ) { for (i=0; i= 0L) { output_headers(1, 1, 1, 0, 0, 0); - read_message(WC->WBuf, HKEY("view_message"), msgnum, NULL); + read_message(WC->WBuf, HKEY("view_message"), msgnum, NULL, &Mime); wDumpContent(1); return; }