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

    [$entry set title]

  2. \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 "
  3. [$entry set html]
  4. \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 + } } }