svn commit: r589770 - in /lenya/trunk/src: pubs/default/sitemap.xmap pubs/default/xslt/addXhtmlTitle.xsl pubs/default/xslt/page2xhtml.xsl webapp/lenya/xslt/exception/document-does-not-exist.xsl

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Mon Oct 29 10:46:58 2007
New Revision: 589770

URL: http://svn.apache.org/viewvc?rev=589770&view=rev
Log:
Show 404 page using the normal default publication layout.

Added:
    lenya/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl
Modified:
    lenya/trunk/src/pubs/default/sitemap.xmap
    lenya/trunk/src/pubs/default/xslt/page2xhtml.xsl
    lenya/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl

Modified: lenya/trunk/src/pubs/default/sitemap.xmap
URL: http://svn.apache.org/viewvc/lenya/trunk/src/pubs/default/sitemap.xmap?rev=589770&r1=589769&r2=589770&view=diff
==============================================================================
--- lenya/trunk/src/pubs/default/sitemap.xmap (original)
+++ lenya/trunk/src/pubs/default/sitemap.xmap Mon Oct 29 10:46:58 2007
@@ -97,6 +97,11 @@
         </map:select>
       </map:match>
       
+      <map:match pattern="getDoctypeXSLT/">
+        <map:generate src="fallback://xslt/page2xhtml.xsl"/>
+        <map:serialize type="xml"/>
+      </map:match>
+      
       <map:match pattern="**/">
         <map:redirect-to uri="index.html"/>
       </map:match>
@@ -124,6 +129,24 @@
         <map:serialize type="xml"/>
       </map:match>
       
+      <!-- {1:rendertype}/{2:area}/{3:path} -->
+      <map:match pattern="document-content/*/*/**">
+        <map:act type="language-exists">
+          <map:generate src="{resource-type:format-xhtml}?rendertype={1}"/>
+          <map:serialize type="xml"/>
+        </map:act>
+        <map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
+        <map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
+          <map:parameter name="documenturl" value="/{3}.html"/>
+          <map:parameter name="path" value="/{3}"/>
+          <map:parameter name="area" value="{2}"/>
+        </map:transform>
+        <map:transform type="i18n">
+          <map:parameter name="locale" value="{page-envelope:language}"/>
+        </map:transform>
+        <map:serialize type="xml"/>
+      </map:match>
+      
       <!-- /lenyabody-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:default-language}/{6:language}/{7:path} -->
       <map:match pattern="lenyabody-raw-*/*/*/*/*/*/**">
         <map:aggregate element="cmsbody">
@@ -132,7 +155,7 @@
           <map:part src="cocoon:/navigation-element/menu/{2}/{3}/{5}/{6}/{7}"/>
           <map:part src="cocoon:/navigation-element/search/{2}/{3}/{5}/{6}/{7}"/>
           <map:part src="cocoon://modules/languageselector/text-none/flagsize-13"/>
-          <map:part src="{resource-type:format-xhtml}?rendertype={1}"/>
+          <map:part src="cocoon:/document-content/{1}/{3}/{7}"/>
         </map:aggregate>
         <map:serialize type="xml"/>
       </map:match>
@@ -174,7 +197,6 @@
           <map:parameter name="document-type" value="{4}"/>
           <map:parameter name="language" value="{page-envelope:document-language}"/>
           <map:parameter name="contextprefix" value="{request:contextPath}"/>
-          <map:parameter name="title" value="{dublincore:title}"/>
           <map:parameter name="lastPublishedUser" value="{access-control:user-name:{workflow:lastUser.publish}}"/>
           <map:parameter name="lastPublishedDate" value="{workflow:lastDate.publish}"/>
           <!-- Following is a show off to explain lenya.properties.xml -->
@@ -182,6 +204,12 @@
           <map:parameter name="nodeName" value="{page-envelope:document-name}"/>
         </map:transform>
         
+        <map:act type="language-exists">
+          <map:transform src="fallback://xslt/addXhtmlTitle.xsl">
+            <map:parameter name="title" value="{dublincore:title}"/>
+          </map:transform>
+        </map:act>
+        
         <!-- This is a demonstration of the generic meta data transformer
           described in bug 39891.
           
@@ -201,7 +229,7 @@
           <map:parameter name='area' value='{page-envelope:area}'/>
         </map:transform>
         <map:transform type="i18n">      
