一个以可编辑表格为主要内容的Plone页面
项目描述
一个类似于标准页面的新Plone内容类型,但以表格为主内容。
介绍
本产品旨在为网站成员提供一种简单的方法,以协作方式管理包含表格的页面。更准确地说,它主要关注页面以表格为主要内容的场景。
唯一的另一种选择是使用所见即所得编辑器(如TinyMCE)来创建页面,然后将修改权限留给编辑者,但
使用TinyMCE命令操作表格并不那么容易(用户有时会打乱您预定义的布局)
您不能阻止用户删除或更改其他用户添加的行,或者添加您不想要的列。
如果您需要克服这些限制,但仍需要简单的Plone页面,这个产品可能就是您需要的。
如果您需要存储大量的数据,您可能需要寻找其他解决方案。
如何使用
安装后,您将看到一个新可添加的内容类型:带有表格的页面。
此新内容类型的某些字段与页面字段非常相似,尽管“正文文本”字段被分成两个独立的区域(表格前后文本)。
配置表格
最重要的字段是“列”,您可以在此定义表格的列结构。
对于每一列,您可以定义一些信息,如表头内容和其他描述,但您还必须定义列中的数据类型。
您可以添加任意多的列;将填充表格的用户无法更改您已定义的内容。
填充表格
配置不会更改您的布局,但具有此文档“贡献者”角色的用户将看到一个新标签:“编辑表格”。
当访问“编辑表格数据”视图时,用户可以添加新行到表格并编辑自己的行。提供给用户的表单是根据文档创建者在之前定义的配置选项生成的。
一些说明
每个添加的行都放在表格的末尾或某个部分的末尾(见下文)
每个贡献者都可以编辑或删除自己的行
具有“编辑者”角色的用户可以编辑或删除所有行
具有“编辑者”角色的用户可以更改行顺序
当切换回主文档视图时,生成的表格是文档正文的一部分。
表格标签和部分
有权配置表格的用户还可以添加特殊类型或行:标签。除了UI更改外,标签会将表格分成逻辑行组:每个组从标签的位置开始,到下一个标签(或表格的末尾)结束。
如果使用一个或多个标签,贡献者可以在章节末尾而不是只在表格末尾添加新行。
在表格配置中有一个名为“添加新行的标准”的字段。将此值从“在末尾”(默认值)更改为“在开头”将更改添加方法:新行将添加到每个组的开头。
下载和上传数据
存储在表格中的数据可以下载,并且您可以显示下载链接供页面访客查看(在“设置”中激活“显示数据下载链接”)。当在“编辑表格”视图中使用下载图标时,下载的数据与上述描述的上传CSV功能兼容(使用列ID代替标题,使用内容UID代替引用内容的URL等)
贡献者还可以使用CSV文件上传数据。该文件必须提供包含列ID的行,这些列ID在配置中定义。具有未知ID的列将被忽略。
如果尚未定义配置,则所有CSV标题都将用于快速初始化配置(但列类型始终为“字符串”)。
列
表格页面附带一组已知的列。目前您可以选择以下类型
- 字符串
一行简单的文本,最常见的(也是默认)类型。
- 文本
文本区域,用于保存更多文本并处理换行符。缓存时间为12小时。
- 选择
仍然是一行简单的文本,但用户必须从您在“列配置”中定义的词汇中选择。
您还可以提供以下行...
vocabulary:TAL expression
...词汇值将通过评估提供的TAL表达式来获取。
您可以使用变量如 portal、request 和 context(当前TablePage)。
- 文件
到站点的文件的链接。缓存时间为1小时。见下文。
- 文件
与上面的文件相同,但用于多个文件。
- 链接
到URL或内部站点的文档的链接。它使用Plone参考浏览器原生小部件。缓存时间为1小时。见下文。
- 电子邮件
电子邮件地址。
- 数字
数字格式的字符串。
- 货币
数字格式的字符串,但将以货币值的形式呈现,并使用地区设置。
- 计算
将根据您必须在“列配置”中放置的计算TAL表达式显示值的列。因此,它不会被放入编辑行表单中。默认情况下不缓存,但可以进行配置。见下文。
- 日期和日期/时间
存储日期(或日期和时间)的字符串。
对于Plone开发者来说,添加新类型的列并不难,但请记住保持简单:我们不希望从头开始重写PloneFormGen!
列缓存
上述一些列启用了一个持久缓存。这在大表中可能是必要的,因为许多这些列可能会减慢页面。
当列被修改时,缓存会自动失效,但是可能仍然会显示无效的数据。例如:您创建了一个指向文件的链接,因此显示其标题,但在此同时编辑器更改了文件的标题。
“文件”和“文件”类型的列
文件类型的列是最复杂的。
当添加或编辑一行时,用户可以上传新文件,创建新的Plone文件内容,或从站点选择现有文件。在两种情况下,权限很重要:用户必须具有在存储文件夹中添加新文件的权限或查看它。存储文件夹由文档创建者配置。
在呈现表格时,会显示一个下载文件的链接。
“链接”类型的列
链接列可以用来存储绝对链接(外部)或网站内容的链接。在这种情况下:将自动使用Plone原生小部件archetypes.referencebrowserwidget
您可以通过在“列配置”部分添加一些行来更改链接本身显示的方式
- title:something
链接文本将始终为“something”
- icon:url-or-relative-path-to-image
将显示一个图像,在内部链接的情况下,不显示文本
“计算”类型的列
当编写用于计算字段的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 访问该工具。
对于您定义的每个“可搜索”列,您可以在搜索表单中创建一个字段,自定义标签和辅助文本。此外,您可以将一个或多个列定义为全文搜索中的可搜索列。
当您的用户从表格视图执行搜索时,仅显示与搜索匹配的行。
表单中显示的小部件取决于您使用的目录索引
对于 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 创新项目。
变更日志
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 969cebb73c351e6074f44557a9fefbfe43b4ca5d24a8dacd1de6dee34a99bf64 |
|
MD5 | b5c4578fc621f8e3e512c03a914e4674 |
|
BLAKE2b-256 | ef4e76c7b05c6058137cd35ab302a43d290c74f5f794dcf6dc30481879c4bcfc |