X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Froomchat.c;h=3b0091e441a3d55799b1ce56e836c03705990eb7;hb=fb6f6fa4ec4e3277e30d84326d48e6850822d318;hp=88ef6533a19d58d8f595a9a1544ea6b3bd055fd1;hpb=d0e91c8de4c97de9bed71636c93ba7929ca6fa93;p=citadel.git
diff --git a/webcit/roomchat.c b/webcit/roomchat.c
index 88ef6533a..3b0091e44 100644
--- a/webcit/roomchat.c
+++ b/webcit/roomchat.c
@@ -1,23 +1,15 @@
/*
- * $Id$
- *
* This module handles multiuser chat.
*
- * Copyright (c) 1996-2010 by the citadel.org team
+ * Copyright (c) 1996-2012 by the citadel.org team
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "webcit.h"
@@ -34,7 +26,7 @@ void do_chat(void)
WC->last_chat_user[0] = 0;
output_headers(1, 1, 1, 0, 0, 0);
- do_template("roomchat", NULL);
+ do_template("roomchat");
serv_puts("RCHT enter");
serv_getln(buf, sizeof buf);
@@ -60,29 +52,28 @@ void chat_recv(void) {
/* who is speaking ... */
if (strcasecmp(cl_user, WC->last_chat_user)) {
- wc_printf("");
-
+ wc_printf("
\n");
if (!strcasecmp(cl_user, ChrPtr(WC->wc_fullname))) {
- wc_printf("");
+ wc_printf("");
}
else {
- wc_printf("");
+ wc_printf("");
}
escputs(cl_user);
strcpy(WC->last_chat_user, cl_user);
- wc_printf(": ");
+ wc_printf(": ");
}
else {
wc_printf(" ");
}
/* what did they say ... */
+ wc_printf("");
while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
escputs(buf);
}
-
- wc_printf("
\n");
+ wc_printf("
\n");
}
}
@@ -103,14 +94,6 @@ void chat_send(void) {
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");
}
@@ -127,12 +110,50 @@ void chat_send(void) {
}
+/*
+ * 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("");
+ }
+ else {
+ wc_printf("");
+ }
+ wc_printf("");
+ escputs(buf);
+ wc_printf("
\n");
+ }
+ }
+}
+
+
+/*
+ * advise the Citadel server that the user is navigating away from the chat window
+ */
+void chat_exit(void) {
+ char buf[1024];
+
+ serv_puts("RCHT exit");
+ serv_getln(buf, sizeof buf); /* Throw away the server reply */
+}
+
+
+
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_exit"), "", 0, chat_exit, AJAX);
WebcitAddUrlHandler(HKEY("chat_send"), "", 0, chat_send, 0);
}