form-procs.tcl

Form management for the ArsDigita Templating System

Location:
packages/acs-templating/tcl/form-procs.tcl
Authors:
Karl Goldstein <karlg@arsdigita.com>
Stanislav Freidin <sfreidin@arsdigita.com>
CVS Identification:
$Id: form-procs.tcl,v 1.62 2024/11/13 08:36:31 gustafn Exp $

Procedures in this file

Detailed information

form (public, deprecated)

 form command [ args... ]
Deprecated. Invoking this procedure generates a warning.

form is really template::form although when in the "template" namespace you may omit the template:: DEPRECATED: no, you should not omit the namespace, and this proc does not comply with OpenACS naming convention.

Parameters:
command (required)
See Also:

Partial Call Graph (max 5 caller/called nodes):
%3

Testcases:
No testcase defined.

template::form (public)

 template::form command [ args... ]

template::form command invokes form functions. Please see the individual functions for their arguments. The template::element API is used to manipulate form elements.

Parameters:
command (required)
See Also:

Partial Call Graph (max 5 caller/called nodes):
%3 test_template_widget_file template_widget_file (test acs-templating) template::form template::form test_template_widget_file->template::form ad_form ad_form (public) ad_form->template::form packages/acs-subsite/www/admin/attributes/edit-one.tcl packages/acs-subsite/ www/admin/attributes/edit-one.tcl packages/acs-subsite/www/admin/attributes/edit-one.tcl->template::form packages/acs-subsite/www/admin/group-types/new.tcl packages/acs-subsite/ www/admin/group-types/new.tcl packages/acs-subsite/www/admin/group-types/new.tcl->template::form packages/acs-subsite/www/admin/groups/new.tcl packages/acs-subsite/ www/admin/groups/new.tcl packages/acs-subsite/www/admin/groups/new.tcl->template::form packages/acs-subsite/www/admin/parties/new.tcl packages/acs-subsite/ www/admin/parties/new.tcl packages/acs-subsite/www/admin/parties/new.tcl->template::form

Testcases:
template_widget_file

template::form::check_elements (private)

 template::form::check_elements id

Iterates over all declared elements, checking for hidden widgets and rendering those that have not been rendered yet. Called after rendering a custom form template as a debugging aid.

Parameters:
id (required)
The form identifier

Partial Call Graph (max 5 caller/called nodes):
%3 ad_log ad_log (public) template::element template::element (public) template::form::get_reference template::form::get_reference (private) template::form::check_elements template::form::check_elements template::form::check_elements->ad_log template::form::check_elements->template::element template::form::check_elements->template::form::get_reference

Testcases:
No testcase defined.

template::form::create (public)

 template::form::create id [ args... ]

Initialize the data structures for a form.

Parameters:
id (required)
A keyword identifier for the form, such as "add_user" or "edit_item". The ID must be unique in the context of a single page.
Options:
-method
The standard METHOD attribute to specify in the HTML FORM tag at the beginning of the rendered form. Defaults to POST.
-html
A list of additional name-value attribute pairs to include in the HTML FORM tag at the beginning of the rendered form. Common use for this option is to set multipart form encoding by specifying "-html { enctype multipart/form-data }". Please note that to comply with newer security features, such as CSP, one should not specify JavaScript event handlers here, as they will be rendered inline.
-mode
If set to 'display', the form is shown in display-only mode, where the user cannot edit the fields. Each widget knows how to display its contents appropriately, e.g. a select widget will show the label, not the value. If set to 'edit', the form is displayed as normal, for editing. Defaults to 'edit'. Switching to edit mode when a button is clicked in display mode is handled automatically.
-cancel_url
A url to redirect to when the user hits the Cancel button. If you do not supply a cancel_url, there will be no Cancel button.
-cancel_label
The label of the Cancel button, if cancel_url is supplied. Default is "Cancel".
-actions
A list of actions available on the form, which in practice means a list of buttons to show when the form is in display mode. The value should be a list of lists, with the first element being the form label and the second element being the name of the form element. Defaults to { { "Edit" edit } }. The name of the button clicked can be retrieved using template::form::get_button. The name of the button clicked while in display mode is called the 'action', and can be retrieved using template::form::get_action. The action is automatically carried forward to the form submission, so that the value that you get from calling template::form::get_action on the final form submission is the name of the button which was called when the form changed from display mode to edit mode.
-display_buttons
List of buttons to show when the form is in display mode. Equivalent to actions. If both actions and display_buttons are present, 'actions' is used. 'display_buttons' is deprecated.
-edit_buttons
List of buttons to show when the form is in edit mode. The value should be a list of lists, with the first element being the button label and the second element being the name. Defaults to { { "Ok" ok } }. The name of the button clicked can be retrieved using template::form::get_button.
-has_submit
Set to 1 to suppress the OK or submit button automatically added by the form builder. Use this if your form already includes its own submit button.
-has_edit
Set to 1 to suppress the Edit button automatically added by the form builder. Use this if you include your own.
-elements
A block of element specifications.
-show_required_p
Should the form template show which elements are required. Use 1 or t for true, 0 or f for false. Defaults to true.
See Also:

