You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ev...@apache.org on 2005/10/04 21:38:58 UTC

svn commit: r294905 - in /maven/continuum/trunk: continuum-api/src/main/java/org/apache/maven/continuum/ continuum-api/src/main/java/org/apache/maven/continuum/security/ continuum-api/src/main/java/org/apache/maven/continuum/store/ continuum-core/src/m...

Author: evenisse
Date: Tue Oct  4 12:38:36 2005
New Revision: 294905

URL: http://svn.apache.org/viewcvs?rev=294905&view=rev
Log:
Add userGroup management and user management screens

Added:
    maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml   (with props)
    maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm   (with props)
    maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm   (with props)
    maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm   (with props)
    maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm   (with props)
Modified:
    maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
    maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/security/ContinuumSecurity.java
    maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java
    maven/continuum/trunk/continuum-model/pom.xml
    maven/continuum/trunk/continuum-model/src/main/mdo/continuum.mdo
    maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
    maven/continuum/trunk/continuum-web/src/main/resources/META-INF/plexus/components.xml
    maven/continuum/trunk/continuum-web/src/main/resources/localization/Continuum.properties
    maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/Menu.vm
    maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Add.vm

Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Tue Oct  4 12:38:36 2005
@@ -22,6 +22,8 @@
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.model.project.ProjectNotifier;
 import org.apache.maven.continuum.model.project.Schedule;
+import org.apache.maven.continuum.model.system.ContinuumUser;
+import org.apache.maven.continuum.model.system.UserGroup;
 import org.apache.maven.continuum.security.ContinuumSecurity;
 import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
@@ -213,4 +215,38 @@
     // ----------------------------------------------------------------------
 
     ContinuumSecurity getSecurity();
+
+    // ----------------------------------------------------------------------
+    // User
+    // ----------------------------------------------------------------------
+
+    List getUsers()
+        throws ContinuumException;
+
+    ContinuumUser getUser( int userId )
+        throws ContinuumException;
+
+    void removeUser( int userId )
+        throws ContinuumException;
+
+    // ----------------------------------------------------------------------
+    // User Group
+    // ----------------------------------------------------------------------
+
+    void addUserGroup( UserGroup userGroup );
+
+    void addUserGroup( Map configuration )
+        throws ContinuumException;
+
+    void updateUserGroup( int userGroupId, Map configuration )
+        throws ContinuumException;
+
+    List getUserGroups()
+        throws ContinuumException;
+
+    UserGroup getUserGroup( int userGroupId )
+        throws ContinuumException;
+
+    void removeUserGroup( int userGroupId )
+        throws ContinuumException;
 }

Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/security/ContinuumSecurity.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/security/ContinuumSecurity.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/security/ContinuumSecurity.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/security/ContinuumSecurity.java Tue Oct  4 12:38:36 2005
@@ -42,6 +42,9 @@
     boolean isAuthorized( ContinuumUser user, String action )
         throws ContinuumSecurityException;
 
+    boolean isAuthorized( UserGroup group, String action )
+        throws ContinuumSecurityException;
+
     ContinuumUser getGuestUser()
         throws ContinuumSecurityException;
 }

Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java Tue Oct  4 12:38:36 2005
@@ -160,12 +160,23 @@
 
     ContinuumUser addUser( ContinuumUser user );
 
+    void updateUser( ContinuumUser user )
+        throws ContinuumStoreException;
+
+    ContinuumUser getUser( int userId )
+        throws ContinuumObjectNotFoundException, ContinuumStoreException;
+
     ContinuumUser getGuestUser()
         throws ContinuumStoreException;
 
+    List getUsers()
+        throws ContinuumStoreException;
+
     ContinuumUser getUserByUsername( String username )
         throws ContinuumStoreException;
 
+    void removeUser( ContinuumUser user );
+
     List getPermissions()
         throws ContinuumStoreException;
 
@@ -179,5 +190,13 @@
     void updateUserGroup( UserGroup group )
         throws ContinuumStoreException;
 
+    List getUserGroups()
+        throws ContinuumStoreException;
+
+    UserGroup getUserGroup( int userGroupId )
+        throws ContinuumObjectNotFoundException, ContinuumStoreException;
+
     UserGroup getUserGroup( String name );
+
+    void removeUserGroup( UserGroup group );
 }

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Tue Oct  4 12:38:36 2005
@@ -35,6 +35,8 @@
 import org.apache.maven.continuum.model.project.ProjectGroup;
 import org.apache.maven.continuum.model.project.ProjectNotifier;
 import org.apache.maven.continuum.model.project.Schedule;
