[#254] Changed admin pages from one page with tabs to separate pages

Jenny Steele Jenny Steele 2010-05-03

added pyforge/pyforge/templates/app_admin_options.html
added pyforge/pyforge/templates/app_admin_permissions.html
changed ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
changed ForgeDiscussion/forgediscussion/forum_main.py
changed ForgeGit/forgegit/git_main.py
changed ForgeHg/forgehg/hg_main.py
changed ForgeSVN/forgesvn/svn_main.py
changed ForgeTracker/forgetracker/tests/unit/__init__.py
changed ForgeTracker/forgetracker/tracker_main.py
changed ForgeWiki/forgewiki/tests/functional/test_root.py
changed pyforge/pyforge/ext/admin/admin_main.py
changed pyforge/pyforge/ext/project_home/project_main.py
changed pyforge/pyforge/ext/search/search_main.py
changed pyforge/pyforge/ext/user_profile/user_main.py
changed pyforge/pyforge/model/project.py
changed pyforge/pyforge/pastetemplates/forgeapp/+package+/main.py_tmpl
changed pyforge/pyforge/app.py
copied ForgeDiscussion/forgediscussion/templates/admin.html -> ForgeDiscussion/forgediscussion/templates/admin_forums.html
copied ForgeTracker/forgetracker/templates/admin.html -> ForgeTracker/forgetracker/templates/admin_fields.html
copied pyforge/pyforge/templates/app_admin.html -> ForgeTracker/forgetracker/templates/admin_permissions.html
pyforge/pyforge/templates/app_admin_options.html Diff Switch to side-by-side view
Loading...
pyforge/pyforge/templates/app_admin_permissions.html Diff Switch to side-by-side view
Loading...
ForgeDiscussion/forgediscussion/tests/functional/test_forum.py Diff Switch to side-by-side view
Loading...
ForgeDiscussion/forgediscussion/forum_main.py Diff Switch to side-by-side view
Loading...
ForgeGit/forgegit/git_main.py Diff Switch to side-by-side view
Loading...
ForgeHg/forgehg/hg_main.py Diff Switch to side-by-side view
Loading...
ForgeSVN/forgesvn/svn_main.py Diff Switch to side-by-side view
Loading...
ForgeTracker/forgetracker/tests/unit/__init__.py Diff Switch to side-by-side view
Loading...
ForgeTracker/forgetracker/tracker_main.py Diff Switch to side-by-side view
Loading...
ForgeWiki/forgewiki/tests/functional/test_root.py Diff Switch to side-by-side view
Loading...
pyforge/pyforge/ext/admin/admin_main.py Diff Switch to side-by-side view
Loading...
pyforge/pyforge/ext/project_home/project_main.py Diff Switch to side-by-side view
Loading...
pyforge/pyforge/ext/search/search_main.py Diff Switch to side-by-side view
Loading...
pyforge/pyforge/ext/user_profile/user_main.py Diff Switch to side-by-side view
Loading...
pyforge/pyforge/model/project.py Diff Switch to side-by-side view
Loading...
pyforge/pyforge/pastetemplates/forgeapp/+package+/main.py_tmpl Diff Switch to side-by-side view
Loading...
pyforge/pyforge/app.py Diff Switch to side-by-side view
Loading...
ForgeDiscussion/forgediscussion/templates/admin.html to ForgeDiscussion/forgediscussion/templates/admin_forums.html
--- a/ForgeDiscussion/forgediscussion/templates/admin.html
+++ b/ForgeDiscussion/forgediscussion/templates/admin_forums.html
@@ -11,86 +11,11 @@
   
   <head>
     <meta content="text/html; charset=UTF-8" http-equiv="content-type" py:replace="''"/>
-    <title>Admin for $c.project.name $app.config.options.mount_point</title>
+    <title>$app.config.options.mount_point Admin Forums</title>
   </head>
   
   <body>
-    <h1 class="title">Discussion Admin</h1>
-    <div id="app_admin_tabs">
-	<ul>
-        <li><a href="#app-config" py:if="len(app.config_options) > 1">$app.config.tool_name Options</a></li>
-        <li><a href="#app-acl"
-               py:if="app.permissions and allow_config">Permissions</a></li>
-        <li><a href="#app-forums">Forums</a></li>
-	</ul>
-      <div id="app-config" py:if="len(app.config_options) > 1" style="overflow: auto">
-        <form method="post" action="configure">
-          <py:for each="o in app.config_options" py:if="o.name != 'mount_point'">
-            <div class="span-3"><label for="$o.name" class="span-3">$o.name</label></div>
-            <div class="span-13 last" py:if="not allow_config">
-                 ${app.config.options.get(o.name, o.default)}
-            </div>
-            <div class="editable viewing span-13 last" style="min-height:1em;"
-                 py:if="allow_config">
-              <div class="viewer">${app.config.options.get(o.name, o.default)}</div>
-              <div class="editor"><input name="$o.name" value="${app.config.options.get(o.name, o.default)}"/></div>
-            </div>
-            <hr class="clear clearfix" />
-          </py:for>
-          <div class="span-13 push-3 last">
-            <input type="submit" value="Update config" py:if="allow_config"
-                   class="ui-state-default ui-button ui-button-text"/>
-            <input py:if="app.installable and allow_config" type="submit" name="delete" value="Delete Tool"
-                   class="ui-state-default ui-button ui-button-text"/>
-          </div>
-        </form>
-      </div>
-      <div id="app-acl" py:if="app.permissions and allow_config">
-        <div id="acl-admin">
-          <py:for each="p in app.permissions" >
-            <h3><a href="#" id="permission_$p">$p</a></h3>
-            <div>
-              <table>
-                <thead>
-                  <tr>
-                    <th>Role</th>
-                    <th/>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr py:for="role in h.make_roles(app.config.acl[p])">
-                    <td>${role.display()}</td>
-                    <td>
-                      <form method="POST" action="del_perm" style="display:inline">
-                        <input type="hidden" name="permission" value="$p"/>
-                        <input type="hidden" name="role" value="${role._id}"/>
-                        <input type="submit" value="Remove" py:if="role.display() != '*user-'+c.user.username"
-                               class="ui-state-default ui-button ui-button-text"/>
-                      </form>
-                    </td>
-                  </tr>
-                  <tr>
-                    <form method="POST" action="add_perm">
-                      <td>
-                        <select name="role">
-                          <option py:for="role in c.project.roles"
-                                  value="$role._id"
-                                  >${role.display()}</option>
-                        </select>
-                      </td>
-                      <td>
-                        <input type="hidden" name="permission" value="$p"/>
-                        <input type="submit" value="Add Permission" class="ui-state-default ui-button ui-button-text"/>
-                      </td>
-                    </form>
-                  </tr>
-                </tbody>
-              </table>
-            </div>
-          </py:for>
-        </div>
-      </div>
-      <div id="app-forums">
+    <h1 class="title">$app.config.options.mount_point Admin Forums</h1>
           <form method="POST" action="update_forums" enctype="multipart/form-data">
           <table id="forums">
             <thead>
@@ -170,23 +95,8 @@
           </div>
           <div class="clear"/>
         </form>
-      </div>
-    </div>
     <script type="text/javascript">
       $(function() {
-        $("#app_admin_tabs").tabs({cookie:{expires:30}});
-        $("#acl-admin").accordion({
-          autoHeight: false,
-          navigation: true,
-		change: function(event,ui) {
-			var hid = ui.newHeader.children('a').attr('id');
-		if (hid === undefined) {
-			$.cookie('discussion-acl-admin', null);
-		} else {
-			$.cookie('discussion-acl-admin', hid, { path: '/', expires: 2 });
-		}
-		}
-        });
         $("#add_forum").click(function(){
           $("#add_forum_form").show();
           $(this).hide();
@@ -198,13 +108,6 @@
           return false;
         });
       });
-      $(document).ready(function(){
-        if($.cookie('discussion-acl-admin')) {
-		$('#acl-admin').accordion('option', 'animated', false)
-		               .accordion('activate', $('#' + $.cookie('discussion-acl-admin')).parent('h3'))
-		               .accordion('option', 'animated', 'slide');
-        }
-      });
 	  </script>
   </body>
 </html>
ForgeTracker/forgetracker/templates/admin.html to ForgeTracker/forgetracker/templates/admin_fields.html
--- a/ForgeTracker/forgetracker/templates/admin.html
+++ b/ForgeTracker/forgetracker/templates/admin_fields.html
@@ -10,133 +10,51 @@
 
   <head>
     <meta content="text/html; charset=UTF-8" http-equiv="content-type" py:replace="''"/>
-    <title>$app.config.tool_name Admin</title>
+    <title>$app.config.options.mount_point Admin Fields</title>
   </head>
 
   <body>
-    <h1 class="title">$app.config.tool_name Admin</h1>
-    <div id="app_admin_tabs">
-    	<ul>
-    		<li><a href="#app-acl"
-    		       py:if="app.permissions and allow_config">Permissions</a></li>
-		<li><a href="#app-field-management">Field Management</a></li>
-    	</ul>
-      <div id="app-acl" py:if="app.permissions and allow_config">
-        <div id="acl-admin">
-          <py:for each="p in app.permissions" >
-            <h3><a href="#" id="permission_$p">$p</a></h3>
-            <div>
-              <table>
-                <thead>
-                  <tr>
-                    <th>Role</th>
-                    <th/>
-                  </tr>
-                </thead>
-                <tbody>
-                  <tr py:for="role in h.make_roles(app.config.acl[p])">
-                    <td>${role.display()}</td>
-                    <td>
-                      <form method="POST" action="del_perm" style="display:inline">
-                        <input type="hidden" name="permission" value="$p"/>
-                        <input type="hidden" name="role" value="${role._id}"/>
-                        <input type="submit" value="Remove" py:if="role.display() != '*user-'+c.user.username"
-                               class="ui-state-default ui-button ui-button-text"/>
-                      </form>
-                    </td>
-                  </tr>
-                  <tr>
-                    <form method="POST" action="add_perm">
-                      <td>
-                        <select name="role">
-                          <option py:for="role in c.project.roles"
-                                  value="$role._id"
-                                  >${role.display()}</option>
-                        </select>
-                      </td>
-                      <td>
-                        <input type="hidden" name="permission" value="$p"/>
-                        <input type="submit" value="Add Permission" class="ui-state-default ui-button ui-button-text"/>
-                      </td>
-                    </form>
-                  </tr>
-                </tbody>
-              </table>
-            </div>
-          </py:for>
-        </div>
+    <h1 class="title">$app.config.options.mount_point Admin Fields</h1>
+    <div class="span-3 clear"><label>Milestone Names:</label></div>
+    <div class="span-13 last">
+      <input type="text" name="milestone_names" id="milestone_names" value="${globals.milestone_names}"
+             py:if="allow_config" class="title wide"/>
+      <span py:if="not allow_config">${globals.milestone_names}</span>
+    </div>
+    <hr class="clear clearfix" />
+    <div class="span-3 clear"><label>Status Names:</label></div>
+    <div class="span-13 last">
+      <input type="text" name="status_names" id="status_names" value="${globals.status_names}"
+             py:if="allow_config" class="title wide"/>
+      <span py:if="not allow_config">${globals.status_names}</span>
+    </div>
+    <hr class="clear clearfix" />
+    <div class="span-3 clear"><label>Custom Fields:</label></div>
+    <div class="span-13 last" style="padding-top: 10px">
+      <p id="has_fields_message">Drag and drop the fields to re-order.</p>
+      <p id="no_fields_message">No custom fields have been created.</p>
+      <div id="custom-field-list">
+        <py:for each="field in globals.custom_fields">
+          <?python show_in_search = 'true' if field.show_in_search else 'false' ?>
+          <div style="display:none" class="custom-field-stub"
+              data-label="${field.label}" data-type="${field.type}" data-options="${getattr(field, 'options', '')}"
+              data-show-in-search="${show_in_search}"
+              py:if="allow_config"/>
+          <py:if test="not allow_config">
+            <div class="span-3"><label>Label: </label></div><div class="span-15 last">${field.label}</div>
+            <div class="span-3"><label>Type: </label></div><div class="span-15 last">${field.type}</div>
+            <span class="options-wrapper" py:if="field.options"><div class="span-3"><label>Options: </label></div><div class="span-15 last">${getattr(field, 'options', '')}</div></span>
+          </py:if>
+        </py:for>
       </div>
-      <div id="app-field-management">
-        <div>
-          <div class="span-3 clear"><label>Milestone Names:</label></div>
-          <div class="span-13 last">
-            <input type="text" name="milestone_names" id="milestone_names" value="${globals.milestone_names}"
-                   py:if="allow_config" class="title wide"/>
-            <span py:if="not allow_config">${globals.milestone_names}</span>
-          </div>
-          <hr class="clear clearfix" />
-          <div class="span-3 clear"><label>Status Names:</label></div>
-          <div class="span-13 last">
-            <input type="text" name="status_names" id="status_names" value="${globals.status_names}"
-                   py:if="allow_config" class="title wide"/>
-            <span py:if="not allow_config">${globals.status_names}</span>
-          </div>
-          <hr class="clear clearfix" />
-          <div class="span-3 clear"><label>Custom Fields:</label></div>
-          <div class="span-13 last" style="padding-top: 10px">
-            <p id="has_fields_message">Drag and drop the fields to re-order.</p>
-            <p id="no_fields_message">No custom fields have been created.</p>
-            <div id="custom-field-list">
-              <py:for each="field in globals.custom_fields">
-                <?python show_in_search = 'true' if field.show_in_search else 'false' ?>
-                <div style="display:none" class="custom-field-stub"
-                    data-label="${field.label}" data-type="${field.type}" data-options="${getattr(field, 'options', '')}"
-                    data-show-in-search="${show_in_search}"
-                    py:if="allow_config"/>
-                <py:if test="not allow_config">
-                  <div class="span-3"><label>Label: </label></div><div class="span-15 last">${field.label}</div>
-                  <div class="span-3"><label>Type: </label></div><div class="span-15 last">${field.type}</div>
-                  <span class="options-wrapper" py:if="field.options"><div class="span-3"><label>Options: </label></div><div class="span-15 last">${getattr(field, 'options', '')}</div></span>
-                </py:if>
-              </py:for>
-            </div>
-          </div>
-          <hr class="clear clearfix" />
-          <div class="push-3 span-13 last">
-            <input type="button" onclick="add_field()" class="ui-state-default ui-button ui-button-text"
-                    py:if="allow_config" value="Add Field"/>
-            <input type="button" onclick="save_fields()" class="ui-state-default ui-button ui-button-text"
-                    py:if="allow_config" value="Save"/>
-          </div>
-        </div>
-      </div>
-    </div>  
-    <script type="text/javascript">
-      $(function() {
-        $("#app_admin_tabs").tabs({cookie:{expires:30}});
-      });
-      $(function() {
-        $("#acl-admin").accordion({
-          autoHeight: false,
-          navigation: true,
-          change: function(event,ui) {
-            var hid = ui.newHeader.children('a').attr('id');
-            if (hid === undefined) {
-              $.cookie('tracker-acl-admin', null);
-            } else {
-              $.cookie('tracker-acl-admin', hid, { path: '/', expires: 2 });
-            }
-          }
-        });
-      });
-      $(document).ready(function(){
-        if($.cookie('tracker-acl-admin')) {
-          $('#acl-admin').accordion('option', 'animated', false)
-                         .accordion('activate', $('#' + $.cookie('tracker-acl-admin')).parent('h3'))
-                         .accordion('option', 'animated', 'slide');
-        }
-      });
-	  </script>
+    </div>
+    <hr class="clear clearfix" />
+    <div class="push-3 span-13 last">
+      <input type="button" onclick="add_field()" class="ui-state-default ui-button ui-button-text"
+              py:if="allow_config" value="Add Field"/>
+      <input type="button" onclick="save_fields()" class="ui-state-default ui-button ui-button-text"
+              py:if="allow_config" value="Save"/>
+    </div>
   </body>
   <style type="text/css">
     div.custom-field {
pyforge/pyforge/templates/app_admin.html to ForgeTracker/forgetracker/templates/admin_permissions.html
--- a/pyforge/pyforge/templates/app_admin.html
+++ b/ForgeTracker/forgetracker/templates/admin_permissions.html
@@ -3,117 +3,82 @@
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:py="http://genshi.edgewall.org/"
       xmlns:xi="http://www.w3.org/2001/XInclude">
-  
+
   <xi:include href="master.html" />
 
   <?python from pyforge.lib.security import has_artifact_access ?>
-  
+
   <head>
     <meta content="text/html; charset=UTF-8" http-equiv="content-type" py:replace="''"/>
-    <title>$app.config.tool_name Admin</title>
+    <title>$app.config.options.mount_point Admin Permissions</title>
   </head>
-  
+
   <body>
-    <h1 class="title">$app.config.tool_name Admin</h1>
-    <py:if test="not len(app.config_options) > 1 and not (app.permissions and allow_config)">
-      Nothing to administer for ${app.config.tool_name}.
-    </py:if>
-    <py:if test="len(app.config_options) > 1 or (app.permissions and allow_config)">
-      <div id="app_admin_tabs">
-      	<ul>
-		<li><a href="#app-config" py:if="len(app.config_options) > 1">$app.config.tool_name Options</a></li>
-      		<li><a href="#app-acl" 
-		       py:if="app.permissions and allow_config">$app.config.tool_name Permissions</a></li>
-      	</ul>
-        <div id="app-config" py:if="len(app.config_options) > 1" style="overflow: auto">
-          <form method="post" action="configure">
-            <py:for each="o in app.config_options" py:if="o.name != 'mount_point'">
-              <div class="span-3"><label for="$o.name" class="span-3">$o.name</label></div>
-              <div class="span-13 last" py:if="not allow_config">
-                   ${app.config.options.get(o.name, o.default)}
-              </div>
-              <div class="editable viewing span-13 last" style="min-height:1em;"
-                   py:if="allow_config">
-                <div class="viewer">${app.config.options.get(o.name, o.default)}</div>
-                <div class="editor"><input name="$o.name" value="${app.config.options.get(o.name, o.default)}"/></div>
-              </div>
-              <hr class="clear clearfix" />
-            </py:for>
-            <div class="span-13 push-3 last">
-              <input type="submit" value="Update config" py:if="allow_config"
-                     class="ui-state-default ui-button ui-button-text"/>
-              <input py:if="app.installable and allow_config" type="submit" name="delete" value="Delete Tool"
-                     class="ui-state-default ui-button ui-button-text"/>
-            </div>
-          </form>
+    <h1 class="title">$app.config.options.mount_point Admin Permissions</h1>
+    <div id="acl-admin" py:if="app.permissions and allow_config">
+      <py:for each="p in app.permissions" >
+        <h3><a href="#" id="permission_$p">$p</a></h3>
+        <div>
+          <table>
+            <thead>
+              <tr>
+                <th>Role</th>
+                <th/>
+              </tr>
+            </thead>
+            <tbody>
+              <tr py:for="role in h.make_roles(app.config.acl[p])">
+                <td>${role.display()}</td>
+                <td>
+                  <form method="POST" action="del_perm" style="display:inline">
+                    <input type="hidden" name="permission" value="$p"/>
+                    <input type="hidden" name="role" value="${role._id}"/>
+                    <input type="submit" value="Remove" py:if="role.display() != '*user-'+c.user.username"
+                           class="ui-state-default ui-button ui-button-text"/>
+                  </form>
+                </td>
+              </tr>
+              <tr>
+                <form method="POST" action="add_perm">
+                  <td>
+                    <select name="role">
+                      <option py:for="role in c.project.roles"
+                              value="$role._id"
+                              >${role.display()}</option>
+                    </select>
+                  </td>
+                  <td>
+                    <input type="hidden" name="permission" value="$p"/>
+                    <input type="submit" value="Add Permission" class="ui-state-default ui-button ui-button-text"/>
+                  </td>
+                </form>
+              </tr>
+            </tbody>
+          </table>
         </div>
-        <div id="app-acl" 
-    		     py:if="app.permissions and allow_config">
-          <div id="acl-admin">
-            <py:for each="p in app.permissions" >
-              <h3><a href="#" id="permission_$p">$p</a></h3>
-              <div>
-                <table>
-                  <thead>
-                    <tr>
-                      <th>Role</th>
-                      <th/>
-                    </tr>
-                  </thead>
-                  <tbody>
-                    <tr py:for="role in h.make_roles(app.config.acl[p])">
-                      <td>${role.display()}</td>
-                      <td>
-                        <form method="POST" action="del_perm" style="display:inline">
-                          <input type="hidden" name="permission" value="$p"/>
-                          <input type="hidden" name="role" value="${role._id}"/>
-                        <input type="submit" value="Remove" py:if="role.display() != '*user-'+c.user.username"/>
-                        </form>
-                      </td>
-                    </tr>
-                  </tbody>
-                </table>
-                <form method="POST" action="add_perm">
-                  <input type="hidden" name="permission" value="$p"/>
-                  <select name="role">
-                    <option py:for="role in c.project.roles"
-                            value="$role._id"
-                            >${role.display()}</option>
-                  </select>
-                  <input type="submit" value="Add role"/>
-                </form>
-              </div>
-            </py:for>
-          </div>
-          
-        </div>
-      </div>
-      <script type="text/javascript">
-      	$(function() {
-      		$("#app_admin_tabs").tabs({cookie:{expires:30}});
-      	});
-        $(function() {
-           $("#acl-admin").accordion({
-             autoHeight: false,
-             navigation: true,
-		change: function(event,ui) {
-			var hid = ui.newHeader.children('a').attr('id');
-		if (hid === undefined) {
-			$.cookie('app-acl-admin', null);
-		} else {
-			$.cookie('app-acl-admin', hid, { path: '/', expires: 2 });
-		}
-		}
-           });
-         });
-          $(document).ready(function(){
-            if($.cookie('app-acl-admin')) {
-		$('#acl-admin').accordion('option', 'animated', false)
-		               .accordion('activate', $('#' + $.cookie('app-acl-admin')).parent('h3'))
-		               .accordion('option', 'animated', 'slide');
+      </py:for>
+    </div>
+    <script type="text/javascript">
+      $(function() {
+        $("#acl-admin").accordion({
+          autoHeight: false,
+          change: function(event,ui) {
+            var hid = ui.newHeader.children('a').attr('id');
+            if (hid === undefined) {
+              $.cookie('tracker-acl-admin', null);
+            } else {
+              $.cookie('tracker-acl-admin', hid, { path: '/', expires: 2 });
             }
-          });
+          }
+        });
+      });
+      $(document).ready(function(){
+        if($.cookie('tracker-acl-admin')) {
+          $('#acl-admin').accordion('option', 'animated', false)
+                         .accordion('activate', $('#' + $.cookie('tracker-acl-admin')).parent('h3'))
+                         .accordion('option', 'animated', 'slide');
+        }
+      });
 	  </script>
-  	</py:if>
   </body>
 </html>