diff -ruN 0.10/setup.py 0.10-patched/setup.py
--- 0.10/setup.py	2007-07-10 13:20:34.000000000 +0200
+++ 0.10-patched/setup.py	2007-11-26 17:49:48.000000000 +0100
@@ -3,7 +3,7 @@
 from setuptools import setup, find_packages
 
 PACKAGE = 'SvnAuthzAdminPlugin'
-VERSION = '0.1'
+VERSION = '0.1.2 (Moved to Trac 0.11)'
 
 setup(  name=PACKAGE, version=VERSION,
         author = 'Gergely Kis',
@@ -15,8 +15,10 @@
         package_dir = { 'svnauthz' : 'svnauthz', 
 			'svnauthz_test' : 'svnauthz_test' },
         packages = ['svnauthz', 'svnauthz_test' ],
-        package_data = { 'svnauthz' : ['templates/*.cs', ]},
+        package_data = { 'svnauthz' : ['templates/*', ]},
         entry_points = {'trac.plugins': ['svnauthz.admin_ui = svnauthz.admin_ui',
-					 'svnauthz.SvnAuthzFile = svnauthz.SvnAuthzFile']},
-        install_requires = ['TracWebAdmin', 'TracAccountManager']
+#					 'svnauthz.SvnAuthzFile = svnauthz.SvnAuthzFile'
+					 ]},
+	zip_safe = False,
+        install_requires = []
 )
diff -ruN 0.10/svnauthz/admin_ui.py 0.10-patched/svnauthz/admin_ui.py
--- 0.10/svnauthz/admin_ui.py	2007-07-31 12:47:46.000000000 +0200
+++ 0.10-patched/svnauthz/admin_ui.py	2007-12-10 17:20:25.000000000 +0100
@@ -1,14 +1,13 @@
-
+import pkg_resources
 from trac.core import *
 from trac.perm import PermissionSystem
 
-from trac.util import sorted
+from trac.util import get_pkginfo, get_module_path, sorted
 from trac.config import Option
-from webadmin.web_ui import IAdminPageProvider
+from trac.admin.api import IAdminPanelProvider
 
 from model import *
 from io import *
-from acct_mgr.api import AccountManager
 from trac.web.chrome import ITemplateProvider
 
 from urllib import pathname2url, url2pathname
@@ -23,51 +22,61 @@
 
 
 class SvnAuthzAdminPage(Component):
-
-    implements(IAdminPageProvider, ITemplateProvider)
+    implements(IAdminPanelProvider, ITemplateProvider)
 
     def __init__(self):
         self.authz_file = self.env.config.get("trac", "authz_file")
         self.authz_module = self.env.config.get("trac", "authz_module_name")
         if self.authz_module != None and self.authz_module.strip() == "":
             self.authz_module = None
-        self.account_manager = AccountManager(self.env)
+    
+
+    # ITemplateProvider methods
+    def get_htdocs_dirs(self):
+        return []
+
+    def get_templates_dirs(self):
+        return [pkg_resources.resource_filename('svnauthz', 'templates')]
 
-    # IAdminPageProvider
-    def get_admin_pages(self, req):
+    # IAdminPanelProvider
+    def get_admin_panels(self, req):
         if req.perm.has_permission('TRAC_ADMIN'):
             yield ('subversion', 'Subversion', 'svnauthz', 'Subversion Access')
 
-    def process_admin_request(self, req, cat, page, path_info):
+    def render_admin_panel(self, req, cat, page, path_info):
+        data = {}
         perm = PermissionSystem(self.env)
         self.env.log.debug("SvnAuthzAdminPlugin: cat=%s page=%s path_info=%s"
                            % (cat, page, path_info))
         self.authz = self._get_model();
         if req.method == 'POST':
            if req.args.get('addgroup'):
-               self._add_group(req)
+               data.update(self._add_group(req))
            elif req.args.get('addpath'):
-               self._add_path(req)
+               data.update(self._add_path(req))
            elif req.args.get('addgroupmember'):
