Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Checked in updated templates from live site.

git-svn-id: http://code.djangoproject.com/svn/djangoproject.com@4783 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 8107cea35daeba6e60deeff3aa71b402bb6d2502 1 parent c190f51
jacob authored
Showing with 1,135 additions and 6 deletions.
  1. +1 −1  django_website/templates/aggregator/feeditem_list.html
  2. +1 −1  django_website/templates/base.html
  3. +7 −0 django_website/templates/base_blogroll.html
  4. +4 −4 django_website/templates/docs/document_detail.html
  5. +99 −0 django_website/templates/trac_templates/about.cs
  6. +35 −0 django_website/templates/trac_templates/admin.cs
  7. +43 −0 django_website/templates/trac_templates/admin_akismet.cs
  8. +27 −0 django_website/templates/trac_templates/admin_basics.cs
  9. +71 −0 django_website/templates/trac_templates/admin_bayes.cs
  10. +87 −0 django_website/templates/trac_templates/admin_component.cs
  11. +66 −0 django_website/templates/trac_templates/admin_enum.cs
  12. +47 −0 django_website/templates/trac_templates/admin_log.cs
  13. +111 −0 django_website/templates/trac_templates/admin_milestone.cs
  14. +52 −0 django_website/templates/trac_templates/admin_perm.cs
  15. +80 −0 django_website/templates/trac_templates/admin_plugin.cs
  16. +76 −0 django_website/templates/trac_templates/admin_spamconfig.cs
  17. +65 −0 django_website/templates/trac_templates/admin_spamentry.cs
  18. +109 −0 django_website/templates/trac_templates/admin_spammonitor.cs
  19. +87 −0 django_website/templates/trac_templates/admin_version.cs
  20. +25 −0 django_website/templates/trac_templates/log_changelog.cs
  21. +42 −0 django_website/templates/trac_templates/ticket_rss.cs
2  django_website/templates/aggregator/feeditem_list.html
View
@@ -7,7 +7,7 @@
{% block content %}
<h1>Community</h1>
-<h2 class="deck">This page, updated every 15 minutes, aggregates blog entries by people who are
+<h2 class="deck">This page, updated every hour, aggregates blog entries by people who are
writing about Django.</h2>
{% for item in object_list %}
2  django_website/templates/base.html
View
@@ -46,7 +46,7 @@ <h1 id="logo"><a href="/"><img src="http://media.djangoproject.com/img/site/hdr_
</div>
<!-- END #content -->
<div id="footer">
- <p>&copy; 2005 <a href="http://www.ljworld.com/">Lawrence Journal-World</a> unless otherwise noted. Django is a registered trademark of Lawrence Journal-World.</p>
+ <p>&copy; 2005-{% now "Y" %} <a href="http://www.ljworld.com/">Lawrence Journal-World</a> unless otherwise noted. Django is a registered trademark of Lawrence Journal-World.</p>
</div>
</div>
<!-- END #container -->
7 django_website/templates/base_blogroll.html
View
@@ -0,0 +1,7 @@
+{% extends "base_2col" %}
+
+{% block sectionid %}blogroll{% endblock %}
+
+{% block title %}Blogroll{% endblock %}
+
+{% block billboard %}<h2>Blogroll</h2>{% endblock %}
8 django_website/templates/docs/document_detail.html
View
@@ -21,11 +21,11 @@ <h2 id="comments">Comments</h2>
<h2>Post a comment</h2>
<p class="small quiet"><strong>Note:</strong> Please only use the comments for
-questions/critcisms/suggestions on the docs; if you experience errors please <a
-href="http://code.djangoproject.com/simpleticket">file a ticket</a>, ask in the IRC
-channel, or post to the <a href="http://groups-beta.google.com/group/django-users">
+questions/criticisms/suggestions on the docs. This is <strong>not</strong> the place
+to ask technical support questions. For tech support, ask in the IRC
+channel or post to the <a href="http://groups-beta.google.com/group/django-users">
django-users list</a>. Comments will be periodically reviewed, integrated into
-the documentation proper, and removed.</p>
+the documentation proper and removed.</p>
{% free_comment_form for docs.document object.id %}
</div>
99 django_website/templates/trac_templates/about.cs
View
@@ -0,0 +1,99 @@
+<?cs include "header.cs"?>
+<div id="ctxtnav" class="nav">
+ <h2>About Navigation</h2>
+ <ul>
+ <li class="first<?cs if:!about.config_href ?> last<?cs /if ?>"><a href="<?cs
+ var:trac.href.about ?>">Overview</a></li><?cs
+ if:about.config_href ?>
+ <li><a href="<?cs var:about.config_href ?>">Configuration</a></li><?cs
+ /if ?><?cs
+ if:about.plugins_href ?>
+ <li class="last"><a href="<?cs var:about.plugins_href ?>">Plugins</a></li><?cs
+ /if ?>
+ </ul>
+</div>
+<div id="content" class="about<?cs if:about.page ?>_<?cs var:about.page ?><?cs /if ?>">
+
+ <?cs if:about.page == "config"?>
+ <h1>Configuration</h1>
+ <table><thead><tr><th class="section">Section</th>
+ <th class="name">Name</th><th class="value">Value</th></tr></thead><?cs
+ each:section = about.config ?><?cs
+ if:len(section.options) ?>
+ <tr><th class="section" rowspan="<?cs var:len(section.options) ?>"><?cs var:section.name ?></th><?cs
+ each:option = section.options ?><?cs if:name(option) != 0 ?><tr><?cs /if ?>
+ <td class="name"><?cs var:option.name ?></td>
+ <td class="<?cs var:option.valueclass ?>"><?cs var:option.value ?></td>
+ </tr><?cs
+ /each ?><?cs
+ /if ?><?cs
+ /each ?></table>
+ <div id="help">
+ See <a href="<?cs var:trac.href.wiki ?>/TracIni">TracIni</a> for information about
+ the configuration.
+ </div>
+
+ <?cs elif:about.page == "plugins" ?>
+ <h1>Plugins</h1>
+ <dl id="plugins"><?cs
+ each:plugin = about.plugins ?>
+ <h2 id="<?cs var:plugin.module ?>.<?cs var:plugin.name ?>"><?cs var:plugin.name ?></h2>
+ <table>
+ <tr>
+ <th class="module" scope="row">Module</th>
+ <td class="module"><?cs var:plugin.module ?><br />
+ <span class="path"><?cs var:plugin.path ?></span></td>
+ </tr><?cs
+ if:plugin.description ?><tr>
+ <th class="description" scope="row">Description</th>
+ <td class="description"><?cs var:plugin.description ?></td>
+ </tr><?cs /if ?><?cs
+ if:len(plugin.extension_points) ?><tr>
+ <th class="xtnpts" rowspan="<?cs var:len(plugin.extension_points) ?>">
+ Extension points:</th><?cs
+ each:extension_point = plugin.extension_points ?><?cs
+ if:name(extension_point) != 0 ?><tr><?cs /if ?>
+ <td class="xtnpts">
+ <code><?cs var:extension_point.module ?>.<?cs var:extension_point.interface ?></code><?cs
+ if:len(extension_point.extensions) ?> (<?cs
+ var:len(extension_point.extensions) ?> extensions)<ul><?cs
+ each:extension = extension_point.extensions ?>
+ <li><a href="#<?cs var:extension.module ?>.<?cs
+ var:extension.name ?>"><?cs var:extension.name ?></a></li><?cs
+ /each ?></ul><?cs
+ /if ?>
+ <div class="description"><?cs var:extension_point.description ?></div>
+ </td></tr><?cs
+ /each ?><?cs
+ /if ?>
+ </table><?cs
+ /each ?>
+ </dl>
+
+ <?cs else ?>
+ <a href="http://trac.edgewall.com" style="border: none; float: right; margin-left: 2em">
+ <img style="display: block" src="<?cs var:chrome.href ?>/common/trac_banner.png"
+ alt="Trac: Integrated SCM &amp; Project Management"/>
+ </a>
+<h1>About Trac <?cs var:trac.version ?></h1>
+<p>
+Trac is a web-based software project management and bug/issue
+tracking system emphasizing ease of use and low ceremony.
+It provides an interface to the Subversion revision control systems, integrated Wiki and convenient report facilities.
+</p>
+ <p>Trac is distributed under the modified BSD License.<br />
+ The complete text of the license can be found in the COPYING file
+ included in the distribution.</p>
+ <p>Please visit the Trac open source project:
+ <a href="http://projects.edgewall.com/trac/">http://projects.edgewall.com/trac/</a></p>
+ <p>Trac is a product of <a href="http://www.edgewall.com/">Edgewall
+ Software</a>, provider of professional Linux and software development
+ services.</p>
+ <p>Copyright &copy; 2003-2006 <a href="http://www.edgewall.com/">Edgewall
+ Software</a></p>
+ <a href="http://www.edgewall.com/">
+ <img style="display: block; margin: 30px" src="<?cs var:chrome.href ?>/common/edgewall.png"
+ alt="Edgewall Software"/></a>
+ <?cs /if ?>
+</div>
+<?cs include "footer.cs"?>
35 django_website/templates/trac_templates/admin.cs
View
@@ -0,0 +1,35 @@
+<?cs include "header.cs"?>
+<?cs include "macros.cs"?>
+
+<div id="ctxtnav"></div>
+
+<div id="content" class="admin">
+
+ <h1>Administration</h1>
+
+ <div class="tabs"><?cs set:cur_cat_id = '' ?><ul><?cs
+ each:page = admin.pages ?><?cs
+ if:page.cat_id != cur_cat_id ?><?cs
+ if:name(page) != 0 ?></ul></li><?cs /if ?><li<?cs
+ if:page.cat_id == admin.active_cat ?> class="active"<?cs
+ /if ?>><?cs var:page.cat_label ?><ul><?cs
+ /if ?><?cs
+ if:page.page_id == admin.active_page ?><li class="active"><?cs
+ var:page.page_label ?></li><?cs
+ else ?><li><a href="<?cs var:page.href ?>"><?cs
+ var:page.page_label ?></a></li><?cs
+ /if ?><?cs
+ set:cur_cat_id = page.cat_id ?><?cs
+ /each ?></ul><li/></ul></div>
+
+ <div class="tabcontents">
+ <?cs if:admin.page_template ?><?cs
+ include admin.page_template ?><?cs
+ else ?><?cs
+ var:admin.page_content ?><?cs
+ /if ?>
+ <br style="clear: right"/>
+ </div>
+</div>
+
+<?cs include "footer.cs"?>
43 django_website/templates/trac_templates/admin_akismet.cs
View
@@ -0,0 +1,43 @@
+<h2>Spam Filtering: Akismet</h2>
+
+<form class="mod" id="spamconfig" method="post">
+
+ <fieldset>
+ <legend>Akismet</legend>
+ <p class="hint">
+ The Akismet filter uses the free
+ <a class="ext-link" href="http://akismet.com/">Akismet</a>
+ service to content submissions are potential spam. You need to obtain an
+ API key to use the service, which is freely available for personal use.
+ You can enable or disable this filter from the &ldquo;<em>General &rarr;
+ Plugins</em>&rdquo; panel of the web administration interface.
+ </p>
+ <div class="field">
+ <label>API key:<br />
+ <input type="text" id="api_key" name="api_key" size="24"
+ value="<?cs var:admin.akismet.api_key ?>" />
+ </label>
+ </div>
+ <div class="field">
+ <label>URL:<br />
+ <code>http://</code>
+ <input type="text" id="api_url" name="api_url" size="40"
+ value="<?cs var:admin.akismet.api_url ?>" />
+ </label>
+ </div>
+
+ <?cs if:admin.akismet.error ?>
+ <div class="system-message">
+ <strong>Key validation failed:</strong> <?cs var:admin.akismet.error ?>
+ </div>
+ <?cs /if ?>
+
+ </fieldset>
+
+ <div class="buttons">
+ <input type="submit" value="Apply changes" />
+ <?cs if:admin.akismet.error ?>
+ <input type="submit" name="Cancel" value="Revert changes" />
+ <?cs /if ?>
+ </div>
+</form>
27 django_website/templates/trac_templates/admin_basics.cs
View
@@ -0,0 +1,27 @@
+<h2>Basic Settings</h2>
+
+<form class="mod" id="modbasic" method="post">
+ <fieldset>
+ <legend>Project</legend>
+ <div class="field">
+ <label>Name:<br />
+ <input type="text" name="name" value="<?cs var:admin.project.name ?>" />
+ </label>
+ </div>
+ <div class="field">
+ <label>URL:<br />
+ <input type="text" name="url" size="48 "value="<?cs
+ var:admin.project.url ?>" />
+ </label>
+ </div>
+ <div class="field">
+ <label>Description:<br />
+ <textarea name="description" rows="3" cols="80"><?cs
+ var:admin.project.description ?></textarea>
+ </label>
+ </div>
+ </fieldset>
+ <div class="buttons">
+ <input type="submit" value="Apply changes">
+ </div>
+</form>
71 django_website/templates/trac_templates/admin_bayes.cs
View
@@ -0,0 +1,71 @@
+<h2>Spam Filtering: Bayes</h2>
+
+<form class="mod" id="spamconfig" method="post">
+
+ <fieldset>
+ <legend>Configuration</legend>
+ <p>The bayesian filter requires training before it can effectively
+ differentiate between spam and ham. The training database currently
+ contains <strong><?cs var:admin.bayes.nspam ?> spam</strong> and
+ <strong><?cs var:admin.bayes.nham ?> ham</strong> submissions.</p>
+ <div class="field">
+ <label><input type="checkbox" id="reset" name="reset" <?cs
+ if:!admin.bayes.nham && !admin.bayes.nspam ?> disabled="disabled"<?cs /if ?> />
+ Clear training database
+ </label>
+ <p class="hint">
+ Resetting the training database can help when training was incorrect
+ and is producing bad results.
+ </p>
+ </div>
+ <div class="field">
+ <label>Minimum training required:
+ <input type="text" id="min_training" name="min_training" size="3"
+ value="<?cs var:admin.bayes.min_training ?>" />
+ </label>
+ <p class="hint">
+ The minimum number of spam and ham in the training database before
+ the filter starts affecting the karma of submissions.
+ </p>
+ </div>
+ <div class="buttons">
+ <input type="submit" value="Apply changes" />
+ </div>
+ </fieldset>
+
+ <fieldset>
+ <legend>Training</legend>
+ <p class="hint">
+ While you can train the spam filter from the &ldquo;<em>Spam
+ Filtering &rarr; Monitoring</em>&rdquo; panel in the web
+ administration interface, you can also manually train the filter by
+ entering samples here, or check what kind of spam probabilty
+ currently gets assigned to the content.
+ </p>
+ <div class="field">
+ <label for="content">Content:</label><br />
+ <textarea id="content" name="content" rows="10" cols="60">
+<?cs var:admin.bayes.content ?></textarea>
+ </div>
+ <?cs if:admin.bayes.content ?>
+ <div class="field">
+ <?cs if:admin.bayes.error ?>
+ <strong>Error: <?cs var:admin.bayes.error ?></strong>
+ <?cs else ?>
+ <strong>Score: <?cs var:admin.bayes.score ?>%</strong>
+ <?cs /if ?>
+ </div>
+ <?cs /if ?>
+ <div class="buttons">
+ <input type="submit" name="test" value="Test" <?cs
+ if:!admin.bayes.nham || !admin.bayes.nspam ?> disabled="disabled"<?cs /if ?> />
+ <input type="submit" name="train" value="Train as Spam" />
+ <input type="submit" name="train" value="Train as Ham" />
+ </div>
+ </fieldset>
+
+ <script type="text/javascript">
+ enableControl("reset", <?cs if:admin.bayes.nspam || admin.bayes.nham ?>true<?cs else ?>false<?cs /if ?>);
+ </script>
+
+</form>
87 django_website/templates/trac_templates/admin_component.cs
View
@@ -0,0 +1,87 @@
+<h2>Manage Components</h2><?cs
+
+if admin.component.name ?>
+ <form class="mod" id="modcomp" method="post">
+ <fieldset>
+ <legend>Modify Component:</legend>
+ <div class="field">
+ <label>Name:<br /><input type="text" name="name" value="<?cs
+ var:admin.component.name ?>"></label>
+ </div>
+ <div class="field">
+ <label>Owner:<br /><?cs
+ if:len(admin.owners) ?><?cs
+ call:hdf_select(admin.owners, "owner", admin.component.owner, 0) ?><?cs
+ else ?><input type="text" name="owner" value="<?cs
+ var:admin.component.owner ?>" /><?cs
+ /if ?></label>
+ </div>
+ <div class="field">
+ <fieldset class="iefix">
+ <label for="description">Description (you may use <a tabindex="42" href="<?cs
+ var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label>
+ <p><textarea id="description" name="description" class="wikitext" rows="6" cols="60"><?cs
+ var:admin.component.description ?></textarea></p>
+ </fieldset>
+ </div>
+ <script type="text/javascript" src="<?cs
+ var:chrome.href ?>/common/js/wikitoolbar.js"></script>
+ <div class="buttons">
+ <input type="submit" name="cancel" value="Cancel" />
+ <input type="submit" name="save" value="Save" />
+ </div>
+ </fieldset>
+ </form><?cs
+
+else ?>
+ <form class="addnew" id="addcomp" method="post">
+ <fieldset>
+ <legend>Add Component:</legend>
+ <div class="field">
+ <label>Name:<br /><input type="text" name="name" /></label>
+ </div>
+ <div class="field">
+ <label>Owner:<br /><?cs
+ if:len(admin.owners) ?><?cs
+ call:hdf_select(admin.owners, "owner", "", 0) ?><?cs
+ else ?><input type="text" name="owner" /><?cs
+ /if ?></label>
+ </div>
+ <div class="buttons">
+ <input type="submit" name="add" value="Add">
+ </div>
+ </fieldset>
+ </form><?cs
+
+ if:len(admin.components) ?><form method="POST">
+ <table class="listing" id="complist">
+ <thead>
+ <tr><th class="sel">&nbsp;</th><th>Name</th>
+ <th>Owner</th><th>Default</th></tr>
+ </thead><?cs
+ each:comp = admin.components ?>
+ <tr>
+ <td class="sel"><input type="checkbox" name="sel" value="<?cs
+ var:comp.name ?>" /></td>
+ <td class="name"><a href="<?cs var:comp.href?>"><?cs
+ var:comp.name ?></a></td>
+ <td class="owner"><?cs var:comp.owner ?></td>
+ <td class="default"><input type="radio" name="default" value="<?cs
+ var:comp.name ?>"<?cs
+ if:comp.is_default ?> checked="checked" <?cs /if ?>></td>
+ </tr><?cs
+ /each ?>
+ </table>
+ <div class="buttons">
+ <input type="submit" name="remove" value="Remove selected items" />
+ <input type="submit" name="apply" value="Apply changes" />
+ </div>
+ <p class="help">You can remove all items from this list to completely hide
+ this field from the user interface.</p>
+ </form><?cs
+ else ?>
+ <p class="help">As long as you don't add any items to the list, this field
+ will remain completely hidden from the user interface.</p><?cs
+ /if ?><?cs
+
+/if ?>
66 django_website/templates/trac_templates/admin_enum.cs
View
@@ -0,0 +1,66 @@
+<h2>Manage <?cs var:admin.enum.label_plural ?></h2><?cs
+
+if:admin.enum.name ?>
+ <form class="mod" id="modenum" method="post">
+ <fieldset>
+ <legend>Modify <?cs var:admin.enum.label_singular ?></legend>
+ <div class="field">
+ <label>Name: <input type="text" name="name"value="<?cs
+ var:admin.enum.name ?>" /></label>
+ </div>
+ <div class="buttons">
+ <input type="submit" name="cancel" value="Cancel">
+ <input type="submit" name="save" value="Save">
+ </div>
+ </fieldset>
+ </form><?cs
+
+else ?>
+
+ <form class="addnew" id="addenum" method="post">
+ <fieldset>
+ <legend>Add <?cs var:admin.enum.label_singular ?></legend>
+ <div class="field">
+ <label>Name:<input type="text" name="name" id="name"></label>
+ </div>
+ <div class="buttons">
+ <input type="submit" name="add" value="Add">
+ </div>
+ </fieldset>
+ </form><?cs
+
+ if:len(admin.enums) ?><form method="POST">
+ <table class="listing" id="enumlist">
+ <thead>
+ <tr><th class="sel">&nbsp;</th><th>Name</th>
+ <th>Default</th><th>Order</th></tr>
+ </thead><tbody><?cs
+ each:enum = admin.enums ?>
+ <tr>
+ <td><input type="checkbox" name="sel" value="<?cs var:enum.name ?>" /></td>
+ <td><a href="<?cs var:enum.href ?>"><?cs var:enum.name ?></a></td>
+ <td class="default"><input type="radio" name="default" value="<?cs
+ var:enum.name ?>"<?cs
+ if:enum.is_default ?> checked="checked" <?cs /if ?> /></td>
+ <td class="default"><select name="value_<?cs var:enum.value ?>"><?cs
+ each:other = admin.enums ?><option<?cs
+ if:other.value == enum.value ?> selected="selected"<?cs
+ /if ?>><?cs var:other.value ?></option><?cs
+ /each ?>
+ </select></td>
+ </tr><?cs
+ /each ?></tbody>
+ </table>
+ <div class="buttons">
+ <input type="submit" name="remove" value="Remove selected items" />
+ <input type="submit" name="apply" value="Apply changes" />
+ </div>
+ <p class="help">You can remove all items from this list to completely hide
+ this field from the user interface.</p>
+ </form><?cs
+ else ?>
+ <p class="help">As long as you don't add any items to the list, this field
+ will remain completely hidden from the user interface.</p><?cs
+ /if ?><?cs
+
+/if ?>
47 django_website/templates/trac_templates/admin_log.cs
View
@@ -0,0 +1,47 @@
+<h2>Logging Configuration</h2>
+
+<form class="mod" id="modlog" method="post">
+ <div class="field">
+ <label>Type:<br />
+ <select id="log_type" name="log_type"><?cs
+ each:type = admin.log.types ?><option value="<?cs var:type.name ?>"<?cs
+ if:type.selected ?> selected="selected"<?cs /if ?><?cs
+ if:type.disabled ?> disabled="disabled"<?cs /if ?>><?cs
+ var:type.label ?></option><?cs
+ /each ?></select>
+ </label>
+ </div>
+ <div class="field">
+ <label>Log level:<br />
+ <select id="log_level" name="log_level"><?cs
+ each:level = admin.log.levels ?><option<?cs
+ if:level == admin.log.level ?> selected="selected"<?cs /if?>><?cs
+ var:level ?></option><?cs
+ /each ?></select>
+ </label>
+ </div>
+ <div class="field">
+ <label>Log file:<br />
+ <input type="text" id="log_file" name="log_file" size="48" value="<?cs
+ var:admin.log.file ?>"/>
+ </label>
+ <p class="help">If you specify a relative path, the log file will be stored
+ inside the <code>log</code> directory of the project environment (<code><?cs
+ var:admin.log.dir ?></code>).</p>
+ </div>
+ <script type="text/javascript">
+ var logType = document.getElementById("log_type");
+ var enableLevelAndFile = function() {
+ enableControl("log_level", log_type.selectedIndex > 0);
+ enableControl("log_file",
+ log_type.options[log_type.selectedIndex].value == "file");
+ };
+ addEvent(window, "load", enableLevelAndFile);
+ addEvent(log_type, "change", enableLevelAndFile);
+ </script>
+ <div class="buttons">
+ <input type="submit" value="Apply changes">
+ </div>
+ <p class="help">You may need to restart the server for these changes to take
+ effect.</p>
+</form>
111 django_website/templates/trac_templates/admin_milestone.cs
View
@@ -0,0 +1,111 @@
+<h2>Manage Milestones</h2><?cs
+
+if:admin.milestone.name ?>
+ <form class="mod" id="modmil" method="post">
+ <fieldset>
+ <legend>Modify Milestone:</legend>
+ <div class="field">
+ <label>Name:<br /> <input type="text" name="name"value="<?cs
+ var:admin.milestone.name ?>" /></label>
+ </div>
+ <div class="field">
+ <label>Due:<br />
+ <input type="text" id="duedate" name="duedate" size="<?cs
+ var:len(admin.date_hint) ?>" value="<?cs
+ var:admin.milestone.duedate ?>" title="Format: <?cs var:admin.date_hint ?>" />
+ <em>Format: <?cs var:admin.date_hint ?></em>
+ </label>
+ </div>
+ <div class="field">
+ <label>
+ <input type="checkbox" id="completed" name="completed"<?cs
+ if:admin.milestone.completed ?> checked="checked"<?cs /if ?> />
+ Completed:<br />
+ </label>
+ <label>
+ <input type="text" id="completeddate" name="completeddate" size="<?cs
+ var:len(admin.date_hint) ?>" value="<?cs
+ alt:admin.milestone.completed_date ?><?cs
+ var:admin.datetime_now ?><?cs
+ /alt ?>" title="Format: <?cs
+ var:admin.datetime_hint ?>" />
+ <em>Format: <?cs var:admin.datetime_hint ?></em>
+ </label>
+ <script type="text/javascript">
+ var completed = document.getElementById("completed");
+ var enableCompletedDate = function() {
+ enableControl("completeddate", completed.checked);
+ };
+ addEvent(window, "load", enableCompletedDate);
+ addEvent(completed, "click", enableCompletedDate);
+ </script>
+ </div>
+ <div class="field">
+ <fieldset class="iefix">
+ <label for="description">Description (you may use <a tabindex="42" href="<?cs
+ var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label>
+ <p><textarea id="description" name="description" class="wikitext" rows="6" cols="60"><?cs
+ var:admin.milestone.description ?></textarea></p>
+ </fieldset>
+ </div>
+ <script type="text/javascript" src="<?cs
+ var:chrome.href ?>/common/js/wikitoolbar.js"></script>
+ <div class="buttons">
+ <input type="submit" name="cancel" value="Cancel">
+ <input type="submit" name="save" value="Save">
+ </div>
+ </fieldset>
+ </form><?cs
+
+else ?>
+
+ <form class="addnew" id="addmil" method="post">
+ <fieldset>
+ <legend>Add Milestone:</legend>
+ <div class="field">
+ <label>Name:<br /><input type="text" name="name" id="name" /></label>
+ </div>
+ <div class="field">
+ <label>
+ Due:<br />
+ <input type="text" name="duedate"
+ title="Format: <?cs var:admin.date_hint ?>" /><br />
+ <em>Format: <?cs var:admin.date_hint ?></em>
+ </label>
+ </div>
+ <div class="buttons">
+ <input type="submit" name="add" value="Add" />
+ </div>
+ </fieldset>
+ </form><?cs
+
+ if:len(admin.milestones) ?><form method="POST">
+ <table class="listing" id="millist">
+ <thead>
+ <tr><th class="sel">&nbsp;</th><th>Name</th>
+ <th>Time</th><th>Default</th></tr>
+ </thead><tbody><?cs
+ each:milestone = admin.milestones ?>
+ <tr>
+ <td><input type="checkbox" name="sel" value="<?cs var:milestone.name ?>" /></td>
+ <td><a href="<?cs var:milestone.href ?>"><?cs var:milestone.name ?></a></td>
+ <td><?cs var:milestone.duedate ?></td>
+ <td class="default"><input type="radio" name="default" value="<?cs
+ var:milestone.name ?>"<?cs
+ if:milestone.is_default ?> checked="checked" <?cs /if ?>></td>
+ </tr><?cs
+ /each ?></tbody>
+ </table>
+ <div class="buttons">
+ <input type="submit" name="remove" value="Remove selected items" />
+ <input type="submit" name="apply" value="Apply changes" />
+ </div>
+ <p class="help">You can remove all items from this list to completely hide
+ this field from the user interface.</p>
+ </form><?cs
+ else ?>
+ <p class="help">As long as you don't add any items to the list, this field
+ will remain completely hidden from the user interface.</p><?cs
+ /if ?><?cs
+
+/if ?>
52 django_website/templates/trac_templates/admin_perm.cs
View
@@ -0,0 +1,52 @@
+<h2>Manage Permissions</h2>
+
+<form id="addperm" class="addnew" method="post">
+ <fieldset>
+ <legend>Grant Permission:</legend>
+ <div class="field">
+ <label>Subject: <input type="text" name="subject" /></label>
+ </div>
+ <div class="field">
+ <label>Action: <?cs call:hdf_select(admin.actions, "action", "", 0) ?></label>
+ </div>
+ <p class="help">Grant permission for an action to a subject, which can be
+ either a user or a group.</p>
+ <div class="buttons">
+ <input type="submit" name="add" value=" Add ">
+ </div>
+ </fieldset>
+</form>
+
+<form id="addsubj" class="addnew" method="post">
+ <fieldset>
+ <legend>Add Subject to Group:</legend>
+ <div class="field">
+ <label>Subject: <input type="text" name="subject" /></label>
+ </div>
+ <div class="field">
+ <label>Group: <input type="text" name="group" /></label>
+ </div>
+ <p class="help">Add a user or group to an existing permission group.</p>
+ <div class="buttons">
+ <input type="submit" name="add" value=" Add ">
+ </div>
+ </fieldset>
+</form>
+
+<form method="post">
+ <table class="listing" id="permlist">
+ <thead>
+ <tr><th class="sel">&nbsp;</th><th>Subject</th><th>Action</th></tr>
+ </thead><tbody><?cs
+ each:perm = admin.perms ?>
+ <tr>
+ <td><input type="checkbox" name="sel" value="<?cs var:perm.key ?>" /></td>
+ <td><?cs var:perm.subject ?></td>
+ <td><?cs var:perm.action ?></td>
+ </tr><?cs
+ /each ?></tbody>
+ </table>
+ <div class="buttons">
+ <input type="submit" name="remove" value="Remove selected items" />
+ </div>
+</form>
80 django_website/templates/trac_templates/admin_plugin.cs
View
@@ -0,0 +1,80 @@
+<h2>Manage Plugins</h2>
+
+<form id="addplug" class="addnew" method="post" enctype="multipart/form-data">
+ <fieldset>
+ <legend>Install Plugin:</legend>
+ <div class="field">
+ <label>File: <input type="file" name="egg_file"<?cs
+ if:admin.readonly ?> disabled="disabled"<?cs /if ?> /></label>
+ </div>
+ <p class="help"><?cs
+ if:admin.readonly ?>The web server does not have sufficient permissions to
+ store files in the environment plugins directory.<?cs
+ else ?>
+ Upload a plugin packaged as Python egg.<?cs
+ /if ?></p>
+ <div class="buttons">
+ <input type="submit" name="install" value="Install"<?cs
+ if:admin.readonly ?> disabled="disabled"<?cs /if ?> />
+ </div>
+ </fieldset>
+</form>
+
+<script type="text/javascript" src="<?cs
+ var:chrome.href ?>/admin/js/admin.js"></script><?cs
+ each:plugin = admin.plugins ?><form method="post"><div class="plugin">
+ <h3 id="no<?cs var:name(plugin) ?>"><?cs
+ var:plugin.name ?> <?cs var:plugin.version ?></h3>
+ <div class="uninstall buttons">
+ <input type="hidden" name="plugin_filename" value="<?cs
+ var:plugin.plugin_filename ?>" />
+ <input type="submit" name="uninstall" value="Uninstall"<?cs
+ if:plugin.readonly ?> disabled="disabled"<?cs /if ?> />
+ </div>
+ <p class="summary"><?cs var:plugin.info.summary ?></p><?cs
+ if:plugin.info.home_page || plugin.info.author || plugin.info.author_email ?>
+ <dl class="info"><?cs
+ if:plugin.info.author || plugin.info.author_email ?>
+ <dt>Author:</dt>
+ <dd><?cs
+ if:plugin.info.author_email ?><a href="mailto:<?cs
+ var:plugin.info.author_email ?>"><?cs alt:plugin.info.author ?><?cs
+ var:plugin.info.author_email ?><?cs /alt ?></a><?cs
+ else ?><?cs var:plugin.info.author ?><?cs
+ /if ?></dd><?cs
+ /if ?><?cs
+ if:plugin.info.home_page ?>
+ <dt>Home page:</dt>
+ <dd><a onclick="window.open(this.href); return false" href="<?cs
+ var:plugin.info.home_page ?>"><?cs var:plugin.info.home_page ?></a></dt><?cs
+ /if ?><?cs
+ if:plugin.info.license ?>
+ <dt>License:</dt>
+ <dd><?cs var:plugin.info.license ?></dd><?cs
+ /if ?>
+ </dl><?cs
+ /if ?><table class="listing"><thead>
+ <tr><th>Component</th><th class="sel">Enabled</th></tr>
+ </thead><tbody><?cs
+ each:component = plugin.components ?><tr>
+ <td class="name" title="<?cs var:component.description ?>"><?cs
+ var:component.name ?><p class="module"><?cs var:component.module ?></p></td>
+ <td class="sel"><?cs
+ if:!component.required ?><input type="hidden" name="component" value="<?cs
+ var:component.module ?>.<?cs var:component.name ?>" /><?cs
+ /if ?><input type="checkbox" name="enable" value="<?cs
+ var:component.module ?>.<?cs var:component.name ?>"<?cs
+ if:component.enabled ?> checked="checked"<?cs
+ /if ?><?cs
+ if:component.required ?> disabled="disabled"<?cs
+ /if ?> /></td>
+ </tr><?cs
+ /each ?></tbody>
+ </table>
+ <div class="update buttons">
+ <input type="hidden" name="plugin" value="<?cs var:name(plugin) ?>" />
+ <input type="submit" name="update" value="Apply changes" />
+ </div></div><script type="text/javascript">
+ enableFolding("no<?cs var:name(plugin) ?>");
+ </script></form><?cs
+ /each ?>
76 django_website/templates/trac_templates/admin_spamconfig.cs
View
@@ -0,0 +1,76 @@
+<h2>Spam Filtering: Configuration</h2>
+
+<form class="mod" id="spamconfig" method="post">
+
+ <fieldset id="karmatuning">
+ <legend>Karma Tuning</legend>
+ <div class="field">
+ <label>
+ Minimum karma required for a successful submission:
+ <input type="text" id="min_karma" name="min_karma" size="3"
+ value="<?cs var:admin.spamfilter.min_karma ?>" />
+ </label>
+ </div>
+ <p class="hint">
+ Content submissions are passed through a set of registered and enabled
+ <em>filter strategies</em>, each of which check the submitted content
+ and may assign <em>karma points</em> to it. The sum of these karma
+ points needs to be greater than or equal to the minimum karma
+ configured here for the submission to be accepted.
+ </p>
+ <table class="listing" id="karmapoints">
+ <thead><tr>
+ <th>Strategy</th>
+ <th>Karma points</th>
+ <th>Description</th>
+ </tr></thead>
+ <?cs each:strategy = admin.spamfilter.strategies ?><tr>
+ <th><?cs var:strategy.name ?></th>
+ <td>
+ <input type="text" name="<?cs var:strategy.name ?>_karmapoints"
+ value="<?cs var:strategy.karma_points ?>" size="3" />
+ </td>
+ <td><p class="hint"><?cs var:strategy.karma_help ?></p></td>
+ </tr><?cs /each ?>
+ </table>
+ </fieldset>
+
+ <fieldset id="logging">
+ <legend>Logging</legend>
+ <div class="field">
+ <label>
+ <input type="checkbox" id="logging_enabled" name="logging_enabled" <?cs
+ if:admin.spamfilter.logging_enabled ?> checked="checked"<?cs /if ?> />
+ Enable
+ </label>
+ </div>
+ <p class="hint">
+ The spam filter plugin can optionally log every content submission so
+ that you can monitor and tune the effectiveness of the filtering. The
+ log is stored in the database, and can be viewed under &ldquo;<em>Spam
+ Filtering &rarr; Monitoring</em>&rdquo; from the web administration
+ interface.
+ </p>
+ <div class="field">
+ <label>
+ Purge old entries after
+ <input type="text" id="purge_age" name="purge_age" size="3"
+ value="<?cs var:admin.spamfilter.purge_age ?>" />
+ days
+ </label>
+ </div>
+ </fieldset>
+
+ <div class="buttons">
+ <input type="submit" value="Apply changes"/>
+ </div>
+</form>
+
+<script type="text/javascript">
+ var loggingEnabled = document.getElementById("logging_enabled");
+ function updateLoggingEnabled() {
+ enableControl("purge_age", loggingEnabled.checked);
+ }
+ addEvent(window, 'load', updateLoggingEnabled);
+ addEvent(loggingEnabled, 'click', updateLoggingEnabled);
+</script>
65 django_website/templates/trac_templates/admin_spamentry.cs
View
@@ -0,0 +1,65 @@
+<div class="nav"><?cs
+ with:links = chrome.links ?><ul><?cs
+ if:len(links.prev) ?>
+ <li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>">
+ &larr; <a href="<?cs var:links.prev.0.href ?>">Previous Log Entry</a>
+ </li><?cs
+ /if ?><li class="up">
+ <a href="<?cs var:links.up.0.href ?>">Back to List</a>
+ </li><?cs
+ if:len(links.next) ?>
+ <li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last">
+ <a href="<?cs var:links.next.0.href ?>">Next Log Entry</a> &rarr;
+ </li><?cs
+ /if ?></ul><?cs
+ /with ?>
+</div>
+<h2>Spam Filtering: Monitoring</h2>
+
+<?cs with:entry = admin.spamfilter.entry ?>
+<form class="mod" id="spamentry" method="post">
+ <fieldset>
+ <legend>Log Entry:</legend>
+ <h3>Information</h3>
+ <table class="meta"><tr>
+ <th>Time:</th>
+ <td><?cs var:entry.time ?> (<?cs var:entry.timedelta ?> ago)</td>
+ </tr><tr>
+ <th>Path:</th>
+ <td><a href="<?cs var:entry.href ?>"><?cs var:entry.url ?></a></td>
+ </tr><tr>
+ <th>Author:</th>
+ <td><?cs var:entry.author ?></td>
+ </tr><tr>
+ <th>Authenticated:</th>
+ <td><?cs if:entry.authenticated ?>yes<?cs else ?>no<?cs /if ?></td>
+ </tr><tr>
+ <th>IP address:</th>
+ <td><?cs var:entry.ipnr ?></td>
+ </tr><tr>
+ <th>Karma:</th>
+ <td>
+ <strong><?cs var:entry.karma ?></strong>
+ (marked as <?cs if:entry.rejected ?>spam<?cs else ?>ham<?cs /if ?>)
+ <ul><?cs each:reason = entry.reasons ?>
+ <li><?cs var:reason ?></li>
+ <?cs /each ?></ul>
+ </td>
+ </tr></table>
+ <div class="content">
+ <h3>Submitted content</h3>
+ <pre><?cs var:entry.full_content ?></pre>
+ </div>
+ <div class="headers">
+ <h3>HTTP headers</h3>
+ <pre><?cs var:entry.headers ?></pre>
+ </div>
+ <div class="buttons">
+ <input type="hidden" name="sel" value="<?cs var:entry.id ?>" />
+ <input type="submit" name="markspam" value="Mark as Spam" />
+ <input type="submit" name="markham" value="Mark as Ham" />
+ <input type="submit" name="delete" value="Delete" />
+ </div>
+ </fieldset>
+</form>
+<?cs /with ?>
109 django_website/templates/trac_templates/admin_spammonitor.cs
View
@@ -0,0 +1,109 @@
+<h2>Spam Filtering: Logs</h2>
+
+<form method="post">
+
+ <?cs if:!admin.spamfilter.enabled ?><p>
+ <strong>Note:</strong> Logging by the spam filter is currently disabled.
+ </p><?cs /if ?>
+
+ <p class="hint">
+ Viewing entries <?cs var:admin.spamfilter.offset ?>–<?cs
+ var:admin.spamfilter.offset + len(admin.spamfilter.entries) - 1 ?> of
+ <?cs var:admin.spamfilter.total ?>.
+ </p>
+ <div class="nav"><?cs
+ with:links = chrome.links ?><?cs
+ if:len(links.prev) || len(links.next) ?><ul><?cs
+ if:len(links.prev) ?>
+ <li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>">
+ &larr; <a href="<?cs var:links.prev.0.href ?>"><?cs
+ var:links.prev.0.title ?></a>
+ </li><?cs
+ /if ?><?cs
+ if:len(links.next) ?>
+ <li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last">
+ <a href="<?cs var:links.next.0.href ?>"><?cs
+ var:links.next.0.title ?></a> &rarr;
+ </li><?cs
+ /if ?></ul><?cs
+ /if ?><?cs
+ /with ?>
+ </div>
+
+ <table class="listing" id="spammonitor">
+ <thead>
+ <tr>
+ <th class="sel">&nbsp;</th>
+ <th>Author</th>
+ <th>Path</th>
+ <th>Karma</th>
+ <th>IP Address</th>
+ <th>Date/time</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?cs each:entry = admin.spamfilter.entries ?>
+ <tr class="<?cs if:name(entry) % 2 ?>odd<?cs else ?>even<?cs /if ?><?cs
+ if:entry.rejected ?> rejected<?cs /if ?>">
+ <td rowspan="2">
+ <input type="checkbox" name="sel" value="<?cs var:entry.id ?>" />
+ </td>
+ <td class="author"<?cs
+ if:entry.author != entry.author_clipped ?> title="<?cs var:entry.author ?>"<?cs
+ /if ?>>
+ <a href="<?cs var:entry.admin_href ?>"><img src="<?cs var:chrome.href ?>/spamfilter/<?cs
+ if:entry.authenticated ?>yes<?cs else ?>no<?cs /if ?>.gif" alt="<?cs
+ if:entry.authenticated ?>yes<?cs else ?>no<?cs /if ?>" title="User was<?cs
+ if:!entry.authenticated ?> not<?cs /if ?> logged in"/>&nbsp;<?cs
+ alt:entry.author_clipped ?>anonymous<?cs /alt ?></a>
+ </td>
+ <td class="path"<?cs
+ if:entry.path != entry.path_clipped ?> title="<?cs var:entry.path ?>"<?cs
+ /if ?>>
+ <a href="<?cs var:entry.admin_href ?>"><?cs var:entry.path_clipped ?></a>
+ </td>
+ <td class="karma"><?cs var:entry.karma ?></td>
+ <td class="ipnr"><?cs var:entry.ipnr ?></td>
+ <td class="time"><?cs var:entry.time ?></td>
+ </tr>
+ <tr class="<?cs if:name(entry) % 2 ?>odd<?cs else ?>even<?cs /if ?>">
+ <td class="details" colspan="5">
+ <?cs if:len(entry.reasons) ?>
+ <ul><?cs each:reason = entry.reasons ?>
+ <li><?cs var:reason ?></li>
+ <?cs /each ?></ul>
+ <?cs /if ?>
+ <blockquote><?cs var:entry.content ?></blockquote>
+ </td>
+ </tr>
+ <?cs /each ?>
+ </tbody>
+ </table>
+
+ <div class="nav"><?cs
+ with:links = chrome.links ?><?cs
+ if:len(links.prev) || len(links.next) ?><ul><?cs
+ if:len(links.prev) ?>
+ <li class="first<?cs if:!len(links.up) && !len(links.next) ?> last<?cs /if ?>">
+ &larr; <a href="<?cs var:links.prev.0.href ?>"><?cs
+ var:links.prev.0.title ?></a>
+ </li><?cs
+ /if ?><?cs
+ if:len(links.next) ?>
+ <li class="<?cs if:!len(links.prev) && !len(links.up) ?>first <?cs /if ?>last">
+ <a href="<?cs var:links.next.0.href ?>"><?cs
+ var:links.next.0.title ?></a> &rarr;
+ </li><?cs
+ /if ?></ul><?cs
+ /if ?><?cs
+ /with ?>
+ </div>
+
+ <div class="buttons">
+ <input type="hidden" name="page" value="<?cs var:admin.spamfilter.page ?>" />
+ <input type="submit" name="markspam" value="Mark selected as Spam" />
+ <input type="submit" name="markham" value="Mark selected as Ham" />
+ <input type="submit" name="delete" value="Deleted selected" />
+ </div>
+
+</form>
87 django_website/templates/trac_templates/admin_version.cs
View
@@ -0,0 +1,87 @@
+<h2>Manage Versions</h2><?cs
+
+if:admin.version.name ?>
+ <form class="mod" id="modver" method="post">
+ <fieldset>
+ <legend>Modify Version:</legend>
+ <div class="field">
+ <label>Name:<br /> <input type="text" name="name"value="<?cs
+ var:admin.version.name ?>" /></label>
+ </div>
+ <div class="field">
+ <label>Time:<br />
+ <input type="text" name="time" size="<?cs
+ var:len(admin.date_hint) ?>" value="<?cs
+ var:admin.version.time ?>" title="Format: <?cs var:admin.date_hint ?>" />
+ <em>Format: <?cs var:admin.date_hint ?></em>
+ </label>
+ </div>
+ <div class="field">
+ <fieldset class="iefix">
+ <label for="description">Description (you may use <a tabindex="42" href="<?cs
+ var:trac.href.wiki ?>/WikiFormatting">WikiFormatting</a> here):</label>
+ <p><textarea id="description" name="description" class="wikitext" rows="6" cols="60"><?cs
+ var:admin.version.description ?></textarea></p>
+ </fieldset>
+ </div>
+ <script type="text/javascript" src="<?cs
+ var:chrome.href ?>/common/js/wikitoolbar.js"></script>
+ <div class="buttons">
+ <input type="submit" name="cancel" value="Cancel">
+ <input type="submit" name="save" value="Save">
+ </div>
+ </fieldset>
+ </form><?cs
+
+else ?>
+
+ <form class="addnew" id="addver" method="post">
+ <fieldset>
+ <legend>Add Version:</legend>
+ <div class="field">
+ <label>Name:<br /><input type="text" name="name" id="name" /></label>
+ </div>
+ <div class="field">
+ <label>
+ Time:<br />
+ <input type="text" name="time"
+ title="Format: <?cs var:admin.date_hint ?>" /><br />
+ <em>Format: <?cs var:admin.date_hint ?></em>
+ </label>
+ </div>
+ <div class="buttons">
+ <input type="submit" name="add" value="Add" />
+ </div>
+ </fieldset>
+ </form><?cs
+
+ if:len(admin.versions) ?><form method="POST">
+ <table class="listing" id="verlist">
+ <thead>
+ <tr><th class="sel">&nbsp;</th><th>Name</th>
+ <th>Time</th><th>Default</th></tr>
+ </thead><tbody><?cs
+ each:ver = admin.versions ?>
+ <tr>
+ <td><input type="checkbox" name="sel" value="<?cs var:ver.name ?>" /></td>
+ <td><a href="<?cs var:ver.href ?>"><?cs var:ver.name ?></a></td>
+ <td><?cs var:ver.time ?></td>
+ <td class="default"><input type="radio" name="default" value="<?cs
+ var:ver.name ?>"<?cs
+ if:ver.is_default ?> checked="checked" <?cs /if ?>></td>
+ </tr><?cs
+ /each ?></tbody>
+ </table>
+ <div class="buttons">
+ <input type="submit" name="remove" value="Remove selected items" />
+ <input type="submit" name="apply" value="Apply changes" />
+ </div>
+ <p class="help">You can remove all items from this list to completely hide
+ this field from the user interface.</p>
+ </form><?cs
+ else ?>
+ <p class="help">As long as you don't add any items to the list, this field
+ will remain completely hidden from the user interface.</p><?cs
+ /if ?><?cs
+
+/if ?>
25 django_website/templates/trac_templates/log_changelog.cs
View
@@ -0,0 +1,25 @@
+#
+# ChangeLog for <?cs var:log.path ?>
+#
+# Generated by Trac <?cs var:trac.version ?>
+# <?cs var:trac.time ?>
+#
+<?cs each:item = $log.items ?>
+<?cs with:changeset = log.changes[item.rev] ?>
+<?cs var:changeset.date ?> <?cs
+ var:changeset.author ?> [<?cs var:item.rev ?>]<?cs
+ set:idx = 0 ?><?cs
+ each:file = changeset.files ?>
+ * <?cs var:file ?> (<?cs
+ set:action = changeset.actions[idx] ?><?cs
+ if:action == 'add' ?>added<?cs
+ elif:action == 'delete' ?>deleted<?cs
+ elif:action == 'copy' ?>copied<?cs
+ elif:action == 'move' ?>moved<?cs
+ elif:action == 'edit' ?>modified<?cs
+ /if ?>)<?cs
+ set:idx = idx + 1 ?><?cs
+ /each ?>
+<?cs var:changeset.message ?><?cs
+ /with ?><?cs
+/each ?>
42 django_website/templates/trac_templates/ticket_rss.cs
View
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!-- RSS generated by Trac v<?cs var:trac.version ?> on <?cs var:trac.time ?> -->
+<rss version="2.0">
+ <channel><?cs
+ if:project.name_encoded ?>
+ <title><?cs var:project.name_encoded ?>: Ticket <?cs var:title ?></title><?cs
+ else ?>
+ <title>Ticket <?cs var:title ?></title><?cs
+ /if ?>
+ <link><?cs var:base_host ?><?cs var:ticket.href ?></link>
+ <description><?cs var:ticket.description.formatted ?></description>
+ <language>en-us</language>
+ <generator>Trac v<?cs var:trac.version ?></generator><?cs
+ each:change = ticket.changes ?>
+ <item><?cs
+ if:change.author ?><author><?cs var:change.author ?></author><?cs
+ /if ?>
+ <pubDate><?cs var:change.date ?></pubDate>
+ <title><?cs var:change.title ?></title>
+ <link><?cs var:base_host ?><?cs var:ticket.href ?></link>
+ <description>
+ <?cs if:len(change.fields) ?>
+ &lt;ul&gt;<?cs
+ each:field = change.fields ?>
+ &lt;li&gt;&lt;strong&gt;<?cs name:field ?>&lt;/strong&gt; <?cs
+ if:!field.old ?>set to &lt;em&gt;<?cs
+ var:field.new ?>&lt;/em&gt;<?cs
+ elif:field.new ?>changed from &lt;em&gt;<?cs var:field.old
+ ?>&lt;/em&gt; to &lt;em&gt;<?cs
+ var:field.new ?>&lt;/em&gt;.<?cs
+ else ?>deleted<?cs
+ /if ?>&lt;/li&gt;<?cs
+ /each ?>
+ &lt;/ul&gt;
+ <?cs /if ?>
+ <?cs var:change.comment ?>
+ </description>
+ <category>Ticket</category>
+ </item><?cs
+ /each ?>
+ </channel>
+</rss>
Please sign in to comment.
Something went wrong with that request. Please try again.