-/*
- * $Id$
- *
- */
#include "webcit.h"
-#include "groupdav.h"
+#include "dav.h"
#include "webserver.h"
+CtxType CTX_VNOTE = CTX_NONE;
+
int pastel_palette[9][3] = {
{ 0x80, 0x80, 0x80 },
{ 0xff, 0x80, 0x80 },
char mime_filename[256];
char mime_content_type[256];
char mime_disposition[256];
- int mime_length;
char relevant_partnum[256];
int phase = 0; /* 0 = citadel headers, 1 = mime headers, 2 = body */
char msg4_content_type[256] = "";
extract_token(mime_partnum, &bptr[5], 2, '|', sizeof mime_partnum);
extract_token(mime_disposition, &bptr[5], 3, '|', sizeof mime_disposition);
extract_token(mime_content_type, &bptr[5], 4, '|', sizeof mime_content_type);
- mime_length = extract_int(&bptr[5], 5);
if (!strcasecmp(mime_content_type, "text/vnote")) {
strcpy(relevant_partnum, mime_partnum);
if (!havebstr("note_uid")) {
begin_ajax_response();
- wprintf("Received ajax_update_note() request without a note UID.");
+ wc_printf("Received ajax_update_note() request without a note UID.");
end_ajax_response();
return;
}
serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
begin_ajax_response();
- wprintf("Cannot find message containing vNote with the requested uid!");
+ wc_printf("Cannot find message containing vNote with the requested uid!");
end_ajax_response();
return;
}
serv_printf("DELE %d", msgnum);
serv_getln(buf, sizeof buf);
begin_ajax_response();
- wprintf("%s", buf);
+ wc_printf("%s", buf);
end_ajax_response();
return;
}
v = vnote_new_from_msg(msgnum, 0);
if (!v) {
begin_ajax_response();
- wprintf("Cannot locate a vNote within message %d\n", msgnum);
+ wc_printf("Cannot locate a vNote within message %d\n", msgnum);
end_ajax_response();
return;
}
*
* msgnum = Message number on the local server of the note to be displayed
*/
-////TODO: falscher hook
+/*TODO: wrong hook */
int notes_LoadMsgFromServer(SharedMessageStatus *Stat,
void **ViewSpecific,
message_summary* Msg,
vnote_free(v);
}
- readloop(readfwd);
+ readloop(readfwd, eUseDefault);
}
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;
- StrEscAppend(Target, NULL, v->body, 0, 0); ///TODO?
+ 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);
}
void **ViewSpecific,
long oper,
char *cmd,
- long len)
+ long len,
+ char *filter,
+ long flen)
{
strcpy(cmd, "MSGS ALL");
Stat->maxmsgs = 32767;
- wprintf("<div id=\"new_notes_here\"></div>\n");
+ wc_printf("<div id=\"new_notes_here\"></div>\n");
return 200;
}
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,
NULL,
+ NULL,
+ NULL,
notes_LoadMsgFromServer,
NULL,
- notes_Cleanup);
+ notes_Cleanup,
+ NULL);
WebcitAddUrlHandler(HKEY("add_new_note"), "", 0, add_new_note, 0);
WebcitAddUrlHandler(HKEY("ajax_update_note"), "", 0, ajax_update_note, 0);
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);
}