-          <map:parameter name="locale" value="{page-envelope:document-language}"/>
+          <map:parameter name="locale" value="{page-envelope:language}"/>
         </map:transform>
         <map:transform type="uuid2url"/>
         <map:serialize type="xml"/>
@@ -221,121 +249,112 @@
       </map:match>
       
       <map:match pattern="*/**.html">
+        
+        <map:select type="resource-exists">
+          <map:when test="lenya://lenya/pubs/{page-envelope:publication-id}/content/authoring/sitetree.xml"/>
+          <map:otherwise>
+            <map:redirect-to uri="{request:requestUri}?lenya.usecase=export.importExampleContent"/>
+          </map:otherwise>
+        </map:select>
       
         <map:act type="language-exists">
-
           <map:act type="set-header">
             <map:parameter name="Last-Modified" value="{date-iso8601-rfc822:{page-envelope:document-lastmodified}}" />
-
-            <!-- HEAD request shouldn't have all the xslt overhead -->
-            <map:select type="request-method">
-              <map:when test="HEAD">
-                <map:generate src="context://lenya/content/util/empty.xml" />
-                <map:serialize type="xhtml"/>
-              </map:when>
-            </map:select>          
+          </map:act>
+        </map:act>
+            
+        <!-- HEAD request shouldn't have all the xslt overhead -->
+        <map:select type="request-method">
+          <map:when test="HEAD">
+            <map:generate src="context://lenya/content/util/empty.xml" />
+            <map:serialize type="xhtml"/>
+          </map:when>
+        </map:select>          
+      
+        <map:select type="resource-exists">
+          <!-- Read from cache -->
+          <!-- If configured within Apache then mod_lenya will nevertheless read from cache -->
+          <map:when test="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{1}/{2}.htmlDISABLED">
+            <map:read src="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{1}/{2}.html" mime-type="text/html"/>
+          </map:when>
+          <!-- Write to cache and serialize -->
+          <map:otherwise>
           
-            <map:select type="resource-exists">
-              <!-- Read from cache -->
-              <!-- If configured within Apache then mod_lenya will nevertheless read from cache -->
-              <map:when test="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.htmlDISABLED">
-                <map:read src="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.html" mime-type="text/html"/>
+            <map:select type="parameter">
+              <map:parameter name="parameter-selector-test" value="{request-param:rendertype}"/>
+              <map:when test="edit">
+                <map:generate src="cocoon:/lenyabody-edit/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
+              </map:when>
+              <map:otherwise>
+                <map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
+              </map:otherwise>
+            </map:select>
+            <!-- TODO: Either fix XUL or remove it, only works under Authoring at moment -->
+            <!-- and the text of menu items is not shown -->
+            <!-- Uncomment to enable XUL menus under Mozilla 5 -->
+            <!-- <map:select type="browser">
+              <map:when test="mozilla5">
+                <map:select type="parameter">
+                  <map:parameter name="parameter-selector-test" value="{../../1}"/>
+                  <map:when test="live"/>
+                  <map:otherwise>
+                    <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{../../1}/{../../2}.xml?doctype={page-envelope:document-type}&amp;uiml=xul"/>
+                  </map:otherwise>
+                </map:select>
+                <map:serialize type="xml" mime-type="application/vnd.mozilla.xul+xml"/>
               </map:when>
-              <!-- Write to cache and serialize -->
               <map:otherwise>
-              
+            -->
                 <map:select type="parameter">
-                  <map:parameter name="parameter-selector-test" value="{request-param:rendertype}"/>
-                  <map:when test="edit">
-                    <map:generate src="cocoon:/lenyabody-edit/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
-                  </map:when>
+                  <map:parameter name="parameter-selector-test" value="{1}"/>
+                  <map:when test="live"/>
                   <map:otherwise>
-                    <map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
+                    <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{1}/{2}.xml?doctype={page-envelope:document-type}"/>
+                    <!-- TODO: External Links checking should be optional on a document by document basis -->
+                    <!-- uncomment to turn on external broken link reporting -->
+                    <!--<map:transform src="fallback://lenya/xslt/authoring/addJavaScript.xsl">
+                      <map:parameter name="scriptSRC" value="/modules/linkcheck/linkreporter.js"/>
+                    </map:transform>-->
                   </map:otherwise>
                 </map:select>
