FlushStrBuf(WCC->ImportantMsg);
}
if ( (WCC->logged_in) && (!unset_cookies) ) {
- /*DoTemplate(HKEY("iconbar"), NULL, &NoCtx);*/
- page_popup();
+ DoTemplate(HKEY("paging"), NULL, &NoCtx);
}
if (do_room_banner == 1) {
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
void ReadPostData(void)
{
- const char *content_end = NULL;
int body_start = 0;
wcsession *WCC = WC;
StrBuf *content = NULL;
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;
+ long len;
+
+ len = StrLength(content);
+ Buf = SmashStrBuf(&content);
+ BufEnd = Buf + len;
+ mime_parser(Buf, BufEnd, *upload_handler, NULL, NULL, NULL, 0);
+ free(Buf);
} else if (WCC->Hdr->HR.ContentLength > 0) {
WCC->upload = content;
+ WCC->upload_length = StrLength(WCC->upload);
content = NULL;
}
FreeStrBuf(&content);
}
+void ParseREST_URL(void)
+{
+ StrBuf *Buf;
+ StrBuf *pFloor = NULL;
+ wcsession *WCC = WC;
+ long i = 0;
+ const char *pCh = NULL;
+ HashList *Floors;
+ void *vFloor;
+
+ WCC->Directory = NewHash(1, Flathash);
+
+ Buf = NewStrBuf();
+ while (StrBufExtract_NextToken(WCC->Hdr->HR.ReqLine,
+ Buf, &pCh, '/') >= 0)
+ {
+ Put(WCC->Directory, IKEY(i), Buf, HFreeStrBuf);
+ if (i==0)
+ pFloor = Buf;
+ i++;
+ Buf = NewStrBuf();
+ }
+ if (i == 0)
+ FreeStrBuf(&Buf);
+ else if (pFloor != NULL)
+ {
+ Floors = GetFloorListHash(NULL, NULL);
+
+ if (Floors != NULL)
+ {
+ if (GetHash(Floors, SKEY(pFloor), &vFloor))
+ WCC->CurrentFloor = (floor*) vFloor;
+ }
+ }
+}
+
+
+
+
/*
* 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();
WebcitAddUrlHandler(HKEY("401"), authorization_required, ANONYMOUS|COOKIEUNNEEDED);
RegisterConditional(HKEY("COND:IMPMSG"), 0, ConditionalImportantMesage, CTX_NONE);
- RegisterNamespace("CSSLOCAL", 0, 0, tmplput_csslocal, CTX_NONE);
- RegisterNamespace("IMPORTANTMESSAGE", 0, 0, tmplput_importantmessage, CTX_NONE);
- RegisterNamespace("TRAILING_JAVASCRIPT", 0, 0, tmplput_trailing_javascript, CTX_NONE);
+ RegisterNamespace("CSSLOCAL", 0, 0, tmplput_csslocal, NULL, CTX_NONE);
+ RegisterNamespace("IMPORTANTMESSAGE", 0, 0, tmplput_importantmessage, NULL, CTX_NONE);
+ RegisterNamespace("TRAILING_JAVASCRIPT", 0, 0, tmplput_trailing_javascript, NULL, CTX_NONE);
snprintf(dir, SIZ, "%s/webcit.css", static_local_dir);
if (!access(dir, R_OK)) {
SessionDetachModule_WEBCIT
(wcsession *sess)
{
- DeleteHash(&sess->Hdr->urlstrings);// TODO?
- if (sess->upload_length > 0) {
- FreeStrBuf(&sess->upload);
- sess->upload_length = 0;
- }
+ DeleteHash(&sess->Directory);
+
+ FreeStrBuf(&sess->upload);
+ sess->upload_length = 0;
+
FreeStrBuf(&sess->trailing_javascript);
if (StrLength(sess->WBuf) > SIZ * 30) /* Bigger than 120K? release. */