backlog 0.36.2 → 0.37.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +16 -4
- data/Gemfile.lock +130 -0
- data/History.txt +17 -0
- data/README.txt +0 -2
- data/Rakefile +17 -7
- data/app/controllers/absences_controller.rb +1 -2
- data/app/controllers/application_controller.rb +13 -14
- data/app/controllers/application_controller.rb.rails2 +186 -0
- data/app/controllers/estimates_controller.rb +1 -1
- data/app/controllers/groups_controller.rb +3 -1
- data/app/controllers/periods_controller.rb +61 -50
- data/app/controllers/{backlogs_controller.rb → projects_controller.rb} +35 -35
- data/app/controllers/search_controller.rb +2 -2
- data/app/controllers/tasks_controller.rb +11 -11
- data/app/controllers/user_controller.rb +6 -4
- data/app/controllers/welcome_controller.rb +4 -4
- data/app/controllers/work_locks_controller.rb +2 -2
- data/app/controllers/works_controller.rb +31 -31
- data/app/helpers/application_helper.rb +2 -2
- data/app/helpers/application_helper.rb.rails2 +118 -0
- data/app/helpers/periods_helper.rb +3 -3
- data/app/helpers/{backlogs_helper.rb → projects_helper.rb} +5 -5
- data/app/helpers/user_helper.rb +2 -2
- data/app/{models → mailers}/user_notify.rb +1 -0
- data/app/models/absence.rb +2 -2
- data/{lib → app/models}/clock.rb +0 -0
- data/app/models/estimate.rb +2 -2
- data/app/models/party.rb +1 -2
- data/app/models/period.rb +17 -18
- data/app/models/{backlog.rb → project.rb} +2 -2
- data/app/models/sidebar.rb +2 -2
- data/app/models/task.rb +28 -28
- data/app/models/user.rb +5 -4
- data/app/models/work.rb +29 -23
- data/app/models/work_lock_nagger.rb +1 -1
- data/app/models/works_report_filter.rb +4 -4
- data/app/views/customers/_name_list.rhtml +1 -1
- data/app/views/layouts/_headers.rhtml +2 -1
- data/app/views/layouts/_left_top.rhtml +32 -29
- data/app/views/layouts/_shortcuts.rhtml +15 -9
- data/app/views/layouts/_shortcuts_js.rhtml +4 -4
- data/app/views/layouts/mwrt002.html.erb +44 -0
- data/app/views/periods/_burn_down_chart.rhtml +1 -1
- data/app/views/periods/_show_active.rhtml +3 -3
- data/app/views/periods/_title.rhtml +1 -1
- data/app/views/{backlogs → projects}/_buttons.rhtml +4 -4
- data/app/views/projects/_form.rhtml +44 -0
- data/app/views/projects/_name_list.rhtml +5 -0
- data/app/views/projects/edit.rhtml +14 -0
- data/app/views/{backlogs → projects}/finish_task.rjs +0 -0
- data/app/views/projects/list.rhtml +16 -0
- data/app/views/{backlogs → projects}/move_task_to_period.rjs +0 -0
- data/app/views/{backlogs → projects}/new.rhtml +1 -1
- data/app/views/{backlogs → projects}/reopen_task.rjs +0 -0
- data/app/views/{backlogs → projects}/show.rhtml +6 -6
- data/app/views/search/results.rhtml +3 -3
- data/app/views/tasks/_backlog_header.rhtml +4 -4
- data/app/views/tasks/_completed.rhtml +2 -2
- data/app/views/tasks/_form.rhtml +13 -13
- data/app/views/tasks/_task.rhtml +10 -10
- data/app/views/tasks/edit.rhtml +1 -1
- data/app/views/tasks/list.rhtml +3 -3
- data/app/views/tasks/list_started.rhtml +4 -4
- data/app/views/tasks/start_work.rjs +1 -1
- data/app/views/user/login.rhtml +1 -1
- data/app/views/user/signup.rhtml +1 -1
- data/app/views/user/welcome.rhtml +1 -1
- data/app/views/works/_description_list.rhtml +1 -1
- data/app/views/works/_form.rhtml +5 -5
- data/app/views/works/_new_row.rhtml +8 -8
- data/app/views/works/_row.rhtml +1 -1
- data/app/views/works/_task_id_list.rhtml +1 -1
- data/app/views/works/daily_work_sheet.rhtml +1 -1
- data/app/views/works/list.rhtml +5 -5
- data/app/views/works/list_excel.rhtml +2 -2
- data/app/views/works/timeliste.rhtml +14 -14
- data/app/views/works/weekly_work_sheet.rhtml +5 -5
- data/app/views/works/weekly_work_sheet_details.rhtml +5 -5
- data/backlog.gemspec +44 -0
- data/bin/backlog +5 -1
- data/config.ru +4 -0
- data/config/application.rb +10 -0
- data/config/boot.rb +12 -116
- data/config/database.yml +3 -6
- data/config/database.yml~ +17 -0
- data/config/environment.rb +28 -49
- data/config/environments/development.rb +24 -20
- data/config/environments/development.rb.rails2 +26 -0
- data/config/environments/production.rb +26 -22
- data/config/environments/test.rb +20 -15
- data/config/environments/user_environment.rb +1 -1
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/inflections.rb +10 -0
- data/config/initializers/jdbc.rb +1 -1
- data/config/initializers/mime_types.rb +5 -0
- data/config/initializers/secret_token.rb +7 -0
- data/config/initializers/session_store.rb +8 -0
- data/config/locales/en.yml +22 -11
- data/config/locales/no.yml +1 -0
- data/config/routes.rb +4 -5
- data/cruise_build.sh +6 -2
- data/db/migrate/004_add_period.rb +22 -22
- data/db/migrate/015_add_user_option.rb +5 -19
- data/db/migrate/017_increase_backlog_name_limit.rb +10 -0
- data/db/migrate/021_create_work_accounts.rb +0 -2
- data/db/migrate/20101006092700_rename_backlogs_to_projects.rb +22 -0
- data/db/migrate/20101006092700_rename_backlogs_to_projects.rb~ +22 -0
- data/db/schema.rb +27 -30
- data/db/seeds.rb +7 -0
- data/lib/array_helper.rb +0 -8
- data/lib/class_table_inheritance.rb +8 -7
- data/lib/tasks/backup.rake +3 -3
- data/lib/tasks/jdbc.rake +2 -2
- data/lib/version_from_history.rb +1 -1
- data/public/404.html +23 -7
- data/public/422.html +26 -0
- data/public/500.html +23 -6
- data/public/images/rails.png +0 -0
- data/public/javascripts/controls.js +5 -3
- data/public/javascripts/dragdrop.js +7 -6
- data/public/javascripts/effects.js +8 -13
- data/public/javascripts/prototype.js +3381 -1700
- data/public/javascripts/rails.js +175 -0
- data/public/robots.txt +5 -1
- data/script/rails +6 -0
- data/test/client/login.rb +0 -2
- data/test/client/login_test.rb +1 -1
- data/test/client/setup.rb +25 -24
- data/test/fixtures/{backlogs.yml → projects.yml} +2 -2
- data/test/fixtures/tasks.yml +9 -9
- data/test/fixtures/work_lock_subscriptions.yml +2 -2
- data/test/fixtures/works.yml +7 -7
- data/test/functional/periods_controller_test.rb +1 -1
- data/test/functional/{backlogs_controller_test.rb → projects_controller_test.rb} +22 -21
- data/test/functional/search_controller_test.rb +1 -1
- data/test/functional/tasks_controller_test.rb +17 -17
- data/test/functional/user_controller_test.rb +16 -21
- data/test/functional/welcome_controller_test.rb +4 -3
- data/test/functional/works_controller_test.rb +5 -5
- data/test/integration/user_system_test.rb +1 -1
- data/test/mocks/test/clock.rb +1 -1
- data/test/performance/browsing_test.rb +9 -0
- data/test/performance/common.rb +1 -1
- data/test/test_helper.rb +23 -6
- data/test/test_helper.rb~ +121 -0
- data/test/unit/user_test.rb +3 -3
- data/test/unit/work_test.rb +7 -7
- data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +0 -2
- data/vendor/plugins/{foreign_key_migrations → dynamic_form}/MIT-LICENSE +1 -1
- data/vendor/plugins/dynamic_form/README +13 -0
- data/vendor/plugins/dynamic_form/Rakefile +10 -0
- data/vendor/plugins/dynamic_form/dynamic_form.gemspec +12 -0
- data/vendor/plugins/dynamic_form/init.rb +1 -0
- data/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +300 -0
- data/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +8 -0
- data/vendor/plugins/dynamic_form/lib/dynamic_form.rb +5 -0
- data/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +42 -0
- data/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +370 -0
- data/vendor/plugins/dynamic_form/test/test_helper.rb +9 -0
- data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +432 -0
- data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
- data/vendor/plugins/rails_time/test/debug.log +1 -0
- data/vendor/plugins/{redhillonrails_core → verification}/MIT-LICENSE +1 -1
- data/vendor/plugins/verification/README +34 -0
- data/vendor/plugins/verification/Rakefile +22 -0
- data/vendor/plugins/verification/init.rb +3 -0
- data/vendor/plugins/verification/lib/action_controller/verification.rb +132 -0
- data/vendor/plugins/verification/test/test_helper.rb +18 -0
- data/vendor/plugins/verification/test/verification_test.rb +270 -0
- data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +1 -1
- metadata +115 -134
- data/Gemfile~ +0 -4
- data/History.txt~ +0 -961
- data/LICENSE_LOCALIZATION +0 -20
- data/README_LOCALIZATION +0 -61
- data/README_RAILS +0 -180
- data/app/views/backlogs/_form.rhtml +0 -44
- data/app/views/backlogs/_name_list.rhtml +0 -5
- data/app/views/backlogs/edit.rhtml +0 -14
- data/app/views/backlogs/list.rhtml +0 -16
- data/app/views/layouts/mwrt002.rhtml +0 -43
- data/config/initializers/mongrel.rb +0 -83
- data/config/preinitializer.rb +0 -20
- data/config/warble.rb~ +0 -84
- data/db/migrate/017_insert_datek_projects.rb +0 -98
- data/lib/change_column_null_migration_fix.rb +0 -15
- data/no_test.rb~ +0 -6
- data/public/dispatch.cgi +0 -10
- data/public/dispatch.fcgi +0 -24
- data/public/dispatch.rb +0 -10
- data/script/about +0 -3
- data/script/breakpointer +0 -3
- data/script/console +0 -3
- data/script/dbconsole +0 -3
- data/script/destroy +0 -3
- data/script/generate +0 -3
- data/script/performance/benchmarker +0 -3
- data/script/performance/profiler +0 -3
- data/script/plugin +0 -3
- data/script/process/inspector +0 -3
- data/script/process/reaper +0 -3
- data/script/process/spawner +0 -3
- data/script/runner +0 -3
- data/script/server +0 -3
- data/test/client/login.rb~ +0 -33
- data/test/mocks/test/user_notify.rb +0 -16
- data/vendor/plugins/foreign_key_migrations/CHANGELOG +0 -103
- data/vendor/plugins/foreign_key_migrations/README +0 -87
- data/vendor/plugins/foreign_key_migrations/about.yml +0 -5
- data/vendor/plugins/foreign_key_migrations/init.rb +0 -1
- data/vendor/plugins/foreign_key_migrations/install.rb +0 -1
- data/vendor/plugins/foreign_key_migrations/lib/foreign_key_migrations.rb +0 -3
- data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/base.rb +0 -22
- data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/abstract_adapter.rb +0 -22
- data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb +0 -28
- data/vendor/plugins/lightwindow_helper/README +0 -33
- data/vendor/plugins/lightwindow_helper/assets/images/ajax-loading.gif +0 -0
- data/vendor/plugins/lightwindow_helper/assets/images/arrow-down.gif +0 -0
- data/vendor/plugins/lightwindow_helper/assets/images/arrow-up.gif +0 -0
- data/vendor/plugins/lightwindow_helper/assets/images/black-70.png +0 -0
- data/vendor/plugins/lightwindow_helper/assets/images/black.png +0 -0
- data/vendor/plugins/lightwindow_helper/assets/images/nextlabel.gif +0 -0
- data/vendor/plugins/lightwindow_helper/assets/images/prevlabel.gif +0 -0
- data/vendor/plugins/lightwindow_helper/assets/javascripts/lightwindow.js +0 -1921
- data/vendor/plugins/lightwindow_helper/assets/stylesheets/lightwindow.css +0 -376
- data/vendor/plugins/lightwindow_helper/init.rb +0 -1
- data/vendor/plugins/lightwindow_helper/install.rb +0 -7
- data/vendor/plugins/lightwindow_helper/lib/lightwindow_helper.rb +0 -31
- data/vendor/plugins/redhillonrails_core/CHANGELOG +0 -150
- data/vendor/plugins/redhillonrails_core/README +0 -124
- data/vendor/plugins/redhillonrails_core/init.rb +0 -19
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +0 -54
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +0 -31
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +0 -21
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +0 -26
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +0 -11
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +0 -74
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +0 -8
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +0 -99
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +0 -16
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +0 -9
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +0 -27
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +0 -27
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +0 -47
- data/vendor/plugins/transactional_migrations/CHANGELOG +0 -9
- data/vendor/plugins/transactional_migrations/MIT-LICENSE +0 -20
- data/vendor/plugins/transactional_migrations/README +0 -15
- data/vendor/plugins/transactional_migrations/about.yml +0 -5
- data/vendor/plugins/transactional_migrations/init.rb +0 -1
- data/vendor/plugins/transactional_migrations/lib/red_hill_consulting/transactional_migrations/active_record/migration.rb +0 -19
@@ -1,22 +1,22 @@
|
|
1
1
|
class PeriodsController < ApplicationController
|
2
2
|
skip_before_filter :populate_layout, :only => [:index, :show_no_layout, :destroy, :burn_down_chart_thumbnail, :burn_down_chart]
|
3
3
|
skip_before_filter :authenticate_user, :only => [:burn_down_chart, :burn_down_chart_thumbnail, :burn_down_chart_large]
|
4
|
-
|
4
|
+
|
5
5
|
def index
|
6
|
-
active_periods
|
7
|
-
my_active_periods = active_periods.select {|period| period.party.includes?(current_user)}
|
6
|
+
active_periods = Period.find(:all).select { |period| period.active?(true) }
|
7
|
+
my_active_periods = active_periods.select { |period| period.party.includes?(current_user) }
|
8
8
|
unless my_active_periods.empty?
|
9
|
-
most_urgent_period = my_active_periods.sort_by {|p| p.required_speed}.last
|
9
|
+
most_urgent_period = my_active_periods.sort_by { |p| p.required_speed }.last
|
10
10
|
else
|
11
|
-
most_urgent_period = active_periods.sort_by {|p| p.required_speed}.last
|
11
|
+
most_urgent_period = active_periods.sort_by { |p| p.required_speed }.last
|
12
12
|
end
|
13
13
|
flash.keep
|
14
14
|
redirect_to :action => 'show', :id => most_urgent_period
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
|
18
|
-
verify :method => :post, :only => [
|
19
|
-
|
18
|
+
verify :method => :post, :only => [:destroy, :create, :update], :redirect_to => {:action => :index}
|
19
|
+
|
20
20
|
def show
|
21
21
|
if params[:task_id]
|
22
22
|
@selected_task = Task.find(params[:task_id])
|
@@ -24,7 +24,7 @@ class PeriodsController < ApplicationController
|
|
24
24
|
if @selected_task
|
25
25
|
@period = @selected_task.period
|
26
26
|
if @period.nil?
|
27
|
-
redirect_to :controller => '
|
27
|
+
redirect_to :controller => 'projects', :action => :show, :id => @selected_task.project.id
|
28
28
|
return
|
29
29
|
end
|
30
30
|
elsif params[:id] && @period = Period.find_by_id(params[:id])
|
@@ -41,27 +41,27 @@ class PeriodsController < ApplicationController
|
|
41
41
|
@show_only_grabbed_tasks = session['show_only_grabbed_tasks'] == 'true'
|
42
42
|
load_tasks(@period)
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def show_no_layout
|
46
46
|
show
|
47
47
|
render :partial => 'show_active', :layout => false, :locals => {:i => 0}
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
def new
|
51
51
|
@period = Period.new
|
52
52
|
if params[:period] && params[:period][:party_id]
|
53
53
|
@period.party_id = params[:period][:party_id]
|
54
|
-
previous
|
54
|
+
previous = @period.party.periods.last
|
55
55
|
if previous
|
56
56
|
@period.start_on = previous.end_on + 1
|
57
|
-
@period.end_on
|
57
|
+
@period.end_on = previous.end_on + (1 + (previous.end_on - previous.start_on))
|
58
58
|
else
|
59
59
|
@period.start_on = Date.today
|
60
60
|
end
|
61
61
|
end
|
62
62
|
@parties = Party.find(:all)
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
def create
|
66
66
|
@period = Period.new(params[:period])
|
67
67
|
if @period.save
|
@@ -72,11 +72,11 @@ class PeriodsController < ApplicationController
|
|
72
72
|
render :action => 'new'
|
73
73
|
end
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
def edit
|
77
77
|
@period = Period.find(params[:id])
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
def update
|
81
81
|
@period = Period.find(params[:id])
|
82
82
|
if @period.update_attributes(params[:period])
|
@@ -86,36 +86,40 @@ class PeriodsController < ApplicationController
|
|
86
86
|
render :action => 'edit'
|
87
87
|
end
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
def destroy
|
91
91
|
Period.find(params[:id]).destroy
|
92
92
|
flash[:notice] = 'Period was successfully deleted.'
|
93
93
|
redirect_to :action => 'index'
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
96
|
def burn_down_chart_thumbnail
|
97
97
|
send_burn_down_chart Chart::THUMBNAIL
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
def burn_down_chart
|
101
101
|
send_burn_down_chart Chart::NORMAL
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
def burn_down_chart_large
|
105
105
|
send_burn_down_chart Chart::LARGE
|
106
106
|
end
|
107
|
-
|
107
|
+
|
108
108
|
def list_work
|
109
109
|
if @period = Period.find_by_id(params[:id])
|
110
|
-
@works = @period.tasks.map {|t| t.works}.flatten.sort_by {|w| [w.completed_at || Time.now.midnight, w.started_on, w.start_time]}
|
111
|
-
|
110
|
+
@works = @period.tasks.map { |t| t.works }.flatten.sort_by { |w| [w.completed_at || Time.now.midnight, w.started_on, w.start_time] }
|
111
|
+
|
112
|
+
def @works.page_count;
|
113
|
+
size / 25;
|
114
|
+
end
|
115
|
+
|
112
116
|
render :template => '/works/list'
|
113
117
|
else
|
114
118
|
flash[:notice] = "You need to provide a period ID"
|
115
119
|
redirect_to ''
|
116
120
|
end
|
117
121
|
end
|
118
|
-
|
122
|
+
|
119
123
|
def make_link
|
120
124
|
if params[:id].to_i > 0
|
121
125
|
render :partial => 'link', :layout => false, :locals => {:period => Period.find(params[:id])}
|
@@ -123,7 +127,7 @@ class PeriodsController < ApplicationController
|
|
123
127
|
render :text => ''
|
124
128
|
end
|
125
129
|
end
|
126
|
-
|
130
|
+
|
127
131
|
def move_task_to_period
|
128
132
|
params[:id] = $1 if params[:id] =~ /^task_(\d*)/
|
129
133
|
@task = Task.find(params[:id])
|
@@ -139,42 +143,49 @@ class PeriodsController < ApplicationController
|
|
139
143
|
redirect_to :action => :show, :id => @task.period, :task_id => @task.id, :layout => false
|
140
144
|
end
|
141
145
|
else
|
142
|
-
|
146
|
+
if @task.period
|
147
|
+
rjs_detour_to :action => :new, :period => {:party_id => @task.period.party_id}, :layout => false
|
148
|
+
else
|
149
|
+
rjs_redirect_to :controller => :tasks, :action => :edit, :id => @task.id, :layout => false
|
150
|
+
end
|
143
151
|
end
|
144
152
|
else
|
145
153
|
redirect_to :action => :show, :id => @task.period, :task_id => @task.id, :layout => false
|
146
154
|
end
|
147
155
|
end
|
148
|
-
|
156
|
+
|
149
157
|
def move_task_to_next_period
|
150
158
|
@task = Task.find(params[:id])
|
151
|
-
|
152
|
-
|
153
|
-
|
159
|
+
if @task.period
|
160
|
+
next_period = @task.period.lower_item
|
161
|
+
next_period = next_period.lower_item while next_period && next_period.passed?
|
162
|
+
params[:period_id] = next_period && next_period.id
|
163
|
+
end
|
154
164
|
move_task_to_period
|
155
165
|
end
|
156
|
-
|
166
|
+
|
157
167
|
def finish_task
|
158
168
|
@task = Task.find(params[:id])
|
159
169
|
@task.finish(Task::COMPLETED, true)
|
160
170
|
load_tasks(@task.period)
|
161
171
|
end
|
162
|
-
|
172
|
+
|
163
173
|
def abort_task
|
164
174
|
@task = Task.find params[:id]
|
165
175
|
@task.abort
|
166
176
|
load_tasks(@task.period)
|
167
177
|
render :action => :finish_task, :layout => false
|
168
178
|
end
|
169
|
-
|
179
|
+
|
170
180
|
def reopen_task
|
171
181
|
@task = Task.find(params[:id])
|
172
182
|
@task.reopen
|
173
183
|
@task.reload
|
174
184
|
finished_count = Task.count(:conditions => ['period_id = ? AND finished_at IS NOT NULL', @task.period_id])
|
175
185
|
@last_finished = finished_count == 0
|
186
|
+
load_tasks(@task.period)
|
176
187
|
end
|
177
|
-
|
188
|
+
|
178
189
|
def update_task_estimate
|
179
190
|
if params[:id]
|
180
191
|
@task = Task.find_by_id(params[:id])
|
@@ -184,7 +195,7 @@ class PeriodsController < ApplicationController
|
|
184
195
|
@task.estimate(params[:estimate][:todo])
|
185
196
|
@period = @task.period
|
186
197
|
@success, flash[:notice] = true, 'Estimate updated'
|
187
|
-
|
198
|
+
rescue ArgumentError => e
|
188
199
|
@success, flash[:notice] = false, "Estimate was not numeric"
|
189
200
|
end
|
190
201
|
if @task.finished?
|
@@ -201,31 +212,31 @@ class PeriodsController < ApplicationController
|
|
201
212
|
return false, 'Task id is missing.'
|
202
213
|
end
|
203
214
|
end
|
204
|
-
|
215
|
+
|
205
216
|
def order
|
206
|
-
if params.keys.find {|k| k =~ /active_tasks_(.*)/}
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
217
|
+
if params.keys.find { |k| k =~ /active_tasks_(.*)/ }
|
218
|
+
period_id = $1
|
219
|
+
ids = params["active_tasks_#{period_id}"]
|
220
|
+
tasks = ids.select { |id| not id.empty? }
|
221
|
+
tasks.each_with_index do |id, idx|
|
222
|
+
task = Task.find(id)
|
223
|
+
task.insert_at(idx + 1)
|
224
|
+
task.save!
|
225
|
+
end
|
215
226
|
end
|
216
227
|
end
|
217
228
|
|
218
229
|
private
|
219
|
-
|
230
|
+
|
220
231
|
def send_burn_down_chart(size)
|
221
232
|
period = Period.find(params[:id])
|
222
|
-
g
|
233
|
+
g = period.burn_down_graph(size)
|
223
234
|
send_data(g, :disposition => 'inline', :type => 'image/png', :filename => "burn_down_chart.png")
|
224
235
|
end
|
225
|
-
|
236
|
+
|
226
237
|
def load_tasks(period)
|
227
|
-
@tasks
|
238
|
+
@tasks = period.open_tasks
|
228
239
|
@completed_tasks = period.completed_tasks.reverse
|
229
240
|
end
|
230
|
-
|
241
|
+
|
231
242
|
end
|
@@ -1,9 +1,8 @@
|
|
1
|
-
class
|
1
|
+
class ProjectsController < ApplicationController
|
2
2
|
skip_before_filter :populate_layout, :only => [:index, :burn_down_chart, :burn_down_chart_thumbnail, :destroy]
|
3
3
|
|
4
4
|
# GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
|
5
|
-
verify :method => :post, :only => [ :destroy, :create, :update ],
|
6
|
-
:redirect_to => { :action => :index }
|
5
|
+
verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :index }
|
7
6
|
|
8
7
|
def index
|
9
8
|
flash.keep
|
@@ -11,30 +10,30 @@ class BacklogsController < ApplicationController
|
|
11
10
|
redirect_to :controller => 'tasks', :action => :list_started
|
12
11
|
return
|
13
12
|
end
|
14
|
-
if
|
13
|
+
if Project.count == 0
|
15
14
|
redirect_to :action => :new
|
16
15
|
return
|
17
16
|
end
|
18
|
-
|
19
|
-
redirect_to :action => :show, :id =>
|
17
|
+
most_urgent_project = Project.find(:first, :order => :id)
|
18
|
+
redirect_to :action => :show, :id => most_urgent_project.id
|
20
19
|
end
|
21
20
|
|
22
21
|
def list
|
23
|
-
@
|
22
|
+
@projects = Project.find(:all, :order => 'name')
|
24
23
|
end
|
25
24
|
|
26
25
|
def show
|
27
26
|
if params[:id]
|
28
|
-
@
|
27
|
+
@project = Project.find(params[:id])
|
29
28
|
end
|
30
|
-
unless @
|
31
|
-
@
|
32
|
-
unless @
|
33
|
-
redirect_to :controller => '
|
29
|
+
unless @project
|
30
|
+
@project = Project.find(:first)
|
31
|
+
unless @project
|
32
|
+
redirect_to :controller => 'projects', :action => :new
|
34
33
|
return
|
35
34
|
end
|
36
35
|
end
|
37
|
-
load_tasks(@
|
36
|
+
load_tasks(@project)
|
38
37
|
end
|
39
38
|
|
40
39
|
def show_no_layout
|
@@ -43,21 +42,21 @@ class BacklogsController < ApplicationController
|
|
43
42
|
end
|
44
43
|
|
45
44
|
def new
|
46
|
-
@
|
45
|
+
@project = Project.new
|
47
46
|
end
|
48
47
|
|
49
48
|
def create
|
50
|
-
@
|
51
|
-
if @
|
52
|
-
flash[:notice] = '
|
53
|
-
redirect_to :action => :show, :id => @
|
49
|
+
@project = Project.new(params[:project])
|
50
|
+
if @project.save
|
51
|
+
flash[:notice] = 'Project was successfully created.'
|
52
|
+
redirect_to :action => :show, :id => @project
|
54
53
|
else
|
55
54
|
render :action => 'new'
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
59
58
|
def edit
|
60
|
-
@
|
59
|
+
@project = Project.find(params[:id])
|
61
60
|
end
|
62
61
|
|
63
62
|
def edit_no_layout
|
@@ -66,18 +65,20 @@ class BacklogsController < ApplicationController
|
|
66
65
|
end
|
67
66
|
|
68
67
|
def update
|
69
|
-
@
|
70
|
-
if @
|
71
|
-
flash[:notice] = '
|
72
|
-
back_or_redirect_to :action => :show, :id => @
|
68
|
+
@project = Project.find(params[:id])
|
69
|
+
if @project.update_attributes(params[:project])
|
70
|
+
flash[:notice] = 'Project was successfully updated.'
|
71
|
+
back_or_redirect_to :action => :show, :id => @project
|
73
72
|
else
|
74
73
|
render :action => 'edit'
|
75
74
|
end
|
76
75
|
end
|
77
76
|
|
78
77
|
def destroy
|
79
|
-
|
80
|
-
|
78
|
+
project = Project.find(params[:id])
|
79
|
+
project.work_lock_subscribers.delete_all
|
80
|
+
project.destroy
|
81
|
+
flash[:notice] = 'Project was successfully deleted.'
|
81
82
|
redirect_to :action => 'index'
|
82
83
|
end
|
83
84
|
|
@@ -94,7 +95,7 @@ class BacklogsController < ApplicationController
|
|
94
95
|
@success, flash[:notice] = false, "Estimate was not numeric"
|
95
96
|
end
|
96
97
|
if @task.finished?
|
97
|
-
load_tasks(@task.
|
98
|
+
load_tasks(@task.project)
|
98
99
|
render :action => 'finish_task', :layout => false
|
99
100
|
else
|
100
101
|
render :template => '/tasks/update_estimate', :layout => false
|
@@ -111,13 +112,13 @@ class BacklogsController < ApplicationController
|
|
111
112
|
def finish_task
|
112
113
|
@task = Task.find(params[:id])
|
113
114
|
@task.finish(Task::COMPLETED, true)
|
114
|
-
load_tasks(@task.
|
115
|
+
load_tasks(@task.project)
|
115
116
|
end
|
116
117
|
|
117
118
|
def abort_task
|
118
119
|
@task = Task.find params[:id]
|
119
120
|
@task.abort
|
120
|
-
load_tasks(@task.
|
121
|
+
load_tasks(@task.project)
|
121
122
|
render :action => :finish_task, :layout => false
|
122
123
|
end
|
123
124
|
|
@@ -129,7 +130,7 @@ class BacklogsController < ApplicationController
|
|
129
130
|
if period && period.active_or_future?
|
130
131
|
next_task = @task.higher_item ? @task.higher_item : @task.lower_item ? @task.lower_item : @task
|
131
132
|
@task.move_to_period period
|
132
|
-
load_tasks(@task.
|
133
|
+
load_tasks(@task.project)
|
133
134
|
render :action => :move_task_to_period, :layout => false
|
134
135
|
else
|
135
136
|
rjs_detour_to :controller => 'periods', :action => :new, :period => {:party_id => @task.period.party_id}, :layout => false
|
@@ -153,7 +154,7 @@ class BacklogsController < ApplicationController
|
|
153
154
|
|
154
155
|
def reopen_task
|
155
156
|
@task = Task.find(params[:id]).reopen
|
156
|
-
load_tasks(@task.
|
157
|
+
load_tasks(@task.project)
|
157
158
|
end
|
158
159
|
|
159
160
|
def order
|
@@ -174,12 +175,11 @@ class BacklogsController < ApplicationController
|
|
174
175
|
|
175
176
|
private
|
176
177
|
|
177
|
-
def load_tasks(
|
178
|
-
unplanned_tasks =
|
179
|
-
planned_tasks =
|
178
|
+
def load_tasks(project)
|
179
|
+
unplanned_tasks = project.tasks.select {|t| t.period.nil? && t.finished_at.nil?}.sort_by {|t| t.position}
|
180
|
+
planned_tasks = project.tasks.select {|t| t.period && t.finished_at.nil?}.sort_by {|t| [t.period.end_on, t.position.to_i]}
|
180
181
|
@tasks = planned_tasks + unplanned_tasks
|
181
|
-
@completed_tasks =
|
182
|
-
|
182
|
+
@completed_tasks = project.tasks.select {|t| t.finished_at}.sort {|t1, t2| t2.finished_at <=> t1.finished_at}
|
183
183
|
end
|
184
184
|
|
185
185
|
end
|
@@ -3,11 +3,11 @@ class SearchController < ApplicationController
|
|
3
3
|
def results
|
4
4
|
if params[:q]
|
5
5
|
@search = params[:q]
|
6
|
-
@
|
6
|
+
@projects = Project.find(:all, :conditions => ["lower(name) LIKE ?", "%#{@search.downcase}%"])
|
7
7
|
@tasks = Task.find(:all, :conditions => ["lower(description) LIKE ? OR lower(notes) LIKE ?", "%#{@search.downcase}%", "%#{@search.downcase}%"])
|
8
8
|
@works = Work.find(:all, :conditions => ["lower(description) LIKE ? OR lower(notes) LIKE ?", "%#{@search.downcase}%", "%#{@search.downcase}%"])
|
9
9
|
else
|
10
|
-
@
|
10
|
+
@projects = []
|
11
11
|
@tasks = []
|
12
12
|
@works = []
|
13
13
|
end
|