X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fnotes.c;fp=webcit%2Fnotes.c;h=079bb960b687d7b49e463e3bd5a2138841e4805c;hb=5d2d3f4eea91c74af93c735bff7ad9955b466181;hp=91b6ffcb64a76c60678c05e028cb17f8984a39d7;hpb=9f8e0bd23ce7dde31156b634f3a66bf234b11927;p=citadel.git diff --git a/webcit/notes.c b/webcit/notes.c index 91b6ffcb6..079bb960b 100644 --- a/webcit/notes.c +++ b/webcit/notes.c @@ -21,7 +21,8 @@ int pastel_palette[9][3] = { /* * Fetch a message from the server and extract a vNote from it */ -struct vnote *vnote_new_from_msg(long msgnum, int unread) { +struct vnote *vnote_new_from_msg(long msgnum,int unread) +{ StrBuf *Buf; StrBuf *Data = NULL; const char *bptr; @@ -32,23 +33,24 @@ struct vnote *vnote_new_from_msg(long msgnum, int unread) { char mime_content_type[256]; char mime_disposition[256]; char relevant_partnum[256]; - int phase = 0; /* 0 = citadel headers, 1 = mime headers, 2 = body */ + int phase = 0; /* 0 = citadel headers, 1 = mime headers, 2 = body */ char msg4_content_type[256] = ""; char msg4_content_encoding[256] = ""; int msg4_content_length = 0; struct vnote *vnote_from_body = NULL; - int vnote_inline = 0; /* 1 = MSG4 gave us a text/x-vnote top level */ + int vnote_inline = 0; /* 1 = MSG4 gave us a text/x-vnote top level */ relevant_partnum[0] = '\0'; serv_printf("MSG4 %ld", msgnum); /* we need the mime headers */ Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 1) { - FreeStrBuf(&Buf); + FreeStrBuf (&Buf); return NULL; } - while ((StrBuf_ServGetln(Buf) >= 0) && !Done) { - if ((StrLength(Buf) == 3) && !strcmp(ChrPtr(Buf), "000")) { + while ((StrBuf_ServGetln(Buf)>=0) && !Done) { + if ( (StrLength(Buf)==3) && + !strcmp(ChrPtr(Buf), "000")) { Done = 1; break; } @@ -71,7 +73,7 @@ struct vnote *vnote_new_from_msg(long msgnum, int unread) { else if ((phase == 0) && (!strncasecmp(bptr, "text", 4))) { phase = 1; } - break; + break; case 1: if (!IsEmptyStr(bptr)) { if (!strncasecmp(bptr, "Content-type: ", 14)) { @@ -90,9 +92,9 @@ struct vnote *vnote_new_from_msg(long msgnum, int unread) { else { phase++; if ((msg4_content_length > 0) - && (!strcasecmp(msg4_content_encoding, "7bit")) + && ( !strcasecmp(msg4_content_encoding, "7bit")) && (!strcasecmp(msg4_content_type, "text/vnote")) - ) { + ) { vnote_inline = 1; } } @@ -101,7 +103,7 @@ struct vnote *vnote_new_from_msg(long msgnum, int unread) { Data = NewStrBufPlain(NULL, msg4_content_length * 2); if (msg4_content_length > 0) { StrBuf_ServGetBLOBBuffered(Data, msg4_content_length); - phase++; + phase ++; } else { StrBufAppendBuf(Data, Buf, 0); @@ -139,10 +141,10 @@ struct vnote *vnote_new_from_msg(long msgnum, int unread) { } else { char *Buf = SmashStrBuf(&Data); - + struct vnote *v = vnote_new_from_str(Buf); free(Buf); - return (v); + return(v); } } return NULL; @@ -153,29 +155,34 @@ struct vnote *vnote_new_from_msg(long msgnum, int unread) { /* * Serialize a vnote and write it to the server */ -void write_vnote_to_server(struct vnote *v) { +void write_vnote_to_server(struct vnote *v) +{ char buf[1024]; char *pch; char boundary[256]; static int seq = 0; snprintf(boundary, sizeof boundary, "Citadel--Multipart--%s--%04x--%04x", - ChrPtr(WC->serv_info->serv_fqdn), getpid(), ++seq); + ChrPtr(WC->serv_info->serv_fqdn), + getpid(), + ++seq + ); serv_puts("ENT0 1|||4"); serv_getln(buf, sizeof buf); if (buf[0] == '4') { /* Remember, serv_printf() appends an extra newline */ - serv_printf("Content-type: multipart/alternative; " "boundary=\"%s\"\n", boundary); + serv_printf("Content-type: multipart/alternative; " + "boundary=\"%s\"\n", boundary); serv_printf("This is a multipart message in MIME format.\n"); serv_printf("--%s", boundary); - + serv_puts("Content-type: text/plain; charset=utf-8"); serv_puts("Content-Transfer-Encoding: 7bit"); serv_puts(""); serv_puts(v->body); serv_puts(""); - + serv_printf("--%s", boundary); serv_puts("Content-type: text/vnote"); serv_puts("Content-Transfer-Encoding: 7bit"); @@ -200,7 +207,7 @@ void ajax_update_note(void) { int msgnum; struct vnote *v = NULL; - if (!havebstr("note_uid")) { + if (!havebstr("note_uid")) { begin_ajax_response(); wc_printf("Received ajax_update_note() request without a note UID."); end_ajax_response(); @@ -216,7 +223,7 @@ void ajax_update_note(void) { return; } msgnum = atol(&buf[4]); - + /* Was this request a delete operation? If so, nuke it... */ if (havebstr("deletenote")) { if (!strcasecmp(bstr("deletenote"), "yes")) { @@ -239,30 +246,29 @@ void ajax_update_note(void) { } /* Make any requested changes */ - if (havebstr("top")) { + if (havebstr("top")) { v->pos_top = atoi(bstr("top")); } - if (havebstr("left")) { + if (havebstr("left")) { v->pos_left = atoi(bstr("left")); } - if (havebstr("height")) { + if (havebstr("height")) { v->pos_height = atoi(bstr("height")); } - if (havebstr("width")) { + if (havebstr("width")) { v->pos_width = atoi(bstr("width")); } - if (havebstr("red")) { + if (havebstr("red")) { v->color_red = atoi(bstr("red")); } - if (havebstr("green")) { + if (havebstr("green")) { v->color_green = atoi(bstr("green")); } - if (havebstr("blue")) { + if (havebstr("blue")) { v->color_blue = atoi(bstr("blue")); } - if (havebstr("value")) { /* I would have preferred 'body' but InPlaceEditor hardcodes 'value' */ - if (v->body) - free(v->body); + if (havebstr("value")) { /* I would have preferred 'body' but InPlaceEditor hardcodes 'value' */ + if (v->body) free(v->body); v->body = strdup(bstr("value")); } @@ -286,9 +292,13 @@ void ajax_update_note(void) { * * msgnum = Message number on the local server of the note to be displayed */ - /*TODO: wrong hook */ -int notes_LoadMsgFromServer(SharedMessageStatus * Stat, void **ViewSpecific, message_summary * Msg, int is_new, int i) { +int notes_LoadMsgFromServer(SharedMessageStatus *Stat, + void **ViewSpecific, + message_summary* Msg, + int is_new, + int i) +{ struct vnote *v; WCTemplputParams TP; @@ -297,19 +307,20 @@ int notes_LoadMsgFromServer(SharedMessageStatus * Stat, void **ViewSpecific, mes v = vnote_new_from_msg(Msg->msgnum, is_new); if (v) { TP.Context = v; - DoTemplate(HKEY("vnoteitem"), WC->WBuf, &TP); - + DoTemplate(HKEY("vnoteitem"), + WC->WBuf, &TP); + /* uncomment these lines to see ugly debugging info - StrBufAppendPrintf(WC->trailing_javascript, - "document.write('L: ' + $('note-%s').style.left + '; ');", v->uid); - StrBufAppendPrintf(WC->trailing_javascript, - "document.write('T: ' + $('note-%s').style.top + '; ');", v->uid); - StrBufAppendPrintf(WC->trailing_javascript, - "document.write('W: ' + $('note-%s').style.width + '; ');", v->uid); - StrBufAppendPrintf(WC->trailing_javascript, - "document.write('H: ' + $('note-%s').style.height + '
');", v->uid); - */ + StrBufAppendPrintf(WC->trailing_javascript, + "document.write('L: ' + $('note-%s').style.left + '; ');", v->uid); + StrBufAppendPrintf(WC->trailing_javascript, + "document.write('T: ' + $('note-%s').style.top + '; ');", v->uid); + StrBufAppendPrintf(WC->trailing_javascript, + "document.write('W: ' + $('note-%s').style.width + '; ');", v->uid); + StrBufAppendPrintf(WC->trailing_javascript, + "document.write('H: ' + $('note-%s').style.height + '
');", v->uid); + */ vnote_free(v); } @@ -335,57 +346,67 @@ void add_new_note(void) { write_vnote_to_server(v); vnote_free(v); } - + readloop(readfwd, eUseDefault); } -void tmpl_vcard_put_posleft(StrBuf * Target, WCTemplputParams * TP) { +void tmpl_vcard_put_posleft(StrBuf *Target, WCTemplputParams *TP) +{ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_left); } -void tmpl_vcard_put_postop(StrBuf * Target, WCTemplputParams * TP) { +void tmpl_vcard_put_postop(StrBuf *Target, WCTemplputParams *TP) +{ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_top); } -void tmpl_vcard_put_poswidth(StrBuf * Target, WCTemplputParams * TP) { +void tmpl_vcard_put_poswidth(StrBuf *Target, WCTemplputParams *TP) +{ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_width); } -void tmpl_vcard_put_posheight(StrBuf * Target, WCTemplputParams * TP) { +void tmpl_vcard_put_posheight(StrBuf *Target, WCTemplputParams *TP) +{ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_height); } -void tmpl_vcard_put_posheight2(StrBuf * Target, WCTemplputParams * TP) { +void tmpl_vcard_put_posheight2(StrBuf *Target, WCTemplputParams *TP) +{ 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) { +void tmpl_vcard_put_width2(StrBuf *Target, WCTemplputParams *TP) +{ 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) { +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); } -void tmpl_vcard_put_bgcolor(StrBuf * Target, WCTemplputParams * TP) { +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); + 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) { +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? */ + StrEscAppend(Target, NULL, v->body, 0, 0); /*TODO?*/ } -void tmpl_vcard_put_uid(StrBuf * Target, WCTemplputParams * TP) { +void tmpl_vcard_put_uid(StrBuf *Target, WCTemplputParams *TP) +{ struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendBufPlain(Target, v->uid, -1, 0); } @@ -393,8 +414,14 @@ void tmpl_vcard_put_uid(StrBuf * Target, WCTemplputParams * TP) { -int notes_GetParamsGetServerCall(SharedMessageStatus * Stat, - void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { +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"); @@ -402,12 +429,14 @@ int notes_GetParamsGetServerCall(SharedMessageStatus * Stat, } -int notes_Cleanup(void **ViewSpecific) { +int notes_Cleanup(void **ViewSpecific) +{ wDumpContent(1); return 0; } -void render_MIME_VNote(StrBuf * Target, WCTemplputParams * TP, StrBuf * FoundCharset) { +void render_MIME_VNote(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) +{ wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH); if (StrLength(Mime->Data) == 0) @@ -420,15 +449,16 @@ void render_MIME_VNote(StrBuf * Target, WCTemplputParams * TP, StrBuf * FoundCha Buf = NewStrBuf(); vcard = SmashStrBuf(&Mime->Data); v = vnote_new_from_str(vcard); - free(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); - + DoTemplate(HKEY("mail_vnoteitem"), + Buf, &TP); + vnote_free(v); Mime->Data = Buf; } @@ -443,12 +473,22 @@ void render_MIME_VNote(StrBuf * Target, WCTemplputParams * TP, StrBuf * FoundCha -void InitModule_NOTES(void) { +void +InitModule_NOTES +(void) +{ RegisterCTX(CTX_VNOTE); - RegisterReadLoopHandlerset(VIEW_NOTES, - notes_GetParamsGetServerCall, - NULL, NULL, NULL, notes_LoadMsgFromServer, NULL, notes_Cleanup, NULL); + 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); @@ -460,7 +500,7 @@ void InitModule_NOTES(void) { 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: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);