天天看點

在Liferay-EP(Liferay Enterprise Portal)上增加一個portlet(IFrame)

【軟體環境介紹】:

1,我使用的是liferay-ep-2.0.0-jboss-tomcat版(下面都簡稱為《liferay-ep 2》),我将她安裝在D:/newPortalServer目錄中。

2,使用eclipse作為IDE,用UltraEdit作為主要源碼編輯器。

我的習慣是在源碼編輯的差不多之後,使用eclipse來進行編譯等處理。

3,對應版本的源代碼解壓在D:/java_workspace/liferay-portal目錄中。(下面将簡稱《liferay-portal》。)

4,我這裡要部署的内容是放在/server/default/deploy/ext.ear/目錄下的,

相對于liferay-ep 2的/server/default/deploy/liferay-portal.ear/目錄。

是以下面說的portal-web-complete.war,就是/server/default/deploy/ext.ear/portal-web-complete.war目錄,其他依此類推。

下面我說的《WEB-INF》目錄就是指/server/default/deploy/ext.ear/portal-web-complete.war/WEB-INF目錄,

也就相對于liferay-ep 2的/server/default/deploy/liferay-portal.ear/portal-web-complete.war/WEB-INF目錄。

5,下面部分XML配置檔案,都是“XX-ext.xml”形式的,都是參照/WEB-INF/XX.xml檔案建立的。使用“-ext.xml”檔案是為了和liferay-ep 2本身提供的相差別。

【目标】:

增加一個簡單的IFrame,用于展現一個簡單OA應用。

【步驟】:

1,到http://sourceforge.net/project/showfiles.php?group_id=49260下載下傳對應的SRC。

我下載下傳的是liferay-ep-2.0.0-src.zip。

2,在liferay-portal/oa/src/com/liferay/portlet/oa目錄下面,

仿照http://www.liferay.com/documentation/api/portal-ejb/com/liferay/portlet/IFramePortlet.java.html,

建立自己的IFrameOAPortlet.java。

3,在eclipse中對源碼進行編譯。将liferay-portal/classes/com/liferay/portlet/oa目錄下産生的IFrameOAPortlet.class

檔案複制到D:/newPortalServer/server/default/deploy/ext.ear/portal-ejb.jar/com/liferay/portlet/oa目錄。

4,在/WEB-INF/portlet-ext.xml檔案中增加:

 <portlet>

      <portlet-name>EXT_100</portlet-name>

      <display-name>test_IFrame</display-name>

      <portlet-class>com.liferay.portlet.oa.IFrameOAPortlet</portlet-class>

      <expiration-cache>0</expiration-cache>

      <supports>

          <mime-type>text/html</mime-type>

          <portlet-mode>edit</portlet-mode>

      </supports>

      <resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>

      <portlet-preferences>

          <preference>

               <name>src</name>

               <value>http://oaserver/oapath/db.nsf/formToDo?OpenForm</value>

          </preference>

          <preference>

               <name>auth</name>

               <value>true</value>

          </preference>

          <preference>

               <name>auth-type</name>

               <value>form</value>

          </preference>

          <preference>

               <name>form-method</name>

               <value>post</value>

          </preference>

          <preference>

               <name>basic-auth-user-name</name>

               <value>username</value>

          </preference>

   <preference>

               <name>basic-auth-password</name>

               <value>password</value>

          </preference>

          <preference>

               <name>hidden-variables</name>

               <value>var1=hello;var2=world</value>

          </preference>

      </portlet-preferences>

      <security-role-ref>

          <role-name>Power User</role-name>

      </security-role-ref>

      <security-role-ref>

          <role-name>User</role-name>

      </security-role-ref>

 </portlet>

這裡主要需要注意的是:

portlet-name:這裡的名字需要和之後步驟相對應。這裡是“EXT_100”。

portlet-class:這裡就是此前寫的那個class“com.liferay.portlet.oa.IFrameOAPortlet”了。

portlet-preferences:這部分的内容還不很确定,估計此後主要也就是修改這一部分。

5,在/WEB-INF/liferay-portlet-ext.xml檔案中增加:

 <portlet id="EXT_100" struts-path="oa_todolist" />

這裡主要需要注意的是:

id:要對應之前的portlet-name,這裡是“EXT_100”。

struts-path:對于IFrame而言,這個路徑是沒有用的。

6,在/WEB-INF/liferay-display.xml檔案中增加:

 <category name="category.oa_todolist">

  <portlet id="EXT_100" />

 </category>

這裡主要需要注意的是:

category name:這個要和之後步驟相對應。這裡是“category.oa_todolist”。

portlet id:要對應之前的portlet-name,這裡是“EXT_100”。

7,在/portal-ejb.jar/content目錄下的Language_zh.properties.native檔案中增加所需要的用于界面顯示的文字資訊。

注意:建議使用Window作業系統自帶的記事本程式來進行這個檔案的修改。因為要注意這個檔案的編碼格式。

本例中需要增加的有兩個:

category.oa_todolist=OA待辦事宜(測試)

javax.portlet.title.EXT_100=待辦事宜(測試)

這裡主要需要注意的是:

7.1,為category.oa_todolist這個分類設定一個用于界面顯示的分類名稱。

7.2,為具體的這個ID是“EXT_100”的portlet設定一個顯示在category.oa_todolist這個分類下面的内容名稱。