backlog 0.35.5 → 0.36.2
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/Gemfile +19 -0
- data/Gemfile~ +4 -0
- data/History.txt +25 -0
- data/Rakefile +3 -3
- data/app/controllers/{application.rb → application_controller.rb} +1 -2
- data/app/controllers/backlogs_controller.rb +0 -16
- data/app/controllers/search_controller.rb +0 -2
- data/app/controllers/user_controller.rb +7 -7
- data/app/controllers/work_locks_controller.rb +2 -2
- data/app/controllers/works_controller.rb +23 -23
- data/app/helpers/application_helper.rb +9 -6
- data/app/helpers/backlogs_helper.rb +1 -1
- data/app/helpers/periods_helper.rb +1 -1
- data/app/models/backlog.rb +13 -10
- data/app/models/period.rb +0 -5
- data/app/models/sidebar.rb +1 -0
- data/app/models/task.rb +4 -10
- data/app/models/user.rb +5 -6
- data/app/models/user_notify.rb +0 -1
- data/app/models/work.rb +20 -25
- data/app/models/works_report_filter.rb +4 -4
- data/app/views/backlogs/_buttons.rhtml +1 -1
- data/app/views/backlogs/_form.rhtml +5 -9
- data/app/views/layouts/_left_top.rhtml +0 -1
- data/app/views/periods/_form.rhtml +1 -1
- data/app/views/search/results.rhtml +1 -12
- data/app/views/task_notify/{invite_en.rhtml → invite.en.html.erb} +0 -0
- data/app/views/task_notify/{invite_no.rhtml → invite.no.html.erb} +0 -0
- data/app/views/tasks/_task.rhtml +49 -50
- data/app/views/tasks/edit.rhtml +4 -4
- data/app/views/tasks/start_work.rjs +1 -1
- data/app/views/user/_edit.rhtml +1 -1
- data/app/views/user/change_password.rhtml +1 -1
- data/app/views/user/edit.rhtml +4 -4
- data/app/views/user/signup.rhtml +2 -2
- data/app/views/user_notify/{change_password_en.rhtml → change_password.en.html.erb} +0 -0
- data/app/views/user_notify/{change_password_no.rhtml → change_password.no.html.erb} +0 -0
- data/app/views/user_notify/{forgot_password_en.rhtml → forgot_password.en.html.erb} +0 -0
- data/app/views/user_notify/{forgot_password_no.rhtml → forgot_password.no.html.erb} +0 -0
- data/app/views/user_notify/{monitoring_en.rhtml → monitoring.en.html.erb} +0 -0
- data/app/views/user_notify/{monitoring_no.rhtml → monitoring.no.html.erb} +0 -0
- data/app/views/user_notify/{monitoring_invitation_en.rhtml → monitoring_invitation.en.html.erb} +0 -0
- data/app/views/user_notify/{monitoring_invitation_no.rhtml → monitoring_invitation.no.html.erb} +0 -0
- data/app/views/user_notify/{signup_en.rhtml → signup.en.html.erb} +0 -0
- data/app/views/user_notify/{signup_no.rhtml → signup.no.html.erb} +0 -0
- data/app/views/work_lock_notify/{lock_en.rhtml → lock.en.html.erb} +0 -0
- data/app/views/work_lock_notify/{lock_no.rhtml → lock.no.html.erb} +0 -0
- data/app/views/work_lock_notify/{nag_en.rhtml → nag.en.html.erb} +0 -0
- data/app/views/work_lock_notify/{nag_no.rhtml → nag.no.html.erb} +0 -0
- data/app/views/works/_form.rhtml +6 -6
- data/app/views/works/_new_row.rhtml +6 -6
- data/app/views/works/_row.rhtml +2 -2
- data/app/views/works/daily_work_sheet.rhtml +1 -1
- data/app/views/works/list.rhtml +6 -6
- data/app/views/works/list_excel.rhtml +8 -4
- data/app/views/works/timeliste.rhtml +14 -14
- data/app/views/works/update_row.rjs +1 -1
- data/app/views/works/weekly_work_sheet.rhtml +5 -5
- data/app/views/works/weekly_work_sheet_details.rhtml +5 -5
- data/config/boot.rb +108 -27
- data/config/database.yml +3 -26
- data/config/environment.rb +4 -12
- data/config/environments/development.rb +0 -1
- data/config/initializers/jdbc.rb +7 -0
- data/config/initializers/mongrel.rb +83 -0
- data/config/locales/en.yml +189 -0
- data/config/locales/no.yml +192 -0
- data/config/preinitializer.rb +20 -0
- data/cruise_build.sh +10 -0
- data/cruise_config.rb +1 -1
- data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +74 -0
- data/db/schema.rb +93 -127
- data/lib/class_table_inheritance.rb +53 -11
- data/lib/tasks/jdbc.rake +8 -0
- data/lib/user_system.rb +5 -1
- data/public/javascripts/controls.js +76 -79
- data/public/javascripts/dragdrop.js +166 -167
- data/public/javascripts/effects.js +174 -168
- data/public/javascripts/prototype.js +470 -334
- data/public/stylesheets/mwrt002.css +6 -6
- data/script/dbconsole +3 -0
- data/test/fixtures/backlogs.yml +2 -2
- data/test/fixtures/work_lock_subscriptions.yml +2 -2
- data/test/fixtures/works.yml +6 -6
- data/test/functional/absences_controller_test.rb +1 -1
- data/test/functional/backlogs_controller_test.rb +4 -4
- data/test/functional/customers_controller_test.rb +1 -1
- data/test/functional/dashboard_controller_test.rb +1 -1
- data/test/functional/estimates_controller_test.rb +1 -1
- data/test/functional/groups_controller_test.rb +1 -1
- data/test/functional/parties_controller_test.rb +1 -1
- data/test/functional/periods_controller_test.rb +1 -1
- data/test/functional/public_holidays_controller_test.rb +1 -1
- data/test/functional/search_controller_test.rb +1 -1
- data/test/functional/task_files_controller_test.rb +1 -1
- data/test/functional/tasks_controller_test.rb +6 -6
- data/test/functional/user_controller_test.rb +3 -2
- data/test/functional/welcome_controller_test.rb +1 -1
- data/test/functional/work_locks_controller_test.rb +1 -1
- data/test/functional/works_controller_test.rb +11 -11
- data/test/test_helper.rb +2 -2
- data/test/unit/absence_test.rb +1 -1
- data/test/unit/configuration_test.rb +1 -1
- data/test/unit/customer_test.rb +1 -1
- data/test/unit/estimate_test.rb +1 -1
- data/test/unit/group_test.rb +1 -1
- data/test/unit/party_test.rb +1 -1
- data/test/unit/period_test.rb +1 -1
- data/test/unit/public_holiday_test.rb +1 -1
- data/test/unit/task_file_test.rb +1 -1
- data/test/unit/task_test.rb +1 -1
- data/test/unit/user_test.rb +1 -1
- data/test/unit/work_lock_subscription_test.rb +1 -1
- data/test/unit/work_lock_test.rb +1 -1
- data/test/unit/work_test.rb +8 -8
- data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +3 -3
- data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +2 -2
- data/vendor/plugins/auto_complete/README +23 -0
- data/vendor/plugins/auto_complete/Rakefile +22 -0
- data/vendor/plugins/auto_complete/init.rb +2 -0
- data/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
- data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
- data/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
- data/vendor/plugins/backlog_jira/init.rb +4 -0
- data/vendor/plugins/backlog_jira/{tasks → lib/tasks}/backlog_jira_tasks.rake +0 -0
- data/vendor/plugins/has_history/{tasks → lib/tasks}/has_history_tasks.rake +0 -0
- metadata +745 -817
- data/#SearchRequest.xml# +0 -3443
- data/app/controllers/application.rb~ +0 -207
- data/app/controllers/work_accounts_controller.rb +0 -58
- data/app/helpers/work_accounts_helper.rb +0 -2
- data/app/models/work_account.rb +0 -18
- data/app/models/work_lock_subscription.rb +0 -3
- data/app/views/work_accounts/_form.rhtml +0 -16
- data/app/views/work_accounts/_name_list.rhtml +0 -5
- data/app/views/work_accounts/_title.rhtml +0 -5
- data/app/views/work_accounts/edit.rhtml +0 -12
- data/app/views/work_accounts/list.rhtml +0 -31
- data/app/views/work_accounts/new.rhtml +0 -10
- data/app/views/work_accounts/show.rhtml +0 -50
- data/config/environments/localization_environment.rb +0 -10
- data/jira.log +0 -98246
- data/lang/en.yaml +0 -147
- data/lang/localizations.yaml +0 -2
- data/lang/no.yaml +0 -146
- data/lib/localization.rb +0 -88
- data/test/fixtures/work_accounts.yml +0 -7
- data/test/functional/work_accounts_controller_test.rb +0 -94
- data/test/unit/localization_test.rb +0 -47
- data/test/unit/work_account_test.rb +0 -10
data/config/boot.rb
CHANGED
|
@@ -1,36 +1,117 @@
|
|
|
1
|
-
# Don't change this file
|
|
1
|
+
# Don't change this file!
|
|
2
|
+
# Configure your app in config/environment.rb and config/environments/*.rb
|
|
2
3
|
|
|
3
4
|
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
6
|
+
module Rails
|
|
7
|
+
class << self
|
|
8
|
+
def boot!
|
|
9
|
+
unless booted?
|
|
10
|
+
preinitialize
|
|
11
|
+
pick_boot.run
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def booted?
|
|
16
|
+
defined? Rails::Initializer
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def pick_boot
|
|
20
|
+
(vendor_rails? ? VendorBoot : GemBoot).new
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def vendor_rails?
|
|
24
|
+
File.exist?("#{RAILS_ROOT}/vendor/rails")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def preinitialize
|
|
28
|
+
load(preinitializer_path) if File.exist?(preinitializer_path)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def preinitializer_path
|
|
32
|
+
"#{RAILS_ROOT}/config/preinitializer.rb"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class Boot
|
|
37
|
+
def run
|
|
38
|
+
load_initializer
|
|
39
|
+
|
|
40
|
+
Rails::Initializer.class_eval do
|
|
41
|
+
def load_gems
|
|
42
|
+
@bundler_loaded ||= Bundler.require :default, Rails.env
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
Rails::Initializer.run(:set_load_path)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
class VendorBoot < Boot
|
|
51
|
+
def load_initializer
|
|
52
|
+
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
|
|
53
|
+
Rails::Initializer.run(:install_gem_spec_stubs)
|
|
54
|
+
Rails::GemDependency.add_frozen_gem_path
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class GemBoot < Boot
|
|
59
|
+
def load_initializer
|
|
60
|
+
self.class.load_rubygems
|
|
61
|
+
load_rails_gem
|
|
62
|
+
require 'initializer'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def load_rails_gem
|
|
66
|
+
if version = self.class.gem_version
|
|
67
|
+
gem 'rails', version
|
|
22
68
|
else
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
69
|
+
gem 'rails'
|
|
70
|
+
end
|
|
71
|
+
rescue Gem::LoadError => load_error
|
|
72
|
+
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
|
73
|
+
exit 1
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
class << self
|
|
77
|
+
def rubygems_version
|
|
78
|
+
Gem::RubyGemsVersion rescue nil
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def gem_version
|
|
82
|
+
if defined? RAILS_GEM_VERSION
|
|
83
|
+
RAILS_GEM_VERSION
|
|
84
|
+
elsif ENV.include?('RAILS_GEM_VERSION')
|
|
85
|
+
ENV['RAILS_GEM_VERSION']
|
|
86
|
+
else
|
|
87
|
+
parse_gem_version(read_environment_rb)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def load_rubygems
|
|
92
|
+
require 'rubygems'
|
|
93
|
+
min_version = '1.3.1'
|
|
94
|
+
unless rubygems_version >= min_version
|
|
95
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
|
96
|
+
exit 1
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
rescue LoadError
|
|
100
|
+
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
|
27
101
|
exit 1
|
|
28
102
|
end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
103
|
+
|
|
104
|
+
def parse_gem_version(text)
|
|
105
|
+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
private
|
|
109
|
+
def read_environment_rb
|
|
110
|
+
File.read("#{RAILS_ROOT}/config/environment.rb")
|
|
111
|
+
end
|
|
32
112
|
end
|
|
33
113
|
end
|
|
34
|
-
|
|
35
|
-
Rails::Initializer.run(:set_load_path)
|
|
36
114
|
end
|
|
115
|
+
|
|
116
|
+
# All that for this:
|
|
117
|
+
Rails.boot!
|
data/config/database.yml
CHANGED
|
@@ -1,40 +1,17 @@
|
|
|
1
1
|
development:
|
|
2
|
-
#<% if RUBY_PLATFORM =~ /java/ %>
|
|
3
|
-
adapter: jdbc
|
|
4
|
-
driver: org.postgresql.Driver
|
|
5
|
-
url: jdbc:postgresql://localhost:5432/backlog_development
|
|
6
|
-
database: backlog_development
|
|
7
|
-
username: root
|
|
8
|
-
host: localhost
|
|
9
|
-
#<% else %>
|
|
10
2
|
adapter: postgresql
|
|
11
3
|
database: backlog_development
|
|
12
|
-
|
|
4
|
+
username: root
|
|
13
5
|
|
|
14
6
|
# Warning: The database defined as 'test' will be erased and
|
|
15
7
|
# re-generated from your development database when you run 'rake'.
|
|
16
8
|
# Do not set this db to the same as development or production.
|
|
17
9
|
test:
|
|
18
|
-
#<% if RUBY_PLATFORM =~ /java/ %>
|
|
19
|
-
adapter: jdbc
|
|
20
|
-
driver: org.postgresql.Driver
|
|
21
|
-
url: jdbc:postgresql://localhost:5432/backlog_test
|
|
22
|
-
database: backlog_test
|
|
23
|
-
username: cruisecontrol
|
|
24
|
-
host: localhost
|
|
25
|
-
#<% else %>
|
|
26
10
|
adapter: postgresql
|
|
27
11
|
database: backlog_test
|
|
28
|
-
|
|
12
|
+
username: cruisecontrol
|
|
29
13
|
|
|
30
14
|
production:
|
|
31
|
-
#<% if RUBY_PLATFORM =~ /java/ %>
|
|
32
|
-
adapter: jdbc
|
|
33
|
-
driver: org.postgresql.Driver
|
|
34
|
-
url: jdbc:postgresql://localhost:5432/backlog_production
|
|
35
|
-
username: root
|
|
36
|
-
host: localhost
|
|
37
|
-
#<% else %>
|
|
38
15
|
adapter: postgresql
|
|
39
16
|
database: backlog_production
|
|
40
|
-
|
|
17
|
+
username: root
|
data/config/environment.rb
CHANGED
|
@@ -18,7 +18,7 @@ unless '1.9'.respond_to?(:force_encoding)
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# Specifies gem version of Rails to use when vendor/rails is not present
|
|
21
|
-
RAILS_GEM_VERSION = '
|
|
21
|
+
RAILS_GEM_VERSION = '~>2.3.8'
|
|
22
22
|
|
|
23
23
|
# Bootstrap the Rails environment, frameworks, and default configuration
|
|
24
24
|
require File.join(File.dirname(__FILE__), 'boot')
|
|
@@ -58,11 +58,7 @@ else
|
|
|
58
58
|
puts "Optional global database config file not present (#{DB_CONFIG_FILE})"
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
require 'rubygems'
|
|
63
|
-
RAILS_CONNECTION_ADAPTERS = %w(jdbc)
|
|
64
|
-
require 'postgresql-8.2-504.jdbc4'
|
|
65
|
-
end
|
|
61
|
+
require 'class_table_inheritance'
|
|
66
62
|
|
|
67
63
|
Rails::Initializer.run do |config|
|
|
68
64
|
# Settings in config/environments/* take precedence those specified here
|
|
@@ -94,6 +90,7 @@ Rails::Initializer.run do |config|
|
|
|
94
90
|
# config.active_record.default_timezone = :utc
|
|
95
91
|
|
|
96
92
|
# See Rails::Configuration for more options
|
|
93
|
+
config.action_controller.session = { :key => "_backlog_session", :secret => "Uffsbarr, I'hll pha<dr, cum rAgdios, Vixef." }
|
|
97
94
|
end
|
|
98
95
|
|
|
99
96
|
# Add new inflection rules using the following format
|
|
@@ -106,15 +103,10 @@ end
|
|
|
106
103
|
# end
|
|
107
104
|
|
|
108
105
|
# Include your application configuration below
|
|
109
|
-
require 'environments/localization_environment'
|
|
110
|
-
require 'localization'
|
|
111
|
-
Localization::load_localized_strings
|
|
112
|
-
require 'rubygems'
|
|
113
106
|
|
|
114
|
-
require 'environments/user_environment'
|
|
107
|
+
require 'config/environments/user_environment'
|
|
115
108
|
require 'array_helper'
|
|
116
109
|
require 'big_decimal_yaml_fix'
|
|
117
|
-
require 'class_table_inheritance'
|
|
118
110
|
|
|
119
111
|
require 'version_from_history'
|
|
120
112
|
require 'user_system'
|
|
@@ -11,7 +11,6 @@ config.whiny_nils = true
|
|
|
11
11
|
# Show full error reports and disable caching
|
|
12
12
|
config.action_controller.consider_all_requests_local = true
|
|
13
13
|
config.action_controller.perform_caching = false
|
|
14
|
-
config.action_view.cache_template_extensions = false
|
|
15
14
|
config.action_view.debug_rjs = true
|
|
16
15
|
|
|
17
16
|
# Raise exceptions when mailer fails
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# This file was generated by the "jdbc" generator, which is provided
|
|
2
|
+
# by the activerecord-jdbc-adapter gem.
|
|
3
|
+
#
|
|
4
|
+
# This file allows the JDBC drivers to be hooked into ActiveRecord
|
|
5
|
+
# such that you don't have to change anything else in your Rails
|
|
6
|
+
# application.
|
|
7
|
+
require 'jdbc_adapter' if defined?(JRUBY_VERSION)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
|
|
2
|
+
if Rails.version == '2.3.8' && self.class.const_defined?(:Mongrel)
|
|
3
|
+
|
|
4
|
+
# Pulled right from latest rack. Old looked like this in 1.1.0 version.
|
|
5
|
+
#
|
|
6
|
+
# def [](k)
|
|
7
|
+
# super(@names[k] ||= @names[k.downcase])
|
|
8
|
+
# end
|
|
9
|
+
#
|
|
10
|
+
module Rack
|
|
11
|
+
module Utils
|
|
12
|
+
class HeaderHash < Hash
|
|
13
|
+
def [](k)
|
|
14
|
+
super(@names[k]) if @names[k]
|
|
15
|
+
super(@names[k.downcase])
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Code pulled from the ticket above.
|
|
22
|
+
#
|
|
23
|
+
class Mongrel::CGIWrapper
|
|
24
|
+
def header_with_rails_fix(options = 'text/html')
|
|
25
|
+
@head['cookie'] = options.delete('cookie').flatten.map { |v| v.sub(/^\n/,'') } if options.class != String and options['cookie']
|
|
26
|
+
header_without_rails_fix(options)
|
|
27
|
+
end
|
|
28
|
+
alias_method_chain :header, :rails_fix
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Pulled right from 2.3.8 ActionPack. Simple diff was
|
|
32
|
+
#
|
|
33
|
+
# if headers.include?('Set-Cookie')
|
|
34
|
+
# headers['cookie'] = headers.delete('Set-Cookie').split("\n")
|
|
35
|
+
# end
|
|
36
|
+
#
|
|
37
|
+
# to
|
|
38
|
+
#
|
|
39
|
+
# if headers['Set-Cookie']
|
|
40
|
+
# headers['cookie'] = headers.delete('Set-Cookie').split("\n")
|
|
41
|
+
# end
|
|
42
|
+
#
|
|
43
|
+
module ActionController
|
|
44
|
+
class CGIHandler
|
|
45
|
+
def self.dispatch_cgi(app, cgi, out = $stdout)
|
|
46
|
+
env = cgi.__send__(:env_table)
|
|
47
|
+
env.delete "HTTP_CONTENT_LENGTH"
|
|
48
|
+
cgi.stdinput.extend ProperStream
|
|
49
|
+
env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
|
|
50
|
+
env.update({
|
|
51
|
+
"rack.version" => [0,1],
|
|
52
|
+
"rack.input" => cgi.stdinput,
|
|
53
|
+
"rack.errors" => $stderr,
|
|
54
|
+
"rack.multithread" => false,
|
|
55
|
+
"rack.multiprocess" => true,
|
|
56
|
+
"rack.run_once" => false,
|
|
57
|
+
"rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
|
|
58
|
+
})
|
|
59
|
+
env["QUERY_STRING"] ||= ""
|
|
60
|
+
env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
|
|
61
|
+
env["REQUEST_PATH"] ||= "/"
|
|
62
|
+
env.delete "PATH_INFO" if env["PATH_INFO"] == ""
|
|
63
|
+
status, headers, body = app.call(env)
|
|
64
|
+
begin
|
|
65
|
+
out.binmode if out.respond_to?(:binmode)
|
|
66
|
+
out.sync = false if out.respond_to?(:sync=)
|
|
67
|
+
headers['Status'] = status.to_s
|
|
68
|
+
if headers['Set-Cookie']
|
|
69
|
+
headers['cookie'] = headers.delete('Set-Cookie').split("\n")
|
|
70
|
+
end
|
|
71
|
+
out.write(cgi.header(headers))
|
|
72
|
+
body.each { |part|
|
|
73
|
+
out.write part
|
|
74
|
+
out.flush if out.respond_to?(:flush)
|
|
75
|
+
}
|
|
76
|
+
ensure
|
|
77
|
+
body.close if body.respond_to?(:close)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
en:
|
|
2
|
+
activerecord:
|
|
3
|
+
errors:
|
|
4
|
+
# The values :model, :attribute and :value are always available for interpolation
|
|
5
|
+
# The value :count is available when applicable. Can be used for pluralization.
|
|
6
|
+
messages:
|
|
7
|
+
inclusion: "is not included in the list"
|
|
8
|
+
exclusion: "is reserved"
|
|
9
|
+
invalid: "is invalid"
|
|
10
|
+
confirmation: "doesn't match confirmation"
|
|
11
|
+
accepted: "must be accepted"
|
|
12
|
+
empty: "can't be empty"
|
|
13
|
+
blank: "can't be blank"
|
|
14
|
+
too_long: "is too long (maximum is {{count}} characters)"
|
|
15
|
+
too_short: "is too short (minimum is {{count}} characters)"
|
|
16
|
+
wrong_length: "is the wrong length (should be {{count}} characters)"
|
|
17
|
+
taken: "has already been taken"
|
|
18
|
+
not_a_number: "is not a number"
|
|
19
|
+
greater_than: "must be greater than {{count}}"
|
|
20
|
+
greater_than_or_equal_to: "must be greater than or equal to {{count}}"
|
|
21
|
+
equal_to: "must be equal to {{count}}"
|
|
22
|
+
less_than: "must be less than {{count}}"
|
|
23
|
+
less_than_or_equal_to: "must be less than or equal to {{count}}"
|
|
24
|
+
odd: "must be odd"
|
|
25
|
+
even: "must be even"
|
|
26
|
+
# Append your own errors here or at the model/attributes scope.
|
|
27
|
+
|
|
28
|
+
# You can define own errors for models or model attributes.
|
|
29
|
+
# The values :model, :attribute and :value are always available for interpolation.
|
|
30
|
+
#
|
|
31
|
+
# For example,
|
|
32
|
+
# models:
|
|
33
|
+
# user:
|
|
34
|
+
# blank: "This is a custom blank message for {{model}}: {{attribute}}"
|
|
35
|
+
# attributes:
|
|
36
|
+
# login:
|
|
37
|
+
# blank: "This is a custom blank message for User login"
|
|
38
|
+
# Will define custom blank validation message for User model and
|
|
39
|
+
# custom blank validation message for login attribute of User model.
|
|
40
|
+
models:
|
|
41
|
+
|
|
42
|
+
abort: Abort
|
|
43
|
+
aborted: Aborted
|
|
44
|
+
absent: Absent
|
|
45
|
+
account: Account
|
|
46
|
+
active: Active
|
|
47
|
+
administration: Administration
|
|
48
|
+
all: All
|
|
49
|
+
all_accounts: all accounts
|
|
50
|
+
assigned_to: Assigned to
|
|
51
|
+
back: Back
|
|
52
|
+
backlog: Backlog
|
|
53
|
+
backlog_description: Task list with ordering and status tracking
|
|
54
|
+
backlogs: Backlogs
|
|
55
|
+
burn_down_chart: Burn Down Chart
|
|
56
|
+
cannot_find_user: Cannot find user %s
|
|
57
|
+
change_password: Change Password
|
|
58
|
+
complete: Complete
|
|
59
|
+
completed: Completed
|
|
60
|
+
completed_at: Ended at
|
|
61
|
+
completed_tasks: Completed Tasks
|
|
62
|
+
confirmation: Are you sure?
|
|
63
|
+
created_by: Created by
|
|
64
|
+
customer: Customer
|
|
65
|
+
daily_work_sheet: Daily work sheet
|
|
66
|
+
dashboard: Dashboard
|
|
67
|
+
delete: Delete
|
|
68
|
+
description: Description
|
|
69
|
+
details: Details
|
|
70
|
+
done: Done
|
|
71
|
+
down: Down
|
|
72
|
+
edit: Edit
|
|
73
|
+
edit_task: Edit task
|
|
74
|
+
editing: Editing
|
|
75
|
+
empty_work_record: Empty work record
|
|
76
|
+
enable_customer: Enable customer
|
|
77
|
+
enable_invoicing: Enable invoicing
|
|
78
|
+
enable_periods: Enable Sprints
|
|
79
|
+
enable_subtasks: Enable Subtasks
|
|
80
|
+
enable_users: Enable users
|
|
81
|
+
end_on: End on
|
|
82
|
+
end_work: Stop
|
|
83
|
+
estimate: Estimate
|
|
84
|
+
experimental: Experimental!
|
|
85
|
+
files: Files
|
|
86
|
+
friday: Friday
|
|
87
|
+
grab_task: Grab task
|
|
88
|
+
grabbed_by_you: Grabbed by you
|
|
89
|
+
group: Group
|
|
90
|
+
groups: Groups
|
|
91
|
+
holiday: Holiday
|
|
92
|
+
holidays_used: Holidays used
|
|
93
|
+
home: Home
|
|
94
|
+
hours: Hours
|
|
95
|
+
hours_last_month: Hours last month
|
|
96
|
+
hours_last_week: Hours last week
|
|
97
|
+
hours_this_month: Hours this month
|
|
98
|
+
hours_this_week: Hours this week
|
|
99
|
+
hours_today: Hours today
|
|
100
|
+
invite: Invite
|
|
101
|
+
invoice: Invoice
|
|
102
|
+
invoice_code: Invoice Code
|
|
103
|
+
invoice_short: Inv.
|
|
104
|
+
left: Left
|
|
105
|
+
listing_works: Recorded work
|
|
106
|
+
lock: Lock
|
|
107
|
+
log_in: Log in
|
|
108
|
+
log_out: Log out
|
|
109
|
+
main_backlog: Main Backlog
|
|
110
|
+
members: Members
|
|
111
|
+
monday: Monday
|
|
112
|
+
move_to_bottom: Move task to bottom of list
|
|
113
|
+
move_to_next_period: Move task to next sprint
|
|
114
|
+
move_to_top: Move task to top of list
|
|
115
|
+
moved: Moved
|
|
116
|
+
name: Name
|
|
117
|
+
new_backlog: Start new backlog
|
|
118
|
+
new_customer: Add new customer
|
|
119
|
+
new_group: Form new group
|
|
120
|
+
new_period: Add new sprint
|
|
121
|
+
new_task: Add new task
|
|
122
|
+
new_work: Add new work record
|
|
123
|
+
new_work_account: Add new work account
|
|
124
|
+
next: Next
|
|
125
|
+
no: No
|
|
126
|
+
no_backlog: No Backlog
|
|
127
|
+
no_pending_tasks: There are no pending tasks in this sprint.
|
|
128
|
+
no_pending_tasks_in_backlog: There are no pending tasks in this backlog.
|
|
129
|
+
not_grabbed: Not grabbed by anyone
|
|
130
|
+
notes: Notes
|
|
131
|
+
ownership: Ownership
|
|
132
|
+
paging: Paging
|
|
133
|
+
password: Password
|
|
134
|
+
period: Sprint
|
|
135
|
+
periods: Sprints
|
|
136
|
+
please_login: Please login
|
|
137
|
+
position: Position
|
|
138
|
+
postponed: Postponed
|
|
139
|
+
previous: Previous
|
|
140
|
+
previous_abr: Prev.
|
|
141
|
+
projection: Projection
|
|
142
|
+
public_holiday: Public Holiday
|
|
143
|
+
release_task: Release task
|
|
144
|
+
reopen: Reopen task
|
|
145
|
+
resolution: Resolution
|
|
146
|
+
resolution_abr: Res.
|
|
147
|
+
right: Right
|
|
148
|
+
saturday: Saturday
|
|
149
|
+
save: Save
|
|
150
|
+
search: Search
|
|
151
|
+
search_results_for: "Search results for '{{query}}'"
|
|
152
|
+
select: Select
|
|
153
|
+
shortcuts: Shortcuts
|
|
154
|
+
sick_days_used: Sick days
|
|
155
|
+
signup: Sign Up
|
|
156
|
+
specify: Specify
|
|
157
|
+
spreadsheet: Spreadsheet
|
|
158
|
+
start: Start
|
|
159
|
+
start_on: Start on
|
|
160
|
+
start_work: Start
|
|
161
|
+
started_at: Started at
|
|
162
|
+
started_tasks: Started tasks
|
|
163
|
+
stop: Stop
|
|
164
|
+
work_lock_subscriptions: Work Lock Subscriptions
|
|
165
|
+
sunday: Sunday
|
|
166
|
+
task: Task
|
|
167
|
+
tasks: Tasks
|
|
168
|
+
thursday: Thursday
|
|
169
|
+
todo: Todo
|
|
170
|
+
total: Total
|
|
171
|
+
totals: Totals
|
|
172
|
+
track_todo: Estimates
|
|
173
|
+
track_done: Track work done
|
|
174
|
+
track_times: Track start and stop times
|
|
175
|
+
tuesday: Tuesday
|
|
176
|
+
unlock: Unlock
|
|
177
|
+
unplanned_tasks: Unplanned tasks
|
|
178
|
+
up: Up
|
|
179
|
+
updated_by: Updated by
|
|
180
|
+
user: User
|
|
181
|
+
view_fullscreen: View fullscreen
|
|
182
|
+
wednesday: Wednesday
|
|
183
|
+
week: Week
|
|
184
|
+
weekly_work_sheet: Weekly work sheet
|
|
185
|
+
welcome_link: Start getting things done.
|
|
186
|
+
work: Work
|
|
187
|
+
work_account: Work Account
|
|
188
|
+
work_accounts: Work Accounts
|
|
189
|
+
yes: Yes
|