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.
>
>

-- 



Reply via email to