[Python-checkins] r52629 - in tracker/instances/python-dev: TEMPLATE-INFO.txt html/home.html html/issue.index.html html/issue.item.html html/issue.search.html html/page.html html/style.css html/user.forgotten.html html/user.index.html initial_data.py schema.py

erik.forsberg python-checkins at python.org
Sun Nov 5 21:54:17 CET 2006


Author: erik.forsberg
Date: Sun Nov 5 21:54:16 2006
New Revision: 52629
Modified:
 tracker/instances/python-dev/TEMPLATE-INFO.txt
 tracker/instances/python-dev/html/home.html
 tracker/instances/python-dev/html/issue.index.html
 tracker/instances/python-dev/html/issue.item.html
 tracker/instances/python-dev/html/issue.search.html
 tracker/instances/python-dev/html/page.html
 tracker/instances/python-dev/html/style.css
 tracker/instances/python-dev/html/user.forgotten.html
 tracker/instances/python-dev/html/user.index.html
 tracker/instances/python-dev/initial_data.py
 tracker/instances/python-dev/schema.py
Log:
Applying changes made to the classic template while the roundup
prototype was created. This brings the instance up to date with the
code in roundup's CVS repo on sourceforge, the python-tracker module,
tagged export-to-svn-python-org.
Complete ChangeLog dug out from CVS:
2006年07月26日 02:59 richard
	* html/: page.html, style.css: some CSS bugfixes and cleaning up of
	 the sidebar
2006年07月19日 23:22 forsberg
	* html/user.forgotten.html: Added a note about the use of
	 sourceforge usernames.
2006年07月19日 22:16 forsberg
	* html/user.index.html: Batch index for user list, or we'll have to
	 wait for a looong time for all the 4500+ users to appear.
2006年07月19日 21:56 forsberg
	* html/: issue.index.html, issue.search.html, page.html, style.css:
	 Applied patch with stylistic changed from Stefan Seefeld and did
	 some additional work on it.
	 Tracker now looks much more python.org-ish.
2006年07月04日 22:20 forsberg
	* html/issue.search.html: not resolved -> not closed. Closes
	 http://efod.se/ptt/issue11 .
2006年07月04日 18:14 forsberg
	* html/page.html: Only show status=1,2 (Open, Pending) when
	 searching.
2006年07月04日 18:05 forsberg
	* html/home.html: Only show status with id 1, 2 (Open, Pending) on
	 default page.
2006年07月04日 18:04 forsberg
	* initial_data.py: Create status values to make the id's of the
	 different values predeterminable, and hence useful in search
	 filters..
2006年06月29日 17:33 forsberg
	* html/issue.search.html: Use search_input instead of search_select
	 to avoid listing all users, or the performance of the search page
	 will be very very bad..
2006年06月29日 17:31 forsberg
	* html/issue.item.html: Set title on href pointing to superseder,
	 enabling tooltip with title of bug in most browsers.
2006年06月21日 22:47 forsberg
	* html/issue.item.html: Show status and resolution on their own
	 line.
	 Show Group and Priority on another line.
2006年06月21日 22:45 forsberg
	* html/issue.item.html: Show the resolution field.
2006年06月20日 22:28 forsberg
	* schema.py: Added resolution to issue,
	 and setkey on resolution.
2006年06月20日 21:55 forsberg
	* schema.py, html/issue.item.html: Added a boolean,
	 imported_from_sf, to the schema. This is used to determine if a
	 link to the old sf tracker item should be displayed or not.
2006年06月20日 20:03 forsberg
	* html/issue.item.html: Display messages in the order they came in,
	 not reversed.
2006年06月20日 19:55 forsberg
	* html/issue.item.html: Added a link to the SF tracker item, to
	 make it easier to verify that the imported data is correct.
2006年06月20日 19:49 forsberg
	* html/issue.item.html: Replaced assignedto menu with assignedto
	 field for performance reasons.
2006年06月15日 18:57 forsberg
	* schema.py: Assign permissions to the 'group' class.
2006年06月14日 22:06 forsberg
	* initial_data.py: Don't add any priority nor any status values.
	 The importer fixes the former and might do the latter too in a
	 later stage.
2006年06月14日 21:58 forsberg
	* html/: _generic.calendar.html, _generic.collision.html,
	 _generic.help.html, _generic.index.html, _generic.item.html,
	 file.index.html, file.item.html, help_controls.js,
	 home.classlist.html, home.html, issue.index.html,
	 issue.item.html, issue.search.html, keyword.item.html,
	 msg.index.html, msg.item.html, page.html, query.edit.html,
	 query.item.html, style.css, user.forgotten.html, user.index.html,
	 user.item.html, user.register.html, user.rego_progress.html:
	 Templates from the 'classic' roundup template.
2006年06月13日 05:33 richard
	* .cvsignore, TEMPLATE-INFO.txt, initial_data.py, schema.py,
	 detectors/.cvsignore, detectors/messagesummary.py,
	 detectors/nosyreaction.py, detectors/statusauditor.py,
	 detectors/userauditor.py, extensions/.cvsignore,
	 extensions/README.txt: Initial import of python tracker
2006年06月13日 05:33 richard
	* .cvsignore, TEMPLATE-INFO.txt, initial_data.py, schema.py,
	 detectors/.cvsignore, detectors/messagesummary.py,
	 detectors/nosyreaction.py, detectors/statusauditor.py,
	 detectors/userauditor.py, extensions/.cvsignore,
	 extensions/README.txt: Initial revision
