在 IBM Lotus Web Content Management 6.1 中定製客戶化內容錄入頁面

genusBIT發表於2010-07-23
賈 翠琴, 軟體工程師, IBM 中國軟體研發中心
郭 亮, 軟體工程師, IBM
金 正俊, 軟體工程師, IBM

簡介: 本文主要介紹了在 IBM Lotus Web Content Management 6.1.x 中所提供的針對內容錄入人員的定製功能,利用該功能可以方便地建立和設定更為簡潔的內容錄入頁面。


概述

IBM 內容管理器 (WCM) 是用來建立和管理髮佈於網際網路,企業內部網際網路以及企業入口網站上的網頁內容的管理系統。它提供了一系列的工具來管理網站內容的建立, 審批以及最終的釋出。這一系列工具所組成的複雜而又精密的內容管理系統使網站的建設不再僅僅是專業技術人員的領域,使非技術人員也能參予其中。

內容錄入是 IBM 內容管理器所提供最基本的功能,但是管理器本身所提供的預設的內容錄入頁面的設計是相對複雜的,在實際工作使用者更希望能使用自己定製的內容錄入頁面來取代和簡化這種預設的設計。

這篇文件主要描述如何在 WCM 中建立和設定客戶化的內容錄入頁面。

文件面向的讀者群應具備一定的 WCM 使用經驗,對 WCM 應該已經有了最基本的瞭解,並且能在 WCM 中建立最基本的站點結構。

在 WCM 中,使用者可以使用下面的方法來定製和簡化 WCM 的內容錄入介面:

  1. 分配內容庫角色給內容建立者
  2. 應用遠端操作建立定製啟動頁面
  3. 應用 WCM 編輯模板來簡化內容錄入頁面
  4. 應用編寫工具元件來實現線上編輯
  5. 使用 WCM 公共 API 來建立自己的內容錄入頁面

分配內容庫角色給內容建立者

WCM 內容編寫工具為使用者提供了不同的檢視來執行不同的任務。這些檢視包括“我的項列表”、“內容”、“站點區域”、“類別”、“元件”、“編寫模板”、“演示模板”、“工作流”以及“所有項”。

使用者在 WCM 內容編寫頁面可以訪問哪些檢視的許可權是由在 WCM 內容庫對各類條目的許可權級別所決定的。系統管理員可以只分配給內容錄入人員對內容檢視有編輯許可權,對其他的不希望出現在內容編寫頁面的檢視則不要分配任何許可權,這樣使用者在進入編寫頁面的時候系統會將其他沒有許可權的檢視全部隱藏,使使用者頁面更簡潔。

分配許可權給內容作者

內容檢視的角色可以在 WebSphere 入口網站管理頁面的入口網站內容管理處分配和定義,只有入口網站的系統管理員才能編輯和修改角色定義。

要使使用者能夠訪問 WCM 內容編寫頁面首先必須分配對內容庫的可視許可權。

  1. 以系統管理員的帳戶登陸入口網站服務期,登入後點選導航條進入頁面 管理 》入口網站內容 》 Web 內容庫
  2. 點選內容庫所在行的設定許可權圖示 圖示
  3. 點選“參與者”所在行的編輯角色圖示 圖示
  4. 選擇使用者並點選“確認”按鈕;
  5. 點選連結“資源”返回上一頁面;
  6. 點選 “完成”。

完成對內容庫的授權後,使用者預設對所有檢視有讀的許可權,如果只允許使用者看到內容檢視,我們可以取消其他檢視的讀許可權。

  1. 以系統管理員的帳戶登陸入口網站服務期,登入後點選導航條進入頁面 管理 》入口網站內容 》 Web 內容庫
  2. 點選內容庫所在行的庫資源授權圖示 圖示
  3. 點選待授權條目類別(如編寫模板,分類法,工作流程,演示模板,站點和站點區域以及元件)所在行的設定許可權圖示 圖示
  4. 取消“參與者”所在行的“允許傳播”的選擇;
  5. 點選 “應用”;
  6. 點選 “完成”。

通過以上操作,使用者擁有了內容檢視的只讀許可權,下面我們可以繼續進行對內容檢視的編輯授權。

  1. 以系統管理員的帳戶登陸入口網站服務期,登入後點選導航條進入頁面 管理 》入口網站內容 》 Web 內容庫
  2. 點選內容庫所在行的庫資源授權圖示 圖示
  3. 點選待授權條目類別(如內容)所在行的設定許可權圖示 圖示
  4. 點選“編輯者” 所在行的編輯角色圖示 圖示
  5. 選擇使用者並點選“確認”按鈕;
  6. 點選連結“資源”返回上一頁面;
  7. 點選 “完成”。

