]> code.citadel.org Git - citadel.git/blobdiff - webcit/msg_renderers.c
Markdown Wiki: add our prefix to relative URLs
[citadel.git] / webcit / msg_renderers.c
index 47d749b266e43268ee0a84181c8b50eed2c6ddfd..922ff6201728fabef530c1b07a8bcaf4e2db7276 100644 (file)
@@ -51,6 +51,7 @@ void DestroyMessageSummary(void *vMsg)
        FreeStrBuf(&Msg->AllRcpt);
        FreeStrBuf(&Msg->Room);
        FreeStrBuf(&Msg->Rfca);
+       FreeStrBuf(&Msg->EnvTo);
        FreeStrBuf(&Msg->OtherNode);
 
        DeleteHash(&Msg->Attachments);  /* list of Attachments */
@@ -484,6 +485,21 @@ int Conditional_MAIL_SUMM_OTHERNODE(StrBuf *Target, WCTemplputParams *TP)
        return StrLength(Msg->OtherNode) > 0;
 }
 
+void examine_nvto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
+{
+       wcsession *WCC = WC;
+
+       CheckConvertBufs(WCC);
+       FreeStrBuf(&Msg->EnvTo);
+       Msg->EnvTo = NewStrBufPlain(NULL, StrLength(HdrLine));
+       StrBuf_RFC822_2_Utf8(Msg->EnvTo, 
+                            HdrLine, 
+                            WCC->DefaultCharset, 
+                            FoundCharset,
+                            WCC->ConvertBuf1,
+                            WCC->ConvertBuf2);
+}
+
 
 void examine_rcpt(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
 {
@@ -854,7 +870,7 @@ void examine_content_type(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCh
                                Hdr = (headereval*)vHdr;
                                Hdr->evaluator(Msg, Value, FoundCharset);
                        }
-                       else syslog(1, "don't know how to handle content type sub-header[%s]\n", ChrPtr(Token));
+                       else syslog(LOG_WARNING, "don't know how to handle content type sub-header[%s]\n", ChrPtr(Token));
                }
                FreeStrBuf(&Token);
                FreeStrBuf(&Value);
@@ -1017,7 +1033,7 @@ void render_MAIL_text_plain(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundC
                else {
                        ctdl_iconv_open("UTF-8", ChrPtr(cs), &ic);
                        if (ic == (iconv_t)(-1) ) {
-                               syslog(5, "%s:%d iconv_open(UTF-8, %s) failed: %s\n",
+                               syslog(LOG_WARNING, "%s:%d iconv_open(UTF-8, %s) failed: %s\n",
                                        __FILE__, __LINE__, ChrPtr(Mime->Charset), strerror(errno));
                        }
                }
@@ -1121,6 +1137,36 @@ void render_MAIL_html(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset
        Mime->Data = Buf;
 }
 
+#ifdef HAVE_MARKDOWN
+/*
+char * MarkdownHandleURL(const char* SourceURL, const int len, void* something)
+{
+
+}
+*/
+void render_MAIL_markdown(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
+{
+#include <mkdio.h>
+       wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
+       MMIOT *doc;
+       char *md_as_html = NULL;
+
+       if (StrLength(Mime->Data) == 0)
+               return;
+
+       doc = mkd_string(ChrPtr(Mime->Data), StrLength(Mime->Data), 0);
+       mkd_basename(doc, "/wiki?page=");
+       mkd_compile(doc, 0);
+       if (mkd_document(doc, &md_as_html) != EOF) {
+               FreeStrBuf(&Mime->Data);
+               Mime->Data = NewStrBufPlain(md_as_html, -1);
+       }
+//     free(md_as_html);
+       mkd_cleanup(doc);
+
+}
+#endif
+
 void render_MAIL_UNKNOWN(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
 {
        wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
@@ -1574,7 +1620,7 @@ InitModule_MSGRENDERERS
        RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL, 0, 150);
        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);
 //*/
@@ -1582,6 +1628,9 @@ InitModule_MSGRENDERERS
        RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain, 1, 3);
        RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1);
        RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html, 1, 100);
+#ifdef HAVE_MARKDOWN
+       RegisterMimeRenderer(HKEY("text/x-markdown"), render_MAIL_markdown, 1, 30);
+#endif
        RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN, 0, 0);
 
        /* these headers are citserver replies to MSG4 and friends. one evaluator for each */
@@ -1598,6 +1647,7 @@ InitModule_MSGRENDERERS
        RegisterMsgHdr(HKEY("rfca"), examine_rfca, 0);
        RegisterMsgHdr(HKEY("node"), examine_node, 0);
        RegisterMsgHdr(HKEY("rcpt"), examine_rcpt, 0);
+       RegisterMsgHdr(HKEY("nvto"), examine_nvto, 0);
        RegisterMsgHdr(HKEY("time"), examine_time, 0);
        RegisterMsgHdr(HKEY("part"), examine_mime_part, 0);
        RegisterMsgHdr(HKEY("text"), examine_text, 1);