Generic::Form instproc generate (public)

 <instance of Generic::Form[i]> 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_submit
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: