Index: openacs-4/packages/xowiki/xowiki.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/xowiki.info,v
diff -u -r1.153.2.7 -r1.153.2.8
--- openacs-4/packages/xowiki/xowiki.info 23 Dec 2015 18:22:41 -0000 1.153.2.7
+++ openacs-4/packages/xowiki/xowiki.info 31 Dec 2015 17:01:44 -0000 1.153.2.8
@@ -10,7 +10,7 @@
t
xowiki
-
+
Gustaf Neumann
A xotcl-based enterprise wiki system with multiple object types
2015-10-04
@@ -55,9 +55,10 @@
BSD-Style
2
-
+
+
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.200.2.7 -r1.200.2.8
--- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 30 Nov 2015 20:26:48 -0000 1.200.2.7
+++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 31 Dec 2015 17:01:44 -0000 1.200.2.8
@@ -194,9 +194,8 @@
set and_names [list]
foreach cid_and [split $cid_or ,] {
if {![string is integer -strict $cid_and]} {
- return -code error "invalid category id '$cid_and'"
- ns_log warning "ignore invalid category id '$cid_and'"
- continue
+ ad_return_complaint 1 "invalid category id '$cid_and'"
+ ad_script_abort
}
lappend and_names [::category::get_name $cid_and]
lappend ands "exists (select 1 from category_object_map \
@@ -801,7 +800,12 @@
if {$category_ids ne ""} {
foreach cid [split $category_ids ,] {
set or_ids [split $cid |]
- foreach or_id $or_ids { if {![string is integer $or_id]} {error "invalid category_ids"}}
+ foreach or_id $or_ids {
+ if {![string is integer $or_id]} {
+ ad_return_complaint 1 "invalid category_id"
+ ad_script_abort
+ }
+ }
append sql " and exists (select * from category_object_map \
where object_id = ci.item_id and category_id in ([join $or_ids ,]))"
}
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.291.2.10 -r1.291.2.11
--- openacs-4/packages/xowiki/tcl/package-procs.tcl 23 Dec 2015 18:21:56 -0000 1.291.2.10
+++ openacs-4/packages/xowiki/tcl/package-procs.tcl 31 Dec 2015 17:01:44 -0000 1.291.2.11
@@ -848,11 +848,19 @@
if {$err} {set errorCode $::errorCode}
if {$batch_mode} {[my id] unset -nocomplain __batch_mode}
if {$err} {
- lassign $errorCode flag type value
- if {$flag eq "AD" && $type eq "EXCEPTION" && $value eq "ad_script_abort"} {
+ #
+ # Check, if we were called from "ad_script_abort" (intentional abortion)
+ #
+ if {[ad_exception $errorCode] eq "ad_script_abort"} {
+ #
+ # Yes, this was an intentional abortion
+ #
return ""
} else {
- ns_log error "error during invocation of method $method errorMsg: $errorMsg, $::errorInfo"
+ #
+ # No, it was a real error
+ #
+ ad_log error "error during invocation of method $method errorMsg: $errorMsg, $::errorInfo"
return [my error_msg -status_code 500 \
-template_file $error_template \
"error during [ns_quotehtml $method]: [ns_quotehtml $errorMsg]
"]
@@ -891,7 +899,10 @@
Package instproc get_page_from_item_or_revision_id {item_id} {
set revision_id [my query_parameter revision_id 0]
- if {![string is integer -strict $revision_id]} { return [my error_msg "No valid revision_id provided!"] }
+ if {![string is integer -strict $revision_id]} {
+ ad_return_complaint 1 "invalid revision_id"
+ ad_script_abort
+ }
set [expr {$revision_id ? "item_id" : "revision_id"}] 0
#my log "--instantiate item_id $item_id revision_id $revision_id"
return [::xo::db::CrClass get_instance_from_db -item_id $item_id -revision_id $revision_id]
@@ -2107,7 +2118,10 @@
set autoname [my get_parameter autoname 0]
set parent_id [$id query_parameter parent_id ""]
if {$parent_id eq ""} {set parent_id [$id form_parameter folder_id $folder_id]}
- if {![string is integer -strict $parent_id]} {error "parent_id must be integer"}
+ if {![string is integer -strict $parent_id]} {
+ ad_return_complaint 1 "invalid parent_id"
+ ad_script_abort
+ }
set page [$object_type new -volatile -parent_id $parent_id -package_id $id]
#my ds "parent_id of $page = [$page parent_id], cl=[$page info class] parent_id=$parent_id\n[$page serialize]"
if {$object_type eq "::xowiki::PageInstance"} {
@@ -2123,7 +2137,10 @@
set source_item_id [$id query_parameter source_item_id ""]
if {$source_item_id ne ""} {
- if {![string is integer -strict $source_item_id]} {error "source_item_id must be integer"}
+ if {![string is integer -strict $source_item_id]} {
+ ad_return_complaint 1 "invalid source_item_id"
+ ad_script_abort
+ }
set source [$object_type get_instance_from_db -item_id $source_item_id]
$page copy_content_vars -from_object $source
set name "[::xowiki::autoname new -parent_id $source_item_id -name [$source name]]"
@@ -2143,12 +2160,18 @@
Package instproc www-manage-categories {} {
set object_id [my query_parameter object_id]
- if {![string is integer -strict $object_id]} { return [my error_msg "No valid object_id provided!"] }
+ if {![string is integer -strict $object_id]} {
+ ad_return_complaint 1 "invalid object_id"
+ ad_script_abort
+ }
# flush could be made more precise in the future
my flush_page_fragment_cache -scope agg
- my returnredirect [site_node::get_package_url -package_key categories]cadmin/object-map?ctx_id=$object_id&object_id=$object_id
+ set href [export_vars -base [site_node::get_package_url -package_key categories]cadmin/object-map {
+ {ctx_id $object_id} {object_id}
+ }]
+ my returnredirect $href
}
#
@@ -2157,9 +2180,15 @@
Package instproc www-edit-category-tree {} {
set object_id [my query_parameter object_id]
- if {![string is integer -strict $object_id]} { return [my error_msg "No valid object_id provided!"] }
+ if {![string is integer -strict $object_id]} {
+ ad_return_complaint 1 "invalid object_id"
+ ad_script_abort
+ }
set tree_id [my query_parameter tree_id]
- if {![string is integer -strict $tree_id]} { return [my error_msg "No valid tree_id provided!"] }
+ if {![string is integer -strict $tree_id]} {
+ ad_return_complaint 1 "invalid tree_id"
+ ad_script_abort
+ }
# flush could be made more precise in the future
my flush_page_fragment_cache -scope agg
@@ -2209,7 +2238,7 @@
Package instproc www-delete {-item_id -name -parent_id} {
#
- # This delete method does not require an instanantiated object,
+ # This delete method does not require an instantiated object,
# while the class-specific delete methods in xowiki-procs need these.
# If a (broken) object can't be instantiated, it cannot be deleted.
# Therefore we need this package level delete method.
@@ -2224,7 +2253,10 @@
#
if {![info exists item_id]} {
set item_id [my query_parameter item_id]
- if {![string is integer $item_id]} { return [my error_msg "No valid item_id provided!"] }
+ if {![string is integer $item_id]} {
+ ad_return_complaint 1 "invalid item_id"
+ ad_script_abort
+ }
#my log "--D item_id from query parameter $item_id"
}
#
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.485.2.20 -r1.485.2.21
--- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 23 Dec 2015 18:21:56 -0000 1.485.2.20
+++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 31 Dec 2015 17:01:44 -0000 1.485.2.21
@@ -1866,10 +1866,15 @@
# "render" might be cached
if {[catch {set html [$includelet render]} errorMsg]} {
- ns_log error "$errorMsg\n$::errorInfo"
- set page_name [$includelet name]
- set ::errorInfo [::xowiki::Includelet html_encode $::errorInfo]
- set html [my error_during_render [_ xowiki.error-includelet-error_during_render]]
+ if {[string match "*for parameter*" $errorMsg]} {
+ set html ""
+ ad_return_complaint 1 $errorMsg
+ } else {
+ ad_log error $errorMsg
+ set page_name [$includelet name]
+ set ::errorInfo [::xowiki::Includelet html_encode $::errorInfo]
+ set html [my error_during_render [_ xowiki.error-includelet-error_during_render]]
+ }
}
#my log "--include includelet returns $html"
return $html
@@ -1971,7 +1976,13 @@
lappend adp_args __including_page [self]
set including_page_level [template::adp_level]
if {[catch {set page [template::adp_include $adp_fn $adp_args]} errorMsg]} {
- ns_log error "$errorMsg\n$::errorInfo"
+ if {[ad_exception $::errorCode] eq "ad_script_abort"} {
+ #
+ # If the exception was from an ad_script_abort, propagate it up
+ #
+ ad_script_abort
+ }
+ ad_log error "$errorMsg\n$::errorInfo"
# in case of error, reset the adp_level to the previous value
set ::template::parse_level $including_page_level
incr ::xowiki_inclusion_depth -1