Modified: tracker/instances/python-dev/TEMPLATE-INFO.txt
==============================================================================
--- tracker/instances/python-dev/TEMPLATE-INFO.txt	(original)
+++ tracker/instances/python-dev/TEMPLATE-INFO.txt	Sun Nov 5 21:54:16 2006
@@ -1,7 +1,5 @@
-Name: classic
-Description: This is a generic issue tracker that may be used to track bugs,
- feature requests, project issues or any number of other types
- of issues. Most users of Roundup will find that this template
- suits them, with perhaps a few customisations.
-Intended-For: All first-time Roundup users
+Name: python-tracker
+Description: This is customisation of the "classic" tracker for the Python
+ Language developers.
+Intended-For: http://dev.python.org/
 
Modified: tracker/instances/python-dev/html/home.html
==============================================================================
--- tracker/instances/python-dev/html/home.html	(original)
+++ tracker/instances/python-dev/html/home.html	Sun Nov 5 21:54:16 2006
@@ -7,4 +7,5 @@
 <span tal:replace="structure python:db.issue.renderWith('index',
 sort=('-', 'activity'), group=('+', 'priority'), filter=['status'],
 columns=['id','activity','title','creator','assignedto', 'status'],
- filterspec={'status':['-1','1','2','3','4','5','6','7']})" />
+ filterspec={'status':['1','2']})" />
+<!-- SHA: 1fdaa3238149b4381d19a45a81deb6075de7d0e9 -->
Modified: tracker/instances/python-dev/html/issue.index.html
==============================================================================
--- tracker/instances/python-dev/html/issue.index.html	(original)
+++ tracker/instances/python-dev/html/issue.index.html	Sun Nov 5 21:54:16 2006
@@ -97,7 +97,7 @@
 <a tal:attributes="href python:request.indexargs_url('issue',
 {'@action':'export_csv'})" i18n:translate="">Download as CSV</a>
 
-<form method="GET" class="index-controls"
+<form method="get" class="index-controls"
 tal:attributes="action request/classname">
 
 <table class="form">
@@ -115,7 +115,7 @@
 </td>
 <th i18n:translate="">Descending:</th>
 <td><input type="checkbox" name="@sortdir"
- tal:attributes="checked python:request.sort[0] == '-'">
+ tal:attributes="checked python:request.sort[0] == '-'"/>
 </td>
 </tr>
 <tr>
@@ -132,11 +132,11 @@
 </td>
 <th i18n:translate="">Descending:</th>
 <td><input type="checkbox" name="@groupdir"
- tal:attributes="checked python:request.group[0] == '-'">
+ tal:attributes="checked python:request.group[0] == '-'"/>
 </td>
 </tr>
 <tr><td colspan="4">
- <input type="submit" value="Redisplay" i18n:attributes="value">
+ <input type="submit" value="Redisplay" i18n:attributes="value"/>
 <tal:block tal:replace="structure
 python:request.indexargs_form(sort=0, group=0)" />
 </td></tr>
@@ -147,3 +147,4 @@
 
 </td>
 </tal:block>
+<!-- SHA: 8a7f0580114904917683796f76dde4da8cc80d3b -->
Modified: tracker/instances/python-dev/html/issue.item.html
==============================================================================
--- tracker/instances/python-dev/html/issue.item.html	(original)
+++ tracker/instances/python-dev/html/issue.item.html	Sun Nov 5 21:54:16 2006
@@ -25,6 +25,12 @@
 
 <td class="content" metal:fill-slot="content">
 
+<p tal:condition="python: context.id and context.imported_from_sf"><a tal:attributes="href
+ python:'http://sourceforge.net/support/tracker.php?aid='+context.id;">
+ Sourceforge tracker item</a> (for comparison)
+</p>
+
+
 <p tal:condition="not:context/is_view_ok" i18n:translate="">You are not
 allowed to view this page.</p>
 
@@ -41,10 +47,17 @@
 </tr>
 
 <tr>
+ <th i18n:translate="">Group</th>
+ <td tal:content="structure context/group/menu">group</td>
 <th class="required" i18n:translate="">Priority</th>
 <td tal:content="structure context/priority/menu">priority</td>
+</tr>
+
+<tr>
 <th i18n:translate="">Status</th>
 <td tal:content="structure context/status/menu">status</td>
+ <th i18n:translate="">Resolution</th>
+ <td tal:content="structure context/resolution/menu">resolution</td>
 </tr>
 
 <tr>
@@ -54,7 +67,8 @@
 <span tal:condition="context/is_edit_ok" tal:replace="structure python:db.issue.classhelp('id,title', property='superseder')" />
 <span tal:condition="context/superseder" tal:repeat="sup context/superseder">
 <br><span i18n:translate="">View: <a i18n:name="link" tal:content="sup/id"
- tal:attributes="href string:issue${sup/id}"></a></span>
+ tal:attributes="href string:issue${sup/id};
+ title sup/title;"></a></span>
 </span>
 </td>
 <th i18n:translate="">Nosy List</th>
@@ -67,7 +81,7 @@
 
 <tr>
 <th i18n:translate="">Assigned To</th>
- <td tal:content="structure context/assignedto/menu">assignedto menu</td>
+ <td tal:content="structure context/assignedto/field">assignedto field</td>
 <th i18n:translate="">Topics</th>
 <td>
 <span tal:replace="structure context/topic/field" />
@@ -156,7 +170,7 @@
 
 <table class="messages" tal:condition="context/messages">
 <tr><th colspan="4" class="header" i18n:translate="">Messages</th></tr>
- <tal:block tal:repeat="msg context/messages/reverse">
+ <tal:block tal:repeat="msg context/messages">
 <tr>
 <th><a tal:attributes="href string:msg${msg/id}"
 i18n:translate="">msg<tal:x replace="msg/id" i18n:name="id" /> (view)</a></th>
@@ -188,3 +202,4 @@
 </td>
 
 </tal:block>
