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 "
" \ - "

[my set page_title]

" \ + "

[my set title]

" \ "

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}]