4 * Handles HTTP upload of graphics files into the system.
5 * \ingroup WebcitHttpServer
10 void display_graphics_upload(char *description, char *filename, char *uplurl)
12 WCTemplputParams SubTP;
17 snprintf(buf, SIZ, "UIMG 0||%s", filename);
19 serv_getln(buf, sizeof buf);
21 strcpy(WC->ImportantMessage, &buf[4]);
25 /*output_headers(1, 1, 0, 0, 0, 0); */
27 output_headers(1, 1, 1, 0, 0, 0);
29 Buf = NewStrBufPlain(_("Image upload"), -1);
30 memset(&SubTP, 0, sizeof(WCTemplputParams));
31 SubTP.Filter.ContextType = CTX_STRBUF;
33 DoTemplate(HKEY("beginbox"), NULL, &SubTP);
37 wprintf("<form enctype=\"multipart/form-data\" action=\"%s\" "
38 "method=\"post\" name=\"graphicsupload\">\n", uplurl);
40 wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
41 wprintf("<input type=\"hidden\" name=\"which_room\" value=\"");
42 urlescputs(bstr("which_room"));
45 wprintf(_("You can upload an image directly from your computer"));
46 wprintf("<br /><br />\n");
48 wprintf(_("Please select a file to upload:"));
49 wprintf("<input type=\"file\" name=\"filename\" size=\"35\">\n");
51 wprintf("<div class=\"uploadpic\"><img src=\"image?name=%s\"></div>\n", filename);
53 wprintf("<div class=\"buttons\">");
54 wprintf("<input type=\"submit\" name=\"upload_button\" value=\"%s\">\n", _("Upload"));
56 wprintf("<input type=\"reset\" value=\"%s\">\n", _("Reset form"));
58 wprintf("<input type=\"submit\" name=\"cancel_button\" value=\"%s\">\n", _("Cancel"));
62 do_template("endbox", NULL);
67 void do_graphics_upload(char *filename)
75 bytes_remaining = WCC->upload_length;
77 if (havebstr("cancel_button")) {
78 strcpy(WC->ImportantMessage,
79 _("Graphics upload has been cancelled."));
84 if (WCC->upload_length == 0) {
85 strcpy(WC->ImportantMessage,
86 _("You didn't upload a file."));
91 MimeType = GuessMimeType(ChrPtr(WCC->upload), bytes_remaining);
92 snprintf(buf, SIZ, "UIMG 1|%s|%s", MimeType, filename);
95 serv_getln(buf, sizeof buf);
97 strcpy(WCC->ImportantMessage, &buf[4]);
101 while (bytes_remaining) {
102 thisblock = ((bytes_remaining > 4096) ? 4096 : bytes_remaining);
103 serv_printf("WRIT %d", thisblock);
104 serv_getln(buf, sizeof buf);
106 strcpy(WCC->ImportantMessage, &buf[4]);
108 serv_getln(buf, sizeof buf);
112 thisblock = extract_int(&buf[4], 0);
113 serv_write(&ChrPtr(WCC->upload)[pos], thisblock);
114 pos = pos + thisblock;
115 bytes_remaining = bytes_remaining - thisblock;
119 serv_getln(buf, sizeof buf);
121 display_success(&buf[4]);
127 void edithellopic(void) { do_graphics_upload("hello"); }
128 void editpic(void) { do_graphics_upload("_userpic_"); }
129 void editgoodbuyepic(void) { do_graphics_upload("UIMG 1|%s|goodbuye"); }
131 /* The users photo display / upload facility */
132 void display_editpic(void) {
133 display_graphics_upload(_("your photo"),
137 /* room picture dispay / upload facility */
138 void display_editroompic(void) {
139 display_graphics_upload(_("the icon for this room"),
144 /* the greetingpage hello pic */
145 void display_edithello(void) {
146 display_graphics_upload(_("the Greetingpicture for the login prompt"),
151 /* the logoff banner */
152 void display_editgoodbyepic(void) {
153 display_graphics_upload(_("the Logoff banner picture"),
154 "UIMG 0|%s|goodbuye",
158 void display_editfloorpic(void) {
160 snprintf(buf, SIZ, "_floorpic_|%s",
161 bstr("which_floor"));
162 display_graphics_upload(_("the icon for this floor"),
167 void editroompic(void) {
169 snprintf(buf, SIZ, "_roompic_|%s",
171 do_graphics_upload(buf);
174 void editfloorpic(void){
176 snprintf(buf, SIZ, "_floorpic_|%s",
177 bstr("which_floor"));
178 do_graphics_upload(buf);
185 WebcitAddUrlHandler(HKEY("display_editpic"), display_editpic, 0);
186 WebcitAddUrlHandler(HKEY("editpic"), editpic, 0);
187 WebcitAddUrlHandler(HKEY("display_editroompic"), display_editroompic, 0);
188 WebcitAddUrlHandler(HKEY("editroompic"), editroompic, 0);
189 WebcitAddUrlHandler(HKEY("display_edithello"), display_edithello, 0);
190 WebcitAddUrlHandler(HKEY("edithellopic"), edithellopic, 0);
191 WebcitAddUrlHandler(HKEY("display_editgoodbuye"), display_editgoodbyepic, 0);
192 WebcitAddUrlHandler(HKEY("editgoodbuyepic"), editgoodbuyepic, 0);
193 WebcitAddUrlHandler(HKEY("display_editfloorpic"), display_editfloorpic, 0);
194 WebcitAddUrlHandler(HKEY("editfloorpic"), editfloorpic, 0);