內容作者的可視檢視

完成上面所做設定後,內容作者就可以訪問 WCM 的內容編寫頁面並且這能看到指定的內容檢視以及“我的項列表”和“所有項”這兩個公共檢視。 如圖 1 所示


圖 1. 使用者內容檢視
圖 1. 使用者內容檢視 

應用遠端操作建立定製啟動頁面

在 WCM 6.1.x 中,使用者還可以配置 WCM 使用自己的客戶化啟動頁面來替換掉預設的使用者介面。

在定製啟動頁面中將應用 WCM 的遠端操作介面來呼叫在 WCM 內容編寫介面中的不同的檢視和操作。

遠端操作

WCM 的遠端操作通過在 URL 中呼叫引數“?wcmAuthoringAction=action”來觸發,action 的值如下:

new

Action 為 new 時可以在開啟一個新建條目頁面,必須在“type”引數中指定要新建條目的型別。

如:?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content

“type”可以用下列值 :

com.ibm.workplace.wcm.api.WCM_AuthoringTemplate

com.ibm.workplace.wcm.api.WCM_Category

com.ibm.workplace.wcm.api.WCM_Content

com.ibm.workplace.wcm.api.WCM_FileComponent

com.ibm.workplace.wcm.api.WCM_HTMLComponent

com.ibm.workplace.wcm.api.WCM_ImageComponent

com.ibm.workplace.wcm.api.WCM_NumericComponent

com.ibm.workplace.wcm.api.WCM_PresentationTemplate

com.ibm.workplace.wcm.api.WCM_RichTextComponent

com.ibm.workplace.wcm.api.WCM_Site

com.ibm.workplace.wcm.api.WCM_SiteArea

com.ibm.workplace.wcm.api.WCM_Taxonomy

com.ibm.workplace.wcm.api.WCM_TextComponent

com.ibm.workplace.wcm.api.WCM_Workflow

com.ibm.workplace.wcm.api.WCM_WorkflowStage

當建立一個新的內容條目時,可以通過新增引數“atid”來定義要建立內容所用的編輯模板,其中 atid 的值是編輯模板的編號,可以通過 WCM 公共 API 取得。

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&atid=com.ibm.workplace.wcm.api.WCM_AuthoringTemplate/ID

當建立一個新的站點區域,內容以及類別條目時,可以通過新增引數“pid”來定義要建立內容的父節點,其中 pid 的值是父節點的編號,可以通過 WCM 公共 API 取得。

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_SiteArea&pid= com.ibm.workplace.wcm.api.WCM_Site/ID

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Category&pid=com.ibm.workplace.wcm.api.WCM_Taxonomy/ID

delete

Action 為 delete 時用來刪除一個條目,必須在“docid”引數中指定要刪除條目的編號。這個編號可以通過 WCM 的公共 API 取得。

如:?wcmAuthoringAction=delete&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1

刪除條目的時,下面的引數可以用來指定刪除的是一個草稿條目

?isdraft=true

edit

Action 為 edit 時可以以編輯模式開啟一個條目,必須在“docid”引數中指定要編輯的條目的編號。這個編號可以通過 WCM 的公共 API 取得。

如:?wcmAuthoringAction=edit&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1

編輯條目的時,下面的引數可以用來指定編輯的是一個草稿條目

?isdraft=true

read

Action 為 read 時可以以只讀模式開啟一個條目,必須在“docid”引數中指定要讀入的條目的編號。這個編號可以通過 WCM 的公共 API 取得。

如:?wcmAuthoringAction=read&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1

讀入條目的時,下面的引數可以用來指定只讀的是一個草稿條目

?isdraft=true

openmainview

Action 為 openmainview 時可以在編寫頁面開啟一個可視檢視,必須在“view”引數中指定要開啟的檢視。

如:?wcmAuthoringAction=openmainview&view=contentbysitearea

“view”可以用下列值 :

contentbysitearea

contentbytitle

myrecent

mydrraft

mypendingapproval

mypublished

myexpired

mydeleted

alldraftitems

allexpireditems

allpublisheditems

alldeleteditems

componentsbytype

move

