跳转到主要内容

一个以可编辑表格为主要内容的Plone页面

项目描述

一个类似于标准页面的新Plone内容类型,但以表格为主内容。

介绍

本产品旨在为网站成员提供一种简单的方法,以协作方式管理包含表格的页面。更准确地说,它主要关注页面以表格为主要内容的场景。

唯一的另一种选择是使用所见即所得编辑器(如TinyMCE)来创建页面,然后将修改权限留给编辑者,但

  • 使用TinyMCE命令操作表格并不那么容易(用户有时会打乱您预定义的布局)

  • 您不能阻止用户删除或更改其他用户添加的行,或者添加您不想要的列。

如果您需要克服这些限制,但仍需要简单的Plone页面,这个产品可能就是您需要的。

如果您需要存储大量的数据,您可能需要寻找其他解决方案。

如何使用

安装后,您将看到一个新可添加的内容类型:带有表格的页面。

此新内容类型的某些字段与页面字段非常相似,尽管“正文文本”字段被分成两个独立的区域(表格前后文本)。

配置表格

最重要的字段是“”,您可以在此定义表格的列结构。

Page with Table configuration

对于每一列,您可以定义一些信息,如表头内容和其他描述,但您还必须定义列中的数据类型

您可以添加任意多的列;将填充表格的用户无法更改您已定义的内容。

填充表格

配置不会更改您的布局,但具有此文档“贡献者”角色的用户将看到一个新标签:“编辑表格”。

Page with Table view

当访问“编辑表格数据”视图时,用户可以添加新行到表格并编辑自己的行。提供给用户的表单是根据文档创建者在之前定义的配置选项生成的。

Add new row in the table

一些说明

  • 每个添加的行都放在表格的末尾或某个部分的末尾(见下文)

  • 每个贡献者都可以编辑或删除自己的行

  • 具有“编辑者”角色的用户可以编辑或删除所有行

  • 具有“编辑者”角色的用户可以更改行顺序

Table editing

当切换回主文档视图时,生成的表格是文档正文的一部分。

Page with Table view

表格标签和部分

New label icon

有权配置表格的用户还可以添加特殊类型或行:标签。除了UI更改外,标签会将表格分成逻辑行组:每个组从标签的位置开始,到下一个标签(或表格的末尾)结束。

如果使用一个或多个标签,贡献者可以在章节末尾而不是只在表格末尾添加新行。

在表格配置中有一个名为“添加新行的标准”的字段。将此值从“在末尾”(默认值)更改为“在开头”将更改添加方法:新行将添加到每个组的开头。

下载和上传数据

Download CSV icon

存储在表格中的数据可以下载,并且您可以显示下载链接供页面访客查看(在“设置”中激活“显示数据下载链接”)。当在“编辑表格”视图中使用下载图标时,下载的数据与上述描述的上传CSV功能兼容(使用列ID代替标题,使用内容UID代替引用内容的URL等)

Upload CSV icon

贡献者还可以使用CSV文件上传数据。该文件必须提供包含列ID的行,这些列ID在配置中定义。具有未知ID的列将被忽略。

如果尚未定义配置,则所有CSV标题都将用于快速初始化配置(但列类型始终为“字符串”)。

表格页面附带一组已知的列。目前您可以选择以下类型

字符串

一行简单的文本,最常见的(也是默认)类型。

文本

文本区域,用于保存更多文本并处理换行符。缓存时间为12小时。

选择

仍然是一行简单的文本,但用户必须从您在“列配置”中定义的词汇中选择。

您还可以提供以下行...

vocabulary:TAL expression

...词汇值将通过评估提供的TAL表达式来获取。

您可以使用变量如 portalrequestcontext(当前TablePage)。

文件

到站点的文件的链接。缓存时间为1小时。见下文。

文件

与上面的文件相同,但用于多个文件。

链接

到URL或内部站点的文档的链接。它使用Plone参考浏览器原生小部件。缓存时间为1小时。见下文。

电子邮件

