Index: openacs-4/packages/xowiki/xowiki.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/xowiki.info,v
diff -u -r1.122 -r1.123
--- openacs-4/packages/xowiki/xowiki.info 6 Nov 2009 12:26:18 -0000 1.122
+++ openacs-4/packages/xowiki/xowiki.info 26 Nov 2009 11:16:44 -0000 1.123
@@ -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)
- 2009-11-06
+ 2009-11-26
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/package-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v
diff -u -r1.187 -r1.188
--- openacs-4/packages/xowiki/tcl/package-procs.tcl 24 Nov 2009 21:42:00 -0000 1.187
+++ openacs-4/packages/xowiki/tcl/package-procs.tcl 26 Nov 2009 11:16:44 -0000 1.188
@@ -586,7 +586,7 @@
return ""
}
- Package instproc make_form_link {-form -parent_id -name -nls_language} {
+ Package instproc make_form_link {-form -parent_id -name -nls_language -return_url} {
my instvar id
# use the same instantiate_forms as everywhere; TODO: will go to a different namespace
set form_id [::xowiki::Weblog instantiate_forms -forms $form -package_id $id]
@@ -1388,9 +1388,14 @@
append msg [$importer report]
}
- Package instproc flush_references {-item_id:integer,required -name:required -parent_id} {
- my instvar folder_id id
- if {![info exists parent_id]} {set parent_id $folder_id}
+ Package instproc flush_references {-item_id:integer,required -name -parent_id} {
+ my instvar id folder_id
+ if {![info exists parent_id]} {
+ set parent_id [::xo::db::CrClass get_parent_id -item_id $item_id]
+ }
+ if {![info exists name]} {
+ set name [::xo::db::CrClass get_name -item_id $item_id]
+ }
if {$name eq "::$folder_id"} {
#my log "--D deleting folder object ::$folder_id"
::xo::clusterwide ns_cache flush xotcl_object_cache ::$folder_id
@@ -1414,7 +1419,7 @@
::xo::db::sql::content_revision del -revision_id $revision_id
}
- Package instproc delete {-item_id -name} {
+ Package instproc delete {-item_id -name -parent_id} {
#
# This delete method does not require an instanantiated object,
# while the class-specific delete methods in xowiki-procs need these.
@@ -1423,7 +1428,7 @@
# While the class specific methods are used from the
# application pages, the package_level method is used from the admin pages.
#
- my instvar folder_id id
+ my instvar id
#
# if no item_id given, take it from the query parameter
#
@@ -1437,12 +1442,19 @@
if {![info exists name]} {
set name [my query_parameter name]
}
+
if {$item_id eq "" && $name ne ""} {
- if {[set item_id [::xo::db::CrClass lookup -name $name -parent_id $folder_id]] == 0} {
+ if {![info exists parent_id]} {set parent_id [my folder_id]}
+ if {[set item_id [::xo::db::CrClass lookup -name $name -parent_id $parent_id]] == 0} {
ns_log notice "lookup of '$name' failed"
set item_id ""
}
+ } elseif {$item_id ne ""} {
+ if {![info exists parent_id]} {
+ set parent_id [::xo::db::CrClass get_parent_id -item_id $item_id]
+ }
}
+
if {$item_id ne ""} {
#my log "--D trying to delete $item_id $name"
set object_type [::xo::db::CrClass get_object_type -item_id $item_id]
@@ -1468,8 +1480,11 @@
::xo::db::sql::content_item del -item_id $comment_id
}
}
+ foreach child_item_id [::xo::db::CrClass get_child_item_ids -item_id $item_id] {
+ my flush_references -item_id $child_item_id
+ }
$object_type delete -item_id $item_id
- my flush_references -item_id $item_id -name $name
+ my flush_references -item_id $item_id -name $name -parent_id $parent_id
my flush_page_fragment_cache -scope agg
} else {
my log "--D nothing to delete!"
Index: openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl,v
diff -u -r1.118 -r1.119
--- openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl 27 Oct 2009 11:30:28 -0000 1.118
+++ openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl 26 Nov 2009 11:16:44 -0000 1.119
@@ -251,7 +251,6 @@
if {[$data form_parameter __new_p 0]
|| $old_name ne $name
} {
- #my msg "exists in db [::xo::db::CrClass lookup -name $name -parent_id [$data parent_id]]"
return [expr {[::xo::db::CrClass lookup -name $name -parent_id [$data parent_id]] == 0}]
}
return 1
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.378 -r1.379
--- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 25 Nov 2009 12:28:21 -0000 1.378
+++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 26 Nov 2009 11:16:44 -0000 1.379
@@ -1303,8 +1303,9 @@
Page instproc item_id_ref {
item_id
} {
- db_1row "get_name" "select name,parent_id from cr_items where item_id = '$item_id'"
+ set name [::xo::db::Class get_name -id $item_id]
set type [::xo::db::Class get_object_type -id $item_id]
+ set parent_id [::xo::db::Class get_parent_id -id $item_id]
#my log "lookup returned name=$name (type $type)"
if {$type eq "content_folder"} {
return [list link_type "folder" prefix "" stripped_name $name parent_id $parent_id]
@@ -1366,7 +1367,7 @@
set item_id $parent_id
set parent_id $(parent_id)
} elseif {$element eq ".." || $element eq "..\0"} {
- db_1row "get_parent" "select parent_id as id from cr_items where item_id = :parent_id"
+ set id [::xo::db::CrClass get_parent_id -item_id $parent_id]
if {$id > 0} {
# refuse to traverse past root folder
set parent_id $id