Action 為 move 時用來移動一個站點區域或者內容。

如:?wcmAuthoringAction=move&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1

移動的方向“1”表示向上,“-1”表示向下。如將一條內容向上移動一個位置,

?wcmAuthoringAction=move&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID&moveDirection=1

link

Action 為 link 時用來將內容連結到一個站點區域。

如:?wcmAuthoringAction=link&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID2

Copy

Action 為 copy 時用來複制一個條目。

如複製內容到一個新的站點區域下:

?wcmAuthoringAction=copy&docid=com.ibm.workplace.wcm.api.WCM_Content/ID&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID2

複製操作還可以使用下面的引數,

?copyAsDraft=true

重新啟動複製內容的工作流,使複製後內容狀態為草稿。

?wid=workflowname

重新定義複製內容的工作流,使複製後內容使用新的工作流。

?position=start

定位複製後內容在父節點的位置,預設狀態下為 last。

approve

Action 為 approve 時用來審批通過一個工作流條目,必須在“docid”引數中指定要審批條目的編號。

如:?wcmAuthoringAction=approve&docid=com.ibm.workplace.wcm.api.WCM_Content/ID

審批條目的時,下面的引數可以用來指定審批的是一個草稿條目

?isdraft=true

decline

Action 為 decline 時用來拒回一個工作流條目,必須在“docid”引數中指定要拒回條目的編號

如:?wcmAuthoringAction=decline&docid=com.ibm.workplace.wcm.api.WCM_Content/ID

viewversions

Action 為 viewversions 時用來開啟條目的版本檢視,必須在“docid”引數中指定條目的編號

如:?wcmAuthoringAction=viewversions&docid=com.ibm.workplace.wcm.api.WCM_Content/ID

viewhistory

Action 為 viewhistory 時用來開啟條目的歷史檢視,必須在“docid”引數中指定條目的編號

如:?wcmAuthoringAction=viewhistory&docid=com.ibm.workplace.wcm.api.WCM_Content/ID

Populating fields when creating or editing content

當使用 "new"或者 "edit" 引數修改內容條目時,可以在 URL 中定義不同內容域的值 .

如使用下面的 URL 建立一個新的內容,命名為 "newcontent"

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&wcmfield.content.name=newcontent

下面是在建立和修改內容時可使用的引數列表:

&wcmfield.content.name=

&wcmfield.content.title=

&wcmfield.content.description=

&wcmfield.content.authors=

&wcmfield.content.owners=

&wcmfield.content.publishDate=

&wcmfield.content.expiryDate=

&wcmfield.content.generalDateOne=

&wcmfield.content.generalDateTwo=

&wcmfield.content.workflow= (This can only be used when creating content.)

&wcmfield.content.categories=

&wcmfield.content.keywords=

&wcmfield.element.[elementname]= (You replace [elementname] with the name of the element you are populating.)

注意 : 引數 element 只能在下面型別的的內容元素中使用 :Text ,Html ,Rich text ,Option Selection ,User Selection ,Date and time ,Number ,JSP ,Link ,Component Reference

針對同一內容域可以定義多個值:

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&wcmfield.content.keywords=keyword1&wcmfield.content.keywords=keyword2

定義使用者型別的內容域時,必須使用下面格式:

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&wcmfield.content.authors=uid=usera

定義日期型別的內容域時,必須使用 US English格式。並且或者輸入日期和時間,或者只有日期輸入,只有日期輸入的情況下,預設時間為 12:00:00 AM,而且使用的時區是伺服器所定義的時區:

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&wcmfield.content.generalDateOne=Feb 14, 2008 12:53:03 PM

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&wcmfield.content.generalDateOne=Feb 14, 2008

定義 JSP 元素時,需要指定 JSP 檔案所在路徑:

?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content&wcmfield.element.jspelementname=/wps/wcm/jsp/html/example.jsp

定義關聯元件元素,需要指定要關聯的元件:

&wcmfield.element.mycompref.type=com.aptrix.pluto.cmpnt.NavigatorCmpnt&wcmfield.element.mycompref.id=e4bdf10042d0769698ccbeb0e25cc973

定義選擇元件元素,需要指定待選擇的每一個選項:

&wcmfield.element.[elementname]=AA&wcmfield.element.[elementname]=BB

定義使用者選擇元件,需要指定待選擇的每一個使用者:

&wcmfield.element.[elementname]=uid=wpsadmin,o=default organization&wcmfield.element.[elementname]=uid=wpsadmin2,o=default organization

定義連結元件元素,需要定義的引數如下:

新增一個連結到內容 :

&wcmfield.element.[elementname].type=content&wcmfield.element.[elementname].id=contentID

新增連結到連結元件 :

&wcmfield.element.[elementname].type=link&wcmfield.element.[elementname].id=linkcomponentID

新增連結到圖片或者檔案資源元件 :

&wcmfield.element.[elementname].type=resource&wcmfield.element.[elementname].id=componentID

新增連結到外部 URL:

&wcmfield.element.[elementname].type=external&wcmfield.element.[elementname].externalReference=myurl

指定連結文字使用內容名字還是自定義文字 :

&wcmfield.element.[elementname].useReferenceLinkText=true

指定連結顯示為圖片 :

&wcmfield.element.[elementname].linkImage=imagecomponentID

指定連結顯示的文字內容 :

&wcmfield.element.[elementname].linkText=text

指定連結的描述資訊 :

&wcmfield.element.[elementname].linkDescription=text

指定連結的目標視窗 :

&wcmfield.element.[elementname].linkTarget=

_blank

_parent

_self

_top

targetname

Save

autoSave

使用此操作儲存容器,後臺執行,沒有直觀的檢視,如:

&wcmfield.autosave=true

saveValidate

這個引數決定是否顯示 autosave 執行中所產生的提醒和錯誤資訊,如果設定為“true”,顯示提醒和錯誤資訊,否則不顯示,預設值為 true。

&wcmfield.saveValidate=false

Adding comments to the item history

在 URL 中使用 &comment=comment 在指定條目的歷史中備註資訊。

http:///wps/myportal/wcmAuthoring?wcmAuthoringAction=edit&docid=com.ibm.workplace.wcm.api.WCM_Content/ID1&createDraft=true&comment=comment

建立一個定製啟動頁面

一個定製啟動頁面可以是一個 JSP 檔案也可以是 HTML 檔案。它必須被放置在 WCM 編寫頁面應用程式的 WAR 目錄下: portal_server_root/installedApps/WCM_Authoring_UI_PA_xxxxxxx.ear/PA_xxxxxxx.war/, xxxxxxx 是應用程式安裝時生成的的唯一索引編號。

下面是一個“建立和檢視網頁內容”的定製啟動頁面的程式碼示例:

這是一個簡單的應用遠端操作建立並檢視內容的定製啟動頁面,使用者可以將程式碼加入一個 JSP 或者 HTML 檔案。

Create new Content
Open content by title
Open content by site area

配置編寫頁面使用定製啟動頁面

建立好上面的定製啟動頁面後,使用者就可以配置自己的編寫頁面使用建立好的定製啟動頁面來取代預設的編號介面。

如何配置編寫頁面使用定製啟動頁面:

  1. 以系統管理員的帳戶登陸入口網站服務期,登入後點選導航條進入頁面 Web 內容Web 內容管理Web 內容
  2. 點選 “配置”;
  3. 展開“使用者介面選項”區域,如圖 2: 

    圖 2. 使用者介面配置選項
    圖 2. 使用者介面配置選項 

  4. 為“選擇顯示標籤”選項選擇值“啟動頁面”;
  5. 輸入啟動頁面標籤的名稱;
  6. 輸入定製啟動頁面所在路徑;
  7. 點選 “確定”保持設定並返回編寫頁面;
  8. 定製啟動頁面將替換掉預設的使用者介面,如圖 3: 

    圖 3. 使用者定製啟動介面
    圖 3. 使用者定製啟動介面 

應用 WCM 編輯模板來簡化內容錄入頁面

在 WCM 中,編寫模板決定一個內容表單的佈局以及設計,決定哪些欄位,哪些元素元件可以出現在內容表單並且可以為元件和域定義預設值。

內容的預設值

當建立編寫模板時,使用者可以為將來以這個模板為基礎建立的內容定義各個欄位和元素元件的預設值。正確定義的預設值可以使內容的建立者更容易,更有效的建立新的內容,簡化內容建立流程。

簡化內容建立表單佈局

在 6.1.x,WCM 在編寫模板中提供了下面的功能來簡化內容建立表單的佈局。

內容表單佈局屬性選項:

使用者可以通過定義“內容表單佈局”屬性選項來更改內容表單的頁面佈局,根據使用者所定義的表單佈局選項,內容建立表單可以以不同的風格來顯示各個區域以及元件。

