参考浏览器小部件(维护者 Mathias Leimgruber)
项目描述
ftw.referencewidget
此小部件提供了一个参考浏览器和搜索字段,允许用户选择参考。
基本查询是所有不在“types_not_searched”属性中的类型,对允许类型的所有修改都是相对于此查询进行的。
可以通过IReferenceSettings注册接口或每个小部件的参数来更改所有小部件的遍历或选择能力。
- 该小部件接受以下参数
allow_traversal:要添加为可遍历的类型列表。如果将“override”设置为True,则将作为完整的配置执行。
block_traversal:要添加为不可遍历的类型列表。如果将“override”设置为True,则将忽略。
selectable:要添加为可选择的类型列表。如果将“override”设置为True,则将作为完整的配置执行。
nonselectable:要添加为不可选择的类型列表。如果将“override”设置为True,则将忽略。
start:首先打开的路径。可以是可调用的或路径。还可以使用字符串“parent”、“navroot”、“ploneroot”。
allow_nonsearched_types:如果设置为true,则所有类型都将可遍历和可选择。
override:如果向小部件传递列表,则丢弃所有全局配置和基本查询。如果设置为true,则“selectable”和“allow_traversal”不是累加的,而是作为完整的配置执行。将忽略“nonselectable”和“block_traversal”。
traversal_query:通过给定的字典更新用于遍历的查询。传递的字典将在一切完成后更新。因此,请确保不要覆盖sort_on/sort_order属性。
显式类型过滤器:可以使某些类型完全不显示。重要:为此,restapi需要支持NOT查询:例如 portal_type.not=Image。
使用方法
将 ftw.referencewidget 添加到您的buildout配置或作为包的依赖项
[instance]
eggs +=
ftw.referencewidget
安装默认的通用导入配置文件。
安装/开发
$ make install
$ make run
我们支持这两种选项,因为makefile方法还没有支持zope2instance配方中的所有功能。例如,控制脚本尚不支持。但是,设置docker测试镜像更快、更方便。
JavaScript开发
从版本4开始,小部件基于boorstrap 5.2和Vuejs 3。它还不是一种模式,但它可能可以用模式包装。
$ npm install
开发JS
$ npm run dev
为生产构建
$ npm run build
JavaScript公共API
您可以在代码中运行“window.initReferenceWidget”。它将扫描所有参考浏览器小部件,如果尚未初始化,则将初始化JS小部件。
从1.x升级到2.x
ftw.referencewidget包没有设置版本号。因此,从ftw.upgrade中不会显示升级步骤 ../@@manage-upgrades。因此,第一个升级步骤 Upgrade ftw.referencewidget:default to 20181112105705: Fix registry field frontend edit 必须通过ZMI在 ../portal_setup/manage_fullImport 下安装。这将为包设置版本,因此可以通过 ../@@manage-upgrades 安装进一步的升级。
版本4.x
ftw.referencewidget的4.x版本仅与Plone 6和Python 3.9(可能还有3.7和3.8)兼容。它使用模块联邦功能和Plone 6的boostrap 5。
上下文源绑定器
使用 RelationeChoice 或 RelationList 的 RelationChoice,可以配置与字段一起的源。确保只能选择有效的内容。
默认情况下,源绑定器在选择内容时仅检查有效的 portal_type。
因此,默认_filter 实现如下所示
def default_filter(source, value):
""""
Return ``True`` when the object is selectable, ``False``
when it is not selectable.
""""
return value.portal_type in get_selectable_types_by_source(source)
请随意添加您自己的过滤方法作为字段中的源参数。示例
from ftw.referencewidget.filter import DefaultSelectable
class CustomClass(DefaultSelectable):
def is_selectable(self):
return bool(..)
...
directives.widget(realtionchoice_restricted_title=ReferenceWidgetFactory)
realtionchoice_restricted_title = RelationChoice(
title=_(u'Related Choice Restricted Title'),
source=ReferenceObjSourceBinder(
selectable_class=CustomClass),
default=None,
required=False,
)
filter接受两个参数,实际的源对象和值,即内容对象。
仅支持 ReferenceObjSourceBinder。源绑定器接受以下参数
selectable:添加这些类型作为可选。如果 override 设置为 True,则将作为完整的配置。
nonselectable:添加这些类型不可选。如果 override 设置为 True,则会被忽略。
allow_nonsearched_types:如果设置为true,则所有类型都将可遍历和可选择。
override:如果传递给小部件的列表,则丢弃所有全局配置和基本查询。如果设置为 true,则 selectable 不是可添加的,而是作为完整的配置。 nonselectable 将被忽略。
selectable_class:自定义 ISelectable 类以确定内容是否可选。
参数与小部件相同(与1.x版本向后兼容)。
字段组合(已注册转换器)
以下组合受支持
RelationList与value_type Relation –> 存储一系列RelationValues
RelationList与value_type RelationChoice –> 存储一系列RelationValues
Relation –> 存储一个RelationValue
RelationChoice列表 –> 存储一系列绝对路径,不带门户根部分
TextLine –> 存储一个绝对路径作为字符串,不带门户根部分
TinyMCE Plone 5 - 内部链接小部件替代
在Plone 5.x中,ftw.referencewidget的版本3自动用ftw.referencewidget内部链接浏览器替换了select2内部链接小部件。功能包括在参考浏览器弹出窗口内搜索和浏览。
链接
使restapi支持通过@search端点进行NOT查询
def parse_complex_query(self, idx_query):
idx_query = idx_query.copy()
parsed_query = {}
if "query" not in idx_query and "not" not in idx_query:
raise QueryParsingError(
"Query for index %r is missing a 'query' or 'not' key!" % self.index
)
if "query" in idx_query:
qv = idx_query.pop("query")
parsed_query["query"] = self.parse_simple_query(qv)
if "not" in idx_query:
nt = idx_query.pop("not")
parsed_query["not"] = self.parse_simple_query(nt)
for opt_key, opt_value in idx_query.items():
if opt_key in self.query_options:
opt_type = self.query_options[opt_key]
try:
parsed_query[opt_key] = opt_type(opt_value)
except ValueError:
raise QueryParsingError(
"Value %r for query option %r (index %r) could not be"
" casted to %r" % (opt_value, opt_key, self.index, opt_type)
)
else:
log.warning(
f"Unrecognized query option {opt_key!r} for index {self.index!r}"
)
# Pass along unknown option without modification
parsed_query[opt_key] = opt_value
return parsed_query
版权
本软件包的版权属于4teamwork。
ftw.referencewidget遵循GNU通用公共许可证,版本2。
变更日志
4.2.2 (2024-08-09)
修复折叠元素上的aria-hidden属性。[mathias.leimgruber]
4.2.1 (2024-07-08)
将ignore_nav_root参数添加到面包屑端点。[mathias.leimgruber]
4.2.0 (2024-05-29)
使引用项可拖动。[mathias.leimgruber]
4.1.0 (2024-05-22)
重构小部件,使其对所有查询使用@search端点。[mathias.leimgruber]
添加新的显式类型过滤器参数。[mathias.leimgruber]
4.0.3 (2024-05-14)
检查对引用的查看权限以避免未授权错误。[mathias.leimgruber]
4.0.2 (2024-05-13)
针对Plone 6.0.9进行测试。[mathias.leimgruber]
删除基于buildout的设置。[mathias.leimgruber]
删除plone根的FakeEditView。[mathias.leimgruber]
4.0.1 (2023-06-09)
修复分页查询字符串重复。[mathias.leimgruber]
4.0.0 (2023-05-30)
不再将*添加到搜索词。[mathias.leimgruber]
4.0.0b2 (2023-05-22)
通过patternslib加载和注册小部件。[mathias.leimgruber]
修复小部件中选中项的选中状态,并为选中项添加标题。[mathias.leimgruber]
使用开关代替复选框以提高可读性。[mathias.leimgruber]
修复文件和图像的mimetype图标。[mathias.leimgruber]
支持supermodel RelationChoice字段。[mathias.leimgruber]
4.0.0b1 (2022-08-11)
改进样式。[mathias.leimgruber]
添加翻译js小部件的选项,并添加翻译(德语)[mathias.leimgruber]
显示图标和wf状态标题 [mathias.leimgruber]
4.0.0a6 (2022-07-13)
使用基于vite的设置。[mathias.leimgruber]
使Plone 6.0.0a6兼容。[mathias.leimgruber]
4.0.0a5 (2022-07-06)
将ref浏览器实现为可折叠元素,以避免嵌套覆盖。[mathias.leimgruber]
webpack模块联邦配置修复 [mathias.leimgruber]
4.0.0a4 (2022-06-26)
使datagridfield可选。[mathias.leimgruber]
4.0.0a3 (2022-06-17)
更新readme。[mathias.leimgruber]
修复modal id。[mathias.leimgruber]
4.0.0a2 (2022-06-17)
修复classifierts并制作可安装的发布版。[mathias.leimgruber]
4.0.0a1 (2022-06-17)
Plone5.2/6和Python3兼容性。[gbastien]
基于bootstrap 5.2 + vuejs + webpack模块联邦对小部件(JS)进行完全重写。[mathias.leimgruber]
3.0.6 (2022-06-02)
处理边缘情况,如果上下文是plone根,而不是根的编辑视图。[mathias.leimgruber]
3.0.5 (2022-06-02)
为plone网站根添加fake编辑视图,以便在根上的添加视图中使用小部件。[mathias.leimgruber]
3.0.4 (2021-07-13)
修复tinymce内部链接集成问题。[mathias.leimgruber]
3.0.3 (2021-03-31)
修复DictRow、DataGridFieldFactory导入以兼容collective.z3cform.datagridfield的1.x和2.x版本。[mathias.leimgruber]
3.0.2 (2021-01-07)
在初始化小部件时设置初始request_path,以便在当前区域中进行搜索。[mathias.leimgruber]
3.0.1 (2020-12-15)
修复js包:与已登录用户合并,无依赖,因为它通过requireJS加载。[mathias.leimgruber]
3.0.0 (2020-12-15)
用ftw.reference widget版本替换plone select2基于的内部链接引用小部件。[mathias.leimgruber]
为plone 5.x tinymce准备使用。[mathias.leimgruber]
2.2.1 (2020-01-15)
将handlebars.js限制为认证用户。[tinagerber]
2.2.0 (2019-12-16)
修复使用portal_url,它不再全局可用。[mathias.leimgruber]
添加单独的Plone 5配置文件。[tinagerber]
为Plone 5添加卸载配置文件。[tinagerber]
2.1.1 (2019-11-29)
使用unittest而不是unittest2。[jone]
2.1.0 (2019-03-06)
禁用amd对handlbar.js的检查 [mathias.leimgruber]
添加Plone 5.1支持。[mathias.leimgruber]
2.0.0 (2018-11-19)
修复前端无法编辑portal_registry条目的问题 [Nachtalb]
ftw.referencewidget包没有设置版本号。因此,从ftw.upgrade中不会显示升级步骤 ../@@manage-upgrades。因此,第一个升级步骤 Upgrade ftw.referencewidget:default to 20181112105705: Fix registry field frontend edit 必须通过ZMI在 ../portal_setup/manage_fullImport 下安装。这将为包设置版本,因此可以通过 ../@@manage-upgrades 安装进一步的升级。
1.5.4 (2018-01-26)
修复UnicodeDecodeError。[mbaechtold]
1.5.3 (2017-11-24)
不再使用“plone.directives.form”。[mbaechtold]
修复加载包含 GridDataField 的页面时出现的错误问题 [Nachtalb]
1.5.2 (2017-10-23)
修复旧版 Chrome 浏览器中仅搜索当前路径的显示问题。 [mathias.leimgruber]
1.5.1 (2017-10-23)
仅修复搜索当前路径的问题。 [mathias.leimgruber]
修复显示新闻日期时的 UniCodeDecodeError。 [mathias.leimgruber]
1.5.0 (2017-10-23)
添加在当前路径中搜索的选项。 [Nachtalb]
将所有新闻条目的新闻日期标题本地化显示 [Nachtalb]
1.4.2 (2017-08-29)
修复当 Plone 站点位于挂载点内时 DataGridField 的 Bug。 [mbaechtold]
1.4.1 (2017-08-08)
添加对“collective.z3cform.datagridfield”的支持。 [mbaechtold]
1.4.0 (2017-07-07)
实现参考小部件的显示模式。 [mathias.leimgruber]
更改示例内容构建注册条目名称以避免冲突。 [mathias.leimgruber]
实现路径限制选项。 [mathias.leimgruber]
为给定的参考渲染隐藏的输入元素,而不是仅通过 JavaScript 渲染它们。这样,小部件的行为更像其他所有 plone 小部件。 [mathias.leimgruber]
为小部件实现一个额外的 traversal_query 参数。 [mathias.leimgruber]
为 IRelationChoice 字段实现 ReferenceObjPathSource。 [mathias.leimgruber]
1.3.0 (2016-11-09)
实现一些排序选项。 [mathias.leimgruber]
使用 plone.app.redirector 跟踪重命名和移动的内容。如果内容已被删除,则不会失败。 [mathias.leimgruber]
1.2.3 (2016-10-18)
修复如果传递给 IList/Widget 转换器的值不是列表而是字符串时的边缘情况(主要针对测试)。 [raphael-s]
1.2.2 (2016-10-18)
实现测试浏览器小部件。 [raphael-s]
1.2.1 (2016-10-17)
尊重字段设置的 missing_value。 [tschanzt]
仅通过 ReferenceWidget 实现对 ITextLine 的支持。 [mathias.leimgruber]
1.2.0 (2016-10-04)
显示从 plone 根目录开始的选定值的绝对路径。 [mathias.leimgruber]
移除选定元素中的列表样式类型和过时的间距。 [mathias.leimgruber]
明确实现对 IList 和 IRelationChoice 的支持。请参阅 Readme 获取更多信息 [mathias.leimgruber]
1.1.0 (2016-09-27)
忽略多值字段的空值。 [mathias.leimgruber]
通过不渲染 handlebar 模板支持 chameleon。 [jone]
1.0.4 (2016-09-19)
使能够删除给定的内部参考(单选按钮)。 [mathias.leimgruber]
忽略单值字段的空值。 [mathias.leimgruber]
修复按下“enter”按钮时的搜索。 [mathias.leimgruber]
在绑定新事件之前,始终取消绑定 ref 按钮上的点击事件。 [mathias.leimgruber]
1.0.3 (2016-09-14)
与 1.0.2 相同,但已上传到 PyPI。 [mbaechtold]
1.0.2 (2016-09-14)
当覆盖层重新加载时重新加载项目。 [tschanzt]
在搜索中尊重类型约束。 [tschanzt]
1.0.1 (2016-09-09)
在转换器中忽略空字符串。 [tschanzt]
改进覆盖层行为(在覆盖层外点击时关闭 + 按 ESC 键关闭)。 [mathias.leimgruber]
在创建覆盖层时获取小部件名称。 [tschanzt]
1.0.0 (2016-09-07)
初始版本 [tschanzt]
项目详情
ftw.referencewidget-4.2.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 059f872b4961bc6816fe955253ce32968882435897c6a393867e253f85ea9d7a |
|
MD5 | db621202f14bb31dc9f776344a9836f0 |
|
BLAKE2b-256 | e264312cfa16163ef85fe67e847f4295ac075b6dfd76b572a8ff9a317ddaccc7 |