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); }