-               self._add_group_member(req)
+               data.update(self._add_group_member(req))
            elif req.args.get('removegroupmembers'):
-               self._del_group_member(req)
+               data.update(self._del_group_member(req))
            elif req.args.get('removegroups'):
-               self._del_groups(req)
+               data.update(self._del_groups(req))
            elif req.args.get('removepaths'):
-               self._del_paths(req)
+               data.update(self._del_paths(req))
            elif req.args.get('addpathmember'):
-               self._add_path_member(req)
+               data.update(self._add_path_member(req))
            elif req.args.get('changepathmembers'):
-               self._change_path_members(req)
+               data.update(self._change_path_members(req))
         
         # Handle group and path edit mode handling
         editgroup = None
         editpath = None               
         if path_info and path_info.startswith("editgroup/"):
-            editgroup = self._edit_group(req, cat, page, path_info)
+            editgroup, d = self._edit_group(req, cat, page, path_info)
+	    data.update(d)
         elif path_info and path_info.startswith("editpath/"):
-            editpath = self._edit_path(req, cat, page, path_info)
+            editpath, d = self._edit_path(req, cat, page, path_info)
+	    data.update(d)
+	print data
 
         paths_disp = []
         for repository, path in [(p.get_repo(), p.get_path()) for p in self.authz.get_paths()]:
@@ -85,7 +94,7 @@
                                 'url' : path_disp_url,
                                 'href': path_disp_href
                                 })
-        req.hdf['paths'] = sorted(paths_disp)
+        data['paths'] = sorted(paths_disp)
         
         groups_disp = []
         for group_disp in sorted([g.get_name() for g in self.authz.get_groups()]):
@@ -100,33 +109,19 @@
                                  'url': group_disp_url,
                                  'href': group_disp_href
                                 })
-        req.hdf['groups'] = groups_disp
+        data['groups'] = groups_disp
 
         self._persist_model(self.authz)
 
-        return 'admin_authz.cs', None
+        return 'admin_authz.html',data 
  
-    # ITemplateProvider
-    
-    def get_htdocs_dirs(self):
-        """Return the absolute path of a directory containing additional
-        static resources (such as images, style sheets, etc).
-        """
-        return []
-
-    def get_templates_dirs(self):
-        """Return the absolute path of the directory containing the provided
-        ClearSilver templates.
-        """
-        from pkg_resources import resource_filename
-        return [resource_filename(__name__, 'templates')]
-
     def _add_group(self, req):
         groupname = req.args.get('groupname')
         try:
             self.authz.add_group(Group(groupname, []))
+	    return {}
         except Exception, e:
-            req.hdf['addgroup.error'] = e
+            return {'addgroup_error' : e}
         
     def _del_groups(self, req):
         groups_to_del = req.args.get('selgroup')
@@ -137,9 +132,10 @@
                 for group in groups_to_del:
                     self.authz.del_group(url2pathname(group))
             else:
-                req.hdf['delgroup.error'] = "Invalid type of group selection"    
+                return {'delgroup_error' : "Invalid type of group selection"} 
         except Exception, e:
-            req.hdf['delgroup.error'] = e
+            return {'delgroup_error' : e }
+	return {}
     
     def _del_paths(self, req):
         paths_to_del = req.args.get('selpath')
@@ -152,30 +148,31 @@
                 if validpath:
                     self.authz.del_path(validpath[1], self.authz_module)
         except Exception, e:
-            req.hdf['delpath.error'] = e
+            return {'delpath_error' : e }
 
-    
+        return {} 
     def _add_path(self, req):
         path = req.args.get('path')
         repository = None
         try:
             self.authz.add_path(Path(path, [], self.authz_module))
+	    return {}
         except Exception, e:
-            req.hdf['addpath.error'] = e
+            return {'addpath_error' :  e}
 
     def _add_group_member(self, req):
         editgroup = url2pathname(req.args.get('editgroup'))
         subject = req.args.get('subject')
         group = self.authz.find_group(editgroup)
         if (group == None):
