gatein SVN: r877 - in portal/trunk/docs: reference-guide and 9 other directories.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-11-30 16:17:17 -0500 (Mon, 30 Nov 2009)
New Revision: 877
Added:
portal/trunk/docs/user-guide/en/modules/Further_Documentation.xml
Removed:
portal/trunk/docs/user-guide/en/images/A.png
portal/trunk/docs/user-guide/en/images/AAANavigation.png
portal/trunk/docs/user-guide/en/images/Abort.png
portal/trunk/docs/user-guide/en/images/Access1.png
portal/trunk/docs/user-guide/en/images/AccountProfiles.png
portal/trunk/docs/user-guide/en/images/AccountProfiles1.png
portal/trunk/docs/user-guide/en/images/AddCategory.png
portal/trunk/docs/user-guide/en/images/AddGadget.png
portal/trunk/docs/user-guide/en/images/AddGadget1.png
portal/trunk/docs/user-guide/en/images/AddGadget2.png
portal/trunk/docs/user-guide/en/images/AddGadget3.png
portal/trunk/docs/user-guide/en/images/AddGadget4.png
portal/trunk/docs/user-guide/en/images/AddGadget5.png
portal/trunk/docs/user-guide/en/images/AddIcon.png
portal/trunk/docs/user-guide/en/images/AddIcon1.png
portal/trunk/docs/user-guide/en/images/AddMember.png
portal/trunk/docs/user-guide/en/images/AddNode.png
portal/trunk/docs/user-guide/en/images/AddPortalButton.png
portal/trunk/docs/user-guide/en/images/Administration2.png
portal/trunk/docs/user-guide/en/images/Administrator2.6.png
portal/trunk/docs/user-guide/en/images/ArrowIcon.png
portal/trunk/docs/user-guide/en/images/Auto1.png
portal/trunk/docs/user-guide/en/images/AutoImport.png
portal/trunk/docs/user-guide/en/images/Back.png
portal/trunk/docs/user-guide/en/images/BannerPortlet.png
portal/trunk/docs/user-guide/en/images/Breadcumbs.png
portal/trunk/docs/user-guide/en/images/ChangeLanguage1.png
portal/trunk/docs/user-guide/en/images/ChangeLanguage3.png
portal/trunk/docs/user-guide/en/images/CheckIcon.png
portal/trunk/docs/user-guide/en/images/ComboBox.png
portal/trunk/docs/user-guide/en/images/Console.png
portal/trunk/docs/user-guide/en/images/CopyNode1.png
portal/trunk/docs/user-guide/en/images/CopyNode2.png
portal/trunk/docs/user-guide/en/images/CreationWizard.png
portal/trunk/docs/user-guide/en/images/Dashboad1.png
portal/trunk/docs/user-guide/en/images/Dashboard.png
portal/trunk/docs/user-guide/en/images/Dashboard2.png
portal/trunk/docs/user-guide/en/images/DashboardPortlet1.png
portal/trunk/docs/user-guide/en/images/DeleIcon.png
portal/trunk/docs/user-guide/en/images/DeleteGadget.png
portal/trunk/docs/user-guide/en/images/DeleteIcon.png
portal/trunk/docs/user-guide/en/images/DeletePortal2.6.png
portal/trunk/docs/user-guide/en/images/DiskIcon.png
portal/trunk/docs/user-guide/en/images/DownIcon.png
portal/trunk/docs/user-guide/en/images/EditGadget.png
portal/trunk/docs/user-guide/en/images/EditIcon.png
portal/trunk/docs/user-guide/en/images/EditIcon1.png
portal/trunk/docs/user-guide/en/images/EditImportedOnline.png
portal/trunk/docs/user-guide/en/images/EditImportedWebDAV.png
portal/trunk/docs/user-guide/en/images/EditLayoutPortal.png
portal/trunk/docs/user-guide/en/images/EditNavigationPortal.png
portal/trunk/docs/user-guide/en/images/EditPage.png
portal/trunk/docs/user-guide/en/images/EditPermission.png
portal/trunk/docs/user-guide/en/images/EditPermission2.6.png
portal/trunk/docs/user-guide/en/images/EditPropertiesPortal.png
portal/trunk/docs/user-guide/en/images/Finish.png
portal/trunk/docs/user-guide/en/images/Finish1.png
portal/trunk/docs/user-guide/en/images/FinishIcon.png
portal/trunk/docs/user-guide/en/images/Footer.png
portal/trunk/docs/user-guide/en/images/French.png
portal/trunk/docs/user-guide/en/images/FunctionBar.png
portal/trunk/docs/user-guide/en/images/Gadget1.png
portal/trunk/docs/user-guide/en/images/Gadget2.png
portal/trunk/docs/user-guide/en/images/GlassIcon.png
portal/trunk/docs/user-guide/en/images/GroupPath.png
portal/trunk/docs/user-guide/en/images/HomepagePortal.png
portal/trunk/docs/user-guide/en/images/IFrame.png
portal/trunk/docs/user-guide/en/images/Import.png
portal/trunk/docs/user-guide/en/images/Imported.png
portal/trunk/docs/user-guide/en/images/Internal1.png
portal/trunk/docs/user-guide/en/images/LinkIcon.png
portal/trunk/docs/user-guide/en/images/ListIcon.png
portal/trunk/docs/user-guide/en/images/Liste.png
portal/trunk/docs/user-guide/en/images/MagnifyIcon.png
portal/trunk/docs/user-guide/en/images/ManagePage1.png
portal/trunk/docs/user-guide/en/images/ManagePages.png
portal/trunk/docs/user-guide/en/images/ManagePortal.png
portal/trunk/docs/user-guide/en/images/ManagePortal2.6.png
portal/trunk/docs/user-guide/en/images/MarkIcon.png
portal/trunk/docs/user-guide/en/images/MarkedIcon.png
portal/trunk/docs/user-guide/en/images/MembershipManagement.png
portal/trunk/docs/user-guide/en/images/NavigationPortlet.png
portal/trunk/docs/user-guide/en/images/New.png
portal/trunk/docs/user-guide/en/images/NewGlassIcon.png
portal/trunk/docs/user-guide/en/images/NewOkIcon.png
portal/trunk/docs/user-guide/en/images/OKIcon.png
portal/trunk/docs/user-guide/en/images/OkButton.png
portal/trunk/docs/user-guide/en/images/OpenUserWorkspace1.png
portal/trunk/docs/user-guide/en/images/PageCreation.png
portal/trunk/docs/user-guide/en/images/PageNavigation.png
portal/trunk/docs/user-guide/en/images/PageNodeSetting1.png
portal/trunk/docs/user-guide/en/images/PageSelector2.png
portal/trunk/docs/user-guide/en/images/PasteCloneNode.png
portal/trunk/docs/user-guide/en/images/PasteCutNode3.png
portal/trunk/docs/user-guide/en/images/PasteNode.png
portal/trunk/docs/user-guide/en/images/PermissionSetting.png
portal/trunk/docs/user-guide/en/images/PlusIcon.png
portal/trunk/docs/user-guide/en/images/PortalLogin.png
portal/trunk/docs/user-guide/en/images/PortalLogo.png
portal/trunk/docs/user-guide/en/images/PortalName.png
portal/trunk/docs/user-guide/en/images/PortalProperties.png
portal/trunk/docs/user-guide/en/images/PortalSetting.png
portal/trunk/docs/user-guide/en/images/PortalTemplate.png
portal/trunk/docs/user-guide/en/images/PortalTemplate2.5.png
portal/trunk/docs/user-guide/en/images/PortletHome2.png
portal/trunk/docs/user-guide/en/images/PotalTemplate.png
portal/trunk/docs/user-guide/en/images/PreviewPage.png
portal/trunk/docs/user-guide/en/images/RSS.png
portal/trunk/docs/user-guide/en/images/Refresh.png
portal/trunk/docs/user-guide/en/images/RefreshIcon.png
portal/trunk/docs/user-guide/en/images/RemoveIcon.png
portal/trunk/docs/user-guide/en/images/Resource.png
portal/trunk/docs/user-guide/en/images/ResourceData.png
portal/trunk/docs/user-guide/en/images/RollBack.png
portal/trunk/docs/user-guide/en/images/SavePage.png
portal/trunk/docs/user-guide/en/images/Search1.png
portal/trunk/docs/user-guide/en/images/Search2.png
portal/trunk/docs/user-guide/en/images/SearchIcon.png
portal/trunk/docs/user-guide/en/images/SelectPortal1.png
portal/trunk/docs/user-guide/en/images/SelectUser4.png
portal/trunk/docs/user-guide/en/images/SelectUser5.png
portal/trunk/docs/user-guide/en/images/SelectUsernew1.png
portal/trunk/docs/user-guide/en/images/SetPortlet.png
portal/trunk/docs/user-guide/en/images/ShowContainer.png
portal/trunk/docs/user-guide/en/images/ShowPortlet.png
portal/trunk/docs/user-guide/en/images/SiteMap3.png
portal/trunk/docs/user-guide/en/images/StarPortlet.png
portal/trunk/docs/user-guide/en/images/String.png
portal/trunk/docs/user-guide/en/images/Switch.png
portal/trunk/docs/user-guide/en/images/Tool.png
portal/trunk/docs/user-guide/en/images/URL.png
portal/trunk/docs/user-guide/en/images/UpIcon.png
portal/trunk/docs/user-guide/en/images/UserToolbar.png
portal/trunk/docs/user-guide/en/images/View.png
portal/trunk/docs/user-guide/en/images/Workspace.png
portal/trunk/docs/user-guide/en/images/app-registry-01.png
portal/trunk/docs/user-guide/en/images/archisolutionapache.jpg
portal/trunk/docs/user-guide/en/images/exo-menu.png
portal/trunk/docs/user-guide/en/images/image3.jpg
portal/trunk/docs/user-guide/en/images/key1.png
portal/trunk/docs/user-guide/en/images/mainscreen.png
portal/trunk/docs/user-guide/en/images/number.png
portal/trunk/docs/user-guide/en/images/portal-change-skin.png
portal/trunk/docs/user-guide/en/images/portal.gif
portal/trunk/docs/user-guide/en/images/portal.png
portal/trunk/docs/user-guide/en/images/preview.png
portal/trunk/docs/user-guide/en/modules/Configuration.xml
portal/trunk/docs/user-guide/en/modules/Configure_Portal_Default_Persmissions.xml
portal/trunk/docs/user-guide/en/modules/Development.xml
portal/trunk/docs/user-guide/en/modules/Gadgets.xml
portal/trunk/docs/user-guide/en/modules/Portlets.xml
portal/trunk/docs/user-guide/en/modules/SSO.xml
portal/trunk/docs/user-guide/en/modules/Security.xml
portal/trunk/docs/user-guide/en/modules/_archive/
portal/trunk/docs/user-guide/en/modules/_orphans/
portal/trunk/docs/user-guide/en/modules/configuration/
portal/trunk/docs/user-guide/en/modules/development/
portal/trunk/docs/user-guide/en/modules/gadgets/
portal/trunk/docs/user-guide/en/modules/portlets/
portal/trunk/docs/user-guide/en/modules/security/
Modified:
portal/trunk/docs/pom.xml
portal/trunk/docs/reference-guide/
portal/trunk/docs/user-guide/en/master.xml
portal/trunk/docs/user-guide/en/modules/Account.xml
portal/trunk/docs/user-guide/en/modules/GadgetsAdmin.xml
portal/trunk/docs/user-guide/en/modules/Introduction.xml
portal/trunk/docs/user-guide/en/modules/Language.xml
portal/trunk/docs/user-guide/en/modules/Portal.xml
portal/trunk/docs/user-guide/en/modules/PortletsUser.xml
portal/trunk/docs/user-guide/en/modules/Terms.xml
portal/trunk/docs/user-guide/en/modules/account/Account_and_Password_Retrieval.xml
portal/trunk/docs/user-guide/en/modules/account/Change_Account_Settings.xml
portal/trunk/docs/user-guide/en/modules/account/Change_User_Password.xml
portal/trunk/docs/user-guide/en/modules/account/Register_New_Accounts.xml
portal/trunk/docs/user-guide/en/modules/account/Remember_User_Account.xml
portal/trunk/docs/user-guide/en/modules/account/Sign_in_and_Sign_out.xml
portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Import_Portlets_and_Gadgets.xml
portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Gadgets_in_User_Workspace.xml
portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Portlets_and_Gadgets.xml
portal/trunk/docs/user-guide/en/modules/language/Change_Interface_Language.xml
portal/trunk/docs/user-guide/en/modules/language/Internationalization_Portlet.xml
portal/trunk/docs/user-guide/en/modules/language/Multi-Language_Navigation_Nodes.xml
portal/trunk/docs/user-guide/en/modules/language/Right_To_Left_Support_(RTL).xml
portal/trunk/docs/user-guide/en/modules/portal/Change_Node_Order.xml
portal/trunk/docs/user-guide/en/modules/portal/Change_Portal_Skins.xml
portal/trunk/docs/user-guide/en/modules/portal/Create_a_New_Portal.xml
portal/trunk/docs/user-guide/en/modules/portal/Drag_and_Drop_the_Page_Body.xml
portal/trunk/docs/user-guide/en/modules/portal/Manage_Navigation_Nodes.xml
portal/trunk/docs/user-guide/en/modules/portal/Manage_Page_Navigation.xml
portal/trunk/docs/user-guide/en/modules/portal/Manage_Pages.xml
portal/trunk/docs/user-guide/en/modules/portal/Manage_Permission.xml
portal/trunk/docs/user-guide/en/modules/portal/Manage_Portals.xml
portal/trunk/docs/user-guide/en/modules/portal/Page_Creation_Wizard.xml
portal/trunk/docs/user-guide/en/modules/portal/Switching_between_Portals.xml
portal/trunk/docs/user-guide/en/modules/portal/Toolbar.xml
portal/trunk/docs/user-guide/en/modules/portal/User_Management.xml
portal/trunk/docs/user-guide/en/modules/portletsUser/Dashboard_Portlet.xml
portal/trunk/docs/user-guide/en/modules/portletsUser/FCK_Portlet.xml
portal/trunk/docs/user-guide/en/modules/portletsUser/Functional_Portlets.xml
portal/trunk/docs/user-guide/en/modules/portletsUser/Interface_Portlets.xml
portal/trunk/docs/user-guide/en/modules/terms/Gadget_concept.xml
portal/trunk/docs/user-guide/en/modules/terms/Navigation_concept.xml
portal/trunk/docs/user-guide/en/modules/terms/Permission_levels.xml
portal/trunk/docs/user-guide/en/modules/terms/Portal_concept.xml
portal/trunk/docs/user-guide/en/modules/terms/Portlet_concept.xml
portal/trunk/docs/user-guide/en/modules/terms/Public_mode_and_Private_mode.xml
portal/trunk/docs/user-guide/en/modules/terms/Toolbar_concept.xml
Log:
Modifying user guide
Modified: portal/trunk/docs/pom.xml
===================================================================
--- portal/trunk/docs/pom.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/pom.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -31,6 +31,7 @@
<modules>
<module>user-guide</module>
+ <module>reference-guide</module>
</modules>
</project>
Property changes on: portal/trunk/docs/reference-guide
___________________________________________________________________
Name: svn:ignore
+ target
Deleted: portal/trunk/docs/user-guide/en/images/A.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AAANavigation.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Abort.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Access1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AccountProfiles.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AccountProfiles1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddCategory.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddGadget.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddGadget1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddGadget2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddGadget3.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddGadget4.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddGadget5.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddIcon1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddMember.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddNode.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AddPortalButton.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Administration2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Administrator2.6.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ArrowIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Auto1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/AutoImport.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Back.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/BannerPortlet.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Breadcumbs.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ChangeLanguage1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ChangeLanguage3.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/CheckIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ComboBox.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Console.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/CopyNode1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/CopyNode2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/CreationWizard.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Dashboad1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Dashboard.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Dashboard2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DashboardPortlet1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DeleIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DeleteGadget.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DeleteIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DeletePortal2.6.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DiskIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/DownIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditGadget.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditIcon1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditImportedOnline.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditImportedWebDAV.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditLayoutPortal.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditNavigationPortal.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditPage.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditPermission.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditPermission2.6.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/EditPropertiesPortal.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Finish.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Finish1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/FinishIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Footer.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/French.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/FunctionBar.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Gadget1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Gadget2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/GlassIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/GroupPath.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/HomepagePortal.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/IFrame.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Import.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Imported.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Internal1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/LinkIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ListIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Liste.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/MagnifyIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ManagePage1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ManagePages.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ManagePortal.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ManagePortal2.6.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/MarkIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/MarkedIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/MembershipManagement.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/NavigationPortlet.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/New.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/NewGlassIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/NewOkIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/OKIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/OkButton.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/OpenUserWorkspace1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PageCreation.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PageNavigation.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PageNodeSetting1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PageSelector2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PasteCloneNode.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PasteCutNode3.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PasteNode.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PermissionSetting.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PlusIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalLogin.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalLogo.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalName.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalProperties.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalSetting.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalTemplate.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortalTemplate2.5.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PortletHome2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PotalTemplate.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/PreviewPage.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/RSS.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Refresh.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/RefreshIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/RemoveIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Resource.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ResourceData.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/RollBack.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SavePage.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Search1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Search2.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SearchIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SelectPortal1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SelectUser4.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SelectUser5.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SelectUsernew1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SetPortlet.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ShowContainer.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/ShowPortlet.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/SiteMap3.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/StarPortlet.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/String.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Switch.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Tool.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/URL.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/UpIcon.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/UserToolbar.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/View.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/Workspace.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/app-registry-01.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/archisolutionapache.jpg
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/exo-menu.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/image3.jpg
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/key1.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/mainscreen.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/number.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/portal-change-skin.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/portal.gif
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/portal.png
===================================================================
(Binary files differ)
Deleted: portal/trunk/docs/user-guide/en/images/preview.png
===================================================================
(Binary files differ)
Modified: portal/trunk/docs/user-guide/en/master.xml
===================================================================
--- portal/trunk/docs/user-guide/en/master.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/master.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -68,80 +68,13 @@
<!-- GadgetsAdmin -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/GadgetsAdmin.xml" />
-
- <!-- 4_Configuration -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Configuration.xml" />
-
-
- <!-- 5_Security -->
-
- <!-- Core/Security_Service -->
<!--
- Outdated <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/Security.xml" />
- -->
-
- <!-- 6_Integration -->
-
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Integration.xml" />
-
-
- <!-- 8_Migration -->
- <!--
- Archived <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/Migration_from_2-1_to_2-2.xml" /> <xi:include
- xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/Migration_from_2-2_to_2-5.xml" /> <xi:include
- xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/Export-Import_Portal_Configuration.xml" />
- -->
-
- <!-- 9_Technical_Foundations -->
-
- <!-- Main/Overall_Architecture -->
- <!-- Kernel/Inversion_of_Control -->
- <!-- Portlet_Container -->
- <!-- Java_Content_Repository -->
- <!-- Web_Services -->
- <!-- GateIn_Core -->
- <!-- GateIn_Kernel -->
-
- <!-- 10_Development_ -->
-
- <!-- Main/Developers -->
- <!-- http://docs.exoplatform.org -->
- <!-- Products_Tech_Overview/Components_Registry -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Development.xml" />
-
- <!-- Portlets -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Portlets.xml" />
-
- <!-- Gadgets -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Gadgets.xml" />
-
- <!-- Single Sign On -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/SSO.xml" />
-
-
- <!--
11_Support
http://www.exoplatform.com/portal/public/en/forum?portal:componentId=foru...
http://faq.exoplatform.com/ http://jira.exoplatform.org/browse/Portal
-->
- <!-- Orphan from XWiki site -->
- <chapter>
- <title>Orphans chapters: TODO: move and integrate those</title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/_orphans/Setup_GadgetServer.xml" />
- <!--
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/_orphans/Internationalization_Guidelines.xml" />
- -->
- </chapter>
-
-
<!--
Deprecated <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="modules/Advanced_User_Guide.xml" /> <xi:include
Modified: portal/trunk/docs/user-guide/en/modules/Account.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Account.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Account.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Account">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,17 +21,12 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Account</title>
+ <xi:include href="account/Register_New_Accounts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="account/Change_User_Password.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="account/Change_Account_Settings.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="account/Sign_in_and_Sign_out.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="account/Account_and_Password_Retrieval.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="account/Remember_User_Account.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Account</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="account/Register_New_Accounts.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="account/Change_User_Password.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="account/Change_Account_Settings.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="account/Sign_in_and_Sign_out.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="account/Account_and_Password_Retrieval.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="account/Remember_User_Account.xml" />
-
-</chapter>
\ No newline at end of file
Deleted: portal/trunk/docs/user-guide/en/modules/Configuration.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Configuration.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Configuration.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,45 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Configuration</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/IDM_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Default_Portal_Configuration.xml" />
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Portal_Navigation_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Predefined_User_Configuration.xml" />
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/User_Workspace_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Portal_Default_Permission_Configuration.xml" />
-<!-- Kernel/Service_Configuration_for_Beginners -->
-<!-- Kernel/Service_Configuration_in_Detail -->
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Database_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Data_Injector_Configuration.xml" />
-<!-- Core/LDAP_Configuration -->
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Skin_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/JavaScript_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Dashboard_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Authentication_Token_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="configuration/Varnish_Configuration.xml" />
-
-</chapter>
\ No newline at end of file
Deleted: portal/trunk/docs/user-guide/en/modules/Configure_Portal_Default_Persmissions.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Configure_Portal_Default_Persmissions.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Configure_Portal_Default_Persmissions.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,79 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter><title>Configure Portal Default Permissions</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><emphasis role="bold">super.user</emphasis>: The super user has all the rights on the platform, by default this user is called root</listitem></itemizedlist><itemizedlist><listitem><emphasis role="bold">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".</listitem></itemizedlist><itemizedlist><listitem><emphasis role="bold">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 navi!
gation.</listitem></itemizedlist><itemizedlist><listitem><emphasis role="bold">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.</listitem></itemizedlist><itemizedlist><listitem><emphasis role="bold">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.</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>
-
- <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><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>
-</chapter>
\ No newline at end of file
Deleted: portal/trunk/docs/user-guide/en/modules/Development.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Development.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Development.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,36 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Development</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Portal_Lifecycle.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Right_To_Left_Framework.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Internationalization_Configuration.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/XML_Resource_Bundles.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Dynamic_Layouts.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/JavaScript_Inter_Application_Communication.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Upload_Component.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Ajax_Loading_Mask_Layer_Deactivation.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="development/Accessing_User_Profile.xml" />
-
-</chapter>
\ No newline at end of file
Added: portal/trunk/docs/user-guide/en/modules/Further_Documentation.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Further_Documentation.xml (rev 0)
+++ portal/trunk/docs/user-guide/en/modules/Further_Documentation.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -0,0 +1,31 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Further_Documentation">
+ <!--
+
+ 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>Futher Documentation</title>
+
+ <para>
+ Further documentation about using and configuring the GateIn Portal can be found in the GateIn Portal Install Guide or the GateIn Portal Reference Guide which are hosted at <ulink type="http" url="www.redhat.com/docs">www.redhat.com/docs</ulink>.
+ </para>
+
+</chapter>
+
Deleted: portal/trunk/docs/user-guide/en/modules/Gadgets.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Gadgets.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Gadgets.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,29 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Gadget development</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gadgets/Gadgets.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gadgets/Setup_a_Gadget_Server.xml" />
-
-</chapter>
\ No newline at end of file
Modified: portal/trunk/docs/user-guide/en/modules/GadgetsAdmin.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/GadgetsAdmin.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/GadgetsAdmin.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Gadgets_Administration">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,14 +21,9 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Gadgets Administration</title>
+ <xi:include href="gadgetsAdmin/Manage_Gadgets_in_User_Workspace.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="gadgetsAdmin/Import_Portlets_and_Gadgets.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="gadgetsAdmin/Manage_Portlets_and_Gadgets.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Gadgets Administration</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gadgetsAdmin/Manage_Gadgets_in_User_Workspace.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gadgetsAdmin/Import_Portlets_and_Gadgets.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gadgetsAdmin/Manage_Portlets_and_Gadgets.xml" />
-
-</chapter>
\ No newline at end of file
Modified: portal/trunk/docs/user-guide/en/modules/Introduction.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Introduction.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Introduction.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Introduction">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,49 +21,40 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
- <title>Introduction</title>
+ --><title>Introduction</title>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Frontpage.png" scalefit="1" />
+ <imagedata fileref="images/Frontpage.png" format="PNG" scalefit="1" />
</imageobject>
</mediaobject>
-
- <para>GateIn portal is a merge of two mature projects that have
- been around for a while, JBoss Portal and GateIn Portal. It takes the
- best of both into a single new project. The aim is to provide both an
- intuitive portal to use as-is and a portal framework to build upon
- depending on your needs.</para>
- <section>
+ <para>
+ Enterprise Portal Platform (<acronym>EPP</acronym>) 5.0 is a merge of two mature projects; the JBoss Portal and the eXo Portal. It takes the best of both offerings and incorporates them into a single new project. The aim is to provide an intuitive portal for as-is use and a framework to build upon depending on your needs.
+ </para>
+ <section id="sect-User_Guide-Introduction-Links">
<title>Links</title>
<itemizedlist>
<listitem>
<para>
- GateIn homepage:
- <ulink url="http://www.gatein.org">www.gatein.org</ulink>
+ GateIn project homepage. GateIn 3.0 is the community project that Enterprise Portal Platform 5.0 is based on. <ulink url="http://www.gatein.org">www.gatein.org</ulink>
</para>
</listitem>
- <listitem>
+<!-- <listitem>
<para>
- GateIn videos:
- <ulink url="http://www.jboss.org/gatein/videos.html">www.jboss.org/gatein/videos.html</ulink>
+ GateIn videos. Various video clips created by the GateIn community leads that provide a guide to the usage and features of the GateIn portal, many of wh <ulink url="http://www.jboss.org/gatein/videos.html">www.jboss.org/gatein/videos.html</ulink>
</para>
</listitem>
<listitem>
<para>
- GateIn documentation:
- <ulink url="http://www.jboss.org/gatein/documentation.html">www.jboss.org/gatein/documentation.html</ulink>
+ GateIn documentation: <ulink url="http://www.jboss.org/gatein/documentation.html">www.jboss.org/gatein/documentation.html</ulink>
</para>
</listitem>
<listitem>
<para>
- GateIn downloads:
- <ulink url="http://www.jboss.org/gatein/downloads.html">www.jboss.org/gatein/downloads.html</ulink>
+ GateIn downloads: <ulink url="http://www.jboss.org/gatein/downloads.html">www.jboss.org/gatein/downloads.html</ulink>
</para>
- </listitem>
+ </listitem> -->
</itemizedlist>
</section>
+
</chapter>
+
Modified: portal/trunk/docs/user-guide/en/modules/Language.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Language.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Language.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Language_administration">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,15 +21,10 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Language administration</title>
+ <xi:include href="language/Change_Interface_Language.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="language/Right_To_Left_Support_(RTL).xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="language/Multi-Language_Navigation_Nodes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="language/Internationalization_Portlet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Language administration</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="language/Change_Interface_Language.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="language/Right_To_Left_Support_(RTL).xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="language/Multi-Language_Navigation_Nodes.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="language/Internationalization_Portlet.xml" />
-
-</chapter>
\ No newline at end of file
Modified: portal/trunk/docs/user-guide/en/modules/Portal.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Portal.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Portal.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Portal_Administration">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,26 +21,21 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Portal Administration</title>
+
+<!-- xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/User_Workspace.xml" /> -->
+ <xi:include href="portal/Toolbar.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/User_Management.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Manage_Permission.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Change_Portal_Skins.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Manage_Page_Navigation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<!-- <xi:include href="portal/Manage_Navigation_Nodes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Change_Node_Order.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> To be includeed in Reference Guide-->
+ <xi:include href="portal/Manage_Pages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Page_Creation_Wizard.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Drag_and_Drop_the_Page_Body.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Create_a_New_Portal.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Manage_Portals.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portal/Switching_between_Portals.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Portal Administration</title>
-<!--
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/User_Workspace.xml" />
- -->
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Toolbar.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/User_Management.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Manage_Permission.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Change_Portal_Skins.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Manage_Page_Navigation.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Manage_Navigation_Nodes.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Change_Node_Order.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Manage_Pages.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Page_Creation_Wizard.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Drag_and_Drop_the_Page_Body.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Create_a_New_Portal.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Manage_Portals.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portal/Switching_between_Portals.xml" />
-
-</chapter>
\ No newline at end of file
Deleted: portal/trunk/docs/user-guide/en/modules/Portlets.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Portlets.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Portlets.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,34 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Portlet development</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portlets/WebUI.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portlets/AJAX_in_GateIn_Framework.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portlets/Groovy_Templates.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portlets/Create_a_WebUI_Portlet.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portlets/Portlet_Lifecycle.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portlets/Sample_Basic_Portlet.xml" />
-
-
-</chapter>
\ No newline at end of file
Modified: portal/trunk/docs/user-guide/en/modules/PortletsUser.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/PortletsUser.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/PortletsUser.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Portlets">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,15 +21,10 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Portlets</title>
+ <xi:include href="portletsUser/Functional_Portlets.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portletsUser/Interface_Portlets.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portletsUser/Dashboard_Portlet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portletsUser/FCK_Portlet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Portlets</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portletsUser/Functional_Portlets.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portletsUser/Interface_Portlets.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portletsUser/Dashboard_Portlet.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="portletsUser/FCK_Portlet.xml" />
-
-</chapter>
\ No newline at end of file
Deleted: portal/trunk/docs/user-guide/en/modules/SSO.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/SSO.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/SSO.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,173 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Single Sign On</title>
-
- <section>
- <title>Overview of SSO</title>
- <para>Portal as an integration and aggregation platform provides some form of SSO by itself. When you log into
- the portal you gain access to many systems through portlets using a single identity. Still in many cases you
- need to integrate the portal infrastructure with other SSO enabled systems. There are many different Identity Management
- solutions on the market. In most cases each SSO framework provides its own way to plug into Java EE application.
- </para>
- </section>
-
- <section>
- <title>CAS - Central Authentication Service</title>
- <para>This Single Sign On plugin enables seamless integration between GateIn Portal and the CAS Single Sign On Framework.
- Details about CAS can be found <ulink url="http://www.ja-sig.org/products/cas/">here</ulink>
- </para>
- <section>
- <title>Integration</title>
- <section>
- <title>From source</title>
- <itemizedlist>
- <listitem>
- <para>
- Check out the GateIn SSO component from SVN using the following command:
- <programlisting>
- <![CDATA[
-svn co http://anonsvn.jboss.org/repos/gatein/components/sso/tags/<appropriate sso component version>
- ]]>
- </programlisting>
- </para>
- </listitem>
- <listitem>
- <para>
- Update <emphasis>packaging/profiles.xml</emphasis> to reflect the directories where your local JBoss AS 5.1.0.GA and Tomcat 6.0.2 are installed
- </para>
- </listitem>
- </itemizedlist>
- </section>
- <section>
- <title>Install CAS plugin into a designated CAS (3.3.4) server</title>
- <itemizedlist>
- <listitem>
- <para>
- <programlisting>
- <![CDATA[
- mvn -Pplugin-cas-install install
- ]]>
- </programlisting>
- </para>
- </listitem>
- </itemizedlist>
- </section>
- <section>
- <title>Install CAS GateIn Agent into the designated GateIn server</title>
- <itemizedlist>
- <listitem>
- <para>
- <programlisting>
- <![CDATA[
- mvn -Pgatein-cas-install install
- ]]>
- </programlisting>
- </para>
- </listitem>
- </itemizedlist>
- </section>
- </section>
- <section>
- <title>CAS Server Plugin Configuration</title>
- <para>
- The CAS Server Plugin makes secure authentication callbacks to a RESTful service installed on the remote GateIn server in order to authenticate a user.
- In order for the plugin to function correctly, it needs to be properly configured to connect to this service. This configuration is done via the
- <emphasis>cas.war/WEB-INF/deployerConfigContext.xml</emphasis> file.
- </para>
- <para>
- <programlisting>
- <![CDATA[
- <!--
- Note: Modify the Plugin Configuration based on the actual information of a GateIn instance.
- The instance can be anywhere on the internet...Not on localhost where CAS is running
- -->
- <bean class="org.gatein.sso.cas.plugin.AuthenticationPlugin">
- <property name="gateInHost"><value>localhost</value></property>
- <property name="gateInPort"><value>8080</value></property>
- <property name="gateInContext"><value>portal</value></property>
- </bean>
- ]]>
- </programlisting>
- </para>
- </section>
- <section>
- <title>GateIn Agent Configuration</title>
- <para>
- In a Single Sign On usecase, the GateIn server re-directs all "private" resource requests to the CAS server for authentication first. The CAS server can be
- located anywhere on the Internet, and this information must be properly configured within the GateIn instance. This configuration needs to be done in 3 files
- <itemizedlist>
- <listitem>
- <emphasis>gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl</emphasis>
- <para>
- <programlisting>
- <![CDATA[
- <script>
- <%=uicomponent.event("Close");%>
- window.location = 'http://localhost:8888/cas/login?service=http://localhost:8080/portal/priv...';
- </script>
- ]]>
- </programlisting>
- </para>
- </listitem>
- <listitem>
- <emphasis>gatein.ear/02portal.war/login/jsp/login.jsp</emphasis>
- <para>
- <programlisting>
- <![CDATA[
- <html>
- <head>
- <script type="text/javascript">
- window.location = 'http://localhost:8888/cas/login?service=http://localhost:8080/portal/priv...';
- </script>
- </head>
- <body>
- </body>
- </html>
- ]]>
- </programlisting>
- </para>
- </listitem>
- <listitem>
- <emphasis>gatein.ear/02portal.war/WEB-INF/web.xml</emphasis>
- <para>
- <programlisting>
- <![CDATA[
- <servlet>
- <servlet-name>InitiateLoginServlet</servlet-name>
- <servlet-class>org.gatein.sso.agent.GenericSSOAgent</servlet-class>
- <init-param>
- <param-name>casServerUrl</param-name>
- <param-value>http://localhost:8888/cas</param-value>
- </init-param>
- </servlet>
- ]]>
- </programlisting>
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- </section>
- </section>
-</chapter>
\ No newline at end of file
Deleted: portal/trunk/docs/user-guide/en/modules/Security.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Security.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Security.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,28 +0,0 @@
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Security</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security/Use_Spring_Security.xml" />
-
-</chapter>
\ No newline at end of file
Modified: portal/trunk/docs/user-guide/en/modules/Terms.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/Terms.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/Terms.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="chap-User_Guide-Terms">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,21 +21,15 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<chapter>
-<title>Terms</title>
-
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Portal_concept.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Portlet_concept.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Navigation_concept.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Gadget_concept.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Public_mode_and_Private_mode.xml" />
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Permission_levels.xml" />
-<!-- Deprecated
+ --><title>Terms</title>
+ <xi:include href="terms/Portal_concept.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="terms/Portlet_concept.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="terms/Navigation_concept.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="terms/Gadget_concept.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="terms/Public_mode_and_Private_mode.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="terms/Permission_levels.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!-- Deprecated
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Workspace_concept.xml" />
- -->
-<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="terms/Toolbar_concept.xml" />
+ --><xi:include href="terms/Toolbar_concept.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
-</chapter>
\ No newline at end of file
Modified: portal/trunk/docs/user-guide/en/modules/account/Account_and_Password_Retrieval.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/account/Account_and_Password_Retrieval.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/account/Account_and_Password_Retrieval.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Account_and_Password_Retrieval">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,92 +21,92 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Account and Password Retrieval</title>
- <para>This feature is really
- useful when you forget your account or password by recovering it
- quickly through following simple steps:</para>
+ --><title>Account and Password Retrieval</title>
<para>
- 1. Show the form that guides you step by step in recovering your User
- name/ Password by clicking the link 'Forget your User Name/Password?'
- beneath the
- <emphasis role="bold">Password</emphasis>
- field of the
- <emphasis role="bold">Sign in</emphasis>
- form.
+ This feature is really useful when you forget your account or password by recovering it quickly through following simple steps:
</para>
+ <para>
+ 1. Show the form that guides you step by step in recovering your User name/ Password by clicking the link 'Forget your User Name/Password?' beneath the <emphasis role="bold">Password</emphasis> field of the <emphasis role="bold">Sign in</emphasis> form.
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/SignIn1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/SignIn1.png" format="PNG" />
</imageobject>
</mediaobject>
- <para>This form offers two options to select:</para>
+ <para>
+ This form offers two options to select:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Forgot1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Forgot1.png" format="PNG" />
</imageobject>
</mediaobject>
<itemizedlist>
<listitem>
- <emphasis role="bold">Forgot my password</emphasis>
- : If you forget your password, you need to select this option.
+ <para>
+ <emphasis role="bold">Forgot my password</emphasis> : If you forget your password, you need to select this option.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Forgot my username</emphasis>
- : If you forget your username, you need to select this option.
+ <para>
+ <emphasis role="bold">Forgot my username</emphasis> : If you forget your username, you need to select this option.
+ </para>
</listitem>
</itemizedlist>
- <para>2. Select one of two options in this form.</para>
<para>
- 3. Click the
- <emphasis role="bold">Next</emphasis>
- button to go to the next step:
+ 2. Select one of two options in this form.
</para>
+ <para>
+ 3. Click the <emphasis role="bold">Next</emphasis> button to go to the next step:
+ </para>
<itemizedlist>
<listitem>
- If you selected
- <emphasis role="bold">Forgot my password</emphasis>
- option:
+ <para>
+ If you selected <emphasis role="bold">Forgot my password</emphasis> option:
+ </para>
</listitem>
</itemizedlist>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ForgotUserName1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/ForgotUserName1.png" format="PNG" />
</imageobject>
</mediaobject>
<itemizedlist>
<listitem>
- If you selected
- <emphasis role="bold">Forgot my username</emphasis>
- option:
+ <para>
+ If you selected <emphasis role="bold">Forgot my username</emphasis> option:
+ </para>
</listitem>
</itemizedlist>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ForgotEmail1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/ForgotEmail1.png" format="PNG" />
</imageobject>
</mediaobject>
- <para>4. Enter a value in the field of this form.</para>
<para>
- 5. Click the
- <emphasis role="bold">Send</emphasis>
- button to send the entered values.
+ 4. Enter a value in the field of this form.
</para>
- <para>After information is sent, you will be received an email
- with your User name/ Password in your email address that you
- registered.</para>
+ <para>
+ 5. Click the <emphasis role="bold">Send</emphasis> button to send the entered values.
+ </para>
+ <para>
+ After information is sent, you will be received an email with your User name/ Password in your email address that you registered.
+ </para>
<itemizedlist>
- <listitem>If you forget user name: when retrieving user name, your
- old user name still is remained and reused.</listitem>
- <listitem>If you forget old password: you will be set a new password
- (as temporary). Then you will be directed to change password the next
- time you sign in.</listitem>
+ <listitem>
+ <para>
+ If you forget user name: when retrieving user name, your old user name still is remained and reused.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If you forget old password: you will be set a new password (as temporary). Then you will be directed to change password the next time you sign in.
+ </para>
+ </listitem>
</itemizedlist>
- <para>The User name/Password that you received only have effect on 1
- day. It means if current date is over 1 day from received date, you
- can not use the received User name/ Password thus you have to get
- another email active.</para>
-</section>
\ No newline at end of file
+ <para>
+ The User name/Password that you received only have effect on 1 day. It means if current date is over 1 day from received date, you can not use the received User name/ Password thus you have to get another email active.
+ </para>
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/account/Change_Account_Settings.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/account/Change_Account_Settings.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/account/Change_Account_Settings.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Change_Account_Settings">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,93 +21,69 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Change Account Settings</title>
- <para>There are two ways to change the account information:</para>
- <section>
-<!-- <title>The 1^st^ way</title> -->
- <para>All users can follow this guides to change your account
- information.</para>
- <para>To change your account information, you just
- click on your
- account:</para>
+ --><title>Change Account Settings</title>
+ <!-- <para>
+ There are two ways to change the account information:
+ </para>
+ <title>The 1^st^ way</title> -->
+ <para>
+ All users can follow this guides to change your account information.
+ </para>
+ <para>
+ To change your account information, you just click on your account:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ChangeAccount.png" format="PNG"></imagedata>
+ <imagedata fileref="images/ChangeAccount.png" format="PNG" />
</imageobject>
</mediaobject>
<para>
- The
- <emphasis role="bold">Account Profiles</emphasis>
- form will appear:
+ The <emphasis role="bold">Account Profiles</emphasis> form will appear:
</para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/AccountProfiles3.png" format="PNG"></imagedata>
+ <imagedata fileref="images/AccountProfiles3.png" format="PNG" />
</imageobject>
</mediaobject>
<para>
- If you want to change your
- <emphasis role="bold">Account Profiles</emphasis>
- :
+ If you want to change your <emphasis role="bold">Account Profiles</emphasis> :
</para>
<para>
- 1. Select the
- <emphasis role="bold">Account Profiles</emphasis>
- tab. It will display your current basic information.
+ 1. Select the <emphasis role="bold">Account Profiles</emphasis> tab. It will display your current basic information.
</para>
<para>
- 2. Your
- <emphasis role="bold">User Name</emphasis>
- can not be changed. You can change these fields:
- <emphasis role="bold">First Name</emphasis>
- ,
- <emphasis role="bold">Last Name</emphasis>
- and
- <emphasis role="bold">Email</emphasis>
- .
+ 2. Your <emphasis role="bold">User Name</emphasis> can not be changed. You can change these fields: <emphasis role="bold">First Name</emphasis> , <emphasis role="bold">Last Name</emphasis> and <emphasis role="bold">Email</emphasis> .
</para>
<para>
- 3. Click the
- <emphasis role="bold">Save</emphasis>
- button to accept changes.
+ 3. Click the <emphasis role="bold">Save</emphasis> button to accept changes.
</para>
<para>
- If you want to change your
- <emphasis role="bold">Password</emphasis>
- :
+ If you want to change your <emphasis role="bold">Password</emphasis> :
</para>
<para>
- 1. Select the
- <emphasis role="bold">Change Password</emphasis>
- tab, it will display a form:
+ 1. Select the <emphasis role="bold">Change Password</emphasis> tab, it will display a form:
</para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ChangePassword.png" format="PNG"></imagedata>
+ <imagedata fileref="images/ChangePassword.png" format="PNG" />
</imageobject>
</mediaobject>
- <para>2. Input your current password to identify that you are the
- owner of this account.</para>
- <para>3. Input your new password, it must have at least 6 characters</para>
<para>
- 4. Reinput your password in the
- <emphasis role="bold">Confirm New Password</emphasis>
- field.
+ 2. Input your current password to identify that you are the owner of this account.
</para>
<para>
- 5. Click the
- <emphasis role="bold">Save</emphasis>
- button to accept changes.
+ 3. Input your new password, it must have at least 6 characters
</para>
- </section>
-<!--
+ <para>
+ 4. Reinput your password in the <emphasis role="bold">Confirm New Password</emphasis> field.
+ </para>
+ <para>
+ 5. Click the <emphasis role="bold">Save</emphasis> button to accept changes.
+ </para>
+ <!--
<section>
<title>The 2^nd^ way</title>
- </section>
+
<para>Only users who have the permission to access GateIn start in
the
User Workspace can follow this way.</para>
@@ -111,5 +91,7 @@
Go to
<emphasis role="bold">GateIn Start</emphasis>
-> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Account Settings</emphasis></para><mediaobject><imageobject><imagedata fileref="images/ChangeLanguage3.png" format="PNG"></imagedata></imageobject></mediaobject><para>It will also open the <emphasis role="bold">Account Profiles</emphasis> form.</para><mediaobject><imageobject><imagedata fileref="images/AccountProfiles1.png" format="PNG"></imagedata></imageobject></mediaobject><para>You can change your information in the <emphasis role="bold">Account Profiles</emphasis> tab and the <emphasis role="bold">Change Password</emphasis> tab as the same as the first way.</para>
- -->
-</section>
\ No newline at end of file
+ </section> -->
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/account/Change_User_Password.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/account/Change_User_Password.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/account/Change_User_Password.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Changing_Password">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,17 +21,18 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <para>TODO</para>
-<!--
+ --><title>Changing Password</title>
+ <para>
+ TODO
+ </para>
+ <!--
<title>Change User Password</title>
<para>This video shows you how to change the user password step by
step:</para>
<itemizedlist>
<listitem>changepasswordexo.swf</listitem>
</itemizedlist>
--->
-</section>
\ No newline at end of file
+ -->
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/account/Register_New_Accounts.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/account/Register_New_Accounts.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/account/Register_New_Accounts.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Register_New_Accounts">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,48 +21,37 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Register New Accounts</title>
- <para>If you are a visitor of GateIn Portal, you only may read news
- or
- take some normal actions. Thus to access and get more actions, you
- should register and contact with administrators to get more
- permissions!</para>
- <para>GateIn Portal supports users to register a new account by
- themselves quickly and easily. Just by completing the steps below, you
- will have a new account that helps you access more pages and take more
- actions in GateIn Portal:</para>
+ --><title>Register New Accounts</title>
+ <para>
+ If you are a visitor of GateIn Portal, you only may read news or take some normal actions. Thus to access and get more actions, you should register and contact with administrators to get more permissions!
+ </para>
+ <para>
+ GateIn Portal supports users to register a new account by themselves quickly and easily. Just by completing the steps below, you will have a new account that helps you access more pages and take more actions in GateIn Portal:
+ </para>
<orderedlist>
<listitem>
<para>
- Go to a portal by typing the URL in the address bar (e.g:
- http://localhost:8080/portal).
+ Go to a portal by typing the URL in the address bar (e.g: http://localhost:8080/portal).
<mediaobject>
<imageobject>
- <imagedata fileref="images/Frontpage.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Frontpage.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
- <para>Click
- <emphasis role="bold">Register</emphasis>
- on the Navigation bar. The Register page will appear:
+ <para>
+ Click <emphasis role="bold">Register</emphasis> on the Navigation bar. The Register page will appear:
<mediaobject>
<imageobject>
- <imagedata fileref="images/AccountSetting.png" format="PNG"></imagedata>
+ <imagedata fileref="images/AccountSetting.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
<para>
- The
- <emphasis role="bold">Account Setting</emphasis>
- information includes:
+ The <emphasis role="bold">Account Setting</emphasis> information includes:
</para>
- <informaltable frame="none" rowsep="0" colsep="0">
+ <informaltable colsep="0" frame="none" rowsep="0">
<tgroup cols="2">
<colspec align="center"></colspec>
<colspec align="center"></colspec>
@@ -72,103 +65,122 @@
</entry>
</row>
<row>
- <entry> User Name </entry>
- <entry> the name that the user uses to login. This field must be
- unique and start with a character </entry>
+ <entry>
+ User Name
+ </entry>
+ <entry>
+ the name that the user uses to login. This field must be unique and start with a character
+ </entry>
</row>
<row>
- <entry> Password </entry>
- <entry> The *Password* must be between 6 and 30 characters and
- can
- contain space characters. Since Portal 2.6, space characters are
- either at the beginning or in the end can be counted. </entry>
+ <entry>
+ Password
+ </entry>
+ <entry>
+ The *Password* must be between 6 and 30 characters and can contain space characters. Since Portal 2.6, space characters are either at the beginning or in the end can be counted.
+ </entry>
</row>
<row>
- <entry> Confirm Password </entry>
- <entry> re-type the password above. *Password* and *Confirm
- Password* must be the same. </entry>
+ <entry>
+ Confirm Password
+ </entry>
+ <entry>
+ re-type the password above. *Password* and *Confirm Password* must be the same.
+ </entry>
</row>
<row>
- <entry> First Name </entry>
- <entry> the first name of a user. </entry>
+ <entry>
+ First Name
+ </entry>
+ <entry>
+ the first name of a user.
+ </entry>
</row>
<row>
- <entry> Last Name </entry>
- <entry> the last name of a user. </entry>
+ <entry>
+ Last Name
+ </entry>
+ <entry>
+ the last name of a user.
+ </entry>
</row>
<row>
- <entry> Email Address </entry>
- <entry> the email of a user. It must be in the right format likes
- username(a)abc.com </entry>
+ <entry>
+ Email Address
+ </entry>
+ <entry>
+ the email of a user. It must be in the right format likes username(a)abc.com
+ </entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
<listitem>
- <para>Fill in the form.</para>
+ <para>
+ Fill in the form.
+ </para>
</listitem>
<listitem>
- <para>Click the magnifying glass icon !images/magnifyIcon.png!
- to
- search and check if the chosen username is available.</para>
+ <para>
+ Click the magnifying glass icon !images/magnifyIcon.png! to search and check if the chosen username is available.
+ </para>
</listitem>
<listitem>
- <para>Input values in the
- <emphasis role="bold">User Profile</emphasis>
- tab, include: Profile information, Home information, Business
- information. These fields are not required.
+ <para>
+ Input values in the <emphasis role="bold">User Profile</emphasis> tab, include: Profile information, Home information, Business information. These fields are not required.
</para>
<para>
- GateIn Portal facilitates users with 4 commonly used languagues:
- English,
- French, Vietnamese and Arabic in the
- <emphasis role="bold">Language</emphasis>
- field. You can select one of these languages to work with.
+ GateIn Portal facilitates users with 4 commonly used languagues: English, French, Vietnamese and Arabic in the <emphasis role="bold">Language</emphasis> field. You can select one of these languages to work with.
</para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/UserProfile.png" format="PNG"></imagedata>
+ <imagedata fileref="images/UserProfile.png" format="PNG" />
</imageobject>
</mediaobject>
</listitem>
<listitem>
- <para>Click
- <emphasis role="bold">Save</emphasis>
- to register a new account or
- <emphasis role="bold">Reset</emphasis>
- to refresh all entered values. There will be an alert message and
- you
- can not add a new account if one of these cases occurs:
+ <para>
+ Click <emphasis role="bold">Save</emphasis> to register a new account or <emphasis role="bold">Reset</emphasis> to refresh all entered values. There will be an alert message and you can not add a new account if one of these cases occurs:
</para>
<itemizedlist>
<listitem>
- <emphasis role="bold">User name</emphasis>
- already exists or user name is invalid.
+ <para>
+ <emphasis role="bold">User name</emphasis> already exists or user name is invalid.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Password</emphasis>
- has less than 6 characters or more than 30 characters.
+ <para>
+ <emphasis role="bold">Password</emphasis> has less than 6 characters or more than 30 characters.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Password</emphasis>
- and
- <emphasis role="bold">Confirm Password</emphasis>
- are not the same.
+ <para>
+ <emphasis role="bold">Password</emphasis> and <emphasis role="bold">Confirm Password</emphasis> are not the same.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Email Address</emphasis>
- format is not valid
+ <para>
+ <emphasis role="bold">Email Address</emphasis> format is not valid
+ </para>
</listitem>
- <listitem>Required fields are blank (empty).</listitem>
+ <listitem>
+ <para>
+ Required fields are blank (empty).
+ </para>
+ </listitem>
</itemizedlist>
</listitem>
</orderedlist>
<para>
- After adding a new account, you should either contact the
- administrator to get more permissions or you are only a visitor user.
- <note>You should enter your email address carefully because
- when you forget your user name or password, you can recover it by
- using this email address.</note>
+ After adding a new account, you should either contact the administrator to get more permissions or you are only a visitor user.
+ <note>
+ <title>Note</title>
+ <para>
+ You should enter your email address carefully because when you forget your user name or password, you can recover it by using this email address.
+ </para>
+ </note>
</para>
</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/account/Remember_User_Account.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/account/Remember_User_Account.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/account/Remember_User_Account.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Remember_User_Account">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,38 +21,27 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Remember User Account</title>
- <para>This feature allows users to return to the GateIn Portal and be
- automatically authenticated based on the value of a cookie provided by
- the browser. Thus users do not have to perform an explicit
- authentication again.</para>
+ --><title>Remember User Account</title>
+ <para>
+ This feature allows users to return to the GateIn Portal and be automatically authenticated based on the value of a cookie provided by the browser. Thus users do not have to perform an explicit authentication again.
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/RememberMe2.6.png" format="PNG"></imagedata>
+ <imagedata fileref="images/RememberMe2.6.png" format="PNG" />
</imageobject>
</mediaobject>
<para>
- 1. Input your registered
- <emphasis role="bold">User name</emphasis>
- and
- <emphasis role="bold">Password</emphasis>
- .
+ 1. Input your registered <emphasis role="bold">User name</emphasis> and <emphasis role="bold">Password</emphasis> .
</para>
<para>
- 2. Select the
- <emphasis role="bold">Remember My Login</emphasis>
- check box when logging in GateIn Portal at the first time.
+ 2. Select the <emphasis role="bold">Remember My Login</emphasis> check box when logging in GateIn Portal at the first time.
</para>
<para>
- 3. Click the
- <emphasis role="bold">Sign in</emphasis>
- button to sign in the portal.
+ 3. Click the <emphasis role="bold">Sign in</emphasis> button to sign in the portal.
</para>
- <para>You must remember escaping the browser without signing out.
- The next time, you can automatically sign in the portal without
- signing in again with your first/last name welcome.</para>
-</section>
\ No newline at end of file
+ <para>
+ You must remember escaping the browser without signing out. The next time, you can automatically sign in the portal without signing in again with your first/last name welcome.
+ </para>
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/account/Sign_in_and_Sign_out.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/account/Sign_in_and_Sign_out.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/account/Sign_in_and_Sign_out.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Sign_In_and_Sign_Out">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,140 +21,130 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Sign In and Sign Out</title>
- <section>
+ --><title>Sign In and Sign Out</title>
+ <section id="sect-User_Guide-Sign_In_and_Sign_Out-Sign_In">
<title>Sign In</title>
+ <para>
+ After registering your account, you can easily sign in GateIn Portal to go into your private mode:
+ </para>
+ <para>
+ 1. Go to a Portal in the public mode by inputting URL in the address bar (e.g: http://localhost:8080/portal)
+ </para>
+ <para>
+ 2. Click the <emphasis role="bold">Sign in</emphasis> link at the top right of a page if you are current in the Classic portal. The <emphasis role="bold">Sign in</emphasis> form appears:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SignIn2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 3. Input your registered <emphasis role="bold">User name</emphasis> and <emphasis role="bold">Password</emphasis> .
+ </para>
+ <para>
+ 2. Select the <emphasis role="bold">Remember My Login</emphasis> check box when you sign in GateIn Portal at the first time if you want to automatically return to GateIn Portal without signing in again. You can see <xref linkend="sect-User_Guide-Remember_User_Account" /> for more details.
+ </para>
+ <para>
+ 3.Click the <emphasis role="bold">Sign in</emphasis> button to accept or <emphasis role="bold">Discard</emphasis> to escape the <emphasis role="bold">Sign in</emphasis> form.
+ </para>
+ <para>
+ Details:
+ </para>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Field </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ User name
+ </entry>
+ <entry>
+ The registered user name.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Password
+ </entry>
+ <entry>
+ The registered password.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Remember My Login
+ </entry>
+ <entry>
+ This option allows users to return to GateIn Portal and be automatically authenticated based on the value of a cookie provided by the browser. Thus users do not have to perform an explicit authentication again.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Forgot your User Name/Password?
+ </entry>
+ <entry>
+ To follow some steps to get the forgotten user name or password. Please refer [Portal:Account and Password Retrieval] for more details.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Sign in
+ </entry>
+ <entry>
+ To sign into GateIn Portal with user name and password.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Discard
+ </entry>
+ <entry>
+ To close the *Sign In* form.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ In case, <emphasis role="bold">User Name</emphasis> does not exist or the inputted User name/Password is invalid, there will be an alert message requires you to input the right value. To login again, you click the <emphasis role="bold">OK</emphasis> button on the alert message and enter <emphasis role="bold">User Name</emphasis> and <emphasis role="bold">Password</emphasis> again.
+ </para>
+ <para>
+ After signing in, you will be redirected to the authenticated homepage:
+ </para>
+ <para>
+ After signing in, you will be redirected to the authenticated homepage and welcomed with your full First Name and Last Name:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PortalHome.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>After registering your account, you can easily sign in GateIn
- Portal to go into your private mode:</para>
- <para>1. Go to a Portal in the public mode by inputting URL in the
- address bar (e.g: http://localhost:8080/portal)</para>
- <para>
- 2. Click the
- <emphasis role="bold">Sign in</emphasis>
- link at the top right of a page if you are current in the Classic
- portal. The
- <emphasis role="bold">Sign in</emphasis>
- form appears:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/SignIn2.6.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- 3. Input your registered
- <emphasis role="bold">User name</emphasis>
- and
- <emphasis role="bold">Password</emphasis>
- .
- </para>
- <para>
- 2. Select the
- <emphasis role="bold">Remember My Login</emphasis>
- check box when you sign in GateIn Portal at the first time if you want to
- automatically return to GateIn Portal without signing in again. You can
- see
- <link linkend="Remember User Account">Remember User Account</link>
- for more details.
- </para>
- <para>
- 3.Click the
- <emphasis role="bold">Sign in</emphasis>
- button to accept or
- <emphasis role="bold">Discard</emphasis>
- to escape the
- <emphasis role="bold">Sign in</emphasis>
- form.
- </para>
- <para>Details:</para>
- <informaltable frame="none" rowsep="0" colsep="0">
- <tgroup cols="2">
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <tbody>
- <row>
- <entry>
- <emphasis role="bold"> Field </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Description </emphasis>
- </entry>
- </row>
- <row>
- <entry> User name </entry>
- <entry> The registered user name. </entry>
- </row>
- <row>
- <entry> Password </entry>
- <entry> The registered password. </entry>
- </row>
- <row>
- <entry> Remember My Login </entry>
- <entry> This option allows users to return
- to GateIn Portal and be automatically authenticated based on the
- value of a cookie provided by the browser. Thus users do not have
- to perform an explicit authentication again. </entry>
- </row>
- <row>
- <entry> Forgot your User Name/Password? </entry>
- <entry> To follow some steps to get the
- forgotten user name or password. Please refer [Portal:Account and
- Password Retrieval] for more details. </entry>
- </row>
- <row>
- <entry> Sign in </entry>
- <entry> To sign into GateIn Portal with user name and password.</entry>
- </row>
- <row>
- <entry> Discard </entry>
- <entry> To close the *Sign In* form. </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- <para>
- In case,
- <emphasis role="bold">User Name</emphasis>
- does not exist or the inputted User name/Password is invalid, there
- will be an alert message requires you to input the right value. To
- login again, you click the
- <emphasis role="bold">OK</emphasis>
- button on the alert message and enter
- <emphasis role="bold">User Name</emphasis>
- and
- <emphasis role="bold">Password</emphasis>
- again.
- </para>
- <para>After signing in, you will be redirected to the
- authenticated homepage:</para>
-
- <para>After signing in, you will be redirected to the
- authenticated homepage and welcomed with your full First Name and Last
- Name:</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/PortalHome.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Sign_In_and_Sign_Out-Sign_Out">
<title>Sign Out</title>
+ <para>
+ This function lets you get back to the anonymous portal. It ends your current portal session.
+ </para>
+ <para>
+ In the upper left corner of the screen, click <emphasis role="bold">Sign out</emphasis> :
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SignOut.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This function lets you get back to the anonymous portal. It
- ends your current portal session.</para>
- <para>
- In the upper left corner of the screen, click
- <emphasis role="bold">Sign out</emphasis>
- :
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/SignOut.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
-</section>
\ No newline at end of file
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Import_Portlets_and_Gadgets.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Import_Portlets_and_Gadgets.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Import_Portlets_and_Gadgets.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Import_Portlets_and_Gadgets">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,14 +21,36 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Import Portlets and Gadgets</title>
+ <para>
+ This convenient feature that helps you import default portlets/gadgets automatically in different categories and these portlets/gadgets will be listed on the left pane.
+ </para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ info("Technical Information about the Portlet Import: The Application Registry looks in all webapps of your application server for a file located at WEB-INF/portlet.xml and registers the portlets found there. When the user clicks on "Auto Import" the portlets of all webapps are imported. If there is a portlet.xml file in a webapp a new category is created whose name is the webapp war name (or the webapp folder name). All the portlets that are configured in the portlet.xml file are added to the new category.")
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ 1. Go to <emphasis role="bold">Administration</emphasis>-> <emphasis role="bold">Application Registry</emphasis> page-> <emphasis role="bold">Organize</emphasis> item on the navigation bar. A form for organizing portlets/gadgets will be displayed:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Org1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 2. Click the <emphasis role="bold">Auto Import</emphasis> button!images/Auto1.png! at upper right corner on the action bar. A pop up will be shown:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/local.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 2. Click the <emphasis role="bold">OK</emphasis> button to accept importing gadgets automatically. All portlets/gadgets categories will be imported and listed on the left pane.
+ </para>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Import Portlets and Gadgets</title>
- <para>This convenient feature that helps you import default
- portlets/gadgets automatically in different categories and these
- portlets/gadgets will be listed on the left pane.</para>
- <orderedlist numeration="arabic">
- <listitem>info("Technical Information about the Portlet Import: The Application Registry looks in all webapps of your application server for a file located at WEB-INF/portlet.xml and registers the portlets found there. When the user clicks on "Auto Import" the portlets of all webapps are imported. If there is a portlet.xml file in a webapp a new category is created whose name is the webapp war name (or the webapp folder name). All the portlets that are configured in the portlet.xml file are added to the new category.")</listitem></orderedlist><para>1. Go to <emphasis role="bold">Administration</emphasis>-> <emphasis role="bold">Application Registry</emphasis> page-> <emphasis role="bold">Organize</emphasis> item on the navigation bar. A form for organizing portlets/gadgets will be displayed:</para><mediaobject><imageobject><imagedata fileref="images/Org1.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click the <emphasis role=!
"bold">Auto Import</emphasis> button!images/Auto1.png! at upper right corner on the action bar. A pop up will be shown:</para><mediaobject><imageobject><imagedata fileref="images/local.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click the <emphasis role="bold">OK</emphasis> button to accept importing gadgets automatically. All portlets/gadgets categories will be imported and listed on the left pane.</para>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Gadgets_in_User_Workspace.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Gadgets_in_User_Workspace.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Gadgets_in_User_Workspace.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Manage_Gadgets_in_User_Workspace">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,164 +21,139 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Gadgets in User Workspace</title>
+ --><title>Manage Gadgets in User Workspace</title>
<orderedlist numeration="arabic">
- <listitem>gadget is a small convenient application that helps
- you perform private actions. GateIn Portal provides you with some
- useful gadgets: todo, calendar, calculator and RSS Reader. Besides
- using ready-to-use gadgets in your User Workspace. You can easily add
- gadgets organized in categories in your User Workspace to meet the
- need of your work :</listitem>
+ <listitem>
+ <para>
+ gadget is a small convenient application that helps you perform private actions. GateIn Portal provides you with some useful gadgets: todo, calendar, calculator and RSS Reader. Besides using ready-to-use gadgets in your User Workspace. You can easily add gadgets organized in categories in your User Workspace to meet the need of your work :
+ </para>
+ </listitem>
</orderedlist>
- <section>
+ <section id="sect-User_Guide-Manage_Gadgets_in_User_Workspace-Add_a_Gadget">
<title>Add a Gadget</title>
+ <para>
+ To add a gadget, you can follow these steps:
+ </para>
+ <para>
+ 1. Open the User Workspace on your left pane.
+ </para>
+ <para>
+ 2. Click the tool!images/Tool.png! icon to add a new category
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/UserWorkspace.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The <emphasis role="bold">Gadget Containers Management</emphasis> dialog appears:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/GadgetManagement.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ Click the add icon !images/AddIcon.png! to show the <emphasis role="bold">Gadget Container Form</emphasis> .
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/GadgetContainer.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Label
+ </entry>
+ <entry>
+ The display name of the category. This field is required and must have at least 3 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Description
+ </entry>
+ <entry>
+ The brief description of the category.A length from 0 to 255 characters is allowed. This field is not required.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ Enter values for fields in the <emphasis role="bold">Gadget Container Form</emphasis> .
+ </para>
+ <para>
+ Click on the <emphasis role="bold">Save</emphasis> button to accept adding a new category or click <emphasis role="bold">Cancel</emphasis> to quit. After you added the new category you will see it in the dialog :
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/GadgetManagement1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ Edit the information of an existing category by selecting it from the left pane, the selected category is marked by a symbol. Then click the edit icon to show the edit form. Change the current category information and click on the <emphasis role="bold">button</emphasis> to accept changes.
+ </para>
+ <para>
+ Delete an existing category by selecting it from the left pane. In the message box Click on the <emphasis role="bold">OK</emphasis> button to confirm the deletion or click the <emphasis role="bold">Cancel</emphasis> button.
+ </para>
+ <para>
+ 3. Click on the <emphasis role="bold">Save</emphasis> button in the <emphasis role="bold">Gadget Containers Management</emphasis> dialog to accept or on the <emphasis role="bold">Cancel</emphasis> button to quit. Added categories will be displayed in list in the User Workspace.
+ </para>
+ <para>
+ 4. Click the list icon!images/ListIcon.png! to see category list and select one in list.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/UserWorkspace1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 5. Click the add icon!images/AddIcon1.png! at the bottom of the User Workspace to open the <emphasis role="bold">Add Application</emphasis> dialog:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AddApplication.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 6. Select a gadget by clicking the add icon !images/PlusIcon.png! that is located next to the the gadget. The selected gadget is displayed immediately in the user workspace. Normally, you can see only two gadgets in the User Workspace. When there are more gadgets, some gadgets are not visible.
+ </para>
+ <para>
+ 7. Click the scroll down icon !images/DownIcon.png!images/ or the scroll up icon!images/ UpIcon.png! at the bottom of the User Workspace to see the other gadgets. If there are no more gadgets to scroll to, the color of the scroll down and scroll up icon switches to gray color.
+ </para>
</section>
- <para>To add a gadget, you can follow these steps:</para>
- <para>1. Open the User Workspace on your left pane.</para>
- <para>2. Click the tool!images/Tool.png! icon to add a new category</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/UserWorkspace.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- The
- <emphasis role="bold">Gadget Containers Management</emphasis>
- dialog appears:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/GadgetManagement.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- Click the add icon !images/AddIcon.png! to show the
- <emphasis role="bold">Gadget Container Form</emphasis>
- .
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/GadgetContainer.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <informaltable frame="none" rowsep="0" colsep="0">
- <tgroup cols="2">
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <tbody>
- <row>
- <entry>
- <emphasis role="bold"> Name </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Description </emphasis>
- </entry>
- </row>
- <row>
- <entry> Label </entry>
- <entry> The display name of the category. This field is required
- and must have at least 3 characters. </entry>
- </row>
- <row>
- <entry> Description </entry>
- <entry> The brief description of the category.A length from 0 to
- 255 characters is allowed. This field is not required. </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- <para>
- Enter values for fields in the
- <emphasis role="bold">Gadget Container Form</emphasis>
- .
- </para>
- <para>
- Click on the
- <emphasis role="bold">Save</emphasis>
- button to accept adding a new category or click
- <emphasis role="bold">Cancel</emphasis>
- to quit. After you added the new category you will see it in the
- dialog :
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/GadgetManagement1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- Edit the information of an existing category by selecting it from the
- left pane, the selected category is marked by a symbol. Then click the
- edit icon to show the edit form. Change the current category
- information and click on the
- <emphasis role="bold">button</emphasis>
- to accept changes.
- </para>
- <para>
- Delete an existing category by selecting it from the left pane. In the
- message box Click on the
- <emphasis role="bold">OK</emphasis>
- button to confirm the deletion or click the
- <emphasis role="bold">Cancel</emphasis>
- button.
- </para>
- <para>
- 3. Click on the
- <emphasis role="bold">Save</emphasis>
- button in the
- <emphasis role="bold">Gadget Containers Management</emphasis>
- dialog to accept or on the
- <emphasis role="bold">Cancel</emphasis>
- button to quit. Added categories will be displayed in list in the User
- Workspace.
- </para>
- <para>4. Click the list icon!images/ListIcon.png! to see category
- list and select one in list.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/UserWorkspace1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- 5. Click the add icon!images/AddIcon1.png! at the bottom of the User
- Workspace to open the
- <emphasis role="bold">Add Application</emphasis>
- dialog:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/AddApplication.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>6. Select a gadget by clicking the add icon
- !images/PlusIcon.png! that is located next to the the gadget. The
- selected gadget is displayed immediately in the user workspace.
- Normally, you can see only two gadgets in the User Workspace. When
- there are more gadgets, some gadgets are not visible.</para>
- <para>7. Click the scroll down icon !images/DownIcon.png!images/ or
- the scroll up icon!images/ UpIcon.png! at the bottom of the User
- Workspace to see the other gadgets. If there are no more gadgets to
- scroll to, the color of the scroll down and scroll up icon switches to
- gray color.</para>
- <section>
+
+ <section id="sect-User_Guide-Manage_Gadgets_in_User_Workspace-Edit_a_Gadget">
<title>Edit a Gadget</title>
+ <para>
+ To edit a gadget, click !images/EditIcon.png! icon.
+ </para>
</section>
- <para>To edit a gadget, click !images/EditIcon.png! icon.</para>
- <section>
+
+ <section id="sect-User_Guide-Manage_Gadgets_in_User_Workspace-Remove_a_Gadget">
<title>Remove a Gadget</title>
+ <para>
+ Remove a gadget from the User Workspace by using the functional bar!images/FunctionBar.png! at the upper right corner of that gadget.
+ </para>
+ <para>
+ Click the remove icon !images/RemoveIcon.png! . When the confirmation message appears, click the <emphasis role="bold">OK</emphasis> button to accept or the <emphasis role="bold">Cancel</emphasis> to quit.
+ </para>
</section>
- <para>Remove a gadget from the User Workspace by using the
- functional bar!images/FunctionBar.png! at the upper right corner of
- that gadget.</para>
- <para>
- Click the remove icon !images/RemoveIcon.png! . When the confirmation
- message appears, click the
- <emphasis role="bold">OK</emphasis>
- button to accept or the
- <emphasis role="bold">Cancel</emphasis>
- to quit.
- </para>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Portlets_and_Gadgets.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Portlets_and_Gadgets.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/gadgetsAdmin/Manage_Portlets_and_Gadgets.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,6 +1,9 @@
+<?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-User_Guide-Manage_Portlets_and_Gadgets">
+ <!--
- <!--
-
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;
@@ -13,254 +16,407 @@
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.
- -->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Portlets and Gadgets</title>
- <section>
+ --><title>Manage Portlets and Gadgets</title>
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Introduction">
<title>Introduction</title>
<para>
- Portlets and gadgets are organized in different categories. Each
- category contains one or several portlets or gadgets. You can also
- mix
- portlets and gadgets into one category. By default all gadgets are
- placed in the
- <emphasis>ExoGadgets</emphasis>
- category.
+ Portlets and gadgets are organized in different categories. Each category contains one or several portlets or gadgets. You can also mix portlets and gadgets into one category. By default all gadgets are placed in the <emphasis>ExoGadgets</emphasis> category.
</para>
</section>
- <section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Add_a_new_Category">
<title>Add a new Category</title>
+ <para>
+ You easily add a new category by following these guides:
+ </para>
+ <para>
+ Go to <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Application Registry</emphasis> page -> <emphasis role="bold">Organize</emphasis> item.
+ </para>
+ <para>
+ 1. Open a form to add a new category on the right pane by clicking the <emphasis role="bold">Add Category</emphasis> button on the action bar:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AddCategory1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </para>
+ <para>
+ The <emphasis role="bold">Category Setting</emphasis> tab: includes common information about a category.
+ </para>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Category name
+ </entry>
+ <entry>
+ The name of the category which you want to add. This field is required and its length must be between 3 and 30 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Display name
+ </entry>
+ <entry>
+ The display name of the category in list and its length must be between 3 and 30 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Description
+ </entry>
+ <entry>
+ A brief description of the category. Any length from 0 to 255 characters is allowed.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ The <emphasis role="bold">Permission Setting</emphasis> tab: used to set the access permission for a category.
+ </para>
+ <figure id="figu-User_Guide-Add_a_new_Category-info_This_access_permission_enters_the_game_whenever_a_user_creates_or_modifies_a_page._In_that_moment_the_user_only_can_see_and_use_portlets_in_those_categories_on_which_he_or_she_has_access_permission_defined_by_groups_and_memberships._info">
+ <title>{info} This access permission enters the game whenever a user creates or modifies a page. In that moment the user only can see and use portlets in those categories on which he or she has access permission (defined by groups and memberships). {info}</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Permission2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ 2. Enter values for required fields in this form.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Save</emphasis> button to accept adding a new category into a category list. The new category will be added into a list on the left pane.
+ </para>
</section>
- <para>You easily add a new category by following these guides:</para>
- <para>
- Go to
- <emphasis role="bold">Administration</emphasis>
- ->
- <emphasis role="bold">Application Registry</emphasis>
- page -> <emphasis role="bold">Organize</emphasis> item.
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Edit_a_Category">
+ <title>Edit a Category</title>
+ <para>
+ You can edit a category in list by following:
</para>
- <para>1. Open a form to add a new category on the right pane by clicking the
- <emphasis role="bold">Add Category</emphasis> button on the action bar:
+ <para>
+ 1. Click the edit icon!images/EditIcon1.png! on the title bar of a category that you want to edit.
+ </para>
+ <para>
+ 2. Change the information of the selected category.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Save</emphasis> button to accept changes.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Delete_a_Category">
+ <title>Delete a Category</title>
+ <para>
+ You also easily remove a category from a list:
+ </para>
+ <para>
+ 1. Click the trash can icon!images/DeleteIcon.png! on the Title bar of the category that you want to delete.
+ </para>
+ <para>
+ 2. Click on the <emphasis role="bold">OK</emphasis> button on the message to accept deleting or click on the <emphasis role="bold">Cancel</emphasis> button to quit.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Add_PortletsGadgets_to_the_specific_Category">
+ <title>Add Portlets/Gadgets to the specific Category</title>
+ <para>
+ You can follow these steps to add a portlet/gadget to your prefered category :
+ </para>
+ <para>
+ 1. Click the "add" icon!images/AddIcon.png! on the title bar of a category to which you want to add portlets. An interface will appear in the right pane as you can see below:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AddPortlet2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="left"></colspec>
+ <colspec align="left"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold">Name</emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold">Description</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Display name
+ </entry>
+ <entry>
+ The display name of a portlet/gadget that you want to add to a category.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Application Type
+ </entry>
+ <entry>
+ the type of selected object.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ <para>
+ 2. Enter the display name and select a type for the selected portlet/gadget.
+ </para>
+ <para>
+ 3. Select a portlet/gadget by checking the radio button.
+ </para>
+ <para>
+ 4. Click the <emphasis role="bold">Save</emphasis> button to accept adding a portlet/gadget to a category.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Set_Access_Permission_on_Portlets">
+ <title>Set Access Permission on Portlets</title>
+ <para>
+ You easily set an access permission on a portlet by following these guides:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Page Navigations</emphasis> -> select <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Application Registry</emphasis>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PortletPermission.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </para>
+ <para>
+ 2. Select a category on the left pane that includes the portlet you want to set right. Then all portlets of the selected category are listed immediately and detail information of each portlet is displayed on the right pane.
+ </para>
+ <para>
+ 3. To set permission for a portlet:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click the <emphasis role="bold">Add Permission</emphasis> button to add access permissions to more groups.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Or check the <emphasis role="bold">Make it public</emphasis> check box to allow everyone to access.
+ </para>
+ </listitem>
+ </itemizedlist>
+ Whenever the user creates or modifies a page he or she can only see and use portlets that fulfill two conditions: the portlet is in a <emphasis role="bold">category</emphasis> on which the user has access permission (see category section above) and the user has access permission on the <emphasis role="bold">portlet</emphasis>
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-View_detail_information_of_the_specific_Portlets">
+ <title>View detail information of the specific Portlets</title>
+ <para>
+ You easily view detail information of all specific portlets by following these guides:
+ </para>
+ <para>
+ 1. On the navigation bar, go to the <emphasis role="bold">Administration</emphasis>-> <emphasis role="bold">Application Registry</emphasis> page-> <emphasis role="bold">Portlet</emphasis> item . A form to view all portlets will appear:
+ </para>
<mediaobject>
- <imageobject>
- <imagedata fileref="images/AddCategory1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- </para>
- <para>The <emphasis role="bold">Category Setting</emphasis> tab: includes common information about a category.</para>
- <informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Category name </entry><entry> The name of the category which you want to add. This field is required and its length must be between 3 and 30 characters. </entry></row><row><entry> Display name </entry><entry> The display name of the category in list and its length must be between 3 and 30 characters. </entry></row><row><entry> Description </entry><entry> A brief description of the category. Any length from 0 to 255 characters is allowed. </entry></row></tbody></tgroup></informaltable><para>The <emphasis role="bold">Permission Setting</emphasis> tab: used to set the access permission for a category.</para><figure><title>{info} This access permission enters the game whenever a user creates!
or modifies a page. In that moment the user only can see and use portlets in those categories on which he or she has access permission (defined by groups and memberships). {info}</title><mediaobject><imageobject><imagedata fileref="images/Permission2.png" format="PNG"></imagedata></imageobject></mediaobject></figure><para>2. Enter values for required fields in this form.</para><para>3. Click the <emphasis role="bold">Save</emphasis> button to accept adding a new category into a category list. The new category will be added into a list on the left pane.</para>
-<section>
- <title>Edit a Category</title>
- <para>You can edit a category in list by following:</para><para>1. Click the edit icon!images/EditIcon1.png! on the title bar of a category that you want to edit.</para><para>2. Change the information of the selected category.</para><para>3. Click the <emphasis role="bold">Save</emphasis> button to accept changes.</para>
-</section>
-<section><title>Delete a Category</title>
-<para>You also easily remove a category from a list:</para><para>1. Click the trash can icon!images/DeleteIcon.png! on the Title bar of the category that you want to delete.</para><para>2. Click on the <emphasis role="bold">OK</emphasis> button on the message to accept deleting or click on the <emphasis role="bold">Cancel</emphasis> button to quit.</para>
-</section>
-<section><title>Add Portlets/Gadgets to the specific Category</title>
-<para>You can follow these steps to add a portlet/gadget to your prefered category :</para>
-<para>1. Click the "add" icon!images/AddIcon.png! on the title bar of a category to which you want to add portlets. An interface will appear in the right pane as you can see below:
- <mediaobject><imageobject><imagedata fileref="images/AddPortlet2.png" format="PNG"></imagedata></imageobject></mediaobject>
- <informaltable frame="none" rowsep="0" colsep="0">
- <tgroup cols="2">
- <colspec align="left"></colspec>
- <colspec align="left"></colspec>
- <tbody>
- <row>
- <entry>
- <emphasis role="bold">Name</emphasis>
- </entry>
- <entry>
- <emphasis role="bold">Description</emphasis>
- </entry>
- </row>
- <row>
- <entry>Display name</entry>
- <entry>The display name of a portlet/gadget that you want to add to a category.</entry>
- </row>
- <row>
- <entry>Application Type</entry>
- <entry>the type of selected object.</entry>
- </row></tbody></tgroup></informaltable>
- </para>
- <para>2. Enter the display name and select a type for the selected portlet/gadget.</para><para>3. Select a portlet/gadget by checking the radio button.</para><para>4. Click the <emphasis role="bold">Save</emphasis> button to accept adding a portlet/gadget to a category.</para>
-</section>
-<section>
- <title>Set Access Permission on Portlets</title>
- <para>You easily set an access permission on a portlet by following
- these guides:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Page Navigations</emphasis> -> select <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Application Registry</emphasis>
-<mediaobject><imageobject><imagedata fileref="images/PortletPermission.png" format="PNG"></imagedata></imageobject></mediaobject></para>
-<para>2. Select a category on the left pane that includes the portlet you want to set right. Then all portlets of the selected category are listed immediately and detail information of each portlet is displayed on the right pane.</para>
-<para>3. To set permission for a portlet:
- <itemizedlist>
- <listitem>Click the <emphasis role="bold">Add Permission</emphasis> button to add access permissions to more groups.</listitem>
- <listitem>Or check the <emphasis role="bold">Make it public</emphasis> check box to allow everyone to access.</listitem>
- </itemizedlist>
- Whenever the user creates or modifies a page he or she can only see and use portlets that fulfill two conditions:
- the portlet is in a <emphasis role="bold">category</emphasis> on which the user has access permission (see category section above) and the user has access permission on the <emphasis role="bold">portlet</emphasis></para>
-</section>
-<section>
- <title>View detail information of the specific Portlets</title>
- <para>You easily view detail information of all specific portlets by
- following these guides:</para>
- <para>
- 1. On the navigation bar, go to the
- <emphasis role="bold">Administration</emphasis>-> <emphasis role="bold">Application Registry</emphasis> page-> <emphasis role="bold">Portlet</emphasis> item . A form to view all portlets will appear:</para><mediaobject><imageobject><imagedata fileref="images/Portlet.png" format="PNG"></imagedata></imageobject></mediaobject><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Left pane </entry><entry> lists all portlets in two parts: Local and Remote </entry></row><row><entry> Right pane </entry><entry> shows detail information about a portlet: Name, Display name, Description and Portlet preferences. </entry></row></tbody></tgroup></informaltable><para>2. Select one portlet in the list on the left pane. The detail information of that portlet a!
ppears on the right pane.</para>
-</section>
-<section>
- <title>Add a Gadget</title>
- <para>You can follow these steps to add a gadget to the gadget list
- :</para>
- <para>
- 1. Go to the
- <emphasis role="bold">Administration</emphasis>
- --> <emphasis role="bold">Application Registry</emphasis> and click on <emphasis role="bold">Gadget</emphasis> :</para><mediaobject><imageobject><imagedata fileref="images/Gadgetnew.png" format="PNG"></imagedata></imageobject></mediaobject><para>There are two ways to add gadgets:</para>
-</section>
-<section>
- <title>Add a remote Gadget</title>
- <para>
- 1. Open the form to add a remote gadget by clicking
- <emphasis role="bold">Add a remote gadget</emphasis>
- :
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/AddGadgetnew.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- 2. Enter a link to an .xml file in the
- <emphasis role="bold">URL</emphasis>
- field.
- </para>
- <para>
- 3. Click on the
- <emphasis role="bold">Add</emphasis>
- button to accept the entered URL or on the
- <emphasis role="bold">Cancel</emphasis>
- button to quit. The added gadget will be added into gadget list on
- left pane of the Dashboard portlet.
- </para>
-</section>
- <section>
- <title>Create a new Gadget</title>
+ <imageobject>
+ <imagedata fileref="images/Portlet.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Left pane
+ </entry>
+ <entry>
+ lists all portlets in two parts: Local and Remote
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Right pane
+ </entry>
+ <entry>
+ shows detail information about a portlet: Name, Display name, Description and Portlet preferences.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
<para>
- 1. Show the form to add a new gadget by clicking
- <emphasis role="bold">Create a new gadget</emphasis>
- :
+ 2. Select one portlet in the list on the left pane. The detail information of that portlet appears on the right pane.
</para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Add_a_Gadget">
+ <title>Add a Gadget</title>
+ <para>
+ You can follow these steps to add a gadget to the gadget list :
+ </para>
+ <para>
+ 1. Go to the <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Application Registry</emphasis> and click on <emphasis role="bold">Gadget</emphasis> :
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/CreateGadget1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Gadgetnew.png" format="PNG" />
</imageobject>
</mediaobject>
- <para>Source: The source code to create a new gadget. This
- source will be a .xml file.</para>
<para>
- 2. Enter a value for the
- <emphasis role="bold">Source</emphasis>
- field in this form.
+ There are two ways to add gadgets:
</para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Add_a_remote_Gadget">
+ <title>Add a remote Gadget</title>
<para>
- 3. Click the
- <emphasis role="bold">Save</emphasis>
- button to create a new gadget. The created gadget will be added to
- the gadget list on the left pane of the Dashboard Portlet.
+ 1. Open the form to add a remote gadget by clicking <emphasis role="bold">Add a remote gadget</emphasis> :
</para>
- <para>You also edit, refresh and delete a local gadget as well as a
- remote gadget:</para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ActionGadget.png" format="PNG"></imagedata>
+ <imagedata fileref="images/AddGadgetnew.png" format="PNG" />
</imageobject>
</mediaobject>
+ <para>
+ 2. Enter a link to an .xml file in the <emphasis role="bold">URL</emphasis> field.
+ </para>
+ <para>
+ 3. Click on the <emphasis role="bold">Add</emphasis> button to accept the entered URL or on the <emphasis role="bold">Cancel</emphasis> button to quit. The added gadget will be added into gadget list on left pane of the Dashboard portlet.
+ </para>
</section>
- <section>
- <title>Add a new Gadget to the Dashboard Portlet</title>
- <para>You can add a new gadget to the gadget list in the Dashboard
- portlet :</para>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Create_a_new_Gadget">
+ <title>Create a new Gadget</title>
<para>
- 1. Go to the Dashboard on the navigation bar. Click on the
- <emphasis role="bold">Add Gadgets</emphasis>
- link :
+ 1. Show the form to add a new gadget by clicking <emphasis role="bold">Create a new gadget</emphasis> :
</para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Add.png" format="PNG"></imagedata>
+ <imagedata fileref="images/CreateGadget1.png" format="PNG" />
</imageobject>
</mediaobject>
- <orderedlist numeration="arabic">
- <listitem>dialog to add a new gadget will appear :</listitem>
- </orderedlist>
+ <para>
+ Source: The source code to create a new gadget. This source will be a .xml file.
+ </para>
+ <para>
+ 2. Enter a value for the <emphasis role="bold">Source</emphasis> field in this form.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Save</emphasis> button to create a new gadget. The created gadget will be added to the gadget list on the left pane of the Dashboard Portlet.
+ </para>
+ <para>
+ You also edit, refresh and delete a local gadget as well as a remote gadget:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Add3.png" format="PNG"></imagedata>
+ <imagedata fileref="images/ActionGadget.png" format="PNG" />
</imageobject>
</mediaobject>
- <para>2. Enter a link (a .xml file or RSS) in the text box on the
- left pane.</para>
- <para>3. Click on the icon!images/PlusIcon.png! to add a new gadget
- to the gadget list beneath.</para>
</section>
-<section>
- <title>Manage Gadgets</title>
- <section>
- <title>Edit a Gadget</title>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Add_a_new_Gadget_to_the_Dashboard_Portlet">
+ <title>Add a new Gadget to the Dashboard Portlet</title>
<para>
- 1. Click the edit icon!images/EditGadget.png! . It will display a
- dialog:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Source.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
+ You can add a new gadget to the gadget list in the Dashboard portlet :
</para>
<para>
- 2. After editing , click the
- <emphasis role="bold">Save</emphasis>
- button to accept changing or
- <emphasis role="bold">Cancel</emphasis>
- button to quit.
+ 1. Go to the Dashboard on the navigation bar. Click on the <emphasis role="bold">Add Gadgets</emphasis> link :
</para>
- </section>
- <section>
- <title>Refresh a Gadget</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Add.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
<para>
- <itemizedlist>
- <listitem>Local gadget: After editing information about the
- gadget that you want to, click the icon!images/Refresh.png! to
- refresh all information of that gadget.</listitem>
- <listitem>Remote gadget: When information of a remote gadget
- has been changed by another server, click the
- icon!images/Refresh.png! means it will update information of a
- remote gadget from that server.</listitem>
- </itemizedlist>
+ The dialog to add a new gadget will appear :
</para>
- </section>
- <section>
- <title>Delete a Gadget</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Add3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
<para>
- 1. Click the trash can icon!images/DeleteGadget.png! on the row of
- the gadget that you want to delete. It will display an alert message
- :
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Delete.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
+ 2. Enter a link (a .xml file or RSS) in the text box on the left pane.
</para>
<para>
- 2. Click the
- <emphasis role="bold">OK</emphasis>
- button to accept deleting or
- <emphasis role="bold">Cancel</emphasis>
- button to quit without deleting.
+ 3. Click on the icon!images/PlusIcon.png! to add a new gadget to the gadget list beneath.
</para>
</section>
+
+ <section id="sect-User_Guide-Manage_Portlets_and_Gadgets-Manage_Gadgets">
+ <title>Manage Gadgets</title>
+ <section id="sect-User_Guide-Manage_Gadgets-Edit_a_Gadget">
+ <title>Edit a Gadget</title>
+ <para>
+ 1. Click the edit icon!images/EditGadget.png! . It will display a dialog:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Source.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </para>
+ <para>
+ 2. After editing , click the <emphasis role="bold">Save</emphasis> button to accept changing or <emphasis role="bold">Cancel</emphasis> button to quit.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Gadgets-Refresh_a_Gadget">
+ <title>Refresh a Gadget</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Local gadget: After editing information about the gadget that you want to, click the icon!images/Refresh.png! to refresh all information of that gadget.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remote gadget: When information of a remote gadget has been changed by another server, click the icon!images/Refresh.png! means it will update information of a remote gadget from that server.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Gadgets-Delete_a_Gadget">
+ <title>Delete a Gadget</title>
+ <para>
+ 1. Click the trash can icon!images/DeleteGadget.png! on the row of the gadget that you want to delete. It will display an alert message :
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Delete.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </para>
+ <para>
+ 2. Click the <emphasis role="bold">OK</emphasis> button to accept deleting or <emphasis role="bold">Cancel</emphasis> button to quit without deleting.
+ </para>
+ </section>
+
+ </section>
+
</section>
-</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/language/Change_Interface_Language.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/language/Change_Interface_Language.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/language/Change_Interface_Language.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Change_Interface_Language">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,32 +21,176 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Change Interface Language</title>
- <para>GateIn Portal provides users with the most familiar interface
- language to work with and perform all actions efficiently. The
- priority of the interface language is 1. User's language 2. Browser's
- language 3. Portal 's language. Thus to display your prefer language,
- you should pay attention to this order to change the language type
- appropriately.</para>
- <para>You can change the interface language permanently by three
- ways :</para>
- <section>
+ --><title>Change Interface Language</title>
+ <para>
+ GateIn Portal provides users with the most familiar interface language to work with and perform all actions efficiently. The priority of the interface language is 1. User's language 2. Browser's language 3. Portal 's language. Thus to display your prefer language, you should pay attention to this order to change the language type appropriately.
+ </para>
+ <para>
+ You can change the interface language permanently by three ways :
+ </para>
+ <section id="sect-User_Guide-Change_Interface_Language-The_1st_way">
<title>The 1^st^ way</title>
+ <para>
+ This way supports you to change the interface language of the current Portal.
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current portal</emphasis>.
+ </para>
+ <para>
+ 2. Click !images/EditIcon.png! icon to edit portal's properties.
+ </para>
+ <para>
+ 3. In the <emphasis role="bold">Portal Setting</emphasis> tab: You can change display language of Portal by selecting another language in the <emphasis role="bold">Locale</emphasis> field.
+ </para>
+ <para>
+ 4. Click <emphasis role="bold">Save</emphasis> and <emphasis role="bold">Finish</emphasis>!images/FinishIcon.png! icon to take affect.
+ </para>
+ <para>
+ For Portal 2.6
+ </para>
+ <para>
+ You easily change the interface language of the current Portal by following guides:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">Editor</emphasis> on the Toolbar --> click <emphasis role="bold">Edit Page</emphasis>. The <emphasis role="bold">Edit Inline Composer</emphasis> popup will appear:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditInline.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 2. Click on <emphasis role="bold">Portal Properties</emphasis> to edit portal's properties.
+ </para>
+ <para>
+ 3. In the <emphasis role="bold">Portal Setting</emphasis> tab: You can change display language of Portal by selecting another language in the <emphasis role="bold">Locale</emphasis> field.
+ </para>
+ <para>
+ 4. Click <emphasis role="bold">Save</emphasis> and <emphasis role="bold">Finish</emphasis>!images/DiskIcon.png! icon to take affect.
+ </para>
</section>
- <para>This way supports you to change the interface language of the
- current Portal.</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current portal</emphasis>.</para><para>2. Click !images/EditIcon.png! icon to edit portal's properties.</para><para>3. In the <emphasis role="bold">Portal Setting</emphasis> tab: You can change display language of Portal by selecting another language in the <emphasis role="bold">Locale</emphasis> field.</para><para>4. Click <emphasis role="bold">Save</emphasis> and <emphasis role="bold">Finish</emphasis>!images/FinishIcon.png! icon to take affect.</para><variablelist><listitem>For Portal 2.6</listitem></variablelist><para>You easily change the interface language of the current Portal by following guides:</para><para>1. Go to <emphasis role="bold">Editor</emphasis> on the Toolbar --> click <emphasis role="bold">Edit Page</emphasis>. The <emphasis role="bold">Edit Inline Composer</emphasis> popup will appear:</para><mediaobject><image!
object><imagedata fileref="images/EditInline.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click on <emphasis role="bold">Portal Properties</emphasis> to edit portal's properties.</para><para>3. In the <emphasis role="bold">Portal Setting</emphasis> tab: You can change display language of Portal by selecting another language in the <emphasis role="bold">Locale</emphasis> field.</para><para>4. Click <emphasis role="bold">Save</emphasis> and <emphasis role="bold">Finish</emphasis>!images/DiskIcon.png! icon to take affect.</para>
-<section><title>The 2^nd^ way</title></section>
-<para>If you can access GateIn Start, you can do this way to set interface language for yourself, not for interface language of Portal by these following steps:</para><para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Language Settings</emphasis></para><mediaobject><imageobject><imagedata fileref="images/InterfaceLanguage.png" format="PNG"></imagedata></imageobject></mediaobject><para>The <emphasis role="bold">Interface Language Setting</emphasis> form is displayed with a list of all supported languages. The current using language is marked by!images/MarkedIcon.png! icon.</para><para>2. Select another one by clicking on the name of language.</para><para>3. Click the <emphasis role="bold">Apply</emphasis> button and wait for few seconds to take affect.</para><variablelist><listitem>For Portal 2.6</listitem></variablelist><para>You can set the interface language for yourself by follo!
wing guides:</para><para>1. Go to GateIn on the Toolbar --> click <emphasis role="bold">Change Language</emphasis></para><mediaobject><imageobject><imagedata fileref="images/InterfaceLanguage2.6.png" format="PNG"></imagedata></imageobject></mediaobject><para>The <emphasis role="bold">Interface Language Setting</emphasis> form is displayed with a list of all supported languages. The current using language is marked by!images/MarkedIcon.png! icon.</para><para>2. Select another one by clicking on the name of language.</para><para>3. Click the <emphasis role="bold">Apply</emphasis> button and wait for few seconds to take affect.</para>
-<section><title>The 3^rd^ way</title></section>
-<para>You also set interface language for yourself, not for interface language of the Portal by this way.</para><para>1. Click <emphasis role="bold">Change Language</emphasis> on the right corner to show the <emphasis role="bold">Interface Language Setting</emphasis> form:</para><mediaobject><imageobject><imagedata fileref="images/Root1.png" format="PNG"></imagedata></imageobject></mediaobject><para>The <emphasis role="bold">Interface Language Setting</emphasis> form will appear:</para><mediaobject><imageobject><imagedata fileref="images/InterfaceLanguage.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Select another language in list. The selected language will be marked by !images/MarkedIcon.png! icon.</para><para>3. Click the <emphasis role="bold">Apply</emphasis> button to change the interface language and wait for few seconds to take affect or click the <emphasis role="bold">Cancel</emphasis> button to quit without changes.</para>
-<section><title>Set language for a user</title></section>
-<para>There are two modes to set displaying language for a user.</para><itemizedlist><listitem><emphasis role="bold">Public Mode</emphasis>: Displaying language of this mode depends on the language of browser that you are using.</listitem></itemizedlist><itemizedlist><listitem>If you set language of browser that Portal does not support, the displaying language will be the language of Portal.</listitem><listitem>If you set language of browser that Portal supports, the displaying language will be the language of browser.</listitem></itemizedlist><itemizedlist><listitem><emphasis role="bold">Private Mode</emphasis>: Displaying language of this mode belongs to the language of each user which is set when registering.</listitem></itemizedlist><itemizedlist><listitem>When you sign in by a default account (root, john, demo, marry): the displaying language of these users are none, so it will belong to browser's language. If you change value in the <emphasis role="bold">Language</emp!
hasis> field in the <emphasis role="bold">User Profile</emphasis> tab (only default user: root and john can change this value by access 'Management' page: Go to <emphasis role="bold">Organization</emphasis>--> <emphasis role="bold">Management</emphasis> page), your displaying language will be the set value. Your displaying language has also directly affect when you change language by other ways.</listitem><listitem>When you sign in by a new registered user: by default, your displaying language is English. However, if you set by another language in the <emphasis role="bold">Language</emphasis> field in the <emphasis role="bold">User Profile</emphasis> tab when you register a new account, your displaying language is the set language.</listitem></itemizedlist>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-Change_Interface_Language-The_2nd_way">
+ <title>The 2^nd^ way</title>
+ <para>
+ If you can access GateIn Start, you can do this way to set interface language for yourself, not for interface language of Portal by these following steps:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Language Settings</emphasis>
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/InterfaceLanguage.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The <emphasis role="bold">Interface Language Setting</emphasis> form is displayed with a list of all supported languages. The current using language is marked by!images/MarkedIcon.png! icon.
+ </para>
+ <para>
+ 2. Select another one by clicking on the name of language.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Apply</emphasis> button and wait for few seconds to take affect.
+ </para>
+ <para>
+ For Portal 2.6
+ </para>
+ <para>
+ You can set the interface language for yourself by following guides:
+ </para>
+ <para>
+ 1. Go to GateIn on the Toolbar --> click <emphasis role="bold">Change Language</emphasis>
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/InterfaceLanguage2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The <emphasis role="bold">Interface Language Setting</emphasis> form is displayed with a list of all supported languages. The current using language is marked by!images/MarkedIcon.png! icon.
+ </para>
+ <para>
+ 2. Select another one by clicking on the name of language.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Apply</emphasis> button and wait for few seconds to take affect.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Change_Interface_Language-The_3rd_way">
+ <title>The 3^rd^ way</title>
+ <para>
+ You also set interface language for yourself, not for interface language of the Portal by this way.
+ </para>
+ <para>
+ 1. Click <emphasis role="bold">Change Language</emphasis> on the right corner to show the <emphasis role="bold">Interface Language Setting</emphasis> form:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Root1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The <emphasis role="bold">Interface Language Setting</emphasis> form will appear:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/InterfaceLanguage.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 2. Select another language in list. The selected language will be marked by !images/MarkedIcon.png! icon.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Apply</emphasis> button to change the interface language and wait for few seconds to take affect or click the <emphasis role="bold">Cancel</emphasis> button to quit without changes.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Change_Interface_Language-Set_language_for_a_user">
+ <title>Set language for a user</title>
+ <para>
+ There are two modes to set displaying language for a user.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">Public Mode</emphasis>: Displaying language of this mode depends on the language of browser that you are using.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If you set language of browser that Portal does not support, the displaying language will be the language of Portal.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If you set language of browser that Portal supports, the displaying language will be the language of browser.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">Private Mode</emphasis>: Displaying language of this mode belongs to the language of each user which is set when registering.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When you sign in by a default account (root, john, demo, marry): the displaying language of these users are none, so it will belong to browser's language. If you change value in the <emphasis role="bold">Language</emphasis> field in the <emphasis role="bold">User Profile</emphasis> tab (only default user: root and john can change this value by access 'Management' page: Go to <emphasis role="bold">Organization</emphasis>--> <emphasis role="bold">Management</emphasis> page), your displaying language will be the set value. Your displaying language has also directly affect when you change language by other ways.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When you sign in by a new registered user: by default, your displaying language is English. However, if you set by another language in the <emphasis role="bold">Language</emphasis> field in the <emphasis role="bold">User Profile</emphasis> tab when you register a new account, your displaying language is the set language.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/language/Internationalization_Portlet.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/language/Internationalization_Portlet.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/language/Internationalization_Portlet.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Internationalization_Portlet">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,127 +21,110 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Internationalization Portlet</title>
- <para>This portlet is used to define a word or a phrase of the
- current language to an expected language. The form of this portlet is
- like:</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Inter2.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>Each resource supports a language. So, you can define a word
- or a phrase according to the supported language.</para>
- <section>
- <title>Add a new Resource</title>
- </section>
+ --><title>Internationalization Portlet</title>
<para>
- 1. Select the
- <emphasis role="bold">New Resource</emphasis>
- button in the
- <emphasis role="bold">Internationalization
- Portlet</emphasis>
- form. The
- <emphasis role="bold">Resource Data</emphasis>
- form will appear:
+ This portlet is used to define a word or a phrase of the current language to an expected language. The form of this portlet is like:
</para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ResourceData1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Inter2.png" format="PNG" />
</imageobject>
</mediaobject>
- <informaltable frame="none" rowsep="0" colsep="0">
- <tgroup cols="2">
- <colspec align="center"></colspec>
- <colspec align="center"></colspec>
- <tbody>
- <row>
- <entry>
- <emphasis role="bold"> Name </emphasis>
- </entry>
- <entry>
- <emphasis role="bold"> Description </emphasis>
- </entry>
- </row>
- <row>
- <entry> Name </entry>
- <entry> The name of Resource. This field is required. </entry>
- </row>
- <row>
- <entry> Language </entry>
- <entry> The language that this resource 'll support. This field is
- required. </entry>
- </row>
- <row>
- <entry> Resource </entry>
- <entry> The word or the phrase which you want to define. </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- <para>2. Enter values into required fields.</para>
<para>
- 3. Click the
- <emphasis role="bold">Save</emphasis>
- button to accept adding a new resource or the
- <emphasis role="bold">Cancel</emphasis>
- button to quit.
+ Each resource supports a language. So, you can define a word or a phrase according to the supported language.
</para>
- <section>
+ <section id="sect-User_Guide-Internationalization_Portlet-Add_a_new_Resource">
+ <title>Add a new Resource</title>
+ <para>
+ 1. Select the <emphasis role="bold">New Resource</emphasis> button in the <emphasis role="bold">Internationalization Portlet</emphasis> form. The <emphasis role="bold">Resource Data</emphasis> form will appear:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ResourceData1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Name
+ </entry>
+ <entry>
+ The name of Resource. This field is required.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Language
+ </entry>
+ <entry>
+ The language that this resource 'll support. This field is required.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Resource
+ </entry>
+ <entry>
+ The word or the phrase which you want to define.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ 2. Enter values into required fields.
+ </para>
+ <para>
+ 3. Click the <emphasis role="bold">Save</emphasis> button to accept adding a new resource or the <emphasis role="bold">Cancel</emphasis> button to quit.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Internationalization_Portlet-View_and_Edit_a_Resource">
<title>View and Edit a Resource</title>
+ <para>
+ Click the magnifying icon !images/GlassIcon.png! corresponding to resource which you want to view. On the view form, you also can edit information again by clicking the <emphasis role="bold">Edit</emphasis> button. You only can change <emphasis role="bold">Resource</emphasis> field, then click the <emphasis role="bold">Save</emphasis> button to accept changes or click the <emphasis role="bold">Cancel</emphasis> button to quit without saving any changes.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Resource2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>
- Click the magnifying icon !images/GlassIcon.png! corresponding to
- resource which you want to view. On the view form, you also can edit
- information again by clicking the
- <emphasis role="bold">Edit</emphasis>
- button. You only can change
- <emphasis role="bold">Resource</emphasis>
- field, then click the
- <emphasis role="bold">Save</emphasis>
- button to accept changes or click the
- <emphasis role="bold">Cancel</emphasis>
- button to quit without saving any changes.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Resource2.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Internationalization_Portlet-Delete_a_Resource">
<title>Delete a Resource</title>
+ <para>
+ Click the trash can icon!images/DeleIcon.png! corresponding to the resource which you want to delete. There 'll be a confirmation message, click the <emphasis role="bold">OK</emphasis> button to confirm deleting and the <emphasis role="bold">Cancel</emphasis> button to quit.
+ </para>
</section>
- <para>
- Click the trash can icon!images/DeleIcon.png! corresponding to the
- resource which you want to delete. There 'll be a confirmation
- message, click the
- <emphasis role="bold">OK</emphasis>
- button to confirm deleting and the
- <emphasis role="bold">Cancel</emphasis>
- button to quit.
- </para>
- <section>
+
+ <section id="sect-User_Guide-Internationalization_Portlet-Search_a_Resource">
<title>Search a Resource</title>
+ <para>
+ The <emphasis role="bold">Search Resource</emphasis> form displays directly on the portlet:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Resource3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ Enter the name of the resource which you want to search and select the supported language. Click the <emphasis role="bold">Search</emphasis> button to perform searching and displaying a list of the expected Resource.
+ </para>
</section>
- <para>
- The
- <emphasis role="bold">Search Resource</emphasis>
- form displays directly on the portlet:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Resource3.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- Enter the name of the resource which you want to search and select the
- supported language. Click the
- <emphasis role="bold">Search</emphasis>
- button to perform searching and displaying a list of the expected
- Resource.
- </para>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/language/Multi-Language_Navigation_Nodes.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/language/Multi-Language_Navigation_Nodes.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/language/Multi-Language_Navigation_Nodes.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Multi_Language_Navigation_Nodes">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,56 +21,270 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Multi-Language Navigation Nodes</title>
- <section>
+ --><title>Multi-Language Navigation Nodes</title>
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-Overview">
<title>Overview</title>
+ <para>
+ Exo Portal supports a multi-language environment for your portal. You can internationalize any menu entry on the navigation. As the navigation bar is composed by nodes so you have to modify the display names of the nodes. Instead of entering the display name in English you have to use a so called resource key. This resource key is used to define the label that is shown on the navigation bar, the menu, and the breadcrumb.
+ </para>
</section>
- <para>Exo Portal supports a multi-language environment for your
- portal. You can internationalize any menu entry on the navigation. As
- the navigation bar is composed by nodes so you have to modify the
- display names of the nodes. Instead of entering the display name in
- English you have to use a so called resource key. This resource key is
- used to define the label that is shown on the navigation bar, the
- menu, and the breadcrumb.</para>
- <section>
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-Key_Format">
<title>Key Format</title>
+ <para>
+ The resource key format is: <emphasis role="bold">#{key}</emphasis>
+ </para>
+ <para>
+ The resource key is the can contain any text that you consider to be fine. It should be human-readable and must not contain spaces.
+ </para>
</section>
- <para>
- The resource key format is:
- <emphasis role="bold">#{key}</emphasis>
- </para>
- <para>The resource key is the can contain any text that you consider
- to be fine. It should be human-readable and must not contain spaces.</para>
- <section>
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-Creating_Keys">
<title>Creating Keys</title>
+ <para>
+ There are three ways to create a key for a node: using the <emphasis role="bold">Create Page Wizard</emphasis> or using the <emphasis role="bold">Edit Page Wizard</emphasis> or the <emphasis role="bold">Edit Page and Navigation</emphasis> dialog.
+ </para>
</section>
- <para>
- There are three ways to create a key for a node: using the
- <emphasis role="bold">Create Page Wizard</emphasis>
- or using the
- <emphasis role="bold">Edit Page Wizard</emphasis>
- or the
- <emphasis role="bold">Edit Page and Navigation</emphasis>
- dialog.
- </para>
- <section>
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-Creating_Keys_using_the_Create_Page_Wizard">
<title>Creating Keys using the *Create Page Wizard*</title>
+ <para>
+ You can follow these steps:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Basic</emphasis> --> <emphasis role="bold">Create Page Wizard</emphasis>
+ </para>
+ </step>
+ <step>
+ <para>
+ 2. Click <emphasis role="bold">Next</emphasis> to move to step 1
+ </para>
+ </step>
+ <step>
+ <para>
+ 3. At step 1, continue as usual, but enter a resource key in the <emphasis role="bold">Display Name</emphasis> field.
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageWizard.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </para>
+ </step>
+ <step>
+ <para>
+ 4. Click on the <emphasis role="bold">Next</emphasis> button and continue and click on the <emphasis role="bold">Save</emphasis> button. For example, create a key named "AAA".
+ </para>
+ </step>
+ </procedure>
+
</section>
- <para>You can follow these steps:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Basic</emphasis> --> <emphasis role="bold">Create Page Wizard</emphasis></para><para>2. Click <emphasis role="bold">Next</emphasis> to move to step 1</para><para>3. At step 1, continue as usual, but enter a resource key in the <emphasis role="bold">Display Name</emphasis> field.</para><mediaobject><imageobject><imagedata fileref="images/PageWizard.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Click on the <emphasis role="bold">Next</emphasis> button and continue and click on the <emphasis role="bold">Save</emphasis> button. For example, create a key named "AAA".</para>
-<section><title>Creating/Editing Keys by *Edit Page Wizard*</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Basic</emphasis> --> <emphasis role="bold">Edit Page Wizard</emphasis></para><para>2. Click on the <emphasis role="bold">Next</emphasis> button to move to step 1</para><para>3. At step 1, continue as usual, but enter a resource key in the <emphasis role="bold">Display Name</emphasis> field.</para>
-<section><title>Creating/Editing Keys using the *Edit Page and Navigation*</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>.</para><para>2. There are two alternatives:</para><itemizedlist><listitem>Create a new node: Select the parent path, right click and click on <emphasis role="bold">Add new node</emphasis> option .</listitem><listitem>Edit an existing node: Right click on the node you want to create/edit key and click on <emphasis role="bold">Edit this node</emphasis> in the pop-up menu.</listitem></itemizedlist><para>3. A Create/Edit node dialog appears, enter a resource key in the <emphasis role="bold">Label</emphasis> field</para><para>+Note:+ You can reuse the same resource key in several nodes.</para>
-<section><title>Internationalize Resource Keys</title></section>
-<para>Exo Portal organizes resource keys in resource files. Each file contains a list of keys and their meanings (translations) in one specific language. Normally one resource file has one language supported by Portal. This helps to structure the resource keys. Each resource file has a name and a language attribute. One resource file only can contain translations for one single language.</para><para>Do as follows: 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Page Navigation</emphasis> -> <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Internationalization</emphasis></para><mediaobject><imageobject><imagedata fileref="images/Internal2.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Select a data resource that you want to internationalize. You also may search the desired resource name with a specific language:</para><itemizedlist><listitem>Enter a resource name in the <emphasis role="bold!
">Name</emphasis> field in the <emphasis role="bold">Search Resource</emphasis> form</listitem><listitem>Select a corresponding language of the resource.</listitem><listitem>Click on the <emphasis role="bold">Search</emphasis> button to match all data resource and display the result on the table above.</listitem><listitem>If you want to define a key for a node which belongs to a specific portal, search for a resource like:locale.navigation.portal.portal name]</listitem></itemizedlist><para>+Example:+ if you want to define a key of a node of portal "classic" in language French, search resource: locale.navigation.portal.classic with value in the <emphasis role="bold">Language</emphasis> field is "fr"</para><itemizedlist><listitem>If you want to define a key for the node that belongs to a specific group, search resource like: locale.navigation.group.group path]</listitem></itemizedlist><para>+Example:+ if you want to define a key for a node on navigation o!
f "administrators" group that is the sub one of the!
"p
latform" group in language French, search resource: locale.navigation.group.platform.administrators with the value in the <emphasis role="bold">Language</emphasis> field is "fr"</para><para>3. Click the magnifying glass!images/MagnifyIcon.png! icon corresponding to a data resource to see details of the resource file. Click the <emphasis role="bold">Edit</emphasis> button in order to modify the content.</para><para>4. Enter the resource key with the string that will be displayed as node name on the navigation bar .</para><para>5. Click on the <emphasis role="bold">Save</emphasis> button.</para>
-<section><title>Example</title></section>
-<itemizedlist><listitem>The current language is English</listitem><listitem>Go to <emphasis role="bold">Create Page Wizard</emphasis>, at step 1, select navigation and enter values like in the figure below:</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/PageWizard.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Click <emphasis role="bold">Next</emphasis>, at step 2 and 3, set layout for page Test button.</listitem><listitem>After creating page with that key, the node on the navigation bar will be displayed with name #{AAA}</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/AAANavi.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>And now you have to define what to display instead of displaying the key. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Page Navigation</emphasis> -> <emphasis role="bold">Administration</e!
mphasis> --> <emphasis role="bold">Internationalization</emphasis>.</listitem><listitem>Search resource locale.navigation.portal.classic with language French (fr)</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/Search.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Click the magnifying icon!images/MagnifyIcon.png! to see the content.</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/ResourceData1.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Click on the <emphasis role="bold">Edit</emphasis> button to modify. In the <emphasis role="bold">Resource</emphasis> field, enter the key and assign the string to display.</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/AfterEdit1.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Click on the <emphasis role="bold">Save</emphasis> button.</listite!
m><listitem>Go to GateIn <emphasis role="bold">Start</emphasis!
> ->
<emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Language Settings</emphasis>: select French --> Apply.</listitem><listitem>The French translation of your new resource key appears on the menu.</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/Nouvel.png" format="PNG"></imagedata></imageobject></mediaobject>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-CreatingEditing_Keys_by_Edit_Page_Wizard">
+ <title>Creating/Editing Keys by *Edit Page Wizard*</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Basic</emphasis> --> <emphasis role="bold">Edit Page Wizard</emphasis>
+ </para>
+ <para>
+ 2. Click on the <emphasis role="bold">Next</emphasis> button to move to step 1
+ </para>
+ <para>
+ 3. At step 1, continue as usual, but enter a resource key in the <emphasis role="bold">Display Name</emphasis> field.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-CreatingEditing_Keys_using_the_Edit_Page_and_Navigation">
+ <title>Creating/Editing Keys using the *Edit Page and Navigation*</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>.
+ </para>
+ <para>
+ 2. There are two alternatives:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Create a new node: Select the parent path, right click and click on <emphasis role="bold">Add new node</emphasis> option .
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Edit an existing node: Right click on the node you want to create/edit key and click on <emphasis role="bold">Edit this node</emphasis> in the pop-up menu.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ 3. A Create/Edit node dialog appears, enter a resource key in the <emphasis role="bold">Label</emphasis> field
+ </para>
+ <para>
+ +Note:+ You can reuse the same resource key in several nodes.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-Internationalize_Resource_Keys">
+ <title>Internationalize Resource Keys</title>
+ <para>
+ Exo Portal organizes resource keys in resource files. Each file contains a list of keys and their meanings (translations) in one specific language. Normally one resource file has one language supported by Portal. This helps to structure the resource keys. Each resource file has a name and a language attribute. One resource file only can contain translations for one single language.
+ </para>
+ <para>
+ Do as follows: 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Page Navigation</emphasis> -> <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Internationalization</emphasis>
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Internal2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 2. Select a data resource that you want to internationalize. You also may search the desired resource name with a specific language:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Enter a resource name in the <emphasis role="bold">Name</emphasis> field in the <emphasis role="bold">Search Resource</emphasis> form
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Select a corresponding language of the resource.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click on the <emphasis role="bold">Search</emphasis> button to match all data resource and display the result on the table above.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If you want to define a key for a node which belongs to a specific portal, search for a resource like:locale.navigation.portal.portal name]
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ +Example:+ if you want to define a key of a node of portal "classic" in language French, search resource: locale.navigation.portal.classic with value in the <emphasis role="bold">Language</emphasis> field is "fr"
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If you want to define a key for the node that belongs to a specific group, search resource like: locale.navigation.group.group path]
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ +Example:+ if you want to define a key for a node on navigation of "administrators" group that is the sub one of the "platform" group in language French, search resource: locale.navigation.group.platform.administrators with the value in the <emphasis role="bold">Language</emphasis> field is "fr"
+ </para>
+ <para>
+ 3. Click the magnifying glass!images/MagnifyIcon.png! icon corresponding to a data resource to see details of the resource file. Click the <emphasis role="bold">Edit</emphasis> button in order to modify the content.
+ </para>
+ <para>
+ 4. Enter the resource key with the string that will be displayed as node name on the navigation bar .
+ </para>
+ <para>
+ 5. Click on the <emphasis role="bold">Save</emphasis> button.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Multi_Language_Navigation_Nodes-Example">
+ <title>Example</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The current language is English
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Go to <emphasis role="bold">Create Page Wizard</emphasis>, at step 1, select navigation and enter values like in the figure below:
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageWizard.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click <emphasis role="bold">Next</emphasis>, at step 2 and 3, set layout for page Test button.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ After creating page with that key, the node on the navigation bar will be displayed with name #{AAA}
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AAANavi.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ And now you have to define what to display instead of displaying the key. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Page Navigation</emphasis> -> <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Internationalization</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Search resource locale.navigation.portal.classic with language French (fr)
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Search.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click the magnifying icon!images/MagnifyIcon.png! to see the content.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ResourceData1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click on the <emphasis role="bold">Edit</emphasis> button to modify. In the <emphasis role="bold">Resource</emphasis> field, enter the key and assign the string to display.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AfterEdit1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click on the <emphasis role="bold">Save</emphasis> button.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Go to GateIn <emphasis role="bold">Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Language Settings</emphasis>: select French --> Apply.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The French translation of your new resource key appears on the menu.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Nouvel.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/language/Right_To_Left_Support_(RTL).xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/language/Right_To_Left_Support_(RTL).xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/language/Right_To_Left_Support_(RTL).xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-RTL_Support_Right_To_Left">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,64 +21,63 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>RTL Support (Right To Left)</title>
- <para>GateIn Portal supports RTL (Right to Left) to meet the demand of
- Arabian customers who want to use the Portal by their own language for
- more convenient and easy to use. When you change from other languages
- to Arabic or set the displaying language as Arabic, the displaying on
- Portal will be changed to Right to Left (RTL) direction because
- Arabian usually read from Right to Left.</para>
- <para>Some screen shots of Portal with RTL:</para>
+ --><title>RTL Support (Right To Left)</title>
+ <para>
+ GateIn Portal supports RTL (Right to Left) to meet the demand of Arabian customers who want to use the Portal by their own language for more convenient and easy to use. When you change from other languages to Arabic or set the displaying language as Arabic, the displaying on Portal will be changed to Right to Left (RTL) direction because Arabian usually read from Right to Left.
+ </para>
+ <para>
+ Some screen shots of Portal with RTL:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/HomePage2.png" format="PNG"></imagedata>
+ <imagedata fileref="images/HomePage2.png" format="PNG" />
</imageobject>
</mediaobject>
- <section>
+ <section id="sect-User_Guide-RTL_Support_Right_To_Left-The_Account_Portlet">
<title>The Account Portlet</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/NewAccount3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/NewAccount3.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-RTL_Support_Right_To_Left-The_Application_Registry_Portlet">
<title>The Application Registry Portlet</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ApplicationRegistry2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/ApplicationRegistry2.png"
- format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-RTL_Support_Right_To_Left-The_Internationalization_Portlet">
<title>The Internationalization Portlet:</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/In3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/In3.png"
- format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-RTL_Support_Right_To_Left-The_Organization_Portlet">
<title>The Organization Portlet:</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Organization5.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Organization5.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-RTL_Support_Right_To_Left-The_User_Workspace">
<title>The User Workspace</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/UserWorkspace2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/UserWorkspace2.png"
- format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Change_Node_Order.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Change_Node_Order.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Change_Node_Order.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Change_Node_Order">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,15 +21,32 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Change Node Order</title>
+ <para>
+ You can easily change the position of node on the navigation bar on their own convenient order by following these steps:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>.
+ </para>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Navigation.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 3. Select the node that you want to move. Right click on the selected node and then click on <emphasis role="bold">Move up</emphasis> or <emphasis role="bold">Move down</emphasis>
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/MoveUpDown.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The selected node will be moved up/down.
+ </para>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Change Node Order</title>
- <para>You can easily change the position of node on the navigation
- bar on their own convenient order by following these steps:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>.</para><para>2. Select a navigation from the navigation list.</para><mediaobject><imageobject><imagedata fileref="images/Navigation.png" format="PNG"></imagedata></imageobject></mediaobject><para>3. Select the node that you want to move. Right click on the selected node and then click on <emphasis role="bold">Move up</emphasis> or <emphasis role="bold">Move down</emphasis></para><mediaobject><imageobject><imagedata fileref="images/MoveUpDown.png" format="PNG"></imagedata></imageobject></mediaobject><para>The selected node will be moved up/down.</para>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Change_Portal_Skins.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Change_Portal_Skins.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Change_Portal_Skins.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Change_Portal_Skins">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,31 +21,113 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Change Portal Skins</title>
- <section>
+ --><title>Change Portal Skins</title>
+ <section id="sect-User_Guide-Change_Portal_Skins-Overview">
<title>Overview</title>
+ <para>
+ GateIn Portal skins are graphic styles that help users display an attractive user interface. Each skin has its own characteristics with different backgrounds, icons, etc. In order to be user-friendly and flexible in use, users are allowed to change their skins without having edit rights on the portal.
+ </para>
+ <para>
+ skin switch that takes only effect on the user's current session until he signs out. You can change the skin permanently or temporarily.
+ </para>
</section>
- <para>GateIn Portal skins are graphic styles that help users display an
- attractive user interface. Each skin has its own characteristics with
- different backgrounds, icons, etc. In order to be user-friendly and
- flexible in use, users are allowed to change their skins without
- having edit rights on the portal.</para>
- <orderedlist numeration="arabic">
- <listitem>skin switch that takes only effect on the user's current
- session until he signs out. You can change the skin permanently or
- temporarily.</listitem>
- </orderedlist>
- <section>
+
+ <section id="sect-User_Guide-Change_Portal_Skins-Change_the_skin_permanently">
<title>Change the skin permanently</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current portal</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the edit icon!images/EditIcon.png! to edit portal properties.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. In the <emphasis role="bold">Portal Setting</emphasis> tab: select one skin type in the <emphasis role="bold">Skin</emphasis> list field to change and display a skin.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Skin1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Click <emphasis role="bold">Save</emphasis> and <emphasis role="bold">Finish</emphasis> icon !images/Finish1.png! so that the modification can take effect.
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ For Portal 2.6
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Click <emphasis role="bold">Edit Inline</emphasis> on the Toolbar. The <emphasis role="bold">Edit Inline Composer</emphasis> will appear.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click <emphasis role="bold">Portal Properties</emphasis> to edit portal's properties.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. In the <emphasis role="bold">Portal Setting</emphasis> tab: select one skin type in the <emphasis role="bold">Skin</emphasis> list field to change and display a skin.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PortalSet.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Click <emphasis role="bold">Save</emphasis> and the !images/DiskIcon.png! icon so that the modification can take effect.
+ </para>
+ </listitem>
+ </orderedlist>
</section>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current portal</emphasis></para><para>2. Click the edit icon!images/EditIcon.png! to edit portal properties.</para><para>3. In the <emphasis role="bold">Portal Setting</emphasis> tab: select one skin type in the <emphasis role="bold">Skin</emphasis> list field to change and display a skin.</para><mediaobject><imageobject><imagedata fileref="images/Skin1.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Click <emphasis role="bold">Save</emphasis> and <emphasis role="bold">Finish</emphasis> icon !images/Finish1.png! so that the modification can take effect.</para><variablelist><listitem>For Portal 2.6</listitem></variablelist><para>1. Click <emphasis role="bold">Edit Inline</emphasis> on the Toolbar. The <emphasis role="bold">Edit Inline Composer</emphasis> will appear.</para><para>2. Click <emphasis role="bold">Portal P!
roperties</emphasis> to edit portal's properties.</para><para>3. In the <emphasis role="bold">Portal Setting</emphasis> tab: select one skin type in the <emphasis role="bold">Skin</emphasis> list field to change and display a skin.</para><mediaobject><imageobject><imagedata fileref="images/PortalSet.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Click <emphasis role="bold">Save</emphasis> and the !images/DiskIcon.png! icon so that the modification can take effect.</para>
-<section><title>Change the skin temporarily</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Skin Settings</emphasis>.</para><variablelist><listitem>For GateIn Portal 2.6</listitem></variablelist><para>1. Go to <emphasis role="bold">GateIn</emphasis> on the Toolbar --> click <emphasis role="bold">Change Skin</emphasis>.</para><para>The <emphasis role="bold">Skin Setting</emphasis> form is displayed with a list of all supported skins. The left pane contains the skin list and the right pane is used to display the template of the selected skin.</para><para>2. Select one by clicking on the skin's name.</para><para>3. Click the <emphasis role="bold">Apply</emphasis> button and wait for few seconds to take effect.</para><mediaobject><imageobject><imagedata fileref="images/SkinSet1.png" format="PNG"></imagedata></imageobject></mediaobject>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-Change_Portal_Skins-Change_the_skin_temporarily">
+ <title>Change the skin temporarily</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Skin Settings</emphasis>.
+ </para>
+ <para>
+ For GateIn Portal 2.6
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn</emphasis> on the Toolbar --> click <emphasis role="bold">Change Skin</emphasis>.
+ </para>
+ <para>
+ The <emphasis role="bold">Skin Setting</emphasis> form is displayed with a list of all supported skins. The left pane contains the skin list and the right pane is used to display the template of the selected skin.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Select one by clicking on the skin's name.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Click the <emphasis role="bold">Apply</emphasis> button and wait for few seconds to take effect.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SkinSet1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </orderedlist>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Create_a_New_Portal.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Create_a_New_Portal.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Create_a_New_Portal.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Create_a_New_Portal">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,126 +21,90 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Create a New Portal</title>
- <para>Creating a new portal requires you to have a special
- permission
- that only an administrator can give you. You need follow
- these guides
- to create a new portal.</para>
+ --><title>Create a New Portal</title>
<para>
+ Creating a new portal requires you to have a special permission that only an administrator can give you. You need follow these guides to create a new portal.
+ </para>
+ <para>
<orderedlist>
<listitem>
<para>
- Click on
- <emphasis role="bold">Site</emphasis>
- in the toolbar.
+ Click on <emphasis role="bold">Site</emphasis> in the toolbar.
</para>
</listitem>
<listitem>
<para>
- Click the
- <emphasis role="bold">Add New Portal</emphasis>
- button.
- By default, the
- <emphasis role="bold">Create New Portal</emphasis>
- form is shown with the
- <emphasis role="bold">Portal Templates</emphasis>
- tab.
+ Click the <emphasis role="bold">Add New Portal</emphasis> button. By default, the <emphasis role="bold">Create New Portal</emphasis> form is shown with the <emphasis role="bold">Portal Templates</emphasis> tab.
<mediaobject>
<imageobject>
- <imagedata fileref="images/PortalTemplate2.6.png"
- format="PNG"></imagedata>
+ <imagedata fileref="images/PortalTemplate2.6.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
<para>
- <para>
- By default, Portal template is Classic. Select the
- <emphasis role="bold">Portal Setting</emphasis>
- tab.
- </para>
+ By default, Portal template is Classic. Select the <emphasis role="bold">Portal Setting</emphasis> tab.
<mediaobject>
<imageobject>
- <imagedata fileref="images/PortalSetting2.5.png"
- format="PNG"></imagedata>
+ <imagedata fileref="images/PortalSetting2.5.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
<para>
- Enter a value for the
- <emphasis role="bold">Portal Name</emphasis>
- field. This field is required and must be unique. Only alpha, digit
- and underscore characters are allowed for this field and it must
- have at least 3 characters.
+ Enter a value for the <emphasis role="bold">Portal Name</emphasis> field. This field is required and must be unique. Only alpha, digit and underscore characters are allowed for this field and it must have at least 3 characters.
</para>
</listitem>
<listitem>
- <para>Select a display language for the portal by selecting a
- language
- from the list.</para>
+ <para>
+ Select a display language for the portal by selecting a language from the list.
+ </para>
</listitem>
<listitem>
- <para>Select a skin for a portal by selecting one from the skin
- list.</para>
+ <para>
+ Select a skin for a portal by selecting one from the skin list.
+ </para>
</listitem>
<listitem>
<para>
- Click on the
- <emphasis role="bold">Properties</emphasis>
- tab to fill in the
- <emphasis role="bold">Keep session alive</emphasis>
- property.
- Keeping the working session for a long time to avoid a
- time out. There are
- 3
- options:
+ Click on the <emphasis role="bold">Properties</emphasis> tab to fill in the <emphasis role="bold">Keep session alive</emphasis> property. Keeping the working session for a long time to avoid a time out. There are 3 options:
<itemizedlist>
<listitem>
- <para>never : it never happens even if an application requests it</para>
+ <para>
+ never : it never happens even if an application requests it
+ </para>
</listitem>
<listitem>
- <para>on-demand : it starts to be used as soon as an application
- requests it</para>
+ <para>
+ on-demand : it starts to be used as soon as an application requests it
+ </para>
</listitem>
<listitem>
- <para>always : it's always enabled (which has a cost but the
- administrator will be aware of that)</para>
+ <para>
+ always : it's always enabled (which has a cost but the administrator will be aware of that)
+ </para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>
- Click on the
- <emphasis role="bold">Permission Setting</emphasis>
- tab and set the permissions for the Portal.
+ Click on the <emphasis role="bold">Permission Setting</emphasis> tab and set the permissions for the Portal.
</para>
<para>
- By default the access permissions list for the portal is empty. You
- have to select at least one or tick on the
- <emphasis role="bold">Make it public</emphasis>
- check box to assign access permission to everyone.
+ By default the access permissions list for the portal is empty. You have to select at least one or tick on the <emphasis role="bold">Make it public</emphasis> check box to assign access permission to everyone.
</para>
</listitem>
<listitem>
<para>
- Click on
- <emphasis role="bold">Save</emphasis>
- to accept creating a new portal.
+ Click on <emphasis role="bold">Save</emphasis> to accept creating a new portal.
</para>
</listitem>
</orderedlist>
</para>
-
-
<para>
- You also can edit or delete a portal, see more details on
- <link linkend="Manage Portals">Manage Portals</link>
+ You also can edit or delete a portal, see more details on <xref linkend="sect-User_Guide-Manage_Portals" />
</para>
-</section>
\ No newline at end of file
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Drag_and_Drop_the_Page_Body.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Drag_and_Drop_the_Page_Body.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Drag_and_Drop_the_Page_Body.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Drag_and_Drop_the_Page_Body">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,15 +21,26 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Drag and Drop the Page Body</title>
+ <para>
+ You can easily drag and drop page body to the specific place where you want to in the page by following guides:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current portal</emphasis>. It will display :
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/DragPage1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 2. Click on the <emphasis role="bold">Portal Page</emphasis>, drag and drop to another reasonable places which you want to in this page.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/DragPage3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Drag and Drop the Page Body</title>
- <para>You can easily drag and drop page body to the specific place
- where you want to in the page by following guides:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current portal</emphasis>. It will display :</para><mediaobject><imageobject><imagedata fileref="images/DragPage1.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click on the <emphasis role="bold">Portal Page</emphasis>, drag and drop to another reasonable places which you want to in this page.</para><mediaobject><imageobject><imagedata fileref="images/DragPage3.png" format="PNG"></imagedata></imageobject></mediaobject>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Manage_Navigation_Nodes.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Manage_Navigation_Nodes.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Manage_Navigation_Nodes.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Manage_Navigation_Nodes">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,32 +21,395 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Navigation Nodes</title>
- <section>
+ --><title>Manage Navigation Nodes</title>
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Overview">
<title>Overview</title>
+ <para>
+ If you are allowed to access GateIn Start in the User Workspace, you can take all actions related to a node such as : add a new node, edit, copy, cut, delete and clone node.
+ </para>
</section>
- <para>If you are allowed to access GateIn Start in the User Workspace,
- you can take all actions related to a node such as : add a new node,
- edit, copy, cut, delete and clone node.</para>
- <section>
+
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Add_a_new_node">
<title>Add a new node</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>
+ </para>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ <para>
+ 3. Select a node from list (to create a new node like sub-node of the selected node) or click the icon!images/UpIcon.png! to create a new node on root
+ </para>
+ <para>
+ 4. Right-click on the selected navigation or node and select <emphasis role="bold">Add new Node</emphasis> option. Add new node form appears:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AddNode4.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The <emphasis role="bold">Page Node Setting</emphasis> tab includes:
+ </para>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Uri
+ </entry>
+ <entry>
+ An identification of the node. The Uri is automatically created after adding a new node
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Node name
+ </entry>
+ <entry>
+ The name of the node. This field is required and must be unique. Only alpha, digit and underscore characters are allowed for this field and it must have at least 3 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Label
+ </entry>
+ <entry>
+ The display name of the node on the screen. This field is not required and may be changed. This field must have a length between 3 and 120 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Visible
+ </entry>
+ <entry>
+ This check box allow to hide (and show) the page and its node at the navigation bar, the page navigation and the site map
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Publication date & time
+ </entry>
+ <entry>
+ This option allows publishing this node for a period of time. *Start Publication Date* and *End Publication Date* only appear when this option is selected.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Start Publication Date
+ </entry>
+ <entry>
+ The start date and time to publish the node.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ End Publication Date
+ </entry>
+ <entry>
+ The end date and time to publish the node.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ In the <emphasis role="bold">Page Selector</emphasis> tab, you can select a page or not for this node.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageSelector.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page Id
+ </entry>
+ <entry>
+ The identification string of the page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Name
+ </entry>
+ <entry>
+ The selected page's name.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Title
+ </entry>
+ <entry>
+ The selected page's title.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ You do not have to input values in these fields. It is automatically displayed after selecting an existing page by clicking the <emphasis role="bold">Search and Select Page</emphasis> button. The <emphasis role="bold">Select a page</emphasis> form appears like:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SelectPage1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ list of all existing pages is displayed with basic information. You can follow these guides to select a page for creating a node:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Select a page from list or search a specific page :
+ </para>
+ </listitem>
+ </orderedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Enter a search term related to the page which you want to search:
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/NewSearch1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Choose the field you wish to search in:
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/NewSearch2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click the magnifying glass!images/NewGlassIcon.png! icon to perform searching. All pages matching with search term will be listed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click the OK!images/NewOkIcon.png! icon on the row of the page to select.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ After selecting a page, the details of this page will be displayed in the <emphasis role="bold">Page Selector</emphasis> form.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ After configuring the page node settings, the page selector and the node's icon, click the <emphasis role="bold">Save</emphasis> button to accept or the <emphasis role="bold">Cancel</emphasis> button to quit without creating a new node.
+ </para>
</section>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis></para><para>2. Select a navigation from the navigation list.</para><para>3. Select a node from list (to create a new node like sub-node of the selected node) or click the icon!images/UpIcon.png! to create a new node on root</para><para>4. Right-click on the selected navigation or node and select <emphasis role="bold">Add new Node</emphasis> option. Add new node form appears:</para><mediaobject><imageobject><imagedata fileref="images/AddNode4.png" format="PNG"></imagedata></imageobject></mediaobject><para>The <emphasis role="bold">Page Node Setting</emphasis> tab includes:</para><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Des!
cription </emphasis></entry></row><row><entry> Uri </entry><entry> An identification of the node. The Uri is automatically created after adding a new node </entry></row><row><entry> Node name </entry><entry> The name of the node. This field is required and must be unique. Only alpha, digit and underscore characters are allowed for this field and it must have at least 3 characters. </entry></row><row><entry> Label </entry><entry> The display name of the node on the screen. This field is not required and may be changed. This field must have a length between 3 and 120 characters. </entry></row><row><entry> Visible </entry><entry> This check box allow to hide (and show) the page and its node at the navigation bar, the page navigation and the site map </entry></row><row><entry> Publication date & time </entry><entry> This option allows publishing this node for a period of time. *Start Publication Date* and *End Publication Date* only appear when this option is sele!
cted. </entry></row><row><entry> Start Publication Date </ent!
ry><entr
y> The start date and time to publish the node. </entry></row><row><entry> End Publication Date </entry><entry> The end date and time to publish the node. </entry></row></tbody></tgroup></informaltable><para>In the <emphasis role="bold">Page Selector</emphasis> tab, you can select a page or not for this node.</para><mediaobject><imageobject><imagedata fileref="images/PageSelector.png" format="PNG"></imagedata></imageobject></mediaobject><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Page Id </entry><entry> The identification string of the page. </entry></row><row><entry> Name </entry><entry> The selected page's name. </entry></row><row><entry> Title </entry><entry> The selected page's title. </entry></row><!
/tbody></tgroup></informaltable><para>You do not have to input values in these fields. It is automatically displayed after selecting an existing page by clicking the <emphasis role="bold">Search and Select Page</emphasis> button. The <emphasis role="bold">Select a page</emphasis> form appears like:</para><mediaobject><imageobject><imagedata fileref="images/SelectPage1.png" format="PNG"></imagedata></imageobject></mediaobject><orderedlist numeration="arabic"><listitem>list of all existing pages is displayed with basic information. You can follow these guides to select a page for creating a node:</listitem><listitem>Select a page from list or search a specific page :</listitem></orderedlist><itemizedlist><listitem>Enter a search term related to the page which you want to search:</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/NewSearch1.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Choose the field you wish to !
search in:</listitem></itemizedlist><mediaobject><imageobject>!
<imageda
ta fileref="images/NewSearch2.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Click the magnifying glass!images/NewGlassIcon.png! icon to perform searching. All pages matching with search term will be listed.</listitem><listitem>Click the OK!images/NewOkIcon.png! icon on the row of the page to select.</listitem><listitem>After selecting a page, the details of this page will be displayed in the <emphasis role="bold">Page Selector</emphasis> form.</listitem></itemizedlist><para>After configuring the page node settings, the page selector and the node's icon, click the <emphasis role="bold">Save</emphasis> button to accept or the <emphasis role="bold">Cancel</emphasis> button to quit without creating a new node.</para>
-<section><title>Edit a node</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis></para><para>2. Select a navigation from the navigation list.</para><para>3. Right-click on the selected node and select <emphasis role="bold">Edit this Node</emphasis> option.</para><mediaobject><imageobject><imagedata fileref="images/EditNode1.png" format="PNG"></imagedata></imageobject></mediaobject><para>It will displays a form to edit this node:</para><mediaobject><imageobject><imagedata fileref="images/PageNodeSetting.png" format="PNG"></imagedata></imageobject></mediaobject><para>In the <emphasis role="bold">Page Node Setting</emphasis> tab: you can change the value of these fields: Label, Visible and Publication Date & time. After finish changing, click the <emphasis role="bold">Save</emphasis> button to accept changing or <emphasis role="!
bold">Cancel</emphasis> button to refuse it.</para><mediaobject><imageobject><imagedata fileref="images/PageSelector6.png" format="PNG"></imagedata></imageobject></mediaobject><para>In the <emphasis role="bold">Page Selector</emphasis> tab : you also search and select another page for this node by clicking the <emphasis role="bold">Search and Select Page</emphasis> button. You can see more details on how to select a page for a node on the above <emphasis role="bold">Add a new node</emphasis> section. After finish changing another page for this node, click the <emphasis role="bold">Save</emphasis> button to accept changing or <emphasis role="bold">Cancel</emphasis> button to leave without saving any changes.</para>
-<section><title>Copy a node</title></section>
-<para>You also easily copy a node by following these steps:</para><para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis></para><para>2. Select a navigation from the navigation list.</para><para>3. Right-click on the selected node and select <emphasis role="bold">Copy node</emphasis> option.</para><mediaobject><imageobject><imagedata fileref="images/CopyNode3.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Select the position that you want to paste this node and select <emphasis role="bold">Paste Node</emphasis> option. Click the!images/MarkIcon.png! icon to <emphasis role="bold">Save</emphasis>.</para><mediaobject><imageobject><imagedata fileref="images/PasteNode3.png" format="PNG"></imagedata></imageobject></mediaobject>
-<section><title>Clone nodes</title></section>
-<itemizedlist><listitem>Clone node<emphasis role="bold">function allows you to copy the node. However, the differences between</emphasis>copy node<emphasis role="bold">and</emphasis>clone node<emphasis role="bold">is that the clone node has its own page and this page has the same content as the selected node, so there will be a new page that has the same name with the selected node's page, is shown in the page list when you access</emphasis>Manage Pages.</listitem></itemizedlist><para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis></para><para>2. Select a navigation from the navigation list.</para><para>3. Right-click on selected node and select <emphasis role="bold">Clone node</emphasis> option.</para><mediaobject><imageobject><imagedata fileref="images/CloneNode2.png" format="PNG"></imagedata></imageo!
bject></mediaobject><para>4. Select the position that you want to paste this node and select <emphasis role="bold">Paste Node</emphasis> option. Click the!images/MarkIcon.png! icon to <emphasis role="bold">Save</emphasis>.</para><mediaobject><imageobject><imagedata fileref="images/PasteCloneNode2.png" format="PNG"></imagedata></imageobject></mediaobject><para>In <emphasis role="bold">Manage Pages</emphasis> you will see:</para><mediaobject><imageobject><imagedata fileref="images/ManagePage2.png" format="PNG"></imagedata></imageobject></mediaobject>
-<section><title>Cut a node</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis></para><para>2. Select a navigation from the navigation list.</para><para>3. Right-click on the selected node and select <emphasis role="bold">Cut node</emphasis> option.</para><mediaobject><imageobject><imagedata fileref="images/CutNode4.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Select the position that you want to paste this node and select <emphasis role="bold">Paste Node</emphasis> option. Click the!images/MarkIcon.png! icon to <emphasis role="bold">Save</emphasis>.</para><mediaobject><imageobject><imagedata fileref="images/PasteCutNode4.png" format="PNG"></imagedata></imageobject></mediaobject>
-<section><title>Delete a node</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis></para><para>2. Select a navigation from the navigation list.</para><para>3. Right-click on the selected node and select <emphasis role="bold">Delete node</emphasis> option.</para><mediaobject><imageobject><imagedata fileref="images/DeleteNode2.png" format="PNG"></imagedata></imageobject></mediaobject><para>It will display an alert message, click the <emphasis role="bold">OK</emphasis> button to accept deleting or <emphasis role="bold">Cancel</emphasis> button to quit without deleting a node.</para><mediaobject><imageobject><imagedata fileref="images/http.png" format="PNG"></imagedata></imageobject></mediaobject>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Edit_a_node">
+ <title>Edit a node</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>
+ </para>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ <para>
+ 3. Right-click on the selected node and select <emphasis role="bold">Edit this Node</emphasis> option.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditNode1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ It will displays a form to edit this node:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageNodeSetting.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ In the <emphasis role="bold">Page Node Setting</emphasis> tab: you can change the value of these fields: Label, Visible and Publication Date & time. After finish changing, click the <emphasis role="bold">Save</emphasis> button to accept changing or <emphasis role="bold">Cancel</emphasis> button to refuse it.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageSelector6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ In the <emphasis role="bold">Page Selector</emphasis> tab : you also search and select another page for this node by clicking the <emphasis role="bold">Search and Select Page</emphasis> button. You can see more details on how to select a page for a node on the above <emphasis role="bold">Add a new node</emphasis> section. After finish changing another page for this node, click the <emphasis role="bold">Save</emphasis> button to accept changing or <emphasis role="bold">Cancel</emphasis> button to leave without saving any changes.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Copy_a_node">
+ <title>Copy a node</title>
+ <para>
+ You also easily copy a node by following these steps:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>
+ </para>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ <para>
+ 3. Right-click on the selected node and select <emphasis role="bold">Copy node</emphasis> option.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/CopyNode3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 4. Select the position that you want to paste this node and select <emphasis role="bold">Paste Node</emphasis> option. Click the!images/MarkIcon.png! icon to <emphasis role="bold">Save</emphasis>.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PasteNode3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Clone_nodes">
+ <title>Clone nodes</title>
+ <para>
+ Clone node<emphasis role="bold">function allows you to copy the node. However, the differences between</emphasis>copy node<emphasis role="bold">and</emphasis>clone node<emphasis role="bold">is that the clone node has its own page and this page has the same content as the selected node, so there will be a new page that has the same name with the selected node's page, is shown in the page list when you access</emphasis>Manage Pages.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Right-click on selected node and select <emphasis role="bold">Clone node</emphasis> option.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/CloneNode2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Select the position that you want to paste this node and select <emphasis role="bold">Paste Node</emphasis> option. Click the!images/MarkIcon.png! icon to <emphasis role="bold">Save</emphasis>.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PasteCloneNode2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ In <emphasis role="bold">Manage Pages</emphasis> you will see:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ManagePage2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Cut_a_node">
+ <title>Cut a node</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>
+ </para>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ <para>
+ 3. Right-click on the selected node and select <emphasis role="bold">Cut node</emphasis> option.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/CutNode4.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 4. Select the position that you want to paste this node and select <emphasis role="bold">Paste Node</emphasis> option. Click the!images/MarkIcon.png! icon to <emphasis role="bold">Save</emphasis>.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PasteCutNode4.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Navigation_Nodes-Delete_a_node">
+ <title>Delete a node</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Select a navigation from the navigation list.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Right-click on the selected node and select <emphasis role="bold">Delete node</emphasis> option.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/DeleteNode2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ It will display an alert message, click the <emphasis role="bold">OK</emphasis> button to accept deleting or <emphasis role="bold">Cancel</emphasis> button to quit without deleting a node.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/http.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ </orderedlist>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Manage_Page_Navigation.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Manage_Page_Navigation.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Manage_Page_Navigation.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Manage_Page_Navigation">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,50 +21,158 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Page Navigation</title>
- <section>
+ --><title>Manage Page Navigation</title>
+ <section id="sect-User_Guide-Manage_Page_Navigation-Overview">
<title>Overview</title>
+ <para>
+ In order to understand clearly about what the navigation is and navigation types that GateIn Portal supports, please refer the <xref linkend="sect-User_Guide-Navigation_concept" /> page.
+ </para>
</section>
- <para>
- In order to understand clearly about what the navigation is and
- navigation types that GateIn Portal supports, please refer the
- <link linkend="Navigation concept">Navigation concept</link>
- page.
- </para>
- <section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Portals_page_navigation">
<title>Portal's page navigation</title>
+ <para>
+ Stuff Goes here?
+ </para>
</section>
-
- <section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Creating_a_portals_navigation">
<title>Creating a portal's navigation</title>
+ <para>
+ The page navigation of a portal is created automatically when a portal is created.
+ </para>
</section>
- <para>The page navigation of a portal is created automatically when
- a portal is created.</para>
- <section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Editing_a_portals_navigation">
<title>Editing a portal's navigation</title>
+ <para>
+ Only users who have the edit right on a portal can perform this action.
+ </para>
+ <para>
+ Follows these below guides to edit a portal 's navigation:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis>-> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis>--> <emphasis role="bold">Edit Page and Navigation</emphasis>.
+ </para>
+ <para>
+ 2. Select Portal navigation in list on the left pane (eg: portal: classic's Nav).
+ </para>
+ <para>
+ 3. Right click the blank space on the left pane and select <emphasis role="bold">Edit Navigation</emphasis> in the menu:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditPortalNavigation.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The form for editing the portal navigation will be opened:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditPortalNavigation2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ <emphasis><emphasis role="bold">Notice</emphasis></emphasis>: The number that users select in the <emphasis role="bold">Priority</emphasis> field is the priority of a page navigation on the Navigation bar.
+ </para>
+ <para>
+ 4. Make changes to fields in this form: <emphasis role="bold">Description</emphasis>, <emphasis role="bold">Priority</emphasis>.
+ </para>
+ <para>
+ 5. Click the <emphasis role="bold">Save</emphasis> button to accept changes.
+ </para>
+ <para>
+ 6. Click the!images/OKIcon.png! to take effect of new changes.
+ </para>
+ <para>
+ Or click the <emphasis role="bold">Cancel</emphasis> button to quit without saving any change.
+ </para>
</section>
- <para>Only users who have the edit right on a portal can perform
- this action.</para>
- <para>Follows these below guides to edit a portal 's navigation:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>-> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis>--> <emphasis role="bold">Edit Page and Navigation</emphasis>.</para><para>2. Select Portal navigation in list on the left pane (eg: portal: classic's Nav).</para><para>3. Right click the blank space on the left pane and select <emphasis role="bold">Edit Navigation</emphasis> in the menu:</para><mediaobject><imageobject><imagedata fileref="images/EditPortalNavigation.png" format="PNG"></imagedata></imageobject></mediaobject><para>The form for editing the portal navigation will be opened:</para><mediaobject><imageobject><imagedata fileref="images/EditPortalNavigation2.png" format="PNG"></imagedata></imageobject></mediaobject><para><emphasis><emphasis role="bold">Notice</emphasis></emphasis>: The number that users select in the <emphasis role="bold">Priority</emphasis> field is the priority of a page navigation on the Navigatio!
n bar.</para><para>4. Make changes to fields in this form: <emphasis role="bold">Description</emphasis>, <emphasis role="bold">Priority</emphasis>.</para><para>5. Click the <emphasis role="bold">Save</emphasis> button to accept changes.</para><para>6. Click the!images/OKIcon.png! to take effect of new changes.</para><para>Or click the <emphasis role="bold">Cancel</emphasis> button to quit without saving any change.</para>
-<section><title>Deleting a portal's navigation</title></section>
-<para>No one can create the portal's page navigation so no one can delete it. A navigation is deleted automatically after you delete its portal.</para>
-<section><title>Group's page navigation</title></section>
-<para>Each group has only one page navigation. Only users of that group have the "manager" membership can create/edit/delete navigation for that group</para>
-<section><title>Editing a group's navigation</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>.</para><para>2. Select a Group navigation in the list on the left pane (eg: group:platform/administrator's Nav). All pages of this group will be listed underneath.</para><para>3. Right click the blank space on the left pane and select <emphasis role="bold">Edit Navigation</emphasis> in the context menu:</para><mediaobject><imageobject><imagedata fileref="images/EditGroupNavigation.png" format="PNG"></imagedata></imageobject></mediaobject><para>The form for editing the group navigation will be opened:</para><mediaobject><imageobject><imagedata fileref="images/EditGroupNavigation2.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Make changes for two fields: <emphasis role="bold">Description</emphasis> and <emphasis role="bold">Priorit!
y</emphasis>.</para><para><emphasis><emphasis role="bold">Notice</emphasis></emphasis>: The number that users select in the <emphasis role="bold">Priority</emphasis> field is the priority of a page navigation on the Navigation bar.</para><para>5. Click the <emphasis role="bold">Save</emphasis> button to accept any changes.</para><para>6. Click the!images/OKIcon.png! to take effect new changes on the Navigation bar.</para><para>Or click the <emphasis role="bold">Cancel</emphasis> button to quit without saving any change.</para>
-<section><title>User's page navigation</title></section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Deleting_a_portals_navigation">
+ <title>Deleting a portal's navigation</title>
+ <para>
+ No one can create the portal's page navigation so no one can delete it. A navigation is deleted automatically after you delete its portal.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Groups_page_navigation">
+ <title>Group's page navigation</title>
+ <para>
+ Each group has only one page navigation. Only users of that group have the "manager" membership can create/edit/delete navigation for that group
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Editing_a_groups_navigation">
+ <title>Editing a group's navigation</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Page and Navigation</emphasis>.
+ </para>
+ <para>
+ 2. Select a Group navigation in the list on the left pane (eg: group:platform/administrator's Nav). All pages of this group will be listed underneath.
+ </para>
+ <para>
+ 3. Right click the blank space on the left pane and select <emphasis role="bold">Edit Navigation</emphasis> in the context menu:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditGroupNavigation.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ The form for editing the group navigation will be opened:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditGroupNavigation2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 4. Make changes for two fields: <emphasis role="bold">Description</emphasis> and <emphasis role="bold">Priority</emphasis>.
+ </para>
+ <para>
+ <emphasis><emphasis role="bold">Notice</emphasis></emphasis>: The number that users select in the <emphasis role="bold">Priority</emphasis> field is the priority of a page navigation on the Navigation bar.
+ </para>
+ <para>
+ 5. Click the <emphasis role="bold">Save</emphasis> button to accept any changes.
+ </para>
+ <para>
+ 6. Click the!images/OKIcon.png! to take effect new changes on the Navigation bar.
+ </para>
+ <para>
+ Or click the <emphasis role="bold">Cancel</emphasis> button to quit without saving any change.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Users_page_navigation">
+ <title>User's page navigation</title>
+ <para>
+ Stuff Goes here?
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Creating_a_users_navigation">
+ <title>Creating a user's navigation</title>
+ <para>
+ The page navigation of a user is created automatically when a user is created (registered). So an administrator don't have to create it.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Editing_a_users_navigation">
+ <title>Editing a user's navigation</title>
+ <para>
+ Only the user who is the owner of the user page navigation can edit it.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Page_Navigation-Deleting_a_users_navigation">
+ <title>Deleting a user's navigation</title>
+ <para>
+ No one can create user's page navigation so that no one can delete it. A user's navigation is deleted automatically when its user is deleted.
+ </para>
+ </section>
-<section><title>Creating a user's navigation</title></section>
-<para>The page navigation of a user is created automatically when a user is created (registered). So an administrator don't have to create it.</para>
-<section><title>Editing a user's navigation</title></section>
-<para>Only the user who is the owner of the user page navigation can edit it.</para>
-<section><title>Deleting a user's navigation</title></section>
-<para>No one can create user's page navigation so that no one can delete it. A user's navigation is deleted automatically when its user is deleted.</para>
-</section>
\ No newline at end of file
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Manage_Pages.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Manage_Pages.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Manage_Pages.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Manage_Pages">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,26 +21,466 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Pages</title>
- <para>Only by using one page list can users add, edit, delete and
- view quickly and easily which pages you like to. Following these
- guides to manage pages:</para>
- <section>
+ --><title>Manage Pages</title>
+ <para>
+ Only by using one page list can users add, edit, delete and view quickly and easily which pages you like to. Following these guides to manage pages:
+ </para>
+ <section id="sect-User_Guide-Manage_Pages-Add_a_new_Page_in_the_Page_List">
<title>Add a new Page in the Page List</title>
+ <para>
+ You easily add a new page by following these simple steps:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn</emphasis> -><emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Pages</emphasis>
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ManagePage.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ For GateIn Portal 2.6
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">Administrator</emphasis> on the Toolbar --> <emphasis role="bold">Manage Pages</emphasis>
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ManagePage2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ Details
+ </para>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Button </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Add New Page
+ </entry>
+ <entry>
+ allows you to add a new page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Back
+ </entry>
+ <entry>
+ allows you to return to home page.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the <emphasis role="bold">Add New Page</emphasis> button.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Enter values for fields in the <emphasis role="bold">Page Setting</emphasis> tab
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageSetting.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page Id
+ </entry>
+ <entry>
+ The string to identify the page. It is automatically generated when you will finish creating page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Owner type
+ </entry>
+ <entry>
+ The owner type of the the page (portal, group or user). The "User" type is displayed by default. You can change the owner type by clicking on the icon.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Owner Id
+ </entry>
+ <entry>
+ The identification name of page owner. When the owner type is "group", there will be a list of groups of which you have to select one.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page Name
+ </entry>
+ <entry>
+ The name of the page. This is a required field and must be unique. Only alpha, digit and underscore characters are allowed to be used for this field and it must have a length between 3 and 30 characters
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page title
+ </entry>
+ <entry>
+ The title of the the page. This field is not required and must have a length between 3 and 30 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Show Max Window
+ </entry>
+ <entry>
+ The option allows to choose whether showing the page in maximum size or not.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ If the <emphasis role="bold">Owner type</emphasis> is "portal" or "group":
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">Owner type</emphasis> is 'portal': it means you create a page for a portal. Thus only users who have edit permissions on the portal can create this page type.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Owner type</emphasis> is 'group': it means you create a page for a group. Thus only users who are 'manager' of a group can create this page type.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageSetting1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Permission Setting is initialized
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PermissionSetting1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ With <emphasis role="bold">Access Permission</emphasis>: The content of this tab is identical to the <emphasis role="bold">Owner type</emphasis> field in the <emphasis role="bold">Page Setting</emphasis> tab. Thus, all users have access rights of the page type selected in the <emphasis role="bold">Owner type</emphasis> field will appear in this tab. But you also can change the value of this tab as follows:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Check the check box if you want to share access with everyone
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Or click the <emphasis role="bold">Add Permission</emphasis> button to assign permission on group level, then select a group and membership.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Or click the trash can icon to remove a group from the list.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ With <emphasis role="bold">Edit Permission</emphasis>: The content of this tab depends on the value of the <emphasis role="bold">Owner type</emphasis> field in the <emphasis role="bold">Page Setting</emphasis> tab.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the <emphasis role="bold">Owner type</emphasis> is "group", edit permission is assigned to users who are "manager" of the group that is selected in <emphasis role="bold">Owner id</emphasis>. You only can change this value when editing the page.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditPermission1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If the <emphasis role="bold">Owner type</emphasis> is "portal": The name of the current portal is automatically selected for <emphasis role="bold">Owner id</emphasis> so that the edit permissions are assigned to users who can edit the current portal. Users only can change this value when editing the page.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditPermission2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Click the <emphasis role="bold">Save</emphasis> button to accept creating a new page or the <emphasis role="bold">Cancel</emphasis> button to quit the form.
+ </para>
+ </listitem>
+ </orderedlist>
</section>
- <para>You easily add a new page by following these simple steps:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn</emphasis>
- -><emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Pages</emphasis></para><mediaobject><imageobject><imagedata fileref="images/ManagePage.png" format="PNG"></imagedata></imageobject></mediaobject><variablelist><listitem>For GateIn Portal 2.6</listitem></variablelist><para>1. Go to <emphasis role="bold">Administrator</emphasis> on the Toolbar --> <emphasis role="bold">Manage Pages</emphasis></para><mediaobject><imageobject><imagedata fileref="images/ManagePage2.6.png" format="PNG"></imagedata></imageobject></mediaobject><para>Details</para><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Button </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Add New Page </entry><entry> allows you to add a new page. </e!
ntry></row><row><entry> Back </entry><entry> allows you to return to home page. </entry></row></tbody></tgroup></informaltable><para>2. Click the <emphasis role="bold">Add New Page</emphasis> button.</para><para>3. Enter values for fields in the <emphasis role="bold">Page Setting</emphasis> tab</para><mediaobject><imageobject><imagedata fileref="images/PageSetting.png" format="PNG"></imagedata></imageobject></mediaobject><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Page Id </entry><entry> The string to identify the page. It is automatically generated when you will finish creating page. </entry></row><row><entry> Owner type </entry><entry> The owner type of the the page (portal, group or user). The "User" type is displayed !
by default. You can change the owner type by clicking on the !
icon. </
entry></row><row><entry> Owner Id </entry><entry> The identification name of page owner. When the owner type is "group", there will be a list of groups of which you have to select one. </entry></row><row><entry> Page Name </entry><entry> The name of the page. This is a required field and must be unique. Only alpha, digit and underscore characters are allowed to be used for this field and it must have a length between 3 and 30 characters </entry></row><row><entry> Page title </entry><entry> The title of the the page. This field is not required and must have a length between 3 and 30 characters. </entry></row><row><entry> Show Max Window </entry><entry> The option allows to choose whether showing the page in maximum size or not. </entry></row></tbody></tgroup></informaltable><para>If the <emphasis role="bold">Owner type</emphasis> is "portal" or "group":</para><itemizedlist><listitem><emphasis role="bold">Owner type</emphasis> is 'portal': it mea!
ns you create a page for a portal. Thus only users who have edit permissions on the portal can create this page type.</listitem><listitem><emphasis role="bold">Owner type</emphasis> is 'group': it means you create a page for a group. Thus only users who are 'manager' of a group can create this page type.</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/PageSetting1.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Permission Setting is initialized</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/PermissionSetting1.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>With <emphasis role="bold">Access Permission</emphasis>: The content of this tab is identical to the <emphasis role="bold">Owner type</emphasis> field in the <emphasis role="bold">Page Setting</emphasis> tab. Thus, all users have access rights of the page type selected in the <emphasis role="bo!
ld">Owner type</emphasis> field will appear in this tab. But y!
ou also
can change the value of this tab as follows:</listitem><listitem>Check the check box if you want to share access with everyone</listitem><listitem>Or click the <emphasis role="bold">Add Permission</emphasis> button to assign permission on group level, then select a group and membership.</listitem><listitem>Or click the trash can icon to remove a group from the list.</listitem></itemizedlist><itemizedlist><listitem>With <emphasis role="bold">Edit Permission</emphasis>: The content of this tab depends on the value of the <emphasis role="bold">Owner type</emphasis> field in the <emphasis role="bold">Page Setting</emphasis> tab.</listitem><listitem>If the <emphasis role="bold">Owner type</emphasis> is "group", edit permission is assigned to users who are "manager" of the group that is selected in <emphasis role="bold">Owner id</emphasis>. You only can change this value when editing the page.</listitem></itemizedlist><mediaobject><imageobject><imagedata filere!
f="images/EditPermission1.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>If the <emphasis role="bold">Owner type</emphasis> is "portal": The name of the current portal is automatically selected for <emphasis role="bold">Owner id</emphasis> so that the edit permissions are assigned to users who can edit the current portal. Users only can change this value when editing the page.</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/EditPermission2.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Click the <emphasis role="bold">Save</emphasis> button to accept creating a new page or the <emphasis role="bold">Cancel</emphasis> button to quit the form.</para>
-<section><title>Edit a Page</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Pages</emphasis></para><para>2. In the existing pages list: click the edit icon on the row of page you want to edit.</para><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Indicator </emphasis></entry><entry><emphasis role="bold"> Meaning </emphasis></entry></row><row><entry>!images/PreviewPage.png! </entry><entry> Preview page: allows viewing node's page with preview mode in a Normal Page </entry></row><row><entry>!images/EditPage.png! </entry><entry> Edit page properties: allows editing node's page properties </entry></row><row><entry>!images/ShowContainer.png! </entry><entry> Show container: allows to list all existing containers that will b!
e used to change the layout of a selected page </entry></row><row><entry>!images/ShowPortlet.png! </entry><entry> Show portlet: allows to list all existing portlets that will be used to re-arrange the content of selected page. </entry></row><row><entry>!images/SavePage.png! </entry><entry> Save page: allows saving changes of a page </entry></row><row><entry>!images/Back.png! </entry><entry> Back: allows returning to the page list without saving </entry></row><row><entry>!images/Finish.png! </entry><entry> Finish:allows saving and returning to the page list </entry></row></tbody></tgroup></informaltable><itemizedlist><listitem>Edit page properties Click the edit!images/EditPage.png! icon to show a form to edit page properties.</listitem></itemizedlist><para>In the <emphasis role="bold">Page Setting</emphasis> tab:</para><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry!
><emphasis role="bold"> Name </emphasis></entry><entry><emphas!
is role=
"bold"> Description </emphasis></entry></row><row><entry> Page Id </entry><entry> The string to identify editing page. This string is generated automatically, user can not change. </entry></row><row><entry> Owner type </entry><entry> The type of editing page. User can not change. </entry></row><row><entry> Owner Id </entry><entry> The identification name of page's owner. User can not change. </entry></row><row><entry> Page name </entry><entry> The name of the page. User can not change. </entry></row><row><entry> Page title </entry><entry> The title of page. User can change and it must have length from 3 to 30 characters. </entry></row><row><entry> Show Max Window </entry><entry> The option allows whether showing page in maximum size or not. User should check this option for desktop page only. </entry></row></tbody></tgroup></informaltable><itemizedlist><listitem>Permission Setting: This form is supported for pages of a group or a portal. Because page of an user is private, n!
o one else can access or edit user's page except the creator, so you do not have to set permission for it. Permission on each page is set in two levels: Access right and Edit right.</listitem><listitem><emphasis role="bold">Access right</emphasis>: Page Access right can be set to some user groups or set to everyone (also includes unregistered users). There is a list of current access permissions on page. You can click delete icon to remove permission or click the <emphasis role="bold">Add Permission</emphasis> button to add more or tick on <emphasis role="bold">Make it public</emphasis> option check box to allow all users to access.</listitem><listitem><emphasis role="bold">Edit right</emphasis>: It allows users to change information of page. Edit right only is set for a group of users. Edit right on a page can be set for one group with one specific membership type (or <emphasis role="bold">means every membership types in group). If you want to re-assign this right to anot!
her group, click</emphasis>Select Permission to choose another!
one.</l
istitem></itemizedlist><itemizedlist><listitem>Editing page container layout</listitem></itemizedlist><para>Click !images/ShowContainer.png! icon to show current container layout of selected page on your right and all the container layouts list on the left pane.</para><para>If you want to change current layout, select a layout type from the list on the left pane, then left click on the template you want and drag and drop it into the right pane. New container will be displayed on the right pane. You can change position of current container by left click and drag and drop it to another place on the right pane or remove current container by clicking delete icon on the right corner.</para><itemizedlist><listitem>Editing page portlet layout</listitem></itemizedlist><para>Click !images/ShowPortlet.png! icon to show current portlet layout of page.</para><para>If you want to change current layout, select layout type from the list on the left pane, then left click on the temp!
late you want and drag and drop it into the right pane. New portlet will be added and displayed in the right pane. You can change position of current portlet by left click and drag and drop it to the place you want on the right pane or remove current portlet by clicking delete icon.</para>
-<section><title>View a Page</title></section>
-<para>You easily view a page by clicking on the!images/View.png! icon on the row of the page you want to view in the existing pages list.</para>
-<section><title>Delete a Page</title></section>
-<para>1. Go to <emphasis role="bold">GateIn Admin</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Pages</emphasis></para><para>2. There is a list of all existing pages, click the trash can icon !images/DeleteIcon.png! on row of the page you want to delete. It will display the confirmation message.</para><mediaobject><imageobject><imagedata fileref="images/http.png" format="PNG"></imagedata></imageobject></mediaobject><para>3. Click the <emphasis role="bold">OK</emphasis> button to accept deleting or <emphasis role="bold">Cancel</emphasis> button to quit without deleting this page.</para>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-Manage_Pages-Edit_a_Page">
+ <title>Edit a Page</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Pages</emphasis>
+ </para>
+ <para>
+ 2. In the existing pages list: click the edit icon on the row of page you want to edit.
+ </para>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Indicator </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Meaning </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/PreviewPage.png!
+ </entry>
+ <entry>
+ Preview page: allows viewing node's page with preview mode in a Normal Page
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/EditPage.png!
+ </entry>
+ <entry>
+ Edit page properties: allows editing node's page properties
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/ShowContainer.png!
+ </entry>
+ <entry>
+ Show container: allows to list all existing containers that will be used to change the layout of a selected page
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/ShowPortlet.png!
+ </entry>
+ <entry>
+ Show portlet: allows to list all existing portlets that will be used to re-arrange the content of selected page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/SavePage.png!
+ </entry>
+ <entry>
+ Save page: allows saving changes of a page
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/Back.png!
+ </entry>
+ <entry>
+ Back: allows returning to the page list without saving
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/Finish.png!
+ </entry>
+ <entry>
+ Finish:allows saving and returning to the page list
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Edit page properties Click the edit!images/EditPage.png! icon to show a form to edit page properties.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In the <emphasis role="bold">Page Setting</emphasis> tab:
+ </para>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page Id
+ </entry>
+ <entry>
+ The string to identify editing page. This string is generated automatically, user can not change.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Owner type
+ </entry>
+ <entry>
+ The type of editing page. User can not change.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Owner Id
+ </entry>
+ <entry>
+ The identification name of page's owner. User can not change.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page name
+ </entry>
+ <entry>
+ The name of the page. User can not change.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Page title
+ </entry>
+ <entry>
+ The title of page. User can change and it must have length from 3 to 30 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Show Max Window
+ </entry>
+ <entry>
+ The option allows whether showing page in maximum size or not. User should check this option for desktop page only.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Permission Setting: This form is supported for pages of a group or a portal. Because page of an user is private, no one else can access or edit user's page except the creator, so you do not have to set permission for it. Permission on each page is set in two levels: Access right and Edit right.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Access right</emphasis>: Page Access right can be set to some user groups or set to everyone (also includes unregistered users). There is a list of current access permissions on page. You can click delete icon to remove permission or click the <emphasis role="bold">Add Permission</emphasis> button to add more or tick on <emphasis role="bold">Make it public</emphasis> option check box to allow all users to access.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Edit right</emphasis>: It allows users to change information of page. Edit right only is set for a group of users. Edit right on a page can be set for one group with one specific membership type (or <emphasis role="bold">means every membership types in group). If you want to re-assign this right to another group, click</emphasis>Select Permission to choose another one.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Editing page container layout
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Click !images/ShowContainer.png! icon to show current container layout of selected page on your right and all the container layouts list on the left pane.
+ </para>
+ <para>
+ If you want to change current layout, select a layout type from the list on the left pane, then left click on the template you want and drag and drop it into the right pane. New container will be displayed on the right pane. You can change position of current container by left click and drag and drop it to another place on the right pane or remove current container by clicking delete icon on the right corner.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Editing page portlet layout
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Click !images/ShowPortlet.png! icon to show current portlet layout of page.
+ </para>
+ <para>
+ If you want to change current layout, select layout type from the list on the left pane, then left click on the template you want and drag and drop it into the right pane. New portlet will be added and displayed in the right pane. You can change position of current portlet by left click and drag and drop it to the place you want on the right pane or remove current portlet by clicking delete icon.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Pages-View_a_Page">
+ <title>View a Page</title>
+ <para>
+ You easily view a page by clicking on the!images/View.png! icon on the row of the page you want to view in the existing pages list.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Pages-Delete_a_Page">
+ <title>Delete a Page</title>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Admin</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Pages</emphasis>
+ </para>
+ <para>
+ 2. There is a list of all existing pages, click the trash can icon !images/DeleteIcon.png! on row of the page you want to delete. It will display the confirmation message.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/http.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ 3. Click the <emphasis role="bold">OK</emphasis> button to accept deleting or <emphasis role="bold">Cancel</emphasis> button to quit without deleting this page.
+ </para>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Manage_Permission.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Manage_Permission.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Manage_Permission.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Manage_Permission">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,189 +21,131 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Permission</title>
- <para>Permissions play an important part in accessing and
- performing
- actions in the Portal. Depending on permissions assigned by
- an
- administrator, users can either access or edit portals, pages and
- portlets. GateIn Portal have applied several permission levels:</para>
+ --><title>Manage Permission</title>
+ <para>
+ Permissions play an important part in accessing and performing actions in the Portal. Depending on permissions assigned by an administrator, users can either access or edit portals, pages and portlets. GateIn Portal have applied several permission levels:
+ </para>
<itemizedlist>
<listitem>
- <emphasis role="bold">Portal</emphasis>
- : The portal includes all pages, pages only can be accessed if the
- user has also access the Portal.
+ <para>
+ <emphasis role="bold">Portal</emphasis> : The portal includes all pages, pages only can be accessed if the user has also access the Portal.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Page</emphasis>
- : You can restrict the access to single pages. Users can change page
- information (properties, layout) if they have the edit right.
+ <para>
+ <emphasis role="bold">Page</emphasis> : You can restrict the access to single pages. Users can change page information (properties, layout) if they have the edit right.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Portlet</emphasis>
- : When users create a page, they need to drag and drop portlets into
- a page to create the page content. Some portlets are only used for
- administrators, some are used for individual needs of a group thus
- you have to set the appropriate access permission.
+ <para>
+ <emphasis role="bold">Portlet</emphasis> : When users create a page, they need to drag and drop portlets into a page to create the page content. Some portlets are only used for administrators, some are used for individual needs of a group thus you have to set the appropriate access permission.
+ </para>
</listitem>
</itemizedlist>
- <para>The three above permission levels helps users assign access
- and
- edit permissions clearly and flexibly.</para>
- <section>
+ <para>
+ The three above permission levels helps users assign access and edit permissions clearly and flexibly.
+ </para>
+ <section id="sect-User_Guide-Manage_Permission-Set_the_Access_Permission_on_a_Portal">
<title>Set the Access Permission on a Portal</title>
- <para>You have to set permission for new portals as well as existing
- portals:</para>
+ <para>
+ You have to set permission for new portals as well as existing portals:
+ </para>
<itemizedlist>
<listitem>
<para>
- For new portals: on the Toolbar select
- <emphasis role="bold">Site</emphasis>
- then click on the
- <emphasis role="bold">Add New Portal</emphasis>
- button, select the
- <emphasis role="bold">Permission Setting</emphasis>
- tab then the
- <emphasis role="bold">Access Permission Setting</emphasis>
- sub tab.
-
+ For new portals: on the Toolbar select <emphasis role="bold">Site</emphasis> then click on the <emphasis role="bold">Add New Portal</emphasis> button, select the <emphasis role="bold">Permission Setting</emphasis> tab then the <emphasis role="bold">Access Permission Setting</emphasis> sub tab.
<mediaobject>
<imageobject>
- <imagedata fileref="images/Access2.6.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Access2.6.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
<para>
- For existing portals: on the Toolbar click
- <emphasis role="bold">Site Editor</emphasis>
- then
- <emphasis role="bold">Edit Page</emphasis>
- . Click on
- <emphasis role="bold">View Page properties</emphasis>
- then select the
- <emphasis role="bold">Permission Setting</emphasis>
- tab.
+ For existing portals: on the Toolbar click <emphasis role="bold">Site Editor</emphasis> then <emphasis role="bold">Edit Page</emphasis> . Click on <emphasis role="bold">View Page properties</emphasis> then select the <emphasis role="bold">Permission Setting</emphasis> tab.
<mediaobject>
<imageobject>
- <imagedata fileref="images/PortalPermission.png"
- format="PNG"></imagedata>
+ <imagedata fileref="images/PortalPermission.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
</itemizedlist>
<para>
- If you do not want everyone to access the Portal, do not select the
- <emphasis role="bold">Make it public</emphasis>
- check box and you have to select group by group. Do as follows:
+ If you do not want everyone to access the Portal, do not select the <emphasis role="bold">Make it public</emphasis> check box and you have to select group by group. Do as follows:
<itemizedlist>
<listitem>
<para>
- Click the
- <emphasis role="bold">Add Permission</emphasis>
- button.
+ Click the <emphasis role="bold">Add Permission</emphasis> button.
</para>
</listitem>
- <listitem>Select the group you want to add on the left and then
- select a membership type on the right. In the membership types
- list, means allowing any membership type.</listitem>
<listitem>
<para>
- After selecting a membership type, the selected permission is
- displayed in the access permission list. Each time, you only can
- select one group with one membership type. If you want to add
- more, click
- <emphasis role="bold">Add Permission</emphasis>
- and select again.
+ Select the group you want to add on the left and then select a membership type on the right. In the membership types list, means allowing any membership type.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ After selecting a membership type, the selected permission is displayed in the access permission list. Each time, you only can select one group with one membership type. If you want to add more, click <emphasis role="bold">Add Permission</emphasis> and select again.
<mediaobject>
<imageobject>
- <imagedata fileref="images/PermissionSetting2.png"
- format="PNG"></imagedata>
+ <imagedata fileref="images/PermissionSetting2.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
</itemizedlist>
</para>
-
</section>
- <section>
+
+ <section id="sect-User_Guide-Manage_Permission-Set_the_Edit_Permission_on_a_Portal">
<title>Set the Edit Permission on a Portal</title>
- <para>Only users who are in the portal editor group can edit that
- portal. Access rights can be given to several groups but edit rights
- can only be given to a group with a membership type (or every
- membership type by select ). To assign an edit permission to a user,
- you must add him to the editor group of the respective portal.</para>
<para>
+ Only users who are in the portal editor group can edit that portal. Access rights can be given to several groups but edit rights can only be given to a group with a membership type (or every membership type by select ). To assign an edit permission to a user, you must add him to the editor group of the respective portal.
+ </para>
+ <para>
<orderedlist>
<listitem>
<para>
- Use one of these following paths to assign permissions on a
- portal:
+ Use one of these following paths to assign permissions on a portal:
<itemizedlist>
<listitem>
- On the Toolbar select
- <emphasis role="bold">Site</emphasis>
- ->
- <emphasis role="bold">Add New Portal</emphasis>
- ->
- <emphasis role="bold">Permission Setting</emphasis>
- tab -->
- <emphasis role="bold">Edit Permission Setting</emphasis>
- sub tab.
+ <para>
+ On the Toolbar select <emphasis role="bold">Site</emphasis> -> <emphasis role="bold">Add New Portal</emphasis> -> <emphasis role="bold">Permission Setting</emphasis> tab --> <emphasis role="bold">Edit Permission Setting</emphasis> sub tab.
+ </para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
- On the Toolbar click
- <emphasis role="bold">Site Editor</emphasis>
- ->
- <emphasis role="bold">Edit Page</emphasis>
- ->
- <emphasis role="bold">View Page properties</emphasis>
- ->
- <emphasis role="bold">Permission Setting</emphasis>
- tab -->
- <emphasis role="bold">Edit Permission Setting</emphasis>
- sub tab.
+ <para>
+ On the Toolbar click <emphasis role="bold">Site Editor</emphasis> -> <emphasis role="bold">Edit Page</emphasis> -> <emphasis role="bold">View Page properties</emphasis> -> <emphasis role="bold">Permission Setting</emphasis> tab --> <emphasis role="bold">Edit Permission Setting</emphasis> sub tab.
+ </para>
</listitem>
</itemizedlist>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Edit2.6.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Edit2.6.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
<para>
- Click
- <emphasis role="bold">Select Permission</emphasis>
- to choose a group.
+ Click <emphasis role="bold">Select Permission</emphasis> to choose a group.
</para>
</listitem>
<listitem>
- <para>Select a group and a membership type (select if you want to
- assign all membership types for the selected group). After
- selecting
- the membership from the right, the selected information
- is displayed.</para>
+ <para>
+ Select a group and a membership type (select if you want to assign all membership types for the selected group). After selecting the membership from the right, the selected information is displayed.
+ </para>
</listitem>
<listitem>
<para>
- 4. Click on the
- <emphasis role="bold">Save</emphasis>
- button to accept.
+ 4. Click on the <emphasis role="bold">Save</emphasis> button to accept.
<mediaobject>
<imageobject>
- <imagedata fileref="images/PermissionSetting1.png"
- format="PNG"></imagedata>
+ <imagedata fileref="images/PermissionSetting1.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
@@ -207,187 +153,169 @@
</orderedlist>
</para>
</section>
- <section>
+
+ <section id="sect-User_Guide-Manage_Permission-Initialize_a_Permission_on_a_Page">
<title>Initialize a Permission on a Page</title>
- <para>In some cases, permissions on a page are initialized and users
- who have the edit permission can change the page.</para>
+ <para>
+ In some cases, permissions on a page are initialized and users who have the edit permission can change the page.
+ </para>
<itemizedlist>
- <listitem>If the owner type of a page is "user", you don't
- have to set permissions, no one except the creator has access and
- edit permissions.</listitem>
+ <listitem>
+ <para>
+ If the owner type of a page is "user", you don't have to set permissions, no one except the creator has access and edit permissions.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the Owner type of a page is "group", initial permissions on page are:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Access permission: everyone in that group.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Edit permission: the manager of that group.
+ </para>
+ </listitem>
</itemizedlist>
<itemizedlist>
- <listitem>If the Owner type of a page is "group", initial
- permissions on page are:</listitem>
- <listitem>Access permission: everyone in that group.</listitem>
- <listitem>Edit permission: the manager of that group.</listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>If the Owner type of a page is portal, initial permissions
- are:</listitem>
- <listitem>Access permission: users who can access that portal.</listitem>
- <listitem>Edit permission: users who can edit that portal.</listitem>
- </itemizedlist>
- </section>
- <section>
- <title>Set the Access Permission on a Page</title>
- <para>When you have access permission on a specific page, you can
- access that page which other users can't access it because they are
- not given that permission.</para>
- <para>These following path help you quickly set access permission for
- a page:</para>
- <itemizedlist>
<listitem>
- Select
- <emphasis role="bold">Site Editor</emphasis>
- on the Toolbar ->
- <emphasis role="bold">Edit Page</emphasis>
- ->
- <emphasis role="bold">View Page Properties</emphasis>
- tab ->
- <emphasis role="bold">Access Permission Setting (default)</emphasis>
- sub tab.
+ <para>
+ If the Owner type of a page is portal, initial permissions are:
+ </para>
</listitem>
+ <listitem>
+ <para>
+ Access permission: users who can access that portal.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Edit permission: users who can edit that portal.
+ </para>
+ </listitem>
</itemizedlist>
- <para>To be able to access a page (read the page content or take an
- action on the page), users have to be in one of the groups that have
- access permission to that page. There may be several groups that have
- access right to a page.</para>
+ </section>
+
+ <section id="sect-User_Guide-Manage_Permission-Set_the_Access_Permission_on_a_Page">
+ <title>Set the Access Permission on a Page</title>
<para>
- If you allow anyone to access the page tick on
- <emphasis role="bold">Make it public</emphasis>
- , otherwise, you have to select the groups one by one.
+ When you have access permission on a specific page, you can access that page which other users can't access it because they are not given that permission.
</para>
+ <para>
+ These following path help you quickly set access permission for a page:
+ </para>
+ <para>
+ Select <emphasis role="bold">Site Editor</emphasis> on the Toolbar -> <emphasis role="bold">Edit Page</emphasis> -> <emphasis role="bold">View Page Properties</emphasis> tab -> <emphasis role="bold">Access Permission Setting (default)</emphasis> sub tab.
+ </para>
+ <para>
+ To be able to access a page (read the page content or take an action on the page), users have to be in one of the groups that have access permission to that page. There may be several groups that have access right to a page.
+ </para>
+ <para>
+ If you allow anyone to access the page tick on <emphasis role="bold">Make it public</emphasis> , otherwise, you have to select the groups one by one.
+ </para>
<itemizedlist>
<listitem>
- Click the
- <emphasis role="bold">Add Permission</emphasis>
- button
+ <para>
+ Click the <emphasis role="bold">Add Permission</emphasis> button
+ </para>
</listitem>
- <listitem>Select a group you want to add on the left and then select
- a
- membership type on the right. In a membership types list, means
- allowing any membership type.</listitem>
<listitem>
- After selecting a membership type, the selected permission is
- displayed in the access right list. Each time, you can only select
- one group with one membership type. If you want to add more, click
- the
- <emphasis role="bold">Add Permission</emphasis>
- button and select again.
+ <para>
+ Select a group you want to add on the left and then select a membership type on the right. In a membership types list, means allowing any membership type.
+ </para>
</listitem>
+ <listitem>
+ <para>
+ After selecting a membership type, the selected permission is displayed in the access right list. Each time, you can only select one group with one membership type. If you want to add more, click the <emphasis role="bold">Add Permission</emphasis> button and select again.
+ </para>
+ </listitem>
</itemizedlist>
</section>
- <section>
+
+ <section id="sect-User_Guide-Manage_Permission-Set_the_Edit_Permission_on_a_Page">
<title>Set the Edit Permission on a Page</title>
- <para>Only users who are in the page's editor group can edit it. The
- access right can be set for several groups but the edit right only
- can
- be set for one single group. To give a user the edit permission,
- you
- must add him to the editors group of that page.</para>
<para>
+ Only users who are in the page's editor group can edit it. The access right can be set for several groups but the edit right only can be set for one single group. To give a user the edit permission, you must add him to the editors group of that page.
+ </para>
+ <para>
<orderedlist>
<listitem>
<para>
<itemizedlist>
<listitem>
- Select
- <emphasis role="bold">Site Editor</emphasis>
- on the Toolbar ->
- <emphasis role="bold">Edit Page</emphasis>
- ->
- <emphasis role="bold">View Page Properties</emphasis>
- tab ->
- <emphasis role="bold">Edit Permission Setting</emphasis>
- sub tab.
+ <para>
+ Select <emphasis role="bold">Site Editor</emphasis> on the Toolbar -> <emphasis role="bold">Edit Page</emphasis> -> <emphasis role="bold">View Page Properties</emphasis> tab -> <emphasis role="bold">Edit Permission Setting</emphasis> sub tab.
+ </para>
</listitem>
<listitem>
- Or, select
- <emphasis role="bold">Group</emphasis>
- on the Toolbar ->
- <emphasis role="bold">Administration</emphasis>
- ->
- <emphasis role="bold">Page Management</emphasis>
- ->
- <emphasis role="bold">Edit Page icon</emphasis>
- ->
- <emphasis role="bold">View Page Properties</emphasis>
- tab ->
- <emphasis role="bold">Edit Permission Setting</emphasis>
- sub tab.
+ <para>
+ Or, select <emphasis role="bold">Group</emphasis> on the Toolbar -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Page Management</emphasis> -> <emphasis role="bold">Edit Page icon</emphasis> -> <emphasis role="bold">View Page Properties</emphasis> tab -> <emphasis role="bold">Edit Permission Setting</emphasis> sub tab.
+ </para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>
- Click the
- <emphasis role="bold">Select Permission</emphasis>
- button to set new or change another group.
+ Click the <emphasis role="bold">Select Permission</emphasis> button to set new or change another group.
</para>
</listitem>
<listitem>
- <para>Select a group with a membership type (select if you want all
- membership types in a selected group)</para>
+ <para>
+ Select a group with a membership type (select if you want all membership types in a selected group)
+ </para>
</listitem>
<listitem>
- <para>After selecting a specific membership from the right, the
- selected information is displayed.</para>
+ <para>
+ After selecting a specific membership from the right, the selected information is displayed.
+ </para>
</listitem>
<listitem>
<para>
- Click the
- <emphasis role="bold">Save</emphasis>
- button to accept.
+ Click the <emphasis role="bold">Save</emphasis> button to accept.
</para>
</listitem>
</orderedlist>
</para>
-
</section>
- <section>
+
+ <section id="sect-User_Guide-Manage_Permission-Set_the_Access_Permission_on_a_Portlet">
<title>Set the Access Permission on a Portlet</title>
<para>
- Follow these below steps to set access permission on a portlet:
+ Follow these below steps to set access permission on a portlet:
<orderedlist>
<listitem>
<para>
- Select
- <emphasis role="bold">Group</emphasis>
- -->
- <emphasis role="bold">Administration</emphasis>
- -->
- <emphasis role="bold">Application Registry</emphasis>
- on the navigation bar
+ Select <emphasis role="bold">Group</emphasis> --> <emphasis role="bold">Administration</emphasis> --> <emphasis role="bold">Application Registry</emphasis> on the navigation bar
<mediaobject>
<imageobject>
- <imagedata fileref="images/Application1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Application1.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
- <para>Select a category on the left pane that includes the portlet
- you want to set right. Then all portlets of the selected category
- are
- listed immediately and detail information of each portlet is
- displayed
- on the right pane.</para>
+ <para>
+ Select a category on the left pane that includes the portlet you want to set right. Then all portlets of the selected category are listed immediately and detail information of each portlet is displayed on the right pane.
+ </para>
</listitem>
<listitem>
<para>
- To set permissions for a portlet:
+ To set permissions for a portlet:
<itemizedlist>
<listitem>
- Click the
- <emphasis role="bold">Add Permission</emphasis>
- button to add access permissions to more groups .
+ <para>
+ Click the <emphasis role="bold">Add Permission</emphasis> button to add access permissions to more groups .
+ </para>
</listitem>
<listitem>
- Or select the
- <emphasis role="bold">Make it public</emphasis>
- check box to allow everyone to access.
+ <para>
+ Or select the <emphasis role="bold">Make it public</emphasis> check box to allow everyone to access.
+ </para>
</listitem>
</itemizedlist>
</para>
@@ -395,4 +323,7 @@
</orderedlist>
</para>
</section>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Manage_Portals.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Manage_Portals.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Manage_Portals.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Manage_Portals">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,23 +21,236 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Manage Portals</title>
- <para>You can easily manage a portal by editing or deleting it.</para>
- <section>
+ --><title>Manage Portals</title>
+ <para>
+ You can easily manage a portal by editing or deleting it.
+ </para>
+ <section id="sect-User_Guide-Manage_Portals-Edit_a_Portal">
<title>Edit a Portal</title>
+ <para>
+ You can change information of the current using portal such as properties or layout. However, you must have the edit right given by an Admininstrator. When you have edit right, follow these steps to edit the current portal:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current Portal</emphasis>. A form to edit the current portal will appear:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditCurrentPortal.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Indicator </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Meaning </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/preview.png!
+ </entry>
+ <entry>
+ *Preview page*: allows viewing node's page in preview mode.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/EditPage.png!
+ </entry>
+ <entry>
+ *Edit page properties*: allows editing node's page properties.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/ShowContainer.png!
+ </entry>
+ <entry>
+ *Show container*: allows listing all existing containers when editing node's page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/ShowPortlet.png!
+ </entry>
+ <entry>
+ *Show portlet*: allows listing all existing portlets when editing node's page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/Savepage.png!
+ </entry>
+ <entry>
+ *Save page*: allows saving changes of page when editing node's page.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/RollBack.png!
+ </entry>
+ <entry>
+ *Rollback*: allows canceling all changes that have not been saved.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/Abort.png!
+ </entry>
+ <entry>
+ *Abort*: allows canceling all changes that have not been saved and escaping Edit page and navigation form.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/Finish1.png!
+ </entry>
+ <entry>
+ *Finish*: allows saving all changes and escaping Edit page and navigation form.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ 2. Click!images/EditPage.png! icon to edit portal properties.
+ </para>
+ <para>
+ 3. Click!images/ShowContainer.png! icon to edit portal container layout.
+ </para>
+ <para>
+ 4. Click!images/ShowPortlet.png! icon to edit portal portlet layout.
+ </para>
+ <para>
+ 5. Click!images/Savepage.png! icon to save changes.
+ </para>
+ <orderedlist id="orde-User_Guide-Edit_a_Portal-For_GateIn_Portal_2.6">
+ <title>For GateIn Portal 2.6</title>
+ <para>
+ You must have the edit right to change information of the current using portal:
+ </para>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">Editor</emphasis> on the Toolbar ->click <emphasis role="bold">Edit Site Layout</emphasis>.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditPortal.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the!images/PortalProperties.png! button in the <emphasis role="bold">Edit Inline Composer</emphasis>. The edit Form of the portal will be shown:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditPortal2.6New.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Change the properties of the current portal.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Click the <emphasis role="bold">Propertites</emphasis> tab. Select an option for <emphasis role="bold">Keep session alive</emphasis> that means keeping the working session for a long time to avoid the working time out. There are 3 options:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Never : it never happens even if an application requests it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ On-demand : it starts to be used as soon as an application requests it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Always: it's always enabled (which has a cost but the administrator will be aware of that).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ 5. Set permissions for a portal:
+ </para>
+ <para>
+ To change any permission, click the <emphasis role="bold">Select Permission</emphasis> button and then select a group with the Membership type you want. Only one group can have the Edit Permission of the portal.
+ </para>
+ <para>
+ You can set the Edit Permission for the portal when you create or edit it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 6. Click the <emphasis role="bold">Save</emphasis> button to accept changes or the <emphasis role="bold">Cancel</emphasis> button to quit.
+ </para>
+ </listitem>
+ </orderedlist>
</section>
- <para>You can change information of the current using portal such as
- properties or layout. However, you must have the edit right given by
- an Admininstrator. When you have edit right, follow these steps to
- edit the current portal:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Edit Current Portal</emphasis>. A form to edit the current portal will appear:</para><mediaobject><imageobject><imagedata fileref="images/EditCurrentPortal.png" format="PNG"></imagedata></imageobject></mediaobject><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Indicator </emphasis></entry><entry><emphasis role="bold"> Meaning </emphasis></entry></row><row><entry>!images/preview.png! </entry><entry> *Preview page*: allows viewing node's page in preview mode. </entry></row><row><entry>!images/EditPage.png! </entry><entry> *Edit page properties*: allows editing node's page properties. </entry></row><row><entry>!images/ShowContainer.png! </entry><entry> *Show container*: allows listing all existing containers when e!
diting node's page. </entry></row><row><entry>!images/ShowPortlet.png! </entry><entry> *Show portlet*: allows listing all existing portlets when editing node's page. </entry></row><row><entry>!images/Savepage.png! </entry><entry> *Save page*: allows saving changes of page when editing node's page. </entry></row><row><entry>!images/RollBack.png! </entry><entry> *Rollback*: allows canceling all changes that have not been saved. </entry></row><row><entry> !images/Abort.png! </entry><entry> *Abort*: allows canceling all changes that have not been saved and escaping Edit page and navigation form. </entry></row><row><entry> !images/Finish1.png! </entry><entry> *Finish*: allows saving all changes and escaping Edit page and navigation form. </entry></row></tbody></tgroup></informaltable><para>2. Click!images/EditPage.png! icon to edit portal properties.</para><para>3. Click!images/ShowContainer.png! icon to edit portal container layout.</para><para>4. Click!!
images/ShowPortlet.png! icon to edit portal portlet layout.</p!
ara><par
a>5. Click!images/Savepage.png! icon to save changes.</para><variablelist><listitem>For GateIn Portal 2.6</listitem></variablelist><para>You must have the edit right to change information of the current using portal:</para><para>1. Go to <emphasis role="bold">Editor</emphasis> on the Toolbar ->click <emphasis role="bold">Edit Site Layout</emphasis>.</para><mediaobject><imageobject><imagedata fileref="images/EditPortal.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click the!images/PortalProperties.png! button in the <emphasis role="bold">Edit Inline Composer</emphasis>. The edit Form of the portal will be shown:</para><mediaobject><imageobject><imagedata fileref="images/EditPortal2.6New.png" format="PNG"></imagedata></imageobject></mediaobject><para>3. Change the properties of the current portal.</para><para>4. Click the <emphasis role="bold">Propertites</emphasis> tab. Select an option for <emphasis role="bold">Keep session alive</emphasis> that mea!
ns keeping the working session for a long time to avoid the working time out. There are 3 options:</para><itemizedlist><listitem>Never : it never happens even if an application requests it.</listitem><listitem>On-demand : it starts to be used as soon as an application requests it.</listitem><listitem>Always: it's always enabled (which has a cost but the administrator will be aware of that).</listitem></itemizedlist><para>5. Set permissions for a portal:</para><para>To change any permission, click the <emphasis role="bold">Select Permission</emphasis> button and then select a group with the Membership type you want. Only one group can have the Edit Permission of the portal.</para><para>You can set the Edit Permission for the portal when you create or edit it.</para><para>6. Click the <emphasis role="bold">Save</emphasis> button to accept changes or the <emphasis role="bold">Cancel</emphasis> button to quit.</para>
-<section><title>Delete a Portal</title></section>
-<para>You can easily delete a portal by following these guides:</para><para>1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Portals</emphasis></para><variablelist><listitem>For Portal 2.6</listitem></variablelist><para>+The 1^st^ way+:</para><para>1. Go to <emphasis role="bold">Administrator</emphasis> on the Toolbar --> <emphasis role="bold">Manage Portals</emphasis>. List of all portals will be shown.</para><para>2. Click the trash can !images/deleteIcon.png! icon in the row of the portal you want to delete in the portal list.</para><para>3. Click the <emphasis role="bold">OK</emphasis> button in the confirmation message to delete.</para><para>+The 2^nd^ way+:</para><para>1. Click on <emphasis role="bold">Site</emphasis> in the Toolbar --> click on!images/DeletePortal2.6.png! .The confirmation message will appear:</para><m!
ediaobject><imageobject><imagedata fileref="images/SureDelete.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click <emphasis role="bold">OK</emphasis> to accept deleting a portal or <emphasis role="bold">Cancel</emphasis> to quit without deleting it.</para>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-Manage_Portals-Delete_a_Portal">
+ <title>Delete a Portal</title>
+ <para>
+ You can easily delete a portal by following these guides:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -> <emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Advanced</emphasis> --> <emphasis role="bold">Manage Portals</emphasis>
+ </para>
+ <para>
+ +The 1^st^ way+:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">Administrator</emphasis> on the Toolbar --> <emphasis role="bold">Manage Portals</emphasis>. List of all portals will be shown.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the trash can !images/deleteIcon.png! icon in the row of the portal you want to delete in the portal list.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Click the <emphasis role="bold">OK</emphasis> button in the confirmation message to delete.
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ +The 2^nd^ way+:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Click on <emphasis role="bold">Site</emphasis> in the Toolbar --> click on!images/DeletePortal2.6.png! .The confirmation message will appear:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SureDelete.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click <emphasis role="bold">OK</emphasis> to accept deleting a portal or <emphasis role="bold">Cancel</emphasis> to quit without deleting it.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Page_Creation_Wizard.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Page_Creation_Wizard.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Page_Creation_Wizard.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Page_Creation_Wizard">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,15 +21,231 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Page Creation Wizard</title>
+ <para>
+ Only by following there simple steps can you create a page quickly by using a wizard and publish this page on the Navigation bar:
+ </para>
+ <para>
+ 1. Go to <emphasis role="bold">GateIn Start</emphasis> -><emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Basic</emphasis> --> <emphasis role="bold">Create page wizard</emphasis>. <emphasis role="bold">Welcome to Page Creation Wizard</emphasis> appears:
+ </para>
+ <para>
+ For GateIn Portal 2.6
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Go to <emphasis role="bold">Editor</emphasis> --> <emphasis role="bold">Add New Page</emphasis> on the Toolbar. <emphasis role="bold">Create page wizard</emphasis>: <emphasis role="bold">Welcome to Page Creation Wizard</emphasis> appears:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Welcome.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the <emphasis role="bold">Next</emphasis> button or number '1' of the wizard steps in order to go to step 1. This step allows users to set up page setting such as :the navigation path, the node name, the display name, etc.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Wizard1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ There are two parts: the left pane is used to show a small description that will guide you what to do in this step. And the main wizard includes two parts: the left pane contains a list of navigations and shows the page list of each selected navigation, the right pane displays main information of a page.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. On the left of wizard: Click the combo box icon !images/ComboBox.png! to see the navigations list. Select a navigation from the list that you want to create page. The pages list of selected navigation are displayed.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageList.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Select a page from the above list or click on arrow up icon !images/ArrowIcon.png! to add a page at root.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Pagewizard1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Current Selected Page Node
+ </entry>
+ <entry>
+ The path of the selected node to add a new sub page
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Node Name
+ </entry>
+ <entry>
+ The node name of the added page. It is required field. This field must start with a character and must have a length between 3 and 30 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Display Name
+ </entry>
+ <entry>
+ The display name of the node which contains the added page and must have a length between 3 and 30 characters.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Visible
+ </entry>
+ <entry>
+ This check box allows to hide this page. If not checked the page is under no circumstances shown, even if the publication period is OK. If checked the page or the page node appears on on the navigation bar, the page navigation and the site map. If "visible" is checked the visibility can depend on the "publication date & time" option.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Publication date&time
+ </entry>
+ <entry>
+ This option allows publishing the page for a period of time. If this option is checked the visibility of the page depends on the publication period start and end date.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Start Publication Date
+ </entry>
+ <entry>
+ The start date and time to publish the page
+ </entry>
+ </row>
+ <row>
+ <entry>
+ End Publication Date
+ </entry>
+ <entry>
+ The end date and time to publish the page
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ +<emphasis role="bold">Note:</emphasis>+You can set date and time by clicking the <emphasis role="bold">Start Publication Date</emphasis> field and <emphasis role="bold">End Publication Date</emphasis> field and select a date in the calendar pop up
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Calendar.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 5. Click <emphasis role="bold">Next</emphasis> or number '2' of the wizard steps to go to step 2.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageWizard2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 6. Select <emphasis role="bold">Empty Layout</emphasis> or click the icon to see more templates to select.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 7. Click the <emphasis role="bold">Next</emphasis> button or number '3' of the wizard step to go to step 3. You can drag portlets on the left pane and drop it on the right pane to constitute the content of this page.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/PageWizard3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Indicator </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Meaning </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/preview.png!
+ </entry>
+ <entry>
+ *Preview Page*: allows viewing a page in preview mode
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/ShowContainer.png!
+ </entry>
+ <entry>
+ *Show Container*: allows listing all existing containers
+ </entry>
+ </row>
+ <row>
+ <entry>
+ !images/ShowPortlet.png!
+ </entry>
+ <entry>
+ *Show Portlets*: allows listing all existing portlets
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ <listitem>
+ <para>
+ 8. Click the <emphasis role="bold">Show Container</emphasis> icon !images/ShowContainer.png! if you want to see the existing containers and re-select the layout of the page. There will be a category list which contains specific containers when clicking the icon.
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ for GateIn Portal 2.6
+ </para>
+ <para>
+ The step 2 of creating a page by wizard is the same as the above
+ </para>
+ <para>
+ In the step 3, you can drag portlets from the Edit Inline Composer popup and drag it to the constitute the content of this page
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Step32.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ You can click on!images/Switch.png! to view the content of this page.
+ </para>
+ <para>
+ Click <emphasis role="bold">Save</emphasis> to accept creating a new page, the <emphasis role="bold">Back</emphasis> button to return the previous step or the <emphasis role="bold">Abort</emphasis> button to quit without creating a new page.
+ </para>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Page Creation Wizard</title>
- <para>Only by following there simple steps can you create a page
- quickly by using a wizard and publish this page on the Navigation bar:</para>
- <para>
- 1. Go to
- <emphasis role="bold">GateIn Start</emphasis>
- -><emphasis role="bold">Administration</emphasis> -> <emphasis role="bold">Basic</emphasis> --> <emphasis role="bold">Create page wizard</emphasis>. <emphasis role="bold">Welcome to Page Creation Wizard</emphasis> appears:</para><variablelist><listitem>For GateIn Portal 2.6</listitem></variablelist><para>1. Go to <emphasis role="bold">Editor</emphasis> --> <emphasis role="bold">Add New Page</emphasis> on the Toolbar. <emphasis role="bold">Create page wizard</emphasis>: <emphasis role="bold">Welcome to Page Creation Wizard</emphasis> appears:</para><mediaobject><imageobject><imagedata fileref="images/Welcome.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click the <emphasis role="bold">Next</emphasis> button or number '1' of the wizard steps in order to go to step 1. This step allows users to set up page setting such as :the navigation path, the node name, the display name, etc.</para><mediaobject><imageobject><imagedata fileref="images/Wiz!
ard1.png" format="PNG"></imagedata></imageobject></mediaobject><para>There are two parts: the left pane is used to show a small description that will guide you what to do in this step. And the main wizard includes two parts: the left pane contains a list of navigations and shows the page list of each selected navigation, the right pane displays main information of a page.</para><para>3. On the left of wizard: Click the combo box icon !images/ComboBox.png! to see the navigations list. Select a navigation from the list that you want to create page. The pages list of selected navigation are displayed.</para><mediaobject><imageobject><imagedata fileref="images/PageList.png" format="PNG"></imagedata></imageobject></mediaobject><para>4. Select a page from the above list or click on arrow up icon !images/ArrowIcon.png! to add a page at root.</para><mediaobject><imageobject><imagedata fileref="images/Pagewizard1.png" format="PNG"></imagedata></imageobject></mediaobject><informal!
table frame="none" rowsep="0" colsep="0"><tgroup cols="2"><col!
spec ali
gn="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Current Selected Page Node </entry><entry> The path of the selected node to add a new sub page </entry></row><row><entry> Node Name </entry><entry> The node name of the added page. It is required field. This field must start with a character and must have a length between 3 and 30 characters. </entry></row><row><entry> Display Name </entry><entry> The display name of the node which contains the added page and must have a length between 3 and 30 characters. </entry></row><row><entry> Visible </entry><entry> This check box allows to hide this page. If not checked the page is under no circumstances shown, even if the publication period is OK. If checked the page or the page node appears on on the navigation bar, the page navigation and the site map. If "visible" !
is checked the visibility can depend on the "publication date & time" option. </entry></row><row><entry> Publication date&time </entry><entry> This option allows publishing the page for a period of time. If this option is checked the visibility of the page depends on the publication period start and end date. </entry></row><row><entry> Start Publication Date </entry><entry> The start date and time to publish the page </entry></row><row><entry> End Publication Date </entry><entry> The end date and time to publish the page </entry></row></tbody></tgroup></informaltable><para>+<emphasis role="bold">Note:</emphasis>+You can set date and time by clicking the <emphasis role="bold">Start Publication Date</emphasis> field and <emphasis role="bold">End Publication Date</emphasis> field and select a date in the calendar pop up</para><mediaobject><imageobject><imagedata fileref="images/Calendar.png" format="PNG"></imagedata></imageobject></mediaobject><para>5. Clic!
k <emphasis role="bold">Next</emphasis> or number '2' of the w!
izard st
eps to go to step 2.</para><mediaobject><imageobject><imagedata fileref="images/PageWizard2.png" format="PNG"></imagedata></imageobject></mediaobject><para>6. Select <emphasis role="bold">Empty Layout</emphasis> or click the icon to see more templates to select.</para><para>7. Click the <emphasis role="bold">Next</emphasis> button or number '3' of the wizard step to go to step 3. You can drag portlets on the left pane and drop it on the right pane to constitute the content of this page.</para><mediaobject><imageobject><imagedata fileref="images/PageWizard3.png" format="PNG"></imagedata></imageobject></mediaobject><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Indicator </emphasis></entry><entry><emphasis role="bold"> Meaning </emphasis></entry></row><row><entry>!images/preview.png! </entry><entry> *Preview Page*: allows viewing a page in preview!
mode </entry></row><row><entry>!images/ShowContainer.png! </entry><entry> *Show Container*: allows listing all existing containers </entry></row><row><entry>!images/ShowPortlet.png! </entry><entry> *Show Portlets*: allows listing all existing portlets </entry></row></tbody></tgroup></informaltable><para>8. Click the <emphasis role="bold">Show Container</emphasis> icon !images/ShowContainer.png! if you want to see the existing containers and re-select the layout of the page. There will be a category list which contains specific containers when clicking the icon.</para><variablelist><listitem>for GateIn Portal 2.6</listitem></variablelist><para>The step 2 of creating a page by wizard is the same as the above</para><para>In the step 3, you can drag portlets from the Edit Inline Composer popup and drag it to the constitute the content of this page</para><mediaobject><imageobject><imagedata fileref="images/Step32.6.png" format="PNG"></imagedata></imageobject></mediao!
bject><para>You can click on!images/Switch.png! to view the co!
ntent of
this page.</para><para>Click <emphasis role="bold">Save</emphasis> to accept creating a new page, the <emphasis role="bold">Back</emphasis> button to return the previous step or the <emphasis role="bold">Abort</emphasis> button to quit without creating a new page.</para>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Switching_between_Portals.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Switching_between_Portals.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Switching_between_Portals.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Switching_between_Portals">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,26 +21,21 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Switching between Portals</title>
- <para>GateIn Portal allows users to switch between Portals simply and
- easily. You can use another portals such as gateway, starting site if
- you are given the appropriate permissions by the administrators.</para>
+ --><title>Switching between Portals</title>
<para>
- Go to
- <emphasis role="bold">Site</emphasis>
- on the Toolbarm it will list all portals in which you have at least
- the access right
+ GateIn Portal allows users to switch between Portals simply and easily. You can use another portals such as gateway, starting site if you are given the appropriate permissions by the administrators.
</para>
+ <para>
+ Go to <emphasis role="bold">Site</emphasis> on the Toolbarm it will list all portals in which you have at least the access right
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/ChangePortal2.6.png" format="PNG"></imagedata>
+ <imagedata fileref="images/ChangePortal2.6.png" format="PNG" />
</imageobject>
</mediaobject>
- <para>You easily switch between Portals by simply clicking on the
- portal that you want to choose and wait for few seconds to take
- effect.</para>
-</section>
\ No newline at end of file
+ <para>
+ You easily switch between Portals by simply clicking on the portal that you want to choose and wait for few seconds to take effect.
+ </para>
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/Toolbar.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/Toolbar.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/Toolbar.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Toolbar">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,77 +21,91 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Toolbar</title>
- <para>The convenient Toolbar helps users
- and administrators to manipulate all actions quickly.</para>
- <section>
+ --><title>Toolbar</title>
+ <para>
+ The convenient Toolbar helps users and administrators to manipulate all actions quickly.
+ </para>
+ <section id="sect-User_Guide-Toolbar-User_Actions_in_the_Toolbar">
<title>User Actions in the Toolbar</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/exo2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ You can change language, change skin and sign out from GateIn Portal.
+ </para>
</section>
-
- <section>
- <title></title>
- </section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/exo2.6.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>You can change language, change skin and sign out from GateIn Portal.</para>
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Dashboard">
<title>Dashboard</title>
+ <para>
+ Stuff Goes Here?
+ </para>
</section>
-
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Site">
<title>Site</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Site2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ It shows all different sites available in GateIn Portal allows users to directly edit the navigation tree.
+ </para>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Site2.6.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>It shows all different sites available in GateIn Portal allows
- users to directly edit the navigation tree.</para>
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Group">
<title>Group</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/GroupPortal2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ Users can easily see and access pages in GateIn Portal.
+ </para>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/GroupPortal2.6.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>Users can easily see and access pages in GateIn Portal.</para>
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Administration_Actions_in_the_Toolbar">
<title>Administration Actions in the Toolbar</title>
+ <para>
+ Stuff Goes Here?
+ </para>
</section>
-
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Editor">
<title>Editor</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Edit.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ You easily edit a page or add a new page
+ </para>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Edit.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>You easily edit a page or add a new page</para>
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Administrator">
<title>Administrator</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Admin2.6.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Admin2.6.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Toolbar-Edit_Inline">
<title>Edit Inline</title>
+ <para>
+ With the Edit Inline Composer popup that consists of two tabs: Applications and Containers, it is convenient for a user to select the component that he wants and to drag and drop it to the page.
+ </para>
+ <para>
+ You also quickly edit, delete portlets in a page, change portal's properties or switch the view mode.
+ </para>
</section>
- <para>With the Edit Inline Composer popup that consists of two
- tabs: Applications and Containers, it is convenient for a user to
- select the component that he wants and to drag and drop it to the
- page.</para>
- <para>You also quickly edit, delete portlets in a page, change
- portal's properties or switch the view mode.</para>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portal/User_Management.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portal/User_Management.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portal/User_Management.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-User_Management">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,134 +21,419 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>User Management</title>
- <para>It is so difficult to manage and set permissions for a great
- number of registered users in a system. To solve this problem, GateIn
- Portal helps Administrators manage users, groups and memberships
- easily as well as effectively.</para>
+ --><title>User Management</title>
<para>
- Go to
- <emphasis role="bold">Administration</emphasis>
- /
- <emphasis role="bold">Community Management</emphasis>
- (or Organization/Management). The
- <emphasis role="bold">Organization</emphasis>
- form appears:
+ It is so difficult to manage and set permissions for a great number of registered users in a system. To solve this problem, GateIn Portal helps Administrators manage users, groups and memberships easily as well as effectively.
</para>
+ <para>
+ Go to <emphasis role="bold">Administration</emphasis> / <emphasis role="bold">Community Management</emphasis> (or Organization/Management). The <emphasis role="bold">Organization</emphasis> form appears:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/UserManage.png" format="PNG"></imagedata>
+ <imagedata fileref="images/UserManage.png" format="PNG" />
</imageobject>
</mediaobject>
- <section>
+ <section id="sect-User_Guide-User_Management-Manage_Users">
<title>Manage Users</title>
+ <para>
+ Select the <emphasis role="bold">User Management</emphasis> tab in the <emphasis role="bold">Organization</emphasis> form. By default, it will show all existing registered users. With <emphasis role="bold">User Management</emphasis> , you can see all existing registered users, and also search, edit, delete them. For each user, you can see his groups and his memberships (roles) in these groups. You can not add users to a group but you can remove them from the group.
+ </para>
</section>
- <para>
- Select the
- <emphasis role="bold">User Management</emphasis>
- tab in the
- <emphasis role="bold">Organization</emphasis>
- form. By default, it will show all existing registered users. With
- <emphasis role="bold">User Management</emphasis>
- , you can see all existing registered users, and also search, edit,
- delete them. For each user, you can see his groups and his memberships
- (roles) in these groups. You can not add users to a group but you can
- remove them from the group.
- </para>
- <section>
+
+ <section id="sect-User_Guide-User_Management-Search_a_user">
<title>Search a user</title>
+ <para>
+ The Administrator can search users by user name, first name, last name or email address.
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Type the search term related to the user that you want to search. You do not need to enter an exact term.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Select the field in which you would like to search
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SearchUser.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Click the magnifying glass icon!images/SearchIcon.png! to perform searching. It will return a searching result in form.
+ </para>
+ </listitem>
+ </orderedlist>
</section>
- <para>The Administrator can search users by user name, first name,
- last name or email address.</para>
- <para>1. Type the search term related to the user that you want to
- search. You do not need to enter an exact term.</para>
- <para>2. Select the field in which you would like to search</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/SearchUser.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>3. Click the magnifying glass icon!images/SearchIcon.png! to
- perform searching. It will return a searching result in form.</para>
- <section>
+
+ <section id="sect-User_Guide-User_Management-Edit_a_user">
<title>Edit a user</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Click the edit icon!images/EditIcon.png! corresponding to the user that you want to edit.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Demo1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Select the <emphasis role="bold">Account Info</emphasis> tab to view and change the essential user information .
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <emphasis role="bold">User Name</emphasis> field can not be changed, other fields <emphasis role="bold">First Name</emphasis> , <emphasis role="bold">Last Name</emphasis> , <emphasis role="bold">Email Address</emphasis> can be changed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <emphasis role="bold">Change Password</emphasis> option allows making a new password for this user when he/she forgets his/her password. When the <emphasis role="bold">Change Password</emphasis> option is unchecked, <emphasis role="bold">New Password</emphasis> and <emphasis role="bold">Confirm Password</emphasis> are hidden. Passwords must contain at least 6 characters (letters, numbers and punctuation marks).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Select the <emphasis role="bold">User Profile</emphasis> tab to view and change profile information. The <emphasis role="bold">Language</emphasis> field is used to set the display language of that user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Select the <emphasis role="bold">User Membership</emphasis> tab to see user's information in groups.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Demo3.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <emphasis role="bold">User Membership</emphasis> tab indicates to which group the selected user belongs. In the above figure, the user "demo" is a member of two groups: "guests" and "users". The parent group of both is "platform".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ To remove the user from a group, click the trash can icon!images/DeleteIcon.png! on the row you want.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ 5. Click the <emphasis role="bold">Save</emphasis> button to accept changes.
+ </para>
+ </listitem>
+ </orderedlist>
</section>
- <para>1. Click the edit icon!images/EditIcon.png! corresponding to
- the user that you want to edit.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Demo1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>
- 2. Select the
- <emphasis role="bold">Account Info</emphasis>
- tab to view and change the essential user information .
- </para>
- <itemizedlist>
- <listitem>
- The
- <emphasis role="bold">User Name</emphasis>
- field can not be changed, other fields
- <emphasis role="bold">First Name</emphasis>
- ,
- <emphasis role="bold">Last Name</emphasis>
- ,
- <emphasis role="bold">Email Address</emphasis>
- can be changed.
- </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- The
- <emphasis role="bold">Change Password</emphasis>
- option allows making a new password for this user when he/she forgets
- his/her password. When the
- <emphasis role="bold">Change Password</emphasis>
- option is unchecked,
- <emphasis role="bold">New Password</emphasis>
- and
- <emphasis role="bold">Confirm Password</emphasis>
- are hidden. Passwords must contain at least 6 characters (letters,
- numbers and punctuation marks).
- </listitem>
- </itemizedlist>
- <para>
- 3. Select the
- <emphasis role="bold">User Profile</emphasis>
- tab to view and change profile information. The
- <emphasis role="bold">Language</emphasis>
- field is used to set the display language of that user.
- </para>
- <para>
- 4. Select the
- <emphasis role="bold">User Membership</emphasis>
- tab to see user's information in groups.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Demo3.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <itemizedlist>
- <listitem>
- The
- <emphasis role="bold">User Membership</emphasis>
- tab indicates to which group the selected user belongs. In the above
- figure, the user "demo" is a member of two groups: "guests" and "users". The parent group of both is "platform".</listitem><listitem>To remove the user from a group, click the trash can icon!images/DeleteIcon.png! on the row you want.</listitem></itemizedlist><para>5. Click the <emphasis role="bold">Save</emphasis> button to accept changes.</para><section><title>Delete a user</title></section>
-<para>1. In the <emphasis role="bold">User Management</emphasis> form: Click the trash can icon !images/DeleteIcon.png! corresponding to the user that you want to delete.</para><para>2. Click the <emphasis role="bold">OK</emphasis> button in the confirmation message to confirm or the <emphasis role="bold">Cancel</emphasis> button to quit without deleting anything.</para><section><title>Manage Groups</title></section>
-<para>Select the <emphasis role="bold">Group Management</emphasis> tab in the <emphasis role="bold">Organization</emphasis> form.</para><para>By default, all existing groups will be displayed on the left pane. This tab is used to add new, edit or delete a group. The right pane shows information about the selected group including information about the members in the specific group and a small form to add a new user to a group.</para><mediaobject><imageobject><imagedata fileref="images/GroupManage.png" format="PNG"></imagedata></imageobject></mediaobject><section><title>Add a new group</title></section>
-<para>1. Choose the path to create a new group by selecting the groups from list on the left pane or clicking the arrow icon !images/ArrowIcon.png! if you want to create a group in a higher level. The selected path is displayed in the path bar.</para><mediaobject><imageobject><imagedata fileref="images/Admin1.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Click the <emphasis role="bold">Add New Group</emphasis> icon. The <emphasis role="bold">Add New Group</emphasis> form will be displayed on the right pane:</para><mediaobject><imageobject><imagedata fileref="images/AddGroup.png" format="PNG"></imagedata></imageobject></mediaobject><informaltable frame="none" rowsep="0" colsep="0"><tgroup cols="2"><colspec align="center"></colspec><colspec align="center"></colspec><tbody><row><entry><emphasis role="bold"> Name </emphasis></entry><entry><emphasis role="bold"> Description </emphasis></entry></row><row><entry> Group Name </entry><entry> The name of the new!
group. This field is required and any length from 3 to 30 characters is allowed. </entry></row><row><entry> Label </entry><entry> The display name of the group. Any length from 3 to 30 characters is allowed. </entry></row><row><entry> Description </entry><entry> The description about the group. Any length from 3 to 30 characters is allowed. </entry></row></tbody></tgroup></informaltable><para>3. Fill in the required fields. Only alpha, digit and underscore characters are allowed for the <emphasis role="bold">Group Name</emphasis> field and it must be unique.</para><para>4. Click the <emphasis role="bold">Save</emphasis> button to accept entered values or the <emphasis role="bold">Cancel</emphasis> button to quit.</para><section><title>Edit a group</title></section>
-<para>1. Select the path to the group you want to edit by selecting the groups from list on the left pane.</para><para>2. Click the edit icon!images/EditIcon1.png! to show the <emphasis role="bold">Edit Group</emphasis> form of the selected group. This form is identical with the <emphasis role="bold">New Group</emphasis> form.</para><para>3. You can not change the Group Name. Make changes for a <emphasis role="bold">Label</emphasis> or a <emphasis role="bold">Description</emphasis> field and then click the <emphasis role="bold">Save</emphasis> button to accept changes or the <emphasis role="bold">Cancel</emphasis> button to cancel changes and return to the <emphasis role="bold">Group Info</emphasis> form.</para><section><title>Add a new user to the group</title></section>
-<para>1. Select the path to the group you want to edit by selecting the groups from the list on the left pane. The Group's information is displayed including the user list and a form which allows to add a new user.</para><mediaobject><imageobject><imagedata fileref="images/AddMember1.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Enter the exact user name of the user that you want to add to the selected group or you can enter some characters if you are not sure about the exact spelling.</para><itemizedlist><listitem>Click the magnifying glass icon!images/MagnifyIcon.png! to select users.</listitem><listitem>After clicking the magnifying icon!images/MagnifyIcon.png! , there will be a list of all existing users :</listitem></itemizedlist><mediaobject><imageobject><imagedata fileref="images/SelectUser.png" format="PNG"></imagedata></imageobject></mediaobject><itemizedlist><listitem>Select the check box of the user (s) that you would like to add to the gr!
oup.</listitem></itemizedlist><itemizedlist><listitem>After clicking the <emphasis role="bold">Add</emphasis> button you will see the complete user name(s) in the <emphasis role="bold">Add member</emphasis> form.</listitem></itemizedlist><para>3. Select the membership for the user in a group from memberships list. The refresh icon!images/RefreshIcon.png! can be used to update the memberships list in case there are any changes.</para><para>4. Click the <emphasis role="bold">Save</emphasis> button to accept adding the selected user to a specific group with the selected membership type.</para><section><title>Edit the User Membership in a Group</title></section>
-<para>1. Click the edit icon!images/EditIcon.png! corresponding to a specific user with a membership in the <emphasis role="bold">Group Info</emphasis> table to open the <emphasis role="bold">Edit Membership</emphasis> form :</para><mediaobject><imageobject><imagedata fileref="images/EditMember1.png" format="PNG"></imagedata></imageobject></mediaobject><para>2. Change the membership of the selected user by selecting another value in the <emphasis role="bold">Membership</emphasis> field.</para><para>3. Complete editing the selected user by clicking the <emphasis role="bold">Save</emphasis> button.</para><section><title>Delete a group</title></section>
-<para>1. Select the path to the group you want to delete by selecting the groups from list on the left pane.</para><para>2.Click the trash can !images/DeleteIcon.png! icon in order to delete.</para><para>3.Click the <emphasis role="bold">OK</emphasis> button on the confirmation message to accept or the <emphasis role="bold">Cancel</emphasis> button to quit without deleting.</para><section><title>Manage Memberships</title></section>
-<para>The roles of an user in the specific group are managed in <emphasis role="bold">Membership Management</emphasis> form. Currently there are three membership types: Manager, Member and Validator. By default, Manager has the highest rights in a group. You can add new, edit or delete a membership type. Select the <emphasis role="bold">Membership Management</emphasis> tab in the <emphasis role="bold">Organization</emphasis> portlet. There will be a membership type list and a form to add new/edit:</para><mediaobject><imageobject><imagedata fileref="images/MembershipManage1.png" format="PNG"></imagedata></imageobject></mediaobject><section><title>Add a new Membership type</title></section>
-<para>1. In the <emphasis role="bold">Add/Edit Membership</emphasis> form at the bottom, the input value for the membership name field (required) and the description field (optional). Only letters, digits, dots, dashes and underscores are allowed for the membership name.</para><para>2.Click the <emphasis role="bold">Save</emphasis> button to accept adding the new membership or click <emphasis role="bold">Reset</emphasis> button to clear the entered values.</para><section><title>Edit a Membership type</title></section>
-<para>1. Click the edit icon!images/EditIcon.png! in the row of the membership type you want to edit. The selected Membership type information is displayed in the Add/Edit Membership form.</para><para>2. Make changes in this form.</para><para>3. Click <emphasis role="bold">Save</emphasis> to accept changes.</para><section><title>Delete a Membership type.</title></section>
-<para>1. Click the trash can icon in the row of the membership type that you want to delete.</para><para>2. Click the <emphasis role="bold">OK</emphasis> button in the confirmation message to accept the deletion.</para>
-</section>
\ No newline at end of file
+
+ <section id="sect-User_Guide-User_Management-Delete_a_user">
+ <title>Delete a user</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. In the <emphasis role="bold">User Management</emphasis> form: Click the trash can icon !images/DeleteIcon.png! corresponding to the user that you want to delete.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the <emphasis role="bold">OK</emphasis> button in the confirmation message to confirm or the <emphasis role="bold">Cancel</emphasis> button to quit without deleting anything.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Manage_Groups">
+ <title>Manage Groups</title>
+ <para>
+ Select the <emphasis role="bold">Group Management</emphasis> tab in the <emphasis role="bold">Organization</emphasis> form.
+ </para>
+ <para>
+ By default, all existing groups will be displayed on the left pane. This tab is used to add new, edit or delete a group. The right pane shows information about the selected group including information about the members in the specific group and a small form to add a new user to a group.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/GroupManage.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Add_a_new_group">
+ <title>Add a new group</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Choose the path to create a new group by selecting the groups from list on the left pane or clicking the arrow icon !images/ArrowIcon.png! if you want to create a group in a higher level. The selected path is displayed in the path bar.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Admin1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the <emphasis role="bold">Add New Group</emphasis> icon. The <emphasis role="bold">Add New Group</emphasis> form will be displayed on the right pane:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AddGroup.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <informaltable colsep="0" frame="none" rowsep="0">
+ <tgroup cols="2">
+ <colspec align="center"></colspec>
+ <colspec align="center"></colspec>
+ <tbody>
+ <row>
+ <entry>
+ <emphasis role="bold"> Name </emphasis>
+ </entry>
+ <entry>
+ <emphasis role="bold"> Description </emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Group Name
+ </entry>
+ <entry>
+ The name of the new group. This field is required and any length from 3 to 30 characters is allowed.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Label
+ </entry>
+ <entry>
+ The display name of the group. Any length from 3 to 30 characters is allowed.
+ </entry>
+ </row>
+ <row>
+ <entry>
+ Description
+ </entry>
+ <entry>
+ The description about the group. Any length from 3 to 30 characters is allowed.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Fill in the required fields. Only alpha, digit and underscore characters are allowed for the <emphasis role="bold">Group Name</emphasis> field and it must be unique.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Click the <emphasis role="bold">Save</emphasis> button to accept entered values or the <emphasis role="bold">Cancel</emphasis> button to quit.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Edit_a_group">
+ <title>Edit a group</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Select the path to the group you want to edit by selecting the groups from list on the left pane.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the edit icon!images/EditIcon1.png! to show the <emphasis role="bold">Edit Group</emphasis> form of the selected group. This form is identical with the <emphasis role="bold">New Group</emphasis> form.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. You can not change the Group Name. Make changes for a <emphasis role="bold">Label</emphasis> or a <emphasis role="bold">Description</emphasis> field and then click the <emphasis role="bold">Save</emphasis> button to accept changes or the <emphasis role="bold">Cancel</emphasis> button to cancel changes and return to the <emphasis role="bold">Group Info</emphasis> form.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Add_a_new_user_to_the_group">
+ <title>Add a new user to the group</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Select the path to the group you want to edit by selecting the groups from the list on the left pane. The Group's information is displayed including the user list and a form which allows to add a new user.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/AddMember1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Enter the exact user name of the user that you want to add to the selected group or you can enter some characters if you are not sure about the exact spelling.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Click the magnifying glass icon!images/MagnifyIcon.png! to select users.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ After clicking the magnifying icon!images/MagnifyIcon.png! , there will be a list of all existing users :
+ </para>
+ </listitem>
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/SelectUser.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Select the check box of the user (s) that you would like to add to the group.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ After clicking the <emphasis role="bold">Add</emphasis> button you will see the complete user name(s) in the <emphasis role="bold">Add member</emphasis> form.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Select the membership for the user in a group from memberships list. The refresh icon!images/RefreshIcon.png! can be used to update the memberships list in case there are any changes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 4. Click the <emphasis role="bold">Save</emphasis> button to accept adding the selected user to a specific group with the selected membership type.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Edit_the_User_Membership_in_a_Group">
+ <title>Edit the User Membership in a Group</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Click the edit icon!images/EditIcon.png! corresponding to a specific user with a membership in the <emphasis role="bold">Group Info</emphasis> table to open the <emphasis role="bold">Edit Membership</emphasis> form :
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditMember1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Change the membership of the selected user by selecting another value in the <emphasis role="bold">Membership</emphasis> field.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Complete editing the selected user by clicking the <emphasis role="bold">Save</emphasis> button.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Delete_a_group">
+ <title>Delete a group</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Select the path to the group you want to delete by selecting the groups from list on the left pane.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2.Click the trash can !images/DeleteIcon.png! icon in order to delete.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3.Click the <emphasis role="bold">OK</emphasis> button on the confirmation message to accept or the <emphasis role="bold">Cancel</emphasis> button to quit without deleting.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Manage_Memberships">
+ <title>Manage Memberships</title>
+ <para>
+ The roles of an user in the specific group are managed in <emphasis role="bold">Membership Management</emphasis> form. Currently there are three membership types: Manager, Member and Validator. By default, Manager has the highest rights in a group. You can add new, edit or delete a membership type. Select the <emphasis role="bold">Membership Management</emphasis> tab in the <emphasis role="bold">Organization</emphasis> portlet. There will be a membership type list and a form to add new/edit:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/MembershipManage1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Add_a_new_Membership_type">
+ <title>Add a new Membership type</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. In the <emphasis role="bold">Add/Edit Membership</emphasis> form at the bottom, the input value for the membership name field (required) and the description field (optional). Only letters, digits, dots, dashes and underscores are allowed for the membership name.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2.Click the <emphasis role="bold">Save</emphasis> button to accept adding the new membership or click <emphasis role="bold">Reset</emphasis> button to clear the entered values.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Edit_a_Membership_type">
+ <title>Edit a Membership type</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Click the edit icon!images/EditIcon.png! in the row of the membership type you want to edit. The selected Membership type information is displayed in the Add/Edit Membership form.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Make changes in this form.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3. Click <emphasis role="bold">Save</emphasis> to accept changes.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+ <section id="sect-User_Guide-User_Management-Delete_a_Membership_type.">
+ <title>Delete a Membership type.</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ 1. Click the trash can icon in the row of the membership type that you want to delete.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2. Click the <emphasis role="bold">OK</emphasis> button in the confirmation message to accept the deletion.
+ </para>
+ </listitem>
+ </orderedlist>
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portletsUser/Dashboard_Portlet.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portletsUser/Dashboard_Portlet.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portletsUser/Dashboard_Portlet.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Dashboard_Portlet">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,159 +21,146 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Dashboard Portlet</title>
- <section>
+ --><title>Dashboard Portlet</title>
+ <section id="sect-User_Guide-Dashboard_Portlet-Overview">
<title>Overview</title>
+ <para>
+ The Dashboard portlet is used for hosting mini applications known as gadgets. The Dashboard uses a variety of graphical effects for displaying, opening and using gadgets. Gadgets can be moved around, rearranged, deleted and created. More than one instance of the same gadget can be opened at the same time, each instance of the very same gadget can have different settings. The gadgets instances are as independent as different portlets instances.
+ </para>
+ <para>
+ This portlet includes two parts :
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Dashboard1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>The Dashboard portlet is used for hosting mini applications
- known as gadgets. The Dashboard uses a variety of graphical effects
- for displaying, opening and using gadgets. Gadgets can be moved
- around, rearranged, deleted and created. More than one instance of the
- same gadget can be opened at the same time, each instance of the very
- same gadget can have different settings. The gadgets instances are as
- independent as different portlets instances.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Dashboard1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Dashboard_Portlet-Open_the_Dashboard_Workspace">
<title>Open the Dashboard Workspace</title>
- </section>
- <para>
- Click on
- <emphasis role="bold">Add Gadgets</emphasis>
- to open the Dashboard Workspace.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Dash2.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>This portlet includes two parts :</para>
- <figure>
- <title>A popup window that lists all gadgets. By default, there are
- four gadgets but
- you can add more.</title>
- </figure>
- <itemizedlist>
- <listitem>
- <emphasis role="bold">Calculator</emphasis>
- : This is a cool calculator for your page. This mini application lets
- you perform most of the basic arithmetic operations. This gadget also
- offers cool skins to make your page more alive.
- </listitem>
- <listitem>
- <emphasis role="bold">Calendar</emphasis>
- : A cool calendar to keep track of date. You also can switch easily
- between daily, monthly and yearly view and change the skin as you
- like.
- </listitem>
- <listitem>
- <emphasis role="bold">Todo</emphasis>
- : This mini application helps you to organize your everyday work. It
- is designed to keep track of your tasks in a convenient and
- transparent way. You can highlight tasks by using different colors.
- </listitem>
- <listitem>
- <emphasis role="bold">RSS Reader</emphasis>
- : This gadget lets you get a sneak preview of your favorite feeds
- around the web. You can have the latest news, the latest posts from
- your favorite blogs, latest email... all in one gadget.
- </listitem>
- </itemizedlist>
- <para>A space used to contain and organize gadgets by
- dragging from the
- popup window and drop them into this space.</para>
- <section>
- <title>Display Gadgets</title>
- </section>
- <para>Moreover, you can change the number of columns
- to create in this space.</para>
- <para>
- <orderedlist>
+ <para>
+ Click on <emphasis role="bold">Add Gadgets</emphasis> to open the Dashboard Workspace.
+ </para>
+ <para>
+ A popup window that lists all gadgets appears. By default, there are four gadgets but you can add more.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Dash2.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <itemizedlist>
<listitem>
<para>
- Click on
- <emphasis role="bold">Group Editor</emphasis>
- :
- <emphasis role="bold">Edit Page</emphasis>
+ <emphasis role="bold">Calculator</emphasis> : This is a cool calculator for your page. This mini application lets you perform most of the basic arithmetic operations. This gadget also offers cool skins to make your page more alive.
</para>
</listitem>
<listitem>
<para>
- Click on
- <emphasis role="bold">Edit Portlet</emphasis>
- . It will show a dialog to change the number of columns to display
- gadgets.
+ <emphasis role="bold">Calendar</emphasis> : A cool calendar to keep track of date. You also can switch easily between daily, monthly and yearly view and change the skin as you like.
</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Column.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
</listitem>
<listitem>
<para>
- Change the number of columns and click the
- <emphasis role="bold">Save</emphasis>
- button to accept changing.
+ <emphasis role="bold">Todo</emphasis> : This mini application helps you to organize your everyday work. It is designed to keep track of your tasks in a convenient and transparent way. You can highlight tasks by using different colors.
</para>
</listitem>
- </orderedlist>
- </para>
- <section>
+ <listitem>
+ <para>
+ <emphasis role="bold">RSS Reader</emphasis> : This gadget lets you get a sneak preview of your favorite feeds around the web. You can have the latest news, the latest posts from your favorite blogs, latest email... all in one gadget.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ A space used to contain and organize gadgets by dragging from the popup window and drop them into this space.
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Dashboard_Portlet-Display_Gadgets">
+ <title>Display Gadgets</title>
+ <para>
+ Moreover, you can change the number of columns to create in this space.
+ </para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Click on <emphasis role="bold">Group Editor</emphasis> : <emphasis role="bold">Edit Page</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Click on <emphasis role="bold">Edit Portlet</emphasis> . It will show a dialog to change the number of columns to display gadgets.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Column.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </listitem>
+ <listitem>
+ <para>
+ Change the number of columns and click the <emphasis role="bold">Save</emphasis> button to accept changing.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section id="sect-User_Guide-Dashboard_Portlet-Add_Gadgets">
<title>Add Gadgets</title>
- <para>You can also add more gadgets, do as follows:</para>
- <para>Open the popup to add gadges</para>
<para>
+ You can also add more gadgets, do as follows:
+ </para>
+ <para>
+ Open the popup to add gadges
+ </para>
+ <para>
<orderedlist>
<listitem>
<para>
- Click the
- <emphasis role="bold">Add Gadgets</emphasis>
- link
+ Click the <emphasis role="bold">Add Gadgets</emphasis> link
<mediaobject>
<imageobject>
- <imagedata fileref="images/Dashboard1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Dashboard1.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
<para>
- dialog to add a new gadget will appear :
+ dialog to add a new gadget will appear :
<mediaobject>
<imageobject>
- <imagedata fileref="images/EnterLink.png" format="PNG"></imagedata>
+ <imagedata fileref="images/EnterLink.png" format="PNG" />
</imageobject>
</mediaobject>
</para>
</listitem>
<listitem>
- <para>Enter a link (a .xml or .rss) in a text box on the left
- pane.</para>
- <note>If you enter a .rss file or a link that
- generate rss format
- (for example:
- http://feeds.feedburner.com/gatein), a new rss gadget
- reader will be
- created in the dashboard.</note>
<para>
- Remote gadgets can be only created using the .xml file format
- which
- s the standard gadget format.</para>
+ Enter a link (a .xml or .rss) in a text box on the left pane.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ If you enter a .rss file or a link that generate rss format (for example: http://feeds.feedburner.com/gatein), a new rss gadget reader will be created in the dashboard.
+ </para>
+ </note>
+ <para>
+ Remote gadgets can be only created using the .xml file format which s the standard gadget format.
+ </para>
</listitem>
<listitem>
- <para>Click on the + icon to add a new gadget
- to the gadget
- list beneath.</para>
+ <para>
+ Click on the + icon to add a new gadget to the gadget list beneath.
+ </para>
</listitem>
</orderedlist>
</para>
</section>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portletsUser/FCK_Portlet.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portletsUser/FCK_Portlet.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portletsUser/FCK_Portlet.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-FCK_Portlet">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,68 +21,70 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>FCK Portlet</title>
- <section>
+ --><title>FCK Portlet</title>
+ <section id="sect-User_Guide-FCK_Portlet-Overview">
<title>Overview</title>
+ <para>
+ GateIn Portal provides users with FCK portlet used as a lightweight text editor in the web pages. All its common used functions (like Word editor) such as writing, formatting text, creating tables, inserting links or picture, etc.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/FCK1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ FCK portlet also consists of some main elements:
+ </para>
</section>
- <para>GateIn Portal provides users with FCK portlet used as a
- lightweight text editor in the web pages. All its common used
- functions (like Word editor) such as writing, formatting text,
- creating tables, inserting links or picture, etc.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/FCK1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <para>FCK portlet also consists of some main elements:</para>
- <section>
+
+ <section id="sect-User_Guide-FCK_Portlet-Toolbar">
<title>Toolbar</title>
+ <para>
+ The area at the top of the editor which contains many different buttons. You will use these buttons to activate the program functions.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ToolBar1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>The area at the top of the editor which contains many
- different buttons. You will use these buttons to activate the program
- functions.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/ToolBar1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-FCK_Portlet-Editing_Area">
<title>Editing Area</title>
+ <para>
+ This area is under the toolbar. This area allows typing your text and format document.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditingArea1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This area is under the toolbar. This area allows typing your
- text and format document.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/EditingArea1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-FCK_Portlet-Context_menu">
<title>Context menu</title>
+ <para>
+ It is a menu with the functions that will appear when you right click anywhere in the space of editing area or an existing object.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ContextMenu1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>It is a menu with the functions that will appear when you right
- click anywhere in the space of editing area or an existing object.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/ContextMenu1.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-FCK_Portlet-Dialogs">
<title>Dialogs</title>
+ <para>
+ Small windows appear when some of the functions are activated, it is used to provide the necessary information to accomplish that functions. For an example: To insert a link, you need to open <emphasis role="bold">Link</emphasis> dialog by clicking!images/LinkIcon.png! icon on the Tool bar :
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Link.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>
- Small windows appear when some of the functions are activated, it is
- used to provide the necessary information to accomplish that
- functions. For an example: To insert a link, you need to open
- <emphasis role="bold">Link</emphasis>
- dialog by clicking!images/LinkIcon.png! icon on the Tool bar :
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Link.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portletsUser/Functional_Portlets.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portletsUser/Functional_Portlets.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portletsUser/Functional_Portlets.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Functional_Portlets">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,84 +21,86 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Functional Portlets</title>
- <section>
+ --><title>Functional Portlets</title>
+ <section id="sect-User_Guide-Functional_Portlets-Overview">
<title>Overview</title>
+ <para>
+ Portlets are pluggable user interface components that are managed and displayed in a portal. Functional Portlets support all functions of a Portal. GateIn Portal provides users with the following portlets:
+ </para>
</section>
- <para>Portlets are pluggable user interface components that are
- managed and displayed in a portal. Functional Portlets support all
- functions of a Portal. GateIn Portal provides users with the following
- portlets:</para>
- <section>
+
+ <section id="sect-User_Guide-Functional_Portlets-Account_Portlet">
<title>Account Portlet</title>
+ <para>
+ This Portlet allows users to register a new account. Moreover, it also used to support users to choose a preferred language for displaying the Portal interface.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Account.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This Portlet allows users to register a new account.
- Moreover, it also used to support users to choose a preferred language
- for displaying the Portal interface.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Account.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Functional_Portlets-Organization_Portlet">
<title>Organization Portlet</title>
+ <para>
+ This Portlet is used to manage user information, groups of users and memberships.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/OrganizationPortlet1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This Portlet is used to manage user information, groups of
- users and memberships.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/OrganizationPortlet1.png"
- format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Functional_Portlets-Application_Registry_Portlet">
<title>Application Registry Portlet</title>
+ <para>
+ This Portlet is used to manage different application categories. You can add, edit, set permissions, delete a category and its applications.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/ApplicationRegistry.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This Portlet is used to manage different application
- categories. You can add, edit, set permissions, delete a category and
- its applications.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/ApplicationRegistry.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Functional_Portlets-Internationalization_Portlet">
<title>Internationalization Portlet</title>
+ <para>
+ This Portlet is used to define a word or a phrase of a current language to an expected language.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/InternationalizationPortlet1.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This Portlet is used to define a word or a phrase of a
- current language to an expected language.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/InternationalizationPortlet1.png"
- format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Functional_Portlets-Administration_Toolbar_Portlet">
<title>Administration Toolbar Portlet</title>
+ <para>
+ This Portlet supports administration actions in GateIn Portal.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Administration.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</section>
- <para>This Portlet supports administration actions in GateIn Portal.</para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Administration.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
- <section>
+
+ <section id="sect-User_Guide-Functional_Portlets-Star_Toolbar_Portlet">
<title>Star Toolbar Portlet</title>
- </section>
- <para>The Star Toolbar Portlet helps users to change language,
- change skin or sign out GateIn Portal.</para>
- <!--
+ <para>
+ The Star Toolbar Portlet helps users to change language, change skin or sign out GateIn Portal.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/StarPortlet.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
- <!--
+ --><!--
<section>
<title>User Toolbar Portlet</title>
</section>
@@ -104,5 +110,9 @@
<imagedata fileref="images/UserToolbar.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
-</section>
\ No newline at end of file
+ -->
+ </section>
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/portletsUser/Interface_Portlets.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/portletsUser/Interface_Portlets.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/portletsUser/Interface_Portlets.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Interface_Portlets">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,166 +21,168 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Interface Portlets</title>
- <para>These Portlets constitute the interface of the Portal.
- GateIn
- Portal consists of the following Interface Portlets:</para>
- <section>
+ --><title>Interface Portlets</title>
+ <para>
+ These Portlets constitute the interface of the Portal. GateIn Portal consists of the following Interface Portlets:
+ </para>
+ <section id="sect-User_Guide-Interface_Portlets-Banner_Portlet">
<title>Banner Portlet</title>
- <para>This Portlet is considered as the welcome gateway of a
- Portal. It contains the organization's slogan, logo, icon, button,
- etc.</para>
- <!--
+ <para>
+ This Portlet is considered as the welcome gateway of a Portal. It contains the organization's slogan, logo, icon, button, etc.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/BannerPortlet.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Breadcumbs_Portlet">
<title>Breadcumbs Portlet</title>
- <para>This Portlet is used to display the path of the selected
- page
- from Navigation.</para>
- <!--
+ <para>
+ This Portlet is used to display the path of the selected page from Navigation.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/Breadcumbs.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <!--
+
+ <!--
<section> <title>Console Portlet</title> <para>This Portlet is used as
console to run Java Script commands.</para> <mediaobject>
<imageobject> <imagedata fileref="images/Console.png"
format="PNG"></imagedata> </imageobject> </mediaobject> </section>
- -->
- <section>
+ -->
+ <section id="sect-User_Guide-Interface_Portlets-Footer_Portlet">
<title>Footer Portlet</title>
- <para>This Portlet provides the footer for a site. Footer can be a
- text, images that are displayed at the bottom of a web site. It
- provides information about author/institutional sponsor, revision
- date, copyright, comments form, and navigational links.</para>
- <!--
+ <para>
+ This Portlet provides the footer for a site. Footer can be a text, images that are displayed at the bottom of a web site. It provides information about author/institutional sponsor, revision date, copyright, comments form, and navigational links.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/Footer.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-HomePage_Portlet">
<title>HomePage Portlet</title>
- <para>This Portlet is used to provide a home page for a portal.
- The
- home page is a main page displayed firstly when you visit the site.</para>
- <!--
+ <para>
+ This Portlet is used to provide a home page for a portal. The home page is a main page displayed firstly when you visit the site.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/PortletHome2.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Iframe_Portlet">
<title>Iframe Portlet</title>
- <para>This Portlet is used to create IFrame elements for a site.
- Iframe is a HTML element which can embed a document into a HTML
- document. So embedded data is displayed inside a sub window of
- browser
- window.</para>
- <!--
+ <para>
+ This Portlet is used to create IFrame elements for a site. Iframe is a HTML element which can embed a document into a HTML document. So embedded data is displayed inside a sub window of browser window.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/IFrame.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Navigation_Portlet">
<title>Navigation Portlet</title>
- <para>This Portlet provides a navigation bar. A navigation likes a
- menu that helps users to visualize the structure of a site and
- provide
- links to quickly move from page to page.</para>
- <!--
+ <para>
+ This Portlet provides a navigation bar. A navigation likes a menu that helps users to visualize the structure of a site and provide links to quickly move from page to page.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/NavigationPortlet.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Sitemap_Portlet">
<title>Sitemap Portlet</title>
- <para>This Portlet is used to provide a site map page of a web
- site. It lists pages on a website, typically organized in
- hierarchical
- fashion.</para>
- <!--
+ <para>
+ This Portlet is used to provide a site map page of a web site. It lists pages on a website, typically organized in hierarchical fashion.
+ </para>
+ <!--
<mediaobject>
<imageobject>
<imagedata fileref="images/SiteMap3.png" format="PNG"></imagedata>
</imageobject>
</mediaobject>
- -->
+ -->
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Web_Explorer_Portlet">
<title>Web Explorer Portlet</title>
- <para>This Portlet provides web-browser for users. It allows users
- to connect to other sites over Internet.</para>
+ <para>
+ This Portlet provides web-browser for users. It allows users to connect to other sites over Internet.
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/WebExplorer1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/WebExplorer1.png" format="PNG" />
</imageobject>
</mediaobject>
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Dashboard_Portlet">
<title>Dashboard Portlet</title>
- <para>This portlet is used for hosting mini - applications known
- as
- gadgets. The dashboard uses a variety of graphical effects for
- displaying, opening, and using gadgets.</para>
+ <para>
+ This portlet is used for hosting mini - applications known as gadgets. The dashboard uses a variety of graphical effects for displaying, opening, and using gadgets.
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Dashboard1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Dashboard1.png" format="PNG" />
</imageobject>
</mediaobject>
<para>
- See more details in
- <link linkend="Dashboard Portlet">Dashboard Portlet</link>
+ See more details in <xref linkend="sect-User_Guide-Dashboard_Portlet" />
</para>
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-Gadget_Wrapper_Portlet">
<title>Gadget Wrapper Portlet</title>
- <para>This Portlet allows users to view a gadget in canvas mode.
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/GadgetWrapper.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
+ <para>
+ This Portlet allows users to view a gadget in canvas mode.
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/GadgetWrapper.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
</para>
</section>
- <section>
+
+ <section id="sect-User_Guide-Interface_Portlets-FCK_editor_Portlet">
<title>FCK editor Portlet</title>
- <para>All its common used functions (like Word editor) such as
- writing, formatting text, creating tables, inserting links or
- picture,
- etc.</para>
+ <para>
+ All its common used functions (like Word editor) such as writing, formatting text, creating tables, inserting links or picture, etc.
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/FCK1.png" format="PNG"></imagedata>
+ <imagedata fileref="images/FCK1.png" format="PNG" />
</imageobject>
</mediaobject>
<para>
- See more details in
- <link linkend="FCK Portlet">FCK Portlet</link>
+ See more details in <xref linkend="sect-User_Guide-FCK_Portlet" />
</para>
</section>
-</section>
\ No newline at end of file
+
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Gadget_concept.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Gadget_concept.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Gadget_concept.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Gadget_concept">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,78 +21,56 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Gadget concept</title>
+ --><title>Gadget</title>
<para>
- A gadget is a mini web application running on a platform
- and an user
- can put it in a web page. GateIn Portal provides some useful
- gadgets
- such as:
- <itemizedlist>
- <listitem>
+ A gadget is a mini web application that a portal user can to their web page. EPP provides some useful gadgets such as:
+ </para>
+ <formalpara>
+ <title>Calculator</title>
<para>
- <emphasis role="bold">Calculator gadget</emphasis>
- : This is the coolest calculator for your page. This
- mini-application lets you perform most of the basic arithmetic
- operations
- and also offers cool skins to make your page more alive.
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Calculator.png" format="PNG"></imagedata>
- </imageobject>
- </mediaobject>
+ This mini-application lets you perform most basic arithmetic operations and can be themed to match the rest of your portal.
</para>
- </listitem>
- <listitem>
+ </formalpara>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Calculator.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <formalpara>
+ <title>Calendar</title>
<para>
- <emphasis role="bold">Calendar gadget</emphasis>
- : A cool calendar help users keep track of date. You also can
- switch
- easily between daily, monthly and yearly view and change skin
- that
- you like.
+ The calendar gadget allows users to switch easily between daily, monthly and yearly view and, again, is customizable to match your portal's theme.
+ </para>
+ </formalpara>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Calendar.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Calendar.png" format="PNG" />
</imageobject>
</mediaobject>
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Todo gadget</emphasis>
- : This mini-application helps you organize your day and work
- group.
- It is designed to keep track of your tasks in a convenient
- and
- transparent way. You can highlight tasks by coloring tasks with
- different colors.
+ <formalpara>
+ <title>Todo</title>
+ <para>
+ This application helps you organize your day and work group. It is designed to keep track of your tasks in a convenient and transparent way. Tasks can be highlighted with different colors.
+ </para>
+ </formalpara>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Todo.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Todo.png" format="PNG" />
</imageobject>
</mediaobject>
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">RSS Reader</emphasis>
- : This gadget lets you get a sneak preview of your favorite feeds
- from the web. You can get the latest news, the latest posts from
- your
- favorite blogs, the latest email...all in one gadget. This
- gadget is
- a web based for receiving and viewing RSS feeds.
- </para>
- <!--
+ <formalpara>
+ <title>RSS Reader</title>
+ <para>
+ An RSS reader, or aggregator, collates content from various, user-specified feed sources and displays them in one location. This content can include, but isn't limited to, news headlines, blog posts or email. The RSS Reader gadget displays this content in a single window on your Portal page.
+ </para>
+ </formalpara>
+ <!--
<mediaobject> <imageobject> <imagedata fileref="images/RSS.png"
format="PNG"></imagedata> </imageobject> </mediaobject>
- -->
- </listitem>
- </itemizedlist>
+ -->
+ <para>
+ Further gadgets can be obtained from the <ulink type="http" url="http://www.google.com/ig/directory?synd=open">Google Gadget</ulink> site. EPP is compatible with any gadget available here.
</para>
-</section>
\ No newline at end of file
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Navigation_concept.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Navigation_concept.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Navigation_concept.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Navigation_concept">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,34 +21,28 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Navigation</title>
+ <para>
+ Portal navigations are menus that list hyperlinks to other parts of a Portal. They can help users to visualize the structure of a site. The navigation menus in EPP 5.0 are located in a bar across the top of the 'Home' page. There are three navigation types:
+ </para>
+ <formalpara>
+ <title>Site</title>
+ <para>
+ This navigation links to separate sites of the main Portal. Each site has only one navigation and it is automatically created when the site is created. This functionality allows different sites to administer some Portal aspects, such as portlets, individually while maintaining other content standaradized with the parent Portal.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Group</title>
+ <para>
+ The content of this navigation differs depending on the type of account logged in. For user accounts the Groups navigation holds personal links set up by the user. For management accounts, it keeps the links to pages for registered Portal users as well as adminisrative tasks and personal links. In the administrator account, the navigation adds further management abilities such as Internationalization and community management.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Dashboard</title>
+ <para>
+ Each user has own navigation 'Dashboard' that houses links and portlets (or gadgets) that the user has selected. A user's navigation is created automatically when user is registered. This navigation only can be deleted when the user is deleted.
+ </para>
+ </formalpara>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Navigation concept</title>
- <para>A navigation is a menu that helps users to
- visualize the structure of a site and provides hyper links to quickly
- move from page to page. There is a bar which contains navigations
- called Navigation bar. There are three navigation types:</para>
- <itemizedlist>
- <listitem>
- <emphasis role="bold">Portal navigation</emphasis>
- : This navigation type is used to keep the links to pages of Portal.
- Each portal has only one navigation and it is automatically created
- when a portal is created.
- </listitem>
- <listitem>
- <emphasis role="bold">Group navigation</emphasis>
- : All registered users are organized in groups. There is a navigation
- keeping the links to all pages of each group, called group
- navigation.
- </listitem>
- <listitem>
- <emphasis role="bold">User navigation</emphasis>
- : Each user has own navigation that keeps the links to pages. User's
- navigation is created automatically like Navigation of Portal when
- user is created (registered). This navigation only can be deleted
- when the user is deleted.
- </listitem>
- </itemizedlist>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Permission_levels.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Permission_levels.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Permission_levels.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Permission_levels">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,45 +21,42 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Permission levels</title>
- <para>There are two permission types:</para>
+ --><title>Permission levels</title>
+ <para>
+ There are two permission types:
+ </para>
<itemizedlist>
<listitem>
- <emphasis role="bold">Access Permission</emphasis>
- : allows users to use (see a page content, drag and drop portlets
- into pages, sign in). The access permission can be set for a list of
- groups.
+ <para>
+ <emphasis role="bold">Access Permission</emphasis> : allows users to use (see a page content, drag and drop portlets into pages, sign in). The access permission can be set for a list of groups.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Edit Permission</emphasis>
- : allows users to change (change portal or page information, delete
- portals or pages). The edit permission is set for only one group at
- the same time.
+ <para>
+ <emphasis role="bold">Edit Permission</emphasis> : allows users to change (change portal or page information, delete portals or pages). The edit permission is set for only one group at the same time.
+ </para>
</listitem>
</itemizedlist>
- <para>There are several permission levels:</para>
+ <para>
+ There are several permission levels:
+ </para>
<itemizedlist>
<listitem>
- <emphasis role="bold">Portal</emphasis>
- : The portal includes all pages, pages only can be accessed if the
- user has also access to the Portal.
+ <para>
+ <emphasis role="bold">Portal</emphasis> : The portal includes all pages, pages only can be accessed if the user has also access to the Portal.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Page</emphasis>
- : You can restrict the access permission to single pages. Users can
- change page information (properties, layout) if they have the edit
- permission.
+ <para>
+ <emphasis role="bold">Page</emphasis> : You can restrict the access permission to single pages. Users can change page information (properties, layout) if they have the edit permission.
+ </para>
</listitem>
<listitem>
- <emphasis role="bold">Portlet</emphasis>
- : When users create a page, they need to drag and drop portlets into
- a page to create the page content. Some portlets are only used for
- administrators, some are used for individual needs of a group thus
- you have to set the appropriate access permission.
+ <para>
+ <emphasis role="bold">Portlet</emphasis> : When users create a page, they need to drag and drop portlets into a page to create the page content. Some portlets are only used for administrators, some are used for individual needs of a group thus you have to set the appropriate access permission.
+ </para>
</listitem>
</itemizedlist>
-</section>
\ No newline at end of file
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Portal_concept.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Portal_concept.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Portal_concept.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Portal_concept">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,25 +21,28 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Portal concept</title>
- <para>Portal is the Web-based application software that provides
- users
- with personalized User Interface(UI). Through this UI, users can
- easily access, search, communicate with other users, applications and
- informations.</para>
- <para> The
- portal is responsible for UI management, personalization and
- aggregation of enterprise contents and business applications.</para>
- <para>Portal has two main components:</para>
+ --><title>Portal</title>
+ <para>
+ The Enterprise Portal Platform is a web-based application that provides users with personalized User Interface (UI). This UI allows users to easily perform actions such as searching applications or information and communicating with other users.
+ </para>
+ <para>
+ The Portal provides a graphical aggregation of enterprise content and business applications with flexible management and personalization options.
+ </para>
+ <para>
+ Portal has two main components:
+ </para>
<itemizedlist>
- <listitem>Portal Engine: takes care of pages, navigations and
- preferences.</listitem>
- <listitem>WebUI framework: a portlet Web framework tailored for
- easy
- screen composition and ajax support in Portal environment.</listitem>
+ <listitem>
+ <para>
+ Portal Engine: The engine renders and runs pages, navigations and preferences.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ WebUI Framework: a Web framework tailored for easy screen composition and Ajax support in Portal environment.
+ </para>
+ </listitem>
</itemizedlist>
-</section>
\ No newline at end of file
+</section>
+
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Portlet_concept.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Portlet_concept.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Portlet_concept.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Portlet_concept">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,20 +21,13 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Portlet</title>
+ <para>
+ A portlet is a small, self-contained web application. Portlet interface components are managed and displayed within a Portal. Typically, a portal page is displayed as a collection of non-overlapping portlet windows, with each portlet window displaying a different portlet. Hence a portlet (or collection of portlets) resembles a web-based application hosted in a portal. Portlets can be configured to generated differing content.
+ </para>
+ <para>
+ EPP has a number of standard portlets that can be plugged into any portal.
+ </para>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Portlet concept</title>
- <para>A portlet is a web application. Portlets are
- pluggable user interface components that are managed and displayed in
- a portal. Portlets produce fragments of markup code aggregated into a
- portal page. Typically, a portal page is displayed as a collection of
- non-overlapping portlet windows, where each portlet window displays a
- portlet. Hence a portlet (or collection of portlets) resembles a
- web-based application hosted in a portal. The content generated by a
- portlet can vary from one user to another depending on the user who
- configures that portlet.</para>
- <para>GateIn has created standard portlets that can be plugged
- into any portal.</para>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Public_mode_and_Private_mode.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Public_mode_and_Private_mode.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Public_mode_and_Private_mode.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Public_mode_and_private_mode">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,26 +21,22 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
+ --><title>Public mode and private mode</title>
+ <para>
+ Enterprise Portal Platform 5.0 has two modes:
+ </para>
+ <formalpara>
+ <title>Public</title>
+ <para>
+ This mode is for guest users who are not registered with the Portal. It does not require a log in and restricts the visitor to the public pages in the portal. Visitors can register an account to gain access to the restricted pages. After being registered, they can use the Private mode but must still contact the Portal administrator to get more rights or a group manager to become a member and gain access a group.
+ </para>
+ </formalpara>
+ <formalpara>
+ <title>Private</title>
+ <para>
+ This mode is for registered users. Users set a username and password during registration which they can use to sign in. This mode allows users more site privileges. Registered users can manage private resources (creating, editing or deleting private pages), "borrow" pages from other users by creating hyperlinks and change the language for individual needs.
+ </para>
+ </formalpara>
+</section>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Public mode and private mode</title>
- <para>GateIn Portal has two modes:</para>
- <itemizedlist>
- <listitem>
- <emphasis role="bold">Public mode</emphasis>
- : this mode is for guest users (visitors) who have not registered yet
- and it doesn't require to sign in so they can only visit the public
- pages in a portal. Visitors can also register in order to get an
- account. After being registered, they can use the private mode and
- have to contact the administrator to get more rights or a group
- manager in order to become a member of that group.
- </listitem>
- <listitem>
- <emphasis role="bold">Private mode</emphasis>
- : this mode is for registered users, users have to use username and
- password to sign in. This mode supports users take many actions such
- as :manage private resources (create private pages, edit or delete
- them), "borrow" pages from others by creating hyperlinks to existing pages, change the language for individual needs, manage private information.</listitem></itemizedlist>
-</section>
\ No newline at end of file
+
Modified: portal/trunk/docs/user-guide/en/modules/terms/Toolbar_concept.xml
===================================================================
--- portal/trunk/docs/user-guide/en/modules/terms/Toolbar_concept.xml 2009-11-30 21:10:30 UTC (rev 876)
+++ portal/trunk/docs/user-guide/en/modules/terms/Toolbar_concept.xml 2009-11-30 21:17:17 UTC (rev 877)
@@ -1,4 +1,8 @@
-<!--
+<?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-User_Guide-Toolbar_concept">
+ <!--
Copyright (C) 2009 eXo Platform SAS.
@@ -17,18 +21,15 @@
Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
--->
-
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
-<section>
- <title>Toolbar concept</title>
- <para>This is a specific bar that contains all user and
- administration actions for the purpose of helping users and the
- administrator access and perform actions easily, quickly and
- effectively. You can see this Toolbar in GateIn Portal as below:</para>
+ --><title>Toolbar concept</title>
+ <para>
+ This is a specific bar that contains all user and administration actions for the purpose of helping users and the administrator access and perform actions easily, quickly and effectively. You can see this Toolbar in GateIn Portal as below:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/Toolbar.png" format="PNG"></imagedata>
+ <imagedata fileref="images/Toolbar.png" format="PNG" />
</imageobject>
</mediaobject>
-</section>
\ No newline at end of file
+</section>
+
+
15 years
gatein SVN: r876 - portal/trunk/docs/reference-guide/en.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-11-30 16:10:30 -0500 (Mon, 30 Nov 2009)
New Revision: 876
Modified:
portal/trunk/docs/reference-guide/en/master.xml
Log:
Add SSO chapter, remove orphans
Modified: portal/trunk/docs/reference-guide/en/master.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/master.xml 2009-11-30 21:09:55 UTC (rev 875)
+++ portal/trunk/docs/reference-guide/en/master.xml 2009-11-30 21:10:30 UTC (rev 876)
@@ -41,14 +41,6 @@
href="modules/Portal_Manual.xml" />
-->
- <!-- 1 Terms -->
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Terms.xml" />
-
- <!--
- Portal, Portlet, Navigation, Node, Gadget, Public mode and Private
- mode, Permission levels, Workspace concept, Toolbar concept
- -->
-
<!-- 4_Configuration -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Configuration.xml" />
@@ -114,18 +106,6 @@
-->
- <!-- Orphan from XWiki site -->
- <chapter>
- <title>Orphans chapters: TODO: move and integrate those</title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/_orphans/Setup_GadgetServer.xml" />
- <!--
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="modules/_orphans/Internationalization_Guidelines.xml" />
- -->
- </chapter>
-
-
<!--
Deprecated <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="modules/Advanced_User_Guide.xml" /> <xi:include
15 years
gatein SVN: r875 - portal/trunk/docs/reference-guide/en/modules.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-11-30 16:09:55 -0500 (Mon, 30 Nov 2009)
New Revision: 875
Added:
portal/trunk/docs/reference-guide/en/modules/SSO.xml
Removed:
portal/trunk/docs/reference-guide/en/modules/_archive/
portal/trunk/docs/reference-guide/en/modules/_orphans/
portal/trunk/docs/reference-guide/en/modules/account/
portal/trunk/docs/reference-guide/en/modules/gadgetsAdmin/
portal/trunk/docs/reference-guide/en/modules/language/
portal/trunk/docs/reference-guide/en/modules/portal/
portal/trunk/docs/reference-guide/en/modules/portletsUser/
portal/trunk/docs/reference-guide/en/modules/security/
portal/trunk/docs/reference-guide/en/modules/terms/
Log:
oups
Added: portal/trunk/docs/reference-guide/en/modules/SSO.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/SSO.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/SSO.xml 2009-11-30 21:09:55 UTC (rev 875)
@@ -0,0 +1,173 @@
+<!--
+
+ 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.
+
+-->
+
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
+<chapter>
+<title>Single Sign On</title>
+
+ <section>
+ <title>Overview of SSO</title>
+ <para>Portal as an integration and aggregation platform provides some form of SSO by itself. When you log into
+ the portal you gain access to many systems through portlets using a single identity. Still in many cases you
+ need to integrate the portal infrastructure with other SSO enabled systems. There are many different Identity Management
+ solutions on the market. In most cases each SSO framework provides its own way to plug into Java EE application.
+ </para>
+ </section>
+
+ <section>
+ <title>CAS - Central Authentication Service</title>
+ <para>This Single Sign On plugin enables seamless integration between GateIn Portal and the CAS Single Sign On Framework.
+ Details about CAS can be found <ulink url="http://www.ja-sig.org/products/cas/">here</ulink>
+ </para>
+ <section>
+ <title>Integration</title>
+ <section>
+ <title>From source</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Check out the GateIn SSO component from SVN using the following command:
+ <programlisting>
+ <![CDATA[
+svn co http://anonsvn.jboss.org/repos/gatein/components/sso/tags/<appropriate sso component version>
+ ]]>
+ </programlisting>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Update <emphasis>packaging/profiles.xml</emphasis> to reflect the directories where your local JBoss AS 5.1.0.GA and Tomcat 6.0.2 are installed
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Install CAS plugin into a designated CAS (3.3.4) server</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <programlisting>
+ <![CDATA[
+ mvn -Pplugin-cas-install install
+ ]]>
+ </programlisting>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Install CAS GateIn Agent into the designated GateIn server</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <programlisting>
+ <![CDATA[
+ mvn -Pgatein-cas-install install
+ ]]>
+ </programlisting>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+ <section>
+ <title>CAS Server Plugin Configuration</title>
+ <para>
+ The CAS Server Plugin makes secure authentication callbacks to a RESTful service installed on the remote GateIn server in order to authenticate a user.
+ In order for the plugin to function correctly, it needs to be properly configured to connect to this service. This configuration is done via the
+ <emphasis>cas.war/WEB-INF/deployerConfigContext.xml</emphasis> file.
+ </para>
+ <para>
+ <programlisting>
+ <![CDATA[
+ <!--
+ Note: Modify the Plugin Configuration based on the actual information of a GateIn instance.
+ The instance can be anywhere on the internet...Not on localhost where CAS is running
+ -->
+ <bean class="org.gatein.sso.cas.plugin.AuthenticationPlugin">
+ <property name="gateInHost"><value>localhost</value></property>
+ <property name="gateInPort"><value>8080</value></property>
+ <property name="gateInContext"><value>portal</value></property>
+ </bean>
+ ]]>
+ </programlisting>
+ </para>
+ </section>
+ <section>
+ <title>GateIn Agent Configuration</title>
+ <para>
+ In a Single Sign On usecase, the GateIn server re-directs all "private" resource requests to the CAS server for authentication first. The CAS server can be
+ located anywhere on the Internet, and this information must be properly configured within the GateIn instance. This configuration needs to be done in 3 files
+ <itemizedlist>
+ <listitem>
+ <emphasis>gatein.ear/02portal.war/groovy/portal/webui/UILoginForm.gtmpl</emphasis>
+ <para>
+ <programlisting>
+ <![CDATA[
+ <script>
+ <%=uicomponent.event("Close");%>
+ window.location = 'http://localhost:8888/cas/login?service=http://localhost:8080/portal/priv...';
+ </script>
+ ]]>
+ </programlisting>
+ </para>
+ </listitem>
+ <listitem>
+ <emphasis>gatein.ear/02portal.war/login/jsp/login.jsp</emphasis>
+ <para>
+ <programlisting>
+ <![CDATA[
+ <html>
+ <head>
+ <script type="text/javascript">
+ window.location = 'http://localhost:8888/cas/login?service=http://localhost:8080/portal/priv...';
+ </script>
+ </head>
+ <body>
+ </body>
+ </html>
+ ]]>
+ </programlisting>
+ </para>
+ </listitem>
+ <listitem>
+ <emphasis>gatein.ear/02portal.war/WEB-INF/web.xml</emphasis>
+ <para>
+ <programlisting>
+ <![CDATA[
+ <servlet>
+ <servlet-name>InitiateLoginServlet</servlet-name>
+ <servlet-class>org.gatein.sso.agent.GenericSSOAgent</servlet-class>
+ <init-param>
+ <param-name>casServerUrl</param-name>
+ <param-value>http://localhost:8888/cas</param-value>
+ </init-param>
+ </servlet>
+ ]]>
+ </programlisting>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ </section>
+ </section>
+</chapter>
\ No newline at end of file
15 years
gatein SVN: r874 - in portal/trunk/docs: reference-guide and 8 other directories.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-11-30 16:03:01 -0500 (Mon, 30 Nov 2009)
New Revision: 874
Added:
portal/trunk/docs/reference-guide/
portal/trunk/docs/reference-guide/en/
portal/trunk/docs/reference-guide/en/Introduction.xml
portal/trunk/docs/reference-guide/en/images/
portal/trunk/docs/reference-guide/en/images/Dashboard.png
portal/trunk/docs/reference-guide/en/images/EditImportedOnline.png
portal/trunk/docs/reference-guide/en/images/EditImportedWebDAV.png
portal/trunk/docs/reference-guide/en/images/Frontpage.png
portal/trunk/docs/reference-guide/en/images/Import.png
portal/trunk/docs/reference-guide/en/images/Imported.png
portal/trunk/docs/reference-guide/en/images/Liste.png
portal/trunk/docs/reference-guide/en/images/New.png
portal/trunk/docs/reference-guide/en/images/image3.jpg
portal/trunk/docs/reference-guide/en/images/portal-change-skin.png
portal/trunk/docs/reference-guide/en/images/portal.gif
portal/trunk/docs/reference-guide/en/master.xml
portal/trunk/docs/reference-guide/en/modules/
portal/trunk/docs/reference-guide/en/modules/Configuration.xml
portal/trunk/docs/reference-guide/en/modules/Development.xml
portal/trunk/docs/reference-guide/en/modules/Gadgets.xml
portal/trunk/docs/reference-guide/en/modules/Integration.xml
portal/trunk/docs/reference-guide/en/modules/Introduction.xml
portal/trunk/docs/reference-guide/en/modules/Portlets.xml
portal/trunk/docs/reference-guide/en/modules/_archive/
portal/trunk/docs/reference-guide/en/modules/_archive/integration/
portal/trunk/docs/reference-guide/en/modules/_orphans/
portal/trunk/docs/reference-guide/en/modules/account/
portal/trunk/docs/reference-guide/en/modules/configuration/
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
portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/development/
portal/trunk/docs/reference-guide/en/modules/development/Accessing_User_Profile.xml
portal/trunk/docs/reference-guide/en/modules/development/Ajax_Loading_Mask_Layer_Deactivation.xml
portal/trunk/docs/reference-guide/en/modules/development/Dynamic_Layouts.xml
portal/trunk/docs/reference-guide/en/modules/development/Internationalization_Configuration.xml
portal/trunk/docs/reference-guide/en/modules/development/JavaScript_Inter_Application_Communication.xml
portal/trunk/docs/reference-guide/en/modules/development/Portal_Lifecycle.xml
portal/trunk/docs/reference-guide/en/modules/development/Right_To_Left_Framework.xml
portal/trunk/docs/reference-guide/en/modules/development/Upload_Component.xml
portal/trunk/docs/reference-guide/en/modules/development/XML_Resource_Bundles.xml
portal/trunk/docs/reference-guide/en/modules/gadgets/
portal/trunk/docs/reference-guide/en/modules/gadgets/Gadgets.xml
portal/trunk/docs/reference-guide/en/modules/gadgets/Setup_a_Gadget_Server.xml
portal/trunk/docs/reference-guide/en/modules/gadgetsAdmin/
portal/trunk/docs/reference-guide/en/modules/language/
portal/trunk/docs/reference-guide/en/modules/portal/
portal/trunk/docs/reference-guide/en/modules/portlets/
portal/trunk/docs/reference-guide/en/modules/portlets/AJAX_in_GateIn_Framework.xml
portal/trunk/docs/reference-guide/en/modules/portlets/Create_a_WebUI_Portlet.xml
portal/trunk/docs/reference-guide/en/modules/portlets/Groovy_Templates.xml
portal/trunk/docs/reference-guide/en/modules/portlets/Portlet_Lifecycle.xml
portal/trunk/docs/reference-guide/en/modules/portlets/Sample_Basic_Portlet.xml
portal/trunk/docs/reference-guide/en/modules/portlets/WebUI.xml
portal/trunk/docs/reference-guide/en/modules/portletsUser/
portal/trunk/docs/reference-guide/en/modules/security/
portal/trunk/docs/reference-guide/en/modules/terms/
portal/trunk/docs/reference-guide/pom.xml
Log:
Adding reference guide
Added: portal/trunk/docs/reference-guide/en/Introduction.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/Introduction.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/Introduction.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,65 @@
+<!--
+
+ 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.
+
+-->
+
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.4//EN" "http://www.oasis-open.org/docbook/sgml/4.4/docbookx.dtd">
+<chapter>
+ <title>Introduction</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Frontpage.png" scalefit="1" />
+ </imageobject>
+ </mediaobject>
+
+ <para>GateIn portal is a merge of two mature projects that have
+ been around for a while, JBoss Portal and eXo Portal. It takes the
+ best of both into a single new project. The aim is to provide both an
+ intuitive portal to use as-is and a portal framework to build upon
+ depending on your needs.</para>
+ <section>
+ <title>Links</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ GateIn homepage:
+ <ulink url="http://www.gatein.org">www.gatein.org</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn videos:
+ <ulink url="http://www.jboss.org/gatein/videos.html">www.jboss.org/gatein/videos.html</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn documentation:
+ <ulink url="http://www.jboss.org/gatein/documentation.html">www.jboss.org/gatein/documentation.html</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn downloads:
+ <ulink url="http://www.jboss.org/gatein/downloads.html">www.jboss.org/gatein/downloads.html</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+</chapter>
Added: portal/trunk/docs/reference-guide/en/images/Dashboard.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/Dashboard.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/EditImportedOnline.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/EditImportedOnline.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/EditImportedWebDAV.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/EditImportedWebDAV.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/Frontpage.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/Frontpage.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/Import.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/Import.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/Imported.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/Imported.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/Liste.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/Liste.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/New.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/New.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/image3.jpg
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/image3.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/portal-change-skin.png
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/portal-change-skin.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/images/portal.gif
===================================================================
(Binary files differ)
Property changes on: portal/trunk/docs/reference-guide/en/images/portal.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: portal/trunk/docs/reference-guide/en/master.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/master.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/master.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<book lang="en">
+ <bookinfo>
+ <title>GateIn Documentation</title>
+ <subtitle>GateIn</subtitle>
+ <releaseinfo>This is a very rough documentation issued from the merge,
+ content still has to be validated, we still hope that it can help the
+ beta testers. Thanks !</releaseinfo>
+
+ </bookinfo>
+ <toc />
+
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Introduction.xml" />
+ <!--
+ Table of content in Wiki Format <xi:include
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Portal_Manual.xml" />
+ -->
+
+ <!-- 1 Terms -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Terms.xml" />
+
+ <!--
+ Portal, Portlet, Navigation, Node, Gadget, Public mode and Private
+ mode, Permission levels, Workspace concept, Toolbar concept
+ -->
+
+ <!-- 4_Configuration -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Configuration.xml" />
+
+
+ <!-- 5_Security -->
+
+ <!-- Core/Security_Service -->
+ <!--
+ Outdated <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Security.xml" />
+ -->
+
+ <!-- 6_Integration -->
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Integration.xml" />
+
+ <!-- 7_SSO -->
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/SSO.xml" />
+
+
+ <!-- 8_Migration -->
+ <!--
+ Archived <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Migration_from_2-1_to_2-2.xml" /> <xi:include
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Migration_from_2-2_to_2-5.xml" /> <xi:include
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Export-Import_Portal_Configuration.xml" />
+ -->
+
+ <!-- 9_Technical_Foundations -->
+
+ <!-- Main/Overall_Architecture -->
+ <!-- Kernel/Inversion_of_Control -->
+ <!-- Portlet_Container -->
+ <!-- Java_Content_Repository -->
+ <!-- Web_Services -->
+ <!-- GateIn_Core -->
+ <!-- GateIn_Kernel -->
+
+ <!-- 10_Development_ -->
+
+ <!-- Main/Developers -->
+ <!-- http://docs.exoplatform.org -->
+ <!-- Products_Tech_Overview/Components_Registry -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Development.xml" />
+
+ <!-- Portlets -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Portlets.xml" />
+
+ <!-- Gadgets -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/Gadgets.xml" />
+
+ <!-- Single Sign On -->
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules/SSO.xml" />
+
+
+ <!--
+ 11_Support
+ http://www.exoplatform.com/portal/public/en/forum?portal:componentId=foru...
+ http://faq.exoplatform.com/ http://jira.exoplatform.org/browse/Portal
+ -->
+
+
+ <!-- Orphan from XWiki site -->
+ <chapter>
+ <title>Orphans chapters: TODO: move and integrate those</title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/_orphans/Setup_GadgetServer.xml" />
+ <!--
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/_orphans/Internationalization_Guidelines.xml" />
+ -->
+ </chapter>
+
+
+ <!--
+ Deprecated <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Advanced_User_Guide.xml" /> <xi:include
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Create_a_predefined_Portal_Navigation.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/RTL.xml" /> Was in HowTo <xi:include
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="modules/Skin_Config.xml" />
+ -->
+
+</book>
Added: portal/trunk/docs/reference-guide/en/modules/Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!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>
+ <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" />
+ <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" />
+ <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>
+
Added: portal/trunk/docs/reference-guide/en/modules/Development.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Development.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/Development.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!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-Development">
+ <!--
+
+ 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>Development</title>
+ <xi:include href="development/Portal_Lifecycle.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/Right_To_Left_Framework.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/Internationalization_Configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/XML_Resource_Bundles.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/Dynamic_Layouts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/JavaScript_Inter_Application_Communication.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/Upload_Component.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/Ajax_Loading_Mask_Layer_Deactivation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="development/Accessing_User_Profile.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
+
Added: portal/trunk/docs/reference-guide/en/modules/Gadgets.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Gadgets.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/Gadgets.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!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-Gadget_development">
+ <!--
+
+ 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>Gadget development</title>
+ <xi:include href="gadgets/Gadgets.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="gadgets/Setup_a_Gadget_Server.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
+
Added: portal/trunk/docs/reference-guide/en/modules/Integration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Integration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/Integration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!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-Integration">
+ <!--
+
+ 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>Integration</title>
+ <para>
+ Stuff Goes Here?
+ </para>
+ <!--
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="integration/Use_an_Existing_Portlet_Application.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="integration/Package_Gadgets.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="integration/JSF1_2_JBossPortletBridge_Richfaces.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="integration/JSF1_1_MyFaces_Spring.xml" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="integration/Changing_GateIn_URL.xml" />
+ -->
+</chapter>
+
Added: portal/trunk/docs/reference-guide/en/modules/Introduction.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Introduction.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/Introduction.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!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-Introduction">
+ <!--
+
+ 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>Introduction</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Frontpage.png" format="PNG" scalefit="1" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ Enterprise Portal Platform 5.0 comes from a merge of two mature projects; the JBoss Portal and the eXo Portal. It takes the best of both into a single new project. The aim is to provide both an intuitive portal to use as-is and a portal framework to build upon depending on your needs.
+ </para>
+ <section id="sect-Reference_Guide-Introduction-Links">
+ <title>Links</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ GateIn homepage: <ulink url="http://www.gatein.org">www.gatein.org</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn videos: <ulink url="http://www.jboss.org/gatein/videos.html">www.jboss.org/gatein/videos.html</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn documentation: <ulink url="http://www.jboss.org/gatein/documentation.html">www.jboss.org/gatein/documentation.html</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn downloads: <ulink url="http://www.jboss.org/gatein/downloads.html">www.jboss.org/gatein/downloads.html</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+</chapter>
+
Added: portal/trunk/docs/reference-guide/en/modules/Portlets.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/Portlets.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/Portlets.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!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-Portlet_development">
+ <!--
+
+ 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>Portlet development</title>
+ <xi:include href="portlets/WebUI.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portlets/AJAX_in_GateIn_Framework.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portlets/Groovy_Templates.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portlets/Create_a_WebUI_Portlet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portlets/Portlet_Lifecycle.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="portlets/Sample_Basic_Portlet.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</chapter>
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Authentication_Token_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,121 @@
+<?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-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:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ What token services are.
+ </para>
+ </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.
+ </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.
+ </para>
+ <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>
+ </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;
+ 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.
+ </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.
+ </para>
+ <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>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Dashboard_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,66 @@
+<?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-Dashboard_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>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
+ </para>
+ </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 0, everyone can edit it
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Data_Injector_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,189 @@
+<?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-Data_Injector_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>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>
+
+ <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>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Database_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,201 @@
+<?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-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.
+ </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>
+ <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>
+ </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>
+ [...]
+ <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.
+ </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>
+ <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>
+[...]
+</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="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>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Default_Portal_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,66 @@
+<?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-Default_Portal_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>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>
+ ..........
+ </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>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/IDM_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,243 @@
+<?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-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
+ </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>
+ <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"
+ 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">
+
+ <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>
+
+ <component>
+ <key>org.exoplatform.services.organization.OrganizationService</key>
+ <type>org.exoplatform.services.organization.jbidm.JBossIDMOrganizationServiceImpl</type>
+ </component>
+
+</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>
+ <para>
+ <emphasis role="bold">org.exoplatform.services.organization.jbidm.JBossIDMServiceImpl</emphasis> service has following options:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">hibernate.properties</emphasis> - (properties-para) - a list of hibernate properties used to create SessionFactory that will be injected to JBoss Identity IDM configuration registry
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">hibernate.annotations</emphasis> - (values-param) - list of annotated classes that will be added to hibernate configuration
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">hibernate.mappings</emphasis> - (values-param) - list of xml files that will be added to hibernate configuration as mapping files
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">config</emphasis> - (value-param) - JBoss Identity IDM configuration file
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">jndiName</emphasis> - (value-param) - in case 'config' parameter is not provided this will be used to perform JNDI lookup for IdentitySessionFactory
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">PortalRealm</emphasis> - (value-param) - name of a realm that should be used to obtain proper IdentitySession - default is 'PortalRealm'.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ <emphasis role="bold">org.exoplatform.services.organization.jbidm.JBossIDMOrganizationServiceImpl</emphasis> service has following options:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">exoGroupTypeName</emphasis> - (value-param) - Name of JBoss Identity IDM GroupType that will be used to store groups. Default is 'EXO_GROUP_TYPE'
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">exoRootGroupName</emphasis> - (value-param) - Name of JBoss Identity IDM Group that will be used as a root parent. Default is 'EXO_ROOT_GROUP'
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">exoRootGroupTypeName</emphasis> - (value-param) - Name of JBoss Identity IDM GroupType of a Group used as a parent root. Default is 'EXO_GROUP_TYPE'
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">passwordAsAttribute</emphasis> - (value-param) - (default false) - Specifies if password should be stored using JBoss Identity IDM Credential object or as a plain attribute
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Additionally <emphasis role="bold">JBossIDMOrganizationServiceImpl</emphasis> uses those defaults to perform identity management operations
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ GateIn User interface properties fields are persisted in JBoss Identity IDM using those attributes names: firstName, lastName, email, createdDate, lastLoginTime, organizationId, password (if password is configured to be stored as attribute)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn Group interface properties fields are persisted in JBoss Identity IDM using those attributes names: label, description
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GateIn MembershipType interface properties fields are persisted in JBoss Identity IDM using those RoleType properties: description, owner, create_date, modified_date
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ 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"
+ 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>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/JavaScript_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,95 @@
+<?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-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.
+ </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>
+
+<programlisting>JavascriptService.addJavascript("GateIn", "/javascript/GateIn.js", ServletContext);
+/* Animation Javascripts */
+JavascriptService.addJavascript("GateIn.animation.ImplodeExplode", "/javascript/GateIn/animation/ImplodeExplode.js", ServletContext);
+/* Application descriptor */
+JavascriptService.addJavascript("GateIn.application.ApplicationDescriptor", "/javascript/GateIn/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);
+/* 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);
+/* Desktop Javascripts */
+JavascriptService.addJavascript("GateIn.desktop.UIDockbar", "/javascript/GateIn/desktop/UIDockbar.js", ServletContext);
+JavascriptService.addJavascript("GateIn.desktop.UIDesktop", "/javascript/GateIn/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);
+/* 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);
+/* Desktop Javascripts 2 */
+JavascriptService.addJavascript("GateIn.desktop.UIWindow", "/javascript/GateIn/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>
+ 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}
+ </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>
+ <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.
+ </para>
+</section>
+
+
Added: 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 (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Default_Permission_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,125 @@
+<?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-Portal_Default_Permission_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 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>
+
+ <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>
+
+<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>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Portal_Navigation_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,392 @@
+<?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-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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Group Navigation
+ </para>
+ </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"
+ </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.
+ </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>
+ <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>
+ </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>
+
+ <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>
+
+
+ <page-body> </page-body>
+
+ <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).
+ </para>
+ <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>
+ 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>
+ 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>
+
+<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>
+
+ <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>
+
+
+ <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>
+ <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>
+
+<programlisting><?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>
+
+ <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>
+
+ <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>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Predefined_User_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,130 @@
+<?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-Predefined_User_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>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.
+ </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>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Skin_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,593 @@
+<?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-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>
+ <section id="sect-Reference_Guide-Skin_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ GateIn provides support for skinning the entire portal User Interface (UI) including your own portlets. Skins are designed to help you pack and reuse common graphic resources.
+ </para>
+ </section>
+
+ <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> --> .
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/portal-change-skin.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ <para>
+ When you switch, the whole portal will be repainted and new styles will be applied to the UI.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-Skins_in_Page_Markups">
+ <title>Skins in Page Markups</title>
+ <para>
+ 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>
+...
+<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" />
+...
+</head>
+</programlisting>
+ <para>
+ In the snipped code above, you can see two types of links :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Portal skin stylesheet (<literal>id="CoreSkin"</literal>).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Portlets skin stylesheets (all others) : each portlet within the page may contribute its own styles.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-Types_of_Styles">
+ <title>Types of Styles</title>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ portal skin is typically made of 3 types of styles:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Portlet themes : decorations for portlet windows.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Portal styles : default styles for html tags (ex div,th,td...) + the portal UI including the sidebar and portal admin screens.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Shared styles : GateIn WebUI components styles are reused among different GateIn portlets.
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ This is revealed easily by the main portal skin stylesheets. For example <emphasis role="bold">/GateInVistaSkin/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>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-Portlet_Styles">
+ <title>Portlet Styles</title>
+ <para>
+ Portlets often require additionnal styles that may not be defined by the portal skin. GateIn allows portlets to define additional stylesheets for each portlet and will append the corresponding <literal>link</literal> tags to the <literal>head</literal>.
+ </para>
+ <para>
+ The link ID will be of the form {portletAppName}{}<literal>$$<literal>PortletName</literal>. For example: <literal>ContentPortlet</literal> in <literal>content.war</literal>, will give <parameter>id="content</parameter>ContentPortlet"</literal>
+ </para>
+ <para>
+ TODO: give some rules to follow in order to avoid overriding portal styles
+ </para>
+ </section>
+
+ <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/webui/portal/...">SkinService</ulink> 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> /**
+ * Register the stylesheet for a portal Skin.
+ * @param module skin module identifier
+ * @param skinName skin name
+ * @param cssPath path uri to the css file. This is relative to the root context, use leading '/'
+ * @param scontext the webapp's {@link ServletContext}
+ */
+ public void addPortalSkin(String module, String skinName, String cssPath, ServletContext scontext) {
+ [...]
+ }
+ /**
+ * Register a portlet stylesheet for a Skin.
+ * @param module skin module. Typically of the form 'portletAppName/portletName' .
+ * @param skinName Name of the skin
+ * @param cssPath path uri to the css file. This is relative to the root context, use leading '/'
+ * @param scontext the webapp's {@link ServletContext}
+ */
+ public void addSkin(String module, String skinName, String cssPath, ServletContext scontext) {
+ [...]
+ }
+ /**
+ * Get a skin configuration for a given Skin
+ * @param module skin module such as registered in {@link #addSkin(String, String, String, ServletContext)}
+ * @param skinName skin name
+ * @return the skin configuration or, if not found try to find the default skin
+ */
+ public SkinConfig getSkin(String module, String skinName) {
+ [...]
+ }
+ /**
+ * Register multiple portlet themes
+ * @param categoryName portlet theme category
+ * @param themesName names of the themes
+ */
+ public void addTheme(String categoryName, List<String> themesName) {
+ [...]
+ }
+</programlisting>
+ <para>
+ Use the skin service to register your own portal skins, portlet styles and portlet themes.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-SkinConfigListener">
+ <title>SkinConfigListener</title>
+ <para>
+ 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>
+ [::]
+ <listener>
+ <listener-class>org.exoplatform.portal.webui.skin.SkinConfigListener</listener-class>
+ </listener>
+ [::]
+ </web-app>
+</programlisting>
+ <para>
+ 1.1 SkinConfigScript.groovy
+ </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>
+ </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"]);
+SkinService.addTheme("RoundConer", ["RoundConerBlue","RoundConerViolet","RoundConerOrange","RoundConerPink","RoundConerGreen"]);
+SkinService.addTheme("Shadow", ["ShadowBlue","ShadowViolet","ShadowOrange","ShadowPink","ShadowGreen"]);
+SkinService.addTheme("MacStyle", ["MacTheme","MacGray","MacGreenSteel","MacBlack"]);
+SkinService.addTheme("VistaStyle", ["VistaTheme","VistaBlue"]);
+</programlisting>
+ <para>
+ The syntax of addTheme() is:<!-- LB --> <tt>addTheme(String categoryName, List<String> themesName)</tt>
+ </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}
+ </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.
+ </para>
+ <para>
+ The syntax of addSkin() is:<!-- LB --> <tt>addSkin(String module, String skinName, String cssPath, ServletContext scontext, boolean overwrite)</tt>
+ </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.
+ </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>
+ <para>
+ The syntax of addPortalSkin() is:<!-- LB --> <tt>addPortalSkin(String module, String skinName, String cssPath, ServletContext scontext, boolean overwrite)</tt>
+ </para>
+ <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>.
+ </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>.
+ </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}
+ </para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ warning("This is option may cause display bugs with certain browsers like Internet Explorer")
+ </para>
+ </listitem>
+ </orderedlist>
+ <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>
+ <listitem>
+ <para>
+ $project/portlet/myportlets/src/main/webapp/skin/DefaultSkin/portletIcons/<emphasis role="bold">and by naming the icon after the portlet, eg:</emphasis>ExoPortlet.png
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ For example, in portal we have an account portlet named AccountPortlet, the icon is located in :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ portal/tags/2.1.1/portlet/exoadmin/src/main/webapp/skin/DefaultSkin/portletIcons/AccountPortlet.png
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ 1.1 Set the default skin for 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>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-Some_CSS_techniques">
+ <title>Some CSS techniques</title>
+ <para>
+ Before studying GateIn CSS, make sure you already have some experience with css and read the css spec at http://www.w3.org/TR/REC-CSS2/selector.html
+ </para>
+ <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>
+ <para>
+ 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~
+| | | |
+| 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>
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-Left_margin_left_pattern">
+ <title>Left margin left pattern</title>
+ <para>
+ 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~
+| | |
+| | |
+| |<--- 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>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-How_to_create_a_new_skin">
+ <title>How to create a new skin</title>
+ <para>
+ New skin can be created by the configuration. Firstly, you have to definy the new skin 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>GateInResourcesMyPortal</literal>).
+ </para>
+
+<programlisting>
+SkinService.addPortalSkin("MyPortalSkin","MyPortal","/GateInResourcesMyPortal/skin/Stylesheet.css",ServletContext);
+</programlisting>
+ <para>
+ Secondly, you put all your new skin 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/portal/webui/component/UIPortalApplicationSkin.css) ;
+@import url(MyPortalSkin/webui/component/Stylesheet.css) ;
+</programlisting>
+ <para>
+ 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.
+ </para>
+
+<programlisting>
+#############################################################################
+# Change Skin #
+#############################################################################
+
+UIChangeSkin.action.save=Appliquer
+UIChangeSkin.action.close=Fermer
+UIChangeSkin.title.SkinSetting=Configuration des styles
+UIChangeSkin.MyPortal.label=Style MyPortal
+UIChangeSkin.Default.label=Style par d?faut
+UIChangeSkin.Mac.label=Style Mac
+UIChangeSkin.Vista.label=Style Vista
+Skin.title=Liste des styles
+Skin.left.title=Voir et s?lectionner un style
+</programlisting>
+ <para>
+ The image peeview can be set in file <literal>ressource/skin/DefaultSkin/portal/webui/component/customization/UIChangeSkinForm/Stylesheet.css</literal> of Portal.
+ </para>
+
+<programlisting>
+.UIChangeSkinForm .UIItemSelector .TemplateContainer .MyPortalImage {
+ margin: auto;
+ width: 329px; height:204px;
+ background: url('background/MyPortal.jpg') no-repeat top;
+ cursor: pointer ;
+}
+</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.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Skin_Configuration-How_to_create_new_themes">
+ <title>How to create new themes</title>
+ <para>
+ 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>
+ <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>
+ <para>
+ You can see here, in the <literal>GateInResourcesCp060508/skin/MyPortalSkin/PortletThemes/Stylesheet.css</literal>, you put all your CSS of new theme.
+ </para>
+
+<programlisting>
+/*---- MyPortalTheme ----*/
+.MyPortalTheme .WindowBarCenter .WindowPortletInfo {
+ margin-right: 80px; /* orientation=lt */
+ margin-left: 80px; /* orientation=rt */
+}
+.MyPortalTheme .WindowBarCenter .ControlIcon {
+ float: right;/* orientation=lt */
+ float: left;/* orientation=rt */
+ width: 24px;
+ height: 17px;
+ cursor: pointer;
+ background-image: url('background/MyPortalTheme.png');
+}
+.MyPortalTheme .ArrowDownIcon {
+ background-position: center 20px;
+}
+.MyPortalTheme .OverArrowDownIcon {
+ background-position: center 116px;
+}
+.MyPortalTheme .MinimizedIcon {
+ background-position: center 44px;
+}
+.MyPortalTheme .OverMinimizedIcon {
+ background-position: center 140px;
+}
+.MyPortalTheme .MaximizedIcon {
+ background-position: center 68px;
+}
+.MyPortalTheme .OverMaximizedIcon {
+ background-position: center 164px;
+}
+.MyPortalTheme .RestoreIcon {
+ background-position: center 92px;
+}
+.MyPortalTheme .OverRestoreIcon {
+ background-position: center 188px;
+}
+.MyPortalTheme .NormalIcon {
+ background-position: center 92px;
+}
+.MyPortalTheme .OverNormalIcon {
+ background-position: center 188px;
+}
+.UIPageDesktop .MyPortalTheme .ResizeArea {
+ float: right;/* orientation=lt */
+ float: left;/* orientation=rt */
+ width: 18px; height: 18px;
+ cursor: nw-resize;
+ background: url('background/ResizeArea18x18.gif') no-repeat left top; /* orientation=lt */
+ background: url('background/ResizeArea18x18-rt.gif') no-repeat right top; /* orientation=rt */
+}
+.MyPortalTheme .Information {
+ height: 18px; line-height: 18px;
+ vertical-align: middle; font-size: 10px;
+ padding-left: 5px;/* orientation=lt */
+ padding-right: 5px;/* orientation=rt */
+ margin-right: 18px;/* orientation=lt */
+ margin-left: 18px;/* orientation=rt */
+}
+.MyPortalTheme .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+ line-height: 16px;
+}
+.MyPortalTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+.MyPortalTheme .WindowBarLeft {
+ padding-left: 12px;
+ background-image: url('background/MyPortalTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -148px;
+}
+.MyPortalTheme .WindowBarRight {
+ padding-right: 11px;
+ background-image: url('background/MyPortalTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -119px;
+}
+.MyPortalTheme .WindowBarCenter {
+ background-image: url('background/MyPortalTheme.png');
+ background-repeat: repeat-x;
+ background-position: left -90px;
+}
+.MyPortalTheme .WindowBarCenter .FixHeight {
+ height: 21px;
+ padding-top: 8px;
+}
+.MyPortalTheme .MiddleDecoratorLeft {
+ padding-left: 12px;
+ background: url('background/MMyPortalTheme.png') repeat-y left;
+}
+.MyPortalTheme .MiddleDecoratorRight {
+ padding-right: 11px;
+ background: url('background/MMyPortalTheme.png') repeat-y right;
+}
+.MyPortalTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+.MyPortalTheme .BottomDecoratorLeft {
+ padding-left: 12px;
+ background-image: url('background/MyPortalTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+.MyPortalTheme .BottomDecoratorRight {
+ padding-right: 11px;
+ background-image: url('background/MyPortalTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+.MyPortalTheme .BottomDecoratorCenter {
+ background-image: url('background/MyPortalTheme.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+.MyPortalTheme .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+</programlisting>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/User_Workspace_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,99 @@
+<?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>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/configuration/Varnish_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,464 @@
+<?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>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Accessing_User_Profile.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Accessing_User_Profile.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Accessing_User_Profile.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,62 @@
+<?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-Accessing_User_Profile">
+ <!--
+
+ 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>Accessing User Profile</title>
+ <para>
+ To retrieve the logged in user you can do as follows :
+ </para>
+
+<programlisting>// Alternative context: WebuiRequestContext context =
+ WebuiRequestContext.getCurrentInstance() ;
+ PortalRequestContext context = PortalRequestContext.getCurrentInstance() ;
+ // Get the id of the user logged
+ String userId = context.getRemoteUser();
+ // Request the information from OrganizationService:
+ OrganizationService orgService = getApplicationComponent(OrganizationService.class) ;
+ if(userId!images/= null) {
+ User user = orgService.getUserHandler().findUserByName(userId) ;
+ if (user!images/= null) {
+ String firstName = user.getFirstName();
+ String lastName = user.getLastName();
+ String email = user.getEmail();
+ }
+ }
+</programlisting>
+ <para>
+ Alternatives for retrieving the Organization Service
+ </para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ OrganizationService service = (OrganizationService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(OrganizationService.class);
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ OrganizationService service = (OrganizationService) PortalContainer.getInstance().getComponentInstanceOfType(OrganizationService.class);
+ </para>
+ </listitem>
+ </orderedlist>
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Ajax_Loading_Mask_Layer_Deactivation.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Ajax_Loading_Mask_Layer_Deactivation.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Ajax_Loading_Mask_Layer_Deactivation.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,126 @@
+<?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-Deactivation_of_the_Ajax_Loading_Mask_Layer">
+ <!--
+
+ 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>Deactivation of the Ajax Loading Mask Layer</title>
+ <section id="sect-Reference_Guide-Deactivation_of_the_Ajax_Loading_Mask_Layer-Overview">
+ <title>Overview</title>
+ <para>
+ In this article, you will learn:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Purpose of ajax-loading mask.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ How to deactivate ajax-loading mask.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Synchronous / Asynchronous issue.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-Deactivation_of_the_Ajax_Loading_Mask_Layer-Purpose_of_requirement">
+ <title>Purpose of requirement</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Loading mask layer is displayed after ajax-call for blocking GUI to prevent user's action until the the ajax-request is completed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Sometimes portal needs to be ready for user instructions without waiting previous instructions completed. So mask layer may need to be deactivated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-Deactivation_of_the_Ajax_Loading_Mask_Layer-How_to_deactivate_ajax_loading_mask_in_your_code">
+ <title>How to deactivate ajax-loading mask in your code</title>
+ <para>
+ To generate script to make an asynchronous ajax-call, we use uicomponent.doAsync() method instead of uicomponent.event() method.
+ </para>
+ <para>
+ Here is an example:
+ </para>
+ <para>
+ <a href="<%=uicomponent.doAsync(action, beanId, params)%>" alt="">Asynchronous</a>
+ </para>
+ <para>
+ Method doAsync() automatically adds a parameter into parameters list. Parameter async<emphasis>param = new Parameter(AJAX</emphasis>ASYNC,"true"); (AJAX<emphasis>ASYNC == "ajax</emphasis>async")
+ </para>
+ <para>
+ After all, its call method event() to generate script that make Ajax Request. This request is asynchronous and ajax-loading mask will not displayed.
+ </para>
+ <para>
+ Note:
+ </para>
+ <para>
+ 1. You still also make an asynchronous request by using method uicomponent.event(). By this way, you must add asyncparam manually.
+ </para>
+ <para>
+ 2. GUI is blocked so that user can do only one action at a time (Request seems to be synchronous). But in fact ajax request always be asynchronous. See Synchronous issue section.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Deactivation_of_the_Ajax_Loading_Mask_Layer-Synchronous_issue">
+ <title>Synchronous issue</title>
+ <para>
+ Almost web browser such as (IE, Chrome, Safari .. ) told that ajax request may used in two modes: Synchronous / Asynchronous with boolean value of bAsyn parameter. View reference.
+ </para>
+ <para>
+ var bAsync = false; // Synchronous
+ </para>
+ <para>
+ request.open(instance.method, instance.url, bAsync);
+ </para>
+ <para>
+ But Mozilla say no. They doesn't support synchronous request. var bAsync = false; // Synchronous
+ </para>
+ <para>
+ request.open(instance.method, instance.url, bAsync); // Firefox will not execute
+ </para>
+ <para>
+ So we decide to set bAsync always true (Ajax request always be asynchronous).
+ </para>
+ <para>
+ // Asynchronous request
+ </para>
+ <para>
+ request.open(instance.method, instance.url, true);
+ </para>
+ <para>
+ It is cause that Ajax Request always be asynchronous.
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Dynamic_Layouts.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Dynamic_Layouts.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Dynamic_Layouts.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,67 @@
+<?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-Dynamic_Layouts">
+ <!--
+
+ 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>Dynamic Layouts</title>
+ <section id="sect-Reference_Guide-Dynamic_Layouts-Overview">
+ <title>Overview</title>
+ <para>
+ Indeed, the usual way of rendering a portal page is a static one where you need a template, usually a jsp page, for each layout (2 columns, 3 columns and so on). That makes you depend on the integrator or developers as for each new layout you will need to ask for a custom development.
+ </para>
+ <para>
+ GateIn, with its dynamic way that creates a tree of nested UI containers that contain portlets as shown in the picture below. Each container is responsible for rendering its children. In the picture, the main container renders its children in several rows while the nested container displays them as columns.
+ </para>
+ <para>
+ Furthermore, by manipulating the tree using the WYSIWYG editor, it allows you to create new containers, define how they will render their children, add new portlets.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/portal.gif" format="GIF" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Dynamic_Layouts-Advanced_Drag_and_Drop_mechanism">
+ <title>Advanced Drag and Drop mechanism</title>
+ <para>
+ As most portal use the static layout mechanism, they can only drag portlets from one static location, let's say a column, to another one.
+ </para>
+ <para>
+ With GateIn Portal, it is possible to also drag the UI containers and the portlets and drop them in containers that are deeper or upper in the Portal component tree. This feature is unique and not just a tool!
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/image3.jpg" format="JPG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Dynamic_Layouts-Summary">
+ <title>Summary</title>
+ <para>
+ With this innovative concept of dynamic layout, you can easily create portal pages with complex layout.
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Internationalization_Configuration.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Internationalization_Configuration.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Internationalization_Configuration.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,258 @@
+<?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-Internationalization_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>Internationalization Configuration</title>
+ <section id="sect-Reference_Guide-Internationalization_Configuration-Overview">
+ <title>Overview</title>
+ <para>
+ All aspects of internationalization in GateIn products are covered. You should have a general knowledge of Internationalization in Java products. Sun created a <ulink url=" http://java:sun.com-docs-books-tutorial-i18n-TOC.html">good internationalization tutorial</ulink> .
+ </para>
+ <section id="sect-Reference_Guide-Overview-Introduction">
+ <title>Introduction</title>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ typical locale file can be found in:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ .../WEB-INF/classes/locale/navigation/group/organization/management/executive-board
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ You should notice that
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ the file is located in the <emphasis role="bold">classes</emphasis> folder of your WEB-INF, this way they are loaded by the ClassLoader.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ all resource files are in the subfolder <emphasis role="bold">locale</emphasis> .
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ resources for the <xref linkend="sect-Reference_Guide-Portal_Navigation_Configuration" /> are located in a <emphasis role="bold">navigation</emphasis> subfolder of locale.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ resources concerning the navigation of a group are in a <emphasis role="bold">navigation/group</emphasis> subfolder. The other possible navigations are <emphasis role="bold">user</emphasis> and <emphasis role="bold">portal</emphasis> .
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Furthermore there are properties files in portal sub-folder, they form together the <emphasis role="bold">portal resource bundle</emphasis> .:<!-- <ulink url="http://fisheye.exoplatform.org-browse-projects-portal-trunk-web-portal-sr...">::/WEB-INF/classes/locale/portal></ulink> -->
+ </para>
+ <para>
+ The <emphasis>executive-board</emphasis> en.properties{code:none}{code} The keys (example: ~~organization.newstaff~~) can have any name but must not contain spaces. The values (~~New Staff~~) contain the translation to the language of the resource file. The suffix "en" means in this case "English".
+ </para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ info("There are also resource bundles in XML format <xref linkend="sect-Reference_Guide-XML_Resources_Bundles" /> which are a proprietary format of GateIn Platform.")
+ </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ 1 LocalesConfig
+ </para>
+ <!-- <ulink url="http://fisheye.exoplatform.org-browse-projects-portal-trunk-web-portal-sr...">/WEB-INF/conf/common/common-configuration.xml"</ulink> -->
+ <para>
+ In the <filename>/WEB-INF/conf/common/common-configuration.xml</filename> file of your installation you find:
+ </para>
+
+<programlisting> <component>
+ <key>org.exoplatform.services.resources.LocaleConfigService</key>
+ <type>org.exoplatform.services.resources.impl.LocaleConfigServiceImpl</type>
+ <init-params>
+ <value-param>
+ <name>locale.config.file</name>
+ <value>war:/conf/common/locales-config.xml</value>
+ </value-param>
+ </init-params>
+ </component>
+</programlisting>
+ <para>
+ The configuration points to the locale configuration file like this one<ulink type="http" url="http://fisheye.exoplatform.org-browse-projects-portal-trunk-web-portal-sr..." />
+ </para>
+
+<programlisting>{code:xml} <locale-config> <locale>ar</locale> <output-encoding>UTF-8</output-encoding> <input-encoding>UTF-8</input-encoding> <description>Default configuration for the Arabic locale</description> <orientation>rt</orientation> </locale-config> {code}
+</programlisting>
+ <para>
+ The locale has to be defined using <ulink type="http" url="http://ftp.ics.uci.edu-pub-ietf-http-related-iso639.txt" />, in this example "ar" is Arabic.
+ </para>
+ <para>
+ This configuration defines also the list of languages in the "Change Language" section of the portal.
+ </para>
+ <para>
+ 1.1 Encoding It's highly recommended to always use <emphasis role="bold">UTF-8</emphasis>. You should also encode all property files in UTF-8.
+ </para>
+ <para>
+ In the java implementation, the encoding parameters will be used for the request response stream. The input-encoding parameter will be used for request setCharacterEncoding(..).
+ </para>
+ <para>
+ 1.1 Orientation The default orientation of text and images is Left-To-Right. As you know GateIn support <emphasis role="bold">Right-To-Left</emphasis> orientation. Therefore for Arabic you define
+ </para>
+ <para>
+ <orientation>rt</orientation>
+ </para>
+ <para>
+ 1 ResourceBundleService
+ </para>
+ <para>
+ The resource bundle service is configured here: // <ulink url="http://fisheye.exoplatform.org/browse/projects/portal/trunk/web/portal/sr...">http://fisheye.exoplatform.org/browse/projects/portal/trunk/web/portal/sr...</ulink>
+ </para>
+ <para>
+ Caution: Other GateIn products like DMS use dedicated configuration file called "resource-bundle-configuration.xml".
+ </para>
+ <para>
+ A typical configuration looks like this one: {code:xml} <component> <key>org.exoplatform.services.resources.ResourceBundleService</key> <type>org.exoplatform.services.resources.jcr.ResourceBundleServiceImpl</type> <init-params>
+ </para>
+ <para>
+ <values-param> <name>classpath.resources</name> <description>The resources that start with the following package name should be loaded from file system</description> <value>locale.portlet</value> </values-param>
+ </para>
+ <para>
+ <values-param> <name>init.resources</name> <description>Store the following resources in the DB for the first launch </description> <value>locale.portal.expression</value> <value>locale.portal.services</value> <value>locale.portal.webui</value> <value>locale.portal.custom</value>
+ </para>
+ <para>
+ <value>locale.navigation.portal.classic</value> <value>locale.navigation.group.platform.administrators</value> <value>locale.navigation.group.platform.users</value> <value>locale.navigation.group.platform.guests</value> <value>locale.navigation.group.organization.management.executive-board</value> </values-param>
+ </para>
+ <para>
+ <values-param> <name>portal.resource.names</name> <description>The properties files of the portal, these files will be merged into one ResoruceBundle properties </description> <value>locale.portal.expression</value> <value>locale.portal.services</value> <value>locale.portal.webui</value> <value>locale.portal.custom</value> </values-param>
+ </para>
+ <para>
+ </init-params> </component>
+ </para>
+
+<programlisting>
+There are three parameters: *classpath.resources*, *init.resources*, and *portal.resource.names*. We will talk later about _classpath.resources_.
+In _init.resources_ you have to define _*all resources*_ that you want use in the product, independently of the fact that they belong to the portal or to the navigation. All these resources are stored in JCR at the first launch of your product. After that, you only can modify these resources using the [Portal:Internationalization Portlet].
+h2. Portal Resource Bundle
+The parameter *portal.resource.names* defines all resources that belong to the *Portal Resource Bundle*. This means that these resources are merged to a *single resource bundle* which is accessible from anywhere in GateIn products. As mentioned, all these keys are located in the same bundle, which is separated from the navigation resource bundles.
+h2. Navigation Resource Bundles
+There is a resource bundle for each navigation. A navigation can exist for user, groups, and portal. In the example above you see bundle definitions for the navigation of the classic portal and of four different groups. Each of these resource bundles lives in a different sphere, they are independent of each other and they do not belong to the portal.resource.names parameter (because they are not mentioned in _portal.resource.names_).
+As you learned in the introduction you must put the properties for a group in the _WEB-INF/classes/locale/navigation/group/_ folder.
+Example:
+*.../portal/trunk/web/portal/src/main/webapp/WEB-INF/classes/locale/navigation/group/organization/management/executive-board_en.properties*
+The folder and file names must correspond to the group hierarchy. The group name "executive-board" is followed by the iso 639 code. For each language you defined in the LocalesConfig you must provide a resource file.
+If you ever change the name of a group you also need to change the name of the folder and/or files of the correspondent navigation resource bundles.
+You already know the content of _executive-board_en.properties_:
+{code:none}
+organization.title=Organization
+organization.newstaff=New Staff
+organization.management=Management
+</programlisting>
+ <para>
+ This resource bundle is only accessible for the navigation of the ~~organization.management.executive-board~~ group.
+ </para>
+ <para>
+ 1 Portlet
+ </para>
+ <para>
+ 1.1 classpath.resources
+ </para>
+ <para>
+ Portlets are independent application and they deliver their own resource files. You can find an example for the GadgetPortlet: <!-- LB --> .../WEB-INF/classes/locale/portlet/gadget/GadgetPortlet/en.properties <ulink url="http://fisheye.exoplatform.org/browse/projects/portal/trunk/portlet/dashb..." />
+ </para>
+ <para>
+ All portlet resources are located in the <emphasis role="bold">locale/portlet</emphasis> subfolder. The ResourceBundleService parameter <emphasis role="bold">classpath.resources</emphasis> defines exactly this subfolder. Doing so the resource file that are in ~~locale/portlet~~ will never be stored in the JCR and reloaded at each start of the application server.
+ </para>
+
+<programlisting><values-param>
+ <name>classpath.resources</name>
+ <description>The resources that start with the following package name should
+ be loaded from file system</description>
+ <value>locale.portlet</value>
+</values-param>
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Overview-Example">
+ <title>Example</title>
+ <para>
+ Let's suppose you want to add a Spanish translation to the GadgetPortlet.
+ </para>
+ <para>
+ Create the file in: <filename>.../WEB-INF/classes/locale/portlet/gadget/GadgetPortlet</filename>
+ </para>
+ <para>
+ In <emphasis role="bold">portlet.xml</emphasis>, add Spanish as a <emphasis role="bold">supported-locale</emphasis>, the <emphasis role="bold">resource-bundle</emphasis> is already declared and is the same for all languages : {code:xml} <supported-locale>en</supported-locale> <supported-locale>es</supported-locale> <resource-bundle>locale.portlet.gadget.GadgetPortlet</resource-bundle> {code}
+ </para>
+ <para>
+ Find <ulink type="http" url="http://developers.sun.com-portalserver-reference-techart-i18n-portlets.html" /> for more details about portlet internationalization.
+ </para>
+ <para>
+ 1.1 Standard Portlet Resource Keys There are three standard keys defined : Title, Short Title and Keywords. Keywords contain a comma-separated list of keywords.
+ </para>
+
+<programlisting> javax.portlet.title=Breadcrumbs Portlet
+ javax.portlet.short-title=Breadcrumbs
+ javax.portlet.keywords=Breadcrumbs, Breadcrumb
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Overview-Access">
+ <title>Access</title>
+ <para>
+ Whenever you want to display a property in the user language you use its <emphasis>key</emphasis>. Using the below access method the translation is returned in the preferred language of the current http session:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Groovy Template{code}{code}
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Java
+ </para>
+ </listitem>
+ </itemizedlist>
+
+<programlisting>WebuiRequestContext context = WebuiRequestContext.getCurrentInstance() ;
+ResourceBundle res = context.getApplicationResourceBundle() ;
+String translatedString = res.getString(key);
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Overview-Debugging_resource_bundle_usage">
+ <title>Debugging resource bundle usage</title>
+ <para>
+ When an application needs to be translated, it is never obvious to find out the right key for a given translated property. When the portal is executed in <emphasis role="bold">debug mode</emphasis> it is possible to select among the available languages a special language called <emphasis role="bold">Magic locale</emphasis>.
+ </para>
+ <para>
+ This feature translates a key to the same key value. For instance, the translated value for the key "organization.title" is simply the value "organization.title". Selecting that language allows to use the portal and its applications with <emphasis role="bold">all the keys visible</emphasis> and it is easy to find out the correct key for a given label in the portal page.
+ </para>
+ </section>
+
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/JavaScript_Inter_Application_Communication.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/JavaScript_Inter_Application_Communication.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/JavaScript_Inter_Application_Communication.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,157 @@
+<?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-JavaScript_Inter_Application_Communication">
+ <!--
+
+ 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 Inter Application Communication</title>
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Overview">
+ <title>Overview</title>
+ <para>
+ This kind of communication is made to allow applications within a page to exchange data. This library is made for broadcasting messages on topic. This is basically based on 3 functions : subscribe, publish and unsubscribe.
+ </para>
+ <para>
+ When you subscribe to a topic, you receive all the subtopic message. for example, if I subscribe to "/GateIn/application", and an application send a message on "/GateIn/application/map", i will receive it, but if another application send a message on "/GateIn", i will not receive it.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Common_topics">
+ <title>Common topics</title>
+ <para>
+ Stuff Goes Here?
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateIn">
+ <title>/GateIn</title>
+ <para>
+ It contains all the events generated by the platform.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateInportalnotification">
+ <title>/GateIn/portal/notification</title>
+ <para>
+ When a message is sent on this topic, a popup message appears on the top right of the screen.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateInportalchangeTitle_not_implemented_yet">
+ <title>/GateIn/portal/changeTitle (not implemented yet)</title>
+ <para>
+ Send a message on this channel to change (and to be notified) the title of the portal.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateInportalpageLoaded_not_implemented_yet">
+ <title>/GateIn/portal/pageLoaded (not implemented yet)</title>
+ <para>
+ Receive a message when a page is loaded.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateInportalpageUnloaded_not_implemented_yet">
+ <title>/GateIn/portal/pageUnloaded (not implemented yet)</title>
+ <para>
+ Receive a message when a page is unloaded.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateInapplicationapplicationLoaded_not_implemented_yet">
+ <title>/GateIn/application/applicationLoaded (not implemented yet)</title>
+ <para>
+ Receive a message when an application is loaded in the page.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-GateInapplicationapplicationUnloaded_not_implemented_yet">
+ <title>/GateIn/application/applicationUnloaded (not implemented yet)</title>
+ <para>
+ Receive a message when an application is unloaded in the page.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Library">
+ <title>Library</title>
+ <para>
+ The inter application communication http://fisheye.exoplatform.org/projects/browse/projects/portal/trunk/web/...
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Syntax">
+ <title>Syntax</title>
+
+<programlisting>subscribe is used to subscribe a callback to a topic
+*Parameters:*
+* topic is the topic that will be listened
+* obj is the context object
+* funcName is the name of the function of obj to call when a message is received on the topic
+funcName have to be a function that take an Object in parameter. the event received have this format:
+{code:javascript}
+{
+ senderId:senderId,
+ message:message,
+ topic: topic
+}
+</programlisting>
+
+<programlisting>publish is used to publish an event to the other subscribers to the given channels
+*Parameters:*
+* senderId is a string that identify the sender
+* topic is the topic that the message will be published
+* message is the message that's going to be delivered to the subscribers to the topic
+</programlisting>
+ <para>
+ unsubscribe is used to unsubscribe a callback to a topic
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Parameters:
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ topic is the topic that will be unsubscribe
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ obj is the context object
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ funcName function name givent at the previous subscribe
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-JavaScript_Inter_Application_Communication-Example">
+ <title>Example</title>
+ <para>
+ <ulink url="http://fisheye.exoplatform.org/projects/browse/projects/portal/trunk/samp...">Topic Demo</ulink>
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Portal_Lifecycle.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Portal_Lifecycle.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Portal_Lifecycle.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,957 @@
+<?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-Portal_Lifecycle">
+ <!--
+
+ 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 Lifecycle</title>
+ <section id="sect-Reference_Guide-Portal_Lifecycle-Overview">
+ <title>Overview</title>
+ <para>
+ This chapter describes the portal lifecycle from the application server start to its stop as well as how requests are handled.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Portal_Lifecycle-Application_Server_start_and_stop">
+ <title>Application Server start and stop</title>
+ <para>
+ An GateIn Portal instance is simply a web application deployed as a WAR in an application server. Each portlet is also part of an enhanced WAR that we call a portlet application. Hence, the portal web.xml file is the main entry point to grab information about how does the portal start.
+ </para>
+ <para>
+ The web.xml file contains several information such as a listener, a servlet as well as some security information.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Portal_Lifecycle-The_Listener">
+ <title>The Listener</title>
+ <para>
+ In the web.xml we can find servlet listener:
+ </para>
+
+<programlisting> <!- ================================================================== ->
+ <!- LISTENER ->
+ <!- ================================================================== ->
+ <listener>
+ <listener-class>org.exoplatform.portal.application.PortalSessionListener</listener-class>
+ </listener>
+</programlisting>
+ <para>
+ That listener implements the HttpSessionListener which means it is called each time a session is created or destroyed; in other words, a session is created each time a user send a first request to the portal. That session is destroyed when he has not sent request to the portal for a long time or when he closes his browser.
+ </para>
+
+<programlisting>public class PortalSessionListener implements HttpSessionListener
+</programlisting>
+ <para>
+ Only the destroy method of the Listener object is implemented and it is used to flush resources when a user portal session expires. Here is the code:
+ </para>
+
+<programlisting> /**
+ * This method is called when a HTTP session of a Portal instance is destroyed.
+ * By default the session time is 30 minutes.
+ *
+ * In this method, we:
+ * 1) first get the portal instance name from where the session is removed.
+ * 2) Get the correct instance object from the Root container
+ * 3) Put the portal instance in the Portal ThreadLocal
+ * 4) Get the main entry point (WebAppController) from the current portal container
+ * 5) Extract from the WebAppController the PortalApplication object which is the entry point to
+ * the StateManager object
+ * 6) Expire the portal session stored in the StateManager
+ * 7) Finally, removes the WindowInfos object from the WindowInfosContainer container
+ * 8) Flush the threadlocal for the PortalContainer
+ *
+ */
+ public void sessionDestroyed(HttpSessionEvent event) {
+ try {
+ String portalContainerName = event.getSession().getServletContext().getServletContextName() ;
+ log.warn("Destroy session from " + portalContainerName + " portal");
+ RootContainer rootContainer = RootContainer.getInstance() ;
+ PortalContainer portalContainer = rootContainer.getPortalContainer(portalContainerName) ;
+ PortalContainer.setInstance(portalContainer);
+ WebAppController controller =
+ (WebAppController)portalContainer.getComponentInstanceOfType(WebAppController.class) ;
+ PortalApplication portalApp = controller.getApplication(PortalApplication.PORTAL_APPLICATION_ID) ;
+ portalApp.getStateManager().expire(event.getSession().getId(), portalApp) ;
+
+ WindowInfosContainer.removeInstance(portalContainer, event.getSession().getId());
+ } catch(Exception ex) {
+ log.error("Error while destroying a portal session",ex);
+ } finally {
+ PortalContainer.setInstance(null) ;
+ }
+ }
+</programlisting>
+ <para>
+ 1.1 The Servlet
+ </para>
+ <para>
+ The servlet is the main entry point for incoming requests, it also includes some interesting init code when the portal is launched.
+ </para>
+ <para>
+ Here is its definition in the web.xml file:
+ </para>
+
+<programlisting> <!-- ================================================================== -->
+ <!-- SERVLET -->
+ <!-- ================================================================== -->
+ <servlet>
+ <servlet-name>portal</servlet-name>
+ <servlet-class>org.exoplatform.portal.application.PortalController</servlet-class>
+ <init-param>
+ <param-name>webui.configuration</param-name>
+ <param-value>app:/WEB-INF/webui-configuration.xml</param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+</programlisting>
+ <para>
+ The load-on-startup tag tells that the init method of the servlet is called when the application server starts. We also define some configuration for the portal at the path WEB-INF/webui-configuration.xml inside the portal WAR.
+ </para>
+
+<programlisting>/**
+ * The PortalContainer servlet is the main entry point for the GateIn Portal product.
+ *
+ * Both the init() and service() methods are implemented. The first one is used to configure all the
+ * portal resources to prepare the platform to receive requests. The second one is used to handle them.
+ *
+ * Basically, this class is just dispatcher as the real business logic is implemented inside
+ * the WebAppController class.
+ */
+@SuppressWarnings("serial")
+public class PortalController extends HttpServlet {
+
+ protected static Log log = ExoLogger.getLogger("portal:PortalController");
+
+ /**
+ * The init() method is used to prepare the portal to receive requests.
+ *
+ * 1) Create the PortalContainer and store it inside the ThreadLocal object. The PortalContainer is
+ * a child of the RootContainer
+ * 2) Get the WebAppController component from the container
+ * 3) Create a new PortalApplication, init it with the ServletConfig object (which contains init params)
+ * 4) Register that PortalApplication inside WebAppController
+ * 5) Create a new PortalRequestHandler object and register it in the WebAppController
+ * 6) Release the PortalContainer ThreadLocal
+ */
+ @SuppressWarnings("unchecked")
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config) ;
+ try {
+ RootContainer rootContainer = RootContainer.getInstance() ;
+ PortalContainer portalContainer =
+ rootContainer.getPortalContainer(config.getServletContext().getServletContextName()) ;
+ portalContainer = rootContainer.createPortalContainer(config.getServletContext()) ;
+ PortalContainer.setInstance(portalContainer) ;
+ WebAppController controller =
+ (WebAppController)portalContainer.getComponentInstanceOfType(WebAppController.class) ;
+ PortalApplication application = new PortalApplication(config);
+ application.onInit() ;
+ controller.addApplication(application) ;
+ controller.register(new PortalRequestHandler()) ;
+ } catch (Throwable t){
+ throw new ServletException(t) ;
+ } finally {
+ try {
+ PortalContainer.setInstance(null) ;
+ } catch (Exception e) {
+ log.warn("An error occured while cleaning the ThreadLocal", e);
+ }
+ }
+ log.info("Init of PortalController Servlet successful");
+ }
+...
+</programlisting>
+ <para>
+ We see that a PortalApplication class is instantiated, initialized and then referenced inside the WebAppController. Note that the WebAppController is a component located inside GateIn IoC service container (and hence registered in one of our service configuration XML file).
+ </para>
+ <para>
+ The <code><strong>PortalApplication</strong></code> extends the <code><strong>WebuiApplication</strong></code> which itself extends the <code><strong>Application</strong></code> abstract class.
+ </para>
+
+<programlisting>public class PortalApplication extends WebuiApplication {
+
+ protected static Log log = ExoLogger.getLogger("portal:PortalApplication");
+
+ final static public String PORTAL_APPLICATION_ID = "PortalApplication" ;
+
+ private ServletConfig sconfig_ ;
+ private String[] applicationResourceBundleNames_ ;
+
+ /**
+ * The constructor references resource resolvers that allows the ApplicationResourceResolver to
+ * extract files from different locations such as the current war or external one such as the resource
+ * one where several static files are shared among all portal instances.
+ *
+ *
+ * @param config, the servlet config that contains init params such as the path location of
+ * the XML configuration file for the WebUI framework
+ */
+ public PortalApplication(ServletConfig config) throws Exception {
+ sconfig_ = config ;
+ ApplicationResourceResolver resolver = new ApplicationResourceResolver() ;
+ resolver.addResourceResolver(new ServletResourceResolver(config.getServletContext(), "war:")) ;
+ resolver.addResourceResolver(new ServletResourceResolver(config.getServletContext(), "app:")) ;
+ resolver.addResourceResolver(new ServletResourceResolver(config.getServletContext(), "system:")) ;
+ resolver.addResourceResolver(new ServletResourceResolver(config.getServletContext().getContext("/GateInResources"), "resources:")) ;
+ setResourceResolver(resolver) ;
+ }
+...
+</programlisting>
+ <para>
+ The main goal of this constructor is to fill an <code><strong>ApplicationResourceResolver</strong></code> with several <code><strong>ResourceResolver</strong></code> object that will allow the application to check for files such as groovy templates into different locations. Here the goal of the <code><strong>ResourceResolver</strong></code> is to abstract the different mechanisms to extract files from different location. In the previous code sample the <code><strong>ServletResourceResolver</strong></code> is used and hence methods based on the servlet context object are defined. Note that the <code><strong>ApplicationResourceResolver</strong></code> is also a class of type <code><strong>ResourceResolver</strong></code> but a special one as it can also contains several <code><strong>ResourceResolver</strong></!
code> itself.
+ </para>
+ <para>
+ Then the <code><strong>onInit()</strong></code> method of the <code><strong>PortalApplication</strong></code> is called.
+ </para>
+
+<programlisting>/**
+ * This method first calls the super.onInit() of the WebuiApplication. That super method parse the XML
+ * file and stores its content in the ConfigurationManager object. It also set up he StateManager and
+ * init the application lifecycle phases.
+ *
+ * Then we get all the properties file that will be used to create ResourceBundles
+ */
+ public void onInit() throws Exception {
+ super.onInit() ;
+ applicationResourceBundleNames_ =
+ getConfigurationManager().getApplication().getInitParams().
+ getParam("application.resource.bundle").getValue().split(",");
+ for(int i = 0; i < applicationResourceBundleNames_.length; i++) {
+ applicationResourceBundleNames_[i] = applicationResourceBundleNames_[i].trim() ;
+ }
+ }
+</programlisting>
+ <para>
+ The <code><strong>ConfigurationManager</strong></code> object parses the XML configuration file. The idea of the framework, once again, is to abstract the type of <code><strong>webapplication</strong></code> in used. Hence the <code><strong>webui-configuration.xml</strong></code> file is used by both the portal and portlet applications.
+ </para>
+ <para>
+ Here is the <code><strong>webui-configuration</strong></code>:
+ </para>
+
+<programlisting><webui-configuration>
+ <application>
+ <init-params>
+ <param>
+ <name>application.resource.bundle</name>
+ <value>locale.portal.expression, locale.portal.services, locale.portal.webui</value>
+ </param>
+ </init-params>
+ <ui-component-root>org.exoplatform.portal.webui.workspace.UIPortalApplication</ui-component-root>
+ <state-manager>org.exoplatform.portal.application.PortalStateManager</state-manager>
+
+ <application-lifecycle-listeners>
+ <listener>org.exoplatform.portal.application.PortalStatisticLifecycle</listener>
+ <listener>org.exoplatform.portal.application.PortalApplicationLifecycle</listener>
+ <listener>org.exoplatform.webui.application.MonitorApplicationLifecycle</listener>
+ </application-lifecycle-listeners>
+ <events>
+ <event>
+ <event-name>portal.application.lifecycle.event</event-name>
+ <listener>org.exoplatform.webui.event.ConsoleEventMonitorListener</listener>
+ </event>
+ <event>
+ <event-name>portal.execution.lifecycle.event</event-name>
+ <listener>org.exoplatform.webui.event.ConsoleEventMonitorListener</listener>
+ </event>
+ </events>
+ </application>
+</webui-configuration>
+</programlisting>
+ <para>
+ In the previous XML file we see that we define several tags such as:
+ </para>
+ <para>
+ 1.1.1 The ui-component-root
+ </para>
+ <para>
+ Here it is the class <code><strong>org.exoplatform.portal.webui.workspace.UIPortalApplication</strong></code> which is a class that extends the <code><strong>UIApplication</strong></code> and hence is a sibling of <code><strong>UIPortletApplication</strong></code> (used by any GateIn Portlets as the Parent class to build the portlet component tree).
+ </para>
+ <para>
+ The <code><strong>UIPortalApplication</strong></code> is responsible for building its subtrees - at request time according to some configuration parameters. If all components are displayed it is composed of 3 UI components:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code><strong>UIControlWorkSpace</strong></code> : the left expandable column that can contains gadget containers and the start menu
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code><strong>UIWorkingWorkSpace</strong></code>: the right part that can display the normal or webos portal layouts.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code><strong>UIPopupWindow</strong></code>: a popup window that display or not.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <code><strong>UIPortalApplication</strong><code> constructor is shown next and is the starting point to build the UI Component tree to which Pages and Portlets will also be mounted. We will not describe that behavior here.
+ </para>
+
+<programlisting>/**
+ * The constructor of this class is used to build the tree of UI components that will be aggregated
+ * in the portal page.
+ *
+ * 1) The component is stored in the current PortalRequestContext ThreadLocal
+ * 2) The configuration for the portal associated with the current user request is extracted from the
+ * PortalRequestContext
+ * 3) Then according to the context path, either a public or private portal is initiated. Usually a public
+ * portal does not contain the left column and only the private one has it.
+ * 4) The skin to use is setup
+ * 5) Finally, the current component is associated with the current portal owner
+ *
+ * @throws Exception
+ */
+ public UIPortalApplication() throws Exception {
+ log = ExoLogger.getLogger("portal:UIPortalApplication");
+ PortalRequestContext context = PortalRequestContext.getCurrentInstance() ;
+ userPortalConfig_ = (UserPortalConfig)context.getAttribute(UserPortalConfig.class);
+ if(userPortalConfig_ == null) throw new Exception("Can't load user portal config");
+
+ // dang.tung - set portal language by user preference -> browser -> default
+ //----
+ String portalLanguage = null ;
+ LocaleConfigService localeConfigService = getApplicationComponent(LocaleConfigService.class) ;
+ OrganizationService orgService = getApplicationComponent(OrganizationService.class) ;
+ LocaleConfig localeConfig = localeConfigService.getLocaleConfig(userPortalConfig_.getPortalConfig().getLocale());
+ String user = context.getRemoteUser();
+ if(user!images/= null) {
+ UserProfile userProfile = orgService.getUserProfileHandler().findUserProfileByName(user) ;
+ if(userProfile!images/= null) {
+ portalLanguage = userProfile.getUserInfoMap().get("user.language") ;
+ } else {
+ if (log.isWarnEnabled()) log.warn("Could not load user profile for " + user + ". Using default portal locale.");
+ }
+ }
+ localeConfig = localeConfigService.getLocaleConfig(portalLanguage) ;
+ if(portalLanguage == null ||!images/portalLanguage.equals(localeConfig.getLanguage())) {
+ // if user language no support by portal -> get browser language if no -> get portal
+ portalLanguage = context.getRequest().getLocale().getLanguage() ;
+ localeConfig = localeConfigService.getLocaleConfig(portalLanguage) ;
+ if(!portalLanguage.equals(localeConfig.getLanguage())) {
+ localeConfig = localeConfigService.getLocaleConfig(userPortalConfig_.getPortalConfig().getLocale()) ;
+ }
+ }
+ setLocale(localeConfig.getLocale()) ;
+ setOrientation(localeConfig.getOrientation());
+ //----
+ context.setUIApplication(this);
+ UserACL acl = getApplicationComponent(UserACL.class);
+ if(acl.hasAccessControlWorkspacePermission(context.getRemoteUser()))
+ addChild(UIControlWorkspace.class, UIPortalApplication.UI_CONTROL_WS_ID, null) ;
+ addWorkingWorkspace() ;
+ String currentSkin = userPortalConfig_.getPortalConfig().getSkin();
+ if(currentSkin!images/= null && currentSkin.trim().length() > 0) skin_ = currentSkin;
+ setOwner(context.getPortalOwner());
+ }
+...
+</programlisting>
+ <para>
+ 1.1.1 The StateManager
+ </para>
+ <para>
+ The <code><strong>StateManager</strong></code> here is in the <code><strong>org.exoplatform.portal.application</strong></code> package which is an abstract class.
+ </para>
+
+<programlisting>abstract public class StateManager {
+ abstract public UIApplication restoreUIRootComponent(WebuiRequestContext context) throws Exception ;
+ abstract public void storeUIRootComponent(WebuiRequestContext context) throws Exception ;
+ abstract public void expire(String sessionId, WebuiApplication app) throws Exception ;
+}
+</programlisting>
+ <para>
+ The goal of the <code><strong>StateManager</strong></code> is to abstract the way <code><strong>UIApplication</strong></code> are stored and restored for all the user session lifetime. The expire method is called from the listener we have introduced before in this chapter.
+ </para>
+ <para>
+ 1.1.1 The application-lifecycle-listeners
+ </para>
+ <para>
+ There are 2 lifecycle listeners in the Portal, one for the real business logic (<code><strong>PortalApplicationLifecycle</strong></code>), the other one for some monitoring issues. They both implement the interface <code><strong>ApplicationLifecycle<E extends RequestContext></strong></code>.
+ </para>
+
+<programlisting>public interface ApplicationLifecycle<E extends RequestContext> {
+
+ public void onInit(Application app) throws Exception ;
+ public void onStartRequest(Application app, E context) throws Exception ;
+ public void onEndRequest(Application app, E context) throws Exception ;
+ public void onDestroy(Application app) throws Exception ;
+
+}
+</programlisting>
+ <para>
+ Each registered lifecycle listener will then be able to get events when several states of the portal lifecycle are reached.
+ </para>
+ <para>
+ 1.1 The Request Handler
+ </para>
+ <para>
+ Once started and fully configured, the portal application WAR can handle HTTP requests.
+ </para>
+ <para>
+ The entry point is for sure the PortalController servlet we have already seen in the current chapter and defined in the <code><strong>web.xml</strong></code> of the portal context.
+ </para>
+
+<programlisting>...
+ /**
+ * This method simply delegates the incoming call to the WebAppController stored in the Portal Container object
+ */
+ public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
+ try {
+ ServletConfig config = getServletConfig() ;
+ RootContainer rootContainer = RootContainer.getInstance() ;
+ PortalContainer portalContainer =
+ rootContainer.getPortalContainer(config.getServletContext().getServletContextName()) ;
+ PortalContainer.setInstance(portalContainer) ;
+ WebAppController controller =
+ (WebAppController)portalContainer.getComponentInstanceOfType(WebAppController.class) ;
+ controller.service(req, res) ;
+ } catch (Throwable t){
+ throw new ServletException(t) ;
+ } finally {
+ try {
+ PortalContainer.setInstance(null) ;
+ } catch (Exception e) {
+ log.warn("An error occured while cleaning the ThreadLocal", e);
+ }
+ }
+...
+</programlisting>
+ <para>
+ The <code><strong>WebAppController</strong></code> is also a simple class on which several handlers can be bound. We have already seen that the <code><strong>PortalRequestHandler</strong></code> was already added in the init method of the servlet.
+ </para>
+
+<programlisting>...
+/**
+ * The WebAppControler along with the PortalRequestHandler defined in the init() method of the
+ * PortalController servlet (controller.register(new PortalRequestHandler())) also add the
+ * CommandHandler object that will listen for the incoming /command path in the URL
+ *
+ * @throws Exception
+ */
+ public WebAppController() throws Exception {
+ applications_ = new HashMap<String, Application>() ;
+ attributes_ = new HashMap<String, Object>() ;
+ handlers_ = new HashMap<String, WebRequestHandler>() ;
+ register(new CommandHandler()) ;
+ }
+...
+</programlisting>
+ <para>
+ Then the service method - modelled according to the servlet specification is called:
+ </para>
+
+<programlisting>...
+ /**
+ * This is the first method - in the GateIn web framework - reached by incoming HTTP request, it acts like a
+ * servlet service() method
+ *
+ * According to the servlet path used the correct handler is selected and then executed.
+ *
+ * The event "exo.application.portal.start-http-request" and "exo.application.portal.end-http-request" are also sent
+ * through the ListenerService and several listeners may listen to it.
+ *
+ * Finally a WindowsInfosContainer object using a ThreadLocal (from the portlet-container product) is created
+ */
+ public void service(HttpServletRequest req, HttpServletResponse res) throws Exception {
+ WebRequestHandler handler = handlers_.get(req.getServletPath()) ;
+ if(log.isDebugEnabled()) {
+ log.debug("Servlet Path: " + req.getServletPath());
+ log.debug("Handler used for this path: " + handler);
+ }
+ if(handler!images/= null) {
+ ExoContainer portalContainer = ExoContainerContext.getCurrentContainer();
+ List<ComponentRequestLifecycle> components =
+ portalContainer.getComponentInstancesOfType(ComponentRequestLifecycle.class) ;
+ try {
+ for(ComponentRequestLifecycle component : components) {
+ component.startRequest(portalContainer);
+ }
+ WindowInfosContainer.createInstance(portalContainer, req.getSession().getId(), req.getRemoteUser());
+
+ handler.execute(this, req, res) ;
+ } finally {
+ WindowInfosContainer.setInstance(null);
+ for(ComponentRequestLifecycle component : components) {
+ try {
+ component.endRequest(portalContainer);
+ } catch (Exception e) {
+ log.warn("An error occured while calling the endRequest method", e);
+ }
+ }
+ }
+ }
+...
+</programlisting>
+ <para>
+ The handler in the portal case is the <code><strong>PortalRequestHandler</strong></code> which extends <code><strong>WebRequestHandler</strong></code> and that implement the abstract methods, mainly the execute() one.
+ </para>
+
+<programlisting>/**
+ * Created by The GateIn Platform SAS
+ * Mar 21, 2007
+ *
+ * Abstract class that one must implement if it want to provide a dedicated handler for a custom servlet path
+ *
+ * In case of portal the path is /portal but you could return your own from the getPath() method and hence the
+ * WebAppController would use your own handler
+ *
+ * The execute method is to be overideen and the buisness logic should be handled here
+ */
+abstract public class WebRequestHandler {
+
+ public void onInit(WebAppController controller) throws Exception{
+
+ }
+
+ abstract public String[] getPath() ;
+ abstract public void execute(WebAppController app, HttpServletRequest req, HttpServletResponse res) throws Exception ;
+
+ public void onDestroy(WebAppController controler) throws Exception {
+
+ }
+}
+</programlisting>
+ <para>
+ Here is the main class and the entire algorithm is described in the javadoc:
+ </para>
+
+<programlisting>/**
+ * Created by The GateIn Platform SAS
+ * Dec 9, 2006
+ *
+ * This class handle the request that target the portal paths /public and /private
+ *
+ */
+public class PortalRequestHandler extends WebRequestHandler {
+
+ protected static Log log = ExoLogger.getLogger("portal:PortalRequestHandler");
+ static String[] PATHS = {"/public", "/private"} ;
+ public String[] getPath() { return PATHS ; }
+ /**
+ * This method will handle incoming portal request. It gets a reference to the WebAppController
+ *
+ * Here are the steps done in the method:
+ *
+ * 1) set the header Cache-Control to no-cache
+ * 2) Get the PortalApplication reference from the controller
+ * 3) Create a PortalRequestContext object that is a convenient wrapper on all the request information
+ * 4) Set that context in a ThreadLocal to easily access it
+ * 5) Get the collection of ApplicationLifecycle referenced in the PortalApplication and defined in the
+ * webui-configuration.xml of the portal application
+ * 6) Call onStartRequest() on each ApplicationLifecycle object
+ * 7) Get the StateManager object from the PortalApplication (also referenced in the XML file)
+ * 8) Use the StateManager to get a reference on the root UI component: UIApplication; the method used is
+ * restoreUIRootComponent(context)
+ * 9) If the UI component is not the current one in used in the PortalContextRequest, then replace it
+ * 10) Process decode on the PortalApplication
+ * 11) Process Action on the PortalApplication
+ * 12) Process Render on the UIApplication UI component
+ * 11) call onEndRequest on all the ApplicationLifecycle
+ * 12) Release the context from the thread
+ *
+ */
+ @SuppressWarnings("unchecked")
+ public void execute(WebAppController controller, HttpServletRequest req, HttpServletResponse res) throws Exception {
+ log.debug("Session ID = " + req.getSession().getId());
+ res.setHeader("Cache-Control", "no-cache");
+
+ PortalApplication app = controller.getApplication(PortalApplication.PORTAL_APPLICATION_ID) ;
+ WebuiRequestContext context = new PortalRequestContext(app, req, res) ; ;
+ WebuiRequestContext.setCurrentInstance(context) ;
+ List<ApplicationLifecycle> lifecycles = app.getApplicationLifecycle();
+ try {
+ for(ApplicationLifecycle lifecycle : lifecycles) lifecycle.onStartRequest(app, context) ;
+ UIApplication uiApp = app.getStateManager().restoreUIRootComponent(context) ;
+ if(context.getUIApplication()!images/= uiApp) context.setUIApplication(uiApp) ;
+
+ if(uiApp!images/= null) app.processDecode(uiApp, context) ;
+
+ if(!images/context.isResponseComplete() &&!images/ context.getProcessRender()) {
+ app.processAction(uiApp, context) ;
+ }
+
+ if(!context.isResponseComplete()) uiApp.processRender(context) ;
+
+ if(uiApp!images/= null) uiApp.setLastAccessApplication(System.currentTimeMillis()) ;
+ } catch(Exception ex){
+ log.error("Error while handling request",ex);
+ } finally {
+ try {
+ for(ApplicationLifecycle lifecycle : lifecycles) lifecycle.onEndRequest(app, context) ;
+ } catch (Exception exception){
+ log.error("Error while ending request on all ApplicationLifecycle",exception);
+ }
+ WebuiRequestContext.setCurrentInstance(null) ;
+ }
+ }
+</programlisting>
+ <para>
+ The PortalRequestContext class is an important one as it is used in many places. The PortalRequestContext class wraps most of the request information. Accessing it from everywhere is quite simple as the object is stored in a ThreadLocal one, which means it bound to the current request thread. Hence a single call to WebuiRequestContext.getCurrentContext() will return the correct PortalRequestContext.
+ </para>
+ <para>
+ As you can see, the PortalRequestContext extends the WebuiRequestContext one which also extends the abstract class RequestContext. Once again this hierarchy is to abstract the type of context in use , would it be a portal or portlet one.
+ </para>
+
+<programlisting>/**
+ * Created by The GateIn Platform SAS
+ * May 7, 2006
+ *
+ * This abstract class is a wrapper on top of the request information such as the Locale in use,
+ * the application (for instance PortalApplication, PortletApplication...), an access to the JavascriptManager
+ * as well as a reference to the URLBuilder in use.
+ *
+ * It also contains a ThreadLocal object for an easy access.
+ *
+ * Context can be nested and hence a getParentAppRequestContext() is also available
+ *
+ */
+abstract public class RequestContext {
+
+ final static public String ACTION = "op";
+ private static ThreadLocal<RequestContext> tlocal_ = new ThreadLocal<RequestContext>() ;
+
+ private Application app_ ;
+ protected RequestContext parentAppRequestContext_ ;
+ private Map<String, Object> attributes ;
+
+ protected URLBuilder urlBuilder;
+
+ public RequestContext(Application app) {
+ app_ = app ;
+ }
+
+ public Application getApplication() { return app_ ; }
+
+ public Locale getLocale() { return parentAppRequestContext_.getLocale() ; }
+
+ public ResourceBundle getApplicationResourceBundle() { return null; }
+
+ abstract public String getRequestParameter(String name) ;
+ abstract public String[] getRequestParameterValues(String name) ;
+
+ public JavascriptManager getJavascriptManager() {
+ return getParentAppRequestContext().getJavascriptManager() ;
+ }
+
+ abstract public URLBuilder getURLBuilder() ;
+
+ public String getRemoteUser() { return parentAppRequestContext_.getRemoteUser() ; }
+ public boolean isUserInRole(String roleUser) { return parentAppRequestContext_.isUserInRole(roleUser) ; }
+
+
+ abstract public boolean useAjax() ;
+ public boolean getFullRender() { return true; }
+
+ public ApplicationSession getApplicationSession() {
+ throw new RuntimeException("This method is not supported");
+ }
+
+ public Writer getWriter() throws Exception { return parentAppRequestContext_.getWriter() ; }
+
+ final public Object getAttribute(String name) {
+ if(attributes == null) return null ;
+ return attributes.get(name) ;
+ }
+
+ final public void setAttribute(String name, Object value) {
+ if(attributes == null) attributes = new HashMap<String, Object>() ;
+ attributes.put(name, value) ;
+ }
+
+ final public Object getAttribute(Class type) { return getAttribute(type.getName()) ; }
+ final public void setAttribute(Class type, Object value) { setAttribute(type.getName(), value) ; }
+
+ public RequestContext getParentAppRequestContext() { return parentAppRequestContext_ ; }
+ public void setParentAppRequestContext(RequestContext context) { parentAppRequestContext_ = context ; }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends RequestContext> T getCurrentInstance() { return (T)tlocal_.get() ; }
+ public static void setCurrentInstance(RequestContext ctx) { tlocal_.set(ctx) ; }
+}
+</programlisting>
+ <para>
+ The WebuiRequestContext abstract class extends the RequestContext one and adds method for a Web environment such as accesses to the request and response objects or a list of components to update when using an Ajax call. More in the following header of the class:
+ </para>
+
+<programlisting>/**
+ * Created by The GateIn Platform SAS
+ * May 7, 2006
+ *
+ * The main class to manage the request context in a webui environment
+ *
+ * It adds:
+ * - some access to the root UI component (UIApplication)
+ * - access to the request and response objects
+ * - information about the current state of the request
+ * - the list of object to be updated in an AJAX way
+ * - an access to the ResourceResolver bound to an uri scheme
+ * - the reference on the StateManager object
+ */
+abstract public class WebuiRequestContext extends RequestContext {
+
+ protected UIApplication uiApplication_ ;
+ protected String sessionId_ ;
+ protected ResourceBundle appRes_ ;
+ private StateManager stateManager_ ;
+ private boolean responseComplete_ = false ;
+ private boolean processRender_ = false ;
+ private Throwable executionError_ ;
+ private ArrayList<UIComponent> uicomponentToUpdateByAjax ;
+
+ public WebuiRequestContext(Application app) {
+ super(app) ;
+ }
+
+ public String getSessionId() { return sessionId_ ; }
+ protected void setSessionId(String id) { sessionId_ = id ;}
+
+ @SuppressWarnings("unchecked")
+ public UIApplication getUIApplication() { return uiApplication_ ; }
+
+ public void setUIApplication(UIApplication uiApplication) throws Exception {
+ uiApplication_ = uiApplication ;
+ appRes_ = getApplication().getResourceBundle(uiApplication.getLocale()) ;
+ }
+
+ public Locale getLocale() { return uiApplication_.getLocale() ;}
+
+ public ResourceBundle getApplicationResourceBundle() { return appRes_ ; }
+
+ public String getActionParameterName() { return WebuiRequestContext.ACTION ; }
+
+ public String getUIComponentIdParameterName() { return UIComponent.UICOMPONENT; }
+
+ abstract public String getRequestContextPath() ;
+
+ abstract public <T> T getRequest() throws Exception ;
+
+ abstract public <T> T getResponse() throws Exception ;
+
+ public Throwable getExecutionError() { return executionError_ ; }
+
+ public List<UIComponent> getUIComponentToUpdateByAjax() { return uicomponentToUpdateByAjax ; }
+
+ public boolean isResponseComplete() { return responseComplete_ ;}
+
+ public void setResponseComplete(boolean b) { responseComplete_ = b ; }
+
+ public boolean getProcessRender() { return processRender_ ;}
+
+ public void setProcessRender(boolean b) { processRender_ = b; }
+
+ public void addUIComponentToUpdateByAjax(UIComponent uicomponent) {
+ if(uicomponentToUpdateByAjax == null) {
+ uicomponentToUpdateByAjax = new ArrayList<UIComponent>() ;
+ }
+ uicomponentToUpdateByAjax.add(uicomponent) ;
+ }
+
+ public ResourceResolver getResourceResolver(String uri) {
+ Application app = getApplication() ;
+ while(app!images/= null) {
+ ApplicationResourceResolver appResolver = app.getResourceResolver() ;
+ ResourceResolver resolver = appResolver.getResourceResolver(uri) ;
+ if(resolver !images/= null) return resolver ;
+ RequestContext pcontext = getParentAppRequestContext() ;
+ if(pcontext!images/= null) app = pcontext.getApplication() ;
+ else app =null ;
+ }
+ return null ;
+ }
+
+ public StateManager getStateManager() { return stateManager_; }
+ public void setStateManager(StateManager manager) { stateManager_ = manager ; }
+}
+</programlisting>
+ <para>
+ The PortalRequestContext mainly implements the abstract method already shown and only add few ones such as a reference to the portal owner or some information on the current navigation node path and the state of the portal (PUBLIC or PRIVATE ones)
+ </para>
+ <para>
+ The PortalRequestHandler then tries to restore the UI component tree by calling the method restoreUIRootComponent(). The first time, there is nothing to restore and in that case the following part of code in the method is used:
+ </para>
+
+<programlisting> if(state == null) {
+ synchronized(uiApplications) {
+ ConfigurationManager cmanager = app.getConfigurationManager() ;
+ String uirootClass = cmanager.getApplication().getUIRootComponent() ;
+ Class type = Thread.currentThread().getContextClassLoader().loadClass(uirootClass) ;
+ UserPortalConfig config = getUserPortalConfig(pcontext) ;
+ if(config == null) {
+ HttpServletResponse response = pcontext.getResponse();
+ response.sendRedirect("/portal/portal-warning.html");
+ pcontext.setResponseComplete(true);
+ return null;
+ }
+ pcontext.setAttribute(UserPortalConfig.class, config);
+ UIPortalApplication uiApplication =
+ (UIPortalApplication)app.createUIComponent(type, config.getPortalConfig().getFactoryId(), null, context) ;
+ state = new PortalApplicationState(uiApplication, pcontext.getAccessPath()) ;
+ uiApplications.put(context.getSessionId(), state) ;
+ PortalContainer pcontainer = (PortalContainer) app.getApplicationServiceContainer() ;
+ pcontainer.createSessionContainer(context.getSessionId(), uiApplication.getOwner()) ;
+ }
+ }
+</programlisting>
+ <para>
+ The configuration manager object bound to the PortalApplication one is used to get the type for the root component which is then instanciated. the UserPortalConfig object - which is wrapper around the portal information for a given user - is also used and stored as an attribute in the PortalRequestContext. The UIPortalApplication is then created using the method createUIComponent() that is responsible of instanciating the component but also to configure it.
+ </para>
+
+<programlisting> public <T extends UIComponent> T createUIComponent(Class<T> type, String configId, String id, WebuiRequestContext context) throws Exception{
+ Component config = configManager_.getComponentConfig(type, configId) ;
+ if(config == null) {
+ throw new Exception("Cannot find the configuration for the component " + type.getName() + ", configId " +configId) ;
+ }
+ T uicomponent = Util.createObject(type, config.getInitParams());
+ uicomponent.setComponentConfig(id, config) ;
+ config.getUIComponentLifecycle().init(uicomponent, context) ;
+ return type.cast(uicomponent) ;
+ }
+</programlisting>
+ <para>
+ The ConfigurationManager method getComponentConfig() returns the Component object filled, it is a wrapper that contains all the information on the parameters for the class. Annotations are used to configure the instance as shown here:
+ </para>
+
+<programlisting>@ComponentConfigs({
+ @ComponentConfig (
+ lifecycle = UIPortalApplicationLifecycle.class,
+ template = "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl",
+ initParams = @ParamConfig(name = "public.showControlWorkspace", value = "true" )
+ ),
+ @ComponentConfig (
+ id = "office" ,
+ lifecycle = UIPortalApplicationLifecycle.class,
+ template = "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl",
+ initParams = @ParamConfig( name = "public.showControlWorkspace", value = "false" )
+ )
+})
+</programlisting>
+ <para>
+ The processDecode() method of the UIPortalApplication is doing 3 actions:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ if the nodePath is null (case of the first request) a call to super.processDecode(context) is made and we end the method here
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ if the nodePath exist but is equals to the current one then we also call super and stops here
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ if the requested nodePath is not equals to the current one , then an event of type PageNodeEvent.CHANGE<emphasis>PAGE</emphasis>NODE is sent to the asociated EventListener; a call to super is then done
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The first case it simply does nothing. Note that the super.processDecode() goes up to the UIComponent which also calls the processDecode() method on the Lifecycle object that can be associated with the UIComponent
+ </para>
+ <para>
+ The processAction() method of the UIPortalApplication is then called, as there is no method in the object itself it will call the processAction() of the UIPortalApplicationLifecycle bound to the UI component:
+ </para>
+
+<programlisting> public void processAction(UIComponent uicomponent, WebuiRequestContext context) throws Exception {
+ UIPortalApplication uiApp = (UIPortalApplication) uicomponent ;
+ String componentId = context.getRequestParameter(context.getUIComponentIdParameterName()) ;
+ if(componentId == null) return;
+ UIComponent uiTarget = uiApp.findComponentById(componentId);
+ if(uiTarget == null) return ;
+ if(uiTarget == uicomponent) super.processAction(uicomponent, context) ;
+ uiTarget.processAction(context) ;
+ }
+</programlisting>
+ <para>
+ If no uicomponent object is targeted, which is the case the first time (unless a bookmarked link is used) then nothing is done. Otherwise, the targeted component is extracted and a call of its processAction() method is executed.
+ </para>
+ <para>
+ Then it is time to render the content and this is done inside the processRender() method. The method of the UIPortalApplication is shown here and it is the one that handles either full portal generation or AJAX request:
+ </para>
+
+<programlisting> /**
+ * The processrender() method handles the creation of the returned HTML either for a full
+ * page render or in the case of an AJAX call
+ *
+ * The first request, Ajax is not enabled (means no ajaxRequest parameter in the request) and
+ * hence the super.processRender() method is called. This will hence call the processrender() of
+ * the Lifecycle object as this method is not overidden in UIPortalApplicationLifecycle. There we
+ * simply render the bounded template (groovy usually). Note that bounded template are also defined
+ * in component annotations, so for the current class it is UIPortalApplication.gtmpl
+ *
+ * On second calls, request have the "ajaxRequest" parameter set to true in the URL. In that case
+ * the algorithm is a bit more complex:
+ *
+ * a) The list of components that should be updated is extracted using the
+ * context.getUIComponentToUpdateByAjax() method. That list was setup during the process action
+ * phase
+ * b) Portlets and other UI components to update are split in 2 different lists
+ * c) Portlets full content are returned and set with the tag <div class="PortalResponse">
+ * d) Block to updates (which are UI components) are set within
+ * the <div class="PortalResponseData"> tag
+ * e) Then the scripts and the skins to reload are set in the <div class="PortalResponseScript">
+ *
+ */
+ public void processRender(WebuiRequestContext context) throws Exception {
+ Writer w = context.getWriter() ;
+ if(!context.useAjax()) {
+ super.processRender(context) ;
+ } else {
+ PortalRequestContext pcontext = (PortalRequestContext)context;
+ List<UIComponent> list = context.getUIComponentToUpdateByAjax() ;
+ List<UIPortlet> uiPortlets = new ArrayList<UIPortlet>(3);
+ List<UIComponent> uiDataComponents = new ArrayList<UIComponent>(5);
+ if(list!images/= null) {
+ for(UIComponent uicomponent : list) {
+ if(uicomponent instanceof UIPortlet) uiPortlets.add((UIPortlet)uicomponent) ;
+ else uiDataComponents.add(uicomponent) ;
+ }
+ }
+ w.write("<div class=\"PortalResponse\">") ;
+ if(!context.getFullRender()) {
+ for(UIPortlet uiPortlet : uiPortlets) {
+ uiPortlet.processRender(context) ;
+ }
+ }
+ w. write("<div class=\"PortalResponseData\">");
+ for(UIComponent uicomponent : uiDataComponents) {
+ renderBlockToUpdate(uicomponent, context, w) ;
+ }
+ String skin = getAddSkinScript(list);
+ w. write("</div>");
+ w. write("<div class=\"PortalResponseScript\">");
+ w. write(pcontext.getJavascriptManager().getJavascript());
+ w. write("GateIn.core.Browser.onLoad();\n");
+ w. write(pcontext.getJavascriptManager().getCustomizedOnLoadScript()) ;
+ if(skin!images/= null){
+ w. write(skin) ;
+ }
+ w. write("</div>") ;
+ w.write("</div>") ;
+ }
+ }
+</programlisting>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Right_To_Left_Framework.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Right_To_Left_Framework.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Right_To_Left_Framework.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,168 @@
+<?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-RTL_Right_To_Left_Framework">
+ <!--
+
+ 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>RTL (Right To Left) Framework</title>
+ <section id="sect-Reference_Guide-RTL_Right_To_Left_Framework-Overview">
+ <title>Overview</title>
+ <para>
+ The RTL framework (Right-To-Left framework) provides a set of tools that can be leveraged by the user interface components to handle directionality gracefully.
+ </para>
+ <para>
+ <object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip<emphasis>id=2870309&server=vimeo.com&show</emphasis>title=1&show<emphasis>byline=1&show</emphasis>portrait=0&color=&fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip<emphasis>id=2870309&server=vimeo.com&show</emphasis>title=1&show<emphasis>byline=1&show</emphasis>portrait=0&color=&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/">GateIn Portal: RTL - Arabic support</a> from <a href="http://vimeo.com/user896168">Benjamin Mestrallet</a> on <a href="http://vimeo.com">Vimeo</a>.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-RTL_Right_To_Left_Framework-Direction">
+ <title>Direction</title>
+ <para>
+ The orientation depends on the current locale and during a portal request the current orientation is made available by various means. The orientation is a Java 5 enum that provides a set of functionalities:
+ </para>
+
+<programlisting>
+ LT, // Western Europe
+ RT, // Middle East (Arabic, Hebrew)
+ TL, // Japanese, Chinese, Korean
+ TR; // Mongolian
+ public boolean isLT() { ... }
+ public boolean isRT() { ... }
+ public boolean isTL() { ... }
+ public boolean isTR() { ... }
+}{code}
+The object defining the current Orientation for the current request is the UIPortalApplication. However it should be accessed at runtime using the RequestContext that delegates to the UIPortalApplication. In the case of a PortalRequestContext it is a direct delegate as the PortalRequestContext has a reference to the current UIPortalApplication. In case of a different context such as the PortletRequestContext, it delegates to the parent context given the fact that the root RequestContext is always a PortalRequestContext.
+h1. Usage in different layers
+h2. Java
+Orientation is obtained from the RequestContext:
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-RTL_Right_To_Left_Framework-Groovy_templates">
+ <title>Groovy templates</title>
+ <para>
+ Orientation is obtained from implicit variables defined by the groovy binding context:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ orientation : the current orientation as an Orientation
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ isLT : the value of orientation.isLT()
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ isRT : the value of orientation.isRT()
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ dir : the string ltr if the orientation is LT or the string rtl if the orientation is RT
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-RTL_Right_To_Left_Framework-Stylesheet">
+ <title>Stylesheet</title>
+ <para>
+ The skin service handles stylesheet rewriting to accommodate the orientation. It works by appending -lt or -rt to the stylesheet name. For instance <emphasis role="bold">/web/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet-rt.css</emphasis> will return the same stylesheet as <emphasis role="bold">/web/skin/portal/webui/component/UIFooterPortlet/DefaultStylesheet.css</emphasis> but processed for the RT orientation. Obviously the -lt suffix is optional.
+ </para>
+ <para>
+ Stylesheet authors can annotate their stylesheet to create content that depends on the orientation.
+ </para>
+ <para>
+ In the example we need to use the orientation to modify the float attribute that will make the horizontal tabs either float on left or on right:
+ </para>
+
+<programlisting> float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ font-weight: bold;
+ text-align: center;
+ white-space: nowrap;
+}{code}
+The LT output will be:
+</programlisting>
+ <para>
+ float: left; /<emphasis role="bold">orientation=lt</emphasis>{/ font-weight: bold; text-align: center; white-space: nowrap; }{code}
+ </para>
+ <para>
+ The RT output will be:
+ </para>
+
+<programlisting> float: right; /* orientation=rt */
+ font-weight: bold;
+ text-align: center;
+ white-space: nowrap;
+}{code}
+In this example we need to modify the padding according to the orientation:
+</programlisting>
+ <para>
+ color: white; line-height: 24px; padding: 0px 5px 0px 0px; /<emphasis role="bold">orientation=lt</emphasis>/ padding: 0px 0px 0px 5px; /<emphasis role="bold">orientation=rt</emphasis>{/ }{code}
+ </para>
+ <para>
+ The LT output will be:
+ </para>
+
+<programlisting> color: white;
+ line-height: 24px;
+ padding: 0px 5px 0px 0px; /* orientation=lt */
+}{code}
+The RT output will be:
+</programlisting>
+ <para>
+ color: white; line-height: 24px; padding: 0px 0px 0px 5px; /<emphasis role="bold">orientation=rt</emphasis>{/ }{code}
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-RTL_Right_To_Left_Framework-Images">
+ <title>Images</title>
+ <para>
+ Sometime it is necessary to create an RT version of an image that will be used from a template or from a stylesheet. However symmetric images can be automatically generated avoiding the necessity to create a mirrored version of an image and furthermore avoiding maintenance cost.
+ </para>
+ <para>
+ The web resource filter uses the same naming pattern than the skin service does. When an image ends with the -rt suffix the portal will attempt to locate the original image and create a mirror of it. For instance requesting the image <emphasis role="bold">/GateInResources/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle-rt.gif</emphasis> returns a mirror of the image <emphasis role="bold">/GateInResources/skin/DefaultSkin/webui/component/UITabSystem/UITabs/background/NormalTabStyle.gif</emphasis> and it works perfectly because the image is symmetric.
+ </para>
+ <para>
+ Here is an example combining stylesheet and images:
+ </para>
+
+<programlisting> line-height: 24px;
+ background: url('background/NavigationTab.gif') no-repeat right top; /* orientation=lt */
+ background: url('background/NavigationTab-rt.gif') no-repeat left top; /* orientation=rt */
+ padding-right: 2px; /* orientation=lt */
+ padding-left: 2px; /* orientation=rt */
+}{code}
+h2. Client side JavaScript
+Just use the *GateIn.core.I18n* object that provides the following methods:
+* getOrientation() : returns either the string lt or rt
+* getDir() : returns either the string ltr or rtl
+* isLT() : returns true for LT
+* isRT() : returns true of RT
+</programlisting>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/Upload_Component.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/Upload_Component.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/Upload_Component.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,151 @@
+<?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-Upload_Component">
+ <!--
+
+ 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>Upload Component</title>
+ <section id="sect-Reference_Guide-Upload_Component-Overview">
+ <title>Overview</title>
+ <para>
+ In this article, you will learn how to :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ configure the Upload service
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ add a default upload size limit
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ use the Upload component in your application, with a specific upload size limit
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ clean the service when the upload finishes
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The size limit feature is available since Portal 2.5.3
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Upload_Component-Upload_Service">
+ <title>Upload Service</title>
+ <para>
+ The service is defined by the class : org.exoplatform.upload.UploadService;
+ </para>
+ <para>
+ You can configure it with the following xml code :
+ </para>
+
+<programlisting><component>
+ <type>org.exoplatform.upload.UploadService</type>
+ <init-params>
+ <value-param>
+ <name>upload.limit.size</name>
+ <description>Maximum size of the file to upload in MB</description>
+ <value>10</value>
+ </value-param>
+ </init-params>
+ </component>
+</programlisting>
+ <para>
+ As you can see, you can configure a default upload size limit for the service. The value unit is in MegaBytes. This limit will be used by default by all applications if no specific limit is set. You will see in the next chapter how to set a different limit for your application.
+ </para>
+ <para>
+ If you set the value at 0, the upload size will be unlimited.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Upload_Component-How_to_use_the_upload_component_in_your_application">
+ <title>How to use the upload component in your application</title>
+ <para>
+ To use the component, you must create an object of type org.exoplatform.webui.form.UIFormUploadInput, using one of the two available constructors :
+ </para>
+
+<programlisting>public UIFormUploadInput(String name, String bindingExpression)
+</programlisting>
+ <para>
+ or:
+ </para>
+
+<programlisting>public UIFormUploadInput(String name, String bindingExpression, int limit)
+</programlisting>
+ <para>
+ Here is an example using the second form : {code} PortletRequestContext pcontext = (PortletRequestContext)WebuiRequestContext.getCurrentInstance(); PortletPreferences portletPref = pcontext.getRequest().getPreferences(); int limitMB = Integer.parseInt(portletPref.getValue("uploadFileSizeLimitMB", "").trim()); UIFormUploadInput uiInput = new UIFormUploadInput("upload", "upload", limitMB) ;
+ </para>
+
+<programlisting>
+To get the limit from the xml configuration, you can add this piece of code in the files portlet.xml or portlet-preferences.xml :
+{code:xml}
+<preference>
+ <name>uploadFileSizeLimitMB</name>
+ <value>30</value>
+ <read-only>false</read-only>
+</preference>
+</programlisting>
+ <para>
+ Again, a 0 value means unlimited upload size, and the value unit is set in MegaBytes.
+ </para>
+ <para>
+ To get the uploaded data use the ~~getUploadDataAsStream()~~ method: {code} UIFormUploadInput input = (UIFormUploadInput)uiForm.getUIInput("upload"); InputStream inputStream = input.getUploadDataAsStream(); ... jcrData.setValue(inputStream) ; {code}
+ </para>
+ <para>
+ 1 Clean the uploaded file
+ </para>
+ <para>
+ The upload service stores a temporary file on the filesystem during the process. When the upload is finished, you must clean the service in order to :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ delete the temporary file
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ delete the classes used for the upload
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ To do that, use the ~~removeUpload()~~ method defined in the upload service, like this :
+ </para>
+
+<programlisting>UploadService uploadService = uiForm.getApplicationComponent(UploadService.class) ;
+UIFormUploadInput uiChild = uiForm.getChild(UIFormUploadInput.class) ;
+uploadService.removeUpload(uiChild.getUploadId()) ;
+</programlisting>
+ <para>
+ Be sure to get and save the file in a JCR node <emphasis role="bold">before</emphasis> you clean the service
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/development/XML_Resource_Bundles.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/development/XML_Resource_Bundles.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/development/XML_Resource_Bundles.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,103 @@
+<?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-XML_Resources_Bundles">
+ <!--
+
+ 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>XML Resources Bundles</title>
+ <section id="sect-Reference_Guide-XML_Resources_Bundles-Motivation">
+ <title>Motivation</title>
+ <para>
+ Usually resource bundles are stored in property files however as property files are plain files it raise issues with the encoding of the file. The XML resource bundle format has been developped to provide an alternative to property files.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The XML format declares the encoding of the file in the XML declaration which avoids to use the native2ascii program and mess with encoding
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Property files use the ISO 8859-1 which does not cover the full unicode charset and language such as arab would not be supported natively and require the use of escaping, leading the files to be barely maintainable
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Tooling support for XML files is better than the tooling for Java property files and usually the XML editor cope very well with the file encoding.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-XML_Resources_Bundles-Portal_support">
+ <title>Portal support</title>
+ <para>
+ In order to be loaded by the portal at runtime (actually the resource bundle service), the name of the file must be the same as a property file but instead of ending with the <emphasis role="bold">.properties</emphasis> suffix, it ends with the <emphasis role="bold">.xml</emphasis> suffix. For instance <emphasis role="bold"> AccountPortlet <emphasis role="bold">ar.xml</emphasis> instead of <emphasis>AccountPortlet</emphasis> ar.properties </emphasis> .
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-XML_Resources_Bundles-XML_format">
+ <title>XML format</title>
+ <para>
+ The XML format is very simple and has been developed based on the DRY (Don't Repeat Yourself) principle. Usually resource bundle keys are hierarchically defined and we can leverage the hierarchic nature of the XML for that purpose. Here is an example of turning a property file into an XML resource bundle file:
+ </para>
+ <para>
+ <STYLE type="text/css"> .code {width: 97%} </STYLE>
+ </para>
+
+<programlisting>UIAccountForm.tab.label.AccountInputSet = ...
+UIAccountForm.tab.label.UIUserProfileInputSet = ...
+UIAccountForm.label.Profile = ...
+UIAccountForm.label.HomeInfo= ...
+UIAccountForm.label.BusinessInfo= ...
+UIAccountForm.label.password= ...
+UIAccountForm.label.Confirmpassword= ...
+UIAccountForm.label.email= ...
+UIAccountForm.action.Reset= ...
+</programlisting>
+
+<programlisting><?xml version="1.0" encoding="UTF-8"?>
+<bundle>
+ <UIAccountForm>
+ <tab>
+ <label>
+ <AccountInputSet>...</AccountInputSet>
+ <UIUserProfileInputSet>...</UIUserProfileInputSet>
+ </label>
+ </tab>
+ <label>
+ <Profile>...</Profile>
+ <HomeInfo>...</HomeInfo>
+ <BusinessInfo>...</BusinessInfo>
+ <password>...</password>
+ <Confirmpassword>...</Confirmpassword>
+ <email>...</email>
+ </label>
+ <action>
+ <Reset>...</Reset>
+ </action>
+ </UIAccountForm>
+</bundle>
+</programlisting>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/gadgets/Gadgets.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/gadgets/Gadgets.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/gadgets/Gadgets.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,139 @@
+<?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-Gadgets">
+ <!--
+
+ 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>Gadgets</title>
+ <section id="sect-Reference_Guide-Gadgets-Overview">
+ <title>Overview</title>
+ <para>
+ An gadget is a mini web application running on a platform and you can put it in a web page. This is a small application that helps users to do some private actions.
+ </para>
+ <para>
+ GateIn Portal supports some gadgets such as: Todo gadget, Calendar gadget, Calculator gadget, Weather Forecasts, RSS Reader gadget.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Todo: This mini - application helps you to organize your day and work group.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Calendar: A cool calendar to keep track of date in style.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Calculator: This is the coolest calculator for your page.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ RSS Reader: This gadget lets you het a sneak preview of your favourite feeds around web
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Weather Forecasts: This gadget notifies you of current weather condition and gives tomorrow's forecast.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Existing_Gadgets">
+ <title>Existing Gadgets</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Liste.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Create_a_new_Gadget">
+ <title>Create a new Gadget</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/New.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Remote_Gadget">
+ <title>Remote Gadget</title>
+ <para>
+ This is the reference to a remote gadget (stock one).
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Import.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Gadget_Importing">
+ <title>Gadget Importing</title>
+ <para>
+ After referencing the gadget successfully, then import it into the local repository.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Imported.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Gadget_Web_Editing">
+ <title>Gadget Web Editing</title>
+ <para>
+ Edit it from the Web the imported Gadget to modify it:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditImportedOnline.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Gadget_IDE_Editing">
+ <title>Gadget IDE Editing</title>
+ <para>
+ Edit it from your IDE thanks to the WebDAV protocol:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/EditImportedWebDAV.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Gadgets-Dashboard_Viewing">
+ <title>Dashboard Viewing</title>
+ <para>
+ View it from the Dashboard when you drag and drop the Gadget from listing to the dashboard.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/Dashboard.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </section>
+</section>
Added: portal/trunk/docs/reference-guide/en/modules/gadgets/Setup_a_Gadget_Server.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/gadgets/Setup_a_Gadget_Server.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/gadgets/Setup_a_Gadget_Server.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,67 @@
+<?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-Setup_a_Gadget_Server">
+ <!--
+
+ 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>Setup a Gadget Server</title>
+ <section id="sect-Reference_Guide-Setup_a_Gadget_Server-Setup_virtual_servers_for_the_gadget_rendering">
+ <title>Setup virtual servers for the gadget rendering</title>
+ <para>
+ GateIn recommend you to setup 2 different virtual hosts because it's the basis of the security model of gadgets. Having the gadget running on a different domain than the container (the website that 'contains' the app), the gadget can't read / modify / do anything nasty to GateIn Portal (like adding spam messages, stealing your cookies, whatever).
+ </para>
+ <para>
+ For example you can server the portal from <emphasis role="bold">http://www.sample.com</emphasis> and the gadgets from <emphasis role="bold">http://www.samplemodules.com</emphasis>
+ </para>
+ <para>
+ To do this, we need to configure a parameter with the name is <emphasis>gadgets.hostName</emphasis>, the value is the <emphasis>path/to/gadgetServer</emphasis> in GadgetRegisteryService service like following:
+<programlisting> {code:xml} <component> <key>org.exoplatform.application.gadget.GadgetRegistryService</key> <type>org.exoplatform.application.gadget.jcr.GadgetRegistryServiceImpl</type> <init-params> <value-param> <name>gadgets.hostName</name> <description>Gadget server url</description> <value>http://localhost:8080/GateInGadgetServer/gadgets/</value> </value-param> </init-params> </component> {code}</programlisting>
+ </para>
+ <warning>
+ <title>Warning</title>
+ <para>
+ This has only been possible since Portal 2.6
+ </para>
+ </warning>
+ <para>
+ It's possible to have multiple rendering servers. That would help to balance the load across multiple servers.
+ </para>
+ <para>
+ If you still want to deploy it on the same server, make sure that it starts before anything that use the gadgets (for example the webapp GateInGadgets that use org.exoplatform.application.gadget.GadgetRegister)
+ </para>
+ <para>
+ 1 Config 1.1 Security key A file <emphasis role="bold">key.txt</emphasis> has to be generated <emphasis role="bold">for every installation of GateIn to be secure</emphasis>. This file contains a secret key used to crypt the security token used for authenticating the user. in Tomcat this file is in nix command line will create an excellent key:
+ </para>
+
+<programlisting>dd if=/dev/random bs=32 count=1 | openssl base64 > /tmp/key.txt
+</programlisting>
+ <para>
+ 1.1 Gadget proxy and concat configuration These servers have to be on the same domain as the gadget server. You can configure it in:
+<programlisting>{code}
+{, "expires": "86400", "proxy-url": "http://localhost:8080/GateInGadgetServer/gadgets/proxy?url=", "concat-url": "http://localhost:8080/GateInGadgetServer/gadgets/concat?"
+}{code}</programlisting>
+ </para>
+ <para>
+ 1.1 Proxy if your server is behind a proxy and you want to allow external gadgets, you should configure the proxy of your JVM adding this code at the begining. {code}-Dhttp.proxyHost=proxyhostURL -Dhttp.proxyPort=proxyPortNumber -Dhttp.proxyUser=someUserName -Dhttp.proxyPassword=somePassword {code}
+ </para>
+ </section>
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/portlets/AJAX_in_GateIn_Framework.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/portlets/AJAX_in_GateIn_Framework.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/portlets/AJAX_in_GateIn_Framework.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,395 @@
+<?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-AJAX_in_GateIn_Framework">
+ <!--
+
+ 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>AJAX in GateIn Framework</title>
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-Overview">
+ <title>Overview</title>
+ <para>
+ It is very easy to create and manage Ajax calls in our framework. Just a few lines to write in your template file and your java class. For simple Ajax update of a component, you don't even have to write any line of JavaScript.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-Portlet_Preparation">
+ <title>Portlet Preparation</title>
+ <para>
+ Our portlets can use specific <code>ActionListener</code>s to receive and process Ajax calls. To do that, you must create an inner static class named following this convention : action name followed by ActionListener
+ </para>
+ <para>
+ Example : <code>ParentClass</code> is the class in which you are writing.
+ </para>
+
+<programlisting>static public class SaveActionListener extends EventListener<ParentClass>
+</programlisting>
+ <para>
+ Don't forget to declare this listener in the configuration of your portlet, with this :
+ </para>
+
+<programlisting>listeners = ParentClass.SaveActionListener.class{code}
+</programlisting>
+ <para>
+ in the correct annotation <code>ComponentConfig</code>, <code>EventConfig</code>, etc.,
+ </para>
+ <para>
+ For example, the configuration of <code><strong>UIAccountForm</strong></code>:
+ </para>
+
+<programlisting>...
+@ComponentConfig(
+ lifecycle = UIFormLifecycle.class,
+ template = "system:/groovy/webui/form/UIFormTabPane.gtmpl",
+ initParams = {
+ @ParamConfig(
+ name = "AccountTemplateConfigOption",
+ value = "app:/WEB-INF/conf/uiconf/account/webui/component/model/AccountTemplateConfigOption.groovy"
+ ),
+ @ParamConfig(
+ name = "help.UIAccountFormQuickHelp",
+ value = "app:/WEB-INF/conf/uiconf/account/webui/component/model/UIAccountFormQuickHelp.xhtml"
+ )
+ },
+ events = {
+ @EventConfig(listeners = UIAccountForm.SaveActionListener.class ),
+ @EventConfig(listeners = UIAccountForm.ResetActionListener.class, phase = Phase.DECODE),
+ @EventConfig(listeners = UIAccountForm.SearchUserActionListener.class, phase = Phase.DECODE)
+ }
+ )
+...
+</programlisting>
+ <para>
+ Inside this class, you will have to create an <code>execute</code> method like this :
+ </para>
+
+<programlisting>public void execute(Event<ParentClass> event) throws Exception
+</programlisting>
+ <para>
+ This method is called every time the listener gets an event from the client, hence you can process this event in it, using the {style:type=span|font-family=courier new,courier}event {style}attibute. Use it to get parameters from a form in your client, to modify the status of your portlet, etc.,
+ </para>
+ <para>
+ Possible ways to use the event attribute : {code}
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ String value = event.getRequestContext().getRequestParameter("name"); // to get a value from a form
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ParentClass parent = event.getSource(); // to get the parent object (the portlet that threw and caugth the event)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ UIMyComponent portal = parent.getAncestorOfType(UIMyComponent.class); // to get any node in the hierarchy of UIComponents {code}
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ If your action has to update an element on your client's interface, you must call <emphasis role="bold">addUIComponentToUpdateByAjax()</emphasis> at the end of the <code>execute</code> method:
+ </para>
+
+<programlisting>event.getRequestContext().addUIComponentToUpdateByAjax(uicomponent) ;
+</programlisting>
+ <para>
+ The target component must be provided as parameter (the component that will be updated). We will come back on this later.
+ </para>
+ <para>
+ You must create one inner action listener class for each Ajax call you want to handle on this portlet. All these classes must be declared in the configuration annotations of the main class, otherwise you will get an error.
+ </para>
+ <para>
+ It's done, your portlet is ready to accept Ajax calls from your client.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-AJAX_in_the_Groovy_template">
+ <title>AJAX in the Groovy template</title>
+ <para>
+ Your server being configured to receive Ajax calls, you must configure the client interface to make these calls.
+ </para>
+ <para>
+ In the groovy template file associated with your portlet class (<code>ParentClass</code> here), you just have to add :
+ </para>
+
+<programlisting>uicomponent.event("YourOperation"); // YourOperation is the same as in the ActionListener class (Save in our example above)
+</programlisting>
+ <para>
+ in a groovy code block. The event function will create an url starting with {style:type=span|font-family=courier new,courier}javascript:{style} so you have to make sure this code can be executed in your environment.
+ </para>
+ <para>
+ If your operation must update the content of a component, you have to make sure that the target component is well rendered. Basically, just type this :
+ </para>
+
+<programlisting>uicomponent.renderChild(UITargetComponent.class) ;
+</programlisting>
+ <para>
+ in a groovy code block. <code>UITargetComponent</code> is the class of the component that will be updated when
+ </para>
+
+<programlisting>event.getRequestContext().addUIComponentToUpdateByAjax(uicomponent) ;
+</programlisting>
+ <para>
+ is called. Hence, <code>uicomponent</code> must be of type <code>UITargetComponent</code>. If this component is not rendered by default, when the portlet loads, don't forget to set its <code>rendered</code> attribute to false :
+ </para>
+
+<programlisting>mycomponent.setRendered(false);
+</programlisting>
+ <para>
+ in the constructor of your portlet.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-How_JavaScript_works">
+ <title>How JavaScript works</title>
+ <para>
+ All the javascript is managed by the file GateIn.portal.PortalHttpRequest.js in the portal project.
+ </para>
+ <para>
+ In this class, you will find 4 functions/classes (detailed below):
+ </para>
+
+<programlisting>* PortletResponse
+* PortalResponse
+* AjaxRequest
+* HttpResponseHandler
+</programlisting>
+ <para>
+ and 6 functions : {code}
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ajaxGet // Calls doRequest with an url in GET mode
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxPost // Calls doRequest with an url in POST mode
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ doRequest // Creates the AjaxRequest and HttpResponseHandler objects, and lauches the request process
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxAbort // Cancels the current request
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxAsyncGetRequest // Allows to create and execute a sync or async GET request
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxRedirect // A simple javascript redirection with window.location.href {code} that are the entry points of these classes. You shouldn't have to call explicitly these functions, since the template file and the portlet class manage everything.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-PortletResponse">
+ <title>PortletResponse</title>
+ <para>
+ This class doesn't contain any method. On creation, it just gets the response elements from the xml returned by Ajax, and store them in the corresponding attributes : {code}
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ portletId
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ portletTitle
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ portletMode // View, Edit, Help or Config
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ portletState // Decode, Render
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ portletData // The updated data to put in the component
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ script //The javascript code to update the component
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ blocksToUpdate // An array containing the containers to update with this script {code}
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ You can access these attributes just by calling them from your <code>PortletResponse</code> instance.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-PortalResponse">
+ <title>PortalResponse</title>
+ <para>
+ Contains an array of <code>PortletResponse</code>s (<code>portletResponses</code>) and two other attributes : {code}
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ data // Data to update
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ script // Javascript code to update {code}
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-AjaxRequest">
+ <title>AjaxRequest</title>
+ <para>
+ By far the most important class of this file. Wraps the XMLHttpRequest object with some functions and attributes, to make it easier to use. You can find the complete documentation here : http://www.ajaxtoolbox.com/request/documentation.php
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-HttpResponseHandler">
+ <title>HttpResponseHandler</title>
+ <para>
+ This class provides methods to handle the Ajax response. {code}
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ executeScript // execute some javascript
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ updateBlocks // update some html components
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxTimeout // a function called when the timeout of the ajax call exceeds. Just cancel the request
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxResponse // creates a PortalResponse object from the data from the Ajax request
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ajaxLoading // shows the loading popup and mask layer {code}
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-Portal_Ajax_Response_Data_Structure">
+ <title>Portal Ajax Response Data Structure</title>
+
+<programlisting>{PortalResponse}
+ |
+ |--->{PortletResponse}
+ |
+ |--->{PortletResponse}
+ | |-->{portletId}
+ | |-->{portletTitle}
+ | |-->{portletMode}
+ | |-->{portletState}
+ | |
+ | |-->{Data}
+ | | |
+ | | |--->{BlockToUpdate}
+ | | | |-->{blockId}
+ | | | |-->{data}
+ | | |
+ | | |--->{BlockToUpdate}
+ | |--->{Script}
+ |
+ |--->{Data}
+ | |
+ | |--->{BlockToUpdate}
+ | | |-->{blockId}
+ | | |-->{data}
+ | |
+ | |--->{BlockToUpdate}
+ |--->{Script}
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-AJAX_in_GateIn_Framework-Manage_Several_Popups">
+ <title>Manage Several Popups</title>
+ <para>
+ If you have several actions that need to appear in a popup, you can use this technique to manage the different popup windows easily:
+ </para>
+ <para>
+ Create a <code>UIPopupAction</code> in your main portlet class:
+ </para>
+
+<programlisting>addChild(UIPopupAction.class, null, null);
+</programlisting>
+ <para>
+ and render it in your template file:
+ </para>
+
+<programlisting>uicomponent.renderChild(UIPopupAction.class) ;
+</programlisting>
+ <para>
+ By default, this just create an empty container (popup) that will receive the new content by Ajax.
+ </para>
+ <para>
+ Get this component in your action listener class, and update its content:
+ </para>
+
+<programlisting>UIPopupAction uiPopupAction = uiMainPortlet.getChild(UIPopupAction.class) ;
+uiPopupAction.activate(UIReferencesList.class, 600) ;
+</programlisting>
+ <para>
+ UIReferenceList is the component that will appear in the popup. You don't have to declare it in the main portlet class. The activate method takes care of the creation of the component, and its rendering in the popup window. See the javadoc for more information on this class.
+ </para>
+ <para>
+ Make this component updatable by Ajax:
+ </para>
+
+<programlisting>event.getRequestContext().addUIComponentToUpdateByAjax(uiPopupAction) ;
+</programlisting>
+ <para>
+ For each component that you want that component to appear in a popup window, add a action listener class and repeat the steps above with the appropriate component type.
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/portlets/Create_a_WebUI_Portlet.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/portlets/Create_a_WebUI_Portlet.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/portlets/Create_a_WebUI_Portlet.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,334 @@
+<?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-Create_a_WebUI_Portlet">
+ <!--
+
+ 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>Create a WebUI Portlet</title>
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-Overview">
+ <title>Overview</title>
+ <para>
+ This example is based on the testPortlet in portal/trunk/portlet/test.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-Configure_the_portlet">
+ <title>Configure the portlet</title>
+ <para>
+ Stuff Goes Here?
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-Folder_tree">
+ <title>Folder tree</title>
+ <para>
+ On Eclipse, create a new Java Project, and create this folder tree :
+ </para>
+ <para>
+ <pre> src | main | |- java | |- resources | |- webapp </pre>
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-pom.xml">
+ <title>pom.xml</title>
+ <para>
+ Create the pom.xml, at root level of the project, like this :
+ </para>
+
+<programlisting><project>
+ <parent>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>config</artifactId>
+ <version>trunk</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>exo.portal.portlet.testRomain</artifactId>
+ <packaging>war</packaging>
+ <version>${org.exoplatform.portal.version}</version>
+ <name>exo-portal.portlets.test Romain</name>
+ <url>http://www.exoplatform.org</url>
+ <description>Romain Test Portlet</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>exo.portal.webui.portal</artifactId>
+ <version>${org.exoplatform.portal.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>exo.portal.webui.GateIn</artifactId>
+ <version>${org.exoplatform.portal.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <finalName>testRomain</finalName>
+ </build>
+</project>
+</programlisting>
+ <para>
+ 1.1 UITestRomainPortlet.java
+ </para>
+ <para>
+ In java/testRomain/portlet/component/, we will create the UITestRomainPortlet.java file of the portlet :
+ </para>
+
+<programlisting>package testRomain.portlet.component;
+import org.exoplatform.webui.config.annotation.ComponentConfig;
+import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle;
+import org.exoplatform.webui.core.UIPortletApplication;
+//this part is configuration of the portlet, we set the path to the template groovy.
+ @ComponentConfig(
+ lifecycle = UIApplicationLifecycle.class,
+ template = "app:/groovy/testRomain/portlet/UITestRomainPortlet.gtmpl"
+ )
+public class UITestRomainPortlet extends UIPortletApplication {
+
+ public UITestRomainPortlet() throws Exception {
+ }
+}
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-testRomain.xml">
+ <title>testRomain.xml</title>
+ <para>
+ In src/main/resources/tomcat/, create a testRomain.xml file : {code} <Context path="/test" docBase="../../../GateInProjects/portal/trunk/portlet/testPortletRomain/src/main/webapp" debug="0" reloadable="true" /> {code}
+ </para>
+ <para>
+ docBase must be set to webapp path of the portlet when you are in the tomcat bin directory.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-Portlet_Groovy_Template">
+ <title>Portlet Groovy Template</title>
+ <para>
+ In src/main/webapp, create the groovy template for the portlet. The path to this file must match the path you set in the java file, in our case : groovy/testRomain/portlet/UITestRomainPortlet.gtmpl
+ </para>
+
+<programlisting><div id="<%=uicomponent.getId();%>">
+ HelloWorld!images/!!
+</div>
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-Skin_Folder">
+ <title>Skin Folder</title>
+ <para>
+ Create the folder skin in src/main/webapp. We don't fill it now, but in this folder, you can put css stylesheet and images.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-Locale_Folder">
+ <title>Locale Folder</title>
+ <para>
+ Create the folder WEB-INF/classes/locale in src/main/webapp. We don't fill it now, but in this folder, you can put language properties files. See <xref linkend="sect-Reference_Guide-Internationalization_Configuration" />.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-configuration.xml">
+ <title>configuration.xml</title>
+ <para>
+ Create the file configuration.xml in WEB-INF/conf/portlet/testPortletRomain/. Content of tag <ui-component-root> must match your package organization.
+ </para>
+
+<programlisting><webui-configuration>
+ <application>
+ <ui-component-root>testRomain.portlet.component.UITestRomainPortlet</ui-component-root>
+ <state-manager>org.exoplatform.webui.application.portlet.ParentAppStateManager</state-manager>
+ </application>
+</webui-configuration>
+</programlisting>
+ <para>
+ 1.1 portlet.xml
+ </para>
+ <para>
+ In WEB-INF, create file portlet.xml :
+ </para>
+
+<programlisting><?xml version="1.0" encoding="UTF-8"?>
+<portlet-app version="1.0" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
+ <portlet>
+ <description xml:lang="EN">Test Portlet Romain</description>
+ <portlet-name>TestRomain</portlet-name>
+ <display-name xml:lang="EN">Test Portlet Romain</display-name>
+ <portlet-class>org.exoplatform.webui.application.portlet.PortletApplicationController</portlet-class>
+ <init-param>
+ <name>webui.configuration</name>
+ <!-- must match the path to configuration file -->
+ <value>/WEB-INF/conf/portlet/testPortletRomain/configuration.xml</value>
+ </init-param>
+ <expiration-cache>0</expiration-cache>
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>help</portlet-mode>
+ </supports>
+ <supported-locale>en</supported-locale>
+ <resource-bundle>locale.testRomainPortlet</resource-bundle>
+ <portlet-info>
+ <title>TestPortletRomain</title>
+ <short-title>TestPortlet</short-title>
+ <keywords>test</keywords>
+ </portlet-info>
+ </portlet>
+</portlet-app>
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Create_a_WebUI_Portlet-web.xml">
+ <title>web.xml</title>
+ <para>
+ In WEB-INF, create file web.xml :
+ </para>
+
+<programlisting><?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+ <!-If define the Portlet Application name MUST end with .par->
+ <display-name>test</display-name>
+ <description> This application is a portlet. It can not be used outside a portal.
+ This web.xml file is mandatory in each .par archive file. </description>
+ <listener>
+ <listener-class>org.exoplatform.services.portletcontainer.impl.servlet.PortletApplicationListener</listener-class>
+ </listener>
+ <servlet>
+ <servlet-name>PortletWrapper</servlet-name>
+ <servlet-class>org.exoplatform.services.portletcontainer.impl.servlet.ServletWrapper</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>PortletWrapper</servlet-name>
+ <url-pattern>/PortletWrapper</url-pattern>
+ </servlet-mapping>
+</web-app>
+</programlisting>
+ <para>
+ 1 Use the Portlet
+ </para>
+ <para>
+ Compile your portlet, deploy it, and add it to the portal.
+ </para>
+ <para>
+ Now, we will add a button in the portlet. This button will open a popup with a message inside.
+ </para>
+ <para>
+ 1.1 Add a button In the groovy template, add this code :
+ </para>
+
+<programlisting><div class="UIAction">
+ <div class="ActionContainer">
+ <div class="ActionButton">
+ <div class="LightBlueStyle">
+ <div class="ButtonLeft">
+ <div class="ButtonRight">
+ <div class="ButtonMiddle">
+ <a href="<%=uicomponent.event("OpenPopup", "")%>">Open Popup</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+</programlisting>
+ <para>
+ 1.1 Add a listener In the java file, in @ComponentConfig, add this code :
+ </para>
+
+<programlisting>events = {
+ @EventConfig(listeners = UITestRomainPortlet.OpenPopupActionListener.class)
+}
+</programlisting>
+ <para>
+ Remark : XXXActionLister.class XXX must match the name you set for the event in the groovy.
+ </para>
+
+<programlisting>static public class OpenPopupActionListener extends EventListener<UITestRomainPortlet> {
+ public void execute(Event<UITestRomainPortlet> event) throws Exception {
+ System.out.println("HelloWorld");
+ }
+}
+</programlisting>
+ <para>
+ 1.1 Redeploy
+ </para>
+ <para>
+ Redeploy the portlet and click on the button. You will see "HelloWorld" in your console. If you don't change in the portlet, try to redeploy and reboot the tomcat server.
+ </para>
+ <para>
+ 1 Add a "HelloWorld" popup
+ </para>
+ <para>
+ Now, we will add a popup which say "HelloWorld" when you click on the button.
+ </para>
+ <para>
+ First, create the groovy template of the popup : in webapp/groovy/testRomain/portlet, create UIHelloWorldPopupContent.gtmpl :
+ </para>
+
+<programlisting><div id="<%=uicomponent.getId();%>">
+ HelloWorld in a popup!images/!!
+</div>
+</programlisting>
+ <para>
+ In java/testRomain/portlet/component, create the java file for the popup look like : {code} package testRomain.portlet.component;
+ </para>
+ <para>
+ import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.core.UIComponent; import org.exoplatform.webui.core.lifecycle.UIApplicationLifecycle;
+ </para>
+ <para>
+ @ComponentConfig( lifecycle = UIApplicationLifecycle.class, template = "app:/groovy/testRomain/portlet/UIHelloWorldPopupContent.gtmpl" )
+ </para>
+ <para>
+ public class UIHelloWorldPopupContent extends UIComponent
+ </para>
+ <para>
+ public UIHelloWorldPopupContent() throws Exception { }{ } {code}
+ </para>
+ <para>
+ In UITestRomainPortlet.java, we will create the popup at the portlet creation (in the constructor) : {code} public UITestRomainPortlet() throws Exception UIPopupWindow popup = addChild(UIPopupWindow.class, null, null); popup.setWindowSize(400, 300);
+ </para>
+ <para>
+ {UIHelloWorldPopupContent popupContent = createUIComponent(UIHelloWorldPopupContent.class, null, null); popup.setUIComponent(popupContent); popup.setRendered(false); } {code}
+ </para>
+ <para>
+ At the beginning, we set the popup not visible. As you see, we add a children to the Portlet. So, if we want to see the content of it, we must add this in UITestPortletRomain.gtmpl :
+ </para>
+
+<programlisting><% uicomponent.renderChildren(); %>
+</programlisting>
+ <para>
+ This makes the portlet generate the content of all child components.
+ </para>
+ <para>
+ Change the treatment of the event, replace the println by : {code} public static class OpenPopupActionListener extends EventListener<UITestRomainPortlet> public void execute(Event<UITestRomainPortlet> event) throws Exception { UITestRomainPortlet portlet = event.getSource(); UIPopupWindow popup = portlet.getChild(UIPopupWindow.class); popup.setRendered(true); popup.setShow(true); }{ } {code}
+ </para>
+ <para>
+ When user clicks on the button, the popup is shown.
+ </para>
+ <para>
+ Redeploy the portlet and click on the button. You will see "HelloWorld in a popup" in a popup. If you don't change in the portlet, try to redeploy and reboot the tomcat server.
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/portlets/Groovy_Templates.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/portlets/Groovy_Templates.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/portlets/Groovy_Templates.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,146 @@
+<?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-Groovy_Templates">
+ <!--
+
+ 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>Groovy Templates</title>
+ <section id="sect-Reference_Guide-Groovy_Templates-Overview">
+ <title>Overview</title>
+ <para>
+ This article gives a glance at the Groovy language, and explains how to configure the portlet and and the groovy template.
+ </para>
+ <para>
+ It's recommended to read also <xref linkend="sect-Reference_Guide-AJAX_in_GateIn_Framework" /> in order to understand better the communication between the Groovy Template and the portlet.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Groovy_Templates-Basic_structure">
+ <title>Basic structure</title>
+ <para>
+ The structure of a template is very easy :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The HTML code
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ zero or more groovy language code blocks, enclosed by <% ... %>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The HTML code in the template doesn't have to contain the <code>html</code>, or <code>body</code> tags. Hence, you can use a groovy template for a component that will be rendered in another component.
+ </para>
+ <para>
+ Example : <emphasis role="bold">UIPortalApplication.gtmpl</emphasis> template (<emphasis role="bold">/GateInProjects/portal/trunk/web/portal/src/main/webapp/groovy/portal/webui/workspace/</emphasis>)
+ </para>
+
+<programlisting><!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<%
+ import org.exoplatform.webui.core.UIComponent;
+ def currentPage = uicomponent.getCurrentPage();
+ ...
+%>
+ ...
+ <div class="$uicomponent.skin" id="UIPortalApplication">
+ <%uicomponent.renderChildren();%>
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Groovy_Templates-Groovy_language">
+ <title>Groovy language</title>
+ <para>
+ Groovy is a scripting language for Java. Here are a few examples on how to use it, but you can find more information in <ulink url="http://groovy.codehaus.org/Documentation">the full documentation</ulink>.
+ </para>
+ <para>
+ This language looks like Java a lot, so it's very easy to use. Examples :
+ </para>
+ <para>
+ Variables definition : {code} int min = 1; def totalPage = uicomponent.getAvailablePage(); String name = "uiPortlet"; categories = uicomponent.getItemCategories(); String columns = uicomponent.getColumns(); {code} Other expressions : {code} for(category in categories) { ... } // easy to use for loop for(i in min..max) { ... } // min and max are int variables println "</div>" ; println """ <div class="Item"> <div class="OverflowContainer"> """; <%=uicomponent.getToolbarStyle();%> // <%= to avoid a call of println method import org.exoplatform.portal.config.model.PageNode; {code}
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Groovy_Templates-Linking_a_portlet_with_a_template">
+ <title>Linking a portlet with a template</title>
+ <para>
+ Stuff Goes Here?
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Groovy_Templates-Portlet_configuration">
+ <title>Portlet configuration</title>
+ <para>
+ The configuration of a portlet is partly made with {style:type=span|font-family=courier new,courier}ComponentConfig {style}annotations (others are ComponentConfigs, EventConfig, etc). One of the parameters of this annotation is called {style:type=span|font-family=courier new,courier}template{style}, where you can define the path to the template file associated with this portlet.
+ </para>
+ <para>
+ To specify this parameter to your portlet, just add this statement to your configuration annotation, for example in <emphasis role="bold">/GateInProjects/portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/</emphasis> you find <emphasis role="bold">UIApplicationForm.java</emphasis>:
+ </para>
+
+<programlisting>@ComponentConfig(
+ lifecycle = UIFormLifecycle.class,
+ template = "system:/groovy/webui/form/UIFormWithTitle.gtmpl",
+ events = {
+ @EventConfig(listeners = UIApplicationForm.SaveActionListener.class),
+ @EventConfig(phase = Phase.DECODE, listeners = UIApplicationForm.CancelActionListener.class)
+ }
+)
+</programlisting>
+ <para>
+ You see that the path is in the namespace called "system", "system" is a reference to the portal webapp. In this webapp you find some reusable groovy templates, just open the folder <emphasis role="bold">/GateInProjects/portal/trunk/web/portal/src/main/webapp/groovy/webui/form/</emphasis> to see them.
+ </para>
+ <para>
+ As you want to create your own template, create a groovy file in your webbapp and refer to it. Please use the namespace "app" for refering to the same webapp as your component. GateIn always puts the component templates in a folder like "/webapp/groovy/your<emphasis>portlet</emphasis>name/webui/component".
+ </para>
+
+<programlisting>template = "app:/groovy/your_portlet_name/webui/component/your_component.gtmpl"
+</programlisting>
+ <para>
+ You can now edit your template file.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Groovy_Templates-The_template_file">
+ <title>The template file</title>
+ <para>
+ As we said before, the template file is composed of HTML code and groovy code blocks. There are a few things more that you need to know to fully link your portlet with your template.
+ </para>
+ <para>
+ If your template defines the UI of a component, you have an access to this component instance (the java object) using the variable {style:type=span|font-family=courier new,courier}uicomponent{style}. This should be the case almost all the time, but we recommend that you check that your java class inherits from UIComponent before you use this variable. With this {style:type=span|font-family=courier new,courier}uicomponent {style}variable, you can access all the attributes and functions of your component, to use them in your template. Example : UIPageIterator.gtmpl {code} <% def currentPage = uicomponent.getCurrentPage(); %> ... <a href="<%=uicomponent.event("ShowPage","$currentPage")%>" class="Icon LastTopPageIcon"><span></span></a> {code}
+ </para>
+ <para>
+ This example shows that {style:type=span|font-family=courier new,courier}uicomponent {style}can be used to make Ajax calls, thanks to the {style:type=span|font-family=courier new,courier}event {style}method. See <xref linkend="sect-Reference_Guide-AJAX_in_GateIn_Framework" /> for more details.
+ </para>
+ <para>
+ Another variable that you can use is {style:type=span|font-family=courier new,courier}{style}<emphasis>ctx. It gives access to the context in which the template is processed. Hence, you can get some elements like the request, the Javscript manager, or the resource resolver (</emphasis>ctx.appRes). Examples : {code} <% def rcontext = <emphasis>ctx.getRequestContext() ; rcontext.getJavascriptManager().importJavascript('GateIn.webui.UIPopupWindow');</emphasis>ctx.appRes(popupId + ".title."+ title); %> {code}
+ </para>
+ <para>
+ If you use your template to define the user interface of a component that includes a form, you can access the instance of UIForm in a variable named {style:type=span|font-family=courier new,courier}uiform{style}. The UIForm class provides the methods, {style:type=span|font-family=courier new,courier}begin(){style} and {style:type=span|font-family=courier new,courier}end(){style}, that write the HTML tags of the form. Your form class must inherit from <literal>UIForm</literal>, in this class you add the input elements (fields, checkboxes, lists) which you wish to use in your form. In your groovy template you can render your input elements using {style:type=span|font-family=courier new,courier}{style}{code}{ uiform.renderField(field) }{code}
+ </para>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/portlets/Portlet_Lifecycle.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/portlets/Portlet_Lifecycle.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/portlets/Portlet_Lifecycle.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,326 @@
+<?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-Portlet_Lifecycle">
+ <!--
+
+ 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>Portlet Lifecycle</title>
+ <section id="sect-Reference_Guide-Portlet_Lifecycle-Overview">
+ <title>Overview</title>
+ <para>
+ The goal of this chapter is not to talk about the Portlet API specification lifecycle but more about GateIn UI framework to easily develop portlets.
+ </para>
+ <para>
+ The web framework used here has been completely developed by GateIn and perfectly suits the portal environment, it even allows to send events from the portlet UIComponents to the Portal ones.
+ </para>
+ <para>
+ Of course using the GateIn web framework to build portlets is not necessary and any other web framework that supports portlet environment can be used. But all GateIn portlets that are part of GateIn products are developed using that framework and we provide several UI components that can be used in different abstracted contexts such as the portal itself or some portlets.
+ </para>
+ <para>
+ This chapter is not a tutorial on how to write portlets, it will go in the details of the code implementation and logic; hence it is intended for advanced developers. It is also advised to read the <xref linkend="sect-Reference_Guide-Portal_Lifecycle" /> article before as the that article explains concepts that are similar and top hierarchy classes that are shared.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Portlet_Lifecycle-Portlet_init">
+ <title>Portlet init</title>
+ <para>
+ The main entry point for configuring a portlet is in the <emphasis role="bold">portlet.xml</emphasis> file located in the portlet application WAR. Every portlet that shall be built using the GateIn web framework must reference the <emphasis role="bold">PortletApplicationController</emphasis> . The portlet configuration such as the root component is defined in a <emphasis role="bold">configuration.xml</emphasis> file. The path to this configuration.xml file is defined in the init-param "<emphasis role="bold">webui.configuration</emphasis>" of porlet.xml.
+ </para>
+
+<programlisting> <portlet>
+ <description xml:lang="EN">Content Portlet</description>
+ <portlet-name>ContentPortlet</portlet-name>
+ <display-name xml:lang="EN">Content Portlet</display-name>
+ <portlet-class>org.exoplatform.webui.application.portlet.PortletApplicationController</portlet-class>
+
+ <init-param>
+ <name>webui.configuration</name>
+ <value>/WEB-INF/conf/portlet/content/ContentPortlet/webui/configuration.xml</value>
+ </init-param>
+</programlisting>
+ <para>
+ The structure of the <emphasis role="bold">configuration.xml</emphasis> file is exactly the same as the <emphasis>webui-configuration.xml</emphasis>which we have already introduced in the <xref linkend="sect-Reference_Guide-Portal_Lifecycle" /> article. In the case of the content portlet it looks like:
+ </para>
+
+<programlisting><webui-configuration>
+ <application>
+ <ui-component-root>org.exoplatform.content.webui.component.UIContentPortlet</ui-component-root>
+ <state-manager>org.exoplatform.webui.application.portlet.ParentAppStateManager</state-manager>
+ </application>
+</webui-configuration>
+</programlisting>
+ <para>
+ The <emphasis role="bold">PortletApplicationController</emphasis> class extends the <emphasis role="bold">GenericPortlet</emphasis> class defined in the Portlet API specification.
+ </para>
+ <para>
+ All methods like <emphasis>processAction()</emphasis> or <emphasis>render()</emphasis> are delegated to the <emphasis role="bold">PortletApplication</emphasis>. The creation and caching inside the <emphasis role="bold">WebController</emphasis> object is described in the following method:
+ </para>
+
+<programlisting> /**
+ * try to obtain the PortletApplication from the WebAppController.
+ *
+ * If it does not exist a new PortletApplication object is created, init and cached in the
+ * controller
+ */
+ private PortletApplication getPortletApplication() throws Exception {
+ PortalContainer container = PortalContainer.getInstance() ;
+ WebAppController controller =
+ (WebAppController)container.getComponentInstanceOfType(WebAppController.class) ;
+ PortletApplication application = controller.getApplication(applicationId_) ;
+ if(application == null) {
+ application = new PortletApplication(getPortletConfig()) ;
+ application.onInit() ;
+ controller.addApplication(application) ;
+ }
+ return application ;
+ }
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Portlet_Lifecycle-Portlet_request_handler">
+ <title>Portlet request handler</title>
+ <para>
+ When a portlet, that is deployed in GateIn Portal, is using the GateIn web framework then all methods calls go through the <emphasis role="bold">PortletApplication</emphasis> object which extends the <emphasis role="bold">WebuiApplication</emphasis>.
+ </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Portlet_Lifecycle-ProcessAction_phase">
+ <title>ProcessAction phase</title>
+ <para>
+ The code of the method in PortletApplication is described here. The business logic is shown in the javadoc:
+ </para>
+
+<programlisting> /**
+ * The processAction() method is the one modelled according to the Portlet API specification
+ *
+ * The process is quite simple and here are te different steps done in the method:
+ *
+ * 1) The current instance of the WebuiRequestContext (stored in a ThreadLocal in the class) is referenced
+ * 2) A new request context of type PortletRequestContext (which extends the class WebuiRequestContext) is
+ * created as a child of the current context instance
+ * 3) The new context is place inside the ThreadLocal and hence overides its parent one there,
+ * only for the portlet request lifeciclye
+ * 4) The method onStartRequest() is called in all the ApplicationLifecycle objects referenced in the webui
+ * configuration XML file
+ * 5) The StateManager object (in case of portlet it is an object of type ParentAppStateManager) is used to get the RootComponent
+ * also referenced in the XML configuration file
+ * 6) The methods processDecode(UIApplication, WebuiRequestContext) and processAction(UIApplication, WebuiRequestContext)
+ * are then called
+ * 7) Finally, a flag, to tell that the processAction phase was done, in the context is set to true and the parent
+ * context is restored in the Threadlocal
+ */
+ public void processAction(ActionRequest req, ActionResponse res) throws Exception {
+ WebuiRequestContext parentAppRequestContext = WebuiRequestContext.getCurrentInstance() ;
+ PortletRequestContext context = createRequestContext(req, res, parentAppRequestContext) ;
+ WebuiRequestContext.setCurrentInstance(context) ;
+ try {
+ for(ApplicationLifecycle lifecycle : getApplicationLifecycle()) {
+ lifecycle.onStartRequest(this, context) ;
+ }
+ UIApplication uiApp = getStateManager().restoreUIRootComponent(context) ;
+ context.setUIApplication(uiApp) ;
+ processDecode(uiApp, context) ;
+ if(!images/context.isResponseComplete() &&!images/ context.getProcessRender()) {
+ processAction(uiApp, context) ;
+ }
+ } finally {
+ context.setProcessAction(true) ;
+ WebuiRequestContext.setCurrentInstance(parentAppRequestContext) ;
+ }
+ }
+</programlisting>
+ <para>
+ The <emphasis role="bold">PortletRequestContext</emphasis> extends <emphasis role="bold">WebuiRequestContext</emphasis> class and acts as a wrapper on top of all the portlet request information:
+ </para>
+
+<programlisting> /**
+ * In this method we try to get the PortletRequestContext object from the attribute map of the parent
+ * WebuiRequestContext.
+ *
+ * If it is not cached then we create a new instance, if it is cached then we init it with the correct
+ * writer, request and response objects
+ *
+ * We finally cache it in the parent attribute map
+ *
+ */
+ private PortletRequestContext createRequestContext(PortletRequest req, PortletResponse res,
+ WebuiRequestContext parentAppRequestContext) throws IOException {
+ String attributeName = getApplicationId() + "$PortletRequest" ;
+ PortletRequestContext context =
+ (PortletRequestContext) parentAppRequestContext.getAttribute(attributeName) ;
+ Writer w = null ;
+ if(res instanceof RenderResponse){
+ RenderResponse renderRes = (RenderResponse)res;
+ renderRes.setContentType("text/html; charset=UTF-8");
+ w = renderRes.getWriter() ;
+ }
+ if(context!images/= null) {
+ context.init(w, req, res) ;
+ } else {
+ context = new PortletRequestContext(this, w, req, res) ;
+ parentAppRequestContext.setAttribute(attributeName, context) ;
+ }
+ context.setParentAppRequestContext(parentAppRequestContext) ;
+ return context;
+ }
+</programlisting>
+ <para>
+ In the PortletApplication, the line
+ </para>
+ <para>
+ <emphasis>UIApplication uiApp = getStateManager().restoreUIRootComponent(context);</emphasis> asks the StateManager defined for the portlet to get the UI root component. In the case of a portlet the root component must extend UIPortletApplication.
+ </para>
+
+<programlisting>public class ParentAppStateManager extends StateManager {
+
+ /**
+ * This method simply delegate the call to the same method of the parent WebuiRequestContext
+ */
+ @SuppressWarnings("unchecked")
+ public UIApplication restoreUIRootComponent(WebuiRequestContext context) throws Exception {
+ WebuiRequestContext pcontext = (WebuiRequestContext) context.getParentAppRequestContext() ;
+ return pcontext.getStateManager().restoreUIRootComponent(context) ;
+ }
+</programlisting>
+ <para>
+ Hence this is the PortalStateManager that will also handle the extraction of the root component.
+ </para>
+
+<programlisting> public UIApplication restoreUIRootComponent(WebuiRequestContext context) throws Exception {
+ context.setStateManager(this) ;
+ WebuiApplication app = (WebuiApplication)context.getApplication() ;
+
+ /*
+ * If the request context is of type PortletRequestContext, we extract the parent context which will
+ * allow to get access to the PortalApplicationState object thanks to the session id used as the key for the
+ * syncronised Map uiApplications
+ */
+ if(context instanceof PortletRequestContext) {
+ WebuiRequestContext preqContext = (WebuiRequestContext) context.getParentAppRequestContext() ;
+ PortalApplicationState state = uiApplications.get(preqContext.getSessionId()) ;
+ PortletRequestContext pcontext = (PortletRequestContext) context ;
+ String key = pcontext.getApplication().getApplicationId() ;
+ UIApplication uiApplication = state.get(key) ;
+ if(uiApplication!images/= null) return uiApplication;
+ synchronized(uiApplications) {
+ ConfigurationManager cmanager = app.getConfigurationManager() ;
+ String uirootClass = cmanager.getApplication().getUIRootComponent() ;
+ Class type = Thread.currentThread().getContextClassLoader().loadClass(uirootClass) ;
+ uiApplication = (UIApplication)app.createUIComponent(type, null, null, context) ;
+ state.put(key, uiApplication) ;
+ }
+ return uiApplication ;
+ }
+</programlisting>
+ </section>
+
+ <section id="sect-Reference_Guide-Portlet_Lifecycle-Render_phase">
+ <title>Render phase</title>
+ <para>
+ The render method business logic is quite similar to processAction().
+ </para>
+
+<programlisting> /**
+ * The render method business logic is quite similar to the processAction() one.
+ *
+ * 1) A PortletRequestContext object is created (or extracted from the cache if it already exists)
+ * and initialized
+ * 2) The PortletRequestContext replaces the parent one in the WebuiRequestContext ThreadLocal object
+ * 3) If the portal has already called the portlet processAction() then the call to all onStartRequest of
+ * the ApplicationLifecycle has already been made, otherwise we call them
+ * 4) The ParentStateManager is also used to get the UIApplication, as we have seen it delegates the call
+ * to the PortalStateManager which caches the UI component root associated with the current application
+ * 5) the processRender() method of the UIPortletApplucaton is called
+ * 6) Finally, the method onEndRequest() is called on every ApplicationLifecycle referenced in the portlet
+ * configuration XML file and the parent WebuiRequestContext is restored
+ *
+ */
+ public void render(RenderRequest req, RenderResponse res) throws Exception {
+ WebuiRequestContext parentAppRequestContext = WebuiRequestContext.getCurrentInstance() ;
+ PortletRequestContext context = createRequestContext(req, res, parentAppRequestContext) ;
+ WebuiRequestContext.setCurrentInstance(context) ;
+ try {
+ if(!context.hasProcessAction()) {
+ for(ApplicationLifecycle lifecycle : getApplicationLifecycle()) {
+ lifecycle.onStartRequest(this, context) ;
+ }
+ }
+ UIApplication uiApp = getStateManager().restoreUIRootComponent(context) ;
+ context.setUIApplication(uiApp) ;
+ if(!context.isResponseComplete()) {
+ UIPortletApplication uiPortletApp = (UIPortletApplication)uiApp;
+ uiPortletApp.processRender(this, context) ;
+ }
+ uiApp.setLastAccessApplication(System.currentTimeMillis()) ;
+ } finally {
+ try {
+ for(ApplicationLifecycle lifecycle : getApplicationLifecycle()) {
+ lifecycle.onEndRequest(this, context) ;
+ }
+ } catch (Exception exception){
+ log.error("Error while trying to call onEndRequest of the portlet ApplicationLifecycle",
+ exception);
+ }
+ WebuiRequestContext.setCurrentInstance(parentAppRequestContext) ;
+ }
+ }
+</programlisting>
+ <para>
+ The processRender() call made on the UIPortletApplication is shown now:
+ </para>
+
+<programlisting> /**
+ * The default processRender for an UIPortletApplication handles two cases:
+ *
+ * A. Ajax is used
+ * ~UWC_TOKEN_START~1255420331108~UWC_TOKEN_END~
+ * If Ajax is used and that the entire portal should not be re rendered, then an AJAX fragment is
+ * generated with information such as the portlet id, the portlet title, the portlet modes, the window
+ * states as well as the HTML for the block to render
+ *
+ * B. A full render is made
+ * ----
+ * a simple call to the method super.processRender(context) which will delegate the call to all the
+ * Lifecycle components
+ *
+ */
+ public void processRender(WebuiApplication app, WebuiRequestContext context) throws Exception {
+ WebuiRequestContext pContext = (WebuiRequestContext)context.getParentAppRequestContext();
+ if(context.useAjax() &&!images/pContext.getFullRender()) {
+ Writer w = context.getWriter() ;
+
+ Set<UIComponent> list = context.getUIComponentToUpdateByAjax() ;
+// if(list == null) list = app.getDefaultUIComponentToUpdateByAjax(context) ;
+ if(list!images/= null) {
+ if(getUIPopupMessages().hasMessage()) context.addUIComponentToUpdateByAjax(getUIPopupMessages()) ;
+ for(UIComponent uicomponent : list) {
+ renderBlockToUpdate(uicomponent, context, w) ;
+ }
+ return ;
+ }
+ }
+ super.processRender(context) ;
+ }
+</programlisting>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/portlets/Sample_Basic_Portlet.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/portlets/Sample_Basic_Portlet.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/portlets/Sample_Basic_Portlet.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,33 @@
+<?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-Sample_Basic_Portlet">
+ <!--
+
+ 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>Sample Basic Portlet</title>
+ <para>
+ This sample shows a basic 1.0 portlet.
+ </para>
+ <para>
+ Download the redirectportlet.war file in the attachment section.
+ </para>
+</section>
+
+
Added: portal/trunk/docs/reference-guide/en/modules/portlets/WebUI.xml
===================================================================
--- portal/trunk/docs/reference-guide/en/modules/portlets/WebUI.xml (rev 0)
+++ portal/trunk/docs/reference-guide/en/modules/portlets/WebUI.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,78 @@
+<?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-Web_User_Interface_WebUI">
+ <!--
+
+ 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>Web User Interface - WebUI</title>
+ <para>
+ WebUI is the name of GateIn's own webframework. GateIn Portal is built with it and also many applications available in the GateIn platform suites. In its concepts, the WebUI framework is similar to JSF as it is a component tree based framework. The key aspects of WebUI are :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Events based flow
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Components configuration by annotation
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Groovy_Templates" /> for rendering
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-AJAX_in_GateIn_Framework" /> support
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Portlet API friendly
+ </para>
+ </listitem>
+ </itemizedlist>
+ <section id="sect-Reference_Guide-Web_User_Interface_WebUI-Resources">
+ <title>Resources</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Portlet_Lifecycle" /> : GateIn portlets are built with WebUI
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Portlet_Lifecycle" />: GateIn portal itmself is a WebUI application
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ How-to <xref linkend="sect-Reference_Guide-Create_a_WebUI_Portlet" />: Learn how to write your own app with WebUI
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+</section>
+
+
Added: portal/trunk/docs/reference-guide/pom.xml
===================================================================
--- portal/trunk/docs/reference-guide/pom.xml (rev 0)
+++ portal/trunk/docs/reference-guide/pom.xml 2009-11-30 21:03:01 UTC (rev 874)
@@ -0,0 +1,89 @@
+<!--
+
+ 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.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- FIXME parent not in sync with current hierarchy -->
+ <parent>
+ <groupId>org.gatein.doc</groupId>
+ <artifactId>doc-parent</artifactId>
+ <version>1.0.0-CR1</version>
+ </parent>
+
+ <groupId>org.gatein.doc</groupId>
+ <artifactId>gatein-user-guide-en</artifactId>
+ <version>3.0.0-Beta03-SNAPSHOT</version>
+ <packaging>jdocbook</packaging>
+ <name>GateIn User Guide en</name>
+
+ <!-- TODO Remove when repositories are configured once for all -->
+ <repositories>
+ <repository>
+ <id>repository.jboss.org</id>
+ <name>JBoss Repository</name>
+ <layout>default</layout>
+ <url>http://repository.jboss.org/maven2/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <name>JBoss Snapshots Repository</name>
+ <layout>default</layout>
+ <url>http://snapshots.jboss.org/maven2/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>repository.jboss.org</id>
+ <name>JBoss Repository</name>
+ <layout>default</layout>
+ <url>http://repository.jboss.org/maven2/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ <pluginRepository>
+ <id>snapshots.jboss.org</id>
+ <name>JBoss Snapshots Repository</name>
+ <layout>default</layout>
+ <url>http://snapshots.jboss.org/maven2/</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </pluginRepository>
+ </pluginRepositories>
+</project>
15 years
gatein SVN: r873 - in components/wsrp/trunk/producer/src/main/java/org/gatein/registration: impl and 1 other directories.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2009-11-30 13:59:03 -0500 (Mon, 30 Nov 2009)
New Revision: 873
Added:
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/AbstractRegistrationPersistenceManager.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerGroupSPI.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerSPI.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/RegistrationSPI.java
Modified:
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java
Log:
- Introduced SPI classes to be able to extract an abstract RegistrationPersistenceManager that can be reused.
- Made ConsumerImpl, RegistrationImpl and ConsumerGroupImpl implement respective SPI interfaces.
Added: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/AbstractRegistrationPersistenceManager.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/AbstractRegistrationPersistenceManager.java (rev 0)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/AbstractRegistrationPersistenceManager.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -0,0 +1,162 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* 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.
+*/
+
+package org.gatein.registration;
+
+import org.gatein.common.util.ParameterValidation;
+import org.gatein.registration.spi.ConsumerGroupSPI;
+import org.gatein.registration.spi.ConsumerSPI;
+import org.gatein.registration.spi.RegistrationSPI;
+
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public abstract class AbstractRegistrationPersistenceManager implements RegistrationPersistenceManager
+{
+ public Consumer createConsumer(String consumerId, String consumerName) throws RegistrationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerName, "Consumer name", null);
+
+ ConsumerSPI consumer = internalCreateConsumer(consumerId, consumerName);
+ consumer.setStatus(RegistrationStatus.PENDING);
+ internalAddConsumer(consumer);
+
+ return consumer;
+ }
+
+ public ConsumerGroup createConsumerGroup(String name) throws RegistrationException
+ {
+ ConsumerGroup group = getConsumerGroup(name);
+ if (group != null)
+ {
+ throw new DuplicateRegistrationException("A ConsumerGroup named '" + name + "' has already been registered.");
+ }
+ else
+ {
+ group = internalCreateConsumerGroup(name);
+ internalAddConsumerGroup((ConsumerGroupSPI)group);
+ return group;
+ }
+ }
+
+ public void removeConsumerGroup(String name) throws RegistrationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "ConsumerGroup name", null);
+ if (internalRemoveConsumerGroup(name) == null)
+ {
+ throw new NoSuchRegistrationException("There is no ConsumerGroup named '" + name + "'.");
+ }
+ }
+
+ public void removeConsumer(String consumerId) throws RegistrationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
+ if (internalRemoveConsumer(consumerId) == null)
+ {
+ throw new RegistrationException("There is no Consumer with identity '" + consumerId + "'.");
+ }
+ }
+
+ public void removeRegistration(String registrationId) throws RegistrationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(registrationId, "Registration identity", null);
+
+ RegistrationSPI registration = internalRemoveRegistration(registrationId);
+ if (registration == null)
+ {
+ throw new NoSuchRegistrationException("There is no Registration with id '" + registrationId + "'");
+ }
+
+ ConsumerSPI consumer = registration.getConsumer();
+ consumer.removeRegistration(registration);
+ }
+
+ public Registration addRegistrationFor(String consumerId, Map registrationProperties) throws RegistrationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
+ ParameterValidation.throwIllegalArgExceptionIfNull(registrationProperties, "Registration properties");
+
+ ConsumerSPI consumer = getConsumerSPIById(consumerId);
+ if (consumer == null)
+ {
+ throw new NoSuchRegistrationException("There is no Consumer with identity '" + consumerId
+ + "' to add a Registration to...");
+ }
+
+ RegistrationSPI registration = internalCreateRegistration(consumer, registrationProperties);
+ consumer.addRegistration(registration);
+
+ internalAddRegistration(registration);
+
+ return registration;
+ }
+
+ public Consumer addConsumerToGroupNamed(String consumerId, String groupName) throws RegistrationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(groupName, "ConsumerGroup name", null);
+
+ ConsumerGroup group = getConsumerGroup(groupName);
+ if (group == null)
+ {
+ throw new NoSuchRegistrationException("There is no ConsumerGroup named '" + groupName
+ + "' to add a Consumer to...");
+ }
+
+ ConsumerSPI consumer = getConsumerSPIById(consumerId);
+ if (consumer == null)
+ {
+ throw new NoSuchRegistrationException("There is no Consumer with identity '" + consumerId
+ + "' to add to ConsumerGroup named '" + groupName + "'. Did you create it?");
+ }
+
+ group.addConsumer(consumer);
+
+ return consumer;
+ }
+
+ // internal methods: extension points for subclasses
+
+ protected abstract void internalAddRegistration(RegistrationSPI registration);
+
+ protected abstract RegistrationSPI internalRemoveRegistration(String registrationId);
+
+ protected abstract RegistrationSPI internalCreateRegistration(ConsumerSPI consumer, Map registrationProperties);
+
+ protected abstract void internalAddConsumer(ConsumerSPI consumer);
+
+ protected abstract ConsumerSPI internalRemoveConsumer(String consumerId);
+
+ protected abstract ConsumerSPI internalCreateConsumer(String consumerId, String consumerName);
+
+ protected abstract void internalAddConsumerGroup(ConsumerGroupSPI group);
+
+ protected abstract ConsumerGroupSPI internalRemoveConsumerGroup(String name);
+
+ protected abstract ConsumerGroupSPI internalCreateConsumerGroup(String name);
+
+ protected abstract ConsumerSPI getConsumerSPIById(String consumerId) throws RegistrationException;
+}
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java 2009-11-30 17:02:54 UTC (rev 872)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -24,10 +24,10 @@
import org.gatein.common.util.ParameterValidation;
import org.gatein.registration.Consumer;
-import org.gatein.registration.ConsumerGroup;
import org.gatein.registration.NoSuchRegistrationException;
import org.gatein.registration.RegistrationException;
import org.gatein.registration.RegistrationStatus;
+import org.gatein.registration.spi.ConsumerGroupSPI;
import java.util.Collection;
import java.util.Collections;
@@ -38,7 +38,7 @@
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision:5672 $
*/
-public class ConsumerGroupImpl implements ConsumerGroup
+public class ConsumerGroupImpl implements ConsumerGroupSPI
{
private String name;
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java 2009-11-30 17:02:54 UTC (rev 872)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -24,13 +24,14 @@
package org.gatein.registration.impl;
import org.gatein.common.util.ParameterValidation;
-import org.gatein.registration.Consumer;
import org.gatein.registration.ConsumerCapabilities;
import org.gatein.registration.ConsumerGroup;
import org.gatein.registration.Registration;
import org.gatein.registration.RegistrationException;
import org.gatein.registration.RegistrationStatus;
import org.gatein.registration.RegistrationUtils;
+import org.gatein.registration.spi.ConsumerSPI;
+import org.gatein.registration.spi.RegistrationSPI;
import java.util.Collection;
import java.util.Collections;
@@ -42,7 +43,7 @@
* @version $Revision: 8784 $
* @since 2.6
*/
-public class ConsumerImpl implements Consumer
+public class ConsumerImpl implements ConsumerSPI
{
private String name;
@@ -154,14 +155,14 @@
return group;
}
- void addRegistration(Registration registration)
+ public void addRegistration(RegistrationSPI registration)
{
ParameterValidation.throwIllegalArgExceptionIfNull(registration, "Registration");
registrations.add(registration);
}
- void removeRegistration(Registration registration) throws RegistrationException
+ public void removeRegistration(RegistrationSPI registration) throws RegistrationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(registration, "Registration");
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java 2009-11-30 17:02:54 UTC (rev 872)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -24,9 +24,10 @@
package org.gatein.registration.impl;
import org.gatein.common.util.ParameterValidation;
-import org.gatein.registration.Consumer;
import org.gatein.registration.Registration;
import org.gatein.registration.RegistrationStatus;
+import org.gatein.registration.spi.ConsumerSPI;
+import org.gatein.registration.spi.RegistrationSPI;
import javax.xml.namespace.QName;
import java.util.Collections;
@@ -38,17 +39,17 @@
* @version $Revision: 8784 $
* @since 2.6
*/
-public class RegistrationImpl implements Registration
+public class RegistrationImpl implements RegistrationSPI
{
private final String id;
- private ConsumerImpl consumer;
+ private ConsumerSPI consumer;
private RegistrationStatus status;
private Map<QName, Object> properties;
private String registrationHandle;
- public RegistrationImpl(String id, ConsumerImpl consumer, RegistrationStatus status, Map properties)
+ public RegistrationImpl(String id, ConsumerSPI consumer, RegistrationStatus status, Map properties)
{
this.id = id;
this.consumer = consumer;
@@ -71,7 +72,7 @@
return registrationHandle;
}
- public Consumer getConsumer()
+ public ConsumerSPI getConsumer()
{
return consumer;
}
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java 2009-11-30 17:02:54 UTC (rev 872)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -24,14 +24,15 @@
package org.gatein.registration.impl;
import org.gatein.common.util.ParameterValidation;
+import org.gatein.registration.AbstractRegistrationPersistenceManager;
import org.gatein.registration.Consumer;
import org.gatein.registration.ConsumerGroup;
-import org.gatein.registration.DuplicateRegistrationException;
-import org.gatein.registration.NoSuchRegistrationException;
import org.gatein.registration.Registration;
import org.gatein.registration.RegistrationException;
-import org.gatein.registration.RegistrationPersistenceManager;
import org.gatein.registration.RegistrationStatus;
+import org.gatein.registration.spi.ConsumerGroupSPI;
+import org.gatein.registration.spi.ConsumerSPI;
+import org.gatein.registration.spi.RegistrationSPI;
import java.util.Collection;
import java.util.Collections;
@@ -43,77 +44,40 @@
* @version $Revision: 8784 $
* @since 2.6
*/
-public class RegistrationPersistenceManagerImpl implements RegistrationPersistenceManager
+public class RegistrationPersistenceManagerImpl extends AbstractRegistrationPersistenceManager
{
private long lastRegistrationId;
- private Map<String, Consumer> consumers = new HashMap<String, Consumer>();
- private Map<String, ConsumerGroup> groups = new HashMap<String, ConsumerGroup>();
- private Map<String, Registration> registrations = new HashMap<String, Registration>();
+ private Map<String, ConsumerSPI> consumers = new HashMap<String, ConsumerSPI>();
+ private Map<String, ConsumerGroupSPI> groups = new HashMap<String, ConsumerGroupSPI>();
+ private Map<String, RegistrationSPI> registrations = new HashMap<String, RegistrationSPI>();
- public Consumer createConsumer(String consumerId, String consumerName) throws RegistrationException
+ public Collection<? extends Consumer> getConsumers()
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerName, "Consumer name", null);
-
- ConsumerImpl consumer = new ConsumerImpl(consumerId, consumerName);
- consumer.setStatus(RegistrationStatus.PENDING);
- internalAddConsumer(consumer);
-
- return consumer;
+ return Collections.unmodifiableCollection(consumers.values());
}
- public ConsumerGroup getConsumerGroup(String name) throws RegistrationException
+ public Collection<? extends Registration> getRegistrations()
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "ConsumerGroup name", null);
-
- return groups.get(name);
+ return Collections.unmodifiableCollection(registrations.values());
}
- public ConsumerGroup createConsumerGroup(String name) throws RegistrationException
+ public Collection<? extends ConsumerGroup> getConsumerGroups()
{
- ConsumerGroup group = getConsumerGroup(name);
- if (group != null)
- {
- throw new DuplicateRegistrationException("A ConsumerGroup named '" + name + "' has already been registered.");
- }
- else
- {
- group = new ConsumerGroupImpl(name);
- internalAddConsumerGroup(group);
- return group;
- }
+ return Collections.unmodifiableCollection(groups.values());
}
- public void removeConsumerGroup(String name) throws RegistrationException
+ public Registration getRegistration(String registrationId)
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "ConsumerGroup name", null);
- if (internalRemoveConsumerGroup(name) == null)
- {
- throw new NoSuchRegistrationException("There is no ConsumerGroup named '" + name + "'.");
- }
- }
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(registrationId, "Registration id", null);
- public void removeConsumer(String consumerId) throws RegistrationException
- {
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
- if (internalRemoveConsumer(consumerId) == null)
- {
- throw new RegistrationException("There is no Consumer with identity '" + consumerId + "'.");
- }
+ return registrations.get(registrationId);
}
- public void removeRegistration(String registrationId) throws RegistrationException
+ public ConsumerGroup getConsumerGroup(String name) throws RegistrationException
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(registrationId, "Registration identity", null);
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "ConsumerGroup name", null);
- Registration registration = internalRemoveRegistration(registrationId);
- if (registration == null)
- {
- throw new NoSuchRegistrationException("There is no Registration with id '" + registrationId + "'");
- }
-
- ConsumerImpl consumer = (ConsumerImpl)registration.getConsumer();
- consumer.removeRegistration(registration);
+ return groups.get(name);
}
public Consumer getConsumerById(String consumerId) throws RegistrationException
@@ -123,102 +87,63 @@
return consumers.get(consumerId);
}
- public Registration addRegistrationFor(String consumerId, Map registrationProperties) throws RegistrationException
+ @Override
+ protected void internalAddRegistration(RegistrationSPI registration)
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
- ParameterValidation.throwIllegalArgExceptionIfNull(registrationProperties, "Registration properties");
-
- ConsumerImpl consumer = (ConsumerImpl)getConsumerById(consumerId);
- if (consumer == null)
- {
- throw new NoSuchRegistrationException("There is no Consumer with identity '" + consumerId
- + "' to add a Registration to...");
- }
-
- RegistrationImpl registration = new RegistrationImpl("" + lastRegistrationId++, consumer,
- RegistrationStatus.PENDING, registrationProperties);
- consumer.addRegistration(registration);
-
- internalAddRegistration(registration);
-
- return registration;
+ registrations.put(registration.getId(), registration);
}
- public Consumer addConsumerToGroupNamed(String consumerId, String groupName) throws RegistrationException
+ @Override
+ protected RegistrationSPI internalRemoveRegistration(String registrationId)
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(groupName, "ConsumerGroup name", null);
-
- ConsumerGroupImpl group = (ConsumerGroupImpl)getConsumerGroup(groupName);
- if (group == null)
- {
- throw new NoSuchRegistrationException("There is no ConsumerGroup named '" + groupName
- + "' to add a Consumer to...");
- }
-
- ConsumerImpl consumer = (ConsumerImpl)getConsumerById(consumerId);
- if (consumer == null)
- {
- throw new NoSuchRegistrationException("There is no Consumer with identity '" + consumerId
- + "' to add to ConsumerGroup named '" + groupName + "'. Did you create it?");
- }
-
- group.addConsumer(consumer);
-
- return consumer;
+ return registrations.remove(registrationId);
}
- public Collection<? extends Consumer> getConsumers()
+ @Override
+ protected RegistrationSPI internalCreateRegistration(ConsumerSPI consumer, Map registrationProperties)
{
- return Collections.unmodifiableCollection(consumers.values());
+ return new RegistrationImpl("" + lastRegistrationId++, consumer, RegistrationStatus.PENDING, registrationProperties);
}
- public Collection<? extends Registration> getRegistrations()
+ @Override
+ protected void internalAddConsumer(ConsumerSPI consumer)
{
- return Collections.unmodifiableCollection(registrations.values());
+ consumers.put(consumer.getId(), consumer);
}
- public Collection<? extends ConsumerGroup> getConsumerGroups()
+ @Override
+ protected ConsumerSPI internalRemoveConsumer(String consumerId)
{
- return Collections.unmodifiableCollection(groups.values());
+ return consumers.remove(consumerId);
}
- public Registration getRegistration(String registrationId)
+ @Override
+ protected ConsumerSPI internalCreateConsumer(String consumerId, String consumerName)
{
- ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(registrationId, "Registration id", null);
-
- return registrations.get(registrationId);
+ return new ConsumerImpl(consumerId, consumerName);
}
- // internal methods: extension points for subclasses
-
- protected void internalAddRegistration(RegistrationImpl registration)
+ @Override
+ protected void internalAddConsumerGroup(ConsumerGroupSPI group)
{
- registrations.put(registration.getId(), registration);
+ groups.put(group.getName(), group);
}
- protected Registration internalRemoveRegistration(String registrationId)
+ @Override
+ protected ConsumerGroupSPI internalRemoveConsumerGroup(String name)
{
- return registrations.remove(registrationId);
+ return groups.remove(name);
}
- protected void internalAddConsumer(Consumer consumer)
+ @Override
+ protected ConsumerGroupSPI internalCreateConsumerGroup(String name)
{
- consumers.put(consumer.getId(), consumer);
+ return new ConsumerGroupImpl(name);
}
- protected Consumer internalRemoveConsumer(String consumerId)
+ @Override
+ protected ConsumerSPI getConsumerSPIById(String consumerId) throws RegistrationException
{
- return consumers.remove(consumerId);
+ return (ConsumerSPI)getConsumerById(consumerId);
}
-
- protected void internalAddConsumerGroup(ConsumerGroup group)
- {
- groups.put(group.getName(), group);
- }
-
- protected ConsumerGroup internalRemoveConsumerGroup(String name)
- {
- return groups.remove(name);
- }
}
Added: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerGroupSPI.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerGroupSPI.java (rev 0)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerGroupSPI.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -0,0 +1,33 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* 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.
+*/
+
+package org.gatein.registration.spi;
+
+import org.gatein.registration.ConsumerGroup;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public interface ConsumerGroupSPI extends ConsumerGroup
+{
+}
Added: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerSPI.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerSPI.java (rev 0)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/ConsumerSPI.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -0,0 +1,37 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* 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.
+*/
+
+package org.gatein.registration.spi;
+
+import org.gatein.registration.Consumer;
+import org.gatein.registration.RegistrationException;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public interface ConsumerSPI extends Consumer
+{
+ void removeRegistration(RegistrationSPI registration) throws RegistrationException;
+
+ void addRegistration(RegistrationSPI registration);
+}
Added: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/RegistrationSPI.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/RegistrationSPI.java (rev 0)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/spi/RegistrationSPI.java 2009-11-30 18:59:03 UTC (rev 873)
@@ -0,0 +1,34 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* 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.
+*/
+
+package org.gatein.registration.spi;
+
+import org.gatein.registration.Registration;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public interface RegistrationSPI extends Registration
+{
+ ConsumerSPI getConsumer();
+}
15 years
gatein SVN: r872 - in components/wsrp/trunk/producer/src/main/java/org/gatein/registration: impl and 1 other directory.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2009-11-30 12:02:54 -0500 (Mon, 30 Nov 2009)
New Revision: 872
Modified:
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/Consumer.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/RegistrationPersistenceManager.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java
components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java
Log:
- Encapsulated use of internal structure in RegistrationPersistenceManagerImpl to make it easier to extend it.
- Use generics.
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/Consumer.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/Consumer.java 2009-11-30 16:51:05 UTC (rev 871)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/Consumer.java 2009-11-30 17:02:54 UTC (rev 872)
@@ -63,7 +63,7 @@
* @return the consumer registrations
* @throws RegistrationException
*/
- Collection getRegistrations() throws RegistrationException;
+ Collection<? extends Registration> getRegistrations() throws RegistrationException;
/**
* Returns the group that this consumer belongs to.
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/RegistrationPersistenceManager.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/RegistrationPersistenceManager.java 2009-11-30 16:51:05 UTC (rev 871)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/RegistrationPersistenceManager.java 2009-11-30 17:02:54 UTC (rev 872)
@@ -77,13 +77,13 @@
Registration addRegistrationFor(String consumerId, Map registrationProperties) throws RegistrationException;
- Collection getConsumerGroups();
+ Collection<? extends ConsumerGroup> getConsumerGroups();
Registration getRegistration(String registrationId);
Consumer addConsumerToGroupNamed(String consumerId, String groupName) throws RegistrationException;
- Collection getConsumers();
+ Collection<? extends Consumer> getConsumers();
- Collection getRegistrations();
+ Collection<? extends Registration> getRegistrations();
}
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java 2009-11-30 16:51:05 UTC (rev 871)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerGroupImpl.java 2009-11-30 17:02:54 UTC (rev 872)
@@ -42,7 +42,7 @@
{
private String name;
- private Map consumers;
+ private Map<String, Consumer> consumers;
private RegistrationStatus status;
@@ -59,7 +59,7 @@
private void init()
{
- this.consumers = new HashMap();
+ this.consumers = new HashMap<String, Consumer>();
status = RegistrationStatus.PENDING;
}
@@ -109,7 +109,7 @@
public Consumer getConsumer(String consumerId) throws IllegalArgumentException, RegistrationException
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer name", null);
- return (Consumer)consumers.get(consumerId);
+ return consumers.get(consumerId);
}
public boolean isEmpty()
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java 2009-11-30 16:51:05 UTC (rev 871)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/ConsumerImpl.java 2009-11-30 17:02:54 UTC (rev 872)
@@ -48,7 +48,7 @@
private String name;
private String identity;
private String consumerAgent;
- private Set registrations;
+ private Set<Registration> registrations;
private RegistrationStatus status;
private ConsumerGroup group;
private ConsumerCapabilities capabilities;
@@ -71,7 +71,7 @@
private void init()
{
- registrations = new HashSet(7);
+ registrations = new HashSet<Registration>(7);
status = RegistrationStatus.PENDING;
capabilities = new ConsumerCapabilitiesImpl();
}
@@ -144,7 +144,7 @@
this.status = status;
}
- public Collection getRegistrations() throws RegistrationException
+ public Collection<Registration> getRegistrations() throws RegistrationException
{
return Collections.unmodifiableSet(registrations);
}
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java 2009-11-30 16:51:05 UTC (rev 871)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationImpl.java 2009-11-30 17:02:54 UTC (rev 872)
@@ -31,7 +31,6 @@
import javax.xml.namespace.QName;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
/**
@@ -45,7 +44,7 @@
private final String id;
private ConsumerImpl consumer;
private RegistrationStatus status;
- private Map properties;
+ private Map<QName, Object> properties;
private String registrationHandle;
@@ -54,7 +53,7 @@
this.id = id;
this.consumer = consumer;
this.status = status;
- this.properties = new HashMap(properties);
+ this.properties = new HashMap<QName, Object>(properties);
}
public String getId()
@@ -150,12 +149,10 @@
}
// check properties
- for (Iterator props = properties.entrySet().iterator(); props.hasNext();)
+ for (Map.Entry<QName, Object> entry : properties.entrySet())
{
- Map.Entry entry = (Map.Entry)props.next();
-
// we should have a 1-1 match between name/value pair
- QName name = (QName)entry.getKey();
+ QName name = entry.getKey();
if (!entry.getValue().equals(registrationProperties.get(name)))
{
return false;
Modified: components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java
===================================================================
--- components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java 2009-11-30 16:51:05 UTC (rev 871)
+++ components/wsrp/trunk/producer/src/main/java/org/gatein/registration/impl/RegistrationPersistenceManagerImpl.java 2009-11-30 17:02:54 UTC (rev 872)
@@ -46,9 +46,9 @@
public class RegistrationPersistenceManagerImpl implements RegistrationPersistenceManager
{
private long lastRegistrationId;
- private Map consumers = new HashMap();
- private Map groups = new HashMap();
- private Map registrations = new HashMap();
+ private Map<String, Consumer> consumers = new HashMap<String, Consumer>();
+ private Map<String, ConsumerGroup> groups = new HashMap<String, ConsumerGroup>();
+ private Map<String, Registration> registrations = new HashMap<String, Registration>();
public Consumer createConsumer(String consumerId, String consumerName) throws RegistrationException
{
@@ -57,7 +57,7 @@
ConsumerImpl consumer = new ConsumerImpl(consumerId, consumerName);
consumer.setStatus(RegistrationStatus.PENDING);
- consumers.put(consumerId, consumer);
+ internalAddConsumer(consumer);
return consumer;
}
@@ -66,7 +66,7 @@
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "ConsumerGroup name", null);
- return (ConsumerGroup)groups.get(name);
+ return groups.get(name);
}
public ConsumerGroup createConsumerGroup(String name) throws RegistrationException
@@ -79,7 +79,7 @@
else
{
group = new ConsumerGroupImpl(name);
- groups.put(name, group);
+ internalAddConsumerGroup(group);
return group;
}
}
@@ -87,7 +87,7 @@
public void removeConsumerGroup(String name) throws RegistrationException
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "ConsumerGroup name", null);
- if (groups.remove(name) == null)
+ if (internalRemoveConsumerGroup(name) == null)
{
throw new NoSuchRegistrationException("There is no ConsumerGroup named '" + name + "'.");
}
@@ -96,7 +96,7 @@
public void removeConsumer(String consumerId) throws RegistrationException
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
- if (consumers.remove(consumerId) == null)
+ if (internalRemoveConsumer(consumerId) == null)
{
throw new RegistrationException("There is no Consumer with identity '" + consumerId + "'.");
}
@@ -106,7 +106,7 @@
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(registrationId, "Registration identity", null);
- RegistrationImpl registration = (RegistrationImpl)registrations.get(registrationId);
+ Registration registration = internalRemoveRegistration(registrationId);
if (registration == null)
{
throw new NoSuchRegistrationException("There is no Registration with id '" + registrationId + "'");
@@ -114,14 +114,13 @@
ConsumerImpl consumer = (ConsumerImpl)registration.getConsumer();
consumer.removeRegistration(registration);
- registrations.remove(registrationId);
}
public Consumer getConsumerById(String consumerId) throws RegistrationException
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(consumerId, "Consumer identity", null);
- return (Consumer)consumers.get(consumerId);
+ return consumers.get(consumerId);
}
public Registration addRegistrationFor(String consumerId, Map registrationProperties) throws RegistrationException
@@ -140,7 +139,7 @@
RegistrationStatus.PENDING, registrationProperties);
consumer.addRegistration(registration);
- registrations.put(registration.getId(), registration);
+ internalAddRegistration(registration);
return registration;
}
@@ -169,17 +168,17 @@
return consumer;
}
- public Collection getConsumers()
+ public Collection<? extends Consumer> getConsumers()
{
return Collections.unmodifiableCollection(consumers.values());
}
- public Collection getRegistrations()
+ public Collection<? extends Registration> getRegistrations()
{
return Collections.unmodifiableCollection(registrations.values());
}
- public Collection getConsumerGroups()
+ public Collection<? extends ConsumerGroup> getConsumerGroups()
{
return Collections.unmodifiableCollection(groups.values());
}
@@ -188,6 +187,38 @@
{
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(registrationId, "Registration id", null);
- return (Registration)registrations.get(registrationId);
+ return registrations.get(registrationId);
}
+
+ // internal methods: extension points for subclasses
+
+ protected void internalAddRegistration(RegistrationImpl registration)
+ {
+ registrations.put(registration.getId(), registration);
+ }
+
+ protected Registration internalRemoveRegistration(String registrationId)
+ {
+ return registrations.remove(registrationId);
+ }
+
+ protected void internalAddConsumer(Consumer consumer)
+ {
+ consumers.put(consumer.getId(), consumer);
+ }
+
+ protected Consumer internalRemoveConsumer(String consumerId)
+ {
+ return consumers.remove(consumerId);
+ }
+
+ protected void internalAddConsumerGroup(ConsumerGroup group)
+ {
+ groups.put(group.getName(), group);
+ }
+
+ protected ConsumerGroup internalRemoveConsumerGroup(String name)
+ {
+ return groups.remove(name);
+ }
}
15 years
gatein SVN: r871 - portal/branches.
by do-not-reply@jboss.org
Author: thomas.heute(a)jboss.com
Date: 2009-11-30 11:51:05 -0500 (Mon, 30 Nov 2009)
New Revision: 871
Added:
portal/branches/EPP_5_0_0_ER01_Branch/
Log:
Creating EPP_5_0_0_ER01_Branch
15 years
gatein SVN: r866 - in components/wsrp/trunk/producer: src/test and 5 other directories.
by do-not-reply@jboss.org
Author: chris.laprun(a)jboss.com
Date: 2009-11-30 10:58:10 -0500 (Mon, 30 Nov 2009)
New Revision: 866
Added:
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/AbstractRegistrationPersistenceManagerTestCase.java
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerGroupTestCase.java
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerTestCase.java
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/DefaultRegistrationPolicyTestCase.java
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationManagerTestCase.java
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationPersistenceManagerTestCase.java
components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationTestCase.java
components/wsrp/trunk/producer/src/test/resources/
components/wsrp/trunk/producer/src/test/resources/custom-policy.xml
components/wsrp/trunk/producer/src/test/resources/extended.xml
components/wsrp/trunk/producer/src/test/resources/invalid-type.xml
components/wsrp/trunk/producer/src/test/resources/invalid1.xml
components/wsrp/trunk/producer/src/test/resources/invalid2.xml
components/wsrp/trunk/producer/src/test/resources/invalid3.xml
components/wsrp/trunk/producer/src/test/resources/minimal-registration.xml
components/wsrp/trunk/producer/src/test/resources/minimal.xml
components/wsrp/trunk/producer/src/test/resources/strict-mode.xml
components/wsrp/trunk/producer/src/test/resources/xsd/
components/wsrp/trunk/producer/src/test/resources/xsd/jboss-wsrp-producer_2_7.xsd
components/wsrp/trunk/producer/src/test/resources/xsd/xml.xsd
Modified:
components/wsrp/trunk/producer/pom.xml
components/wsrp/trunk/producer/src/test/java/org/gatein/wsrp/registration/RegistrationPropertyDescriptionTestCase.java
Log:
- Added (and updated) test cases.
Modified: components/wsrp/trunk/producer/pom.xml
===================================================================
--- components/wsrp/trunk/producer/pom.xml 2009-11-30 14:08:53 UTC (rev 865)
+++ components/wsrp/trunk/producer/pom.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -84,6 +84,10 @@
<scope>test</scope>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ </dependency>
</dependencies>
<!-- Disable some tests for now until we can find some time to work on migrating them -->
@@ -94,7 +98,7 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
- <exclude>org/gatein/wsrp/*</exclude>
+ <exclude>org/gatein/wsrp/protocol/v1/*</exclude>
</excludes>
</configuration>
</plugin>
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/AbstractRegistrationPersistenceManagerTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/AbstractRegistrationPersistenceManagerTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/AbstractRegistrationPersistenceManagerTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,431 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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. *
+ ******************************************************************************/
+package org.gatein.registration;
+
+import junit.framework.TestCase;
+import org.gatein.common.util.MapBuilder;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 9218 $
+ * @since 2.6
+ */
+public abstract class AbstractRegistrationPersistenceManagerTestCase extends TestCase
+{
+
+ /** . */
+ private Map registrationProperties;
+
+ public abstract RegistrationPersistenceManager getManager();
+
+ public void startInteraction()
+ {
+ }
+
+ public void stopInteraction()
+ {
+ }
+
+ public void setUp() throws Exception
+ {
+ registrationProperties = new HashMap();
+ registrationProperties.put(new QName("prop1"), "value1");
+ registrationProperties.put(new QName("prop2"), "value2");
+ }
+
+ protected void tearDown() throws Exception
+ {
+ registrationProperties = null;
+ }
+
+ public void testGetGroupThrowsIAE() throws Exception
+ {
+ startInteraction();
+ try
+ {
+ getManager().getConsumerGroup(null);
+ fail();
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testAddGroup() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ assertNotNull(group);
+ assertEquals("Foo", group.getName());
+ assertEquals(Collections.EMPTY_LIST, new ArrayList(group.getConsumers()));
+ stopInteraction();
+
+ // Test by retrieving the same consumer
+ startInteraction();
+ group = getManager().getConsumerGroup("Foo");
+ assertNotNull(group);
+ assertEquals("Foo", group.getName());
+ assertEquals(Collections.EMPTY_LIST, new ArrayList(group.getConsumers()));
+ stopInteraction();
+
+ // Test by retrieving the consumer list
+ startInteraction();
+ Collection groups = getManager().getConsumerGroups();
+ assertNotNull(groups);
+ assertEquals(1, groups.size());
+ group = (ConsumerGroup)groups.iterator().next();
+ assertNotNull(group);
+ assertEquals("Foo", group.getName());
+ assertEquals(Collections.EMPTY_LIST, new ArrayList(group.getConsumers()));
+ stopInteraction();
+ }
+
+ public void testAddDuplicateGroup() throws Exception
+ {
+ startInteraction();
+ getManager().createConsumerGroup("Foo");
+ try
+ {
+ getManager().createConsumerGroup("Foo");
+ fail();
+ }
+ catch (DuplicateRegistrationException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testAddGroupThrowsIAE() throws Exception
+ {
+ startInteraction();
+ try
+ {
+ getManager().createConsumerGroup(null);
+ }
+ catch (IllegalArgumentException expected)
+ {
+ assertEquals(Collections.EMPTY_SET, new HashSet(getManager().getConsumerGroups()));
+ }
+ stopInteraction();
+ }
+
+ public void testRemoveGroup() throws Exception
+ {
+ startInteraction();
+ getManager().createConsumerGroup("Foo");
+ stopInteraction();
+
+ startInteraction();
+ getManager().removeConsumerGroup("Foo");
+ assertNull(getManager().getConsumerGroup("Foo"));
+ assertEquals(Collections.EMPTY_SET, new HashSet(getManager().getConsumerGroups()));
+ stopInteraction();
+ }
+
+ public void testRemoveGroupThrowsIAE() throws Exception
+ {
+ startInteraction();
+ try
+ {
+ getManager().removeConsumerGroup(null);
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testRemoveNonExistingGroup() throws Exception
+ {
+ startInteraction();
+ try
+ {
+ getManager().removeConsumerGroup("Foo");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testGetConsumerThrowsIAE() throws Exception
+ {
+ startInteraction();
+ try
+ {
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ group.getConsumer(null);
+ fail();
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testAddConsumer() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ stopInteraction();
+
+ startInteraction();
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+ assertNotNull(consumer);
+ assertEquals("Bar", consumer.getName());
+ assertEquals(Collections.EMPTY_LIST, new ArrayList(consumer.getRegistrations()));
+ assertEquals("Foo", consumer.getGroup().getName());
+ stopInteraction();
+
+ // Test by retrieving the same consumer
+ startInteraction();
+ consumer = group.getConsumer("Bar");
+ assertNotNull(consumer);
+ assertEquals("Bar", consumer.getName());
+ assertEquals(Collections.EMPTY_LIST, new ArrayList(consumer.getRegistrations()));
+ assertEquals("Foo", consumer.getGroup().getName());
+ stopInteraction();
+
+ // Test by retrieving the consumer list
+ startInteraction();
+ Collection consumers = group.getConsumers();
+ assertNotNull(consumers);
+ assertEquals(1, consumers.size());
+ consumer = (Consumer)consumers.iterator().next();
+ assertNotNull(consumer);
+ assertEquals("Bar", consumer.getName());
+ assertEquals(Collections.EMPTY_LIST, new ArrayList(consumer.getRegistrations()));
+ assertEquals("Foo", consumer.getGroup().getName());
+ stopInteraction();
+ }
+
+ public void testAddDuplicateConsumer() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+ stopInteraction();
+
+ startInteraction();
+ try
+ {
+ group.addConsumer(consumer);
+ fail();
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testAddConsumerThrowsIAE() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ try
+ {
+ group.addConsumer(null);
+ }
+ catch (IllegalArgumentException expected)
+ {
+ assertEquals(Collections.EMPTY_SET, new HashSet(group.getConsumers()));
+ }
+ stopInteraction();
+ }
+
+ public void testRemoveConsumer() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+ group.removeConsumer(consumer);
+ assertNull(group.getConsumer("Bar"));
+ assertEquals(Collections.EMPTY_SET, new HashSet(group.getConsumers()));
+ stopInteraction();
+ }
+
+ public void testRemoveConsumerThrowsIAE() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ try
+ {
+ group.removeConsumer(null);
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testAddRegistration() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+ stopInteraction();
+
+ startInteraction();
+ consumer = getManager().getConsumerById("Bar");
+ Registration reg1 = getManager().addRegistrationFor("Bar", registrationProperties);
+ assertNotNull(reg1);
+ String regId = reg1.getId();
+ assertNotNull(regId);
+ assertEquals(consumer, reg1.getConsumer());
+ Map expectedProps = new HashMap();
+ expectedProps.put(new QName("prop1"), "value1");
+ expectedProps.put(new QName("prop2"), "value2");
+ assertEquals(expectedProps, reg1.getProperties());
+ stopInteraction();
+
+ // Retrieve it from the list of consumer registrations
+ startInteraction();
+ consumer = getManager().getConsumerById("Bar");
+ Collection registrations = consumer.getRegistrations();
+ assertNotNull(registrations);
+ assertEquals(1, registrations.size());
+ Registration reg3 = (Registration)registrations.iterator().next();
+ assertEquals(regId, reg3.getId());
+ assertEquals(consumer, reg3.getConsumer());
+ assertEquals(expectedProps, reg3.getProperties());
+ stopInteraction();
+
+ // Retrieve the same registration from the registry
+ startInteraction();
+ Registration reg2 = getManager().getRegistration(regId);
+ consumer = getManager().getConsumerById("Bar");
+ assertNotNull(reg2);
+ assertEquals(regId, reg2.getId());
+ assertEquals(consumer, reg2.getConsumer());
+ assertEquals(expectedProps, reg2.getProperties());
+ stopInteraction();
+ }
+
+ public void testAddRegistrationThrowsIAE() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+
+ try
+ {
+ getManager().addRegistrationFor(consumer.getId(), null);
+ fail();
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testRemoveRegistrationThrowsIAE() throws Exception
+ {
+ startInteraction();
+ try
+ {
+ getManager().removeRegistration(null);
+ fail();
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ stopInteraction();
+ }
+
+ public void testRemoveRegistration() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+ Registration reg = getManager().addRegistrationFor("Bar", registrationProperties);
+ String regId = reg.getId();
+ getManager().removeRegistration(regId);
+ stopInteraction();
+
+ // remove registration is the only method on RegistrationPersistenceManager that needs to "cascade"
+ // this is needed because there is no remove method on Consumer, hence the manager needs to remove the
+ // registration from its consumer since it's the only class that has access to the specific consumer impl
+ startInteraction();
+ consumer = getManager().getConsumerById("Bar");
+ Collection registrations = consumer.getRegistrations();
+ assertNotNull(registrations);
+ assertEquals(0, registrations.size());
+ stopInteraction();
+
+ //
+ startInteraction();
+ assertEquals(null, getManager().getRegistration(regId));
+ stopInteraction();
+ }
+
+ public void testBulkUpdateRegistrationProperties() throws Exception
+ {
+ startInteraction();
+ ConsumerGroup group = getManager().createConsumerGroup("Foo");
+ Consumer consumer = getManager().createConsumer("Bar", "Bar");
+ group.addConsumer(consumer);
+ getManager().addRegistrationFor("Bar", registrationProperties);
+ stopInteraction();
+
+ //
+ startInteraction();
+ consumer = getManager().getConsumerById("Bar");
+ Registration reg = (Registration)consumer.getRegistrations().iterator().next();
+ registrationProperties.remove(new QName("prop1"));
+ reg.updateProperties(registrationProperties);
+ assertEquals(Collections.singletonMap(new QName("prop2"), "value2"), reg.getProperties());
+ stopInteraction();
+
+ //
+ startInteraction();
+ consumer = getManager().getConsumerById("Bar");
+ reg = (Registration)consumer.getRegistrations().iterator().next();
+ assertEquals(Collections.singletonMap(new QName("prop2"), "value2"), reg.getProperties());
+ registrationProperties.put(new QName("prop3"), "value3");
+ reg.updateProperties(registrationProperties);
+ assertEquals(MapBuilder.hashMap().put(new QName("prop2"), "value2").put(new QName("prop3"), "value3").get(), reg.getProperties());
+ stopInteraction();
+
+ //
+ startInteraction();
+ consumer = getManager().getConsumerById("Bar");
+ reg = (Registration)consumer.getRegistrations().iterator().next();
+ assertEquals(MapBuilder.hashMap().put(new QName("prop2"), "value2").put(new QName("prop3"), "value3").get(), reg.getProperties());
+ stopInteraction();
+ }
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/AbstractRegistrationPersistenceManagerTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerGroupTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerGroupTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerGroupTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,114 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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. *
+ ******************************************************************************/
+
+package org.gatein.registration;
+
+import junit.framework.TestCase;
+import org.gatein.registration.impl.RegistrationManagerImpl;
+import org.gatein.registration.impl.RegistrationPersistenceManagerImpl;
+import org.gatein.registration.policies.DefaultRegistrationPolicy;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 8784 $
+ * @since 2.6
+ */
+public class ConsumerGroupTestCase extends TestCase
+{
+ private RegistrationManager manager;
+ private ConsumerGroup group;
+ private static final String NAME = "name";
+
+
+ protected void setUp() throws Exception
+ {
+ manager = new RegistrationManagerImpl();
+ RegistrationPolicy policy = new DefaultRegistrationPolicy();
+ manager.setPolicy(policy);
+ manager.setPersistenceManager(new RegistrationPersistenceManagerImpl());
+ policy.setManager(manager);
+ group = manager.createConsumerGroup(NAME);
+ }
+
+ public void testGetName()
+ {
+ assertEquals(NAME, group.getName());
+ }
+
+ public void testConsumersManagement() throws RegistrationException
+ {
+ assertTrue(group.isEmpty());
+ assertEquals(0, group.getConsumers().size());
+
+ Consumer c1 = manager.createConsumer("c1");
+ group.addConsumer(c1);
+ assertTrue(!group.isEmpty());
+ assertEquals(1, group.getConsumers().size());
+ assertTrue(group.contains(c1));
+ assertEquals(group, c1.getGroup());
+ assertEquals(c1, group.getConsumer(c1.getId()));
+
+ Consumer c2 = manager.createConsumer("c2");
+ group.addConsumer(c2);
+ assertEquals(2, group.getConsumers().size());
+ assertTrue(group.contains(c2));
+ assertEquals(group, c2.getGroup());
+
+ group.removeConsumer(c1);
+ assertEquals(1, group.getConsumers().size());
+ assertTrue(!group.contains(c1));
+ assertTrue(group.contains(c2));
+ assertEquals(null, c1.getGroup());
+ }
+
+ public void testAddNullConsumer() throws RegistrationException
+ {
+ try
+ {
+ group.addConsumer(null);
+ fail("Shouldn't be possible to add null consumer");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ }
+
+ public void testStatus()
+ {
+ assertEquals(RegistrationStatus.PENDING, group.getStatus());
+ group.setStatus(RegistrationStatus.VALID);
+ assertEquals(RegistrationStatus.VALID, group.getStatus());
+ }
+
+ public void testIllegalStatus()
+ {
+ try
+ {
+ group.setStatus(null);
+ fail("Shouldn't be possible to set the status to null");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ }
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerGroupTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,94 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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. *
+ ******************************************************************************/
+
+package org.gatein.registration;
+
+import junit.framework.TestCase;
+import org.gatein.registration.impl.RegistrationManagerImpl;
+import org.gatein.registration.impl.RegistrationPersistenceManagerImpl;
+import org.gatein.registration.policies.DefaultRegistrationPolicy;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 8784 $
+ * @since 2.6
+ */
+public class ConsumerTestCase extends TestCase
+{
+ private Consumer consumer;
+ private RegistrationManager manager;
+
+ protected void setUp() throws Exception
+ {
+ manager = new RegistrationManagerImpl();
+ RegistrationPolicy policy = new DefaultRegistrationPolicy();
+ manager.setPolicy(policy);
+ manager.setPersistenceManager(new RegistrationPersistenceManagerImpl());
+ policy.setManager(manager);
+ consumer = manager.createConsumer("name");
+ }
+
+ public void testGetName()
+ {
+ assertEquals("name", consumer.getName());
+ }
+
+ public void testStatus()
+ {
+ assertEquals(RegistrationStatus.PENDING, consumer.getStatus());
+
+ consumer.setStatus(RegistrationStatus.VALID);
+ assertEquals(RegistrationStatus.VALID, consumer.getStatus());
+ }
+
+ public void testIllegalStatus()
+ {
+ try
+ {
+ consumer.setStatus(null);
+ fail("Was expecting an IllegalArgumentException to be thrown on setStatus(null)");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+ }
+
+ public void testSetGroup() throws Exception
+ {
+ ConsumerGroup group = manager.createConsumerGroup("group");
+ assertTrue(!group.getConsumers().contains(consumer));
+
+ consumer.setGroup(group);
+ assertEquals(group, consumer.getGroup());
+ assertTrue(group.getConsumers().contains(consumer));
+
+ consumer.setGroup(null);
+ assertNull(consumer.getGroup());
+ assertTrue(!group.getConsumers().contains(consumer));
+ }
+
+ public void testGetIdentity() throws Exception
+ {
+ assertNotNull(consumer.getId());
+ }
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/ConsumerTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/DefaultRegistrationPolicyTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/DefaultRegistrationPolicyTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/DefaultRegistrationPolicyTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2007, Your Corporation. All Rights Reserved.
+ */
+
+package org.gatein.registration;
+
+import junit.framework.TestCase;
+import org.gatein.registration.impl.RegistrationManagerImpl;
+import org.gatein.registration.impl.RegistrationPersistenceManagerImpl;
+import org.gatein.registration.policies.DefaultRegistrationPolicy;
+import org.gatein.registration.policies.DefaultRegistrationPropertyValidator;
+import org.gatein.wsrp.registration.PropertyDescription;
+
+import javax.xml.namespace.QName;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 9180 $
+ * @since 2.6.3
+ */
+public class DefaultRegistrationPolicyTestCase extends TestCase
+{
+ DefaultRegistrationPolicy policy;
+ Map registrationProperties;
+ HashMap<QName, PropertyDescription> expectations;
+ private static final String CONSUMER = "consumer";
+ private static final QName PROP1 = new QName("prop1");
+ private static final QName PROP2 = new QName("prop2");
+ private static final QName PROP3 = new QName("prop3");
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ policy = new DefaultRegistrationPolicy();
+
+ policy.setValidator(new DefaultRegistrationPropertyValidator());
+
+ RegistrationManager manager = new RegistrationManagerImpl();
+ manager.setPolicy(policy);
+ manager.setPersistenceManager(new RegistrationPersistenceManagerImpl());
+ manager.createConsumer(CONSUMER);
+
+ policy.setManager(manager);
+
+ registrationProperties = new HashMap();
+ registrationProperties.put(PROP1, "value1");
+ registrationProperties.put(PROP2, "value2");
+
+ expectations = new HashMap<QName, PropertyDescription>();
+ policy.setExpectations(expectations);
+ }
+
+ public void testValidateRegistrationDataForNull() throws RegistrationException
+ {
+ try
+ {
+ policy.validateRegistrationDataFor(null, "foo");
+ fail("null data cannot be validated");
+ }
+ catch (IllegalArgumentException e)
+ {
+ // expected
+ }
+
+ try
+ {
+ policy.validateRegistrationDataFor(Collections.EMPTY_MAP, null);
+ fail("null data cannot be validated");
+ }
+ catch (IllegalArgumentException e)
+ {
+ // expected
+ }
+ }
+
+ public void testValidateRegistrationDataForInexistentConsumer()
+ {
+ try
+ {
+ policy.validateRegistrationDataFor(Collections.EMPTY_MAP, "foo");
+ }
+ catch (RegistrationException e)
+ {
+ fail("Should be possible to validate information for inexistent consumer (otherwise, how would we register!)");
+ }
+ }
+
+ public void testValidateRegistrationDataMissingProps()
+ {
+ expectations.put(PROP1, new TestPropertyDescription(PROP1));
+ expectations.put(PROP2, new TestPropertyDescription(PROP2));
+ expectations.put(PROP3, new TestPropertyDescription(PROP3));
+
+ try
+ {
+ policy.validateRegistrationDataFor(registrationProperties, CONSUMER);
+ fail("Missing prop3 should have been detected");
+ }
+ catch (RegistrationException e)
+ {
+ assertTrue(e.getLocalizedMessage().contains("prop3"));
+ }
+ }
+
+ public void testValidateRegistrationDataExtraProps()
+ {
+ expectations.put(PROP1, new TestPropertyDescription(PROP1));
+
+ try
+ {
+ policy.validateRegistrationDataFor(registrationProperties, CONSUMER);
+ fail("Extra prop2 should have been detected");
+ }
+ catch (RegistrationException e)
+ {
+ assertTrue(e.getLocalizedMessage().contains("prop2"));
+ }
+ }
+
+ public void testValidateRegistrationDataInvalidValue()
+ {
+ expectations.put(PROP1, new TestPropertyDescription(PROP1));
+
+ registrationProperties.remove(PROP2);
+ registrationProperties.put(PROP1, null);
+
+ try
+ {
+ policy.validateRegistrationDataFor(registrationProperties, CONSUMER);
+ fail("Should have detected null value for prop1");
+ }
+ catch (RegistrationException e)
+ {
+ assertTrue(e.getLocalizedMessage().contains("prop1"));
+ }
+ }
+
+ static class TestPropertyDescription implements PropertyDescription
+ {
+ private QName name;
+ private static final QName TYPE = new QName("type");
+
+ TestPropertyDescription(QName name)
+ {
+ this.name = name;
+ }
+
+ public QName getName()
+ {
+ return name;
+ }
+
+ public QName getType()
+ {
+ return TYPE;
+ }
+ }
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/DefaultRegistrationPolicyTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationManagerTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationManagerTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationManagerTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,422 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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. *
+ ******************************************************************************/
+
+package org.gatein.registration;
+
+import junit.framework.TestCase;
+import org.gatein.registration.impl.RegistrationManagerImpl;
+import org.gatein.registration.impl.RegistrationPersistenceManagerImpl;
+import org.gatein.registration.policies.DefaultRegistrationPolicy;
+
+import javax.xml.namespace.QName;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 8784 $
+ * @since 2.6
+ */
+public class RegistrationManagerTestCase extends TestCase
+{
+
+ private RegistrationManager manager;
+ private Map registrationProperties;
+
+ protected void setUp() throws Exception
+ {
+ manager = new RegistrationManagerImpl();
+ // todo: policy will need access to registration configuration information to validate properties
+ RegistrationPolicy policy = new DefaultRegistrationPolicy();
+ manager.setPolicy(policy);
+ manager.setPersistenceManager(new RegistrationPersistenceManagerImpl());
+ policy.setManager(manager);
+
+ //todo: registration properties setup will need to be updated when property validation is implemented
+ registrationProperties = new HashMap();
+ registrationProperties.put(new QName("prop1"), "value1");
+ registrationProperties.put(new QName("prop2"), "value2");
+ }
+
+ public void testPolicy()
+ {
+ RegistrationPolicy policy = manager.getPolicy();
+ assertNotNull(policy);
+ assertEquals(manager, policy.getManager());
+ }
+
+ public void testAddRegistrationTo() throws Exception
+ {
+ Registration registration = manager.addRegistrationTo("consumerName", registrationProperties, true);
+ assertNotNull(registration);
+ assertNotNull(registration.getId());
+
+ Consumer consumer = manager.getConsumerByIdentity("consumerName");
+ assertNotNull(consumer); // default policy: name == identity
+ assertEquals(consumer, registration.getConsumer());
+
+ String registrationHandle = registration.getRegistrationHandle();
+ assertNotNull(registrationHandle);
+ assertEquals(consumer, manager.getConsumerFor(registrationHandle));
+ }
+
+ public void testAddRegistrationToInexistentConsumer() throws RegistrationException
+ {
+ try
+ {
+ manager.addRegistrationTo("consumerName", registrationProperties, false);
+ fail("Should have failed: consumer does not exist");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+
+ assertNull(manager.getConsumerByIdentity("consumerName")); // default policy: name == identity
+ }
+
+ public void testGetConsumerForNullRegistrationHandle() throws Exception
+ {
+ try
+ {
+ manager.getConsumerFor(null);
+ fail("Should have failed: cannot find a consumer for a null registration handle");
+ }
+ catch (IllegalArgumentException e)
+ {
+ }
+ }
+
+ public void testCreateConsumer() throws Exception
+ {
+ String name = "consumerName";
+ Consumer consumer = manager.createConsumer(name);
+ assertNotNull(consumer);
+ assertEquals(name, consumer.getName());
+ assertNotNull(consumer.getId());
+ assertNull(consumer.getGroup());
+
+ Collection consumers = manager.getConsumers();
+ assertEquals(1, consumers.size());
+ assertTrue(consumers.contains(consumer));
+ assertEquals(consumer, manager.getConsumerByIdentity(name)); // default policy: name == identity
+
+ try
+ {
+ consumers.add(consumer);
+ fail("Shouldn't be possible to directly modify consumer collection");
+ }
+ catch (UnsupportedOperationException expected)
+ {
+ }
+ }
+
+ public void testCreateConsumerWithGroupFromPolicy() throws RegistrationException
+ {
+ // use a different policy: now specifies that when creating a consumer, it should be added to a group with the same name
+ DefaultRegistrationPolicy policy = new DefaultRegistrationPolicy()
+ {
+ public String getAutomaticGroupNameFor(String consumerName)
+ {
+ return "group_" + consumerName;
+ }
+ };
+ manager.setPolicy(policy);
+ policy.setManager(manager);
+
+ String name = "name";
+ Consumer consumer = manager.createConsumer(name);
+ assertNotNull(consumer);
+
+ ConsumerGroup group = manager.getConsumerGroup("group_" + name);
+ assertNotNull(group);
+ assertEquals(group, consumer.getGroup());
+ assertTrue(group.getConsumers().contains(consumer));
+ }
+
+ public void testCreateDuplicateConsumer() throws RegistrationException
+ {
+ String name = "name";
+ assertNotNull(manager.createConsumer(name));
+
+ try
+ {
+ manager.createConsumer(name);
+ fail("Should have failed when trying to create a consumer with an existing name");
+ }
+ catch (DuplicateRegistrationException expected)
+ {
+ }
+ }
+
+ public void testAddAutomaticallyCreatedConsumerToInexistentGroup() throws RegistrationException
+ {
+ try
+ {
+ manager.addConsumerToGroupNamed("foo", "bar", false, true);
+ fail("Shouldn't be possible to add a consumer to an inexistent group without first creating it");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+
+ assertNull(manager.getConsumerByIdentity("foo"));
+ assertNull(manager.getConsumerGroup("bar"));
+ }
+
+ public void testAddInexistentConsumerToAutomaticallyCreatedGroup() throws RegistrationException
+ {
+ try
+ {
+ manager.addConsumerToGroupNamed("foo", "bar", true, false);
+ fail("Shouldn't be possible to add an inexistent consumer to a group without first creating it");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+
+ assertNull(manager.getConsumerByIdentity("foo"));
+ assertNull(manager.getConsumerGroup("bar"));
+ }
+
+ public void testAddInexistentConsumerToGroup() throws RegistrationException
+ {
+ manager.createConsumerGroup("bar");
+ try
+ {
+ manager.addConsumerToGroupNamed("foo", "bar", false, false);
+ fail("Shouldn't be possible to add an inexistent consumer to a group without first creating it");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+
+ assertNull(manager.getConsumerByIdentity("foo"));
+ assertNotNull(manager.getConsumerGroup("bar"));
+ }
+
+ public void testAddInexistentConsumerToInexistentGroup() throws RegistrationException
+ {
+ try
+ {
+ manager.addConsumerToGroupNamed("foo", "bar", false, false);
+ fail("Shouldn't be possible to add a consumer to an inexistent group without first creating it");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+
+ assertNull(manager.getConsumerByIdentity("foo"));
+ assertNull(manager.getConsumerGroup("bar"));
+ }
+
+ public void testAddConsumerToGroup() throws Exception
+ {
+ String groupName = "group";
+ String consumerName = "consumer";
+ Consumer consumer = manager.addConsumerToGroupNamed(consumerName, groupName, true, true);
+
+ Consumer consumer1 = manager.getConsumerByIdentity(consumerName);
+ assertNotNull(consumer1);
+ assertEquals(consumer1, consumer); // default policy: identity == name
+
+ ConsumerGroup group = manager.getConsumerGroup(groupName);
+ assertNotNull(group);
+ assertEquals(group, consumer.getGroup());
+ }
+
+ public void testCreateConsumerGroup() throws Exception
+ {
+ String groupName = "name";
+ ConsumerGroup group = manager.createConsumerGroup(groupName);
+ assertNotNull(group);
+ assertEquals(groupName, group.getName());
+
+ Collection groups = manager.getConsumerGroups();
+ assertEquals(1, groups.size());
+ assertTrue(groups.contains(group));
+ assertEquals(group, manager.getConsumerGroup(groupName));
+
+ try
+ {
+ groups.add(group);
+ fail("Shouldn't be possible to directly modify group collection");
+ }
+ catch (UnsupportedOperationException expected)
+ {
+ }
+ }
+
+ public void testRemoveConsumerGroup() throws RegistrationException
+ {
+ String groupName = "name";
+ ConsumerGroup group = manager.createConsumerGroup(groupName);
+ manager.removeConsumerGroup(group);
+ assertNull(manager.getConsumerGroup(groupName));
+
+ manager.createConsumerGroup(groupName);
+ manager.removeConsumerGroup(groupName);
+ assertNull(manager.getConsumerGroup(groupName));
+ }
+
+ public void testCascadeRemovalOnConsumerGroupRemoval() throws Exception
+ {
+ String groupName = "group";
+ String consumerName = "consumer";
+ Consumer consumer = manager.addConsumerToGroupNamed(consumerName, groupName, true, true);
+ String consumerIdentity = consumer.getId();
+
+ Registration reg = manager.addRegistrationTo(consumerName, registrationProperties, false);
+ String handle = reg.getRegistrationHandle();
+
+ ConsumerGroup group = manager.getConsumerGroup(groupName);
+
+ manager.removeConsumerGroup(group);
+ assertNull(manager.getConsumerByIdentity(consumerIdentity));
+ assertNull(manager.getRegistration(handle));
+ }
+
+ public void testCascadeRemovalOnConsumerRemoval() throws Exception
+ {
+ String consumerName = "consumer";
+ Consumer consumer = manager.createConsumer(consumerName);
+ String consumerIdentity = consumer.getId();
+
+ Registration reg = manager.addRegistrationTo(consumerName, registrationProperties, false);
+ String handle = reg.getRegistrationHandle();
+
+ manager.removeConsumer(consumer);
+ assertNull(manager.getConsumerByIdentity(consumerIdentity));
+ assertNull(manager.getRegistration(handle));
+ }
+
+ public void testRemoveSingleRegistration() throws Exception
+ {
+ String consumerName = "consumer";
+ Consumer consumer = manager.createConsumer(consumerName);
+
+ Registration reg = manager.addRegistrationTo(consumerName, registrationProperties, false);
+ String handle = reg.getRegistrationHandle();
+
+ assertTrue(consumer.getRegistrations().contains(reg));
+
+ // set the consumer status to valid
+ consumer.setStatus(RegistrationStatus.VALID);
+
+ manager.removeRegistration(handle);
+ assertTrue(!consumer.getRegistrations().contains(reg));
+ assertNull(manager.getRegistration(handle));
+
+ // since the consumer doesn't have any registration anymore, its status should become pending
+ assertEquals(RegistrationStatus.PENDING, consumer.getStatus());
+
+ // shouldn't be possible anymore to retrieve the consumer from the registration handle
+ assertNull(manager.getConsumerFor(handle));
+ }
+
+ public void testRemoveRegistrationOnConsumerWithOtherRegistrations() throws Exception
+ {
+ String consumerName = "consumer";
+ Consumer consumer = manager.createConsumer(consumerName);
+
+ Registration reg = manager.addRegistrationTo(consumerName, registrationProperties, false);
+ String handle = reg.getRegistrationHandle();
+
+ // todo: this won't work anymore when properties validation is implemented
+ registrationProperties.put(new QName("prop3"), "value3");
+ Registration r2 = manager.addRegistrationTo(consumerName, registrationProperties, false);
+
+ RegistrationStatus status = consumer.getStatus();
+
+ manager.removeRegistration(handle);
+
+ // consumer status shouldn't have changed
+ assertEquals(status, consumer.getStatus());
+
+ // should still be able to retrieve consumer from r2 handle
+ assertEquals(consumer, manager.getConsumerFor(r2.getRegistrationHandle()));
+
+ // ... but not from handle
+ assertNull(manager.getConsumerFor(handle));
+ }
+
+ public void testAddRegistrationWithInvalidRegistrationProperties() throws Exception
+ {
+ // todo: implement
+ }
+
+ public void testRemoveInexistentRegistration() throws RegistrationException
+ {
+ try
+ {
+ manager.removeRegistration((Registration)null);
+ fail("Should be possible to remove a null registration");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+
+ try
+ {
+ manager.removeRegistration((String)null);
+ fail("Should be possible to remove a registration with a null handle");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+
+ try
+ {
+ manager.removeRegistration("");
+ fail("Should be possible to remove a registration with an empty handle");
+ }
+ catch (IllegalArgumentException expected)
+ {
+ }
+
+ try
+ {
+ manager.removeRegistration("doesn't exist");
+ fail("Should be possible to remove a registration with an invalid handle");
+ }
+ catch (NoSuchRegistrationException expected)
+ {
+ }
+ }
+
+ public void testClear() throws Exception
+ {
+ manager.createConsumer("c1");
+ manager.createConsumer("c2");
+ manager.addConsumerToGroupNamed("c1g1", "g1", true, true);
+ manager.createConsumerGroup("g2");
+ Registration r1 = manager.addRegistrationTo("c1", registrationProperties, false);
+ Registration r2 = manager.addRegistrationTo("c3", registrationProperties, true);
+
+ manager.clear();
+ assertTrue(manager.getConsumerGroups().isEmpty());
+ assertTrue(manager.getConsumers().isEmpty());
+ assertNull(manager.getRegistration(r1.getRegistrationHandle()));
+ assertNull(manager.getRegistration(r2.getRegistrationHandle()));
+ }
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationManagerTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationPersistenceManagerTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationPersistenceManagerTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationPersistenceManagerTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,59 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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. *
+ ******************************************************************************/
+
+package org.gatein.registration;
+
+import org.gatein.registration.impl.RegistrationPersistenceManagerImpl;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 8784 $
+ * @since 2.6
+ */
+public class RegistrationPersistenceManagerTestCase extends AbstractRegistrationPersistenceManagerTestCase
+{
+
+ /** . */
+ private RegistrationPersistenceManager manager;
+
+ public void setUp() throws Exception
+ {
+ manager = new RegistrationPersistenceManagerImpl();
+
+ //
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+
+ //
+ this.manager = null;
+ }
+
+ public RegistrationPersistenceManager getManager()
+ {
+ return manager;
+ }
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationPersistenceManagerTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationTestCase.java (rev 0)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,156 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * 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. *
+ ******************************************************************************/
+
+package org.gatein.registration;
+
+import junit.framework.TestCase;
+import org.gatein.registration.impl.RegistrationManagerImpl;
+import org.gatein.registration.impl.RegistrationPersistenceManagerImpl;
+import org.gatein.registration.policies.DefaultRegistrationPolicy;
+import org.gatein.wsrp.registration.PropertyDescription;
+
+import javax.xml.namespace.QName;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
+ * @version $Revision: 11406 $
+ * @since 2.6
+ */
+public class RegistrationTestCase extends TestCase
+{
+ private Registration registration;
+ private Map registrationProperties;
+
+ protected void setUp() throws Exception
+ {
+ RegistrationManager manager = new RegistrationManagerImpl();
+ RegistrationPolicy policy = new DefaultRegistrationPolicy()
+ {
+ public void validateRegistrationDataFor(Map<QName, ? extends PropertyDescription> registrationProperties, String consumerIdentity) throws IllegalArgumentException, RegistrationException, DuplicateRegistrationException
+ {
+ // accept any registration data here
+ }
+ };
+ manager.setPolicy(policy);
+ manager.setPersistenceManager(new RegistrationPersistenceManagerImpl());
+ policy.setManager(manager);
+
+ registrationProperties = new HashMap();
+ registrationProperties.put(new QName("prop1"), "value1");
+ registrationProperties.put(new QName("prop2"), "value2");
+
+ registration = manager.addRegistrationTo("name", registrationProperties, true);
+ }
+
+ public void testGetPropertiesIsUnmodifiable()
+ {
+ Map properties = registration.getProperties();
+
+ try
+ {
+ properties.remove("foo");
+ fail("Properties shouldn't be directly modifiable");
+ }
+ catch (Exception expected)
+ {
+ }
+ }
+
+ public void testPropertiesAreClonedNotLive()
+ {
+ QName prop = new QName("prop3");
+ registrationProperties.put(prop, "value3");
+
+ assertNull(registration.getProperties().get(prop));
+ }
+
+ public void testSetNullPropertyValueThrowsIAE()
+ {
+ try
+ {
+ registration.setPropertyValueFor("foo", null);
+ fail("Shouldn't accept null values for properties");
+ }
+ catch (Exception expected)
+ {
+ }
+ }
+
+ public void testSetNullPropertyNameThrowsIAE()
+ {
+ try
+ {
+ registration.setPropertyValueFor((QName)null, null);
+ fail("Shouldn't accept null names for properties");
+ }
+ catch (Exception expected)
+ {
+ }
+ }
+
+ public void testProperties()
+ {
+ QName name = new QName("prop1");
+ assertEquals("value1", registration.getProperties().get(name));
+ assertEquals("value2", registration.getProperties().get(new QName("prop2")));
+
+ String newValue = "new value";
+ registration.setPropertyValueFor("prop1", newValue);
+ assertEquals(newValue, registration.getProperties().get(name));
+
+ registration.removeProperty(name);
+ assertNull(registration.getPropertyValueFor(name));
+ }
+
+ public void testUpdateProperties()
+ {
+ registrationProperties.remove(new QName("prop1"));
+
+ registration.updateProperties(registrationProperties);
+ assertNull(registration.getPropertyValueFor("prop1"));
+
+ QName name = new QName("prop3");
+ String value = "value3";
+ registrationProperties.put(name, value);
+ registration.updateProperties(registrationProperties);
+ assertEquals(value, registration.getPropertyValueFor(name));
+ }
+
+ public void testHasEqualProperties()
+ {
+ assertTrue(registration.hasEqualProperties(registration));
+
+ assertTrue(registration.hasEqualProperties(registrationProperties));
+
+ registrationProperties.put(new QName("prop3"), "value3");
+ assertTrue(!registration.hasEqualProperties(registrationProperties));
+ }
+
+ public void testClearAssociatedState()
+ {
+ //todo: implement
+ }
+
+}
Property changes on: components/wsrp/trunk/producer/src/test/java/org/gatein/registration/RegistrationTestCase.java
___________________________________________________________________
Name: svn:executable
+ *
Modified: components/wsrp/trunk/producer/src/test/java/org/gatein/wsrp/registration/RegistrationPropertyDescriptionTestCase.java
===================================================================
--- components/wsrp/trunk/producer/src/test/java/org/gatein/wsrp/registration/RegistrationPropertyDescriptionTestCase.java 2009-11-30 14:08:53 UTC (rev 865)
+++ components/wsrp/trunk/producer/src/test/java/org/gatein/wsrp/registration/RegistrationPropertyDescriptionTestCase.java 2009-11-30 15:58:10 UTC (rev 866)
@@ -108,17 +108,15 @@
public void valueHasChanged(RegistrationPropertyDescription originating, Object oldValue, Object newValue, boolean isName)
{
- if (isName)
+ // fake updating the property map if the old name was foo...
+ String oldValueString = oldValue == null ? null : oldValue.toString();
+ if ("foo".equals(oldValueString))
{
- // fake updating the property map if the old name was foo...
- if ("foo".equals(oldValue))
- {
- // then set the prop name to the new property name
- propName = originating.getName().getLocalPart();
- }
-
- notifyCalled = true;
+ // then set the prop name to the new property name
+ propName = originating.getName().getLocalPart();
}
+
+ notifyCalled = true;
}
}
}
Added: components/wsrp/trunk/producer/src/test/resources/custom-policy.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/custom-policy.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/custom-policy.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,30 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration>
+ <registration-policy>org.gatein.wsrp.producer.config.TestRegistrationPolicy</registration-policy>
+ </registration-configuration>
+</wpc:producer-configuration>
\ No newline at end of file
Property changes on: components/wsrp/trunk/producer/src/test/resources/custom-policy.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/extended.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/extended.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/extended.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration fullServiceDescriptionRequiresRegistration="true">
+ <registration-property-validator>org.gatein.registration.policies.DefaultRegistrationPropertyValidator
+ </registration-property-validator>
+ <registration-property-description>
+ <name>name1</name>
+ <type>xsd:string</type>
+ <label xml:lang="en" resourceName="resource.label1">label1</label>
+ <hint xml:lang="en" resourceName="resource.hint1">hint1</hint>
+ </registration-property-description>
+ <registration-property-description>
+ <name>name2</name>
+ <type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</type>
+ <label xml:lang="en" resourceName="resource.label2">label2</label>
+ <hint xml:lang="en" resourceName="resource.hint2">hint2</hint>
+ </registration-property-description>
+ </registration-configuration>
+</wpc:producer-configuration>
Property changes on: components/wsrp/trunk/producer/src/test/resources/extended.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/invalid-type.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/invalid-type.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/invalid-type.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,34 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration>
+ <registration-property-description>
+ <name>name</name>
+ <type>unknown type</type>
+ <label xml:lang="en">label</label>
+ </registration-property-description>
+ </registration-configuration>
+</wpc:producer-configuration>
Property changes on: components/wsrp/trunk/producer/src/test/resources/invalid-type.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/invalid1.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/invalid1.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/invalid1.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,29 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration fullServiceDescriptionRequiresRegistration="invalid"/>
+</wpc:producer-configuration>
+
Property changes on: components/wsrp/trunk/producer/src/test/resources/invalid1.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/invalid2.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/invalid2.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/invalid2.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,30 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration/>
+ <registration-configuration/>
+</wpc:producer-configuration>
+
Property changes on: components/wsrp/trunk/producer/src/test/resources/invalid2.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/invalid3.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/invalid3.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/invalid3.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,31 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration>
+ <registration-policy>org.jboss.portal.test.wsrp.config.TestRegistrationPolicy</registration-policy>
+ <registration-property-validator>org.test.package.SomePropertyValidator</registration-property-validator>
+ </registration-configuration>
+</wpc:producer-configuration>
Property changes on: components/wsrp/trunk/producer/src/test/resources/invalid3.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/minimal-registration.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/minimal-registration.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/minimal-registration.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,28 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2007, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <registration-configuration/>
+</wpc:producer-configuration>
Property changes on: components/wsrp/trunk/producer/src/test/resources/minimal-registration.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/minimal.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/minimal.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/minimal.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,27 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2006, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
+
Property changes on: components/wsrp/trunk/producer/src/test/resources/minimal.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/strict-mode.xml
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/strict-mode.xml (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/strict-mode.xml 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2008, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<wpc:producer-configuration xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:portal:wsrp:producer:v2_7 "
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ useStrictMode="false"/>
\ No newline at end of file
Property changes on: components/wsrp/trunk/producer/src/test/resources/strict-mode.xml
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/xsd/jboss-wsrp-producer_2_7.xsd
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/xsd/jboss-wsrp-producer_2_7.xsd (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/xsd/jboss-wsrp-producer_2_7.xsd 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2008, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ 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. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns="urn:jboss:portal:wsrp:producer:v2_7"
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ xmlns:wpc="urn:jboss:portal:wsrp:producer:v2_7" elementFormDefault="qualified">
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
+
+ <xs:element name="producer-configuration">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="registration-configuration" type="wpc:RegistrationConfiguration"/>
+ </xs:sequence>
+ <xs:attribute name="useStrictMode" type="xs:boolean" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="RegistrationConfiguration">
+ <xs:sequence>
+ <xs:element name="registration-policy" type="xs:string" minOccurs="0"/>
+ <xs:element name="registration-property-validator" type="xs:string" minOccurs="0"/>
+ <xs:element name="registration-property-description" type="wpc:RegistrationPropertyDescription" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="fullServiceDescriptionRequiresRegistration" type="xs:boolean" use="optional"/>
+ </xs:complexType>
+
+ <xs:complexType name="RegistrationPropertyDescription">
+ <xs:sequence>
+ <xs:element name="name" type="xs:QName"/>
+ <xs:element name="type" type="xs:QName"/>
+ <xs:element name="label" type="wpc:LocalizedString" minOccurs="0"/>
+ <xs:element name="hint" type="wpc:LocalizedString" minOccurs="0"/>
+ <xs:element name="description" type="wpc:LocalizedString" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="LocalizedString">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute ref="xml:lang" use="required"/>
+ <xs:attribute name="resourceName" type="xs:string" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+</xs:schema>
Property changes on: components/wsrp/trunk/producer/src/test/resources/xsd/jboss-wsrp-producer_2_7.xsd
___________________________________________________________________
Name: svn:executable
+ *
Added: components/wsrp/trunk/producer/src/test/resources/xsd/xml.xsd
===================================================================
--- components/wsrp/trunk/producer/src/test/resources/xsd/xml.xsd (rev 0)
+++ components/wsrp/trunk/producer/src/test/resources/xsd/xml.xsd 2009-11-30 15:58:10 UTC (rev 866)
@@ -0,0 +1,151 @@
+<?xml version='1.0'?>
+
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
Property changes on: components/wsrp/trunk/producer/src/test/resources/xsd/xml.xsd
___________________________________________________________________
Name: svn:executable
+ *
15 years