Index: openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl 26 Jun 2006 15:41:10 -0000 1.2 +++ openacs-4/packages/imsld/tcl/imsld-condition-procs.tcl 27 Jun 2006 10:38:39 -0000 1.3 @@ -30,7 +30,12 @@ } } else { foreach elseNode $elseNodes { - imsld::statement::execute -run_id $run_id -statement [$elseNode childNodes] + #an else node may contain an expression or another if_then_else + if { [string eq [ [$elseNode selectNodes {*[position()=1] } ] localName] "if" ] } { + imsld::condition::execute -run_id $run_id -condition $elseNode + } else { + imsld::statement::execute -run_id $run_id -statement [$elseNode childNodes] + } } } } @@ -138,7 +143,11 @@ set propertyvalue1 [[$expressionNode selectNodes {*[local-name()='property-value']}] nodeValue] return [expr {$propertyvalue0 == $propertyvalue1}] } - {is-member-of-role} { + {is-member-of-role} { + set roleref [$expressionNode getAttribute {ref}] + set role_id [imsld::roles::get_role_id -ref $roleref -run_id $run_id] + set users_list [imsld::roles::get_users_in_role -role_id $role_id -run_id $run_id] + return [ expr { [lsearch $users_list $user_id] > -1} ] } } }