-            req.hdf['addgroupmember.error'] = "Group %s does not exist" % editgroup
-            return
+            return {'addgroupmember_error': "Group %s does not exist" % editgroup }
         try:
             member = self._get_member(subject)
             assert (member != None)
             group.append(member)
         except Exception, e:
-            req.hdf['addgroupmember.error'] = e
+            return {'addgroupmember_error':e} 
+	return {}
 
     def _add_path_member(self, req):
         editpath = url2pathname(req.args.get('editpath'))
@@ -184,8 +181,7 @@
         paths = [(p.get_repo(), p.get_path()) for p in self.authz.get_paths()]
         validpath = self._get_valid_path(paths, editpath)
         if not validpath:
-            req.hdf['changepathmember.error'] = "Not a valid path: %s" % editpath
-            return
+            return {'changepathmember_error' : "Not a valid path: %s" % editpath}
         path = validpath[1]        
         path_members = self.authz.find_path(path, self.authz_module)
         
@@ -208,7 +204,8 @@
             assert (s != None)
             path_members.append(PathAcl(s, read, write))
         except Exception, e:
-            req.hdf['addpathmember.error'] = e
+            return {'addpathmember_error' : e }
+	return {}
 
     
     def _del_group_member(self, req):
@@ -216,8 +213,7 @@
         members_to_del = req.args.get('selgroupmember')
         group = self.authz.find_group(editgroup)
         if not group:
-            req.hdf['delgroupmember.error'] = "Group %s does not exist" % editgroup
-            return        
+            return {'delgroupmember_error': "Group %s does not exist" % editgroup }
         try:
             if isinstance(members_to_del, types.StringTypes):
                 group.remove(self._get_member(members_to_del))
@@ -225,17 +221,18 @@
                 for member in members_to_del:
                     group.remove(self._get_member(member))
             else:
-                req.hdf['delgroupmember.error'] = "Wrong type of selection"
+                return {'delgroupmember_error': "Wrong type of selection" }
         except Exception, e:
-            req.hdf['delgroupmember.error'] = e
+            return {'delgroupmember_error': e}
+
+	return {}
 
     def _change_path_members(self, req):
         editpath = url2pathname(req.args.get('editpath'))
         paths = [(p.get_repo(), p.get_path()) for p in self.authz.get_paths()]
         validpath = self._get_valid_path(paths, editpath)
         if not validpath:
-            req.hdf['changepathmember.error'] = "Not a valid path: %s" % editpath
-            return
+            return {'changepathmember_error' : "Not a valid path: %s" % editpath }
         path = validpath[1]
         members_to_del = req.args.get('selpathmember')
         member_acls = req.args.get('selpathmember_acl')
@@ -243,20 +240,18 @@
         
         if len(path_members) == 0:
             # Nothing to do
-            return
+            return {}
         
         try:
             if members_to_del != None:
                 if isinstance(members_to_del, types.StringTypes):
                     members_to_del = [members_to_del]
                 if not isinstance(members_to_del, types.ListType):
-                    req.hdf['changepathmember.error'] = "Wrong type of member selection"
-                    return
+                    return {'changepathmember_error':  "Wrong type of member selection"}
                 for member in members_to_del:
                     path_members.remove(path_members.find_path_member(self._get_member(member)))
         except Exception, e:
-            req.hdf['changepathmember.error'] = e
-            return
+            return {'changepathmember_error': e}
         
         if member_acls == None:
             member_acls = ""
@@ -277,39 +272,58 @@
                     member.set_read(read)
                     member.set_write(write)
         except Exception, e:
-            req.hdf['changepathmember.error'] = e
+            return {'changepathmember_error':e}
+	return {}
     
     def _edit_group(self, req, cat, page, path_info):
         """
             Populates the editgroup.* parts of the hdf
             @return the value of editgroup.url or None
         """
