跳转到主要内容

Plone的表格输入组件。

项目描述

DataGridField

根据 GNU 通用公共许可证发布

适用于 Plone Archetypes 框架的表格输入组件。使用 JavaScript 使输入表格数据的过程更加用户友好 - 插入或删除行时不需要往返 HTTP 请求。

功能

  • 开发者可以设置任意数量的列

  • 用户可以填充任意数量的行

  • 无需提交表单即可插入和删除行

  • 许多不同的列类型

要求

  • Plone 4(对于 Plone 3,请使用 1.7 分支或 1.6 分支的最新版本,对于 Plone 2.5,请使用 1.6 分支的最新版本)

  • 支持 JavaScript 的浏览器。对于不支持 JavaScript 的浏览器,尚未实现优雅降级。

安装

此版本的 DataGridField 作为 egg 分发在 Python 包索引中。有关为 zope 实例配置 Plone 站点的信息,请参阅安装附加产品教程

完成此操作后,您可以使用“添加/删除产品”屏幕将 DataGridField 安装到您的站点。有关在演示类型上实验的信息,请参阅下文。

如何使用

当开发一个 Archetypes 内容类型时,您将能够添加一种新的字段类型:DataGridField。存储在此字段中的低级别数据将是字典的 Python 元组。

用于此新型字段的控件是 DataGridWidget

字段定义

查看所有 DataGridField 配置列表

所有列 id 的元组。默认是名为“default”的单列。

fixed_rows

固定行实例的序列,这些行值必须存在。如果删除这些行,则在保存内容时将重新添加。

请参阅代码中的示例以获取实现细节。

allow_insert

用户可以添加新行。目前仅是 UI 功能,尚未在应用级别进行检查。默认为 True。

allow_delete

用户可以删除行。目前仅是 UI 功能,尚未在应用级别进行检查。默认为 True。

allow_reorder

用户可以重新排序行。目前仅是 UI 功能,尚未在应用级别进行检查。默认为 True。

searchable

如果为 true,则将 DataGridField 的所有内容连接到可搜索文本,并将其提供给文本索引器。默认为 False。

allow_empty_rows

设置为 false 允许数据中的空行。默认为 True。

allow_oddeven

设置为 true 以在编辑/查看表单中突出显示奇数/偶数行。默认为 False

小部件定义

当定义一个新的 DataGridWidget 时,您可以管理以下选项

show_header

选择是否在查看或编辑时显示或隐藏表头。

自动插入

当编辑最后一行时,自动添加新行。

包含列定义的字典。

此选项不是必需的,但您必须提供它以进行高级数据网格配置(见下文)。

列定义

在定义列(使用上面的 widget 定义中的 columns 选项)时,您必须提供一个由以下内容组成的字典

  • 一个必须在 fieldcolumns 定义中找到的键。

  • Column 类(或子类)的实例

每个 Column 实例都有以下选项

label(必需)

列的漂亮标签。

col_description

对列范围的其他描述。

default

列每个新值的默认值。

default_method

