11 #include <sys/socket.h>
14 #include <netinet/in.h>
26 * Display today's date in a friendly format
28 void output_date(void) {
32 static char *wdays[] = {
33 "Sunday", "Monday", "Tuesday", "Wednesday",
34 "Thursday", "Friday", "Saturday"
36 static char *months[] = {
37 "January", "February", "March", "April", "May", "June", "July",
38 "August", "September", "October", "November", "December"
42 localtime_r(&now, &tm);
44 wprintf("%s, %s %d, %d",
58 void dummy_section(void) {
59 svprintf("BOXTITLE", WCS_STRING, "(dummy section)");
60 do_template("beginbox");
62 do_template("endbox");
67 * New messages section
69 void new_messages_section(void) {
73 int number_of_rooms_to_check;
74 char *rooms_to_check = "Mail|Lobby";
76 svprintf("BOXTITLE", WCS_STRING, "Messages");
77 do_template("beginbox");
79 number_of_rooms_to_check = num_tokens(rooms_to_check, '|');
80 if (number_of_rooms_to_check == 0) return;
82 wprintf("<TABLE BORDER=0 WIDTH=100%%>\n");
83 for (i=0; i<number_of_rooms_to_check; ++i) {
84 extract(room, rooms_to_check, i);
86 serv_printf("GOTO %s", room);
89 extract(room, &buf[4], 0);
90 wprintf("<TR><TD><A HREF=\"/dotgoto?room=");
94 wprintf("</A></TD><TD>%d/%d</TD></TR>\n",
95 extract_int(&buf[4], 1),
96 extract_int(&buf[4], 2)
100 wprintf("</TABLE>\n");
101 do_template("endbox");
109 void wholist_section(void) {
113 svprintf("BOXTITLE", WCS_STRING, "Who's online now");
114 do_template("beginbox");
117 if (buf[0] == '1') while(serv_gets(buf), strcmp(buf, "000")) {
118 extract(user, buf, 1);
122 do_template("endbox");
129 void tasks_section(void) {
130 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
135 svprintf("BOXTITLE", WCS_STRING, "Tasks");
136 do_template("beginbox");
137 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
139 if (strcasecmp(WC->wc_roomname, "Tasks")) {
143 num_msgs = load_msg_ptrs("MSGS ALL");
147 wprintf("<i>(None)</i><br />\n");
150 for (i=0; i<num_msgs; ++i) {
151 display_task(WC->msgarr[i]);
155 #else /* WEBCIT_WITH_CALENDAR_SERVICE */
156 wprintf("<I>(This server does not support task lists)</I>\n");
157 #endif /* WEBCIT_WITH_CALENDAR_SERVICE */
158 do_template("endbox");
165 void calendar_section(void) {
166 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
171 svprintf("BOXTITLE", WCS_STRING, "Today on your calendar");
172 do_template("beginbox");
173 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
174 gotoroom("Calendar");
175 if (strcasecmp(WC->wc_roomname, "Calendar")) {
179 num_msgs = load_msg_ptrs("MSGS ALL");
183 wprintf("<i>(Nothing)</i><br />\n");
186 for (i=0; i<num_msgs; ++i) {
187 display_calendar(WC->msgarr[i]);
189 calendar_summary_view();
192 #else /* WEBCIT_WITH_CALENDAR_SERVICE */
193 wprintf("<I>(This server does not support calendars)</I>\n");
194 #endif /* WEBCIT_WITH_CALENDAR_SERVICE */
195 do_template("endbox");
200 * Server info section (fluff, really)
202 void server_info_section(void) {
203 svprintf("BOXTITLE", WCS_STRING, "About this server");
204 do_template("beginbox");
205 wprintf("You are connected to ");
206 escputs(serv_info.serv_humannode);
207 wprintf(", running ");
208 escputs(serv_info.serv_software);
209 wprintf(", and located in ");
210 escputs(serv_info.serv_bbs_city);
211 wprintf(".<br />\nYour system administrator is ");
212 escputs(serv_info.serv_sysadm);
214 do_template("endbox");
219 * Display this user's summary page
223 output_headers(1, 1, 2, 0, 1, 0, 0);
224 wprintf("<div id=\"banner\">\n");
225 wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=#444455><TR>"
226 "<TD><IMG SRC=\"/static/summary.gif\"></TD><TD>"
227 "<SPAN CLASS=\"titlebar\">"
228 "Summary page for ");
229 escputs(WC->wc_username);
230 wprintf("</SPAN></TD><TD>\n");
231 wprintf("</TD><TD ALIGN=RIGHT><SPAN CLASS=\"titlebar\">");
233 wprintf("</SPAN><br />");
235 wprintf("</TD></TR></TABLE>\n");
236 wprintf("</div>\n<div id=\"content\">\n");
239 * Now let's do three columns of crap. All portals and all groupware
240 * clients seem to want to do three columns, so we'll do three
241 * columns too. Conformity is not inherently a virtue, but there are
242 * a lot of really shallow people out there, and even though they're
243 * not people I consider worthwhile, I still want them to use WebCit.
246 wprintf("<TABLE WIDTH=100%% BORDER=0 CELLPADDING=10><TR VALIGN=TOP>");
251 wprintf("<TD WIDTH=33%%>");
257 wprintf("</TD><TD WIDTH=33%%>");
258 server_info_section();
265 wprintf("</TD><TD WIDTH=33%%>");
266 new_messages_section();
273 wprintf("</TD></TR></TABLE>\n");