为Archetypes实现的参考浏览器
项目描述
介绍
这是一个参考浏览器小部件的实现。它提供用于Archetypes参考字段的控件。这个小部件可以单独使用,或者作为Plone 3中ATReferenceBrowserWidget的替换,并包含在Plone >= 4中。与ATReferenceBrowserWidget不同,archetypes.refencebrowserwidget使用覆盖而非弹出窗口来显示参考浏览器。
版本
该产品的第1个版本是经典的弹出窗口,与Plone 3和4兼容。产品的第2个版本将浏览器显示为jQuery覆盖。目前仅在Plone 4和Plone 5上进行测试。
变更历史
变更日志
2.5.11 (2020-03-21)
错误修复
较小的打包更新。[各种] (#1)
2.5.10 (2017-12-11)
错误修复
删除对plone.app.form的依赖。[MatthewWilkes]
2.5.9 (2017-03-09)
错误修复
修复Products.ATContentTypes.interfaces的导入位置。[thet]
2.5.8 (2016-08-10)
修复
使用zope.interface装饰器。[gforcada]
2.5.7 (2016-02-12)
修复
修复以与Plone 5兼容。[vangheem]
更新以与新plone.batching分页选择器以及旧选择器兼容。[thet]
2.5.6 (2015-11-27)
修复
如果使用参考浏览器小部件添加的对象的路径级别不可由当前用户访问,则不会失败。[gbastien]
2.5.5 (2015-10-27)
修复
将读者无权访问的元素显示为“未公开”,而不是抛出未经授权。[pbauer]
2.5.4 (2015-09-27)
遵循README/CHANGES最佳实践。[tisto]
对isNotSelf()进行更合理的检查,这导致抛出KeyError [alecpm, tkimnguyen]
2.5.3 (2015-04-15)
将参数‘use_wildcard_search’添加到小部件,默认为True。[gbastien]
用$替换jq的使用。[keul]
修复由于最近版本中全局函数重构导致的引用排序问题。[keul]
在弹出窗口小部件中添加图像标签。[mitakas]
修复了在字段设置了allowed_types时小部件的浏览问题。[#16]
(警告:已将视图/getResult的返回值从[`brain1, brain2,..`]更改为[dict(item=brain1,browsable=True, referenceable=False),...],如果您自定义了popup.pt)[fRiSi]
2.5.2 (2014-09-11)
修复“清除引用”按钮,该按钮由于隐藏在匿名函数中的refbrowser_removeReference函数而无法工作。[thet]
修复了allowed_types。[agitator]
2.5.1 (2014-07-10)
通过使用jQuery的on(附加到文档)而不是live,修复与jQuery 1.9兼容的JavaScript。[thet]
使用与jQuery >=1.7兼容的前向兼容测试来修复已检查的项目。[arterrey]
修复了当引用的对象不再存在时的非多引用选择。[mattss]
2.5.0 (2014-02-23)
不要使用portal_interface工具,而是使用@@plone_interface_info(PLIP #13770)。[ale-rt]
过滤掉为None的引用。这可能发生在引用目录从源到不再存在的目标有链接时。[maurits]
2.4.19 (2013-08-13)
修改分页链接选择器,现在仅使用“.listingBar”而不是“div.listingBar”。批量导航.pt模板可以在主题中自定义并使用不同的结构,例如“ul.listingBar”。[vincentfretin]
如果base_query中有sort_on参数,则使用它来显示文件夹内容,而不是getObjPositionInParent。[thomasdesvenain]
2.4.18 (2013-05-23)
添加了两个小部件属性,允许在弹出窗口的两个槽位(顶部和底部)中添加帮助信息。[thomasdesvenain]
在弹出窗口中添加了css ids。[thomasdesvenain]
封装jQuery函数以提高兼容性。[esteele]
2.4.17 (2013-03-05)
2.4.15版本破坏了非多引用选择。添加了代码来区分多和小部件id。修复了http://dev.plone.org/ticket/13402 [smcmahon]
2.4.16 (2013-01-13)
添加了一个通过路径搜索相关项目的选项。[plamut]
2.4.15 (2012-12-14)
在编辑内容时,使新添加的引用与现有引用可排序。修复了http://dev.plone.org/plone/ticket/13271 [gbastien]
在搜索框中使用HTML5占位符属性。替换了已弃用的inputLabel类。[danjacka]
2.4.14.1 (2012-11-07)
修正了拼写错误 [tomgross]
2.4.14 (2012-10-18)
使用normalizeString创建项的门户类型和审核状态的类名。修复了http://dev.plone.org/plone/ticket/11400。 [danjacka]
防止在损坏的目录上搜索失败 [tomgross]
2.4.13 (2012-10-11)
在可链接项目中恢复了“视图”链接(与Plone 3类似):它将在弹出窗口中打开元素的预览。[keul]
修复了小部件视图中引用元素的排序顺序。[gbastien]
在弹出窗口搜索表单中使用时,考虑搜索索引。[gbastien]
2.4.12 (2012-08-11)
在弹出窗口中显示项目图标。[thomasdesvenain]
限制弹出窗口中复选框列的宽度。[thomasdesvenain]
2.4.11 (2012-04-09)
修复了弹出窗口中面包屑导航的国际化。[thomasdesvenain]
2.4.10 (2012-02-09)
我们可以通过小部件上的browsable_types参数限制可浏览的类型。[thomasdesvenain]
2.4.9 (2011-12-08)
更新查询以考虑allowed_types [hpeteragitator]
修复了ie中的表单提交问题 #11984 [tom_gross]
2.4.8 (2011-11-23)
完成了MANIFEST.in [tom_gross]
2.4.7 (2011-11-23)
添加了MANIFEST.in [tom_gross]
2.4.6 (2011-11-23)
修复了发布 [tom_gross]
2.4.5 (2011-11-23)
修复了plone.uuid >= 1.0.2的测试 [tom_gross]
2.4.4 (2011-08-19)
修复:文本搜索应在导航根目录之外进行搜索 [gotcha]
2.4.3 (2011-07-04)
为可选项目使用标签。[esteele]
修复:文本搜索从导航根目录开始搜索。[thomasdesvenain]
将checkPermission从小部件模板移动到辅助器 [tom_gross]
修复了当allow_sorting = 1时referencebrowser.js的错误 [toutpt]
2.4.2 (2011-06-02)
修复:当字段是多值时,在项目选择时未关闭覆盖。[thomasdesvenain]
修复了未定义变量checkPermission [kiorky]
修复了refbrowser_moveReferenceDown和refbrowser_moveReferenceUp中的错误,这导致在将引用项目移动两次时页面刷新。参见http://dev.plone.org/plone/ticket/11859 [cewing]
修复了排序脚本中的错误,这导致无法检测引用项目列表的头部或尾部项目。参见http://dev.plone.org/plone/ticket/11859 [cewing]
2.4.1 (2011-05-12)
添加了js黑客,将overlay div移动到body的直接子代,以避免IE7 z-index错误。修复了http://dev.plone.org/plone/ticket/11465。[smcmahon]
2.4 (2011-04-11)
修复了在plone.uuid存在但未用于Archetypes内容(例如Plone 4.0上的plone.app.discussion 1.0)时UID查找的回归。[davisagli]
2.3 (2011-04-01)
修复:当搜索被禁止时,小部件不工作。[thomasdesvenain]
2.2 (2011-02-25)
如果定义了startup_directory_method,则修复了getStartupDirectory方法,它不能被遍历。[hannosch]
在覆盖构造或刷新时检查小部件中检查的引用。[csenger]
当在值列表中取消选中时,不要在覆盖中禁用复选框。从值列表中删除已取消选中的项。修复了http://dev.plone.org/plone/ticket/10786 [csenger]
2.1 (2011-01-03)
不要在Zope 2.13上发出弃用警告 [tom_gross]
固定图像预览的标题显示 http://dev.plone.org/plone/ticket/11290 [tom_gross]
修复:如果浏览限制在启动目录,则不返回结果。[thomasdesvenain]
对输入标签id进行限定以避免名称冲突。修复了 http://dev.plone.org/plone/ticket/11325。[malthe]
确保在模板中转发 at_url 时始终引用。[deo]
在所有地方使用 at_url 的URL引用,并在Python代码而不是模板中进行引用。修复了 http://dev.plone.org/plone/ticket/11297 [tom_gross]
清理了面包屑代码 修复了 http://dev.plone.org/plone/ticket/11289 [tom_gross]
2.0 (2010-09-06)
修复了“你在这里:”的i18n。[vincentfretin]
为jquerytools设置最小版本,以避免此问题 #10939 [do3cc]
编码搜索-URL。修复了 http://dev.plone.org/plone/ticket/10942 [tom_gross]
2.0rc2 (2010-07-29)
确保弹出窗口可以通过与Plone 4中其他弹出窗口相同的方式关闭。修复了 http://dev.plone.org/plone/ticket/10773 [davisagli]
修复了bug:由于不正确使用TALES路径表达式,弹出窗口没有渲染空标题的文件id。现在使用浏览器方法。[kleist]
2.0rc1 (2010-07-12)
修复了分页链接的链接重新绑定(感谢Mustapha Benali!)[tom_gross]
2.0b4 (2010-06-02)
修复了标题显示(在2.0b3中引入)
2.0b3 (2010-06-02)
使用getOverlay()代替已弃用的getContent() 关闭 http://dev.plone.org/plone/ticket/10548 [esteele]
使用精灵中的内容图标 关闭 http://dev.plone.org/plone/ticket/10543 [tom_gross]
2.0b2 (2010-04-23)
添加缺失的返回false以防止重新排序时页面刷新 [cah190,esteele]
在参考浏览器中视觉上标记已相关对象 [tom_gross]
仅当字段确实可排序时才在添加时显示排序箭头 [tom_gross]
使用Python doctest而不是zope.testing.doctest [tom_gross]
2.0b1 (2010-04-08)
更新了软件包描述 [tom_gross]
将javascript文件合并为一个,仅与widget一起包含 [tom_gross]
详细文档
介绍
archetypes.referencebrowserwidget是Plone/Archetype的一个用于关系字段的widget。它添加了一个新的引用widget,允许您在创建引用时搜索或浏览门户。它可以作为默认ATReferenceBrowserWidget的嵌入式替代品或作为独立widget使用。
要将其作为替代品安装,只需通过quickinstaller安装产品。要作为独立widget使用,请参阅demo.py中的demotype。该widget试图与前辈ATReferenceBrowserWidget兼容。您可以使用与标准ReferenceField和ATReferenceBrowserWidget相同的属性。
使用此widget时,每个widget都提供了两个按钮。一个是打开一个弹出窗口,允许您进行搜索/浏览,另一个是清除引用或选定的引用(将在表单的“保存”后生效)。
弹出窗口基本上由两部分组成。上半部分是搜索表单,下半部分是浏览器/搜索结果部分。两部分都可以通过widget的属性关闭或打开。
搜索部分在widget中有额外的配置(见下面的属性)。
该widget支持
弹出内容仅查询目录。这是巨大的!与ATReferenceBrowserWidget相比,性能有显著提升。尝试使用这两个widget访问包含10k+对象的文件夹。
通过适配器实现通用referencefield实现。开箱即用,它支持Archetypes.ReferenceField和plonerelations.ATField。
通过命名模板实现覆盖弹出模板
通过简单的属性可调整大小的弹出
良好的unittest和集成测试覆盖率
属性
弹出窗口可以通过以下小部件属性进行配置
default_search_index:当用户在弹出窗口中搜索时,默认使用此索引。默认指向“SearchableText”。
show_indexes:在弹出窗口中,当设置为True时,将显示一个下拉列表,其中包含用于搜索的索引。如果设置为False,则使用default_search_index。
size:对于单选小部件,默认设置为30。对于多选,默认为8。
available_indexes:可选字典,列出了可用于搜索的所有索引。格式:{‘<目录索引>’:’<友好名称’>, … } 友好名称是最终用户看到的,以便使索引对他来说更有意义。如果不使用此属性,则将显示所有索引(我认为没有人应该允许这种情况发生!)。
allow_search:在弹出窗口中显示搜索部分
allow_sorting:允许您更改引用对象的顺序(需要multiValued=1)
allow_browse:在弹出窗口中显示浏览部分
search_catalog:要使用的目录。默认为:portal_catalog
startup_directory:弹出窗口打开的目录。可选。省略时,使用当前文件夹;如果在site_properties下找到属性refwidget_startupdirectories,则搜索startup_directory。
属性是一个行字段,其格式如下
path1:path2
path1是所有小部件设置的路径,其中没有设置startup_directory时,设置path2为startup_directory。
startup_directory_method:方法或变量的名称,如果实例中可用,则用于获取启动目录的路径。如果存在,则忽略‘startup_directory’。
restrict_browsing_to_startup_directory:允许您将面包屑(‘allow_browse’属性)限制为仅启动目录内的内容。因此,您无法在层次结构中向上移动。(默认:0 = 禁用)
image_portal_types:指定图像portal_types的列表。这些类型的实例在弹出窗口小部件中进行预览
image_method:指定添加到图像URL中以特定分辨率预览图像的方法的名称(例如,‘mini’用于缩略图)
show_review_state:允许您显示对象的流程状态(默认为关闭)
show_path:显示引用对象的相对路径(相对于门户对象)
only_for_review_states:仅当项目的流程状态与指定的匹配时才可引用(默认:None = 不按流程状态过滤)
history_length:启用历史功能,显示最后N个访问文件夹的路径(默认:0 = 无历史记录)
force_close_on_insert:当用户选择插入时关闭弹出窗口。这将覆盖多选模式中的行为。
base_query:定义将应用于所有搜索的查询术语,主要用于在allow_browse=0时创建特定的限制。可以是包含查询参数的字典,或cotext中可用的方法或可调用的名称。
hide_inaccessible:在视图模式下不显示不可访问的对象(无权限)
show_results_without_query:不要忽略空查询,但显示结果
popup_width:弹出窗口宽度(像素)。默认值:500
popup_height:弹出窗口高度(像素)。默认值:550
popup_name:用于弹出窗口的模板的名称。要使用其他模板,必须为此模板注册一个命名的适配器。例如
- <zope:adapter
for=”Products.Five.BrowserView” factory=“.view.default_popup_template” name=”popup” provides=”zope.formlib.namedtemplate.INamedTemplate” />
请参阅默认实现和单元测试示例。
设计说明
这些说明是从原始ATReferenceBrowserWidget中摘录的。由于我没有更改ui,它们仍然有效(我认为!?)。
这两个模板(小部件和弹出窗口)都是原型。还有一些内联样式,特别是在弹出窗口中,因为我不想与plone的css内容纠缠,也不想进行黑客攻击和诡计来合并自己的样式表。所以,这仍然是一个感兴趣的问题。
此外,我还做出了一些设计决策。目前,在弹出窗口中,所有对象(在浏览时)都会显示出来,可能被引用的对象会被加粗,其他对象则被灰色显示。我选择显示不可引用的对象,因为它们可能是帮助用户查找要浏览的对象的重要背景信息。另外,对于多值小部件,我选择了弹出窗口保持打开状态,这样你就可以继续添加引用,而无需反复重新打开弹出窗口。问题是,你必须自己关闭窗口。如果这变成一个烦恼,可能会有所改变。
与一般表单更相关的一件事是,在点击“保存”之前,必须先在多选列表框中选择项目,否则只有选择的项目会被提交。这在用户体验方面有些糟糕,因为现在用户基本上必须进行两次选择:首先在弹出窗口中选择项目,其次在列表框中再次选择它们。目前,我将其设置为默认选中项目,但如果用户开始点击列表,则可能存在问题。顺便说一下,inandout小部件也存在相同的问题。最好的做法是在表单提交前通过脚本选择所有项目,以便提交完整列表。但这可能需要在base_edit表单中进行更改。但这是一件值得思考的事情,因为现在已经有两个小部件需要这样准备(inandout和这个,尚未查看picklist,可能也存在相同的问题)。
无论如何,祝您使用愉快,如果您有建议,请告诉我。如果您发现问题,请在可能的情况下修复它们。
贡献者
Tom Gross,itconsense@gmail.com 作者
Danny Bloemendaal,部分代码取自ATReferenceBrowserWidget实现
Alexander Limi,limi@plone.org 为改进UI
Carsten Senger,senger@rehfisch.de 改进用户体验
Mathieu Le Marec - Pasquet,模板修复
Thomas Desvenan,thomasdesvenain@gmail.com 修复和少量功能
Peter Holzer,hpeter@agitator.com 查询更新/修复
Gauthier Bastien,gauthier@imio.be 修复错误
Harald Friessnegger,harald@webmeisterei.com 修复错误
下载
项目详情
archetypes.referencebrowserwidget-2.5.11.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e5324df722e7eb3eeb2b62c0644baadcfbe2d0fe9022f123b3f43b94b2221e13 |
|
MD5 | 8edb26e9f739cf78e423364c7f0f0e61 |
|
BLAKE2b-256 | 7886c0b94d6010b2c3e06b7b67fa44a209d27ab9da4d6d5ddc53772323d1979d |
archetypes.referencebrowserwidget-2.5.11-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 71dc2705d36f57d7474c4d671103473967416c0a9073e3063adaa1551ecaaab3 |
|
MD5 | ec5b6e2d139001c19265d6b1918b3371 |
|
BLAKE2b-256 | f69a94205232b59ad1d0df60d39a7740354dfe9553f54209ec6af94cb242afba |