$Id: README,v 1.1 2007-05-16 12:41:15 mike Exp $ We support seven kinds of form element here. "error" and "separator" are so trivial they are implemented in their own little components, but the six proper controls (textbox, password, textarea, select, checkbox and upload) share a lot of logic, so they all use the generic _control.mc and have it call back to the little raw component that's nested inside. Calling the controls (textbox.mc and friends): * $name is MANDATORY, the name of the control (and therefore of the query parameter that it generates) * $obj is a reference to an object (e.g. a Property::DB::User) that the form is associated with, or the name of a class when the form is being used to create a new object. This is OPTIONAL. But -- * $label is the text to be emitted alongside the control to guide the user. If it is not specified, then the object or class passed as $obj is asked what label to use for the given $name; so EITHER $obj OR $label must be specified. * $mandatory is an OPTIONAL boolean indicating whether or not the field is mandatory, so that an error message is emitted if it is left empty when the form is submitted. If this is undefined, then $obj is consulted; if $obj is undefined, then $mandatory defaults to being false. * $submitted is a MANDATORY boolean, saying whether the form that this control is part of has been submitted (and so is being re-presented to the user to gather extra data) as opposed to being displayed for the first time. This determines whether or not "This field is mandatory" messages are emitted. * $prefix and $suffix are OPTIONAL chunks of text to be emitted before and after the control. * $caption is an OPTIONAL chunk of text to be displayed unobtrusively in connection with the control, e.g. to provide help in filling it in.