Index: openacs-4/packages/xowiki/xowiki.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/xowiki.info,v diff -u -r1.125 -r1.126 --- openacs-4/packages/xowiki/xowiki.info 4 Mar 2010 10:43:41 -0000 1.125 +++ openacs-4/packages/xowiki/xowiki.info 2 May 2010 12:50:19 -0000 1.126 @@ -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-03-04 + 2010-05-01 Gustaf Neumann, WU Wien <pre> XoWiki is a Wiki implementation for OpenACS in XOTcl. Instead of @@ -56,12 +56,12 @@ BSD-Style 0 - + - + @@ -70,32 +70,53 @@ - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - + + + + + 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.140 -r1.141 --- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 28 Apr 2010 12:14:57 -0000 1.140 +++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 2 May 2010 12:50:19 -0000 1.141 @@ -1558,7 +1558,7 @@ my instvar __including_page set publisher [ad_urlencode $publisher] - set feedname [ad_urlencode [[$package_id folder_id] title]] + set feedname [ad_urlencode [$package_id get_parameter PackageTitle [$package_id instance_name]]] set rssurl [ad_urlencode $rssurl] set my_yahoo_link "http://us.rd.yahoo.com/my/atm/$publisher/$feedname/*http://add.my.yahoo.com/rss?url=$rssurl" 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.205 -r1.206 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 30 Apr 2010 11:53:09 -0000 1.205 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 2 May 2010 12:50:19 -0000 1.206 @@ -357,7 +357,7 @@ } } } - if {$value eq ""} {set value [::[my folder_id] get_payload $attribute]} + #if {$value eq ""} {set value [::[my folder_id] get_payload $attribute]} if {$value eq ""} {set value [next $attribute $default]} if {$type ne ""} { # to be extended and generalized @@ -1205,7 +1205,7 @@ set package_id [::xo::cc package_id] set package_key "xowiki" - foreach n {folder.form} { + foreach n {folder.form link.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} { @@ -1340,45 +1340,45 @@ -content_types ::xowiki::Page* ] if {![::xotcl::Object isobject ::$folder_id]} { - # if we can't get the folder from the cache, create it - if {[catch {eval [nsv_get xotcl_object_cache ::$folder_id]}]} { - while {1} { - set item_id [ns_cache eval xotcl_object_type_cache item_id-of-$folder_id { - set myid [::xo::db::CrClass lookup -name ::$folder_id -parent_id $folder_id] - if {$myid == 0} break; # don't cache ID if invalid - return $myid - }] - break - } - if {[info exists item_id]} { - # we have a valid item_id and get the folder object - #my log "--f fetch folder object -object ::$folder_id -item_id $item_id" - ::xowiki::Object fetch_object -object ::$folder_id -item_id $item_id - } else { - # we have no folder object yet. so we create one... - ::xowiki::Object create ::$folder_id - ::$folder_id set text "# this is the payload of the folder object\n\n\ - #set index_page \"index\"\n" - ::$folder_id set parent_id $folder_id - ::$folder_id set name ::$folder_id - ::$folder_id set title ::$folder_id - ::$folder_id set package_id $id - ::$folder_id set publish_status "production" - ::$folder_id save_new - ::$folder_id initialize_loaded_object +# # if we can't get the folder from the cache, create it +# if {[catch {eval [nsv_get xotcl_object_cache ::$folder_id]}]} { +# while {1} { +# set item_id [ns_cache eval xotcl_object_type_cache item_id-of-$folder_id { +# set myid [::xo::db::CrClass lookup -name ::$folder_id -parent_id $folder_id] +# if {$myid == 0} break; # don't cache ID if invalid +# return $myid +# }] +# break +# } +# if {[info exists item_id]} { +# # we have a valid item_id and get the folder object +# #my log "--f fetch folder object -object ::$folder_id -item_id $item_id" +# ::xowiki::Object fetch_object -object ::$folder_id -item_id $item_id +# } else { +# # we have no folder object yet. so we create one... +# ::xowiki::Object create ::$folder_id +# ::$folder_id set text "# this is the payload of the folder object\n\n\ +# #set index_page \"index\"\n" +# ::$folder_id set parent_id $folder_id +# ::$folder_id set name ::$folder_id +# ::$folder_id set title ::$folder_id +# ::$folder_id set package_id $id +# ::$folder_id set publish_status "production" +# ::$folder_id save_new +# ::$folder_id initialize_loaded_object - if {[my get_parameter "with_general_comments" 0]} { - # Grant automatically permissions to registered user to - # add to general comments to objects under the folder. - permission::grant -party_id -2 -object_id $folder_id \ - -privilege general_comments_create - } - } - } - #my msg "--f new folder object = ::$folder_id" - #::$folder_id proc destroy {} {my log "--f "; next} - ::$folder_id set package_id $id - ::$folder_id destroy_on_cleanup +# if {[my get_parameter "with_general_comments" 0]} { +# # Grant automatically permissions to registered user to +# # add to general comments to objects under the folder. +# permission::grant -party_id -2 -object_id $folder_id \ +# -privilege general_comments_create +# } +# } +# } +# #my msg "--f new folder object = ::$folder_id" +# #::$folder_id proc destroy {} {my log "--f "; next} +# ::$folder_id set package_id $id +# ::$folder_id destroy_on_cleanup } else { #my log "--f reuse folder object $folder_id [::Serializer deepSerialize ::$folder_id]" } @@ -1537,11 +1537,9 @@ set entries_of [my get_parameter entries_of ""] } if {![info exists title]} { - set title [my get_parameter title ""] - if {$title eq ""} { - set title [::$folder_id set title] - } + set title [my get_parameter PackageTitle [my instance_name]] } + set description [my get_parameter PackageDescription ""] if {![info exists days] && [regexp {[^0-9]*([0-9]+)d} [my query_parameter rss] _ days]} { @@ -1555,6 +1553,7 @@ -name_filter $name_filter \ -entries_of $entries_of \ -title $title \ + -description $description \ -days $days] #set t text/plain Index: openacs-4/packages/xowiki/tcl/syndicate-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/syndicate-procs.tcl,v diff -u -r1.34 -r1.35 --- openacs-4/packages/xowiki/tcl/syndicate-procs.tcl 18 Mar 2010 10:03:56 -0000 1.34 +++ openacs-4/packages/xowiki/tcl/syndicate-procs.tcl 2 May 2010 12:50:19 -0000 1.35 @@ -130,9 +130,8 @@ RSS instproc render {} { my instvar package_id max_entries name_filter title days description siteurl base_table - set folder_id [::$package_id folder_id] + set folder_ids [::$package_id folder_id] - if {$description eq ""} {set description [::$folder_id set description]} my set link $siteurl[lindex [site_node::get_url_from_object_id -object_id $package_id] 0] set base_table xowiki_pagex @@ -151,45 +150,20 @@ -vars "s.body, s.rss_xml_frag, p.name, p.creator, p.title, p.page_id, instance_attributes, \ p.object_type as content_type, p.publish_date, p.description" \ -from "syndication s, cr_items ci, $base_table p $extra_from" \ - -where "ci.parent_id = $folder_id \ + -where "ci.parent_id in ([join $folder_ids ,]) \ and ci.live_revision = s.object_id \ and ci.publish_status <> 'production' \ and s.object_id = p.page_id \ $extra_where_clause"\ -orderby "p.publish_date desc" \ -limit [my limit]] -# set content [my head] -# my log "--TITLE=[my title], DESC=[my description]" -# db_foreach get_pages $sql { -# if {[string match "::*" $name]} continue -# if {$content_type eq "::xowiki::PageTemplate"} continue -# set description [string trim $description] -# if {$description eq ""} {set description $body} -# if {$title eq ""} {set title $name} -# set time [::xo::db::tcl_date $publish_date tz] -# set link [::xowiki::Includelet detail_link \ -# -package_id $package_id -name $name \ -# -absolute true \ -# -instance_attributes $instance_attributes] -# #append title " ($content_type)" -# set time "[clock format [clock scan $time] -format {%a, %d %b %Y %T}] ${tz}00" -# append content [my item \ -# -creator $creator \ -# -title $title \ -# -link $link \ -# -guid $siteurl/$page_id \ -# -description $description \ -# -pubdate $time \ -# ] -# } - set content [my head] db_foreach [my qn get_pages] $sql { if {[string match "::*" $name]} continue - if {$content_type eq "::xowiki::PageTemplate"} continue + if {$content_type eq "::xowiki::PageTemplate" || $content_type eq "::xowiki::Form"} continue append content $rss_xml_frag - } + } append content [my tail] return $content } @@ -245,8 +219,7 @@ my instvar package_id max_entries name_filter title days \ summary subtitle description author siteurl - set folder_id [::$package_id folder_id] - if {$description eq ""} {set description [::$folder_id set description]} + set folder_ids [::$package_id folder_id] if {$summary eq ""} {set summary $description} if {$subtitle eq ""} {set subtitle $title} @@ -256,7 +229,7 @@ set sql [::xo::db::sql select \ -vars * \ -from "xowiki_podcast_itemi p, cr_items ci, cr_mime_types m" \ - -where "ci.parent_id = $folder_id and ci.item_id = p.item_id \ + -where "ci.parent_id in ([join $folder_ids ,]) and ci.item_id = p.item_id \ and ci.live_revision = p.object_id \ and p.mime_type = m.mime_type \ and ci.publish_status <> 'production' [my extra_where_clause]" \ @@ -292,7 +265,7 @@ Timeline instproc render {} { my instvar package_id - set folder_id [::$package_id folder_id] + set folder_ids [::$package_id folder_id] set where_clause "" set limit "" @@ -309,7 +282,7 @@ -from "cr_items ci, cr_revisions cr, acs_objects o, acs_objects o2" \ -where "cr.item_id = ci.item_id and o.object_id = cr.revision_id and o2.object_id = cr.item_id - and ci.parent_id = :folder_id and o.creation_user is not null + and ci.parent_id in ([join $folder_ids ,]) and o.creation_user is not null $where_clause" \ -orderby "revision_id desc" \ -limit $limit] Index: openacs-4/packages/xowiki/tcl/xowiki-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-callback-procs.tcl,v diff -u -r1.58 -r1.59 --- openacs-4/packages/xowiki/tcl/xowiki-callback-procs.tcl 5 Nov 2009 12:34:16 -0000 1.58 +++ openacs-4/packages/xowiki/tcl/xowiki-callback-procs.tcl 2 May 2010 12:50:19 -0000 1.59 @@ -513,5 +513,6 @@ ns_log notice "-- upgrading to $v" delete_parameter top_portlet } + } } Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -r1.391 -r1.392 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 30 Apr 2010 10:34:52 -0000 1.391 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 2 May 2010 12:50:19 -0000 1.392 @@ -1512,11 +1512,12 @@ Page instproc get_rich_text_spec {field_name default} { my instvar package_id set spec "" - foreach {s widget_spec} [$package_id get_parameter widget_specs] { + #my msg WidgetSpecs=[$package_id get_parameter WidgetSpecs] + foreach {s widget_spec} [$package_id get_parameter WidgetSpecs] { foreach {page_name var_name} [split $s ,] break # in case we have no name (edit new page) we use the first value or the default. set name [expr {[my exists name] ? [my set name] : $page_name}] - #my msg "--w T.name = '$name' var=$page_name ([string match $page_name $name]), $var_name $field_name ([string match $var_name $field_name])" + my msg "--w T.name = '$name' var=$page_name ([string match $page_name $name]), $var_name $field_name ([string match $var_name $field_name])" if {[string match $page_name $name] && [string match $var_name $field_name]} { set spec $widget_spec @@ -2006,7 +2007,8 @@ PageInstance instproc widget_spec_from_folder_object {name given_template_name} { # get the widget field specifications from the payload of the folder object # for a field with a specified name in a specified page template - foreach {s widget_spec} [[my set parent_id] get_payload widget_specs] { + my msg WidgetSpecs=[$package_id get_parameter WidgetSpecs] + foreach {s widget_spec} [$package_id get_parameter WidgetSpecs] { foreach {template_name var_name} [split $s ,] break #ns_log notice "--w T.title = '$given_template_name' var=$name" if {([string match $template_name $given_template_name] || $given_template_name eq "") && 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.258 -r1.259 --- openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 30 Apr 2010 11:53:09 -0000 1.258 +++ openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 2 May 2010 12:50:19 -0000 1.259 @@ -205,7 +205,8 @@ #my log "--after context delete_link=$delete_link " $context_package_id instvar folder_id ;# this is the root folder - set template [$folder_id get_payload template] + #set template [$folder_id get_payload template] + set template "" set page [self] foreach css [$context_package_id get_parameter extra_css ""] {::xo::Page requireCSS -order 10 $css} @@ -1287,7 +1288,7 @@ set form [my get_form] set anon_instances [my get_from_template anon_instances f] - my msg form=$form + #my msg form=$form #my msg anon_instances=$anon_instances set field_names [my field_names -form $form]