Author: thomas.heute(a)jboss.com
Date: 2009-12-09 12:56:51 -0500 (Wed, 09 Dec 2009)
New Revision: 982
Removed:
portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml
Modified:
portal/trunk/docs/reference-guide/en/modules/Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Default_Permission_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml
Log:
More cleanup/fix
Modified: portal/trunk/docs/reference-guide/en/modules/Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Configuration.xml 2009-12-09 14:50:00 UTC
(rev 981)
+++ portal/trunk/docs/reference-guide/en/modules/Configuration.xml 2009-12-09 17:56:51 UTC
(rev 982)
@@ -2,38 +2,19 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<chapter id="chap-Reference_Guide-Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Configuration</title>
+ <title>Configuration</title>
<xi:include href="configuration/IDM_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/Default_Portal_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/Portal_Navigation_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/Predefined_User_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="configuration/User_Workspace_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include
href="configuration/Portal_Default_Permission_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- Kernel/Service_Configuration_for_Beginners --><!--
Kernel/Service_Configuration_in_Detail --><xi:include
href="configuration/Database_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!-- Kernel/Service_Configuration_for_Beginners --><!--
Kernel/Service_Configuration_in_Detail -->
+ <xi:include href="configuration/Database_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/Data_Injector_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- Core/LDAP_Configuration --><xi:include
href="configuration/Skin_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!-- Core/LDAP_Configuration -->
+ <xi:include href="configuration/Skin_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/JavaScript_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/Dashboard_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configuration/Authentication_Token_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="configuration/Varnish_Configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
</chapter>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,120 +2,129 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Authentication_Token_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Authentication Token Configuration</title>
- <section
id="sect-Reference_Guide-Authentication_Token_Configuration-Overview">
- <title>Overview</title>
- <para>
- In this article, you will learn:
+ <title>Authentication Token Configuration</title>
+ <section
+
id="sect-Reference_Guide-Authentication_Token_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ In this article, you will learn:
</para>
- <itemizedlist>
- <listitem>
- <para>
- What token services are.
+ <itemizedlist>
+ <listitem>
+ <para>
+ What token services are.
</para>
- </listitem>
- <listitem>
- <para>
- Implement a token service for using in GateIn portal.
+ </listitem>
+ <listitem>
+ <para>
+ Implement a token service for using in GateIn portal.
</para>
- </listitem>
- <listitem>
- <para>
- Configure a token service with a token's life-time.
+ </listitem>
+ <listitem>
+ <para>
+ Configure a token service with a token's life-time.
</para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Authentication_Token_Configuration-What_is_token_service">
- <title>What is token service</title>
- <para>
- Token service is used in authentication.
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Authentication_Token_Configuration-What_is_token_service">
+ <title>What is token service</title>
+ <para>
+ Token service is used in authentication.
</para>
- <para>
- Using token helps preventing information such as user name, password into user request
so the system will become more secure.
+ <para>
+ Using token helps preventing information such as user name, password into
+ user request so the system will become more secure.
</para>
- <para>
- Token service provides the way to manipulate tokens such as create, delete, retrieve,
clean ... Token service also defines the life-time of token. After the life-time, token
has no more effect. The life-time definition must be configured.
+ <para>
+ Token service provides the way to manipulate tokens such as create,
+ delete, retrieve, clean ... Token service also defines the
+ life-time of token. After the life-time, token has no more
+ effect. The life-time definition must be configured.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Authentication_Token_Configuration-Implement_token_services_API">
- <title>Implement token service's API</title>
- <para>
- All token services used in GateIn portal's authentication must be a subclass of an
abstract class <emphasis role="bold">AbstractTokenService</emphasis>
. So they must have these following methods:
- </para>
-
-<programlisting>
- public Token getToken(String id) throws PathNotFoundException,
- RepositoryException;
- public Token deleteToken(String id) throws PathNotFoundException,
- RepositoryException;
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Authentication_Token_Configuration-Implement_token_services_API">
+ <title>Implement token service's API</title>
+ <para>
+ All token services used in GateIn portal's authentication must
+ be a subclass of an abstract class
+ <emphasis role="bold">AbstractTokenService</emphasis>
+ . So they must have these following methods:
+ </para>
+
+ <programlisting role="JAVA"><![CDATA[
+ public Token getToken(String id) throws PathNotFoundException, RepositoryException;
+ public Token deleteToken(String id) throws PathNotFoundException, RepositoryException;
public String[] getAllTokens();
public long getNumberTokens() throws Exception;
- public String createToken(Credentials credentials) throws
- IllegalArgumentException,NullPointerException;
- public Credentials validateToken(String tokenKey, boolean remove) throws
- NullPointerException;
-</programlisting>
- <para>
- These methods show how the token-service manipulates its tokens.
+ public String createToken(Credentials credentials) throws
IllegalArgumentException,NullPointerException;
+ public Credentials validateToken(String tokenKey, boolean remove) throws
NullPointerException;
+]]></programlisting>
+ <para>
+ These methods show how the token-service manipulates its tokens.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Authentication_Token_Configuration-Configure_token_services">
- <title>Configure token services</title>
- <para>
- Token services configuration is also known as specifying the life-time of token in the
configuration file. The token service is configured as a portal component.
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Authentication_Token_Configuration-Configure_token_services">
+ <title>Configure token services</title>
+ <para>
+ Token services configuration is also known as specifying the life-time of
+ token in the configuration file. The token service is
+ configured as a portal component.
</para>
- <para>
- Examples:
+ <para>
+ Examples:
</para>
-
-<programlisting>
-<component>
-
<key>org.exoplatform.web.security.security.CookieTokenService</key>
-
<type>org.exoplatform.web.security.security.CookieTokenService</type>
- <init-params>
- <values-param>
- <name>tokenTimeout</name>
- <value>jcr-token</value>
- <value>7</value>
- <value>DAY</value>
- </values-param>
- </init-params>
-</component>
-</programlisting>
- <para>
- In this example, <emphasis>CookieTokenService</emphasis> is a subclass of
<emphasis role="bold">AbstractTokenService</emphasis> so it has a
property which specifies <emphasis>how long token can live</emphasis>.
- </para>
- <para>
- Service will initiate this property by looking for an init-param named as
"<emphasis role="bold">service.configuration</emphasis>".
This property must have 3 values (service's name, amount of time, unit of time). In
this case, we can see the service's name is "jcr-token", the token's
expiration time is a week.
- </para>
- <para>
- At this time, GateIn Portal supports <emphasis>four</emphasis> timing
units: <emphasis role="bold">SECOND</emphasis>, <emphasis
role="bold">MINUTE</emphasis>, <emphasis
role="bold">HOUR</emphasis> and <emphasis
role="bold">DAY</emphasis>.
- </para>
- </section>
+ <programlisting role="XML"><![CDATA[<component>
+ <key>org.exoplatform.web.security.security.CookieTokenService</key>
+ <type>org.exoplatform.web.security.security.CookieTokenService</type>
+ <init-params>
+ <values-param>
+ <name>tokenTimeout</name>
+ <value>jcr-token</value>
+ <value>7</value>
+ <value>DAY</value>
+ </values-param>
+ </init-params>
+</component>]]></programlisting>
+ <para>
+ In this example,
+ <emphasis>CookieTokenService</emphasis>
+ is a subclass of
+ <emphasis role="bold">AbstractTokenService</emphasis>
+ so it has a property which specifies
+ <emphasis>how long token can live</emphasis>
+ .
+ </para>
+ <para>
+ Service will initiate this property by looking for an
+ init-param named as "
+ <emphasis role="bold">service.configuration</emphasis>
+ ". This property must have 3 values (service's name, amount of
+ time, unit of time). In this case, we can see the service's
+ name is "jcr-token", the token's expiration time is a week.
+ </para>
+ <para>
+ At this time, GateIn Portal supports
+ <emphasis>four</emphasis>
+ timing units:
+ <emphasis role="bold">SECOND</emphasis>
+ ,
+ <emphasis role="bold">MINUTE</emphasis>
+ ,
+ <emphasis role="bold">HOUR</emphasis>
+ and
+ <emphasis role="bold">DAY</emphasis>
+ .
+ </para>
+ </section>
+
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,65 +2,50 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Dashboard_configuration">
- <!--
+ <title>Dashboard configuration</title>
+ <section
+
id="sect-Reference_Guide-Dashboard_configuration-Parameters_in_edit_mode">
+ <title>Parameters (in edit mode)</title>
- Copyright (C) 2009 eXo Platform SAS. This is free software; you can
- redistribute it and/or modify it under the terms of the GNU Lesser
- General Public License as published by the Free Software Foundation;
- either version 2.1 of the License, or (at your option) any later
- version. This software is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details. You should have
- received a copy of the GNU Lesser General Public License along with
- this software; if not, write to the Free Software Foundation, Inc., 51
- Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- site:
http://www.fsf.org.
- --><title>Dashboard configuration</title>
- <section
id="sect-Reference_Guide-Dashboard_configuration-Parameters_in_edit_mode">
- <title>Parameters (in edit mode)</title>
- <para>
- Stuff Goes Here?
- </para>
- </section>
-
- <section id="sect-Reference_Guide-Dashboard_configuration-owner">
- <title>owner</title>
- <itemizedlist>
- <listitem>
- <para>
- if empty, everyone share the same dashboard and can edit it
+ <section id="sect-Reference_Guide-Dashboard_configuration-owner">
+ <title>owner</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ if empty, everyone share the same dashboard and can edit it
</para>
- </listitem>
- <listitem>
- <para>
- if set to <emphasis>CURRENTUSER</emphasis> , every user has his own
dashboard
+ </listitem>
+ <listitem>
+ <para>
+ if set to
+ <emphasis>CURRENTUSER</emphasis>
+ , every user has his own dashboard
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ if set to a username, everyone will see the dashboard of this person
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section
id="sect-Reference_Guide-Dashboard_configuration-isPrivate">
+ <title>isPrivate</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ if set to 1, only the owner of the dashboard can edit it
</para>
- </listitem>
- <listitem>
- <para>
- if set to a username, everyone will see the dashboard of this person
+ </listitem>
+ <listitem>
+ <para>
+ if set to 0, everyone can edit it
</para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Dashboard_configuration-isPrivate">
- <title>isPrivate</title>
- <itemizedlist>
- <listitem>
- <para>
- if set to 1, only the owner of the dashboard can edit it
- </para>
- </listitem>
- <listitem>
- <para>
- if set to 0, everyone can edit it
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,188 +2,210 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Data_Injector_Configuration">
- <!--
+ <title>Data Injector Configuration</title>
+ <section
+ id="sect-Reference_Guide-Data_Injector_Configuration-Data_Injector">
+ <title>Data Injector</title>
+ <para>
+ <emphasis>Data-injector</emphasis>
+ is an utility to initialize enterprise data for Portal. It is
+ packed as a .jar.
+<!--
+ and deployed under $TOMCATHOME/lib. It is started
+ automatically when Tomcat starts.
+ -->
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ </para>
+ </section>
- --> <title>Data Injector Configuration</title>
- <section
id="sect-Reference_Guide-Data_Injector_Configuration-Data_Injector">
- <title>Data Injector</title>
- <para>
- <emphasis>Data-injector</emphasis> is an utility to initialize enterprise
data for Portal. It is packed in a .jar and deployed under $TOMCATHOME/lib. It is started
automatically when Tomcat starts.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Data_Injector_Configuration-OrganizationInitializer">
- <title>OrganizationInitializer</title>
- <para>
- <emphasis>OrganizationInitializer</emphasis> is the service that allows
creating a large organization with many groups and users. It also creates portal
navigation and page(s) for each group, each user.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Data_Injector_Configuration-Service_configuration_file">
- <title>Service configuration file</title>
-
-<programlisting>
-<configuration>
- <component>
-
<key>org.exoplatform.portal.initializer.organization.OrganizationInitializer</key>
-
<type>org.exoplatform.portal.initializer.organization.OrganizationInitializer</type>
- <init-params>
- <value-param>
- <name>auto.create.group.page.navigation</name>
- <description>true or false</description>
- <value>true</value>
- </value-param>
+ <section
+
id="sect-Reference_Guide-Data_Injector_Configuration-OrganizationInitializer">
+ <title>OrganizationInitializer</title>
+ <para>
+ <emphasis>OrganizationInitializer</emphasis>
+ is the service that allows creating a large organization with
+ many groups and users. It also creates portal navigation and
+ page(s) for each group, each user.
+ </para>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Data_Injector_Configuration-Service_configuration_file">
+ <title>Service configuration file</title>
+
+ <programlisting role="XML"><![CDATA[<configuration>
+ <component>
+
<key>org.exoplatform.portal.initializer.organization.OrganizationInitializer</key>
+
<type>org.exoplatform.portal.initializer.organization.OrganizationInitializer</type>
+ <init-params>
+ <value-param>
+ <name>auto.create.group.page.navigation</name>
+ <description>true or false</description>
+ <value>true</value>
+ </value-param>
- <value-param>
- <name>auto.create.user.page.navigation</name>
- <description>number of pages per user</description>
- <value>10</value>
- </value-param>
- <object-param>
- <name>organization</name>
- <description>description</description>
- <object
type="org.exoplatform.portal.initializer.organization.OrganizationConfig">
<field name="groups">
- <collection type="java.util.ArrayList">
- <value>
- <object
type="org.exoplatform.portal.initializer.organization.OrganizationConfig$GroupsConfig">
<field name="group">
- <object
type="org.exoplatform.services.organization.OrganizationConfig$Group">
- <field
name="name"><string>province</string></field>
- <field
name="parentId"><string>/africa/tanzania</string></field>
- <field
name="description"><string>Tanzania's
province</string></field>
- <field
name="label"><string>Province</string></field>
- </object>
- </field>
- <field
name="from"><string>1</string></field>
- <field
name="to"><string>10</string></field>
- </object>
- </value>
- </collection>
- </field>
- <field name="users">
- <collection type="java.util.ArrayList">
-
- <value>
- <object
type="org.exoplatform.portal.initializer.organization.OrganizationConfig$UsersConfig">
- <field name="user">
- <object
type="org.exoplatform.services.organization.OrganizationConfig$User">
- <field
name="userName"><string>user</string></field>
- <field
name="password"><string>GateInPlatform</string></field>
- <field
name="firstName"><string>First-Name</string></field>
- <field
name="lastName"><string>Last-Name</string></field>
- <field
name="email"><string>exo@localhost</string></field>
- <field
name="groups"><string>member:/africa</string></field>
- </object>
- </field>
- <field
name="from"><string>0</string></field>
- <field
name="to"><string>9</string></field>
- </object>
- </value>
- </collection>
- </field>
- </object>
- </object-param>
- </init-params>
- </component>
-
-</configuration>
-</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Data_Injector_Configuration-Parameters_for_Group">
- <title>Parameters for Group</title>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>name</emphasis>: The name of group.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>parentId</emphasis>: The id of parent group. If the parent id
is null, it means that the group is at the first level. If parent groups do not exist, it
will be created automatically.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>description</emphasis>: The description of group.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>label</emphasis>: The label of group.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>from and to</emphasis>: This group can be cloned to may copies
and each copy is marked a number from!images/number.png!images/ to!images/ number.png!.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section
id="sect-Reference_Guide-Data_Injector_Configuration-Parameters_for_User">
- <title>Parameters for User</title>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>userName</emphasis>: The ID of user.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>password</emphasis>: The password of user.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>firstName</emphasis>: The first name of user.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>lastName</emphasis>: The last name of user.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>email</emphasis>: The email of user.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>groups</emphasis>: The list of groups that user join with
membership type
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>from and to</emphasis>: This user can be cloned to may copies
and each copy is marked a number from!images/number.png!images/ to!images/ number.png!.
With this configuration we can create a range of users and put them to various groups and
other range to other groups.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The " <emphasis>auto.create.group.page.navigation</emphasis> "
Parameter Value is true or false. If TRUE it automatically create portal navigation and
page for each group. If FALSE it does not create portal navigation and page for each
group.
- </para>
- <para>
- The "<emphasis>auto.create.user.page.navigation</emphasis> "
Parameter Value is number of pages that automatically created for each user.
- </para>
- </section>
+ <value-param>
+ <name>auto.create.user.page.navigation</name>
+ <description>number of pages per user</description>
+ <value>10</value>
+ </value-param>
+
+ <object-param>
+ <name>organization</name>
+ <description>description</description>
+ <object
type="org.exoplatform.portal.initializer.organization.OrganizationConfig">
+ <field name="groups">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object
type="org.exoplatform.portal.initializer.organization.OrganizationConfig$GroupsConfig">
+ <field name="group">
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field
name="name"><string>province</string></field>
+ <field
name="parentId"><string>/africa/tanzania</string></field>
+ <field
name="description"><string>Tanzania's
province</string></field>
+ <field
name="label"><string>Province</string></field>
+ </object>
+ </field>
+ <field
name="from"><string>1</string></field>
+ <field
name="to"><string>10</string></field>
+ </object>
+ </value>
+ </collection>
+ </field>
+ <field name="users">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object
type="org.exoplatform.portal.initializer.organization.OrganizationConfig$UsersConfig">
+ <field name="user">
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field
name="userName"><string>user</string></field>
+ <field
name="password"><string>GateInPlatform</string></field>
+ <field
name="firstName"><string>First-Name</string></field>
+ <field
name="lastName"><string>Last-Name</string></field>
+ <field
name="email"><string>exo@localhost</string></field>
+ <field
name="groups"><string>member:/africa</string></field>
+ </object>
+ </field>
+ <field
name="from"><string>0</string></field>
+ <field
name="to"><string>9</string></field>
+ </object>
+ </value>
+ </collection>
+ </field>
+ </object>
+ </object-param>
+ </init-params>
+ </component>
+</configuration>]]></programlisting>
+ </section>
+ <section
+
id="sect-Reference_Guide-Data_Injector_Configuration-Parameters_for_Group">
+ <title>Parameters for Group</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>name</emphasis>
+ : The name of group.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>parentId</emphasis>
+ : The id of parent group. If the parent id is null, it
+ means that the group is at the first level. If parent
+ groups do not exist, it will be created automatically.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>description</emphasis>
+ : The description of group.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>label</emphasis>
+ : The label of group.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>from and to</emphasis>
+ : This group can be cloned to may copies and each copy is
+ marked a number from!images/number.png!images/ to!images/
+ number.png!.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Data_Injector_Configuration-Parameters_for_User">
+ <title>Parameters for User</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>userName</emphasis>
+ : The ID of user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>password</emphasis>
+ : The password of user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>firstName</emphasis>
+ : The first name of user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>lastName</emphasis>
+ : The last name of user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>email</emphasis>
+ : The email of user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>groups</emphasis>
+ : The list of groups that user join with membership type
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>from and to</emphasis>
+ : This user can be cloned to may copies and each copy is
+ marked a number from!images/number.png!images/ to!images/
+ number.png!. With this configuration we can create a
+ range of users and put them to various groups and other
+ range to other groups.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The "
+ <emphasis>auto.create.group.page.navigation</emphasis>
+ " Parameter Value is true or false. If TRUE it automatically
+ create portal navigation and page for each group. If FALSE it
+ does not create portal navigation and page for each group.
+ </para>
+ <para>
+ The "
+ <emphasis>auto.create.user.page.navigation</emphasis>
+ " Parameter Value is number of pages that automatically created
+ for each user.
+ </para>
+ </section>
+
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,199 +2,211 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Database_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Database Configuration</title>
- <section id="sect-Reference_Guide-Database_Configuration-Overview">
- <title>Overview</title>
- <para>
- GateIn Portal has two different database dependencies. One is the Hibernate service
configuration, which depends on the the Hibernate and c3p0 projects. The other database
dependency is Java content repository (JCR) service, which depends on the native JDBC API
and it can integrate with any existing datasource implementation.
+ <title>Database Configuration</title>
+ <section id="sect-Reference_Guide-Database_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ GateIn Portal has two different database dependencies. One is the Hibernate
+ service configuration, which depends on the the Hibernate and
+ c3p0 projects. The other database dependency is Java content
+ repository (JCR) service, which depends on the native JDBC API
+ and it can integrate with any existing datasource
+ implementation.
</para>
- <para>
- When you change the database configuration for the first time, GateIn will
automatically generate the proper schema (assuming that the database user has the
appropriate permissions).
+ <para>
+ When you change the database configuration for the first time, GateIn
+ will automatically generate the proper schema (assuming that
+ the database user has the appropriate permissions).
</para>
- <para>
- Currently (as of GateIn r23239 or GateIn Portal 2.5 and later), GateIn assumes the
default encoding for your database is <code>latin1</code>. You
will need to change this parameter for your database in order to work properly.
+ <para>
+ GateIn assumes the default encoding for your database is
+ <literal>latin1</literal>
+ . You will need to change this parameter for your database in
+ order to work properly.
+ </para>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Database_Configuration-DB_and_datasource_configuration">
+ <title>DB and datasource configuration</title>
+ <para>
+ You can find the database configuration in the
+ portal/WEB-INF/conf/database/database-configuration.xml file
+ (located in your application server's web application
+ directory).
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Database_Configuration-DB_and_datasource_configuration">
- <title>DB and datasource configuration</title>
- <para>
- You can find the database configuration in the
portal/WEB-INF/conf/database/database-configuration.xml file (located in your application
server's web application directory).
- </para>
-
-<programlisting><?xml version="1.0"
encoding="ISO-8859-1"?>
-<configuration>
+
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="ISO-8859-1"?>
+<configuration>
[...]
- <component>
-
<key>org.exoplatform.services.database.HibernateService</key>
- <jmx-name>database:type=HibernateService</jmx-name>
-
<type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
- <init-params>
- <properties-param>
- <name>hibernate.properties</name>
- <description>Default Hibernate Service</description>
- <property name="hibernate.show_sql"
value="false"/>
- <property name="hibernate.cglib.use_reflection_optimizer"
value="true"/>
- <property name="hibernate.connection.url"
value="jdbc:hsqldb:file:../temp/data/exodb"/>
- <property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver"/>
- <property name="hibernate.connection.autocommit"
value="true"/>
- <property name="hibernate.connection.username"
value="sa"/>
- <property name="hibernate.connection.password"
value=""/>
- <property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
- <property name="hibernate.c3p0.min_size"
value="5"/>
- <property name="hibernate.c3p0.max_size"
value="20"/>
- <property name="hibernate.c3p0.timeout"
value="1800"/>
- <property name="hibernate.c3p0.max_statements"
value="50"/>
- </properties-param>
- </init-params>
- </component>
- <external-component-plugins>
-
<target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
- <component-plugin>
- <name>bind.datasource</name>
- <set-method>addPlugin</set-method>
-
<type>org.exoplatform.services.naming.BindReferencePlugin</type>
- <init-params>
- <value-param>
- <name>bind-name</name>
- <value>jdbcexo</value>
- </value-param>
- <value-param>
- <name>class-name</name>
- <value>javax.sql.DataSource</value>
- </value-param>
- <value-param>
- <name>factory</name>
-
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
- </value-param>
- <properties-param>
- <name>ref-addresses</name>
- <description>ref-addresses</description>
- <property name="driverClassName"
value="org.hsqldb.jdbcDriver"/>
- <property name="url"
value="jdbc:hsqldb:file:../temp/data/exodb"/>
- <property name="username" value="sa"/>
- <property name="password" value=""/>
- </properties-param>
- </init-params>
- </component-plugin>
- </external-component-plugins>
+ <component>
+ <key>org.exoplatform.services.database.HibernateService</key>
+ <jmx-name>database:type=HibernateService</jmx-name>
+ <type>org.exoplatform.services.database.impl.HibernateServiceImpl</type>
+ <init-params>
+ <properties-param>
+ <name>hibernate.properties</name>
+ <description>Default Hibernate Service</description>
+ <property name="hibernate.show_sql" value="false"/>
+ <property name="hibernate.cglib.use_reflection_optimizer"
value="true"/>
+ <property name="hibernate.connection.url"
value="jdbc:hsqldb:file:../temp/data/exodb"/>
+ <property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver"/>
+ <property name="hibernate.connection.autocommit"
value="true"/>
+ <property name="hibernate.connection.username"
value="sa"/>
+ <property name="hibernate.connection.password"
value=""/>
+ <property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
+ <property name="hibernate.c3p0.min_size" value="5"/>
+ <property name="hibernate.c3p0.max_size" value="20"/>
+ <property name="hibernate.c3p0.timeout" value="1800"/>
+ <property name="hibernate.c3p0.max_statements"
value="50"/>
+ </properties-param>
+ </init-params>
+ </component>
+ <external-component-plugins>
+
<target-component>org.exoplatform.services.naming.InitialContextInitializer</target-component>
+ <component-plugin>
+ <name>bind.datasource</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.naming.BindReferencePlugin</type>
+ <init-params>
+ <value-param>
+ <name>bind-name</name>
+ <value>jdbcexo</value>
+ </value-param>
+ <value-param>
+ <name>class-name</name>
+ <value>javax.sql.DataSource</value>
+ </value-param>
+ <value-param>
+ <name>factory</name>
+ <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
+ </value-param>
+ <properties-param>
+ <name>ref-addresses</name>
+ <description>ref-addresses</description>
+ <property name="driverClassName"
value="org.hsqldb.jdbcDriver"/>
+ <property name="url"
value="jdbc:hsqldb:file:../temp/data/exodb"/>
+ <property name="username" value="sa"/>
+ <property name="password" value=""/>
+ </properties-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>
[...]
-</configuration>
-</programlisting>
- <para>
- The first component configuration is for the Hibernate service. You can enter any
additional properties in a hibernate.properties file, but GateIn will override
hibernate.properties with values read in from this configuration file.
+</configuration>]]></programlisting>
+ <para>
+ The first component configuration is for the Hibernate service. You can
+ enter any additional properties in a hibernate.properties file,
+ but GateIn will override hibernate.properties with values read
+ in from this configuration file.
</para>
- <para>
- The second component configuration is for the JCR datasource. The
InitialContextInitializer component will load the factory class, use the factory object to
create a datasource, and bind that datasource in the JNDI tree with the value of the
"bind-name" parameter. If you want to change the bind-name, for example
"jdbcexo" to "myjdbc", you also need to change JCR repository
configuration in order that the service picks up the right datasource.
+ <para>
+ The second component configuration is for the JCR datasource. The
+ InitialContextInitializer component will load the factory
+ class, use the factory object to create a datasource, and bind
+ that datasource in the JNDI tree with the value of the
+ "bind-name" parameter. If you want to change the bind-name, for
+ example "jdbcexo" to "myjdbc", you also need to change JCR
+ repository configuration in order that the service picks up the
+ right datasource.
</para>
- <para>
- Make sure you update the database connection properties and dialect for both of these
component configurations.
+ <para>
+ Make sure you update the database connection properties and dialect for
+ both of these component configurations.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Database_Configuration-JCR_database_configuration">
- <title>JCR database configuration</title>
- <para>
- There are two JCR configuration files that must be changed to support a different
database. In both files, <emphasis role="bold">edit the dialect (and the
data source name if necessary)</emphasis>.
- </para>
- <para>
- The first file is portal/WEB-INF/conf/jcr/jcr-configuration.xml:
- </para>
-
-<programlisting>[...]
- <component>
-
<key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
-
<type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
- <init-params>
- <value-param>
- <name>conf-path</name>
- <description>JCR configuration file</description>
-
<value>war:/conf/jcr/repository-configuration.xml</value>
- </value-param>
- <properties-param>
- <name>working-conf</name>
- <description>working-conf</description>
- <property name="persisterClassName"
value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
- <property name="sourceName" value="jdbcexo"/>
- <property name="dialect" value="hsqldb"/>
- </properties-param>
- </init-params>
- </component>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Database_Configuration-JCR_database_configuration">
+ <title>JCR database configuration</title>
+ <para>
+ There are two JCR configuration files that must be changed to
+ support a different database. In both files,
+ <emphasis role="bold">edit the dialect (and the data source
+ name if necessary)</emphasis>
+ .
+ </para>
+ <para>
+ The first file is
+
<filename>02portal.war:/WEB-INF/conf/jcr/jcr-configuration.xml</filename>
+ :
+ </para>
+
+ <programlisting><![CDATA[[...]
+ <component>
+
<key>org.exoplatform.services.jcr.config.RepositoryServiceConfiguration</key>
+
<type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationImpl</type>
+ <init-params>
+ <value-param>
+ <name>conf-path</name>
+ <description>JCR configuration file</description>
+ <value>war:/conf/jcr/repository-configuration.xml</value>
+ </value-param>
+ <properties-param>
+ <name>working-conf</name>
+ <description>working-conf</description>
+ <property name="persisterClassName"
value="org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister"/>
+ <property name="sourceName" value="jdbcexo"/>
+ <property name="dialect" value="hsqldb"/>
+ </properties-param>
+ </init-params>
+ </component>
+[...]]]></programlisting>
+ <para>
+ The second file is
+
<filename>02portal.war:/WEB-INF/conf/jcr/repository-configuration.xml</filename>
+ :
+ </para>
+
+ <programlisting role="XML"> <![CDATA[...]
+ <workspaces>
+ <workspace name="system"
auto-init-root-nodetype="nt:unstructured"
+ auto-init-permissions="*:/platform/administrators
read;*:/platform/administrators add_node;*:/platform/administrators
set_property;*:/platform/administrators remove" >
+ <!-- for system storage -->
+ <container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <properties>
+ <property name="sourceName" value="jdbcexo"/>
+ <property name="dialect" value="hsql"/>
+ <!-- property name="db-type" value="mysql"/ -->
+ <property name="multi-db" value="false"/>
+ <property name="update-storage" value="true"/>
+ <property name="max-buffer-size"
value="204800"/>
+ <property name="swap-directory"
value="../temp/swap/system"/>
+ </properties>
[...]
-</programlisting>
- <para>
- The second file is portal/WEB-INF/conf/jcr/repository-configuration.xml:
- </para>
-
-<programlisting>[...]
- <workspaces>
- <workspace name="system"
auto-init-root-nodetype="nt:unstructured"
- auto-init-permissions="*:/platform/administrators
read;*:/platform/administrators add_node;*:/platform/administrators
set_property;*:/platform/administrators remove" >
- <!-- for system storage -->
- <container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
- <properties>
- <property name="sourceName"
value="jdbcexo"/>
- <property name="dialect" value="hsql"/>
- <!-- property name="db-type" value="mysql"/
-->
- <property name="multi-db"
value="false"/>
- <property name="update-storage"
value="true"/>
- <property name="max-buffer-size"
value="204800"/>
- <property name="swap-directory"
value="../temp/swap/system"/>
- </properties>
+ </workspace>
+ <workspace name="collaboration"
auto-init-root-nodetype="nt:unstructured"
+ auto-init-permissions="any read;*:/platform/administrators
read;*:/platform/administrators add_node;*:/platform/administrators
set_property;*:/platform/administrators remove" >
+ <!-- for system storage -->
+ <container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <properties>
+ <property name="sourceName" value="jdbcexo"/>
+ <property name="dialect" value="hsqldb"/>
+ <property name="multi-db" value="false"/>
+ <property name="update-storage" value="true"/>
+ <property name="max-buffer-size"
value="204800"/>
+ <property name="swap-directory"
value="../temp/swap/collaboration"/>
+ </properties>
[...]
- </workspace>
- <workspace name="collaboration"
auto-init-root-nodetype="nt:unstructured"
- auto-init-permissions="any read;*:/platform/administrators
read;*:/platform/administrators add_node;*:/platform/administrators
set_property;*:/platform/administrators remove" >
- <!-- for system storage -->
- <container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
- <properties>
- <property name="sourceName"
value="jdbcexo"/>
- <property name="dialect"
value="hsqldb"/>
- <property name="multi-db"
value="false"/>
- <property name="update-storage"
value="true"/>
- <property name="max-buffer-size"
value="204800"/>
- <property name="swap-directory"
value="../temp/swap/collaboration"/>
- </properties>
+ </workspace>
+ <workspace name="backup"
auto-init-root-nodetype="nt:unstructured"
+ auto-init-permissions="any read;*:/platform/administrators
read;*:/platform/administrators add_node;*:/platform/administrators
set_property;*:/platform/administrators remove" >
+ <!-- for system storage -->
+ <container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
+ <properties>
+ <property name="sourceName" value="jdbcexo"/>
+ <property name="dialect" value="mysql"/>
+ <!-- property name="db-type" value="mysql"/ -->
+ <property name="multi-db" value="false"/>
+ <property name="update-storage" value="true"/>
+ <property name="max-buffer-size"
value="204800"/>
+ <property name="swap-directory"
value="../temp/swap/backup"/>
+ </properties>
+ </workspace>
[...]
- </workspace>
- <workspace name="backup"
auto-init-root-nodetype="nt:unstructured"
- auto-init-permissions="any read;*:/platform/administrators
read;*:/platform/administrators add_node;*:/platform/administrators
set_property;*:/platform/administrators remove" >
- <!-- for system storage -->
- <container
class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
- <properties>
- <property name="sourceName"
value="jdbcexo"/>
- <property name="dialect" value="mysql"/>
- <!-- property name="db-type" value="mysql"/
-->
- <property name="multi-db"
value="false"/>
- <property name="update-storage"
value="true"/>
- <property name="max-buffer-size"
value="204800"/>
- <property name="swap-directory"
value="../temp/swap/backup"/>
- </properties>
- </workspace>
-[...]
- </workspaces>
-[...]
-</programlisting>
- </section>
+ </workspaces>
+[...]]]></programlisting>
+ </section>
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,64 +2,51 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Default_Portal_Configuration">
- <!--
+ <title>Default Portal Configuration</title>
+ <section
id="sect-Reference_Guide-Default_Portal_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ default portal will be accessed when the user doesn't specify the
+ portal. For example:
<literal>http://hostname:port/portal/</literal>. And the
+ default portal be used for checking at starting of tomcat to
+ determine whether database is empty or not, too.
+ </para>
+ </section>
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ <section
+ id="sect-Reference_Guide-Default_Portal_Configuration-Configuration">
+ <title>Configuration</title>
+ <para>
+ Configuration file path :
"02portal.war:/WEB-INF/conf/portal/portal-configuration.xml"
+ </para>
- --> <title>Default Portal Configuration</title>
- <section
id="sect-Reference_Guide-Default_Portal_Configuration-Overview">
- <title>Overview</title>
- <para>
- default portal will be accessed by default when user doesn't specify the portal.
For example:
http://hostname:port/portal/. And the default portal be used for checking at
starting of tomcat to determine whether database is empty or not, too.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Default_Portal_Configuration-Configuration">
- <title>Configuration</title>
- <para>
- Configuration file path :
"portal/WEB-INF/conf/portal/portal-configuration.xml"
- </para>
-
-<programlisting> <component>
-
<key>org.exoplatform.portal.config.UserPortalConfigService</key>
-
<type>org.exoplatform.portal.config.UserPortalConfigService</type>
- <component-plugins>
- <component-plugin>
- <name>new.portal.config.user.listener</name>
- <set-method>initListener</set-method>
-
<type>org.exoplatform.portal.config.NewPortalConfigListener</type>
- <description>this listener init the portal
configuration</description>
- <init-params>
- <value-param>
- <name>default.portal</name>
- <description>The default portal for checking db is empty or
not</description>
- <value>classic</value>
- </value-param>
+ <programlisting role="XML"><![CDATA[<component>
+ <key>org.exoplatform.portal.config.UserPortalConfigService</key>
+ <type>org.exoplatform.portal.config.UserPortalConfigService</type>
+ <component-plugins>
+ <component-plugin>
+ <name>new.portal.config.user.listener</name>
+ <set-method>initListener</set-method>
+ <type>org.exoplatform.portal.config.NewPortalConfigListener</type>
+ <description>this listener init the portal
configuration</description>
+ <init-params>
+ <value-param>
+ <name>default.portal</name>
+ <description>The default portal for checking db is empty or
not</description>
+ <value>classic</value>
+ </value-param>
..........
- </init-params>
- </component-plugin>
- </component-plugins>
- </component>
-</programlisting>
- <para>
- You can see in the configuration above, we defined the classic as a default portal.
Notes that the definition should be as a initial parameter of the NewPortalConfigListener
component-plugin
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+ </component>]]></programlisting>
+ <para>
+ You can see in the configuration above, we defined the classic as a
+ default portal. Notes that the definition should be as a
+ initial parameter of the NewPortalConfigListener
+ component-plugin
</para>
- </section>
+ </section>
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,77 +2,95 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-JBoss_Identity_IDM_integration">
- <title>JBoss Identity IDM integration</title>
- <para>
- GateIn by default uses JBoss Identity IDM component to persist identity information
(user, groups, memberships and etc.). While still legacy exo interfaces are used
(org.exoplatform.services.organization) for identity management the wrapper implementation
delegates to the JBoss Identity IDM framework. This section won't provide information
about JBoss Identity IDM and its configuration - please refer to proper project
documentation. It is important to fully understand concepts behind this framework design
before changing configuration
+ <title>PicketLink IDM integration</title>
+ <para>
+ GateIn by default uses PicketLink IDM component to persist identity
+ information (user, groups, memberships and etc.). While still
+ legacy exo interfaces are used
+ (org.exoplatform.services.organization) for identity management
+ the wrapper implementation delegates to the PicketLink IDM
+ framework. This section won't provide information about PicketLink
+ IDM and its configuration - please refer to proper
+ project documentation (<ulink
url="http://jboss.org/picketlink/IDM.html"/>).
+ It is important to fully understand concepts behind this framework
+ design before changing configuration
</para>
- <para>
- Identity model represented in 'org.exoplatform.services.organization'
interfaces and one used in JBoss Identity IDM have some major differences. JBoss Identity
IDM provides greater abstraction - for example it is possible for groups in IDM framework
to form memberships with many parents while GateIn model allows only pure tree like
membership structures - this requires recursive ID translation. Additionally GateIn
membership concept needs to be translated into IDM Role concept. Therefore JBoss Identity
IDM model is used in a limited way. All those translations are applied by the integration
layer
+ <para>
+ Identity model represented in 'org.exoplatform.services.organization'
+ interfaces and one used in JBoss Identity IDM have some major
+ differences. JBoss Identity IDM provides greater abstraction - for
+ example it is possible for groups in IDM framework to form
+ memberships with many parents while GateIn model allows only pure
+ tree like membership structures - this requires recursive ID
+ translation. Additionally GateIn membership concept needs to be
+ translated into IDM Role concept. Therefore JBoss Identity IDM
+ model is used in a limited way. All those translations are applied
+ by the integration layer
</para>
- <section
id="sect-Reference_Guide-JBoss_Identity_IDM_integration-Configuration_files">
- <title>Configuration files</title>
- <para>
- Main configuration file is <emphasis
role="bold">idm-configuration</emphasis>:
- </para>
-
-<programlisting>
-
-<configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ <section
+
id="sect-Reference_Guide-JBoss_Identity_IDM_integration-Configuration_files">
+ <title>Configuration files</title>
+ <para>
+ Main configuration file is
+ <emphasis role="bold">idm-configuration</emphasis>
+ :
+ </para>
+
+ <programlisting role="XML"><![CDATA[<configuration
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd
http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
-
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
+
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
- <component>
-
<key>org.exoplatform.services.organization.jbidm.JBossIDMService</key>
-
<type>org.exoplatform.services.organization.jbidm.JBossIDMServiceImpl</type>
- <init-params>
- <value-param>
- <name>config</name>
-
<value>war:/conf/organization/idm-config.xml</value>
- </value-param>
- <values-param>
- <name>hibernate.annotations</name>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObject</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectAttribute</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectBinaryAttribute</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectBinaryAttributeValue</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectCredential</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectCredentialType</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectRelationship</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectRelationshipName</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectRelationshipType</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectTextAttribute</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectType</value>
-
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateRealm</value>
- </values-param>
- <properties-param>
- <name>hibernate.properties</name>
- <property name="hibernate.hbm2ddl.auto"
value="update"/>
- <property name="hibernate.current_session_context_class"
value="thread"/>
- <property name="hibernate.show_sql"
value="false"/>
- <property name="hibernate.cglib.use_reflection_optimizer"
value="true"/>
- <property name="hibernate.connection.url"
value="jdbc:hsqldb:file:../temp/data/exodb${container.name.suffix}"/>
- <property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver"/>
- <property name="hibernate.connection.autocommit"
value="true"/>
- <property name="hibernate.connection.username"
value="sa"/>
- <property name="hibernate.connection.password"
value=""/>
- <property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
- <property name="hibernate.c3p0.min_size"
value="5"/>
- <property name="hibernate.c3p0.max_size"
value="20"/>
- <property name="hibernate.c3p0.timeout"
value="1800"/>
- <property name="hibernate.c3p0.max_statements"
value="50"/>
- <property name="hibernate.connection.provider_class"
value="org.hibernate.connection.C3P0ConnectionProvider" />
- </properties-param>
+ <component>
+ <key>org.exoplatform.services.organization.jbidm.JBossIDMService</key>
+
<type>org.exoplatform.services.organization.jbidm.JBossIDMServiceImpl</type>
+ <init-params>
+ <value-param>
+ <name>config</name>
+ <value>war:/conf/organization/idm-config.xml</value>
+ </value-param>
+ <values-param>
+ <name>hibernate.annotations</name>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObject</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectAttribute</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectBinaryAttribute</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectBinaryAttributeValue</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectCredential</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectCredentialType</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectRelationship</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectRelationshipName</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectRelationshipType</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectTextAttribute</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateIdentityObjectType</value>
+
<value>org.jboss.identity.idm.impl.model.hibernate.HibernateRealm</value>
+ </values-param>
+ <properties-param>
+ <name>hibernate.properties</name>
+ <property name="hibernate.hbm2ddl.auto"
value="update"/>
+ <property name="hibernate.current_session_context_class"
value="thread"/>
+ <property name="hibernate.show_sql"
value="false"/>
+ <property name="hibernate.cglib.use_reflection_optimizer"
value="true"/>
+ <property name="hibernate.connection.url"
value="jdbc:hsqldb:file:../temp/data/exodb${container.name.suffix}"/>
+ <property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver"/>
+ <property name="hibernate.connection.autocommit"
value="true"/>
+ <property name="hibernate.connection.username"
value="sa"/>
+ <property name="hibernate.connection.password"
value=""/>
+ <property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
+ <property name="hibernate.c3p0.min_size"
value="5"/>
+ <property name="hibernate.c3p0.max_size"
value="20"/>
+ <property name="hibernate.c3p0.timeout"
value="1800"/>
+ <property name="hibernate.c3p0.max_statements"
value="50"/>
+ <property name="hibernate.connection.provider_class"
value="org.hibernate.connection.C3P0ConnectionProvider" />
+ </properties-param>
- </init-params>
- </component>
+ </init-params>
+ </component>
- <component>
-
<key>org.exoplatform.services.organization.OrganizationService</key>
-
<type>org.exoplatform.services.organization.jbidm.JBossIDMOrganizationServiceImpl</type>
- </component>
+ <component>
+ <key>org.exoplatform.services.organization.OrganizationService</key>
+
<type>org.exoplatform.services.organization.jbidm.JBossIDMOrganizationServiceImpl</type>
+ </component>
-</configuration>
-</programlisting>
+</configuration>]]></programlisting>
<para>
<emphasis
role="bold">org.exoplatform.services.organization.jbidm.JBossIDMOrganizationServiceImpl</emphasis>
is a main entrypoint implementing <emphasis
role="bold">org.exoplatform.services.organization.OrganizationService</emphasis>
and is dependant on <emphasis
role="bold">org.exoplatform.services.organization.jbidm.JBossIDMService</emphasis>
</para>
@@ -160,82 +178,79 @@
Sample JBoss Identity IDM configuration file is shown below. To understand all options
present in it please refer to the JBoss Identity IDM Reference Guide
</para>
-<programlisting>
-
-<jboss-identity xmlns="urn:jboss:identity:idm:config:v1_0_beta"
+<programlisting><![CDATA[<jboss-identity
xmlns="urn:jboss:identity:idm:config:v1_0_beta"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="urn:jboss:identity:idm:config:v1_0_alpha
identity-config.xsd">
- <realms>
- <realm>
- <id>PortalRealm</id>
-
<repository-id-ref>PortalRepository</repository-id-ref>
- <identity-type-mappings>
- <user-mapping>USER</user-mapping>
- </identity-type-mappings>
- </realm>
- </realms>
- <repositories>
- <repository>
- <id>PortalRepository</id>
-
<class>org.jboss.identity.idm.impl.repository.WrapperIdentityStoreRepository</class>
- <external-config/>
-
<default-identity-store-id>HibernateStore</default-identity-store-id>
-
<default-attribute-store-id>HibernateStore</default-attribute-store-id>
- </repository>
- </repositories>
- <stores>
- <attribute-stores/>
- <identity-stores>
- <identity-store>
- <id>HibernateStore</id>
-
<class>org.jboss.identity.idm.impl.store.hibernate.HibernateIdentityStoreImpl</class>
- <external-config/>
- <supported-relationship-types>
-
<relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
-
<relationship-type>JBOSS_IDENTITY_ROLE</relationship-type>
- </supported-relationship-types>
- <supported-identity-object-types>
- <identity-object-type>
- <name>USER</name>
- <relationships/>
- <credentials>
-
<credential-type>PASSWORD</credential-type>
- </credentials>
- <attributes/>
- <options/>
- </identity-object-type>
- </supported-identity-object-types>
- <options>
- <option>
-
<name>hibernateSessionFactoryRegistryName</name>
-
<value>hibernateSessionFactory</value>
- </option>
- <option>
-
<name>allowNotDefinedIdentityObjectTypes</name>
- <value>true</value>
- </option>
- <option>
-
<name>populateRelationshipTypes</name>
- <value>true</value>
- </option>
- <option>
-
<name>populateIdentityObjectTypes</name>
- <value>true</value>
- </option>
- <option>
-
<name>allowNotDefinedAttributes</name>
- <value>true</value>
- </option>
- <option>
- <name>isRealmAware</name>
- <value>true</value>
- </option>
- </options>
- </identity-store>
- </identity-stores>
- </stores>
-</jboss-identity>
-</programlisting>
+ xsi:schemaLocation="urn:jboss:identity:idm:config:v1_0_alpha
identity-config.xsd">
+ <realms>
+ <realm>
+ <id>PortalRealm</id>
+ <repository-id-ref>PortalRepository</repository-id-ref>
+ <identity-type-mappings>
+ <user-mapping>USER</user-mapping>
+ </identity-type-mappings>
+ </realm>
+ </realms>
+ <repositories>
+ <repository>
+ <id>PortalRepository</id>
+
<class>org.jboss.identity.idm.impl.repository.WrapperIdentityStoreRepository</class>
+ <external-config/>
+
<default-identity-store-id>HibernateStore</default-identity-store-id>
+
<default-attribute-store-id>HibernateStore</default-attribute-store-id>
+ </repository>
+ </repositories>
+ <stores>
+ <attribute-stores/>
+ <identity-stores>
+ <identity-store>
+ <id>HibernateStore</id>
+
<class>org.jboss.identity.idm.impl.store.hibernate.HibernateIdentityStoreImpl</class>
+ <external-config/>
+ <supported-relationship-types>
+
<relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
+
<relationship-type>JBOSS_IDENTITY_ROLE</relationship-type>
+ </supported-relationship-types>
+ <supported-identity-object-types>
+ <identity-object-type>
+ <name>USER</name>
+ <relationships/>
+ <credentials>
+ <credential-type>PASSWORD</credential-type>
+ </credentials>
+ <attributes/>
+ <options/>
+ </identity-object-type>
+ </supported-identity-object-types>
+ <options>
+ <option>
+ <name>hibernateSessionFactoryRegistryName</name>
+ <value>hibernateSessionFactory</value>
+ </option>
+ <option>
+ <name>allowNotDefinedIdentityObjectTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>populateRelationshipTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>populateIdentityObjectTypes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>allowNotDefinedAttributes</name>
+ <value>true</value>
+ </option>
+ <option>
+ <name>isRealmAware</name>
+ <value>true</value>
+ </option>
+ </options>
+ </identity-store>
+ </identity-stores>
+ </stores>
+</jboss-identity>]]></programlisting>
</section>
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,93 +2,93 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Javascript_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Javascript Configuration</title>
- <para>
- Manaing Javascript scripts in an application like GateIn Platform is a critical part of
the configuration work if you want to get good response time.
+ <title>Javascript Configuration</title>
+ <para>
+ Manaing Javascript scripts in an application like GateIn
+ Platform is a
+ critical part of the configuration work if you want
+ to get good
+ response time.
</para>
- <para>
- Every portlet can have its own javscript code but in many cases it is more convenient
to reuse some existing shared libraries. For that reason, GateIn has a mechanism to easily
register the libraries that will be loaded when the first page will be rendered. To do so,
every WAR deployed in GateIn can register the js files thanks to a groovy script
"WEB-INF/conf/script/groovy/JavascriptScript.groovy". The next file is the one
you can find in the GateInResources.war
+ <para>
+ Every portlet can have its own javscript code but in many cases
+ it is more
+ convenient to reuse some existing shared libraries. For
+ that
+ reason, GateIn has a mechanism to easily register the
+ libraries
+ that will be loaded when the first page will be rendered.
+ To do
+ so, every WAR deployed in GateIn can register the js files
+ thanks
+ to a groovy script
+ "WEB-INF/conf/script/groovy/JavascriptScript.groovy". The next
+ file is the one you can find in the GateInResources.war
</para>
-
-<programlisting>JavascriptService.addJavascript("GateIn",
"/javascript/GateIn.js", ServletContext);
+
+ <programlisting>JavascriptService.addJavascript("eXo",
"/javascript/eXo.js", ServletContext);
/* Animation Javascripts */
-JavascriptService.addJavascript("GateIn.animation.ImplodeExplode",
"/javascript/GateIn/animation/ImplodeExplode.js", ServletContext);
+JavascriptService.addJavascript("eXo.animation.ImplodeExplode",
"/javascript/eXo/animation/ImplodeExplode.js", ServletContext);
/* Application descriptor */
-JavascriptService.addJavascript("GateIn.application.ApplicationDescriptor",
"/javascript/GateIn/application/ApplicationDescriptor.js", ServletContext);
+JavascriptService.addJavascript("eXo.application.ApplicationDescriptor",
"/javascript/eXo/application/ApplicationDescriptor.js", ServletContext);
/* CORE Javascripts */
-JavascriptService.addJavascript("GateIn.core.Utils",
"/javascript/GateIn/core/Util.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.DOMUtil",
"/javascript/GateIn/core/DOMUtil.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.Browser",
"/javascript/GateIn/core/Browser.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.MouseEventManager",
"/javascript/GateIn/core/MouseEventManager.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.UIMaskLayer",
"/javascript/GateIn/core/UIMaskLayer.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.Skin",
"/javascript/GateIn/core/Skin.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.DragDrop",
"/javascript/GateIn/core/DragDrop.js", ServletContext);
-JavascriptService.addJavascript("GateIn.core.TemplateEngine",
"/javascript/GateIn/core/TemplateEngine.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.Utils",
"/javascript/eXo/core/Util.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.DOMUtil",
"/javascript/eXo/core/DOMUtil.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.Browser",
"/javascript/eXo/core/Browser.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.MouseEventManager",
"/javascript/eXo/core/MouseEventManager.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.UIMaskLayer",
"/javascript/eXo/core/UIMaskLayer.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.Skin",
"/javascript/eXo/core/Skin.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.DragDrop",
"/javascript/eXo/core/DragDrop.js", ServletContext);
+JavascriptService.addJavascript("eXo.core.TemplateEngine",
"/javascript/eXo/core/TemplateEngine.js", ServletContext);
/* Widget Javascripts */
-JavascriptService.addJavascript("GateIn.widget.UIWidget",
"/javascript/GateIn/widget/UIWidget.js", ServletContext);
-JavascriptService.addJavascript("GateIn.widget.UIAddWidget",
"/javascript/GateIn/widget/UIAddWidget.js", ServletContext);
-JavascriptService.addJavascript("GateIn.widget.UIExoWidget",
"/javascript/GateIn/widget/UIExoWidget.js", ServletContext);
+JavascriptService.addJavascript("eXo.widget.UIWidget",
"/javascript/eXo/widget/UIWidget.js", ServletContext);
+JavascriptService.addJavascript("eXo.widget.UIAddWidget",
"/javascript/eXo/widget/UIAddWidget.js", ServletContext);
+JavascriptService.addJavascript("eXo.widget.UIExoWidget",
"/javascript/eXo/widget/UIExoWidget.js", ServletContext);
/* Desktop Javascripts */
-JavascriptService.addJavascript("GateIn.desktop.UIDockbar",
"/javascript/GateIn/desktop/UIDockbar.js", ServletContext);
-JavascriptService.addJavascript("GateIn.desktop.UIDesktop",
"/javascript/GateIn/desktop/UIDesktop.js", ServletContext);
+JavascriptService.addJavascript("eXo.desktop.UIDockbar",
"/javascript/eXo/desktop/UIDockbar.js", ServletContext);
+JavascriptService.addJavascript("eXo.desktop.UIDesktop",
"/javascript/eXo/desktop/UIDesktop.js", ServletContext);
/* WebUI Javascripts */
-JavascriptService.addJavascript("GateIn.webui.UIItemSelector",
"/javascript/GateIn/webui/UIItemSelector.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIForm",
"/javascript/GateIn/webui/UIForm.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIPopup",
"/javascript/GateIn/webui/UIPopup.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIPopupSelectCategory",
"/javascript/GateIn/webui/UIPopupSelectCategory.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIPopupWindow",
"/javascript/GateIn/webui/UIPopupWindow.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIVerticalScroller",
"/javascript/GateIn/webui/UIVerticalScroller.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIHorizontalTabs",
"/javascript/GateIn/webui/UIHorizontalTabs.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIPopupMenu",
"/javascript/GateIn/webui/UIPopupMenu.js", ServletContext);
-JavascriptService.addJavascript("GateIn.webui.UIDropDownControl",
"/javascript/GateIn/webui/UIDropDownControl.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIItemSelector",
"/javascript/eXo/webui/UIItemSelector.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIForm",
"/javascript/eXo/webui/UIForm.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIPopup",
"/javascript/eXo/webui/UIPopup.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIPopupSelectCategory",
"/javascript/eXo/webui/UIPopupSelectCategory.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIPopupWindow",
"/javascript/eXo/webui/UIPopupWindow.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIVerticalScroller",
"/javascript/eXo/webui/UIVerticalScroller.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIHorizontalTabs",
"/javascript/eXo/webui/UIHorizontalTabs.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIPopupMenu",
"/javascript/eXo/webui/UIPopupMenu.js", ServletContext);
+JavascriptService.addJavascript("eXo.webui.UIDropDownControl",
"/javascript/eXo/webui/UIDropDownControl.js", ServletContext);
/* Portal Javascripts */
-JavascriptService.addJavascript("GateIn.portal.PortalHttpRequest",
"/javascript/GateIn/portal/PortalHttpRequest.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.UIPortal",
"/javascript/GateIn/portal/UIPortal.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.UIWorkspace",
"/javascript/GateIn/portal/UIWorkspace.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.UIPortalControl",
"/javascript/GateIn/portal/UIPortalControl.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.PortalDragDrop",
"/javascript/GateIn/portal/PortalDragDrop.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.UIPortalNavigation",
"/javascript/GateIn/portal/UIPortalNavigation.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.UIMaskWorkspace",
"/javascript/GateIn/portal/UIMaskWorkspace.js", ServletContext);
-JavascriptService.addJavascript("GateIn.portal.UIExoStartMenu",
"/javascript/GateIn/portal/UIExoStartMenu.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.PortalHttpRequest",
"/javascript/eXo/portal/PortalHttpRequest.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.UIPortal",
"/javascript/eXo/portal/UIPortal.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.UIWorkspace",
"/javascript/eXo/portal/UIWorkspace.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.UIPortalControl",
"/javascript/eXo/portal/UIPortalControl.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.PortalDragDrop",
"/javascript/eXo/portal/PortalDragDrop.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.UIPortalNavigation",
"/javascript/eXo/portal/UIPortalNavigation.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.UIMaskWorkspace",
"/javascript/eXo/portal/UIMaskWorkspace.js", ServletContext);
+JavascriptService.addJavascript("eXo.portal.UIExoStartMenu",
"/javascript/eXo/portal/UIExoStartMenu.js", ServletContext);
/* Desktop Javascripts 2 */
-JavascriptService.addJavascript("GateIn.desktop.UIWindow",
"/javascript/GateIn/desktop/UIWindow.js", ServletContext);
+JavascriptService.addJavascript("eXo.desktop.UIWindow",
"/javascript/eXo/desktop/UIWindow.js", ServletContext);
</programlisting>
+ <para>
+ Note that even if the you register dedicated javascripts, they
+ will be merged into a single
+ <literal>merged.js</literal>
+ file when the server will load in order to reduce the number of
+ HTTP calls as seen in the home page source code:
+ </para>
+
+ <programlisting><script type="text/javascript"
src="/portal/javascript/merged.js"></script></programlisting>
<para>
- Note that even if the you register dedicated javascripts, they will be merged into a
single <literal>merged.js</literal> file when the server will load in order to
reduce the number of HTTP calls as seen in the home page source code:
+ Although this optimization is useful for a production environment, you may find it
easier to deactivate this optimization while debugging your javascript. For that, you
simply need to set the java system property
<literal>exo.product.developing</literal> to
<literal>true</literal>. But if you <emphasis>want to see or use the
merged file</emphasis> you have to set this property to
<literal>false</literal>.
+ You can pass the property as a JVM parameter with the
<literal>-D</literal> option in your <literal>GateIn.sh</literal>
or <literal>GateIn.bat</literal> startup script:
</para>
-
-<programlisting> <script type="text/javascript"
src="/portal/javascript/merged.js"></script>
-</programlisting>
<para>
- Although this optimization is useful for a production environment, you may find it
easier to deactivate this optimization while debugging your javascript. For that, you
simply need to set the java system property
<literal>exo.product.developing</literal> to
<literal>true</literal>. But if you <emphasis>want to see or use the
merged file</emphasis> you have to set this property to
<literal>false</literal>. You can pass the property as a JVM parameter with
the <literal>-D</literal> option in your
<literal>GateIn.sh</literal> or <literal>GateIn.bat</literal>
startup script: {code} EXO{code}
+ Every javascript file is referenced with a module name of type
"eXo.core.DragDrop" which acts like a namespace. Inside the associated files,
global javascript functions are used following the same namespace convention:
</para>
- <para>
- Every javascript file is referenced with a module name of type
"GateIn.core.DragDrop" which acts like a namespace. Inside the associated files,
global javascript functions are used following the same namespace convention:
- </para>
-<programlisting>GateIn.core.DragDrop = new DragDrop() ;
-</programlisting>
+<programlisting>eXo.core.DragDrop = new DragDrop() ;</programlisting>
<para>
- It is also possible to use the GateIn.require() javascript method to lazy load and
evaluate some javascript code. This is quite useful from the portlet or widget
applications that will use this javascript only once. Otherwise, if the library is
reusable in several places it is better to reference it in the groovy file.
+ It is also possible to use the eXo.require() javascript method to lazy load and
evaluate some javascript code. This is quite useful from the portlet or widget
applications that will use this javascript only once. Otherwise, if the library is
reusable in several places it is better to reference it in the groovy file.
</para>
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Default_Permission_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Default_Permission_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Default_Permission_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,124 +2,126 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section
id="sect-Reference_Guide-Portal_Default_Permission_Configuration">
- <!--
+ <title>Portal Default Permission Configuration</title>
+ <section
+
id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ The permission configuration for the portal is defined in the
+ file
+ <filename>02portal.war:/WEB-INF/conf/portal/portal-configuration.xml
+ </filename>
+ . The component UserACL is described there along with other
+ portal component configurations.
+ </para>
+ <para>
+ It defines 5 permissions types:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>super.user</emphasis>
+ : The super user has all the rights on the platform, by
+ default this user is called root
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>portal.creator.groups</emphasis>
+ : This list defines all groups that will be able to
+ manage the different portals, they also have the
+ permission to create new portals. The format is
+ "membership:/group/subgroup".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>navigation.creator.membership.type</emphasis>
+ : Defines the membership type of the group managers. The
+ group managers have the permission to create and edit
+ group pages and they can modify the group navigation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>guests.group</emphasis>
+ : Contains the name of the group that is used as guest
+ group. Any anonymous user becomes automatically member of
+ this group when he enters the public pages.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>access.control.workspace</emphasis>
+ : Defines the users that have access to the control
+ workspace. In the demo version the control workspace is
+ accessible only to 'root' and 'john'. They can
+ expand/collapse the workspace at the left hand side. The
+ format is "membership:/group/subgroup", An asterisk ''
+ gives permission to all memberships.
+ </para>
+ </listitem>
+ </itemizedlist>
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --> <title>Portal Default Permission Configuration</title>
- <section
id="sect-Reference_Guide-Portal_Default_Permission_Configuration-Overview">
- <title>Overview</title>
- <para>
- The permission configuration for the portal is defined in the file
portal/WEB-INF/conf/portal/portal-configuration.xml. The component UserACL is described
there along with other portal component configurations.
- </para>
- <para>
- It defines 5 permissions types:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>super.user</emphasis>: The super user has all the rights on
the platform, by default this user is called root
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>portal.creator.groups</emphasis>: This list defines all groups
that will be able to manage the different portals, they also have the permission to create
new portals. The format is "membership:/group/subgroup".
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>navigation.creator.membership.type</emphasis>: Defines the
membership type of the group managers. The group managers have the permission to create
and edit group pages and they can modify the group navigation.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>guests.group</emphasis>: Contains the name of the group that
is used as guest group. Any anonymous user becomes automatically member of this group when
he enters the public pages.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>access.control.workspace</emphasis>: Defines the users that
have access to the control workspace. In the demo version the control workspace is
accessible only to 'root' and 'john'. They can expand/collapse the
workspace at the left hand side. The format is "membership:/group/subgroup", An
asterisk '' gives permission to all memberships.
- </para>
- </listitem>
- </itemizedlist>
-
-<programlisting> <component>
- <key>org.exoplatform.portal.config.UserACL</key>
- <type>org.exoplatform.portal.config.UserACL</type>
- <init-params>
- <value-param>
- <name>super.user</name>
- <description>administrator</description>
- <value>root</value>
- </value-param>
+ <programlisting role="XML"><![CDATA[<component>
+ <key>org.exoplatform.portal.config.UserACL</key>
+ <type>org.exoplatform.portal.config.UserACL</type>
+ <init-params>
+ <value-param>
+ <name>super.user</name>
+ <description>administrator</description>
+ <value>root</value>
+ </value-param>
- <value-param>
- <name>portal.creator.groups</name>
- <description>groups with membership type have permission to manage
portal</description>
-
<value>*:/platform/administrators,*:/organization/management/executive-board</value>
- </value-param>
+ <value-param>
+ <name>portal.creator.groups</name>
+ <description>groups with membership type have permission to manage
portal</description>
+
<value>*:/platform/administrators,*:/organization/management/executive-board</value>
+ </value-param>
- <value-param>
- <name>navigation.creator.membership.type</name>
- <description>specific membership type have full permission with
group navigation</description>
- <value>manager</value>
- </value-param>
- <value-param>
- <name>guests.group</name>
- <description>guests group</description>
- <value>/platform/guests</value>
- </value-param>
- <value-param>
- <name>access.control.workspace</name>
- <description>groups with memberships that have the right to access
the User Control Workspace</description>
-
<value>*:/platform/administrators,*:/organization/management/executive-board</value>
- </value-param>
- </init-params>
- </component>
-</programlisting>
- <para>
- 1 Overwrite Portal Default Permissions In GateIn Portal 2.5 and later the UserACL
component supports adding a PortalACLPlugin plugin that allows to overwrite portal default
permissions.
- </para>
+ <value-param>
+ <name>navigation.creator.membership.type</name>
+ <description>specific membership type have full permission with group
navigation</description>
+ <value>manager</value>
+ </value-param>
+ <value-param>
+ <name>guests.group</name>
+ <description>guests group</description>
+ <value>/platform/guests</value>
+ </value-param>
+ <value-param>
+ <name>access.control.workspace</name>
+ <description>groups with memberships that have the right to access the User
Control Workspace</description>
+
<value>*:/platform/administrators,*:/organization/management/executive-board</value>
+ </value-param>
+ </init-params>
+</component>]]></programlisting>
+ </section>
+ <section>
+ <title>Overwrite Portal Default Permissions</title>
-<programlisting> <external-component-plugins>
-
<target-component>org.exoplatform.portal.config.UserACL</target-component>
- <component-plugin>
- <name>addPortalACLPlugin</name>
- <set-method>addPortalACLPlugin</set-method>
-
<type>org.exoplatform.portal.config.PortalACLPlugin</type>
- <description>setting some permission for
portal</description>
- <init-params>
- <values-param>
- <name>access.control.workspace.roles</name>
- <value>*:/platform/administrators</value>
-
<value>*:/organization/management/executive-board</value>
- </values-param>
- <values-param>
- <name>portal.creation.roles</name>
- <value>*:/platform/administrators</value>
-
<value>*:/organization/management/executive-board</value>
- </values-param>
- </init-params>
- </component-plugin>
- </external-component-plugins>
-</programlisting>
+<programlisting
role="XML"><![CDATA[<external-component-plugins>
+
<target-component>org.exoplatform.portal.config.UserACL</target-component>
+ <component-plugin>
+ <name>addPortalACLPlugin</name>
+ <set-method>addPortalACLPlugin</set-method>
+ <type>org.exoplatform.portal.config.PortalACLPlugin</type>
+ <description>setting some permission for portal</description>
+ <init-params>
+ <values-param>
+ <name>access.control.workspace.roles</name>
+ <value>*:/platform/administrators</value>
+ <value>*:/organization/management/executive-board</value>
+ </values-param>
+ <values-param>
+ <name>portal.creation.roles</name>
+ <value>*:/platform/administrators</value>
+ <value>*:/organization/management/executive-board</value>
+ </values-param>
+ </init-params>
+ </component-plugin>
+ </external-component-plugins>]]></programlisting>
</section>
-
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,391 +2,523 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Portal_Navigation_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Portal Navigation Configuration</title>
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Overview">
- <title>Overview</title>
- <para>
- When a user logs in he sees three types of navigation tree:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Portal Navigation
+ <title>Portal Navigation Configuration</title>
+ <section
+ id="sect-Reference_Guide-Portal_Navigation_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ When a user logs in he sees three types of navigation tree:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Portal Navigation
</para>
- </listitem>
- <listitem>
- <para>
- Group Navigation
+ </listitem>
+ <listitem>
+ <para>
+ Group Navigation
</para>
- </listitem>
- <listitem>
- <para>
- User Navigation
+ </listitem>
+ <listitem>
+ <para>
+ User Navigation
</para>
- </listitem>
- </itemizedlist>
- <para>
- they all are configured thanks to the usual XML configuration syntax in a file:
"portal/WEB-INF/conf/portal/portal-configuration.xml"
+ </listitem>
+ </itemizedlist>
+ <para>
+ they all are configured thanks to the usual XML
+ configuration syntax in a
+ file:
+ "02portal.war:/WEB-INF/conf/portal/portal-configuration.xml"
+ </para>
+
+ <programlisting role="XML"><![CDATA[<component>
+ <key>org.exoplatform.portal.config.UserPortalConfigService</key>
+ <type>org.exoplatform.portal.config.UserPortalConfigService</type>
+ <component-plugins>
+ <component-plugin>
+ <name>new.portal.config.user.listener</name>
+ <set-method>initListener</set-method>
+ <type>org.exoplatform.portal.config.NewPortalConfigListener</type>
+ <description>this listener init the portal configuration</description>
+ <init-params>
+ <value-param>
+ <name>default.portal</name>
+ <description>The default portal for checking db is empty or
not</description>
+ <value>classic</value>
+ </value-param>
+ <object-param>
+ <name>portal.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+ <value><string>classic</string></value>
+ <value><string>webos</string></value>
+ </collection>
+ </field>
+ <field
name="ownerType"><string>portal</string></field>
+ <field
name="templateLocation"><string>war:/conf/portal</string></field>
+ </object>
+ </object-param>
+ <object-param>
+ <name>group.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+
<value><string>platform/administrators</string></value>
+ <value><string>platform/users</string></value>
+ <value><string>platform/guests</string></value>
+
<value><string>organization/management/executive-board</string></value>
+ </collection>
+ </field>
+ <field
name="ownerType"><string>group</string></field>
+ <field
name="templateLocation"><string>war:/conf/portal</string></field>
+ </object>
+ </object-param>
+ <object-param>
+ <name>user.configuration</name>
+ <description>description</description>
+ <object type="org.exoplatform.portal.config.NewPortalConfig">
+ <field name="predefinedOwner">
+ <collection type="java.util.HashSet">
+ <value><string>root</string></value>
+ <value><string>john</string></value>
+ <value><string>mary</string></value>
+ <value><string>demo</string></value>
+ </collection>
+ </field>
+ <field
name="ownerType"><string>user</string></field>
+ <field
name="templateLocation"><string>war:/conf/portal</string></field>
+ </object>
+ </object-param>
+ </init-params>
+ </component-plugin>
+</component-plugins>]]></programlisting>
+ <para>
+ In the previous XML file we define, for the 3 navigation
+ types, some
+ sets of predefined portal, groups or users that will
+ have some
+ XML files inside the war. Those files will be used to
+ create an
+ initial navigation the first time the portal is
+ launched. That
+ information will then be stored in the JCR and
+ hence only
+ modifiable from the portal UI.
</para>
-
-<programlisting> <component>
-
<key>org.exoplatform.portal.config.UserPortalConfigService</key>
-
<type>org.exoplatform.portal.config.UserPortalConfigService</type>
- <component-plugins>
- <component-plugin>
- <name>new.portal.config.user.listener</name>
- <set-method>initListener</set-method>
-
<type>org.exoplatform.portal.config.NewPortalConfigListener</type>
- <description>this listener init the portal
configuration</description>
- <init-params>
- <value-param>
- <name>default.portal</name>
- <description>The default portal for checking db is empty or
not</description>
- <value>classic</value>
- </value-param>
- <object-param>
- <name>portal.configuration</name>
- <description>description</description>
- <object
type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
-
<value><string>classic</string></value>
-
<value><string>webos</string></value>
- </collection>
- </field>
- <field
name="ownerType"><string>portal</string></field>
- <field
name="templateLocation"><string>war:/conf/portal</string></field>
- </object>
- </object-param>
- <object-param>
- <name>group.configuration</name>
- <description>description</description>
- <object
type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
-
<value><string>platform/administrators</string></value>
-
<value><string>platform/users</string></value>
-
<value><string>platform/guests</string></value>
-
<value><string>organization/management/executive-board</string></value>
- </collection>
- </field>
- <field
name="ownerType"><string>group</string></field>
- <field
name="templateLocation"><string>war:/conf/portal</string></field>
- </object>
- </object-param>
- <object-param>
- <name>user.configuration</name>
- <description>description</description>
- <object
type="org.exoplatform.portal.config.NewPortalConfig">
- <field name="predefinedOwner">
- <collection type="java.util.HashSet">
-
<value><string>root</string></value>
-
<value><string>john</string></value>
-
<value><string>marry</string></value>
-
<value><string>demo</string></value>
- </collection>
- </field>
- <field
name="ownerType"><string>user</string></field>
- <field
name="templateLocation"><string>war:/conf/portal</string></field>
- </object>
- </object-param>
- </init-params>
- </component-plugin>
- </component-plugins>
-</programlisting>
- <para>
- In the previous XML file we define, for the 3 navigation types, some sets of
predefined portal, groups or users that will have some XML files inside the war. Those
files will be used to create an initial navigation the first time the portal is launched.
That information will then be stored in the JCR and hence only modifiable from the portal
UI.
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation">
+ <title>Portal Navigation</title>
+ <para>
+ The portal navigation incorporates the pages that can be
+ accessed even
+ when the user is not logged in (if the permission
+ allow a
+ public access). Several portal navigations are used for
+ example
+ when a company has several trademarks and each trade
+ would have
+ its own website.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal_Navigation">
- <title>Portal Navigation</title>
- <para>
- The portal navigation incorporates the pages that can be accessed even when the user
is not logged in (if the permission allow a public access). Several portal navigations are
used for example when a company has several trademarks and each trade would have its own
website.
+ <para>
+ The configuration of a portal called "classic" is made by
+ providing 4
+ XML files under the directory
+ portal/WEBINF/conf/portal/portal/classic:
</para>
- <para>
- The configuration of a portal called "classic" is made by providing 4 XML
files under the directory portal/WEBINF/conf/portal/portal/classic:
+ </section>
+
+ <section
+ id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal.xml">
+ <title>Portal.xml</title>
+ <para>
+ That file describes the layout and portlets that will be
+ shown for all
+ pages. Usually the layout contains the banner,
+ footer, menu,
+ breadcrumbs portlets. Indeed, in GateIn, every
+ area is a
+ portlet even the banner and footer which makes the
+ platform
+ extremely configurable.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Portal.xml">
- <title>Portal.xml</title>
- <para>
- That file describes the layout and portlets that will be shown for all pages. Usually
the layout contains the banner, footer, menu, breadcrumbs portlets. Indeed, in GateIn,
every area is a portlet even the banner and footer which makes the platform extremely
configurable.
- </para>
-
-<programlisting><?xml version="1.0"
encoding="ISO-8859-1"?>
-<portal-config>
- <portal-name>classic</portal-name>
- <locale>en</locale>
- <factory-id>office</factory-id>
- <access-permissions>Everyone</access-permissions>
-
<edit-permission>*:/platform/administrators</edit-permission>
- <creator>root</creator>
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="ISO-8859-1"?>
+<portal-config>
+ <portal-name>classic</portal-name>
+ <locale>en</locale>
+ <factory-id>office</factory-id>
+ <access-permissions>Everyone</access-permissions>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <creator>root</creator>
- <portal-layout>
- <application>
-
<instance-id>portal#classic:/web/BannerPortlet/banner</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
- <application>
-
<instance-id>portal#classic:/web/NavigationPortlet/toolbar</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
+ <portal-layout>
+ <application>
+ <instance-id>portal#classic:/web/BannerPortlet/banner</instance-id>
+ <show-info-bar>false</show-info-bar>
+ </application>
+ <application>
+ <instance-id>portal#classic:/web/NavigationPortlet/toolbar</instance-id>
+ <show-info-bar>false</show-info-bar>
+ </application>
- <application>
-
<instance-id>portal#classic:/web/BreadcumbsPortlet/breadcumbs</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
+ <application>
+
<instance-id>portal#classic:/web/BreadcumbsPortlet/breadcumbs</instance-id>
+ <show-info-bar>false</show-info-bar>
+ </application>
- <page-body> </page-body>
+ <page-body> </page-body>
- <application>
-
<instance-id>portal#classic:/web/FooterPortlet/footer</instance-id>
- <show-info-bar>false</show-info-bar>
- </application>
- </portal-layout>
+ <application>
+ <instance-id>portal#classic:/web/FooterPortlet/footer</instance-id>
+ <show-info-bar>false</show-info-bar>
+ </application>
+ </portal-layout>
-</portal-config>
-</programlisting>
- <para>
- Even if not shown in the previous XML file, it is also possible to apply a nested
container that can also contain portlets. Containers are then responsible of the layout of
their children (row, column or tabs containers exist).
+</portal-config>]]></programlisting>
+ <para>
+ Even if not shown in the previous XML file, it is also
+ possible to apply
+ a nested container that can also contain
+ portlets. Containers
+ are then responsible of the layout of their
+ children (row,
+ column or tabs containers exist).
</para>
- <para>
- Each application references a portlet using the id
portal#{portalName}:/{portletWarName}/{portletName}/{uniqueId}
+ <para>
+ Each application references a portlet using the id
+ portal#{portalName}:/{portletWarName}/{portletName}/{uniqueId}
+ </para>
+ <para>
+ In order to define at which location GateIn Portal shall
+ render the
+ current page use the page-body tag.
</para>
- <para>
- In order to define at which location GateIn Portal shall render the current page use
the page-body tag.
+ <para>
+ The defined classic portal is accessible to "Everyone" (that
+ means it
+ can be accessed through the URL /portal/public/classic)
+ but
+ only members of the group /platform/administrators can edit
+ it.
+ </para>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Portal_Navigation_Configuration-Navigation.xml">
+ <title>Navigation.xml</title>
+ <para>
+ This file defines all the navigation nodes the portal will
+ have. The
+ syntax is simple as we get nested node tags. Each node
+ references a page that is defined in the next XML file.
</para>
- <para>
- The defined classic portal is accessible to "Everyone" (that means it can be
accessed through the URL /portal/public/classic) but only members of the group
/platform/administrators can edit it.
+ <para>
+ If the label #{} is used then it means the i18n mechanism is
+ activated
+ and that the real label to render is taken from an
+ associated
+ properties file for the current locale.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Navigation.xml">
- <title>Navigation.xml</title>
- <para>
- This file defines all the navigation nodes the portal will have. The syntax is simple
as we get nested node tags. Each node references a page that is defined in the next XML
file.
+
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?>
+<node-navigation>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <priority>1</priority>
+ <page-nodes>
+ <node>
+ <uri>home</uri>
+ <name>home</name>
+ <label>#{portal.classic.home}</label>
+ <page-reference>portal::classic::homepage</page-reference>
+ </node>
+ <node>
+ <uri>webexplorer</uri>
+ <name>webexplorer</name>
+ <label>#{portal.classic.webexplorer}</label>
+ <page-reference>portal::classic::webexplorer</page-reference>
+ </node>
+ </page-nodes>
+</node-navigation>]]></programlisting>
+ <para>
+ This navigation tree can have multiple views inside portlets
+ such as the
+ breadcrumbs that render the current view node, the
+ site map or
+ the menu portlets.
</para>
- <para>
- If the label #{} is used then it means the i18n mechanism is activated and that the
real label to render is taken from an associated properties file for the current locale.
+ <warning>
+ <para>
+ For top nodes, the
+ <emphasis role="bold">uri</emphasis>
+ and the
+ <emphasis role="bold">name</emphasis>
+ of your navigation nodes must have the
+ <emphasis role="bold">same</emphasis>
+ value. For the other nodes the uri is composed like
+ <emphasis>
+ <uri>contentmanagement/fileexplorer</uri>
+ </emphasis>
+ where 'contentmanagement' is the name of the parent node and
+ 'fileexplorer' the name of the node (
+ <emphasis><name>fileexplorer</name>
</emphasis>
+ ).
+ </para>
+ </warning>
+ </section>
+
+ <section
+ id="sect-Reference_Guide-Portal_Navigation_Configuration-Pages.xml">
+ <title>Pages.xml</title>
+ <para>
+ This XML file structure is very similar to portal.xml and it
+ can also
+ contain container tags. Each application can decide if
+ it
+ wishes to render the portlet border, the window state icons
+ or
+ the mode.
</para>
-
-<programlisting><?xml version="1.0"
encoding="UTF-8"?>
-<node-navigation>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <priority>1</priority>
- <page-nodes>
- <node>
- <uri>home</uri>
- <name>home</name>
- <label>#{portal.classic.home}</label>
-
<page-reference>portal::classic::homepage</page-reference>
- </node>
- <node>
- <uri>webexplorer</uri>
- <name>webexplorer</name>
- <label>#{portal.classic.webexplorer}</label>
-
<page-reference>portal::classic::webexplorer</page-reference>
- </node>
- </page-nodes>
-</node-navigation>
-</programlisting>
- <para>
- This navigation tree can have multiple views inside portlets such as the breadcrumbs
that render the current view node, the site map or the menu portlets.
- </para>
- <para>
- +Warning+: For top nodes, the <emphasis
role="bold">uri</emphasis> and the <emphasis
role="bold">name</emphasis> of your navigation nodes must have the
<emphasis role="bold">same</emphasis> value. For the other nodes the
uri is composed like
<emphasis><uri>contentmanagement/fileexplorer</uri></emphasis>
where 'contentmanagement' is the name of the parent node and
'fileexplorer' the name of the node
(<emphasis><name>fileexplorer</name></emphasis>).
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Pages.xml">
- <title>Pages.xml</title>
- <para>
- This XML file structure is very similar to portal.xml and it can also contain
container tags. Each application can decide if it wishes to render the portlet border, the
window state icons or the mode.
- </para>
-
-<programlisting><?xml version="1.0"
encoding="ISO-8859-1"?>
-<page-set>
- <page>
- <page-id>portal::classic::homepage</page-id>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <name>homepage</name>
- <title>Home Page</title>
- <access-permissions>Everyone</access-permissions>
-
<edit-permission>*:/platform/administrators</edit-permission>
- <application>
-
<instance-id>portal#classic:/web/HomePagePortlet/homepageportlet</instance-id>
- <title>Home Page portlet</title>
- <show-info-bar>false</show-info-bar>
- <show-application-state>false</show-application-state>
- <show-application-mode>false</show-application-mode>
- </application>
- </page>
+
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="ISO-8859-1"?>
+<page-set>
+ <page>
+ <page-id>portal::classic::homepage</page-id>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <name>homepage</name>
+ <title>Home Page</title>
+ <access-permissions>Everyone</access-permissions>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <application>
+
<instance-id>portal#classic:/web/HomePagePortlet/homepageportlet</instance-id>
+ <title>Home Page portlet</title>
+ <show-info-bar>false</show-info-bar>
+ <show-application-state>false</show-application-state>
+ <show-application-mode>false</show-application-mode>
+ </application>
+ </page>
- <page>
- <page-id>portal::classic::webexplorer</page-id>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
- <name>webexplorer</name>
- <title>Web Explorer</title>
-
<access-permissions>*:/platform/users</access-permissions>
-
<edit-permission>*:/platform/administrators</edit-permission>
- <application>
-
<instance-id>group#platform/users:/web/BrowserPortlet/WebExplorer</instance-id>
- <title>Web Explorer</title>
- <show-info-bar>false</show-info-bar>
- </application>
- </page>
-</page-set>
-</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Portlet_preferences.xml">
- <title>Portlet-preferences.xml</title>
- <para>
- Porlet instances can be associated with portlet-preferences that override the one
defined in the usual portlet.xml file of the portlet application WAR.
+ <page>
+ <page-id>portal::classic::webexplorer</page-id>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <name>webexplorer</name>
+ <title>Web Explorer</title>
+ <access-permissions>*:/platform/users</access-permissions>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <application>
+
<instance-id>group#platform/users:/web/BrowserPortlet/WebExplorer</instance-id>
+ <title>Web Explorer</title>
+ <show-info-bar>false</show-info-bar>
+ </application>
+ </page>
+</page-set>]]></programlisting>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Portal_Navigation_Configuration-Portlet_preferences.xml">
+ <title>Portlet-preferences.xml</title>
+ <para>
+ Porlet instances can be associated with portlet-preferences
+ that override
+ the one defined in the usual portlet.xml file of
+ the portlet
+ application WAR.
</para>
-
-<programlisting><?xml version="1.0"
encoding="ISO-8859-1"?>
-<portlet-preferences-set>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
-
<window-id>portal#classic:/web/BannerPortlet/banner</window-id>
- <preference>
- <name>template</name>
-
<value>par:/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
-
<window-id>portal#classic:/web/NavigationPortlet/toolbar</window-id>
- <preference>
- <name>useAJAX</name>
- <value>true</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
-
<window-id>portal#classic:/web/FooterPortlet/footer</window-id>
- <preference>
- <name>template</name>
-
<value>par:/groovy/groovy/webui/component/UIFooterPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
+
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="ISO-8859-1"?>
+<portlet-preferences-set>
+ <portlet-preferences>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <window-id>portal#classic:/web/BannerPortlet/banner</window-id>
+ <preference>
+ <name>template</name>
+
<value>par:/groovy/groovy/webui/component/UIBannerPortlet.gtmpl</value>
+ <read-only>false</read-only>
+ </preference>
+ </portlet-preferences>
+ <portlet-preferences>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <window-id>portal#classic:/web/NavigationPortlet/toolbar</window-id>
+ <preference>
+ <name>useAJAX</name>
+ <value>true</value>
+ <read-only>false</read-only>
+ </preference>
+ </portlet-preferences>
+ <portlet-preferences>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <window-id>portal#classic:/web/FooterPortlet/footer</window-id>
+ <preference>
+ <name>template</name>
+
<value>par:/groovy/groovy/webui/component/UIFooterPortlet.gtmpl</value>
+ <read-only>false</read-only>
+ </preference>
+ </portlet-preferences>
- <portlet-preferences>
- <owner-type>portal</owner-type>
- <owner-id>classic</owner-id>
-
<window-id>portal#classic:/web/GroovyPortlet/groovyportlet</window-id>
- <preference>
- <name>template</name>
-
<value>par:/groovy/groovy/webui/component/UIGroovyPortlet.gtmpl</value>
- <read-only>false</read-only>
- </preference>
- </portlet-preferences>
-</portlet-preferences-set>
-</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation">
- <title>Group Navigation</title>
- <para>
- Group navigations are dynamically added (mounted) to the user navigation when he logs
in. This means that a user sees in his menu also all the pages that are assigned to the
groups to which he belongs to.
+ <portlet-preferences>
+ <owner-type>portal</owner-type>
+ <owner-id>classic</owner-id>
+ <window-id>portal#classic:/web/GroovyPortlet/groovyportlet</window-id>
+ <preference>
+ <name>template</name>
+
<value>par:/groovy/groovy/webui/component/UIGroovyPortlet.gtmpl</value>
+ <read-only>false</read-only>
+ </preference>
+ </portlet-preferences>
+</portlet-preferences-set>]]></programlisting>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Portal_Navigation_Configuration-Group_Navigation">
+ <title>Group Navigation</title>
+ <para>
+ Group navigations are dynamically added (mounted) to the
+ user navigation
+ when he logs in. This means that a user sees in
+ his menu also
+ all the pages that are assigned to the groups to
+ which he
+ belongs to.
</para>
- <para>
- Here only 3 XML files are necessary: navigation.xml, pages.xml and
portlet-preferences.xml. The syntax is the same as for portal navigations.
+ <para>
+ Here only 3 XML files are necessary: navigation.xml,
+ pages.xml and
+ portlet-preferences.xml. The syntax is the same as
+ for portal
+ navigations.
</para>
- <para>
- The 3 files are located in the directory:
"portal/WEB-INF/conf/portal/group/group-name-path/" like for example
"portal/WEB-INF/conf/portal/group/platform/administrators/"
+ <para>
+ The 3 files are located in the directory:
+ "portal/WEB-INF/conf/portal/group/group-name-path/" like for
+ example
+ "portal/WEB-INF/conf/portal/group/platform/administrators/"
+ </para>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation">
+ <title>User Navigation</title>
+ <para>
+ The user navigation is the set of nodes and pages that is owned
+ by a user. You can see that part as the user dashboard. The
+ files needed are navigation.xml, pages.xml,
+ portlet-preferences.xml. You will also find gadgets.xml
+ (formerly called widgets.xml) which defines the gadgets
+ (widgets) that will be located in the user workspace. The user
+ workspace is located at the left hand side, the access is
+ restricted to some privileged users, see
+ <xref linkend="sect-Reference_Guide-Predefined_User_Configuration"
/>
+ </para>
+ <para>
+ Those files are located in the directory
+ "portal/WEB-INF/conf/portal/users/{userName}"
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-User_Navigation">
- <title>User Navigation</title>
- <para>
- The user navigation is the set of nodes and pages that is owned by a user. You can see
that part as the user dashboard. The files needed are navigation.xml, pages.xml,
portlet-preferences.xml. You will also find gadgets.xml (formerly called widgets.xml)
which defines the gadgets (widgets) that will be located in the user workspace. The user
workspace is located at the left hand side, the access is restricted to some privileged
users, see <xref linkend="sect-Reference_Guide-Predefined_User_Configuration"
/>
- </para>
- <para>
- Those files are located in the directory
"portal/WEB-INF/conf/portal/users/{userName}"
- </para>
-
-<programlisting><?xml version="1.0"
encoding="ISO-8859-1"?>
-<widgets>
- <owner-type>user</owner-type>
- <owner-id>root</owner-id>
+
+ <programlisting role="XML"><![CDATA[<?xml
version="1.0" encoding="ISO-8859-1"?>
+<widgets>
+ <owner-type>user</owner-type>
+ <owner-id>root</owner-id>
- <container id="Information">
- <name>Information</name>
- <description>Information's Description</description>
- <application>
-
<instance-id>user#root:/GateInWidgetWeb/WelcomeWidget/WelcomeWidget1</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
+ <container id="Information">
+ <name>Information</name>
+ <description>Information's Description</description>
+ <application>
+
<instance-id>user#root:/GateInWidgetWeb/WelcomeWidget/WelcomeWidget1</instance-id>
+ <application-type>GateInWidget</application-type>
+ </application>
- <application>
-
<instance-id>user#root:/GateInWidgetWeb/StickerWidget/StickerWidget</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
+ <application>
+
<instance-id>user#root:/GateInWidgetWeb/StickerWidget/StickerWidget</instance-id>
+ <application-type>GateInWidget</application-type>
+ </application>
- <application>
-
<instance-id>user#root:/GateInWidgetWeb/InfoWidget/InfoWidget1</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
- </container>
+ <application>
+
<instance-id>user#root:/GateInWidgetWeb/InfoWidget/InfoWidget1</instance-id>
+ <application-type>GateInWidget</application-type>
+ </application>
+ </container>
- <container id="Calendar">
- <name>Calendar</name>
- <description>Calendar's Description</description>
- <application>
-
<instance-id>user#root:/GateInWidgetWeb/CalendarWidget/CalendarWidget</instance-id>
- <application-type>GateInWidget</application-type>
- </application>
- </container>
+ <container id="Calendar">
+ <name>Calendar</name>
+ <description>Calendar's Description</description>
+ <application>
+
<instance-id>user#root:/GateInWidgetWeb/CalendarWidget/CalendarWidget</instance-id>
+ <application-type>GateInWidget</application-type>
+ </application>
+ </container>
-</widgets>
-</programlisting>
- <para>
- Note that when you develop a portal, we advise you to use the XML instead of the User
Interface as XML will allow you to provide a preconfigured package to your customer. But
as each time you start the server the first time, the XML files are stored in the JCR, it
will be necessary to remove the database (the jcr leverages a database). During the
development phase using tomcat it simply means to delete the directory: exo-tomcat/temp
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Tips">
- <title>Tips</title>
- <para>
- Stuff Goes Here?
- </para>
- </section>
+</widgets>]]></programlisting>
+ <para>
+ Note that when you develop a portal, we advise you to use
+ the XML instead
+ of the User Interface as XML will allow you to
+ provide a
+ preconfigured package to your customer. But as each
+ time you
+ start the server the first time, the XML files are
+ stored in
+ the JCR, it will be necessary to remove the database
+ (the jcr
+ leverages a database). During the development phase
+ using
+ tomcat it simply means to delete the directory:
+ exo-tomcat/temp
+ </para>
+ </section>
+ <section
id="sect-Reference_Guide-Portal_Navigation_Configuration-Tips">
+ <title>Tips</title>
+ <section>
+ <title>Direct External Links</title>
+ <para>
+ If you wish to add a link to a URL outside the portal you
+ you first
+ have to define a "page" which will not be used.
+ Then add
+ the URL to the navigation.
+ pages.xml:
+ </para>
+ <programlisting><![CDATA[<page>
+ <owner-type>portal</owner-type>
+ <owner-id>website</owner-id>
+ <name>documentation</name>
+ <title>Documentation</title>
+ <access-permissions>Everyone</access-permissions>
+ <edit-permission>*:/platform/administrators</edit-permission>
+</page>]]></programlisting>
+ <para>
+ naviguation.xml:</para>
+
+ <programlisting><![CDATA[<node>
+ <
uri>http://wiki.exoplatform.com/xwiki/bin/view/Main/WebHome</uri>
+ <name>documentation</name>
+ <label>#{portal.classic.documentation}</label>
+ <page-reference>portal::website::documentation</page-reference>
+</node>]]></programlisting>
+
+ <warning>
+ <title>Direct external links were not a design goal</title>
+ <para>Currently you cannot modify the URL using the portal
+ interface, you
+ must change it in the configuration files
+ or modify the underlying
+ database table.</para>
+ </warning>
+ </section>
+ </section>
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,129 +2,212 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Predefined_User_Configuration">
- <!--
+ <title>Predefined User Configuration</title>
+ <section
+ id="sect-Reference_Guide-Predefined_User_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ To specify the initial Organization configuration, the content
+ of
+
<literal>02portal.war:/WEB-INF/conf/organization/organization-configuration.xml
+ </literal>
+ should be edited. This file complies with the XML GateIn
+ configuration schema. It lists several configuration plugins.
+ </para>
+ </section>
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ <section
+
id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_adding_users_groups_and_membership_types">
+ <title>Plugin for adding users, groups and membership types
+ </title>
+ <para>
+ The plugin of type
+
<literal>org.exoplatform.services.organization.OrganizationDatabaseInitializer
+ </literal>
+ specifies the list of users, groups and membership types to be
+ created. The initialization parameter named
+ "checkDatabaseAlgorithm" determines how the creation is
+ triggered. Thus, the value "entry" means that each user, group
+ and membership listed in the configuration is checked each time
+ GateIn is started. If not existing, it is created. The value
+ "empty" means that the whole list of preconfigured users,
+ groups and memberships is processed only if the database is
+ empty.
+ </para>
+ </section>
- --> <title>Predefined User Configuration</title>
- <section
id="sect-Reference_Guide-Predefined_User_Configuration-Overview">
- <title>Overview</title>
- <para>
- To specify the initial Organization configuration, the content of
<literal>portal.war:WEB-INF/conf/organization/organization-configuration.xml</literal>
should be edited. This file complies with the XML GateIn configuration schema. It lists
several configuration plugins.
+ <section
+
id="sect-Reference_Guide-Predefined_User_Configuration-Membership_types">
+ <title>Membership types</title>
+ <para>
+ The predefined membership types are specified in the
+ "membershipType"
+ field of the "OrganizationConfig" plugin
+ parameter.
+ </para>
+ <programlisting role="XML"><![CDATA[<field
name="membershipType">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+ <field name="type">
+ <string>member</string>
+ </field>
+ <field name="description">
+ <string>member membership type</string>
+ </field>
+ </object>
+ </value>
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+ <field name="type">
+ <string>owner</string>
+ </field>
+ <field name="description">
+ <string>owner membership type</string>
+ </field>
+ </object>
+ </value>
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
+ <field name="type">
+ <string>validator</string>
+ </field>
+ <field name="description">
+ <string>validator membership type</string>
+ </field>
+ </object>
+ </value>
+ </collection>
+</field>]]></programlisting>
+ </section>
+
+ <section
id="sect-Reference_Guide-Predefined_User_Configuration-Groups">
+ <title>Groups</title>
+ <para>
+ The predefined groups are specified in the "group" field of
+ the
+ "OrganizationConfig" plugin parameter.
+ </para>
+ <programlisting role="XML"><![CDATA[<field
name="group">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name">
+ <string>portal</string>
+ </field>
+ <field name="parentId">
+ <string></string>
+ </field>
+ <field name="type">
+ <string>hierachy</string>
+ </field>
+ <field name="description">
+ <string>the /portal group</string>
+ </field>
+ </object>
+ </value>
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$Group">
+ <field name="name">
+ <string>community</string>
+ </field>
+ <field name="parentId">
+ <string>/portal</string>
+ </field>
+ <field name="type">
+ <string>hierachy</string>
+ </field>
+ <field name="description">
+ <string>the /portal/community group</string>
+ </field>
+ </object>
+ </value>
+ ...
+ </collection>
+</field>]]></programlisting>
+ </section>
+
+ <section
id="sect-Reference_Guide-Predefined_User_Configuration-Users">
+ <title>Users</title>
+ <para>
+ The predefined users are specified in the "membershipType"
+ field of the
+ "OrganizationConfig" plugin parameter.
</para>
- </section>
-
- <section
id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_adding_users_groups_and_membership_types">
- <title>Plugin for adding users, groups and membership types</title>
- <para>
- The plugin of type
<literal>org.exoplatform.services.organization.OrganizationDatabaseInitializer</literal>
specifies the list of users, groups and membership types to be created. The initialization
parameter named "checkDatabaseAlgorithm" determines how the creation is
triggered. Thus, the value "entry" means that each user, group and membership
listed in the configuration is checked each time GateIn is started. If not existing, it is
created. The value "empty" means that the whole list of preconfigured users,
groups and memberships is processed only if the database is empty.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Predefined_User_Configuration-Membership_types">
- <title>Membership types</title>
- <para>
- The predefined membership types are specified in the "membershipType" field
of the "OrganizationConfig" plugin parameter. {code} <field
name="membershipType"> <collection
type="java.util.ArrayList"> <value> <object
type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
<field
name="type"><string>member</string></field>
<field name="description"><string>member membership
type</string></field> </object>
</value> <value> <object
type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
<field
name="type"><string>owner</string></field>
<field name="description"><string>owner membership
type</string></field> </object>
</value> <value> <object
type="org.exoplatform.services.organization.OrganizationConfig$MembershipType">
<field name="type"><string>valid!
ator</string></field> <field
name="description"><string>validator membership
type</string></field> </object>
</value> </collection> </field> {code}
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Predefined_User_Configuration-Groups">
- <title>Groups</title>
- <para>
- The predefined groups are specified in the "group" field of the
"OrganizationConfig" plugin parameter. {code} <field
name="group"> <collection
type="java.util.ArrayList"> <value> <object
type="org.exoplatform.services.organization.OrganizationConfig$Group">
<field
name="name"><string>portal</string></field>
<field
name="parentId"><string></string></field>
<field
name="type"><string>hierachy</string></field>
<field name="description"><string>the /portal
group</string></field> </object>
</value> <value> <object
type="org.exoplatform.services.organization.OrganizationConfig$Group">
<field
name="name"><string>community</string></field>
<field
name="parentId"><string>/portal</string></field>
<field
name="type"><string>hierachy</string></field>
<field name="desc!
ription"><string>the /portal/community
group</string></field> </object>
</value> ... </collection> </field> {code}
- </para>
- </section>
-
- <section id="sect-Reference_Guide-Predefined_User_Configuration-Users">
- <title>Users</title>
- <para>
- The predefined users are specified in the "membershipType" field of the
"OrganizationConfig" plugin parameter.
- </para>
-
-<programlisting> <field name="user">
- <collection type="java.util.ArrayList">
- <value>
- <object
type="org.exoplatform.services.organization.OrganizationConfig$User">
- <field
name="userName"><string>root</string></field>
- <field
name="password"><string>exo</string></field>
- <field
name="firstName"><string>root</string></field>
- <field
name="lastName"><string>root</string></field>
- <field
name="email"><string>exoadmin@localhost</string></field>
- <field
name="groups"><string>member:/admin,member:/user,owner:/portal/admin</string></field>
- </object>
- </value>
- <value>
- <object
type="org.exoplatform.services.organization.OrganizationConfig$User">
- <field
name="userName"><string>exo</string></field>
- <field
name="password"><string>exo</string></field>
- <field
name="firstName"><string>site</string></field>
- <field
name="lastName"><string>site</string></field>
- <field
name="email"><string>exo@localhost</string></field>
- <field
name="groups"><string>member:/user</string></field>
- </object>
- </value>
- ...
- </collection>
- </field>
-</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_monitoring_user_creation">
- <title>Plugin for monitoring user creation</title>
- <para>
- The plugin of type
<literal>org.exoplatform.services.organization.impl.NewUserEventListener</literal>
specifies which groups should join all newly created users. It notably specifies the
groups and memberships to be used. It also specifies a list of users that should be
excepted.
- </para>
-
-<programlisting> <component-plugin>
- <name>new.user.event.listener</name>
- <set-method>addListenerPlugin</set-method>
-
<type>org.exoplatform.services.organization.impl.NewUserEventListener</type>
- <description>this listener assign group and membership to a new
created user</description>
- <init-params>
- <object-param>
- <name>configuration</name>
- <description>description</description>
- <object
type="org.exoplatform.services.organization.impl.NewUserConfig">
- <field name="group">
- <collection type="java.util.ArrayList">
- <value>
- <object
type="org.exoplatform.services.organization.impl.NewUserConfig$JoinGroup">
- <field
name="groupId"><string>/user</string></field>
- <field
name="membership"><string>member</string></field>
- </object>
- </value>
- </collection>
- </field>
- <field name="ignoredUser">
- <collection type="java.util.HashSet">
-
<value><string>exo</string></value>
-
<value><string>root</string></value>
-
<value><string>company</string></value>
-
<value><string>community</string></value>
- </collection>
- </field>
- </object>
- </object-param>
- </init-params>
- </component-plugin>
-</programlisting>
- </section>
+ <programlisting role="XML"><![CDATA[<field
name="user">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field
name="userName"><string>root</string></field>
+ <field
name="password"><string>exo</string></field>
+ <field
name="firstName"><string>root</string></field>
+ <field
name="lastName"><string>root</string></field>
+ <field
name="email"><string>exoadmin@localhost</string></field>
+ <field
name="groups"><string>member:/admin,member:/user,owner:/portal/admin</string></field>
+ </object>
+ </value>
+ <value>
+ <object
type="org.exoplatform.services.organization.OrganizationConfig$User">
+ <field
name="userName"><string>exo</string></field>
+ <field
name="password"><string>exo</string></field>
+ <field
name="firstName"><string>site</string></field>
+ <field
name="lastName"><string>site</string></field>
+ <field
name="email"><string>exo@localhost</string></field>
+ <field
name="groups"><string>member:/user</string></field>
+ </object>
+ </value>
+ ...
+ </collection>
+</field>]]></programlisting>
+ </section>
+
+ <section
+
id="sect-Reference_Guide-Predefined_User_Configuration-Plugin_for_monitoring_user_creation">
+ <title>Plugin for monitoring user creation</title>
+ <para>
+ The plugin of type
+ <literal>org.exoplatform.services.organization.impl.NewUserEventListener
+ </literal>
+ specifies which groups should join all newly created users. It
+ notably specifies the groups and memberships to be used. It
+ also specifies a list of users that should be excepted.
+ </para>
+
+ <programlisting role="XML"><![CDATA[<component-plugin>
+ <name>new.user.event.listener</name>
+ <set-method>addListenerPlugin</set-method>
+
<type>org.exoplatform.services.organization.impl.NewUserEventListener</type>
+ <description>this listener assign group and membership to a new created
user</description>
+ <init-params>
+ <object-param>
+ <name>configuration</name>
+ <description>description</description>
+ <object
type="org.exoplatform.services.organization.impl.NewUserConfig">
+ <field name="group">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object
type="org.exoplatform.services.organization.impl.NewUserConfig$JoinGroup">
+ <field
name="groupId"><string>/user</string></field>
+ <field
name="membership"><string>member</string></field>
+ </object>
+ </value>
+ </collection>
+ </field>
+ <field name="ignoredUser">
+ <collection type="java.util.HashSet">
+ <value><string>exo</string></value>
+ <value><string>root</string></value>
+ <value><string>company</string></value>
+ <value><string>community</string></value>
+ </collection>
+ </field>
+ </object>
+ </object-param>
+ </init-params>
+</component-plugin>]]></programlisting>
+ </section>
+
</section>
Modified:
portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -2,26 +2,7 @@
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<section id="sect-Reference_Guide-Skin_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Skin Configuration</title>
+ <title>Skin Configuration</title>
<section id="sect-Reference_Guide-Skin_Configuration-Overview">
<title>Overview</title>
<para>
@@ -32,7 +13,7 @@
<section id="sect-Reference_Guide-Skin_Configuration-Skin_Switching">
<title>Skin Switching</title>
<para>
- Skins can be switched dynamically at runtime by the <emphasis>Skin
Settings</emphasis> action in <emphasis> "User Workspace"
</emphasis> <!-- <link linkend="User Workspace">User
Workspace</link> --> .
+ Skins can be switched dynamically at runtime.
</para>
<mediaobject>
<imageobject>
@@ -50,16 +31,15 @@
An GateIn skin contains css styles for GateIn portal's components but also shares
components that may be reused in portlets. When GateIn generates a portal page markup, it
inserts stylesheet links in the page's <literal>head</literal> tag.
</para>
-<programlisting><head>
+<programlisting><![CDATA[<head>
...
-<link id="CoreSkin" rel="stylesheet" type="text/css"
href="/GateInResources/skin/Stylesheet.css" />
-<link id="web_FooterPortlet" rel="stylesheet"
type="text/css" href=
"/web/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css"
/>
-<link id="web_NavigationPortlet" rel="stylesheet"
type="text/css" href=
"/web/skin/portal/webui/component/UINavigationPortlet/DefaultStylesheet.css"
/>
-<link id="web_HomePagePortlet" rel="stylesheet"
type="text/css" href=
"/portal/templates/skin/webui/component/UIHomePagePortlet/DefaultStylesheet.css"
/>
-<link id="web_BannerPortlet" rel="stylesheet"
type="text/css" href=
"/web/skin/portal/webui/component/UIBannerPortlet/DefaultStylesheet.css"
/>
+<link id="CoreSkin" rel="stylesheet" type="text/css"
href="/eXoResources/skin/Stylesheet.css" />
+<link id="web_FooterPortlet" rel="stylesheet"
type="text/css" href=
"/web/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css" />
+<link id="web_NavigationPortlet" rel="stylesheet"
type="text/css" href=
"/web/skin/portal/webui/component/UINavigationPortlet/DefaultStylesheet.css"
/>
+<link id="web_HomePagePortlet" rel="stylesheet"
type="text/css" href=
"/portal/templates/skin/webui/component/UIHomePagePortlet/DefaultStylesheet.css"
/>
+<link id="web_BannerPortlet" rel="stylesheet"
type="text/css" href=
"/web/skin/portal/webui/component/UIBannerPortlet/DefaultStylesheet.css" />
...
-</head>
-</programlisting>
+</head>]]></programlisting>
<para>
In the snipped code above, you can see two types of links :
</para>
@@ -102,11 +82,12 @@
</listitem>
</orderedlist>
<para>
- This is revealed easily by the main portal skin stylesheets. For example <emphasis
role="bold">/GateInVistaSkin/skin/Stylesheet.css</emphasis>
+ This is revealed easily by the main portal skin stylesheets. For example <emphasis
role="bold">/eXoVistaSkin/skin/Stylesheet.css</emphasis>
</para>
-<programlisting>{code} @import
url(/GateInResources/skin/PortletThemes/Stylesheet.css) ; @import
url(VistaSkin/portal/webui/component/UIPortalApplicationSkin.css) ; @import
url(VistaSkin/webui/component/Stylesheet.css) ; {code}
-</programlisting>
+<programlisting>@import url(/eXoResources/skin/PortletThemes/Stylesheet.css) ;
+@import url(VistaSkin/portal/webui/component/UIPortalApplicationSkin.css) ;
+@import url(VistaSkin/webui/component/Stylesheet.css) ;</programlisting>
</section>
<section id="sect-Reference_Guide-Skin_Configuration-Portlet_Styles">
@@ -124,18 +105,14 @@
<section
id="sect-Reference_Guide-Skin_Configuration-How_to_Configure_a_Portal_Skin">
<title>How to Configure a Portal Skin</title>
- <para>
- Stuff Goes Here?
- </para>
- </section>
-
+
<section id="sect-Reference_Guide-Skin_Configuration-SkinService">
<title>SkinService</title>
<para>
The <ulink
url="http://fisheye.exoplatform.org/browse/projects/portal/trunk/web...
is an GateIn service that manages portal skin, portlet styles and portlet themes (windows
borders). The code snippet below is an excerpt of the API offered by this service.
</para>
-<programlisting> /**
+<programlisting role="JAVA"><![CDATA[/**
* Register the stylesheet for a portal Skin.
* @param module skin module identifier
* @param skinName skin name
@@ -169,10 +146,9 @@
* @param categoryName portlet theme category
* @param themesName names of the themes
*/
- public void addTheme(String categoryName, List<String> themesName) {
+ public void addTheme(String categoryName, List<String> themesName) {
[...]
- }
-</programlisting>
+ }]]></programlisting>
<para>
Use the skin service to register your own portal skins, portlet styles and portlet
themes.
</para>
@@ -184,23 +160,22 @@
GateIn provides a servlet listener that allows you to register your own skins and
styles when your webapp starts up. Your first step is to add the listener to your portlet
app <literal>web.xml</literal>.
</para>
-<programlisting> <web-app>
+<programlisting role="XML"><![CDATA[<web-app>
[::]
- <listener>
-
<listener-class>org.exoplatform.portal.webui.skin.SkinConfigListener</listener-class>
- </listener>
+ <listener>
+
<listener-class>org.exoplatform.portal.webui.skin.SkinConfigListener</listener-class>
+ </listener>
[::]
- </web-app>
-</programlisting>
+ </web-app>]]></programlisting>
+</section>
+ <section>
+ <title>SkinConfigScript.groovy</title>
<para>
- 1.1 SkinConfigScript.groovy
+ The <literal>SkinListener</literal> looks for the groovy script file
located in your war under:
<filename>/WEB-INF/conf/script/groovy/SkinConfigScript.groovy</filename>
</para>
<para>
- The <tt>SkinListener</tt> looks for the groovy script file
located in your war under:
<filename>/WEB-INF/conf/script/groovy/SkinConfigScript.groovy</filename>
+ In this script, you have full access to the <literal>SkinService</literal>
and <literal>ServletContext</literal> which are bound as scripting variables
under the same name. As an example, take a look at the following script. It can be found
in the <literal>GateInResources.war</literal> and is used by GateIn to
register the <literal>Default</literal> portal skin and some portlet themes.
</para>
- <para>
- In this script, you have full access to the
<tt>SkinService</tt> and
<tt>ServletContext</tt> which are bound as scripting variables
under the same name. As an example, take a look at the following script. It can be found
in the <tt>GateInResources.war</tt> and is used by GateIn to
register the <tt>Default</tt> portal skin and some portlet
themes.
- </para>
<programlisting>SkinService.addPortalSkin("CoreSkin","Default",
"/GateInResources/skin/Stylesheet.css", ServletContext);
SkinService.addTheme("Simple",
["SimpleBlue","SimpleViolet","SimpleOrange","SimplePink","SimpleGreen"]);
@@ -210,46 +185,45 @@
SkinService.addTheme("VistaStyle",
["VistaTheme","VistaBlue"]);
</programlisting>
<para>
- The syntax of addTheme() is:<!-- LB -->
<tt>addTheme(String categoryName, List<String>
themesName)</tt>
+ The syntax of addTheme() is: <programlisting><![CDATA[addTheme(String
categoryName, List<String> themesName)]]></programlisting>
</para>
<para>
- So, to provide your own skin you could use the following: {code}
SkinService.addSkin("mywebapp/MyPortlet", "MyPortalSkin",
"/mywebapp/skin/Stylesheet.css", ServletContext); {code}
+ So, to provide your own skin you could use the following:
<programlisting><![CDATA[SkinService.addSkin("mywebapp/MyPortlet",
"MyPortalSkin", "/mywebapp/skin/Stylesheet.css",
ServletContext);]]></programlisting>
</para>
<para>
- This simple line would register a styleesheet for a portlet named
<tt>MyPortlet</tt> in a portlet app named
<tt>mywebapp</tt>. The stylesheet would be used when a skin
named <tt>MyPortalSkin</tt> is selected in portal.
+ This simple line would register a styleesheet for a portlet named
<literal>MyPortlet</literal> in a portlet app named
<literal>mywebapp</literal>. The stylesheet would be used when a skin named
<literal>MyPortalSkin</literal> is selected in portal.
</para>
<para>
- The syntax of addSkin() is:<!-- LB --> <tt>addSkin(String
module, String skinName, String cssPath, ServletContext scontext, boolean
overwrite)</tt>
+ The syntax of addSkin() is: <programlisting><![CDATA[addSkin(String module,
String skinName, String cssPath, ServletContext scontext, boolean
overwrite)]]></programlisting>
</para>
<para>
- <parameter>~~overwrite~~</parameter> is optional, its default value is
"false". If its value is true, the later call of addSkin() for the same skin key
(combination of module + skinName) replaces the skin of the previous call.
+ <literal>overwrite</literal> is optional, its default value is
"false". If its value is true, the later call of addSkin() for the same skin key
(combination of module + skinName) replaces the skin of the previous call.
</para>
<para>
Similarly, to configure a particular portal you can use the following :
</para>
-<programlisting> {code} SkinService.addSkin("myportalname",
"skin", "/path/to/skin/Stylesheet.css", ServletContext); {code}
-</programlisting>
+<programlisting>SkinService.addSkin("myportalname", "skin",
"/path/to/skin/Stylesheet.css", ServletContext);</programlisting>
<para>
- The syntax of addPortalSkin() is:<!-- LB -->
<tt>addPortalSkin(String module, String skinName, String cssPath,
ServletContext scontext, boolean overwrite)</tt>
+ The syntax of addPortalSkin() is:
<programlisting><![CDATA[addPortalSkin(String module, String skinName, String
cssPath, ServletContext scontext, boolean overwrite)]]></programlisting>
</para>
+ </section>
+ </section>
+ <section>
+ <title>Tips and Tricks</title>
+ <section>
+ <title>Easier css debuggin</title>
<para>
- 1 Tips and Tricks
- </para>
- <para>
- 1.1 Easier css debugging
- </para>
- <para>
By default, CSS files are cached and their imports are merged, at the server side,
into a single CSS file to reduce the number of HTTP requests from the browser to the
server.
</para>
<para>
- The <tt>ServletContext</tt> parameter is there to allow
the direct access to the CSS files from the
<tt>SkinService</tt>. The optimization code is quite simple as
all the CSS files are parsed at the server startup time and all the @import and url(...)
references are rewritten to support a single flat file. The result is stored in a cache
directly used from the <tt>ResourceRequestFilter</tt>.
+ The <literal>ServletContext</literal> parameter is there to allow the
direct access to the CSS files from the <literal>SkinService</literal>. The
optimization code is quite simple as all the CSS files are parsed at the server startup
time and all the @import and url(...) references are rewritten to support a single flat
file. The result is stored in a cache directly used from the
<literal>ResourceRequestFilter</literal>.
</para>
<para>
- Although the optimization is useful for a production environments, you may find it
easier to deactivate this optimization while debugging your stylesheets. For that, you
simply need to set the java system property
<tt>exo.product.developing</tt> to
<tt>true</tt>.
+ Although the optimization is useful for a production environments, you may find it
easier to deactivate this optimization while debugging your stylesheets. For that, you
simply need to set the java system property
<literal>exo.product.developing</literal> to
<literal>true</literal>.
</para>
<para>
- For example, you can pass the property as a JVM parameter with the
<tt>-D</tt> option in your
<tt>GateIn.sh</tt> startup script: {code} EXO{code}
+ For example, you can pass the property as a JVM parameter with the
<literal>-D</literal> option in your <literal>GateIn.sh</literal>
startup script: {code} EXO{code}
</para>
<orderedlist numeration="arabic">
<listitem>
@@ -258,10 +232,12 @@
</para>
</listitem>
</orderedlist>
+ </section>
+ <section>
+ <title>
+ Change portlet icons
+ </title>
<para>
- 1.1 Change portlet icons
- </para>
- <para>
Each portlet is represented by an icon that you can see in the portlet registry, or
the webos dock. You can change this icon by adding an image in the directory :
</para>
<itemizedlist>
@@ -281,29 +257,23 @@
</para>
</listitem>
</itemizedlist>
+ </section>
+ <section>
+ <title>
+ Set the default skin for Portal
+ </title>
<para>
- 1.1 Set the default skin for Portal
+ When not configured, the default skin of portal is Default. If you want to change this
value (to Mac skin, Vista skin, or your own), add a skin tag in the
<literal>portal.xml</literal> that defines your portal:
</para>
- <para>
- When not configured, the default skin of portal is Default. If you want to change this
value (to Mac skin, Vista skin, or your own), add a skin tag in the
<tt>portal.xml</tt> that defines your portal:
- </para>
-<programlisting><portal-config>
- <portal-name>classic</portal-name>
- <locale>en</locale>
- <factory-id>office</factory-id>
- <access-permissions>Everyone</access-permissions>
-
<edit-permission>*:/platform/administrators</edit-permission>
- <skin>Mac</skin>
- <creator>root</creator>
-...
-</programlisting>
- <para>
- factory-id was removed since Portal 2.5
- </para>
- <para>
- Portal 2.6 and after will not take the order of the tags into account. Before 2.6, the
order must be the same as in the example.
- </para>
+<programlisting role="XML"><![CDATA[<portal-config>
+ <portal-name>classic</portal-name>
+ <locale>en</locale>
+ <access-permissions>Everyone</access-permissions>
+ <edit-permission>*:/platform/administrators</edit-permission>
+ <skin>Mac</skin>
+ <creator>root</creator>
+...]]></programlisting>
</section>
<section
id="sect-Reference_Guide-Skin_Configuration-Some_CSS_techniques">
@@ -314,7 +284,6 @@
<para>
GateIn relies heavily on CSS to create the layout and special effects for the UI.
Below we explain some common techniques you may find often inside GateIn's markup. We
explain them here to help you better understand GateIn generated markup, ease css issues
fixing or get inspration for styling your own apps.
</para>
- </section>
<section
id="sect-Reference_Guide-Skin_Configuration-Decorator_pattern">
<title>Decorator pattern</title>
@@ -322,39 +291,37 @@
The decorator is a pattern to create a contour or a curve around an area. In order to
achieve this effect you need to create 9 cells. The BODY is the central area that you want
to decorate. The other 8 cells are distributed around the BODY cell. You can use the
width, height and background image properties to achieve any decoration effect that you
want.
</para>
-<programlisting>
-~UWC_TOKEN_START~1255420331338~UWC_TOKEN_END~
+<programlisting role="HTML"><![CDATA[
+-----------------------------------------------------------------------
| | | |
| TopLeft | TopCenter | TopRight |
| | | |
-----
+-----------------------------------------------------------------------
| | | |
-| | | |
| CenterLeft | BODY | CenterRight |
| | | |
+-----------------------------------------------------------------------
| | | |
-~UWC_TOKEN_START~1255420331340~UWC_TOKEN_END~
-| | | |
| BottomLeft | BottomCenter | BottomRight |
| | | |
-~UWC_TOKEN_START~1255420331341~UWC_TOKEN_END~
-<div class="Parent">
- <div class="TopLeft">
- <div class="TopRight">
- <div
class="TopCenter"><span></span></div>
- </div>
- </div>
- <div class="CenterLeft">
- <div class="CenterRight">
- <div class="CenterCenter">BODY</div>
- </div>
- </div>
- <div class="BottomLeft">
- <div class="BottomRight">
- <div
class="BottomCenter"><span></span></div>
- </div>
- <div>
-</div>
+-----------------------------------------------------------------------
+<div class="Parent">
+ <div class="TopLeft">
+ <div class="TopRight">
+ <div class="TopCenter"><span></span></div>
+ </div>
+ </div>
+ <div class="CenterLeft">
+ <div class="CenterRight">
+ <div class="CenterCenter">BODY</div>
+ </div>
+ </div>
+ <div class="BottomLeft">
+ <div class="BottomRight">
+ <div class="BottomCenter"><span></span></div>
+ </div>
+ <div>
+</div>]]>
</programlisting>
</section>
@@ -364,24 +331,24 @@
Left margin left pattern is a technique to create 2 blocks side by side. The left
block will have a fixed size and the right block will take the rest of the available
space. When the user resizes the browser the added or removed space will be taken from the
right block.
</para>
-<programlisting>~UWC_TOKEN_START~1255420331342~UWC_TOKEN_END~
+<programlisting role="HTML"><![CDATA[
| | |
| | |
-| |<--- fixed width --->| | will expand to right
----> |
+| |<--- fixed width --->| | will expand to right ----> |
| | |
| | |
| | |
----
-<div class="Parent">
- <div style="float: left; width: 100px">
- </div>
- <div style="margin-left: 105px;">
- <div>
- <div style="clear:
left"><span></span></div>
-</div>
-</programlisting>
+<div class="Parent">
+ <div style="float: left; width: 100px">
+ </div>
+ <div style="margin-left: 105px;">
+ <div>
+ <div style="clear: left"><span></span></div>
+</div>]]></programlisting>
</section>
-
+ </section>
+ </section>
<section
id="sect-Reference_Guide-Skin_Configuration-How_to_create_a_new_skin">
<title>How to create a new skin</title>
<para>
@@ -403,7 +370,7 @@
Finally, you have to definy the name of new skin and the image preview for the
<emphasis>Skin Settings</emphasis> action in <emphasis> "User
Workspace" </emphasis> <!-- <link linkend="User
Workspace">User Workspace</link> -->.
</para>
<para>
- By default, if you don not set new name for skin, its name is
<t>label></tt>. Looking in the file and add yout new
name here.
+ By default, if you don not set new name for skin, its name is
<literal>label></literal>. Looking in the file and add yout new name here.
</para>
<programlisting>
@@ -434,7 +401,7 @@
}
</programlisting>
<para>
- And now, you copy your image <literal>MyPortal.jpg</literal> (that you
definy above) to the folder
<literal>ressource/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/background</literal>
and test your new skin.
+ And now, you copy your image <literal>MyPortal.jpg</literal> (that you
defined above) to the folder
<literal>ressource/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/background</literal>
and test your new skin.
</para>
</section>
@@ -444,16 +411,12 @@
Firstly, you have to definy the new theme in
<literal>WEB-INF/conf/script/groovy/SkinConfigScript.groovy</literal> in your
<literal>Ressource</literal> (for example, in the project MyPortal, you can
put it in <literal>GateInResourcesCp060508</literal>).
</para>
-<programlisting>
-SkinService.addTheme("MyPortal-MacTheme",
["MacGray","MacBlue","MacBlack"]);
-</programlisting>
+<programlisting>SkinService.addTheme("MyPortal-MacTheme",
["MacGray","MacBlue","MacBlack"]);</programlisting>
<para>
Secondly, you put all your new theme into <literal>folder
skinyourSkin</literal> and create new file
<literal>Stylesheet.css</literal> here. In this file, you will import all
links to your CSS. For example in MyPortal project.
</para>
-<programlisting>
-@import url(MyPortalSkin/PortletThemes/Stylesheet.css) ;
-</programlisting>
+<programlisting>@import url(MyPortalSkin/PortletThemes/Stylesheet.css)
;</programlisting>
<para>
You can see here, in the
<literal>GateInResourcesCp060508/skin/MyPortalSkin/PortletThemes/Stylesheet.css</literal>,
you put all your CSS of new theme.
</para>
Deleted:
portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -1,99 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-<section id="sect-Reference_Guide-User_Workspace_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --> <title>User Workspace Configuration</title>
- <section
id="sect-Reference_Guide-User_Workspace_Configuration-Overview">
- <title>Overview</title>
- <para>
- The User Workspace is give privileged users access to administration actions. Please
refer to the <emphasis>"User Workspace"</emphasis> <!--
<link linkend="Portal:User Workspace">User Workspace Guide</link>
--> to know more details.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-User_Workspace_Configuration-Default_Configuration">
- <title>Default Configuration</title>
- <para>
- The default configuration defines two groups:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>:/platform/administrators</code> and
- </para>
- </listitem>
- <listitem>
- <para>
- <code>:/platform/organization/management/executive-board</code>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- anyone in these groups can access and use the User Workspace. The asterisk symbol
stands for "any membership type".
- </para>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
- user that wants to access the User Workspace he or she a member of at least one of
these groups with the appropriate membership.
- </para>
- </listitem>
- </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-User_Workspace_Configuration-Customize_the_Configuration">
- <title>Customize the Configuration</title>
- <para>
- If an administrator wants to allow someone to access the User Workspace, the admin can
add the user to one of these groups or he or she modifies the workspace access
configuration. This permission is set in the
<emphasis>portal-configuration.xml</emphasis> file.
- </para>
-
-<programlisting> <component>
- <key>org.exoplatform.portal.config.UserACL</key>
- <type>org.exoplatform.portal.config.UserACL</type>
- <init-params>
-...
-<value-param>
- <name>access.control.workspace</name>
- <description>groups with memberships that have the right to access
the User Control Workspace</description>
-
<value>*:/platform/administrators,*:/organization/management/executive-board</value>
-</value-param>
-</programlisting>
- <para>
- Modify the content of the <code>value</code> tag depending
on your needs. The configuration is taken into account after you restarted the application
server.
- </para>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
- info(" Remember to specify the groups in
<code>organization-configuration.xml</code>" )
- </para>
- </listitem>
- </orderedlist>
- </section>
-
- <section
id="sect-Reference_Guide-User_Workspace_Configuration-Related_links">
- <title>Related links</title>
- <para>
- Please refer to <emphasis>"User Workspace"</emphasis> <!--
<link linkend="Portal:User Workspace">User Workspace Guide</link>
--> to see the user workspace.
- </para>
- </section>
-
-</section>
-
-
Deleted:
portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml
===================================================================
---
portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml 2009-12-09
14:50:00 UTC (rev 981)
+++
portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml 2009-12-09
17:56:51 UTC (rev 982)
@@ -1,464 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-<section id="sect-Reference_Guide-Varnish_Configuration">
- <!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-
- --><title>Varnish Configuration</title>
- <section id="sect-Reference_Guide-Varnish_Configuration-Introduction">
- <title>Introduction</title>
- <para>
- This document is an overview of Varnish configuration for GateIn SEA Portal. It is
organized as follows:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Section one gives an introduction to Varnish software (version 1.1.2)
- </para>
- </listitem>
- <listitem>
- <para>
- Section two explains how to install it, we are using Linux kernel version 2.6.27.
- </para>
- </listitem>
- <listitem>
- <para>
- The third section gives a brief description of Varnish configuration files for
GateIn Portal
- </para>
- </listitem>
- <listitem>
- <para>
- Whereas the last one discusses some of the practical issues encountered during the
deployment of Varnish, the last section analyzes the speed gain by Varnish.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The configuration given below is more convenient for static content such as images,
css ,javascript and html files. By this way after modifying an object belonging to static
content you must refresh the varnish cache. To do this, first off all, connect to varnish
administration port, it can easily be done this way: <emphasis>telnet localhost
6083</emphasis> ( <emphasis
role="bold">Note:</emphasis><emphasis>this command should be
typed on the machine where Varnish is installed</emphasis> ). And then write the
following in the command line. <emphasis>url.purge ^/$</emphasis> This purge
your <emphasis>/</emphasis> document. As you can see that
<emphasis>url.purge</emphasis> takes an regular expression as its argument.
Hence the <emphasis>^</emphasis> and <emphasis>$</emphasis> at the
front and end. If the <emphasis>^</emphasis> is omitted, all the documents
ending in a <emphasis>/</emphasis> in the cache would be deleted. So to delete
all the documents in the cache, type in!
the command line.
- </para>
- </section>
-
- <section id="sect-Reference_Guide-Varnish_Configuration-Overview">
- <title>Overview</title>
- <para>
- Varnish is a HTTP/web accelerator, it was written from the beginning to be a
high-performance open source reverse proxy caching implementation. Varnish, like other
caching reverse HTTP proxy implementations, is most frequently used to alleviate/reduce
origin web servers of undue load, giving you the ability to handle a higher number of
concurrent hits.
- </para>
- <para>
- Nowadays, more and more web sites present dynamic web pages consisting of a number of
different elements. Combining these elements is both time consuming and CPU intensive. The
bad news is that the same process is repeated for every individual user, even when the
content is identical. Fortunately in such a case a solution like Varnish can help to
improve web server performance. How can Varnish accomplish this? Varnish temporarily
stores the most frequently requested pages in its cache. It is more effective to present
these pages from the Varnish cache. Therefore, users are offered an improved service, and
Content/Document Management System server requirements are reduced.
- </para>
- <para>
- Why are we using Varnish? In contrast with other HTTP accelerators, many of which
began life as client-side proxies or origin servers, Varnish was designed from the scratch
as an accelerator for incoming traffic. In addition, Varnish via his DSL (Domain Specific
Language) is very flexible. In fact, this way, it provides users not only with a means of
modifying and rewriting client requests or in certain cases server responses. But Varnish
also enable the user to load multiple configurations concurrently. So users can
instantaneously switch from one VCL (Varnish Configuration Language) to another. It is not
all, Varnish TTL (Time to Live) parameter enables users to decide how long an object
should be cached.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Varnish_Configuration-Installation_of_Varnish">
- <title>Installation of Varnish</title>
- <para>
- Stuff Goes Here?
- </para>
- </section>
-
- <section id="sect-Reference_Guide-Varnish_Configuration-Prerequisite">
- <title>Prerequisite</title>
- <para>
- Before building Varnish, make sure that the following tools are installed :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- GCC compiler
- </para>
- </listitem>
- <listitem>
- <para>
- A POSIX-compatible make
- </para>
- </listitem>
- <listitem>
- <para>
- GNU autotools (automake, autoconf, libtool, ncurses)
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Varnish_Configuration-Installation">
- <title>Installation</title>
- <para>
- If you are using a system with a graphical user interface, installation of Varnish
1.1.2 is quite easy via synaptic package manager. If not, you can run in a terminal by the
following command to install Varnish on your computer:
- </para>
-
-<programlisting>sudo apt-get install varnish
-</programlisting>
- <para>
- You can also install Varnish from source, see the following web site for more
information:
- </para>
- <para>
- <ulink type="http"
url="http://varnish.projects.linpro.no">http://varnish.projects.linpro.no</ulink>.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Varnish_Configuration-Varnish_configuration_for_GateIn_Portal">
- <title>Varnish configuration for GateIn Portal</title>
- <para>
- Varnish uses Varnish Configuration Language (VCL). The VCL language is a small
domain-specific language designed to be used to define request handling and document
caching policies for the Varnish HTTP accelerator. When a new configuration is loaded, the
varnished management process translates the VCL code to C and compiles it to a shared
object which is then dynamically linked into the server process.
- </para>
- <para>
- Installation of Varnish automatically create two files named default.vcl and varnish
in the repositories <emphasis>/etc/varnish/</emphasis> and
<emphasis>/etc/default</emphasis> respectively. One is VCL and another one
contains values that will be passed as parameters to
<emphasis>varnished</emphasis> . We will not make use of the first one, that
is default.vcl. Create a new file named vcl.conf in /etc/varnish with the following
contents:
- </para>
- <para>
- Backend declaration, here we need to specify the web server host name and the
listening http port.
- </para>
-
-<programlisting>backend default {
- set backend.host = "127.0.0.1";
- set backend.port = "8080";
-}
-#
-## Called when a client request is received
-#
-sub vcl_recv {
- if (req.url ~ "^/$") {
- set req.url = regsub(req.url,"^/$","/portal");
- set req.http.Accept-Language = "vi";
- }
- if (req.url ~ ".*vnwebsite.*"){
- set req.http.Accept-Language = "vi";
- } else {
- set req.http.Accept-Language = "en";
- }
- if (req.request!images/= "GET" && req.request!images/ =
"HEAD") {
- pipe;
- }
- if (req.http.Expect) {
- pipe;
- }
- if (req.request == "GET" && req.url ~
"\.(jpg|jpeg|gif|ico|tiff|tif|svg|css|js|html)$") {
- set req.url = regsub(req.url, "\?.*", "");
- remove req.http.cookie;
- remove req.http.authenticate;
- lookup;
- }
- if (req.http.Authenticate || req.http.Authorization) {
- pass;
- }
- if (req.http.Cache-Control ~ "no-cache") {
- set req.http.Cache-Control = regsub(req.http.Cache-Control,
"no-cache", "set-cookie2");
- }
- # force lookup even when cookies are present
- if (req.request == "GET" && req.http.cookie) {
- lookup;
- }
- lookup;
-}
-</programlisting>
- <para>
- In order to specify the default language for each web site, that is Vietnamese (vi)
for vnwebsite and English (en) for enwebsite; the following statement <emphasis>set
req.http.Accept-Language = "language code"</emphasis> is useful.
- </para>
-
-<programlisting>#
-## Called when entering pipe mode
-#
-sub vcl_pipe {
- pipe;
-}
-#
-## Called when entering pass mode
-#
-sub vcl_pass {
- pass;
-}
-#
-## Called when the requested object was found in the cache
-#
-sub vcl_hit {
- if (req.url ~ ".*vnwebsite.*"){
- set req.http.Accept-Language = "vi";
- } else {
- set req.http.Accept-Language = "en";
- }
- deliver;
-}
-## Called when the requested object has been retrieved from the
-## backend, or the request to the backend has failed
-sub vcl_fetch {
- if (!obj.valid) {
- error;
- }
- if (req.url ~ ".*vnwebsite.*"){
- set req.http.Accept-Language = "vi";
- } else {
- set req.http.Accept-Language = "en";
- }
- if (req.http.Cache-Control ~ "no-cache") {
- set req.http.Cache-Control = regsub(req.http.Cache-Control,
"no-cache", "set-cookie2");
- }
- if(obj.cacheable){
- remove req.http.Set-Cookie;
- set obj.http.Cache-Control = "no-cache";
- remove obj.http.Etag;
- if(obj.ttl < 7d){
- set obj.ttl = 7d;
- }
- insert;
- }
- insert;
-}
-</programlisting>
- <para>
- If the cookie is intended for use by a single user, the Set-Cookie2 header
<emphasis>should not</emphasis> be cached. A Set-Cookie2 header that is
intended to be shared by multiple users <emphasis
role="bold">may</emphasis> be cached.
- </para>
- <note>
- <title>Note</title>
- <para>
- Since <emphasis role="bold">Etag</emphasis> (entity tag) in an
HTTP response header that may be returned by an HTTP/1.1 compliant web server is used by
the user-agent to determine change in content at a given URL. It is removed in order to
instruct the user-agent that there is no change in content of cacheable objects. In fact,
when a new HTTP response contains the same ETag as an older HTTP response, the client can
conclude that the content is the same without further downloading.
- </para>
- </note>
-
-<programlisting>## Called before a cached object is delivered to the client
-sub vcl_deliver {
- deliver;
-}
-## Called when an object nears its expiry time
-sub vcl_timeout {
- discard;
-}
-## Called when an object is about to be discarded
-sub vcl_discard {
- discard;
-}
-</programlisting>
- <para>
- This configuration tells Varnish to always cache all cacheable objects and don't
invalidate them for at least one week.
- </para>
- <para>
- Then modify the file <emphasis>/etc/default/varnish</emphasis> and make
yourself sure that its content is not too different to this one, particularly the
DAEMONOPTS part. Note that we are using the advanced configuration, that is alternative
3.
- </para>
-
-<programlisting># Configuration file for varnish
-#
-# /etc/init.d/varnish expects the variable $DAEMON_OPTS to be set from this
-# shell script fragment.
-#
-# Maximum number of open files (for ulimit -n)
-NFILES=131072
-# Default varnish instance name is the local nodename. Can be overridden with
-# the -n switch, to have more instances on a single server.
-INSTANCE=$(uname -n)
-## Alternative 3, Advanced configuration
-## We choose advance configuration
-#
-# See varnishd(1) for more information.
-#
-# # Main configuration file. You probably want to change it :)
-VARNISH_VCL_CONF=/etc/varnish/default.vcl
-#
-# # Default address and port to bind to
-# # Blank address means all IPv4 and IPv6 interfaces, otherwise specify
-# # a host name, an IPv4 dotted quad, or an IPv6 address in brackets.
-VARNISH_LISTEN_ADDRESS=0.0.0.0
-VARNISH_LISTEN_PORT=80
-#
-# # Telnet admin interface listen address and port
-VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
-VARNISH_ADMIN_LISTEN_PORT=6082
-#
-# # The minimum number of worker threads to start
-VARNISH_MIN_THREADS=1
-#
-# # The Maximum number of worker threads to start
-VARNISH_MAX_THREADS=2048
-#
-# # Idle timeout for worker threads
-VARNISH_THREAD_TIMEOUT=120
-#
-# # Cache file location
-VARNISH_STORAGE_FILE=/var/lib/varnish/$INSTANCE/varnish_storage.bin
-#
-# # Cache file size: in bytes, optionally using k / M / G / T suffix,
-# # or in percentage of available disk space using the % suffix.
-VARNISH_STORAGE_SIZE=5G
-#
-# # Backend storage specification
-VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
-#
-# # Default TTL used when the backend does not specify one
-VARNISH_TTL=7d
-#
-# # DAEMON_OPTS is used by the init script. If you add or remove options, make
-# # sure you update this section, too.
-DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
- -f ${VARNISH_VCL_CONF} \
- -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
- -t ${VARNISH_TTL} \
- -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
- -s ${VARNISH_STORAGE}"
-</programlisting>
- </section>
-
- <section
id="sect-Reference_Guide-Varnish_Configuration-How_fast_is_Varnish">
- <title>How fast is Varnish?</title>
- <para>
- When using an HTTP accelerator, it is important to know whether our web server
performance has improved or not. Thus, this section shows the performance gained by the
use of Varnish.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Varnish_Configuration-Varnish_testbed_configuration">
- <title>Varnish testbed configuration</title>
- <para>
- Our Varnish testbed consists of a desktop PC acting as a web server (WS), and 10
PC-based Linux acting as clients stations. The system hardware configuration is summarized
in the following table. All machines except the WS use a Linux 2.6.27 kernel. The
user-agent used on client stations is <emphasis
role="bold">wget</emphasis>
- </para>
- <para>
- The following table is the testbed summary:
- </para>
- <informaltable colsep="0" frame="none" rowsep="0">
- <tgroup cols="3">
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <tbody>
- <row>
- <entry>
- <emphasis role="bold"> Hardware </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Processor </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Frequency </emphasis>
- </entry>
- </row>
- <row>
- <entry>
- One x (WS)
- </entry>
- <entry>
- Intel(R) Pentium(R) 4
- </entry>
- <entry>
- 3.00GHz
- </entry>
- </row>
- <row>
- <entry>
- Two x (PC)
- </entry>
- <entry>
- Intel(R) Core(TM)2 Duo
- </entry>
- <entry>
- 2.00GHz
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- <para>
- It is well known that performance of a software like varnish depends on part on the
communication link between server host and client stations. So, without loss of
generality, we assume that our wireless connection is fair.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Varnish_Configuration-Varnish_analyzes_method">
- <title>Varnish analyzes method</title>
- <para>
- In other to evaluate Vanish performance, we first access all pages of our web site
through Varnish to ensure that all cacheable objects can be found in Varnish cache. It
takes in average 6.9s. Then we simultaneously send 100 download requests from each of our
2 client stations to the web server using wget user-agent through Varnish. After this
operation, we evaluate the average time required by each client station to perform a
download request. The same process is done without using Varnish. We then compare the
obtained results.
- </para>
- </section>
-
- <section
id="sect-Reference_Guide-Varnish_Configuration-Varnish_performance_analyzes">
- <title>Varnish performance analyzes</title>
- <para>
- This part discuss about Varnish performance in term of time of response. That is the
time that a given client should wait to get the requested object (or the server response).
In this case the requested object is our entire web site. The collected measurements are
summarized in the below table:
- </para>
- <informaltable colsep="0" frame="none" rowsep="0">
- <tgroup cols="5">
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <tbody>
- <row>
- <entry>
- <emphasis role="bold"> Host </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Average waiting time using Varnish as
reverse proxy </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Average waiting time without use of Varnish
</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Number of trials </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Data size </emphasis>
- </entry>
- </row>
- <row>
- <entry>
- First
- </entry>
- <entry>
- 02. 791070
- </entry>
- <entry>
- 26.889563
- </entry>
- <entry>
- 100
- </entry>
- <entry>
- 104 files, 1.4M
- </entry>
- </row>
- <row>
- <entry>
- Second
- </entry>
- <entry>
- 02.708190
- </entry>
- <entry>
- 26. 378669
- </entry>
- <entry>
- 100
- </entry>
- <entry>
- 104 files, 1.4M
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- <note>
- <title>Note</title>
- <para>
- All times above are in second, these times include the time needed by the client to
connect to the server.
- </para>
- </note>
- <para>
- Measurements listed above obviously shows that our web server performance are
considerably improved by the use of Varnish software. In average per user request, we gain
from Varnish 24 (twenty-four) seconds. That is using Varnish, user requests are at least
10 times faster than previously (without Varnish).
- </para>
- </section>
-
-</section>
-
-