-                <!-- TODO: Either fix XUL or remove it, only works under Authoring at moment -->
-                <!-- and the text of menu items is not shown -->
-                <!-- Uncomment to enable XUL menus under Mozilla 5 -->
-                <!-- <map:select type="browser">
-                  <map:when test="mozilla5">
-                    <map:select type="parameter">
-                      <map:parameter name="parameter-selector-test" value="{../../1}"/>
-                      <map:when test="live"/>
-                      <map:otherwise>
-                        <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{../../1}/{../../2}.xml?doctype={page-envelope:document-type}&amp;uiml=xul"/>
-                      </map:otherwise>
-                    </map:select>
-                    <map:serialize type="xml" mime-type="application/vnd.mozilla.xul+xml"/>
+                <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
+                <!-- Write to cache for requests from live area -->
+                <map:select type="parameter">
+                  <map:parameter name="parameter-selector-test" value="{1}"/>
+                  <map:when test="live">
+                    <map:transform src="fallback://lenya/xslt/authoring/edit/addSourceTags.xsl">
+                      <map:parameter name="source" value="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.html"/>
+                    </map:transform>
+                    <map:transform type="write-source">
+                      <map:parameter name="serializer" value="xhtml"/>
+                    </map:transform>
+                    <map:transform src="fallback://lenya/xslt/authoring/edit/removeSourceTags.xsl"/>
+                    <map:act type="set-header">
+                      <map:parameter name="Expires" value="{date-iso8601-rfc822:{doc-info:{page-envelope:publication-id}:{page-envelope:area}:{page-envelope:document-uuid}:{page-envelope:document-language}:expires}}"/>
+                    </map:act>
                   </map:when>
+                  <!-- Turn off caching in authoring area -->
                   <map:otherwise>
-                -->
-                    <map:select type="parameter">
-                      <map:parameter name="parameter-selector-test" value="{../../1}"/>
-                      <map:when test="live"/>
-                      <map:otherwise>
-                        <map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{../../1}/{../../2}.xml?doctype={page-envelope:document-type}"/>
-                        <!-- TODO: External Links checking should be optional on a document by document basis -->
-                        <!-- uncomment to turn on external broken link reporting -->
-                        <!--<map:transform src="fallback://lenya/xslt/authoring/addJavaScript.xsl">
-                          <map:parameter name="scriptSRC" value="/modules/linkcheck/linkreporter.js"/>
-                        </map:transform>-->
-                      </map:otherwise>
-                    </map:select>
-                    <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
-                    <!-- Write to cache for requests from live area -->
-                    <map:select type="parameter">
-                      <map:parameter name="parameter-selector-test" value="{../../1}"/>
-                      <map:when test="live">
-                        <map:transform src="fallback://lenya/xslt/authoring/edit/addSourceTags.xsl">
-                          <map:parameter name="source" value="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.html"/>
-                        </map:transform>
-                        <map:transform type="write-source">
-                          <map:parameter name="serializer" value="xhtml"/>
-                        </map:transform>
-                        <map:transform src="fallback://lenya/xslt/authoring/edit/removeSourceTags.xsl"/>
-                        <map:act type="set-header">
-                          <map:parameter name="Expires" value="{date-iso8601-rfc822:{doc-info:{page-envelope:publication-id}:{page-envelope:area}:{page-envelope:document-uuid}:{page-envelope:document-language}:expires}}"/>
-                        </map:act>
-                      </map:when>
-                      <!-- Turn off caching in authoring area -->
-                      <map:otherwise>
-                        <map:act type="set-header">
-                          <map:parameter name="Cache-Control" value="no-cache" />
-                          <map:parameter name="Pragma" value="no-cache"/>
-                        </map:act>
-                      </map:otherwise> 
-                    </map:select>
-                    <!-- pretty-print output for easier debugging and for the benefit of new users 
-                         NOTE: you may want to disable this in production for performance reasons,
-                         but it's on by default in the default publication to make the generated code 
-                         easier to work with for new users. -->
-                    <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
-                    <!-- the proxy transformer handles proxy-related URL rewriting -->
-                    <map:transform type="proxy"/>
-                    <map:serialize type="xhtml"/>
-                <!-- Uncomment to enable XUL menus under Mozilla 5 -->
-                <!--  </map:otherwise>
-                </map:select> -->
-              </map:otherwise>
-            </map:select>
-          </map:act>
-        </map:act>
-
-        <map:select type="resource-exists">
-          <map:when test="lenya://lenya/pubs/{page-envelope:publication-id}/content/authoring/sitetree.xml">
-            <map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
-            <map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
-              <map:parameter name="documenturl" value="{2}.html"/>
-              <map:parameter name="path" value="{page-envelope:document-path}"/>
-              <map:parameter name="area" value="{1}"/>
-            </map:transform>
-            <map:call resource="style-cms-page" />
-            <map:serialize status-code="404" />
-          </map:when>
-          <map:otherwise>
-            <map:redirect-to uri="{request:requestUri}?lenya.usecase=export.importExampleContent"/>
+                    <map:act type="set-header">
+                      <map:parameter name="Cache-Control" value="no-cache" />
+                      <map:parameter name="Pragma" value="no-cache"/>
+                    </map:act>
+                  </map:otherwise> 
+                </map:select>
+                <!-- pretty-print output for easier debugging and for the benefit of new users 
+                     NOTE: you may want to disable this in production for performance reasons,
+                     but it's on by default in the default publication to make the generated code 
+                     easier to work with for new users. -->
+                <map:transform src="fallback://lenya/modules/prettyprinting/xslt/xml2nicexml.xsl"/>
+                <!-- the proxy transformer handles proxy-related URL rewriting -->
+                <map:transform type="proxy"/>
+                <map:serialize type="xhtml"/>
+            <!-- Uncomment to enable XUL menus under Mozilla 5 -->
+            <!--  </map:otherwise>
+            </map:select> -->
           </map:otherwise>
         </map:select>
