On 01/02/07, John Napiorkowski <[EMAIL PROTECTED]> wrote:
Carl, This looks really nice, esp. some of the new stuff you mentioned such as being able to easily initialize from a config file. One this that gives me a lot of trouble with H::W is that I found it difficult/unclear to make custom element classes to make my own custom compound elements, or to make simple ready to use elements like a drop field with all the USA States already prepopulated. Is making this easier/clearer a design goal for your framework?
Yes, but whether it works for you, only you'll be able to answer. Even in HTML::Widget, it wouldn't be hard to create a sub-class of Select, which does something like this in the constructor: my %states = Geography::USStates::getStates(); $self->options( map { $_ => $states{$_} } sort keys %states ); Name it as something like HTML::Widget::Element::SelectStates, and it couldn't be simpler to use. (It would be even simpler if Geography::USStates returned an /ordered/ list of states.)
Also what are your plans for constraints and error messages. Another thing I am wondering about are you plans for serializing the elements. H::W is very tightly intergrated with each element, so it's not easy to create different renderings of a element. At least I found so. What I am driving at is if the rendering system was seperated it could be possible to render a form into different styles, like html forms or xforms. But maybe this isn't a goal for you. Just thinking.
I don't really want to go into too much detail, as I still don't have anything public I can point to, but it is possible to use accessors to change which rendering backend is used, either for the whole form, or just for a single element. There's an extra step in the process now (but which can be ignored if you want). $form->result() creates a result object, which can be used / modified in your templates. $result->xml() (which stringification does automatically) creates a render object, which by default stringifies to $render->xml(). This applies to both the form and all elements. HTML::Element isn't used at all. Everything's now generated in TT templates. The simplest way of customising a single element would be to change which template file it uses. To change the entire layout of an element, set $e->filename(). To change how the label's rendered, set $e->label_filename(). To change just the field's input tag, set $e->field_filename(). ...you get the idea :) _______________________________________________ Html-widget mailing list Html-widget@lists.rawmode.org http://lists.rawmode.org/cgi-bin/mailman/listinfo/html-widget