共有一下四種佈局選擇:

  • 可摺疊部分:縱向組織表單上的每一部分,並能讓內容作者根據需要展開和摺疊表單部分。系統預設選擇該選項。
  • 標註部分:縱向組織內容表單上的每一部分,並且用一簡單的標註來分隔表單部分。
  • 帶標籤:橫向組織表單上的每一部分,並用類似於標籤的連結提供對不同部分的訪問。
  • 平面:縱向排列表單上的所有元素,不按部分來組織元素,沒有任何分割符來分隔不同的區域。

隱藏欄位:

除了為內容建立表單選擇不同的佈局來組織頁面外,使用者可以通過應用“隱藏欄位”這個屬性來限制頁面欄位的顯示,從而為內容作者簡化內容建立頁面。在編寫模板被標為隱藏的欄位在內容建立表單將不會顯示。

定製幫助文字

在編輯模板中,使用者還可以為內容作者定製幫助文字。

  • 為整個內容表單定製幫助文字:使用者可以為內容表單整體定義一個幫助文字,例如可以用這個幫助文字來描述建立這個表單的目的,或者解釋要建立的表單對整個站點的貢獻以及影響。這個內容表單幫助文字在編寫模板的“內容表單屬性”部分定義。
  • 為某個特定的元素元件定義幫助文字:使用者可以為每一個新增的元素元件定義自己特定的幫助文字。如可以定義一個文字元素元件的輸入規則,或者建立這個元素元件的目的等。這個幫助文字在每個元素元件各自所對應的“屬性”標籤頁面定義。

站點區域選項

預設情況下,內容作者在儲存內容時,所有該使用者有讀許可權的站點區域都會以樹形結構顯示在站點選擇頁面。當使用者可以讀的站點區域比較多時,將會給站點區域的選擇造成一定的負擔。我們可以通過更改編寫模板“內容表單屬性”部分的“站點區域選擇選項”來減少待選擇的站點區域數量。

“站點區域選擇選項”有以下兩種主要選擇:

  • 所有可用的站點區域:以樹形結構顯示所有的可見的站點區域,讓內容建立者能將內容項儲存在任何站點區域下。這是系統的預設選項。
  • 僅選定的站點區域:當內容作者有非常多的站點區域的可讀許可權時,而且相對應當前模板建立的內容,只有有限的站點區域需要選擇,這時選擇這個選項是最優的方案。 選擇該選項,並選擇可供內容作者選擇的可以在其中儲存內容的站點區域,這樣當內容作者儲存內容時將只列出所選列表範圍內的站點區域。另外,如果使用者希望將內容預設的直接儲存在某個或某幾個指定的站點下,並且不需要站點區域選擇頁面彈出,那麼選擇該選項並選擇站點之後,在“選擇內容作者的儲存選項”處選擇“無選項(自動將內容儲存到選定的站點區域)”,新建的內容將自動儲存到在這個模板選擇的站點區域下。

工作流選項

同站點區域選擇,使用者也可以在編寫模板預定義要建立內容可選的工作流範圍以及預設值,這個選項在編寫模板的“預設內容設定”標籤頁面的工作流部分定義。

“工作流程選擇選項”有以下兩種主要選擇:

  • 所有可用的工作流程:顯示所有的可見的工作流程,讓內容建立者能將任何工作流程應用在內容項。這是系統的預設選項。
  • 僅選定的工作流程:選擇該選項,並選擇可供內容作者選擇的可以應用的工作流程,這樣當內容作者儲存內容時將只列出所選列表範圍內的工作流程。

示例

下面的示例將建立一個僅顯示“標識”和“內容”部分給內容作者的編寫模板。

