跳转到主要内容

用于在Plone中搜索/选择门户对象的查找器

项目描述

Ajax弹出窗口用于浏览和选择Plone内容,适用于任何plone.formilb表单(部件、控制面板等)

此代码是从用于参考代理的PloneArticle浏览器中提取并进行了重构的。

目的是使其在各种情况下都可用

  • 在基于plone.formlib的Plone表单(例如部件或控制面板表单)中存储所选内容

  • 对于collective.ckeditor或任何可能的wysiwyg编辑器,用于在富文本字段中引用图片或内容,使用此产品也可以上传文件/图片并创建文件夹(依赖于collective.quickupload

  • 用于AT编辑表单中的可引用字段(未来)

  • 用于链接字段(如ATLink中的remoteUrl)以引用内部链接(未来)

这项工作始于2007年Ingeniweb,由Christophe Bosse(jQuery代码)和Jean-Mat Grimaldi(其他所有内容)为PloneArticle产品启动。

要求

  • Plone(已测试与Plone 3.3.5和Plone 4兼容)

  • collective.quickupload

安装

  • 如果您已安装collective.ckeditor(仅限Plone 4),则无需操作

  • 否则,使用buildout将Zope包安装为常规Zope包

    • 在您的eggs部分添加collective.plonefinder

    • 如果您的Plone版本为3.0或3.1,请在plone.recipe.zope2instance部分定义的zcml部分添加collective.plonefinder

    • 运行bin/buildout

无需其他操作。

如何在formlib表单中将它用作参考小部件

基本用法

此产品提供了一个用于zope3表单(zope.app.form)的参考小部件。

可以使用这个小部件在序列字段中存储对象引用。

在名为target_contents的元组字段中用作部件的示例

from collective.plonefinder.widgets.referencewidget import FinderSelectWidget

target_contents = schema.Tuple(title=u"Browse for contents",
                               description=(u"Choose contents to display "
                                            u"with a plone finder window."),
                               default=()
                               )

form_fields['target_contents'].custom_widget = FinderSelectWidget

调整一些属性

您可以使用FinderSelectWidget,并在您的AddFormEditForm中使用update方法设置一些属性。以下是一个用于部件AddForm的示例

class AddForm(base.AddForm):
    """Portlet add form.
    """
    form_fields = form.Fields(IReferencesPortlet)
    form_fields['targets'].custom_widget = FinderSelectWidget
    label = u"Add References Portlet"

    def update(self):
        super(AddForm, self).update()
        self.widgets['targets'].typeview = 'image'
        self.widgets['targets'].forcecloseoninsert = 1

    def create(self, data):
        return Assignment(**data)

如果您愿意,您还可以传递一个上下文作为小部件的基,以便在查找器中打开当前或父文件夹。以下是一个使用update方法的示例

assignment = aq_parent(aq_inner(self.context))
self.widgets['targets'].base = aq_parent(aq_inner(assignment))

还有两个针对文件和图片的定制小部件。查看代码以创建您自己的特定小部件。

支持文件上传的文件引用示例代码

from collective.plonefinder.widgets.referencewidget import FinderSelectFileWidget

target_files = schema.Tuple(title=u"Browse for images",
                            description=(u"Choose files to display "
                                         u"with a plone finder window. "
                                         u"You can upload new files."),
                            default=()
                            )

form_fields['target_files'].custom_widget = FinderSelectFileWidget

支持图片上传的图片引用示例代码

from collective.plonefinder.widgets.referencewidget import FinderSelectImageWidget

target_images = schema.Tuple (title=u"Browse for images",
                              description=(u"Choose images to display "
                                           u"with a plone finder window. "
                                           u"You can select different image sizes. "
                                           u"You can upload new images."),
                              default= ()
                              )

form_fields['target_images'].custom_widget = FinderSelectImageWidget

注意,在最后一种情况下,数据存储图像uid和图像缩略图大小如下

'%s/%s' % (image.UID(), thumb_size_extension)

thumb_size_extension可以是'image_thumb''image_preview'

因此,使用以下内容显示引用的图片

uid, variant = data.split('/')
'<img src="%s/resolveuid/%s/%s" />' % (portal_url, uid, variant)

自定义属性完整列表

属性

默认值

描述

finderlabel

_(u'Browse for contents')

自定义浏览器窗口的标题。例如,“查找图片”

moveuplabel

_(u'Move up')

与向上箭头小部件关联的标签,用于提高引用的顺序。例如,“提高优先级”。

movedownlabel

_(u'Move down')

与向下箭头小部件关联的标签,用于降低引用的顺序。例如,“降低优先级”。

deleteentrylabel

_(u'Remove item')

与“从列表中移除”小部件关联的标签。例如:"移除此视频"

类型

() # 所有类型

要在选择面板中显示的可选门户类型列表。例如:['文档']

typeview

'file'

可能的值有 'file''image''selection'。调整选择面板布局。

imagetypes

('图片', '新闻条目')

可以处理图片的门户类型序列(见 待办事项

selectiontype

'uid'

选定的项目作为 UIDs 返回到应用程序(表单)。其他可能的值是 'url'

showsearchbox

True

是否显示搜索框?

allowupload

False

如果用户有适当的权限,我们是否通过我们的小部件启用上传文件?见 在自定义文件夹类型中上传

openuploadwidgetdefault

False

我们是否默认显示上传小部件?

allowaddfolder

False

如果用户有适当的权限,我们是否通过我们的小部件启用添加新文件夹?

allowimagesizeselection

False

如果图片有多个大小,我们是否启用选择特定大小?(见上面注释)

forcecloseoninsert

False

当我们选择一个元素时,我们是否关闭查找器?

base

None

在打开查找器时用作查找器根的文件夹对象。None 表示 Plone 站点。注意由于本质原因,此属性不能静态设置,例如在 FinderSelectWidget 个人子类中,其他可以设置。请参阅简单自定义示例中的示例,了解如何从表单类代码动态更改小部件 base 属性。

开发者指南

如何在 WYSIWYG 编辑器中使用它

更简单的方法是创建一个特定的视图,因为您通常需要覆盖选择对象的 JavaScript 方法,因为每个编辑器都与浏览器有特定的协商。

请参阅 collective.ckeditor 包作为示例。

在自定义文件夹类型中上传

如果您希望让 plone 查找器用户在您的自定义或第三方文件夹类型中上传文件,您需要使用 IFinderUploadCapable 标记接口标记这些类型。如下面的自述 ZCML 示例所示

<class class="my.content.folderish.MyFolderish">
  <implements
     interface="collective.plonefinder.browser.interfaces.IFinderUploadCapable" />
</class>

默认情况下,collective.plonefinder 允许在 Plone 站点本身以及 ATFolderATBTreeFolder 中上传。

待办事项

  • 功能文档测试

  • i18n 支持

  • 查找器改进

    • Ajax 打开/移动/调整大小以及同一浏览器窗口内的所有窗口效果(进行中,需要一些 JavaScript 重构)

    • 改进上下文操作菜单(更改工作流状态、重命名、删除、复制、粘贴…)

    • 在查找器菜单中添加一个动作来显示/隐藏右侧面板中的当前选择列表

    • 从查找器窗口中删除项目

  • 改进 zope3 引用小部件属性

    • 添加选项以隐藏/显示或仅标记查找器浏览结果中的选定项(只需将查找器黑名单存储在会话中即可)

    • 添加选项以设置存储在会话中的特定编目查询

    • 添加选项以更改查找器编目。

  • 新的 zope3 小部件用于存储 URL(用于字符串字段)

  • Archetypes 支持

    • ATPloneFinderWidget 用于引用字段(不是很大的挑战,只需使用 ATReferenceBrowserWidget 作为基础开始工作即可)

    • ATLinkWidget 用于存储内部链接

  • Dexterity 支持(z3c.form)

  • 补充 typesimagetypes 属性,以提供其他未使用接口的更好灵活性。

  • 作为参数提供工厂,该工厂提供所需格式的结果。例如,您需要目标或某些计算值的具体属性。

  • 将代码组件化以提高灵活性。

欢迎任何贡献,请联系 support@ingeniweb.com

作者

Jean-mat Grimaldi - Alter Way Solutions

代码仓库

https://github.com/collective/collective.plonefinder

支持

变更日志

1.3.1 (2018-03-26)

  • 修复缩略图大小选择:现在正确设置了完整大小图像。[bsuttor]

1.3.0 (2017-10-02)

  • 使用 plone.api 而不是 IDirectoryFactory 创建文件夹,这防止了 dexterity 创建文件夹错误。新增依赖:plone.api。[bsuttor]

1.2.3 (2017-01-10)

  • FinderImageWidget:启用快速上传。[gotcha]

1.2.2 (2016-08-15)

  • FinderImageWidget:存储选择器而不是绝对 URL。[gotcha]

1.2.1 (2016-07-25)

  • 添加缺失的分号以避免在 prod 模式下 portal_javascript 时出现 JS 问题。[gotcha]

  • 添加检查值是否为 None(当添加图像后删除图像时)。[spereverde]

  • FinderImageWidget 中的 HTML 进行了一些重构以使其更清晰。[gotcha]

1.2.0 (2016-07-08)

  • 添加 formlib FinderImageWidget;使用

    # in interface class
    picture = schema.TextLine(title=_(u'Picture'),
                               description=_(u'Optional picture'),
                               required=False)
    # in form class
    form_fields['picture'].custom_widget = FinderImageWidget

    [gotcha]

1.1.4 (2016-03-30)

  • 修复在 finder 的查询表单序列化中带有特殊字符的 bug。[pgrunewald]

1.1.3 (2016-03-24)

  • 添加 openuploadwidgetdefault 选项,以便能够指定是否希望在默认情况下打开上传小部件,而无需单击“文件快速上传”按钮。[gbastien]

1.1.2 (2016-03-15)

  • 添加 showsearchbox 选项,以便能够轻松显示/隐藏搜索框。[gbastien]

1.1.1 (2016-02-23)

  • 重新应用 1.0.2 中的修复,这些修复可能在迁移到 github 中丢失。[gotcha]

1.1.0 (2016-02-16)

  • 使用获取图像的新方法。调用 /@@images/image/preview 而不是 /image_preview。[bsuttor]

  • 通过 IFinderUploadCapable 添加 plone.app.contenttypes.content.Folder 的实现。[bsuttor]

  • 为 plone.app.contenttypes 图像提供基本支持。[kiorky]

1.0.7 (2014-09-15)

  • 修复:使用 ckeditor 时,新闻条目的链接不再链接到其图像。1.0.4 中的修复在 1.0.5 中丢失。[gotcha]

1.0.6 (2014-03-05)

  • 修复错误的引号测试。[bsuttor]

1.0.5 (2014-03-05)

  • 修复创建对象时的作用域容器。容器是第一个非 portal_factory 对象。[bsuttor]

  • 大量代码简化(尚未完成,grep for “FIXME:”)。[glenfant]

  • 在 README 中添加更多文档(解释所有相关用法)。[glenfant]

  • 所有可能的文件中的 SVN 标记。[glenfant]

  • 大量优化(尚未完成,grep for “FIXME:”)。[glenfant]

  • 在代码中注释了晦涩的功能。[glenfant]

  • 修复 image 字段为 reference 类型的场景。[toutpt]

1.0.4 (2013-09-09)

  • 修复:使用 ckeditor 时,新闻条目的链接不再链接到其图像。[gotcha]

1.0.3 (2013-06-12)

  • 与 Plone 4.3 的兼容性。[toutpt]

1.0.2 (2011-08-19)

  • 始终在导航列中显示完整站点结构。[spereverde, yulka, gotcha]

  • 在面包屑导航中,避免链接到用户没有查看权限的文件夹。[spereverde, yulka, gotcha]

1.0.1

  • CSS IE7 修复 macadames - 2010/09/22

  • finder.pt:模板修复缺少 doctype macadames - 2010/09/22

  • finder.pt:从 html 标签中删除 lang 属性 - 我们不需要它,并且在 Plone3 / Plone4 之间难以维护 macadames - 2010/09/26

1.0.0

  • 使用 Plone 快速上传作为上传工具 - 新增依赖 collective.quickupload macadames - 2010/09

1.0.0-b2

  • 修复在使用 FinderSelectWidget 编辑表单时发生的未授权错误,当用户没有权限访问某些引用内容时。在这种情况下,对象不会被从列表中删除,而是显示对象标题的消息:“%s : %s” % (_(u“您没有权限访问此对象”)),uid)

  • 添加:当 self.multiselect = False 或 self.forcecloseonsinsert = False 时关闭窗口

  • 修复当标题中有引号时的 selectItem

  • 添加了用于打开文件夹的引用小部件的 base 属性。

  • 在参考小部件中使用Unicode字符表示上下箭头。

  • 允许通过请求和参考小部件更改图像类型。

  • 为Plone3内容类型图标添加了生成的CSS。

  • 在浏览器中添加了新属性self.filestypes。

  • 在查找器中为文件类型添加了MIME类型图标。

  • FinderSelectWidget:当找不到对象时不再引发错误,而是用消息替换标题(UID不存在的对象)。

  • 修复了allowupload的回归问题(从未允许)macadames - 2010/07/21

  • 修复了使用请求或self.browse = False启用/禁用浏览的问题 macadames - 2010/07/22

  • 当浏览被禁用时,不要在另一个路径上搜索 macadames - 2010/07/22

  • 使用jQuery.uploadify添加了多个上传的标题字段 macadames - 2010/07/24

  • 当可能时,使用cookie进行闪存上传的认证(与collective.uploadify相同的方法),否则使用票据(PloneFlashUpload方法)macadames - 2010/07/28

  • 使用标准archetypes方法“invokeFactory”,通过上传的文件创建新对象,以遵守完整的Plone createObject过程。macadames - 2010/07/28

  • 在请求中添加了新的mediaupload键,用于设置上传的内容类型(与jQuery.uploadify非常实用)macadames - 2010/07/28

  • 改进了jQuery.uploadify的过程,增加了错误处理macadames - 2010/07/29

  • 添加了新的CSS类required,用于在Plone4上显示图标(icons-on)macadames - 2010/07/31

  • 修复了Plone4上的上传按钮样式 macadames - 2010/07/31

  • 修复了Plone3或Plone4 +经典主题的一些CSS样式 macadames - 2010/07/31

  • 设计改进 macadames - 2010/07/31

  • 法语翻译正在进行中 macadames - 2010/07/31

  • 使用InavigationRoot作为查找器根,不再使用IPloneSiteRot macadames - 2010/08/01

  • 设计改进,蓝色是新的颜色 macadames - 2010/08/01

  • 添加了新的视图属性root和rootpath,用于更改浏览器根 macadames - 2010/08/02

  • 添加了真正的左侧导航树 macadames - 2010/08/02

  • 将属性视图中的持久化对象替换为数据字典,即self.data['root']而不是self.root macadames - 2010/08/04

  • 当作用域是主题时,使用topic queryCatalog macadames - 2010/08/04

  • 添加了对z3c.autoinclude的支持 macadames - 2010/08/20

1.0.0-b

  • 在查找器中显示的图像大小来自门户属性图像属性,如果存在的话

  • 选择图像大小:添加了上下文菜单

  • 许多IE修复和外观更改

  • Plone4图标样式也在Plone3下使用

  • 为zope3表单添加了参考对象小部件(可用于部件中)

1.0.0-a

  • 初始发布

项目详情


下载文件

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

源分布

collective.plonefinder-1.3.1.tar.gz (131.5 kB 查看哈希)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面