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">