Partial Call Graph (max 5 caller/called nodes):
%3 template::request::create template::request::create (public) template::form::create template::form::create template::request::create->template::form::create ad_returnredirect ad_returnredirect (public) template::form::create->ad_returnredirect ad_script_abort ad_script_abort (public) template::form::create->ad_script_abort template::adp_level template::adp_level (public) template::form::create->template::adp_level template::element template::element (public) template::form::create->template::element template::form::get_action template::form::get_action (public) template::form::create->template::form::get_action

Testcases:
No testcase defined.

template::form::exists (public)

 template::form::exists id

Determine whether a form exists by checking for its data structures.

Parameters:
id (required)
The ID of an ATS form object.
Returns:
1 if a form with the specified ID exists. 0 if it does not.

Partial Call Graph (max 5 caller/called nodes):
%3 template::adp_level template::adp_level (public) template::form::exists template::form::exists template::form::exists->template::adp_level

Testcases:
No testcase defined.

template::form::generate (private)

 template::form::generate id [ style ]

Render the finished HTML output for a dynamic form.

Parameters:
id (required)
The form identifier
style (optional)
The style template to use when generating the form. Form style templates must be placed in the forms subdirectory of the ATS resources directory.
Returns:
A string containing the HTML for the body of the form.

Partial Call Graph (max 5 caller/called nodes):
%3 template::adp_compile template::adp_compile (public) template::adp_eval template::adp_eval (public) template::adp_level template::adp_level (public) template::form::template template::form::template (private) template::form::generate template::form::generate template::form::generate->template::adp_compile template::form::generate->template::adp_eval template::form::generate->template::adp_level template::form::generate->template::form::template

Testcases:
No testcase defined.

template::form::get_action (public)

 template::form::get_action id

Find out which action is in progress. This is the name of the button which was clicked when the form was in display mode.

Parameters:
id (required)
The ID of an ATS form object.
Returns:
the name of the action in progress

Partial Call Graph (max 5 caller/called nodes):
%3 packages/chat/www/transcript-edit.tcl packages/chat/ www/transcript-edit.tcl template::form::get_action template::form::get_action packages/chat/www/transcript-edit.tcl->template::form::get_action packages/forums/www/moderate/move-thread-thread.tcl packages/forums/ www/moderate/move-thread-thread.tcl packages/forums/www/moderate/move-thread-thread.tcl->template::form::get_action packages/forums/www/moderate/move-thread.tcl packages/forums/ www/moderate/move-thread.tcl packages/forums/www/moderate/move-thread.tcl->template::form::get_action packages/forums/www/moderate/move.tcl packages/forums/ www/moderate/move.tcl packages/forums/www/moderate/move.tcl->template::form::get_action template::form::create template::form::create (public) template::form::create->template::form::get_action template::adp_level template::adp_level (public) template::form::get_action->template::adp_level template::form::get_button template::form::get_button (public) template::form::get_action->template::form::get_button

