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