与上面的 default 类似,但必须是可以在上下文中调用的方法的一个属性,而不是静态值(类似于 Archetypes 字段的 default_method

visible

定义列是否可见。默认为 True。

required

如果为 true,则对于提供的每一行,此列的值必须填写。默认为 False。

除了简单的 Column 实现,此产品还将提供其他类型的列类,如

  • SelectColumn

  • LinesColumn

  • LinkColumn

  • RadioColumn

有关列的完整列表和附加选项的详细信息,请参阅源代码

使用示例

带有三个自由文本列的简单示例

schema = BaseSchema + Schema((

DataGridField('DemoField',
        widget = DataGridWidget(),
        columns=('column1','column2','The third')
        ),
))

具有不同列类型和用户友好标签的复杂示例

# Plone imports
from Products.Archetypes.public import DisplayList
from Products.Archetypes.public import *

# Local imports
from Products.DataGridField import DataGridField, DataGridWidget
from Products.DataGridField.Column import Column
from Products.DataGridField.SelectColumn import SelectColumn

class DataGridDemoType(BaseContent):
    """A simple archetype

    """

    schema = BaseSchema + Schema((
        DataGridField('DemoField',
                searchable = True,
                columns=("column1", "column2", "select_sample"),
                widget = DataGridWidget(
                    columns={
                        'column1' : Column("Toholampi city rox",
                                           col_description="Go Toholampi or go home.",
                                           required=True),
                        'column2' : Column("My friendly name"),
                        'select_sample' : SelectColumn("Friendly name", vocabulary="getSampleVocabulary")
                    },
                 ),
         ),

        ))

    def getSampleVocabulary(self):
        """
        """
        """ Get list of possible taggable features from ATVocabularyManager """
        return DisplayList(

            (("sample", "Sample value 1",),
            ("sample2", "Sample value 2",),))

有关更多示例,请参阅单元测试代码。

注意事项

从 DataGridField 1.5 开始,如果您希望保留旧方式的自动行插入,这里有一些逻辑 - 否则,在您编辑 DGF 并保存时,将添加一个额外的行。

  • 您必须将属性 auto_insert 设置为 True,以 DataGridWidget

  • 您必须将属性 allow_empty_rows 设置为 False,以 DataGridField

已知错误

  • 有时在 Firefox 中,用户输入一些数据后,列的大小开始变化。不确定这是否是 Firefox 的错误。

  • 预填充的默认值仅适用于文本和选择列

  • 单选按钮和链接列的回发处理不当。这需要在 Zope(ZPublisher)中非常深入地修复。如果表单验证失败,链接列和单选按钮列将丢失其值。

  • 由于 HTML 不兼容,并非所有类型的列都受所有浏览器的支持。有关详细信息,请参阅https://w3schools.org.cn/tags/tag_input.asp

演示

包含一个演示类型。默认情况下已禁用。此类型既不美观也不非常实用,但演示了数据网格应该如何使用。您可以通过在 ZMI 中的“通用设置工具”中运行“DataGridField(示例 DGF 内容类型)”将此类型安装到您的站点中。

参考

贡献者

使这一切成为现实的人

原始概念和原型

赞助

为开发付费的组织

变更日志

1.9.6 (2017-02-21)

  • 修复了在PloneFormGen 1.7.19或更高版本中作为小部件使用时出现的错误。由于它不是acquisition封装的,因此该小部件没有REQUEST属性。[maurits]

1.9.5 (2016-03-22)

  • 在隐藏列时,在查看/编辑模式下都隐藏,没有区别。在“查看”模式下,在生成使用的类“dgw-hidden-column”时,追加列ID,使其像在“编辑”模式下一样,可以使用CSS选择器显示隐藏的列。[gbastien]

1.9.4 (2015-09-07)

  • 在编辑表单中添加新行时,考虑到复选框列的默认值。[gbastien]

1.9.3 (2015-09-07)

  • 确保validate_required正确验证存储的数据,确实,当数据存储时,orderindex_键丢失。[gbastien]

1.9.2 (2015-08-31)

  • 修复了在现代Plone上注册demotypes的错误(默认别名不起作用)[keul]

  • 增加了对Archetypes required属性的真正支持。这可能会废弃isDataGridFilled验证器的需求[keul]

1.9.1 (2014-10-14)

  • 在示例配置文件中添加了新的演示数据字段[tkimnguyen]

  • 删除了旧的nested_scopes导入[tkimnguyen]

  • 增加了对更多类型的字段的支持(DateColumn、DatetimeColumn、DatetimeLocalColumn、FileColumn、EmailColumn、ColorColumn、PasswordColumn、RangeColumn、MonthColumn、SearchColumn、TimeColumn、UrlColumn、WeekColumn),以匹配https://w3schools.org.cn/tags/tag_input.asp中的标签类型。请注意,并非所有浏览器都支持这些!请查看该页面以了解浏览器特定的限制。[tkimnguyen]

  • 葡萄牙语pt-br翻译。[lccruz + jtmolon]

  • 用.png替换Plone中的.gif图像。[maurits]

  • 修复了添加新行时的错误。现在新行的输入具有唯一的ID[cekk]

  • 可访问性修复:将命令图标包裹在链接中,以便可以使用键盘访问[keul]

  • 防止在用户尝试更改单行表格的行顺序时出现JavaScript错误[keul]

  • 可访问性修复:现在列内的每个表单字段都具有一个title属性,该属性重复列的标签[keul]

  • SelectColumn。在select HTML标签上删除了值属性[keul]

1.9.0 (2013-09-19)

  • 在所有列中支持label参数以及标准关键字参数:col_descriptiondefaultdefault_methodvisiblerequired。子类可能支持更多的参数或关键字参数。[maurits]

  • 不再支持label_msgid在列中。这已经多年未使用。[maurits]

  • Column.getLabel更改为再次支持翻译。您应该传递请求作为上下文。[maurits]

  • 新的列选项col_description:显示列用途的帮助文本[keul]

  • 新的列选项required:将列内的数据标记为必需[keul]

  • 为网格图标添加了alpha通道[keul]

  • 在“添加新行”按钮后添加了一个visualClear div。这修复了当字段验证错误发生时的视觉问题。[keul]

  • 将焦点放在新添加的行的第一列上[keul]

1.8.4 (2013-01-04)

  • 添加了意大利语本地化[cekk]

1.8.3 (2012-08-23)

  • 支持SelectColumn类中将浏览器视图名称作为“vocabulary”参数

1.8.2 (2012-08-23)

  • 为操作器表单元格添加了新的CSS类,以便能够附加自定义JS处理程序[ajung]

1.8.1 (2012-06-28)

  • 添加了英语语言环境。对内部包装进行了小的改进。[maurits]

1.8.0 (2012-05-29)

  • 去除值列表中的空格。[WouterVH]

  • 最终发布1.8.0版本。[ajung]

1.8b2 (2011-05-08)

  • 添加了法语翻译。[thomasdesvenain]

  • 在行操作图像上添加了标题。[thomasdesvenain]

  • 使用json解码器修复了使用基本字符串设置字段值的错误。添加了测试。[thomasdesvenain]

  • 修复了LineColumns中对“空”的检查。[ajung]

1.8b1 (2010-08-16)

  • 在zcml中注册本地化目录。[buchi]

  • 添加了德语翻译。[buchi]

1.8a2 (2010-06-02)

  • 当对象的aq_parent为私有时,即使在实际上不需要从该父对象获取任何信息时,也修复了查询DataGrid时出现的未授权错误。(更改已从1.6.2版本移植。)[maurits]

  • 添加了对西班牙语本地化的支持。[macagua]

  • 添加了对i18n的支持。[macagua]

  • 渲染的DGF字段的TD单元格现在包含一个额外的CSS类“col-$colnumber”。[ajung]

  • 从setup.py中移除了无意义的Plone==4锁定,这比解决的问题要多。[saily]

1.8a1 (2009-11-07)

  • 修复了在提交base_metadata表单时可能出现的TypeError。[maurits]

  • 在视图宏中使用提供的访问器,而不是认为我们知道如何获取访问器,因为这样会导致LinguaPlone结果错误。修复了http://plone.org/products/datagridfield/issues/14。[maurits]

  • 修复了Plone 4的测试,包括良好的清理。[maurits]

  • 适应Plone 4/Zope 2.12。对于Plone 3,请使用1.7或1.6分支。[vincentfretin]

1.7 (未发布)

  • 当存在带有template_row_marker的空行且验证失败(对于任何字段)时,确保我们不会出现两个空行。[maurits+vpretre]

  • 添加了LinesColumn(用作PFGDataGrid字段的自定义词汇源)。[naro]

  • 为thead和tbody表格部分添加了唯一的列类名,以便识别列并通过CSS修改其属性(尤其是每个列的宽度)。现在我们可以移除样式属性并清理一些模板代码。[saily]

  • 允许Products.Archetypes.interfaces.IVocabulary提供对象作为词汇表。这使得SelectColumn可以在archetypes.schemaextender中使用,而无需修补扩展类。[jensens]

  • 将安装返回到GenericSetup,结束Plone 2.5.x支持。[andrewb,但真正的感谢属于wichert]

1.6 (2009-01-28)

  • 合并了colliding datagridwidget.css和datagridwidget.css.dtml文件。修复了问题#30:http://plone.org/products/datagridfield/issues/30。最终选择哪个文件似乎是不一致的。如果你依赖于这两个版本的覆盖版本,并注意到与隐藏列和/或行出现或使用FixedColumn添加额外DGF行时出现的错误,你将很好地将你的自定义与合并文件进行协调,这些文件可以从http://dev.plone.org/archetypes/changeset/10445获取。[andrewb]

1.6rc1

  • 添加了Plone 2.5.x DataGridField配置文件“default_25x”,以克服注册我们的皮肤目录时的GS命名空间差异。如果没有这个,就需要手动在portal_skins工具中添加正确的FSDV,以便.pt、.dtml、图像等存在,并且与DataGridWidget的皮肤目录一起。[andrewb]

  • 添加了Extensions和Install.py以及install()函数,以实现一致的添加/移除产品体验,这对于Plone 2.5.x来说没有处理基于GenericSetup配置文件的安装。安装代码将委托给Generic Setup以实现最大程度的代码重用。理由是,在Plone 2.5.x中,在beta 2和beta 3版本之间完全移除添加/移除产品支持是过于极端的。这个解决方案将在未来的版本中得到修正。[andrewb]

    注意:这是手动添加的,因为没有历史记录,因为将DataGridField的eggified版本移动,而不是复制,因此没有历史记录:http://dev.plone.org/archetypes/log/Products.DataGridField?action=follow_copy&rev=&stop_rev=&mode=follow_copy

  • 更新了安装说明、示例类型的说明,并添加了关于停止Plone 2.5.x支持的说明。[andrewb]

  • 从示例类型的GS声明中移除了“@@plone_lock_info”的检查,以便在Plone锁定时代之前的动作可以渲染。[andrewb]

  • 在Plone 2.5.x、3.0.x和3.1.x中使所有测试通过。[andrewb]

  • 为 portal_setup 中可能选择的安装的 GS 配置文件制定了明确的名称 [andrewb]

1.6 beta 3

  • 在 Products.AddRemoveWidget 中实现 [SteveM]

  • 正确注册皮肤层。 [maurits]

  • 将安装移动到 GenericSetup。 [wichert]

  • 移除大量不必要的导入。Pyflakes 发现 Plone 2.1 的支持已经中断一段时间了,所以停止声明它仍然受到支持。 [wichert]

  • 添加了 validator isDataGridFilled(从 Poi 复制,稍后可以删除)。如果您想在 DataGridField 上使用它并使其至少有一个条目,请使用此验证器:目前即使删除所有真实条目,仍保留一个虚假/隐藏的条目,因此使 DataGridField 成为必需项没有实际效果。请参阅 http://plone.org/products/poi/issues/139 和 160。 [maurits]

1.6 beta 2

  • 从 config.py 中禁用了 INSTALL_DEMO_TYPES。 [andrewburkhalter]

1.5

  • 弹出帮助列由 Juan Grigera 提供

  • 添加了 CheckboxColumn 由 Radim Novotny 提供

  • 与 Plone 3.0 兼容(修复了 CMFCorePermissions 导入)

  • 修复了 http://plone.org/products/datagridfield/issues/16(应用了补丁)

  • DataGridField 有一个新属性 allow_oddeven。将此设置为 True 将在查看/编辑表中突出显示奇数行和偶数行。默认:False

  • FixedColumn 有一个可选参数 "visible"(默认 True)。将此设置为 False 将隐藏(使用 CSS)列,在查看和编辑表单中均不可见。

1.5rc3

  • 添加了 CheckboxColumn。实现基于 RadioColumn,因此存在相同的错误。如果表单上的任何字段引发验证错误,CheckboxColumn 将丢失值。请注意这一点,最好不在具有必填字段或具有验证器的表单中使用 CheckboxColumn。[贡献者:naro,radim novotny]

1.5rc2

  • 修复了 IE 中的行添加问题。这是我遇到的最糟糕的调试会话之一。存在一些神秘的 IE 错误,阻止将原本隐藏的 DOM 节点显示为可见。我为这个问题创建了“hacky”的解决方案。在 IE 6.0 和 FF 1.5 中进行了测试。

  • Wolfram Fenske 的 I18N 补丁已被禁用,因为它在 Plone 2.5 中不起作用。代码几乎已经完成。如果有人想让它完整, shouldn't take too much time。

1.5rc1

  • 添加了对 DGF 初始化错误的解决方案,这导致当 DGF 以编程方式创建时出现空行

1.0 至 1.5

  • 保证 Plone 2.5 兼容性

  • DGF 行操作器已重写。现在自动添加新行功能是可选的,这使得列可以具有预填充的默认值而不会造成混乱。对于没有空默认值的 SelectWidget 等列,禁用自动插入是必要的。

  • 重构页面模板代码,使其更容易扩展。现在 CSS 文件用于 DataGridWidgets 的样式。

  • 添加了新列类型:链接列

  • (Wolfram Fenske) I18N 补丁

    Archetypes 小部件有一个属性 i18n_domain,它用于确定使用哪个消息目录进行翻译。在 DataGridField 中,此属性被忽略。

    我已经附加了一个小的补丁(实际上,比这个错误报告还要小),它修复了这些问题。我不想引入太多新代码,所以我将 Column 类中的标签翻译,而不是在页面模板中,这可能也是一种好的方法。由于 "getLabel()" 和 "getColumnLabels()" 函数仅在页面模板中调用,因此我认为这不是问题。但如果您希望将标签翻译到页面模板中,请让我知道,我将编写不同的补丁。

  • (Juan Grigera) Marshaller 补丁

    我喜欢您的 DataGriedField/Widget 产品,并想贡献一个小补丁/错误修复。在字段突变者(设置)中,传递的值不总是记录,有时是字符串。实际上,RFC822Marshaller 传递一个字符串。

项目详情


下载文件

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

源代码分发

Products.DataGridField-1.9.6.tar.gz (75.1 kB 查看哈希值)

上传时间 源代码

由以下机构支持