Jetspeed 界面修改
一、术语
1. PSML
PSML is an acronym for Portal Structure Markup Language. It was created to allow content structure and abstraction within Jetspeed. PSML defines how portlets are aggregated, layed out, and decorated on a portal page. Note that page layout is not a part of the Java Portlet Standard API. Thus PSML is a Jetspeed-specific implementation. Also note that PSML in Jetspeed-2 is different from PSML in Jetspeed-1. This document can be used as a reference guide to the elements of a PSML resource.
2. Velocity
Velocity 是一种通用的、开放源代码的模板解决方案,可以在报告生成/数据转换应用程序中独立使用,也可以在 MVC 模型框架中作为视图组件。(摘自http://www.ibm.com/developerworks/cn/java/j-velocity/)
二、Portlet界面
举例用户选择器multi-chooser-users,psml文件位置如下
Jetspeed- 2.1.3 /webapps/jetspeed/WEB-INF/pages/Administrative/choosers/multiusers.psml
1. 设置title
<metadata name="title" xml:lang="zh">用户选择器</metadata>
2. 设置layout
<fragment id="mchooser-users" type="layout" name="jetspeed-layouts::VelocityOneColumnNoActions">
Name值有:
- jetspeed-layouts::FrameLayoutPortlet
- jetspeed-layouts::VelocityOneColumn
- jetspeed-layouts::VelocityOneColumnNoActions
- jetspeed-layouts::VelocityThreeColumns
- jetspeed-layouts::VelocityThreeColumnsNoActions
- jetspeed-layouts::VelocityThreeColumnsTable
- jetspeed-layouts::VelocityTwoColumns
- jetspeed-layouts::VelocityTwoColumns2575
- jetspeed-layouts::VelocityTwoColumns2575NoActions
- jetspeed-layouts::VelocityTwoColumnsNoActions
- jetspeed-layouts::VelocityTwoColumnsSmallLeft
- jetspeed-layouts::VelocityTwoColumnsSmallLeftNoActions
- jetspeed-layouts::VelocityTwoColumnsTable
具体参考: http://portals.apache.org/jetspeed-2/guides/guide-psml.html#Layout_Fragments
3. 指定portlet
<fragment id="mchooser-users-1" type="portlet" name="j2-admin::UserMultiChooser" >
</fragment>
j2-admin指的是j2-admin.war
UserMultiChooser在j2-admin.war下的portlet.xml中配置
二、css样式
在jetspeed中主要有portlet、layout和dojo widget三种样式,它们分别管理portlet内部元素、portlet外部容器的布局和dojo的样式。
portlet
layout
dojo widget
三、自定义layout
第一步
首先可以复制一份样式(如sunflower文件夹复制成coss3文件夹);
文件夹内结构如下,大致内容同文件名意思。
第二步
修改decorator.properties,
## 会显示在布局设置的主题列表中
id=coss3
template.type=velocity
template.extension=.vm
template.macros=-macros
decorates=layout
## 样式前缀,在生成的HTML代码中可以看出
base.css.class=layout-coss3
第三步
修改style.css
在HTML代码中发现标题栏的class=”PTitleContent”,但是在style.css中却没有,那么可以增加以下代码:
.layout-coss3 .PTitleContent
{
background: url(../images/list_table_box_right.png) top right no-repeat;
border-bottom: 1px #8fbcd1 solid;
height: 24px;
}
第四步
关于style中的image
因样式可以从coss2.0中复制过来,那么image也同样,由第三步可以看出,image的url与coss2.0一样,则可以将coss2.0中的图片文件../images/list_table_box_right.png复制到
webapps/jetspeed/decorations/layout/coss3/images/list_table_box_right.png
(即本样式的images文件夹)
四、portlet内容修改
使用用户管理portlet进行举例说明,jetspeed采用Velocity模板引擎。有关Velocity的使用可参考“使用 Velocity 实现客户端和服务器端模板”
http://www.ibm.com/developerworks/cn/java/j-velocity/
1. portlet配置
在j2-admin.war下的portlet.xml中定义了portlet-class
<portlet-class>org.apache.jetspeed.portlets.security.users.UserBrowser</portlet-class>
和初始参数init-param,如以下参数,指定了展示页面的模板文件。
<init-param>
<description>This parameter sets the template used in view mode.</description>
<name>ViewPage</name>
<value>/WEB-INF/security/users/user-browser.vm</value>
</init-param>
2. 模板修改
源码位置
jetspeed- 2.1.3 /src/applications/j2-admin/src/webapp/WEB-INF/security/users/user-browser.vm
布署位置
Jetspeed- 2.1.3 /webapps/j2-admin/WEB-INF/security/users/user-browser.vm
注:修改后需要重启tomcat才能生效
3. Portlet修改
找到portlet.xml中定义的portlet-class,即可修改该portlet的业务逻辑。