David Glick – Plone developer
Over the past couple days Steve McMahon has been with us at the ONE/Northwest Seattle office, and we've been working on a number of improvements to PloneFormGen. With the involvement of several other Seattle-based Plone developers who often join us for open source work on Friday afternoons anyway, we had a small army working on PFG.
Faced with a long list of good ideas, we decided to focus on the relatively easy changes. We'll try to get these through beta to a final release fairly quickly so that we can move on to more interesting challenges like a revamped form editing UI, multi-page forms, and no longer storing fields as Archetypes objects.
- Andrew Burkhalter finished converting the installation over to GenericSetup (work begun by Jesse Snyder at the sprint in DC)
- I merged a branch I've been working on which adds support for rendering PFG forms from another template, viewlet, or portlet.
- Steve McMahon cleaned out some compatibility code for Plone 2.1 (which will no longer be supported except in the 1.2.x maintenance series)
- I created a proof-of-concept of a recaptcha integration which we plan to ship with PFG. This needs more work though.
- Steve added an option to the mailer to select which fields will be included in the e-mail, as well as an option to exclude empty fields.
- Steve removed the restriction on which fields can be used as the mailer recipient.
- Jon Baldivieso added a link spam validator to ensure that a field doesn't contain links.
- Steve switched the default view of form fields to the edit view, to save a few clicks when building forms.
- Steve added CSS ids to the rich label field.
- I fixed up the test infrastructure to work with roadrunner, and added some basic integration tests.
- Andrew made progress on his branch which will add a form import/export feature.
- Paul Bugni added an e-mail validator that support multiple e-mail addresses.
- Alex Tokar and Fulvio Casali almost finished implementing an option to make a field "server side" only, which is like a hidden field that doesn't actually render for the client (to avoid the chance of hacking hidden fields).
- Steve added a BCC field override setting.
- Jesse Snyder fixed a bug where copied-and-pasted action adapters were not automatically activated.
- Michael Dunlap removed the isUrl validator from the form action override, so that it's possible to use relative URLs.
- Elliot Cohen joined the fun even though he's new to Plone, and reviewed PFG documentation.
- I added a 'force SSL' option for form folders which will redirect to an https:// version of the form.
Thanks to everyone who participated, including those who responded to my previous request for voting on features!
As part of planning for this sprint and the future of PloneFormGen development, we'd like to get a sense of which outstanding feature requests are most desired by the community. So if you use PloneFormGen, please take a minute to go to http://ploneformgen.uservoice.com and vote for the improvements that would most ease your life when working with PloneFormGen. (The list is as of this writing heavily influenced by my own sense of what's important -- please feel free to add new items as well.)
Of course, our primary interest during the mini-sprint will be in scratching our own itches, but this may help us choose which of a number of minor itches to scratch if we have time, and I imagine the rating of priorities will come in handy in the future. (This is also a bit of a case study to see how well +/- voting works for prioritizing feature requests, to see if it's something we should also consider doing for Plone itself.)
</noscript>tag in order to designate the end of a block that may be used in experiments. Unfortunately, if you try to insert this in a Zope page template you'll see something like this:
Compilation failed zope.tal.htmltalparser.NestingError: No tags are open to match </noscript>, at line 2, column 1
You can work around this using the following idiom:
<tal:block tal:content="structure string:&lt;/noscript&gt;"/>
This bypasses TAL compilation by parsing the
</noscript> as a string, then inserts it into the template as HTML structure. The angle brackets are written as HTML entities so that the template has a chance of passing XML validation.
Credit to Darryl Dixon via #plone on IRC, and my colleague Jon Baldivieso for the HTML entities suggestion. Thanks!