A signup sheet implementation for Plone
SignupSheet is an add-on product that allows site managers to create custom registration forms for events, workshops, fundraisers and other events that require online registration. Each SignupSheet defines the fields that are used for each Registrant object they contain, through the ATSchemaEditorNG product. The Registrant object is what the end user fills out and submits. The workflow places each submitted Registrant in a private state once it is submitted so that it can be reviewed and approved.
The SignupSheet has these additional features:
- Registrant fields can be exported to CSV
- A waiting list and event size can be set, end users are emailed a message stating whether they are pending approval or on the waiting list.
- The signup sheet view indicates whether the SignupSheet is ‘full’, ‘open’ or whether user will be put on a waiting list. This is calculated using the event size and waiting list settings.
- End user is directed to a customizable thank you page.
The key motivation behind this product is to provides a way for site managers to setup registration forms that do more than email the fields to an address. Having the fields be configurable is essential, since many groups have specific requirements for the data they are collecting for their events.
If you plan to give to authenticated users a way to subscribe to events, SignupSheet try to fill automatically some registration data from the user’s data.
Know that if you keep all default fields (“First name”, “Last name” and “E-mail”), they are filled automatically taking the same fields from the user.
As Plone commonly use a single “Fullname” info, while SignupSheet split it to first and last name, the procedure try to split your fullname in two.
If your fullname policy is to keep last, then first name in that order, you can change the same order modifiying the first_last_name_order property in the product’s ZMI properties sheet.
SignupSheet is released under the GNU General Public Licence, version 2. Please see http://gnu.org for more details.
- Install in the usual way, using the QuickInstaller
- Requires ATSchemaEditorNG 0.6 or greater
- Requires TemplateFields and TALESField
- Tested with Plone 3.3.5 and Archetypes 1.6.15 and ATSchemaEditorNG 0.6
- This product would not be possible without the Poi and RichDocument products by Martin Aspeli. They provided useful example code, specifically around the workflow trigger pattern.
- In addition Upfront Contacts by Roche Compaan for the CSV export code.
- In addition thanks to Simon Pamies for assisting me with ATSchemaEditorNG, and Andreas Jung for providing useful code improvements.
- Naro for the Plone 3 compatibility work
- Andres Jung for eggifying SignupSheet
Known Issues and Potential Improvements
- Signupsheet needs more explanatory text. Schema editor has been simplified but needs better explanatory text.
- It is possible to prematurely fill up registration by malicious user. Subscriptions are no more saved (and a portal status message is displayed), but confirmation e-mail are sent.
- At release time, the last ATSchemaEditorNG available version was the 0.6.0. Using this version you will have some problems with signup sheet validation (see ticket #26 for the fix)
- If you are using this behind Varnish or other reverse-proxy, you can experience privacy problems. Please configure you environment to not cache URL with thank_you_message, or enable the traverse_to_thankyou flag in the signupsheet_properties sheet.
- removed package initialize that duplicate the product in portal_quickinstaller [keul]
- fixed a critical bug that block users subscription when not using queue size [keul]
- more SMTP server fault tolerance when notifying the subscriber [keul]
- fixed bug that prevent anon user to see closed signup sheet if date infos are used (close #51) [keul]
- now default registrant fields can be translated (also italian translation provided) [keul]
- try to fill registration data for authenticated users automatically (close #53) [keul]
- now the “edit registrant form” tab appear only if the user has the proper “ATSE: Manage schema” permission [keul]
- aligned security with latest Plone 3 (and Plone 4.1) roles (close #39) [keul]
- updated workflows: removed some useless permissions customization and aligned with new-generation Plone roles [keul]
- access to views for seeing and exporting registrants are now protected by the new SignupSheet: View Registrants [keul]
- do not fail when exporting registrants where some infos are missing, but put there and empty value [keul]
- some more label and name translable [keul]
- Registrant configured to be not searchable and hidden from navigation [keul]
- added a new option (“Display seats left”) for display the number of seats left in the sheet [keul]
- contents now implements some marker interfaces [keul]
- is no more possible for malicious users to subscribe when registration is full [keul]
- found that version 0.5.2 was not installable if property sheet was not already there [keul]
- added a ZPT omit-tag to prevent the display of a DIV in improper places [keul]
- do not fail client side if MailHost is bad configured, but only log the error [keul]
- added a new signupsheet_properties with a flag for bypass Varnish cache, fixing a bad security/privacy problem, that can display and old “Thank you” messa page [keul]
- removed “Properties” tab from contents, not more used on Plone 3+ [keul]
- default values for many fields are now translable [keul]
- fix to italian translations [keul]
- added translations for the ugly “Thank_You” fieldset [keul]
- final release
- fix tests to be compatible with ATSENG 0.6 [aaronv]
- added install of ATSENG to setup_handler [aaronv]
- uses ATSENG 0.6
- use ParentOrToolManagedSchema for registrant to work around bug when logged-in user edits Registrants
- re-applyed the fix added in version 0.4.2 and someway no more available [keul]
- added import step for TinyMCE [keul]
- removed all available views but Base View [keul]
- confirm icon in view_registrants template was broken [keul]
- setuphandler is only run when own product is installed. [mlundwall]
- RegistrationDeadline and EarlyBirdDate now displayed using toLocalizedTime [keul]
- the subscription form now use the POST method [keul]
- minor fixes to italian translation [fdelia]
- update Italian translations (fdelia)
- added fix for XHTML compliance for signupsheet_view
- updated Italian translations
- Espen Moe-Nilssen supplied Norwegian translations
- Luca Fabbri supplied Italian translations
- fix for http://plone.org/products/signupsheet/issues/43
- changed permission for using modifying the schema to ManagePortalContent (ManagePortal is too restrictive)
- fixed bug for anon permissions on registrationDeadline and earlyBirdDate (aaronv)
- fixed tests (aaronv)
- added additional early-bird workflow (signupsheet_extended_workflow) (ajung)
- added additional registrant workflow with confirmation email up confirmation time instead of subscription time (signupsheet_registrant_extended_workflow) (ajung)
- fixed dependencies
- fixed issue with Anon registrant and metadata updating
- added metadata.xml for GS 1.5 support
- computeFullname now more robust
- tested with Plone 3.1.5 and ATSchemaEditorNG 0.5.0
- updates to make Plone 3.0.6 compatible.
- added tests for email and posting workflow
- bulk of Plone 3 compatibility work done by Radmin Novotny
Andreas Jung and Radim Novotny contributed significantly to this release.
added Portuguese Brasilian translation. Thanks Vitor Reis.
added ‘view registrants’ that displays current registrants status and allows for confirming and editing registrants
added i18n support for templates
added German translation
updated tests to pass
Because thank_you_page and email_response fields were changed from TextField to ZPTField it is necessary to manually run migration code from Extensions/migrate method fixZPTFields. This method will read old values from these two fields and store the same value in new format. WARNING: if you don’t run migration you will get AttributeError: read when accessing old SignupSheet objects
It is possible to generate HTML emails
workflow script sendInitialEmail is called before the transition, because anonymous can access registrant object only in ‘new’ state. If script will be called after transition, Registrant.sendNotificationMail method won’t have access to registrant object. Access is required due to rendering templates from ZPTField.
removed signupsheet_email_* templates
Introduced TALESField and TemplateFields dependecy. SignupSheet uses these two fields for scripting thank_you_page, confirmation and notification email (subject and message). Syntax is described in field help text:
context = SignupSheet options/registrant = current Registrant object
added notifyEmail field to signupsheet schema. It allows to send notification about new registrant to some email address.
removed registration of SignupSheet.css from portal_css
it is possible to use options/computed_text in email template now
use getSiteEncoding if available
additional i18n work (signupsheet.py - schema)
improved i18n catalogs, added Czech translation
do not depend on Kupu in install code
replaced dtml templates with ZPT with i18n
use base_view for SignupSheet and simplified signupsheet_view template
- fixed bug that caused editing existing Registrant objects to fail
- added import for ATSENG so test run properly
- fixed incorrect security declaration for registrantFieldNames
- Installs ATSENG dependency
- Fixed bug for computing status, added tests against bug
- Fixed manager can override initial post state
- Registrant edit page displays title of SignupSheet
- Fixed Thank you message renders proper HTML
- Fixed email response so that it is text only
- tracking changes