Index: openacs-4/packages/chat/chat.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/chat.info,v
diff -u -r1.7.2.3 -r1.7.2.4
--- openacs-4/packages/chat/chat.info	7 Apr 2006 16:59:51 -0000	1.7.2.3
+++ openacs-4/packages/chat/chat.info	11 Apr 2006 11:29:45 -0000	1.7.2.4
@@ -7,17 +7,18 @@
     <initial-install-p>f</initial-install-p>
     <singleton-p>f</singleton-p>
     
-    <version name="5.0d5" url="http://openacs.org/repository/download/apm/chat-5.0d5.apm">
+    <version name="5.0d6" url="http://openacs.org/repository/download/apm/chat-5.0d6.apm">
         <owner url="http://www.openacs.org">Peter Alberer</owner>
         <summary>Server based chat with an html and ajax client.</summary>
-        <release-date>2006-04-06</release-date>
+        <release-date>2006-04-11</release-date>
         <vendor url="http://openacs.org">OpenACS</vendor>
         <description format="text/html">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.</description>
         <maturity>0</maturity>
 
-        <provides url="chat" version="5.0d5"/>
+        <provides url="chat" version="5.0d6"/>
         <requires url="acs-kernel" version="5.0d13"/>
+        <requires url="xotcl-core" version="0.36"/>
 
         <callbacks>
         </callbacks>
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 -r1.1.2.2 -r1.1.2.3
--- openacs-4/packages/chat/lib/current-messages.tcl	7 Apr 2006 16:59:51 -0000	1.1.2.2
+++ openacs-4/packages/chat/lib/current-messages.tcl	11 Apr 2006 11:29:45 -0000	1.1.2.3
@@ -7,9 +7,7 @@
 }
 
 db_multirow -extend { person_name } messages select_msg_itens $sql {
-    if { $creation_user eq 0 } {
-        set person_name "Nobody"
-    } else {
-        set person_name [chat_user_name $creation_user]
+    if { [catch { set person_name [chat_user_name $creation_user] }] } {
+        set person_name "Unknown"
     }
 }
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 -r1.1.2.1 -r1.1.2.2
--- openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d4-5.0d5.sql	7 Apr 2006 16:59:52 -0000	1.1.2.1
+++ openacs-4/packages/chat/sql/postgresql/upgrade/upgrade-5.0d4-5.0d5.sql	11 Apr 2006 11:29:46 -0000	1.1.2.2
@@ -1,8 +1,17 @@
 
-alter table chat_rooms add column auto_flush_p boolean default 't';
-alter table chat_rooms add column auto_transcript_p boolean default 'f';
+alter table chat_rooms add column auto_flush_p boolean;
+alter table chat_rooms alter column auto_flush_p set default 't';
+
+alter table chat_rooms add column auto_transcript_p boolean;
+alter table chat_rooms alter column auto_transcript_p set default 'f';
+
 update chat_rooms set auto_flush_p = 't', auto_transcript_p = 'f';
 
+alter table chat_msgs add column creation_date2 timestamptz;
+update chat_msgs set creation_date2 = creation_date;
+alter table chat_msgs drop column creation_date;
+alter table chat_msgs rename column creation_date2 to creation_date;
+
 create or replace function chat_room__edit (integer, varchar, varchar, boolean, boolean, boolean, boolean, boolean)
 returns integer as '
 declare
Index: openacs-4/packages/chat/tcl/chat-procs-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/tcl/Attic/chat-procs-postgresql.xql,v
diff -u -r1.1.2.2 -r1.1.2.3
--- openacs-4/packages/chat/tcl/chat-procs-postgresql.xql	11 Apr 2006 07:59:01 -0000	1.1.2.2
+++ openacs-4/packages/chat/tcl/chat-procs-postgresql.xql	11 Apr 2006 11:29:46 -0000	1.1.2.3
@@ -121,7 +121,7 @@
 	    perform chat_room__edit (
 	        :room_id,
 	        :pretty_name,
-                :description,
+            :description,
 	        :moderated_p,
 	        :active_p,
             :archive_p,
@@ -221,5 +221,23 @@
       </querytext>
 </fullquery>
 
+<fullquery name="chat_flush_rooms.get_rooms">
+      <querytext>
+            select room_id 
+            from chat_rooms 
+            where archive_p = 't' and auto_flush_p = 't'
+      </querytext>
+</fullquery>
+
+<fullquery name="chat_room_flush.get_archives_messages">
+  <querytext>
+    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
+  </querytext>
+</fullquery>
+
 </queryset>
 
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 -r1.5.2.3 -r1.5.2.4
--- openacs-4/packages/chat/tcl/chat-procs.tcl	11 Apr 2006 07:12:46 -0000	1.5.2.3
+++ openacs-4/packages/chat/tcl/chat-procs.tcl	11 Apr 2006 11:29:46 -0000	1.5.2.4
@@ -102,6 +102,9 @@
                     nsv_set chat_room $room_id {}                   
                 }
 
+                ns_log Notice "YY Adding message $msg to chat room $room_id"
+                ::chat::Chat c1 -volatile -chat_id $room_id -user_id 0 -session_id 0
+                c1 add_msg -uid $user_id $msg
 
                 if [catch {chat_post_message_to_db -creation_user $user_id $room_id $msg} errmsg] {
                     ns_log error "chat_post_message_to_db: error: $errmsg"
@@ -324,32 +327,32 @@
     message
     moderator_p
 } {
-    Post message to the chat room and broadcast to all applet clients. Only use by HTML client.
+    Post message to the chat room and broadcast to all applet clients. Used by ajax + html.
 } {
     if {$moderator_p == "1" } {
         set status "approved"
     } else {
         set status "pending"
     }
 
-    # 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 "<message><from>[chat_user_name $user_id]</from><from_user_id>$user_id</from_user_id><room_id>$room_id</room_id><body>$message</body><status>$status</status></message>"
 		# 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 {
+	}
+    
+        # 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 }
+        
+        # write message to the database
         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"
         }
