unico       2004/01/20 04:42:27

  Modified:    src/blocks/slide/java/org/apache/cocoon/samples/slide
                        AdminHelper.java
               src/blocks/slide/samples/styles users2html.xsl
               src/blocks/slide/samples flow.js sitemap.xmap
  Log:
  remove groups functionality in favor of roles because the concepts are 
equivalent in ACL
  
  Revision  Changes    Path
  1.5       +37 -0     
cocoon-2.1/src/blocks/slide/java/org/apache/cocoon/samples/slide/AdminHelper.java
  
  Index: AdminHelper.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/slide/java/org/apache/cocoon/samples/slide/AdminHelper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AdminHelper.java  14 Jan 2004 12:49:47 -0000      1.4
  +++ AdminHelper.java  20 Jan 2004 12:42:27 -0000      1.5
  @@ -186,6 +186,43 @@
           
       }
       
  +    public static void addRole(NamespaceAccessToken nat,
  +                                String caller,
  +                                String rolename) throws Exception {
  +        
  +        String rolesPath = nat.getNamespaceConfig().getRolesPath();
  +        String roleUri = rolesPath + "/" + rolename;
  +        
  +        SlideToken slideToken = new SlideTokenImpl(new 
CredentialsToken(caller));
  +        Structure structure = nat.getStructureHelper();
  +        Content content = nat.getContentHelper();
  +        
  +        try {
  +            nat.begin();
  +            
  +            ObjectNode role = new SubjectNode();
  +            structure.create(slideToken,role,roleUri);
  +            
  +            NodeRevisionDescriptor descriptor = new NodeRevisionDescriptor();
  +            descriptor.setCreationDate(new Date());
  +            descriptor.setLastModified(new Date());
  +            
  +            content.create(slideToken,roleUri,descriptor,null);
  +            
  +            nat.commit();
  +        }
  +        catch (Exception e) {
  +            try {
  +                nat.rollback();
  +            }
  +            catch (Exception f) {
  +                f.printStackTrace();
  +            }
  +            throw e;
  +        }
  +        
  +    }
  +    
       public static void removeObject(NamespaceAccessToken nat,
                                       String caller,
                                       String objectUri) throws Exception {
  
  
  
  1.2       +16 -68    cocoon-2.1/src/blocks/slide/samples/styles/users2html.xsl
  
  Index: users2html.xsl
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/slide/samples/styles/users2html.xsl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- users2html.xsl    12 Jan 2004 17:10:33 -0000      1.1
  +++ users2html.xsl    20 Jan 2004 12:42:27 -0000      1.2
  @@ -2,7 +2,6 @@
   <xsl:stylesheet 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
     xmlns:col="http://apache.org/cocoon/collection/1.0"; 
  -  xmlns:dav="DAV:" 
     version="1.0">
     
     <xsl:import href="layout.xsl" />
  @@ -12,23 +11,13 @@
     
     <xsl:param name="userspath"/>
     <xsl:param name="rolespath"/>
  -  <xsl:param name="groupspath"/>
  -  
  -  <xsl:template name="body">
  -    <row>
  -      <xsl:call-template name="top" />
  -    </row>
  -    <row>
  -      <xsl:call-template name="bottom" />
  -    </row>
  -  </xsl:template>
  -  
  -  <xsl:template name="top">
  +   
  +  <xsl:template name="left">
       <xsl:apply-templates select="/document/users"/>
     </xsl:template>
     
  -  <xsl:template name="bottom">
  -    <xsl:apply-templates select="/document/groups"/>
  +  <xsl:template name="middle">
  +    <xsl:apply-templates select="/document/roles"/>
     </xsl:template>
   
     <xsl:template match="/document/users">
  @@ -43,11 +32,6 @@
               <td align="left">
                 <b>Roles</b>
               </td>
  -            <td align="left"/>
  -            <td align="left">
  -              <b>Groups</b>
  -            </td>
  -            <td align="left"/>
               <td align="right"/>
             </tr>
             <xsl:for-each select="user">
  @@ -80,23 +64,6 @@
                     <input type="submit" name="doRemoveRoleMember" 
value="Remove role"/>
                   </td>
                 </form>
  -              <form action="{$base}/removemember" method="post">
  -                <input type="hidden" name="subjecturi" value="{$useruri}"/>
  -                <td align="left">
  -                  <select name="objecturi">
  -                    <xsl:for-each 
select="/document/groups/group[member=$useruri]">
  -                      <xsl:variable name="groupuri" select="uri/text()" />
  -                      <xsl:variable name="groupname" 
select="substring-after($groupuri,concat($groupspath,'/'))" />
  -                      <option value="{$groupuri}">
  -                        <xsl:value-of select="$groupname"/>
  -                      </option>
  -                    </xsl:for-each>
  -                  </select>
  -                </td>
  -                <td align="left">
  -                  <input type="submit" name="doRemoveGroupMember" 
value="Remove group"/>
  -                </td>
  -              </form>
               </tr>
               <tr>
                 <td align="left"/>
  @@ -118,23 +85,6 @@
                     <input type="submit" name="doAddRoleMember" value="Add 
role"/>
                   </td>
                 </form>
  -              <form action="{$base}/addmember" method="post">
  -                <input type="hidden" name="subjecturi" value="{$useruri}"/>
  -                <td align="left">
  -                  <select name="objecturi" size="1">
  -                    <xsl:for-each select="/document/groups/group">
  -                      <xsl:variable name="groupuri" select="uri/text()"/>
  -                      <xsl:variable name="groupname" 
select="substring-after($groupuri,concat($groupspath,'/'))"/>
  -                      <option value="{$groupuri}">
  -                        <xsl:value-of select="$groupname"/>
  -                      </option>
  -                    </xsl:for-each>
  -                  </select>
  -                </td>
  -                <td align="left">
  -                  <input type="submit" name="doAddGroupMember" value="Add 
group"/>
  -                </td>
  -              </form>
               </tr>
             </xsl:for-each>
             <tr>
  @@ -146,8 +96,6 @@
                   <input name="password" type="password" size="10" 
maxlength="40"/>
                 </td>
                 <td align="left"/>
  -              <td align="left"/>
  -              <td align="left"/>
                 <td align="right">
                   <input type="submit" name="doAddUser" value="Add user"/>
                 </td>
  @@ -158,38 +106,38 @@
       </column>
     </xsl:template>
       
  -  <xsl:template match="/document/groups">
  -    <column title="Groups">
  +  <xsl:template match="/document/roles">
  +    <column title="Roles">
         <table bgcolor="#ffffff" border="0" cellspacing="0" cellpadding="2" 
width="100%" align="center">
           <font size="+0" face="arial,helvetica,sanserif" color="#000000">
             <tr>
               <td align="left">
  -              <b>Group</b>
  +              <b>Role</b>
               </td>
               <td align="right"/>
             </tr>
  -          <xsl:for-each select="group">
  -            <xsl:variable name="groupuri"  select="uri/text()" />
  -            <xsl:variable name="groupname" 
select="substring-after($groupuri,concat($groupspath,'/'))" />
  +          <xsl:for-each select="role">
  +            <xsl:variable name="roleuri"  select="uri/text()" />
  +            <xsl:variable name="rolename" 
select="substring-after($roleuri,concat($rolespath,'/'))" />
               <tr>
                 <form action="{$base}/removeobject" method="post">
  -                <input type="hidden" name="objecturi" value="{$groupuri}"/>
  +                <input type="hidden" name="objecturi" value="{$roleuri}"/>
                   <td align="left">
  -                  <xsl:value-of select="$groupname"/>
  +                  <xsl:value-of select="$rolename"/>
                   </td>
                   <td align="right">
  -                  <input type="submit" name="doRemovePrincipalGroup" 
value="Delete group"/>
  +                  <input type="submit" name="doRemovePrincipalRole" 
value="Remove role"/>
                   </td>
                 </form>
               </tr>
             </xsl:for-each>
             <tr>
  -            <form action="{$base}/addgroup" method="post">
  +            <form action="{$base}/addrole" method="post">
                 <td align="left">
  -                <input name="groupname" type="text" size="15" 
maxlength="40"/>
  +                <input name="rolename" type="text" size="15" maxlength="40"/>
                 </td>
                 <td align="right">
  -                <input type="submit" name="doAddPrincipalGroup" value="Add 
group"/>
  +                <input type="submit" name="doAddPrincipalRole" value="Add 
role"/>
                 </td>
               </form>
             </tr>
  
  
  
  1.8       +15 -8     cocoon-2.1/src/blocks/slide/samples/flow.js
  
  Index: flow.js
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/slide/samples/flow.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- flow.js   12 Jan 2004 18:20:06 -0000      1.7
  +++ flow.js   20 Jan 2004 12:42:27 -0000      1.8
  @@ -4,17 +4,17 @@
   importPackage(Packages.org.apache.cocoon.samples.slide);
   importPackage(Packages.org.apache.excalibur.source);
   
  -var repository = 
cocoon.getComponent("org.apache.cocoon.components.repository.SourceRepository");
  -var resolver = cocoon.getComponent(SourceResolver.ROLE);
  -var slide = cocoon.getComponent(SlideRepository.ROLE);
  -var nat = slide.getNamespaceToken("cocoon");
  -
   // these variables need to be available in the sitemap as well
   // is/should there be a simple way to share these? an input module?
   var principal;
   var namespace = "cocoon";
   var base = "/samples/slide/";
   
  +var repository = 
cocoon.getComponent("org.apache.cocoon.components.repository.SourceRepository");
  +var resolver = cocoon.getComponent(SourceResolver.ROLE);
  +var slide = cocoon.getComponent(SlideRepository.ROLE);
  +var nat = slide.getNamespaceToken(namespace);
  +
   // ---------------------------------------------- utility functions
   
   function getBaseURI() {
  @@ -25,6 +25,7 @@
   
   function protect() {
     var path = cocoon.parameters["path"];
  +  cocoon.log.info("path: " + path);
     if (principal == undefined){
       login(path);
     }
  @@ -52,8 +53,7 @@
       var password = cocoon.request.getParameter("password");
       if (AdminHelper.login(nat,userid,password)) {
         principal = userid;
  -      // also put it in the session so it can be accessed 
  -      // from the sitemap throuhg the session attribute module
  +      // make the principal accessible from the sitemap as well
         cocoon.session.setAttribute("slide-principal",principal);
       }
     }
  @@ -199,7 +199,14 @@
     cocoon.redirectTo(base + "users");
   }
   
  -function protected_addgroup() {
  +function protected_addrole () {
  +  var rolename = cocoon.request.getParameter("rolename");
  +  
  +  AdminHelper.addRole(nat,principal,rolename);
  +  cocoon.redirectTo("users");
  +}
  +
  +function protected_addgroup () {
     var groupname = cocoon.request.getParameter("groupname");
     
     AdminHelper.addGroup(nat,principal,groupname);
  
  
  
  1.19      +15 -16    cocoon-2.1/src/blocks/slide/samples/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/slide/samples/sitemap.xmap,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- sitemap.xmap      12 Jan 2004 17:16:46 -0000      1.18
  +++ sitemap.xmap      20 Jan 2004 12:42:27 -0000      1.19
  @@ -59,7 +59,7 @@
        </global-variables>
      </map:component-configurations>
      
  -   <map:pipeline internal-only="true" type="noncaching">
  +   <map:pipeline internal-only="false" type="noncaching">
        <map:match pattern="screens/*/**">
          <map:call function="screen_{1}">
            <map:parameter name="path" value="{2}" />
  @@ -169,22 +169,21 @@
        
        <!-- ============= users ==================== -->
        <map:match pattern="users">
  -      <map:aggregate element="document" label="content">
  -        <map:part src="cocoon:/screens/users/"/>
  -        <map:part src="cocoon:/screens/groups/" />
  -        <map:part src="cocoon:/screens/roles/" />
  -      </map:aggregate>
  -      <map:transform src="styles/users2html.xsl">
  -       <map:parameter name="base" 
value="{request:contextPath}{global:base}"/>
  -       <map:parameter name="userspath" value="{slide-config:/userspath}" />
  -       <map:parameter name="rolespath" value="{slide-config:/rolespath}" />
  -       <map:parameter name="groupspath" value="{slide-config:/groupspath}" />
  -      </map:transform>
  -      <map:transform 
src="context://samples/common/style/xsl/html/complex-page2html.xsl">
  -       <map:parameter name="contextPath" value="{request:contextPath}"/>
  -      </map:transform>
  -      <map:serialize type="html"/>
  +       <map:aggregate element="document" label="content">
  +         <map:part src="cocoon:/screens/users/"/>
  +         <map:part src="cocoon:/screens/roles/" />
  +       </map:aggregate>
  +       <map:transform src="styles/users2html.xsl">
  +         <map:parameter name="base" 
value="{request:contextPath}{global:base}"/>
  +         <map:parameter name="userspath" value="{slide-config:/userspath}" />
  +         <map:parameter name="rolespath" value="{slide-config:/rolespath}" />
  +       </map:transform>
  +       <map:transform 
src="context://samples/common/style/xsl/html/complex-page2html.xsl">
  +         <map:parameter name="contextPath" value="{request:contextPath}"/>
  +       </map:transform>
  +       <map:serialize type="html"/>
        </map:match>
  +     
      </map:pipeline>
      
      <map:pipeline type="noncaching">
  
  
  

Reply via email to