2013-04-09 152 views
7

環境:Liferay 6.1 GA3 EE我們可以爲門戶定義自定義權限嗎?

我們可以爲門戶定義自定義權限嗎?

我們可以通過創建一個帶<portlet-resource>標記的XML並在其中定義<action-key>來在我們的插件portlet中創建自定義權限。

當我開始爲控制面板中的角色定義權限時,我的portlet出現在Site Applications部分,現在我想要的是在應該有單獨類別的portlet或掛鉤中創建自定義權限(而不是通過EXT)爲My Custom並應具有自定義權限像<action-key>ACCESS_EMAIL</action-key><action-key>ACCESS_TOOLSET<\action-key>

總之我的自定義類別應節Portal內出現如下圖如下圖,而我定義自定義門戶(常規)角色的權限:

Portal Define Permissions

我想使用此權限不是爲特定的portlet,但需要在jsp-hooks或任何其他我的自定義portlet中使用它。就像我們有ADD_SITE,ADD_USER etc權限Portal - >General,我希望這些權限是通用的。

編輯
爲了使portlet的出現在任何我創建了一個簡單的自定義的portlet的部分,因此portlet出現在Site Application部分,如果我想我可以讓它出現在Control Panel節以及。

但現在問題是我沒有任何視圖,也沒有在這個portlet中的任何實現,所以我通過更新liferay-display.xml並將其置於category.hidden下使其隱藏。這也從Define Permission下拉菜單中隱藏了它。

如果我不使用lifeay-display.xml liferay將其置於Undefined類別下,同時從dock欄中的+Add菜單訪問它。 :-(

謝謝

+0

您想要這些自定義鍵做什麼?如果您正在開發portlet,那麼您可以在portlet中定義這些portlet,並將其顯示在相應位置的下拉列表中。 – 2013-04-09 16:37:34

+0

@rp。我更新了我的問題,想知道如何使用權限。謝謝 – 2013-04-10 08:44:07

+0

我明白你想要完成什麼,但不幸的是我不認爲這是一個可用的功能。 – 2013-04-10 16:57:00

回答

8

這就是我們如何實現它:

  1. 創建與此portlet像/resource-actions/custompermission.xml權限文件自定義portlet指定我們想要的不同自定義權限的完整。步驟與this wiki
  2. 使此portlet已隱藏的portlet,這樣就不會在Add菜單DockBar上,無論是在控制面板也沒有在Define Permissions下拉出現。
  3. 現在創建一個JSP鉤子(您可以創建一個單獨的插件或者將鉤子包含在點編號中定義的定製portlet中。1)和修改/docroot/html/portlet/roles_admin/edit_role_permissions_navigation.jspf,包括我們的自定義類別:

    <aui:form action="<%= currentURL %>" name="resourceSelection"> 
        <aui:fieldset> 
         <aui:select changesContext="<%= true %>" name="add-permissions" onchange='<%= renderResponse.getNamespace() + "addPermissions(this);" %>'> 
          <aui:option label="" /> 
    
          <%-- Our customization starts here --%> 
    
          <%-- 
           We have added our very own option group but this is not required just the <aui:option> will do 
          --%> 
          <optgroup label="<liferay-ui:message key="custom" />"> 
    
          <% 
          if (_isCustomPermissionsPortlet(CUSTOM_PERMISSIONS_PORTLET)) { 
    
           editPermissionsURL.setParameter("portletResource", CUSTOM_PERMISSIONS_PORTLET); 
           editPermissionsURL.setParameter("showModelResources", "0"); 
          %> 
    
           <%-- 
            and here we add our own Permission category drop-down option 
           --%> 
    
           <aui:option label="custom-permissions" 
             selected="<%= _isCurrent(editPermissionsURL.toString(), portletResource, showModelResources) %>" 
             value="<%= editPermissionsURL.toString() %>" /> 
    
          <% 
          } 
          %> 
          </optgroup> 
          <%-- Our customization ends here --%> 
    
         <c:choose> 
          <c:when test="<%= role.getType() == RoleConstants.TYPE_SITE %>"> 
           <optgroup label="<liferay-ui:message key="administration" />"> 
    
           <% // Other liferay stuff continues ... 
    

    ,並在JSP的結尾,我們有:

    // ... other liferay stuff 
    
    private boolean _isOrganizationPortlet(String portletId) { 
        return ArrayUtil.contains(_ORGANIZATION_PORTLETS, portletId); 
    } 
    
    private boolean _isPortalPortlet(String portletId) { 
        return ArrayUtil.contains(_PORTAL_PORTLETS, portletId); 
    } 
    
    // Our customization starts here 
    // portlet's ID 
    public static final String CUSTOM_PERMISSIONS_PORTLET = "CustomPermissions_WAR_CustomPermissionsportlet"; 
    
    private static final String[] _CUSTOM_PERMISSIONS_PORTLET = { 
        CUSTOM_PERMISSIONS_PORTLET, 
    }; 
    
    private boolean _isCustomPermissionsPortlet(String portletId) { 
        return ArrayUtil.contains(_CUSTOM_PERMISSIONS_PORTLET, portletId); 
    } 
    
    // Our customization ends here 
    

    這是它的外觀在控制面板中:

    Custom permissions in the Control Panel

    我們可以將權限移動到Portal部分以及通過將我們的自定義代碼移動到JSP中的那個位置。

    上述的優點是,當我們要設置定義站點角色的權限時,它會顯示。

希望這有助於某人。

+1

謝謝Prakash K ...很好學習。 – suyash 2013-04-25 07:32:23

+1

Hi Prakash K,請給我一些關於這個的示例代碼嗎?我對此感到困惑。謝謝 – 2014-05-05 07:39:45

+0

謝謝,非常有用 – 2014-07-21 05:51:58

相關問題