- if (strlen(bstr("change_room_name_button")) > 0) {
- serv_printf("RCHG %s", bstr("fake_roomname"));
- serv_getln(buf, sizeof buf);
- http_redirect("/who");
- } else if (strlen(bstr("change_host_name_button")) > 0) {
- serv_printf("HCHG %s", bstr("fake_hostname"));
- serv_getln(buf, sizeof buf);
- http_redirect("/who");
- } else if (strlen(bstr("change_user_name_button")) > 0) {
- serv_printf("UCHG %s", bstr("fake_username"));
- serv_getln(buf, sizeof buf);
- http_redirect("/who");
- } else if (strlen(bstr("cancel_button")) > 0) {
- http_redirect("/who");
- } else {
- output_headers(1, 1, 0, 0, 0, 0);
-
- wprintf("<div id=\"banner\">\n");
- wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
- wprintf("<SPAN CLASS=\"titlebar\">");
- wprintf(_("Edit your session display"));
- wprintf("</SPAN></TD></TR></TABLE>\n");
- wprintf("</div>\n<div id=\"content\">\n");
-
- wprintf(_("This screen allows you to change the way your "
- "session appears in the 'Who is online' listing. "
- "To turn off any 'fake' name you've previously "
- "set, simply click the appropriate 'change' button "
- "without typing anything in the corresponding box. "));
- wprintf("<br />\n");
-
- wprintf("<FORM METHOD=\"POST\" ACTION=\"/edit_me\">\n");
-
- wprintf("<TABLE border=0 width=100%%>\n");
-
- wprintf("<TR><TD><B>");
- wprintf(_("Room name:"));
- wprintf("</B></TD>\n<TD>");
- wprintf("<INPUT TYPE=\"text\" NAME=\"fake_roomname\" MAXLENGTH=\"64\">\n");
- wprintf("</TD>\n<TD ALIGN=center>");
- wprintf("<INPUT TYPE=\"submit\" NAME=\"change_room_name_button\" VALUE=\"%s\">",
- _("Change room name"));
- wprintf("</TD>\n</TR>\n");
-
- wprintf("<TR><TD><B>");
- wprintf(_("Host name:"));
- wprintf("</B></TD><TD>");
- wprintf("<INPUT TYPE=\"text\" NAME=\"fake_hostname\" MAXLENGTH=\"64\">\n");
- wprintf("</TD>\n<TD ALIGN=center>");
- wprintf("<INPUT TYPE=\"submit\" NAME=\"change_host_name_button\" VALUE=\"%s\">",
- _("Change host name"));
- wprintf("</TD>\n</TR>\n");
-
- if (WC->is_aide) {
- wprintf("<TR><TD><B>");
- wprintf(_("User name:"));
- wprintf("</B></TD><TD>");
- wprintf("<INPUT TYPE=\"text\" NAME=\"fake_username\" MAXLENGTH=\"64\">\n");
- wprintf("</TD>\n<TD ALIGN=center>");
- wprintf("<INPUT TYPE=\"submit\" NAME=\"change_user_name_button\" VALUE=\"%s\">",
- _("Change user name"));
- wprintf("</TD>\n</TR>\n");
- }
- wprintf("<TR><TD> </TD><TD> </TD><TD ALIGN=center>");
- wprintf("<INPUT TYPE=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">",
- _("Cancel"));
- wprintf("</TD></TR></TABLE>\n");
- wprintf("</FORM></CENTER>\n");
- wDumpContent(1);
- }
+int conditional_who_idle(StrBuf *Target, WCTemplputParams *TP)
+{
+ UserStateStruct *User = (UserStateStruct*) CTX(CTX_WHO);
+ return User->Idle;
+}
+
+int conditional_who_nsessions(StrBuf *Target, WCTemplputParams *TP)
+{
+ UserStateStruct *User = (UserStateStruct*) CTX(CTX_WHO);
+ return User->SessionCount;
+}
+
+void tmplput_who_nsessions(StrBuf *Target, WCTemplputParams *TP)
+{
+ UserStateStruct *User = (UserStateStruct*) CTX(CTX_WHO);
+ StrBufAppendPrintf(Target, "%d", User->SessionCount);
+}
+
+int conditional_who_isme(StrBuf *Target, WCTemplputParams *TP)
+{
+ UserStateStruct *User = (UserStateStruct*) CTX(CTX_WHO);
+ return (User->Session == WC->ctdl_pid);
+}
+
+void
+InitModule_WHO
+(void)
+{
+ RegisterCTX(CTX_WHO);
+
+ WebcitAddUrlHandler(HKEY("terminate_session"), "", 0, _terminate_session, 0);
+
+ RegisterIterator("WHOLIST", 1, NULL, GetWholistHash, NULL, DeleteWholistHash, CTX_WHO, CTX_NONE, IT_NOFLAG);
+
+ RegisterNamespace("WHO:NAME", 0, 1, tmplput_who_username, NULL, CTX_WHO);
+ RegisterNamespace("WHO:USERAGENT", 0, 1, tmplput_who_UserAgent, NULL, CTX_WHO);
+ RegisterNamespace("WHO:ROOM", 0, 1, tmplput_who_room, NULL, CTX_WHO);
+ RegisterNamespace("WHO:HOST", 0, 1, tmplput_who_host, NULL, CTX_WHO);
+ RegisterNamespace("WHO:REALROOM", 0, 1, tmplput_who_realroom, NULL, CTX_WHO);
+ RegisterNamespace("WHO:REALHOST", 0, 1, tmplput_who_realhost, NULL, CTX_WHO);
+ RegisterNamespace("WHO:LASTACTIVE", 0, 1, tmplput_who_lastactive, NULL, CTX_WHO);
+ RegisterNamespace("WHO:IDLESINCE", 0, 1, tmplput_who_idlesince, NULL, CTX_WHO);
+ RegisterNamespace("WHO:SESSION", 0, 1, tmplput_who_session, NULL, CTX_WHO);
+ RegisterNamespace("WHO:NSESSIONS", 0, 1, tmplput_who_nsessions, NULL, CTX_WHO);
+ RegisterNamespace("WHO:NSESSIONS", 0, 1, tmplput_who_nsessions, NULL, CTX_WHO);
+
+ RegisterConditional("WHO:IDLE", 1, conditional_who_idle, CTX_WHO);
+ RegisterConditional("WHO:NSESSIONS", 1, conditional_who_nsessions, CTX_WHO);
+ RegisterConditional("WHO:ISME", 1, conditional_who_isme, CTX_WHO);
+ RegisterConditional("WHO:REALROOM", 1, conditional_who_realroom, CTX_WHO);
+ RegisterConditional("WHO:REALHOST", 1, conditional_who_realhost, CTX_WHO);