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]