}
+
+/*
+ * list users in chat in this room
+ */
+void roomchat_rwho(char *argbuf) {
+ struct CitContext *nptr;
+ int nContexts, i;
+
+ if (!CC->cs_flags & CS_CHAT) {
+ cprintf("%d Session is not in chat mode.\n", ERROR);
+ return;
+ }
+
+ cprintf("%d%c \n", LISTING_FOLLOWS, CtdlCheckExpress() );
+
+ nptr = CtdlGetContextArray(&nContexts) ; // grab a copy of the wholist
+ if (nptr) {
+ for (i=0; i<nContexts; i++) { // list the users
+ if ( (nptr[i].room.QRnumber == CC->room.QRnumber)
+ && (nptr[i].cs_flags & CS_CHAT)
+ ) {
+ cprintf("%s\n", nptr[i].user.fullname);
+ }
+ }
+ free(nptr); // free our copy
+ }
+
+ cprintf("000\n");
+}
+
+
+
/*
* Participate in real time chat in a room
*/
else if (!strcasecmp(subcmd, "poll")) {
roomchat_poll(argbuf);
}
+ else if (!strcasecmp(subcmd, "rwho")) {
+ roomchat_rwho(argbuf);
+ }
else {
cprintf("%d Invalid subcommand\n", ERROR + CMD_NOT_SUPPORTED);
}
if (strcasecmp(cl_user, WC->last_chat_user)) {
wc_printf("<br>\n");
if (!strcasecmp(cl_user, ChrPtr(WC->wc_fullname))) {
- wc_printf("<span class=\"chat_username_me\">");
+ wc_printf("<span class=\"chat_myname\">");
}
else {
- wc_printf("<span class=\"chat_username_notme\">");
+ wc_printf("<span class=\"chat_notmyname\">");
}
escputs(cl_user);
strcpy(WC->last_chat_user, cl_user);
strcpy(send_this, "");
}
- if (havebstr("help_button")) {
- strcpy(send_this, "/help");
- }
-
- if (havebstr("list_button")) {
- strcpy(send_this, "/who");
- }
-
if (havebstr("exit_button")) {
strcpy(send_this, "/quit");
}
}
+/*
+ * wholist for chat
+ */
+void chat_rwho(void) {
+ char buf[1024];
+
+ serv_puts("RCHT rwho");
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '1') {
+ while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ if (!strcasecmp(buf, ChrPtr(WC->wc_fullname))) {
+ wc_printf("<span class=\"chat_myname\">");
+ }
+ else {
+ wc_printf("<span class=\"chat_notmyname\">");
+ }
+ wc_printf("<img src=\"static/citadelchat_16x.gif\">");
+ escputs(buf);
+ wc_printf("</span><br>\n");
+ }
+ }
+}
+
+
void
InitModule_ROOMCHAT
(void)
{
WebcitAddUrlHandler(HKEY("chat"), "", 0, do_chat, 0);
WebcitAddUrlHandler(HKEY("chat_recv"), "", 0, chat_recv, AJAX);
+ WebcitAddUrlHandler(HKEY("chat_rwho"), "", 0, chat_rwho, AJAX);
WebcitAddUrlHandler(HKEY("chat_send"), "", 0, chat_send, 0);
}
</div>
<div id="chatrecv" class="chatrecv">
</div>
+<div id="chat_userlist" class="chat_userlist">
+</div>
<div id="chatsend" class="chatsend">
<form method="POST" onsubmit="return chatsendfunc()" action="chat_send" id="chatsendid" name="chatsendform">
<input type="hidden" name="nonce" value="<?NONCE>">
}
});
+new Ajax.PeriodicalUpdater('chat_userlist', 'chat_rwho', {
+ method: 'get', frequency: 15
+});
+
</script>