char *cmd,
long len);
+int calendar_Cleanup(void **ViewSpecific);
void render_calendar_view(calview *c);
void display_edit_individual_event(icalcomponent *supplied_vtodo, long msgnum, char *from,
void groupdav_common_headers(void);
+void groupdav_main(void);
void groupdav_get(void);
void groupdav_put(void);
void groupdav_delete(void);
if (StrLength(Mime->Data) > 0) {
struct vnote *v;
StrBuf *Buf;
+ char *vcard;
Buf = NewStrBuf();
- v = vnote_new_from_str(ChrPtr(Mime->Data));
+ vcard = SmashStrBuf(&Mime->Data);
+ v = vnote_new_from_str(vcard);
+ free (vcard);
if (v) {
WCTemplputParams TP;
Buf, &TP);
vnote_free(v);
-
- FreeStrBuf(&Mime->Data);
Mime->Data = Buf;
}
else
- FlushStrBuf(Mime->Data);
+ Mime->Data = NewStrBuf();
}
}
if (StrLength(Data) > 0) {
if (IsEmptyStr(uid_from_headers)) {
- // Convert an old-style note to a vNote
+ /* Convert an old-style note to a vNote */
vnote_from_body = vnote_new();
vnote_from_body->uid = strdup(uid_from_headers);
vnote_from_body->color_red = pastel_palette[3][0];
return vnote_from_body;
}
else {
- struct vnote *v = vnote_new_from_str(ChrPtr(Data));
- FreeStrBuf(&Data);
+ char *Buf = SmashStrBuf(&Data);
+
+ struct vnote *v = vnote_new_from_str(Buf);
+ free(Buf);
return(v);
}
}
return;
}
- // lprintf(9, "Note UID = %s\n", bstr("note_uid"));
serv_printf("EUID %s", bstr("note_uid"));
serv_getln(buf, sizeof buf);
if (buf[0] != '2') {
return;
}
msgnum = atol(&buf[4]);
- // lprintf(9, "Note msg = %ld\n", msgnum);
-
- // Was this request a delete operation? If so, nuke it...
+
+ /* Was this request a delete operation? If so, nuke it... */
if (havebstr("deletenote")) {
if (!strcasecmp(bstr("deletenote"), "yes")) {
serv_printf("DELE %d", msgnum);
}
}
- // If we get to this point it's an update, not a delete
+ /* If we get to this point it's an update, not a delete */
v = vnote_new_from_msg(msgnum, 0);
if (!v) {
begin_ajax_response();
if (havebstr("blue")) {
v->color_blue = atoi(bstr("blue"));
}
- if (havebstr("value")) { // I would have preferred 'body' but InPlaceEditor hardcodes 'value'
+ if (havebstr("value")) { /* I would have preferred 'body' but InPlaceEditor hardcodes 'value' */
if (v->body) free(v->body);
v->body = strdup(bstr("value"));
}
void do_edit_vcard(long msgnum, char *partnum,
message_summary *VCMsg,
wc_mime_attachment *VCAtt,
- char *return_to,
+ const char *return_to,
const char *force_room) {
message_summary *Msg = NULL;
wc_mime_attachment *VCMime = NULL;
end_burst();
}
-/*
- * print menu box like used in the floor view or admin interface.
- * This function takes pair of strings as va_args,
- * Title Title string of the box
- * Class CSS Class for the box
- * nLines How many string pairs should we print? (URL, UrlText)
- * ... Pairs of URL Strings and their Names
- */
-void print_menu_box(char* Title, char *Class, int nLines, ...)
-{
- va_list arg_list;
- long i;
-
- svput("BOXTITLE", WCS_STRING, Title);
- do_template("beginboxx", NULL);
-
- wprintf("<ul class=\"%s\">", Class);
-
- va_start(arg_list, nLines);
- for (i = 0; i < nLines; ++i)
- {
- wprintf("<li><a href=\"%s\">", va_arg(arg_list, char *));
- wprintf((char *) va_arg(arg_list, char *));
- wprintf("</a></li>\n");
- }
- va_end (arg_list);
-
- wprintf("</a></li>\n");
-
- wprintf("</ul>");
-
- do_template("endbox", NULL);
-}
-
-
/*
* Convenience functions to display a page containing only a string
StrBufCutLeft(content, body_start);
ParseURLParams(content);
} else if (!strncasecmp(ChrPtr(WCC->Hdr->HR.ContentType), "multipart", 9)) {
- content_end = ChrPtr(content) +
- WCC->Hdr->HR.ContentLength +
- body_start;
- mime_parser(ChrPtr(content), content_end, *upload_handler, NULL, NULL, NULL, 0);
+ char *Buf;
+ char *BufEnd;
+ Buf = SmashStrBuf(&content);
+ content_end = Buf + WCC->Hdr->HR.ContentLength + body_start;
+ mime_parser(Buf, BufEnd, *upload_handler, NULL, NULL, NULL, 0);
+ free(Buf);
} else if (WCC->Hdr->HR.ContentLength > 0) {
WCC->upload = content;
content = NULL;
}
+void ParseREST_URL(void)
+{
+ StrBuf *Buf;
+ wcsession *WCC = WC;
+ long i = 0;
+ const char *pCh = NULL;
+
+ WCC->Directory = NewHash(1, Flathash);
+
+ Buf = NewStrBuf();
+ while (StrBufExtract_NextToken(WCC->Hdr->HR.ReqLine,
+ Buf, &pCh, '/') >= 0)
+ {
+ Put(WCC->Directory, IKEY(i), Buf, HFreeStrBuf);
+ i++;
+ Buf = NewStrBuf();
+ }
+ if (i == 0)
+ FreeStrBuf(&Buf);
+}
+
+
+
+
/*
* Entry point for WebCit transaction
*/
display_login(NULL);
}
else {
+/*
+ if ((WCC->Hdr->HR.Handler->Flags & PARSE_REST_URL) != 0)
+ ParseREST_URL();
+*/
if ((WCC->Hdr->HR.Handler->Flags & AJAX) != 0)
begin_ajax_response();
WCC->Hdr->HR.Handler->F();
#define COOKIEUNNEEDED (1<<6)
#define ISSTATIC (1<<7)
#define FORCE_SESSIONCLOSE (1<<8)
-
+#define PARSE_REST_URL (1<<0)
typedef void (*WebcitHandlerFunc)(void);
typedef struct _WebcitHandler{
StrBuf *trailing_javascript; /**< extra javascript to be appended to page */
char ImportantMessage[SIZ]; /**< ??? todo */
StrBuf *ImportantMsg;
+ HashList *Directory; /**< Parts of the directory URL in snippets */
/* accounting */
StrBuf *wc_username; /**< login name of current user */
void pullquote_fmout(void);
void wDumpContent(int);
-int Flathash(const char *str, long len);
-
-
-
void UrlescPutStrBuf(const StrBuf *strbuf);
void hprintf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
void output_static(const char* What);
-void print_menu_box(char* Title, char *Class, int nLines, ...);
long stresc(char *target, long tSize, char *strbuf, int nbsp, int nolinebreaks);
void escputs(const char *strbuf);
void url(char *buf, size_t bufsize);
void do_edit_vcard(long msgnum, char *partnum,
message_summary *VCMsg,
wc_mime_attachment *VCAtt,
- char *return_to,
+ const char *return_to,
const char *force_room);
void select_user_to_edit(const char *preselect);