允许用户保存正在进行的PloneFormGen表单的草稿,稍后可以恢复
项目描述
简介
pfg.drafts为Plone用户提供保存PloneFormGen表单草稿并稍后恢复保存值的支持。这消除了用户必须一次性填写长表单的需要。
该软件包为表单文件夹添加了一个新的显示选项,称为“带草稿的表单视图”。如果选择此选项,将显示一条消息,提示用户保存表单的草稿。(它还在表单底部添加了一个额外的按钮,执行相同的操作。)如果用户点击此按钮,他们将看到一个注册表单,用于创建与保存数据相关联的网站账户。注册后,表单将被保存。
当用户返回表单时,如果已登录,表单将自动用保存的值重新填充。如果未登录,用户可以点击一个链接进行登录并恢复他们的值。然后,当表单填写完成后可以正常提交。
兼容性
pfg.drafts已在Plone 4和PloneFormGen 1.6.0上进行了测试。
安装
将pfg.drafts添加到您的buildout,并通过Plone附加组件控制面板激活它。
转到安全控制面板,并启用“启用自助注册”和“允许用户选择自己的密码”。(如果后者未启用,用户将无法立即注册。您可能希望向注册表单添加captcha以防止自动化注册。)
转到您想启用草稿的表单,并使用显示菜单将其显示布局更改为“带草稿的表单视图”。
实现细节
草稿保存在自定义工具(portal_fg_drafts)中的BTree中,以表单UID和用户ID为键。
为了保存表单值,JavaScript将表单的动作更改为转到自定义@@fg_save_draft视图,该视图将值写入portal_fg_drafts。任何FileUpload对象都被特别打包成一个可序列化的FakeFieldStorage对象。
当访问表单时,自定义显示模板(pfg_draft_view.cpt)调用portal_fg_draft工具的retrieveDraft方法,以重新填充请求表单中当前表单和用户保存的任何数据。请求中的值优先于草稿中的值,因此保存的值在验证错误后不会覆盖新值。
当提交表单时,它通过自定义pfg_draft_validate.vpy脚本来处理。这将在提交的值中添加草稿中的值(如已保存但无法重新填充的文件上传)并正常处理表单。如果表单通过验证,则(如果有的话)保存的草稿将从portal_fg_drafts工具中删除。
致谢
pfg.drafts由Web Collective和David Glick创建。感谢Bryan Wilson和Fulvio Casali。
变更日志
1.1.2 (2011-01-12)
添加registerClass以声明PFGDraftStorage的添加权限,以便可以粘贴。[davisagli]
1.1.1 (2011-01-06)
修复缺少导入。[davisagli]
1.1 (2011-01-06)
通过将debug_user=[username]添加到查询字符串,使管理员能够加载另一个用户的草稿进行调试。以这种方式加载的草稿提交后,草稿不会被从草稿存储中删除。[davisagli]
1.0.1 (2011-01-06)
确保在草稿第二次保存时文件上传不会丢失。[davisagli]
确保根据经典Plone主题而不是sunburst注入main_templates的javascript。[davisagli]
1.0 (2010-12-20)
修复包含小部件javascript的错误。[davisagli]
1.0b1(2010-12-09)
首次发布
pfg.drafts-1.1.2.zip的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d413e2fd0b27aa8327f655d79f31e06928f87538bbf10d75faf010f4eda978e |
|
MD5 | 47271364ad0ed586a09ee1cd74f78bdb |
|
BLAKE2b-256 | 3e13798cde04a70de2c3828b932de0cac5dae1ca876733ce811e11339c72a1ea |