ditz-str 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +24 -0
- data/LICENSE +674 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/README.txt +143 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/bin/ditz-str +189 -0
- data/bugs/issue-02615b8c3dd0382c92f350ce2158ecfe94d11ef8.yaml +22 -0
- data/bugs/issue-06a3bbf35a60c4da2d8ea0fdc86164263126d6b2.yaml +22 -0
- data/bugs/issue-0c00c1d7fdffaad304e62d79d9b3d5e92547055b.yaml +38 -0
- data/bugs/issue-20dad4b4533d6d76d496fe5970098f1eb8efd561.yaml +26 -0
- data/bugs/issue-360ae6529dbc66358fde6b532cbea79ece37a670.yaml +22 -0
- data/bugs/issue-5177d61bf3c2783f71ef63e6e2c5e720247ef699.yaml +18 -0
- data/bugs/issue-695b564c210da1965a2bb38eef782178aead6952.yaml +26 -0
- data/bugs/issue-7d0ce6429a9fb5fa09ce3376a8921a5ecb7ecfe5.yaml +34 -0
- data/bugs/issue-a04462fa22ab6e1b02cfdd052d1f6c6f491f08f5.yaml +22 -0
- data/bugs/issue-bca54ca5107eabc3b281701041cc36ea0641cbdd.yaml +26 -0
- data/bugs/issue-d0c7d04b014d705c5fd865e4d487b5e5b6983c33.yaml +26 -0
- data/bugs/issue-f94b879842aa0274aa74fc2833252d4a06ec65cc.yaml +22 -0
- data/bugs/project.yaml +18 -0
- data/data/ditz-str/blue-check.png +0 -0
- data/data/ditz-str/close.rhtml +39 -0
- data/data/ditz-str/component.rhtml +38 -0
- data/data/ditz-str/dropdown.css +11 -0
- data/data/ditz-str/dropdown.js +58 -0
- data/data/ditz-str/edit_issue.rhtml +53 -0
- data/data/ditz-str/green-bar.png +0 -0
- data/data/ditz-str/green-check.png +0 -0
- data/data/ditz-str/header.gif +0 -0
- data/data/ditz-str/header_over.gif +0 -0
- data/data/ditz-str/index.rhtml +148 -0
- data/data/ditz-str/issue.rhtml +152 -0
- data/data/ditz-str/issue_table.rhtml +28 -0
- data/data/ditz-str/new_component.rhtml +28 -0
- data/data/ditz-str/new_issue.rhtml +57 -0
- data/data/ditz-str/new_release.rhtml +29 -0
- data/data/ditz-str/plugins/git-sync.rb +83 -0
- data/data/ditz-str/plugins/git.rb +153 -0
- data/data/ditz-str/plugins/issue-claiming.rb +174 -0
- data/data/ditz-str/red-check.png +0 -0
- data/data/ditz-str/release.rhtml +111 -0
- data/data/ditz-str/style.css +236 -0
- data/data/ditz-str/unassigned.rhtml +37 -0
- data/data/ditz-str/yellow-bar.png +0 -0
- data/ditz-str.gemspec +121 -0
- data/lib/ditzstr/brick.rb +251 -0
- data/lib/ditzstr/file-storage.rb +54 -0
- data/lib/ditzstr/hook.rb +67 -0
- data/lib/ditzstr/html.rb +104 -0
- data/lib/ditzstr/lowline.rb +201 -0
- data/lib/ditzstr/model-objects.rb +346 -0
- data/lib/ditzstr/model.rb +265 -0
- data/lib/ditzstr/operator.rb +593 -0
- data/lib/ditzstr/trollop.rb +614 -0
- data/lib/ditzstr/util.rb +61 -0
- data/lib/ditzstr/view.rb +16 -0
- data/lib/ditzstr/views.rb +157 -0
- data/lib/ditzstr.rb +69 -0
- data/man/ditz.1 +38 -0
- data/test/helper.rb +18 -0
- data/test/test_ditz-str.rb +7 -0
- metadata +219 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
--- !ditz.rubyforge.org,2008-03-06/issue
|
2
|
+
title: Release creation.
|
3
|
+
desc: Ability to add releases from the index page.
|
4
|
+
type: :feature
|
5
|
+
component: WEBrick interface
|
6
|
+
release: Version 0.1
|
7
|
+
reporter: Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
8
|
+
status: :closed
|
9
|
+
disposition: :fixed
|
10
|
+
creation_time: 2011-11-10 04:40:43.155443 Z
|
11
|
+
references: []
|
12
|
+
|
13
|
+
id: bca54ca5107eabc3b281701041cc36ea0641cbdd
|
14
|
+
log_events:
|
15
|
+
- - 2011-11-10 04:40:44.275294 Z
|
16
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
17
|
+
- created
|
18
|
+
- ""
|
19
|
+
- - 2011-11-10 04:55:22.108784 Z
|
20
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
21
|
+
- assigned to release Version 0.1 from unassigned
|
22
|
+
- ""
|
23
|
+
- - 2011-11-16 02:25:56.629980 Z
|
24
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
25
|
+
- closed with disposition fixed
|
26
|
+
- ""
|
@@ -0,0 +1,26 @@
|
|
1
|
+
--- !ditz.rubyforge.org,2008-03-06/issue
|
2
|
+
title: Issue creation.
|
3
|
+
desc: Should be able to create issues from the index page, component pages, and release pages.
|
4
|
+
type: :feature
|
5
|
+
component: WEBrick interface
|
6
|
+
release: Version 0.1
|
7
|
+
reporter: Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
8
|
+
status: :closed
|
9
|
+
disposition: :fixed
|
10
|
+
creation_time: 2011-11-10 04:39:22.698732 Z
|
11
|
+
references: []
|
12
|
+
|
13
|
+
id: d0c7d04b014d705c5fd865e4d487b5e5b6983c33
|
14
|
+
log_events:
|
15
|
+
- - 2011-11-10 04:40:19.788100 Z
|
16
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
17
|
+
- created
|
18
|
+
- ""
|
19
|
+
- - 2011-11-10 04:55:31.796628 Z
|
20
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
21
|
+
- assigned to release Version 0.1 from unassigned
|
22
|
+
- ""
|
23
|
+
- - 2011-11-16 02:26:37.302549 Z
|
24
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
25
|
+
- closed with disposition fixed
|
26
|
+
- ""
|
@@ -0,0 +1,22 @@
|
|
1
|
+
--- !ditz.rubyforge.org,2008-03-06/issue
|
2
|
+
title: Reference adding.
|
3
|
+
desc: Add ability to add references to issues.
|
4
|
+
type: :feature
|
5
|
+
component: WEBrick interface
|
6
|
+
release: Version 0.1
|
7
|
+
reporter: Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
8
|
+
status: :unstarted
|
9
|
+
disposition:
|
10
|
+
creation_time: 2011-11-10 04:42:44.864821 Z
|
11
|
+
references: []
|
12
|
+
|
13
|
+
id: f94b879842aa0274aa74fc2833252d4a06ec65cc
|
14
|
+
log_events:
|
15
|
+
- - 2011-11-10 04:42:46.176843 Z
|
16
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
17
|
+
- created
|
18
|
+
- ""
|
19
|
+
- - 2011-11-10 04:55:50.612038 Z
|
20
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
21
|
+
- assigned to release Version 0.1 from unassigned
|
22
|
+
- ""
|
data/bugs/project.yaml
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
--- !ditz.rubyforge.org,2008-03-06/project
|
2
|
+
name: ditz-str
|
3
|
+
version: "0.5"
|
4
|
+
components:
|
5
|
+
- !ditz.rubyforge.org,2008-03-06/component
|
6
|
+
name: ditz-str
|
7
|
+
- !ditz.rubyforge.org,2008-03-06/component
|
8
|
+
name: WEBrick interface
|
9
|
+
releases:
|
10
|
+
- !ditz.rubyforge.org,2008-03-06/release
|
11
|
+
name: Version 0.1
|
12
|
+
status: :unreleased
|
13
|
+
release_time:
|
14
|
+
log_events:
|
15
|
+
- - 2011-11-10 04:53:42.249739 Z
|
16
|
+
- Nils Sandell <nils.sandell@systemstechnologyresearch.com>
|
17
|
+
- created
|
18
|
+
- Should include basic WEBrick server functionality.
|
Binary file
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<%= "<title>#{@project.name} - New Release</title>" %>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
9
|
+
<link rel="stylesheet" href="style.css" type="text/css" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
|
14
|
+
<div class="main">
|
15
|
+
|
16
|
+
<h1>Choose issue disposition</h1>
|
17
|
+
<div class="backptr"><%= link_to "index", "« #{@project.name} project page" %></div>
|
18
|
+
|
19
|
+
<form name="close_form" method="post">
|
20
|
+
Disposition<br/><select name="disposition">
|
21
|
+
<% [['fixed','Fixed'],['wontfix','Won\'t Fix'],['reorg','Reorganized']].each do |dispos| %>
|
22
|
+
<% if disposition!=nil && disposition==dispos[0] %>
|
23
|
+
<%= "<option value=\"#{dispos[0]}\" selected=\"yes\">#{dispos[1]}</option>" %>
|
24
|
+
<% else %>
|
25
|
+
<%= "<option value=\"#{dispos[0]}\">#{dispos[1]}</option>" %>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
28
|
+
</select><br/>
|
29
|
+
Comments<br/><textarea rows=5 cols=40 name="comment"></textarea><br>
|
30
|
+
Closer<br/><%= "<input type=\"text\" size=\"80\" name=\"closer\" value=\"#{@config.user}\"/><br/>" %>
|
31
|
+
<input type="submit" value="Close"/>
|
32
|
+
<%= "<input type=\"hidden\" name=\"issue\" value=\"#{issue.id}\">" %>
|
33
|
+
</form>
|
34
|
+
|
35
|
+
</div>
|
36
|
+
<div class="footer">Generated by <a href="http://ditz.rubyforge.org/">ditz</a>.</div>
|
37
|
+
|
38
|
+
</body>
|
39
|
+
</html>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<title>Component <%= component.name %></title>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
9
|
+
<link rel="stylesheet" href="style.css" type="text/css" />
|
10
|
+
<link rel="stylesheet" href="dropdown.css" type="text/css"/>
|
11
|
+
<script type="text/javascript" src="dropdown.js">
|
12
|
+
</script>
|
13
|
+
</head>
|
14
|
+
|
15
|
+
<body>
|
16
|
+
|
17
|
+
<div class="main">
|
18
|
+
<h1><%= project.name %> component: <%= component.name %></h1>
|
19
|
+
|
20
|
+
<div class="menu">
|
21
|
+
<% if not brickargs.empty? %>
|
22
|
+
<dl class="dropdown">
|
23
|
+
<%= "<dt id=\"newissue-ddheader\" onmouseover=\"ddMenu('newissue',1)\" onmouseout=\"ddMenu('newissue',-1)\" onclick=\"location.href='/new_issue.html?component=#{component.name}'\" >New Issue</dt>" %>
|
24
|
+
</dl>
|
25
|
+
<% end %>
|
26
|
+
</div>
|
27
|
+
<br/><br/><br/>
|
28
|
+
|
29
|
+
<div class="backptr"><%= link_to "index", "« #{project.name} project page" %></div>
|
30
|
+
|
31
|
+
<h2>All issues</h2>
|
32
|
+
<%= render "issue_table", :show_component => false, :show_release => true %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="footer">Generated by <a href="http://ditz.rubyforge.org/">ditz</a>.</div>
|
36
|
+
|
37
|
+
</body>
|
38
|
+
</html>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
body {margin:25px; font:12px Verdana, Arial, Helvetica}
|
2
|
+
* {padding:0; margin:0}
|
3
|
+
.dropdown {float:left; padding-right:5px}
|
4
|
+
.dropdown dt {border:2px solid #305275; padding:8px; font-weight:bold; color:#000000; cursor:pointer; background:#f2f2f2}
|
5
|
+
.dropdown dt:hover {background:url(header_over.gif)}
|
6
|
+
.dropdown dd {position:absolute; overflow:hidden; display:none; background:#fff; z-index:200; opacity:0}
|
7
|
+
.dropdown ul {border:2px solid #305275; list-style:none; border-top:none;}
|
8
|
+
.dropdown li {display:inline}
|
9
|
+
.dropdown a, .dropdown a:active, .dropdown a:visited {display:block; padding:5px; color:#FFFFFF; text-decoration:none; background:#305275; }
|
10
|
+
.dropdown a:hover {background:#305275; color:#000}
|
11
|
+
.dropdown .underline {border-bottom:1px solid #305275}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
var DDSPEED = 10;
|
2
|
+
var DDTIMER = 15;
|
3
|
+
|
4
|
+
// main function to handle the mouse events //
|
5
|
+
function ddMenu(id,d){
|
6
|
+
var h = document.getElementById(id + '-ddheader');
|
7
|
+
var c = document.getElementById(id + '-ddcontent');
|
8
|
+
clearInterval(c.timer);
|
9
|
+
if(d == 1){
|
10
|
+
clearTimeout(h.timer);
|
11
|
+
if(c.maxh && c.maxh <= c.offsetHeight){return}
|
12
|
+
else if(!c.maxh){
|
13
|
+
c.style.display = 'block';
|
14
|
+
c.style.height = 'auto';
|
15
|
+
c.maxh = c.offsetHeight;
|
16
|
+
c.style.height = '0px';
|
17
|
+
}
|
18
|
+
c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER);
|
19
|
+
}else{
|
20
|
+
h.timer = setTimeout(function(){ddCollapse(c)},50);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
// collapse the menu //
|
25
|
+
function ddCollapse(c){
|
26
|
+
c.timer = setInterval(function(){ddSlide(c,-1)},DDTIMER);
|
27
|
+
}
|
28
|
+
|
29
|
+
// cancel the collapse if a user rolls over the dropdown //
|
30
|
+
function cancelHide(id){
|
31
|
+
var h = document.getElementById(id + '-ddheader');
|
32
|
+
var c = document.getElementById(id + '-ddcontent');
|
33
|
+
clearTimeout(h.timer);
|
34
|
+
clearInterval(c.timer);
|
35
|
+
if(c.offsetHeight < c.maxh){
|
36
|
+
c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
// incrementally expand/contract the dropdown and change the opacity //
|
41
|
+
function ddSlide(c,d){
|
42
|
+
var currh = c.offsetHeight;
|
43
|
+
var dist;
|
44
|
+
if(d == 1){
|
45
|
+
dist = (Math.round((c.maxh - currh) / DDSPEED));
|
46
|
+
}else{
|
47
|
+
dist = (Math.round(currh / DDSPEED));
|
48
|
+
}
|
49
|
+
if(dist <= 1 && d == 1){
|
50
|
+
dist = 1;
|
51
|
+
}
|
52
|
+
c.style.height = currh + (dist * d) + 'px';
|
53
|
+
c.style.opacity = currh / c.maxh;
|
54
|
+
c.style.filter = 'alpha(opacity=' + (currh * 100 / c.maxh) + ')';
|
55
|
+
if((currh < 2 && d != 1) || (currh > (c.maxh - 2) && d == 1)){
|
56
|
+
clearInterval(c.timer);
|
57
|
+
}
|
58
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<title>Edit Issue <%= issue.title %></title>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
9
|
+
<link rel="stylesheet" href="style.css" type="text/css" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
|
14
|
+
<div class="main">
|
15
|
+
|
16
|
+
<h1>Edit Issue</h1>
|
17
|
+
<div class="backptr"><%= link_to "index", "« #{@project.name} project page" %></div>
|
18
|
+
<form name="new_issue_form" method="post">
|
19
|
+
<%= "Title<br/><input type=\"text\" name=\"title\" size=\"80\" value=\"#{issue.title}\"/><br/>" %>
|
20
|
+
<%= "Description<br/><textarea cols=\"80\" rows=\"10\" name=\"description\" value=\"#{issue.description}\"/></textarea><br/>" %>
|
21
|
+
Type<br/><select name="type" disabled="disabled">
|
22
|
+
<%= "<option selected=\"true\">#{issue.type}</option>" %>
|
23
|
+
</select><br/>
|
24
|
+
Component<br/>
|
25
|
+
<select name="component">
|
26
|
+
<% @project.components.each do |c| %>
|
27
|
+
<% if c.name==issue.component.name %>
|
28
|
+
<%= "<option selected=\"true\">#{c.name}</option>" %>
|
29
|
+
<% else %>
|
30
|
+
<%= "<option>#{c.name}</option>" %>
|
31
|
+
<% end %>
|
32
|
+
<% end %></select><br/>
|
33
|
+
|
34
|
+
Release<br/>
|
35
|
+
<select name="release" disabled="disabled">
|
36
|
+
<% upcoming_rels.each do |r| %>
|
37
|
+
<% if r.name==issue.release.name %>
|
38
|
+
<%= "<option selected=\"true\">#{r.name}</option>" %>
|
39
|
+
<% else %>
|
40
|
+
<%= "<option>#{r.name}</option>" %>
|
41
|
+
<% end %>
|
42
|
+
<% end %></select><br/>
|
43
|
+
|
44
|
+
Creator<br/>
|
45
|
+
<%= "<input type=\"text\" size=\"80\" disabled=\"disabled\" value=\"#{issue.reporter}\"/><br/>" %>
|
46
|
+
<input type="submit" value="Save Issue"/>
|
47
|
+
</form>
|
48
|
+
|
49
|
+
</div>
|
50
|
+
<div class="footer">Generated by <a href="http://ditz.rubyforge.org/">ditz</a>.</div>
|
51
|
+
|
52
|
+
</body>
|
53
|
+
</html>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,148 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<title><%= project.name %> Issue Tracker</title>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
9
|
+
<link rel="stylesheet" href="style.css" type="text/css" />
|
10
|
+
<link rel="stylesheet" href="dropdown.css" type="text/css"/>
|
11
|
+
<script type="text/javascript" src="dropdown.js">
|
12
|
+
</script>
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
|
16
|
+
<div class="main">
|
17
|
+
<h1><%= project.name %> Issue Tracker</h1>
|
18
|
+
|
19
|
+
<% if not brickargs.empty? %>
|
20
|
+
<div class="menu">
|
21
|
+
<dl class="dropdown">
|
22
|
+
<dt id="newissue-ddheader" onmouseover="ddMenu('newissue',1)" onmouseout="ddMenu('newissue',-1)" onclick="location.href='/new_issue.html'" >New Issue</dt>
|
23
|
+
</dl>
|
24
|
+
<dl class="dropdown">
|
25
|
+
<dt id="newrelease-ddheader" onmouseover="ddMenu('newrelease',1)" onmouseout="ddMenu('newrelease',-1)" onclick="location.href='/new_release.html'">New Release</dt>
|
26
|
+
</dl>
|
27
|
+
<dl class="dropdown">
|
28
|
+
<dt id="newcomponent-ddheader" onmouseover="ddMenu('newcomponent',1)" onmouseout="ddMenu('newcomponent',-1)" onclick="location.href='/new_component.html'">New Component</dt>
|
29
|
+
</dl>
|
30
|
+
</div>
|
31
|
+
<br/><br/><br/>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<h2>Upcoming Releases</h2>
|
35
|
+
<% if upcoming_releases.empty? %>
|
36
|
+
<p>No upcoming releases.</p>
|
37
|
+
<% else %>
|
38
|
+
<table>
|
39
|
+
<tbody>
|
40
|
+
<% upcoming_releases.each do |r| %>
|
41
|
+
<%
|
42
|
+
issues = project.issues_for_release r
|
43
|
+
num_done = issues.count_of { |i| i.closed? }
|
44
|
+
pct_done = issues.size == 0 ? 1.0 : (num_done.to_f / issues.size.to_f)
|
45
|
+
open_issues = issues.select { |i| i.open? }
|
46
|
+
%>
|
47
|
+
<tr><td>
|
48
|
+
<%= link_to r, "#{r.name}" %>
|
49
|
+
</td>
|
50
|
+
<td>
|
51
|
+
<% if issues.empty? %>
|
52
|
+
no issues
|
53
|
+
<% elsif open_issues.empty? %>
|
54
|
+
ready for release!
|
55
|
+
<% else %>
|
56
|
+
<%= progress_meter pct_done %>
|
57
|
+
<%= sprintf "%.0f%%", pct_done * 100.0 %> complete
|
58
|
+
</td>
|
59
|
+
</tr><tr><td></td><td>
|
60
|
+
<%= num_done %> / <%= issues.size %> issues.
|
61
|
+
<%= link_to r, "See issues »" %>
|
62
|
+
<% end %>
|
63
|
+
</td>
|
64
|
+
</tr>
|
65
|
+
<% end %>
|
66
|
+
</tbody>
|
67
|
+
</table>
|
68
|
+
<% end %>
|
69
|
+
|
70
|
+
<h2>Past Releases</h2>
|
71
|
+
<% if past_releases.empty? %>
|
72
|
+
<p>No past releases.</p>
|
73
|
+
<% else %>
|
74
|
+
<table>
|
75
|
+
<tbody>
|
76
|
+
<% past_releases.sort_by { |r| r.release_time }.reverse.each do |r| %>
|
77
|
+
<tr><td><%= link_to r, r.name %></td><td class="littledate">on <%= r.release_time.pretty_date %></td></tr>
|
78
|
+
<% end %>
|
79
|
+
</tbody>
|
80
|
+
</table>
|
81
|
+
<% end %>
|
82
|
+
|
83
|
+
<h2>Unassigned issues</h2>
|
84
|
+
<%
|
85
|
+
issues = project.unassigned_issues
|
86
|
+
open_issues = issues.select { |i| i.open? }
|
87
|
+
%>
|
88
|
+
<p>
|
89
|
+
<% if issues.empty? %>
|
90
|
+
No unassigned issues.
|
91
|
+
<% else %>
|
92
|
+
<%= link_to "unassigned", "unassigned issue".pluralize(issues.size).capitalize %> (<%= open_issues.size.to_pretty_s %> open).
|
93
|
+
<% end %>
|
94
|
+
</p>
|
95
|
+
|
96
|
+
<% if components.size > 1 %>
|
97
|
+
<h2>Open Issues by component</h2>
|
98
|
+
<table>
|
99
|
+
<tbody>
|
100
|
+
<% components.each do |c| %>
|
101
|
+
<%
|
102
|
+
issues = project.issues_for_component c
|
103
|
+
num_done = issues.count_of { |i| i.closed? }
|
104
|
+
pct_done = issues.size == 0 ? 1.0 : (num_done.to_f / issues.size.to_f)
|
105
|
+
open_issues = issues.select { |i| i.open? }
|
106
|
+
%>
|
107
|
+
<% if open_issues.empty? %>
|
108
|
+
<tr class="dimmed">
|
109
|
+
<% else %>
|
110
|
+
<tr>
|
111
|
+
<% end %>
|
112
|
+
<td>
|
113
|
+
<%= link_to c, c.name %>
|
114
|
+
</td><td>
|
115
|
+
<%= "open issue".pluralize(open_issues.size) %>
|
116
|
+
</td></tr>
|
117
|
+
<% end %>
|
118
|
+
</tbody>
|
119
|
+
</table>
|
120
|
+
<% end %>
|
121
|
+
|
122
|
+
<h2>Recent activity</h2>
|
123
|
+
|
124
|
+
<table class="log">
|
125
|
+
<tbody>
|
126
|
+
<% project.issues.map { |i| i.log_events.map { |e| [e, i] } }.
|
127
|
+
flatten_one_level.
|
128
|
+
sort_by { |e| e.first.first }.
|
129
|
+
reverse[0 ... 10].
|
130
|
+
each_with_index do |((date, who, what, comment), i), idx| %>
|
131
|
+
<tr class="<%= idx % 2 == 0 ? "even-row" : "odd-row" %>">
|
132
|
+
<td class="date"><%= date.pretty_date %></td>
|
133
|
+
<td class="issuename">
|
134
|
+
<%= issue_link_for i, :status_image => true %>
|
135
|
+
</td>
|
136
|
+
<td> <%= what %> </td>
|
137
|
+
</tr>
|
138
|
+
<tr><td></td></tr>
|
139
|
+
<% end %>
|
140
|
+
</tbody>
|
141
|
+
</table>
|
142
|
+
|
143
|
+
</div>
|
144
|
+
|
145
|
+
<div class="footer">Generated by <a href="http://ditz.rubyforge.org/">ditz</a>.</div>
|
146
|
+
|
147
|
+
</body>
|
148
|
+
</html>
|
@@ -0,0 +1,152 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<title><%= issue.title %></title>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
9
|
+
<link rel="stylesheet" href="style.css" type="text/css"/>
|
10
|
+
<link rel="stylesheet" href="dropdown.css" type="text/css"/>
|
11
|
+
<script type="text/javascript" src="dropdown.js">
|
12
|
+
</script>
|
13
|
+
</head>
|
14
|
+
|
15
|
+
<body>
|
16
|
+
|
17
|
+
<div class="main">
|
18
|
+
<h1><%= link_issue_names project, issue.title %></h1>
|
19
|
+
|
20
|
+
<div class="menu">
|
21
|
+
<% if not brickargs.empty? and not issue.closed? %>
|
22
|
+
<dl class="dropdown">
|
23
|
+
<dt id="close-ddheader" onmouseover="ddMenu('close',1)" onmouseout="ddMenu('close',-1)">Close Issue</dt>
|
24
|
+
<dd id="close-ddcontent" onmouseover="cancelHide('close')" onmouseout="ddMenu('close',-1)">
|
25
|
+
<ul>
|
26
|
+
<li><%= "<a class=\"underline\" href=\"close.html?issue=#{issue.id}&disposition=fix\">Fixed</a>" %></li>
|
27
|
+
<li><%= "<a class=\"underline\" href=\"close.html?issue=#{issue.id}&disposition=wontfix\">Won't fix</a>" %></li>
|
28
|
+
<li><%= "<a class=\"underline\" href=\"close.html?issue=#{issue.id}&disposition=reorg\">Reorganized</a>" %></li>
|
29
|
+
</ul>
|
30
|
+
</dd>
|
31
|
+
</dl><dl class="dropdown">
|
32
|
+
<dt id="edit-ddheader" onmouseover="ddMenu('edit',1)" onmouseout="ddMenu('edit',-1)" onclick="alert('wee')" >Edit Issue</dt>
|
33
|
+
</dl>
|
34
|
+
<% end %>
|
35
|
+
</div>
|
36
|
+
<br/><br/><br/>
|
37
|
+
|
38
|
+
<div class="backptr"><%= link_to "index", "« #{project.name} project page" %></div>
|
39
|
+
|
40
|
+
|
41
|
+
<% if issue.desc && !issue.desc.empty? %>
|
42
|
+
<div class="description">
|
43
|
+
<%= link_issue_names project, p(issue.desc) %>
|
44
|
+
</tr></table>
|
45
|
+
</div>
|
46
|
+
<% end %>
|
47
|
+
|
48
|
+
<h2>Details</h2>
|
49
|
+
<table>
|
50
|
+
<tbody>
|
51
|
+
<tr>
|
52
|
+
<td class="attrname">Id:</td>
|
53
|
+
<td class="attrval"><span class="id"><%= issue.id %></span></td>
|
54
|
+
</tr>
|
55
|
+
|
56
|
+
<tr>
|
57
|
+
<td class="attrname">Type:</td>
|
58
|
+
<td class="attrval"><%= issue.type %></td>
|
59
|
+
</tr>
|
60
|
+
|
61
|
+
<tr>
|
62
|
+
<td class="attrname">Creation time:</td>
|
63
|
+
<td class="attrval"><%=t issue.creation_time %></td>
|
64
|
+
</tr>
|
65
|
+
|
66
|
+
<tr>
|
67
|
+
<td class="attrname">Creator:</td>
|
68
|
+
<td class="attrval"><span class="person"><%=obscured_email issue.reporter %></span></td>
|
69
|
+
</tr>
|
70
|
+
|
71
|
+
<% unless issue.references.empty? %>
|
72
|
+
<tr>
|
73
|
+
<td class="attrname">References:</td>
|
74
|
+
<td class="attrval">
|
75
|
+
<% issue.references.each_with_index do |r, i| %>
|
76
|
+
[<%= i + 1 %>] <%= link_to r, r %><br/>
|
77
|
+
<% end %>
|
78
|
+
</td>
|
79
|
+
</tr>
|
80
|
+
|
81
|
+
<% end %>
|
82
|
+
|
83
|
+
<tr>
|
84
|
+
<td class="attrname">Release:</td>
|
85
|
+
<td class="attrval">
|
86
|
+
<% if release %>
|
87
|
+
<%= link_to release, release.name %>
|
88
|
+
<% if release.released? %>
|
89
|
+
(released <%= release.release_time.pretty_date %>)
|
90
|
+
<% else %>
|
91
|
+
(unreleased)
|
92
|
+
<% end %>
|
93
|
+
<% else %>
|
94
|
+
<%= link_to "unassigned", "unassigned" %>
|
95
|
+
<% end %>
|
96
|
+
</td>
|
97
|
+
</tr>
|
98
|
+
|
99
|
+
<tr>
|
100
|
+
<td class="attrname">Component:</td>
|
101
|
+
<td class="attrval"><%= link_to component, component.name %></td>
|
102
|
+
</tr>
|
103
|
+
|
104
|
+
<tr>
|
105
|
+
<td class="attrname">Status:</td>
|
106
|
+
<td class="attrval">
|
107
|
+
<%= issue.status_string %><% if issue.closed? %>: <%= issue.disposition_string %><% end %>
|
108
|
+
<%= issue_status_img_for issue, :class => "inline-status-image" %>
|
109
|
+
</td>
|
110
|
+
</tr>
|
111
|
+
|
112
|
+
<%= extra_summary_html %>
|
113
|
+
</tbody>
|
114
|
+
</table>
|
115
|
+
|
116
|
+
<%= extra_details_html %>
|
117
|
+
|
118
|
+
<% if not brickargs.empty? %>
|
119
|
+
<h2>Add Comment</h2>
|
120
|
+
<form name="comment_form" method="post">
|
121
|
+
<textarea rows=5 cols=40 name="comment"></textarea><br>
|
122
|
+
<input type="submit" name="Add Comment"/>
|
123
|
+
<input type="hidden" name="action" value="comment"/>
|
124
|
+
</form>
|
125
|
+
<% end %>
|
126
|
+
|
127
|
+
<h2>Issue log</h2>
|
128
|
+
|
129
|
+
<table class="log">
|
130
|
+
<tbody>
|
131
|
+
<% issue.log_events.reverse.each_with_index do |(time, who, what, comment), i| %>
|
132
|
+
<tr class="<%= i % 2 == 0 ? "even-row" : "odd-row" %>">
|
133
|
+
<td class="date"><%=t time %></td>
|
134
|
+
<td class="person"><%=obscured_email who %></td>
|
135
|
+
<td class="message"><%=h what %></td>
|
136
|
+
</tr>
|
137
|
+
<% unless comment.empty? %>
|
138
|
+
<tr><td colspan="3" class="logcomment">
|
139
|
+
<%= link_issue_names project, comment %>
|
140
|
+
</td></tr>
|
141
|
+
<% end %>
|
142
|
+
<tr><td></td></tr>
|
143
|
+
<% end %>
|
144
|
+
</tbody>
|
145
|
+
</table>
|
146
|
+
|
147
|
+
</div>
|
148
|
+
|
149
|
+
<div class="footer">Generated by <a href="http://ditz.rubyforge.org/">ditz</a>.</div>
|
150
|
+
|
151
|
+
</body>
|
152
|
+
</html>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<table>
|
2
|
+
<tbody>
|
3
|
+
<% issues.sort_by { |i| i.creation_time }.reverse.each do |i| %>
|
4
|
+
<tr>
|
5
|
+
<td> <%= issue_status_img_for i %> </td>
|
6
|
+
<td class="littledate"><%= i.creation_time.pretty_date %></td>
|
7
|
+
<td class="issuename">
|
8
|
+
<%= issue_link_for i %>
|
9
|
+
</td>
|
10
|
+
<% if show_release %>
|
11
|
+
<td class="issuerelease">
|
12
|
+
<% if i.release %>
|
13
|
+
<% r = project.release_for i.release %>
|
14
|
+
<%= link_to r, i.release %>
|
15
|
+
<% else %>
|
16
|
+
<% end %>
|
17
|
+
</td>
|
18
|
+
<% end %>
|
19
|
+
<% if show_component %>
|
20
|
+
<td class="issuecomponent">
|
21
|
+
component <%= link_to project.component_for(i.component), i.component %>
|
22
|
+
</td>
|
23
|
+
<% end %>
|
24
|
+
</tr>
|
25
|
+
<% end %>
|
26
|
+
</tbody>
|
27
|
+
</table>
|
28
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
|
5
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
6
|
+
<head>
|
7
|
+
<%= "<title>#{@project.name} - New Component</title>" %>
|
8
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
9
|
+
<link rel="stylesheet" href="style.css" type="text/css" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
|
14
|
+
<div class="main">
|
15
|
+
|
16
|
+
<h1>New Component</h1>
|
17
|
+
<div class="backptr"><%= link_to "index", "« #{@project.name} project page" %></div>
|
18
|
+
|
19
|
+
<form name="new_issue_form" method="post">
|
20
|
+
Name<br/><input type="text" name="name" size="80"/><br/>
|
21
|
+
<input type="submit" value="Add Component"/>
|
22
|
+
</form>
|
23
|
+
|
24
|
+
</div>
|
25
|
+
<div class="footer">Generated by <a href="http://ditz.rubyforge.org/">ditz</a>.</div>
|
26
|
+
|
27
|
+
</body>
|
28
|
+
</html>
|