X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fgraphics.c;h=10e0dd4af9b1d3893768e4be6abe48773a80bee5;hb=fb6f6fa4ec4e3277e30d84326d48e6850822d318;hp=e9c0d8c3410067c6a24f7753128278372b383579;hpb=9f145319b92b196662aa51cb2e3d7c392629965e;p=citadel.git diff --git a/webcit/graphics.c b/webcit/graphics.c index e9c0d8c34..10e0dd4af 100644 --- a/webcit/graphics.c +++ b/webcit/graphics.c @@ -1,116 +1,173 @@ /* - * $Id$ - * * Handles HTTP upload of graphics files into the system. - * \ingroup WebcitHttpServer + * + * Copyright (c) 1996-2012 by the citadel.org team + * + * This program is open source software. You can redistribute it and/or + * modify it under the terms of the GNU General Public License, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. */ #include "webcit.h" -void display_graphics_upload(char *description, char *filename, char *uplurl) -{ - char buf[SIZ]; +extern void output_static(const char* What); +void display_graphics_upload(char *filename) +{ + StrBuf *Line; - snprintf(buf, SIZ, "UIMG 0||%s", filename); - serv_puts(buf); - serv_getln(buf, sizeof buf); - if (buf[0] != '2') { - strcpy(WC->ImportantMessage, &buf[4]); + Line = NewStrBuf(); + serv_printf("UIMG 0||%s", filename); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { display_main_menu(); return; } - output_headers(1, 1, 0, 0, 0, 0); - - output_headers(1, 1, 1, 0, 0, 0); - - svprintf("BOXTITLE", WCS_STRING, _("Image upload")); - do_template("beginbox"); - - wprintf("
\n", uplurl); - - wprintf("\n", WC->nonce); - wprintf("\n"); - - wprintf(_("You can upload an image directly from your computer")); - wprintf("

