svn commit: r741298 - in /lenya/trunk: org.apache.lenya.core.api/ org.apache.lenya.core.api/src/main/resources/ org.apache.lenya.core.api/src/main/resources/META-INF/ org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/ org.apache.lenya.core.a...

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Thu Feb  5 21:26:37 2009
New Revision: 741298

URL: http://svn.apache.org/viewvc?rev=741298&view=rev
Log:
Adding sitemap component declarations and dependencies for global sitemap.

Added:
    lenya/trunk/org.apache.lenya.core.api/src/main/resources/
    lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/
    lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/
    lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/avalon/
    lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/avalon/lenya-core-sitemap.xconf
    lenya/trunk/org.apache.lenya.module.svg/src/main/resources/
    lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/
    lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/
    lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/avalon/
    lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/avalon/lenya-module-svg-sitemap.xconf
    lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/global-sitemap.xmap
Modified:
    lenya/trunk/org.apache.lenya.core.api/pom.xml
    lenya/trunk/org.apache.lenya.core.usecase/src/main/resources/META-INF/cocoon/avalon/lenya-core-usecase-sitemap.xconf
    lenya/trunk/org.apache.lenya.parent/pom.xml
    lenya/trunk/org.apache.lenya.webapp/   (props changed)
    lenya/trunk/org.apache.lenya.webapp/pom.xml
    lenya/trunk/org.apache.lenya.welcome/   (props changed)
    lenya/trunk/org.apache.lenya.welcome/pom.xml
    lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/sitemap.xmap

Modified: lenya/trunk/org.apache.lenya.core.api/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/pom.xml?rev=741298&r1=741297&r2=741298&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.core.api/pom.xml Thu Feb  5 21:26:37 2009
@@ -31,7 +31,6 @@
     <dependency>
       <groupId>org.apache.cocoon</groupId>
       <artifactId>cocoon-flowscript-impl</artifactId>
-      <version>1.0.0</version>
     </dependency>
     <dependency>
       <groupId>commons-validator</groupId>
@@ -40,7 +39,10 @@
     <dependency>
       <groupId>org.apache.cocoon</groupId>
       <artifactId>cocoon-validation-impl</artifactId>
-      <version>1.0.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-serializers-impl</artifactId>
     </dependency>
   </dependencies>
 </project>