建立編寫模板 :

  1. 以系統管理員的帳戶登陸入口網站服務期,登入後點選導航條進入頁面 Web 內容Web 內容管理Web 內容
  2. 選擇內容庫;
  3. 點選 “新建”按鈕並選擇“編寫模板”;
  4. 輸入編寫模板的名稱。
  5. 展開“內容表單屬性”部分,如圖 4: 

    圖 4. 內容表單佈局選項
    圖 4. 內容表單佈局選項 

  6. 在“內容表單佈局”處選擇 “帶標籤”;
  7. 在“站點區域選擇選項”處選擇“僅選定的站點區域”,並新增一站點區域。如圖 5: 

    圖 5. 站點區域選擇
    圖 5. 站點區域選擇 

  8. 切換到標籤頁“預設內容設定”;
  9. 展開“概要檔案”部分,並選擇選項“隱藏欄位”。在“內容屬性”,“工作流程”,“訪問權”以及“歷史”部分做同樣的操作以隱藏以上區域。如圖 6: 

    圖 6. 概要檔案選項
    圖 6. 概要檔案選項 

  10. 展開“工作流程”部分並定義一個預設的工作流,如圖 7: 

    圖 7. 工作流定義
    圖 7. 工作流定義 

  11. 點選頁面上部工具欄按鈕“管理元素”並新增一個元素元件;
  12. 儲存並關閉編寫模板;

應用編寫模板建立內容:

  1. 點選 “新建”按鈕並選擇“內容”;
  2. 選擇上面所建立的編寫模板;
  3. 內容建立頁面將顯示出來,只有“標識”和“內容”區域可見。如圖 8: 

    圖 8. 內容建立頁面
    圖 8. 內容建立頁面 

應用編寫工具元件來實現線上編輯

應用內容編寫元件可以在網站頁面上加入 WCM 的編寫頁面功能。

以下的功能可以通過內容編寫元件新增在網站頁面:

  • 建立一個的內容條目;
  • 對顯示的網站頁面進行線上編輯;
  • 刪除當前顯示的網站頁面;
  • 對當前預覽頁面進行的審批,這個功能只對審批人員開啟的草稿內容可用。

建立一個編寫工具元件

編寫工具元件只能在庫元件中建立和使用,不能在編寫模板,站點,站點區域以及內容中通過新增元素元件建立。

在建立編寫工具元件時,使用者需要定義編寫工具的佈局以及需要新增的操作,並且為所新增的操作定義需要的引數。編寫工具的顯示格式可以定義為各種不同的方式,可以顯示為文字連結,也可以顯示為圖片連結,這個是由使用者自己的程式碼設計決定的。

以下操作可以被新增在編寫工具元件:

  • 新建
  • 編寫
  • 刪除
  • 核准
  • 拒絕

這些操作通過 WCM 的 placeholder 標籤來嵌入在編寫工具中,只有下面的的屬性可以在編寫工具的 placeholder 標籤中可用:

  • name
  • href
  • namelink

如何建立編寫工具元件:

  1. 以系統管理員的帳戶登陸入口網站服務期,登入後點選導航條進入頁面 Web 內容Web 內容管理Web 內容
  2. 選擇內容庫;
  3. 點選 “新建”按鈕並選擇“元件”》“編寫工具”;
  4. 輸入編寫工具名稱;
  5. 在“設計”區域定義編寫工具的佈局。
    • 在編寫工具的各個操作的設計區域輸入 HTML, 文字和標籤來定義所希望的每個操作的佈局和顯示;
    • 為每個操作選擇必要的引數;
    • 輸入頁面,頁尾以及分隔符的設計。

    下面的示例建立了一個顯示為文字連結的編寫工具。每一個操作的設計區域都包含了以 placeholder 標籤生成文字和連結的編寫工具,每一個連結都使用了 target="_blank" 標籤來使編寫工具的操作在一個新的瀏覽器視窗中開啟而不是在當前頁面開啟。

    新建操作設計:

    " target="_blank"> 
     
    

    讀操作設計:

    " target="_blank"> 
     
    

    編輯操作設計:

    " target="_blank"> 
     
    

    刪除操作設計:

    " target="_blank"> 
     
    

    核准操作設計:

    " target="_blank"> 
     
    

    拒絕操作設計:

    " target="_blank"> 
     
    

    頁首:


    分隔符:

     
    

    頁尾:

     
    

  6. 儲存編寫工具。

呼叫編寫工具元件

編寫工具元件可以在顯示模板,選單元件以及導航器元件中呼叫,當在選單和導航器元件中呼叫編寫工具時,讀,編寫,刪除以及審批操作將被應用在選單和導航期的每一條結果所對應的內容條目上。

在編寫模板呼叫編寫工具:

和一般普通的元件一樣,標籤 component 被應用於編寫模板和元素設計中呼叫編寫工具元件。


			

在選單和導航器元素中呼叫編寫工具:

標籤 authoringtool tag 被應用在選單元素設計和導航器元素設計中呼叫編寫工具。讀,編寫,刪除以及審批操作將被應用在選單和導航期的每一條結果所對應的內容條目上。


			