-    }
 }
 
 
Index: openacs-4/packages/chat/www/chat.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/chat.tcl,v
diff -u -r1.5.2.3 -r1.5.2.4
--- openacs-4/packages/chat/www/chat.tcl	7 Apr 2006 16:59:52 -0000	1.5.2.3
+++ openacs-4/packages/chat/www/chat.tcl	11 Apr 2006 11:29:46 -0000	1.5.2.4
@@ -7,9 +7,9 @@
     @creation-date November 22, 2000
     @cvs-id $Id$
 } {
-  room_id
+    room_id
   {client "ajax"}
-  {message:html ""}
+    {message:html ""}
 } -properties {
     context_bar:onevalue
     user_id:onevalue
@@ -32,9 +32,9 @@
 set context_bar $room_name
 auth::require_login
 set user_id [ad_conn user_id]
-set read_p  [permission::permission_p -object_id $room_id -privilege "chat_read"]
+set read_p [permission::permission_p -object_id $room_id -privilege "chat_read"]
 set write_p [permission::permission_p -object_id $room_id -privilege "chat_write"]
-set ban_p   [permission::permission_p -object_id $room_id -privilege "chat_ban"]
+set ban_p [permission::permission_p -object_id $room_id -privilege "chat_ban"]
 set moderate_room_p [chat_room_moderate_p $room_id]
 
 if { $moderate_room_p == "t" } {
@@ -63,7 +63,7 @@
     "html" {
         set template_use "html-chat"
         # forward to ajax if necessary
-        if { ![empty_string_p $message] && [llength [info command ::chat::Chat]] > 0 } {
+        if { ![empty_string_p $message] } {
             set session_id [ad_conn session_id]
             ::chat::Chat c1 -volatile -chat_id $room_id -session_id $session_id
             c1 add_msg $message
Index: openacs-4/packages/chat/www/html-chat.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/Attic/html-chat.adp,v
diff -u -r1.5.2.1 -r1.5.2.2
--- openacs-4/packages/chat/www/html-chat.adp	30 Mar 2006 09:15:12 -0000	1.5.2.1
+++ openacs-4/packages/chat/www/html-chat.adp	11 Apr 2006 11:29:46 -0000	1.5.2.2
@@ -2,16 +2,39 @@
 <property name="context">@context_bar;noquote@</property>
 <property name="title">@room_name;noquote@</property>
 
+<style type='text/css'>
+#messages { margin-right:15px; float:left; width:70%; height:250px; overflow:auto; border:1px solid black; padding:5px; font-size: 12px; color: #666666; font-family: Trebuchet MS, Lucida Grande, Lucida Sans Unicode, Arial, sans-serif; }
+#messages .timestamp {vertical-align: top; color: #CCCCCC; }
+#messages .user {margin: 0px 5px; text-align: right; vertical-align: top; font-weight:bold;}
+#messages .message {vertical-align: top;}
+#messages .line {margin:0px;}
+#users { float:right; width:25%; height:250px; border:1px solid black; padding:5px; font-size: 12px; color: #666666; font-family: Trebuchet MS, Lucida Grande, Lucida Sans Unicode, Arial, sans-serif; }
+#users .user {text-align: left; vertical-align: top; font-weight:bold; }
+#users .timestamp {text-align: right; vertical-align: top; }
+</style>
+
+<p>
 <a href="room-exit?room_id=@room_id@" class=button title="#chat.exit_msg#">#chat.Log_off#</a>
 <a href="chat-transcript?room_id=@room_id@" class=button title="#chat.transcription_msg#" >#chat.Trascript#</a>
-<a href="room-enter?room_id=@room_id@&client=@richclient.short@" class=button title="@richclient.msg@" >@richclient.title@</a>
-<p>
+<a href="room-enter?room_id=@room_id@&client=@richclient.short@#xj220" class=button title="@richclient.msg@" >@richclient.title@</a>
+</p>
 
-<form method=post action="chat">
-#chat.Chat#: <input name=message size=40>
+<div id='messages'>
+@html_chat;noquote@
+<a id="xj220" name="#xj220"></a>
+</div>
+
+<div id='users'>
+    <table width="100%"><tbody>@html_users;noquote@</tbody></table>
+</div>
+
+<br clear="all"><br>
+
+<form method=post action="chat#xj220">
+#chat.message#: <input tabindex='1' type='text' size='80' name='message' id='chatMsg'>
 <input type=hidden name="room_id" value="@room_id@">
 <input type=hidden name="client" value="html">
 <input type=submit value="#chat.Send_Refresh#">
+<input type=submit value="#chat.Refresh#">
 </form>
 
-<listtemplate name="chat_msg" id="messages"></listtemplate>
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 -r1.1.2.3 -r1.1.2.4
--- openacs-4/packages/chat/www/html-chat.tcl	10 Apr 2006 11:43:10 -0000	1.1.2.3
+++ openacs-4/packages/chat/www/html-chat.tcl	11 Apr 2006 11:29:46 -0000	1.1.2.4
@@ -27,18 +27,8 @@
     ad_return_complaint 1 "[_ chat.Room_not_found]"
 }
 
-template::list::create -name chat_msg \
-    -multirow chat_msg_query \
-    -no_data "[_ chat.no_messages]" \
-    -page_flush_p 1 \
-    -elements {
-        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_items {} {
-    set person_name [person::name -person_id $creation_user]
-}
+::chat::Chat c1 -volatile -encoder noencode -chat_id $room_id
+set html_chat [c1 get_all]
+set html_users [c1 get_users]
 
 ad_return_template
\ No newline at end of file
Index: openacs-4/packages/chat/www/index.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/index.tcl,v
diff -u -r1.3.2.3 -r1.3.2.4
--- openacs-4/packages/chat/www/index.tcl	7 Apr 2006 16:59:52 -0000	1.3.2.3
+++ openacs-4/packages/chat/www/index.tcl	11 Apr 2006 11:29:46 -0000	1.3.2.4
@@ -21,29 +21,18 @@
 set default_client [parameter::get -parameter "DefaultClient" -default "ajax"]
 set warning ""
 
-if { $default_client eq "ajax" } {
-    if { ![apm_package_installed_p xotcl-core] } {
-        set warning "[_ chat.xotcl_missing]"
-        set default_client "html"
-    } elseif { [llength [info command ::chat::Chat]] == 0 } {
-        set warning "[_ chat.bootstrap_patch_missing]"
-        set default_client "html"
-    }
+if { $default_client eq "ajax" && ![apm_package_installed_p xotcl-core] } {
+    set warning "[_ chat.xotcl_missing]"
 }
 
 if { $room_create_p } {
     lappend actions "#chat.Create_a_new_room#" room-edit "#chat.Create_a_new_room#"
 }
 
 db_multirow -extend { active_users last_activity } rooms rooms_list {} {
-    if { [llength [info command ::chat::Chat]] > 0 } {
-        set room [::chat::Chat create new -volatile -chat_id $room_id]
-        set active_users [$room nr_active_users]
-        set last_activity [$room last_activity]
-    } else {
-        set active_users "-"
-        set last_activity "-"        
-    }
+  set room [::chat::Chat create new -volatile -chat_id $room_id]
+  set active_users [$room nr_active_users]
+  set last_activity [$room last_activity]
 }
 
 list::create \
Index: openacs-4/packages/chat/www/message-delete-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/message-delete-2.tcl,v
diff -u -r1.3.2.1 -r1.3.2.2
--- openacs-4/packages/chat/www/message-delete-2.tcl	30 Mar 2006 09:15:12 -0000	1.3.2.1
+++ openacs-4/packages/chat/www/message-delete-2.tcl	11 Apr 2006 11:29:46 -0000	1.3.2.2
@@ -15,8 +15,6 @@
     ad_return_complaint 1 "[_ chat.Delete_messages_failed]: $errmsg"
 }
 
-if { [llength [info command ::chat::Chat]] > 0 } {
-    ::chat::Chat flush_messages -chat_id $room_id
-}
+::chat::Chat flush_messages -chat_id $room_id
 
 ad_returnredirect .
\ No newline at end of file
Index: openacs-4/packages/chat/www/room-exit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/room-exit.tcl,v
diff -u -r1.3.2.1 -r1.3.2.2
--- openacs-4/packages/chat/www/room-exit.tcl	30 Mar 2006 09:15:12 -0000	1.3.2.1
+++ openacs-4/packages/chat/www/room-exit.tcl	11 Apr 2006 11:29:46 -0000	1.3.2.2
@@ -23,11 +23,9 @@
 chat_message_post $room_id $user_id "[_ chat.has_left_the_room]." "1"
 
 # send to AJAX
-if { [llength [info command ::chat::Chat]] > 0 } {
-    set session_id [ad_conn session_id]
-    ::chat::Chat c1 -volatile -chat_id $room_id -session_id $session_id
-    c1 logout
-}
+set session_id [ad_conn session_id]
+::chat::Chat c1 -volatile -chat_id $room_id -session_id $session_id
+c1 logout
 
 ad_returnredirect index
 #ad_returnredirect [dotlrn::get_url]
Index: openacs-4/packages/chat/www/transcript-new-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/Attic/transcript-new-2.tcl,v
diff -u -r1.1.1.1.14.1 -r1.1.1.1.14.2
--- openacs-4/packages/chat/www/transcript-new-2.tcl	30 Mar 2006 09:15:12 -0000	1.1.1.1.14.1
+++ openacs-4/packages/chat/www/transcript-new-2.tcl	11 Apr 2006 11:29:46 -0000	1.1.1.1.14.2
@@ -27,9 +27,7 @@
 if { $delete_messages eq "on" } {
     chat_room_message_delete $room_id
     # forward the information to AJAX
-    if { [llength [info command ::chat::Chat]] > 0 } {
-        ::chat::Chat flush_messages -chat_id $room_id
-    }
+    ::chat::Chat flush_messages -chat_id $room_id
 }
 
 if { $deactivate_room eq "on" } {
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 -r1.1.2.5 -r1.1.2.6
--- openacs-4/packages/chat/www/ajax/chat.tcl	8 Apr 2006 09:14:20 -0000	1.1.2.5
+++ openacs-4/packages/chat/www/ajax/chat.tcl	11 Apr 2006 11:29:46 -0000	1.1.2.6
@@ -26,7 +26,7 @@
     if { $msg ne "" } {
         set message_output [c1 add_msg $msg]
         if { [c1 current_message_valid] } {
-            chat_message_post $id [c1 user_id] $msg f
+            chat_message_post $id [c1 user_id] $msg 1
         }
     }
   }