+<!-- SHA: 52e1c51e8d17b8e8dd4ff54055b4f87ef0aa13bc -->
Modified: tracker/instances/python-dev/html/issue.search.html
==============================================================================
--- tracker/instances/python-dev/html/issue.search.html	(original)
+++ tracker/instances/python-dev/html/issue.search.html	Sun Nov 5 21:54:16 2006
@@ -5,7 +5,7 @@
 i18n:translate="">Issue searching</span>
 <td class="content" metal:fill-slot="content">
 
-<form method="GET" name="itemSynopsis"
+<form method="get" name="itemSynopsis"
 tal:attributes="action request/classname">
 
 <table class="form" tal:define="
@@ -75,7 +75,7 @@
 db_content string:username;"
 tal:condition="db/user/is_view_ok">
 <th i18n:translate="">Creator:</th>
- <td metal:use-macro="search_select">
+ <td metal:use-macro="search_input">
 <option metal:fill-slot="extra_options" i18n:translate=""
 tal:attributes="value request/user/id">created by me</option>
 </td>
@@ -97,7 +97,7 @@
 db_content string:username;"
 tal:condition="db/user/is_view_ok">
 <th i18n:translate="">Actor:</th>
- <td metal:use-macro="search_select">
+ <td metal:use-macro="search_input">
 <option metal:fill-slot="extra_options" i18n:translate=""
 tal:attributes="value request/user/id">done by me</option>
 </td>
@@ -125,8 +125,8 @@
 <th i18n:translate="">Status:</th>
 <td metal:use-macro="search_select">
 <tal:block metal:fill-slot="extra_options">
- <option value="-1,1,2,3,4,5,6,7" i18n:translate=""
- tal:attributes="selected python:value == '-1,1,2,3,4,5,6,7'">not resolved</option>
+ <option value="-1,1,2" i18n:translate=""
+ tal:attributes="selected python:value == '-1,1,2'">not closed</option>
 <option value="-1" i18n:translate=""
 tal:attributes="selected python:value == '-1'">not selected</option>
 </tal:block>
@@ -141,7 +141,7 @@
 db_content string:username;"
 tal:condition="db/user/is_view_ok">
 <th i18n:translate="">Assigned to:</th>
- <td metal:use-macro="search_select">
+ <td metal:use-macro="search_input">
 <tal:block metal:fill-slot="extra_options">
 <option tal:attributes="value request/user/id"
 i18n:translate="">assigned to me</option>
@@ -158,50 +158,50 @@
 <th i18n:translate="">No Sort or group:</th>
 <td>&nbsp;</td>
 <td>&nbsp;</td>
- <td><input type="radio" name="@sort" value=""></td>
- <td><input type="radio" name="@group" value=""></td>
+ <td><input type="radio" name="@sort" value=""/></td>
+ <td><input type="radio" name="@group" value=""/></td>
 </tr>
 
 <tr>
 <th i18n:translate="">Pagesize:</th>
 <td><input name="@pagesize" size="3" value="50"
- tal:attributes="value request/form/@pagesize/value | default"></td>
+ tal:attributes="value request/form/@pagesize/value | default"/></td>
 </tr>
 
 <tr>
 <th i18n:translate="">Start With:</th>
 <td><input name="@startwith" size="3" value="0"
- tal:attributes="value request/form/@startwith/value | default"></td>
+ tal:attributes="value request/form/@startwith/value | default"/></td>
 </tr>
 
 <tr>
 <th i18n:translate="">Sort Descending:</th>
 <td><input type="checkbox" name="@sortdir"
- tal:attributes="checked python:request.sort[0] == '-' or request.sort[0] is None">
+ tal:attributes="checked python:request.sort[0] == '-' or request.sort[0] is None"/>
 </td>
 </tr>
 
 <tr>
 <th i18n:translate="">Group Descending:</th>
 <td><input type="checkbox" name="@groupdir"
- tal:attributes="checked python:request.group[0] == '-'">
+ tal:attributes="checked python:request.group[0] == '-'"/>
 </td>
 </tr>
 
 <tr tal:condition="python:request.user.hasPermission('Edit', 'query')">
 <th i18n:translate="">Query name**:</th>
 <td tal:define="value request/form/@queryname/value | nothing">
- <input name="@queryname" tal:attributes="value value">
- <input type="hidden" name="@old-queryname" tal:attributes="value value">
+ <input name="@queryname" tal:attributes="value value"/>
+ <input type="hidden" name="@old-queryname" tal:attributes="value value"/>
 </td>
 </tr>
 
 <tr>
 <td>
 &nbsp;
- <input type="hidden" name="@action" value="search">
+ <input type="hidden" name="@action" value="search"/>
 </td>
- <td><input type="submit" value="Search" i18n:attributes="value"></td>
+ <td><input type="submit" value="Search" i18n:attributes="value"/></td>
 </tr>
 
 <tr><td>&nbsp;</td>
@@ -223,3 +223,4 @@
 </td>
 
 </tal:block>
+<!-- SHA: f0c86e97d4e43a1e3cc5f9e08ec4b918719ab6b8 -->
Modified: tracker/instances/python-dev/html/page.html
==============================================================================
--- tracker/instances/python-dev/html/page.html	(original)
+++ tracker/instances/python-dev/html/page.html	Sun Nov 5 21:54:16 2006
@@ -1,148 +1,184 @@
 <tal:block metal:define-macro="icing">
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
 <title metal:define-slot="head_title">title goes here</title>
-<link rel="stylesheet" type="text/css" href="@@file/style.css">
+<link media="screen" href="http://python.org/styles/screen-switcher-default.css" type="text/css" id="screen-switcher-stylesheet" rel="stylesheet" />
+<link media="screen" href="http://python.org/styles/netscape4.css" type="text/css" rel="stylesheet" />
+<link media="print" href="http://python.org/styles/print.css" type="text/css" rel="stylesheet" />
+<link media="screen" href="http://python.org/styles/largestyles.css" type="text/css" rel="alternate stylesheet" title="large text" />
+<link media="screen" href="http://python.org/styles/defaultfonts.css" type="text/css" rel="alternate stylesheet" title="default fonts" />
+<link rel="stylesheet" type="text/css" href="@@file/style.css" />
 <meta http-equiv="Content-Type"
 tal:attributes="content string:text/html;; charset=${request/client/charset}" />
 <script tal:replace="structure request/base_javascript">
 </script>
 
 </head>
