Index: openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl 11 Oct 2007 07:36:17 -0000 1.3 +++ openacs-4/packages/xotcl-core/tcl/06-param-procs.tcl 17 Oct 2007 08:48:08 -0000 1.4 @@ -265,6 +265,12 @@ set array [my per_package_id_name $package_id] nsv_set $array [my parameter_name] $value } + parameter instproc clear_per_package_instance_value {package_id value} { + set array [my per_package_id_name $package_id] + if {[nsv_exists $array [my parameter_name]]} { + nsv_unset $array [my parameter_name] + } + } parameter instproc initialize_loaded_object {} { my instvar package_key parameter_name [self class] set Parameter_id($package_key,$parameter_name) [self] @@ -327,7 +333,37 @@ } parameter initialize_parameters + # + # For the time being: catch changed parameter values + # + ad_proc -public -callback subsite::parameter_changed -impl xotcl-param-procs { + -package_id:required + -parameter:required + -value:required + } { + Implementation of subsite::parameter_changed for xotcl param procs + + @param package_id the package_id of the package the parameter was changed for + @param parameter the parameter name + @param value the new value + } { + # + # In order to use the existing inerface for parameters, we catch + # all parameter changes and update accordingly the values in the new + # interface. + # + set parameter_obj [ ::xo::parameter get_parameter_object \ + -package_key [apm_package_key_from_id $package_id] \ + -parameter_name $parameter] + $parameter_obj clear_per_package_instance_value $package_id $value + if {[$parameter_obj default_value] ne $value} { + $parameter_obj set_per_package_instance_value $package_id $value + } + } + + + # # A few test cases # # ns_log notice "xotcl-request-monitor.max-url-stats=[parameter get_from_package_key \