电子邮件地址。

数字

数字格式的字符串。

货币

数字格式的字符串,但将以货币值的形式呈现,并使用地区设置。

计算

将根据您必须在“列配置”中放置的计算TAL表达式显示值的列。因此,它不会被放入编辑行表单中。默认情况下不缓存,但可以进行配置。见下文。

日期日期/时间

存储日期(或日期和时间)的字符串。

对于Plone开发者来说,添加新类型的列并不难,但请记住保持简单:我们不希望从头开始重写PloneFormGen

列缓存

上述一些列启用了一个持久缓存。这在大表中可能是必要的,因为许多这些列可能会减慢页面。

当列被修改时,缓存会自动失效,但是可能仍然会显示无效的数据。例如:您创建了一个指向文件的链接,因此显示其标题,但在此同时编辑器更改了文件的标题。

“文件”和“文件”类型的列

文件类型的列是最复杂的。

当添加或编辑一行时,用户可以上传新文件,创建新的Plone文件内容,或从站点选择现有文件。在两种情况下,权限很重要:用户必须具有在存储文件夹中添加新文件的权限或查看它。存储文件夹由文档创建者配置。

在呈现表格时,会显示一个下载文件的链接。

“计算”类型的列

当编写用于计算字段的TALES表达式时,您可以访问以下通用变量

context

带有表格的当前页面

portal

Plone站点根

index

当前行的索引

row

当前行。使用它,您可以访问同一行中从其他列中获取的数据。

row变量是最强大的:根据您引用的列的类型,您可以读取不同的数据。例如:访问文件文件链接列,您可以读取引用对象的详细信息。

一些例子

row/file_column/title

(显示同一行中的file_column列的标题)

python:row['files_column'][0].Title

(显示同一行中files_column列的第一个文件的标题)

row/link_column/absolute_url|row/link_column

(即使它是内部链接或绝对链接,也显示link_column的链接)

即使这个列通常不实现任何缓存,您也可以通过在“列配置”字段中定义额外的配置行来指定自定义缓存。

只需写点像...

your/tal/espression
cache:3600

…的内容来缓存列结果一小时。

DataTables集成

DataTables 是一个使用 JavaScript 获取高级 HTML 表格功能的知名 jQuery 插件。将其集成到 Plone 的简单方法是使用 collective.js.datatables

TablePage 对 DataTables 有软依赖;如果安装了 jQuery 插件,则表格视图会尝试使用它来获取一些新功能,如

  • 过滤/搜索数据

  • 按列排序

  • 分页/批量处理

此外,还注册了 Row Grouping Add-on 插件(默认禁用!您必须在 portal_javascript 工具中激活 jquery.dataTables.rowGrouping.js 资源)。这将增强标签功能,提供更好的用户体验。

搜索表格

除了来自 DataTables 集成的实时搜索过滤器(见上文)外,您还可以依靠高级搜索功能。这将为您用户提供一个自动生成的搜索表单,该表单根据搜索配置进行生成。

搜索功能基于一个 ZMI 工具:tablepage_catalog,它与 Plone 用于其搜索引擎的相同目录非常相似。虽然一些 UI 配置可以通过 Plone 进行,但需要通过 ZMI 访问该工具。

对于您定义的每个“可搜索”列,您可以在搜索表单中创建一个字段,自定义标签和辅助文本。此外,您可以将一个或多个列定义为全文搜索中的可搜索列。

Configuring searches

当您的用户从表格视图执行搜索时,仅显示与搜索匹配的行。

Configuring searches

表单中显示的小部件取决于您使用的目录索引

  • 对于 ZCTextIndex,您将获得一个文本输入

  • 对于 FieldIndex,您将获得一个选择(可以是单个或多个)所有可能值

  • 对于 DateIndex,您将能够查询日期范围(通常用于“日期”、“日期/时间”列)

索引的名称必须等于列的 ID。

限制

您有一些重要的限制

  • 目前不支持其他类型的索引

  • 您只有一个目录,因此您必须处理(或避免)在多个包含表格的页面中使用相同的列 ID

