Index: openacs-4/packages/xowiki/tcl/weblog-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/weblog-procs.tcl,v
diff -u -r1.71 -r1.72
--- openacs-4/packages/xowiki/tcl/weblog-procs.tcl 7 Aug 2017 23:48:30 -0000 1.71
+++ openacs-4/packages/xowiki/tcl/weblog-procs.tcl 21 Oct 2017 17:58:35 -0000 1.72
@@ -51,40 +51,38 @@
}
::xowiki::Weblog instproc init {} {
- 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 folder_id [::${:package_id} folder_id]
+ set :filter_msg ""
set query_parm ""
set query [expr {[ns_conn isconnected] ? [ns_conn query] : ""}]
# set up filters
set extra_from_clause ""
set extra_where_clause ""
- if {$date ne ""} {
- if {![regexp {^\d\d\d\d[-]\d\d[-]\d\d$} $date]} {
- ns_log Warning "invalid date '$date'"
+ if {${:date} ne ""} {
+ if {![regexp {^\d\d\d\d[-]\d\d[-]\d\d$} ${:date}]} {
+ ns_log Warning "invalid date '${:date}'"
ad_return_complaint 1 "invalid date"
ad_script_abort
}
}
- if {$date ne ""} {
- #set date_clause "and date_trunc('day',bt.publish_date) = '$date'"
+ if {${:date} ne ""} {
+ #set date_clause "and date_trunc('day',bt.publish_date) = '${:date}'"
+ set date ${:date}
set date_clause "and [::xo::dc date_trunc_expression day bt.publish_date :date]"
- set filter_msg "Filtered by date $date"
- set query_parm "&date=$date"
- set query [::xo::update_query $query date $date]
+ set :filter_msg "Filtered by date ${:date}"
+ set query_parm "&date=${:date}"
+ set query [::xo::update_query $query date ${:date}]
} else {
set date_clause ""
}
- if {$category_id ne ""} {
+ if {${:category_id} ne ""} {
set cnames {}
set category_ids {}
- foreach cid [split $category_id ,] {
+ foreach cid [split ${:category_id} ,] {
if {![string is integer -strict $cid]} {
ad_return_complaint 1 "invalid category_id"
ad_script_abort
@@ -94,33 +92,35 @@
lappend cnames [::category::get_name $cid]
lappend category_ids $cid
}
- set category_id [join $category_ids ,]
+ set :category_id [join $category_ids ,]
append extra_from_clause ""
- set filter_msg "Filtered by category [join $cnames {, }]"
- set query_parm "&category_id=$category_id"
- set query [::xo::update_query $query category_id $category_id]
+ set :filter_msg "Filtered by category [join $cnames {, }]"
+ set query_parm "&category_id=${:category_id}"
+ set query [::xo::update_query $query category_id ${:category_id}]
}
- #my msg "tag=$tag"
- if {$tag ne ""} {
- $package_id validate_tag $tag
- set filter_msg "Filtered by your tag $tag"
+ #my msg "tag=${:tag}"
+ if {${:tag} ne ""} {
+ ${:package_id} validate_tag ${:tag}
+ set :filter_msg "Filtered by your tag ${:tag}"
+ set tag ${:tag}
append extra_from_clause " join xowiki_tags tags on (tags.item_id = bt.item_id) "
append extra_where_clause "and tags.tag = :tag and \
tags.user_id = [::xo::cc user_id]"
- set query_parm "&tag=[ad_urlencode $tag]"
+ set query_parm "&tag=[ad_urlencode ${:tag}]"
}
- #my msg "ptag=$ptag"
- if {$ptag ne ""} {
- $package_id validate_tag $ptag
- set filter_msg "Filtered by popular tag $ptag"
+ #my msg "ptag=${:ptag}"
+ if {${:ptag} ne ""} {
+ ${:package_id} validate_tag ${:ptag}
+ set :filter_msg "Filtered by popular tag ${:ptag}"
+ set ptag ${:ptag}
append extra_from_clause " join xowiki_tags tags on (tags.item_id = bt.item_id) "
append extra_where_clause "and tags.tag = :ptag "
- set query_parm "&ptag=[ad_urlencode $ptag]"
- set query [::xo::update_query $query ptag $ptag]
+ set query_parm "&ptag=[ad_urlencode ${:ptag}]"
+ set query [::xo::update_query $query ptag ${:ptag}]
}
- #my msg filter_msg=$filter_msg
- if {$name_filter ne ""} {
- append extra_where_clause "and ci.name ~ E'$name_filter' "
+ #my msg filter_msg=${:filter_msg}
+ if {${:name_filter} ne ""} {
+ append extra_where_clause "and ci.name ~ E'${:name_filter}' "
}
set base_type ::xowiki::Page
set base_table xowiki_pagei
@@ -131,26 +131,25 @@
set class_clause \
" and ci.content_type not in ('::xowiki::PageTemplate','::xowiki::Object')"
- if {$entries_of ne ""} {
- if {[string match "::*" $entries_of]} {
+ if {${:entries_of} ne ""} {
+ if {[string match "::*" ${:entries_of}]} {
# class names were provided as a filter
set class_clause \
- " and ci.content_type in ('[join [split $entries_of { }] ',']')"
+ " and ci.content_type in ('[join [split ${:entries_of} { }] ',']')"
} else {
- my instvar form_ids
- if {[regexp {^[0-9 ]+$} $entries_of]} {
+ if {[regexp {^[0-9 ]+$} ${:entries_of}]} {
# form item_ids were provided as a filter
- set form_ids $entries_of
+ set :form_ids ${:entries_of}
} else {
# form names provided as a filter
- set form_ids [::xowiki::Weblog instantiate_forms \
- -forms $entries_of \
- -package_id $package_id]
+ set :form_ids [::xowiki::Weblog instantiate_forms \
+ -forms ${:entries_of} \
+ -package_id ${:package_id}]
}
- if {$form_ids ne ""} {
- append extra_where_clause " and bt.page_template in ('[join $form_ids ',']') and bt.page_instance_id = bt.revision_id "
+ if {${:form_ids} ne ""} {
+ append extra_where_clause " and bt.page_template in ('[join ${:form_ids} ',']') and bt.page_instance_id = bt.revision_id "
} else {
- my msg "could not lookup forms $entries_of"
+ :msg "could not lookup forms ${:entries_of}"
}
set base_type ::xowiki::FormPage
set base_table xowiki_form_pagei
@@ -159,25 +158,24 @@
}
}
- if {$locale ne ""} {
- #set locale "default+system"
- foreach {locale locale_clause} \
- [::xowiki::Includelet locale_clause -revisions bt -items ci $package_id $locale] break
+ if {${:locale} ne ""} {
+ #set :locale "default+system"
+ lassign [::xowiki::Includelet locale_clause -revisions bt -items ci ${:package_id} ${:locale}] :locale locale_clause
#my msg "--L locale_clause=$locale_clause"
append extra_where_clause $locale_clause
}
# create an item container, which delegates rendering to its children
- set items [::xo::OrderedComposite new -proc render {} {
+ set :items [::xo::OrderedComposite new -proc render {} {
set content ""
- foreach c [my children] { append content [$c render] }
+ foreach c [: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]
+ foreach i [split [:exclude_item_ids] ,] {lappend ::xowiki_page_item_id_rendered $i}
+ ${:items} set weblog_obj [self]
- set query_parent_id [my parent_id]
+ set query_parent_id ${:parent_id}
if {$query_parent_id == 0} {
set query_parent_id $folder_id
}
@@ -187,25 +185,25 @@
-select_attributes $attributes \
-orderby "publish_date desc" \
-base_table $base_table \
- -where_clause "ci.item_id not in ([my exclude_item_ids]) \
+ -where_clause "ci.item_id not in ([: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 sqlParams -page_number $page_number -page_size $page_size
+ if {${:page_number} ne ""} {
+ lappend sqlParams -page_number ${:page_number} -page_size ${:page_size}
}
#
# Since there is no filtering on the left join tables, there is no
# need to incude these in the count query.
#
- set nr_items [::xo::dc get_value count-weblog-entries \
- [$base_type instance_select_query \
+ set :nr_items [::xo::dc get_value count-weblog-entries \
+ [$base_type instance_select_query \
-from_clause $extra_from_clause \
- {*}$sqlParams -count true]]
- #my log count=$nr_items
+ {*}$sqlParams -count true]]
+ #my log count=${:nr_items}
#
# Obtain the set of answers
@@ -228,139 +226,135 @@
-sysdate_ansi [clock_to_ansi [clock seconds]] \
-mode_3_fmt "%d %b %Y, at %X"]
- if {$summary} {
+ if {${:summary}} {
# we need always: package_id item_id parent_id name title creator creation_user pretty_date
set p [Page new \
- -package_id $package_id -parent_id $parent_id \
+ -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]
+ if {$description eq "" && [:compute_summary] && $body ne ""} {
+ $p set description [:get_description -nr_chars ${:summary_chars} $body]
} else {
$p set description $description
}
$p set instance_attributes $instance_attributes
} else {
# do full instantiation and rendering
- # ns_log notice "--Render object revision_id = $revision_id $name $title ::$revision_id?[my isobject ::$revision_id]"
+ # ns_log notice "--Render object revision_id = $revision_id $name $title ::$revision_id?[:isobject ::$revision_id]"
set p [::xo::db::CrClass get_instance_from_db -item_id 0 -revision_id $revision_id]
# in cases, the revision was created already earlier, drop the mixins
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 {[info exists :entry_flag]} {$p set [:entry_flag] 1}
+ if {[:no_footer]} {$p set __no_footer 1}
# if {[catch {$p set description [$p render]} errorMsg]} {}
if {[catch {$p set description [$p render -with_footer false]} errorMsg]} {
$p set description "Render Error ($errorMsg) $revision_id $name $title"
}
- if {[my exists entry_flag]} {$p unset [my entry_flag]}
+ if {[info exists :entry_flag]} {$p unset [:entry_flag]}
#my log "--W $p render (mixins=[$p info mixin]) => $description"
}
$p set pretty_date $pretty_date
$p set publish_date $publish_date
#my log "--W setting $p set publish_date $publish_date"
#$p proc destroy {} {my log "--Render temporal object destroyed"; next}
#ns_log notice "--W Render object $p DONE $revision_id $name $title "
- $p mixin add [my set entry_renderer]
- #my log "--W items=$items, added mixin [my set entry_renderer] to $p, has now <[$p info mixin]>"
- $items add $p
+ $p mixin add ${:entry_renderer}
+ #my log "--W items=${:items}, added mixin ${:entry_renderer} to $p, has now <[$p info mixin]>"
+ ${:items} add $p
}
array set smsg {1 full 0 summary}
- set summary_href [::xo::cc url]?[::xo::update_query $query summary [expr {!$summary}]]
- #set flink "[ns_quotehtml $smsg($summary)]"
- set flink "[ns_quotehtml $smsg([string is true $summary])]"
+ set summary_href [::xo::cc url]?[::xo::update_query $query summary [expr {!${:summary}}]]
+ #set flink "[ns_quotehtml $smsg(${:summary})]"
+ set flink "[ns_quotehtml $smsg([string is true ${:summary}])]"
- 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}]
+ 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 ""} {
- set all_href [$package_id package_url][$package_id get_parameter weblog_page weblog-portlet]
- append filter_msg ", $range of $nr_items $entry_label (all, $flink)"
+ if {${:filter_msg} ne ""} {
+ set all_href [${:package_id} package_url][${:package_id} get_parameter weblog_page weblog-portlet]
+ append :filter_msg ", $range of ${:nr_items} ${:entry_label} (all, $flink)"
} else {
- append filter_msg "Showing $range of $nr_items $entry_label ($flink)"
+ 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}]
+ 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 $query page_number [expr {$page_number + 1}]]
- set next_page_link [::xo::cc url]?$query
+ set query [::xo::update_query $query page_number [expr {${:page_number} + 1}]]
+ set :next_page_link [::xo::cc url]?$query
} elseif {$prev_p} {
- set query [::xo::update_query $query page_number [expr {$page_number-1}]]
- set prev_page_link [::xo::cc url]?$query
+ set query [::xo::update_query $query page_number [expr {${:page_number} - 1}]]
+ set :prev_page_link [::xo::cc url]?$query
}
}
#my proc destroy {} {my log "--W"; next}
- if {$sort_composite ne ""} {
- lassign [split $sort_composite ,] kind att direction
- if {$kind eq "method"} {$items mixin add ::xo::OrderedComposite::MethodCompare}
- $items orderby -order [expr {$direction eq "asc" ? "increasing" : "decreasing"}] $att
+ if {${:sort_composite} ne ""} {
+ lassign [split ${:sort_composite} ,] kind att direction
+ if {$kind eq "method"} {${:items} mixin add ::xo::OrderedComposite::MethodCompare}
+ ${:items} orderby -order [expr {$direction eq "asc" ? "increasing" : "decreasing"}] $att
}
#my log "--W done"
}
::xowiki::Weblog instproc render {} {
#my log "--W begin"
- my instvar items
#
# We need the following CSS file for rendering
#
::xo::Page requireCSS "/resources/xowiki/weblog.css"
- #$items set entry_renderer [my entry_renderer]
+ #${:items} set entry_renderer [:entry_renderer]
- set content [$items render]
- $items destroy_on_cleanup
+ set content [${:items} render]
+ ${:items} destroy_on_cleanup
#my log "--W end"
return $content
}
# default layout for weblog entries
Class create ::xowiki::Weblog::EntryRenderer -instproc render {{-with_footer false}} {
- my instvar package_id name title creator creation_user pretty_date description
- [my set __parent] instvar weblog_obj
+ ${:__parent} instvar weblog_obj
- set link [my pretty_link]
+ set link [:pretty_link]
regsub -all & $link "&" link
set more [expr {[$weblog_obj summary] ?
" \[#xowiki.weblog-more#\]" : ""}]
#append more "
"
append content "" \
- "
" \
- "
Created by $creator, " \
- "last modfied by [::xo::get_user_name $creation_user] " \
- "$pretty_date
" \
- $description $more \n\
+ "
" \
+ "
Created by ${:creator}, " \
+ "last modfied by [::xo::get_user_name ${:creation_user}] " \
+ "${:pretty_date}
" \
+ ${:description} $more \n\
"
"
}
# Default layout for weblog
Class create ::xowiki::Weblog::WeblogRenderer -instproc render {} {
- my instvar filter_msg link name prev_page_link next_page_link
-
set filter ""
set prev ""
set next ""
- if {[info exists filter_msg]} {
- set filter "$filter_msg
"
+ if {[info exists :filter_msg]} {
+ set filter "${:filter_msg}
"
}
- if {[info exists prev_page_link]} {
- set prev "\
+ if {[info exists :prev_page_link]} {
+ set prev "\
"
}
- if {[info exists next_page_link]} {
- set next "\
+ if {[info exists :next_page_link]} {
+ set next "\
"
}