");
- wprintf("%ld ", msgnum);
- wprintf(" %s",
- msgnum, msgid, _("(Delete)")
- );
+void tmplput_MailQID(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ StrBufAppendPrintf(Target, "%ld", Item->QueMsgID);;
+}
+void tmplput_MailQPayloadID(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ StrBufAppendPrintf(Target, "%ld", Item->MessageID);
+}
+void tmplput_MailQBounceTo(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ StrBufAppendTemplate(Target, TP, Item->BounceTo, 0);
+}
+void tmplput_MailQAttempted(StrBuf *Target, WCTemplputParams *TP)
+{
+ char datebuf[64];
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ webcit_fmt_date(datebuf, 64, Item->ReattemptWhen, DATEFMT_BRIEF);
+ StrBufAppendBufPlain(Target, datebuf, -1, 0);
+}
+void tmplput_MailQSubmitted(StrBuf *Target, WCTemplputParams *TP)
+{
+ char datebuf[64];
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ webcit_fmt_date(datebuf, 64, Item->Submitted, DATEFMT_BRIEF);
+ StrBufAppendBufPlain(Target, datebuf, -1, 0);
+}
+void tmplput_MailQEnvelopeFrom(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ StrBufAppendTemplate(Target, TP, Item->EnvelopeFrom, 0);
+}
+void tmplput_MailQSourceRoom(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ StrBufAppendTemplate(Target, TP, Item->SenderRoom, 0);
+}
- wprintf(" | ");
- if (submitted > 0) {
- fmt_date(buf, submitted, 1);
- wprintf("%s", buf);
- }
- else {
- wprintf(" ");
- }
+int Conditional_MailQ_HaveSourceRoom(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ return StrLength(Item->SenderRoom) > 0;
+}
- wprintf(" | ");
- if (last_attempt > 0) {
- fmt_date(buf, last_attempt, 1);
- wprintf("%s", buf);
+void tmplput_MailQRetry(StrBuf *Target, WCTemplputParams *TP)
+{
+ char datebuf[64];
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+
+ if (Item->Retry == 0) {
+ StrBufAppendBufPlain(Target, _("First Attempt pending"), -1, 0);
}
else {
- wprintf(" ");
+ webcit_fmt_date(datebuf, sizeof(datebuf), Item->Retry, DATEFMT_BRIEF);
+ StrBufAppendBufPlain(Target, datebuf, -1, 0);
}
+}
- wprintf(" | ");
- escputs(sender);
+void tmplput_MailQRCPT(StrBuf *Target, WCTemplputParams *TP)
+{
+ MailQEntry *Entry = (MailQEntry*) CTX(CTX_MAILQ_RCPT);
+ StrBufAppendTemplate(Target, TP, Entry->Recipient, 0);
+}
+void tmplput_MailQRCPTStatus(StrBuf *Target, WCTemplputParams *TP)
+{
+ MailQEntry *Entry = (MailQEntry*) CTX(CTX_MAILQ_RCPT);
+ StrBufAppendPrintf(Target, "%ld", Entry->Status);
+}
+void tmplput_MailQStatusMsg(StrBuf *Target, WCTemplputParams *TP)
+{
+ MailQEntry *Entry = (MailQEntry*) CTX(CTX_MAILQ_RCPT);
+ StrBufAppendTemplate(Target, TP, Entry->StatusMessage, 0);
+}
+
+HashList *iterate_get_Recipients(StrBuf *Target, WCTemplputParams *TP)
+{
+ OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM);
+ return Item->MailQEntries;
+}
- wprintf(" | ");
- wprintf("%s", recipients);
- wprintf(" |
\n");
+void NewMailQEntry(OneQueItem *Item)
+{
+ Item->Current = (MailQEntry*) malloc(sizeof(MailQEntry));
+ memset(Item->Current, 0, sizeof(MailQEntry));
+
+ if (Item->MailQEntries == NULL)
+ Item->MailQEntries = NewHash(1, Flathash);
+ Item->Current->StatusMessage = NewStrBuf();
+ Item->Current->n = GetCount(Item->MailQEntries);
+ Put(Item->MailQEntries,
+ IKEY(Item->Current->n),
+ Item->Current,
+ FreeMailQEntry);
}
+void QItem_Handle_MsgID(OneQueItem *Item, StrBuf *Line, const char **Pos)
+{
+ Item->MessageID = StrBufExtractNext_long(Line, Pos, '|');
+}
-void display_smtpqueue_inner_div(void) {
- int i;
- int num_msgs;
+void QItem_Handle_EnvelopeFrom(OneQueItem *Item, StrBuf *Line, const char **Pos)
+{
+ if (Item->EnvelopeFrom == NULL)
+ Item->EnvelopeFrom = NewStrBufPlain(NULL, StrLength(Line));
+ StrBufExtract_NextToken(Item->EnvelopeFrom, Line, Pos, '|');
+}
- /* Check to see if we can go to the __CitadelSMTPspoolout__ room.
- * If not, we don't have access to the queue.
- */
- gotoroom("__CitadelSMTPspoolout__");
- if (!strcasecmp(WC->wc_roomname, "__CitadelSMTPspoolout__")) {
-
- num_msgs = load_msg_ptrs("MSGS ALL", 0);
- if (num_msgs > 0) {
- wprintf("");
- wprintf(_("You do not have permission to view this resource."));
- wprintf("
\n");
+int qview_PrintPageHeader(SharedMessageStatus *Stat, void **ViewSpecific)
+{
+ if (yesbstr("ListOnly"))
+ output_headers(1, 0, 0, 0, 0, 0);
+ else
+ output_headers(1, 1, 1, 0, 0, 0);
+ return 0;
+}
- wprintf("
\n", _("Refresh this page")
- );
- wDumpContent(1);
+ /* Not (yet?) needed here? calview *c = (calview *) *ViewSpecific; */
+ read_message(WCC->WBuf, HKEY("view_mailq_message_bearer"), Msg->msgnum, NULL, &Mime);
+ return 0;
}
+int qview_RenderView_or_Tail(SharedMessageStatus *Stat,
+ void **ViewSpecific,
+ long oper)
+{
+ wcsession *WCC = WC;
+ WCTemplputParams SubTP;
+
+ if (yesbstr("ListOnly"))
+ DoTemplate(HKEY("view_mailq_footer_listonly"),NULL, &SubTP);
+ else
+ {
+ if (GetCount(WCC->summ) == 0)
+ DoTemplate(HKEY("view_mailq_footer_empty"),NULL, &SubTP);
+ else
+ DoTemplate(HKEY("view_mailq_footer"),NULL, &SubTP);
+ }
+
+ return 0;
+}
+int qview_Cleanup(void **ViewSpecific)
+{
+
+ wDumpContent(yesbstr("ListOnly")?0:1);
+ return 0;
+}
+void
+InitModule_SMTP_QUEUE
+(void)
+{
+ RegisterCTX(CTX_MAILQITEM);
+ RegisterCTX(CTX_MAILQ_RCPT);
+
+ RegisterQItemHandler(HKEY("msgid"), QItem_Handle_MsgID);
+ RegisterQItemHandler(HKEY("envelope_from"), QItem_Handle_EnvelopeFrom);
+ RegisterQItemHandler(HKEY("retry"), QItem_Handle_retry);
+ RegisterQItemHandler(HKEY("attempted"), QItem_Handle_Attempted);
+ RegisterQItemHandler(HKEY("remote"), QItem_Handle_Recipient);
+ RegisterQItemHandler(HKEY("bounceto"), QItem_Handle_BounceTo);
+ RegisterQItemHandler(HKEY("source_room"), QItem_Handle_SenderRoom);
+ RegisterQItemHandler(HKEY("submitted"), QItem_Handle_Submitted);
+ RegisterMimeRenderer(HKEY("application/x-citadel-delivery-list"), render_QUEUE, 1, 9000);
+ RegisterNamespace("MAILQ:ID", 0, 0, tmplput_MailQID, NULL, CTX_MAILQITEM);
+ RegisterNamespace("MAILQ:PAYLOAD:ID", 0, 0, tmplput_MailQPayloadID, NULL, CTX_MAILQITEM);
+ RegisterNamespace("MAILQ:BOUNCETO", 0, 1, tmplput_MailQBounceTo, NULL, CTX_MAILQITEM);
+ RegisterNamespace("MAILQ:ATTEMPTED", 0, 0, tmplput_MailQAttempted, NULL, CTX_MAILQITEM);
+ 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("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);
+ RegisterNamespace("MAILQ:RCPT:STATUS", 0, 0, tmplput_MailQRCPTStatus, NULL, CTX_MAILQ_RCPT);
+ RegisterNamespace("MAILQ:RCPT:STATUSMSG", 0, 1, tmplput_MailQStatusMsg, NULL, CTX_MAILQ_RCPT);
+
+ RegisterIterator("MAILQ:RCPT", 0, NULL, iterate_get_Recipients,
+ NULL, NULL, CTX_MAILQ_RCPT, CTX_MAILQITEM, IT_NOFLAG);
+
+
+ RegisterReadLoopHandlerset(
+ VIEW_QUEUE,
+ qview_GetParamsGetServerCall,
+ qview_PrintPageHeader,
+ NULL, /* TODO: is this right? */
+ NULL,
+ qview_LoadMsgFromServer,
+ qview_RenderView_or_Tail,
+ qview_Cleanup);
-/*@}*/
+}