« 返回到 Using Liferay

Organization administration

Alternative Languages: 日本語

Introduction #

The Organization Administration tool follows the same design patterns employed by the User Administration to achieve better usability and more flexibility.

The following sections describe how to use th new UI and how it can be customized.

Using the Organization Administration #

The most significant elements changed in the Organizations administration UI are:

Toolbar for top level navigation #

The toolbar is located at the top of the users section just below the title “Organizations”.

This toolbar provides a quick access to the most used functions when working with organizations: View organizations → show a list of all the organizations Add organization → show the add organization form Only the users with permissions to do any of the previous actions will be able to see them in the toolbar.

Searching organizations #

By default, the administrator is shown a simple search box to enter some text. That text will be used to search in all of the organization's fields.

There is also an advanced search available that allows entering different texts for each of the main user fields. Once an administrator switches to 'advanced search' the user will remember her choice and show the advanced search until she switches back to the simple search.

Editing the organization details #

The whole form for adding or editing organizations has been redesigned as shown in the screenshot below. There is a right menu showing all the sections of the form with “cancel” and “save” buttons at the bottom.

The sections are divided into three groups: Organization information, Identification and Miscellaneous.

Forms for adding or editing organizations can also be different which allows an easy and fast creation of organizations and a deeper personalization afterwards. By default, when creating an organization only the organization details are configurable and when editing the organization we will be able to see all the rest of enabled sections. Also no changes are applied until the save button is clicked and when doing it the whole for is saved.

Customizing the Organization Administration #

Customizing the organization types #

Previous versions of Liferay included support for two types of organizations: regular and location. One of the new features implemented for v5.2 is to support defining new types of organizations and for each of them specify:

  • Name of the new type.
  • Label of the type, which can be specified in Language-ext.properties by using the type name as the key. This way it's possible to have the label translated to several languages.
  • If this type of organization can be a root level organization or not.
  • Which other types of organisations are allowed to be a child of this type of organisation.
  • Whether this type supports and/or mandates for a country and region to be specified.

Following is an example configuration of organization types that could be useful for an international company that users Liferay for all of their B2B needs around the world.

organizations.types=regular,region,department,customer

organizations.rootable[region]=true
organizations.children.types[region]=department,customer
organizations.country.enabled[region]=false
organizations.country.required[region]=false

organizations.rootable[department]=false
organizations.children.types[department]=customer
organizations.country.enabled[department]=false
organizations.country.required[department]=flase

organizations.rootable[customer]=false
organizations.country.enabled[customer]=true
organizations.country.required[customer]=true

This configuration mandates that regions can only be at the top level (with no parents) and it can have customers and departments as children. Departments must always belong to a region and can have customers as children. Customers must always have a region or a distribution area as a parent and cannot have any children.

Customizing the organization form #

The form used for editing or adding organizations can be completely customized. This customization ranges from the configuring which sections of the form navigation menu are shown to adding custom ones.

Configuring the sections of the organization form #

The form sections can be configured through properties at the portal-ext.properties file. The following 3 properties determine which sections are available when creating a new user account:

organizations.form.add.main=details
organizations.form.add.identification=
organizations.form.add.miscellaneous=

Note that those categories that have no sections configured (in the example above that's the case for identification and miscellaneous) won't appear at all in the menu. Also, note that many of the sections, such as password, user associations, roles etc require the user account to exist, so they cannot be used in the above properties. It is possible though to customize those sections or create custom ones that can be used during creation (see below for an explanation of creating new sections).

After the user account has been created the form is expanded to show several additional sections.

[organizations.form.update.main=details organizations.form.update.identification=addresses,phone-numbers,additional-email-addresses,websites,services organizations.form.update.miscellaneous=comments,reminder-queries,custom-attributes 

In this properties we can add the name of the sections we want to show in each section-group separated by commas. For example, if we don't want to show the “websites” section, we would just remove the word websites from users.profile.update.identification. We can also change sections from one group to another or even create new sections.

Creating new sections #

It is possible to add custom new sections to the organization form using the extension environment. The following steps detail how to achieve that:

  • 1) Choose a name for the section and add it to the desired section in the properties listed above. The name must follow the following rules:
    • It must be lower case
    • If it has several words they should be separated by a dash.
      • Note that the name should never have spaces or non-ascii characters.
      • For example, note that social-network is ok while social_network or social.network are wrong.
  • 2) Create a JSP file which contains the form section. The file must be located in the extension environment in ext-web/docroot/html/portlet/enterprise_admin/organization and the name must be the one chosen in the previous step but with underscores instead of dashes (Tip: this change is required to conform to Liferay's own convention of using underscores in the names of the JSPs).
    • For example, the correct jsp file name for the section social-network is social_network.jsp and must be placed in the extension environment in the folder
  • 3) Add a new entry in Language-ext.properties using the name chosen in step 1 as the key and the desired label as the value. Repeat for any languages that are supported in the portal.

