nicolaken    02/05/22 08:29:11

  Added:       src/scratchpad/webapp/mount/slide collection2html.xsl
                        Domain.xml README sitemap.xmap snippet.xconf
  Log:
  [PATCH] SourceFactory for jakarta slide  (Bug#: 9267 )
  submitter by
  [EMAIL PROTECTED] (Stephan Michels)
  
  to use: build installscratchpadwar and then remove the comments for
  the webdav servlet and mapping in web.xml.
  
  Revision  Changes    Path
  1.1                  
xml-cocoon2/src/scratchpad/webapp/mount/slide/collection2html.xsl
  
  Index: collection2html.xsl
  ===================================================================
  <?xml version="1.0"?>
  <xsl:stylesheet version="1.0"
                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
                  xmlns:col="http://apache.org/cocoon/slidecollection/1.0";>
  <!--                xmlns="http://www.w3.org/1999/xhtml";>-->
  
   <xsl:output indent="yes"/>
  
   <xsl:param name="namespace">ownrepository</xsl:param>
  
   <xsl:template match="/">
    <html>
     <head>
      <title>Jakarta Slide Collection</title>
     </head>
     <body>
      <xsl:apply-templates select="col:collection"/>
     </body>
    </html>   
   </xsl:template>
  
   <xsl:template match="col:collection">
    <table width="90%" cellspacing="0" cellpadding="5" align="center">
     <tr>
      <td colspan="3">
       <font size="+2"><strong>Directory listing for <xsl:value-of 
select="@uri"/></strong></font>
      </td>
     </tr>
     <tr>
      <td colspan="5" bgcolor="#ffffff"><a 
href="/cocoon/mount/slide/{$namespace}/">Home</a></td>
     </tr>
     <tr bgcolor="#cccccc">
      <td align="left" colspan="5"><tt><b>ACL Info</b></tt></td>
     </tr>
     <tr bgcolor="#cccccc">
      <td align="left" colspan="2"><tt><b>Subject</b></tt></td>
      <td align="left"><tt><b>Action</b></tt></td>
      <td align="right"><tt><b>Inheritable</b></tt></td>
      <td align="right"><tt><b>Deny</b></tt></td>
     </tr>
  
     <xsl:apply-templates select="col:permission"/>
  
     <tr><td colspan="5" bgcolor="#ffffff">&#160;</td></tr>
  
     <tr bgcolor="#cccccc">
      <td align="left" colspan="5"><tt><b>Lock Info</b></tt></td>
     </tr>
  
     <tr bgcolor="#cccccc">
      <td align="left"><tt><b>Subject</b></tt></td>
      <td align="left"><tt><b>Type</b></tt></td>
      <td align="right"><tt><b>Expiration</b></tt></td>
      <td align="right"><tt><b>Inheritable</b></tt></td>
      <td align="right"><tt><b>Exclusive</b></tt></td>
     </tr>
  
     <xsl:apply-templates select="col:lock"/>
  
     <tr><td colspan="5" bgcolor="#ffffff">&#160;</td></tr>
  
     <tr bgcolor="#cccccc">
      <td align="left" colspan="3"><font 
size="+1"><strong>Filename</strong></font></td>
      <td align="center"><font size="+1"><strong>Size</strong></font></td>
      <td align="right"><font size="+1"><strong>Last Modified</strong></font></td>
     </tr>
  
     <xsl:apply-templates select="col:collection|col:object" mode="enumerate"/>
  
     <tr><td colspan="5">&#160;</td></tr>
     <tr><td colspan="5" bgcolor="#cccccc"><font size="-1">Jakarta Slide 1.0 + Apache 
Cocoon 2</font></td></tr>
    </table>
   </xsl:template>
  
   <xsl:template match="col:permission">
    <tr bgcolor="#eeeeee">
     <td align="left" colspan="2"><tt><xsl:value-of select="@subjecturi"/></tt></td>
     <td align="left"><tt><xsl:value-of select="@actionuri"/></tt></td>
     <td align="right"><tt><xsl:value-of select="@inheritable"/></tt></td>
     <td align="right"><tt><xsl:value-of select="@negative"/></tt></td>
    </tr>
   </xsl:template>
  
   <xsl:template match="col:lock">
    <tr bgcolor="#eeeeee">
     <td align="left"><tt><xsl:value-of select="@subjecturi"/></tt></td>
     <td align="left"><tt><xsl:value-of select="@typeuri"/></tt></td>
     <td align="right"><tt><xsl:value-of select="@expiration"/></tt></td>
     <td align="right"><tt><xsl:value-of select="@inheritable"/></tt></td>
     <td align="right"><tt><xsl:value-of select="@exclusive"/></tt></td>
    </tr>
   </xsl:template>
  
   <xsl:template match="col:collection" mode="enumerate">
    <tr bgcolor="#eeeeee">
     <td align="left" colspan="4">&#160;&#160;
      <a href="/cocoon/mount/slide/browse/{$namespace}{@uri}"><tt><xsl:value-of 
select="@uri"/></tt></a>
     </td>
     <td align="right"><tt><xsl:value-of select="@lastmodified"/></tt></td>
    </tr>
   </xsl:template>
  
   <xsl:template match="col:object" mode="enumerate">
    <tr bgcolor="#eeeeee">
     <td align="left" colspan="3">&#160;&#160;
      <a href="/cocoon/mount/slide/view/{$namespace}{@uri}"><tt><xsl:value-of 
select="@uri"/></tt></a>
     </td>
     <td align="right"><tt><xsl:value-of select="@contentlength"/></tt></td>
     <td align="right"><tt><xsl:value-of select="@lastmodified"/></tt></td>
    </tr>
   </xsl:template>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/slide/Domain.xml
  
  Index: Domain.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <slide default="ownrepository">
  
    <namespace name="ownrepository">
  <!-- ### JDBC Configuration ###
       The following jdbc sample configuration uses the hsql Database Engine
       a relational database engine written in Java, for more info: 
       http://hsqldb.sourceforge.net/ 
  -->
     <definition>
      <store name="jdbc">
        <nodestore classname="slidestore.reference.JDBCDescriptorsStore">
         <parameter name="driver">org.hsqldb.jdbcDriver</parameter>
         <parameter name="url">jdbc:hsqldb:slidestructure</parameter>
         <parameter name="user">sa</parameter>
         <parameter name="password"></parameter>
        </nodestore>
        <securitystore>
          <reference store="nodestore" />
        </securitystore>
        <lockstore>
          <reference store="nodestore" />
        </lockstore>
        <revisiondescriptorsstore>
          <reference store="nodestore" />
        </revisiondescriptorsstore>
        <revisiondescriptorstore>
          <reference store="nodestore" />
        </revisiondescriptorstore>
        <contentstore classname="slidestore.reference.FileContentStore">
          <parameter name="rootpath">contentstore</parameter>
          <parameter name="version">true</parameter>
          <parameter name="resetBeforeStarting">false</parameter>
        </contentstore>
      </store>
      <scope match="/" store="jdbc" />
      <logger classname="org.apache.slide.util.logger.SimpleLogger" 
       logger-level="6" />
     </definition>
  
     <configuration>
  
      <!-- Actions mapping -->
      <default-action>/actions</default-action>
      <read-object>/actions/read</read-object>
      <create-object>/actions/write</create-object>
      <remove-object>/actions/write</remove-object>
      <grant-permission>/actions/manage</grant-permission>
      <revoke-permission>/actions/manage</revoke-permission>
      <read-permissions>/actions/manage</read-permissions>
      <lock-object>/actions/write</lock-object>
      <kill-lock>/actions/manage</kill-lock>
      <read-locks>/actions/read</read-locks>
      <read-revision-metadata>/actions/read</read-revision-metadata>
      <create-revision-metadata>/actions/write</create-revision-metadata>
      <modify-revision-metadata>/actions/write</modify-revision-metadata>
      <remove-revision-metadata>/actions/write</remove-revision-metadata>
      <read-revision-content>/actions/read</read-revision-content>
      <create-revision-content>/actions/write</create-revision-content>
      <modify-revision-content>/actions/write</modify-revision-content>
      <remove-revision-content>/actions/write</remove-revision-content>
  
      <!-- Paths configuration -->
      <userspath>/users</userspath>
      <guestpath>guest</guestpath>
      <filespath>/files</filespath>
      <parameter name="dav">true</parameter>
      <parameter name="standalone">true</parameter>
  
      <!-- Roles definition -->
      <role name="root">slideroles.basic.RootRole</role>
      <role name="user">slideroles.basic.UserRole</role>
      <role name="guest">slideroles.basic.GuestRole</role>
  
      <!-- Users management -->
      <auto-create-users>false</auto-create-users>
  
      <!-- Default properties mapping -->
      <default-property name="foo" namespace="nsfoo/" value="bar"
       role="user"/>
      <default-property name="password" namespace="slide/" value=""
       role="user"/>
  
     </configuration>
  
     <data>
        
      <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/">
          
        <permission action="/actions" subject="root"/>
        <permission action="/actions/read" subject="user"
         inheritable="false"/>
        <permission action="/actions/read" subject="nobody"
         inheritable="false"/>
          
        <!-- /users represents the unauthenticated user -->
          
        <objectnode classname="org.apache.slide.structure.SubjectNode" 
         uri="/users">
            
          <permission action="/actions" subject="~"/>
          <permission action="/actions" subject="guest"
           inheritable="true" negative="true"/>
          <permission action="/actions/read" subject="user"
           inheritable="false"/>
  
          <!-- Permission group example -->
            
          <objectnode classname="org.apache.slide.structure.GroupNode" 
            uri="/users/groupA">
             <objectnode classname="org.apache.slide.structure.LinkNode" 
                uri="/users/groupA/john" linkedUri="/users/john" />
             <objectnode classname="org.apache.slide.structure.LinkNode" 
                uri="/users/groupA/root" linkedUri="/users/root" />
             <objectnode classname="org.apache.slide.structure.SubjectNode" 
               uri="/users/groupA/singleGroupMember"  />
          </objectnode>
  
          <!-- /users/root represents the administrator -->
            
          <objectnode classname="slideroles.basic.RootRoleImpl" 
           uri="/users/root">
            <!-- Uncomment and change the password to allow login as root to
             edit the namespace -->
            <revision>
              <property name="password" 
               namespace="http://jakarta.apache.org/slide/";>root</property>
            </revision>
          </objectnode>
            
          <!-- /users/john represents an authenticated user -->
            
          <objectnode classname="slideroles.basic.UserRoleImpl" 
           uri="/users/john" >
          
           <revision>
            <property name="password" 
               namespace="http://jakarta.apache.org/slide/";>john</property>
           </revision>
          </objectnode>  
  
          <!-- /users/guest represents an authenticated or unauthenticated 
               guest user -->
            
          <objectnode classname="slideroles.basic.GuestRoleImpl" 
           uri="/users/guest" >
           <revision>
            <property name="password" 
               namespace="http://jakarta.apache.org/slide/";>guest</property>
           </revision>
          </objectnode>
  
             
        </objectnode>
          
        <objectnode classname="org.apache.slide.structure.ActionNode" 
         uri="/actions">
            
          <objectnode classname="org.apache.slide.structure.ActionNode" 
           uri="/actions/read"/>
            
          <objectnode classname="org.apache.slide.structure.ActionNode" 
           uri="/actions/write"/>
            
          <objectnode classname="org.apache.slide.structure.ActionNode" 
           uri="/actions/manage"/>
            
        </objectnode>
          
        <objectnode classname="org.apache.slide.structure.SubjectNode" 
         uri="/files">
  
          <!-- ### Give read/write/manage permission to guest ### 
               Uncomment the following line to give permission to do
               all actions on /files to guest (unauthenticated users) -->
          <permission action="/actions" subject="/users/guest"/>
  
          <permission action="/actions/manage" subject="/users/john"/>
          <permission action="/actions/write" subject="+/users/groupA"/>
          <permission action="/actions/read" subject="nobody"/>
            
        </objectnode>
  
      </objectnode>
        
     </data>
      
    </namespace>
  
  </slide>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/slide/README
  
  Index: README
  ===================================================================
  
  ====================================
    Using Jakarta Slide with Cocoon
  ====================================
  
  1. Uncomment the entries for WebDAV in src/webapp/WEB-INF/web.xml
  
  1. Install the Web Application via in Tomcat
  
   ./build.sh  -Dinclude.webapp.libs=yes -Dinstall.war=$TOMCAT_HOME/webapps 
-Dinclude.scratchpad.libs=yes install
  
  2. Start Tomcat
  
   $TOMCAT_HOME/bin/catalina.sh run
  
  3. Access WebDAV via MS WebFolders, Cadaver or what ever
  
   http://localhost:8080/cocoon/webdav/
  
  4. Access the slide repository via Cocoon
  
   http://vernjava:8080/cocoon/mount/slide/browse/ownrepository/ 
  
  Have fun, Stephan Michels <[EMAIL PROTECTED]>
  
  
  Some things must be fixed:
  
  * The logger should be set
  * Also the base directory should be set
  * <map:read src="slide://..."/> doesn't work
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/slide/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
   <map:components>
    <map:generators default="file">
     <map:generator name="slidecollection" 
                    src="org.apache.cocoon.generation.SlideCollectionGenerator" 
                    logger="sitemap.generator.slidecollection"/>
    </map:generators>
  
    <map:serializers default="html"/>
    <map:transformers default="xslt"/>
    <map:readers default="resource"/>
    <map:matchers default="wildcard"/>
    <map:selectors default="browser"/>
   </map:components>
  
   <map:pipelines>
  
    <map:pipeline>
  
     <map:match pattern="">
          <map:redirect-to uri="browse/ownrepository/"/>
         </map:match>
  
     <map:match pattern="browse/*/**">
          <map:generate type="slidecollection" src="{1}/{2}">
       <map.parameter name="username" value="root"/><!-- Doesn't work right now -->
      </map:generate>
  
      <map:transform src="collection2html.xsl">
       <map:parameter name="namespace" value="{1}"/>
      </map:transform>
  
      <map:serialize type="html"/>                                                     
         
     </map:match>
  
     <map:match pattern="view/*/**">
      <!-- Ask me how should I handle the mime type ?!?! -->
      <map:read src="slide://{1}/{2}" mime-type="application/octet-stream"/> 
     </map:match>
  
     <map:handle-errors>
      <map:transform src="context://stylesheets/system/error2html.xsl"/>
      <map:serialize status-code="500"/>
     </map:handle-errors>
                        
        </map:pipeline>
   </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-cocoon2/src/scratchpad/webapp/mount/slide/snippet.xconf
  
  Index: snippet.xconf
  ===================================================================
      <component-instance 
class="org.apache.cocoon.components.source.SlideSourceFactory" name="slide">
         <domain-configuration>/mount/slide/Domain.xml</domain-configuration>
      </component-instance>
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to