Index: openacs-4/packages/xowiki/xowiki.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/xowiki.info,v
diff -u -r1.134 -r1.135
--- openacs-4/packages/xowiki/xowiki.info 8 Jul 2010 12:10:17 -0000 1.134
+++ openacs-4/packages/xowiki/xowiki.info 15 Nov 2010 13:49:07 -0000 1.135
@@ -10,11 +10,11 @@
t
xowiki
-
+
Gustaf Neumann
A more generic xotcl-based wikis example with object types
and subtypes based on the content repository (with category support)
- 2010-07-08
+ 2010-11-15
Gustaf Neumann, WU Wien
<pre>
XoWiki is a Wiki implementation for OpenACS in XOTcl. Instead of
@@ -56,12 +56,12 @@
BSD-Style
0
-
+
-
+
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
Index: openacs-4/packages/xowiki/tcl/link-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/link-procs.tcl,v
diff -u -r1.79 -r1.80
--- openacs-4/packages/xowiki/tcl/link-procs.tcl 15 Jul 2010 23:55:31 -0000 1.79
+++ openacs-4/packages/xowiki/tcl/link-procs.tcl 15 Nov 2010 13:49:07 -0000 1.80
@@ -223,10 +223,9 @@
set item_id [my resolve]
#my log "-- image resolve for $page returned $item_id (name=$name, label=$label) "
if {$item_id} {
- set link [[my package_id] pretty_link -download true -query [my query] \
+ set link [$package_id pretty_link -download true -query [my query] \
-absolute [$page absolute_links] -parent_id [my parent_id] $name]
#my log "--l fully quali [$page absolute_links], base=$base"
- #set link [export_vars -base $base {{m download}} ]
$page lappend references [list $item_id [my type]]
my render_found $link $label
} else {
@@ -255,6 +254,7 @@
}
}
if {$style ne ""} {set style "style='$style'"}
+ if {[my exists geometry]} {append link "?geometry=[my set geometry]"}
set label [string map [list ' "'"] $label]
set cls [my mk_css_class -default image]
if {[my exists href]} {
Index: openacs-4/packages/xowiki/tcl/package-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v
diff -u -r1.235 -r1.236
--- openacs-4/packages/xowiki/tcl/package-procs.tcl 29 Jul 2010 09:21:17 -0000 1.235
+++ openacs-4/packages/xowiki/tcl/package-procs.tcl 15 Nov 2010 13:49:07 -0000 1.236
@@ -870,13 +870,13 @@
if {$item_id != 0} {
set name $stripped_name
regexp {^(..):(.+)$} $name _ lang stripped_name
- #my msg "direct $stripped_name"
+ #my log "direct $stripped_name"
}
}
if {$item_id == 0} {
set name ${lang}:$stripped_name
set item_id [::xo::db::CrClass lookup -name $name -parent_id $parent_id]
- #my msg "comp $name"
+ #my log "comp $name"
}
return [list item_id $item_id parent_id $parent_id \
lang $lang stripped_name $stripped_name name $name ]
@@ -1437,7 +1437,7 @@
#::xowiki::Package initialize -package_id $package_id -init_url false -keep_cc true
set package_key "xowiki"
- foreach n {folder.form link.form page.form import-archive.form} {
+ foreach n {folder.form link.form page.form import-archive.form photo.form} {
set item_id [::xo::db::CrClass lookup -name en:$n -parent_id $parent_id]
#my ds "lookup en:$n => $item_id"
if {!$item_id || $refetch} {
Index: openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl,v
diff -u -r1.286 -r1.287
--- openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 8 Nov 2010 13:52:10 -0000 1.286
+++ openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 15 Nov 2010 13:49:07 -0000 1.287
@@ -432,7 +432,25 @@
set filename [my query_parameter filename]
ns_set put [ns_conn outputheaders] Content-Disposition "attachment;filename=$filename"
}
- #my log "--F FILE=[my full_file_name]"
+ #my log "--F FILE=[my full_file_name] // $mime_type"
+ set geometry [::xo::cc query_parameter geometry ""]
+ if {[string match image/* $mime_type] && $geometry ne ""} {
+ if {![file isdirectory /tmp/$geometry]} {
+ file mkdir -p /tmp/$geometry
+ }
+ set scaled_image /tmp/$geometry/[my revision_id]
+ if {![file readable $scaled_image]} {
+ set cmd [::util::which convert]
+ if {$cmd ne ""} {
+ if {![catch {exec $cmd -geometry $geometry -interlace None -sharpen 1x2 \
+ [my full_file_name] $scaled_image}]} {
+ return $scaled_image
+ }
+ }
+ } else {
+ return $scaled_image
+ }
+ }
return [my full_file_name]
}
Index: openacs-4/packages/xowiki/tcl/upgrade/upgrade.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/upgrade/upgrade.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/xowiki/tcl/upgrade/upgrade.tcl 8 Jul 2010 12:10:18 -0000 1.2
+++ openacs-4/packages/xowiki/tcl/upgrade/upgrade.tcl 15 Nov 2010 13:49:07 -0000 1.3
@@ -529,5 +529,13 @@
$package_id import-prototype-page weblog
}
}
+
+ set v 0.134
+ if {[apm_version_names_compare $from_version_name $v] == -1 &&
+ [apm_version_names_compare $to_version_name $v] > -1} {
+ ns_log notice "-- upgrading to $v"
+ ::xowiki::Package initialize -package_id [::xowiki::Package first_instance]
+ ::xowiki::Package require_site_wide_pages -refetch true
+ }
}
}