\n"); - - wprintf(_("Please select a file to upload:")); - wprintf("\n"); - - wprintf("
\n", filename); - - wprintf("
"); - wprintf("\n", _("Upload")); - wprintf(" "); - wprintf("\n", _("Reset form")); - wprintf(" "); - wprintf("\n", _("Cancel")); - wprintf("
\n"); - wprintf("
\n"); - - do_template("endbox"); - - wDumpContent(1); + else + { + output_headers(1, 0, 0, 0, 1, 0); + do_template("files_graphicsupload"); + end_burst(); + } + FreeStrBuf(&Line); } void do_graphics_upload(char *filename) { + StrBuf *Line; const char *MimeType; - char buf[SIZ]; + wcsession *WCC = WC; int bytes_remaining; int pos = 0; int thisblock; - bytes_remaining = WC->upload_length; + bytes_remaining = WCC->upload_length; if (havebstr("cancel_button")) { - strcpy(WC->ImportantMessage, - _("Graphics upload has been cancelled.")); + AppendImportantMessage(_("Graphics upload has been cancelled."), -1); display_main_menu(); return; } - if (WC->upload_length == 0) { - strcpy(WC->ImportantMessage, - _("You didn't upload a file.")); + if (WCC->upload_length == 0) { + AppendImportantMessage(_("You didn't upload a file."), -1); display_main_menu(); return; } - MimeType = GuessMimeType(&WC->upload[0], bytes_remaining); - snprintf(buf, SIZ, "UIMG 1|%s|%s", MimeType, filename); - serv_puts(buf); + MimeType = GuessMimeType(ChrPtr(WCC->upload), bytes_remaining); + serv_printf("UIMG 1|%s|%s", MimeType, filename); - serv_getln(buf, sizeof buf); - if (buf[0] != '2') { - strcpy(WC->ImportantMessage, &buf[4]); + Line = NewStrBuf(); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { display_main_menu(); + FreeStrBuf(&Line); return; } while (bytes_remaining) { thisblock = ((bytes_remaining > 4096) ? 4096 : bytes_remaining); serv_printf("WRIT %d", thisblock); - serv_getln(buf, sizeof buf); - if (buf[0] != '7') { - strcpy(WC->ImportantMessage, &buf[4]); + StrBuf_ServGetln(Line); + if (GetServerStatusMsg(Line, NULL, 1, 7) != 7) { serv_puts("UCLS 0"); - serv_getln(buf, sizeof buf); + StrBuf_ServGetln(Line); display_main_menu(); + FreeStrBuf(&Line); return; } - thisblock = extract_int(&buf[4], 0); - serv_write(&WC->upload[pos], thisblock); - pos = pos + thisblock; - bytes_remaining = bytes_remaining - thisblock; + thisblock = extract_int(ChrPtr(Line) +4, 0); + serv_write(&ChrPtr(WCC->upload)[pos], thisblock); + pos += thisblock; + bytes_remaining -= thisblock; } serv_puts("UCLS 1"); - serv_getln(buf, sizeof buf); - if (buf[0] != 'x') { - display_success(&buf[4]); - return; + StrBuf_ServGetln(Line); + if (*ChrPtr(Line) != 'x') { + display_success(ChrPtr(Line) + 4); + } + FreeStrBuf(&Line); + +} + + +void edithellopic(void) { do_graphics_upload("hello"); } +void editpic(void) { do_graphics_upload("_userpic_"); } +void editgoodbuyepic(void) { do_graphics_upload("UIMG 1|%s|goodbuye"); } + +/* The users photo display / upload facility */ +void display_editpic(void) { + putbstr("__WHICHPIC", NewStrBufPlain(HKEY("_userpic_"))); + putbstr("__PICDESC", NewStrBufPlain(_("your photo"), -1)); + putbstr("__UPLURL", NewStrBufPlain(HKEY("editpic"))); + display_graphics_upload("editpic"); +} +/* room picture dispay / upload facility */ +void display_editroompic(void) { + putbstr("__WHICHPIC", NewStrBufPlain(HKEY("_roompic_"))); + putbstr("__PICDESC", NewStrBufPlain(_("the icon for this room"), -1)); + putbstr("__UPLURL", NewStrBufPlain(HKEY("editroompic"))); + display_graphics_upload("editroompic"); +} + +/* the greetingpage hello pic */ +void display_edithello(void) { + putbstr("__WHICHPIC", NewStrBufPlain(HKEY("hello"))); + putbstr("__PICDESC", NewStrBufPlain(_("the Greetingpicture for the login prompt"), -1)); + putbstr("__UPLURL", NewStrBufPlain(HKEY("edithellopic"))); + display_graphics_upload("edithellopic"); +} + +/* the logoff banner */ +void display_editgoodbyepic(void) { + putbstr("__WHICHPIC", NewStrBufPlain(HKEY("UIMG 0|%s|goodbuye"))); + putbstr("__PICDESC", NewStrBufPlain(_("the Logoff banner picture"), -1)); + putbstr("__UPLURL", NewStrBufPlain(HKEY("editgoodbuyepic"))); + display_graphics_upload("editgoodbuyepic"); +} + +void display_editfloorpic(void) { + StrBuf *PicAction; + + PicAction = NewStrBuf(); + StrBufPrintf(PicAction, "_floorpic_|%s", bstr("which_floor")); + putbstr("__WHICHPIC", PicAction); + putbstr("__PICDESC", NewStrBufPlain(_("the icon for this floor"), -1)); + putbstr("__UPLURL", NewStrBufPlain(HKEY("editfloorpic"))); + display_graphics_upload("editfloorpic"); +} + +void editroompic(void) { + char buf[SIZ]; + snprintf(buf, SIZ, "_roompic_|%s", + bstr("which_room")); + do_graphics_upload(buf); +} + +void editfloorpic(void){ + char buf[SIZ]; + snprintf(buf, SIZ, "_floorpic_|%s", + bstr("which_floor")); + do_graphics_upload(buf); +} + +void +InitModule_GRAPHICS +(void) +{ + WebcitAddUrlHandler(HKEY("display_editpic"), "", 0, display_editpic, 0); + WebcitAddUrlHandler(HKEY("editpic"), "", 0, editpic, 0); + WebcitAddUrlHandler(HKEY("display_editroompic"), "", 0, display_editroompic, 0); + WebcitAddUrlHandler(HKEY("editroompic"), "", 0, editroompic, 0); + WebcitAddUrlHandler(HKEY("display_edithello"), "", 0, display_edithello, 0); + WebcitAddUrlHandler(HKEY("edithellopic"), "", 0, edithellopic, 0); + WebcitAddUrlHandler(HKEY("display_editgoodbuye"), "", 0, display_editgoodbyepic, 0); + WebcitAddUrlHandler(HKEY("editgoodbuyepic"), "", 0, editgoodbuyepic, 0); + WebcitAddUrlHandler(HKEY("display_editfloorpic"), "", 0, display_editfloorpic, 0); + WebcitAddUrlHandler(HKEY("editfloorpic"), "", 0, editfloorpic, 0); }