X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fgraphics.c;h=8dbad904387810272212b1bcfcc30349dca6646f;hb=HEAD;hp=863242f810bb84609043e749e404ce18515462b0;hpb=d1dcc57fd3286c9e38b7f15eb2fb047279232628;p=citadel.git diff --git a/webcit/graphics.c b/webcit/graphics.c index 863242f81..98b063115 100644 --- a/webcit/graphics.c +++ b/webcit/graphics.c @@ -1,25 +1,45 @@ -/* - * Handles HTTP upload of graphics files into the system. - * - * 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. - */ +// Handles HTTP upload of graphics files into the system. +// +// Copyright (c) 1996-2022 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" extern void output_static(const char* What); -// upload your photo -void editpic(void) -{ +// display the picture (icon, photo, whatever) associated with the current room +void display_roompic(void) { + off_t bytes; + StrBuf *Buf = NewStrBuf(); + serv_printf("DLRI"); + StrBuf_ServGetln(Buf); + if (GetServerStatus(Buf, NULL) == 6) { + StrBufCutLeft(Buf, 4); + bytes = StrBufExtract_long(Buf, 0, '|'); + StrBuf *content_type = NewStrBuf(); + StrBufExtract_token(content_type, Buf, 3, '|'); + WC->WBuf = NewStrBuf(); + StrBuf_ServGetBLOBBuffered(WC->WBuf, bytes); + http_transmit_thing(ChrPtr(content_type), 0); + FreeStrBuf(&content_type); + } + else { + output_error_pic("", ""); + } + FreeStrBuf(&Buf); +} + + +// upload the picture (icon, photo, whatever) associated with the current room +void common_code_for_editroompic_and_editpic(char *servcmd) { if (havebstr("cancel_button")) { AppendImportantMessage(_("Graphics upload has been cancelled."), -1); display_main_menu(); @@ -32,7 +52,7 @@ void editpic(void) return; } - serv_printf("ULUI %ld|%s", (long)WC->upload_length, GuessMimeType(ChrPtr(WC->upload), WC->upload_length)); + serv_printf("%s %ld|%s", servcmd, (long)WC->upload_length, GuessMimeType(ChrPtr(WC->upload), WC->upload_length)); StrBuf *Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 0, 0) == 7) { @@ -47,28 +67,27 @@ void editpic(void) } -void display_graphics_upload(char *filename) -{ - StrBuf *Line; +// upload the picture (icon, photo, whatever) associated with the current room +void editroompic(void) { + common_code_for_editroompic_and_editpic("ULRI"); +} - Line = NewStrBuf(); - serv_printf("UIMG 0||%s", filename); - StrBuf_ServGetln(Line); - if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { - display_main_menu(); - return; - } - else - { - output_headers(1, 0, 0, 0, 1, 0); - do_template("files_graphicsupload"); - end_burst(); - } - FreeStrBuf(&Line); + +// upload the picture (icon, photo, whatever) associated with the current user +void editpic(void) { + common_code_for_editroompic_and_editpic("ULUI"); } -void do_graphics_upload(char *filename) -{ + +// display the screen for uploading graphics to the server +void display_graphics_upload(char *filename) { + output_headers(1, 0, 0, 0, 1, 0); + do_template("files_graphicsupload"); + end_burst(); +} + + +void do_graphics_upload(char *filename) { StrBuf *Line; const char *MimeType; wcsession *WCC = WC; @@ -128,45 +147,38 @@ void do_graphics_upload(char *filename) void edithellopic(void) { do_graphics_upload("hello"); } -void editgoodbuyepic(void) { do_graphics_upload("UIMG 1|%s|goodbuye"); } +void editgoodbyepic(void) { do_graphics_upload("UIMG 1|%s|goodbye"); } -/* The users photo display / upload facility */ +// The user's 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 */ + +// 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 */ +// the login page graphics void display_edithello(void) { putbstr("__WHICHPIC", NewStrBufPlain(HKEY("hello"))); - putbstr("__PICDESC", NewStrBufPlain(_("the Greetingpicture for the login prompt"), -1)); + putbstr("__PICDESC", NewStrBufPlain(_("graphics to be displayed on the login screen"), -1)); putbstr("__UPLURL", NewStrBufPlain(HKEY("edithellopic"))); display_graphics_upload("edithellopic"); } -/* the logoff banner */ +// the logoff banner void display_editgoodbyepic(void) { - putbstr("__WHICHPIC", NewStrBufPlain(HKEY("UIMG 0|%s|goodbuye"))); + putbstr("__WHICHPIC", NewStrBufPlain(HKEY("UIMG 0|%s|goodbye"))); putbstr("__PICDESC", NewStrBufPlain(_("the Logoff banner picture"), -1)); - putbstr("__UPLURL", NewStrBufPlain(HKEY("editgoodbuyepic"))); - display_graphics_upload("editgoodbuyepic"); + putbstr("__UPLURL", NewStrBufPlain(HKEY("editgoodbyepic"))); + display_graphics_upload("editgoodbyepic"); } -void editroompic(void) { - char buf[SIZ]; - snprintf(buf, SIZ, "_roompic_|%s", - bstr("which_room")); - do_graphics_upload(buf); -} void InitModule_GRAPHICS @@ -178,6 +190,7 @@ InitModule_GRAPHICS 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_editgoodbye"), "", 0, display_editgoodbyepic, 0); + WebcitAddUrlHandler(HKEY("editgoodbyepic"), "", 0, editgoodbyepic, 0); + WebcitAddUrlHandler(HKEY("roompic"), "", 0, display_roompic, 0); }