* @copyright (c) 2006 - 2016 Stefan Gabos * @package Controls */ class Zebra_Form_Note extends Zebra_Form_Control { /** * Adds a "note" to the form, attached to a control. * * Do not instantiate this class directly! Use the {@link Zebra_Form::add() add()} method instead! * * * // create a new form * $form = new Zebra_Form('my_form'); * * // add a text control to the form * $obj = $form->add('text', 'my_text'); * * // attach a note to the textbox control * $form->add('note', 'note_my_text', 'my_text', 'Enter some text in the field above'); * * // don't forget to always call this method before rendering the form * if ($form->validate()) { * // put code here * } * * // output the form using an automatically generated template * $form->render(); * * * @param string $id Unique name to identify the control in the form. * * This is the name of the variable to be used in the template file, containing * the generated HTML for the control. * * * // in a template file, in order to print the generated HTML * // for a control named "my_note", one would use: * echo $my_note; * * * @param string $attach_to The id attribute of the control to attach the note to. * * Notice that this must be the "id" attribute of the control you are attaching * the label to, and not the "name" attribute! * * This is important as while most of the controls have their id attribute * set to the same value as their name attribute, for {@link Zebra_Form_Checkbox checkboxes}, * {@link Zebra_Form_Select selects} and {@link Zebra_Form_Radio radio buttons} this * is different. * * Exception to the rule: * * Just like in the case of {@link Zebra_Form_Label labels}, if you want a master * note, a note that is attached to a group of checkboxes/radio buttons rather than * individual controls, this attribute must instead refer to the name of the * controls (which, for groups of checkboxes/radio buttons, is one and the same). * * @param string $caption Content of the note (can be both plain text and/or HTML) * * @param array $attributes (Optional) An array of attributes valid for * {@link http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.4 div} * elements (style, etc) * * Must be specified as an associative array, in the form of attribute => value. * * // setting the "style" attribute * $obj = $form->add( * 'note', * 'note_my_text', * 'my_text', * array( * 'style' => 'width:250px' * ) * ); * * * See {@link Zebra_Form_Control::set_attributes() set_attributes()} on how to set * attributes, other than through the constructor. * * The following attributes are automatically set when the control is created and * should not be altered manually:
* class * * @return void */ function __construct($id, $attach_to, $caption, $attributes = '') { // call the constructor of the parent class parent::__construct(); // set the private attributes of this control // these attributes are private for this control and are for internal use only $this->private_attributes = array( 'caption', 'disable_xss_filters', 'locked', 'for', 'name', 'type', ); // set the default attributes for the HTML control $this->set_attributes( array( 'class' => 'note', 'caption' => $caption, 'for' => $attach_to, 'id' => $id, 'name' => $id, 'type' => 'note', ) ); // if "class" is amongst user specified attributes if (is_array($attributes) && isset($attributes['class'])) { // we need to set the "class" attribute like this, so it doesn't overwrite previous values $this->set_attributes(array('class' => $attributes['class']), false); // make sure we don't set it again below unset($attributes['class']); } // sets user specified attributes for the control $this->set_attributes($attributes); } /** * Generates the control's HTML code. * * This method is automatically called by the {@link Zebra_Form::render() render()} method! * * @return string The control's HTML code */ function toHTML() { $attributes = $this->get_attributes('caption'); return '
_render_attributes() . '>' . $attributes['caption'] . '
'; } } ?>