+import org.apache.maven.continuum.model.system.ContinuumUser;
+import org.apache.maven.continuum.model.system.UserGroup;
 import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
 import org.apache.maven.continuum.project.builder.maven.MavenOneContinuumProjectBuilder;
@@ -846,20 +848,14 @@
     public Schedule getSchedule( int scheduleId )
         throws ContinuumException
     {
-        //TODO: Add a store.getScheduleById() method
-        List schedules = store.getAllSchedulesByName();
-
-        for ( Iterator i = schedules.iterator(); i.hasNext(); )
+        try
         {
-            Schedule schedule = (Schedule) i.next();
-
-            if ( schedule.getId() == scheduleId )
-            {
-                return schedule;
-            }
+            return store.getSchedule( scheduleId );
+        }
+        catch ( Exception ex )
+        {
+            throw logAndCreateException( "Error while getting schedule.", ex );
         }
-
-        return null;
     }
 
     public Collection getSchedules()
@@ -1071,6 +1067,303 @@
     public ContinuumSecurity getSecurity()
     {
         return security;
+    }
+
+    // ----------------------------------------------------------------------
+    // User
+    // ----------------------------------------------------------------------
+
+    public List getUsers()
+        throws ContinuumException
+    {
+        try
+        {
+            return store.getUsers();
+        }
+        catch ( ContinuumStoreException ex )
+        {
+            throw logAndCreateException( "Error while getting users.", ex );
+        }
+    }
+
+    public void addUser( ContinuumUser user )
+    {
+        store.addUser( user );
+    }
+
+    public void updateUser( ContinuumUser user )
+        throws ContinuumException
+    {
+        try
+        {
+            store.updateUser( user );
+        }
+        catch ( ContinuumStoreException ex )
+        {
+            throw logAndCreateException( "Error while storing user.", ex );
+        }
+    }
+
+    public ContinuumUser getUser( int userId )
+        throws ContinuumException
+    {
+        try
+        {
+            return store.getUser( userId);
+        }
+        catch ( Exception ex )
+        {
+            throw logAndCreateException( "Error while getting user.", ex );
+        }
+    }
+
+    public void removeUser( int userId )
+        throws ContinuumException
+    {
+        ContinuumUser user = getUser( userId );
+
+        store.removeUser( user );
+    }
+
+    // ----------------------------------------------------------------------
+    // User Group
+    // ----------------------------------------------------------------------
+
+    public List getUserGroups()
+        throws ContinuumException
+    {
+        try
+        {
+            return store.getUserGroups();
+        }
+        catch ( ContinuumStoreException ex )
+        {
+            throw logAndCreateException( "Error while getting user groups.", ex );
+        }
+    }
+
+    public void addUserGroup( UserGroup userGroup )
+    {
+        store.addUserGroup( userGroup );
+    }
+
+    public void addUserGroup( Map configuration )
+        throws ContinuumException
+    {
+        try
+        {
+            UserGroup userGroup = new UserGroup();
+
+            userGroup.setName( (String) configuration.get( "group.name" ) );
+
+            userGroup.setDescription( (String) configuration.get( "group.description" ) );
+
+            List perms = new ArrayList();
+
+            if ( convert( (String) configuration.get( "group.permission.addProject" ) ) )
+            {
+                perms.add( store.getPermission( "addProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.editProject" ) ) )
+            {
+                perms.add( store.getPermission( "editProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.deleteProject" ) ) )
+            {
+                perms.add( store.getPermission( "deleteProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.buildProject" ) ) )
+            {
+                perms.add( store.getPermission( "buildProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.showProject" ) ) )
+            {
+                perms.add( store.getPermission( "showProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.addBuildDefinition" ) ) )
+            {
+                perms.add( store.getPermission( "addBuildDefinition" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.editBuildDefinition" ) ) )
+            {
+                perms.add( store.getPermission( "editBuildDefinition" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.deleteBuildDefinition" ) ) )
+            {
+                perms.add( store.getPermission( "deleteBuildDefinition" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.addNotifier" ) ) )
+            {
+                perms.add( store.getPermission( "addNotifier" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.editNotifier" ) ) )
+            {
+                perms.add( store.getPermission( "editNotifier" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.deleteNotifier" ) ) )
+            {
+                perms.add( store.getPermission( "deleteNotifier" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.manageConfiguration" ) ) )
+            {
+                perms.add( store.getPermission( "manageConfiguration" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.manageSchedule" ) ) )
+            {
+                perms.add( store.getPermission( "manageSchedule" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.manageUsers" ) ) )
+            {
+                perms.add( store.getPermission( "manageUsers" ) );
+            }
+
+            userGroup.setPermissions( perms );
+
+            store.addUserGroup( userGroup );
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw logAndCreateException( "Error while storing user group.", e );
+        }
+    }
+
+    public void updateUserGroup( int userGroupId, Map configuration )
+        throws ContinuumException
+    {
+        try
+        {
+            UserGroup userGroup = getUserGroup( userGroupId );
+
+            userGroup.setName( (String) configuration.get( "group.name" ) );
+
+            userGroup.setDescription( (String) configuration.get( "group.description" ) );
+
+            List perms = new ArrayList();
+
+            if ( convert( (String) configuration.get( "group.permission.addProject" ) ) )
+            {
+                perms.add( store.getPermission( "addProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.editProject" ) ) )
+            {
+                perms.add( store.getPermission( "editProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.deleteProject" ) ) )
+            {
+                perms.add( store.getPermission( "deleteProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.buildProject" ) ) )
+            {
+                perms.add( store.getPermission( "buildProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.showProject" ) ) )
+            {
+                perms.add( store.getPermission( "showProject" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.addBuildDefinition" ) ) )
+            {
+                perms.add( store.getPermission( "addBuildDefinition" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.editBuildDefinition" ) ) )
+            {
+                perms.add( store.getPermission( "editBuildDefinition" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.deleteBuildDefinition" ) ) )
+            {
+                perms.add( store.getPermission( "deleteBuildDefinition" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.addNotifier" ) ) )
+            {
+                perms.add( store.getPermission( "addNotifier" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.editNotifier" ) ) )
+            {
+                perms.add( store.getPermission( "editNotifier" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.deleteNotifier" ) ) )
+            {
+                perms.add( store.getPermission( "deleteNotifier" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.manageConfiguration" ) ) )
+            {
+                perms.add( store.getPermission( "manageConfiguration" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.manageSchedule" ) ) )
+            {
+                perms.add( store.getPermission( "manageSchedule" ) );
+            }
+
+            if ( convert( (String) configuration.get( "group.permission.manageUsers" ) ) )
+            {
+                perms.add( store.getPermission( "manageUsers" ) );
+            }
+
+            userGroup.setPermissions( perms );
+
+            store.updateUserGroup( userGroup );
+        }
+        catch ( ContinuumStoreException ex )
+        {
+            throw logAndCreateException( "Error while storing user group.", ex );
+        }
+    }
+
+    public UserGroup getUserGroup( int userGroupId )
+        throws ContinuumException
+    {
+        try
+        {
+            return store.getUserGroup( userGroupId);
+        }
+        catch ( Exception ex )
+        {
+            throw logAndCreateException( "Error while getting user group.", ex );
+        }
+    }
+
+    public void removeUserGroup( int userGroupId )
+        throws ContinuumException
+    {
+        UserGroup group = getUserGroup( userGroupId );
+
+        store.removeUserGroup( group );
+    }
+
+    private boolean convert( String value )
+    {
+        if ( "true".equalsIgnoreCase( value ) || "on".equalsIgnoreCase( value ) || "yes".equalsIgnoreCase( value ) )
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
     }
 
     // ----------------------------------------------------------------------

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java Tue Oct  4 12:38:36 2005
@@ -197,66 +197,76 @@
         throws ContinuumStoreException
     {
         // Continuum Administrator
-        List adminPermissions = store.getPermissions();
+        if ( store.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) == null )
+        {
+            List adminPermissions = store.getPermissions();
 
-        UserGroup adminGroup = new UserGroup();
+            UserGroup adminGroup = new UserGroup();
 
-        adminGroup.setName( ContinuumSecurity.ADMIN_GROUP_NAME );
+            adminGroup.setName( ContinuumSecurity.ADMIN_GROUP_NAME );
 
-        adminGroup.setDescription( "Continuum Admin Group" );
+            adminGroup.setDescription( "Continuum Admin Group" );
 
-        adminGroup.setPermissions( adminPermissions );
+            adminGroup.setPermissions( adminPermissions );
 
-        adminGroup = store.addUserGroup( adminGroup );
+            adminGroup = store.addUserGroup( adminGroup );
+        }
 
         // Continuum Guest
-        UserGroup guestGroup = new UserGroup();
+        if ( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) == null )
+        {
+            UserGroup guestGroup = new UserGroup();
 
-        guestGroup.setName( ContinuumSecurity.GUEST_GROUP_NAME );
+            guestGroup.setName( ContinuumSecurity.GUEST_GROUP_NAME );
 
-        guestGroup.setDescription( "Continuum Guest Group" );
+            guestGroup.setDescription( "Continuum Guest Group" );
 
-        List guestPermissions = new ArrayList();
+            List guestPermissions = new ArrayList();
 
-        guestPermissions.add( store.getPermission( "addProject" ) );
+            guestPermissions.add( store.getPermission( "addProject" ) );
 
-        guestPermissions.add( store.getPermission( "editProject" ) );
+            guestPermissions.add( store.getPermission( "editProject" ) );
 
-        guestPermissions.add( store.getPermission( "deleteProject" ) );
+            guestPermissions.add( store.getPermission( "deleteProject" ) );
 
-        guestPermissions.add( store.getPermission( "buildProject" ) );
+            guestPermissions.add( store.getPermission( "buildProject" ) );
 
-        guestPermissions.add( store.getPermission( "showProject" ) );
+            guestPermissions.add( store.getPermission( "showProject" ) );
 
-        guestPermissions.add( store.getPermission( "addBuildDefinition" ) );
+            guestPermissions.add( store.getPermission( "addBuildDefinition" ) );
 
-        guestPermissions.add( store.getPermission( "editBuildDefinition" ) );
+            guestPermissions.add( store.getPermission( "editBuildDefinition" ) );
 
-        guestPermissions.add( store.getPermission( "deleteBuildDefinition" ) );
+            guestPermissions.add( store.getPermission( "deleteBuildDefinition" ) );
 
-        guestPermissions.add( store.getPermission( "addNotifier" ) );
+            guestPermissions.add( store.getPermission( "addNotifier" ) );
 
-        guestPermissions.add( store.getPermission( "editNotifier" ) );
+            guestPermissions.add( store.getPermission( "editNotifier" ) );
 
-        guestPermissions.add( store.getPermission( "deleteNotifier" ) );
+            guestPermissions.add( store.getPermission( "deleteNotifier" ) );
 
-        guestGroup.setPermissions( guestPermissions );
+            guestGroup.setPermissions( guestPermissions );
 
-        guestGroup = store.addUserGroup( guestGroup );
+            guestGroup = store.addUserGroup( guestGroup );
+        }
     }
 
     private void createGuestUser()
+        throws ContinuumStoreException
     {
-        ContinuumUser guest = new ContinuumUser();
+        if ( store.getGuestUser() == null )
+        {
+            ContinuumUser guest = new ContinuumUser();
 
-        guest.setUsername( "guest" );
+            guest.setUsername( "guest" );
 
-        guest.setFullName( "Anonymous User" );
+            guest.setFullName( "Anonymous User" );
 
-        guest.setGroup( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) );
+            guest.setGroup( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) );
 
-        guest.setGuest( true );
+            guest.setGuest( true );
 
-        guest = store.addUser( guest );
+            guest = store.addUser( guest );
+        }
     }
 }

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java Tue Oct  4 12:38:36 2005
@@ -75,6 +75,26 @@
         return false;
     }
 
+    public boolean isAuthorized( UserGroup group, String action )
+        throws ContinuumSecurityException
+    {
+        List perms = getPermissions( group );
+
+        if ( perms != null )
+        {
+            for ( Iterator i = perms.iterator(); i.hasNext(); )
+            {
+                Permission perm = (Permission) i.next();
+                if ( perm.getName().equals( action ) )
+                {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
     public ContinuumUser getGuestUser()
         throws ContinuumSecurityException
     {

Modified: maven/continuum/trunk/continuum-model/pom.xml
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-model/pom.xml?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-model/pom.xml (original)
+++ maven/continuum/trunk/continuum-model/pom.xml Tue Oct  4 12:38:36 2005
@@ -13,7 +13,7 @@
       <plugin>
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
-        <version>1.0-alpha-4</version>
+        <version>1.0-alpha-5-SNAPSHOT</version>
         <executions>
           <execution>
             <goals>

Modified: maven/continuum/trunk/continuum-model/src/main/mdo/continuum.mdo
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-model/src/main/mdo/continuum.mdo?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-model/src/main/mdo/continuum.mdo (original)
+++ maven/continuum/trunk/continuum-model/src/main/mdo/continuum.mdo Tue Oct  4 12:38:36 2005
@@ -727,7 +727,7 @@
         <field>
           <name>permissions</name>
           <version>1.0.0+</version>
-          <association stash.part="true">
+          <association stash.part="true" jpox.dependent="false">
             <type>Permission</type>
             <multiplicity>*</multiplicity>
           </association>
@@ -774,14 +774,14 @@
         <field>
           <name>group</name>
           <version>1.0.0+</version>
-          <association stash.part="true">
+          <association stash.part="true" jpox.dependent="false">
             <type>UserGroup</type>
           </association>
         </field>
         <field>
           <name>notificationAddresses</name>
           <version>1.0.0+</version>
-          <association>
+          <association stash.part="true" >
             <type>NotificationAddress</type>
             <multiplicity>*</multiplicity>
           </association>

Modified: maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java Tue Oct  4 12:38:36 2005
@@ -879,6 +879,12 @@
         return (ContinuumUser) addObject( user );
     }
 
+    public void updateUser( ContinuumUser user )
+        throws ContinuumStoreException
+    {
+        updateObject( user );
+    }
+
     public ContinuumUser getGuestUser()
         throws ContinuumStoreException
     {
@@ -917,6 +923,18 @@
         }
     }
 
+    public List getUsers()
+        throws ContinuumStoreException
+    {
+        return getAllObjectsDetached( ContinuumUser.class );
+    }
+
+    public ContinuumUser getUser( int userId )
+        throws ContinuumObjectNotFoundException, ContinuumStoreException
+    {
+        return (ContinuumUser) getObjectById( ContinuumUser.class, userId );
+    }
+
     public ContinuumUser getUserByUsername( String username )
         throws ContinuumStoreException
     {
@@ -959,6 +977,11 @@
         }
     }
 
+    public void removeUser( ContinuumUser user )
+    {
+        removeObject( user );
+    }
+
     public List getPermissions()
         throws ContinuumStoreException
     {
@@ -1023,6 +1046,18 @@
         updateObject( group );
     }
 
+    public List getUserGroups()
+        throws ContinuumStoreException
+    {
+        return getAllObjectsDetached( UserGroup.class );
+    }
+
+    public UserGroup getUserGroup( int userGroupId )
+        throws ContinuumObjectNotFoundException, ContinuumStoreException
+    {
+        return (UserGroup) getObjectById( UserGroup.class, userGroupId );
+    }
+
     public UserGroup getUserGroup( String name )
     {
         PersistenceManager pm = pmf.getPersistenceManager();
@@ -1062,5 +1097,10 @@
         {
             rollback( tx );
         }
+    }
+
+    public void removeUserGroup( UserGroup group )
+    {
+        removeObject( group );
     }
 }

Modified: maven/continuum/trunk/continuum-web/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/META-INF/plexus/components.xml?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/continuum/trunk/continuum-web/src/main/resources/META-INF/plexus/components.xml Tue Oct  4 12:38:36 2005
@@ -314,6 +314,20 @@
               </scalar>
             </scalars>
           </view>
+          <!--
+           |
+           | Project Builds Definitions
+           |
+           -->
+          <view>
+            <id>UserGroup</id>
+            <scalars>
+              <scalar>
+                <id>userGroup</id>
+                <expression>getuserGroup(#id)</expression>
+              </scalar>
+            </scalars>
+          </view>
         </views>
       </configuration>
     </component>
@@ -486,6 +500,23 @@
           <call>
             <cid>updateBuildDefinition</cid>
             <expression>updateBuildDefinition(#id,#buildDefinitionId,#parameters)</expression>
+          </call>
+          <!--
+           |
+           | User Group
+           |
+           -->
+          <call>
+            <cid>addUserGroup</cid>
+            <expression>addUserGroup(#parameters)</expression>
+          </call>
+          <call>
+            <cid>deleteUserGroup</cid>
+            <expression>removeUserGroup(#id)</expression>
+          </call>
+          <call>
+            <cid>updateUserGroup</cid>
+            <expression>updateUserGroup(#id,#parameters)</expression>
           </call>
         </calls>
       </configuration>

Added: maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml?rev=294905&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml (added)
+++ maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml Tue Oct  4 12:38:36 2005
@@ -0,0 +1,64 @@
+<form>
+  <id>userGroups</id>
+  <key-expression>id</key-expression>
+  <summary-collection-expression>getUserGroups()</summary-collection-expression>
+  <source-role>org.apache.maven.continuum.Continuum</source-role>
+  <target-class>org.apache.maven.continuum.model.system.UserGroup</target-class>
+  <lookup-expression>getUserGroup(#id)</lookup-expression>
+  <elements>
+    <element>
+      <id>group.name</id>
+      <validators>
+        <validator>
+          <id>required</id>
+          <error-message-key>group.name.error</error-message-key>
+        </validator>
+      </validators>
+      <type>text</type>
+      <label-key>group.name.label</label-key>
+      <message-key>group.name.message</message-key>
+      <expression>name</expression>
+    </element>
+    <element>
+      <id>group.description</id>
+      <validators>
+        <validator>
+          <id>required</id>
+          <error-message-key>group.description.error</error-message-key>
+        </validator>
+      </validators>
+      <type>text</type>
+      <label-key>group.description.label</label-key>
+      <message-key>group.description.message</message-key>
+      <expression>description</expression>
+    </element>
+  </elements>
+
+  <!-- Add -->
+  <add>
+    <title-key>group.addTitle</title-key>
+    <action>addEntity</action>
+    <view>UserGroups.vm</view>
+    <view-on-failure>Add.vm</view-on-failure>
+    <fid-on-failure>userGroups</fid-on-failure>
+    <expression>addUserGroup(#entity)</expression>
+  </add>
+
+  <!-- Update -->
+  <update>
+    <title-key>group.updateTitle</title-key>
+    <action>updateEntity</action>
+    <view>UserGroups.vm</view>
+    <view-on-failure>Edit.vm</view-on-failure>
+    <fid-on-failure>userGroups</fid-on-failure>
+    <expression>updateUserGroups(#entity)</expression>
+  </update>
+
+  <!-- Delete -->
+  <delete>
+    <title-key>group.deleteTitle</title-key>
+    <view>UserGroups.vm</view>
+    <action>deleteEntity</action>
+    <expression>removeUserGroup(#id)</expression>
+  </delete>
+</form>

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/forms/userGroups.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/continuum/trunk/continuum-web/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/localization/Continuum.properties?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/localization/Continuum.properties (original)
+++ maven/continuum/trunk/continuum-web/src/main/resources/localization/Continuum.properties Tue Oct  4 12:38:36 2005
@@ -241,3 +241,50 @@
 schedule.active.label = Enabled
 schedule.active.message = Enabled/Disabled the schedule
 
+// ----------------------------------------------------------------------
+// User Groups
+// ----------------------------------------------------------------------
+
+group.addTitle = Add User Group
+
+group.updateTitle = Edit User Group
+
+group.deleteTitle = Delete User Group
+group.deleteConfirmationMessage = Are you sure you want to delete this user group?
+
+group.name.label = Name
+group.name.message = Enter the name of the user group
+group.name.error = You must enter a name for the user group
+
+group.description.label = Description
+group.description.message = Enter a description of the user group
+group.description.error = You must enter a description for the user group
+
+group.permission.addProject.label = Add Projects
+
+group.permission.editProject.label = Edit Projects
+
+group.permission.deleteProject.label = Delete Projects
+
+group.permission.buildProject.label = Build Projects
+
+group.permission.showProject.label = Show Projects
+
+group.permission.addBuildDefinition.label = Add Build Definitions
+
+group.permission.editBuildDefinition.label = Edit Build Definitions
+
+group.permission.deleteBuildDefinition.label = Delete Build Definitions
+
+group.permission.addNotifier.label = Add Notifiers
+
+group.permission.editNotifier.label = Edit Notifiers
+
+group.permission.deleteNotifier.label = Delete Notifiers
+
+group.permission.manageConfiguration.label = Manage Continuum Configuration
+
+group.permission.manageSchedule.label = Manage Schedules
+
+group.permission.manageUsers.label = Manage Users/Group
+

Modified: maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/Menu.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/Menu.vm?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/Menu.vm (original)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/navigations/Menu.vm Tue Oct  4 12:38:36 2005
@@ -43,6 +43,8 @@
    <div class="label">Administration</div>
    <div class="body">
      <div><a href="$link.setPage('Schedules.vm').addPathInfo( 'fid', 'schedules')">Schedules</a></div>
+     <div><a href="$link.setPage('UserGroups.vm')">User Groups Management</a></div>
+     <div><a href="$link.setPage('Users.vm')">Users Management</a></div>
    </div>
   </div>
   #end

Modified: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Add.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Add.vm?rev=294905&r1=294904&r2=294905&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Add.vm (original)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Add.vm Tue Oct  4 12:38:36 2005
@@ -1,4 +1,4 @@
-$page.setTitle( "Add Project" )
+$page.setTitle( $i18n.getString( $form.add.titleKey ) )
 
 <div class="app">
   <div id="axial" class="h3">

Added: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm?rev=294905&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm (added)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm Tue Oct  4 12:38:36 2005
@@ -0,0 +1,156 @@
+$page.setTitle( $i18n.getString( $form.add.titleKey ) )
+
+<div class="app">
+  <div id="axial" class="h3">
+    <h3>$i18n.getString( $form.add.titleKey )</h3>
+    <form method="post" action="$link" #if( $form.attributes.multipart )enctype="multipart/form-data"#end>
+      #hidden ( "action" "cam" )
+      #hidden ( "cid" "addUserGroup" )
+      #hidden ( "view" "$form.add.view" )
+      #hidden ( "id" $id )
+      <div class="axial">
+        <table border="1" cellspacing="2" cellpadding="3" width="100%">
+          #foreach ( $element in $form.elements )
+            #if ( !$element.immutable )
+            <tr>
+              #field( $i18n $data $element $item $formtool )
+            </tr>
+            #else
+              #if ( $element.defaultValue )
+                #hidden ( $element.id $element.defaultValue )
+              #end
+            #end
+          #end
+        <tr>
+          <th>Add Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.addProject" />
+            <p>
+              group.permission.addProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Edit Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.editProject" />
+            <p>
+              group.permission.editProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Delete Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.deleteProject" />
+            <p>
+              group.permission.deleteProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Build Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.buildProject" />
+            <p>
+              group.permission.buildProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Show Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.showProject" />
+            <p>
+              group.permission.showProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Add Build Definitions</th>
+          <td >
+            <input type="checkbox" name="group.permission.addBuildDefinition" />
+            <p>
+              group.permission.addBuildDefinition.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Edit Build Definitions</th>
+          <td >
+            <input type="checkbox" name="group.permission.editBuildDefinition" />
+            <p>
+              group.permission.editBuildDefinition.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Delete Build Definitions</th>
+          <td >
+            <input type="checkbox" name="group.permission.deleteBuildDefinition" />
+            <p>
+              group.permission.deleteBuildDefinition.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Add Notifiers</th>
+          <td >
+            <input type="checkbox" name="group.permission.addNotifier" />
+            <p>
+              group.permission.addNotifier.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Edit Notifiers</th>
+          <td >
+            <input type="checkbox" name="group.permission.editNotifier" />
+            <p>
+              group.permission.editNotifier.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Delete Notifiers</th>
+          <td >
+            <input type="checkbox" name="group.permission.deleteNotifier" />
+            <p>
+              group.permission.deleteNotifier.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Manage Continuum Configuration</th>
+          <td >
+            <input type="checkbox" name="group.permission.manageConfiguration" />
+            <p>
+              group.permission.manageConfiguration.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Manage Schedules</th>
+          <td >
+            <input type="checkbox" name="group.permission.manageSchedule" />
+            <p>
+              group.permission.manageSchedule.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Manage Users/Group</th>
+          <td >
+            <input type="checkbox" name="group.permission.manageUsers" />
+            <p>
+              group.permission.manageUsers.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        </table>
+
+        #submitBar( "Submit" )
+      </div>
+    </form>
+  </div>
+</div>

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/AddUserGroup.vm
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm?rev=294905&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm (added)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm Tue Oct  4 12:38:36 2005
@@ -0,0 +1,155 @@
+$page.setTitle( $i18n.getString( $form.add.titleKey ) )
+
+<div class="app">
+  <div id="axial" class="h3">
+    <h3>$i18n.getString( $form.add.titleKey )</h3>
+    <form method="post" action="$link" #if( $form.attributes.multipart )enctype="multipart/form-data"#end>
+      #hidden ( "action" "cam" )
+      #hidden ( "cid" "updateUserGroup" )
+      #hidden ( "view" "$form.add.view" )
+      #hidden ( "id" $id )
+      <div class="axial">
+        <table border="1" cellspacing="2" cellpadding="3" width="100%">
+          #foreach ( $element in $form.elements )
+            #if ( !$element.immutable )
+            <tr>
+              #field( $i18n $data $element $item $formtool )
+            </tr>
+            #else
+              #if ( $element.defaultValue )
+                #hidden ( $element.id $element.defaultValue )
+              #end
+            #end
+          #end
+        <tr>
+          <th>Add Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.addProject" />
+            <p>
+              group.permission.addProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Edit Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.editProject" />
+            <p>
+              group.permission.editProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Delete Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.deleteProject" />
+            <p>
+              group.permission.deleteProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Build Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.buildProject" />
+            <p>
+              group.permission.buildProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Show Projects</th>
+          <td >
+            <input type="checkbox" name="group.permission.showProject" />
+            <p>
+              group.permission.showProject.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Add Build Definitions</th>
+          <td >
+            <input type="checkbox" name="group.permission.addBuildDefinition" />
+            <p>
+              group.permission.addBuildDefinition.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Edit Build Definitions</th>
+          <td >
+            <input type="checkbox" name="group.permission.editBuildDefinition" />
+            <p>
+              group.permission.editBuildDefinition.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Delete Build Definitions</th>
+          <td >
+            <input type="checkbox" name="group.permission.deleteBuildDefinition" />
+            <p>
+              group.permission.deleteBuildDefinition.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Add Notifiers</th>
+          <td >
+            <input type="checkbox" name="group.permission.addNotifier" />
+            <p>
+              group.permission.addNotifier.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Edit Notifiers</th>
+          <td >
+            <input type="checkbox" name="group.permission.editNotifier" />
+            <p>
+              group.permission.editNotifier.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Delete Notifiers</th>
+          <td >
+            <input type="checkbox" name="group.permission.deleteNotifier" />
+            <p>
+              group.permission.deleteNotifier.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Manage Continuum Configuration</th>
+          <td >
+            <input type="checkbox" name="group.permission.manageConfiguration" />
+            <p>
+              group.permission.manageConfiguration.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Manage Schedules</th>
+          <td >
+            <input type="checkbox" name="group.permission.manageSchedule" />
+            <p>
+              group.permission.manageSchedule.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        <tr>
+          <th>Manage Users/Group</th>
+          <td >
+            <input type="checkbox" name="group.permission.manageUsers" />
+            <p>
+              group.permission.manageUsers.message <font color="red"><b></b></font>
+            </p>
+          </td>
+        </tr>
+        </table>
+        #submitBar( "Submit" )
+      </div>
+    </form>
+  </div>
+</div>

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/EditUserGroup.vm
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm?rev=294905&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm (added)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm Tue Oct  4 12:38:36 2005
@@ -0,0 +1,148 @@
+$page.setTitle( "Continuum - Group Management" )
+
+#set ( $items = $continuum.userGroups )
+
+<div class="app">
+  <div id="h3">
+    <h3>Group Management</h3>
+    <table border="1" cellspacing="2" cellpadding="3" width="100%">
+      <tr>
+        <th width="10%">Name</th>
+        <th>Add Projects</th>
+        <th>Edit Projects</th>
+        <th>Delete Projects</th>
+        <th>Build Projects</th>
+        <th>Show Projects</th>
+        <th>Add Build Definitions</th>
+        <th>Edit Build Definitions</th>
+        <th>Delete Build Definitions</th>
+        <th>Add Notifiers</th>
+        <th>Edit Notifiers</th>
+        <th>Delete Notifiers</th>
+        <th>Manage Continuum Configuration</th>
+        <th>Manage Schedules</th>
+        <th>Manage Users/Groups</th>
+        <th width="10%">&nbsp;</th>
+      </tr>
+      #foreach ( $group in $items )
+      <tr class="b">
+        <td>$group.name</td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "addProject" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "editProject" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "deleteProject" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "buildProject" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "showProject" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "addBuildDefinition" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "editBuildDefinition" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "deleteBuildDefinition" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "addNotifier" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "editNotifier" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "deleteNotifier" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "manageConfiguration" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "manageSchedule" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          #if ( $continuum.security.isAuthorized( $group, "manageUsers" ) )
+            <img src="/continuum/images/icon_success_sml.gif" alt="Authorized"/>
+          #else
+            <img src="/continuum/images/icon_error_sml.gif" alt="Unauthorized"/>
+          #end
+        </td>
+        <td>
+          <a href="$link.setPage('EditUserGroup.vm').addPathInfo( 'fid', 'userGroups').addPathInfo('id', $group.id)">Edit</a>
+          | <a href="$link.setPage('Delete.vm').addPathInfo('fid', "userGroups").addPathInfo('id', $group.id)">Delete</a></td>
+        </td>
+      </tr>
+      #end
+    </table>
+    <div class="functnbar3">
+      <table>
+        <tr>
+          <td>
+            <form method="post" action="$link.setPage('AddUserGroup.vm').addPathInfo('view','UserGroup').addPathInfo( 'fid', 'userGroups')">
+              <input type="submit" name="add-user-group" value="Add"/>
+            </form>
+          </td>
+        </tr>
+      </table>
+    </div>
+  </div>
+</div>
+

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/UserGroups.vm
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm?rev=294905&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm (added)
+++ maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm Tue Oct  4 12:38:36 2005
@@ -0,0 +1,41 @@
+$page.setTitle( "Continuum - User Management" )
+
+#set ( $items = $continuum.users )
+
+<div class="app">
+  <div id="h3">
+    <h3>User Management</h3>
+    <table border="1" cellspacing="2" cellpadding="3" width="100%">
+      <tr>
+        <th width="10%">Username</th>
+        <th width="10%">Full Name</th>
+        <th width="10%">Email</th>
+        <th width="10%">Group</th>
+        <th width="10%">&nbsp;</th>
+      </tr>
+      #foreach ( $user in $items )
+      <tr class="b">
+        <td>$user.username</td>
+        <td>$user.fullName</td>
+        <td>#if ( $user.email ) $user.email #end</td>
+        <td>$user.group.name</td>
+        <td></td>
+      </tr>
+      #end
+    </table>
+    <!--
+    <div class="functnbar3">
+      <table>
+        <tr>
+          <td>
+            <form method="post" action="$link.setPage('Add.vm').addPathInfo( 'fid', 'schedules')">
+              <input type="submit" name="add-build-def" value="Add"/>
+            </form>
+          </td>
+        </tr>
+      </table>
+    </div>
+    -->
+  </div>
+</div>
+

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-web/src/main/resources/templates/screens/Users.vm
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"