backlog 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/README.txt +6 -0
- data/Rakefile +1 -1
- data/app/controllers/tasks_controller.rb +10 -7
- data/app/controllers/works_controller.rb +9 -6
- data/app/models/backlog.rb +1 -1
- data/app/models/estimate.rb +1 -1
- data/app/models/task.rb +31 -20
- data/app/models/work.rb +1 -0
- data/app/views/layouts/mwrt002.rhtml +2 -2
- data/app/views/tasks/_form.rhtml +1 -2
- data/app/views/tasks/_task.rhtml +3 -3
- data/public/stylesheets/backlog.css +2 -2
- data/test/fixtures/tasks.yml +15 -1
- data/test/fixtures/works.yml +2 -2
- data/test/functional/tasks_controller_test.rb +15 -1
- data/test/functional/works_controller_test.rb +28 -0
- data/test/unit/task_test.rb +1 -1
- metadata +3 -4
- data/public/stylesheets/scaffold.css +0 -74
data/History.txt
CHANGED
data/README.txt
CHANGED
@@ -5,6 +5,12 @@ Welcome to Backlog!
|
|
5
5
|
Backlog is a tool to help you collect and organize all your tasks,
|
6
6
|
wether you are a single persion or a small or large group.
|
7
7
|
|
8
|
+
A timekeeping module is also included to track time spent on the different tasks.
|
9
|
+
|
10
|
+
=== Backlog is not meant to be
|
11
|
+
|
12
|
+
* an issue tracker with customer communication.
|
13
|
+
|
8
14
|
=== Installation
|
9
15
|
|
10
16
|
* Install ruby
|
data/Rakefile
CHANGED
@@ -11,7 +11,7 @@ require 'tasks/rails'
|
|
11
11
|
|
12
12
|
require 'hoe'
|
13
13
|
|
14
|
-
Hoe.new("backlog", '0.3.
|
14
|
+
Hoe.new("backlog", '0.3.3') do |p|
|
15
15
|
p.rubyforge_name = "backlog"
|
16
16
|
p.summary = "Application to aid collecting, processing, organizing, reviewing and doing tasks."
|
17
17
|
p.description = p.paragraphs_of('README.txt', 0..-1).join("\n\n")
|
@@ -1,6 +1,5 @@
|
|
1
1
|
class TasksController < ApplicationController
|
2
|
-
skip_before_filter :populate_layout, :only => [:create, :update, :set_task_description, :move_to,
|
3
|
-
:move_to_next_period, :move_to_period, :reopen, :start_work]
|
2
|
+
skip_before_filter :populate_layout, :only => [:create, :update, :destroy, :set_task_description, :move_to, :move_to_next_period, :move_to_period, :reopen, :start_work]
|
4
3
|
|
5
4
|
verify :method => :post, :except => [ :new, :show, :edit, :list_started, :move_to_next_period],
|
6
5
|
:redirect_to => { :controller => 'backlogs' }
|
@@ -28,7 +27,11 @@ class TasksController < ApplicationController
|
|
28
27
|
if @task.save
|
29
28
|
flash[:notice] = 'Task was successfully created.'
|
30
29
|
@task.move_to_top
|
31
|
-
|
30
|
+
if @task.period
|
31
|
+
back_or_redirect_to :controller => 'periods', :action => 'show', :id => @task.period, :task => @task.id
|
32
|
+
else
|
33
|
+
back_or_redirect_to :controller => 'backlogs', :action => 'show', :id => @task.backlog, :task => @task.id
|
34
|
+
end
|
32
35
|
else
|
33
36
|
populate_layout
|
34
37
|
@backlogs = Backlog.find(:all, :order => 'name')
|
@@ -75,6 +78,7 @@ class TasksController < ApplicationController
|
|
75
78
|
end
|
76
79
|
else
|
77
80
|
populate_layout
|
81
|
+
edit
|
78
82
|
render :action => 'edit'
|
79
83
|
end
|
80
84
|
end
|
@@ -146,7 +150,7 @@ class TasksController < ApplicationController
|
|
146
150
|
|
147
151
|
def finish
|
148
152
|
@task = Task.find(params[:id])
|
149
|
-
@task.finish(Task::COMPLETED, true
|
153
|
+
@task.finish(Task::COMPLETED, true)
|
150
154
|
redirect_to :controller => 'periods', :action => :show, :id => @task.period, :task_id => @task.id
|
151
155
|
end
|
152
156
|
|
@@ -158,14 +162,13 @@ class TasksController < ApplicationController
|
|
158
162
|
|
159
163
|
def reopen
|
160
164
|
task = Task.find(params[:id])
|
161
|
-
task.reopen
|
165
|
+
task.reopen
|
162
166
|
back_or_redirect_to :controller => 'periods', :action => :show, :id => task.period, :task => task.id
|
163
167
|
end
|
164
168
|
|
165
169
|
def start_work
|
166
170
|
task = Task.find(params[:id])
|
167
|
-
task.start_work
|
168
|
-
task.save!
|
171
|
+
task.start_work
|
169
172
|
redirect_to :controller => 'periods', :action => :show, :id => task.period, :task => task.id
|
170
173
|
end
|
171
174
|
|
@@ -42,7 +42,7 @@ class WorksController < ApplicationController
|
|
42
42
|
return
|
43
43
|
end
|
44
44
|
|
45
|
-
@work.task.estimates.
|
45
|
+
@work.task.estimates.create!(params[:estimate]) if params[:estimate]
|
46
46
|
|
47
47
|
back_or_redirect_to :controller => 'periods', :action => 'show', :id => @work.task.period, :task_id => @work.task.id
|
48
48
|
end
|
@@ -61,11 +61,14 @@ class WorksController < ApplicationController
|
|
61
61
|
convert_hours_param
|
62
62
|
if @work.update_attributes(params[:work])
|
63
63
|
flash[:notice] = 'Work was successfully updated.'
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
if params[:estimate].nil? || (@estimate = @work.task.estimates.create(params[:estimate])).errors.size == 0
|
65
|
+
back_or_redirect_to :controller => 'periods', :action => 'show', :id => @work.task.period, :task_id => @work.task.id
|
66
|
+
return
|
67
|
+
end
|
67
68
|
end
|
68
|
-
@work.task
|
69
|
+
@task = @work.task
|
70
|
+
edit
|
71
|
+
render :action => 'edit'
|
69
72
|
end
|
70
73
|
|
71
74
|
def destroy
|
@@ -102,7 +105,7 @@ class WorksController < ApplicationController
|
|
102
105
|
|
103
106
|
def auto_complete_for_work_backlog_name
|
104
107
|
@backlogs = Backlog.find(:all,
|
105
|
-
|
108
|
+
:conditions => [ 'LOWER(name) LIKE ?',
|
106
109
|
'%' + params[:work][:backlog_name].downcase + '%' ],
|
107
110
|
:order => 'name ASC',
|
108
111
|
:limit => 16)
|
data/app/models/backlog.rb
CHANGED
@@ -37,7 +37,7 @@ class Backlog < ActiveRecord::Base
|
|
37
37
|
|
38
38
|
def first_active_period
|
39
39
|
t = active_tasks
|
40
|
-
periods = t.map {|t| t.period}.uniq
|
40
|
+
periods = t.map {|t| t.period}.compact.uniq
|
41
41
|
periods = periods.select {|p| p.active?}
|
42
42
|
periods.sort_by {|p| p.end_on}.first
|
43
43
|
end
|
data/app/models/estimate.rb
CHANGED
data/app/models/task.rb
CHANGED
@@ -8,7 +8,7 @@ class Task < ActiveRecord::Base
|
|
8
8
|
|
9
9
|
belongs_to :backlog
|
10
10
|
belongs_to :period
|
11
|
-
acts_as_list :scope => '#{period_id ? "period_id = #{period_id}" : "parent_id = #{parent_id}"} AND finished_at IS NULL'
|
11
|
+
acts_as_list :scope => '#{period_id ? "period_id = #{period_id}" : parent_id ? "parent_id = #{parent_id}" : "backlog_id = #{backlog_id}"} AND finished_at IS NULL'
|
12
12
|
has_many :estimates, :order => 'created_at', :dependent => :destroy
|
13
13
|
has_many :works, :order => 'completed_at', :dependent => :destroy
|
14
14
|
acts_as_tree :order => 'position'
|
@@ -20,12 +20,15 @@ class Task < ActiveRecord::Base
|
|
20
20
|
#validates_absence_of :position, :if => :finished_at
|
21
21
|
#validates_absence_of :finished_at, :if => :position
|
22
22
|
validates_presence_of :resolution, :if => :finished_at
|
23
|
-
validates_uniqueness_of :description, :scope => :
|
24
|
-
validates_uniqueness_of :
|
23
|
+
validates_uniqueness_of :description, :scope => :backlog_id, :if => :backlog_id
|
24
|
+
validates_uniqueness_of :description, :scope => :period_id, :if => :period_id
|
25
|
+
validates_uniqueness_of :position, :scope => :period_id, :if => :period_id, :allow_nil => true
|
26
|
+
validates_uniqueness_of :position, :scope => :parent_id, :if => :parent_id, :allow_nil => true
|
27
|
+
validates_uniqueness_of :position, :scope => :backlog_id, :if => Proc.new {|task| task.period_id.nil? && task.parent_id.nil?}, :allow_nil => true
|
25
28
|
|
26
29
|
def validate
|
27
|
-
|
28
|
-
errors.add :parent_id, "A
|
30
|
+
if self.parent_id && (self.period_id || self.backlog_id)
|
31
|
+
errors.add :parent_id, "A subtask may not have neither period nor backlog set."
|
29
32
|
end
|
30
33
|
if new_record? && self.period && self.period.passed?
|
31
34
|
errors.add :period_id, "You may not add a task to a past period."
|
@@ -99,21 +102,21 @@ class Task < ActiveRecord::Base
|
|
99
102
|
|
100
103
|
def open
|
101
104
|
if finished_at
|
105
|
+
insert_at 1
|
102
106
|
self.finished_at = nil
|
103
107
|
self.resolution = nil
|
104
108
|
estimate(initial_estimate)
|
105
|
-
insert_at 1
|
106
109
|
parent.open if parent
|
107
110
|
end
|
108
111
|
end
|
109
112
|
|
110
|
-
def reopen
|
113
|
+
def reopen
|
111
114
|
if period.passed?
|
112
115
|
flash[:notice] = "You cannot reopen a task in a period that is passed."
|
113
116
|
else
|
114
|
-
open
|
117
|
+
open
|
115
118
|
save!
|
116
|
-
children.each {|child_task| child_task.reopen
|
119
|
+
children.each {|child_task| child_task.reopen}
|
117
120
|
end
|
118
121
|
end
|
119
122
|
|
@@ -137,24 +140,24 @@ class Task < ActiveRecord::Base
|
|
137
140
|
self.finish(new_task.period.party == self.period.party ? Task::POSTPONED : Task::MOVED, true, current_user)
|
138
141
|
end
|
139
142
|
|
140
|
-
def finish(resolution, save_work
|
143
|
+
def finish(resolution, save_work)
|
141
144
|
unless finished_at || work_started?
|
142
145
|
self.finished_at = Time.now
|
143
146
|
self.resolution = resolution
|
147
|
+
remove_from_list
|
144
148
|
self.position = nil
|
145
149
|
save!
|
146
|
-
remove_from_list
|
147
150
|
estimate(0) if save_work
|
148
|
-
parent.check_finished(self.finished_at, resolution, save_work
|
151
|
+
parent.check_finished(self.finished_at, resolution, save_work) if parent
|
149
152
|
end
|
150
153
|
end
|
151
154
|
|
152
|
-
def check_finished(subtask_finsihed_at, resolution, save_work
|
155
|
+
def check_finished(subtask_finsihed_at, resolution, save_work)
|
153
156
|
return if self.finished_at
|
154
157
|
children.each do |child_task|
|
155
158
|
return if child_task.active?
|
156
159
|
end
|
157
|
-
finish(resolution, save_work
|
160
|
+
finish(resolution, save_work)
|
158
161
|
end
|
159
162
|
|
160
163
|
def active?
|
@@ -263,14 +266,14 @@ class Task < ActiveRecord::Base
|
|
263
266
|
total
|
264
267
|
end
|
265
268
|
|
266
|
-
def start_work
|
269
|
+
def start_work
|
267
270
|
return if work_started?
|
268
|
-
open
|
271
|
+
open
|
269
272
|
new_work = works.new
|
270
273
|
new_work.started_at = Time.previous_quarter
|
271
274
|
if works.size > 0
|
272
|
-
if
|
273
|
-
last_work = works.select {|work| work.user ==
|
275
|
+
if current_user
|
276
|
+
last_work = works.select {|work| work.user == current_user}.last
|
274
277
|
end
|
275
278
|
unless last_work
|
276
279
|
last_work = works.select {|work| work.user.nil?}.last
|
@@ -279,8 +282,16 @@ class Task < ActiveRecord::Base
|
|
279
282
|
new_work.started_at = last_work.completed_at
|
280
283
|
end
|
281
284
|
end
|
282
|
-
new_work.user =
|
285
|
+
new_work.user = current_user
|
286
|
+
begin
|
283
287
|
new_work.save!
|
288
|
+
rescue Exception => e
|
289
|
+
p e
|
290
|
+
p e.record
|
291
|
+
p e.record.task
|
292
|
+
p e.record.task.errors
|
293
|
+
p e.record.task.errors.full_messages
|
294
|
+
end
|
284
295
|
end
|
285
296
|
|
286
297
|
def works_with_children
|
@@ -288,7 +299,7 @@ class Task < ActiveRecord::Base
|
|
288
299
|
end
|
289
300
|
|
290
301
|
def abort(user)
|
291
|
-
finish(Task::ABORTED, false
|
302
|
+
finish(Task::ABORTED, false)
|
292
303
|
end
|
293
304
|
|
294
305
|
def work_started?
|
data/app/models/work.rb
CHANGED
@@ -34,14 +34,14 @@ function handlePageEvent(event) {
|
|
34
34
|
<% if user? %>| <%=user.email%><% end %>
|
35
35
|
</div>
|
36
36
|
<div id="header">
|
37
|
+
<%= error_messages_for :backlog, :user, :group, :period, :task, :work, :estimate %>
|
38
|
+
|
37
39
|
<div id="introtext">
|
38
40
|
<h1><%=@application_title%></h1>
|
39
41
|
<h3><%=@page_title ? @page_title : @application_description%></h3>
|
40
42
|
</div>
|
41
43
|
</div>
|
42
44
|
<div id="content">
|
43
|
-
<%= error_messages_for 'period', 'task' %>
|
44
|
-
|
45
45
|
<%= yield %>
|
46
46
|
</div>
|
47
47
|
</div>
|
data/app/views/tasks/_form.rhtml
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
<%= error_messages_for 'task' %>
|
2
|
-
|
3
1
|
<!--[form:task]-->
|
4
2
|
<p>
|
5
3
|
<% if @task.backlog.nil? || @task.new_record? %>
|
@@ -12,6 +10,7 @@
|
|
12
10
|
<% if @task.backlog %>
|
13
11
|
<%=image_detour_to('clipboard.png', "#{l(:backlog)} #{@task.backlog.name}", {:controller => 'backlogs', :action => :edit, :id => @task.backlog}, {:class => 'image-submit', :style => 'vertical-align: bottom'}) %>
|
14
12
|
<% end %>
|
13
|
+
<%=detour_to l(:new_backlog), :controller => 'backlogs', :action => :new %>
|
15
14
|
</p>
|
16
15
|
|
17
16
|
|
data/app/views/tasks/_task.rhtml
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
<% end %>
|
9
9
|
</td>
|
10
10
|
<td align="left" valign="top" width="1" nowrap="true">
|
11
|
-
<%=detour_to @task.position.to_s, :controller => 'tasks', :action => :edit, :id => @task.id if @task.depth == 0 %>
|
11
|
+
<%=detour_to @task.position.to_s, :controller => 'tasks', :action => :edit, :id => @task.id if @task.position || @task.depth == 0 %>
|
12
12
|
<%= (" " * @task.depth * 4) if @task.depth > 0 %>
|
13
13
|
<%= l(@task.resolution.downcase) if @task.finished_at %>
|
14
14
|
<%= "-" if @task.children.size > 0 %>
|
@@ -34,8 +34,8 @@
|
|
34
34
|
<% end %>
|
35
35
|
<% end -%>
|
36
36
|
</td>
|
37
|
-
<% if @task.track_done? %>
|
38
37
|
<td align="<%=@task.loggable? ? 'center' : 'left'%>" nowrap="true" width="1">
|
38
|
+
<% if @task.track_done? %>
|
39
39
|
<% if @task.loggable? || @task.finished_at -%>
|
40
40
|
<% form_tag({:controller => 'works', :action => (@task.work_started? ? :edit : :create), :id => @task.started_work}) do %>
|
41
41
|
<%= hidden_field('work', 'task_id', :value => @task.id)%>
|
@@ -48,8 +48,8 @@
|
|
48
48
|
<%=t @task.total_done if @task.total_done != 0%>
|
49
49
|
<% end -%>
|
50
50
|
<% end -%>
|
51
|
-
</td>
|
52
51
|
<% end -%>
|
52
|
+
</td>
|
53
53
|
<td nowrap="true" width="1">
|
54
54
|
<% if active && @task.loggable? -%>
|
55
55
|
<% form_tag({:controller => 'estimates', :action => 'create', :id => @task}) do %>
|
@@ -17,12 +17,12 @@ th.hours {text-align: right;}
|
|
17
17
|
}
|
18
18
|
|
19
19
|
#errorExplanation {
|
20
|
-
width: 400px;
|
21
20
|
border: 2px solid red;
|
22
21
|
padding: 7px;
|
23
22
|
padding-bottom: 12px;
|
24
23
|
margin-bottom: 20px;
|
25
|
-
background
|
24
|
+
background: transparent;
|
25
|
+
float: right;
|
26
26
|
}
|
27
27
|
|
28
28
|
#errorExplanation h2 {
|
data/test/fixtures/tasks.yml
CHANGED
@@ -5,12 +5,26 @@ first:
|
|
5
5
|
backlog_id: 1
|
6
6
|
period_id: 1
|
7
7
|
description: first task
|
8
|
-
position:
|
8
|
+
position: 0
|
9
9
|
another:
|
10
10
|
id: 2
|
11
11
|
created_at: 2007-06-12
|
12
12
|
backlog_id: 1
|
13
13
|
period_id: 2
|
14
14
|
description: second task
|
15
|
+
position: 0
|
16
|
+
started:
|
17
|
+
id: 3
|
18
|
+
created_at: 2007-08-02 14:15:42
|
19
|
+
backlog_id: 1
|
20
|
+
period_id: 2
|
21
|
+
description: third task
|
22
|
+
position: 1
|
23
|
+
last:
|
24
|
+
id: 4
|
25
|
+
created_at: 2007-08-02 14:15:42
|
26
|
+
backlog_id: 1
|
27
|
+
period_id: 2
|
28
|
+
description: last task
|
15
29
|
position: 2
|
16
30
|
|
data/test/fixtures/works.yml
CHANGED
@@ -5,7 +5,7 @@ require 'tasks_controller'
|
|
5
5
|
class TasksController; def rescue_action(e) raise e end; end
|
6
6
|
|
7
7
|
class TasksControllerTest < Test::Unit::TestCase
|
8
|
-
fixtures :users, :backlogs, :periods, :tasks, :works, :estimates
|
8
|
+
fixtures :parties, :users, :groups, :backlogs, :periods, :tasks, :works, :estimates
|
9
9
|
|
10
10
|
def setup
|
11
11
|
@controller = TasksController.new
|
@@ -65,6 +65,20 @@ class TasksControllerTest < Test::Unit::TestCase
|
|
65
65
|
assert_equal num_tasks + 1, Task.count
|
66
66
|
end
|
67
67
|
|
68
|
+
def test_create_without_period
|
69
|
+
num_tasks = Task.count
|
70
|
+
|
71
|
+
post :create, :task => {:description => 'an important task', :backlog_id => '2'}
|
72
|
+
|
73
|
+
task = assigns(:task)
|
74
|
+
assert_equal [], task.errors.full_messages
|
75
|
+
|
76
|
+
assert_response :redirect
|
77
|
+
assert_redirected_to :controller => 'backlogs', :action => 'show', :id => 2
|
78
|
+
|
79
|
+
assert_equal num_tasks + 1, Task.count
|
80
|
+
end
|
81
|
+
|
68
82
|
def test_edit
|
69
83
|
get :edit, :id => 1
|
70
84
|
|
@@ -86,4 +86,32 @@ class WorksControllerTest < Test::Unit::TestCase
|
|
86
86
|
Work.find(1)
|
87
87
|
}
|
88
88
|
end
|
89
|
+
|
90
|
+
def test_update_with_finish
|
91
|
+
num_tasks = Task.count
|
92
|
+
num_open_tasks = Task.find_open.size
|
93
|
+
task = tasks(:started)
|
94
|
+
work = works(:started)
|
95
|
+
|
96
|
+
post :update, "commit"=>"Lagre", "action"=>"update", "id"=>work.id.to_s, "controller"=>"works", "estimate"=>{"todo"=>"0"}, "work"=>{"completed_at"=>"2007-08-02 14:15", "task_id"=> task.id.to_s, "user_id"=>"1000001", "started_at"=>"2007-08-02 14:00"}
|
97
|
+
|
98
|
+
assert_response :redirect
|
99
|
+
assert_redirected_to :controller => 'periods', :action => :show, :id => task.period, :task => nil
|
100
|
+
|
101
|
+
assert_equal num_tasks, Task.count
|
102
|
+
assert_equal num_open_tasks - 1, Task.find_open.size
|
103
|
+
assert_sequence
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def assert_sequence
|
110
|
+
Period.find(:all).each do |p|
|
111
|
+
p.open_tasks.each_with_index do |t, i|
|
112
|
+
assert_equal i, t.position
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
89
117
|
end
|
data/test/unit/task_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../test_helper'
|
2
2
|
|
3
3
|
class TaskTest < Test::Unit::TestCase
|
4
|
-
fixtures :backlogs, :periods, :tasks, :estimates, :works
|
4
|
+
fixtures :parties, :users, :groups, :backlogs, :periods, :tasks, :estimates, :works
|
5
5
|
|
6
6
|
# Replace this with your real tests.
|
7
7
|
def test_truth
|
metadata
CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: backlog
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2007-08-
|
6
|
+
version: 0.3.3
|
7
|
+
date: 2007-08-03 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
|
11
11
|
email: ryand-ruby@zenspider.com
|
12
12
|
homepage: http://www.zenspider.com/ZSS/Products/backlog/
|
13
13
|
rubyforge_project: backlog
|
14
|
-
description: == Backlog Welcome to Backlog! Backlog is a tool to help you collect and organize all your tasks, wether you are a single persion or a small or large group. === Installation * Install ruby * Install RubyGems * Install PostgreSQL * run <tt>sudo gem install backlog -y</tt> * run <tt>sudo backlog setup_linux</tt> * run <tt>sudo backlog start</tt> === Updates * run <tt>sudo backlog stop</tt> * run <tt>sudo gem update -y</tt> * run <tt>sudo backlog start</tt>
|
14
|
+
description: == Backlog Welcome to Backlog! Backlog is a tool to help you collect and organize all your tasks, wether you are a single persion or a small or large group. A timekeeping module is also included to track time spent on the different tasks. === Backlog is not meant to be * an issue tracker with customer communication. === Installation * Install ruby * Install RubyGems * Install PostgreSQL * run <tt>sudo gem install backlog -y</tt> * run <tt>sudo backlog setup_linux</tt> * run <tt>sudo backlog start</tt> === Updates * run <tt>sudo backlog stop</tt> * run <tt>sudo gem update -y</tt> * run <tt>sudo backlog start</tt>
|
15
15
|
autorequire:
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
@@ -105,7 +105,6 @@ files:
|
|
105
105
|
- public/stylesheets/zpcal/themes/scroller-down.gif
|
106
106
|
- public/stylesheets/zpcal/themes/scroller-up.gif
|
107
107
|
- public/stylesheets/backlog.css
|
108
|
-
- public/stylesheets/scaffold.css
|
109
108
|
- public/stylesheets/user.css
|
110
109
|
- public/robots.txt
|
111
110
|
- public/404.html
|
@@ -1,74 +0,0 @@
|
|
1
|
-
body { background-color: #fff; color: #333; }
|
2
|
-
|
3
|
-
body, p, ol, ul, td {
|
4
|
-
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
-
font-size: 13px;
|
6
|
-
line-height: 18px;
|
7
|
-
}
|
8
|
-
|
9
|
-
pre {
|
10
|
-
background-color: #eee;
|
11
|
-
padding: 10px;
|
12
|
-
font-size: 11px;
|
13
|
-
}
|
14
|
-
|
15
|
-
a { color: #000; }
|
16
|
-
a:visited { color: #666; }
|
17
|
-
a:hover { color: #fff; background-color:#000; }
|
18
|
-
|
19
|
-
.fieldWithErrors {
|
20
|
-
padding: 2px;
|
21
|
-
background-color: red;
|
22
|
-
display: table;
|
23
|
-
}
|
24
|
-
|
25
|
-
#errorExplanation {
|
26
|
-
width: 400px;
|
27
|
-
border: 2px solid red;
|
28
|
-
padding: 7px;
|
29
|
-
padding-bottom: 12px;
|
30
|
-
margin-bottom: 20px;
|
31
|
-
background-color: #f0f0f0;
|
32
|
-
}
|
33
|
-
|
34
|
-
#errorExplanation h2 {
|
35
|
-
text-align: left;
|
36
|
-
font-weight: bold;
|
37
|
-
padding: 5px 5px 5px 15px;
|
38
|
-
font-size: 12px;
|
39
|
-
margin: -7px;
|
40
|
-
background-color: #c00;
|
41
|
-
color: #fff;
|
42
|
-
}
|
43
|
-
|
44
|
-
#errorExplanation p {
|
45
|
-
color: #333;
|
46
|
-
margin-bottom: 0;
|
47
|
-
padding: 5px;
|
48
|
-
}
|
49
|
-
|
50
|
-
#errorExplanation ul li {
|
51
|
-
font-size: 12px;
|
52
|
-
list-style: square;
|
53
|
-
}
|
54
|
-
|
55
|
-
div.uploadStatus {
|
56
|
-
margin: 5px;
|
57
|
-
}
|
58
|
-
|
59
|
-
div.progressBar {
|
60
|
-
margin: 5px;
|
61
|
-
}
|
62
|
-
|
63
|
-
div.progressBar div.border {
|
64
|
-
background-color: #fff;
|
65
|
-
border: 1px solid grey;
|
66
|
-
width: 100%;
|
67
|
-
}
|
68
|
-
|
69
|
-
div.progressBar div.background {
|
70
|
-
background-color: #333;
|
71
|
-
height: 18px;
|
72
|
-
width: 0%;
|
73
|
-
}
|
74
|
-
|