One option is to build it into the comment. The comment can be any
arbitrary HTML (which you can build with helpers), so the comment could
include the [?] icon with appropriate hover text, followed by the actual
comment. Another option is to create a custom
widget<http://web2py.com/books/default/chapter/29/07#Widgets> and
pass the help text as an argument to the widget function when specifying
the widget attribute of the field.
If you create a custom formstyle function, as you suggest, one way to pass
the extra help content is by turning the "comment" attribute into a dict,
with a "help" key and a "comment" key:
Field('myfield', comment=dict(comment='Fill in this field', help='More
detailed help...'))
The formstyle function could then pull the comment and help content from
that dict to construct the field in the form.
You can also do db.mytable.myfield.help = 'More detailed help...'.
Anthony
On Wednesday, December 12, 2012 11:43:29 PM UTC-5, Joe Barnhart wrote:
>
> I am working on a very form-heavy website that uses not only labels,
> controls, and comments, it needs extended mouseover help as well. The
> users comprises people who use the site infrequently, so I need to provide
> as much explanation for each field as I possibly can. The nice thing about
> the mouseover help is that I can create a small [?] icon somewhere on each
> field line which pops up paragraphs of help text if needed. The question
> is -- where to store it?
>
> Looking at Field, it seems like the ideal case would be to add an instance
> var "help" which could be initialized to "None". When needed, it could
> store some kind of "rich" string (which can have some simple formatting
> like bold face or italics for emphasis). While setting it in the Field is
> convenient, looking further at how the SQLFORM is generated from the Fields
> shows a real problem...
>
> The SQLFORM creates a list of 4-tuples which are passed to the "formstyle"
> factory that makes the HTML version of the form. There's no way I can add
> a 5th element to the tuple without breaking web2py. If we someday
> re-architect the web2py SQLFORM class, we might consider passing in a list
> of the Field objects directly to the formstyle factory so we never face
> this limit again. But for now I don't see any way to overcome this.
>
> All I can come up with is to generate the HTML tree for the form (in
> Python) and then use the access methods to manipulate it to add the help
> elements I want. It will be kind of messy and complicated but I can
> probably get it working. Or maybe I should do my own "formstyle" function
> and figure out a way to pass it a list of "help" text fields for the
> additional info.
>
> If anyone else has done something similar I'd love to hear about it.
>
> Joe B.
>
>
--