#include "dav.h"
#include "webserver.h"
+CtxType CTX_VNOTE = CTX_NONE;
+
int pastel_palette[9][3] = {
{ 0x80, 0x80, 0x80 },
{ 0xff, 0x80, 0x80 },
void tmpl_vcard_put_posleft(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%d", v->pos_left);
}
void tmpl_vcard_put_postop(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%d", v->pos_top);
}
void tmpl_vcard_put_poswidth(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%d", v->pos_width);
}
void tmpl_vcard_put_posheight(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%d", v->pos_height);
}
void tmpl_vcard_put_posheight2(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%d", (v->pos_height / 16) - 5);
}
void tmpl_vcard_put_width2(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%d", (v->pos_width / 9) - 1);
}
void tmpl_vcard_put_color(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red, v->color_green, v->color_blue);
}
void tmpl_vcard_put_bgcolor(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red/2, v->color_green/2, v->color_blue/2);
}
void tmpl_vcard_put_message(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrEscAppend(Target, NULL, v->body, 0, 0); /*TODO?*/
}
void tmpl_vcard_put_uid(StrBuf *Target, WCTemplputParams *TP)
{
- struct vnote *v = (struct vnote *) CTX;
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
StrBufAppendBufPlain(Target, v->uid, -1, 0);
}
return 0;
}
+void render_MIME_VNote(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset)
+{
+ wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH);
+
+ if (StrLength(Mime->Data) == 0)
+ MimeLoadData(Mime);
+ if (StrLength(Mime->Data) > 0) {
+ struct vnote *v;
+ StrBuf *Buf;
+ char *vcard;
+
+ Buf = NewStrBuf();
+ vcard = SmashStrBuf(&Mime->Data);
+ v = vnote_new_from_str(vcard);
+ free (vcard);
+ if (v) {
+ WCTemplputParams TP;
+
+ memset(&TP, 0, sizeof(WCTemplputParams));
+ TP.Filter.ContextType = CTX_VNOTE;
+ TP.Context = v;
+ DoTemplate(HKEY("mail_vnoteitem"),
+ Buf, &TP);
+
+ vnote_free(v);
+ Mime->Data = Buf;
+ }
+ else {
+ if (Mime->Data == NULL)
+ Mime->Data = NewStrBuf();
+ else
+ FlushStrBuf(Mime->Data);
+ }
+ }
+}
+
+
void
InitModule_NOTES
(void)
{
+ RegisterCTX(CTX_VNOTE);
+
RegisterReadLoopHandlerset(
VIEW_NOTES,
notes_GetParamsGetServerCall,
RegisterNamespace("VNOTE:BGCOLOR", 0, 0,tmpl_vcard_put_bgcolor, NULL, CTX_VNOTE);
RegisterNamespace("VNOTE:MSG", 0, 1, tmpl_vcard_put_message, NULL, CTX_VNOTE);
RegisterNamespace("VNOTE:UID", 0, 0, tmpl_vcard_put_uid, NULL, CTX_VNOTE);
+
+ RegisterMimeRenderer(HKEY("text/vnote"), render_MIME_VNote, 1, 300);
}