Added: lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/avalon/lenya-core-sitemap.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/avalon/lenya-core-sitemap.xconf?rev=741298&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/avalon/lenya-core-sitemap.xconf (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/resources/META-INF/cocoon/avalon/lenya-core-sitemap.xconf Thu Feb  5 21:26:37 2009
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<map:components xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+  <!-- Generators -->
+  <map:generators>
+    <map:generator label="content" logger="sitemap.generator.sessionattr" name="session-attr"
+      pool-max="16" src="org.apache.cocoon.generation.SessionAttributeGenerator"/>
+  </map:generators>
+
+
+  <!-- Serializers -->
+  <map:serializers>
+    <!-- this declaration is just to test if the patch has already been applied -->
+    <map:serializer name="patch-test" src="org.apache.cocoon.components.serializers.HTMLSerializer"/>
+
+    <map:serializer name="html" logger="sitemap.serializer.html"
+      mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32" pool-min="4"
+      src="org.apache.cocoon.components.serializers.HTMLSerializer">
+      <doctype-default>loose</doctype-default>
+      <encoding>UTF-8</encoding>
+    </map:serializer>
+
+    <map:serializer name="html-no-dtd" logger="sitemap.serializer.html-no-dtd"
+      mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32" pool-min="4"
+      src="org.apache.cocoon.serialization.HTMLSerializer">
+      <buffer-size>1024</buffer-size>
+    </map:serializer>
+
+    <map:serializer name="htmlnoi" logger="sitemap.serializer.htmlnoi"
+      mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32" pool-min="4"
+      src="org.apache.cocoon.serialization.HTMLSerializer">
+      <indent>no</indent>
+      <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>
+      <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>
+      <encoding>UTF-8</encoding>
+    </map:serializer>
+
+    <map:serializer name="xhtml" src="org.apache.cocoon.components.serializers.XHTMLSerializer"
+      mime-type="text/html; charset=utf-8" logger="sitemap.serializer.xhtml" pool-grow="2"
+      pool-max="64" pool-min="2">
+      <doctype-default>strict</doctype-default>
+      <encoding>UTF-8</encoding>
+    </map:serializer>
+
+    <map:serializer name="xml" logger="sitemap.serializer.xml" mime-type="text/xml; charset=utf-8"
+      src="org.apache.cocoon.components.serializers.XMLSerializer">
+      <encoding>UTF-8</encoding>
+    </map:serializer>
+
+    <map:serializer name="wml" logger="sitemap.serializer.wml" mime-type="text/vnd.wap.wml"
+      src="org.apache.cocoon.serialization.XMLSerializer">
+      <doctype-public>-//WAPFORUM//DTD WML 1.1//EN</doctype-public>
+      <doctype-system>http://www.wapforum.org/DTD/wml_1.1.xml</doctype-system>
+      <encoding>ASCII</encoding>
+      <omit-xml-declaration>yes</omit-xml-declaration>
+    </map:serializer>
+
+    <map:serializer name="text" logger="sitemap.serializer.text" mime-type="text/plain"
+      src="org.apache.cocoon.serialization.TextSerializer">
+      <encoding>UTF-8</encoding>
+    </map:serializer>
+
+  </map:serializers>
+
+  <!-- Matchers -->
+  <map:matchers>
+    <map:matcher name="agent-match" logger="sitemap.matcher.referer-match"
+      src="org.apache.cocoon.matching.WildcardHeaderMatcher">
+      <header-name>User-Agent</header-name>
+    </map:matcher>
+  </map:matchers>
+
+  <!-- Actions -->
+  <map:actions>
+    <map:action name="language-exists" logger="lenya.sitemap.action.language-exists"
+      src="org.apache.lenya.cms.cocoon.acting.LanguageExistsAction"/>
+    <map:action name="request-parameter-exists" logger="sitemap.action.requestParameterExists"
+      src="org.apache.cocoon.acting.RequestParameterExistsAction"/>
+    <map:action name="reserved-checkin"
+      src="org.apache.lenya.cms.cocoon.acting.ReservedCheckinAction"
+      logger="sitemap.action.reserved-checkin"/>
+    <map:action name="reserved-checkout"
+      src="org.apache.lenya.cms.cocoon.acting.ReservedCheckoutAction"
+      logger="sitemap.action.reserved-checkout"/>
+    <map:action name="reserved-checkout-test"
+      src="org.apache.lenya.cms.cocoon.acting.ReservedCheckoutTestAction"
+      logger="sitemap.action.reserved-checkout-test"/>
+    <map:action name="discover-checkout"
+      src="org.apache.lenya.cms.cocoon.acting.DiscoverCheckoutAction"
+      logger="sitemap.action.discover-checkout"/>
+    <map:action name="set-header" logger="sitemap.action.set-header"
+      src="org.apache.cocoon.acting.HttpHeaderAction"/>
+    <map:action name="resource-exists" logger="sitemap.action.resource-exists"
+      src="org.apache.cocoon.acting.ResourceExistsAction"/>
+    <map:action name="resource-exists-enhanced" logger="sitemap.action.resource-exists-enhanced"
+      src="org.apache.lenya.cms.cocoon.acting.ResourceExistsAction"/>
+    <map:action name="session-propagator" logger="sitemap.action.session-propagator"
+      src="org.apache.cocoon.acting.SessionPropagatorAction"/>
+  </map:actions>
+
+</map:components>

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/resources/META-INF/cocoon/avalon/lenya-core-usecase-sitemap.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/resources/META-INF/cocoon/avalon/lenya-core-usecase-sitemap.xconf?rev=741298&r1=741297&r2=741298&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/resources/META-INF/cocoon/avalon/lenya-core-usecase-sitemap.xconf (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/resources/META-INF/cocoon/avalon/lenya-core-usecase-sitemap.xconf Thu Feb  5 21:26:37 2009
@@ -20,5 +20,7 @@
     <map:matcher name="usecase" logger="sitemap.matcher.usecase" src="org.apache.cocoon.matching.WildcardRequestParameterMatcher">
       <parameter-name>lenya.usecase</parameter-name>
     </map:matcher>
+    <map:matcher name="registered-usecase" logger="sitemap.matcher.registered-usecase"
+      src="org.apache.lenya.cms.cocoon.matching.UsecaseRegistrationMatcher"/>
   </map:matchers>
 </map:components>

Added: lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/avalon/lenya-module-svg-sitemap.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/avalon/lenya-module-svg-sitemap.xconf?rev=741298&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/avalon/lenya-module-svg-sitemap.xconf (added)
+++ lenya/trunk/org.apache.lenya.module.svg/src/main/resources/META-INF/cocoon/avalon/lenya-module-svg-sitemap.xconf Thu Feb  5 21:26:37 2009
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<map:components xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+  <map:serializers>
+    <map:serializer name="svgxml" logger="sitemap.serializer.svgxml" mime-type="image/svg-xml" src="org.apache.cocoon.serialization.XMLSerializer">
+      <doctype-public>-//W3C//DTD SVG 20000303 Stylable//EN</doctype-public>
+      <doctype-system>http://www.w3.org/TR/2000/03/WD-SVG-20000303/</doctype-system>
+    </map:serializer>
+    <map:serializer name="svg2jpeg" logger="sitemap.serializer.svg2png" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
+      <parameter name="quality" type="float" value="0.9"/>
+    </map:serializer>
+    <map:serializer name="svg2png" logger="sitemap.serializer.svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer"/>
+    <map:serializer name="svg2tiff" logger="sitemap.serializer.svg2tiff" mime-type="image/tiff" src="org.apache.cocoon.serialization.SVGSerializer"/>
+  </map:serializers>
+</map:components>
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.parent/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.parent/pom.xml?rev=741298&r1=741297&r2=741298&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.parent/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.parent/pom.xml Thu Feb  5 21:26:37 2009
@@ -32,7 +32,10 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
+          <version>2.0.2</version>
+          <!--
           <version>2.1-alpha-2</version>
+          -->
         </plugin>
         <!--
         <plugin>
@@ -227,6 +230,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.cocoon</groupId>
+        <artifactId>cocoon-serializers-impl</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.cocoon</groupId>
         <artifactId>cocoon-sitemap-impl</artifactId>
         <version>1.1.0-SNAPSHOT</version>
       </dependency>
@@ -235,6 +243,11 @@
         <artifactId>cocoon-samples-style-default</artifactId>
         <version>1.0.0-SNAPSHOT</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.cocoon</groupId>
+        <artifactId>cocoon-validation-impl</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+      </dependency>
       
       <!-- Lenya -->
       <dependency>

Propchange: lenya/trunk/org.apache.lenya.webapp/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Feb  5 21:26:37 2009
@@ -0,0 +1,7 @@
+target
+.project
+.classpath
+.settings
+profiles.xml
+bin
+

Modified: lenya/trunk/org.apache.lenya.webapp/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.webapp/pom.xml?rev=741298&r1=741297&r2=741298&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.webapp/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.webapp/pom.xml Thu Feb  5 21:26:37 2009
@@ -28,7 +28,7 @@
   <artifactId>lenya-webapp</artifactId>
   <version>2.2.0-SNAPSHOT</version>
   <packaging>war</packaging>
-  <name>Lenya Webapp</name>
+  <name>Apache Lenya Webapp</name>
 
   <build>
     <plugins>
@@ -52,6 +52,7 @@
   </build>
 
   <dependencies>
+    
     <!-- Cocoon Core -->
     <dependency>
       <groupId>org.apache.cocoon</groupId>

Propchange: lenya/trunk/org.apache.lenya.welcome/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Feb  5 21:26:37 2009
@@ -0,0 +1,6 @@
+target
+.project
+.classpath
+.settings
+profiles.xml
+bin

Modified: lenya/trunk/org.apache.lenya.welcome/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.welcome/pom.xml?rev=741298&r1=741297&r2=741298&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.welcome/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.welcome/pom.xml Thu Feb  5 21:26:37 2009
@@ -30,7 +30,7 @@
   </parent>
   <artifactId>lenya-welcome</artifactId>
   <version>2.2.0-SNAPSHOT</version>  
-  <name>Lenya Welcome Page</name>
+  <name>Apache Lenya Welcome Page</name>
   
   <build>
     <plugins>
@@ -64,5 +64,9 @@
       <groupId>org.apache.cocoon</groupId>
       <artifactId>cocoon-samples-style-default</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.lenya</groupId>
+      <artifactId>lenya-core-api</artifactId>
+    </dependency>
   </dependencies>
 </project>

Added: lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/global-sitemap.xmap
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/global-sitemap.xmap?rev=741298&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/global-sitemap.xmap (added)
+++ lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/global-sitemap.xmap Thu Feb  5 21:26:37 2009
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+    
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+  <map:resources>
+
+    <map:resource name="style-cms-page">
+      <map:transform type="i18n">      
+        <map:parameter name="locale" value="{request:locale}"/>
+      </map:transform>    
+      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
+      <map:transform type="proxy"/>
+      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
+      <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
+    </map:resource>  
+
+    <map:resource name="i18n">
+      <map:transform type="i18n">
+        <map:parameter name="locale" value="{request:locale}"/>
+      </map:transform>
+    </map:resource>
+
+    <!-- do proxy transformation on css files for url('') links -->
+    <map:resource name="proxy-css">
+      <map:act type="resource-exists"
+        src="{url}.xml">
+        <map:generate src="{../url}.xml"/>
+        <map:transform src="fallback://lenya/resources/css/css.xsl">
+          <map:parameter name="root" value="/{page-envelope:publication-id}/{page-envelope:area}"/>
+        </map:transform>
+        <map:call resource="prepare-proxy-css"/>
+      </map:act>
+      <map:generate type="text" src="{url}.css"/>
+      <map:call resource="prepare-proxy-css"/>
+    </map:resource>
+
+    <!-- 
+      chaperon magic: parse css files, convert url('') links into xml snippets, feed them
+      to the standard proxy transformer, then convert the intermediate xml back to valid css.
+    -->
+    <map:resource name="prepare-proxy-css">
+      <map:transform type="pattern"
+        src="fallback://lenya/chaperon/grammars/link.xlex"/>
+      <map:transform
+        src="fallback://lenya/chaperon/stylesheets/pattern-to-link.xsl"/>
+      <map:transform type="proxy"/>
+      <map:transform
+        src="fallback://lenya/chaperon/stylesheets/a-to-txt.xsl"/>
+      <map:serialize type="text" mime-type="text/css"/>
+    </map:resource>
+
+  </map:resources>
+
+
+
+  <map:pipelines>
+  
+    <map:component-configurations>
+      <global-variables>
+        <!-- 
+          pipeline expiration time (governs the setting of "expires" headers for browser-side
+          caching), see http://cocoon.apache.org/2.1/userdocs/concepts/caching.html
+        -->
+        <pipeline-expiration>now</pipeline-expiration>
+      </global-variables>
+    </map:component-configurations>
+  
+    <!-- create a list of publications for the global welcome page: -->  
+    <map:pipeline>
+      <map:match pattern="aggregate-publications">
+        <map:generate type="directory" src="lenya/pubs"/>
+        <map:transform src="lenya/xslt/util/aggregate-publications.xsl"/>
+        <map:transform type="xinclude"/>
+        <map:serialize type="xml"/>
+      </map:match>
+    </map:pipeline>
+
+    <!-- FIXME: this should go into a cforms support module -->
+
+    <map:pipeline>
+      <map:match pattern="cforms/ajax/**">
+        <map:read src="resource://org/apache/cocoon/ajax/resources/{1}"/>
+      </map:match>
+    </map:pipeline>   
+    <map:pipeline>
+      <map:match pattern="cforms/dojo/**">
+        <map:read src="resource://org/apache/cocoon/dojo/resources/{1}"/>
+      </map:match>
+    </map:pipeline> 
+    <map:pipeline>
+      <map:match pattern="cforms/forms/**">
+        <map:read src="resource://org/apache/cocoon/forms/resources/{1}"/>
+      </map:match>
+    </map:pipeline>
+
+
+    <map:pipeline>
+      <!-- serve "lenya/" resources (GUI and utilities) -->
+      <map:match pattern="lenya/**">
+        <map:mount uri-prefix="lenya" src="lenya/lenya.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
+      </map:match>
+    </map:pipeline>
+
+    <!-- Menu generation: -->
+    <map:pipeline internal-only="true">
+
+      <!-- Generate a meta-stylesheet that adds the Lenya GUI menu to pages -->
+      <!-- lenya-page/{publication-id}/{area}/... -->
+      <map:match pattern="lenya-page/*/*/**">
+        <map:generate src="cocoon://modules/menubar/{1}/{2}/lenyaGui.xsl"/>
+        <map:serialize type="xml"/>
+      </map:match>
+      
+      <!-- FIXME: this is currently unused -->
+      <!-- Access Control Policies -->
+<!--
+      <map:match pattern="*/policies/**">
+        <map:mount uri-prefix="{1}/policies" src="lenya/pubs/{1}/policies-sitemap.xmap" check-reload="true" reload-method="synchron" pass-through="true"/>
+      </map:match>
+-->
+    </map:pipeline>
+
+
+    <!-- Module requests -->
+    
+    <!-- an extra handler for internal module requests to avoid the resource-exists check 
+         in the external requests matcher
+         FIXME: is the overhead reduction worth the extra complication?
+         FIXME: doesn't this mean that internal requests aren't served statically (see below) and
+         resources might not even be available to internal requests if the module sitemap doesn't
+         handle them?
+    -->
+    <map:pipeline internal-only="true">
+      <map:match pattern="modules/*/**">
+        <map:mount uri-prefix="modules/{1}/" src="{fallback:lenya/modules/{1}/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+      <map:match pattern="*/modules/*/**">
+        <map:mount uri-prefix="{1}/modules/{2}/" src="{fallback:lenya/modules/{2}/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+    </map:pipeline>
+
+
+    <map:pipeline>
+
+      <map:match pattern="modules/*/**">
+        <map:select type="resource-exists">
+          <!-- resource exists - serve statically -->
+          <map:when test="fallback://lenya/modules/{1}/resources/{2}">
+            <map:mount uri-prefix="modules/" src="{fallback:lenya/module-resources.xmap}" check-reload="true" reload-method="synchron" pass-through="true"/>
+          </map:when>
+        </map:select>
+        <!-- resource doesn't exist or not handled by lenya/module-resources.xmap 
+             - delegate to module -->
+        <map:mount uri-prefix="modules/{1}/" src="{fallback:lenya/modules/{1}/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+
+      <!-- Publication specific Module requests -->
+      <!-- NOTE: the use of publication-specific modules is discouraged, since all modules are actually in one global scope.. -->
+      <!-- {publication-id}/modules/{module-id}/... -->
+      <map:match pattern="*/modules/*/**">
+        <map:select type="resource-exists">
+          <!-- resource exists - serve statically -->
+          <map:when test="fallback://lenya/modules/{2}/resources/{3}">
+            <map:mount uri-prefix="{1}/modules/" src="{fallback:lenya/module-resources.xmap}" check-reload="true" reload-method="synchron" pass-through="true"/>
+          </map:when>
+        </map:select>
+        <!-- resource doesn't exist or not handled by lenya/module-resources.xmap 
+             - delegate to module -->
+        <map:mount uri-prefix="{1}/modules/{2}/" src="{fallback:lenya/modules/{2}/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+
+    </map:pipeline>
+
+    <!-- Internal usecases -->
+    <!-- 
+       We match internal requests to the publication sitemap early to avoid the
+       time-consuming resource-exists operations in the subsequent pipelines
+       before the final publication matcher is reached.
+    -->
+    <map:pipeline internal-only="true">
+      <map:match pattern="*/**">
+        <map:mount uri-prefix="{1}" src="{fallback:sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+    </map:pipeline>
+
+    <map:pipeline>
+
+      <!-- enter a module via request parameter -->
+      <map:match type="request-parameter" pattern="lenya.module">
+        <map:mount uri-prefix="" src="{fallback:lenya/modules/{1}/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+
+      <!-- delegate usecases to the usecase sitemap -->
+      <map:match type="usecase" pattern="*">
+        <map:mount uri-prefix="" src="lenya/usecase.xmap" check-reload="true" reload-method="synchron"/>
+      </map:match>
+
+    </map:pipeline>
+
+    <map:pipeline>
+
+      <!-- the Lenya welcome page with a list of available publications -->
+      <map:match pattern="index.html">
+        <map:aggregate element="aggregation-wrapper" label="aggregate">
+          <map:part src="cocoon:/aggregate-publications"/>
+          <map:part src="lenya/content/welcome.xml"/>
+          <map:part src="readme.xml"/>
+        </map:aggregate>
+        <map:transform src="lenya/xslt/util/welcome.xsl"/>
+        <map:call resource="style-cms-page"/>
+        <map:serialize />
+      </map:match>
+
+      <!-- any root-level request is directed to the welcome page -->
+      <map:match pattern="*">
+        <map:redirect-to uri="{proxy:/index.html}"/>
+      </map:match>
+
+      <!-- FIXME: this is apparently WebDAV-related. Does it have to be here, and what does it do? -->
+      <map:match pattern="*">
+        <map:select type="request-method">
+          <map:when test="PROPFIND">
+            <map:generate type="file" src="context://lenya/content/util/empty.xml"/>
+            <map:transform src="fallback://lenya/modules/webdav/xslt/init.xsl">
+              <map:parameter name="pubid" value="{page-envelope:publication-id}"/>
+              <map:parameter name="context" value="{request:contextPath}"/>
+            </map:transform>
+            <map:serialize type="xml" status-code="207"/>
+          </map:when>
+          <map:when test="OPTIONS">
+            <map:mount uri-prefix="" src="{fallback:lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+          </map:when>
+        </map:select>
+      </map:match> 
+      <map:match pattern="{page-envelope:publication-id}/">
+        <map:select type="request-method">
+          <map:when test="PROPFIND">
+           <map:generate type="file" src="context://lenya/content/util/empty.xml"/>
+            <map:transform src="fallback://lenya/modules/webdav/xslt/init.xsl">
+              <map:parameter name="pubid" value="{page-envelope:publication-id}"/>
+              <map:parameter name="context" value="{request:contextPath}"/>            
+            </map:transform>
+            <map:serialize type="xml" status-code="207"/>
+          </map:when>
+          <map:when test="OPTIONS">
+            <map:mount uri-prefix="" src="{fallback:lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+          </map:when>
+        </map:select>
+      </map:match>
+
+      <!-- redirect publication root requests to the publication's welcome page -->
+      <map:match pattern="*/">
+        <map:redirect-to uri="{proxy:/introduction.html}"/>
+      </map:match>
+      <map:match pattern="*/index.html">
+        <map:redirect-to uri="{proxy:/introduction.html}"/>
+      </map:match>
+
+      <!-- generate welcome pages for each publication with an aggregation of relevant READMEs -->
+      <map:match pattern="*/introduction.html">
+        <map:aggregate element="aggregation-wrapper">
+          <map:part src="aggregate-fallback://readme.xml"/>
+          <map:part src="lenya/pubs/{1}/config/publication.xml"/>
+        </map:aggregate>
+        <map:transform src="lenya/xslt/util/introduction.xsl"/>
+        <map:call resource="style-cms-page"/>
+        <map:serialize />
+      </map:match>
+     
+    </map:pipeline>
+  
+    <!-- an extra handler for internal publication requests to avoid the resource-exists check 
+         in the external requests matcher -->
+    <!-- FIXME: see comments for internal module request matcher above. -->
+    <map:pipeline internal-only="true">
+      <map:match pattern="*/**">
+        <map:mount uri-prefix="{1}" src="{fallback:sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+      </map:match>
+    </map:pipeline>
+
+    <map:pipeline>
+
+      <!-- Resources -->
+      <!-- FIXME: doesn't this create a hefty overhead for all publication documents? -->
+      <!-- {publication-id}/{area}/{file} -->
+      <map:match pattern="*/*/**">
+        <map:act type="resource-exists-enhanced">
+          <map:parameter name="url" value="fallback://resources/{2}/{3}"/>
+          <map:parameter name="type" value="file"/>
+          <map:mount uri-prefix="" src="{fallback:lenya/resources.xmap}" check-reload="true" reload-method="synchron"/>
+        </map:act>
+        <!-- FIXME: please document the "shared" resources concept. Or maybe we can ditch it? -->
+        <map:act type="resource-exists-enhanced">
+          <map:parameter name="url" value="fallback://resources/shared/{3}"/>
+          <map:parameter name="type" value="file"/>
+          <map:mount uri-prefix="" src="{fallback:lenya/resources-shared.xmap}" check-reload="true" reload-method="synchron"/>
+        </map:act>
+        <!-- Ancestors resources, css, js, etc... -->
+        <!-- {publication-id}/{area}/{filename}.inherited.{extention} -->
+        <!-- FIXME: what is this mechanism used for? please document or provide a pointer to existing docs -->
+        <map:match pattern="*/*/**.inherited.*">
+          <map:act type="resource-exists-enhanced">
+            <map:parameter name="url" value="template-fallback://resources/shared/{3}.{4}"/>
+            <map:parameter name="type" value="file"/>
+            <map:mount uri-prefix="" src="{fallback:lenya/resources-shared.xmap}" check-reload="true" reload-method="synchron"/>
+          </map:act>
+        </map:match>
+      </map:match>
+
+     <!-- delegate publication requests to the publication sitemap -->
+     <map:match pattern="*/**">
+       <map:select type="parameter">
+         <map:parameter name="parameter-selector-test" value="{page-envelope:publication-id}"/>
+         <map:when test="">
+           <map:generate type="jx" src="lenya/content/exception/publication-does-not-exist.jx">
+             <map:parameter name="publicationId" value="{1}"/>
+           </map:generate>
+           <map:transform type="i18n">
+             <map:parameter name="locale" value="{request:locale}"></map:parameter>
+           </map:transform>
+           <map:call resource="style-cms-page"/>
+           <map:serialize status-code="404" />
+         </map:when>
+         <map:otherwise>
+           <map:mount uri-prefix="{1}" src="{fallback:sitemap.xmap}" check-reload="true" reload-method="synchron"/>
+         </map:otherwise>
+       </map:select>
+     </map:match>
+   </map:pipeline>
+
+</map:pipelines>
+
+</map:sitemap>

Modified: lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/sitemap.xmap
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/sitemap.xmap?rev=741298&r1=741297&r2=741298&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/sitemap.xmap (original)
+++ lenya/trunk/org.apache.lenya.welcome/src/main/resources/COB-INF/sitemap.xmap Thu Feb  5 21:26:37 2009
@@ -15,314 +15,102 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-
-<!--+
-    | This is the 'heart' of Cocoon. The sitemap maps URI space to
-    | resources. It consists basicaly of two parts: components and
-    | pipelines. Pipelines are made out of components. There is such a
-    | vast number of components available that it would be impossible to
-    | describe them here, please refer to the accompanying
-    | documentation. For specific components, have a look also at the
-    | javadocs for them. Most pipelines are present to demonstrate some
-    | feature or technique, often they are explained in more detail in
-    | the accompanying documentation. The sitemaps which come with each
-    | sample and each block will help to explain.
-    |
-    | $Id: sitemap.xmap 606325 2007-12-21 21:33:51Z vgritsenko $
-    +-->
+    
 <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-
-  <!-- =========================== Components =========================== -->
-
-  <map:components>
-
-   <!--+
-       | All needed components are inherited from the parent container
-       | configured in META-INF/cocoon/avalon/*.xconf and
-       | META-INF/cocoon/spring/*.xml files (if using default configuration).
-       +-->
-
-  </map:components>
-
-
-  <!-- =========================== Views ================================ -->
-
-  <!--+
-      | Views provide different, well, views to resources. Views are
-      | orthogonal to pipelines. Please refer to the docs.
-      |
-      | It would be wise to disable any unneeded views in a
-      | production environment in order to avoid exposing data
-      | that you may not necessarily wish to.
-      +-->
-  <map:views>
-    <map:view from-label="content" name="content">
-      <map:serialize type="xml"/>
-    </map:view>
-
-    <map:view from-label="content" name="pretty-content">
-      <!--+
-          | Use servlet service serializer from the named block 'style'.
-          | Name 'style' is mapped to the 'cocoon-samples-style-default' block
-          | in the META-INF/cocoon/spring/lenya-welcome-blockServlet.xml file.
-          +-->
-      <map:serialize type="servletService">
-        <map:parameter name="service" value="servlet:style:/service/system/xml2html"/>
-      </map:serialize>
-    </map:view>
-
-    <map:view from-position="last" name="links">
-      <map:serialize type="links"/>
-    </map:view>
-  </map:views>
-
-
-  <!-- =========================== Resources ============================ -->
-
-  <!--+
-      | Resources are pipeline fragments that may be used from different
-      | pipeline fragments. For our needs, they behave exactly like
-      | pipelines, only that they are not accessible from outside.
-      | Hence I will explain what's inside below for pipelines.
-      +-->
+  
   <map:resources>
+    <map:resource name="style-cms-page">
+      <map:transform type="i18n">      
+        <map:parameter name="locale" value="{request:locale}"/>
+      </map:transform>    
+      <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
+      <map:transform type="proxy"/>
+      <map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
+    </map:resource>
   </map:resources>
-
-
-  <!-- =========================== Action sets ========================== -->
-
-  <!--+
-      | Action sets group actions together. If some actions are often used
-      | together in pipeline fragments, it's easier to group them and refer
-      | to the group. For more info, please see the docs.
-      +-->
-  <map:action-sets>
-  </map:action-sets>
-
-
-  <!-- =========================== Pipelines ============================ -->
-
-  <!--+
-      | Pipelines. The beef. Pipelines specify how the processing of your
-      | content is done. Usually, a pipeline consists of several fragments
-      | that specify the generation, transformation, and serialization of
-      | SAX events.
-      |
-      | Processing is done in two steps:
-      |
-      | 1) The top level elements are executed in order of appearance until
-      |    one signals success. These top level elements are usually
-      |    matchers.
-      |
-      |    Other components are called depth-first to determine what
-      |    fragments make up the processing pipeline. When a component
-      |    fails, no nested components are called but the next component on
-      |    the same level.
-      |
-      | 2) Once it is determined which generator, which transformers and
-      |    wich serializer is used, these components are executed. During
-      |    this, the pipeline may not be changed.
-      |
-      | You may have as many pipelines in your sitemap as you like.
-      +-->
+  
   <map:pipelines>
-    <!-- main pipeline -->
-    <map:pipeline>
-
-      <!--
-        - Match current sitemap URI against specified pattern.
-        - Here we are using empty pattern, "". If URI matches
-        - (if it is empty), nested instructions are exectuted,
-        - thus assembling the welcome page.  
-        -->
-      <map:match pattern="">
-
-        <!--+
-            | Start generating SAX events inside the pipeline. In this case,
-            | since no "type" attribute is specified, the default generator
-            | is used and this is a regular XML parser that reads the
-            | given file from the URL included in the "src" attribute and
-            | sends the events produced by the parser down the pipeline to
-            | be processed by the next stage.
-            +-->
-        <map:generate src="welcome.xml" label="content, pretty-content"/>
-
-        <!--+
-            | The serializer concludes the SAX events journey into the pipeline
-            | since it serializes the events it receives into a representation
-            | depending on the serializer type.
-            +-->
-        <map:serialize type="servletService">
-          <map:parameter name="service" value="servlet:style:/service/common/simple-page2html"/>
-        </map:serialize>
-      </map:match>
-
-      <!--+
-          | Show this sitemap.xmap file.
-          +-->
-      <map:match pattern="sitemap.xmap">
-        <map:read src="sitemap.xmap" mime-type="text/xml"/>
-      </map:match>
-
-      <!--+
-          | The default matching is also capable of matching more than a
-          | single request by the use of 'wildcards'. There are two kinds of
-          | wildcards:
-          |
-          |  "*" means "anything that does not contain a path separator"
-          |  "**" means "anything including path separators"
-          |
-          | The tokens matched by the wildcards are passed over as sitemap
-          | variables. Those variables can be accessed using the '{...}' syntax
-          | inside the attributes. The URI-matching tokens are associated to
-          | numbered variables, as shown in the following match that processes all
-          | the GIF images that are located in the 'images/' URL space but
-          | not in any deeper levels. Note how requesting "images/logo.gif"
-          | triggers the matcher to create the token {1} = 'logo' which is later
-          | expanded into the src="" attribute of the reader, indicating
-          | what file it has to read.
-          +-->
-
-      <!--+
-          | Mount user directories.
-          |
-          | The location of user directories depends heavily on the operating
-          | system used. Here we try to detect if we are running on one of 3
-          | most used platforms and mount appropriate home directory.
-          |
-          | NOTE: You might want to comment out this entire section in a
-          |       production environment.
-          +-->
-      <map:match pattern="~*/**">
-        <map:select type="resource-exists">
-          <!-- macosx -->
-          <map:when test="/Users/">
-            <map:mount src="/Users/{1}/Sites/" uri-prefix="~{1}"/>
-          </map:when>
-          <!-- unix -->
-          <map:when test="/home/">
-            <map:mount src="/home/{1}/public_html/" uri-prefix="~{1}"/>
-          </map:when>
-          <!-- win32 -->
-          <map:when test="/Documents and Settings/">
-            <map:mount src="/Documents and Settings/{1}/My Documents/My Website/" uri-prefix="~{1}"/>
-          </map:when>
-        </map:select>
-      </map:match>
-
-      <!--+
-          | Redirect to the user directory if the ending slash is missing
-          | Cocoon doesn't do automatic translation of URLs because we consider it
-          | a bad practice. http://blah/something/ and http://blah/something
-          | effectively locate different web resources and the act of mapping
-          | them to the same system resources is your concern, not Cocoon's.
-          | Note that some stupid browsers (IE, for example) believe the opposite
-          | and will drop the ending slash when you bookmark a web resource
-          | so be aware of this issue and plan your URL-space carefully.
-          +-->
-      <map:match pattern="~*">
-        <map:redirect-to uri="{0}/"/>
+    
+    <map:pipeline internal-only="true">
+      
+      <!-- Lenya GUI screen -->
+      <map:match pattern="lenya-screen.xsl">
+        <map:generate src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
+        <map:serialize type="xml"/>
+      </map:match>
+      
+      <map:match pattern="**">
+        <map:mount check-reload="true" reload-method="synchron" src="global-sitemap.xmap" uri-prefix=""/>
       </map:match>
-
-      <!--+
-          | Find a match in the "mount-table.xml" file, if present. It allows to mount other
-          | directories without touching this main sitemap (and thus loosing changes on rebuild).
-          |
-          | Note that other mount-tables can be added here using the xpatch ant task
-          | (see src/confpatch/mount-table.xmap)
-          +-->
-      <!--
-        Disabled while working on OSGI stuff, this wouldn't work anyway
-        (due to the ../) and it causes an NPE in the MountTableMatcher
-      <map:match type="mount-table" pattern="../../mount-table.xml">
-        <map:mount src="{src}" uri-prefix="{uri-prefix}"/>
-      </map:match>
-      -->
-
-      <!--+
-          | Cocoon-provided client-side resources.
-          | Some block's jar files (e.g. Ajax & Forms) include client-side resources
-          | such as JavaScript, CSS and images. The system-level pattern below
-          | fetches these resources, while allowing them to be overridden if needed
-          | in the webapp's "resources" directory.
-          |
-          | Defining this pattern in the root sitemap avoids duplicating it in subsitemaps,
-          | which reduces copy/pasting in application code and allows better client-side
-          | caching by giving each resource a single URL.
-          |
-          | Furthermore, some Cocoon code such as the Forms-provided XSLs assume that
-          | resources are available at that URL.
-          |
-          | The absolute path for these resources is "{request:contextPath}/_cocoon/resources"
-          +-->
-      <map:match pattern="_cocoon/resources/*/**">
-        <map:select type="resource-exists">
-          <map:when test="resources/{1}/{2}">
-            <map:read src="resources/{1}/{2}"/>
-          </map:when>
-          <!-- For Cocoon development, read directly from source directories
-          <map:when test="../../src/blocks/{1}/java/org/apache/cocoon/{1}/resources/{2}">
-            <map:read src="../../src/blocks/{1}/java/org/apache/cocoon/{1}/resources/{2}"/>
-	        </map:when>
-		      -->
-          <map:otherwise>
-            <map:read src="resource://org/apache/cocoon/{1}/resources/{2}"/>
-          </map:otherwise>
-        </map:select>
-      </map:match>
-
-      <!--+
-          | Mount everything else by calling the sitemap.xmap file located
-          | in the requested folder.
-          +-->
-      <map:match pattern="*/**">
-        <map:mount src="{1}/" uri-prefix="{1}"/>
+      
+    </map:pipeline>
+    
+    <map:pipeline>
+      
+      <map:match pattern="ac.login" type="usecase">
+        <map:mount check-reload="yes" reload-method="synchron" src="{fallback:lenya/modules/usecase/usecase.xmap}" uri-prefix=""/>
+      </map:match>
+      <map:match pattern="ac.logout" type="usecase">
+        <map:mount check-reload="yes" reload-method="synchron" src="{fallback:lenya/modules/usecase/usecase.xmap}" uri-prefix=""/>
+      </map:match>
+      
+      <!-- favicon -->
+      <map:match pattern="favicon.ico">
+        <map:read mime-type="image/x-icon" src="lenya/resources/images/lenya.ico"/>
       </map:match>
-
-      <!--+
-          | In every pipeline, you can catch the errors triggered
-          | by the pipeline execution. The error handler is an internal sitemap
-          | component that, when triggered by an error, takes over the normal
-          | pipeline execution.
-          | You can here use the "exception" generator that produces an XML
-          | representation of the error and further manipulate this document
-          | for presentation on screen.
-          | You can also use any other generator if you don't want the
-          | error to be displayed on screen. The "exception" selector can help
-          | you to define different screens for different error types.
-          +-->
-      <map:handle-errors>
-        <map:select type="exception">
-
-          <map:when test="not-found">
-            <map:generate type="exception"/>
-            <map:transform src="servlet:style:/stylesheets/system/exception2html.xslt">
-              <map:parameter name="realPath" value="{realpath:}"/>
-              <map:parameter name="pageTitle" value="Resource not found"/>
-            </map:transform>
-            <map:serialize status-code="404"/>
-          </map:when>
-
-          <map:when test="invalid-continuation">
-            <map:generate type="exception"/>
-            <map:transform src="servlet:style:/stylesheets/system/exception2html.xslt">
-              <map:parameter name="realPath" value="{realpath:}"/>
-              <map:parameter name="pageTitle" value="Invalid Continuation"/>
-            </map:transform>
-            <map:serialize status-code="404"/>
-          </map:when>
-
-          <map:otherwise>
-            <map:generate type="exception"/>
-            <map:transform src="servlet:style:/stylesheets/system/exception2html.xslt">
-              <map:parameter name="realPath" value="{realpath:}"/>
+    </map:pipeline>
+    
+    <map:pipeline>
+      
+      <map:match pattern="**">
+        
+        <!-- redirect to SSL if the policy requires this -->
+        <map:act type="ssl-redirect">
+          <map:redirect-to uri="{redirectUri}" session="true"/>
+        </map:act>
+        
+        <map:match pattern="*/webdav**">
+          <map:act type="authorizer">
+            <map:mount check-reload="true" reload-method="synchron" src="global-sitemap.xmap" uri-prefix=""/> 
+          </map:act>
+          <map:act type="authenticator">
+            <map:act type="authorizer">
+              <map:mount uri-prefix="" src="global-sitemap.xmap" check-reload="true" reload-method="synchron"/> 
+            </map:act>
+            <map:act type="set-header">
+              <map:parameter name="WWW-Authenticate" value="Basic Realm=lenya" />
+              <map:generate src="context://lenya/content/util/empty.xml" />
+              <map:transform src="fallback://lenya/xslt/exception/forbidden.xsl">
+                <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>
+                <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
+                <map:parameter name="area" value="{page-envelope:area}"/>
+              </map:transform>
+              <map:serialize type="xhtml" status-code="401"/>
+            </map:act>
+          </map:act>
+          <map:act type="set-header">
+            <map:parameter name="WWW-Authenticate" value="Basic Realm=lenya" />
+            <map:generate src="context://lenya/content/util/empty.xml" />
+            <map:transform src="fallback://lenya/xslt/exception/forbidden.xsl">
+              <map:parameter name="documentid" value="{page-envelope:document-uuid}"/>
+              <map:parameter name="documenturl" value="{page-envelope:document-url}"/>
+              <map:parameter name="area" value="{page-envelope:area}"/>
             </map:transform>
-            <map:serialize status-code="500"/>
-          </map:otherwise>
-        </map:select>
-
-      </map:handle-errors>
+            <map:serialize type="xhtml" status-code="401"/>
+          </map:act>
+        </map:match>
+        <map:act type="authorizer">
+          <map:mount uri-prefix="" src="global-sitemap.xmap" check-reload="true" reload-method="synchron"/>
+        </map:act>
+        <map:redirect-to session="true" uri="{proxy:/{1}}?lenya.usecase=ac.login&amp;referrerQueryString={url-encode:{request:queryString}}"/>        
+      </map:match>
+      
     </map:pipeline>
+    
+    <!-- this is the default error handler -->
+    <map:handle-errors>
+      <map:mount src="{fallback:error.xmap}" check-reload="true" reload-method="synchron" uri-prefix=""/>
+    </map:handle-errors>    
+    
   </map:pipelines>
-
 </map:sitemap>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.