自定义Plone "添加门户内容"菜单
项目描述
摘要
此产品使得自定义Plone "添加新..."菜单成为可能,通常该菜单由Plone可用的内容类型填充。
此设计旨在避免无用的内容类型,同时帮助非技术用户的UI体验。
您可以使用此功能将新的非标准内容添加到菜单中(如JavaScript链接)。见下文。
此项目的想法
此案例与为提高可用性而添加到Plone中的开发内容类型相关。
例如:您是否曾经使用过Plone4ArtistsVideo或collective.flowplayer?在这些产品中,想要向网站添加新视频的用户必须使用“添加新...”菜单并选择“文件”内容。
因此,编辑器(在现实生活中从不是开发者...你必须接受这一点)必须知道当他添加新文件时,它神奇地变成了视频...这并不那么容易理解;在没有培训或以往经验的情况下,也不可能理解它。用户能否在菜单中看到“添加新视频”会更好吗?
目前最佳的可用性选择是向菜单中添加新内容类型,或开发新的辅助小部件,显示一些链接,如“在此处添加新视频”。
在第一种情况下,如果内容足够,只需复制/粘贴原始使用内容(复制/粘贴文件内容类型,并将其重命名为“视频”等)。但是你知道……我们其实并不需要那些新的内容类型。
在第二种情况下,一切正常,但Plone用户知道的是查看右侧菜单来搜索可添加的类型,而不是在菜单中查看,还要在其他地方查看。
所以
用户知道,为了添加新的内容类型,他们必须使用“添加新…”
用户常常忽略了Plone背后的魔法(比如变成了视频的文件)
开发者不喜欢只为了帮助最终用户添加新的愚蠢的内容类型(不,他们不是坏人)。
上述问题与“添加新…”菜单不可定制的状态有关:如果能够向此菜单添加一个新的、虚假的条目,编辑器和开发者都会很高兴。回到视频示例
经典的文件条目(指向http://myhost/mysite/createObject?type_name=File)
一个新的“视频”条目(同样指向http://myhost/mysite/createObject?type_name=File)
此产品专为解决此类或类似的可用性问题而设计,但可以帮助您自定义上下文中的现有菜单元素(例如:在文件夹中添加新的“新闻条目”内容的行为可以自定义为一个其他内容类型的别名,但仅限于这个特殊文件夹,或者您可以通过一个假的espression禁用文件夹中的内容类型,……)。
如何使用
安装
只需将egg添加到您的buildout中,然后重新运行它。
[instance] ... eggs = ... redturtle.custommenu.factories ...
如果您在Plone 3.2或更低版本上测试此产品,请记住添加ZCML slug和覆盖。
之后,在Plone中安装新产品。
TALES表达式
在上面的TALES表达式中,您可以使用以下变量
- context
当前上下文,按照Plone的正常含义
- container
当前上下文的容器,或如果上下文是容器,则为上下文本身。这在编写需要记住文件夹默认文档的表达式时很有用。
- portal_url
从Plone站点获取的portal_url工具。
通用设置支持
Juan. [nueces] 为此软件包提供了通用设置支持
<?xml version="1.0"?>
<object>
<property name="inherit">True</property>
<custommenu>
<property name="element-id">pdf-file</property>
<property name="element-name">PDF Document</property>
<property name="element-descr">A file content to be filled with a PDF document</property>
<property name="icon-tales">string:$portal_url/pdf_icon.gif</property>
<property name="condition-tales"></property>
<property name="element-tales">string:${container/absolute_url}/createObject?type_name=File</property>
</custommenu>
<custommenu>
...
</custommenu>
<object name="documents">
<property name="inherit">True</property>
<custommenu>
...
</custommenu>
<object name="ebooks">
<property name="inherit">True</property>
<custommenu>
...
</custommenu>
...
</object>
...
</object>
...
<object>
要进行全面代码检查,请访问 collective.examples.custommenufactories。
依赖关系
已对所有从 3.3 到 4.3 的 Plone 版本进行了测试。
待办事项
用于管理条目的 JavaScript 功能
代码需要重构
考虑从门户根目录继承自定义,而不仅仅是来自根目录
需要测试子站点
变更日志
0.3.1 (2015-02-24)
修复了在不可注释的文件夹(不常见,但可能发生在旧软件如 PloneGazette 上)时的问题。[keul]
Plone 3/Plone 4 对默认菜单标题和描述的兼容性 [keul]
修复了测试 [keul]
Pyflakes 清理和相关的错误已修复 [keul]
0.3.0 (2013-07-10)
提供了通用设置支持 [nueces]
现在无法不安装产品就管理菜单 [keul]
禁用了无用的 JavaScript [keul]
现在也支持单条目菜单(关闭 #1)[keul]
现在支持 Plone 4 风格的图标 [keul]
0.2.0b - (2010-02-17)
现在必须按上下文启用和禁用本地自定义 [keul]
修复了 XHTML 结构和验证问题 [keul]
修复了 CSS 类名,使其与 Plone 一样使用驼峰式命名法 [keul]
添加了测试 [keul]
修复了模板,使其与测试兼容 [keul]
修复了条目删除中的错误 [keul]
添加了对条目所需元素的缺失检查(在事实中是可选的)[keul]
为 z3c.autoinclude 添加了 egg 支持 [keul]
现在对于具有相同 id 的元素,如果条件为 False,则隐藏继承的元素 [keul]
添加了 Plone 4 兼容性 [keul]
0.1.0a - (2010-01-04)
初始发布
项目详情
redturtle.custommenu.factories-0.3.1.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e94995d73cf65a864fad0eaa06b3bf2857cd3a28116601db91c8cf44685f2fe0 |
|
MD5 | e0ffef547d3e644b9db02795cd4fde12 |
|
BLAKE2b-256 | 19e7f2fcab61a25b894912610a889303a2ba384139d74817106c9dccdeaa4dda |