backlog 0.35.5 → 0.36.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. data/Gemfile +19 -0
  2. data/Gemfile~ +4 -0
  3. data/History.txt +25 -0
  4. data/Rakefile +3 -3
  5. data/app/controllers/{application.rb → application_controller.rb} +1 -2
  6. data/app/controllers/backlogs_controller.rb +0 -16
  7. data/app/controllers/search_controller.rb +0 -2
  8. data/app/controllers/user_controller.rb +7 -7
  9. data/app/controllers/work_locks_controller.rb +2 -2
  10. data/app/controllers/works_controller.rb +23 -23
  11. data/app/helpers/application_helper.rb +9 -6
  12. data/app/helpers/backlogs_helper.rb +1 -1
  13. data/app/helpers/periods_helper.rb +1 -1
  14. data/app/models/backlog.rb +13 -10
  15. data/app/models/period.rb +0 -5
  16. data/app/models/sidebar.rb +1 -0
  17. data/app/models/task.rb +4 -10
  18. data/app/models/user.rb +5 -6
  19. data/app/models/user_notify.rb +0 -1
  20. data/app/models/work.rb +20 -25
  21. data/app/models/works_report_filter.rb +4 -4
  22. data/app/views/backlogs/_buttons.rhtml +1 -1
  23. data/app/views/backlogs/_form.rhtml +5 -9
  24. data/app/views/layouts/_left_top.rhtml +0 -1
  25. data/app/views/periods/_form.rhtml +1 -1
  26. data/app/views/search/results.rhtml +1 -12
  27. data/app/views/task_notify/{invite_en.rhtml → invite.en.html.erb} +0 -0
  28. data/app/views/task_notify/{invite_no.rhtml → invite.no.html.erb} +0 -0
  29. data/app/views/tasks/_task.rhtml +49 -50
  30. data/app/views/tasks/edit.rhtml +4 -4
  31. data/app/views/tasks/start_work.rjs +1 -1
  32. data/app/views/user/_edit.rhtml +1 -1
  33. data/app/views/user/change_password.rhtml +1 -1
  34. data/app/views/user/edit.rhtml +4 -4
  35. data/app/views/user/signup.rhtml +2 -2
  36. data/app/views/user_notify/{change_password_en.rhtml → change_password.en.html.erb} +0 -0
  37. data/app/views/user_notify/{change_password_no.rhtml → change_password.no.html.erb} +0 -0
  38. data/app/views/user_notify/{forgot_password_en.rhtml → forgot_password.en.html.erb} +0 -0
  39. data/app/views/user_notify/{forgot_password_no.rhtml → forgot_password.no.html.erb} +0 -0
  40. data/app/views/user_notify/{monitoring_en.rhtml → monitoring.en.html.erb} +0 -0
  41. data/app/views/user_notify/{monitoring_no.rhtml → monitoring.no.html.erb} +0 -0
  42. data/app/views/user_notify/{monitoring_invitation_en.rhtml → monitoring_invitation.en.html.erb} +0 -0
  43. data/app/views/user_notify/{monitoring_invitation_no.rhtml → monitoring_invitation.no.html.erb} +0 -0
  44. data/app/views/user_notify/{signup_en.rhtml → signup.en.html.erb} +0 -0
  45. data/app/views/user_notify/{signup_no.rhtml → signup.no.html.erb} +0 -0
  46. data/app/views/work_lock_notify/{lock_en.rhtml → lock.en.html.erb} +0 -0
  47. data/app/views/work_lock_notify/{lock_no.rhtml → lock.no.html.erb} +0 -0
  48. data/app/views/work_lock_notify/{nag_en.rhtml → nag.en.html.erb} +0 -0
  49. data/app/views/work_lock_notify/{nag_no.rhtml → nag.no.html.erb} +0 -0
  50. data/app/views/works/_form.rhtml +6 -6
  51. data/app/views/works/_new_row.rhtml +6 -6
  52. data/app/views/works/_row.rhtml +2 -2
  53. data/app/views/works/daily_work_sheet.rhtml +1 -1
  54. data/app/views/works/list.rhtml +6 -6
  55. data/app/views/works/list_excel.rhtml +8 -4
  56. data/app/views/works/timeliste.rhtml +14 -14
  57. data/app/views/works/update_row.rjs +1 -1
  58. data/app/views/works/weekly_work_sheet.rhtml +5 -5
  59. data/app/views/works/weekly_work_sheet_details.rhtml +5 -5
  60. data/config/boot.rb +108 -27
  61. data/config/database.yml +3 -26
  62. data/config/environment.rb +4 -12
  63. data/config/environments/development.rb +0 -1
  64. data/config/initializers/jdbc.rb +7 -0
  65. data/config/initializers/mongrel.rb +83 -0
  66. data/config/locales/en.yml +189 -0
  67. data/config/locales/no.yml +192 -0
  68. data/config/preinitializer.rb +20 -0
  69. data/cruise_build.sh +10 -0
  70. data/cruise_config.rb +1 -1
  71. data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +74 -0
  72. data/db/schema.rb +93 -127
  73. data/lib/class_table_inheritance.rb +53 -11
  74. data/lib/tasks/jdbc.rake +8 -0
  75. data/lib/user_system.rb +5 -1
  76. data/public/javascripts/controls.js +76 -79
  77. data/public/javascripts/dragdrop.js +166 -167
  78. data/public/javascripts/effects.js +174 -168
  79. data/public/javascripts/prototype.js +470 -334
  80. data/public/stylesheets/mwrt002.css +6 -6
  81. data/script/dbconsole +3 -0
  82. data/test/fixtures/backlogs.yml +2 -2
  83. data/test/fixtures/work_lock_subscriptions.yml +2 -2
  84. data/test/fixtures/works.yml +6 -6
  85. data/test/functional/absences_controller_test.rb +1 -1
  86. data/test/functional/backlogs_controller_test.rb +4 -4
  87. data/test/functional/customers_controller_test.rb +1 -1
  88. data/test/functional/dashboard_controller_test.rb +1 -1
  89. data/test/functional/estimates_controller_test.rb +1 -1
  90. data/test/functional/groups_controller_test.rb +1 -1
  91. data/test/functional/parties_controller_test.rb +1 -1
  92. data/test/functional/periods_controller_test.rb +1 -1
  93. data/test/functional/public_holidays_controller_test.rb +1 -1
  94. data/test/functional/search_controller_test.rb +1 -1
  95. data/test/functional/task_files_controller_test.rb +1 -1
  96. data/test/functional/tasks_controller_test.rb +6 -6
  97. data/test/functional/user_controller_test.rb +3 -2
  98. data/test/functional/welcome_controller_test.rb +1 -1
  99. data/test/functional/work_locks_controller_test.rb +1 -1
  100. data/test/functional/works_controller_test.rb +11 -11
  101. data/test/test_helper.rb +2 -2
  102. data/test/unit/absence_test.rb +1 -1
  103. data/test/unit/configuration_test.rb +1 -1
  104. data/test/unit/customer_test.rb +1 -1
  105. data/test/unit/estimate_test.rb +1 -1
  106. data/test/unit/group_test.rb +1 -1
  107. data/test/unit/party_test.rb +1 -1
  108. data/test/unit/period_test.rb +1 -1
  109. data/test/unit/public_holiday_test.rb +1 -1
  110. data/test/unit/task_file_test.rb +1 -1
  111. data/test/unit/task_test.rb +1 -1
  112. data/test/unit/user_test.rb +1 -1
  113. data/test/unit/work_lock_subscription_test.rb +1 -1
  114. data/test/unit/work_lock_test.rb +1 -1
  115. data/test/unit/work_test.rb +8 -8
  116. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +3 -3
  117. data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +2 -2
  118. data/vendor/plugins/auto_complete/README +23 -0
  119. data/vendor/plugins/auto_complete/Rakefile +22 -0
  120. data/vendor/plugins/auto_complete/init.rb +2 -0
  121. data/vendor/plugins/auto_complete/lib/auto_complete.rb +47 -0
  122. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +143 -0
  123. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +67 -0
  124. data/vendor/plugins/backlog_jira/init.rb +4 -0
  125. data/vendor/plugins/backlog_jira/{tasks → lib/tasks}/backlog_jira_tasks.rake +0 -0
  126. data/vendor/plugins/has_history/{tasks → lib/tasks}/has_history_tasks.rake +0 -0
  127. metadata +745 -817
  128. data/#SearchRequest.xml# +0 -3443
  129. data/app/controllers/application.rb~ +0 -207
  130. data/app/controllers/work_accounts_controller.rb +0 -58
  131. data/app/helpers/work_accounts_helper.rb +0 -2
  132. data/app/models/work_account.rb +0 -18
  133. data/app/models/work_lock_subscription.rb +0 -3
  134. data/app/views/work_accounts/_form.rhtml +0 -16
  135. data/app/views/work_accounts/_name_list.rhtml +0 -5
  136. data/app/views/work_accounts/_title.rhtml +0 -5
  137. data/app/views/work_accounts/edit.rhtml +0 -12
  138. data/app/views/work_accounts/list.rhtml +0 -31
  139. data/app/views/work_accounts/new.rhtml +0 -10
  140. data/app/views/work_accounts/show.rhtml +0 -50
  141. data/config/environments/localization_environment.rb +0 -10
  142. data/jira.log +0 -98246
  143. data/lang/en.yaml +0 -147
  144. data/lang/localizations.yaml +0 -2
  145. data/lang/no.yaml +0 -146
  146. data/lib/localization.rb +0 -88
  147. data/test/fixtures/work_accounts.yml +0 -7
  148. data/test/functional/work_accounts_controller_test.rb +0 -94
  149. data/test/unit/localization_test.rb +0 -47
  150. data/test/unit/work_account_test.rb +0 -10
