Plone的注册表单实现
项目描述
注册表单
SignupSheet是一款附加产品,允许网站管理员为活动、研讨会、筹款活动和其他需要在线注册的事件创建自定义注册表单。每个SignupSheet通过ATSchemaEditorNG产品定义了包含的每个注册者对象所使用的字段。注册者对象是最终用户填写并提交的内容。工作流程将每个已提交的注册者置于私有状态,以便进行审查和批准。
SignupSheet还具有以下附加功能:
注册者字段可以导出为CSV格式。
可以设置等待名单和活动规模,将消息通过电子邮件发送给最终用户,告知他们是否处于待批准状态或等待名单中。
注册表单视图指示SignupSheet是“已满”、“开放”还是将用户置于等待名单中。这是通过事件规模和等待名单设置计算的。
将最终用户导向一个可定制的感谢页面。
该产品的关键动机是为网站管理员提供一种设置注册表单的方式,而不仅仅是将字段通过电子邮件发送到地址。字段的可配置性是必不可少的,因为许多团体对其活动收集的数据有特定的要求。
认证用户
如果您计划为认证用户提供订阅活动的方式,SignupSheet会尝试自动从用户数据中填写一些注册信息。
请注意,如果您保留所有默认字段(“名”、“姓”和“电子邮件”),它们将自动填充,使用相同的字段从用户那里获取。
由于Plone通常使用单个“全名”信息,而SignupSheet将其拆分为名和姓,该过程尝试将您的全名拆分为两部分。
如果您的全名策略是按顺序保留姓和名,则可以通过修改产品ZMI属性表中的first_last_name_order属性来更改相同的顺序。
许可
SignupSheet在GNU通用公共许可证(版本2)下发布。有关详细信息,请参阅http://gnu.org。
安装
使用QuickInstaller按常规方式安装
需要ATSchemaEditorNG 0.6或更高版本
需要TemplateFields和TALESField
已与Plone 3.3.5、Archetypes 1.6.15和ATSchemaEditorNG 0.6进行测试
致谢
如果没有Martin Aspeli的Poi和RichDocument产品,本产品将无法实现。他们提供了有用的示例代码,特别是在工作流触发模式方面。
此外,Roche Compaan的Upfront Contacts为CSV导出代码提供了支持。
此外,感谢Simon Pamies在ATSchemaEditorNG方面的协助,以及Andreas Jung提供有用的代码改进。
Naro为Plone 3兼容性工作做出了贡献
Andres Jung将SignupSheet转换为egg格式
PloneGov
在PloneGov倡议内部赞助了该产品。
已知问题及潜在改进
Signupsheet需要更多的解释性文本。模式编辑器已简化,但需要更好的解释性文本。
恶意用户可能提前填满注册。订阅不再保存(并显示门户状态消息),但会发送确认电子邮件。
在发布时,可用的最后一个ATSchemaEditorNG版本是0.6.0。使用此版本您将遇到一些注册表单验证问题(请参阅#26中的修复)
如果您在使用 Varnish 或其他反向代理之后,可能会遇到隐私问题。请配置您的工作环境,不要缓存包含 thank_you_message 的 URL,或者在 signupsheet_properties 表单中启用 traverse_to_thankyou 标志。
变更记录
0.6.1 (未发布)
移除了重复产品在 portal_quickinstaller 中的初始化包 [keul]
修复了当未使用队列大小时的一个关键错误,该错误阻止用户订阅 [keul]
0.6.0 (2011-10-25)
在通知订阅者时增加了对 SMTP 服务器故障的容错性 [keul]
修复了一个错误,防止匿名用户在日期信息使用时查看已关闭的注册表单(关闭 #51) [keul]
现在默认注册者字段可以进行翻译(也提供了意大利语翻译) [keul]
尝试自动填写认证用户的注册数据(关闭 #53) [keul]
现在“编辑注册者表单”选项卡仅在用户具有适当的“ATSE: 管理模式”权限时才出现 [keul]
与最新的 Plone 3(和 Plone 4.1)角色保持安全一致(关闭 #39) [keul]
更新了工作流程:移除了一些无用的权限自定义,并与新一代 Plone 角色保持一致 [keul]
现在通过新的 SignupSheet: View Registrants 保护查看和导出注册者的视图访问权限 [keul]
当导出注册者且某些信息缺失时,不会失败,但将空值放在那里 [keul]
一些更多的可翻译标签和名称 [keul]
注册者配置为不可搜索且从导航中隐藏 [keul]
添加了一个新选项(“显示剩余座位数”)以显示表单中的剩余座位数 [keul]
内容现在实现了某些标记接口 [keul]
恶意用户在注册已满时不再可能订阅 [keul]
0.5.3 (2011-09-01)
发现如果属性表单尚未存在,则 0.5.2 版本无法安装 [keul]
0.5.2 (2011-05-06)
添加了一个 ZPT omit-tag 以防止在不适当的地点显示 DIV [keul]
如果 MailHost 配置不当,则客户端不会失败,但仅记录错误 [keul]
添加了一个新的 signupsheet_properties,其中包含一个绕过 Varnish 缓存的标志,修复了一个可能导致显示旧的“感谢”页面的安全问题/隐私问题 [keul]
0.5.1 (2011-01-18)
从内容中移除了“属性”选项卡,在 Plone 3+ 中不再使用 [keul]
许多字段的默认值现在可翻译 [keul]
修复了意大利语翻译 [keul]
添加了对丑陋的“Thank_You”字段集的翻译 [keul]
0.5 (2010/09/31)
最终发布
0.5b1 (2010/04/24)
修复测试以与 ATSENG 0.6 兼容 [aaronv]
将 ATSENG 安装到 setup_handler [aaronv]
使用 ATSENG 0.6
使用 ParentOrToolManagedSchema 以便在登录用户编辑注册者时绕过错误 [keul]
重新应用了 0.4.2 版本中添加的修复,但某些修复不再可用 [keul]
添加了 TinyMCE 的导入步骤 [keul]
移除了所有可用的视图,除了基本视图 [keul]
view_registrants 模板中的确认图标损坏 [keul]
0.4.4 (2010/04/19)
setuphandler 仅在安装了本产品时运行 [mlundwall]
RegistrationDeadline 和 EarlyBirdDate 现在使用 toLocalizedTime 显示 [keul]
订阅表单现在使用 POST 方法 [keul]
对意大利语翻译进行了小的修复 [fdelia]
0.4.3 (2010/01/22)
更新意大利语翻译 [fdelia]
为 signupsheet_view 添加了符合 XHTML 的修复 [keul]
0.4.2.2 (2009/07/12)
更新意大利语翻译
Espen Moe-Nilssen 提供了挪威语翻译
Luca Fabbri 提供了意大利语翻译
0.4.2 (2009/04/14)
将修改模式的权限更改为 ManagePortalContent(ManagePortal 太过于限制性) [keul]
0.4.1 (2009/03/39)
修复了注册截止日期和早鸟日期上的匿名权限问题(aaronv)
修复了测试(aaronv)
0.4.0 (2009/03/11)
添加了额外的早鸟工作流程(signupsheet_extended_workflow)(ajung)
添加了带有确认邮件和确认时间的额外注册者工作流程(signupsheet_registrant_extended_workflow)(ajung)
0.3.2 (2009/03/09)
修复了依赖问题
0.3.1 (2009/03/09)
修复了匿名注册者和元数据更新问题
添加了 metadata.xml 以支持 GS 1.5
computeFullname 现在更健壮
在 Plone 3.1.5 和 ATSchemaEditorNG 0.5.0 上进行了测试
0.3.0
更新以使 Plone 3.0.6 兼容。
添加了电子邮件和发布工作流程的测试
Radmin Novotny 完成了大部分 Plone 3 兼容工作
0.2.0 测试版
Andreas Jung 和 Radim Novotny 对此版本做出了重大贡献。
添加了葡萄牙巴西翻译。感谢 Vitor Reis。
添加了“查看注册者”,显示当前注册者状态,并允许确认和编辑注册者
为模板添加了 i18n 支持
添加了德语翻译
更新测试以通过
更新 i18n
由于 thank_you_page 和 email_response 字段已从 TextField 更改为 ZPTField,因此需要手动运行 Extensions/migrate 方法 fixZPTFields。该方法将读取这两个字段的旧值并将相同值存储在新格式中。警告:如果您不运行迁移,则在访问旧的 SignupSheet 对象时将获得 AttributeError: read
可以生成 HTML 邮件
工作流脚本 sendInitialEmail 在转换之前被调用 之前,因为匿名用户只能在“新”状态下访问注册者对象。如果脚本在转换之后被调用,则 Registrant.sendNotificationMail 方法将无法访问注册者对象。由于需要从 ZPTField 渲染模板,因此需要访问。
删除了 signupsheet_email_* 模板
引入了 TALESField 和 TemplateFields 依赖。SignupSheet 使用这两个字段来编写 thank_you_page、确认和通知电子邮件(主题和消息)的脚本。语法在字段帮助文本中描述
context = SignupSheet options/registrant = current Registrant object
为 signupsheet 模式添加了 notifyEmail 字段。它允许将有关新注册者的通知发送到某些电子邮件地址。
从 portal_css 中删除了 SignupSheet.css 的注册
现在可以在电子邮件模板中使用 options/computed_text 选项
如果可用,请使用 getSiteEncoding
对 signupsheet.py - schema 进行了额外的 i18n 工作
改进了 i18n 目录,并添加了捷克语翻译
安装代码中不再依赖于 Kupu
用带有 i18n 的 ZPT 替换了 dtml 模板,并简化了 signupsheet_view 模板
为 SignupSheet 使用 base_view,并简化了 signupsheet_view 模板
0.1.1
修复了导致编辑现有注册者对象失败的错误
添加了对 ATSENG 的导入,以便测试运行正常
修复了 registrantFieldNames 的不正确安全声明
0.1
安装了 ATSENG 依赖项
修复了计算状态时的错误,并针对该错误添加了测试
经理可以覆盖初始发布状态
注册者编辑页面显示 SignupSheet 的标题
修复了使感谢信息正确渲染 HTML 的错误
修复了电子邮件响应,使其仅包含文本
0.1-Beta-2
跟踪更改
项目详情
Products.SignupSheet-0.6.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 58f3577ac8ecb9a3a7f7a4dad5811ecff51f4d5a6233547a799f45d210bcc4fb |
|
MD5 | 9b0af18390ce2bfce6627ef3bd029186 |
|
BLAKE2b-256 | 789668fbab3a00e0a9a807af13db14adc859ae247b776193506fc8a80997c130 |