Class ::xolirc::Weblog
::xolirc::Weblog
create ...
Class Relations
- class: ::xotcl::Class
![[i]](/resources/acs-subsite/ZoomIn16.gif)
- superclass: ::xowiki::Weblog
![[i]](/resources/acs-subsite/ZoomIn16.gif)
::xotcl::Class create ::xolirc::Weblog \
-superclass ::xowiki::Weblog
Methods (to be applied on instances)
init (scripted)
my instvar filter_msg package_id nr_items next_page_link prev_page_link
my instvar date category_id tag ptag page_number page_size summary items locale
my instvar name_filter entry_label entries_of sort_composite summary_chars
my log "--W starting"
set folder_id [::$package_id folder_id]
set filter_msg ""
set query_parm ""
set extra_from_clause ""
set extra_where_clause ""
if {$date ne ""} {
set date_clause "and [::xo::db::sql date_trunc_expression day bt.creation_date $date]"
set filter_msg "Filtered by date $date"
set query_parm "&date=$date"
} else {
set date_clause ""
}
if {$category_id ne ""} {
set cnames [list]
foreach cid [split $category_id ,] {
append extra_where_clause "and exists (select * from category_object_map where object_id = ci.item_id and category_id = $cid)"
lappend cnames [::category::get_name $cid]
}
append extra_from_clause ""
set filter_msg "Filtered by category [join $cnames {, }]"
set query_parm "&category_id=$category_id"
}
if {$tag ne ""} {
set filter_msg "Filtered by your tag $tag"
append extra_from_clause ",xowiki_tags tags "
append extra_where_clause "and tags.item_id = ci.item_id and tags.tag = :tag and tags.user_id = [::xo::cc user_id]"
set query_parm "&tag=[ad_urlencode $tag]"
}
if {$ptag ne ""} {
set filter_msg "Filtered by popular tag $ptag"
append extra_from_clause ",xowiki_tags tags "
append extra_where_clause "and tags.item_id = ci.item_id and tags.tag = :ptag "
set query_parm "&ptag=[ad_urlencode $ptag]"
}
if {$name_filter ne ""} {
append extra_where_clause "and ci.name ~ E'$name_filter' "
}
set base_type ::xowiki::Page
set base_table xowiki_pagei
set attributes [list bt.revision_id bt.creation_date bt.title bt.creator bt.creation_user ci.parent_id bt.description s.body pi.instance_attributes]
set class_clause " and ci.content_type not in ('::xowiki::PageTemplate','::xowiki::Object')"
if {$entries_of ne ""} {
if {[string match "::*" $entries_of]} {
set class_clause " and ci.content_type in ('[join [split $entries_of { }] ',']')"
} else {
my instvar form_items
set form_items [::xowiki::Weblog instantiate_forms -forms $entries_of -package_id $package_id]
append extra_where_clause " and bt.page_template in ('[join $form_items ',']') and bt.page_instance_id = bt.revision_id "
set base_type ::xowiki::FormPage
set base_table xowiki_form_pagei
set class_clause ""
}
}
if {$locale ne ""} {
foreach {locale locale_clause} [::xowiki::Includelet locale_clause -revisions bt -items ci $package_id $locale] break
append extra_where_clause $locale_clause
}
set items [::xo::OrderedComposite new -proc render {} {
set content ""
foreach c [my children] { append content [$c render] }
return $content
}]
foreach i [split [my exclude_item_ids] ,] {lappend ::xowiki_page_item_id_rendered $i}
$items set weblog_obj [self]
set sql [list -folder_id $folder_id -select_attributes $attributes -orderby "creation_date desc" -base_table $base_table -from_clause " left outer join syndication s on s.object_id = bt.revision_id left join xowiki_page_instance pi on (bt.revision_id = pi.page_instance_id) $extra_from_clause" -where_clause "ci.item_id not in ([my exclude_item_ids]) and ci.name != '::$folder_id' and ci.name not like '%weblog%' $date_clause [::xowiki::Page container_already_rendered ci.item_id] $class_clause and ci.publish_status <> 'production' $extra_where_clause" ]
if {$page_number ne ""} {
lappend sql -page_number $page_number -page_size $page_size
}
set nr_items [db_string count [eval $base_type instance_select_query $sql -count true]]
set s [$base_type instantiate_objects -sql [eval $base_type instance_select_query $sql]]
foreach c [$s children] {
$c instvar revision_id creation_date title name item_id creator creation_user parent_id description body instance_attributes
set time [::xo::db::tcl_date $creation_date tz]
set pretty_date [util::age_pretty -timestamp_ansi $time -sysdate_ansi [clock_to_ansi [clock seconds]] -mode_3_fmt "%d %b %Y, at %X"]
if {$summary} {
set p [::xowiki::Page new -package_id $package_id -parent_id $parent_id -item_id $item_id -revision_id $revision_id -name $name -title $title -creator $creator]
$p set creation_user $creation_user
if {$description eq "" && [my compute_summary] && $body ne ""} {
$p set description [my get_description -nr_chars $summary_chars $body]
} else {
$p set description $description
}
$p set instance_attributes $instance_attributes
} else {
set p [::xo::db::CrClass get_instance_from_db -item_id 0 -revision_id $revision_id]
if {[$p info mixin] ne ""} {$p mixin {}}
if {[my exists entry_flag]} {$p set [my entry_flag] 1}
if {[my no_footer]} {$p set __no_footer 1}
if {[catch {$p set description [$p render -with_footer false]} errorMsg]} {
set description "Render Error ($errorMsg) $revision_id $name $title"
}
if {[my exists entry_flag]} {$p unset [my entry_flag]}
}
$p set pretty_date $pretty_date
$p set creation_date $creation_date
$p mixin add [my set entry_renderer]
$items add $p
}
array set smsg {1 full 0 summary}
set weblog_href [$package_id package_url][$package_id get_parameter weblog_page]
set flink "<a href='$weblog_href?summary=[expr {!$summary}]$query_parm'>$smsg($summary)</a>"
if {$page_number ne ""} {
set nr [llength [$items children]]
set from [expr {($page_number-1)*$page_size+1}]
set to [expr {($page_number-1)*$page_size+$nr}]
set range [expr {$nr > 1 ? "$from - $to" : $from}]
if {$filter_msg ne ""} {
append filter_msg ", $range of $nr_items $entry_label (<a href='$weblog_href'>all</a>, $flink)"
} else {
append filter_msg "Showing $range of $nr_items $entry_label ($flink)"
}
set next_p [expr {$nr_items > $page_number*$page_size}]
set prev_p [expr {$page_number > 1}]
if {$next_p} {
set query [::xo::update_query_variable [ns_conn query] page_number [expr {$page_number+1}]]
set next_page_link [export_vars -base [::xo::cc url] $query]
}
if {$prev_p} {
set query [::xo::update_query_variable [ns_conn query] page_number [expr {$page_number-1}]]
set prev_page_link [export_vars -base [::xo::cc url] $query]
}
}
if {$sort_composite ne ""} {
foreach {kind att direction} [split $sort_composite ,] break
if {$kind eq "method"} {$items mixin add ::xo::OrderedComposite::MethodCompare}
$items orderby -order [expr {$direction eq "asc" ? "increasing" : "decreasing"}] $att
}
my log "--W done"