]> code.citadel.org Git - citadel.git/blobdiff - webcit/msg_renderers.c
Use strbuf in template token handler
[citadel.git] / webcit / msg_renderers.c
index 9c63236903813da9046d502827dc2c5930e4a8a4..d68911edcec5adc16cc0cb6e675f47734f6f7566 100644 (file)
@@ -329,6 +329,7 @@ void examine_msgn(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        CheckConvertBufs(WCC);
        FreeStrBuf(&Msg->reply_inreplyto);
        Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine));
+       Msg->reply_inreplyto_hash = ThreadIdHash(HdrLine);
        StrBuf_RFC822_2_Utf8(Msg->reply_inreplyto, 
                             HdrLine, 
                             WCC->DefaultCharset,
@@ -355,6 +356,7 @@ void examine_wefw(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        CheckConvertBufs(WCC);
        FreeStrBuf(&Msg->reply_references);
        Msg->reply_references = NewStrBufPlain(NULL, StrLength(HdrLine));
+       Msg->reply_references_hash = ThreadIdHash(HdrLine);
        StrBuf_RFC822_2_Utf8(Msg->reply_references, 
                             HdrLine, 
                             WCC->DefaultCharset, 
@@ -610,33 +612,6 @@ void render_MAIL(StrBuf *Target, WCTemplputParams *TP, 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);
-       if (StrLength(Mime->Data) > 0) {
-               StrBuf *Buf;
-               Buf = NewStrBuf();
-               /** If it's my vCard I can edit it */
-               if (    (!strcasecmp(ChrPtr(WCC->CurRoom.name), USERCONFIGROOM))
-                       || (!strcasecmp(&(ChrPtr(WCC->CurRoom.name)[11]), USERCONFIGROOM))
-                       || (WC->CurRoom.view == VIEW_ADDRESSBOOK)
-                       ) {
-                       StrBufAppendPrintf(Buf, "<a href=\"edit_vcard?msgnum=%ld?partnum=%s\">",
-                               Mime->msgnum, ChrPtr(Mime->PartNum));
-                       StrBufAppendPrintf(Buf, "[%s]</a>", _("edit"));
-               }
-
-               /* In all cases, display the full card */
-               display_vcard(Buf, Mime, 0, 1, NULL, -1);
-               FreeStrBuf(&Mime->Data);
-               Mime->Data = Buf;
-       }
-
-}
-
 void render_MIME_ICS(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
 {
        wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH);
@@ -878,29 +853,22 @@ void examine_content_type(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCh
 }
 
 
-message_summary *ReadOneMessageSummary(StrBuf *RawMessage, const char *DefaultSubject, StrBuf *FoundCharset, long MsgNum) 
+int ReadOneMessageSummary(message_summary *Msg, StrBuf *FoundCharset, StrBuf *Buf)
 {
        void *vHdr;
        headereval *Hdr;
-       message_summary      *Msg;
-       StrBuf *Buf;
        const char *buf;
        const char *ebuf;
        int nBuf;
        long len;
        
-       Buf = NewStrBuf();
-
-       serv_printf("MSG0 %ld|1", MsgNum);      /* ask for headers only */
+       serv_printf("MSG0 %ld|1", Msg->msgnum); /* ask for headers only */
        
        StrBuf_ServGetln(Buf);
-       if (GetServerStatus(Buf, NULL) == 1) {
-               FreeStrBuf(&Buf);
-               return NULL;
+       if (GetServerStatus(Buf, NULL) != 1) {
+               return 0;
        }
 
-       Msg = (message_summary*)malloc(sizeof(message_summary));
-       memset(Msg, 0, sizeof(message_summary));
        while (len = StrBuf_ServGetln(Buf),
               (len >= 0) && 
               ((len != 3)  ||
@@ -918,7 +886,7 @@ message_summary *ReadOneMessageSummary(StrBuf *RawMessage, const char *DefaultSu
                }
                else syslog(LOG_INFO, "Don't know how to handle Message Headerline [%s]", ChrPtr(Buf));
        }
-       return Msg;
+       return 1;
 }
 
 void tmplput_MAIL_SUMM_N(StrBuf *Target, WCTemplputParams *TP)
@@ -931,12 +899,20 @@ void tmplput_MAIL_SUMM_N(StrBuf *Target, WCTemplputParams *TP)
 void tmplput_MAIL_SUMM_PERMALINK(StrBuf *Target, WCTemplputParams *TP)
 {
        message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM);
-       char perma_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);
-       StrBufAppendPrintf(Target, "%s", perma_link);
+       StrBuf *perma_link;
+       const StrBuf *View;
+
+       perma_link = NewStrBufPlain(HKEY("/readfwd?go="));
+       StrBufUrlescAppend(perma_link, WC->CurRoom.name, NULL);
+       View = sbstr("view");
+       if (View != NULL) {
+               StrBufAppendBufPlain(perma_link, HKEY("?view="), 0);
+               StrBufAppendBuf(perma_link, View, 0);
+       }
+       StrBufAppendBufPlain(perma_link, HKEY("?start_reading_at="), 0);
+       StrBufAppendPrintf(perma_link, "%ld#%ld", Msg->msgnum, Msg->msgnum);
+       StrBufAppendBuf(Target, perma_link, 0);
+       FreeStrBuf(&perma_link);
 }
 
 
@@ -1212,7 +1188,6 @@ void render_MAIL_markdown(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCha
                        FreeStrBuf(&Mime->Data);
                        Mime->Data = NewStrBufPlain(md_as_html, -1);
                }
-//     free(md_as_html);
                mkd_cleanup(doc);
        }
 }
@@ -1669,8 +1644,6 @@ InitModule_MSGRENDERERS
 
        /* mime renderers translate an attachment into webcit viewable html text */
        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);