This is what the plain TextWidget looks now in Python: class TextWidget(FormWidget): _class = 'text' @classmethod def widget(cls, field, value, **attributes): default = dict(value=value) attr = cls._attributes(field, default, **attributes) return TEXTAREA(**attr)
This is the corresponding JS one optimized for bootstrap 3: jform.widgets['text'] = function(field) { return jform.tag('textarea',{'name':field.name,'class':'form-control'})(field.value); } Did you notice how simpler it is? I think most Python programmers will prefer the latter to the former. Also notice I have already ported the web2py helpers to JS. jfom.tag('textarea', attributes)(field.value) is the same as web2py's TEXTAREA(field.value,**attributes) Massimo On Monday, 8 September 2014 16:51:54 UTC-5, Andrew W wrote: > > Sounds like I need to improve my JS skills. > A Plugin or a Module ? which is better for this type of thing ? > > > > On Friday, September 5, 2014 3:56:23 PM UTC+10, Massimo Di Pierro wrote: >> >> Please find attached a welcome4.zip with contains the following files: >> >> controllers/default.py >> views/layout.html >> vides/default/index.html >> modules/jform.py >> static/js/jform.js >> static/js/jform-bootstrap2.js >> static/js/jform-bootstrap3.js >> >> My proposal is the following: >> 1) deprecate SQLFORM (but keep it for backward compatibility) >> 2) replace >> >> form = SQLFORM(table).process() >> ... >> {{=form}} >> >> with >> >> form = JForm(table) >> ... >> {{=form}} >> >> what is the difference? SQLFORM generates html. JForm generates JSON >> metadata which is then converted into the form client-side by the js in >> jform.js. >> why? >> - it is much faster because all rendering is done client-side >> - it can "optionally" submit the form via Ajax without having to change >> your code. >> - it is much easier to style and create widgets for different css >> frameworks. >> For example include the right one: >> static/js/jform-bootstrap2.js >> static/js/jform-bootstrap3.js (I only provide a layout for bs2 and not >> bs3) >> - it is much more powerful because you can customize widgets in JS. >> >> We could also add a JTable, a JMenu and a JLogin and keep all the styling >> info in JS files as opposed to Python files. >> This would make web2py leaner and cleaner. >> >> Thoughts? >> >> Massimo >> >> >> >> >> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.