]> code.citadel.org Git - citadel.git/blobdiff - webcit/msg_renderers.c
* output the mime type of the tepmlate in read_message so we can have different ones
[citadel.git] / webcit / msg_renderers.c
index b401ea7595a6dc6f1aa0f545e6fd935a18c1e3cb..3f774992cbc7e460b9c1136e71bd03d1d411b01d 100644 (file)
@@ -441,7 +441,7 @@ void tmplput_MAIL_SUMM_DATE_BRIEF(StrBuf *Target, WCTemplputParams *TP)
 {
        char datebuf[64];
        message_summary *Msg = (message_summary*) CTX;
-       webcit_fmt_date(datebuf, Msg->date, DATEFMT_BRIEF);
+       webcit_fmt_date(datebuf, 64, Msg->date, DATEFMT_BRIEF);
        StrBufAppendBufPlain(Target, datebuf, -1, 0);
 }
 
@@ -449,7 +449,7 @@ void tmplput_MAIL_SUMM_DATE_FULL(StrBuf *Target, WCTemplputParams *TP)
 {
        char datebuf[64];
        message_summary *Msg = (message_summary*) CTX;
-       webcit_fmt_date(datebuf, Msg->date, DATEFMT_FULL);
+       webcit_fmt_date(datebuf, 64, Msg->date, DATEFMT_FULL);
        StrBufAppendBufPlain(Target, datebuf, -1, 0);
 }
 void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, WCTemplputParams *TP)
@@ -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, 0, Mime->PartNum);
+       read_message(Mime->Data, HKEY("view_submessage"), Mime->msgnum, Mime->PartNum, &TemplateMime);
 /*
        if ( (!IsEmptyStr(mime_submessages)) && (!section[0]) ) {
                for (i=0; i<num_tokens(mime_submessages, '|'); ++i) {
@@ -495,13 +497,42 @@ void render_MIME_VCard(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundC
                }
 
                /* In all cases, display the full card */
-               display_vcard(Buf, ChrPtr(Mime->Data), 0, 1, NULL, Mime->msgnum);
+               display_vcard(Buf, Mime->Data, 0, 1, NULL, Mime->msgnum);
                FreeStrBuf(&Mime->Data);
                Mime->Data = Buf;
        }
 
 }
 
+void render_MIME_VNote(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+{
+       MimeLoadData(Mime);
+       if (StrLength(Mime->Data) > 0) {
+               struct vnote *v;
+               StrBuf *Buf;
+
+               Buf = NewStrBuf();
+               v = vnote_new_from_str(ChrPtr(Mime->Data));
+               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);
+                       
+                       FreeStrBuf(&Mime->Data);
+                       Mime->Data = Buf;
+               }
+               else
+                       FlushStrBuf(Mime->Data);
+       }
+
+}
+
 void render_MIME_ICS(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
 {
        if (StrLength(Mime->Data) == 0) {
@@ -746,12 +777,13 @@ int Conditional_MAIL_MIME_ATTACH(StrBuf *Target, WCTemplputParams *TP)
 /*----------------------------------------------------------------------------*/
 void tmplput_QUOTED_MAIL_BODY(StrBuf *Target, WCTemplputParams *TP)
 {
+       const StrBuf *Mime;
         long MsgNum;
        StrBuf *Buf;
 
        MsgNum = LBstr(TKEY(0));
        Buf = NewStrBuf();
-       read_message(Buf, HKEY("view_message_replyquote"), MsgNum, 0, NULL);
+       read_message(Buf, HKEY("view_message_replyquote"), MsgNum, NULL, &Mime);
        StrBufAppendTemplate(Target, TP, Buf, 1);
        FreeStrBuf(&Buf);
 }
@@ -1179,6 +1211,7 @@ InitModule_MSGRENDERERS
 
        /* mime renderers translate an attachment into webcit viewable html text */
        RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL);
+       RegisterMimeRenderer(HKEY("text/vnote"), render_MIME_VNote);
        RegisterMimeRenderer(HKEY("text/x-vcard"), render_MIME_VCard);
        RegisterMimeRenderer(HKEY("text/vcard"), render_MIME_VCard);
        RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS);
@@ -1217,3 +1250,28 @@ InitModule_MSGRENDERERS
        RegisterMsgHdr(HKEY("suff"), examine_suff, 0);
        RegisterMsgHdr(HKEY("path"), examine_path, 0);
 }
+
+void 
+ServerStartModule_MSGRENDERERS
+(void)
+{
+       MsgHeaderHandler = NewHash(1, NULL);
+       MimeRenderHandler = NewHash(1, NULL);
+}
+
+void 
+ServerShutdownModule_MSGRENDERERS
+(void)
+{
+       DeleteHash(&MsgHeaderHandler);
+       DeleteHash(&MimeRenderHandler);
+}
+
+
+
+void 
+SessionDestroyModule_MSGRENDERERS
+(wcsession *sess)
+{
+       DeleteHash(&sess->attachments);
+}