-<body class="body">
-
-<table class="body">
-
-<tr>
- <td class="page-header-left">&nbsp;</td>
- <td class="page-header-top">
- <div id="body-title">
- <h2><span metal:define-slot="body_title">body title</span></h2>
- </div>
- <div id="searchbox">
- <form method="GET" action="issue">
- <input type="hidden" name="@columns"
- value="id,activity,title,creator,assignedto,status"/>
- <input type="hidden" name="@sort" value="activity"/>
- <input type="hidden" name="@group" value="priority"/>
- <input id="search-text" name="@search_text" size="10"/>
- <input type="submit" id="submit" name="submit" value="Search" i18n:attributes="value"/>
- </form>
- </div>
- </td>
-</tr>
-
-<tr>
- <td rowspan="2" valign="top" class="sidebar">
- <p class="classblock"
- tal:condition="python:request.user.hasPermission('View', 'query')">
- <span i18n:translate=""
- ><b>Your Queries</b> (<a href="query?@template=edit">edit</a>)</span><br>
- <tal:block tal:repeat="qs request/user/queries">
- <a tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name}"
- tal:content="qs/name">link</a><br>
- </tal:block>
- </p>
-
- <form method="POST" tal:attributes="action request/base">
- <p class="classblock"
- tal:condition="python:request.user.hasPermission('View', 'issue')">
- <b i18n:translate="">Issues</b><br>
- <span tal:condition="python:request.user.hasPermission('Create', 'issue')">
- <a href="issue?@template=item" i18n:translate="">Create New</a><br>
- </span>
- <a href="issue?@sort=-activity&@group=priority&@filter=status,assignedto&@columns=id,activity,title,creator,status&status=-1,1,2,3,4,5,6,7&assignedto=-1&@dispname=Show%20Unassigned"
- i18n:translate="">Show Unassigned</a><br>
- <a href="issue?@sort=-activity&@group=priority&@filter=status&@columns=id,activity,title,creator,assignedto,status&status=-1,1,2,3,4,5,6,7&@dispname=Show%20All"
- i18n:translate="">Show All</a><br>
- <a href="issue?@template=search" i18n:translate="">Search</a><br>
- <input type="submit" class="form-small" value="Show issue:"
- i18n:attributes="value"><input class="form-small" size="4"
- type="text" name="@number">
- <input type="hidden" name="@type" value="issue">
- <input type="hidden" name="@action" value="show">
- </p>
- </form>
-
- <p class="classblock"
- tal:condition="python:request.user.hasPermission('Edit', 'keyword')
- or request.user.hasPermission('Create', 'keyword')">
- <b i18n:translate="">Keywords</b><br>
- <span tal:condition="python:request.user.hasPermission('Create', 'keyword')">
- <a href="keyword?@template=item" i18n:translate="">Create New</a><br>
- </span>
- <span tal:condition="python:db.keyword.list() and
- request.user.hasPermission('Edit', 'keyword')">
- <a href="keyword?@template=item" i18n:translate="">Edit Existing</a><br>
- </span>
- </p>
-
- <p class="classblock"
- tal:condition="python:request.user.hasPermission('View', 'user')">
- <b i18n:translate="">Administration</b><br>
- <span tal:condition="python:request.user.hasPermission('Edit', None)">
- <a href="home?@template=classlist" i18n:translate="">Class List</a><br>
- </span>
- <span tal:condition="python:request.user.hasPermission('View', 'user')
- or request.user.hasPermission('Edit', 'user')">
- <a href="user" i18n:translate="">User List</a><br>
- </span>
- <a tal:condition="python:request.user.hasPermission('Create', 'user')"
- href="user?@template=item" i18n:translate="">Add User</a>
- </p>
-
- <form method="POST" tal:condition="python:request.user.username=='anonymous'"
- tal:attributes="action request/base">
- <p class="userblock">
- <b i18n:translate="">Login</b><br>
- <input size="10" name="__login_name"><br>
- <input size="10" type="password" name="__login_password"><br>
- <input type="hidden" name="@action" value="Login">
- <input type="checkbox" name="remember" id="remember">
- <label for="remember" i18n:translate="">Remember me?</label><br>
- <input type="submit" value="Login" i18n:attributes="value"><br>
- <input type="hidden" name="__came_from" tal:attributes="value string:${request/base}${request/env/PATH_INFO}">
- <span tal:replace="structure request/indexargs_form" />
- <a href="user?@template=register"
- tal:condition="python:request.user.hasPermission('Create', 'user')"
- i18n:translate="">Register</a><br>
- <a href="user?@template=forgotten" i18n:translate="">Lost&nbsp;your&nbsp;login?</a><br>
- </p>
- </form>
-
- <p class="userblock" tal:condition="python:request.user.username != 'anonymous'">
+<body>
+ <!-- Logo -->
+ <h1 id="logoheader">
+<a accesskey="1" href="." id="logolink"><img src="http://python.org/images/python-logo.gif" alt="homepage" border="0" id="logo" /></a></h1>
+<div id="searchbox">
+ <form method="get" action="issue">
+ <input type="hidden" name="@columns"
+ value="id,activity,title,creator,assignedto,status"/>
+ <input type="hidden" name="@sort" value="activity"/>
+ <input type="hidden" name="@group" value="priority"/>
+ <input id="search-text" name="@search_text" size="10"/>
+ <input type="submit" id="submit" name="submit" value="Search" i18n:attributes="value"/>
+ </form>
+</div>
+
+<div id="left-hand-navigation">
+ 
+ <!-- Main Menu NEED LEVEL TWO HEADER AND FOOTER -->
+ <div id="menu">
+ <ul class="level-one">
+ <li class=""><a href="http://python.org/about" class="" title="About The Python Language">About</a></li>
+ <li class=""><a href="http://python.org/news" class="" title="">News</a></li>
+ <li class=""><a href="http://python.org/doc" class="" title="">Documentation</a></li>
+ <li class=""><a href="http://python.org/download" class="" title="">Download</a></li>
+ <li class=""><a href="http://python.org/community" class="" title="">Community</a></li>
+ <li class=""><a href="http://python.org/psf" class="" title="Python Software Foundation">PSF</a></li>
+ <li class=""><a href="http://python.org/links" class="" title="">Links</a></li>
+ <li class=""><a href="http://python.org/dev" class="" title="Python Core Language Development">Core Development</a></li>
+ <li class="selected"><a href="." class="selected" title="Python Issue Tracker">Issue Tracker</a>
+ <ul class="level-two">
+ <li tal:condition="python:request.user.hasPermission('View', 'issue')">
+ <b i18n:translate="">Issues</b>
+ <ul class="level-three">
+ <li tal:condition="python:request.user.hasPermission('Create', 'issue')">
+ <a href="issue?@template=item" i18n:translate="">Create New</a>
+ </li>
+ <li>
+ <a href="issue?@sort=-activity&@group=priority&@filter=status,assignedto&@columns=id,activity,title,creator,status&status=1,2&assignedto=-1&@dispname=Show%20Unassigned"
+ i18n:translate="">Show Unassigned</a>
+ </li>
+ <li>
+ <a href="issue?@sort=-activity&@group=priority&@filter=status&@columns=id,activity,title,creator,assignedto,status&status=1,2&@dispname=Show%20All"
+ i18n:translate="">Show All</a>
+ </li>
+ <li>
+ <a href="issue?@template=search" i18n:translate="">Search</a>
+ </li>
+ <li>
+ <form method="post" tal:attributes="action request/base">
+ <input type="submit" class="form-small" value="Show issue:"
+ i18n:attributes="value"/>
+ <input class="form-small" size="4"
+ type="text" name="@number"/>
+ <input type="hidden" name="@type" value="issue"/>
+ <input type="hidden" name="@action" value="show"/>
+ </form>
+ </li>
+ </ul>
+ </li>
+ <li tal:condition="python:request.user.hasPermission('Edit', 'keyword')
+ or request.user.hasPermission('Create', 'keyword')">
+ <tal:block i18n:translate="">Keywords</tal:block>
+ <ul class="level-three">
+ <li tal:condition="python:request.user.hasPermission('Create', 'keyword')">
+ <a href="keyword?@template=item" i18n:translate="">Create New</a>
+ </li>
+ <li tal:condition="python:db.keyword.list() and
+ request.user.hasPermission('Edit', 'keyword')">
+ <a href="keyword?@template=item" i18n:translate="">Edit Existing</a>
+ </li>
+ </ul>
+ </li>
+ <li tal:condition="python:request.user.username=='anonymous'">
+ <form method="post" tal:attributes="action request/base">
+ <b i18n:translate="">Login</b><br/>
+ <ul class="level-three">
+ <li>
+ <input size="10" name="__login_name"/><br/>
+ <input size="10" type="password" name="__login_password"/><br/>
+ <input type="hidden" name="@action" value="Login"/>
+ <input type="checkbox" name="remember" id="remember"/>
+ <label for="remember" i18n:translate="">Remember me?</label><br/>
+ <input class="form-small" type="submit" value="Login" i18n:attributes="value"/><br/>
+ <input type="hidden" name="__came_from" tal:attributes="value string:${request/base}${request/env/PATH_INFO}"/>
+ <span tal:replace="structure request/indexargs_form" />
+ </li>
+ <li>
+ <a href="user?@template=register"
+ tal:condition="python:request.user.hasPermission('Create', 'user')"
+ i18n:translate="">Register</a>
+	</li>
+ <li><a href="user?@template=forgotten" i18n:translate="">Lost&nbsp;your&nbsp;login?</a>
+ </li>
+ </ul>
+ </form>
+ </li>
+ <li class="" 
+ tal:condition="python:request.user.username != 'anonymous'">
 <b i18n:translate="">Hello, <span i18n:name="user"
