2014-01-30 28 views
0

正如標題所提到的,我想知道是否有使用功能編輯portlet中的portlet標題一個比較簡單的方法。portlet標題編輯功能集成到門戶身體

也就是說,單擊包含在portlet中的跨度時,它會然後才能變成可編輯(通過輸入盒),那麼,更新portler偏好。

這或許可以從頭開始做,但因爲功能已經存在於Liferay的,有可能是一種方式來利用它。

+0

女巫的Liferay版本您使用? – Mark

+0

對不起,我使用Liferay 6.2 CE。 – user3253096

回答

0

是的,你可以更新Portlet標題用一個簡單的Ajax調用。

PFB的示例jQuery代碼和強制參數被髮送以更新portlet標題。

$.ajax({ 
      url: "/c/portlet_configuration/update_title", 
      method: "POST", 
      data: { p_auth:'vcYb1DvX', 
        p_l_id:'10187', 
        portletId:'56_INSTANCE_hbJBswwx0rYg', 
        title:'My Webcontent' 
      }, 
      success: function(data){ 

      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
      } 
     }); 
+0

是的,類似的東西,加上serverResource是我已經實現了一個解決方案。我想要實現的是使用Liferay的內置功能 - 即將標題作爲portlet中的不同元素進行克隆,以利用已經內置的用戶界面來編輯標題和相應的權限檢查。 – user3253096

0

聽起來就像你想要一個「就地編輯器」。對於YUI(它是LifeUI中捆綁的AlloyUI的底層JS庫),我得到的第一個命中是this project,但是使用此搜索術語,您將能夠找到最適合您需求的組件。

+0

是的,沿着這些線路的東西,但它利用liferay的權限檢查。我最終從頭開始構建權限檢查和JS代碼,但似乎檢查用戶是否是Portlet的所有者並不重要,因爲檢查佈局所有者無法按預期工作。 – user3253096

+0

要添加的權限檢查意味着,一些僞代碼是這樣的: '如果(調用hasPermission){ 生成與內容 在位編輯器)其他( 生成純文本內容的 }' 所以它不是真正的火箭科學。 Liferay擁有一個權限檢查器,可以確保可配置的權限,例如綁定到您找到的基於角色的訪問控制。我不確定你還需要什麼,以便你必須自己推出 –

+0

是的,這就是我目前實施的方式,問題在於檢查後端的權限。我要檢查當前用戶是否是portlet的所有者或網站管理員:\t \t \t'如果(renderRequest.isUserInRole( 「管理員」)|| PortletKeys.PREFS_OWNER_TYPE_USER == portalUtil.getUserId(RenderRequest中)){ \t \t \t \t hasPermission = true; ''''。不幸的是,我一直無法獲得與添加portlet的用戶相匹配的所有者ID。 – user3253096

0

我沒有清楚地明白你的問題。不過,我正在回答你的問題。 在我的項目,我們提供自定義標題,我們將通過獲取使用下面的代碼在我的首選項頁面的文本框中輸入的名稱更新爲portlet定製portlet標題: //寫操作方法的代碼

PortletPreferences preferences = actionRequest.getPreferences(); 
String portletTitle= actionRequest.getParameter("portletTitle"); (title entered in text box) 
preferences.setValue("portlet-setup-title-en_US",portletTitle); // update the portlet title  of the portlet 
preferences.setValue("portlet-setup-use-custom-title","true");// setting to receive custom title 
preferences.store(); //stores the preference 

希望這有助於