- 浏览: 253325 次
- 性别:
- 来自: 北京
最新评论
-
java_frog:
我之前resteasy用的3.6.0,周末过来降成3.1.0, ...
在本地环境ok,预发环境就老报这个,版本应该也没问题,有碰到过的人吗 -
yugouai:
另外还有可能是拿不到环境变量的,所以crontab的shell ...
linux下crontab定时任务不执行 -
wuchsh2013:
最好不要写在脚本里面,在执行脚本前设置权限。
linux下crontab定时任务不执行 -
原水小子:
给力哈~~~~~~~~~~~~~~
正则表达式限制输入框只能输入数字 -
qizhijun:
请问你找到原因了吗?我也遇到同样的问题。头疼好几天了。
java调用FlashPaper时printing failed for an unknown reason错误
内容简介:
Portal的主题与皮肤开发说穿了还是普通jsp的开发,只不过大量使用了ibm自带的标签库,开发起来显得比较麻烦。但是,如果您深刻洞悉了与主题、皮肤相关的这几个文件之间的调用关系,使用起来就能运用自如了。这里是作者从大量的项目经验中总结出的几点体会,贡献出来,希望与大大家分享。
在这篇文章里我想从以下几个方面来介绍websphere portal的主题与皮肤开发:
1、初级入门:什么是Portal的主题与皮肤开发?
2、中级开发:如何更换Portal系统的logo图标;
3、中级进阶:开发个性化的主题;
4、高级探索:开发自适应分辨率的主题与皮肤;
5、高手过招:更改Portal系统的登录方式;
6、Portal的皮肤开发简介。
一、初级入门:Portal的主题与皮肤开发:
要了解如何开发portal的主题,首先要了解websphere portal的显示流程。IBM WebSphere Portal 使用不同的 Java Server Page(JSP)、级联样式表(Cascading Style Sheet,CSS)和图像来显示门户页面。它使用位于X:\WebSphere\AppServer\installedApps\YourComputerName \wps.ear\wps.war 目录下 themes、skins 和 screens 目录中的 JSP 来构造门户页面。这些目录中的每一个都包含 html、wml 和 chtml 子目录,WebSphere Portal 将它们用于服务不同客户机,例如桌面浏览器和移动设备。我们这里以通常使用的html方式下的主题开发为例,介绍Portal的主题开发。
用于显示门户页面的 JSP 流程:本文描述了缺省主题定义的 Default.jsp、Head.jsp 、AdminLinkBarInclude.jsp、 ToolBarInclude.jsp、PlaceBarInclude.jsp、PageBarInclude.js以及延伸出来的PageBeginInclude.jsp、 PageEndInclude.jsp的内容和流程。下面简单介绍这几个jsp。注意:这部分内容属于最初级的开发,您要弄懂这些介绍,必须具备一定的jsp基础、css基础和标签库的基础,最好做过相应的开发。
1、Default.jsp:
所有屏幕聚集都从 Default.jsp 开始。用于缺省主题的 Default.jsp 位于wp_root\app\wps.ear\wps.war\themes\html。这个 JSP 包含其它用于显示标题、公司徽标、工具栏的 JSP 以及用于往可用位置及页面植入内容的 JSP。在 Default.jsp 的末尾处,screenRender JSP 标记选择被请求的屏幕(例如 login 或 forgotpassword)。以下介绍的jsp是以这样的顺序先后调用的。
2、Head.jsp
Head.jsp 生成标题并嵌入指向样式表文件的链接。它还定义了支持 BIDI(双向)文本所需的变量。这个 JSP 的内容将在这里描述。您也可以通过<title></title>在这里定死portal网站的标题,这比IBM公布的以标签的方式写来的容易,也更易使用。如果您开发了多套主题,而且这几套主题的page title如果也一样的话(除了虚拟门户,一般是这样子),您可以把这几个文件放到themes/html的根目录下,其他主题的default.jsp都来调用这个文件就可以了。
3、AdminLinkBarInclude.jsp
AdminLinkBarInclude.jsp主要用来显示了“新建页面”、“编辑页面”、“分配页面许可权”三个标签
4、ToolBarInclude.jsp
ToolBarInclude.jsp 显示欢迎消息以及为用户提供的链接工具栏。门户网站上显示什么样的链接工具栏取决于用户上下文。例如,登录的用户看到“我的门户网站”、“管理”(尽管理员可见)、“编辑我的‘概要文件’”、“注销”等之类的链接;而注销的用户看到 “忘记密码”、“登录”、“帮助” 之类的链接。
5、PlaceBarInclude.jsp
PlaceBarInclude.jsp用来显示一级菜单,即“首页”、“文档管理器”、“公司概况”、“业务简介”等,属于最高层的目录,您在任何一个一级菜单上都可以通过“新建页面”来创建二级菜单,你创建的内容将被存储到数据库(原始使用的是cloundscape),您也可以把它倒入到db2、oracle等任何一个portal所支持的数据库中,此内容将在我的下一篇文章中详细论述,这里不再一一提及。
6、PageBarInclude.jsp
用来显示二级菜单,当您点击一级菜单中的任一标签时,系统会调用该文件,并检索出该菜单的所有子菜单,默认显示在PlaceBar的下面。
二、中级开发:如何更换Portal系统的logo图标;
1、Default.jsp的工作原理:
我们看这个例子,Default.jsp大致上将Portal系统的默认页面划分为这样一个表格:
表-1: Default.jsp总体调用效果
PageBegin: 用来显示页面生成以前的提示文字,例如:Portal系统正在加载,请稍候……
Portal系统主体部分:用来显示详细的Portal页面;
PageEnd.jsp用来显示页面生成以后的东西。例如公司版权信息等。
表-2:Portal系统正文部分的调用关系:
徽标部分,在default中调用
我的门户菜单,在ToolBar中调用
个性化菜单,在AdminLink中调用
Portal的Body部分,用来显示各个portlet以及高层次的三级菜单。
页面的结尾,用来显示公司版权信息等。
2、换一个logo:
打开Default.jsp,您会开到一个表格,在表格的左上角,有这样一段语句,用来显示默认主题的Logo徽标:
<td width="100%" valign="top" align="<%=bidiAlignLeft%>" nowrap>
<img align="absmiddle" alt='<wps:text key="title" bundle="nls.engine">Portal Title</wps:text>' title='<wps:text key="title" bundle="nls.engine"/>' src='<wps:urlFindInTheme file="logo.gif"/>'>
<a href="#wpsMainContent"><img width="1" height="1" border="0" src='<%= wpsBaseURL %>/images/dot.gif' alt='<wps:text key="link.skiptocontent" bundle="nls.engine"/>' title='<wps:text key="link.skiptocontent" bundle="nls.engine"/>'>
</a>
</td>
上面已经介绍过,整个Portal系统的页面由Default.jsp分割成一个大的表格,用来显示或者调用不同的jsp。我们在这个大表格的最左上角化出一个<td>,用来显示公司的徽标。这段语句就是在这个单元格内插入一个图片,叫做Logo.gif。
明白了吗?您可以将这个文件名改称您想插入的任意一张图片的名字,只要将这张图片放到.war/images/目录下就可以了。这里支持几乎所有的图片格式,您可以任意摆放,大小、位置等都有您说了算。到这里,您可能已经想到了:那么,我养插入一个Flash呢?别着急,下面将会提到这点。
3、用flash作logo:
用Flash作徽标是个不错的注意,它可以使您的门户网站看起来更丰富、生动一些。但是,Flash,也就是.swf格式的文件,是不能直接通过这种方式来插入的,因为我们的浏览器并不能识别它。要插入一个动画,必须位置制定相应的驱动。您可以用以下这段代码,为之生成:
<td width="510" border="0" cellpadding="0" cellspacing="0" height="81" valign="middle" align="left">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="510" height="81">
<param name=movie value="<%= wpsBaseURL %>/images/firstpagelogo.swf">
<param name=quality value=high>
<embed src="firstpagelogo.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="510" height="81">
</embed>
</object>
</td>
这里在插入了一个名字为firstpagelogo.swf的影片做公司徽标,他的大小是 510*81,请将这个影片文件放在.war/images目录下,重启服务器,看看您的首页上,是不是已经出现了?
三、中级进阶:开发个性化的Portal主题
1、理解、开发各级菜单;
Default.jsp调用PlaceBarInclude.jsp文件来显示一级菜单,如果一级菜单下面还有二级菜单,那么当您点击该一级菜单是,Default将调用PageBarInclude.jsp来显示二级菜单。当然,您也可以不再调用该文件,那么系统将缺省调用Portlet的皮肤里面的LayerContainer.jsp文件,用来以三级菜单代替二级菜单,这便是个性化的左侧管理菜单。
打开这两个文件,您会发现里面的内容非常简单。请看下面的清单:
l 首先由这样一个标签:
<wps:if navigationAvailable="yes" screen="Home,LoggedIn,LoggedOut">
意思是如果菜单时可用的,那么当您登录进去以后将执行如下操作。使用这句代码,必须引入Portal的标签库,具体的过程这里不再赘述。接下来绘制了一个表格,用来显示里面的操作。表格内的内容,下面将作介绍。
l 菜单的左右协调:如果您一共定义了十几个一级菜单,而一栏只能显示8个,剩下的菜单怎么办?我们在这里放置了两个三角形的小图标,如果右边还有更多的菜单,小图标会自动出现,当您点击时,就会显示出剩余的菜单。 具体的代码是通用的,这里不再赘述。我们需要强调的是:菜单条在这里支划分为两种情况:一是选中的情况下,一是为选中的情况下,即:
<wps:if nodeInSelectionPath="yes">
<table>这里用来显示选中该菜单的情况下该菜单条的显示方式。</table>
</wps:if>
<wps:if nodeInSelectionPath="no">
<table>这里用来显示未选中该菜单的情况下该菜单条的显示方式。</table>
</wps:if>
例如:
<td Background="<%= wpsBaseURL %>/images/title_back01.jpg" height="30">
<img border="0" src='<%= wpsBaseURL %>/images/b01.jpg' alt="">
<a href='<%=wpsNavModelUtil.createSelectionChangeURL(wpsNavNode)%>' class="wpsSelectedPlaceLink">
<%= com.ibm.wps.model.LocaleHelper.getTitle((com.ibm.portal.Localized)wpsNavNode, com.ibm.wps.engine.RunData.from( pageContext.getRequest()).getLocale())%>
</a>
<img border="0" src='<%= wpsBaseURL %>/images/b01.jpg' alt="">
</td>
我们首选添加一张背景图片,然后左侧放一张前缀,中间打印该菜单条的名字,后面又放一张图片做后缀,这样整个菜单条看起来就非常漂亮了。
l 接下来是显示工具栏的情况下:
<wps:if showTools="yes">这里的操作将使具有权限的用户通过点击这张图片,直接编辑相应的portal页面。不过据笔者的开发经验,大部分的用户会隐藏掉这个入口,以免引起管理上的混乱,具体的开发内容将在以后的文章中提及,智利将不再详细介绍。
l 最后的代码用来显示系统收藏夹:
当您登录后,会发现在一级菜单的最右边多出一个“我的最爱”的东西,这是portal系统自带的收藏夹,您可以通过这个入口将自己喜欢的页面添加到您的收藏夹,然后您就可以通过点击这里直接进入到你收藏的页面了。
2、开发个性化工具栏
要获得个性化的工具栏,您可以修改ToolBarInclude.jsp这个文件。这个文件提供了Portal管理员进到管理界面的入口。
在这里你可以编辑自己的“概要文件”,就个人的用户信息,修改自己的姓名、密码等。更深一层的话,您可以在这里显示欢迎信息,例如张三同志登录后,会打印出:“欢迎您,张三同志!”的语句。要实现这个功能实际上非常简单,请看:
<font color="#FF0000" size="5"><strong>
<wps:if loggedIn="yes" screen="Home,LoggedIn">
<wps:text key="welcome" bundle="nls.engine">
<wps:textParam><wps:user attribute="givenName"/></wps:textParam>
<wps:textParam><wps:user attribute="familyName"/></wps:textParam>
</wps:text>
</wps:if>
</font>
当然,您需要引入相应的标签库,具体的应用属于普通的jsp开发,您可以参照平常的开发经验去实现。
3、开发个性化的管理标签
所谓的个性化指的是,您可以删掉管理标签的一个或者多个,也可以根据喜好添加自己需要的标签。这需要您来修改AdminLinkBarInclude.jsp文件。例如:
<td valign="middle" align="<%=bidiAlignRight%>" nowrap>
<a href="<% wpsURL.write(out); %>" class="wpsLinkBarLink">
<wps:text key="link.createpage" bundle="nls.engine"/>
</a>
</td>
这段代码用来显示“新建页面”的管理标签,通过电机这个标签,您可以为当前页面创建一个子页面。同理,您可以个性化“编辑页面”和“分配页面权限”,当然,您也可以之间隐藏掉这个入口。
四、高级探索:开发自适应分辨率的主题与皮肤
1、开发1024下的主题
刚安装完Portal系统后,刚才介绍的几个jsp会在默认的.war/theme目录下,您可以新建一个文件夹,将这几个jsp文件拷贝至该目录下,然后在管理界面下添加该主题。该主题默认下就是1024的。您可以开发多套主题,注意:请充分利用一些公共的资源,例如这些主题可能使用的是同样的版权信息,这样,您可以将PageEnd.jsp页面放到themes/entention下,然后让所有的主题调用这个文件。
当然,为了保险起见,您可以在Default.jsp最外层的表格中这样写死:
<table>
<tr>
<td width=”1024”>
具体的调用!
</td>
</tr>
</table>
2、开发800分辨率下的主题
开发800下的主题说穿了非常简单,您可以会出这么一个表格:
<table>
<tr>
<td> </td>
<td width=”800” align=”center” valign=”top”>
将Default.jsp中最外层的table里面所有的内容拷贝到这里!
</td>
<td> </td>
</tr>
</table>
将这个表格覆盖到原来Default.jsp文件中最外层的表格就可以了。注意:在default.jsp中调用的各个文件中,可能都有表格存在,如果这些表格中有的宽度超过了800,或者两个并列一行的表格宽度超过了800,请适当调小。
3、开发1024和800下自适应得主题
要开发自适应的主题就更简单了!请设定一个变量w,先写一个JavaScript,用来读取客户端的浏览器分辨率,如果是800的,则给给变量赋值w=800,反之如果是1024的,就给赋值为w=1024。剩下的事,不用我说了吧!
五、高手过招:更改Portal系统的登录方式;
1、从首页上登录
您需要用wsad开发一个portlet,并在jsp中写一个代理,将用户凭证提交给系统自带的认证action中。这个portlet可以这样来设计:
<wps:if loggedIn="no"> //如果没有登陆的情况下,提醒用户输入它的用户名与密码:
</wps:if>
用户按下“登录“后,将用户名和密码提交到系统自带的action中:
<form method="POST" action='/wps/portal/!ut/p/.cmd/li' enctype="application/x-www-form-urlencoded" name="LoginPage">
//在这里将用户名和密码付给系统自带的登录框。
</form>
<wps:if loggedIn="yes"> //如果已经登陆了,可以显示用户的常用信息,比如,读取用户的Lotus邮箱,然后显示他哟年级封邮件等:
甚至,您可以利用url-mapping自定义几个页面,从首页上直接进入到您的业务系统(如上)。
这样的话,您甚至可以封死portal页面右上角自带的“登录”标签,也许您会问我又想用系统自带的页面呢?没关系,您也可以在浏览器中输入:http://machinename:9081/wps/myportal,当然,干脆您直接输入一个错误的用户名和密码,系统自然后带您会带系统自带的页面了。
2、拒绝从系统自带的登录界面
但是在上面这种情况下,可能会出现这种情况:当用户名或者密码错误的时候,系统会返回到系统自带的登录框上面,为避免这种情况,您可以封死这个开关。这个非常简单,我在这里顺便一提:
系统自带的登录页面是.war/screen/html下的login.jsp文件,您可以删掉该文件里的所有内容,然后加入这么一句:
<script language="JavaScript">
alert("用户名或者密码输入有误,请重新输入!");
window.location='http://xxjsb-scdd2.portal.com:9081/wps/portal';
</Script>
呵呵,是不是带您又回到了首页呢?是的,确实如您所想,这样就封死了系统自带的登录页面。如果您的用户名和者密码错误,或者您通过myportal直接调用,都不起作用了吧!系统会带您回到首页的登录界面,请重新输入!
3、遗留问题:
在实际开发中,您也许会发现还有其他一些意想不到的问题,是的,这个地方确实有许多值得注意的地方,也许只有您亲自来试过了,才知道其中的玄机。我也希望在开发中大家相互交流,把发现的好地方贡献出来,大家一起分享。好吧,祝您成功!
六、Portal的皮肤开发简介
1、该改portlet的标题背景图片
非常简单,请找到.war/skin/html下,发现系统已经呆了好几套皮肤,打开其中任意一个文件夹,您都能发现这个文件:
Control.jsp。这里面也是一个table。该table有两行:第一行用来显示portlet的标题,后面是最大化、最小化、编辑按钮;第二行是portlet的body,用来显示portlet的内容。要换掉portlet标题的背景图片其实非常简单:在第一个<td>里面加上这么一句代码:
<td width="100%" height="21" border="0" cellpadding="0" cellspacing="0" background='<wps:urlFindInSkin file="wave.jpg"/>'>
一切OK!
2、隐藏掉“最大化”、“最小化”、“还原”等图标。
<wps:portletMinimize>
<a href='<%=wpsPortletMinimizeURL%>'></a>
</wps:portletMinimize>
这段代码是用来显示“最小化”按钮,不用说,直接去掉就行了!同理,您可以对此做任何编辑。
3、高级:加入个性化的左侧管理菜单
在skin目录下看到这个文件了吗?LayeredContainer.jsp不错,就是它,它是一个表格:
<table border="0" cellpadding="0" cellspacing="0" width="778" height="100%">
该表格左侧就是三级菜单(您如果再Default.jsp中部调用PageBar的话,这就是二级菜单了)。右边呢,则是整个Portal系统得Body部分,显示了所有的portlet。不晓得IBM为什么要这样安排,似乎有点不合理。不过,趋势是在这里修改的,可能是把它看作一个容器了吧!在左侧的表格部分,您可以向编辑普通的网页一样,只要您稍微有些美工知识,就可以随心所欲的制作出个性化的管理菜单了。
4、高级:与CSS结合,开发出漂亮的效果。
看上面的效果,是不是非常飘亮?其实这很简单,看LayeredContainer.jsp这个文件,下面是他的表格,稍微加一些CSS,就能实现这种效果了。如:
<table border="2" bordercolor="#ffffff" cellpadding="0" cellspacing="0" <%=tableHeight%> width="100%" >。
当然,这需要素质比较高的美工配合,也需要工程师在长期的开发中仔细琢磨。再次祝您在Portal开发中信手拈来、出神入化!
参考资料:
1、 Sukumar Konduru 顾问软件工程师 达拉斯,IBM Developer Technical Support Center 先生的论文:了解 WebSphere 门户网站如何显示门户页面 — 第 I 部分:描述 Default.jsp、Head.jsp 和 ToolBarInclude.jsp
2、IBM系列红皮书。
链接源:http://dev.csdn.net/article/58/58033.shtm
Portal的主题与皮肤开发说穿了还是普通jsp的开发,只不过大量使用了ibm自带的标签库,开发起来显得比较麻烦。但是,如果您深刻洞悉了与主题、皮肤相关的这几个文件之间的调用关系,使用起来就能运用自如了。这里是作者从大量的项目经验中总结出的几点体会,贡献出来,希望与大大家分享。
在这篇文章里我想从以下几个方面来介绍websphere portal的主题与皮肤开发:
1、初级入门:什么是Portal的主题与皮肤开发?
2、中级开发:如何更换Portal系统的logo图标;
3、中级进阶:开发个性化的主题;
4、高级探索:开发自适应分辨率的主题与皮肤;
5、高手过招:更改Portal系统的登录方式;
6、Portal的皮肤开发简介。
一、初级入门:Portal的主题与皮肤开发:
要了解如何开发portal的主题,首先要了解websphere portal的显示流程。IBM WebSphere Portal 使用不同的 Java Server Page(JSP)、级联样式表(Cascading Style Sheet,CSS)和图像来显示门户页面。它使用位于X:\WebSphere\AppServer\installedApps\YourComputerName \wps.ear\wps.war 目录下 themes、skins 和 screens 目录中的 JSP 来构造门户页面。这些目录中的每一个都包含 html、wml 和 chtml 子目录,WebSphere Portal 将它们用于服务不同客户机,例如桌面浏览器和移动设备。我们这里以通常使用的html方式下的主题开发为例,介绍Portal的主题开发。
用于显示门户页面的 JSP 流程:本文描述了缺省主题定义的 Default.jsp、Head.jsp 、AdminLinkBarInclude.jsp、 ToolBarInclude.jsp、PlaceBarInclude.jsp、PageBarInclude.js以及延伸出来的PageBeginInclude.jsp、 PageEndInclude.jsp的内容和流程。下面简单介绍这几个jsp。注意:这部分内容属于最初级的开发,您要弄懂这些介绍,必须具备一定的jsp基础、css基础和标签库的基础,最好做过相应的开发。
1、Default.jsp:
所有屏幕聚集都从 Default.jsp 开始。用于缺省主题的 Default.jsp 位于wp_root\app\wps.ear\wps.war\themes\html。这个 JSP 包含其它用于显示标题、公司徽标、工具栏的 JSP 以及用于往可用位置及页面植入内容的 JSP。在 Default.jsp 的末尾处,screenRender JSP 标记选择被请求的屏幕(例如 login 或 forgotpassword)。以下介绍的jsp是以这样的顺序先后调用的。
2、Head.jsp
Head.jsp 生成标题并嵌入指向样式表文件的链接。它还定义了支持 BIDI(双向)文本所需的变量。这个 JSP 的内容将在这里描述。您也可以通过<title></title>在这里定死portal网站的标题,这比IBM公布的以标签的方式写来的容易,也更易使用。如果您开发了多套主题,而且这几套主题的page title如果也一样的话(除了虚拟门户,一般是这样子),您可以把这几个文件放到themes/html的根目录下,其他主题的default.jsp都来调用这个文件就可以了。
3、AdminLinkBarInclude.jsp
AdminLinkBarInclude.jsp主要用来显示了“新建页面”、“编辑页面”、“分配页面许可权”三个标签
4、ToolBarInclude.jsp
ToolBarInclude.jsp 显示欢迎消息以及为用户提供的链接工具栏。门户网站上显示什么样的链接工具栏取决于用户上下文。例如,登录的用户看到“我的门户网站”、“管理”(尽管理员可见)、“编辑我的‘概要文件’”、“注销”等之类的链接;而注销的用户看到 “忘记密码”、“登录”、“帮助” 之类的链接。
5、PlaceBarInclude.jsp
PlaceBarInclude.jsp用来显示一级菜单,即“首页”、“文档管理器”、“公司概况”、“业务简介”等,属于最高层的目录,您在任何一个一级菜单上都可以通过“新建页面”来创建二级菜单,你创建的内容将被存储到数据库(原始使用的是cloundscape),您也可以把它倒入到db2、oracle等任何一个portal所支持的数据库中,此内容将在我的下一篇文章中详细论述,这里不再一一提及。
6、PageBarInclude.jsp
用来显示二级菜单,当您点击一级菜单中的任一标签时,系统会调用该文件,并检索出该菜单的所有子菜单,默认显示在PlaceBar的下面。
二、中级开发:如何更换Portal系统的logo图标;
1、Default.jsp的工作原理:
我们看这个例子,Default.jsp大致上将Portal系统的默认页面划分为这样一个表格:
表-1: Default.jsp总体调用效果
PageBegin: 用来显示页面生成以前的提示文字,例如:Portal系统正在加载,请稍候……
Portal系统主体部分:用来显示详细的Portal页面;
PageEnd.jsp用来显示页面生成以后的东西。例如公司版权信息等。
表-2:Portal系统正文部分的调用关系:
徽标部分,在default中调用
我的门户菜单,在ToolBar中调用
个性化菜单,在AdminLink中调用
Portal的Body部分,用来显示各个portlet以及高层次的三级菜单。
页面的结尾,用来显示公司版权信息等。
2、换一个logo:
打开Default.jsp,您会开到一个表格,在表格的左上角,有这样一段语句,用来显示默认主题的Logo徽标:
<td width="100%" valign="top" align="<%=bidiAlignLeft%>" nowrap>
<img align="absmiddle" alt='<wps:text key="title" bundle="nls.engine">Portal Title</wps:text>' title='<wps:text key="title" bundle="nls.engine"/>' src='<wps:urlFindInTheme file="logo.gif"/>'>
<a href="#wpsMainContent"><img width="1" height="1" border="0" src='<%= wpsBaseURL %>/images/dot.gif' alt='<wps:text key="link.skiptocontent" bundle="nls.engine"/>' title='<wps:text key="link.skiptocontent" bundle="nls.engine"/>'>
</a>
</td>
上面已经介绍过,整个Portal系统的页面由Default.jsp分割成一个大的表格,用来显示或者调用不同的jsp。我们在这个大表格的最左上角化出一个<td>,用来显示公司的徽标。这段语句就是在这个单元格内插入一个图片,叫做Logo.gif。
明白了吗?您可以将这个文件名改称您想插入的任意一张图片的名字,只要将这张图片放到.war/images/目录下就可以了。这里支持几乎所有的图片格式,您可以任意摆放,大小、位置等都有您说了算。到这里,您可能已经想到了:那么,我养插入一个Flash呢?别着急,下面将会提到这点。
3、用flash作logo:
用Flash作徽标是个不错的注意,它可以使您的门户网站看起来更丰富、生动一些。但是,Flash,也就是.swf格式的文件,是不能直接通过这种方式来插入的,因为我们的浏览器并不能识别它。要插入一个动画,必须位置制定相应的驱动。您可以用以下这段代码,为之生成:
<td width="510" border="0" cellpadding="0" cellspacing="0" height="81" valign="middle" align="left">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="510" height="81">
<param name=movie value="<%= wpsBaseURL %>/images/firstpagelogo.swf">
<param name=quality value=high>
<embed src="firstpagelogo.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="510" height="81">
</embed>
</object>
</td>
这里在插入了一个名字为firstpagelogo.swf的影片做公司徽标,他的大小是 510*81,请将这个影片文件放在.war/images目录下,重启服务器,看看您的首页上,是不是已经出现了?
三、中级进阶:开发个性化的Portal主题
1、理解、开发各级菜单;
Default.jsp调用PlaceBarInclude.jsp文件来显示一级菜单,如果一级菜单下面还有二级菜单,那么当您点击该一级菜单是,Default将调用PageBarInclude.jsp来显示二级菜单。当然,您也可以不再调用该文件,那么系统将缺省调用Portlet的皮肤里面的LayerContainer.jsp文件,用来以三级菜单代替二级菜单,这便是个性化的左侧管理菜单。
打开这两个文件,您会发现里面的内容非常简单。请看下面的清单:
l 首先由这样一个标签:
<wps:if navigationAvailable="yes" screen="Home,LoggedIn,LoggedOut">
意思是如果菜单时可用的,那么当您登录进去以后将执行如下操作。使用这句代码,必须引入Portal的标签库,具体的过程这里不再赘述。接下来绘制了一个表格,用来显示里面的操作。表格内的内容,下面将作介绍。
l 菜单的左右协调:如果您一共定义了十几个一级菜单,而一栏只能显示8个,剩下的菜单怎么办?我们在这里放置了两个三角形的小图标,如果右边还有更多的菜单,小图标会自动出现,当您点击时,就会显示出剩余的菜单。 具体的代码是通用的,这里不再赘述。我们需要强调的是:菜单条在这里支划分为两种情况:一是选中的情况下,一是为选中的情况下,即:
<wps:if nodeInSelectionPath="yes">
<table>这里用来显示选中该菜单的情况下该菜单条的显示方式。</table>
</wps:if>
<wps:if nodeInSelectionPath="no">
<table>这里用来显示未选中该菜单的情况下该菜单条的显示方式。</table>
</wps:if>
例如:
<td Background="<%= wpsBaseURL %>/images/title_back01.jpg" height="30">
<img border="0" src='<%= wpsBaseURL %>/images/b01.jpg' alt="">
<a href='<%=wpsNavModelUtil.createSelectionChangeURL(wpsNavNode)%>' class="wpsSelectedPlaceLink">
<%= com.ibm.wps.model.LocaleHelper.getTitle((com.ibm.portal.Localized)wpsNavNode, com.ibm.wps.engine.RunData.from( pageContext.getRequest()).getLocale())%>
</a>
<img border="0" src='<%= wpsBaseURL %>/images/b01.jpg' alt="">
</td>
我们首选添加一张背景图片,然后左侧放一张前缀,中间打印该菜单条的名字,后面又放一张图片做后缀,这样整个菜单条看起来就非常漂亮了。
l 接下来是显示工具栏的情况下:
<wps:if showTools="yes">这里的操作将使具有权限的用户通过点击这张图片,直接编辑相应的portal页面。不过据笔者的开发经验,大部分的用户会隐藏掉这个入口,以免引起管理上的混乱,具体的开发内容将在以后的文章中提及,智利将不再详细介绍。
l 最后的代码用来显示系统收藏夹:
当您登录后,会发现在一级菜单的最右边多出一个“我的最爱”的东西,这是portal系统自带的收藏夹,您可以通过这个入口将自己喜欢的页面添加到您的收藏夹,然后您就可以通过点击这里直接进入到你收藏的页面了。
2、开发个性化工具栏
要获得个性化的工具栏,您可以修改ToolBarInclude.jsp这个文件。这个文件提供了Portal管理员进到管理界面的入口。
在这里你可以编辑自己的“概要文件”,就个人的用户信息,修改自己的姓名、密码等。更深一层的话,您可以在这里显示欢迎信息,例如张三同志登录后,会打印出:“欢迎您,张三同志!”的语句。要实现这个功能实际上非常简单,请看:
<font color="#FF0000" size="5"><strong>
<wps:if loggedIn="yes" screen="Home,LoggedIn">
<wps:text key="welcome" bundle="nls.engine">
<wps:textParam><wps:user attribute="givenName"/></wps:textParam>
<wps:textParam><wps:user attribute="familyName"/></wps:textParam>
</wps:text>
</wps:if>
</font>
当然,您需要引入相应的标签库,具体的应用属于普通的jsp开发,您可以参照平常的开发经验去实现。
3、开发个性化的管理标签
所谓的个性化指的是,您可以删掉管理标签的一个或者多个,也可以根据喜好添加自己需要的标签。这需要您来修改AdminLinkBarInclude.jsp文件。例如:
<td valign="middle" align="<%=bidiAlignRight%>" nowrap>
<a href="<% wpsURL.write(out); %>" class="wpsLinkBarLink">
<wps:text key="link.createpage" bundle="nls.engine"/>
</a>
</td>
这段代码用来显示“新建页面”的管理标签,通过电机这个标签,您可以为当前页面创建一个子页面。同理,您可以个性化“编辑页面”和“分配页面权限”,当然,您也可以之间隐藏掉这个入口。
四、高级探索:开发自适应分辨率的主题与皮肤
1、开发1024下的主题
刚安装完Portal系统后,刚才介绍的几个jsp会在默认的.war/theme目录下,您可以新建一个文件夹,将这几个jsp文件拷贝至该目录下,然后在管理界面下添加该主题。该主题默认下就是1024的。您可以开发多套主题,注意:请充分利用一些公共的资源,例如这些主题可能使用的是同样的版权信息,这样,您可以将PageEnd.jsp页面放到themes/entention下,然后让所有的主题调用这个文件。
当然,为了保险起见,您可以在Default.jsp最外层的表格中这样写死:
<table>
<tr>
<td width=”1024”>
具体的调用!
</td>
</tr>
</table>
2、开发800分辨率下的主题
开发800下的主题说穿了非常简单,您可以会出这么一个表格:
<table>
<tr>
<td> </td>
<td width=”800” align=”center” valign=”top”>
将Default.jsp中最外层的table里面所有的内容拷贝到这里!
</td>
<td> </td>
</tr>
</table>
将这个表格覆盖到原来Default.jsp文件中最外层的表格就可以了。注意:在default.jsp中调用的各个文件中,可能都有表格存在,如果这些表格中有的宽度超过了800,或者两个并列一行的表格宽度超过了800,请适当调小。
3、开发1024和800下自适应得主题
要开发自适应的主题就更简单了!请设定一个变量w,先写一个JavaScript,用来读取客户端的浏览器分辨率,如果是800的,则给给变量赋值w=800,反之如果是1024的,就给赋值为w=1024。剩下的事,不用我说了吧!
五、高手过招:更改Portal系统的登录方式;
1、从首页上登录
您需要用wsad开发一个portlet,并在jsp中写一个代理,将用户凭证提交给系统自带的认证action中。这个portlet可以这样来设计:
<wps:if loggedIn="no"> //如果没有登陆的情况下,提醒用户输入它的用户名与密码:
</wps:if>
用户按下“登录“后,将用户名和密码提交到系统自带的action中:
<form method="POST" action='/wps/portal/!ut/p/.cmd/li' enctype="application/x-www-form-urlencoded" name="LoginPage">
//在这里将用户名和密码付给系统自带的登录框。
</form>
<wps:if loggedIn="yes"> //如果已经登陆了,可以显示用户的常用信息,比如,读取用户的Lotus邮箱,然后显示他哟年级封邮件等:
甚至,您可以利用url-mapping自定义几个页面,从首页上直接进入到您的业务系统(如上)。
这样的话,您甚至可以封死portal页面右上角自带的“登录”标签,也许您会问我又想用系统自带的页面呢?没关系,您也可以在浏览器中输入:http://machinename:9081/wps/myportal,当然,干脆您直接输入一个错误的用户名和密码,系统自然后带您会带系统自带的页面了。
2、拒绝从系统自带的登录界面
但是在上面这种情况下,可能会出现这种情况:当用户名或者密码错误的时候,系统会返回到系统自带的登录框上面,为避免这种情况,您可以封死这个开关。这个非常简单,我在这里顺便一提:
系统自带的登录页面是.war/screen/html下的login.jsp文件,您可以删掉该文件里的所有内容,然后加入这么一句:
<script language="JavaScript">
alert("用户名或者密码输入有误,请重新输入!");
window.location='http://xxjsb-scdd2.portal.com:9081/wps/portal';
</Script>
呵呵,是不是带您又回到了首页呢?是的,确实如您所想,这样就封死了系统自带的登录页面。如果您的用户名和者密码错误,或者您通过myportal直接调用,都不起作用了吧!系统会带您回到首页的登录界面,请重新输入!
3、遗留问题:
在实际开发中,您也许会发现还有其他一些意想不到的问题,是的,这个地方确实有许多值得注意的地方,也许只有您亲自来试过了,才知道其中的玄机。我也希望在开发中大家相互交流,把发现的好地方贡献出来,大家一起分享。好吧,祝您成功!
六、Portal的皮肤开发简介
1、该改portlet的标题背景图片
非常简单,请找到.war/skin/html下,发现系统已经呆了好几套皮肤,打开其中任意一个文件夹,您都能发现这个文件:
Control.jsp。这里面也是一个table。该table有两行:第一行用来显示portlet的标题,后面是最大化、最小化、编辑按钮;第二行是portlet的body,用来显示portlet的内容。要换掉portlet标题的背景图片其实非常简单:在第一个<td>里面加上这么一句代码:
<td width="100%" height="21" border="0" cellpadding="0" cellspacing="0" background='<wps:urlFindInSkin file="wave.jpg"/>'>
一切OK!
2、隐藏掉“最大化”、“最小化”、“还原”等图标。
<wps:portletMinimize>
<a href='<%=wpsPortletMinimizeURL%>'></a>
</wps:portletMinimize>
这段代码是用来显示“最小化”按钮,不用说,直接去掉就行了!同理,您可以对此做任何编辑。
3、高级:加入个性化的左侧管理菜单
在skin目录下看到这个文件了吗?LayeredContainer.jsp不错,就是它,它是一个表格:
<table border="0" cellpadding="0" cellspacing="0" width="778" height="100%">
该表格左侧就是三级菜单(您如果再Default.jsp中部调用PageBar的话,这就是二级菜单了)。右边呢,则是整个Portal系统得Body部分,显示了所有的portlet。不晓得IBM为什么要这样安排,似乎有点不合理。不过,趋势是在这里修改的,可能是把它看作一个容器了吧!在左侧的表格部分,您可以向编辑普通的网页一样,只要您稍微有些美工知识,就可以随心所欲的制作出个性化的管理菜单了。
4、高级:与CSS结合,开发出漂亮的效果。
看上面的效果,是不是非常飘亮?其实这很简单,看LayeredContainer.jsp这个文件,下面是他的表格,稍微加一些CSS,就能实现这种效果了。如:
<table border="2" bordercolor="#ffffff" cellpadding="0" cellspacing="0" <%=tableHeight%> width="100%" >。
当然,这需要素质比较高的美工配合,也需要工程师在长期的开发中仔细琢磨。再次祝您在Portal开发中信手拈来、出神入化!
参考资料:
1、 Sukumar Konduru 顾问软件工程师 达拉斯,IBM Developer Technical Support Center 先生的论文:了解 WebSphere 门户网站如何显示门户页面 — 第 I 部分:描述 Default.jsp、Head.jsp 和 ToolBarInclude.jsp
2、IBM系列红皮书。
链接源:http://dev.csdn.net/article/58/58033.shtm
发表评论
-
<jsp-config>标签使用详解 转
2013-03-13 14:30 952<jsp-config> 包括<taglib ... -
jdbc中利用Savepoint实现rollback
2011-10-20 14:49 1876首先我们来说一下setAutoCommit,当我们设置为tru ... -
向上滚动类似跑马灯效果
2009-06-17 21:51 2421今天我给别的项目组的同事改js代码,跑马灯那种效果刚出来是空白 ... -
WebSphere Portal调整portlet之间的间隙
2009-06-03 09:44 2012间距的原因:portlet之间存在的间距过大的原因是porta ... -
DB2常用命令集
2009-05-25 11:20 9271.关闭db2 db2stop 或 db2stop fo ... -
portal开发
2009-05-22 18:14 1692一、Portlet中的资源处理 1、表单提交 <form ... -
portlet项目war包二
2009-05-22 18:07 1040download -
几个portlet项目war包
2009-05-22 18:00 937初学看自用. -
portal_api_doc下载
2009-05-22 17:56 1181下载解压即可使用. -
Java处理Word, Excel, PDF文档的4种开源系统的代码例子
2009-05-21 16:17 2094Java处理Word, Excel, PDF文档的4种开源系统 ... -
在线与QQ聊天
2009-05-12 17:17 1381建立对话:msnim:chat?contact=[邮件地址] ... -
给网站添加地址栏图标
2009-05-12 16:24 1397声明: 下面这个方法在firefox下经测试,但在ie ... -
实现图片浮动
2009-05-08 00:40 1093<!DOCTYPE HTML PUBLIC " ... -
iBATIS基本配置和spring中dwr配置
2009-04-30 11:19 948简单配置文件 -
用dom4j进行XML文件的创建\修改\删除
2009-04-29 21:11 1043package dom; import java.io.F ... -
控制台打印输入菱形图形
2009-04-24 11:39 1333public static void main(String ... -
<global-forwards/>子元素
2009-03-13 11:53 2609<global-forwards/>子元素 全局 ... -
deploy location,tomcat下部署
2009-02-14 12:10 3264<?xml version="1.0" ... -
spring简单前置通知、后置处理。
2009-02-09 01:24 1460package com.ghr; public clas ... -
树型菜单和分支菜单
2009-01-05 11:35 935...
相关推荐
### IBM WebSphere Portal主题与皮肤开发教程 #### 第1章 主题与皮肤开发 ##### 1.1 入门:Portal的主题与皮肤开发 要理解如何开发IBM WebSphere Portal的主题,首先需要掌握Portal的显示流程。IBM WebSphere ...
### IBM WebSphere Portal 主题与皮肤开发全解析 #### 一、初级入门:理解Portal的主题与皮肤 在探讨IBM WebSphere Portal的主题与皮肤开发之前,我们先要明晰这两个概念的基本含义。主题(Theme)和皮肤(Skin)...
"IBM Websphere Portal 主题与皮肤开发.doc"可能包含全面的主题和皮肤开发过程,包括如何创建、配置、测试和部署。此文档可能详细解释了WebSphere Portal提供的工具和技术,如使用XML布局文件定义页面结构,或者使用...
The dictionary defines a portal as a grand or imposing door or entrance; hence, that picture on the cover. In this book, you will learn why the word portal has become a major buzzword in the world of ...
IBM WebSphere Portal 提供了这种能力,并且支持多设备、多渠道的访问,使企业能够更有效地与员工、客户和合作伙伴进行交互。 IBM WebSphere Portal 的主要组件包括: 1. **Portal Server**:这是门户的核心,负责...
【IBM WebSphere Portal 门户开发笔记】 WebSphere Portal 是 IBM 提供的一款强大的企业级门户平台,用于构建和管理复杂的Web应用程序。这篇笔记涵盖了从搜索功能、页面导航到授权与用户管理等多个方面,深入探讨了...
为了更好地理解 IBM WebSphere Portal 的主题开发过程,首先需要了解其显示流程及其关键组件: - **Default.jsp**:这是门户页面的起点,位于 `wp_root\app\wps.ear\wps.war\themes\html` 目录下。此 JSP 包含其他...
在IBM Websphere Portal V6.0中,主题和皮肤是构建用户界面的关键元素,它们决定了门户的外观和交互体验。本教程将深入探讨主题和皮肤的开发,重点关注间距调整和拖动功能。 首先,我们要理解主题和皮肤的区别。...
IBM WebSphere Portal 解决方案
### IBM WebSphere Portal Express配置知识点 #### 一、概述 IBM WebSphere Portal Express是一款功能强大的企业门户解决方案,它能够帮助组织构建高度个性化且易于管理的门户站点。通过整合各种业务应用和服务,...
IBM WebSphere Portal 8 主题开发涉及一系列专业知识和操作技巧,通过本教程可学习如何创建自定义主题,并以此来定制门户页面的外观和风格。以下知识点详细阐述了主题开发的各个步骤和概念: 1. 主题概念 IBM ...
【WebSphere Portal 7 主题开发详解】 在WebSphere Portal V7中,为了实现自定义的用户界面体验,开发者需要创建自己的主题。WebSphere Portal 7 提供了两种内置主题,但为了满足特定需求,我们可以基于PageBuilder...
### IBM WebSphere Portal 6.0安装手册知识点详解 #### 一、概述 IBM WebSphere Portal 6.0是一款功能强大的企业级门户解决方案,能够帮助组织整合应用和服务,为用户提供统一的信息访问入口。本手册旨在指导用户...
IBM WebSphere Portal 8.5是一个企业级的Web内容管理和协作平台,它能够为用户提供个性化的Web体验和访问企业信息的途径。当涉及到大规模部署时,通常会采用Cluster(集群)的方式来保证服务的高可用性和负载均衡。...
IBM演示WebSpherePortal教程
在Linux环境下安装IBM WebSphere Portal是一项复杂而关键的任务,它涉及到服务器配置、软件依赖和环境设置等多个方面。WebSphere Portal是IBM提供的一款企业级的门户平台,它允许组织创建、管理和部署具有高度交互性...
【Websphere Portal主题皮肤开发详解】 在Websphere Portal V6.0中,开发主题皮肤涉及到对门户页面各个组成部分的定制,以实现独特的用户界面和交互体验。以下是对各个关键部分的详细解释: 1. **标题(Title)**...