跳转到主要内容

自定义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中安装新产品。

自定义菜单

在您的“添加新…”菜单中,您会发现一个新的“自定义菜单…”条目。这将带您到一个表单,您必须在此处启用当前上下文的自定义功能。之后,您可以使用自定义表单来管理本地菜单更改。

http://keul.it/images/plone/redturtle.customizemenu.factories1.png

对于每个新的条目,您必须填写以下信息

id

在此处输入一个字符串,用作添加HTML id属性到新元素。您不需要提供它,但如果您使用了已经存在的id,新id将覆盖旧id。这样,您可以替换一个原生(或继承)菜单条目,以一个新的条目。

name

必需。提供用于显示新元素的字符串。

description

描述用于在元素上提供悬停提示。

icon

一个TALES表达式,可以用于为新元素提供图标(非常常见)。

condition

一个TALES条件表达式。如果不提供,新元素将被添加到菜单中。如果提供,它将评估为True或False,因此元素将被显示或不会显示。

URL

必需。一个TALES表达式,用于在元素中的链接上渲染HREF属性。您在这里有完全的自由:您也可以将字符串渲染为“javascript:…”,以提供一些JavaScript功能。

您还可以继承在网站根目录中完成的自定义,将其添加到所有其他自定义中。您还可以本地阻止根自定义的继承,但您也可以仅使在根目录中定义的新菜单元素在根目录本身可用。

此外,您可以为新条目提供一个正确的id,不仅是为了覆盖Plone正常行为中的菜单元素,而且也是为了更改在网站根目录中完成的自定义。

http://keul.it/images/plone/redturtle.customizemenu.factories2.png

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 (64.3 kB 查看哈希值)

上传时间

支持者