[UP] The UI language |
The element ui:richbutton This element displays an HTML4-style richly rendered button. The generated HTML code consists of an BUTTON element with TYPE=SUBMIT, whose name attribute is set to a special identifier which is recognized by the system when the form is submitted. When the user clicks on the button, a Button event is generated (unless the index attribute is specified; see below); the handle callback method of the dialog object can check whether the current event is the event associated with this button, and the method can execute code depending on the result of this check. For a description of possible events see Events. The way events are generated is very similar to the ui:button element. Nevertheless, here is an example: <ui:dialog name="sample" start-page="p1"> <ui:page name="p1"> <html> <body> <h1>Button test</h1> This is a <ui:richbutton name="b"><i>Button</i></ui:richbutton> </body> </html> </ui:page> </ui:dialog>Here, the button event has the name "b". In order to check whether this event occured in the handle method, the following piece of code is recommended. O'Caml: method handle = match self # event with Button "b" -> ... (* Do whatever you want to do *) | ... (* other cases *)- Perl: sub handle { my ($self) = @_; my ($e, $name) = $self->event; if ($e eq 'BUTTON' && $name eq 'b') { ... # Do whatever you want to do } elsif ... # other cases ; return undef; }If the ui:richbutton element has the index attribute, the button is identified by the pair (name,index). When the user clicks on such an indexed button, an Indexed_button event is generated. The index value can be used to distinguish between several instances of buttons of the same type. Declaration Level: Generative element <!ELEMENT ui:richbutton ANY> <!ATTLIST ui:richbutton name NMTOKEN #REQUIRED index CDATA #IMPLIED goto NMTOKEN #IMPLIED cgi (auto|keep) "auto" >Additionally, ui:richbutton must only occur inside ui:form. Attributes The following attributes have a special meaning:
If there are any other attributes, these are added to the generated BUTTON HTML element. This means that especially the onclick attribute may be specified. Sub elements The ui:richbutton elements may contain any HTML code, or any UI language code that expands to HTML code. The inner elements are rendered as the surface of the button. Generated HTML code The ui:richbutton element generates HTML code which roughly looks as follows: <button type="SUBMIT" name="..." value="..."> inner elements </button> Known Problems As the underlying BUTTON element is a recent addition to HTML, not every browser supports it (well). Problems include:
Nevertheless, many browsers support this element very well (e.g. Mozilla, Opera, Lynx), and it is only a matter of time until this element can be recommended for web sites. Until then, I would not use it unless there is some strategy how to avoid the problems. For example, server-side browser sniffing can be used to detect whether the element is supported, and if so, a better-looking HTML page is generated by using ui:richbutton instead of ui:button. |