跳转到主要内容

支持上传和引用内容的Archetypes小部件。

项目描述

上传引用小部件

上传引用小部件旨在成为在创建使用文件的内容项时上传文件的 主要机制。而不是将文件嵌入到内容项中,此小部件将文件作为单独的项目上传,并自动在内容项中填充引用。现在Plone可以以更用户友好的方式重复使用图像和文件资源。

问题

我们在Plone CMS中重复使用文件资源时遇到的最大问题之一是,一旦文件被上传为内容的属性,就无法轻松重复使用它。以下是一个示例场景:

  • 您在“/news/foo.html”中创建了一个“新闻条目”,并上传了一张图片,“logo.jpg”,展示了公司标志。要引用此图片,您必须转到类似“http://host/news/foo.html/logo.jpg”的URL。

  • 两周后,您在“/news/bar.html”中创建另一个“新闻条目”,您不希望重新上传公司标志。您只想重复使用现有的公司标志。您在哪里找到它?

  • 我们可以浏览内容并转到“/news/foo.html”,然后在“新闻条目”中看到“logo.jpg”。虽然这是可能的,但不太可能有人创建了一个容器来上传图片。特别是默认的Plone“新闻条目”实现不是这样工作的。

建议的解决方案

创建一个新的“UploadReferenceWidget”。这个组件将作为一个替代的ReferenceWidget,并保留所有参考字段/组件的功能。但它将允许用户上传一个“文件”。字段/组件的策略可以规定文件被放置在特定的文件夹中。以这个场景为例

  • 我们知道在“http://host/corporate/news”的所有内容都是商业新闻。

  • 当用户创建一个“新闻条目”并使用名为“image”的Upload Reference Widget上传“logo2.jpg”时,我们需要根据策略确定这个图像“logo2.jpg”放置在哪里?策略可能会将其放置在/images/logos文件夹中。

  • 策略需要完成所有工作。组件本身不会起到帮助作用。文件将被放置在'/images/logos'文件夹中,然后新闻条目的图像属性将引用'/images/logos/logo2.jpg'的引用ID。

实现细节

新的组件有两个主要功能

  • 上传新文件:创建一个新对象并对其创建引用

  • 选择现有对象:对其创建引用

在上传新文件时,组件会检查文件类型(mimetype)并创建相应内容类型的实例:文件或图像。这个内容将创建在组件中定义的'startup_directory'属性所指定的目录。

示例用法

查看'demo.py'文件以获取此组件的简单示例用法。

浏览和选择功能由'archetypes.referencebrowserwidget'提供,这意味着你可以使用其所有当前功能。

查看“完整选项参考”:http://tinyurl.com/referencebrowserwidget-options 在线。

它包含默认属性值的列表及其含义。

变更日志

0.2.1 (2010-09-22)

  • 添加了MANIFEST.in文件。[WouterVH]

  • 修复了pot文件中的i18n-domain。[WouterVH]

  • 添加了荷兰语翻译。[WouterVH]

  • 添加了本地化。[toutpt]

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

  • 修复了registerType。由于Archetypes 1.3.2,它需要一个包名。[toutpt]

0.2 (2009-03-22)

  • 将我们的皮肤层添加到所有皮肤路径。[deo]

  • 修复了在metadata.xml和configure.zcml上的依赖注册。[deo]

0.1-alpha(未发布)

  • 记录正在应用monkey patch的事实。[runyaga]

  • 转换为archetypes.uploadreferencewidget,并改为使用archetypes.referencebrowserwidget而不是Products.ATReferenceBrowserWidget。[swampmonkey]

UploadReferenceWidget的变更日志

1.1 (26-11-2007)

  • 修复了TestCase中的持久性错误,该错误导致测试表现不同,取决于它们如何运行或Plone版本。[deo]

  • 修复了demo.py代码中'startup_directory'的使用。[deo]

  • 确保当其值为空时,组件将“使用当前对象”作为'startup_directory'。[deo]

  • 修复了当组件的字段被标记为必填时“无法保存对象”的问题。[deo]

1.0.1 (16-11-2007)

  • 重新编写了MonkeyPatch代码,使其更加健壮,并修复了正确的。[deo]

  • 修改了一个测试,使其在所有Plone版本上都能运行。[deo]

1.0 (14-112007)

  • 修复了README.txt中的文本格式,使用StructuredText标记。[deo]

  • 修复了表单验证失败时不上传文件的问题。[deo]

  • 为Archetypes BaseObject._processForm方法添加了MonkeyPatch,这样我们就不需要将整个世界升级到未发布的Archetypes版本。[deo]

0.5 (30-10 2007)

  • 当可用时,使用来自ATReferenceBrowserWidget的reference_edit宏(存在于1.7.2和2.0.1版本),以避免重复标题/描述字段文本。[deo]

  • 添加了多文件上传功能。当组件支持多个值时,你现在可以一次上传多个文件。[deo]

  • 修复了从 Internet Explorer 上传到运行在非 Windows 操作系统上的 Zope 服务器时,目录路径没有被从文件名中移除的 bug。[deo]

  • 改进了 'startup_directory' 的处理:如果路径不存在,文件将上传到实例本身(在文件夹对象的情况下),或者其父目录。[deo]

0.2 (10-09-2007)

  • 改进了 README.txt 文件的内容。增加了关于测试和示例使用的信息。[deo]

  • 对演示架构进行了重命名、简化,并添加了第二个非多值字段。[deo]

  • 修复了上传功能,使其在字段不是多值时也能正常工作。[deo]

0.1 (24-08-2007)

  • 初始版本。[deo]

支持