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.61 -r1.62 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 15 Jun 2007 09:40:31 -0000 1.61 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 19 Jun 2007 11:18:36 -0000 1.62 @@ -197,35 +197,39 @@ @see export_vars } { my instvar id - + + set computed_link "" + if {[$object istype ::xowiki::Package]} { + set base [my package_url] + if {[info exists link]} { + set computed_link [uplevel export_vars -base [list $base$link] [list $args]] + } else { + lappend args [list $method 1] + set computed_link [uplevel export_vars -base [list $base] [list $args]] + } + } elseif {[$object istype ::xowiki::Page]} { + if {[info exists link]} { + set base $link + } else { + set base [my url] + } + lappend args [list m $method] + set computed_link [uplevel export_vars -base [list $base] [list $args]] + } + if {[info exists privilege]} { set granted [expr {$privilege eq "public" ? 1 : [permission::permission_p \ -object_id $id -privilege $privilege \ -party_id [::xo::cc user_id]] }] } else { # determine privilege from policy - set granted [my check_permissions $object $method] + set granted [my check_permissions -link $computed_link $object $method] #my log "--p $id check_permissions $object $method ==> $granted" } + if {$granted} { - if {[$object istype ::xowiki::Package]} { - set base [my package_url] - if {[info exists link]} { - return [uplevel export_vars -base [list $base$link] [list $args]] - } else { - lappend args [list $method 1] - return [uplevel export_vars -base [list $base] [list $args]] - } - } elseif {[$object istype ::xowiki::Page]} { - if {[info exists link]} { - set base $link - } else { - set base [my url] - } - lappend args [list m $method] - return [uplevel export_vars -base [list $base] [list $args]] - } + return $computed_link } return "" } @@ -802,8 +806,8 @@ # policy management # - Package instproc condition=has_class {value} { - return [expr {[my query_parameter object_type ""] eq $value}] + Package instproc condition=has_class {query_context value} { + return [expr {[$query_context query_parameter object_type ""] eq $value}] } @@ -846,7 +850,6 @@ } } - Policy policy2 -contains { # # we require side wide admin rights for deletions and code