Testcases:
No testcase defined.

template::form::get_button (public)

 template::form::get_button id

Find out which button was clicked

Parameters:
id (required)
The ID of an ATS form object.
Returns:
the name of the button clicked

Partial Call Graph (max 5 caller/called nodes):
%3 packages/forums/lib/message/post.tcl packages/forums/ lib/message/post.tcl template::form::get_button template::form::get_button packages/forums/lib/message/post.tcl->template::form::get_button packages/forums/www/message-post.tcl packages/forums/ www/message-post.tcl packages/forums/www/message-post.tcl->template::form::get_button template::form::create template::form::create (public) template::form::create->template::form::get_button template::form::get_action template::form::get_action (public) template::form::get_action->template::form::get_button template::adp_level template::adp_level (public) template::form::get_button->template::adp_level

Testcases:
No testcase defined.

template::form::get_combined_values (public)

 template::form::get_combined_values id [ args... ]

Return a list which represents the result of getting combined values from multiple form elements

Parameters:
id (required)
The form identifier
Returns:
The combined list of values

Partial Call Graph (max 5 caller/called nodes):
%3 template::element template::element (public) template::form::get_reference template::form::get_reference (private) template::form::get_combined_values template::form::get_combined_values template::form::get_combined_values->template::element template::form::get_combined_values->template::form::get_reference

Testcases:
No testcase defined.

template::form::get_elements (public)

 template::form::get_elements [ -no_api ] id

Return a list of element names for the form with given id.

Switches:
-no_api (optional, boolean)
If provided, filter out form builder and ad_form API element names that start with the double underscore
Parameters:
id (required)
Author:
Peter Marklund

Partial Call Graph (max 5 caller/called nodes):
%3 packages/acs-admin/www/auth/authority-parameters.tcl packages/acs-admin/ www/auth/authority-parameters.tcl template::form::get_elements template::form::get_elements packages/acs-admin/www/auth/authority-parameters.tcl->template::form::get_elements packages/acs-admin/www/auth/authority.tcl packages/acs-admin/ www/auth/authority.tcl packages/acs-admin/www/auth/authority.tcl->template::form::get_elements template::form::get_values template::form::get_values (public) template::form::get_values->template::form::get_elements template::adp_level template::adp_level (public) template::form::get_elements->template::adp_level

Testcases:
No testcase defined.

template::form::get_errors (public)

 template::form::get_errors id
Parameters:
id (required)
The form identifier
Returns:
the list of form errors

Partial Call Graph (max 5 caller/called nodes):
%3 test_template_widget_file template_widget_file (test acs-templating) template::form::get_errors template::form::get_errors test_template_widget_file->template::form::get_errors template::adp_level template::adp_level (public) template::form::get_errors->template::adp_level

Testcases:
template_widget_file

template::form::get_properties (public)

 template::form::get_properties id

Get properties of a form

Parameters:
id (required)
The ID of a form

Partial Call Graph (max 5 caller/called nodes):
%3 template::adp_level template::adp_level (public) template::form::get_properties template::form::get_properties template::form::get_properties->template::adp_level

Testcases:
No testcase defined.

template::form::get_reference (private)

 template::form::get_reference

Helper procedure used to access the basic data structures of a form object. Called by several of the form commands.

Partial Call Graph (max 5 caller/called nodes):
%3 template::form::check_elements template::form::check_elements (private) template::form::get_reference template::form::get_reference template::form::check_elements->template::form::get_reference template::form::get_combined_values template::form::get_combined_values (public) template::form::get_combined_values->template::form::get_reference template::form::render template::form::render (private) template::form::render->template::form::get_reference template::form::section template::form::section (public) template::form::section->template::form::get_reference template::form::size template::form::size (public) template::form::size->template::form::get_reference template::adp_level template::adp_level (public) template::form::get_reference->template::adp_level

Testcases:
No testcase defined.

template::form::get_values (public)

 template::form::get_values id [ args... ]

