Index: openacs-4/packages/categories/tcl/category-form-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/categories/tcl/category-form-procs.tcl,v diff -u -N -r1.6.6.2 -r1.6.6.3 --- openacs-4/packages/categories/tcl/category-form-procs.tcl 3 Oct 2013 07:56:57 -0000 1.6.6.2 +++ openacs-4/packages/categories/tcl/category-form-procs.tcl 15 Oct 2014 12:30:34 -0000 1.6.6.3 @@ -78,3 +78,32 @@ } return $category_ids } + +# Antonio Pisano 2014-10-15 +# This proc was added because, when editing an existing object, one should get +# its mapped categories and use their values to eventually fill the widget we +# have created by 'category::ad_form::add_widgets'. +# Otherwise, we will always see an empty widget when editing, even when mappings exist. +ad_proc -public category::ad_form::fill_widgets { + {-container_object_id:required} + {-categorized_object_id} + {-element_name "category_id"} +} { + + Reads mapped categories values from categorized object and sets them + into its auto-generated category form widgets. To be used in the + -edit_request clause of ad_form. + + @author Antonio Pisano (antonio@elettrotecnica.it) +} { + # For each mapped tree... + foreach tree [category_tree::get_mapped_trees $container_object_id] { + lassign $tree tree_id name subtree_id assign_single_p require_category_p widget + # ...get reference to this tree's form widget... + upvar #[template::adp_level] \ + __category__ad_form__$element_name\_${tree_id} my_category_ids + # ...and set its value to the categories mapped for this object. + set categories [category::get_mapped_categories -tree_id $tree_id $categorized_object_id] + set my_category_ids $categories + } +}