其他产品

至少还有两个针对 Plone 的产品专注于表格生成

collective.table

此产品专注于编辑部分(以及使用 DataTables jQuery 插件的好处),但它不适用于 Plone 3,您也无法限制用户对表格的权限。

collective.pfg.soup

功能强大、模块化和可扩展。它使用 PloneFormGen 作为表格配置,并可以存储 大量 数据。不幸的是,它有大量的依赖项,并且无法在 Plone 3 上运行。

要求

此产品可用于从 3.3 版本到 4.3 版本的 Plone。

对于 Plone 3.3,您需要进行一些特殊配置,如

  • DataGridField 的自定义分支,其中我们从 1.8 分支回移植了一些新功能

  • 可用的表格样式取自 TinyMCE 配置,因此您必须使用它而不是 Kupu

  • 不可用版本支持

  • 不可用的针对 Plone 3 的友好的可安装 DataTables 产品,因此您可能无法使用它

致谢

由以下组织支持开发

所有这些都支持 PloneGov 创新项目

作者

此产品由 RedTurtle 技术团队开发。

RedTurtle Technology Site

变更日志

0.10.6 (2015-07-31)

  • 修复 #21,SelectField 验证器总是失败验证非 ASCII 词汇字符 [petri]

  • 更新了芬兰语翻译 [petri]

  • 移除了批处理中的 孤儿 使用,这导致 plone.batching 1.0.4 出错,以及 1.0.5 的奇怪行为。[keul]

0.10.5 (2015-05-21)

  • 修复了版本控制问题,强制表格页面更新(在 AT 编辑中),以便在文档生命周期中启用版本控制时看到版本控制工作。[keul]

  • 文件列没有按任何方式对附件进行排序。[keul]

0.10.4 (2015-05-15)

  • 数字和货币字段不可用于搜索。[keul]

0.10.3 (2015-05-15)

  • 修复了 0.10.1 版本引入的问题,使得表格页面无法在 Plone<4.3 上运行。[keul]

0.10.2 (2015-05-14)

  • 当表格为空时,不显示搜索表单。[keul]

  • 当未选择“单值搜索”时,搜索表单不能正常工作。[keul]

  • 将 CSV 下载作为搜索过滤器应用时没有注意。[keul]

  • 为每个表头和数据单元格添加了新的“col-columnid” CSS 类。[keul]

  • 多页视图没有应用任何 CSS 类到表头。[keul]

0.10.1 (2014-11-27)

  • 修复了使用日期搜索而没有其他搜索条件时的问题。[keul]

  • 如果第一行有标签,则子页面中第一行的行命令无法正确显示。[keul]

  • 在编辑表格时,如果处于追加模式,将用户重定向到最后一个页面。[keul]

0.10 (2014-10-22)

  • 新增列:“日期”和“日期/时间”。这解决了 #7 [keul]

  • 对非常小的表格进行了一些视觉上的更改。[keul]

0.9 (2014-10-01)

