我正在开发一个 plone portlet,它提供了一些用户界面来更改反映在不同 portlet 显示中的参数,类似于日历 portlet。即,portlet 提供链接来更新所显示的portlet 内容。
plone 开发人员手册http://plone.org/documentation/manual/developer-manual/client-side-functionality-javascript/kss声明不推荐使用 kss。
KSS 是 Plones 将行为绑定到文档节点的标准机制,但它正在逐渐被 jQuery 取代。从 Plone 4.1 开始,不推荐使用 KSS。请不要创建新的 KSS 相关功能。制定替换现有功能的计划。
在 plone.portlets README.txt 中有关于 portlet 基础设施功能的很好的信息,关于 portlet 管理、分配等(谢谢,我认为它来自 optilude!)。
在 plone.app.portlets 中是 calendar-portlet 的相关代码,我认为这可以为我开发的 portlet 提供一些建议。生成的 portlet-html 包含一个带有与 portlet 相关的 dict 编码的散列值,服务器机器在 ajax 请求进入时使用它。但是“注册”我自己的 portlet 以参与那个很好的部分的过程如何的克隆提供了基础设施?
在 plone.app.kss 中有一个名为 calendar.py 的文件,
# --
# Calendar in-place refreshment
# --
implements(IPloneKSSView)
@kssaction
def refreshCalendar(self, month, year, portlethash):
'In-place refreshment of the calendar.'
month, year = int(month), int(year)
self.getCommandSet('plone').refreshPortlet(portlethash, year=year, month=month)
被开发手册中的声明吓倒了,我必须决定以下几点:
我应该使用 kss 方式来更新我的 portlet 吗?如果是这样,我如何告诉克隆机器我的参数集进行更新?我知道将参数放入href
链接的标签中,但是plone怎么知道如何处理呢?所提供功能的客户端、开箱即用的已安装 js 文件等是否准备好处理我的特定 portlet 的 ajax 响应?
干净且唯一的 js-ajax 提议的更新 portlet 的方法如何工作,尤其是在客户端?
作为后备解决方案,有没有办法在没有 javascript 和/或 kss 的情况下更新 portlet?
我正在使用一个干净的 Plone 4.2.4 安装并在 centos 平台 python 2.7.3 上构建。
也许一些建议,特别是关于 Portlet 更新功能的客户端发生了什么以及如何准确地帮助像我这样知识水平相似的人。服务器端与 portlet 相关的代码已记录在案,足以了解 portlet 机器的工作原理,但我找不到足够的信息来了解 portlet 更新刷新往返中到底发生了什么,以及如何“插入”提供的使用我自己的 portlet 命令集的机器。