--- a/pyforge/pyforge/templates/neighborhood_admin.html
+++ b/pyforge/pyforge/templates/neighborhood_admin_overview.html
@@ -10,290 +10,103 @@
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type" py:replace="''"/>
- <title>Administer $neighborhood.name</title>
+ <title>Administration Overview for $neighborhood.name</title>
</head>
<body>
- <div id="neighborhood_admin_tabs">
- <ul>
- <li><a href="#neighborhood-admin-overview">Overview</a></li>
- <li><a href="#neighborhood-admin-permissions">Permissions</a></li>
- <li><a href="#neighborhood-admin-awards">Awards</a></li>
- </ul>
-<!-- ######################### -->
- <div id="neighborhood-admin-overview" style="overflow: auto">
- <h2>Neighborhood Overview</h2>
- <form method="POST" action="update" enctype="multipart/form-data">
- <div class="span-3"><label>Name</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer">$neighborhood.name</div>
- <div class="editor">
- <input name="name" value="$neighborhood.name"/>
- </div>
- </div>
- <div class="span-3"><label>Home Content<br/>(Markdown)</label></div>
- <div class="span-15 last" style="min-height:50px;">${c.markdown_editor.display(name='homepage',value=neighborhood.homepage)}</div>
- <div class="span-18 last">
- Custom colors override the default theme for your neighborhood. You may also use them in your Custom CSS like "color: $${color1}"
- </div>
- <div class="span-3"><label>Custom Color 1</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer" py:if="neighborhood.theme" style="min-height:50px;">$neighborhood.theme.color1</div>
- <div class="viewer" py:if="not neighborhood.theme">None</div>
- <div class="editor">
- <input name="color1" value="${neighborhood.theme and neighborhood.theme.color1 or ''}"/>
- </div>
- </div>
- <div class="span-3"><label>Custom Color 2</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer" py:if="neighborhood.theme" style="min-height:50px;">$neighborhood.theme.color2</div>
- <div class="viewer" py:if="not neighborhood.theme">None</div>
- <div class="editor">
- <input name="color2" value="${neighborhood.theme and neighborhood.theme.color2 or ''}"/>
- </div>
- </div>
- <div class="span-3"><label>Custom Color 3</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer" py:if="neighborhood.theme" style="min-height:50px;">$neighborhood.theme.color3</div>
- <div class="viewer" py:if="not neighborhood.theme">None</div>
- <div class="editor">
- <input name="color3" value="${neighborhood.theme and neighborhood.theme.color3 or ''}"/>
- </div>
- </div>
- <div class="span-3"><label>Custom Color 4</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer" py:if="neighborhood.theme" style="min-height:50px;">$neighborhood.theme.color4</div>
- <div class="viewer" py:if="not neighborhood.theme">None</div>
- <div class="editor">
- <input name="color4" value="${neighborhood.theme and neighborhood.theme.color4 or ''}"/>
- </div>
- </div>
- <div class="span-3"><label>Custom Color 5</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer" py:if="neighborhood.theme" style="min-height:50px;">$neighborhood.theme.color5</div>
- <div class="viewer" py:if="not neighborhood.theme">None</div>
- <div class="editor">
- <input name="color5" value="${neighborhood.theme and neighborhood.theme.color5 or ''}"/>
- </div>
- </div>
- <div class="span-3"><label>Custom Color 6</label></div>
- <div class="editable viewing span-15 last">
- <div class="viewer" py:if="neighborhood.theme" style="min-height:50px;">$neighborhood.theme.color6</div>
- <div class="viewer" py:if="not neighborhood.theme">None</div>
- <div class="editor">
- <input name="color6" value="${neighborhood.theme and neighborhood.theme.color6 or ''}"/>
- </div>
- </div>
- <div class="span-3"><label>Custom CSS</label></div>
- <div class="editable viewing span-15 last" style="min-height:50px;">
- <div class="viewer"><pre>$neighborhood.css</pre></div>
- <div class="editor">
- <textarea name="css">$neighborhood.css</textarea>
- </div>
- </div>
- <div class="span-3"><label>Icon</label></div>
- <div class="editable viewing span-15 last" style="min-height:50px;">
- <div class="viewer">
- <py:if test="neighborhood.icon">
- <img src="${neighborhood.url()}/icon"/>
- </py:if>
- </div>
- <div class="editor">
- ${file_field('icon', 'File')}
- </div>
- </div>
- <div class="push-3 span-15 last"><input type="submit" value="Save" class="ui-state-default ui-button ui-button-text"/></div>
- </form>
- </div>
-<!-- ######################### -->
- <div id="neighborhood-admin-permissions">
- <h2 class="title">Neighborhood Permissions</h2>
- <p>The ACL determines neighborhood-level permissions.</p>
- <div id="acl-admin">
- <py:for each="permission, users in neighborhood.acl.iteritems()">
- <h3><a href="#" id="permission_$permission">Permission: $permission</a></h3>
- <div>
- <form method="POST" action="update_acl">
- <input type="hidden" name="permission" value="$permission"/>
- <input py:for="i,uid in enumerate(users)"
- type="hidden" name="user-${i}.id" value="$uid"/>
- <table>
- <thead>
- <tr><th>Username</th><th/></tr>
- </thead>
- <tbody>
- <tr py:for="i,u in enumerate(h.make_users(users))">
- <td>$u.username</td>
- <td><input type="submit" value="Remove" name="user-${i}.delete" class="ui-state-default ui-button ui-button-text" /></td>
- </tr>
- <tr>
- <td>
- <input name="new.username"/>
- </td>
- <td>
- <input type="submit" name="new.add" value="Add Permission" class="ui-state-default ui-button ui-button-text"/>
- </td>
- </tr>
- </tbody>
- </table>
- </form>
- </div>
- </py:for>
+ <h1 class="title">Administration Overview for $neighborhood.name</h1>
+ <form method="POST" action="update" enctype="multipart/form-data">
+ <div class="span-3"><label>Name</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer">$neighborhood.name</div>
+ <div class="editor">
+ <input name="name" value="$neighborhood.name"/>
</div>
</div>
-<!-- ######################### -->
- <div id="neighborhood-admin-awards" style="overflow: auto">
- <h2>Awards Admin</h2>
- <p py:if="awards_count > 0">
- <a href="awards/"><h3>Current Awards</h3></a>
- <div id="award_list">
- <table border="1">
- <thead>
- <tr>
- <th>Icon</th>
- <th>Abbreviation</th>
- <th>Description</th>
- <th>Delete?</th>
- </tr>
- </thead>
- <tbody>
- <py:for each="award in awards">
- <tr>
- <td>
- <py:if test="award.icon">
- <img class="award_icon" src="awards/${award.url()}/icon"/>
- </py:if>
- </td>
- <td><a href="${award.longurl()}">${award.short}</a></td>
- <td>$award.full</td>
- <td><a href="${award.longurl()}/delete">[X]</a></td>
- </tr>
- </py:for>
- </tbody>
- </table>
- </div>
- </p>
- <h3>Create an Award</h3>
- <form enctype="multipart/form-data" method="POST" action="awards/create">
- <table border="1">
- <thead>
- <tr>
- <th>Icon</th>
- <th>Abbreviation</th>
- <th>Description</th>
- <th/>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <input type="file" id="icon" name="icon" class="text" />
- </td>
- <td>
- <input name="short"/>
- </td>
- <td>
- <input name="full"/>
- </td>
- <td>
- <input type="submit" value="Create" class="ui-state-default ui-button ui-button-text"/>
- </td>
- </tr>
- </tbody>
- </table>
- </form>
- <py:def function="project(n, subprojects)">
- <option value="${n.name}">${n.name}</option>
- <py:for each="p in subprojects">
- ${project(p, p.subprojects)}
- </py:for>
- </py:def>
- <p py:if="awards_count > 0">
- <h3>Grant an Award</h3>
- <form method="POST" action="awards/grant">
- <table border="1">
- <thead>
- <tr>
- <th>Award</th>
- <th>Recipient</th>
- <th/>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <select name="grant">
- <py:for each="assign in assigns">
- <option value="$assign.short">$assign.short</option>
- </py:for>
- </select>
- </td>
- <td>
- <select name="recipient">
- <py:for each="n, subprojects in projects">
- ${project(n, subprojects)}
- </py:for>
- </select>
- </td>
- <td>
- <input type="submit" value="Grant" class="ui-state-default ui-button ui-button-text"/>
- </td>
- </tr>
- </tbody>
- </table>
- </form>
- </p>
- <p py:if="grants_count > 0">
- <h3>Current Grants</h3>
- <div id="grant_list">
- <table border="1">
- <thead>
- <tr>
- <th>Award</th>
- <th>Recipient</th>
- <th>Delete?</th>
- </tr>
- </thead>
- <tbody>
- <py:for each="grant in grants">
- <tr>
- <td><a href="$(grant.longurl()">${grant.award.short}</a></td>
- <td><a href="${grant.longurl()}">${grant.granted_to_project.shortname}</a></td>
- <td><a href="${grant.longurl()}/revoke">[X]</a></td>
- </tr>
- </py:for>
- </tbody>
- </table>
- </div>
- </p>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Home Content<br/>(Markdown)</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.homepage">$neighborhood.homepage</div>
+ <div class="viewer" py:if="not neighborhood.homepage">None</div>
+ <div class="editor">${c.markdown_editor.display(name='homepage',value=neighborhood.homepage)}</div>
</div>
-<!-- ######################### -->
- </div>
- <script type="text/javascript">
- $(function() {
- $("#neighborhood_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('neighborhood-acl-admin', null);
- } else {
- $.cookie('neighborhood-acl-admin', hid, { path: '/', expires: 2 });
- }
- }
- });
- });
- $(document).ready(function(){
- if($.cookie('neighborhood-acl-admin')) {
- $('#acl-admin').accordion('option', 'animated', false)
- .accordion('activate', $('#' + $.cookie('neighborhood-acl-admin')).parent('h3'))
- .accordion('option', 'animated', 'slide');
- }
- });
- </script>
+ <hr class="clear clearfix" />
+ <div class="span-18 last">
+ Custom colors override the default theme for your neighborhood. You may also use them in your Custom CSS like "color: $${color1}"
+ </div>
+ <div class="span-3"><label>Custom Color 1</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.theme">$neighborhood.theme.color1</div>
+ <div class="viewer" py:if="not neighborhood.theme">None</div>
+ <div class="editor">
+ <input name="color1" value="${neighborhood.theme and neighborhood.theme.color1 or ''}"/>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Custom Color 2</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.theme">$neighborhood.theme.color2</div>
+ <div class="viewer" py:if="not neighborhood.theme">None</div>
+ <div class="editor">
+ <input name="color2" value="${neighborhood.theme and neighborhood.theme.color2 or ''}"/>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Custom Color 3</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.theme">$neighborhood.theme.color3</div>
+ <div class="viewer" py:if="not neighborhood.theme">None</div>
+ <div class="editor">
+ <input name="color3" value="${neighborhood.theme and neighborhood.theme.color3 or ''}"/>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Custom Color 4</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.theme">$neighborhood.theme.color4</div>
+ <div class="viewer" py:if="not neighborhood.theme">None</div>
+ <div class="editor">
+ <input name="color4" value="${neighborhood.theme and neighborhood.theme.color4 or ''}"/>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Custom Color 5</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.theme">$neighborhood.theme.color5</div>
+ <div class="viewer" py:if="not neighborhood.theme">None</div>
+ <div class="editor">
+ <input name="color5" value="${neighborhood.theme and neighborhood.theme.color5 or ''}"/>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Custom Color 6</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.theme">$neighborhood.theme.color6</div>
+ <div class="viewer" py:if="not neighborhood.theme">None</div>
+ <div class="editor">
+ <input name="color6" value="${neighborhood.theme and neighborhood.theme.color6 or ''}"/>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Custom CSS</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.css"><pre>$neighborhood.css</pre></div>
+ <div class="viewer" py:if="not neighborhood.css">No CSS has been created</div>
+ <div class="editor">
+ <textarea name="css">$neighborhood.css</textarea>
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="span-3"><label>Icon</label></div>
+ <div class="editable viewing span-15 last">
+ <div class="viewer" py:if="neighborhood.icon"><img src="${neighborhood.url()}/icon"/></div>
+ <div class="viewer" py:if="not neighborhood.icon">No icon has been uploaded</div>
+ <div class="editor">
+ ${file_field('icon', 'File')}
+ </div>
+ </div>
+ <hr class="clear clearfix" />
+ <div class="push-3 span-15 last"><input type="submit" value="Save" class="ui-state-default ui-button ui-button-text"/></div>
+ </form>
</body>
</html>