特别感谢 Petri Savolainen 在这次版本中做了大量工作。

  • 在编辑表格时,将行的 uuid 放在 data-uid 属性上。[keul]

  • 移除了编辑行时无用的字段集图例。这解决了 #13 [keul]

  • 修复了使用刷新按钮时更新的行数消息。[keul]

  • 现在在写入时预先填充缓存,而不是在第一次读取尝试时。这将修复与计算列相关的目录索引错误。[keul]

  • 修复了链接和文件列中的问题:无法删除提交的数据,只能更改它。[keul]

  • 修复了关键错误:删除行时,后续行仍然使用旧的(错误的)位置值进行索引。这将导致在搜索时出现奇怪的行为。[keul]

  • 实现了计算词汇功能:词汇源可以从 TALES 评估中获取(解决 #10)[petri, keul]

  • 多表格视图未使用批处理或搜索。[keul]

  • 将搜索表单方法从 POST 更改为 GET (批处理已经使用 GET)[keul]

  • 移除了启用 DataTables 所需的最小行数限制(解决 #16)[keul]

  • 改进了可用性。当使用 DataTables 而且没有行组时,将(唯一的)“添加行”按钮移动到下方的部分(解决 #11)[keul]

  • 修复了在缓存中将“可链接”列的图标绝对 URL 存储为问题的错误(解决 #14)[keul]

0.8.1 (2014-07-23)

  • 从旧版本迁移的修复。[keul]

  • 在第三方 jquery.dataTables.rowGrouping.js 文件上进行了最小的 JSHint 清理,该文件有时会创建压缩问题。还提供了一种预压缩版本。请参阅 #14279。[keul]

0.8 (2014-07-11)

  • 添加了芬兰语翻译 [petri]

  • 修复了使用选择列时词汇值的编码问题(解决 #5)[keul]

0.8b3 (2014-06-26)

  • 另一个 Plone 3 兼容性修复 [keul]

  • 修复了搜索中的关键错误:未使用路径来查找标签。[keul]

  • 修复了高级查询集成和删除未使用的索引。这修复了导致查询查找“访问不活跃门户内容”权限的关键错误。[keul]

  • 修复了一个恶意漏洞,当进行搜索时,会将不良值填充到计算字段的缓存中 [keul]

0.8b2 (2014-06-04)

  • 从0.8a2迁移步骤中缺少一部分 [keul]

0.8b1 (2014-06-03)

  • 清除缓存命令只对索引列有效 [keul]

  • 使用CSV上传功能时没有提供uuid [keul]

  • 防止上传同一文件两次时出现BadRequest异常 [keul]

  • 恢复了标签的使用,包括搜索 [keul]

  • 修复了标签和分批处理的bug:如果前页存在标签,则跳过起始项 [keul]

0.8a2 (2014-05-20)

  • 修复了与0.7版及以下版本创建的文档的兼容性错误 [keul]

  • 图标:标题:特性也适用于内部链接 [keul]

  • 从0.7迁移错误:目录在portal_setup工具内创建! [keul]

  • 在表格中添加了新的“刷新目录”命令 [keul]

  • 缓存值的索引现在首先尝试使缓存失效。这防止了计算列的无限缓存 [keul]

  • 修改了缓存生成,以减少冲突错误 [keul]

0.8a1 (2014-04-30)

  • 修复了当使用计算列时破坏CSV导出的bug [keul]

  • 添加了最小链接列显示首选项(固定链接文本或图标) [keul]

  • 修复了错误的列配置缓存 [keul]

  • 修复了Plone中“无行”部分的显示问题,这些Plone不使用plone.batching [keul]

  • 只有在我们有一些行要显示时才启用DataTable。这修复了某些布局的视觉问题 [keul]

  • 链接列:对于外部链接使用rel的外部值,而不是内部链接 [keul]

  • 添加了搜索功能 [keul]

0.7 (2014-03-19)

  • 在空表格上无法访问多表格视图 [keul]

  • 默认禁用jquery.dataTables.rowGrouping.js插件 [keul]

  • 同一表格中的多个多文件列不工作 [keul]

  • 修复了少量JavaScript错误 [keul]

  • 样式修复:主要列(HTML)标签比默认Plone表单标签略大 [keul]

  • 防止新标签加载错误的默认文本 [keul]

  • 在链接列中不显示空图标 [keul]

  • 新的“insertType”配置(在组末尾或开头添加新行) [keul]

  • 新的列类型:“计算” [keul]

  • 修复了类似链接的列和缓存的问题。不返回对象的绝对URL,因为后端URL可能会被缓存。相反,使用resolveuid URL,并在查看时通过portal_trasform运行表格。此方法的缺点是,在编辑表格的URL时仍然使用resolveuid [keul]

  • 添加了分批/分页 [keul]

0.6 (2014-02-25)

  • 多表格视图未正确显示HTML [keul]

  • 为渲染的列添加了缓存。这将稍微/大大加快表格渲染速度 [keul]

  • 将内联JavaScript移动到单独的资源文件 [keul]

  • 显示/隐藏命令现在也作用于页面页眉和页脚(Zen模式!) [keul]

0.5 (2014-02-06)

  • 唯一验证器阻止记录更新 [keul]

  • 货币列会在提供的少于2位小数时填充最终零(123.5将变为123.50) [keul]

0.5b4 (2014-02-04)

  • 修复了当链接内容不再存在时破坏链接列的bug [keul]

  • 修复了验证旧行时的错误,这些旧行是在版本0.5之前创建的 [keul]

0.5b3 (2014-01-31)

  • 由于Google Chrome的愚蠢,不再使用HTML 5的number类型 [keul]

  • 修复了解释CSV格式的Python 2.4错误 [keul]

  • 如果CSV行缺少一些列,则不会使整个导入过程失败 [keul]

0.5b2 (2014-01-29)

  • 修复了编辑旧行时的错误,这些旧行是在版本0.5之前创建的 [keul]

  • 在没有给出配置的情况下,可以从CSV表单导入。基本配置将通过列标题来猜测 [keul]

  • 选择列现在强制执行词汇值 [keul]

  • 新的列类型:“货币” [keul]

  • 当以CSV格式导出时,始终引用数据。这可以防止Excel/OpenOffice进行一些花哨的解释。

  • 在从CSV导入时也可以执行列验证。

0.5b1 (2014-01-13)

  • 对jQuery DataTables及其“行分组插件”有软依赖。这添加了新功能,如表格中的实时搜索、分批和列排序。

  • 添加了一个JavaScript命令,用于在编辑时展开/折叠可用视图(这在添加了大量列的情况下很有帮助)。

  • 修复了“文件”列中的关键错误;选择现有文件时忽略了列ID。

  • 添加了新功能:注册验证器。

  • 添加了必填字段的验证器。

  • 添加了唯一字段的验证器。

  • 新字段类型:“电子邮件”,用于插入电子邮件格式的文本。

  • 新字段类型:“数字”,用于插入数字格式的文本。

0.4.1 (2014-01-03)

  • 添加了卸载配置文件。

  • 修复了从CSV导入时查找重复行的错误(关闭#1)。

0.4 (2013-11-14)

  • 如果无法删除行,则不显示选择复选框。

  • 在创建文件时正确地引发生命周期事件。

  • 新字段类型:“文件”,用于上传要在同一单元格中呈现的一组文件。

  • 现在支持表格内的标签。

  • 新视图,用于在多个表格上显示数据。

  • 新字段类型:“链接”,用于插入URL或内部引用。

  • 后端执行的CSV导出在适用时获取UUID。

  • CSV导入现在验证数据:不要导入从文件中读取的每个文本。

  • CSV导入现在将URL/路径转换为有效的内容UUID。

0.3 (2013-10-18)

  • 当行更改或修改时显示不同的版本信息。

  • 当使用CSV上传时,添加了缺少的版本尝试。

  • 修复了性能/安全问题:文本单元格中的数据未经检查就转换为HTML(这也很慢)。

  • 现在可以删除多个(或全部)行。

  • 当找到未知标题时,CSV导入不再导入到错误的列中。

0.2 (2013-10-11)

  • 修复了缺失的翻译。

  • 对于空表格不显示“下载为CSV”。

  • 添加了选择何时显示标题的选项。

  • 处理重复文件ID的加载:文件不会被加载两次,而是保持相同的引用。

  • 如果没有设置配置,则不显示“编辑表格”或行的命令。

0.1.2 (2013-09-27)

  • 修复了列标题上的编码错误。

  • 修复了编辑行上的编码错误。

0.1.1 (2013-09-23)

  • 修复了与非ASCII字符相关的UnicodeDecodeError问题。

0.1 (2013-09-19)

  • 初始版本。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

collective.tablepage-0.10.6.tar.gz (134.6 kB 查看哈希值)

上传时间

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面