0aa9e75f9d3d4901a07bb2aa948a03a8fb7235d8
[citadel.git] / webcit / sysmsgs.c
1
2
3 #include <ctype.h>
4 #include <stdlib.h>
5 #include <unistd.h>
6 #include <stdio.h>
7 #include <fcntl.h>
8 #include <signal.h>
9 #include <sys/types.h>
10 #include <sys/wait.h>
11 #include <sys/socket.h>
12 #include <sys/time.h>
13 #include <limits.h>
14 #include <netinet/in.h>
15 #include <netdb.h>
16 #include <string.h>
17 #include <pwd.h>
18 #include <errno.h>
19 #include <stdarg.h>
20 #include <pthread.h>
21 #include <signal.h>
22 #include "webcit.h"
23
24
25
26
27
28
29
30
31 /*
32  * display the form for editing something (room info, bio, etc)
33  */
34 void display_edit(char *description, char *check_cmd,
35                   char *read_cmd, char *save_cmd, int headers_type)
36 {
37         char buf[SIZ];
38
39         serv_puts(check_cmd);
40         serv_gets(buf);
41
42         if (buf[0] != '2') {
43                 strcpy(WC->ImportantMessage, &buf[4]);
44                 display_main_menu();
45                 return;
46         }
47         output_headers(headers_type);
48
49         svprintf("BOXTITLE", WCS_STRING, "Edit %s", description);
50         do_template("beginbox");
51
52         wprintf("<CENTER>Enter %s below.  Text is formatted to\n", description);
53         wprintf("the <EM>reader's</EM> screen width.  To defeat the\n");
54         wprintf("formatting, indent a line at least one space.  \n");
55         wprintf("<BR>");
56
57         wprintf("<FORM METHOD=\"POST\" ACTION=\"%s\">\n", save_cmd);
58         wprintf("<TEXTAREA NAME=\"msgtext\" wrap=soft "
59                 "ROWS=10 COLS=80 WIDTH=80>\n");
60         serv_puts(read_cmd);
61         serv_gets(buf);
62         if (buf[0] == '1')
63                 server_to_text();
64         wprintf("</TEXTAREA><BR><BR>\n");
65         wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Save\">");
66         wprintf("&nbsp;");
67         wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\"><BR>\n");
68
69         wprintf("</FORM></CENTER>\n");
70         do_template("endbox");
71         wDumpContent(1);
72 }
73
74
75 /*
76  * save a screen which was displayed with display_edit()
77  */
78 void save_edit(char *description, char *enter_cmd, int regoto)
79 {
80         char buf[SIZ];
81
82         if (strcmp(bstr("sc"), "Save")) {
83                 sprintf(WC->ImportantMessage,
84                         "Cancelled.  %s was not saved.\n", description);
85                 display_main_menu();
86                 return;
87         }
88         serv_puts(enter_cmd);
89         serv_gets(buf);
90         if (buf[0] != '4') {
91                 strcpy(WC->ImportantMessage, &buf[4]);
92                 display_main_menu();
93                 return;
94         }
95         text_to_server(bstr("msgtext"), 0);
96         serv_puts("000");
97
98         if (regoto) {
99                 smart_goto(WC->wc_roomname);
100         } else {
101                 sprintf(WC->ImportantMessage,
102                         "%s has been saved.\n", description);
103                 display_main_menu();
104                 return;
105         }
106 }