Index: openacs-4/packages/xowiki/tcl/includelet-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/includelet-procs.tcl,v
diff -u -r1.163 -r1.164
--- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 1 Nov 2010 19:23:54 -0000 1.163
+++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 15 Nov 2010 13:49:07 -0000 1.164
@@ -237,16 +237,17 @@
#
::xowiki::Includelet proc listing {
- -package_id
- {-count:boolean false}
- {-folder_id}
- {-parent_id ""}
- {-page_size 20}
- {-page_number ""}
- {-orderby ""}
- {-use_package_path true}
- {-extra_where_clause ""}
- } {
+ -package_id
+ {-count:boolean false}
+ {-folder_id}
+ {-parent_id ""}
+ {-page_size 20}
+ {-page_number ""}
+ {-orderby ""}
+ {-use_package_path true}
+ {-extra_where_clause ""}
+ {-glob ""}
+ } {
if {$count} {
set attribute_selection "count(*)"
set orderby "" ;# no need to order when we count
@@ -268,6 +269,11 @@
-use_package_path $use_package_path \
-parent_id $parent_id \
-base_package_id $package_id]
+
+ if {$glob ne ""} {
+ append extra_where_clause [::xowiki::Includelet glob_clause -base_table i $glob]
+ }
+
set sql [::xo::db::sql select \
-vars $attribute_selection \
-from "cr_items i, cr_revisions r, xowiki_page p, acs_objects o" \
@@ -3724,9 +3730,81 @@
{-auto_size 0}
{-folder}
{-glob ""}
+ {-form ""}
}}
}
+ yui-carousel instproc images {-package_id -parent_id {-glob ""} {-width ""} {-height ""}} {
+ set size_info ""
+ if {$width ne ""} {append size_info " width='$width'"}
+ if {$height ne ""} {append size_info " height='$height'"}
+ if {$width ne "" && $height ne ""} {
+ set geometry "?geometry=${width}x${height}"
+ } else {
+ set geometry ""
+ }
+ set listing [::xowiki::Includelet listing \
+ -package_id $package_id \
+ -parent_id $parent_id \
+ -use_package_path false \
+ -extra_where_clause " and mime_type like 'image/%'" \
+ -orderby "name asc" \
+ -glob $glob]
+ #my msg "parent-id=$parent_id, glob=$glob entries=[llength [$listing children]]"
+
+ foreach entry [$listing children] {
+ $entry class ::xowiki::Page
+ $entry set html "
[$entry title]
"
+ }
+ return $listing
+ }
+
+ yui-carousel instproc form_images {
+ -package_id
+ -parent_id
+ {-form "en:photo.form"}
+ {-glob ""} {-width ""} {-height ""}
+ } {
+ set form_item_ids [::xowiki::Weblog instantiate_forms -parent_id $parent_id -forms $form -package_id $package_id]
+ if {$form_item_ids eq ""} {error "could not find en:photo.form"}
+ set form_item_id [lindex $form_item_ids 0]
+
+ set items [::xowiki::FormPage get_form_entries \
+ -base_item_ids $form_item_ids -form_fields "" \
+ -publish_status all \
+ -always_queried_attributes * \
+ -parent_id $parent_id \
+ -package_id $package_id]
+ #my msg "parent-id=$parent_id, glob=$glob entries=[llength [$items children]]"
+
+ foreach entry [$items children] {
+ # order?
+ set image_name [$entry property image]
+ if {$glob ne "" && ![string match $glob $image_name]} {
+ $items delete $entry
+ continue
+ }
+ if {![info exists entry_field_names]} {
+ set entry_field_names [$entry field_names]
+ set entry_form_fields [::xowiki::FormPage get_table_form_fields \
+ -base_item $form_item_id -field_names $entry_field_names \
+ -form_constraints [$form_item_id set form_constraints]]
+ foreach fn $entry_field_names f $entry_form_fields {set ff($fn) $f}
+ }
+ $entry load_values_into_form_fields $entry_form_fields
+ foreach f $entry_form_fields {$f object $entry}
+ if {$width ne ""} {$ff(image) width $width}
+ if {$height ne ""} {$ff(image) height $height}
+ if {$width ne "" && $height ne ""} {
+ $ff(image) set geometry "${width}x${height}"
+ }
+ $ff(image) label [$entry property _title]
+ $entry set html [$entry render_content]
+ #my log html=[$entry set html]
+ }
+ return $items
+ }
+
yui-carousel instproc render {} {
my get_parameters
@@ -3745,11 +3823,12 @@
if {![regexp {^(.*)x(.*)$} $image_size _ width height]} {
error "invalid image size '$image_size'; use e.g. 300x240"
}
- set size_info "width='$width' height='$height'"
} elseif {$auto_size} {
- set size_info "width='$item_width' height='$item_height'"
+ set width $item_width
+ set height $item_height
} else {
- set size_info ""
+ set width ""
+ set height ""
}
set ID container_[::xowiki::Includelet html_id [self]]
@@ -3786,11 +3865,6 @@
margin: 0;
}}]
- set extra_where_clause { and mime_type like 'image/%'}
- if {$glob ne ""} {
- append extra_where_clause [::xowiki::Includelet glob_clause -base_table i $glob]
- }
-
set parent_id [[my set __including_page] parent_id]
if {[info exists folder]} {
set folder_page [$package_id get_page_from_item_ref -parent_id $parent_id $folder]
@@ -3801,25 +3875,17 @@
}
}
- set listing [::xowiki::Includelet listing \
- -package_id $package_id \
- -parent_id $parent_id \
- -use_package_path false \
- -extra_where_clause $extra_where_clause \
- -orderby "name asc"]
-
set content "\n"
-
- foreach entry [$listing children] {
- $entry instvar mime_type name
- if {[string match image/* $mime_type]} {
- $entry class ::xowiki::Page
- set link [$entry pretty_link -download true]
- append content \
- "- " \
- "
[$entry set title]
\n"
- }
+ if {$form ne ""} {
+ set images [my form_images -package_id $package_id -parent_id $parent_id \
+ -form $form -glob $glob -width $width -height $height]
+ } else {
+ set images [my images -package_id $package_id -parent_id $parent_id \
+ -glob $glob -width $width -height $height]
}
+ foreach entry [$images children] {
+ append content "- [$entry set html]
\n"
+ }
append content "
\n\n"
#if {$title eq ""} {set title $url}
return $content