*/
#include "webcit.h"
+CtxType CTX_MAILQITEM = CTX_NONE;
+CtxType CTX_MAILQ_RCPT = CTX_NONE;
HashList *QItemHandlers = NULL;
void QItem_Handle_Recipient(OneQueItem *Item, StrBuf *Line, const char **Pos)
{
+ const char *pch;
if (Item->Current == NULL)
NewMailQEntry(Item);
if (Item->Current->Recipient == NULL)
StrBufExtract_NextToken(Item->Current->Recipient, Line, Pos, '|');
Item->Current->Status = StrBufExtractNext_int(Line, Pos, '|');
StrBufExtract_NextToken(Item->Current->StatusMessage, Line, Pos, '|');
+
+ pch = ChrPtr(Item->Current->StatusMessage);
+ while ((pch != NULL) && (*pch != '\0')) {
+ pch = strchr(pch, ';');
+ if (pch != NULL) {
+ pch ++;
+ if (*pch == ' ') {
+ StrBufPeek(Item->Current->StatusMessage,
+ pch, -1, '\n');
+ }
+ }
+ }
Item->Current = NULL; // TODO: is this always right?
}
-
-
-
-
-void render_QUEUE(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset)
+void render_QUEUE(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
{
+ wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH);
WCTemplputParams SubTP;
+ OneQueItem* Context;
- memset(&SubTP, 0, sizeof(WCTemplputParams));
- SubTP.Filter.ContextType = CTX_MAILQITEM;
- SubTP.Context = DeserializeQueueItem(Mime->Data, Mime->msgnum);
- DoTemplate(HKEY("view_mailq_message"),NULL, &SubTP);
- FreeQueItem ((OneQueItem**)&SubTP.Context);
+ Context = DeserializeQueueItem(Mime->Data, Mime->msgnum);
+ StackContext(TP, &SubTP, Context, CTX_MAILQITEM, 0, TP->Tokens);
+ {
+ DoTemplate(HKEY("view_mailq_message"), NULL, &SubTP);
+ }
+ UnStackContext(&SubTP);
+
+ FreeQueItem (&Context);
}
void
const StrBuf *Mime;
/* Not (yet?) needed here? calview *c = (calview *) *ViewSpecific; */
- read_message(WCC->WBuf, HKEY("view_mailq_message_bearer"), Msg->msgnum, NULL, &Mime);
+ read_message(WCC->WBuf, HKEY("view_mailq_message_bearer"), Msg->msgnum, NULL, &Mime, NULL);
return 0;
}
wcsession *WCC = WC;
WCTemplputParams SubTP;
+ memset(&SubTP, 0, sizeof(WCTemplputParams));
if (yesbstr("ListOnly"))
DoTemplate(HKEY("view_mailq_footer_listonly"),NULL, &SubTP);
else
InitModule_SMTP_QUEUE
(void)
{
+ RegisterCTX(CTX_MAILQITEM);
+ RegisterCTX(CTX_MAILQ_RCPT);
RegisterQItemHandler(HKEY("msgid"), QItem_Handle_MsgID);
RegisterQItemHandler(HKEY("envelope_from"), QItem_Handle_EnvelopeFrom);
RegisterNamespace("MAILQ:SUBMITTED", 0, 0, tmplput_MailQSubmitted, NULL, CTX_MAILQITEM);
RegisterNamespace("MAILQ:ENVELOPEFROM", 0, 1, tmplput_MailQEnvelopeFrom, NULL, CTX_MAILQITEM);
RegisterNamespace("MAILQ:SRCROOM", 0, 1, tmplput_MailQSourceRoom, NULL, CTX_MAILQITEM);
- RegisterConditional(HKEY("COND:MAILQ:HAVESRCROOM"), 0, Conditional_MailQ_HaveSourceRoom, CTX_MAILQITEM);
+ RegisterConditional("COND:MAILQ:HAVESRCROOM", 0, Conditional_MailQ_HaveSourceRoom, CTX_MAILQITEM);
RegisterNamespace("MAILQ:RETRY", 0, 0, tmplput_MailQRetry, NULL, CTX_MAILQITEM);
RegisterNamespace("MAILQ:RCPT:ADDR", 0, 1, tmplput_MailQRCPT, NULL, CTX_MAILQ_RCPT);
NULL,
qview_LoadMsgFromServer,
qview_RenderView_or_Tail,
- qview_Cleanup);
+ qview_Cleanup,
+ NULL);
}