backlog 0.7.6 → 0.7.7
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/Rakefile +1 -0
- data/app/controllers/application.rb +6 -2
- data/app/controllers/user_controller.rb +14 -6
- data/app/views/layouts/_left_top.rhtml +5 -5
- data/app/views/layouts/mwrt002.rhtml +4 -1
- data/app/views/user/login.rhtml +6 -3
- data/app/views/user/signup.rhtml +3 -2
- data/app/views/works/weekly_work_sheet.rhtml +2 -1
- data/lang/en.yaml +7 -5
- data/lang/no.yaml +2 -0
- metadata +5 -4
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 0.7.7 2007-08-24
|
2
|
+
|
3
|
+
* Added link to backlog from work record in weekly work sheet
|
4
|
+
* Added ImageMagick and PostgreSQL as requireements in the GEM
|
5
|
+
* Removed shortcuts from login and signup views.
|
6
|
+
* Removed link to backlog list of not logged in.
|
7
|
+
* Localized some user messages.
|
8
|
+
* Focus on login field in login view.
|
9
|
+
* Changed "period" to "sprint" to follow the Scrum vocabulary. Thinking of option to change this by installation/project.
|
10
|
+
|
1
11
|
== 0.7.6 2007-08-22
|
2
12
|
|
3
13
|
* Changed Task edit view to use Ajax to update the Period link to make it more sponsive when moving a task between periods.
|
data/Rakefile
CHANGED
@@ -25,6 +25,7 @@ Hoe.new("backlog", APP::VERSION) do |p|
|
|
25
25
|
:files => Dir['**/*'].reject{|file_name| file_name =~ /^(log|pkg|tmp)/},
|
26
26
|
:rdoc_options => ['--inline-source'],
|
27
27
|
:executables => ['backlog'],
|
28
|
+
:requirements => ['ImageMagick', 'PostgreSQL']
|
28
29
|
}
|
29
30
|
p.need_zip = true
|
30
31
|
p.url = 'http://rubyforge.org/projects/backlog/'
|
@@ -16,6 +16,11 @@ class ApplicationController < ActionController::Base
|
|
16
16
|
before_filter :authenticate_user
|
17
17
|
before_filter :populate_layout
|
18
18
|
|
19
|
+
def initialize
|
20
|
+
@application_title = l :backlog
|
21
|
+
@application_description = l :backlog_description
|
22
|
+
end
|
23
|
+
|
19
24
|
def self.in_place_edit_for(object, attribute, options = {})
|
20
25
|
define_method("set_#{object}_#{attribute}") do
|
21
26
|
@item = object.to_s.camelize.constantize.find(params[:id])
|
@@ -106,8 +111,6 @@ class ApplicationController < ActionController::Base
|
|
106
111
|
private :pop_detour
|
107
112
|
|
108
113
|
def populate_shortcuts
|
109
|
-
@application_title = l :backlog
|
110
|
-
@application_description = l :backlog_description
|
111
114
|
@shortcuts = [
|
112
115
|
{:key => 'Alt-N', :function => :new_task, :options => {:controller => 'tasks', :action => 'new', :period_id => (@period ? @period.id : (@backlog && @backlog.periods.first ? @backlog.periods.first.id : nil))}},
|
113
116
|
{:key => 'Alt-Shift-N', :function => :new_period, :options => {:controller => 'periods', :action => 'new'}},
|
@@ -124,6 +127,7 @@ class ApplicationController < ActionController::Base
|
|
124
127
|
|
125
128
|
def populate_layout
|
126
129
|
return true if request.path_parameters[:action] =~ /_no_layout$/
|
130
|
+
|
127
131
|
populate_shortcuts
|
128
132
|
|
129
133
|
# TODO (uwe): This does not scale!
|
@@ -37,7 +37,7 @@ class UserController < ApplicationController
|
|
37
37
|
redirect_to :action => 'login'
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
rescue Exception => ex
|
41
41
|
report_exception ex
|
42
42
|
flash['message'] = 'Error creating account: confirmation email not sent'
|
43
43
|
end
|
@@ -56,14 +56,14 @@ class UserController < ApplicationController
|
|
56
56
|
begin
|
57
57
|
@user.change_password(params['user']['password'], params['user']['password_confirmation'])
|
58
58
|
@user.save!
|
59
|
-
|
59
|
+
rescue Exception => ex
|
60
60
|
report_exception ex
|
61
61
|
flash.now['message'] = 'Your password could not be changed at this time. Please retry.'
|
62
62
|
render and return
|
63
63
|
end
|
64
64
|
begin
|
65
65
|
UserNotify.deliver_change_password(@user, params['user']['password'])
|
66
|
-
|
66
|
+
rescue Exception => ex
|
67
67
|
report_exception ex
|
68
68
|
end
|
69
69
|
|
@@ -96,7 +96,7 @@ class UserController < ApplicationController
|
|
96
96
|
end
|
97
97
|
redirect_back_or_default :action => 'welcome'
|
98
98
|
end
|
99
|
-
|
99
|
+
rescue Exception => ex
|
100
100
|
report_exception ex
|
101
101
|
flash.now['message'] = "Your password could not be emailed to #{CGI.escapeHTML(params['user']['email'])}"
|
102
102
|
end
|
@@ -121,7 +121,7 @@ class UserController < ApplicationController
|
|
121
121
|
else
|
122
122
|
raise "unknown edit action"
|
123
123
|
end
|
124
|
-
|
124
|
+
rescue Exception => ex
|
125
125
|
logger.warn ex
|
126
126
|
logger.warn ex.backtrace
|
127
127
|
end
|
@@ -133,7 +133,7 @@ class UserController < ApplicationController
|
|
133
133
|
begin
|
134
134
|
@user.update_attribute( :deleted, true )
|
135
135
|
logout
|
136
|
-
|
136
|
+
rescue Exception => ex
|
137
137
|
flash.now['message'] = "Error: #{@ex}."
|
138
138
|
redirect_back_or_default :action => 'welcome'
|
139
139
|
end
|
@@ -181,4 +181,12 @@ class UserController < ApplicationController
|
|
181
181
|
logger.warn ex.backtrace.join("\n")
|
182
182
|
end
|
183
183
|
|
184
|
+
private
|
185
|
+
|
186
|
+
def populate_layout
|
187
|
+
@sidebars = [
|
188
|
+
{ :id => 1, :title => "Welcome to Backlog", :content => '<p>Welcome to Backlog, a project support application targeted at collecting, planning, and completing tasks.</p><p>Backlog also offers history tracking and a graphical presentation of burn down charts.</p>' }
|
189
|
+
]
|
190
|
+
end
|
191
|
+
|
184
192
|
end
|
@@ -2,13 +2,13 @@
|
|
2
2
|
<span style="float: left"><%=l :backlog%> <%=APP::VERSION%></span>
|
3
3
|
<%= flash[:notice] + ' |' if flash[:notice] %>
|
4
4
|
<%= link_to l(:home), '/' %>
|
5
|
-
|
5
|
+
|
6
6
|
<% if user? %>
|
7
|
-
|
7
|
+
| <%= link_to l(:backlogs), :controller => 'backlogs', :action => :list %>
|
8
|
+
| <%= link_to l(:log_out), :controller => 'user', :action => :logout %>
|
8
9
|
<% else %>
|
9
|
-
|
10
|
+
| <%= detour_to l(:log_in), :controller => 'user', :action => :login %>
|
10
11
|
<% end %>
|
11
|
-
| <%= link_to l(:backlogs), :controller => 'backlogs', :action => :list %>
|
12
12
|
<!-- | <%= link_to l(:administration), :controller => 'administration', :action => :index %> -->
|
13
13
|
<% if user? %>| <%=link_to user.email, :controller => 'user', :action => :edit%><% end %>
|
14
14
|
</div>
|
@@ -17,6 +17,6 @@
|
|
17
17
|
|
18
18
|
<div id="introtext">
|
19
19
|
<h1><%=@application_title%></h1>
|
20
|
-
<h3><%=@page_title
|
20
|
+
<h3><%=@page_title || @application_description%></h3>
|
21
21
|
</div>
|
22
22
|
</div>
|
@@ -43,7 +43,8 @@ function handlePageEvent(event) {
|
|
43
43
|
</table>
|
44
44
|
</div>
|
45
45
|
<% end %>
|
46
|
-
|
46
|
+
|
47
|
+
<% if @sidebars %>
|
47
48
|
<% @sidebars.each do |sidebar| %>
|
48
49
|
<div class="rblock" id="sidebar_<%=sidebar[:id]%>">
|
49
50
|
<div class="btitle">
|
@@ -56,6 +57,8 @@ function handlePageEvent(event) {
|
|
56
57
|
<%= sidebar[:content] %>
|
57
58
|
</div>
|
58
59
|
<% end %>
|
60
|
+
<% end %>
|
61
|
+
|
59
62
|
</div>
|
60
63
|
<div id="footer">
|
61
64
|
<div id="footertext">Copyright © 2006 Kubosch Consulting | All Rights Reserved<br />Design By <a href="http://mywebresource.com" title="Design By MyWebResource">MyWebResource</a> | <a href="http://validator.w3.org/check?uri=referer" title="W3C XHTML 1.0 Strict Compliant">W3C XHTML 1.0</a> | <a href="http://jigsaw.w3.org/css-validator/" title="W3C CSS 2.0 Compliant">W3C CSS 2.0</a></div>
|
data/app/views/user/login.rhtml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<% @page_title =
|
1
|
+
<% @page_title = l(:please_login) %>
|
2
2
|
|
3
3
|
<div title="<%= title_helper %>" class="form">
|
4
4
|
<%= head_helper ' ' %>
|
@@ -21,10 +21,13 @@
|
|
21
21
|
</table>
|
22
22
|
|
23
23
|
<div class="button-bar">
|
24
|
-
<%= submit_tag
|
24
|
+
<%= submit_tag l(:log_in) %>
|
25
25
|
<%= link_to 'Register for an account', :action => 'signup' %> |
|
26
26
|
<%= link_to 'Forgot my password', :action => 'forgot_password' %> </div>
|
27
27
|
</form>
|
28
28
|
</div>
|
29
29
|
</div>
|
30
|
-
|
30
|
+
|
31
|
+
<script type="text/JavaScript">
|
32
|
+
document.getElementById('user_login').select();
|
33
|
+
</script>
|
data/app/views/user/signup.rhtml
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
+
<% @page_title = l(:signup) %>
|
2
|
+
|
1
3
|
<div title="<%= title_helper %>" class="form">
|
2
|
-
<%= head_helper 'Sign Up', :error => true %>
|
3
4
|
|
4
5
|
<div class="form-padding">
|
5
6
|
<%= start_form_tag_helper %>
|
@@ -7,7 +8,7 @@
|
|
7
8
|
<%= render_partial 'password', :submit => false %>
|
8
9
|
|
9
10
|
<div class="button-bar">
|
10
|
-
<%= submit_tag
|
11
|
+
<%= submit_tag l(:signup) %>
|
11
12
|
</div>
|
12
13
|
</form>
|
13
14
|
</div>
|
@@ -55,7 +55,8 @@ end %>]
|
|
55
55
|
<% day_totals[day] += @work.hours %>
|
56
56
|
<% week_total += @work.hours %>
|
57
57
|
<td>
|
58
|
-
<%=link_to(h(@work.task.period.
|
58
|
+
<%=link_to(h(@work.task.period.name), :controller => 'periods', :action => :show, :id => @work.task.period) %>
|
59
|
+
<%=link_to(h(@work.task.backlog.name), :controller => 'backlogs', :action => :show, :id => @work.task.backlog) %>
|
59
60
|
<%=link_to(h(@work.task.description), :controller => 'periods', :action => :show, :id => @work.task.period, :task_id => @work.task.id) %>
|
60
61
|
</td>
|
61
62
|
<td id="invoice_<%=@work.id%>">
|
data/lang/en.yaml
CHANGED
@@ -45,19 +45,20 @@ main_backlog: Main Backlog
|
|
45
45
|
members: Members
|
46
46
|
monday: Monday
|
47
47
|
move_to_bottom: Move task to bottom of list
|
48
|
-
move_to_next_period: Move task to next
|
48
|
+
move_to_next_period: Move task to next sprint
|
49
49
|
move_to_top: Move task to top of list
|
50
50
|
name: Name
|
51
51
|
new_backlog: Start new backlog
|
52
52
|
new_group: Start new group
|
53
|
-
new_period: Add new
|
53
|
+
new_period: Add new sprint
|
54
54
|
new_task: Add new task
|
55
55
|
new_work: Add new work record
|
56
56
|
next: Next
|
57
|
-
no_pending_tasks: There are no pending tasks in this
|
57
|
+
no_pending_tasks: There are no pending tasks in this sprint.
|
58
58
|
password: Password
|
59
|
-
period:
|
60
|
-
periods:
|
59
|
+
period: Sprint
|
60
|
+
periods: Sprints
|
61
|
+
please_login: Please login
|
61
62
|
position: Position
|
62
63
|
postponed: Postponed
|
63
64
|
previous: Previous
|
@@ -70,6 +71,7 @@ saturday: Saturday
|
|
70
71
|
save: Save
|
71
72
|
select: Select
|
72
73
|
shortcuts: Shortcuts
|
74
|
+
signup: Sign Up
|
73
75
|
specify: Specify
|
74
76
|
start: Start
|
75
77
|
start_on: Start on
|
data/lang/no.yaml
CHANGED
@@ -58,6 +58,7 @@ no_pending_tasks: Det er ingen ventende oppgaver i denne perioden.
|
|
58
58
|
password: Passord
|
59
59
|
period: Periode
|
60
60
|
periods: Perioder
|
61
|
+
please_login: Vennligst logg på
|
61
62
|
position: Posisjon
|
62
63
|
postponed: Utsatt
|
63
64
|
previous: Forrige
|
@@ -70,6 +71,7 @@ saturday: Lørdag
|
|
70
71
|
save: Lagre
|
71
72
|
select: Velg
|
72
73
|
shortcuts: Knapper
|
74
|
+
signup: Innmelding
|
73
75
|
specify: Spesifisèr
|
74
76
|
start: Start
|
75
77
|
start_on: Start på
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: backlog
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.7.
|
7
|
-
date: 2007-08-
|
6
|
+
version: 0.7.7
|
7
|
+
date: 2007-08-24 00:00:00 +02:00
|
8
8
|
summary: Application to aid collecting, processing, organizing, reviewing and doing tasks.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -1776,8 +1776,9 @@ executables:
|
|
1776
1776
|
- backlog
|
1777
1777
|
extensions: []
|
1778
1778
|
|
1779
|
-
requirements:
|
1780
|
-
|
1779
|
+
requirements:
|
1780
|
+
- ImageMagick
|
1781
|
+
- PostgreSQL
|
1781
1782
|
dependencies:
|
1782
1783
|
- !ruby/object:Gem::Dependency
|
1783
1784
|
name: gruff
|