+	data = {}
         editgroup = url2pathname(path_info[path_info.index('/')+1:len(path_info)])            
         group = self.authz.find_group(editgroup)
+	print group
         if group != None:
-            req.hdf['editgroup.name'] = editgroup
-            req.hdf['editgroup.url'] = pathname2url(editgroup)
-            req.hdf['editgroup.members'] = [m.__str__() for m in group]
+            data['editgroup_name'] = editgroup
+            data['editgroup_url'] = pathname2url(editgroup)
+            data['editgroup_members'] = [m.__str__() for m in group]
             
             # Populate member candidates
             not_in_list = [m.__str__() for m in group]
             not_in_list.append("@%s" % editgroup)
             candidates = self._get_candidate_subjects(not_in_list)
             if candidates != []:
-                req.hdf['editgroup.candidates'] = candidates
-            return req.hdf['editgroup.url']
-        return None
+                data['editgroup_candidates'] = candidates
+            return data['editgroup_url'], data
+	self.env.log.debug("SvnAdminAuthz: Group %s not found." % editgroup)
+        return None, {} 
+
+    def _get_all_users(self):
+      """
+      Fetches all users/groups from PermissionSystem
+      """
+      perm = PermissionSystem(self.env)
+      users = ["*"]
+      data = perm.get_all_permissions()
+      if not data:
+        return [] # we abort here
+
+      for (subject, action) in data:
+        if subject not in users and subject not in ["anonymous", "authenticated"]:
+          users.append(subject)
+      return users	
 
     def _get_candidate_subjects(self, not_in_list = []):
         candidates = []
