将sakai中的iframe替换为jQuery请求
Sakai的portal/portlets模型中,portlets展现是用iframe做的。但我不喜欢iframe,所以换为jQuery的异步请求。
那么….
1、portlets在哪个模块渲染?
在sakai-portal-render-pack\WEB-INF\componets.xml中会注入几个render,:
<property name="renderServices">
<list>
<ref local="portletRenderService"/>
<ref local="fragmentRenderService"/>
<ref local="iframeRenderService"/>
</list>
</property>
然后,iframeRenderService实现在portal/portal-render-impl/impl/src/java/org/sakaiproject/portal/render/iframe/IFrameToolRenderService.java中
修改其render方法:
String toolDivId = Web.escapeJavascript("Main" + configuration.getId());
sb.append("<div id="").append(toolDivId).append("">");
sb.append("<script type="text/javascript">\n")
.append("$("#")
.append(toolDivId).append("").load("").append(toolUrl).append("");\n")
.append("</script></div>");
在page的渲染模块,会加入jQurey的路径,所以这里不用考虑。
2、强调portal/portlets模型对于sakai比较重要。建议从了解通用的模型入手,再看sakai 的tool处理。这里只是一个临时的代码,后面还得加入portlets的几种状态处理。