Generic::Form instproc generate (public)
<instance of Generic::Form> generate [ -template template ] \ [ -mode mode ] [ -export export ]
Defined in /var/www/openacs.org/packages/xotcl-core/tcl/generic-procs.tcl
The method generate is used to actually generate the form template from the specifications and to set up page_title and context when appropriate.
- Switches:
- -template (optional, defaults to
"formTemplate"
)- is the name of the Tcl variable to contain the filled in template
- -mode (optional, defaults to
"edit"
)- -export (optional)
- list of attribute value pairs to be exported to the form (nested list)
- Testcases:
- xowiki_test_cases
Source code: # set form name for adp file set :$template ${:name} set object_type [[${:data} info class] object_type] set object_name [expr {[${:data} exists name] ? [${:data} set name] : ""}] # :log "-- ${:data}, cl=[${:data} info class] [[${:data} info class] object_type]" #:log "--e ${:name} final fields ${:fields}" set exports [list [list object_type $object_type] [list folder_id ${:folder_id}] [list __object_name [::security::parameter::signed $object_name]]] if {[info exists export]} { foreach pair $export {lappend exports $pair} } ad_form -name ${:name} -form ${:fields} -mode $mode -export $exports -action [:action] -html [:html] #:log "--- generate: setup methods on data ${:data}" set new_data "set item_id \[[self] new_data\]" set edit_data "set item_id \[[self] edit_data\]" set new_request "[self] new_request" set edit_request "[self] edit_request \$item_id" set after_submit "[self] after_submit \$item_id" set on_validation_error "[self] on_validation_error" set on_submit "[self] on_submit \$item_id" if {[:with_categories]} { set coid [expr {[${:data} exists item_id] ? [${:data} set item_id] : ""}] category::ad_form::add_widgets -form_name ${:name} -container_object_id ${:package_id} -categorized_object_id $coid # When editing, fill category form widgets # with current mappings for this object append edit_request { category::ad_form::fill_widgets -container_object_id ${:package_id} -categorized_object_id $item_id } append new_data { category::map_object -remove_old -object_id $item_id $category_ids } append edit_data { category::map_object -remove_old -object_id $item_id $category_ids } append on_submit { set category_ids [category::ad_form::get_categories -container_object_id ${:package_id}] } } #ns_log notice "-- ad_form new_data=<$new_data> edit_data=<$edit_data> edit_request=<$edit_request>" # # Action blocks must be added last. "-new_data" and "-edit_data" # are enclosed in a transaction, such that optional additional # code from category management is executed safely # ad_form -extend -name ${:name} -validate [:validate] -new_data "xo::dc transaction \{ $new_data \}" -edit_data "xo::dc transaction \{ $edit_data \}" -on_submit $on_submit -new_request $new_request -edit_request $edit_request -on_validation_error $on_validation_error -after_submit $after_submitXQL Not present: Generic, PostgreSQL, Oracle