Index: openacs-4/packages/chat/chat.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/chat.info,v diff -u -N -r1.7.2.2 -r1.7.2.3 --- openacs-4/packages/chat/chat.info 31 Mar 2006 16:09:56 -0000 1.7.2.2 +++ openacs-4/packages/chat/chat.info 7 Apr 2006 16:59:51 -0000 1.7.2.3 @@ -7,16 +7,16 @@ f f - + Peter Alberer Server based chat with an html and ajax client. - 2006-03-31 + 2006-04-06 OpenACS Adapted by Peter Alberer 2006/03/25 to allow java and ajax to coexist. Adapted by Tekne 2006/03/01 to replace JAVA server with AJAX; make use of generalized chat class from xotcl-core. 0 - + Index: openacs-4/packages/chat/catalog/chat.de_DE.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/catalog/chat.de_DE.ISO-8859-1.xml,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/chat/catalog/chat.de_DE.ISO-8859-1.xml 30 Mar 2006 09:15:12 -0000 1.1.2.1 +++ openacs-4/packages/chat/catalog/chat.de_DE.ISO-8859-1.xml 7 Apr 2006 16:59:51 -0000 1.1.2.2 @@ -1,5 +1,5 @@ - + Aktionen Aktiv @@ -13,6 +13,11 @@ Wirklich Rechte am Chat entziehen? Wirklich Administratorrechte entziehen? Aufheben der Sperre von + Nachrichten aufr�umen + Alle Nachrichten in der Datenbank automatisch um Mitternacht l�schen. Dieser Parameter wird nur evaluiert, wenn der Raum archiviert wird. + Automatisch erstelltes Protokoll + Automatisches Protokoll + Vor dem L�schen aller Nachrichten um Mitternacht ein Protokoll des Tages erstellen. Sperren Rechte am Chat sperren f�r Benutzer sperren @@ -74,6 +79,7 @@ Name Keine Information verf�gbar Keine aktiven + Neu laden entfernen Rechte entziehen Rechte entziehen Index: openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml 30 Mar 2006 09:15:12 -0000 1.1.2.1 +++ openacs-4/packages/chat/catalog/chat.en_US.ISO-8859-1.xml 7 Apr 2006 16:59:51 -0000 1.1.2.2 @@ -1,5 +1,5 @@ - + Actions Active @@ -13,6 +13,11 @@ Are you sure you want to revoke chat user privilege of Are you sure you want to revoke moderator privilege of Are you sure you want to unban + Automatically flush messages at midnight + Automatically flush the messages in the database at midnight. This is only used if the rooms is archived. + Automatically created transcript + Auto Transcript + Automatically create a transcript of the messages after flushing. Ban Ban chat read/write privilege for Ban user @@ -76,6 +81,7 @@ Name No information available No active + Refresh remove Revoke revoke Index: openacs-4/packages/chat/lib/current-messages.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/lib/current-messages.tcl,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/chat/lib/current-messages.tcl 30 Mar 2006 09:15:12 -0000 1.1.2.1 +++ openacs-4/packages/chat/lib/current-messages.tcl 7 Apr 2006 16:59:51 -0000 1.1.2.2 @@ -7,5 +7,9 @@ } db_multirow -extend { person_name } messages select_msg_itens $sql { - set person_name [chat_user_name $creation_user] + if { $creation_user eq 0 } { + set person_name "Nobody" + } else { + set person_name [chat_user_name $creation_user] + } } Index: openacs-4/packages/chat/sql/postgresql/chat-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/sql/postgresql/chat-create.sql,v diff -u -N -r1.1 -r1.1.2.1 --- openacs-4/packages/chat/sql/postgresql/chat-create.sql 14 Mar 2006 12:16:09 -0000 1.1 +++ openacs-4/packages/chat/sql/postgresql/chat-create.sql 7 Apr 2006 16:59:52 -0000 1.1.2.1 @@ -201,13 +201,13 @@ check (active_p in ('t','f')), -- if set then log all chat messages in this room. archive_p boolean - default 'f' + default 't' constraint chat_rooms_archive_p_ck - check (archive_p in ('t', 'f')) - - - - + check (archive_p in ('t', 'f')), + -- flush the rooms messages every night at 00:05 + auto_flush_p boolean default 't', + -- automatically create a transcript after flushing the room + auto_transcript_p boolean default 'f' ); @@ -343,7 +343,7 @@ --------------------------------- -create function chat_room__new (integer, varchar, varchar, boolean, boolean, boolean, integer, timestamptz, integer, varchar, varchar) +create or replace function chat_room__new (integer, varchar, varchar, boolean, boolean, boolean, boolean, boolean, integer, timestamptz, integer, varchar, varchar) returns integer as ' declare p_room_id alias for $1; @@ -352,11 +352,13 @@ p_moderated_p alias for $4; p_active_p alias for $5; p_archive_p alias for $6; - p_context_id alias for $7; - p_creation_date alias for $8; - p_creation_user alias for $9; - p_creation_ip alias for $10; - p_object_type alias for $11; + p_auto_flush_p alias for $7; + p_auto_transcript_p alias for $8; + p_context_id alias for $9; + p_creation_date alias for $10; + p_creation_user alias for $11; + p_creation_ip alias for $12; + p_object_type alias for $13; v_room_id chat_rooms.room_id%TYPE; begin v_room_id := acs_object__new ( @@ -369,9 +371,9 @@ ); insert into chat_rooms - (room_id, pretty_name, description, moderated_p, active_p, archive_p) + (room_id, pretty_name, description, moderated_p, active_p, archive_p, auto_flush_p, auto_transcript_p) values - (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p); + (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p, p_auto_flush_p, p_auto_transcript_p); return v_room_id; @@ -507,7 +509,8 @@ end;' language 'plpgsql'; ---------------------------- -create function chat_room__edit (integer, varchar, varchar, boolean, boolean, boolean) + +create or replace function chat_room__edit (integer, varchar, varchar, boolean, boolean, boolean, boolean, boolean) returns integer as ' declare p_room_id alias for $1; @@ -516,14 +519,18 @@ p_moderated_p alias for $4; p_active_p alias for $5; p_archive_p alias for $6; + p_auto_flush_p alias for $7; + p_auto_transcript_p alias for $8; begin update chat_rooms set pretty_name = p_pretty_name, description = p_description, moderated_p = p_moderated_p, active_p = p_active_p, - archive_p = p_archive_p + archive_p = p_archive_p, + auto_flush_p = p_auto_flush_p, + auto_transcript_p = p_auto_transcript_p where room_id = p_room_id; return 0; Index: openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d4-5.0d5.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d4-5.0d5.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d4-5.0d5.sql 7 Apr 2006 16:59:52 -0000 1.1.2.1 @@ -0,0 +1,67 @@ + +alter table chat_rooms add column auto_flush_p boolean default 't'; +alter table chat_rooms add column auto_transcript_p boolean default 'f'; +update chat_rooms set auto_flush_p = 't', auto_transcript_p = 'f'; + +create or replace function chat_room__edit (integer, varchar, varchar, boolean, boolean, boolean, boolean, boolean) +returns integer as ' +declare + p_room_id alias for $1; + p_pretty_name alias for $2; + p_description alias for $3; + p_moderated_p alias for $4; + p_active_p alias for $5; + p_archive_p alias for $6; + p_auto_flush_p alias for $7; + p_auto_transcript_p alias for $8; +begin + + update chat_rooms set + pretty_name = p_pretty_name, + description = p_description, + moderated_p = p_moderated_p, + active_p = p_active_p, + archive_p = p_archive_p, + auto_flush_p = p_auto_flush_p, + auto_transcript_p = p_auto_transcript_p + where + room_id = p_room_id; + return 0; +end;' language 'plpgsql'; + +create or replace function chat_room__new (integer, varchar, varchar, boolean, boolean, boolean, boolean, boolean, integer, timestamptz, integer, varchar, varchar) +returns integer as ' +declare + p_room_id alias for $1; + p_pretty_name alias for $2; + p_description alias for $3; + p_moderated_p alias for $4; + p_active_p alias for $5; + p_archive_p alias for $6; + p_auto_flush_p alias for $7; + p_auto_transcript_p alias for $8; + p_context_id alias for $9; + p_creation_date alias for $10; + p_creation_user alias for $11; + p_creation_ip alias for $12; + p_object_type alias for $13; + v_room_id chat_rooms.room_id%TYPE; +begin + v_room_id := acs_object__new ( + null, + ''chat_room'', + now(), + p_creation_user, + p_creation_ip, + p_context_id + ); + + insert into chat_rooms + (room_id, pretty_name, description, moderated_p, active_p, archive_p, auto_flush_p, auto_transcript_p) + values + (v_room_id, p_pretty_name, p_description, p_moderated_p, p_active_p, p_archive_p, p_auto_flush_p, p_auto_transcript_p); + +return v_room_id; + +end;' language 'plpgsql'; + Index: openacs-4/packages/chat/tcl/chat-ajax-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/chat-ajax-procs.tcl,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/chat/tcl/chat-ajax-procs.tcl 31 Mar 2006 15:42:52 -0000 1.1.2.3 +++ openacs-4/packages/chat/tcl/chat-ajax-procs.tcl 7 Apr 2006 16:59:52 -0000 1.1.2.4 @@ -34,13 +34,13 @@ // register an update function to refresh the data sources every 5 seconds var updateInterval = setInterval(updateDataConnections,5000); -
+ + style='width:70%; border:1px solid black; margin-right:15px;' height='257'> + style='width:25%; border:1px solid black;' height='257'>
- #chat.message# + #chat.message#
Index: openacs-4/packages/chat/tcl/chat-init.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/chat-init.tcl,v diff -u -N -r1.1.1.1 -r1.1.1.1.14.1 --- openacs-4/packages/chat/tcl/chat-init.tcl 20 Apr 2001 20:51:08 -0000 1.1.1.1 +++ openacs-4/packages/chat/tcl/chat-init.tcl 7 Apr 2006 16:59:52 -0000 1.1.1.1.14.1 @@ -11,71 +11,5 @@ nsv_set chat server_started 0 +ad_schedule_proc -thread t -schedule_proc ns_schedule_daily [list 0 5] chat_flush_rooms - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Index: openacs-4/packages/chat/tcl/chat-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/chat-procs-postgresql.xql,v diff -u -N -r1.1 -r1.1.2.1 --- openacs-4/packages/chat/tcl/chat-procs-postgresql.xql 14 Mar 2006 12:16:09 -0000 1.1 +++ openacs-4/packages/chat/tcl/chat-procs-postgresql.xql 7 Apr 2006 16:59:52 -0000 1.1.2.1 @@ -10,6 +10,8 @@ :moderated_p, :active_p, :archive_p, + :auto_flush_p, + :auto_transcript_p, :context_id, now(), :creation_user, @@ -122,7 +124,9 @@ :description, :moderated_p, :active_p, - :archive_p + :archive_p, + :auto_flush_p, + :auto_transcript_p ); return 0; end; @@ -217,7 +221,23 @@ + + + select room_id + from chat_rooms + where archive_p = 't' and auto_flush_p = 't' + + + + + select msg, creation_user, to_char(creation_date, 'DD.MM.YYYY hh24:mi:ss') as creation_date + from chat_msgs + where room_id = :room_id + and msg is not null + order by creation_date + + Index: openacs-4/packages/chat/tcl/chat-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/chat-procs.tcl,v diff -u -N -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/chat/tcl/chat-procs.tcl 30 Mar 2006 09:15:12 -0000 1.5.2.1 +++ openacs-4/packages/chat/tcl/chat-procs.tcl 7 Apr 2006 16:59:52 -0000 1.5.2.2 @@ -133,6 +133,8 @@ {-moderated_p f} {-active_p t} {-archive_p f} + {-auto_flush_p t} + {-auto_transcript_p f} {-context_id ""} {-creation_user ""} {-creation_ip ""} @@ -158,6 +160,8 @@ moderated_p active_p archive_p + auto_flush_p + auto_transcript_p } { Edit information on chat room. All information require. } { @@ -328,10 +332,24 @@ set status "pending" } - if [catch {chat_post_message_to_db -creation_user $user_id $room_id $message} errmsg] { - ns_log error "chat_post_message_to_db: error: $errmsg" - } + # do not write messages to the database if the room should not be archived + chat_room_get -room_id $room_id -array room_info + if { $room_info(archive_p) eq "f" } { return } + set default_client [parameter::get -parameter "DefaultClient" -default "ajax"] + + if {$default_client eq "java"} { + set chat_msg "[chat_user_name $user_id]$user_id$room_id$message$status" + # Add message to queue. Notify thread responsible for + # broadcast message to applets. + + nsv_set chat html_message $chat_msg + ns_mutex unlock [nsv_get chat new_message] + } else { + if [catch {chat_post_message_to_db -creation_user $user_id $room_id $message} errmsg] { + ns_log error "chat_post_message_to_db: error: $errmsg" + } + } } @@ -443,4 +461,50 @@ db_exec_plsql edit_transcript {} } +ad_proc -public chat_room_get { + {-room_id {}} + {-array:required} +} { + Get all the information about a chat room into an array +} { + upvar $array row + array set row [util_memoize [list chat_room_get_not_cached $room_id]] +} +ad_proc -private chat_room_get_not_cached { + room_id +} { + db_1row select_user_info {select * from chat_rooms where room_id = :room_id} -column_array row + return [array get row] +} + +ad_proc -private chat_flush_rooms {} {Flush the messages in all of the chat rooms} { + # ns_log Notice "YY Starting chat_flush_rooms operation" + set room_ids [db_list get_rooms *SQL*] + foreach room_id $room_ids { + chat_room_flush $room_id + } +} + +ad_proc -private chat_room_flush { room_id } {Flush the messages a single chat room} { + # ns_log Notice "YY flushing room $room_id" + db_transaction { + array set room_info [chat_room_get_not_cached $room_id] + set contents "" + # do we have to create a transcript for the room + if { $room_info(auto_transcript_p) eq "t" } { + # build a list of all messages + db_foreach get_archives_messages {} { + append contents "\[$creation_date\] [chat_user_name $creation_user]: $msg
\n" + } + if { $contents ne "" } { + chat_transcript_new \ + -description "#chat.automatically_created_transcript#" \ + "#chat.transcript_of_date# [clock format [clock seconds] -format "%d.%m.%Y"]" $contents $room_id + } + } + # clear all the messages in the room + chat_room_message_delete $room_id + } +} + Index: openacs-4/packages/chat/www/chat.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/chat.tcl,v diff -u -N -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/chat/www/chat.tcl 31 Mar 2006 15:42:53 -0000 1.5.2.2 +++ openacs-4/packages/chat/www/chat.tcl 7 Apr 2006 16:59:52 -0000 1.5.2.3 @@ -72,6 +72,16 @@ "ajax" { set template_use "ajax-chat-script" } + "java" { + set template_use "java-chat" + + # Get config paramater for applet. + set width [ad_parameter AppletWidth "" 500] + set height [ad_parameter AppletHeight "" 400] + + set host [ad_parameter ServerHost "" [ns_config "ns/server/[ns_info server]/module/nssock" Hostname]] + set port [ad_parameter ServerPort "" 8200] + } } ad_return_template $template_use Index: openacs-4/packages/chat/www/html-chat.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/Attic/html-chat.tcl,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/chat/www/html-chat.tcl 30 Mar 2006 09:15:12 -0000 1.1.2.1 +++ openacs-4/packages/chat/www/html-chat.tcl 7 Apr 2006 16:59:52 -0000 1.1.2.2 @@ -32,13 +32,13 @@ -no_data "[_ chat.no_messages]" \ -page_flush_p 1 \ -elements { - creation_date { label "[_ chat.date]" } + creation_date_pretty { label "[_ chat.date]" } person_name { label "[_ acs-kernel.User]" } msg { label "[_ chat.msg]" } } db_multirow -extend { person_name } chat_msg_query select_msg_itens { - select to_char(creation_date, 'DD.MM.YYYY hh24:mi:ss') as creation_date, creation_user, msg + select to_char(creation_date, 'DD.MM.YYYY hh24:mi:ss') as creation_date_pretty, creation_user, msg from chat_msgs where room_id = :room_id order by creation_date desc Index: openacs-4/packages/chat/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/index.tcl,v diff -u -N -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/chat/www/index.tcl 31 Mar 2006 15:42:53 -0000 1.3.2.2 +++ openacs-4/packages/chat/www/index.tcl 7 Apr 2006 16:59:52 -0000 1.3.2.3 @@ -72,13 +72,15 @@ } pretty_name { label "Name" + html { width 400px } display_template { @rooms.pretty_name@ @rooms.pretty_name@ +
@rooms.description@
} } active_users { Index: openacs-4/packages/chat/www/room-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/room-edit.tcl,v diff -u -N -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/chat/www/room-edit.tcl 30 Mar 2006 09:15:12 -0000 1.4.2.1 +++ openacs-4/packages/chat/www/room-edit.tcl 7 Apr 2006 16:59:52 -0000 1.4.2.2 @@ -21,9 +21,6 @@ {moderated_p:boolean(hidden) {value "f"} } - {archive_p:boolean(hidden) - {value "t"} - } {pretty_name:text(text) {label "#chat.Room_name#" } } @@ -36,11 +33,30 @@ {options {{Ja t} {Nein f}}} {value "t"} } + {archive_p:boolean(radio) + {label "#chat.Archive#" } + {options {{Ja t} {Nein f}}} + {value "t"} + } + {auto_flush_p:boolean(radio) + {label "#chat.AutoFlush#" } + {options {{Ja t} {Nein f}}} + {value "t"} + {help_text "[_ chat.AutoFlushHelp]"} + } + {auto_transcript_p:boolean(radio) + {label "#chat.AutoTranscript#" } + {options {{Ja t} {Nein f}}} + {value "f"} + {help_text "[_ chat.AutoTranscriptHelp]"} + } } -new_data { if {[catch {set room_id [chat_room_new -moderated_p $moderated_p \ -description $description \ -active_p $active_p \ -archive_p $archive_p \ + -auto_flush_p $auto_flush_p \ + -auto_transcript_p $auto_transcript_p \ -context_id [ad_conn package_id] \ -creation_user [ad_conn user_id] \ -creation_ip [ad_conn peeraddr] $pretty_name]} errmsg]} { @@ -60,17 +76,18 @@ } } -edit_request { if {[catch {db_1row room_info { - select pretty_name, description, moderated_p, archive_p, active_p + select pretty_name, description, moderated_p, archive_p, active_p, auto_flush_p, auto_transcript_p from chat_rooms where room_id = :room_id}} errmsg]} { ad_return_complaint 1 "[_ chat.Room_not_found]." break } } -edit_data { - if {[catch {chat_room_edit $room_id $pretty_name $description $moderated_p $active_p $archive_p} errmsg]} { + if {[catch {chat_room_edit $room_id $pretty_name $description $moderated_p $active_p $archive_p $auto_flush_p $auto_transcript_p} errmsg]} { ad_return_complaint 1 "[_ chat.Could_not_update_room]: $errmsg" break } + util_memoize_flush [list chat_room_get_not_cached $room_id] } -after_submit { ad_returnredirect "room?room_id=$room_id" ad_script_abort Index: openacs-4/packages/chat/www/room-enter.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/room-enter.tcl,v diff -u -N -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/chat/www/room-enter.tcl 30 Mar 2006 09:15:12 -0000 1.3.2.1 +++ openacs-4/packages/chat/www/room-enter.tcl 7 Apr 2006 16:59:52 -0000 1.3.2.2 @@ -24,10 +24,13 @@ ad_script_abort } +set default_client [parameter::get -parameter "DefaultClient" -default "ajax"] + +if {$default_client eq "java"} { + chat_start_server +} + switch $client { - "java" { - chat_start_server - } "html" - "ajax" - "html-chat-script" { ns_log Notice "YY room-enter: has_entered_the room" chat_message_post $room_id $user_id "[_ chat.has_entered_the_room]." "1" Index: openacs-4/packages/chat/www/room.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/room.adp,v diff -u -N -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/chat/www/room.adp 30 Mar 2006 09:15:12 -0000 1.5.2.1 +++ openacs-4/packages/chat/www/room.adp 7 Apr 2006 16:59:52 -0000 1.5.2.2 @@ -25,6 +25,18 @@ @active_p@ + #chat.Archive# + @archive_p@ + + + #chat.AutoFlush# + @auto_flush_p@ + + + #chat.AutoTranscript# + @auto_transcript_p@ + + #chat.message_count# @message_count@ Index: openacs-4/packages/chat/www/room.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/room.tcl,v diff -u -N -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/chat/www/room.tcl 30 Mar 2006 09:15:12 -0000 1.3.2.1 +++ openacs-4/packages/chat/www/room.tcl 7 Apr 2006 16:59:52 -0000 1.3.2.2 @@ -51,7 +51,7 @@ # Get room basic information. ### db_1row room_info { - select pretty_name, description, moderated_p, active_p, archive_p + select pretty_name, description, moderated_p, active_p, archive_p, auto_flush_p, auto_transcript_p from chat_rooms where room_id = :room_id } Index: openacs-4/packages/chat/www/ajax/chat.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/ajax/Attic/chat.js,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/chat/www/ajax/chat.js 31 Mar 2006 16:09:56 -0000 1.1.2.3 +++ openacs-4/packages/chat/www/ajax/chat.js 7 Apr 2006 16:59:52 -0000 1.1.2.4 @@ -95,16 +95,16 @@ if (body[0].childNodes[i].nodeType == 3 ) { // if this is a textnode, skip it continue; - } + } var attribute = body[0].childNodes[i].getAttribute('id'); switch (attribute) { case "messages": var messagesNode = body[0].childNodes[i]; - if (messagesNode.hasChildNodes()) { - var messagesDoc = frames['ichat'].document; - var messagesDiv = frames['ichat'].document.getElementById('messages'); - messagesReceiver(messagesNode,messagesDoc,messagesDiv); - } + if (messagesNode.hasChildNodes()) { + var messagesDoc = frames['ichat'].document; + var messagesDiv = frames['ichat'].document.getElementById('messages'); + messagesReceiver(messagesNode,messagesDoc,messagesDiv); + } break; case "users": var usersNode = body[0].childNodes[i].childNodes[0]; @@ -123,7 +123,7 @@ if (node.childNodes[i].nodeType == 3 ){ // if this is a textnode, skip it continue; - } + } tr = doc.createElement('tr'); e = node.childNodes[i].getElementsByTagName('TD'); @@ -238,3 +238,13 @@ inactivityTimeout = null; } +function startProc() { + document.getElementById('chatMsg').focus(); + var messagesDiv = frames['ichat'].document.getElementById('messages'); + if (messagesDiv) { + frames['ichat'].window.scrollTo(0,messagesDiv.offsetHeight); + } +} + +window.onload = startProc; + Index: openacs-4/packages/chat/www/ajax/chat.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/ajax/Attic/chat.tcl,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/chat/www/ajax/chat.tcl 31 Mar 2006 16:09:56 -0000 1.1.2.3 +++ openacs-4/packages/chat/www/ajax/chat.tcl 7 Apr 2006 16:59:52 -0000 1.1.2.4 @@ -8,7 +8,7 @@ m id s - {msg ""} + {msg:optional,allhtml ""} } set message_output "" @@ -24,14 +24,15 @@ } # do not insert empty messages, if they managed to get here if { $msg ne "" } { - set message_output [c1 $m $msg] - set user_id [ad_conn user_id] - chat_message_post $id $user_id $msg f + set message_output [c1 add_msg $msg] + if { [c1 current_message_valid] } { + chat_message_post $id [c1 euid] [c1 emsg] f + } } } login - get_new - get_all { set message_output [c1 $m] - } + } get_updates { set message_output [c1 get_new] set user_output [c1 get_users] @@ -69,4 +70,4 @@ " -ns_return 200 text/html $output \ No newline at end of file +ns_return 200 text/html $output