backlog 0.17.3 → 0.17.4
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/History.txt +18 -2
- data/app/controllers/application.rb +4 -2
- data/app/controllers/backlogs_controller.rb +12 -8
- data/app/controllers/tasks_controller.rb +4 -2
- data/app/helpers/backlogs_helper.rb +2 -2
- data/app/models/task.rb +4 -3
- data/app/views/backlogs/show.rhtml +10 -6
- data/app/views/layouts/_left_top.rhtml +2 -1
- data/app/views/periods/_show_active.rhtml +9 -16
- data/app/views/periods/show.rhtml +3 -0
- data/app/views/tasks/_backlog_header.rhtml +12 -12
- data/app/views/tasks/_fields_header.rhtml +4 -6
- data/app/views/tasks/_period_header.rhtml +1 -1
- data/app/views/tasks/_task.rhtml +6 -2
- data/app/views/tasks/list_started.rhtml +2 -10
- data/app/views/tasks/start_work.rjs +0 -1
- data/public/stylesheets/backlog.css +6 -6
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,11 +1,27 @@
|
|
1
|
-
== 0.17.
|
1
|
+
== 0.17.4 2008-01-14
|
2
|
+
|
3
|
+
=== Features
|
4
|
+
|
5
|
+
* Added date and time to top bar
|
6
|
+
* Simplified design of task lists.
|
7
|
+
* Changed title in Show Sprint view from "Backlog" to "Sprint"
|
8
|
+
|
9
|
+
=== Fixes
|
10
|
+
|
11
|
+
* Fixed wrong "Home" link.
|
12
|
+
* Fixed exception when updating task estimate.
|
13
|
+
* Removed shake effect when starting work on a task.
|
14
|
+
* Various style sheet adjustments.
|
15
|
+
* Fixed moving tasks between sprints in backlog view.
|
16
|
+
* Fixed redirect after ending work directly after starting it.
|
17
|
+
|
18
|
+
== 0.17.3 2008-01-11
|
2
19
|
|
3
20
|
=== Fixes
|
4
21
|
|
5
22
|
* Fixed wrong redirect at startup.
|
6
23
|
* Fixed ugly listing of started tasks.
|
7
24
|
|
8
|
-
|
9
25
|
== 0.17.2 2008-01-07
|
10
26
|
|
11
27
|
=== Fixes
|
@@ -109,9 +109,11 @@ class ApplicationController < ActionController::Base
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def pop_detour
|
112
|
-
|
112
|
+
detours = session[:detours]
|
113
|
+
return nil unless detours
|
114
|
+
detour = detours.pop
|
113
115
|
logger.debug "popped detour: #{detour.inspect} #{session[:detours].size} more"
|
114
|
-
if
|
116
|
+
if detours.empty?
|
115
117
|
session[:detours] = nil
|
116
118
|
end
|
117
119
|
detour
|
@@ -92,7 +92,7 @@ class BacklogsController < ApplicationController
|
|
92
92
|
@task.estimate(params[:estimate][:todo])
|
93
93
|
@period = @task.period
|
94
94
|
@success, flash[:notice] = true, 'Estimate updated'
|
95
|
-
|
95
|
+
rescue ArgumentError => e
|
96
96
|
@success, flash[:notice] = false, "Estimate was not numeric"
|
97
97
|
end
|
98
98
|
if @task.finished?
|
@@ -161,15 +161,19 @@ class BacklogsController < ApplicationController
|
|
161
161
|
def order
|
162
162
|
params.keys.find {|k| k =~ /active_tasks_(.*)/}
|
163
163
|
period_id = $1
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
164
|
+
if period_id
|
165
|
+
period = Period.find(period_id)
|
166
|
+
tasks = params["active_tasks_#{period_id}"].select {|id| not id.empty?}
|
167
|
+
tasks.each_with_index do |id,idx|
|
168
|
+
task = Task.find(id)
|
169
|
+
task = task.move_to_period(period) if task.period != period
|
170
|
+
task.insert_at(idx + 1)
|
171
|
+
task.save!
|
172
|
+
end
|
169
173
|
end
|
170
174
|
render :text => 'Updated sort order'
|
171
175
|
end
|
172
|
-
|
176
|
+
|
173
177
|
private
|
174
178
|
|
175
179
|
def load_tasks(backlog)
|
@@ -177,7 +181,7 @@ class BacklogsController < ApplicationController
|
|
177
181
|
planned_tasks = backlog.tasks.select {|t| t.period && t.finished_at.nil?}.sort_by {|t| [t.period.end_on, t.position]}
|
178
182
|
@tasks = planned_tasks + unplanned_tasks
|
179
183
|
@completed_tasks = backlog.tasks.select {|t| t.finished_at}.sort {|t1, t2| t2.finished_at <=> t1.finished_at}
|
180
|
-
|
184
|
+
|
181
185
|
end
|
182
186
|
|
183
187
|
end
|
@@ -7,7 +7,7 @@ class TasksController < ApplicationController
|
|
7
7
|
def list_started
|
8
8
|
@tasks = Task.find_started
|
9
9
|
@selected_task = Task.find_by_id(params[:id])
|
10
|
-
back_or_redirect_to(
|
10
|
+
back_or_redirect_to('/') if @tasks.empty?
|
11
11
|
end
|
12
12
|
|
13
13
|
def new
|
@@ -87,7 +87,7 @@ class TasksController < ApplicationController
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
file = params[:task].delete(:file)
|
90
|
+
file = params[:task] && params[:task].delete(:file)
|
91
91
|
|
92
92
|
if params[:task] && @task.update_attributes(params[:task])
|
93
93
|
flash[:notice] = 'Task was successfully updated.'
|
@@ -202,6 +202,8 @@ class TasksController < ApplicationController
|
|
202
202
|
def start_work
|
203
203
|
@task = Task.find(params[:id])
|
204
204
|
@task.start_work
|
205
|
+
detour = pop_detour
|
206
|
+
params.update(detour) if detour
|
205
207
|
end
|
206
208
|
|
207
209
|
def end_work
|
@@ -24,7 +24,7 @@ module BacklogsHelper
|
|
24
24
|
page.insert_html :top, "completed_tasks", "<table id=\"completed_tasks_#{@task.period_id}\" class=\"input\" />"
|
25
25
|
end
|
26
26
|
|
27
|
-
page.insert_html :top, "completed_tasks_#{@task.period_id}", :partial => '/tasks/task', :locals => {:active => false, :hidden => true, :highlight_task => false}
|
27
|
+
page.insert_html :top, "completed_tasks_#{@task.period_id}", :partial => '/tasks/task', :locals => {:active => false, :hidden => true, :highlight_task => false, :show_backlog => false}
|
28
28
|
page.visual_effect :appear, "task_#{@task.id}"
|
29
29
|
|
30
30
|
page.insert_html :top, "completed_tasks_#{@task.period_id}", :partial => '/tasks/fields_header', :locals => {:backlog => @task.backlog, :active => false, :work_done => work_done}
|
@@ -52,7 +52,7 @@ module BacklogsHelper
|
|
52
52
|
|
53
53
|
page.insert_html(:top, "active_tasks_#{@task.period_id}", render(:partial => "/tasks/task", :locals => { :task => @task, :i => 1, :active => true, :highlight_task => false, :update => :spotlight, :hidden => true }))
|
54
54
|
|
55
|
-
fields_header = render(:partial => '/tasks/fields_header', :locals => { :backlog => @task.backlog, :active => true, :track_times => tasks_in_period.find {|t|t.period && t.period.active?} } )
|
55
|
+
fields_header = render(:partial => '/tasks/fields_header', :locals => { :backlog => @task.backlog, :active => true, :track_todo => @task.backlog.track_todo?, :track_done => @task.backlog.track_done?, :track_times => tasks_in_period.find {|t|t.period && t.period.active?} } )
|
56
56
|
page.insert_html :top, "active_tasks_#{@task.period_id}", fields_header
|
57
57
|
page.insert_html :top, "active_tasks_#{@task.period_id}", render(:partial => "/tasks/period_header", :locals => {:period => @task.period})
|
58
58
|
|
data/app/models/task.rb
CHANGED
@@ -144,7 +144,7 @@ class Task < ActiveRecord::Base
|
|
144
144
|
def move_to_period(new_period)
|
145
145
|
raise "Period missing" unless new_period
|
146
146
|
raise "Cannot move finished tasks" unless active?
|
147
|
-
return if new_period == period
|
147
|
+
return self if new_period == period
|
148
148
|
|
149
149
|
self.remove_from_list
|
150
150
|
self.position = nil
|
@@ -162,6 +162,7 @@ class Task < ActiveRecord::Base
|
|
162
162
|
existing_task.description = self.description
|
163
163
|
existing_task.save!
|
164
164
|
existing_task.estimate(old_todo)
|
165
|
+
return existing_task
|
165
166
|
else
|
166
167
|
new_task = Task.new
|
167
168
|
new_task.previous_task_id = ancestor_id
|
@@ -172,9 +173,8 @@ class Task < ActiveRecord::Base
|
|
172
173
|
new_task.position = nil
|
173
174
|
new_task.save!
|
174
175
|
new_task.insert_at 1
|
175
|
-
# new_task.position = 1
|
176
|
-
# new_task.save!
|
177
176
|
new_task.estimate(old_todo)
|
177
|
+
return new_task
|
178
178
|
end
|
179
179
|
else
|
180
180
|
self.period_id = new_period.id
|
@@ -183,6 +183,7 @@ class Task < ActiveRecord::Base
|
|
183
183
|
self.position = 1
|
184
184
|
self.move_to_bottom
|
185
185
|
self.save!
|
186
|
+
return self
|
186
187
|
end
|
187
188
|
end
|
188
189
|
|
@@ -6,18 +6,22 @@
|
|
6
6
|
<div id="active_tasks"<%=' style="display: none;"' unless @tasks and not @tasks.empty? %>>
|
7
7
|
<%#=render :partial => '/tasks/backlog_header', :locals => {:backlog => @backlog, :track_times => @tasks.find {|t|t.period && t.period.active?}} %>
|
8
8
|
<%i = 0 %>
|
9
|
-
<%
|
9
|
+
<% periods = @tasks.map {|t| t.period}.uniq %>
|
10
|
+
<% period_ids = periods.map {|period| "active_tasks_#{period ? period.id : ''}"} %>
|
11
|
+
<%for period in periods %>
|
10
12
|
<% tasks_in_period = @tasks.select {|t| t.period_id == (period && period.id)} %>
|
11
13
|
<% work_done = !tasks_in_period.find{|t| t.total_done > 0}.nil? %>
|
14
|
+
<%=render :partial => '/tasks/period_header', :locals => {:period => period} if @backlog.enable_periods %>
|
15
|
+
<%=render :partial => '/tasks/fields_header', :locals => {:backlog => @backlog, :active => true, :track_times => tasks_in_period.find {|t|t.period && t.period.active?}, :work_done => work_done} %>
|
12
16
|
<ul id="active_tasks_<%=period ? period.id : '' %>" class="task_list">
|
13
|
-
<%=render :partial => '/tasks/period_header', :locals => {:period => period} if @backlog.enable_periods %>
|
14
|
-
<%=render :partial => '/tasks/fields_header', :locals => {:backlog => @backlog, :active => true, :track_times => tasks_in_period.find {|t|t.period && t.period.active?}, :work_done => work_done} %>
|
15
17
|
<%for @task in tasks_in_period %>
|
16
|
-
<%=render :partial => '/tasks/task/', :locals => {:task => @task, :i => i += 1, :active => true, :highlight_task => false, :update => :maincontent, :hidden => false} %>
|
18
|
+
<%=render :partial => '/tasks/task/', :locals => {:task => @task, :i => i += 1, :active => true, :highlight_task => false, :update => :maincontent, :show_backlog => false, :hidden => false} %>
|
17
19
|
<%end %>
|
18
20
|
</ul>
|
19
|
-
|
20
|
-
|
21
|
+
<% end %>
|
22
|
+
<%for period in periods %>
|
23
|
+
<%=sortable_element "active_tasks_#{period ? period.id : ''}", :url => { :action => :order }, :containment => period_ids, :constraint => false %>
|
24
|
+
<% end %>
|
21
25
|
</div>
|
22
26
|
<p id="no_tasks_message"<%=' style="display: none;"' if @tasks and not @tasks.empty? %>>
|
23
27
|
<%=l :no_pending_tasks_in_backlog %>
|
@@ -1,7 +1,8 @@
|
|
1
1
|
<div id="navbar">
|
2
2
|
<span style="float: left"><%=link_to "#{l :backlog} #{APP::VERSION}", 'http://rubyforge.org/projects/backlog'%></span>
|
3
3
|
<span style="float: left"><form action="<%=url_for :controller => 'search', :action => :results%>"><%=text_field_tag :q, @search || l(:search), :onfocus => "if (value == '#{l(:search)}') value='' "%><%=submit_tag :search, :style => 'display: none'%></form></span>
|
4
|
-
|
4
|
+
<span style="float: left; margin-left: 5px; font-weight: bold"><%=Time.new.strftime('%Y-%m-%d %H:%M')%></span>
|
5
|
+
<%= link_to l(:home), url_for('/') %>
|
5
6
|
|
6
7
|
<% if user? %>
|
7
8
|
| <%= link_to l(:backlogs), :controller => 'backlogs', :action => :list %>
|
@@ -33,22 +33,15 @@ function handleEvent(field, event, id) {
|
|
33
33
|
|
34
34
|
|
35
35
|
<div id="active_tasks"<%=' style="display: none;"' unless @tasks and not @tasks.empty?%>>
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
<%=render :partial => '/tasks/fields_header', :locals => { :backlog => task.backlog, :active => true, :track_times => @tasks.find {|t|t.period && t.period.active?}, :work_done => @tasks.find {|t|t.backlog_id == current_backlog.id && t.total_done > 0} } %>
|
46
|
-
<% end -%>
|
47
|
-
<%=render :partial => '/tasks/task', :locals => { :task => task, :i => i, :active => true, :highlight_task => task == @selected_task, :update => :spotlight, :hidden => false } %>
|
48
|
-
<% i += 1 %>
|
49
|
-
<% end -%>
|
50
|
-
<%=sortable_element "active_tasks_#{current_backlog.id}", :url => { :action => :order }, :constraint => false if current_backlog%>
|
51
|
-
<%='</ul>' if current_backlog%>
|
36
|
+
<%=render :partial => '/tasks/fields_header', :locals => { :backlog => nil, :active => true, :track_todo => @tasks.find {|t|t.period && t.period.active?}, :track_times => @tasks.find {|t|t.period && t.period.active?}, :track_done => @tasks.find {|t|t.period && t.period.active? }, :work_done => @tasks.find {|t| t.total_done > 0} } %>
|
37
|
+
<ul id="active_tasks_<%=@period.id%>" class="task_list">
|
38
|
+
<% for task in @tasks -%>
|
39
|
+
<%=render :partial => '/tasks/task', :locals => { :task => task, :i => i, :active => true, :highlight_task => task == @selected_task, :update => :spotlight, :show_backlog => true, :hidden => false } %>
|
40
|
+
<%#=render :partial => '/tasks/backlog_header', :locals => { :backlog => task.backlog, :track_times => task.backlog.track_done? && @tasks.find {|t|t.period && t.period.active?} } %>
|
41
|
+
<% i += 1 %>
|
42
|
+
<% end -%>
|
43
|
+
</ul>
|
44
|
+
<%=sortable_element "active_tasks_#{@period.id}", :url => { :action => :order }, :constraint => false%>
|
52
45
|
</div>
|
53
46
|
|
54
47
|
<p id="no_tasks_message"<%=' style="display: none;"' if @tasks and not @tasks.empty?%>><%=l :no_pending_tasks%></p>
|
@@ -1,17 +1,17 @@
|
|
1
1
|
<% @backlog = backlog %>
|
2
2
|
|
3
|
-
<
|
3
|
+
<div valign="top">
|
4
4
|
<div>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
<span style="float: left">
|
6
|
+
<%=image_detour_to('add.png', l(:new_task), :controller => 'tasks', :action => :new, :task => {:backlog_id => @backlog.id, :period_id => @period && @period.id})%>
|
7
|
+
</span>
|
8
|
+
<span colspan="4" style="float: left; vertical-align: middle">
|
9
|
+
<h5>
|
10
|
+
<%=detour_to(h(backlog.name), :controller => 'backlogs', :action => :show, :id => @backlog) %>
|
11
|
+
<%=image_detour_to('clipboard.png', l(:edit), :controller => 'backlogs', :action => :edit, :id => @backlog.id)%>
|
12
|
+
</h5>
|
13
|
+
</span>
|
14
|
+
<span style="float: left" width="*"/>
|
15
15
|
</div>
|
16
16
|
<br clear="all" />
|
17
|
-
</
|
17
|
+
</div>
|
@@ -1,15 +1,13 @@
|
|
1
|
-
<li>
|
2
1
|
<div style="font-weight: bold">
|
3
|
-
<div style="float: left"
|
2
|
+
<div style="float: left"></div>
|
4
3
|
<div class="task_id"><%=active ? 'ID' : l(:resolution_abr)%></div>
|
5
4
|
<div class="task_description"><%=l :task %></div>
|
6
5
|
<div style="float: right">
|
7
|
-
<div class="task_start"><%=l :start if active &&
|
6
|
+
<div class="task_start"><%=l :start if active && track_times %></div>
|
8
7
|
<div class="task_end_work"> </div>
|
9
|
-
<div class="task_done"><%=l :done if (active &&
|
10
|
-
<div class="task_todo"><%=l :todo if active &&
|
8
|
+
<div class="task_done"><%=l :done if (active && track_done) || work_done %></div>
|
9
|
+
<div class="task_todo"><%=l :todo if active && track_todo %></div>
|
11
10
|
<div class="task_buttons"></div>
|
12
11
|
</div>
|
13
12
|
</div>
|
14
13
|
<br clear="all"/>
|
15
|
-
</li>
|
@@ -1 +1 @@
|
|
1
|
-
<
|
1
|
+
<div><span><%=period ? link_to(h(period.name), :controller => 'periods', :action => :show, :id => period) : l(:unplanned_tasks)%></span></div>
|
data/app/views/tasks/_task.rhtml
CHANGED
@@ -17,6 +17,10 @@
|
|
17
17
|
</div>
|
18
18
|
<div id="task_<%=@task.id%>_description" class="task_description">
|
19
19
|
<%=h(@task.description) %>
|
20
|
+
<% if show_backlog %>
|
21
|
+
<br/>
|
22
|
+
<%=l :backlog%>: <%=detour_to(h(@task.backlog.name), :controller => 'backlogs', :action => :show, :id => @task.backlog) %>
|
23
|
+
<% end %>
|
20
24
|
</div>
|
21
25
|
|
22
26
|
|
@@ -31,7 +35,7 @@
|
|
31
35
|
:class => :task_time, :maxlength => 5 %>
|
32
36
|
<% end %>
|
33
37
|
<% elsif @task.track_times? && (@task.period_id.nil? || @task.period.active?) %>
|
34
|
-
<%=image_link_to_remote 'hammer.png', l(:start_work), {:controller => 'tasks', :action => :start_work, :id => @task.id}, nil, true %>
|
38
|
+
<%=image_link_to_remote 'hammer.png', l(:start_work), with_detour({:controller => 'tasks', :action => :start_work, :id => @task.id}), nil, true %>
|
35
39
|
<% end -%>
|
36
40
|
<% end -%>
|
37
41
|
</div>
|
@@ -65,7 +69,7 @@
|
|
65
69
|
<% if active && @task.loggable? -%>
|
66
70
|
<% if @task.track_todo? -%>
|
67
71
|
<% if @task.period.nil? || @task.period.active_or_future? -%>
|
68
|
-
<%
|
72
|
+
<% remote_form_for(:estimate, :url => {:action => :update_task_estimate, :id => @task}) do |f| -%>
|
69
73
|
<%=f.text_field :todo, :tabindex => i+2, :id => "task_#{@task.id}_todo", :value => @task.todo, :class => :task_hours, :maxlength => 4 %>
|
70
74
|
<% end -%>
|
71
75
|
<% else -%>
|
@@ -36,21 +36,13 @@ function handleEvent(field, event, id) {
|
|
36
36
|
</script>
|
37
37
|
|
38
38
|
<% if @tasks %>
|
39
|
+
<%=render :partial => '/tasks/fields_header', :locals => {:backlog => nil, :active => true, :track_times => @tasks.find {|t|t.period && t.period.active?}} %>
|
39
40
|
<ul class="task_list">
|
40
41
|
<% i = 0 %>
|
41
42
|
<% current_backlog = nil %>
|
42
43
|
<% current_period = nil %>
|
43
44
|
<% for task in @tasks %>
|
44
|
-
|
45
|
-
<%= render :partial => '/tasks/backlog_header', :locals => {:backlog => task.backlog, :track_times => @tasks.find {|t|t.period && t.period.active?}} %>
|
46
|
-
<% current_backlog = task.backlog %>
|
47
|
-
<% end %>
|
48
|
-
<% if task.period != current_period %>
|
49
|
-
<%=render :partial => '/tasks/period_header', :locals => {:period => task.period} %>
|
50
|
-
<%=render :partial => '/tasks/fields_header', :locals => {:backlog => task.root_task.backlog, :active => true, :track_times => @tasks.find {|t|t.period && t.period.active?}} %>
|
51
|
-
<% current_period = task.period %>
|
52
|
-
<% end %>
|
53
|
-
<%=render :partial => 'task', :locals => { :task => task, :i => i, :active => true, :highlight_task => (task == @selected_task), :update => :spotlight, :hidden => false } %>
|
45
|
+
<%=render :partial => 'task', :locals => { :task => task, :i => i, :active => true, :highlight_task => (task == @selected_task), :update => :spotlight, :show_backlog => true, :hidden => false } %>
|
54
46
|
<% i += 1 %>
|
55
47
|
<% end %>
|
56
48
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
textarea {font-family:Arial, Helvetica, sans-serif; font-size:10.8pt;}
|
2
2
|
|
3
3
|
.task_description { width: 300px; }
|
4
|
-
.task_hours { width:
|
5
|
-
.task_time { width:
|
4
|
+
.task_hours { width: 2.5em; text-align: right}
|
5
|
+
.task_time { width: 3em; text-align: right; }
|
6
6
|
.image-submit {height: 22px; border: 0; margin-bottom: 1px; padding: 0; vertical-align: bottom; float: none;}
|
7
7
|
table.input {border-collapse: collapse}
|
8
8
|
table.input td {vertical-align: top; margin: 0; border: 0; padding: 0 1px;}
|
@@ -13,15 +13,15 @@ table.input td {vertical-align: top; margin: 0; border: 0; padding: 0 1px;}
|
|
13
13
|
#maincontent div.btitle img.image-submit {float: right;}
|
14
14
|
#maincontent div.btitle h4 {margin-top: 6px;}
|
15
15
|
.highlight {background: yellow;}
|
16
|
-
.task_list {width:
|
16
|
+
.task_list {width: 100%; text-align: left; list-style-type: none; padding-left: 0}
|
17
17
|
.task_list li {margin-left: 0}
|
18
18
|
.tasks {cursor: move}
|
19
19
|
.task_id {float: left; padding-left: 2px; width: 3em; text-align: center}
|
20
20
|
.task_description {float: left; padding: 1px; width: auto}
|
21
|
-
.task_start {float: left; width:
|
21
|
+
.task_start {float: left; width: 5em; text-align: center}
|
22
22
|
.task_end_work {float: left; width: 2em}
|
23
|
-
.task_done {float: left; width:
|
24
|
-
.task_todo {float: left; width: 3em; padding: 1px}
|
23
|
+
.task_done {float: left; width: 3.6em; text-align: right; padding: 1px}
|
24
|
+
.task_todo {float: left; width: 4.3em; padding: 1px; text-align: center;}
|
25
25
|
.task_buttons {float: left; width: 5em}
|
26
26
|
.dragable-hover {background: yellow; border: 1px solid black;}
|
27
27
|
.dropzone-hover {background: yellow; border: 1px solid black;}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backlog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uwe Kubosch
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-01-
|
12
|
+
date: 2008-01-14 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|