Index: openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/Attic/xowiki-portlet-procs.tcl,v
diff -u -r1.13 -r1.14
--- openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 8 Jan 2007 00:11:34 -0000 1.13
+++ openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 9 Jan 2007 11:05:57 -0000 1.14
@@ -2,7 +2,7 @@
namespace eval ::xowiki::portlet {
Class create ::xowiki::Portlet \
-superclass ::xo::Context \
- -parameter {{name ""} {title ""} {__decoration "portlet"}}
+ -parameter {{name ""} {title ""} {__decoration "portlet"} {id}}
::xowiki::Portlet instproc locale_clause {package_id locale} {
set default_locale [$package_id default_locale]
@@ -40,11 +40,18 @@
#
Class ::xowiki::portlet::decoration=portlet -instproc render {} {
my instvar package_id name title
+ set class [namespace tail [my info class]]
+ set id [expr {[my exists id] ? "id='[my id]'" : ""}]
set link [expr {[string match "*:*" $name] ? [$package_id pretty_link $name] : ""}]
- return "
\
+ return "
"
}
+ Class ::xowiki::portlet::decoration=plain -instproc render {} {
+ set class [namespace tail [my info class]]
+ set id [expr {[my exists id] ? "id='[my id]'" : ""}]
+ return "
[next]
"
+ }
}
namespace eval ::xowiki::portlet {
@@ -80,7 +87,7 @@
foreach {att value} $pl {
::xo::cc set_parameter $att $value
}
- return "NO"
+ return ""
}
}
@@ -456,54 +463,78 @@
-superclass ::xowiki::Portlet \
-parameter {{__decoration plain}}
+ # TODO make display style -decoration
+
presence instproc render {} {
my initialize -parameter {
{-interval "10 minutes"}
{-max_users:integer 40}
+ {-show_anonymous "summary"}
{-page}
}
my get_parameters
- set sql "select user_id,time from xowiki_last_visited \
- where package_id = $package_id "
+ set summary 0
+ if {[::xo::cc user_id] == 0} {
+ switch -- $show_anonymous {
+ nothing {return ""}
+ all {set summary 0}
+ default {set summary 1}
+ }
+ }
+ if {$summary} {
+ set sql "select count(distinct user_id) from xowiki_last_visited "
+ set order_clause ""
+ } else {
+ set sql "select user_id,time from xowiki_last_visited "
+ set limit_clause "limit $max_users"
+ set order_clause "order by time desc $limit_clause"
+ }
+ append sql "\
+ where package_id = $package_id \
+ and time > now() - '$interval'::interval "
+ set when "
in last $interval"
+
if {[info exists page] && $page eq "this"} {
my instvar __including_page
append sql "and page_id = [$__including_page item_id] "
- set limit_clause "limit $max_users"
- set what "last on page [$__including_page title]"
+ set what " on page [$__including_page title]"
} else {
append sql "and time > now() - '$interval'::interval "
set limit_clause ""
- set what "currently in community [$package_id instance_name]"
-
+ set what " in community [$package_id instance_name]"
}
- append sql "order by time desc $limit_clause"
-
set count 0
set output ""
- db_foreach get_visitors $sql {
- if {[info exists seen($user_id)]} continue
- set seen($user_id) $time
- if {[incr count]>$max_users} {
- set count $max_users
- break
- }
- if {[::xo::cc user_id]>0} {
+ if {$summary} {
+ my log "--presence $sql"
+ set count [db_string presence_count_users $sql]
+ } else {
+ db_foreach get_visitors $sql {
+ if {[info exists seen($user_id)]} continue
+ set seen($user_id) $time
+ if {[incr count]>$max_users} {
+ set count $max_users
+ break
+ }
+
regexp {^([^.]+)[.]} $time _ time
set pretty_time [util::age_pretty -timestamp_ansi $time \
- -sysdate_ansi [clock_to_ansi [clock seconds]] \
- -mode_3_fmt "%d %b %Y, at %X"]
+ -sysdate_ansi [clock_to_ansi [clock seconds]] \
+ -mode_3_fmt "%d %b %Y, at %X"]
set name [::xo::get_user_name $user_id]
append output "
$name | $pretty_time |
\n"
}
+ if {$output ne ""} {set output "
\n"}
}
- if {$output ne ""} {set output "
\n"}
- set users [expr {$count == 0 ? "No users" : "$count users"}]
- return "
$users $what
$output"
+ set users [expr {$count == 0 ? "No users" :
+ $count == 1 ? "1 registered user" :
+ "$count registered users"}]
+ return "
$users$what$when
$output"
}
}
@@ -546,7 +577,7 @@
foreach o [$pages children] {
$o instvar page_order title page_id name title
- my log "o: $page_order"
+ #my log "o: $page_order"
set displayed_page_order $page_order
for {set i 0} {$i < $remove_levels} {incr i} {
regsub {^[^.]+[.]} $displayed_page_order "" displayed_page_order
@@ -591,7 +622,7 @@
}
set navigation(count) $node_cnt
- my log "--COUNT=$node_cnt"
+ #my log "--COUNT=$node_cnt"
return $js
}