使用 WCM 公共 API 來建立自己的內容錄入頁面

除了 WCM 所提供的現有的功能,使用者還可以使用 WCM 的公共 API 來進行二次開發來擴充套件功能,使用者可以使用這些 API 來建立自己的內容管理應用來建立和管理 WCM 頁面。在上面我們已經介紹了 WCM 的定製啟動頁面,使用者也可以在自己的定製啟動頁面使用 WCM 的公共 API 來為該頁面新增更多的功能。

使用 WCM APIs 的準備工作

JavaDoc:

WCM 公共 API 的 JavaDoc 可以在入口網站伺服器的下面路徑找到:

\installedApps\\wcm.ear\ilwwcm.war\webinterfiace\api-javadoc
			

驗證 WCM JAR 檔案路徑包含在系統設定的 classpath 中:

在開始開發自己的應用程式前,使用者必須保證下面的 WCM JAR 檔案已經被新增在自己應用程式平臺的 classpath 中。

\wcm\prereq.wcm\wcm\shared\app\ilwwcm-api.jar
			

Import WCM Packages:

com.ibm.workplace.wcm.api.*
com.ibm.workplace.wcm.api.exceptions.*
			

WCM API 的關鍵介面

Workspace 介面 :

workspace 介面是 IBM Workplace Web Content Management API 的主要介面。WCM 內容的建立,儲存,刪除以及搜尋都是通過 workspace 進行的 . Web Content Management 通過 workspace 和特定的使用者相關聯,通過 API 所執行的操作都將以 workspace 所指定的使用者身份來完成。

要得到一個 workspace 物件,首先必須獲取 WebContentService:

try 
{ 
    // Construct and inital Context 
    InitialContext ctx = new InitialContext(); 
    
    // Retrieve WebContentService using JNDI name 
    WebContentService webContentService 
        = (WebContentService) ctx.lookup("portal:service/wcm/WebContentService"); 
} 
catch (NamingException ne) 
{ 
    System.out.print("Naming Exception: " + ne); 
} 

如何初始化 workspace:

webContentService.getRepository().getWorkspace("my username", "my password"); 

還可以通過下面的方法來初始化 workspace

在 portlet 中 :

Workspace workspace = webContentService.getRepository()
    .getWorkspace( (Principal) portletRequest.getUser() ); 

非 portlet:

Workspace workspace = webContentService.getRepository()
    .getWorkspace((Principal) request.getUserPrincipal() ); 

在完成對 workspce 的操作時必須呼叫 endWorkspace():

webContentService.getRepository().endWorkspace(); 

注意:當使用 JSP 元件時不需要呼叫 endWorkspace(),因為當前的頁面的載入和 session 的管理都是有 WCM 應用程式來處理的。

DocumentLibrary 介面:

DocumentLibrary 用來定義要使用的內容庫。我們使用 setCurrentDocumentLibrary 方法來定義當前要使用的內容庫。如果沒有指定內容庫,API 將使用在 WCMConfigService.properties 檔案中定義的預設庫。

獲取當前 DocumentLibrary:

DocumentLibrary lib = workspace.getCurrentDocumentLibrary(); 

設定當前 DocumentLibrary:

Workspace.setCurrentDocumentLibrary(library); 

Document, DocumentTypes 和 DocumentID 介面 :

在 WCM API 中 document 代表庫中的一個物件和實體。它是大多數其他實體介面(如內容,類別和站點介面)的父介面物件。

文件型別表示 document 的類別 , 它可以是內容,類別,站點或者所有的元件類別。在 WCM API 中,DocumentTypes 介面維護了所有的文件類別列表,而 DocumentType 物件則是一個單獨的文件類別。

在 WCM 的中,每一個實體物件都有一個唯一的編號標識,這個唯一的編號被稱為文件編號,在 DocumentID 中定義,不同的實體文件編號不同。

ContentComponent, LibraryComponent, ContentComponentContainer 以及 Content 介面 :

ContentComponent 在 WCM 中代表內容元素,內容元素可以存在於 Content, Site 或 SiteArea 物件中。

WCM API 提供了 LibraryComponent 介面來代表所有的庫元件。例如 LibraryFileComponent, LibraryHTMLComponent 和 LibraryImageComponent 介面分別代表文件元件,HTML 元件和圖片元件。然而,並不是所有的庫元件都有自己的介面定義,如導航器元件和選單元件在 API 就沒有相應的介面定義。