+
       </map:match>
       
     </map:pipeline>
@@ -343,18 +362,18 @@
     <map:pipeline>
       <map:match pattern="*/**.*">
         <!-- TODO: http://marc.theaimsgroup.com/?l=xml-cocoon-dev&amp;m=112496255207733&amp;w=2 -->
-        <map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$"> 
-          <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}" mime-type="application/pdf">
-            <map:parameter name="byte-ranges" value="false"/>
-          </map:read>
-        </map:match>      
         <map:act type="language-exists">
+          <map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$"> 
+            <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}" mime-type="application/pdf">
+              <map:parameter name="byte-ranges" value="false"/>
+            </map:read>
+          </map:match>      
           <map:read src="lenya-document:{page-envelope:document-uuid},lang={page-envelope:document-language}{link:rev}"/>
         </map:act>
 
         <map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
         <map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
-          <map:parameter name="documenturl" value="{2}.html"/>
+          <map:parameter name="documenturl" value="{2}.{3}"/>
           <map:parameter name="path" value="{page-envelope:document-path}"/>
           <map:parameter name="area" value="{1}"/>
         </map:transform>

Added: lenya/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl?rev=589770&view=auto
==============================================================================
--- lenya/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl (added)
+++ lenya/trunk/src/pubs/default/xslt/addXhtmlTitle.xsl Mon Oct 29 10:46:58 2007
@@ -0,0 +1,50 @@
+<?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.
+-->
+
+<!-- $Id: page2xhtml.xsl 557603 2007-07-19 12:48:31Z andreas $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  exclude-result-prefixes="xhtml"
+  >
+  
+  <xsl:param name="title"/>
+  
+  
+  <xsl:template match="xhtml:head">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+      <title><xsl:value-of select="$title"/></title>
+    </xsl:copy>
+  </xsl:template>
+  
+  
+  <xsl:template match="xhtml:title"/>
+  
+  
+  <xsl:template match="@*|node()" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+
+  
+</xsl:stylesheet>
+  
\ No newline at end of file

Modified: lenya/trunk/src/pubs/default/xslt/page2xhtml.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/pubs/default/xslt/page2xhtml.xsl?rev=589770&r1=589769&r2=589770&view=diff
==============================================================================
--- lenya/trunk/src/pubs/default/xslt/page2xhtml.xsl (original)
+++ lenya/trunk/src/pubs/default/xslt/page2xhtml.xsl Mon Oct 29 10:46:58 2007
@@ -41,7 +41,6 @@
   <!-- The request url i.e. /lenya/doctypes/xhtml-document_en.html -->
   <xsl:param name="url"/>
   <xsl:param name="language"/>
-  <xsl:param name="title"/>
   
   <xsl:param name="lastPublishedUser"/>
   <xsl:param name="lastPublishedDate"/>
@@ -70,7 +69,10 @@
           </xsl:otherwise>
         </xsl:choose>
         <meta content="Apache Lenya" name="generator"/>
-        <title><xsl:value-of select="$title"/></title>
+        
+        <!-- The title will be overwritten by addXhtmlTitle.xsl if the document exists. -->
+        <title><i18n:text>error-404</i18n:text></title>
+        
         <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
       </head>
       <body>
