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.
Files changed (65) hide show
  1. data/.document +5 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +24 -0
  4. data/LICENSE +674 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/README.txt +143 -0
  8. data/Rakefile +55 -0
  9. data/VERSION +1 -0
  10. data/bin/ditz-str +189 -0
  11. data/bugs/issue-02615b8c3dd0382c92f350ce2158ecfe94d11ef8.yaml +22 -0
  12. data/bugs/issue-06a3bbf35a60c4da2d8ea0fdc86164263126d6b2.yaml +22 -0
  13. data/bugs/issue-0c00c1d7fdffaad304e62d79d9b3d5e92547055b.yaml +38 -0
  14. data/bugs/issue-20dad4b4533d6d76d496fe5970098f1eb8efd561.yaml +26 -0
  15. data/bugs/issue-360ae6529dbc66358fde6b532cbea79ece37a670.yaml +22 -0
  16. data/bugs/issue-5177d61bf3c2783f71ef63e6e2c5e720247ef699.yaml +18 -0
  17. data/bugs/issue-695b564c210da1965a2bb38eef782178aead6952.yaml +26 -0
  18. data/bugs/issue-7d0ce6429a9fb5fa09ce3376a8921a5ecb7ecfe5.yaml +34 -0
  19. data/bugs/issue-a04462fa22ab6e1b02cfdd052d1f6c6f491f08f5.yaml +22 -0
  20. data/bugs/issue-bca54ca5107eabc3b281701041cc36ea0641cbdd.yaml +26 -0
  21. data/bugs/issue-d0c7d04b014d705c5fd865e4d487b5e5b6983c33.yaml +26 -0
  22. data/bugs/issue-f94b879842aa0274aa74fc2833252d4a06ec65cc.yaml +22 -0
  23. data/bugs/project.yaml +18 -0
  24. data/data/ditz-str/blue-check.png +0 -0
  25. data/data/ditz-str/close.rhtml +39 -0
  26. data/data/ditz-str/component.rhtml +38 -0
  27. data/data/ditz-str/dropdown.css +11 -0
  28. data/data/ditz-str/dropdown.js +58 -0
  29. data/data/ditz-str/edit_issue.rhtml +53 -0
  30. data/data/ditz-str/green-bar.png +0 -0
  31. data/data/ditz-str/green-check.png +0 -0
  32. data/data/ditz-str/header.gif +0 -0
  33. data/data/ditz-str/header_over.gif +0 -0
  34. data/data/ditz-str/index.rhtml +148 -0
  35. data/data/ditz-str/issue.rhtml +152 -0
  36. data/data/ditz-str/issue_table.rhtml +28 -0
  37. data/data/ditz-str/new_component.rhtml +28 -0
  38. data/data/ditz-str/new_issue.rhtml +57 -0
  39. data/data/ditz-str/new_release.rhtml +29 -0
  40. data/data/ditz-str/plugins/git-sync.rb +83 -0
  41. data/data/ditz-str/plugins/git.rb +153 -0
  42. data/data/ditz-str/plugins/issue-claiming.rb +174 -0
  43. data/data/ditz-str/red-check.png +0 -0
  44. data/data/ditz-str/release.rhtml +111 -0
  45. data/data/ditz-str/style.css +236 -0
  46. data/data/ditz-str/unassigned.rhtml +37 -0
  47. data/data/ditz-str/yellow-bar.png +0 -0
  48. data/ditz-str.gemspec +121 -0
  49. data/lib/ditzstr/brick.rb +251 -0
  50. data/lib/ditzstr/file-storage.rb +54 -0
  51. data/lib/ditzstr/hook.rb +67 -0
  52. data/lib/ditzstr/html.rb +104 -0
  53. data/lib/ditzstr/lowline.rb +201 -0
  54. data/lib/ditzstr/model-objects.rb +346 -0
  55. data/lib/ditzstr/model.rb +265 -0
  56. data/lib/ditzstr/operator.rb +593 -0
  57. data/lib/ditzstr/trollop.rb +614 -0
  58. data/lib/ditzstr/util.rb +61 -0
  59. data/lib/ditzstr/view.rb +16 -0
  60. data/lib/ditzstr/views.rb +157 -0
  61. data/lib/ditzstr.rb +69 -0
  62. data/man/ditz.1 +38 -0
  63. data/test/helper.rb +18 -0
  64. data/test/test_ditz-str.rb +7 -0
  65. 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", "&laquo; #{@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", "&laquo; #{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", "&laquo; #{@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 &raquo;" %>
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", "&laquo; #{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", "&laquo; #{@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>