- tal:replace="request/user/username">username</span></b><br>
- <a tal:attributes="href string:issue?@sort=-activity&@group=priority&@filter=status,assignedto&@columns=id,activity,title,creator,status&status=-1,1,2,3,4,5,6,7&assignedto=${request/user/id}" i18n:translate="">Your Issues</a><br>
- <a tal:attributes="href string:user${request/user/id}"
- i18n:translate="">Your Details</a><br>
- <a tal:attributes="href python:request.indexargs_url('',
- {'@action':'logout'})" i18n:translate="">Logout</a>
- </p>
- <p class="userblock">
- <b i18n:translate="">Help</b><br>
+ tal:replace="request/user/username">username</span></b><br/>
+ <ul class="level-three">
+ <li>
+ <a tal:attributes="href string:issue?@sort=-activity&@group=priority&@filter=status,assignedto&@columns=id,activity,title,creator,status&status=1,2&assignedto=${request/user/id}" i18n:translate="">Your Issues</a>
+ </li>
+ <li>
+ <a tal:attributes="href string:user${request/user/id}"
+ i18n:translate="">Your Details</a>
+ </li>
+ <li>
+ <a tal:attributes="href python:request.indexargs_url('',
+ {'@action':'logout'})" i18n:translate="">Logout</a>
+ </li>
+ </ul>
+ </li>
+ <li class=""
+ tal:condition="python:request.user.hasPermission('View', 'query')">
+ <span i18n:translate=""><b>Your Queries</b> (<a class="nomargin" href="query?@template=edit">edit</a>)</span><br/>
+ <ul class="level-three" tal:repeat="qs request/user/queries">
+ <li><a tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name}"
+ tal:content="qs/name">link</a></li>
+ </ul>
+ </li>
+ <li class=""
+ tal:condition="python:request.user.hasPermission('View', 'user')">
+ <b i18n:translate="">Administration</b>
+ <ul class="level-three">
+ <li tal:condition="python:request.user.hasPermission('Edit', None)">
+ <a href="home?@template=classlist" i18n:translate="">Class List</a>
+ </li>
+ <li tal:condition="python:request.user.hasPermission('View', 'user')
+ or request.user.hasPermission('Edit', 'user')">
+ <a href="user" i18n:translate="">User List</a>
+ </li>
+ <li tal:condition="python:request.user.hasPermission('Create', 'user')"><a href="user?@template=item" i18n:translate="">Add User</a>
+ </li>
+ </ul>
+ </li>
+ <li class="">
+ <b i18n:translate="">Help</b><br/>
 <a href="http://roundup.sourceforge.net/doc-1.0/"
 i18n:translate="">Roundup docs</a>