Set local variables for form variables (assume they are all single values). Typically used when processing the form submission to prepare for DML or other type of transaction. NB! This proc must always be called through "form get_values" or "template::form get_values", or it won't be able to find the variable.

Parameters:
id (required)
The form identifier

Partial Call Graph (max 5 caller/called nodes):
%3 template::element template::element (public) template::form::get_elements template::form::get_elements (public) template::form::get_values template::form::get_values template::form::get_values->template::element template::form::get_values->template::form::get_elements

Testcases:
No testcase defined.

template::form::is_request (public)

 template::form::is_request id

Return true if preparing a form for an initial request (as opposed to repreparing a form that is returned to the user due to validation problems). This command is used to conditionally set default values for form elements.

Parameters:
id (required)
The form identifier
Returns:
1 if preparing a form for an initial request; or 0 if repreparing a form that is returned to the user due to validation problems

Partial Call Graph (max 5 caller/called nodes):
%3 template::form::is_submission template::form::is_submission (public) template::form::is_request template::form::is_request template::form::is_request->template::form::is_submission

Testcases:
No testcase defined.

template::form::is_submission (public)

 template::form::is_submission id

Return true if a submission in progress. The submission may or may not be valid.

Parameters:
id (required)
The form identifier
Returns:
1 if true or 0 if false

Partial Call Graph (max 5 caller/called nodes):
%3 template::form::is_request template::form::is_request (public) template::form::is_submission template::form::is_submission template::form::is_request->template::form::is_submission template::adp_level template::adp_level (public) template::form::is_submission->template::adp_level

Testcases:
No testcase defined.

template::form::is_valid (public)

 template::form::is_valid id

Return true if submission in progress and submission was valid. Typically used to conditionally execute DML and redirect to the next page, as opposed to returning the form back to the user to report validation errors.

Parameters:
id (required)
The form identifier
Returns:
1 if id is the form identifier of a valid submission or 0 otherwise

Partial Call Graph (max 5 caller/called nodes):
%3 test_template_widget_file template_widget_file (test acs-templating) template::form::is_valid template::form::is_valid test_template_widget_file->template::form::is_valid template::adp_level template::adp_level (public) template::form::is_valid->template::adp_level

Testcases:
template_widget_file

template::form::render (private)

 template::form::render id tag_attributes

Render the HTML FORM tag along with a hidden element that identifies the form object.

Parameters:
id (required)
The form identifier
tag_attributes (required)
A name-value list of special attributes to add to the FORM tag, such as JavaScript event handlers.
Returns:
A string containing the rendered tags.

Partial Call Graph (max 5 caller/called nodes):
%3 _ _ (public) ad_log ad_log (public) ad_return_complaint ad_return_complaint (public) ad_script_abort ad_script_abort (public) export_vars export_vars (public) template::form::render template::form::render template::form::render->_ template::form::render->ad_log template::form::render->ad_return_complaint template::form::render->ad_script_abort template::form::render->export_vars

Testcases:
No testcase defined.

template::form::section (public)

 template::form::section [ -fieldset fieldset ] \
    [ -legendtext legendtext ] [ -legend legend ] id section

Set the current section (fieldset) of the form. A form may be divided into any number of fieldsets to group related elements. Elements are tagged with the current fieldset properties as they are added to the form. A form style template may insert a divider in the form whenever the fieldset identifier changes.

Switches:
-fieldset (optional)
A list of name-value attribute pairs for the FIELDSET tag
-legendtext (optional)
The legend text
-legend (optional)
A list of name-value attribute pairs for the LEGEND tag
Parameters:
id (required)
The form identifier.
section (required)
The current fieldset identifier

Partial Call Graph (max 5 caller/called nodes):
%3 ad_log ad_log (public) template::form::get_reference template::form::get_reference (private) template::form::section template::form::section template::form::section->ad_log template::form::section->template::form::get_reference

Testcases:
No testcase defined.

template::form::set_error (public)

 template::form::set_error id element error

Set an error on a form element. Can be called from the -on_submit or -after_submit block of an ad_form. Will cause the form to no longer be considered valid, and thus the form will be redisplayed with the error message embedded, provided that 'break' is also called, so any code that redirects away from the form (e.g. in the after_submit block) isn't called either.

Parameters:
id (required)
The ID of the form
element (required)
The element that contains the error.
error (required)
The error message.

Partial Call Graph (max 5 caller/called nodes):
%3 packages/acs-lang/www/admin/edit-localized-message.tcl packages/acs-lang/ www/admin/edit-localized-message.tcl template::form::set_error template::form::set_error packages/acs-lang/www/admin/edit-localized-message.tcl->template::form::set_error packages/acs-subsite/lib/login.tcl packages/acs-subsite/ lib/login.tcl packages/acs-subsite/lib/login.tcl->template::form::set_error packages/acs-templating/www/scripts/xinha/attach-file.tcl packages/acs-templating/ www/scripts/xinha/attach-file.tcl packages/acs-templating/www/scripts/xinha/attach-file.tcl->template::form::set_error packages/acs-templating/www/scripts/xinha/attach-image.tcl packages/acs-templating/ www/scripts/xinha/attach-image.tcl packages/acs-templating/www/scripts/xinha/attach-image.tcl->template::form::set_error packages/acs-templating/www/scripts/xinha/file-selector.tcl packages/acs-templating/ www/scripts/xinha/file-selector.tcl packages/acs-templating/www/scripts/xinha/file-selector.tcl->template::form::set_error template::adp_level template::adp_level (public) template::form::set_error->template::adp_level

Testcases:
No testcase defined.

template::form::set_properties (public)

 template::form::set_properties id [ args... ]

Set properties for a form

Parameters:
id (required)
The ID of an ATS form object.

Partial Call Graph (max 5 caller/called nodes):
%3 ad_form ad_form (public) template::form::set_properties template::form::set_properties ad_form->template::form::set_properties template::adp_level template::adp_level (public) template::form::set_properties->template::adp_level template::util::get_opts template::util::get_opts (public) template::form::set_properties->template::util::get_opts

Testcases:
No testcase defined.

template::form::set_values (public)

 template::form::set_values id array_ref

Convenience procedure to set individual values of a form (useful for simple update forms). Typical usage is to query a onerow data source from database and pass the resulting array reference to set_values for setting default values in an update form. NB! This proc must always be called through "form set_values" or "template::form set_values", or it won't be able to find the variable.

Parameters:
id (required)
The form identifier
array_ref (required)
The name of a local array variable whose keys correspond to element identifiers in the form

Partial Call Graph (max 5 caller/called nodes):
%3 template::element template::element (public) template::form::set_values template::form::set_values template::form::set_values->template::element

Testcases:
No testcase defined.

template::form::size (public)

 template::form::size id
Parameters:
id (required)
The form identifier
Returns:
the number of elements in the form identified by id

Partial Call Graph (max 5 caller/called nodes):
%3 template::form::get_reference template::form::get_reference (private) template::form::size template::form::size template::form::size->template::form::get_reference

Testcases:
No testcase defined.

template::form::template (private)

 template::form::template id [ style ]

Auto-generate the template for a form

Parameters:
id (required)
The form identifier
style (optional)
The style template to use when generating the form. Form style templates must be placed in the forms subdirectory of the ATS resources directory.
Returns:
A string containing a template for the body of the form.

Partial Call Graph (max 5 caller/called nodes):
%3 template::form::generate template::form::generate (private) template::form::template template::form::template template::form::generate->template::form::template template::frm_page_handler template::frm_page_handler (public) template::frm_page_handler->template::form::template ad_conn ad_conn (public) template::form::template->ad_conn apm_package_id_from_key apm_package_id_from_key (public) template::form::template->apm_package_id_from_key parameter::get parameter::get (public) template::form::template->parameter::get template::adp_init template::adp_init (public) template::form::template->template::adp_init template::form::get_reference template::form::get_reference (private) template::form::template->template::form::get_reference

Testcases:
No testcase defined.
[ show source ]