]> code.citadel.org Git - citadel.git/blobdiff - webcit/msg_renderers.c
* fix Re:/Fw mechnics for email replying/forwarding... Should that be case insensitive?
[citadel.git] / webcit / msg_renderers.c
index 03b8191525a59ec1cad975e9328525a2d3d4f31b..2d1e63f609d01cd7b4615495155c3fe68b7631e9 100644 (file)
@@ -261,8 +261,6 @@ void tmplput_MAIL_SUMM_FROM(StrBuf *Target, WCTemplputParams *TP)
        StrBufAppendTemplate(Target, TP, Msg->from, 0);
 }
 
-
-
 void examine_subj(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
 {
        FreeStrBuf(&Msg->subj);
@@ -270,14 +268,29 @@ void examine_subj(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset)
        StrBuf_RFC822_to_Utf8(Msg->subj, HdrLine, WC->DefaultCharset, FoundCharset);
 }
 void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, WCTemplputParams *TP)
-{/*////TODO: Fwd: and RE: filter!!*/
-
+{
        message_summary *Msg = (message_summary*) CTX;
+
+       if (TP->Tokens->nParameters == 4)
+       {
+               const char *pch;
+               long len;
+               
+               GetTemplateTokenString(Target, TP, 3, &pch, &len);
+               if ((len > 0)&&
+                   (strstr(ChrPtr(Msg->subj), pch) == NULL))
+               {
+                       GetTemplateTokenString(Target, TP, 2, &pch, &len);
+                       StrBufAppendBufPlain(Target, pch, len, 0);
+               }
+       }
        StrBufAppendTemplate(Target, TP, Msg->subj, 0);
 }
 int Conditional_MAIL_SUMM_SUBJECT(StrBuf *Target, WCTemplputParams *TP)
 {
        message_summary *Msg = (message_summary*) CTX;
+
+
        return StrLength(Msg->subj) > 0;
 }
 
@@ -1208,7 +1221,23 @@ int ParseMessageListHeaders_Detail(StrBuf *Line,
         */
        StrBufSkip_NTokenS(Line, pos, '|', 1);
        Msg->subj = NewStrBufPlain(NULL, StrLength(Line));
+
+       FlushStrBuf(ConversionBuffer);
+       /* we assume the subject is the last parameter inside of the list; 
+        * thus we don't use the tokenizer to fetch it, since it will hick up 
+        * on tokenizer chars inside of the subjects
        StrBufExtract_NextToken(ConversionBuffer,  Line, pos, '|');
+       */
+       if (*pos != StrBufNOTNULL) {
+               StrBufPlain(ConversionBuffer, *pos, 
+                           StrLength(Line) - (*pos - ChrPtr(Line)));
+               *pos = StrBufNOTNULL;
+               if ((StrLength(ConversionBuffer) > 0) &&
+                   (*(ChrPtr(ConversionBuffer) + 
+                      StrLength(ConversionBuffer) - 1) == '|'))
+                       StrBufCutRight(ConversionBuffer, 1);
+       }
+
        if (StrLength(ConversionBuffer) == 0)
                StrBufAppendBufPlain(Msg->subj, _("(no subject)"), -1,0);
        else {