- </p>
- </td>
- <td>
- <p tal:condition="options/error_message | nothing" class="error-message"
- tal:repeat="m options/error_message" tal:content="structure m" />
- <p tal:condition="options/ok_message | nothing" class="ok-message">
- <span tal:repeat="m options/ok_message"
- tal:content="structure string:$m <br/ > " />
- <a class="form-small" tal:attributes="href request/current_url"
- i18n:translate="">clear this message</a>
- </p>
- </td>
-</tr>
-<tr>
- <td class="content" metal:define-slot="content">Page content goes here</td>
-</tr>
-
-</table>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </div> <!-- menu -->
+</div> <!-- left-hand-navigation -->
+
+<div id="content-body">
+<div id="body-main">
+<div id="content">
+<div id="breadcrumb"><span metal:define-slot="body_title">body title</span></div>
+ <p tal:condition="options/error_message | nothing" class="error-message"
+ tal:repeat="m options/error_message" tal:content="structure m" />
+ <p tal:condition="options/ok_message | nothing" class="ok-message">
+ <span tal:repeat="m options/ok_message"
+ tal:content="structure string:$m <br/ > " />
+ <a class="form-small" tal:attributes="href request/current_url"
+ i18n:translate="">clear this message</a>
+ </p>
+ <tal:block metal:define-slot="content">Page content goes here</tal:block>
+</div> <!-- content-body -->
+</div> <!-- body-main -->
+</div> <!-- content -->
 
 <pre tal:condition="request/form/debug | nothing" tal:content="request">
 </pre>
@@ -161,7 +197,7 @@
 -->
 <td metal:define-macro="search_input">
 <input tal:attributes="value python:request.form.getvalue(name) or nothing;
- name name">
+ name name"/>
 </td>
 
 <td metal:define-macro="search_popup">
@@ -170,7 +206,7 @@
 string (eg. "id,title" or "id,name,description") as well as name
 -->
 <input tal:attributes="value python:request.form.getvalue(name) or nothing;
- name name">
+ name name"/>
 <span tal:replace="structure python:db.issue.classhelp(columns,
 property=name)" />
 </td>
@@ -189,7 +225,7 @@
 
 <td metal:define-macro="search_multiselect">
 <input tal:attributes="value python:request.form.getvalue(name) or nothing;
- name name">
+ name name"/>
 <span tal:replace="structure python:db[db_klass].classhelp(db_content,
 property=name, width='600')" />
 </td>
@@ -215,18 +251,17 @@
 <td metal:define-macro="column_input">
 <input type="checkbox" name="@columns"
 tal:attributes="value name;
- checked python:name in cols">
+ checked python:name in cols"/>
 </td>
 
 <td metal:define-macro="sort_input">
 <input type="radio" name="@sort"
 tal:attributes="value name;
- checked python:name == sort_on">
+ checked python:name == sort_on"/>
 </td>
 
 <td metal:define-macro="group_input">
 <input type="radio" name="@group"
 tal:attributes="value name;
- checked python:name == group_on">
+ checked python:name == group_on"/>
 </td>
-
Modified: tracker/instances/python-dev/html/style.css
==============================================================================
--- tracker/instances/python-dev/html/style.css	(original)
+++ tracker/instances/python-dev/html/style.css	Sun Nov 5 21:54:16 2006
@@ -1,3 +1,5 @@
+
+
 /* main page styles */
 body.body {
 font-family: sans-serif, Arial, Helvetica;
@@ -14,111 +16,98 @@
 text-decoration: none;
 }
 
-table.body {
- border: 0;
- padding: 0;
- border-spacing: 0;
- border-collapse: separate;
+#menu ul.level-two a.nomargin { /* Very, very, specific! :-) */
+ display: inline;
+ margin: 0px;
 }
 
-td.page-header-left {
- padding: 5px;
- border-bottom: 1px solid #444;
-}
-td.sidebar {
- padding: 1px 0 0 1px;
- white-space: nowrap;
+#menu ul.level-three li {
+ margin-left: 0px;
+ border: thin solid red;
 }
 
-/* don't display the sidebar when printing */
- at media print {
- td.page-header-left {
- display: none;
- }
- td.sidebar {
- display: none;
- }
- .index-controls {
- display: none;
- }
- #searchbox {
- display: none;
- }
-}
 
