c7e15823fa14d8967247a6bfe268d0684f1707be
[citadel.git] / webcit / mainmenu.c
1 /*
2  * $Id$
3  *
4  * Displays the "advanced" (main) menu.
5  *
6  */
7
8 #include "webcit.h"
9
10 /*
11  * The Main Menu
12  */
13 void display_main_menu(void)
14 {
15         output_headers(1, 1, 1, 0, 0, 0, 0);
16
17         wprintf("<div id=\"fix_scrollbar_bug\">"
18                 "<TABLE WIDTH=100%%>"
19                 "<TR><TD COLSPAN=2>\n");
20
21         svprintf("BOXTITLE", WCS_STRING, "Basic commands");
22         do_template("beginbox");
23
24         wprintf("\n"
25                 "<TABLE border=0 cellspacing=1 cellpadding=1 width=100%%>"
26                 "<TR>"
27                 "<TD>");        /* start of first column */
28
29         wprintf("<A HREF=\"/knrooms\">"
30                 "<span class=\"mainmenu\">"
31                 "List known rooms</span></A><br />"
32                 "<span class=\"menudesc\">"
33                 "Where can I go from here?</span><br />\n"
34         );
35
36         wprintf("<A HREF=\"/gotonext\">"
37                 "<span class=\"mainmenu\">"
38                 "Goto next room</span></A><br />"
39                 "<span class=\"menudesc\">"
40                 "...with <EM>unread</EM> messages"
41                 "</span><br />\n"
42         );
43
44         wprintf("<A HREF=\"/skip\">"
45                 "<span class=\"mainmenu\">"
46                 "Skip to next room</span></a><br />"
47                 "<span class=\"menudesc\">"
48                 "(come back here later)"
49                 "</span>\n"
50         );
51
52         if ((strlen(WC->ugname) > 0) && (strcasecmp(WC->ugname, WC->wc_roomname))) {
53                 wprintf("<br />"
54                         "<A HREF=\"/ungoto\">"
55                         "<span class=\"mainmenu\">"
56                         "Ungoto</span></A><br />"
57                         "<span class=\"menudesc\">"
58                         "(oops! Back to %s)"
59                         "</span>\n", WC->ugname
60                 );
61         }
62
63         wprintf("</TD><TD>\n"); /* start of second column */
64
65         wprintf("<A HREF=\"/readnew\">"
66                 "<span class=\"mainmenu\">"
67                 "Read new messages</span></A><br />"
68                 "<span class=\"menudesc\">"
69                 "...in this room</span><br />\n"
70         );
71
72         wprintf("<A HREF=\"/readfwd\">"
73                 "<span class=\"mainmenu\">"
74                 "Read all messages</span></A><br />"
75                 "<span class=\"menudesc\">"
76                 "...old <EM>and</EM> new</span><br />\n"
77         );
78
79         wprintf("<A HREF=\"/display_enter\">"
80                 "<span class=\"mainmenu\">"
81                 "Enter a message</span></A><br />"
82                 "<span class=\"menudesc\">"
83                 "(post in this room)</span>\n"
84         );
85
86         wprintf("</TD><TD>");   /* start of third column */
87
88         wprintf("<A HREF=\"/summary\">"
89                 "<span class=\"mainmenu\">"
90                 "Summary page</span></A><br />"
91                 "<span class=\"menudesc\">"
92                 "Summary of my account</span><br />\n"
93         );
94
95         wprintf("<A HREF=\"/userlist\">\n"
96                 "<span class=\"mainmenu\">"
97                 "User list</span></A><br />"
98                 "<span class=\"menudesc\">"
99                 "(all registered users)</span><br />\n"
100         );
101
102         wprintf("<A HREF=\"/termquit\" TARGET=\"_top\">"
103                 "<span class=\"mainmenu\">"
104                 "Log off</span></A><br />"
105                 "<span class=\"menudesc\">"
106                 "Bye!</span>\n"
107         );
108
109         wprintf("</TD></TR></TABLE>\n");
110         do_template("endbox");
111
112         wprintf("</TD></TR>"
113                 "<TR VALIGN=TOP><TD>");
114
115         svprintf("BOXTITLE", WCS_STRING, "Your info");
116         do_template("beginbox");
117
118         wprintf("<A HREF=\"/display_preferences\">"
119                 "<span class=\"mainmenu\">"
120                 "Change your preferences and settings"
121                 "</span><br />\n");
122
123         wprintf("<A HREF=\"/display_reg\">"
124                 "<span class=\"mainmenu\">"
125                 "Update your contact information"
126                 "</span><br />\n");
127
128         wprintf("<A HREF=\"/display_changepw\">"
129                 "<span class=\"mainmenu\">"
130                 "Change your password</span></A><br />\n");
131
132         wprintf("<A HREF=\"/display_editbio\">"
133                 "<span class=\"mainmenu\">"
134                 "Enter your 'bio'</span></a><br />\n");
135
136         wprintf("<A HREF=\"/display_editpic\">"
137                 "<span class=\"mainmenu\">"
138                 "Edit your online photo</span></a>\n");
139
140         do_template("endbox");
141
142         wprintf("</TD><TD>");
143
144         svprintf("BOXTITLE", WCS_STRING, "Advanced room commands");
145         do_template("beginbox");
146
147         if ((WC->axlevel >= 6) || (WC->is_room_aide)) {
148                 wprintf("<A HREF=\"/display_editroom\">"
149                         "<span class=\"mainmenu\">"
150                         "Edit or delete this room</span></A><br />\n");
151         }
152
153         wprintf("<A HREF=\"/display_private\">"
154                 "<span class=\"mainmenu\">"
155                 "Go to a &quot;hidden&quot; room</span></A><br />\n");
156
157         wprintf("<A HREF=\"/display_entroom\">"
158                 "<span class=\"mainmenu\">"
159                 "Create a new room</span></A><br />\n");
160
161         wprintf("<A HREF=\"/display_zap\">"
162                 "<span class=\"mainmenu\">"
163                 "Zap (forget) this room (%s)</span></A><br />\n",
164                 WC->wc_roomname);
165
166         wprintf("<A HREF=\"/zapped_list\">"
167                 "<span class=\"mainmenu\">"
168                 "List all forgotten rooms</span></A>\n");
169
170         do_template("endbox");
171
172         wprintf("</td></tr></table></div>");
173         wDumpContent(2);
174 }
175
176
177 /*
178  * System administration menu
179  */
180 void display_aide_menu(void)
181 {
182         output_headers(1, 1, 2, 0, 0, 0, 0);
183         wprintf("<div id=\"banner\">\n"
184                 "<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>"
185                 "<SPAN CLASS=\"titlebar\">System Administration Menu</SPAN>"
186                 "</TD></TR></TABLE>\n"
187                 "</div>\n<div id=\"content\">\n"
188         );
189
190         wprintf("<div id=\"fix_scrollbar_bug\">"
191                 "<table border=0 width=100%%><tr valign=top><td>");
192
193         svprintf("BOXTITLE", WCS_STRING, "Global Configuration");
194         do_template("beginbox");
195
196         wprintf("<A HREF=\"/display_siteconfig\">"
197                 "<span class=\"mainmenu\">"
198                 "Edit site-wide configuration</span></A><br />\n");
199
200         wprintf("<A HREF=\"/display_inetconf\">"
201                 "<span class=\"mainmenu\">"
202                 "Domain names and Internet mail configuration</span></a><br />\n");
203
204         wprintf("<A HREF=\"/display_netconf\">"
205                 "<span class=\"mainmenu\">"
206                 "Configure replication with other Citadel servers"
207                 "</span></A>\n");
208
209         do_template("endbox");
210
211         wprintf("</td><td>");
212
213         svprintf("BOXTITLE", WCS_STRING, "User account management");
214         do_template("beginbox");
215
216         wprintf("<A HREF=\"/select_user_to_edit\">"
217                 "<span class=\"mainmenu\">"
218                 "Add, change, delete user accounts"
219                 "</span></A><br />\n");
220
221         wprintf("<A HREF=\"/validate\">"
222                 "<span class=\"mainmenu\">"
223                 "Validate new users</span></A><br />\n");
224
225         do_template("endbox");
226
227         svprintf("BOXTITLE", WCS_STRING, "Rooms and Floors");
228         do_template("beginbox");
229
230         wprintf("<A HREF=\"/display_floorconfig\">"
231                 "<span class=\"mainmenu\">"
232                 "Add, change, or delete floors"
233                 "</span></A>\n");
234
235         do_template("endbox");
236
237         wprintf("</td></tr></table></div>");
238         wDumpContent(2);
239 }
240
241
242
243
244
245 /*
246  * Display the screen to enter a generic server command
247  */
248 void display_generic(void)
249 {
250         output_headers(1, 1, 2, 0, 0, 0, 0);
251         wprintf("<div id=\"banner\">\n"
252                 "<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>"
253                 "<SPAN CLASS=\"titlebar\">Enter a server command</SPAN>"
254                 "</TD></TR></TABLE>\n"
255                 "</div>\n<div id=\"content\">\n"
256         );
257
258         wprintf("<div id=\"fix_scrollbar_bug\">"
259                 "<table border=0 width=100%% bgcolor=\"#ffffff\"><tr><td>\n");
260
261         wprintf("<CENTER>");
262         wprintf("This screen allows you to enter Citadel server commands which are\n");
263         wprintf("not supported by WebCit.  If you do not know what that means,\n");
264         wprintf("then this screen will not be of much use to you.<br />\n");
265
266         wprintf("<FORM METHOD=\"POST\" ACTION=\"/do_generic\">\n");
267
268         wprintf("Enter command:<br />\n");
269         wprintf("<INPUT TYPE=\"text\" NAME=\"g_cmd\" SIZE=80 MAXLENGTH=\"250\"><br />\n");
270
271         wprintf("Command input (if requesting SEND_LISTING transfer mode):<br />\n");
272         wprintf("<TEXTAREA NAME=\"g_input\" ROWS=10 COLS=80 WIDTH=80></TEXTAREA><br />\n");
273
274         wprintf("<FONT SIZE=-2>Detected host header is http://%s</FONT>\n",
275                 WC->http_host);
276         wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Send command\">");
277         wprintf("&nbsp;");
278         wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\"><br />\n");
279
280         wprintf("</FORM></CENTER>\n");
281         wprintf("</td></tr></table></div>\n");
282         wDumpContent(1);
283 }
284
285 void do_generic(void)
286 {
287         char buf[SIZ];
288         char gcontent[SIZ];
289         char *junk;
290         size_t len;
291
292         if (strcasecmp(bstr("sc"), "Send command")) {
293                 display_main_menu();
294                 return;
295         }
296
297         output_headers(1, 1, 0, 0, 0, 0, 0);
298
299         serv_printf("%s", bstr("g_cmd"));
300         serv_getln(buf, sizeof buf);
301
302         svprintf("BOXTITLE", WCS_STRING, "Server command results");
303         do_template("beginbox");
304
305         wprintf("<TABLE border=0><TR><TD>Command:</TD><TD><TT>");
306         escputs(bstr("g_cmd"));
307         wprintf("</TT></TD></TR><TR><TD>Result:</TD><TD><TT>");
308         escputs(buf);
309         wprintf("</TT></TD></TR></TABLE><br />\n");
310
311         if (buf[0] == '8') {
312                 serv_printf("\n\n000");
313         }
314         if ((buf[0] == '1') || (buf[0] == '8')) {
315                 while (serv_getln(gcontent, sizeof gcontent), strcmp(gcontent, "000")) {
316                         escputs(gcontent);
317                         wprintf("<br />\n");
318                 }
319                 wprintf("000");
320         }
321         if (buf[0] == '4') {
322                 text_to_server(bstr("g_input"), 0);
323                 serv_puts("000");
324         }
325         if (buf[0] == '6') {
326                 len = atol(&buf[4]);
327                 junk = malloc(len);
328                 serv_read(junk, len);
329                 free(junk);
330         }
331         if (buf[0] == '7') {
332                 len = atol(&buf[4]);
333                 junk = malloc(len);
334                 memset(junk, 0, len);
335                 serv_write(junk, len);
336                 free(junk);
337         }
338         wprintf("<hr />");
339         wprintf("<A HREF=\"/display_generic\">Enter another command</A><br />\n");
340         wprintf("<A HREF=\"/display_advanced\">Return to menu</A>\n");
341         do_template("endbox");
342         wDumpContent(1);
343 }
344
345
346
347
348 /*
349  * Display the menubar.  Set as_single_page to
350  * display HTML headers and footers -- otherwise it's assumed
351  * that the menubar is being embedded in another page.
352  */
353 void display_menubar(int as_single_page) {
354
355         if (as_single_page) {
356                 output_headers(0, 0, 0, 0, 0, 0, 0);
357                 wprintf("<HTML>\n"
358                         "<HEAD>\n"
359                         "<TITLE>MenuBar</TITLE>\n"
360                         "<STYLE TYPE=\"text/css\">\n"
361                         "BODY   { text-decoration: none; }\n"
362                         "</STYLE>\n"
363                         "</HEAD>\n");
364                 do_template("background");
365         }
366
367         do_template("menubar");
368
369         if (as_single_page) {
370                 wDumpContent(2);
371         }
372
373
374 }
375
376