taylor 2004/11/18 19:07:43
Modified: portal/src/webapp/WEB-INF/templates/navigation/html/tabs
LeftToRight.vm
portal/src/webapp/WEB-INF/pages pages.ds top-pages.ds
folder.metadata non-java.ds default-page.psml
testsuite.psml
portal/src/webapp/WEB-INF/templates/navigation/html/linksWithIcon1
TopToBottom.vm LeftToRight.vm
portal/src/webapp/WEB-INF/decorations/layout/html/tigris
decorator-top.vm
portal/src/webapp/WEB-INF/pages/Administrative user-admin.ds
folder.metadata
portal/src/webapp/WEB-INF/pages/_role/user/top-links
folder.metadata
portal/src/webapp/WEB-INF/pages/_user/user folder.metadata
nested-layout.psml top-pages.ds
portal/src/java/org/apache/jetspeed/security/impl
SecurityValveImpl.java
portal/src/webapp/WEB-INF/templates/navigation/html/folders
TopToBottom.vm LeftToRight.vm
portal/src/webapp/WEB-INF/decorations/layout/html/jetspeed
decorator-top.vm
portal/src/java/org/apache/jetspeed/velocity
JetspeedPowerTool.java
portal/src/webapp/WEB-INF/decorations/layout/html/ja/tigris
decorator-top.vm
portal/src/webapp/WEB-INF/assembly page-manager.xml
portal/src/webapp/WEB-INF/pages/_role/manager
folder.metadata
portal/src/java/org/apache/jetspeed/profiler/impl
ProfilerValveImpl.java
portal/src/java/org/apache/jetspeed/aggregator/impl
PageAggregatorImpl.java
Added: portal/src/webapp/WEB-INF/pages page.security
Log:
** File and Folder Security Permission Checking **
patch by contrinbuted by Randy Watler
- Both permissions, (JAAS), and constraints, (J1 style), are enabled,
(in assembly/page-manager.xml on the CastorXmlPageManager init)
- Both are configured to secure the same entities, except the testsuite
page access is specified only in the constraints.
- The permissions are configured in the 4 populate-userinfo sql scripts.
- The constraints are set up in WEB-INF/pages:
/page.security
/folder.metadata
/Administrative/folder.metadata
/default-page.psml
/testsuite.psml
/_user/user/folder.metadata
- We'll need to add a CVS text wrapper for *.security.
To test:
1. When you start the portal, you should see only the default page and
additional links, (no customizer buttons)
2. Login as user: you should see everything as before except the
testsuite page and the Administrative sub directory, (customizer
buttons only visible on user pages)
3. Login as manager: everything should be be visible except the
testsuite page, (no customizer buttons)
4. Login as jetspeed: everything should be visible, (no customizer
buttons)
5. Login as admin: everything should be visible, (full customizer
buttons)
Revision Changes Path
1.4 +4 -3
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/tabs/LeftToRight.vm
Index: LeftToRight.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/tabs/LeftToRight.vm,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- LeftToRight.vm 29 Sep 2004 18:36:11 -0000 1.3
+++ LeftToRight.vm 19 Nov 2004 03:07:42 -0000 1.4
@@ -2,14 +2,15 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
#foreach($childPage in $_nodeSet.iterator())
- #set($tabName = $childPage.getTitle($preferedLocale))
+ #set($tabTitle = $childPage.getTitle($preferedLocale))
+ #set($tabName = $childPage.getShortTitle($preferedLocale))
#if($jetspeed.page.id == $childPage.id)
<td class="LTabLeft" nowrap="true"> </td>
- <td class="LTab" align="center" valign="middle"
nowrap="true">${tabName}</td>
+ <td class="LTab" align="center" valign="middle" nowrap="true"
title="$tabTitle">${tabName}</td>
<td class="LTabRight" nowrap="true"> </td>
#else
<td class="LTabLeftLow" nowrap="true"> </td>
- <td class="LTabLow" align="center" valign="middle" nowrap="true"><a
href="$jetspeed.getAbsoluteUrl($childPage.url)">${tabName}</a></td>
+ <td class="LTabLow" align="center" valign="middle" nowrap="true"
title="$tabTitle"><a
href="$jetspeed.getAbsoluteUrl($childPage.url)">${tabName}</a></td>
<td class="LTabRightLow" nowrap="true"> </td>
#end
#end
1.4 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/pages.ds
Index: pages.ds
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/pages.ds,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- pages.ds 8 Nov 2004 21:11:13 -0000 1.3
+++ pages.ds 19 Nov 2004 03:07:42 -0000 1.4
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<documentSet>
+<document-set>
<title>Profiled Pages</title>
- <profileLocator>page</profileLocator>
- <documentPath regexp="true">/p[0-9][0-9][0-9].psml</documentPath>
-</documentSet>
+ <profile-locator>page</profile-locator>
+ <document-path regexp="true">/p[0-9][0-9][0-9].psml</document-path>
+</document-set>
1.4 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/top-pages.ds
Index: top-pages.ds
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/top-pages.ds,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- top-pages.ds 8 Nov 2004 21:11:13 -0000 1.3
+++ top-pages.ds 19 Nov 2004 03:07:42 -0000 1.4
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<documentSet>
+<document-set>
<title>Top Pages</title>
<metadata name="title" xml:lang="fr">Page haut</metadata>
- <profileLocator>docset</profileLocator>
- <documentPath>/Administrative</documentPath>
-</documentSet>
+ <profile-locator>docset</profile-locator>
+ <document-path>/Administrative</document-path>
+</document-set>
1.6 +16 -6
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/folder.metadata
Index: folder.metadata
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/folder.metadata,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- folder.metadata 21 Sep 2004 22:56:52 -0000 1.5
+++ folder.metadata 19 Nov 2004 03:07:42 -0000 1.6
@@ -1,10 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<folder>
- <title >Root Folder</title>
+ <title>Root Folder</title>
<metadata name="title" xml:lang="fr">Répertoire racine</metadata>
<metadata name="title" xml:lang="ja">ルートフォルダ</metadata>
- <documentOrder>Jetspeed2.link</documentOrder>
- <documentOrder>Jetspeed2Wiki.link</documentOrder>
- <documentOrder>apache_portals.link</documentOrder>
- <documentOrder>apache.link</documentOrder>
-</folder>
\ No newline at end of file
+
+ <document-order>Jetspeed2.link</document-order>
+ <document-order>Jetspeed2Wiki.link</document-order>
+ <document-order>apache_portals.link</document-order>
+ <document-order>apache.link</document-order>
+
+ <!-- allow user role to view and allow manager role by default -->
+ <security-constraints>
+ <security-constraint>
+ <roles>user</roles>
+ <permissions>view</permissions>
+ </security-constraint>
+ <security-constraints-ref>manager</security-constraints-ref>
+ </security-constraints>
+</folder>
1.4 +2 -2
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/non-java.ds
Index: non-java.ds
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/non-java.ds,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- non-java.ds 8 Nov 2004 21:11:13 -0000 1.3
+++ non-java.ds 19 Nov 2004 03:07:42 -0000 1.4
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
-<documentSet>
+<document-set>
<title>Non Java Pages</title>
-</documentSet>
+</document-set>
1.29 +16 -8
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/default-page.psml
Index: default-page.psml
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/default-page.psml,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- default-page.psml 15 Nov 2004 06:02:20 -0000 1.28
+++ default-page.psml 19 Nov 2004 03:07:42 -0000 1.29
@@ -20,6 +20,13 @@
portlet-decorator="tigris"
/>
<title>Welcome to Jetspeed 2</title>
+ <metadata name="title" xml:lang="fr">
+ Ma Premiere Page de PSML
+ </metadata>
+ <metadata name="title" xml:lang="ja">
+ Jetspeed 2 へようこそ
+ </metadata>
+
<fragment id="dp-1" type="layout" name="jetspeed::VelocityTwoColumns">
<fragment id="dp-3" type="portlet" name="localeselector::LocaleSelector">
<property layout="TwoColumns" name="row" value="0" />
@@ -44,13 +51,14 @@
<fragment id="dp-17" type="portlet" name="demo::UserInfoTest">
<property layout="TwoColumns" name="row" value="2" />
<property layout="TwoColumns" name="column" value="1" />
- </fragment>
-
+ </fragment>
</fragment>
- <metadata name="title" xml:lang="fr">
- Ma Premiere Page de PSML
- </metadata>
- <metadata name="title" xml:lang="ja">
- Jetspeed 2 へようこそ
- </metadata>
+
+ <!-- allow all users to view -->
+ <security-constraints>
+ <security-constraint>
+ <users>*</users>
+ <permissions>view</permissions>
+ </security-constraint>
+ </security-constraints>
</page>
1.12 +11 -0
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/testsuite.psml
Index: testsuite.psml
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/testsuite.psml,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- testsuite.psml 9 Nov 2004 01:28:30 -0000 1.11
+++ testsuite.psml 19 Nov 2004 03:07:42 -0000 1.12
@@ -34,4 +34,15 @@
<metadata name="title" xml:lang="ja">
テストスイートページ
</metadata>
+
+ <!-- allow engineering to view, but disable all access for accounting and
marketing groups -->
+ <security-constraints>
+ <security-constraint>
+ <groups>accounting, marketing</groups>
+ </security-constraint>
+ <security-constraint>
+ <groups>engineering</groups>
+ <permissions>view</permissions>
+ </security-constraint>
+ </security-constraints>
</page>
1.1
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/page.security
Index: page.security
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<page-security>
<!-- define global admin constraints -->
<security-constraints-def name="admin">
<security-constraint>
<roles>admin</roles>
<permissions>view, edit</permissions>
</security-constraint>
</security-constraints-def>
<global-security-constraints-ref>admin</global-security-constraints-ref>
<!-- define manager constraints -->
<security-constraints-def name="manager">
<security-constraint>
<roles>manager</roles>
<permissions>view</permissions>
</security-constraint>
</security-constraints-def>
</page-security>
1.4 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/linksWithIcon1/TopToBottom.vm
Index: TopToBottom.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/linksWithIcon1/TopToBottom.vm,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TopToBottom.vm 31 Oct 2004 22:10:35 -0000 1.3
+++ TopToBottom.vm 19 Nov 2004 03:07:42 -0000 1.4
@@ -2,13 +2,13 @@
#foreach($node in $_nodeSet.iterator())
<div>
#if($node.type == ".psml")
- <a href="$jetspeed.getAbsoluteUrl($node.url)"
class="LinkPage">$node.getTitle($preferedLocale)</a>
+ <a href="$jetspeed.getAbsoluteUrl($node.url)" class="LinkPage"
title="$node.getTitle($preferedLocale)">$node.getShortTitle($preferedLocale)</a>
#elseif($node.type == ".link")
- <a href="$node.url" target="$node.target"
class="Link">$node.getTitle($preferedLocale)</a>
+ <a href="$node.url" target="$node.target" class="Link"
title="$node.getTitle($preferedLocale)">$node.getShortTitle($preferedLocale)</a>
#elseif($node.type == "folder")
- <a href="$jetspeed.getAbsoluteUrl($node.url)"
class="LinkFolder">$node.metaData.getTitle($preferedLocale)</a>
+ <a href="$jetspeed.getAbsoluteUrl($node.url)" class="LinkFolder"
title="$node.getTitle($preferedLocale)">$node.getShortTitle($preferedLocale)</a>
#else
- <a href="$node.url">$node.title</a>
+ <a href="$node.url" title="$node.getTitle()">$node.getShortTitle()</a>
#end
</div>
#end
1.3 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/linksWithIcon1/LeftToRight.vm
Index: LeftToRight.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/linksWithIcon1/LeftToRight.vm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LeftToRight.vm 15 Oct 2004 07:00:49 -0000 1.2
+++ LeftToRight.vm 19 Nov 2004 03:07:42 -0000 1.3
@@ -1,13 +1,13 @@
<div >
#foreach($node in $_nodeSet.iterator())
#if($node.type == ".psml")
- <a href="$jetspeed.getAbsoluteUrl($node.url)"
class="LinkPage">$node.getTitle($preferedLocale)</a>
+ <a href="$jetspeed.getAbsoluteUrl($node.url)" class="LinkPage"
title="$node.getTitle($preferedLocale)">$node.getShortTitle($preferedLocale)</a>
#elseif($node.type == ".link")
- <a href="$node.url" target="$node.target"
class="Link">$node.getTitle($preferedLocale)</a>
+ <a href="$node.url" target="$node.target" class="Link"
title="$node.getTitle($preferedLocale)">$node.getShortTitle($preferedLocale)</a>
#elseif($node.type == "folder")
- <a href="$jetspeed.getAbsoluteUrl($node.url)"
class="LinkFolder">$node.metaData.getTitle($preferedLocale)</a>
+ <a href="$jetspeed.getAbsoluteUrl($node.url)" class="LinkFolder"
title="$node.getTitle($preferedLocale)">$node.getShortTitle($preferedLocale)</a>
#else
- <a href="$node.url">$node.title</a>
+ <a href="$node.url" title="$node.getTitle()">$node.getShortTitle()</a>
#end
#end
</div>
1.2 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/decorations/layout/html/tigris/decorator-top.vm
Index: decorator-top.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/decorations/layout/html/tigris/decorator-top.vm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- decorator-top.vm 31 Oct 2004 22:06:10 -0000 1.1
+++ decorator-top.vm 19 Nov 2004 03:07:42 -0000 1.2
@@ -63,7 +63,7 @@
</div>
<div id="breadcrumbs">
#if($parentFolder)
- <a href="$jetspeed.getAbsoluteUrl($parentFolder.url)">Back to
$parentFolder.metaData.getTitle($preferedLocale)</a>
+ <a href="$jetspeed.getAbsoluteUrl($parentFolder.url)"
title="$parentFolder.getTitle($preferedLocale)">Back to
$parentFolder.getShortTitle($preferedLocale)</a>
#end
</div>
@@ -86,8 +86,8 @@
#foreach($docSetName in $profiledPageContext.documentSetNames)
#set($docSet = $profiledPageContext.getDocumentSet($docSetName))
#set($docSetNodes = $profiledPageContext.getDocumentSetNodes($docSetName))
- <div class="pagetitle">
- ${docSet.getTitle($preferedLocale)}
+ <div class="pagetitle" title="$docSet.getTitle($preferedLocale)">
+ ${docSet.getShortTitle($preferedLocale)}
</div>
#includeNavigation("linksWithIcon1" $docSetNodes $TOP_TO_BOTTOM)
#end
1.5 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/Administrative/user-admin.ds
Index: user-admin.ds
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/Administrative/user-admin.ds,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- user-admin.ds 21 Oct 2004 02:29:19 -0000 1.4
+++ user-admin.ds 19 Nov 2004 03:07:42 -0000 1.5
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<documentSet>
+<document-set>
<title>Users Admin Pages</title>
- <documentPath>/Administrative/user-mgt.psml</documentPath>
- <documentPath>/Administrative/users-jsf.psml</documentPath>
-</documentSet>
+ <document-path>/Administrative/user-mgt.psml</document-path>
+ <document-path>/Administrative/users-jsf.psml</document-path>
+</document-set>
1.5 +6 -1
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/Administrative/folder.metadata
Index: folder.metadata
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/Administrative/folder.metadata,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- folder.metadata 21 Sep 2004 22:56:53 -0000 1.4
+++ folder.metadata 19 Nov 2004 03:07:42 -0000 1.5
@@ -3,4 +3,9 @@
<title >Jetspeed Administrative Portlets</title>
<metadata name="title" xml:lang="fr">Jetspeed Portlets
Administratif</metadata>
<metadata name="title" xml:lang="ja">Jetspeed
管理ポートレット</metadata>
-</folder>
\ No newline at end of file
+
+ <!-- allow only manager role -->
+ <security-constraints>
+ <security-constraints-ref>manager</security-constraints-ref>
+ </security-constraints>
+</folder>
1.3 +5 -5
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_role/user/top-links/folder.metadata
Index: folder.metadata
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_role/user/top-links/folder.metadata,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- folder.metadata 8 Nov 2004 21:08:46 -0000 1.2
+++ folder.metadata 19 Nov 2004 03:07:42 -0000 1.3
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<folder>
- <documentOrder>apache_portals.link</documentOrder>
- <documentOrder>apache_jakarta.link</documentOrder>
- <documentOrder>apache_tomcat.link</documentOrder>
- <documentOrder>apache_velocity.link</documentOrder>
- <documentOrder>apache_commons.link</documentOrder>
+ <document-order>apache_portals.link</document-order>
+ <document-order>apache_jakarta.link</document-order>
+ <document-order>apache_tomcat.link</document-order>
+ <document-order>apache_velocity.link</document-order>
+ <document-order>apache_commons.link</document-order>
</folder>
1.3 +23 -16
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_user/user/folder.metadata
Index: folder.metadata
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_user/user/folder.metadata,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- folder.metadata 15 Oct 2004 07:00:18 -0000 1.2
+++ folder.metadata 19 Nov 2004 03:07:42 -0000 1.3
@@ -1,25 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<folder>
<title>[USER] Root Folder</title>
+ <short-title>[USER] Root</short-title>
<metadata name="title" xml:lang="fr">[USER] Répertoire racine</metadata>
+ <metadata name="short-title" xml:lang="fr">[USER] Racine</metadata>
- <documentOrder>Google.link</documentOrder>
- <documentOrder>Jetspeed2.link</documentOrder>
+ <document-order>Google.link</document-order>
+ <document-order>Jetspeed2.link</document-order>
- <documentOrder>default-page.psml</documentOrder>
- <documentOrder>p001.psml</documentOrder>
- <documentOrder>p002.psml</documentOrder>
- <documentOrder>p003.psml</documentOrder>
- <documentOrder>p004.psml</documentOrder>
- <documentOrder>localeselector.psml</documentOrder>
- <documentOrder>jsf-demo.psml</documentOrder>
- <documentOrder>struts-demo.psml</documentOrder>
+ <document-order>default-page.psml</document-order>
+ <document-order>p001.psml</document-order>
+ <document-order>p002.psml</document-order>
+ <document-order>p003.psml</document-order>
+ <document-order>p004.psml</document-order>
+ <document-order>localeselector.psml</document-order>
+ <document-order>jsf-demo.psml</document-order>
+ <document-order>struts-demo.psml</document-order>
- <documentOrder>third-party</documentOrder>
- <documentOrder>non-java</documentOrder>
- <documentOrder>Administrative</documentOrder>
+ <document-order>third-party</document-order>
+ <document-order>non-java</document-order>
+ <document-order>Administrative</document-order>
- <documentOrder>top-pages.ds</documentOrder>
- <documentOrder>pages.ds</documentOrder>
- <documentOrder>non-java.ds</documentOrder>
+ <document-order>top-pages.ds</document-order>
+ <document-order>pages.ds</document-order>
+ <document-order>non-java.ds</document-order>
+
+ <!-- define user as owner -->
+ <security-constraints>
+ <owner>user</owner>
+ </security-constraints>
</folder>
1.4 +1 -0
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_user/user/nested-layout.psml
Index: nested-layout.psml
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_user/user/nested-layout.psml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- nested-layout.psml 15 Nov 2004 06:02:20 -0000 1.3
+++ nested-layout.psml 19 Nov 2004 03:07:42 -0000 1.4
@@ -2,6 +2,7 @@
<page>
<defaults layout-decorator="tigris" portlet-decorator="tigris"/>
<title>Nested Layout Test</title>
+ <short-title>Nested Layout</short-title>
<fragment id="100393" type="layout" name="jetspeed::VelocityOneColumn">
<fragment id="100939" type="portlet"
name="localeselector::LocaleSelector">
<property layout="OneColumn" name="row" value="0"/>
1.3 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_user/user/top-pages.ds
Index: top-pages.ds
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_user/user/top-pages.ds,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- top-pages.ds 21 Oct 2004 02:29:19 -0000 1.2
+++ top-pages.ds 19 Nov 2004 03:07:42 -0000 1.3
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<documentSet>
+<document-set>
<title>[USER] Top Pages</title>
<metadata name="title" xml:lang="fr">[USER] Page haut</metadata>
- <profileLocator>docset</profileLocator>
- <documentPath regexp="true">/top-links/*.*</documentPath>
-</documentSet>
+ <profile-locator>docset</profile-locator>
+ <document-path regexp="true">/top-links/*.*</document-path>
+</document-set>
1.9 +44 -27
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/security/impl/SecurityValveImpl.java
Index: SecurityValveImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/security/impl/SecurityValveImpl.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SecurityValveImpl.java 11 Nov 2004 07:51:52 -0000 1.8
+++ SecurityValveImpl.java 19 Nov 2004 03:07:43 -0000 1.9
@@ -21,6 +21,7 @@
import java.util.Set;
import javax.security.auth.Subject;
+import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -57,43 +58,59 @@
*/
public void invoke(RequestContext request, ValveContext context) throws
PipelineException
{
- Subject subject = null;
try
- {
- Principal principal = request.getRequest().getUserPrincipal();
- subject = (Subject)
-
request.getRequest().getSession().getAttribute(PortalReservedParameters.SESSION_KEY_SUBJECT);
- if (null == principal)
+ {
+ // initialize/validate security subject
+
+ // access request user principal if defined or default
+ // to profiler anonymous user
+ Principal userPrincipal =
request.getRequest().getUserPrincipal();
+ if (userPrincipal == null)
{
- principal = new
UserPrincipalImpl(profiler.getAnonymousUser());
+ userPrincipal = new
UserPrincipalImpl(profiler.getAnonymousUser());
}
- if (null == subject)
+
+ // check for previously established session subject and
+ // invalidate if subject and current user principals do
+ // not match
+ HttpSession session = request.getRequest().getSession();
+ Subject subject = (Subject)
session.getAttribute(PortalReservedParameters.SESSION_KEY_SUBJECT);
+ if (subject != null)
{
- Set principals = new HashSet();
- principals.add(principal);
- subject = new Subject(true, principals, new HashSet(), new
HashSet());
- request.getRequest().getSession().setAttribute(
- PortalReservedParameters.SESSION_KEY_SUBJECT,
- subject);
+ Principal subjectUserPrincipal =
SecurityHelper.getPrincipal(subject, UserPrincipal.class);
+ if ((subjectUserPrincipal == null) ||
!subjectUserPrincipal.getName().equals(userPrincipal.getName()))
+ {
+ subject = null;
+ }
}
- else
+
+ // create new session subject for user principal if required
+ if (subject == null)
{
- Principal userPrincipal =
SecurityHelper.getPrincipal(subject, UserPrincipal.class);
- if
((userPrincipal.getName()).equals(profiler.getAnonymousUser())
- &&
(!(principal.getName()).equals(profiler.getAnonymousUser())))
+ // attempt to get complete subject for user principal
+ // from user manager
+ subject =
userMgr.getUser(userPrincipal.getName()).getSubject();
+
+ // if subject not available, generate default subject using
+ // request or default profiler anonymous user principal
+ if (subject == null)
{
- subject =
userMgr.getUser(principal.getName()).getSubject();
- request.getRequest().getSession().setAttribute(
- PortalReservedParameters.SESSION_KEY_SUBJECT,
subject);
+ Set principals = new HashSet();
+ principals.add(userPrincipal);
+ subject = new Subject(true, principals, new HashSet(),
new HashSet());
}
+
+ // establish session subject
+
session.setAttribute(PortalReservedParameters.SESSION_KEY_SUBJECT, subject);
}
+
+ // set request context subject
request.setSubject(subject);
- final ValveContext vc = context;
- final RequestContext rc = request;
-
// Pass control to the next Valve in the Pipeline and execute
under the current subject
- Subject.doAs(subject, new PrivilegedAction()
+ final ValveContext vc = context;
+ final RequestContext rc = request;
+ Subject.doAsPrivileged(subject, new PrivilegedAction()
{
public Object run()
{
@@ -106,7 +123,7 @@
}
return null;
}
- });
+ }, null);
}
catch (Throwable t)
1.2 +1 -1
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/folders/TopToBottom.vm
Index: TopToBottom.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/folders/TopToBottom.vm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TopToBottom.vm 31 Oct 2004 22:04:14 -0000 1.1
+++ TopToBottom.vm 19 Nov 2004 03:07:43 -0000 1.2
@@ -1,5 +1,5 @@
<div class="FolderList">
#foreach($childFolder in $_nodeSet.iterator())
- <div><a href="$jetspeed.getAbsoluteUrl($childFolder.url)"
class="FolderLink">$childFolder.metaData.getTitle($preferedLocale)</a></div>
+ <div><a href="$jetspeed.getAbsoluteUrl($childFolder.url)"
class="FolderLink"
title="$childFolder.getTitle($preferedLocale)">$childFolder.getShortTitle($preferedLocale)</a></div>
#end
</div>
1.2 +5 -5
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/folders/LeftToRight.vm
Index: LeftToRight.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/templates/navigation/html/folders/LeftToRight.vm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LeftToRight.vm 17 Sep 2004 18:05:24 -0000 1.1
+++ LeftToRight.vm 19 Nov 2004 03:07:43 -0000 1.2
@@ -1,5 +1,5 @@
-<div class="FolderList">
- #foreach($childFolder in $_nodeSet.iterator())
- <span><a href="$jetspeed.getAbsoluteUrl($childFolder.url)"
class="FolderLink">$childFolder.metaData.getTitle($preferedLocale)</a></span>
- #end
-</div>
+<div class="FolderList">
+ #foreach($childFolder in $_nodeSet.iterator())
+ <span><a href="$jetspeed.getAbsoluteUrl($childFolder.url)"
class="FolderLink"
title="$childFolder.getTitle($preferedLocale)">$childFolder.getShortTitle($preferedLocale)</a></span>
+ #end
+</div>
1.21 +2 -2
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/decorations/layout/html/jetspeed/decorator-top.vm
Index: decorator-top.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/decorations/layout/html/jetspeed/decorator-top.vm,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- decorator-top.vm 15 Oct 2004 07:02:10 -0000 1.20
+++ decorator-top.vm 19 Nov 2004 03:07:43 -0000 1.21
@@ -45,7 +45,7 @@
#if($parentFolder)
<p style="font-style:italic">
- <a href="$jetspeed.getAbsoluteUrl($parentFolder.url)">Back to
$parentFolder.metaData.getTitle($preferedLocale)</a>
+ <a href="$jetspeed.getAbsoluteUrl($parentFolder.url)"
title="$parentFolder.getTitle($preferedLocale)">Back to
$parentFolder.getShortTitle($preferedLocale)</a>
</p>
#end
@@ -73,7 +73,7 @@
#set($docSetNodes =
$profiledPageContext.getDocumentSetNodes($docSetName))
<tr>
<td nowrap>
- <br>${docSet.getTitle($preferedLocale)}:
+ <br><span
title="$docSet.getTitle($preferedLocale)">${docSet.getShortTitle($preferedLocale)}</span>:
#includeNavigation("linksWithIcon1" $docSetNodes $TOP_TO_BOTTOM)
</td>
</tr>
1.36 +28 -6
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java
Index: JetspeedPowerTool.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/velocity/JetspeedPowerTool.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- JetspeedPowerTool.java 7 Nov 2004 16:29:57 -0000 1.35
+++ JetspeedPowerTool.java 19 Nov 2004 03:07:43 -0000 1.36
@@ -995,8 +995,23 @@
*/
public List getPageDecoratorActions() throws Exception
{
+ // check page access
+ boolean readOnlyPageAccess = true;
+ try
+ {
+ getPage().checkAccess(Page.EDIT_ACTION);
+ readOnlyPageAccess = false;
+ }
+ catch (SecurityException se)
+ {
+ }
+
+ // determine cached actions state key
+ String key = "PAGE " + getPage().getId() + ":" +
this.getCurrentFragment().getId() +
+ ":" + (readOnlyPageAccess ? Page.VIEW_ACTION : Page.EDIT_ACTION
);
+
+ // get cached actions state
RequestContext context = Jetspeed.getCurrentRequestContext();
- String key = "PAGE" + getPage().getId() + ":" +
this.getCurrentFragment().getId() ;
Map sessionActions =
(Map)context.getSessionAttribute(POWER_TOOL_SESSION_ACTIONS);
if (null == sessionActions)
{
@@ -1024,19 +1039,26 @@
actionState.setPortletMode(mode);
}
-
List actions = actionState.getActions();
actions.clear();
+ // if there is no root fragment, return no actions
PortletDefinitionComposite portlet =
(PortletDefinitionComposite)
getCurrentPortletEntity().getPortletDefinition();
if (null == portlet)
{
- return actions; // allow nothing
+ return actions;
}
-
+
+ // if the page is being read only accessed, return no actions
+ if (readOnlyPageAccess)
+ {
+ return actions;
+ }
+
+ // generate standard page actions depending on
+ // portlet capabilities
ContentTypeSet content = portlet.getContentTypeSet();
-
if (mode.equals(PortletMode.VIEW.toString()))
{
if (content.supportsPortletMode(PortletMode.EDIT))
1.2 +4 -4
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/decorations/layout/html/ja/tigris/decorator-top.vm
Index: decorator-top.vm
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/decorations/layout/html/ja/tigris/decorator-top.vm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- decorator-top.vm 6 Nov 2004 22:27:24 -0000 1.1
+++ decorator-top.vm 19 Nov 2004 03:07:43 -0000 1.2
@@ -63,7 +63,7 @@
</div>
<div id="breadcrumbs">
#if($parentFolder)
- <a
href="$jetspeed.getAbsoluteUrl($parentFolder.url)">$parentFolder.metaData.getTitle($preferedLocale)へ戻る</a>
+ <a href="$jetspeed.getAbsoluteUrl($parentFolder.url)"
title="$parentFolder.getTitle($preferedLocale)">$parentFolder.getShortTitle($preferedLocale)へ戻る</a>
#end
</div>
@@ -86,8 +86,8 @@
#foreach($docSetName in $profiledPageContext.documentSetNames)
#set($docSet = $profiledPageContext.getDocumentSet($docSetName))
#set($docSetNodes = $profiledPageContext.getDocumentSetNodes($docSetName))
- <div class="pagetitle">
- ${docSet.getTitle($preferedLocale)}
+ <div class="pagetitle" title="$docSet.getTitle($preferedLocale)">
+ ${docSet.getShortTitle($preferedLocale)}
</div>
#includeNavigation("linksWithIcon1" $docSetNodes $TOP_TO_BOTTOM)
#end
1.5 +18 -0
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/page-manager.xml
Index: page-manager.xml
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/page-manager.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- page-manager.xml 19 Oct 2004 04:42:55 -0000 1.4
+++ page-manager.xml 19 Nov 2004 03:07:43 -0000 1.5
@@ -53,6 +53,15 @@
<constructor-arg index="4" ><ref
bean="PageFileCache"/></constructor-arg>
</bean>
+ <bean id="PageSecurityDocumentHandler"
+
class="org.apache.jetspeed.page.document.CastorFileSystemDocumentHandler" >
+ <constructor-arg
index="0"><value>/META-INF/page-mapping.xml</value></constructor-arg>
+ <constructor-arg
index="1"><value>page.security</value></constructor-arg>
+ <constructor-arg index="2"
><value>org.apache.jetspeed.om.page.PageSecurity</value></constructor-arg>
+ <constructor-arg index="3"
><value>${applicationRoot}/WEB-INF/pages</value></constructor-arg>
+ <constructor-arg index="4" ><ref
bean="PageFileCache"/></constructor-arg>
+ </bean>
+
<bean id="DocumentHandlerFactory"
class="org.apache.jetspeed.page.document.DocumentHandlerFactoryImpl"
>
<constructor-arg>
@@ -69,6 +78,9 @@
<entry key="folder.metadata">
<ref bean="FolderMetaDataDocumentHandler" />
</entry>
+ <entry key="page.security">
+ <ref bean="PageSecurityDocumentHandler" />
+ </entry>
</map>
</constructor-arg>
</bean>
@@ -89,8 +101,14 @@
<constructor-arg index="1"><ref
bean="DocumentHandlerFactory"/></constructor-arg>
<constructor-arg index="2"><ref
bean="FolderHandler"/></constructor-arg>
<constructor-arg index="3"><ref
bean="PageFileCache"/></constructor-arg>
+ <!-- size of profiled page context LRU cache, default=100 -->
<constructor-arg index="4"><value>100</value></constructor-arg>
+ <!-- profiling enabled flag, default=true -->
<constructor-arg index="5"><value>true</value></constructor-arg>
+ <!-- permissions security enabled flag, default=true -->
+ <constructor-arg index="6"><value>false</value></constructor-arg>
+ <!-- constraints security enabled flag, default=true -->
+ <constructor-arg index="7"><value>true</value></constructor-arg>
</bean>
</beans>
1.2 +13 -13
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_role/manager/folder.metadata
Index: folder.metadata
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/_role/manager/folder.metadata,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- folder.metadata 23 Sep 2004 19:56:13 -0000 1.1
+++ folder.metadata 19 Nov 2004 03:07:43 -0000 1.2
@@ -3,19 +3,19 @@
<title>[USER] Root Folder</title>
<metadata name="title" xml:lang="fr">[USER] Répertoire racine</metadata>
- <documentOrder>Google.link</documentOrder>
- <documentOrder>Jetspeed2.link</documentOrder>
+ <document-order>Google.link</document-order>
+ <document-order>Jetspeed2.link</document-order>
- <documentOrder>default-page.psml</documentOrder>
- <documentOrder>p001.psml</documentOrder>
- <documentOrder>p002.psml</documentOrder>
- <documentOrder>p003.psml</documentOrder>
- <documentOrder>p004.psml</documentOrder>
- <documentOrder>localeselector.psml</documentOrder>
- <documentOrder>jsf-demo.psml</documentOrder>
- <documentOrder>struts-demo.psml</documentOrder>
+ <document-order>default-page.psml</document-order>
+ <document-order>p001.psml</document-order>
+ <document-order>p002.psml</document-order>
+ <document-order>p003.psml</document-order>
+ <document-order>p004.psml</document-order>
+ <document-order>localeselector.psml</document-order>
+ <document-order>jsf-demo.psml</document-order>
+ <document-order>struts-demo.psml</document-order>
- <documentOrder>third-party</documentOrder>
- <documentOrder>non-java</documentOrder>
- <documentOrder>Administrative</documentOrder>
+ <document-order>third-party</document-order>
+ <document-order>non-java</document-order>
+ <document-order>Administrative</document-order>
</folder>
1.20 +19 -6
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java
Index: ProfilerValveImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- ProfilerValveImpl.java 3 Nov 2004 16:01:50 -0000 1.19
+++ ProfilerValveImpl.java 19 Nov 2004 03:07:43 -0000 1.20
@@ -21,6 +21,7 @@
import javax.security.auth.Subject;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -115,16 +116,28 @@
// continue
context.invokeNext(request);
}
- catch (NodeNotFoundException e)
+ catch (SecurityException se)
{
- log.error(e.getMessage(), e);
+ log.error(se.getMessage(), se);
try
{
- request.getResponse().sendError(404, e.getMessage());
+
request.getResponse().sendError(HttpServletResponse.SC_FORBIDDEN,
se.getMessage());
}
- catch (IOException e1)
+ catch (IOException ioe)
{
- log.error("Failed to invoke HttpServletReponse.sendError: "
+ e1.getMessage(), e1);
+ log.error("Failed to invoke HttpServletReponse.sendError: "
+ ioe.getMessage(), ioe);
+ }
+ }
+ catch (NodeNotFoundException nnfe)
+ {
+ log.error(nnfe.getMessage(), nnfe);
+ try
+ {
+
request.getResponse().sendError(HttpServletResponse.SC_NOT_FOUND,
nnfe.getMessage());
+ }
+ catch (IOException ioe)
+ {
+ log.error("Failed to invoke HttpServletReponse.sendError: "
+ ioe.getMessage(), ioe);
}
}
catch (Exception e)
1.16 +83 -113
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java
Index: PageAggregatorImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/impl/PageAggregatorImpl.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- PageAggregatorImpl.java 15 Oct 2004 21:44:32 -0000 1.15
+++ PageAggregatorImpl.java 19 Nov 2004 03:07:43 -0000 1.16
@@ -81,13 +81,6 @@
throw new JetspeedException("Failed to find PSML Pin
PageAggregator.build");
}
- //Set default acl
- String acl = page.getAcl();
- if (acl == null)
- {
- //TBD get system default acl;
- }
-
// Initialize fragment
Stack stack = new Stack();
Fragment currentFragment = page.getRootFragment();
@@ -149,138 +142,115 @@
///////////////////////////////////////////////////////////////////////////////////////////////
- if (checkAccess(context, (currentFragment.getAcl() != null) ?
currentFragment.getAcl() : acl, "render"))
+ // handle maximized state
+ NavigationalState nav =
context.getPortalURL().getNavigationalState();
+ PortletWindow window = nav.getMaximizedWindow();
+ if (null != window)
+ {
+ Fragment fragment =
page.getFragmentById(window.getId().toString());
+ if (fragment != null)
+ {
+
context.getRequest().setAttribute("org.apache.jetspeed.maximized.Fragment",
fragment);
+
context.getRequest().setAttribute("org.apache.jetspeed.maximized.Layout",
page.getRootFragment());
+
+ if(fragment.getDecorator() != null)
+ {
+ log.debug("decorator=" + currentFragment.getDecorator());
+ addStyle(context, fragment.getDecorator(),
Fragment.PORTLET);
+ }
+ else
+ {
+ log.debug("no decorator for defined for portlet
fragement," + currentFragment.getId()+". So using page default,
"+defaultPortletDecorator);
+ addStyle(context, defaultPortletDecorator,
Fragment.PORTLET);
+ }
+ renderer.renderNow(page.getRootFragment(), context);
+
+
context.getRequest().removeAttribute("org.apache.jetspeed.maximized.Fragment");
+
context.getRequest().removeAttribute("org.apache.jetspeed.maximized.Layout");
+ }
+ return;
+ }
+
+ // initializes the rendering stack with root children
+ // root fragement is always treated synchronously
+ for (Iterator i = currentFragment.getFragments().iterator();
i.hasNext();)
+ {
+ Fragment f = (Fragment) i.next();
+
+ if (!"hidden".equals(f.getState()))
+ {
+ stack.push(f);
+ }
+ }
+
+ // Walk through the Fragment tree, and start rendering "portlet" type
+ // fragment
+ while (!stack.isEmpty())
{
- // handle maximized state
- NavigationalState nav =
context.getPortalURL().getNavigationalState();
- PortletWindow window = nav.getMaximizedWindow();
- if (null != window)
+ currentFragment = (Fragment) stack.pop();
+
+ if (currentFragment.getType().equals("portlet"))
{
- Fragment fragment =
page.getFragmentById(window.getId().toString());
- if (fragment != null && checkAccess(context,
(fragment.getAcl() != null) ? fragment.getAcl() : acl, "render"))
+ // make the page aggreator less fragile
+ // by preventing failed rendering from screwing up the
+ // whole process
+ try
{
-
context.getRequest().setAttribute("org.apache.jetspeed.maximized.Fragment",
fragment);
-
context.getRequest().setAttribute("org.apache.jetspeed.maximized.Layout",
page.getRootFragment());
+ if (log.isDebugEnabled())
+ {
+ log.debug(
+ "Rendering portlet fragment: [[name, "
+ + currentFragment.getName()
+ + "], [id, "
+ + currentFragment.getId()
+ + "]]");
+ }
+ renderer.render(currentFragment, context);
+ if (strategy == STRATEGY_SEQUENTIAL)
+ {
+ ContentDispatcher dispatcher =
renderer.getDispatcher(context, false);
+ dispatcher.sync(currentFragment);
+ }
- if(fragment.getDecorator() != null)
+ if(currentFragment.getDecorator() != null)
{
log.debug("decorator=" +
currentFragment.getDecorator());
- addStyle(context, fragment.getDecorator(),
Fragment.PORTLET);
+ addStyle(context, currentFragment.getDecorator(),
Fragment.PORTLET);
}
else
{
log.debug("no decorator for defined for portlet
fragement," + currentFragment.getId()+". So using page default,
"+defaultPortletDecorator);
addStyle(context, defaultPortletDecorator,
Fragment.PORTLET);
}
- renderer.renderNow(page.getRootFragment(), context);
-
context.getRequest().removeAttribute("org.apache.jetspeed.maximized.Fragment");
-
context.getRequest().removeAttribute("org.apache.jetspeed.maximized.Layout");
}
- return;
+ catch (Exception e)
+ {
+ log.error("Failed to render portlet \"" +
currentFragment + "\": " + e.toString());
+ }
}
- // initializes the rendering stack with root children
- // root fragement is always treated synchronously
+ // push the children frgaments on the rendering stack
for (Iterator i = currentFragment.getFragments().iterator();
i.hasNext();)
{
Fragment f = (Fragment) i.next();
-
+
if (!"hidden".equals(f.getState()))
{
stack.push(f);
}
}
-
- // Walk through the Fragment tree, and start rendering "portlet"
type
- // fragment
- while (!stack.isEmpty())
- {
- currentFragment = (Fragment) stack.pop();
-
- if (checkAccess(context, ((currentFragment.getAcl() != null)
? currentFragment.getAcl() : acl), "render"))
- {
- if (currentFragment.getType().equals("portlet"))
- {
- // make the page aggreator less fragile
- // by preventing failed rendering from screwing up
the
- // whole process
- try
- {
- if (log.isDebugEnabled())
- {
- log.debug(
- "Rendering portlet fragment: [[name, "
- + currentFragment.getName()
- + "], [id, "
- + currentFragment.getId()
- + "]]");
- }
- renderer.render(currentFragment, context);
- if (strategy == STRATEGY_SEQUENTIAL)
- {
- ContentDispatcher dispatcher =
renderer.getDispatcher(context, false);
- dispatcher.sync(currentFragment);
- }
-
- if(currentFragment.getDecorator() != null)
- {
- log.debug("decorator=" +
currentFragment.getDecorator());
- addStyle(context,
currentFragment.getDecorator(), Fragment.PORTLET);
- }
- else
- {
- log.debug("no decorator for defined for
portlet fragement," + currentFragment.getId()+". So using page default,
"+defaultPortletDecorator);
- addStyle(context, defaultPortletDecorator,
Fragment.PORTLET);
- }
-
- }
- catch (Exception e)
- {
- log.error("Failed to render portlet \"" +
currentFragment + "\": " + e.toString());
- }
- }
-
- // push the children frgaments on the rendering stack
- for (Iterator i =
currentFragment.getFragments().iterator(); i.hasNext();)
- {
- Fragment f = (Fragment) i.next();
-
- if (!"hidden".equals(f.getState()))
- {
- stack.push(f);
- }
- }
- }
- else
- {
- log.warn("Access denied RENDER fragment " +
currentFragment);
- }
- }
-
- // Retrieves the content dispatcher appropriate for sequential
- // or parallel rendering
-
- ContentDispatcher dispatcher = renderer.getDispatcher(context,
(strategy == STRATEGY_PARALLEL));
-
- // Now synchronously trigger the rendering of the whole page
- renderer.renderNow(page.getRootFragment(), context);
}
- else
- {
- log.warn("Access denied RENDER page " + page);
- }
-
+
+ // Retrieves the content dispatcher appropriate for sequential
+ // or parallel rendering
+
+ ContentDispatcher dispatcher = renderer.getDispatcher(context,
(strategy == STRATEGY_PARALLEL));
+
+ // Now synchronously trigger the rendering of the whole page
+ renderer.renderNow(page.getRootFragment(), context);
}
- public boolean checkAccess(RequestContext context, String acl, String
action)
- {
- // This methid needs to be moved a secuity module.
- // Does nothing right now
- return true;
- }
-
-
private void addStyle(RequestContext context, String decoratorName,
String decoratorType)
{
Set cssUrls = (Set) context.getAttribute("cssUrls");
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]