-td.page-header-top {
- padding: 5px;
- border-bottom: 1px solid #444;
-}
-#searchbox {
- float: right;
+ at media print 
+{
+ .index-controls { display: none;}
+ #searchbox { display: none;}
 }
 
+#searchbox { float: right;}
+
 div#body-title {
 float: left;
 }
 
 
-div#searchbox {
+div#searchbox 
+{
 float: right;
 padding-top: 1em;
 }
 
-div#searchbox input#search-text {
+div#searchbox input#search-text 
+{
 width: 10em;
 }
 
-form {
- margin: 0;
+#menu ul.level-two li
+{
+ background-image: none;
+ background-color: transparent;
+ display: block;
+ border: 0;
+ border-top: 1px solid #DDD;
+ padding: 0.1em;
+ margin: 0 3em 0px 1.5em;
+ color: #3C4B7B;
+ background: none;
+ width: 11em !important;
+ width /**/: 3.2em; 
+ font-family: Arial, Verdana, Geneva, "Bitstream Vera Sans", Helvetica, sans-serif;
+ text-transform: none;
 }
 
-textarea {
- font-family: monospace;
+#menu ul.level-three li
+{
+ margin: 0px;
+ padding: 0px;
 }
 
-td.sidebar p.classblock {
- padding: 2px 5px 2px 5px;
- margin: 1px;
- border: 1px solid #444;
- background-color: #eee;
+form {
+ margin: 0px;
 }
 
-td.sidebar p.userblock {
- padding: 2px 5px 2px 5px;
- margin: 1px 1px 1px 1px;
- border: 1px solid #444;
- background-color: #eef;
+textarea {
+ font-family: monospace;
 }
 
 .form-small {
- padding: 0;
+ padding: 0px;
 font-size: 75%;
 }
 
 
-td.content {
- padding: 1px 5px 1px 5px;
- vertical-align: top;
- width: 100%;
-}
-
 td.date, th.date { 
 white-space: nowrap;
 }
 
-p.ok-message {
+p.ok-message 
+{
 background-color: #22bb22;
 padding: 5px;
 color: white;
 font-weight: bold;
 }
-p.error-message {
+p.error-message 
+{
 background-color: #bb2222;
 padding: 5px;
 color: white;
 font-weight: bold;
 }
-p.error-message a[href] {
+p.error-message a[href] 
+{
 color: white;
 text-decoration: underline;
 }
@@ -138,12 +127,15 @@
 
 /* style for forms */
 table.form {
+ border: #ddd solid 1px;
 padding: 2px;
 border-spacing: 0;
- border-collapse: separate;
+ border-collapse: collapse;
+ background-color: #f5f5f5;
 }
 
 table.form th {
+ border: #ddd solid 1px;
 color: #338;
 text-align: right;
 vertical-align: top;
@@ -153,7 +145,6 @@
 
 table.form th.header {
 font-weight: bold;
- background-color: #eef;
 text-align: left;
 }
 
@@ -185,8 +176,8 @@
 
 table.list th {
 padding: 0 4px 0 4px;
- color: #404070;
- background-color: #eef;
+ color: #234764;
+ background-color: #f5f5f5;
 border: 1px solid white;
 vertical-align: top;
 empty-cells: show;
@@ -194,16 +185,17 @@
 table.list th a[href]:hover { color: #404070 }
 table.list th a[href]:link { color: #404070 }
 table.list th a[href] { color: #404070 }
-table.list th.group {
- background-color: #f4f4ff;
+table.list th.group 
+{
+ background-color: #f5f5f5;
 text-align: center;
 }
 
 table.list td {
 padding: 0 4px 0 4px;
 border: 1px solid white;
- color: #404070;
- background-color: #efefef;
+ color: #234764;
+/* background-color: #efefef;*/
 vertical-align: top;
 empty-cells: show;
 }
@@ -421,3 +413,4 @@
 font-weight: bold;
 text-align: left;
 }
+/* SHA: a055019fd4171164d8b3651575c38a33ef90511a */
Modified: tracker/instances/python-dev/html/user.forgotten.html
==============================================================================
--- tracker/instances/python-dev/html/user.forgotten.html	(original)
+++ tracker/instances/python-dev/html/user.forgotten.html	Sun Nov 5 21:54:16 2006
@@ -9,6 +9,11 @@
 <p i18n:translate="">You have two options if you have forgotten your password.
 If you know the email address you registered with, enter it below.</p>
 
+<p i18n:translate="">If your user was automatically created during
+import from the old sourceforge tracker, your e-mail address is
+&lt;Sourceforge username&gt;@users.sourceforge.net. The mail address
+associated with your account can be changed after login.</p>
+
 <form method="POST" onSubmit="return submit_once()"
 tal:attributes="action context/designator">
 <table class="form">
@@ -29,6 +34,10 @@
 
 <p i18n:translate="">Or, if you know your username, then enter it below.</p>
 
+<p i18n:translate="">If you have previously created or modified bug
+reports in the sourceforge bug tracker, you have an account here with
+the same username as your sourceforge username.</p>
+
 <table class="form">
 <tr><th i18n:translate="">Username:</th> <td><input name="username"></td> </tr>
 <tr><td></td><td><input type="submit" value="Request password reset"
@@ -41,3 +50,4 @@
 </td>
 
 </tal:block>
+<!-- SHA: 6fdb58c55fd854904ae98906d5935549a221fabf -->
Modified: tracker/instances/python-dev/html/user.index.html
==============================================================================
--- tracker/instances/python-dev/html/user.index.html	(original)
+++ tracker/instances/python-dev/html/user.index.html	Sun Nov 5 21:54:16 2006
@@ -9,7 +9,7 @@
 <span tal:condition="not:context/is_view_ok"
 i18n:translate="">You are not allowed to view this page.</span>
 
-<table width="100%" tal:condition="context/is_view_ok" class="list">
+<table width="100%" tal:define="batch request/batch" tal:condition="context/is_view_ok" class="list">
 <tr>
 <th i18n:translate="">Username</th>
 <th i18n:translate="">Real name</th>
@@ -18,7 +18,7 @@
 <th i18n:translate="">Phone number</th>
 <th tal:condition="context/is_edit_ok" i18n:translate="">Retire</th>
 </tr>
-<tal:block repeat="user context/list">
+<tal:block repeat="user batch">
 <tr tal:attributes="class python:['normal', 'alt'][repeat['user'].index%6/3]">
 <td>
 <a tal:attributes="href string:user${user/id}"
@@ -34,7 +34,37 @@
 </td>
 </tr>
 </tal:block>
+ <tr tal:condition="batch">
+ <th tal:attributes="colspan python:len(request.columns)">
+ <table width="100%">
+ <tr class="navigation">
+ <th>
+ <a tal:define="prev batch/previous" tal:condition="prev"
+ tal:attributes="href python:request.indexargs_url(request.classname,
+ {'@startwith':prev.first, '@pagesize':prev.size})"
+ i18n:translate="">&lt;&lt; previous</a>
+ &nbsp;
+ </th>
+ <th i18n:translate=""><span tal:replace="batch/start" i18n:name="start"
+ />..<span tal:replace="python: batch.start + batch.length -1" i18n:name="end"
+ /> out of <span tal:replace="batch/sequence_length" i18n:name="total"
+ /></th>
+ <th>
+ <a tal:define="next batch/next" tal:condition="next"
+ tal:attributes="href python:request.indexargs_url(request.classname,
+ {'@startwith':next.first, '@pagesize':next.size})"
+ i18n:translate="">next &gt;&gt;</a>
+ &nbsp;
+ </th>
+ </tr>
+ </table>
+ </th>
+ </tr>
+
 </table>
 </td>
 
+
+
 </tal:block>
+<!-- SHA: 3082bd8529e95365779a65d32993bc5f39abe1ca -->
Modified: tracker/instances/python-dev/initial_data.py
==============================================================================
--- tracker/instances/python-dev/initial_data.py	(original)
+++ tracker/instances/python-dev/initial_data.py	Sun Nov 5 21:54:16 2006
@@ -1,29 +1,31 @@
 #
 # TRACKER INITIAL PRIORITY AND STATUS VALUES
 #
+
 pri = db.getclass('priority')
-pri.create(name="critical", order="1")
-pri.create(name="urgent", order="2")
-pri.create(name="bug", order="3")
-pri.create(name="feature", order="4")
-pri.create(name="wish", order="5")
+pri.create(name='9', order='1')
+pri.create(name='8', order='2')
+pri.create(name='7', order='3')
+pri.create(name='6', order='4')
+pri.create(name='5', order='5')
+pri.create(name='4', order='6')
+pri.create(name='3', order='7')
+pri.create(name='2', order='8')
+pri.create(name='1', order='9')
 
 stat = db.getclass('status')
-stat.create(name="unread", order="1")
-stat.create(name="deferred", order="2")
-stat.create(name="chatting", order="3")
-stat.create(name="need-eg", order="4")
-stat.create(name="in-progress", order="5")
-stat.create(name="testing", order="6")
-stat.create(name="done-cbb", order="7")
-stat.create(name="resolved", order="8")
-
+stat.create(name='Open', order='1')
+stat.create(name='Pending', order='2')
+stat.create(name='Closed', order='3')
+stat.create(name='Deleted', order='4')
+#
 # create the two default users
 user = db.getclass('user')
 user.create(username="admin", password=adminpw,
 address=admin_email, roles='Admin')
 user.create(username="anonymous", roles='Anonymous')
 
+
 # add any additional database creation steps here - but only if you
 # haven't initialised the database with the admin "initialise" command
 
Modified: tracker/instances/python-dev/schema.py
==============================================================================
--- tracker/instances/python-dev/schema.py	(original)
+++ tracker/instances/python-dev/schema.py	Sun Nov 5 21:54:16 2006
@@ -21,6 +21,20 @@
 order=Number())
 stat.setkey("name")
 
+# Resolution
+resolution = Class(db, "resolution",
+ name=String(),
+ order=Number())
+resolution.setkey('name')
+
+# Groups
+group = Class(db, "group",
+ name=String(),
+ order=Number())
+group.setkey("name")
+ 
+ 
+
 # Keywords
 keyword = Class(db, "keyword",
 name=String())
@@ -73,7 +87,10 @@
 assignedto=Link("user"),
 topic=Multilink("keyword"),
 priority=Link("priority"),
- status=Link("status"))
+ group=Link("group"),
+ status=Link("status"),
+ resolution=Link("resolution"),
+ imported_from_sf=Boolean())
 
 #
 # TRACKER SECURITY SETTINGS
@@ -94,7 +111,7 @@
 db.security.addPermissionToRole('User', 'View', cl)
 db.security.addPermissionToRole('User', 'Edit', cl)
 db.security.addPermissionToRole('User', 'Create', cl)
-for cl in 'priority', 'status':
+for cl in 'priority', 'status', 'resolution', 'group':
 db.security.addPermissionToRole('User', 'View', cl)
 
 # May users view other user information? Comment these lines out
@@ -155,7 +172,7 @@
 
 # Allow anonymous users access to view issues (and the related, linked
 # information)
-for cl in 'issue', 'file', 'msg', 'keyword', 'priority', 'status':
+for cl in 'issue', 'file', 'msg', 'keyword', 'priority', 'status', 'resolution', 'group':
 db.security.addPermissionToRole('Anonymous', 'View', cl)
 
 # [OPTIONAL]
@@ -167,3 +184,4 @@
 
 
 # vim: set filetype=python sts=4 sw=4 et si :
+


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /