Index: openacs-4/packages/xowiki/www/portlets/weblog.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/portlets/Attic/weblog.tcl,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/xowiki/www/portlets/weblog.tcl 30 Apr 2006 23:53:35 -0000 1.1
+++ openacs-4/packages/xowiki/www/portlets/weblog.tcl 3 May 2006 12:03:23 -0000 1.2
@@ -7,90 +7,97 @@
::xowiki::Page requireCSS "/resources/xowiki/weblog.css"
-# get the folder id from the including page
-set folder_id [$__including_page set parent_id]
-
-if {![info exists package_id]} {set package_id [$folder_id set package_id]}
-if {![info exists page_size]} {set page_size 10}
-
-set filter_msg ""
-set page_number [ns_queryget page_number 1]
-set page_size [ns_queryget page_size $page_size]
-set date [ns_queryget date]
-set category_id [ns_queryget category_id]
-
-$__including_page set render_adp 0 ;# no double substitutions
-
-# set up filters
-if {$date ne ""} {
- set date_clause "and date_trunc('day',p.publish_date) = '$date'"
- set filter_msg "Filtered by date $date"
-} else {
- set date_clause ""
-}
-if {$category_id ne ""} {
- set cat_clause "and c.object_id = ci.item_id and c.category_id = $category_id"
- set extra_from_clause ",category_object_map c"
- set filter_msg "Filtered by category [::category::get_name $category_id]"
-} else {
- set cat_clause ""
- set extra_from_clause ""
-}
-
-# define item container
-set items [::xo::OrderedComposite new -proc render {} {
- set content ""
- foreach c [my children] {append content [$c render]}
- return $content
-}]
-uplevel #0 $items volatile
-
-
Class ::xowiki::WeblogEntry -instproc render {} {
append content "
" \
- "
" \
+ "
" \
"
Created by [my set creator], " \
"[my set pretty_date]
" \
[my set description] \n \
"
"
}
-set query \
- [list -folder_id $folder_id \
- -select_attributes [list p.publish_date] \
- -order_clause "order by p.publish_date desc" \
- -page_number $page_number -page_size $page_size \
- -extra_from_clause $extra_from_clause \
- -extra_where_clause "and ci.item_id != [$__including_page set item_id] $date_clause \
- and ci.content_type not in ('::xowiki::PageTemplate') $cat_clause" \
- ]
+::xowiki::Page proc __render_html {
+ -folder_id
+ -including_page
+ -page_size
+ -page_number
+ -date
+ -category_id
+ -filter_msg
+ -nr_items
+} {
+ upvar $filter_msg my_filter_msg ;# pass info back to caller
+ upvar $nr_items my_nr_items ;# pass info back to caller
-set nr_items [db_string count [eval ::xowiki::Page select_query $query -count true]]
+ set package_id [$folder_id set package_id]
+ $including_page set render_adp 0 ;# no double substitutions
+ set my_filter_msg ""
-db_foreach instance_select [eval ::xowiki::Page select_query $query] {
- set p [::Generic::CrItem instantiate -item_id 0 -revision_id $page_id]
-
- regexp {^([^.]+)[.][0-9]+(.*)$} $publish_date _ publish_date tz
- set pretty_date [util::age_pretty -timestamp_ansi $publish_date \
- -sysdate_ansi [clock_to_ansi [clock seconds]] \
- -mode_3_fmt "%d %b %Y, at %X"]
+ # set up filters
+ if {$date ne ""} {
+ set date_clause "and date_trunc('day',p.publish_date) = '$date'"
+ set my_filter_msg "Filtered by date $date"
+ } else {
+ set date_clause ""
+ }
+ if {$category_id ne ""} {
+ set cat_clause "and c.object_id = ci.item_id and c.category_id = $category_id"
+ set extra_from_clause ",category_object_map c"
+ set my_filter_msg "Filtered by category [::category::get_name $category_id]"
+ } else {
+ set cat_clause ""
+ set extra_from_clause ""
+ }
- #$p proc destroy {} {my log "--Render temporal object destroyed"; next}
- $p set pretty_date $pretty_date
+ # define item container
+ set items [::xo::OrderedComposite new -proc render {} {
+ set content ""
+ foreach c [my children] {append content [$c render]}
+ return $content
+ }]
+ uplevel #0 $items volatile
- #ns_log notice "--Render object=$p, $page_id $title $page_title"
- if {[catch {$p set description [$p render]} errorMsg]} {
- ns_log notice "--Render Error ($errorMsg) $page_id $title $page_title"
- continue
+
+ set query \
+ [list -folder_id $folder_id \
+ -select_attributes [list p.publish_date] \
+ -order_clause "order by p.publish_date desc" \
+ -page_number $page_number -page_size $page_size \
+ -extra_from_clause $extra_from_clause \
+ -extra_where_clause "and ci.item_id != [$including_page set item_id] $date_clause \
+ and ci.content_type not in ('::xowiki::PageTemplate') $cat_clause" ]
+
+ set my_nr_items [db_string count [eval ::xowiki::Page select_query $query -count true]]
+
+ db_foreach instance_select [eval ::xowiki::Page select_query $query] {
+ set p [::Generic::CrItem instantiate -item_id 0 -revision_id $page_id]
+
+ regexp {^([^.]+)[.][0-9]+(.*)$} $publish_date _ publish_date tz
+ set pretty_date [util::age_pretty -timestamp_ansi $publish_date \
+ -sysdate_ansi [clock_to_ansi [clock seconds]] \
+ -mode_3_fmt "%d %b %Y, at %X"]
+
+ #$p proc destroy {} {my log "--Render temporal object destroyed"; next}
+ $p set pretty_date $pretty_date
+
+ #ns_log notice "--Render object=$p, $page_id $name $title"
+ if {[catch {$p set description [$p render]} errorMsg]} {
+ ns_log notice "--Render Error ($errorMsg) $page_id $name $title"
+ continue
+ }
+ #ns_log notice "--Render DONE $page_id $name $title"
+ $items add $p
}
- #ns_log notice "--Render DONE $page_id $title $page_title"
- $items add $p
+
+ if {$my_filter_msg eq ""} {
+ set my_filter_msg "Showing [llength [$items children]] of $my_nr_items Postings"
+ }
+ ::xowiki::Page instmixin add ::xowiki::WeblogEntry
+ set content [$items render]
+ ::xowiki::Page instmixin delete ::xowiki::WeblogEntry
+ return $content
}
-::xowiki::Page instmixin add ::xowiki::WeblogEntry
-set content [$items render]
-::xowiki::Page instmixin delete ::xowiki::WeblogEntry
-
proc ::xo::update_query_variable {old_query var value} {
set query [list [list $var $value]]
foreach pair [split $old_query &] {
@@ -101,9 +108,18 @@
return $query
}
-if {$filter_msg eq ""} {
- set filter_msg "Showing [llength [$items children]] of $nr_items Postings"
-}
+if {![info exists page_size]} {set page_size 10}
+set page_size [ns_queryget page_size $page_size]
+set page_number [ns_queryget page_number 1]
+set content [::xowiki::Page __render_html \
+ -folder_id [$__including_page set parent_id] \
+ -including_page $__including_page \
+ -page_size $page_size \
+ -page_number $page_number \
+ -date [ns_queryget date] \
+ -category_id [ns_queryget category_id] \
+ -filter_msg filter_msg \
+ -nr_items nr_items]
set next_p [expr {$nr_items > $page_number*$page_size}]
set prev_p [expr {$page_number > 1}]