Index: openacs-4/packages/chat-portlet/www/chat-portlet.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/chat-portlet/www/chat-portlet.tcl,v
diff -u -r1.3 -r1.4
--- openacs-4/packages/chat-portlet/www/chat-portlet.tcl 15 May 2007 20:14:24 -0000 1.3
+++ openacs-4/packages/chat-portlet/www/chat-portlet.tcl 7 Jun 2007 09:19:12 -0000 1.4
@@ -17,15 +17,14 @@
ad_page_contract {
The display logic for the chat portlet
- @author agustin (Agustin.Lopez@uv.es)
- @creation-date 2004-10-10
- @version $Id: chat-portlet.tcl,v 0.1 2004/10/10
+ @author agustin (Agustin.Lopez@uv.es) and Pablo Mu�oz (pablomp@tid.es)
} -properties {
context:onevalue
user_id:onevalue
room_create_p:onevalue
rooms:multirow
+ rooms3:multirow
}
array set config $cf
@@ -37,23 +36,363 @@
set user_id [ad_conn user_id]
set community_id [dotlrn_community::get_community_id]
set room_create_p [ad_permission_p $user_id chat_room_create]
+
set default_mode [ad_parameter DefaultClient chat "ajax"]
set num_rooms 0
+set path [ad_return_url]
+set package_id [ad_conn package_id]
+set room_create_p [permission::permission_p -object_id $package_id -privilege chat_room_create]
-if { $community_id eq 0 } {
- set query_name "rooms_list_all"
+set rss_exists [rss_support::subscription_exists \
+ -summary_context_id $package_id \
+ -impl_name chat_rss]
+
+set rss_feed_url [chat_util_get_url $package_id]chat/rss/rss.xml
+
+
+
+
+
+if { $community_id eq "" } {
+ set query_name "rooms_list_all"
+ set list 0
} else {
+ set list 1
set query_name "rooms_list"
}
-db_multirow -extend { can_see_p room_url html_room_url admin_url} rooms $query_name {} {
+
+
+db_multirow -extend { } rooms2 "rooms_list_all_comm" {} {
+}
+db_multirow -extend { active_users last_activity can_see_p rss_exists rss_feed_url2 rss_service admin_professor} rooms1 $query_name {} {
+ set room [::chat::Chat create new -volatile -chat_id $room_id]
+ set active_users [$room nr_active_users]
+ set last_activity [$room last_activity]
set can_see_p 0
+ set rss_exists [rss_support::subscription_exists -summary_context_id $room_id -impl_name chat_rss]
+
+ set rss_feed_url2 [chat_util_get_url $package_id]/chat/rss/rss.tcl?room_id=$room_id
+
+
+ db_1row room_info {
+ select count(cru.rss_service) as counter
+ from chat_registered_users cru
+ where cru.user_id = :user_id
+ and cru.room_id = :room_id
+ and cru.rss_service = 'true'
+ }
+ if { $counter > 0} {
+ set rss_service 1
+ } else {
+ set rss_service 0
+ }
+
if {($active_p eq "t" && $user_p eq "t") || ($admin_p eq "t")} {
set can_see_p 1
set num_rooms [expr $num_rooms + 1]
- }
- set room_url [export_vars -base ${base_url}/room-enter {{client $default_mode} room_id}]
- set html_room_url [export_vars -base ${base_url}/room-enter {{client html} room_id}]
- set admin_url [export_vars -base ${base_url}/room {room_id}]
+ }
+
+ #A professor who creates a rooom will be able to admin it.
+db_1row room_info2 {
+ select count(cr.creator) as counter2
+ from chat_rooms cr
+ where cr.room_id = :room_id
+ and cr.creator = :user_id
+ }
+ if { $counter2 > 0} {
+ set admin_professor "t"
+ } else {
+ set admin_professor "f"
+ }
+
}
+set active_users 0
+db_multirow -extend { active_users last_activity can_see_p rss_exists rss_feed_url2 rss_service admin_professor} rooms3 "rooms_list2" {} {
+ set room [::chat::Chat create new -volatile -chat_id $room_id]
+ set active_users [$room nr_active_users]
+ set last_activity [$room last_activity]
+ set rss_exists [rss_support::subscription_exists -summary_context_id $room_id -impl_name chat_rss]
+ set rss_feed_url2 /rss/rss.tcl?room_id=$room_id
+ set rss_service 0
+ db_1row room_info {
+ select count(cru.rss_service) as counter
+ from chat_registered_users cru
+ where cru.user_id = :user_id
+ and cru.room_id = :room_id
+ and cru.rss_service = 'true'
+ }
+
+ if { $counter > 0} {
+ set rss_service 1
+ } else {
+ set rss_service 0
+ }
+ set can_see_p 0
+ if {($active_p eq "t" && $user_p eq "t") || ($admin_p eq "t")} {
+ set can_see_p 1
+ set num_rooms [expr $num_rooms + 1]
+ }
+ #A professor who creates a rooom will be able to admin it.
+ db_1row room_info2 {
+ select count(cr.creator) as counter2
+ from chat_rooms cr
+ where cr.room_id = :room_id
+ and cr.creator = :user_id
+ }
+ if { $counter2 > 0} {
+ set admin_professor "t"
+ } else {
+ set admin_professor "f"
+ }
+
+}
+
+ db_foreach open "select end_date,room_id from chat_rooms" {
+ if { [clock format [clock seconds] -format "%Y/%m%d"] > $end_date } {
+ db_0or1row update_closed {
+ update chat_rooms SET open = 'false'
+ WHERE room_id = :room_id;
+ select 1;
+ }
+ } else {
+ db_0or1row update_closed {
+ update chat_rooms SET open = 'true'
+ WHERE room_id = :room_id;
+ select 1;
+ }
+ }
+
+
+ }
+
+
+
+list::create \
+ -name "rooms3" \
+ -multirow "rooms3" \
+ -key room_id \
+ -pass_properties {room_create_p} \
+ -row_pretty_plural [_ chat.room_options] \
+ -elements {
+ open {
+ label "#chat-portlet.open_room#"
+ html { style "text-align:center;" width 15px}
+ display_template {
+
+