backlog 0.17.6 → 0.18.0

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.
@@ -1,4 +1,18 @@
1
- == 0.17.6 2008-01-17
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/55.png
94
- http://backlog.kubosch.no/parties/burn_down_chart/14.png
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/55.png
103
- http://backlog.kubosch.no/parties/burn_down_chart_thumbnail/14.png
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/55.png
112
- http://backlog.kubosch.no/parties/burn_down_chart_large/14.png
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 }))
@@ -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
@@ -85,16 +85,21 @@
85
85
  <% if @task.active? -%>
86
86
  <% if @task.loggable? -%>
87
87
  <% unless @task.work_started? -%>
88
- <%# form_tag({:controller => 'tasks', :action => 'update', :id => @task}) do -%>
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
- <% form_tag({:controller => 'tasks', :action => 'update', :id => @task}) do -%>
96
- <%=image_link_to_remote('eraser.png', l(:reopen), {:action => :reopen_task, :id => @task}, nil, true) %>
97
- <% end -%>
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>
@@ -0,0 +1,2 @@
1
+ display_notice(page)
2
+ update_task(page)
@@ -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
- <h4><%=link_to @work.task.description, :controller => 'tasks', :action => :edit, :id => @work.task.id %></h4></p>
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
@@ -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 => 25) do
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
@@ -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: 5em}
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.17.6
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-19 00:00:00 +01:00
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