Dynamically hiding or showing sections #

In some advanced cases it may be useful to be able to hide or show certain sections based on custom conditions. One simple way to do this is by using jQuery. For example, let's say we want to hide the section "addresses". The following code will do the job:

	<script type="text/javascript">
		jQuery(
			function() {
				jQuery('#addressesLink').parent().hide();
			}
		);
	</script>

The benefit of using JavaScript to do this is that it allows hiding or showing sections when the user changes the value of a certain field in the browser, with no need to do a page refresh.

But sometimes, the condition to show or hide is known in the server and using JavaScript causes the section to be visible for a small period of time while the browser finishes the page loading and then disappears. To solve this Liferay v5.3 has introduced a second mechanism that allows any section JSP to specify that its associated link in the menu or that of any other section should not be included at all. For example:

<%
if (myCustomCondition) {
	request.setAttribute(WebKeys.FORM_NAVIGATOR_SECTION_SHOW + "addresses", Boolean.FALSE);
}
%>

Customizing the fields of any form section #

Each section of the user form has been implemented as a separate JSP template with no business logic so that it can be safely overridden.

All these files have the same name as the section (using hyphens for underscores) and can be found in the following deployment directory:

	/html/portlet/enterprise_admin/organization

To modify any of these files copy it to the equivalent directory in the extension environment:

	ext-web/docroot/html/portlet/enterprise_admin/organization

And perform any changes desired.

Customizing the columns of the list of organizations #

The list of users can also be customized through the extension environment. To do that copy the file: /html/portlet/enterprise_admin/organization/search_columns.jspfinto:

	ext-web/docroot/html/portlet/enterprise_admin/organization

And perform any changes desired. That file doesn't contain any business logic. It has a taglib invocation for each of the columns making it very easy to change the order or add additional columns. That file provides examples for how to show values of custom attributes in custom columns.

3 附件
48794 查看
平均 (0 票)
满分为 5,平均得分为 0.0。
评论
讨论主题回复 作者 日期
This is an attempt to correct a formatting in... b v j 2009年2月14日 下午12:44
Hello, i'm trying to extend fields from... Bryan Alvaro Alfaro 2009年8月17日 下午5:54
Nice explainations but I don't understand if an... Nicolas Muller 2010年4月25日 上午5:38
what "custom attribute" do in organisations... Pooja Shah 2010年8月5日 上午4:16
Generally and organizational administrator can... Reed Haslam 2013年2月25日 下午12:38

This is an attempt to correct a formatting in <b>Customizing the organization types </b>
<br>
The property 'array' notation is getting translated to hyperlinks by the wiki engine. Here's a similar excerpt from portal.properties using html PRE notation<br><br>
<pre>
##
## Organizations
##

organizations.types=regular-organization,location

organizations.rootable[regular-organization]=true
organizations.children.types[regular-organization]=regular-organization,location­
organizations.country.enabled[regular-organization]=false
organizations.country.required[regular-organization]=false

organizations.rootable=false
#organizations.children.types=
organizations.country.enabled=true
organizations.country.required=true

</pre>
在 09-2-14 下午12:44 发帖。
Hello, i'm trying to extend fields from organization into another database schema. I used the steps here to add a section (Creating new sections) but i can't store my new fields into my schema.
In Liferay 5.1.1 i used to modify my struts-ext-config.xml to change the action of the form that is called by saveOrganization() javascript function.
I don't understand why this can't be done in Liferay 5.2.3. I put my action EdtiOrganizationAction in my ext environment and added some code but the server is still executing the old EditOrganizationAction.

Is there any other way to handle this in 5.2.3?
在 09-8-17 下午5:54 发帖。
Nice explainations but I don't understand if an organization inherits rights, data from its father... Maybe an improvement ?

Thank.
在 10-4-25 上午5:38 发帖。
what "custom attribute" do in organisations portlet?
在 10-8-5 上午4:16 发帖以回复 Nicolas Muller
Generally and organizational administrator can only grant organizational roles to membe of his organization. Is there any way to allow and organizational owner or administrator to grant "regular" roles to users in their organization.

I've seen a page for associating permissions to roles that had a column titled "grant" with a set of roles down the left side. While I checked off several "regular" roles, doing so did not seem to work.

I am using Liferay 6.1.
在 13-2-25 下午12:38 发帖。