Re: Patch for <label> in HTML_QuickForm
| From: | Justin Patrin | Date: | Sat, 12 Mar 2005 03:34:23 +0000 |
| Subject: | Re: Patch for <label> in HTML_QuickForm | ||
| References: | 1 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-36664@lists.php.net to get a copy of this message | ||
On Fri, 11 Mar 2005 16:55:14 -0800, Turadg Aleahmad <turadg@berkeley.edu> wrote:
> I've begun to use HTML_QuickForm and it's very handy. I'm just using
> the Default renderer at this point.
>
> I noticed the omission of the <label> tag around the {label} string.
> Specifying <label> lets the browser know that the string is a label and
> lets it do some extra stuff. For example, recent browsers will focus on
> the input element when you click on its label.
>
> Here are some patches for HTML_QuickForm to include the <label> tag.
> They're against version 3.2.4pl1.
>
> This first one makes sure that every element has a unique id in the DOM.
> This is in the constructor of HTML_QuickForm_element so the same call
> in the HTML_QuickForm_radio and HTML_QuickForm_checkbox constructors can
> be removed.
>
> $ diff element.php my-element.php
> 91a92
> > $this->_generateId();
>
> This other part updates the Default renderer. It makes the template
> include the <label for="elementid"> wrapper around the element label.
> It also adds code to renderElement() to replace the {id} in the template
> with the element's id attribute.
>
> $ diff Default.php my-Default.php
> 54c54
> < "\n\t<tr>\n\t\t<td align=\"right\"
> valign=\"top\"><!-- BEGIN
> required --><span style=\"color: #ff0000\">*</span><!-- END
> required
> --><b>{label}</b></td>\n\t\t<td valign=\"top\"
> align=\"left\"><!-- BEGIN
> error --><span style=\"color: #ff0000\">{error}</span><br
> /><!-- END
> error -->\t{element}</td>\n\t</tr>";
> ---
> > "\n\t<tr>\n\t\t<td align=\"right\"
> > valign=\"top\"><!-- BEGIN
> required --><span style=\"color: #ff0000\">*</span><!-- END
> required
> --><b><label
> for=\"{id}\">{label}</label></b></td>\n\t\t<td
> valign=\"top\" align=\"left\"><!-- BEGIN error --><span
> style=\"color:
> #ff0000\">{error}</span><br /><!-- END error
> -->\t{element}</td>\n\t</tr>";
> 281a282
> > $html = str_replace('{id}',
> > $element->getAttribute('id'),
> $html);
> 285a287
> > $html = str_replace('{id}',
> > $element->getAttribute('id'),
> $html);
>
> I've tested this in my use and it works as advertised. I don't use
> QuickForm very extensively so it may break some cases that I don't have
> in my code. I trust the package maintainers will know if this might
> break anything.
>
> Thanks for QuickForm. I hope you can use these patches in the main
> distribution.
>
This all seems great to me. I believe it already has labels for
checkboxes, have you checked to see if this conflicts with it?
--
Justin Patrin