X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fmsg_renderers.c;h=47d749b266e43268ee0a84181c8b50eed2c6ddfd;hb=74210f758b7a01766b7a84bf02015469e98f2105;hp=3e5c29fcef4d1c93ee0e575c381161bbe0c10cba;hpb=8fae1a3f7a2c53606f1c7418637f141e424e5b26;p=citadel.git
diff --git a/webcit/msg_renderers.c b/webcit/msg_renderers.c
index 3e5c29fce..47d749b26 100644
--- a/webcit/msg_renderers.c
+++ b/webcit/msg_renderers.c
@@ -2,7 +2,8 @@
#include "webserver.h"
#include "dav.h"
-
+CtxType CTX_MAILSUM = CTX_NONE;
+CtxType CTX_MIME_ATACH = CTX_NONE;
inline void CheckConvertBufs(struct wcsession *WCC)
{
@@ -570,8 +571,9 @@ void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, WCTemplputParams *TP)
-void render_MAIL(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MAIL(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
const StrBuf *TemplateMime;
if (Mime->Data == NULL)
@@ -592,8 +594,9 @@ void render_MAIL(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset
*/
}
-void render_MIME_VCard(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MIME_VCard(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
wcsession *WCC = WC;
if (StrLength(Mime->Data) == 0)
MimeLoadData(Mime);
@@ -618,42 +621,9 @@ void render_MIME_VCard(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundC
}
-void render_MIME_VNote(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
-{
- if (StrLength(Mime->Data) == 0)
- MimeLoadData(Mime);
- if (StrLength(Mime->Data) > 0) {
- struct vnote *v;
- StrBuf *Buf;
- char *vcard;
-
- Buf = NewStrBuf();
- vcard = SmashStrBuf(&Mime->Data);
- v = vnote_new_from_str(vcard);
- free (vcard);
- if (v) {
- WCTemplputParams TP;
-
- memset(&TP, 0, sizeof(WCTemplputParams));
- TP.Filter.ContextType = CTX_VNOTE;
- TP.Context = v;
- DoTemplate(HKEY("mail_vnoteitem"),
- Buf, &TP);
-
- vnote_free(v);
- Mime->Data = Buf;
- }
- else {
- if (Mime->Data == NULL)
- Mime->Data = NewStrBuf();
- else
- FlushStrBuf(Mime->Data);
- }
- }
-}
-
-void render_MIME_ICS(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MIME_ICS(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
if (StrLength(Mime->Data) == 0) {
MimeLoadData(Mime);
}
@@ -744,8 +714,10 @@ void examine_mime_part(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundChars
}
-void evaluate_mime_part(message_summary *Msg, wc_mime_attachment *Mime)
+void evaluate_mime_part(StrBuf *Target, WCTemplputParams *TP)
{
+ message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
void *vMimeRenderer;
/* just print the root-node */
@@ -989,23 +961,25 @@ void tmplput_MAIL_BODY(StrBuf *Target, WCTemplputParams *TP)
}
-void render_MAIL_variformat(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MAIL_variformat(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
/* Messages in legacy Citadel variformat get handled thusly... */
- StrBuf *Target = NewStrBufPlain(NULL, StrLength(Mime->Data));
- FmOut(Target, "JUSTIFY", Mime->Data);
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
+ StrBuf *TTarget = NewStrBufPlain(NULL, StrLength(Mime->Data));
+ FmOut(TTarget, "JUSTIFY", Mime->Data);
FreeStrBuf(&Mime->Data);
- Mime->Data = Target;
+ Mime->Data = TTarget;
}
-void render_MAIL_text_plain(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MAIL_text_plain(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
const char *ptr, *pte;
const char *BufPtr = NULL;
StrBuf *Line;
StrBuf *Line1;
StrBuf *Line2;
- StrBuf *Target;
+ StrBuf *TTarget;
long Linecount;
long nEmptyLines;
int bn = 0;
@@ -1052,7 +1026,7 @@ void render_MAIL_text_plain(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *F
Line = NewStrBufPlain(NULL, SIZ);
Line1 = NewStrBufPlain(NULL, SIZ);
Line2 = NewStrBufPlain(NULL, SIZ);
- Target = NewStrBufPlain(NULL, StrLength(Mime->Data));
+ TTarget = NewStrBufPlain(NULL, StrLength(Mime->Data));
Linecount = 0;
nEmptyLines = 0;
if (StrLength(Mime->Data) > 0)
@@ -1079,26 +1053,26 @@ void render_MAIL_text_plain(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *F
if (StrLength(Line) == 0) {
if (Linecount == 0)
continue;
- StrBufAppendBufPlain(Target, HKEY("
\n"), 0);
+ StrBufAppendBufPlain(TTarget, HKEY("
\n"), 0);
nEmptyLines ++;
continue;
}
nEmptyLines = 0;
for (i = bn; i < bq; i++)
- StrBufAppendBufPlain(Target, HKEY("
"), 0);
+ StrBufAppendBufPlain(TTarget, HKEY(""), 0);
for (i = bq; i < bn; i++)
- StrBufAppendBufPlain(Target, HKEY("
"), 0);
+ StrBufAppendBufPlain(TTarget, HKEY("
"), 0);
#ifdef HAVE_ICONV
if (ConvertIt) {
StrBufConvert(Line, Line1, &ic);
}
#endif
- StrBufAppendBufPlain(Target, HKEY(""), 0);
+ StrBufAppendBufPlain(TTarget, HKEY(""), 0);
UrlizeText(Line1, Line, Line2);
- StrEscAppend(Target, Line1, NULL, 0, 0);
- StrBufAppendBufPlain(Target, HKEY("
\n"), 0);
+ StrEscAppend(TTarget, Line1, NULL, 0, 0);
+ StrBufAppendBufPlain(TTarget, HKEY("
\n"), 0);
bn = bq;
Linecount ++;
}
@@ -1106,11 +1080,11 @@ void render_MAIL_text_plain(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *F
(BufPtr != NULL));
if (nEmptyLines > 0)
- StrBufCutRight(Target, nEmptyLines * (sizeof ("
\n") - 1));
+ StrBufCutRight(TTarget, nEmptyLines * (sizeof ("
\n") - 1));
for (i = 0; i < bn; i++)
- StrBufAppendBufPlain(Target, HKEY(""), 0);
+ StrBufAppendBufPlain(TTarget, HKEY(""), 0);
- StrBufAppendBufPlain(Target, HKEY("
"), 0);
+ StrBufAppendBufPlain(TTarget, HKEY("
"), 0);
#ifdef HAVE_ICONV
if (ic != (iconv_t)(-1) ) {
iconv_close(ic);
@@ -1118,7 +1092,7 @@ void render_MAIL_text_plain(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *F
#endif
FreeStrBuf(&Mime->Data);
- Mime->Data = Target;
+ Mime->Data = TTarget;
FlushStrBuf(Mime->ContentType);
StrBufAppendBufPlain(Mime->ContentType, HKEY("text/html"), 0);
FlushStrBuf(Mime->Charset);
@@ -1128,8 +1102,9 @@ void render_MAIL_text_plain(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *F
FreeStrBuf(&Line2);
}
-void render_MAIL_html(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MAIL_html(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
StrBuf *Buf;
if (StrLength(Mime->Data) == 0)
@@ -1146,8 +1121,9 @@ void render_MAIL_html(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCh
Mime->Data = Buf;
}
-void render_MAIL_UNKNOWN(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_MAIL_UNKNOWN(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
/* Unknown weirdness */
FlushStrBuf(Mime->Data);
StrBufAppendBufPlain(Mime->Data, _("I don't know how to display "), -1, 0);
@@ -1228,7 +1204,7 @@ void tmplput_MIME_Data(StrBuf *Target, WCTemplputParams *TP)
{
wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH);
if (mime->Renderer != NULL)
- mime->Renderer->f(mime, NULL, NULL);
+ mime->Renderer->f(Target, TP, NULL);
StrBufAppendTemplate(Target, TP, mime->Data, 0);
/* TODO: check whether we need to load it now? */
}
@@ -1481,6 +1457,8 @@ void
InitModule_MSGRENDERERS
(void)
{
+ RegisterCTX(CTX_MAILSUM);
+ RegisterCTX(CTX_MIME_ATACH);
RegisterReadLoopHandlerset(
VIEW_MAILBOX,
mailview_GetParamsGetServerCall,
@@ -1548,22 +1526,22 @@ InitModule_MSGRENDERERS
RegisterNamespace("MAIL:QUOTETEXT", 1, 2, tmplput_QUOTED_MAIL_BODY, NULL, CTX_NONE);
RegisterNamespace("MAIL:EDITTEXT", 1, 2, tmplput_EDIT_MAIL_BODY, NULL, CTX_NONE);
RegisterNamespace("MAIL:EDITWIKI", 1, 2, tmplput_EDIT_WIKI_BODY, NULL, CTX_NONE);
- RegisterConditional(HKEY("COND:MAIL:SUMM:RFCA"), 0, Conditional_MAIL_SUMM_RFCA, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:CCCC"), 0, Conditional_MAIL_SUMM_CCCC, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:REPLYTO"), 0, Conditional_MAIL_SUMM_REPLYTO, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:UNREAD"), 0, Conditional_MAIL_SUMM_UNREAD, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:H_NODE"), 0, Conditional_MAIL_SUMM_H_NODE, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:OTHERNODE"), 0, Conditional_MAIL_SUMM_OTHERNODE, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUMM:SUBJECT"), 0, Conditional_MAIL_SUMM_SUBJECT, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:ANON"), 0, Conditional_ANONYMOUS_MESSAGE, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:TO"), 0, Conditional_MAIL_SUMM_TO, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:SUBJ"), 0, Conditional_MAIL_SUMM_SUBJ, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:RFCA", 0, Conditional_MAIL_SUMM_RFCA, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:CCCC", 0, Conditional_MAIL_SUMM_CCCC, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:REPLYTO", 0, Conditional_MAIL_SUMM_REPLYTO, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:UNREAD", 0, Conditional_MAIL_SUMM_UNREAD, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:H_NODE", 0, Conditional_MAIL_SUMM_H_NODE, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:OTHERNODE", 0, Conditional_MAIL_SUMM_OTHERNODE, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUMM:SUBJECT", 0, Conditional_MAIL_SUMM_SUBJECT, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:ANON", 0, Conditional_ANONYMOUS_MESSAGE, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:TO", 0, Conditional_MAIL_SUMM_TO, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:SUBJ", 0, Conditional_MAIL_SUMM_SUBJ, CTX_MAILSUM);
/* do we have mimetypes to iterate over? */
- RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH"), 0, Conditional_MAIL_MIME_ALL, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH:SUBMESSAGES"), 0, Conditional_MAIL_MIME_SUBMESSAGES, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH:LINKS"), 0, Conditional_MAIL_MIME_ATTACHLINKS, CTX_MAILSUM);
- RegisterConditional(HKEY("COND:MAIL:MIME:ATTACH:ATT"), 0, Conditional_MAIL_MIME_ATTACH, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:MIME:ATTACH", 0, Conditional_MAIL_MIME_ALL, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:MIME:ATTACH:SUBMESSAGES", 0, Conditional_MAIL_MIME_SUBMESSAGES, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:MIME:ATTACH:LINKS", 0, Conditional_MAIL_MIME_ATTACHLINKS, CTX_MAILSUM);
+ RegisterConditional("COND:MAIL:MIME:ATTACH:ATT", 0, Conditional_MAIL_MIME_ATTACH, CTX_MAILSUM);
RegisterIterator("MAIL:MIME:ATTACH", 0, NULL, iterate_get_mime_All,
NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM, IT_NOFLAG);
RegisterIterator("MAIL:MIME:ATTACH:SUBMESSAGES", 0, NULL, iterate_get_mime_Submessages,
@@ -1594,11 +1572,12 @@ InitModule_MSGRENDERERS
/* mime renderers translate an attachment into webcit viewable html text */
RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL, 0, 150);
- RegisterMimeRenderer(HKEY("text/vnote"), render_MIME_VNote, 1, 300);
RegisterMimeRenderer(HKEY("text/x-vcard"), render_MIME_VCard, 1, 201);
RegisterMimeRenderer(HKEY("text/vcard"), render_MIME_VCard, 1, 200);
+/*
RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS, 1, 501);
RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS, 1, 500);
+//*/
RegisterMimeRenderer(HKEY("text/x-citadel-variformat"), render_MAIL_variformat, 1, 2);
RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain, 1, 3);
RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1);