跳转到主要内容

允许用户保存正在进行的PloneFormGen表单的草稿,稍后可以恢复

项目描述

简介

pfg.drafts为Plone用户提供保存PloneFormGen表单草稿并稍后恢复保存值的支持。这消除了用户必须一次性填写长表单的需要。

该软件包为表单文件夹添加了一个新的显示选项,称为“带草稿的表单视图”。如果选择此选项,将显示一条消息,提示用户保存表单的草稿。(它还在表单底部添加了一个额外的按钮,执行相同的操作。)如果用户点击此按钮,他们将看到一个注册表单,用于创建与保存数据相关联的网站账户。注册后,表单将被保存。

当用户返回表单时,如果已登录,表单将自动用保存的值重新填充。如果未登录,用户可以点击一个链接进行登录并恢复他们的值。然后,当表单填写完成后可以正常提交。

兼容性

pfg.drafts已在Plone 4和PloneFormGen 1.6.0上进行了测试。

安装

  1. 将pfg.drafts添加到您的buildout,并通过Plone附加组件控制面板激活它。

  2. 转到安全控制面板,并启用“启用自助注册”和“允许用户选择自己的密码”。(如果后者未启用,用户将无法立即注册。您可能希望向注册表单添加captcha以防止自动化注册。)

  3. 转到您想启用草稿的表单,并使用显示菜单将其显示布局更改为“带草稿的表单视图”。

实现细节

草稿保存在自定义工具(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.draftsWeb 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)

  • 首次发布

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页