@@ -1,36 +1,117 @@
1
- # Don't change this file. Configuration is done in config/environment.rb and config/environments/*.rb
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
- unless defined?(Rails::Initializer)
6
- if File.directory?("#{RAILS_ROOT}/vendor/rails")
7
- require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
8
- else
9
- require 'rubygems'
10
-
11
- environment_without_comments = IO.readlines(File.dirname(__FILE__) + '/environment.rb').reject { |l| l =~ /^#/ }.join
12
- environment_without_comments =~ /[^#]RAILS_GEM_VERSION = '([\d.]+)'/
13
- rails_gem_version = $1
14
-
15
- if version = defined?(RAILS_GEM_VERSION) ? RAILS_GEM_VERSION : rails_gem_version
16
- # Asking for 1.1.6 will give you 1.1.6.5206, if available -- makes it easier to use beta gems
17
- rails_gem = Gem.cache.search('rails', "~>#{version}.0").sort_by { |g| g.version.version }.last
18
-
19
- if rails_gem
20
- gem "rails", "=#{rails_gem.version.version}"
21
- require rails_gem.full_gem_path + '/lib/initializer'
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
- STDERR.puts %(Cannot find gem for Rails ~>#{version}.0:
24
- Install the missing gem with 'gem install -v=#{version} rails', or
25
- change environment.rb to define RAILS_GEM_VERSION with your desired version.
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
- else
30
- gem "rails"
31
- require 'initializer'
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!
@@ -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
- #<% end %>
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
- #<% end %>
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
- #<% end %>
17
+ username: root
@@ -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 = '1.2.4'
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
- if RUBY_PLATFORM =~ /java/
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