containing a rendered sticky note.
- */
-void display_vnote_div(struct vnote *v, long msgnum) {
+void tmpl_vcard_put_color(StrBuf *Target, WCTemplputParams *TP)
+{
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
+ StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red, v->color_green, v->color_blue);
+}
- wprintf("
pos_left);
- wprintf("top: %dpx; ", v->pos_top);
- wprintf("width: %dpx; ", v->pos_width);
- wprintf("height: %dpx; ", v->pos_height);
- wprintf("border: 1px solid black; ");
- wprintf("background-color: #%02X%02X%02X ", v->color_red, v->color_green, v->color_blue);
- wprintf("\">");
+void tmpl_vcard_put_bgcolor(StrBuf *Target, WCTemplputParams *TP)
+{
+ 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);
+}
- escputs(v->body);
+void tmpl_vcard_put_message(StrBuf *Target, WCTemplputParams *TP)
+{
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
+ StrEscAppend(Target, NULL, v->body, 0, 0); /*TODO?*/
+}
- wprintf("
\n");
+void tmpl_vcard_put_uid(StrBuf *Target, WCTemplputParams *TP)
+{
+ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE);
+ StrBufAppendBufPlain(Target, v->uid, -1, 0);
}
-/*
- * display sticky notes
- *
- * msgnum = Message number on the local server of the note to be displayed
- */
-void display_note_NEW(long msgnum, int unread) {
- char buf[1024];
- char mime_partnum[256];
- char mime_filename[256];
- char mime_content_type[256];
- char mime_disposition[256];
- int mime_length;
- char relevant_partnum[256];
- char *relevant_source = NULL;
+int notes_GetParamsGetServerCall(SharedMessageStatus *Stat,
+ void **ViewSpecific,
+ long oper,
+ char *cmd,
+ long len,
+ char *filter,
+ long flen)
+{
+ strcpy(cmd, "MSGS ALL");
+ Stat->maxmsgs = 32767;
+ wc_printf("
\n");
+ return 200;
- relevant_partnum[0] = '\0';
- sprintf(buf, "MSG4 %ld", msgnum); /* we need the mime headers */
- serv_puts(buf);
- serv_getln(buf, sizeof buf);
- if (buf[0] != '1') return;
-
- while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
- if (!strncasecmp(buf, "part=", 5)) {
- extract_token(mime_filename, &buf[5], 1, '|', sizeof mime_filename);
- extract_token(mime_partnum, &buf[5], 2, '|', sizeof mime_partnum);
- extract_token(mime_disposition, &buf[5], 3, '|', sizeof mime_disposition);
- extract_token(mime_content_type, &buf[5], 4, '|', sizeof mime_content_type);
- mime_length = extract_int(&buf[5], 5);
-
- if (!strcasecmp(mime_content_type, "text/vnote")) {
- strcpy(relevant_partnum, mime_partnum);
- }
- }
- }
+}
- if (!IsEmptyStr(relevant_partnum)) {
- relevant_source = load_mimepart(msgnum, relevant_partnum);
- if (relevant_source != NULL) {
- struct vnote *v = vnote_new_from_str(relevant_source);
- free(relevant_source);
- display_vnote_div(v, msgnum);
- vnote_free(v);
+int notes_Cleanup(void **ViewSpecific)
+{
+ wDumpContent(1);
+ return 0;
+}
- /* FIXME remove these debugging messages when finished */
- wprintf("");
+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,
+ NULL);
+
+ WebcitAddUrlHandler(HKEY("add_new_note"), "", 0, add_new_note, 0);
+ WebcitAddUrlHandler(HKEY("ajax_update_note"), "", 0, ajax_update_note, 0);
+
+ RegisterNamespace("VNOTE:POS:LEFT", 0, 0, tmpl_vcard_put_posleft, NULL, CTX_VNOTE);
+ RegisterNamespace("VNOTE:POS:TOP", 0, 0, tmpl_vcard_put_postop, NULL, CTX_VNOTE);
+ RegisterNamespace("VNOTE:POS:WIDTH", 0, 0, tmpl_vcard_put_poswidth, NULL, CTX_VNOTE);
+ RegisterNamespace("VNOTE:POS:HEIGHT", 0, 0, tmpl_vcard_put_posheight, NULL, CTX_VNOTE);
+ RegisterNamespace("VNOTE:POS:HEIGHT2", 0, 0, tmpl_vcard_put_posheight2, NULL, CTX_VNOTE);
+ RegisterNamespace("VNOTE:POS:WIDTH2", 0, 0, tmpl_vcard_put_width2, NULL, CTX_VNOTE);
+ RegisterNamespace("VNOTE:COLOR", 0, 0, tmpl_vcard_put_color, NULL, CTX_VNOTE);
+ 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);
+}