backlog 0.17.6 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +15 -1
- data/README.txt +6 -6
- data/app/controllers/periods_controller.rb +14 -0
- data/app/helpers/application_helper.rb +5 -0
- data/app/helpers/periods_helper.rb +1 -1
- data/app/models/task.rb +9 -0
- data/app/views/tasks/_task.rhtml +10 -5
- data/app/views/tasks/_update.rjs +2 -0
- data/app/views/works/_form.rhtml +4 -4
- data/db/migrate/026_add_users_to_tasks.rb +14 -0
- data/db/schema.rb +10 -1
- data/public/images/grab.png +0 -0
- data/public/images/grab_gray.png +0 -0
- data/public/images/task.png +0 -0
- data/public/stylesheets/backlog.css +1 -1
- metadata +7 -2
data/History.txt
CHANGED
@@ -1,4 +1,18 @@
|
|
1
|
-
== 0.
|
1
|
+
== 0.18.0 2008-01-21
|
2
|
+
|
3
|
+
=== Features
|
4
|
+
|
5
|
+
* Allowed users to associate themselves with a task by pressing the monkey icon.
|
6
|
+
Only activated if the "Enable users" option on Backlog is checked.
|
7
|
+
* Added recording of last change timestamp for tasks.
|
8
|
+
* Allowed switching of tasks when registering a work record.
|
9
|
+
* Added navigation for editing and creating tasks when registering a work record.
|
10
|
+
|
11
|
+
=== Fixes
|
12
|
+
|
13
|
+
* Updated graphs in README.txt
|
14
|
+
|
15
|
+
== 0.17.6 2008-01-19
|
2
16
|
|
3
17
|
=== Features
|
4
18
|
|
data/README.txt
CHANGED
@@ -90,8 +90,8 @@ The charts are normally not protected, so you can display the in slide shows etc
|
|
90
90
|
|
91
91
|
Examples:
|
92
92
|
|
93
|
-
http://backlog.kubosch.no/periods/burn_down_chart/
|
94
|
-
http://backlog.kubosch.no/parties/burn_down_chart/
|
93
|
+
http://backlog.kubosch.no/periods/burn_down_chart/64.png
|
94
|
+
http://backlog.kubosch.no/parties/burn_down_chart/1.png
|
95
95
|
|
96
96
|
==== Chart thumbnails
|
97
97
|
|
@@ -99,8 +99,8 @@ You can get small versions of the burn down charts by appending "_thumbnail" to
|
|
99
99
|
|
100
100
|
Examples:
|
101
101
|
|
102
|
-
http://backlog.kubosch.no/periods/burn_down_chart_thumbnail/
|
103
|
-
http://backlog.kubosch.no/parties/burn_down_chart_thumbnail/
|
102
|
+
http://backlog.kubosch.no/periods/burn_down_chart_thumbnail/64.png
|
103
|
+
http://backlog.kubosch.no/parties/burn_down_chart_thumbnail/1.png
|
104
104
|
|
105
105
|
==== Large charts
|
106
106
|
|
@@ -108,5 +108,5 @@ You can get large versions (1368x768) of the burn down charts by appending "_lar
|
|
108
108
|
|
109
109
|
Examples:
|
110
110
|
|
111
|
-
http://backlog.kubosch.no/periods/burn_down_chart_large/
|
112
|
-
http://backlog.kubosch.no/parties/burn_down_chart_large/
|
111
|
+
http://backlog.kubosch.no/periods/burn_down_chart_large/64.png
|
112
|
+
http://backlog.kubosch.no/parties/burn_down_chart_large/1.png
|
@@ -147,6 +147,20 @@ class PeriodsController < ApplicationController
|
|
147
147
|
move_task_to_period
|
148
148
|
end
|
149
149
|
|
150
|
+
def grab_task
|
151
|
+
@task = Task.find(params[:id])
|
152
|
+
@task.grab
|
153
|
+
load_tasks(@task.period)
|
154
|
+
render :template => '/tasks/_update.rjs'
|
155
|
+
end
|
156
|
+
|
157
|
+
def release_task
|
158
|
+
@task = Task.find(params[:id])
|
159
|
+
@task.release
|
160
|
+
load_tasks(@task.period)
|
161
|
+
render :template => '/tasks/_update.rjs'
|
162
|
+
end
|
163
|
+
|
150
164
|
def finish_task
|
151
165
|
@task = Task.find(params[:id])
|
152
166
|
@task.finish(Task::COMPLETED, true)
|
@@ -3,6 +3,7 @@ require 'url_for_fix'
|
|
3
3
|
|
4
4
|
module ApplicationHelper
|
5
5
|
include Localization
|
6
|
+
include UserSystem
|
6
7
|
include UrlForFix
|
7
8
|
|
8
9
|
def image_button_to(image_source, title, options)
|
@@ -104,4 +105,8 @@ module ApplicationHelper
|
|
104
105
|
record(page, "new Insertion.#{position.to_s.capitalize}($$('#{selector}').first(), '#{escaped_content}')")
|
105
106
|
end
|
106
107
|
|
108
|
+
def update_task(page)
|
109
|
+
page["task_#{@task.id}"].replace render(:partial => "/tasks/task", :locals => { :task => @task, :i => 1, :active => true, :highlight_task => false, :update => :spotlight, :hidden => false })
|
110
|
+
end
|
111
|
+
|
107
112
|
end
|
@@ -18,7 +18,7 @@ module PeriodsHelper
|
|
18
18
|
page.remove "completed_period_#{@task.period_id}"
|
19
19
|
page.visual_effect :fade, :completed_tasks
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
22
22
|
|
23
23
|
def add_active_task(page)
|
24
24
|
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 }))
|
data/app/models/task.rb
CHANGED
@@ -16,6 +16,7 @@ class Task < ActiveRecord::Base
|
|
16
16
|
has_many :estimates, :order => 'created_at', :dependent => :destroy
|
17
17
|
has_many :works, :order => 'completed_at', :dependent => :destroy
|
18
18
|
has_many :task_files, :dependent => :destroy
|
19
|
+
has_and_belongs_to_many :users
|
19
20
|
|
20
21
|
acts_as_list :scope => '#{parent_id ? "parent_id = #{parent_id}" : period_id ? "period_id = #{period_id}" : "period_id IS NULL AND parent_id IS NULL AND backlog_id = #{backlog_id}"} AND finished_at IS NULL'
|
21
22
|
acts_as_tree :order => 'position'
|
@@ -186,6 +187,14 @@ class Task < ActiveRecord::Base
|
|
186
187
|
end
|
187
188
|
end
|
188
189
|
|
190
|
+
def grab
|
191
|
+
self.users << current_user
|
192
|
+
end
|
193
|
+
|
194
|
+
def release
|
195
|
+
self.users.delete current_user
|
196
|
+
end
|
197
|
+
|
189
198
|
def finish(resolution, save_work)
|
190
199
|
unless finished_at || work_started?
|
191
200
|
self.finished_at = Time.now
|
data/app/views/tasks/_task.rhtml
CHANGED
@@ -85,16 +85,21 @@
|
|
85
85
|
<% if @task.active? -%>
|
86
86
|
<% if @task.loggable? -%>
|
87
87
|
<% unless @task.work_started? -%>
|
88
|
-
|
88
|
+
<% if @task.backlog.enable_users? %>
|
89
|
+
<% if @task.users.include?(current_user) %>
|
90
|
+
<%=image_link_to_remote('grab.png', l(:grab_task), {:action => :release_task, :id => @task}, nil, true)%>
|
91
|
+
<% else %>
|
92
|
+
<%=image_link_to_remote('grab_gray.png', l(:grab_task), {:action => :grab_task, :id => @task}, nil, true)%>
|
93
|
+
<% end %>
|
94
|
+
<% end %>
|
89
95
|
<%=image_link_to_remote('arrow_right.png', l(:move_to_next_period), {:action => :move_task_to_next_period, :id => @task}, nil, true) if @task.backlog.enable_periods? || @task.period_id%>
|
90
96
|
<%=image_link_to_remote('ernes_stop.png', l(:abort), {:action => :abort_task, :id => @task}, nil, true)%>
|
91
|
-
<%# end -%>
|
92
97
|
<% end -%>
|
93
98
|
<% end -%>
|
94
99
|
<% elsif (@task.period.nil? || (not @task.period.passed?)) && @task.leaf? -%>
|
95
|
-
|
96
|
-
|
97
|
-
|
100
|
+
<% form_tag({:controller => 'tasks', :action => 'update', :id => @task}) do -%>
|
101
|
+
<%=image_link_to_remote('eraser.png', l(:reopen), {:action => :reopen_task, :id => @task}, nil, true) %>
|
102
|
+
<% end -%>
|
98
103
|
<% end -%>
|
99
104
|
</div>
|
100
105
|
</div>
|
data/app/views/works/_form.rhtml
CHANGED
@@ -9,12 +9,12 @@
|
|
9
9
|
</p>
|
10
10
|
|
11
11
|
<p><%=l :task%>:<br/>
|
12
|
+
<%=select 'work', 'task_id', [['', '']] + @tasks.map{|task| [task.description_with_parents, task.id]}.sort %>
|
12
13
|
<% if @work.task %>
|
13
|
-
|
14
|
-
<%= hidden_field 'work', 'task_id' %>
|
15
|
-
<% else %>
|
16
|
-
<%= select 'work', 'task_id', [['', '']] + @tasks.map{|task| [task.description_with_parents, task.id]}.sort %></p>
|
14
|
+
<%=image_detour_to 'task.png', l(:edit_task), :controller => 'tasks', :action => :edit, :id => @work.task.id %>
|
17
15
|
<% end %>
|
16
|
+
<%=detour_to l(:new_task), :controller => 'tasks', :action => :new %>
|
17
|
+
</p>
|
18
18
|
|
19
19
|
<% if @work.task.nil? || @work.task.track_times?%>
|
20
20
|
<p><label for="work_started_at"><%=l :started_at%></label><br/>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class AddUsersToTasks < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :tasks, :updated_at, :timestamp
|
4
|
+
create_table :tasks_users, :id => false do |t|
|
5
|
+
t.column :task_id, :integer, :null => false
|
6
|
+
t.column :user_id, :integer, :null => false, :references => [:users, :party_id]
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.down
|
11
|
+
drop_table :tasks_users
|
12
|
+
remove_column :tasks, :updated_at
|
13
|
+
end
|
14
|
+
end
|
data/db/schema.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# migrations feature of ActiveRecord to incrementally modify your database, and
|
3
3
|
# then regenerate this schema definition.
|
4
4
|
|
5
|
-
ActiveRecord::Schema.define(:version =>
|
5
|
+
ActiveRecord::Schema.define(:version => 26) do
|
6
6
|
|
7
7
|
create_table "backlogs", :force => true do |t|
|
8
8
|
t.column "name", :string, :limit => 64, :null => false
|
@@ -77,10 +77,16 @@ ActiveRecord::Schema.define(:version => 25) do
|
|
77
77
|
t.column "customer_id", :integer
|
78
78
|
t.column "created_by", :integer
|
79
79
|
t.column "updated_by", :integer
|
80
|
+
t.column "updated_at", :datetime
|
80
81
|
end
|
81
82
|
|
82
83
|
add_index "tasks", ["parent_id"], :name => "index_tasks_on_parent_id"
|
83
84
|
|
85
|
+
create_table "tasks_users", :id => false, :force => true do |t|
|
86
|
+
t.column "task_id", :integer, :null => false
|
87
|
+
t.column "user_id", :integer, :null => false
|
88
|
+
end
|
89
|
+
|
84
90
|
create_table "users", :primary_key => "party_id", :force => true do |t|
|
85
91
|
t.column "login", :string, :limit => 80, :null => false
|
86
92
|
t.column "salted_password", :string, :limit => 40, :null => false
|
@@ -139,6 +145,9 @@ ActiveRecord::Schema.define(:version => 25) do
|
|
139
145
|
add_foreign_key "tasks", ["parent_id"], "tasks", ["id"], :name => "tasks_parent_id_fkey"
|
140
146
|
add_foreign_key "tasks", ["period_id"], "periods", ["id"], :name => "tasks_period_id_fkey"
|
141
147
|
|
148
|
+
add_foreign_key "tasks_users", ["task_id"], "tasks", ["id"], :name => "tasks_users_task_id_fkey"
|
149
|
+
add_foreign_key "tasks_users", ["user_id"], "users", ["party_id"], :name => "tasks_users_user_id_fkey"
|
150
|
+
|
142
151
|
add_foreign_key "users", ["party_id"], "parties", ["id"], :name => "users_party_id_fkey"
|
143
152
|
|
144
153
|
add_foreign_key "works", ["work_account_id"], "work_accounts", ["id"], :name => "works_work_account_id_fkey"
|
Binary file
|
Binary file
|
Binary file
|
@@ -22,7 +22,7 @@ table.input td {vertical-align: top; margin: 0; border: 0; padding: 0 1px;}
|
|
22
22
|
.task_end_work {float: left; width: 2em}
|
23
23
|
.task_done {float: left; width: 3.6em; text-align: right; padding: 1px}
|
24
24
|
.task_todo {float: left; width: 4.3em; padding: 1px; text-align: center;}
|
25
|
-
.task_buttons {float: left; width:
|
25
|
+
.task_buttons {float: left; width: 7em}
|
26
26
|
.dragable-hover {background: yellow; border: 1px solid black;}
|
27
27
|
.dropzone-hover {background: yellow; border: 1px solid black;}
|
28
28
|
th.hours {text-align: right;}
|
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.
|
4
|
+
version: 0.18.0
|
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-22 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- app/views/tasks/list.rhtml
|
91
91
|
- app/views/tasks/start_work.rjs
|
92
92
|
- app/views/tasks/_fields_header.rhtml
|
93
|
+
- app/views/tasks/_update.rjs
|
93
94
|
- app/views/tasks/notes.rhtml
|
94
95
|
- app/views/tasks/_completed.rhtml
|
95
96
|
- app/views/tasks/_task.rhtml
|
@@ -461,6 +462,7 @@ files:
|
|
461
462
|
- public/images/eraser.png
|
462
463
|
- public/images/rails.png
|
463
464
|
- public/images/pagebak.jpg
|
465
|
+
- public/images/task.png
|
464
466
|
- public/images/period_org.png
|
465
467
|
- public/images/arrow_up.png
|
466
468
|
- public/images/rmagick_270.gif
|
@@ -468,6 +470,7 @@ files:
|
|
468
470
|
- public/images/arrow_left.png
|
469
471
|
- public/images/arrow_right.png
|
470
472
|
- public/images/arrow_down.svg
|
473
|
+
- public/images/grab_gray.png
|
471
474
|
- public/images/arrow07_4.png
|
472
475
|
- public/images/checkmark.png
|
473
476
|
- public/images/appunti_architetto_franc_01.svg
|
@@ -482,6 +485,7 @@ files:
|
|
482
485
|
- public/images/arrow_left.svg
|
483
486
|
- public/images/header.jpg
|
484
487
|
- public/images/blank.jpg
|
488
|
+
- public/images/grab.png
|
485
489
|
- public/images/question.svg
|
486
490
|
- public/images/paper3.svg
|
487
491
|
- public/images/clipboard.png
|
@@ -588,6 +592,7 @@ files:
|
|
588
592
|
- db/migrate/011_login_sugar.rb
|
589
593
|
- db/migrate/004_add_period.rb
|
590
594
|
- db/migrate/008_add_backlog_options.rb
|
595
|
+
- db/migrate/026_add_users_to_tasks.rb
|
591
596
|
- db/migrate/020_create_task_files.rb
|
592
597
|
- db/migrate/015_add_user_option.rb
|
593
598
|
- db/migrate/019_remove_unique_index_for_period_position.rb
|