ContentComponentContainer 介面提供了在相應的容器中更新和取得內容元素元件的最基本功能。

Content 介面儲存了 WCM 內容的相關資訊,這些資訊包括內容的標識資訊,分類以及許可權等。

Rendering Context 介面 :

在 WCM 中,在網站頁面中展示內容和元件的內容是一個最基本的需求。RenderingContext 介面包含展示一個可展示物件所需要的所有資訊,如當前的內容,顯示模板以及站點資訊,應用程式路徑,展示的內容等等。

下面示例顯示瞭如何建立 RenderingContext,如何新增上下文以及應用上下文展示一個內容:

// Create the rendering context 
RenderingContext context =  workspace.createRenderingContext(servletRequestObj, 
    servletResponseObj, 
    new HashMap(), 
    "http://[HOSTNAME]:[PORT]/[CONTEXT]", 
    "connect"); 

// Set the path to the content to be rendered 
context.setRenderedContent("/Library1/SiteA/SiteArea1/SiteArea1-1/myContent"); 

// Get the rendered string 
String renderedContent = workspace.render(context); 

建立一個簡單的使用 WCM API 建立內容的 JSP 示例

這個示例示範瞭如何使用 Web Content Management API 來建立一個簡單的內容建立頁面。

建立一個 JSP 文件並加入下面程式碼:

  1. 定義允許示例必要的引數
    /** The WCM workspace user name */ 
    String apiUser = "[USER_NAME]"; 
    /** The WCM workspace password */ 
    String apiUserPassword = "[PASSSWORD]"; 
    /** The WCM Library to query against */ 
    String libraryName = "[LIBRARY]"; 
    /** The WCM Authoring Template Name for the new content*/ 
    String contentAuthoringName = "[AuthoringTemplateName]"; 
    /** The WCM Site Area Name for the new content*/ 
    String contentSiteArea = "[SiteAreaName]"; 
    

  2. 假設使用者需要以一個包含一個文字元素“Body”的編寫模板為基礎建立內容,創件內容時需要輸入內容名稱和這個文字元素的內容。
    
    
    Content Title:
    Body
     

  3. 當 http request 為 POST 時執行儲存操作
    String contentTitle = request.getParameter("contenttitle"); 
    String contentBody = request.getParameter("body"); 
    
    // Get the WCM workspace 
    Workspace workspace = 
        webContentService.getRepository().getWorkspace(apiUser, apiUserPassword); 
    workspace.setCurrentDocumentLibrary(workspace.getDocumentLibrary(libraryName)); 
    
    // Retrieve the authoring template and site area 
    DocumentIdIterator authoringTemplates = 
        workspace.findByName(DocumentTypes.AuthoringTemplate, contentAuthoringName); 
    DocumentIdIterator siteAreas = 
        workspace.findByName(DocumentTypes.SiteArea, contentSiteArea); 
     
    DocumentId authoringTemplateId = (DocumentId) authoringTemplates.next(); 	         
    DocumentId siteAreaId = (DocumentId) siteAreas.next(); 
    
    // Create the content for the authoring template 
    Content content = 
        workspace.createContent(authoringTemplateId,siteAreaId,null,ChildPosition.START);
    
    // Set the name of the content 
    content.setName(contentTitle); 
    
    // If you have a text component on the authoring template and you wish to populate it
    TextComponent bodyComponent = (TextComponent) content.getComponent("Body"); 
    bodyComponent.setText(contentBody); 
    content.setComponent("Body", bodyComponent); 
    
    String[] saveErrors = workspace.save(content); 
    
    if (saveErrors.length > 0) { 
        output.append("The following errors occurred on content save
    "); for (int j=0; j < saveErrors.length; j++) { output.append(saveErrors[j]+"
    "); } } else { output.append("

    Content created and saved
    "); output.append("
    Back to data entry screen
    "); while (!content.isPublished()){ content.nextWorkflowStage(); } }

  4. 儲存 JSP 檔案並把它加入使用者自己的應用程式,也可以加入 WCM 的應用中,呼叫並展示這個 JSP 檔案。如圖 9: 

    圖 9. API 內容建立頁面
    圖 9. API 內容建立頁面

原文連結:http://www.ibm.com/developerworks/cn/lotus/wcm61-custom-input/index.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-668840/,如需轉載,請註明出處,否則將追究法律責任。

相關文章