@@ -109,6 +111,15 @@
         </div>
       </body>
     </html>
+  </xsl:template>
+  
+  
+  <xsl:template match="xhtml:div[@id = 'breadcrumb']">
+    <xsl:if test="*">
+      <xsl:copy>
+        <xsl:apply-templates select="@*|node()"/>
+      </xsl:copy>
+    </xsl:if>
   </xsl:template>
   
   

Modified: lenya/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl?rev=589770&r1=589769&r2=589770&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl (original)
+++ lenya/trunk/src/webapp/lenya/xslt/exception/document-does-not-exist.xsl Mon Oct 29 10:46:58 2007
@@ -20,7 +20,6 @@
 
 <xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
   xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
   xmlns="http://www.w3.org/1999/xhtml"
   >
@@ -36,65 +35,63 @@
   
   <xsl:template match="/">
     
-    <page:page>
-      <page:title>
-        <xsl:choose>
-          <xsl:when test="missing-language/available-languages/available-language">
-            <i18n:text>Document not available for this language</i18n:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <i18n:text>error-404</i18n:text>
-          </xsl:otherwise>
-        </xsl:choose>
-      </page:title>
-      <page:body>
-        <div class="lenya-box">
+    <html>
+      <head>
+        <title>
           <xsl:choose>
             <xsl:when test="missing-language/available-languages/available-language">
-              <div class="lenya-box-title">
+              <i18n:text>Document not available for this language</i18n:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <i18n:text>error-404</i18n:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </title>
+      </head>
+      <body>
+        <div id="body">
+          <xsl:choose>
+            <xsl:when test="missing-language/available-languages/available-language">
+              <h1>
                 <i18n:translate>
                   <i18n:text i18n:key="error-missing-language" />
                   <i18n:param>'<xsl:value-of select="$language"/>'</i18n:param>
                 </i18n:translate>
-              </div>
-              <div class="lenya-box-body">
-                <p>
-                  <i18n:translate>
-                    <i18n:text i18n:key="error-missing-language" />
-                    <i18n:param>'<xsl:value-of select="$language"/>'</i18n:param>
-                  </i18n:translate>
-                </p>
-                <p>
-                  <i18n:text>The following languages are available:</i18n:text>
-                </p>
-                <ul>
-                  <xsl:apply-templates select="missing-language/available-languages/available-language"/>
-                </ul>
-              </div>
+              </h1>
+              <p>
+                <i18n:translate>
+                  <i18n:text i18n:key="error-missing-language" />
+                  <i18n:param>'<xsl:value-of select="$language"/>'</i18n:param>
+                </i18n:translate>
+              </p>
+              <p>
+                <i18n:text>The following languages are available:</i18n:text>
+              </p>
+              <ul>
+                <xsl:apply-templates select="missing-language/available-languages/available-language"/>
+              </ul>
             </xsl:when>
             <xsl:otherwise>
-              <div class="lenya-box-title"><i18n:text>error-document-existance-short</i18n:text></div>
-              <div class="lenya-box-body">
+              <h1><i18n:text>error-document-existance-short</i18n:text></h1>
+              <p>
+                <i18n:translate>
+                  <i18n:text i18n:key="error-document-existance" />
+                  <i18n:param>'<xsl:value-of select="$documenturl"/>'</i18n:param>
+                </i18n:translate>
+              </p>
+              <xsl:if test="$area = 'authoring'">
+                <p>
+                  <a href="?lenya.usecase=sitemanagement.create&amp;path={$path}"><i18n:text>create-document</i18n:text></a>
+                </p>
                 <p>
-                  <i18n:translate>
-                    <i18n:text i18n:key="error-document-existance" />
-                    <i18n:param>'<xsl:value-of select="$documenturl"/>'</i18n:param>
-                  </i18n:translate>
+                  <i18n:text>configure-content-repository</i18n:text>
                 </p>
-                <xsl:if test="$area = 'authoring'">
-                  <p>
-                    <a href="?lenya.usecase=sitemanagement.create&amp;path={$path}"><i18n:text>create-document</i18n:text></a>
-                  </p>
-                  <p>
-                    <i18n:text>configure-content-repository</i18n:text>
-                  </p>
-                </xsl:if>
-              </div>
+              </xsl:if>
             </xsl:otherwise>
           </xsl:choose>
         </div>
-      </page:body>
-    </page:page>
+      </body>
+    </html>
   </xsl:template>
   
   <xsl:template match="available-languages/available-language">
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.