-        users = [user for user in self.account_manager.get_users() 
+        users = [user for user in self._get_all_users() 
                  if user not in not_in_list]
         candidates += sorted(users)
         candidates += sorted([group.__str__() for group in self.authz.get_groups() 
                               if group.__str__() not in not_in_list])
-        self.env.log.debug("Candidates:")
-        for c in candidates:
-            self.env.log.debug("   %s" % c)             
+        #self.env.log.debug("Candidates:")
+        #for c in candidates:
+        #    self.env.log.debug("   %s" % c)             
         return candidates
     
     def _edit_path(self, req, cat, page, path_info):
@@ -317,12 +331,13 @@
             Populates the editpath.* parts of the hdf
             @return the value of editgroup.url or None
         """
+	data = {}
         editpath = url2pathname(path_info[path_info.index('/')+1:len(path_info)])            
         paths = [(p.get_repo(), p.get_path()) for p in self.authz.get_paths()]
         validpath = self._get_valid_path(paths, editpath)
         if validpath:
-            req.hdf['editpath.name'] = self._get_disp_path_name(validpath[0], validpath[1])
-            req.hdf['editpath.url'] = pathname2url(editpath)
+            data['editpath_name'] = self._get_disp_path_name(validpath[0], validpath[1])
+            data['editpath_url'] = pathname2url(editpath)
             pathmembers = self.authz.find_path(validpath[1], validpath[0])
             editpath_members = []
             for member in pathmembers:
@@ -335,15 +350,15 @@
                 editpath_members.append({'subject' : member.get_member().__str__(),
                                          'read' : read,
                                          'write' : write})
-            req.hdf['editpath.members'] = editpath_members 
+            data['editpath_members'] = editpath_members 
             
             # Populate member candidates
             not_in_list = [m.get_member().__str__() for m in pathmembers]
             candidates = self._get_candidate_subjects(not_in_list)
             if candidates != []:
-                req.hdf['editpath.candidates'] = candidates
-            return req.hdf['editpath.url']
-        return None
+               data['editpath_candidates'] = candidates
+            return data['editpath_url'], data
+        return None, {} 
 
     def _get_valid_path(self, pathlist, path):
         for repository, pathname in pathlist:
diff -ruN 0.10/svnauthz/model.py 0.10-patched/svnauthz/model.py
--- 0.10/svnauthz/model.py	2007-07-31 12:47:46.000000000 +0200
+++ 0.10-patched/svnauthz/model.py	2007-12-10 17:17:25.000000000 +0100
@@ -131,6 +131,7 @@
         
     def serialize(self):
         ret=""+ self.member.__str__() + " = "
+
         if (self.r):
             ret +="r"
         if (self.w):
diff -ruN 0.10/svnauthz/templates/admin_authz.cs 0.10-patched/svnauthz/templates/admin_authz.cs
--- 0.10/svnauthz/templates/admin_authz.cs	2007-07-10 13:10:54.000000000 +0200
+++ 0.10-patched/svnauthz/templates/admin_authz.cs	1970-01-01 01:00:00.000000000 +0100
@@ -1,181 +0,0 @@
-<h2>Manage Subversion Access Rights</h2>
-
-
-<?cs if editgroup.name ?>
-<form id="addgroupmember" class="addnew" method="post">
- <input type="hidden" name="editgroup" value="<?cs var:editgroup.url ?>" />
- <fieldset>
-  <?cs if addgroupmember.error ?>
-  <div class="system-message"><p><?cs var:addgroupmember.error ?></p></div>
-  <?cs /if ?>
-
-  <legend>Add Group Member to <?cs var:editgroup.name ?></legend>
-  <div class="field">
-   <label>Subject: <?cs call:hdf_select(editgroup.candidates, "subject", "", 0) ?>
-   </label>
-  </div>
-  <p class="help">Add a new subject to a Subversion group.</p>
-  <div class="buttons">
-   <input type="submit" name="addgroupmember" value=" Add ">
-  </div>
- </fieldset>
-</form>
-<?cs /if ?>
-
-<?cs if editpath.name ?>
-<form id="addpathmember" class="addnew" method="post">
- <input type="hidden" name="editpath" value="<?cs var:editpath.url ?>" />
- <fieldset>
-  <?cs if addpathmember.error ?>
-  <div class="system-message"><p><?cs var:addpathmember.error ?></p></div>
-  <?cs /if ?>
-
-  <legend>Add Path Member to <?cs var:editpath.name ?></legend>
-  <div class="field">
-   <label>Subject: <?cs call:hdf_select(editpath.candidates, "subject", "", 0) ?>
-   </label>
-  </div>
-  <div class="field">
-   <label>Read: <input type="checkbox" name="addpathmember_acl" value="R"/>
-   </label>
-  </div>
-  <div class="field">
-   <label>Write: <input type="checkbox" name="addpathmember_acl" value="W"/>
-   </label>
-  </div>
-  <p class="help">Add a new subject to a Path.</p>
-  <div class="buttons">
-   <input type="submit" name="addpathmember" value=" Add ">
-  </div>
- </fieldset>
-</form>
-<?cs /if ?>
-
-
-
-<form id="addgroup" class="addnew" method="post">
- <fieldset>
-  <?cs if addgroup.error ?>
-  <div class="system-message"><p><?cs var:addgroup.error ?></p></div>
-  <?cs /if ?>
-
-  <legend>Add Group:</legend>
-  <div class="field">
-   <label>Group name: <input type="text" name="groupname" class="textwidget" /></label>
-  </div>
-  <p class="help">Add a new Subversion group.</p>
-  <div class="buttons">
-   <input type="submit" name="addgroup" value=" Add ">
-  </div>
- </fieldset>
-</form>
-
-<form id="addpath" class="addnew" method="post">
- <fieldset>
-  <?cs if addpath.error ?>
-  <div class="system-message"><p><?cs var:addpath.error ?></p></div>
-  <?cs /if ?>
-
-  <legend>Add Path:</legend>
-  <div class="field">
-   <label>Path: <input type="text" name="path" class="textwidget" /></label>
-  </div>
-  <?cs if addpath.repository ?>
-  <div class="field">
-   <label>Repository: <input type="text" name="repository" class="textwidget" /></label>
-  </div>
-  <?cs /if?>
-  <p class="help">Add a new Subversion path.</p>
-  <div class="buttons">
-   <input type="submit" name="addpath" value=" Add ">
-  </div>
- </fieldset>
-</form>
-
-<form method="post">
-  <?cs if delgroup.error ?>
-	<div class="system-message"><p><?cs var:delgroup.error ?></p></div>
-  <?cs /if ?>
- <table class="listing" id="grouplist">
-  <thead>
-   <tr><th class="sel">&nbsp;</th><th>Subversion Groups</th></tr>
-  </thead><tbody>
-  <?cs each:group = groups ?>
-   <tr>
-    <td><input type="checkbox" name="selgroup" value="<?cs var:group.url ?>" /></td>
-    <td><a href="<?cs var:group.href ?>"><?cs var:group.name ?></a>
-	<?cs if editgroup.url == group.url ?>
-		  <?cs if delgroupmember.error ?>
-  			<div class="system-message"><p><?cs var:delgroupmember.error ?></p></div>
-  		  <?cs /if ?>
-
-  			<input type="hidden" name="editgroup" value="<?cs var:editgroup.url ?>" />
-		<table class="listing" id="editgrouplist">
-  			<thead>
-   				<tr><th class="sel">&nbsp;</th><th>Group Members</th></tr>
-  			</thead><tbody>			
-  			<?cs each:groupmember = editgroup.members ?>
-			<tr>
-			<td><input type="checkbox" name="selgroupmember" value="<?cs var:groupmember ?>"/></td>
-			<td><?cs var:groupmember ?></td>
-			</tr>
-			<?cs /each ?>
-		</tbody></table>
-		<div class="buttons">
-  			<input type="submit" name="removegroupmembers" value="Remove selected group members" />
- 		</div>
-	<?cs /if ?>    
-    </td>
-   </tr>
-  <?cs /each ?>
-  </tbody>
- </table>
- <div class="buttons">
-  <input type="submit" name="removegroups" value="Remove selected groups" />
- </div>
-</form>
-
-<form method="post">
-  <?cs if delpath.error ?>
-	<div class="system-message"><p><?cs var:delpath.error ?></p></div>
-  <?cs /if ?>
- <table class="listing" id="pathlist">
-  <thead>
-   <tr><th class="sel">&nbsp;</th><th>Subversion Paths</th></tr>
-  </thead><tbody><?cs
-   each:path = paths ?>
-   <tr>
-    <td><input type="checkbox" name="selpath" value="<?cs var:path.url ?>" /></td>
-    <td><a href="<?cs var:path.href ?>"><?cs var:path.name ?></a>
-	<?cs if editpath.url == path.url ?>
-		  <?cs if changepathmember.error ?>
-  			<div class="system-message"><p><?cs var:changepathmember.error ?></p></div>
-  		  <?cs /if ?>
-
-  			<input type="hidden" name="editpath" value="<?cs var:editpath.url ?>" />
-		<table class="listing" id="editpathlist">
-  			<thead>
-   				<tr><th class="sel">Remove</th><th>Path Members</th><th>Read</th><th>Write</th></tr>
-  			</thead><tbody>			
-  			<?cs each:pathmember = editpath.members ?>
-			<tr>
-			<td><input type="checkbox" name="selpathmember" value="<?cs var:pathmember.subject ?>"/></td>
-			<td><?cs var:pathmember.subject ?></td>
-			<td><input type="checkbox" name="selpathmember_acl" value="<?cs var:pathmember.subject ?>_R" <?cs var:pathmember.read ?> /></td>
-			<td><input type="checkbox" name="selpathmember_acl" value="<?cs var:pathmember.subject ?>_W" <?cs var:pathmember.write ?> /></td>
-			</tr>
-			<?cs /each ?>
-		</tbody></table>
-		<div class="buttons">
-  			<input type="submit" name="changepathmembers" value="Change path members" />
- 		</div>
-	<?cs /if ?>    
-    </td>
-   </tr><?cs
-  /each ?></tbody>
- </table>
- <div class="buttons">
-  <input type="submit" name="removepaths" value="Remove selected paths" />
- </div>
-</form>
-
diff -ruN 0.10/svnauthz/templates/admin_authz.html 0.10-patched/svnauthz/templates/admin_authz.html
--- 0.10/svnauthz/templates/admin_authz.html	1970-01-01 01:00:00.000000000 +0100
+++ 0.10-patched/svnauthz/templates/admin_authz.html	2007-12-10 15:08:53.000000000 +0100
@@ -0,0 +1,201 @@
+<!DOCTYPE html
+   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:xi="http://www.w3.org/2001/XInclude"
+            xmlns:py="http://genshi.edgewall.org/">
+  <xi:include href="admin.html" />
+  <head>
+   <title>Plugins</title>
+   <script type="text/javascript" src="${chrome.htdocs_location}js/folding.js"></script>
+   <script type="text/javascript">
+   $(document).ready(function(){ $("div.plugin h3").enableFolding(true) });
+   </script>
+  </head>
+  <body>
+  <h2>Manage Subversion Access Rights</h2>
+
+<py:if test="editgroup_name">
+<form id="addgroupmember" class="addnew"  method="post">
+ <input type="hidden" name="editgroup" value="${editgroup_url}" />
+ <fieldset>
+  <py:if test="addgroupmember_error">
+  <div class="system-message"><p>${addgroupmember_error}</p></div>
+  </py:if>
+
+  <legend>Add Group Member to ${editgroup_name}</legend>
+  <div class="field">
+   <label>Subject: 
+    <select name="subject">
+     <option py:for="candidate in editgroup_candidates" value="$candidate">$candidate</option>
+    </select>
+   </label>
+  </div>
+  <p class="help">Add a new subject to a Subversion group.</p>
+  <div class="buttons">
+   <input type="submit" name="addgroupmember" value=" Add " />
+  </div>
+ </fieldset>
+</form>
+</py:if>
+
+<py:if test="editpath_name">
+<form id="addpathmember" class="addnew" method="post">
+ <input type="hidden" name="editpath" value="${editpath_url}" />
+ <fieldset>
+  <py:if test="addpathmember_error">
+  <div class="system-message"><p>${addpathmember_error}</p></div>
+  </py:if>
+
+  <legend>Add Path Member to $editpath_name</legend>
+  <div class="field">
+   <label>Subject:
+   <select name="subject">
+        <option py:for="candidate in editpath_candidates" value="$candidate">$candidate</option>
+	    </select>
+   </label>
+  </div>
+  <div class="field">
+   <label>Read: <input type="checkbox" name="addpathmember_acl" value="R"/>
+   </label>
+  </div>
+  <div class="field">
+   <label>Write: <input type="checkbox" name="addpathmember_acl" value="W"/>
+   </label>
+  </div>
+  <p class="help">Add a new subject to a Path.</p>
+  <div class="buttons">
+   <input type="submit" name="addpathmember" value=" Add " />
+  </div>
+ </fieldset>
+</form>
+</py:if>
+
+
+
+<form id="addgroup" class="addnew" method="post"> 
+ <fieldset>
+  <py:if test="addgroup and addgroup.error">
+  <div class="system-message"><p>$addgroup.error</p></div>
+  </py:if>
+
+  <legend>Add Group:</legend>
+  <div class="field">
+   <label>Group name: <input type="text" name="groupname" class="textwidget" /></label>
+  </div>
+  <p class="help">Add a new Subversion group.</p>
+  <div class="buttons">
+   <input type="submit" name="addgroup" value=" Add " />
+  </div>
+ </fieldset>
+</form>
+
+<form id="addpath" class="addnew" method="post">
+ <fieldset>
+  <py:if test="addpath_error">
+  <div class="system-message"><p>$addpath_error</p></div>
+  </py:if>
+
+  <legend>Add Path:</legend>
+  <div class="field">
+   <label>Path: <input type="text" name="path" class="textwidget" /></label>
+  </div>
+  <py:if test="addpath_repository">
+  <div class="field">
+   <label>Repository: <input type="text" name="repository" class="textwidget" /></label>
+  </div>
+  </py:if>
+  <p class="help">Add a new Subversion path.</p>
+  <div class="buttons">
+   <input type="submit" name="addpath" value=" Add " />
+  </div>
+ </fieldset>
+</form>
+
+<form method="post">
+  <py:if test="delgroup_error">
+	<div class="system-message"><p>$delgroup_error</p></div>
+  </py:if>
+ <table class="listing" id="grouplist">
+  <thead>
+   <tr><th class="sel">&nbsp;</th><th>Subversion Groups</th></tr>
+  </thead><tbody>
+  <py:for each="group in groups">
+   <tr>
+    <td><input type="checkbox" name="selgroup" value="${group.url}" /></td>
+    <td><a href="${group.href}">${group.name}</a>
+	<py:if test="editgroup_url == group.url"> 
+		  <py:if test="delgroupmember_error">
+  			<div class="system-message"><p>$delgroupmember_error</p></div>
+  		  </py:if>
+
+  			<input type="hidden" name="editgroup" value="${editgroup_url}" />
+		<table class="listing" id="editgrouplist">
+  			<thead>
+   				<tr><th class="sel">&nbsp;</th><th>Group Members</th></tr>
+  			</thead><tbody>			
+  			<py:for each="groupmember in editgroup_members">
+			<tr>
+			<td><input type="checkbox" name="selgroupmember" value="$groupmember"/></td>
+			<td>$groupmember</td>
+			</tr>
+			</py:for>
+		</tbody></table>
+		<div class="buttons">
+  			<input type="submit" name="removegroupmembers" value="Remove selected group members" />
+ 		</div>
+	</py:if>    
+    </td>
+   </tr>
+  </py:for>
+  </tbody>
+ </table>
+ <div class="buttons">
+  <input type="submit" name="removegroups" value="Remove selected groups" />
+ </div>
+</form>
+
+<form method="post">
+  <py:if test="delpath_error">
+	<div class="system-message"><p>$delpath_error</p></div>
+  </py:if>
+ <table class="listing" id="pathlist">
+  <thead>
+   <tr><th class="sel">&nbsp;</th><th>Subversion Paths</th></tr>
+  </thead><tbody><py:for each="path in paths">
+   <tr>
+    <td><input type="checkbox" name="selpath" value="${path.url}" /></td>
+    <td><a href="${path.href}">${path.name}</a>
+	<py:if test="path and editpath_url == path.url">
+		  <py:if test="changepathmember_error">
+  			<div class="system-message"><p>${changepathmember_error}</p></div>
+  		  </py:if>
+
+  			<input type="hidden" name="editpath" value="${editpath_url}" />
+		<table class="listing" id="editpathlist">
+  			<thead>
+   				<tr><th class="sel">Remove</th><th>Path Members</th><th>Read</th><th>Write</th></tr>
+  			</thead><tbody>			
+  			<py:for each="pathmember in editpath_members">
+			<tr>
+			<td><input type="checkbox" name="selpathmember" value="${pathmember.subject}"/></td>
+			<td>${pathmember.subject}</td>
+			<td><input type="checkbox" name="selpathmember_acl" value="${pathmember.subject}_R" checked="${pathmember.read}" /></td>
+			<td><input type="checkbox" name="selpathmember_acl" value="${pathmember.subject}_W" checked="${pathmember.write}" /></td>
+			</tr>
+			</py:for>
+		</tbody></table>
+		<div class="buttons">
+  			<input type="submit" name="changepathmembers" value="Change path members" />
+ 		</div>
+	</py:if>    
+    </td>
+   </tr></py:for>
+  </tbody>
+ </table>
+ <div class="buttons">
+  <input type="submit" name="removepaths" value="Remove selected paths" />
+ </div>
+</form>
+</body>
+</html>
