支持上传和引用内容的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]
archetypes.uploadreferencewidget-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69225b73dc820d37ec085534a6f5137cd81b43914cec5a1cba0187338a714902 |
|
MD5 | 902d491dff689b3cc71a65fbf12c996f |
|
BLAKE2b-256 | 8ddcebabe562a286636837ec1af7d555c45ca6947dc89f7d5556c8973debcbdf |