Compare commits

...

1027 commits

Author SHA1 Message Date
Jyri-Petteri Paloposki
97220798db
Merge pull request #3143 from TracksApp/dependabot/bundler/nokogiri-1.18.9
Some checks failed
Build latest / Build latest (push) Has been cancelled
Bump nokogiri from 1.18.8 to 1.18.9
2025-09-20 18:18:25 +03:00
Jyri-Petteri Paloposki
bebdcb233c
Merge pull request #3142 from TracksApp/dependabot/bundler/thor-1.4.0
Bump thor from 1.3.2 to 1.4.0
2025-09-20 18:18:09 +03:00
Jyri-Petteri Paloposki
52c9a50f16
Merge pull request #3141 from TracksApp/dependabot/bundler/sqlite3-2.7.3
Bump sqlite3 from 2.7.2 to 2.7.3
2025-09-20 18:17:55 +03:00
Jyri-Petteri Paloposki
6e0cb8125d
Merge pull request #3149 from TracksApp/dependabot/bundler/rack-mini-profiler-4.0.1
Bump rack-mini-profiler from 4.0.0 to 4.0.1
2025-09-20 18:17:41 +03:00
Jyri-Petteri Paloposki
1d483148d7
Merge pull request #3156 from TracksApp/dependabot/bundler/stripe-15.5.0
Bump stripe from 15.3.0 to 15.5.0
2025-09-20 18:16:41 +03:00
Jyri-Petteri Paloposki
d397e7be97
Merge pull request #3161 from bluewings1211/add_zh_TW_support
Add Traditional Chinese (Taiwan) localization support
2025-09-20 14:32:15 +03:00
Jyri-Petteri Paloposki
8a8a816645
Merge pull request #3167 from TracksApp/fix_build
Fix build by changing how Yarn is installed
2025-09-20 14:29:38 +03:00
Jyri-Petteri Paloposki
36cba2fffc Fix build by changing how Yarn is installed 2025-09-20 14:21:16 +03:00
bluewings1211
02ca81f761 Add Traditional Chinese (Taiwan) localization support
- Add jQuery UI datepicker Traditional Chinese localization file
- Add complete zh-TW locale file with translations for all UI elements
- Configure asset precompilation for datepicker locale files
2025-09-05 16:19:23 +08:00
dependabot[bot]
f8966fb48f
Bump stripe from 15.3.0 to 15.5.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 15.3.0 to 15.5.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v15.3.0...v15.5.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-version: 15.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 03:19:53 +00:00
dependabot[bot]
a121b6381d
Bump rack-mini-profiler from 4.0.0 to 4.0.1
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v4.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-version: 4.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-01 00:23:28 +00:00
dependabot[bot]
d670a70ede
Bump nokogiri from 1.18.8 to 1.18.9
---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 04:04:24 +00:00
dependabot[bot]
21e27915a6
Bump thor from 1.3.2 to 1.4.0
---
updated-dependencies:
- dependency-name: thor
  dependency-version: 1.4.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 02:08:59 +00:00
dependabot[bot]
2691d18cdb
Bump sqlite3 from 2.7.2 to 2.7.3
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 2.7.2 to 2.7.3.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v2.7.2...v2.7.3)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-version: 2.7.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 00:12:20 +00:00
Jyri-Petteri Paloposki
4ffdf00dca
Merge pull request #3140 from TracksApp/dependabot/bundler/rubocop-1.78.0
Bump rubocop from 1.77.0 to 1.78.0
2025-07-11 18:35:07 +03:00
dependabot[bot]
889540cc94
Bump rubocop from 1.77.0 to 1.78.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.77.0 to 1.78.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.77.0...v1.78.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.78.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 00:04:29 +00:00
Jyri-Petteri Paloposki
ea70f0a13b
Merge pull request #3139 from TracksApp/dependabot/bundler/sqlite3-2.7.2
Bump sqlite3 from 2.7.1 to 2.7.2
2025-07-07 15:07:05 +03:00
dependabot[bot]
3b2c26478f
Bump sqlite3 from 2.7.1 to 2.7.2
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 2.7.1 to 2.7.2.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v2.7.1...v2.7.2)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-version: 2.7.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 00:01:25 +00:00
Jyri-Petteri Paloposki
a2d86b5d6c
Merge pull request #3135 from TracksApp/dependabot/bundler/rubocop-1.77.0
Bump rubocop from 1.70.0 to 1.77.0
2025-07-02 10:24:31 +03:00
Jyri-Petteri Paloposki
86a0ace6b9
Merge pull request #3136 from TracksApp/dependabot/bundler/stripe-15.3.0
Bump stripe from 15.2.1 to 15.3.0
2025-07-02 10:24:17 +03:00
Jyri-Petteri Paloposki
18e9fb7b0c
Merge pull request #3137 from TracksApp/dependabot/bundler/sqlite3-2.7.1
Bump sqlite3 from 2.7.0 to 2.7.1
2025-07-02 10:24:06 +03:00
Jyri-Petteri Paloposki
a3e23ef9ed
Merge pull request #3138 from TracksApp/dependabot/bundler/solargraph-0.56.0
Bump solargraph from 0.55.4 to 0.56.0
2025-07-02 10:23:54 +03:00
dependabot[bot]
4cf825cb83
Bump solargraph from 0.55.4 to 0.56.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.55.4 to 0.56.0.
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.55.4...v0.56.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-version: 0.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 00:16:38 +00:00
dependabot[bot]
c684b1ce19
Bump sqlite3 from 2.7.0 to 2.7.1
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 2.7.0 to 2.7.1.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v2.7.0...v2.7.1)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-version: 2.7.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 00:16:27 +00:00
dependabot[bot]
86b982df8e
Bump stripe from 15.2.1 to 15.3.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 15.2.1 to 15.3.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v15.2.1...v15.3.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-version: 15.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 00:16:16 +00:00
dependabot[bot]
c1dd33975b
Bump rubocop from 1.70.0 to 1.77.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.70.0 to 1.77.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.70.0...v1.77.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-version: 1.77.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-02 00:15:55 +00:00
Jyri-Petteri Paloposki
661ef20c5f
Merge pull request #3133 from TracksApp/dependabot/bundler/rails-dom-testing-2.3.0
Bump rails-dom-testing from 2.2.0 to 2.3.0
2025-07-01 12:48:16 +03:00
Jyri-Petteri Paloposki
ab640a8f46
Merge pull request #3131 from TracksApp/dependabot/bundler/rexml-3.4.1
Bump rexml from 3.4.0 to 3.4.1
2025-07-01 12:48:01 +03:00
Jyri-Petteri Paloposki
8a50b67edd
Merge pull request #3130 from TracksApp/dependabot/bundler/spring-4.3.0
Bump spring from 4.2.1 to 4.3.0
2025-07-01 12:47:50 +03:00
Jyri-Petteri Paloposki
61841c1f14
Merge pull request #3127 from TracksApp/dependabot/bundler/bullet-8.0.8
Bump bullet from 8.0.0 to 8.0.8
2025-07-01 12:47:40 +03:00
dependabot[bot]
e7aace3cac
Bump rexml from 3.4.0 to 3.4.1
Bumps [rexml](https://github.com/ruby/rexml) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.0...v3.4.1)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 09:02:10 +00:00
dependabot[bot]
160b9a7ab5
Bump rails-dom-testing from 2.2.0 to 2.3.0
Bumps [rails-dom-testing](https://github.com/rails/rails-dom-testing) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/rails/rails-dom-testing/releases)
- [Commits](https://github.com/rails/rails-dom-testing/compare/v2.2.0...v2.3.0)

---
updated-dependencies:
- dependency-name: rails-dom-testing
  dependency-version: 2.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 08:58:55 +00:00
dependabot[bot]
2f5451a713
Bump spring from 4.2.1 to 4.3.0
Bumps [spring](https://github.com/rails/spring) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.2.1...v4.3.0)

---
updated-dependencies:
- dependency-name: spring
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 08:58:49 +00:00
dependabot[bot]
42e397d028
Bump bullet from 8.0.0 to 8.0.8
Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.0.0 to 8.0.8.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/8.0.0...8.0.8)

---
updated-dependencies:
- dependency-name: bullet
  dependency-version: 8.0.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 08:58:39 +00:00
Jyri-Petteri Paloposki
edf145f366
Merge pull request #3129 from TracksApp/dependabot/bundler/stripe-15.2.1
Bump stripe from 13.3.1 to 15.2.1
2025-07-01 11:58:19 +03:00
Jyri-Petteri Paloposki
82e49bd00b
Merge pull request #3128 from TracksApp/dependabot/bundler/rspec-expectations-3.13.5
Bump rspec-expectations from 3.13.3 to 3.13.5
2025-07-01 11:58:05 +03:00
Jyri-Petteri Paloposki
e3a26f9396
Merge pull request #3126 from TracksApp/dependabot/bundler/byebug-12.0.0
Bump byebug from 11.1.3 to 12.0.0
2025-07-01 11:57:51 +03:00
Jyri-Petteri Paloposki
3fbf0b07f5
Merge pull request #3134 from TracksApp/dependabot/bundler/solargraph-0.55.4
Bump solargraph from 0.51.0 to 0.55.4
2025-07-01 11:57:39 +03:00
dependabot[bot]
4bbc809a1c
Bump solargraph from 0.51.0 to 0.55.4
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.51.0 to 0.55.4.
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.51.0...v0.55.4)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-version: 0.55.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 00:23:25 +00:00
dependabot[bot]
a185b2c0f8
Bump stripe from 13.3.1 to 15.2.1
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 13.3.1 to 15.2.1.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v13.3.1...v15.2.1)

---
updated-dependencies:
- dependency-name: stripe
  dependency-version: 15.2.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 00:22:31 +00:00
dependabot[bot]
3ccd2345ba
Bump rspec-expectations from 3.13.3 to 3.13.5
Bumps [rspec-expectations](https://github.com/rspec/rspec) from 3.13.3 to 3.13.5.
- [Changelog](https://github.com/rspec/rspec/blob/rspec-expectations-v3.13.5/rspec-expectations/Changelog.md)
- [Commits](https://github.com/rspec/rspec/compare/rspec-expectations-v3.13.3...rspec-expectations-v3.13.5)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-version: 3.13.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 00:22:21 +00:00
dependabot[bot]
95597a969c
Bump byebug from 11.1.3 to 12.0.0
Bumps [byebug](https://github.com/deivid-rodriguez/byebug) from 11.1.3 to 12.0.0.
- [Release notes](https://github.com/deivid-rodriguez/byebug/releases)
- [Changelog](https://github.com/deivid-rodriguez/byebug/blob/master/CHANGELOG.md)
- [Commits](https://github.com/deivid-rodriguez/byebug/compare/v11.1.3...v12.0.0)

---
updated-dependencies:
- dependency-name: byebug
  dependency-version: 12.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 00:21:58 +00:00
Jyri-Petteri Paloposki
4f6d806724
Merge pull request #3124 from TracksApp/fix_env
Upgrade to Rails 7.1 and add some environment fixes
2025-06-30 01:00:08 +03:00
Jyri-Petteri Paloposki
63d2060dc1 Use MariaDB instead of MySQL also in tests 2025-06-30 00:49:34 +03:00
Jyri-Petteri Paloposki
2eb54b1c3e Upgrade to Rails 7.1 2025-06-30 00:45:25 +03:00
Jyri-Petteri Paloposki
36b47125ef Change to a new JS preprocessor, change from MySQL to MariaDB and fix polling 2025-06-29 21:27:27 +03:00
Jyri-Petteri Paloposki
d51432d09b
Merge pull request #3118 from TracksApp/dependabot/bundler/factory_bot_rails-6.5.0
Bump factory_bot_rails from 6.4.4 to 6.5.0
2025-06-29 15:39:55 +03:00
Jyri-Petteri Paloposki
46a6cd716b
Merge pull request #3120 from TracksApp/dependabot/bundler/jquery-ui-rails-8.0.0
Bump jquery-ui-rails from 7.0.0 to 8.0.0
2025-06-29 15:37:25 +03:00
Jyri-Petteri Paloposki
1a9ffd96d3
Merge pull request #3122 from TracksApp/dependabot/bundler/sanitize-7.0.0
Bump sanitize from 6.1.3 to 7.0.0
2025-06-29 15:37:12 +03:00
dependabot[bot]
eecd15b150
Bump sanitize from 6.1.3 to 7.0.0
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.1.3 to 7.0.0.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.1.3...v7.0.0)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 12:29:26 +00:00
dependabot[bot]
7b6f7fe8bb
Bump factory_bot_rails from 6.4.4 to 6.5.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.4 to 6.5.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.4.4...v6.5.0)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-version: 6.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 12:28:19 +00:00
dependabot[bot]
2f6dd0f808
Bump jquery-ui-rails from 7.0.0 to 8.0.0
Bumps [jquery-ui-rails](https://github.com/joliss/jquery-ui-rails) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/joliss/jquery-ui-rails/releases)
- [Changelog](https://github.com/jquery-ui-rails/jquery-ui-rails/blob/master/History.md)
- [Commits](https://github.com/joliss/jquery-ui-rails/compare/v7.0.0...v8.0.0)

---
updated-dependencies:
- dependency-name: jquery-ui-rails
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 12:26:52 +00:00
Jyri-Petteri Paloposki
8a8bdfe732
Merge pull request #3119 from TracksApp/dependabot/bundler/tolk-6.0.0
Bump tolk from 5.0.2 to 6.0.0
2025-06-29 15:26:44 +03:00
Jyri-Petteri Paloposki
db41886954
Merge pull request #3117 from TracksApp/dependabot/bundler/i18n-tasks-1.0.15
Bump i18n-tasks from 1.0.14 to 1.0.15
2025-06-29 15:24:44 +03:00
Jyri-Petteri Paloposki
77d12853c1
Merge pull request #3123 from TracksApp/dependabot/bundler/nokogiri-1.18.8
Bump nokogiri from 1.17.2 to 1.18.8
2025-06-29 15:24:27 +03:00
dependabot[bot]
19c8fcc0d9
Bump tolk from 5.0.2 to 6.0.0
Bumps [tolk](https://github.com/tolk/tolk) from 5.0.2 to 6.0.0.
- [Changelog](https://github.com/tolk/tolk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v5.0.2...v6.0.0)

---
updated-dependencies:
- dependency-name: tolk
  dependency-version: 6.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 12:14:45 +00:00
dependabot[bot]
b97aa8fd4e
Bump i18n-tasks from 1.0.14 to 1.0.15
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.14 to 1.0.15.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.14...v1.0.15)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.0.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 12:14:07 +00:00
Jyri-Petteri Paloposki
fc2a8bb8f3
Merge pull request #3121 from TracksApp/dependabot/bundler/sqlite3-2.7.0
Bump sqlite3 from 1.7.3 to 2.7.0
2025-06-29 15:12:20 +03:00
Jyri-Petteri Paloposki
70c5ba94df
Merge pull request #3116 from TracksApp/dependabot/bundler/puma-6.6.0
Bump puma from 6.5.0 to 6.6.0
2025-06-29 15:11:44 +03:00
dependabot[bot]
761ec11e07
Bump nokogiri from 1.17.2 to 1.18.8
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.17.2 to 1.18.8.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.17.2...v1.18.8)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 12:07:52 +00:00
Jyri-Petteri Paloposki
c69811e19c
Merge pull request #3115 from TracksApp/dependabot/bundler/rack-mini-profiler-4.0.0
Bump rack-mini-profiler from 3.3.1 to 4.0.0
2025-06-29 15:05:52 +03:00
Jyri-Petteri Paloposki
3fbe3b2c90
Merge pull request #3114 from TracksApp/dependabot/bundler/aasm-5.5.1
Bump aasm from 5.5.0 to 5.5.1
2025-06-29 15:04:58 +03:00
dependabot[bot]
8868c389af
Bump sqlite3 from 1.7.3 to 2.7.0
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.7.3 to 2.7.0.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.7.3...v2.7.0)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-version: 2.7.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 11:59:15 +00:00
dependabot[bot]
23223dea9b
Bump puma from 6.5.0 to 6.6.0
Bumps [puma](https://github.com/puma/puma) from 6.5.0 to 6.6.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.5.0...v6.6.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-version: 6.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 11:58:29 +00:00
dependabot[bot]
674e24ea62
Bump rack-mini-profiler from 3.3.1 to 4.0.0
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 3.3.1 to 4.0.0.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v3.3.1...v4.0.0)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-version: 4.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 11:58:21 +00:00
dependabot[bot]
3e07e27099
Bump aasm from 5.5.0 to 5.5.1
Bumps [aasm](https://github.com/aasm/aasm) from 5.5.0 to 5.5.1.
- [Changelog](https://github.com/aasm/aasm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aasm/aasm/compare/v5.5.0...v5.5.1)

---
updated-dependencies:
- dependency-name: aasm
  dependency-version: 5.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-29 11:58:13 +00:00
Jyri-Petteri Paloposki
c43cd6cb16
Merge pull request #3113 from TracksApp/dependabot_fix
Dependabot Ruby version
2025-06-29 14:57:30 +03:00
Jyri-Petteri Paloposki
7ed9f2ca3d Dependabot Ruby version 2025-06-29 14:51:18 +03:00
Jyri-Petteri Paloposki
b32cb2090e
Merge pull request #3112 from TracksApp/ror_70
Upgrade to RoR 7.0
2025-06-29 13:37:27 +03:00
Jyri-Petteri Paloposki
2094826d2f Change the command used for running tests 2025-06-29 13:26:58 +03:00
Jyri-Petteri Paloposki
4f94e2dfc2 Use the array syntax to avoid asset precompile failing to missing values 2025-06-29 13:25:29 +03:00
Jyri-Petteri Paloposki
13bdef74b3 Update the date formatting syntax 2025-06-29 13:25:14 +03:00
Jyri-Petteri Paloposki
3fc943ce2a No longer test for Ruby 3.0 or 3.1 2025-06-28 16:31:31 +03:00
Jyri-Petteri Paloposki
e77b83683a Upgrade to RoR 7.0 2025-06-28 16:25:52 +03:00
Jyri-Petteri Paloposki
854034c554
Merge pull request #3111 from TracksApp/fix_template_errors
Fix a few template errors caused by RoR 6
2025-06-28 16:24:05 +03:00
Jyri-Petteri Paloposki
7d9c5786be Fix a few template errors caused by RoR 6 2025-04-26 14:02:49 +03:00
Jyri-Petteri Paloposki
fa7d213ca7 Require rexml specifically to make sure it's available. The POST API didn't always work without this. 2025-01-26 18:12:15 +02:00
Jyri-Petteri Paloposki
da726b1700
Merge pull request #3108 from TracksApp/dependabot/bundler/stripe-13.3.1
Bump stripe from 13.3.0 to 13.3.1
2025-01-26 17:45:41 +02:00
Jyri-Petteri Paloposki
ffa79f2820
Merge pull request #3109 from TracksApp/dependabot/bundler/solargraph-0.51.0
Bump solargraph from 0.50.0 to 0.51.0
2025-01-26 17:45:31 +02:00
dependabot[bot]
6d5f269d77
Bump solargraph from 0.50.0 to 0.51.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.50.0 to 0.51.0.
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.50.0...v0.51.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 00:34:56 +00:00
dependabot[bot]
2144160ec5
Bump stripe from 13.3.0 to 13.3.1
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 13.3.0 to 13.3.1.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v13.3.0...v13.3.1)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-14 00:41:06 +00:00
Jyri-Petteri Paloposki
41f7a86bba
Merge pull request #3107 from TracksApp/dependabot/bundler/rubocop-1.70.0
Bump rubocop from 1.69.2 to 1.70.0
2025-01-13 12:35:40 +02:00
dependabot[bot]
03dc26c06e
Bump rubocop from 1.69.2 to 1.70.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.69.2 to 1.70.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.69.2...v1.70.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 00:11:10 +00:00
Jyri-Petteri Paloposki
10bb9e86ac
Merge pull request #3106 from TracksApp/dependabot/bundler/stripe-13.3.0
Bump stripe from 13.2.0 to 13.3.0
2024-12-19 19:46:32 +02:00
Jyri-Petteri Paloposki
4863c82469
Merge pull request #3105 from TracksApp/dependabot/bundler/font-awesome-sass-6.7.2
Bump font-awesome-sass from 6.5.2 to 6.7.2
2024-12-19 19:46:19 +02:00
dependabot[bot]
3a8988ac74
Bump stripe from 13.2.0 to 13.3.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 13.2.0 to 13.3.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v13.2.0...v13.3.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-19 00:52:52 +00:00
dependabot[bot]
5484a4c894
Bump font-awesome-sass from 6.5.2 to 6.7.2
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.5.2 to 6.7.2.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-18 00:29:28 +00:00
Jyri-Petteri Paloposki
ecaed7bca7
Merge pull request #3102 from TracksApp/dependabot/bundler/mocha-2.7.1
Bump mocha from 2.6.1 to 2.7.1
2024-12-14 14:27:18 +02:00
Jyri-Petteri Paloposki
69d3ea5f30
Merge pull request #3104 from TracksApp/dependabot/bundler/rubocop-1.69.2
Bump rubocop from 1.69.1 to 1.69.2
2024-12-14 14:27:07 +02:00
dependabot[bot]
fb38741fa2
Bump rubocop from 1.69.1 to 1.69.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.69.1 to 1.69.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.69.1...v1.69.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-13 00:43:39 +00:00
dependabot[bot]
cb9fc6900d
Bump mocha from 2.6.1 to 2.7.1
Bumps [mocha](https://github.com/freerange/mocha) from 2.6.1 to 2.7.1.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.6.1...v2.7.1)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-10 00:36:42 +00:00
Jyri-Petteri Paloposki
ad356a9a01
Merge pull request #3100 from TracksApp/dependabot/bundler/rails-html-sanitizer-1.6.1
Bump rails-html-sanitizer from 1.6.0 to 1.6.1
2024-12-09 10:47:49 +02:00
Jyri-Petteri Paloposki
b27cf9f533
Merge pull request #3101 from TracksApp/dependabot/bundler/rubocop-1.69.1
Bump rubocop from 1.69.0 to 1.69.1
2024-12-09 10:47:34 +02:00
dependabot[bot]
7d96e9b0cf
Bump rubocop from 1.69.0 to 1.69.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.69.0 to 1.69.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.69.0...v1.69.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 00:21:19 +00:00
dependabot[bot]
0487c9f17c
Bump rails-html-sanitizer from 1.6.0 to 1.6.1
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 22:09:11 +00:00
Jyri-Petteri Paloposki
4e6d8396ad
Merge pull request #3098 from TracksApp/dependabot/bundler/mocha-2.6.1
Bump mocha from 2.6.0 to 2.6.1
2024-11-29 17:51:53 +02:00
Jyri-Petteri Paloposki
c8c48306ea
Merge pull request #3097 from TracksApp/dependabot/bundler/rubocop-1.69.0
Bump rubocop from 1.68.0 to 1.69.0
2024-11-29 17:51:41 +02:00
dependabot[bot]
87a2fca247
Bump mocha from 2.6.0 to 2.6.1
Bumps [mocha](https://github.com/freerange/mocha) from 2.6.0 to 2.6.1.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.6.0...v2.6.1)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-29 00:23:38 +00:00
dependabot[bot]
9d737b57f4
Bump rubocop from 1.68.0 to 1.69.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.68.0 to 1.69.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.68.0...v1.69.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-27 00:29:20 +00:00
Jyri-Petteri Paloposki
2431cdef3b
Merge pull request #3096 from TracksApp/dependabot/bundler/mocha-2.6.0
Bump mocha from 2.5.0 to 2.6.0
2024-11-25 09:54:19 +02:00
Jyri-Petteri Paloposki
f64445cd33
Merge pull request #3095 from TracksApp/dependabot/bundler/puma-6.5.0
Bump puma from 6.4.3 to 6.5.0
2024-11-25 09:54:09 +02:00
dependabot[bot]
0d2223ef52
Bump mocha from 2.5.0 to 2.6.0
Bumps [mocha](https://github.com/freerange/mocha) from 2.5.0 to 2.6.0.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.5.0...v2.6.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 00:43:29 +00:00
dependabot[bot]
29ce045f15
Bump puma from 6.4.3 to 6.5.0
Bumps [puma](https://github.com/puma/puma) from 6.4.3 to 6.5.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.4.3...v6.5.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 00:41:59 +00:00
Jyri-Petteri Paloposki
dd406ad6cc
Merge pull request #3093 from TracksApp/dependabot/bundler/acts_as_list-1.2.4
Bump acts_as_list from 1.2.3 to 1.2.4
2024-11-23 14:23:42 +02:00
Jyri-Petteri Paloposki
c5e27b3c5a
Merge pull request #3094 from TracksApp/dependabot/bundler/stripe-13.2.0
Bump stripe from 13.1.1 to 13.2.0
2024-11-23 13:48:36 +02:00
dependabot[bot]
57cc1185f4
Bump stripe from 13.1.1 to 13.2.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 13.1.1 to 13.2.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v13.1.1...v13.2.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-21 00:12:04 +00:00
dependabot[bot]
1d1bc3b71e
Bump acts_as_list from 1.2.3 to 1.2.4
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.2.3 to 1.2.4.
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.2.3...v1.2.4)

---
updated-dependencies:
- dependency-name: acts_as_list
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 00:23:11 +00:00
Jyri-Petteri Paloposki
fbd888c200
Merge pull request #3091 from TracksApp/dependabot/bundler/mocha-2.5.0
Bump mocha from 2.4.5 to 2.5.0
2024-11-14 10:10:04 +02:00
dependabot[bot]
186901cf32
Bump mocha from 2.4.5 to 2.5.0
Bumps [mocha](https://github.com/freerange/mocha) from 2.4.5 to 2.5.0.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.4.5...v2.5.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-13 00:49:08 +00:00
Jyri-Petteri Paloposki
9a2e947173
Merge pull request #3090 from TracksApp/dependabot/bundler/bullet-8.0.0
Bump bullet from 7.2.0 to 8.0.0
2024-11-12 02:44:35 +02:00
Jyri-Petteri Paloposki
692b6bf653
Merge pull request #3089 from TracksApp/dependabot/bundler/stripe-13.1.1
Bump stripe from 13.1.0 to 13.1.1
2024-11-12 02:44:23 +02:00
dependabot[bot]
976ad893e7
Bump bullet from 7.2.0 to 8.0.0
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.2.0 to 8.0.0.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.2.0...8.0.0)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-12 00:34:41 +00:00
dependabot[bot]
fe2befc72e
Bump stripe from 13.1.0 to 13.1.1
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 13.1.0 to 13.1.1.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v13.1.0...v13.1.1)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-12 00:34:11 +00:00
Jyri-Petteri Paloposki
846494843b
Merge pull request #3087 from TracksApp/dependabot/bundler/acts_as_list-1.2.3
Bump acts_as_list from 1.2.2 to 1.2.3
2024-11-11 10:14:19 +02:00
Jyri-Petteri Paloposki
57aa499027
Merge pull request #3088 from TracksApp/dependabot/bundler/factory_bot_rails-6.4.4
Bump factory_bot_rails from 6.4.3 to 6.4.4
2024-11-11 10:14:05 +02:00
dependabot[bot]
3221f1c194
Bump factory_bot_rails from 6.4.3 to 6.4.4
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.3 to 6.4.4.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.4.3...v6.4.4)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 00:51:12 +00:00
dependabot[bot]
61b9c93a7d
Bump acts_as_list from 1.2.2 to 1.2.3
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.2.2 to 1.2.3.
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.2.2...v1.2.3)

---
updated-dependencies:
- dependency-name: acts_as_list
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 00:50:38 +00:00
Jyri-Petteri Paloposki
1ca43b8ee5
Merge pull request #3079 from TracksApp/dependabot/bundler/database_cleaner-2.1.0
Bump database_cleaner from 1.99.0 to 2.1.0
2024-11-08 19:31:47 +02:00
Jyri-Petteri Paloposki
9742bfc338
Merge pull request #3086 from TracksApp/dependabot/bundler/rubocop-1.68.0
Bump rubocop from 1.67.0 to 1.68.0
2024-11-08 19:19:33 +02:00
dependabot[bot]
39ab8dddcf
Bump rubocop from 1.67.0 to 1.68.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.67.0 to 1.68.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.67.0...v1.68.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-06 00:18:22 +00:00
dependabot[bot]
450db54865
Bump database_cleaner from 1.99.0 to 2.1.0
Bumps [database_cleaner](https://github.com/DatabaseCleaner/database_cleaner) from 1.99.0 to 2.1.0.
- [Changelog](https://github.com/DatabaseCleaner/database_cleaner/blob/main/History.rdoc)
- [Commits](https://github.com/DatabaseCleaner/database_cleaner/compare/v1.99.0...v2.1.0)

---
updated-dependencies:
- dependency-name: database_cleaner
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-05 18:04:54 +00:00
Jyri-Petteri Paloposki
f960c1939e
Merge pull request #3085 from TracksApp/dependabot/bundler/tolk-5.0.2
Bump tolk from 5.0.1 to 5.0.2
2024-11-05 20:03:41 +02:00
dependabot[bot]
308410ea71
Bump tolk from 5.0.1 to 5.0.2
Bumps [tolk](https://github.com/tolk/tolk) from 5.0.1 to 5.0.2.
- [Changelog](https://github.com/tolk/tolk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v5.0.1...v5.0.2)

---
updated-dependencies:
- dependency-name: tolk
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 00:16:19 +00:00
Jyri-Petteri Paloposki
d946081e0f
Merge pull request #3084 from TracksApp/dependabot/bundler/pg-1.5.9
Bump pg from 1.5.7 to 1.5.9
2024-11-01 10:24:34 +02:00
dependabot[bot]
c56db12281
Bump pg from 1.5.7 to 1.5.9
Bumps [pg](https://github.com/ged/ruby-pg) from 1.5.7 to 1.5.9.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.5.7...v1.5.9)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 00:28:02 +00:00
Jyri-Petteri Paloposki
a5e5d0934f
Merge pull request #3082 from TracksApp/dependabot/bundler/stripe-13.1.0
Bump stripe from 13.0.2 to 13.1.0
2024-10-31 18:18:34 +02:00
dependabot[bot]
3077578e6b
Bump stripe from 13.0.2 to 13.1.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 13.0.2 to 13.1.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v13.0.2...v13.1.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-30 00:02:43 +00:00
Jyri-Petteri Paloposki
2e82791887
Merge pull request #3081 from TracksApp/dependabot/bundler/sanitize-6.1.3
Bump sanitize from 6.1.2 to 6.1.3
2024-10-29 09:28:34 +02:00
dependabot[bot]
5b49f9e704
Bump sanitize from 6.1.2 to 6.1.3
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.1.2...v6.1.3)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-29 00:32:27 +00:00
Jyri-Petteri Paloposki
a746dd31d3
Merge pull request #3080 from TracksApp/dependabot/bundler/rexml-3.3.9
Bump rexml from 3.3.8 to 3.3.9
2024-10-28 21:54:50 +02:00
dependabot[bot]
b3754f2ee6
Bump rexml from 3.3.8 to 3.3.9
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.8 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.8...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 19:07:34 +00:00
Jyri-Petteri Paloposki
5243a0a092
Merge pull request #3077 from TracksApp/dependabot/bundler/activemodel-serializers-xml-1.0.3
Bump activemodel-serializers-xml from 1.0.2 to 1.0.3
2024-10-28 12:54:03 +02:00
dependabot[bot]
5682a380f3
Bump activemodel-serializers-xml from 1.0.2 to 1.0.3
Bumps [activemodel-serializers-xml](https://github.com/rails/activemodel-serializers-xml) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/rails/activemodel-serializers-xml/releases)
- [Commits](https://github.com/rails/activemodel-serializers-xml/compare/v1.0.2...v1.0.3)

---
updated-dependencies:
- dependency-name: activemodel-serializers-xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 00:38:36 +00:00
Jyri-Petteri Paloposki
477dd9737f
Merge pull request #3076 from TracksApp/dependabot/bundler/stripe-13.0.2
Bump stripe from 12.4.0 to 13.0.2
2024-10-25 09:57:53 +03:00
Jyri-Petteri Paloposki
4b043968ad
Merge pull request #3075 from TracksApp/dependabot/bundler/yard-0.9.37
Bump yard from 0.9.36 to 0.9.37
2024-10-25 09:57:40 +03:00
dependabot[bot]
ecccf02cc9
Bump stripe from 12.4.0 to 13.0.2
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 12.4.0 to 13.0.2.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v12.4.0...v13.0.2)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-25 00:46:12 +00:00
dependabot[bot]
9290e32739
Bump yard from 0.9.36 to 0.9.37
Bumps [yard](https://github.com/lsegal/yard) from 0.9.36 to 0.9.37.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.36...v0.9.37)

---
updated-dependencies:
- dependency-name: yard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-25 00:45:38 +00:00
Jyri-Petteri Paloposki
df1e9a064a
Merge pull request #3072 from TracksApp/dependabot/bundler/uglifier-4.2.1
Bump uglifier from 4.2.0 to 4.2.1
2024-10-24 11:54:11 +03:00
Jyri-Petteri Paloposki
e4b366494d
Merge pull request #3073 from TracksApp/dependabot/bundler/rspec-expectations-3.13.3
Bump rspec-expectations from 3.13.1 to 3.13.3
2024-10-24 11:53:53 +03:00
dependabot[bot]
cfaa0a00be
Bump rspec-expectations from 3.13.1 to 3.13.3
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.13.1 to 3.13.3.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.13.1...v3.13.3)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-24 00:09:14 +00:00
dependabot[bot]
06000a0aab
Bump uglifier from 4.2.0 to 4.2.1
Bumps [uglifier](https://github.com/lautis/uglifier) from 4.2.0 to 4.2.1.
- [Changelog](https://github.com/lautis/uglifier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/lautis/uglifier/compare/v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: uglifier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-24 00:08:47 +00:00
Jyri-Petteri Paloposki
894e497e88
Merge pull request #3047 from TracksApp/irc
Remove the IRC channel for now
2024-10-23 13:54:52 +03:00
Jyri-Petteri Paloposki
6eef42d569
Merge pull request #3064 from TracksApp/dependabot/bundler/puma-6.4.3
Bump puma from 6.4.2 to 6.4.3
2024-10-23 10:52:29 +03:00
Jyri-Petteri Paloposki
0616dc41a7
Merge pull request #3070 from TracksApp/dependabot/bundler/actionpack-6.1.7.9
Bump actionpack from 6.1.7.8 to 6.1.7.9
2024-10-23 10:52:16 +03:00
Jyri-Petteri Paloposki
7be0e4286a
Merge pull request #3071 from TracksApp/dependabot/bundler/actionmailer-6.1.7.9
Bump actionmailer from 6.1.7.8 to 6.1.7.9
2024-10-23 10:52:02 +03:00
Jyri-Petteri Paloposki
1438f25b79
Merge pull request #3069 from TracksApp/dependabot/bundler/actiontext-6.1.7.9
Bump actiontext from 6.1.7.8 to 6.1.7.9
2024-10-23 10:51:48 +03:00
dependabot[bot]
89a464d9ea
Bump puma from 6.4.2 to 6.4.3
Bumps [puma](https://github.com/puma/puma) from 6.4.2 to 6.4.3.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.4.2...v6.4.3)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 07:39:23 +00:00
dependabot[bot]
8e85af75e8
Bump actionpack from 6.1.7.8 to 6.1.7.9
Bumps [actionpack](https://github.com/rails/rails) from 6.1.7.8 to 6.1.7.9.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.2.1.1/actionpack/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v6.1.7.8...v6.1.7.9)

---
updated-dependencies:
- dependency-name: actionpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 07:38:55 +00:00
dependabot[bot]
322d2b62d8
Bump actionmailer from 6.1.7.8 to 6.1.7.9
Bumps [actionmailer](https://github.com/rails/rails) from 6.1.7.8 to 6.1.7.9.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.2.1.1/actionmailer/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v6.1.7.8...v6.1.7.9)

---
updated-dependencies:
- dependency-name: actionmailer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 07:38:53 +00:00
dependabot[bot]
6844679547
Bump actiontext from 6.1.7.8 to 6.1.7.9
Bumps [actiontext](https://github.com/rails/rails) from 6.1.7.8 to 6.1.7.9.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.2.1.1/actiontext/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v6.1.7.8...v6.1.7.9)

---
updated-dependencies:
- dependency-name: actiontext
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 07:38:46 +00:00
Jyri-Petteri Paloposki
2204b2c246
Merge pull request #3068 from TracksApp/dependabot/bundler/rubocop-1.67.0
Bump rubocop from 1.65.0 to 1.67.0
2024-10-23 10:37:36 +03:00
dependabot[bot]
87950c6500
Bump rubocop from 1.65.0 to 1.67.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.65.0 to 1.67.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.65.0...v1.67.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 07:31:23 +00:00
Jyri-Petteri Paloposki
e829daca1e
Merge pull request #3055 from TracksApp/fix_tests
Fix tests
2024-10-23 10:30:10 +03:00
Jyri-Petteri Paloposki
e4f3fd0737 Use docker compose command 2024-10-23 02:01:42 +03:00
Jyri-Petteri Paloposki
24c4634a7b Use correct var for detecting MySQL 2024-10-23 01:56:34 +03:00
Jyri-Petteri Paloposki
e70a569511 Add debug output for the DB poll 2024-08-15 13:16:14 +03:00
Jyri-Petteri Paloposki
e81919888e Remove the version specificators 2024-08-02 10:36:08 +03:00
Jyri-Petteri Paloposki
d9854e1a4e Fix tests 2024-08-02 10:23:34 +03:00
Jyri-Petteri Paloposki
8abfafa0c6
Merge pull request #3051 from TracksApp/dependabot/bundler/sanitize-6.1.2
Bump sanitize from 6.1.1 to 6.1.2
2024-08-02 10:18:29 +03:00
Jyri-Petteri Paloposki
efea77c9cb
Merge pull request #3052 from TracksApp/dependabot/bundler/pg-1.5.7
Bump pg from 1.5.6 to 1.5.7
2024-08-02 10:18:16 +03:00
dependabot[bot]
96712ee99c
Bump pg from 1.5.6 to 1.5.7
Bumps [pg](https://github.com/ged/ruby-pg) from 1.5.6 to 1.5.7.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.5.6...v1.5.7)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 00:43:02 +00:00
dependabot[bot]
a79660299a
Bump sanitize from 6.1.1 to 6.1.2
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.1.1...v6.1.2)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 00:42:31 +00:00
Jyri-Petteri Paloposki
5f456d5300
Merge pull request #3049 from TracksApp/dependabot/bundler/stripe-12.4.0
Bump stripe from 12.3.0 to 12.4.0
2024-07-26 03:49:06 +03:00
dependabot[bot]
fac04ee0c1
Bump stripe from 12.3.0 to 12.4.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 12.3.0 to 12.4.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v12.3.0...v12.4.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-26 00:39:54 +00:00
Jyri-Petteri Paloposki
d9f254e2c5 Add custom release build option 2024-07-26 00:27:43 +03:00
Jyri-Petteri Paloposki
10a6ebcb41 Remove the IRC channel for now 2024-07-25 23:59:05 +03:00
Jyri-Petteri Paloposki
36529c50b3 Release 2.7.1 2024-07-25 23:54:52 +03:00
Jyri-Petteri Paloposki
75420d9c38
Merge commit from fork
Fix a few reflected XSS vulnerabilities
2024-07-25 23:52:51 +03:00
Jyri-Petteri Paloposki
b0d288d2ef Fix reflected XSS vulnerabilities in some views 2024-07-25 23:32:56 +03:00
Jyri-Petteri Paloposki
6a4a72270e
Merge pull request #3044 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2024-07-25 21:39:10 +03:00
Jyri-Petteri Paloposki
d64e1a0fa4 Fix the plurals as usual 2024-07-25 21:34:12 +03:00
Jyri-Petteri Paloposki
c23ca0574e Fix reflected XSS vulnerability on the stats page 2024-07-25 14:53:04 +03:00
Jyri-Petteri Paloposki
c7d81bb79f
Translated using Weblate (Finnish)
Currently translated at 99.1% (1111 of 1121 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2024-07-25 13:18:31 +02:00
gallegonovato
784f8c3009
Translated using Weblate (Spanish)
Currently translated at 100.0% (1121 of 1121 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2024-07-25 13:18:31 +02:00
Jyri-Petteri Paloposki
0fc66953c0
Merge pull request #3046 from TracksApp/dependabot/bundler/mocha-2.4.5
Bump mocha from 2.4.4 to 2.4.5
2024-07-25 14:18:27 +03:00
dependabot[bot]
49fa90c7a6
Bump mocha from 2.4.4 to 2.4.5
Bumps [mocha](https://github.com/freerange/mocha) from 2.4.4 to 2.4.5.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.4.4...v2.4.5)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-25 00:28:45 +00:00
Jyri-Petteri Paloposki
31f35f50c7
Merge pull request #3045 from TracksApp/dependabot/bundler/mocha-2.4.4
Bump mocha from 2.4.3 to 2.4.4
2024-07-24 12:11:40 +03:00
dependabot[bot]
a984011ddc
Bump mocha from 2.4.3 to 2.4.4
Bumps [mocha](https://github.com/freerange/mocha) from 2.4.3 to 2.4.4.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.4.3...v2.4.4)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-24 00:32:02 +00:00
Jyri-Petteri Paloposki
22f42211b0
Merge pull request #3042 from TracksApp/dependabot/bundler/stripe-12.3.0
Bump stripe from 5.24.0 to 12.3.0
2024-07-23 13:56:24 +03:00
Jyri-Petteri Paloposki
92348f9bc5
Merge pull request #3043 from TracksApp/dependabot/bundler/mocha-2.4.3
Bump mocha from 2.4.2 to 2.4.3
2024-07-23 13:11:43 +03:00
dependabot[bot]
0d2d89780b
Bump mocha from 2.4.2 to 2.4.3
Bumps [mocha](https://github.com/freerange/mocha) from 2.4.2 to 2.4.3.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.4.2...v2.4.3)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-23 00:33:56 +00:00
dependabot[bot]
3fcdb41fa9
Bump stripe from 5.24.0 to 12.3.0
Bumps [stripe](https://github.com/stripe/stripe-ruby) from 5.24.0 to 12.3.0.
- [Release notes](https://github.com/stripe/stripe-ruby/releases)
- [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-ruby/compare/v5.24.0...v12.3.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 00:25:45 +00:00
Jyri-Petteri Paloposki
a9a978c1f8 Fix the installation documentation of postgresql. Fixes #2845. 2024-07-19 14:34:54 +03:00
Jyri-Petteri Paloposki
e1c5fbbbc2
Merge pull request #3039 from Pegasus-RPG/patch-1
Update bundle config command, add instructions for PostgreSQL
2024-07-19 14:05:48 +03:00
Jyri-Petteri Paloposki
36f139d879 Update schema.rb for Postgres support 2024-07-19 14:00:19 +03:00
Jyri-Petteri Paloposki
11a1a6a58e
Merge pull request #3040 from TracksApp/dependabot/bundler/mocha-2.4.2
Bump mocha from 2.4.0 to 2.4.2
2024-07-19 13:45:38 +03:00
Jyri-Petteri Paloposki
62ad2f7f0b
Merge pull request #3041 from TracksApp/dependabot/bundler/acts_as_list-1.2.2
Bump acts_as_list from 1.2.1 to 1.2.2
2024-07-19 13:45:25 +03:00
dependabot[bot]
a0999e3e45
Bump acts_as_list from 1.2.1 to 1.2.2
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.2.1 to 1.2.2.
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: acts_as_list
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-19 00:40:25 +00:00
dependabot[bot]
76d3083e8f
Bump mocha from 2.4.0 to 2.4.2
Bumps [mocha](https://github.com/freerange/mocha) from 2.4.0 to 2.4.2.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.4.0...v2.4.2)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-19 00:40:03 +00:00
Jyri-Petteri Paloposki
50f5a946d4 Don't use old databases in test runs 2024-07-19 00:42:44 +03:00
Jyri-Petteri Paloposki
13d7a711a4 Move jquery back to default group 2024-07-19 00:14:41 +03:00
Jyri-Petteri Paloposki
55050af2cb Test the builded code, not the one mounted. 2024-07-19 00:02:15 +03:00
Jyri-Petteri Paloposki
f5f0193b60 Add asset stuff back to being included by default for non-Docker users; move more asset-related packages to the group 2024-07-19 00:02:07 +03:00
Sean M. Pappalardo
ad87729e31 Update bundle config command, add instructions for PostgreSQL 2024-07-19 00:01:56 +03:00
Jyri-Petteri Paloposki
f097a1f5e9
Merge pull request #3038 from TracksApp/user_errors
Fix a few user creation errors to be prettier
2024-07-18 22:40:01 +03:00
Jyri-Petteri Paloposki
2bf2f9476a Fix a few user creation errors to be prettier 2024-07-18 22:34:04 +03:00
Jyri-Petteri Paloposki
7b9a1e322f
Merge pull request #3037 from TracksApp/dockerfile_git_req
Don't require the .git directory to exist for a successful Docker build.
2024-07-18 22:14:30 +03:00
Jyri-Petteri Paloposki
d2fff6a64c Don't require the .git directory to exist for a successful Docker build. 2024-07-18 22:09:35 +03:00
Jyri-Petteri Paloposki
8f7b1ab7b2
Merge pull request #3036 from TracksApp/rexml
Update rexml
2024-07-18 21:57:48 +03:00
Jyri-Petteri Paloposki
0968152c5a Update rexml 2024-07-18 21:53:03 +03:00
Jyri-Petteri Paloposki
7a64917647
Merge pull request #3035 from TracksApp/db_versions
Fix DB adapters with the same constraints as in the ActiveRecord file…
2024-07-18 21:45:38 +03:00
Jyri-Petteri Paloposki
8464d0c60e Remove the version constraint from Stripe 2024-07-18 21:39:08 +03:00
Jyri-Petteri Paloposki
212b2dc20c Fix DB adapters with the same constraints as in the ActiveRecord files (for example https://github.com/rails/rails/blob/v7.1.3.4/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb ) 2024-07-18 21:36:51 +03:00
Jyri-Petteri Paloposki
75a88f2955
Merge pull request #3033 from TracksApp/stripe
Add Stripe as an optional package and move to a single staged Dockerfile
2024-07-18 21:14:56 +03:00
Jyri-Petteri Paloposki
ff5adc5696 Replace the version-specific Dockerfiles with one staged Dockerfile 2024-07-18 21:09:04 +03:00
Jyri-Petteri Paloposki
5940fe10a6 Add Stripe as an optional package 2024-07-18 16:14:42 +03:00
Jyri-Petteri Paloposki
11ef1b6f6b
Merge pull request #3032 from TracksApp/dependabot/bundler/bullet-7.2.0
Bump bullet from 7.1.6 to 7.2.0
2024-07-18 14:52:35 +03:00
dependabot[bot]
a66dca4a6b
Bump bullet from 7.1.6 to 7.2.0
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.6 to 7.2.0.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.6...7.2.0)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 00:39:04 +00:00
Jyri-Petteri Paloposki
2726abb8ea
Merge pull request #3030 from TracksApp/dependabot/bundler/rubocop-1.65.0
Bump rubocop from 1.64.1 to 1.65.0
2024-07-13 12:10:44 +03:00
dependabot[bot]
2108b203a6
Bump rubocop from 1.64.1 to 1.65.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.64.1 to 1.65.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.64.1...v1.65.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-11 00:27:42 +00:00
Jyri-Petteri Paloposki
78ab8b0ff2
Merge pull request #3026 from TracksApp/dependabot/bundler/rspec-expectations-3.13.1
Bump rspec-expectations from 3.12.3 to 3.13.1
2024-06-25 15:58:46 +03:00
dependabot[bot]
713c89c6e0
Bump rspec-expectations from 3.12.3 to 3.13.1
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.12.3 to 3.13.1.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.12.3...v3.13.1)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 00:01:21 +00:00
Jyri-Petteri Paloposki
38db8f983d
Merge pull request #3025 from TracksApp/dependabot/bundler/mocha-2.4.0
Bump mocha from 2.1.0 to 2.4.0
2024-06-24 14:58:42 +03:00
dependabot[bot]
720cb02697
Bump mocha from 2.1.0 to 2.4.0
Bumps [mocha](https://github.com/freerange/mocha) from 2.1.0 to 2.4.0.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.1.0...v2.4.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 00:12:49 +00:00
Jyri-Petteri Paloposki
867f1bc5d1
Merge pull request #3024 from TracksApp/dependabot/bundler/bullet-7.1.6
Bump bullet from 7.1.4 to 7.1.6
2024-06-19 10:20:24 +03:00
dependabot[bot]
b280485ef2
Bump bullet from 7.1.4 to 7.1.6
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.4 to 7.1.6.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.4...7.1.6)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 00:20:33 +00:00
Jyri-Petteri Paloposki
54ed7d118b
Merge pull request #3023 from TracksApp/dependabot/bundler/RedCloth-4.3.4
Bump RedCloth from 4.3.3 to 4.3.4
2024-06-18 12:22:01 +03:00
dependabot[bot]
f20aa13b7b
Bump RedCloth from 4.3.3 to 4.3.4
Bumps [RedCloth](https://github.com/jgarber/redcloth) from 4.3.3 to 4.3.4.
- [Changelog](https://github.com/jgarber/redcloth/blob/master/CHANGELOG)
- [Commits](https://github.com/jgarber/redcloth/compare/v4.3.3...v4.3.4)

---
updated-dependencies:
- dependency-name: RedCloth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 00:55:39 +00:00
Jyri-Petteri Paloposki
247caf6e98
Merge pull request #3022 from TracksApp/release
Release 2.7
2024-06-17 13:30:46 +03:00
Jyri-Petteri Paloposki
1d79436a52 Fix Ruby 3.3 tests to correct Dockerfile 2024-06-17 13:20:55 +03:00
Jyri-Petteri Paloposki
29a8c3dff8
Merge pull request #2833 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2024-06-17 13:19:33 +03:00
Jyri-Petteri Paloposki
167274a6da Fix again the translations broken by Weblate 2024-06-17 13:12:47 +03:00
Jyri-Petteri Paloposki
b274c270f1 New version number 2024-06-17 12:48:29 +03:00
Jyri-Petteri Paloposki
d5235e8c61 Move default build to Ruby 3.3, test only MySQL for Rubies 3.1 & 3.2 (middle versions) 2024-06-17 12:46:16 +03:00
Jyri-Petteri Paloposki
6274e9e1d3 Changelog for release 2.7 2024-06-17 12:46:01 +03:00
gallegonovato
fcdc464725
Translated using Weblate (Spanish)
Currently translated at 100.0% (1119 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2024-06-17 07:58:15 +00:00
Ranforingus
8ed97a511d
Translated using Weblate (Dutch)
Currently translated at 88.2% (988 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/nl/
2024-06-17 07:58:15 +00:00
Алексей Свистунов
d26275c5e9
Translated using Weblate (Russian)
Currently translated at 97.0% (1086 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2024-06-17 07:58:14 +00:00
Burak Hüseyin Ekseli
10ad112b70
Translated using Weblate (Turkish)
Currently translated at 30.1% (337 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/tr/
2024-06-17 07:58:14 +00:00
gallegonovato
98e57367e9
Translated using Weblate (Spanish)
Currently translated at 91.0% (1019 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2024-06-17 07:58:13 +00:00
gallegonovato
ddf0260a03
Translated using Weblate (Spanish)
Currently translated at 90.9% (1018 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2024-06-17 07:58:12 +00:00
Jyri-Petteri Paloposki
2214c18d9f
Merge pull request #3021 from TracksApp/dependabot/bundler/sanitize-6.1.1
Bump sanitize from 6.1.0 to 6.1.1
2024-06-17 10:58:08 +03:00
dependabot[bot]
0eaa0d65c1
Bump sanitize from 6.1.0 to 6.1.1
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.1.0 to 6.1.1.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.1.0...v6.1.1)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 00:46:46 +00:00
Jyri-Petteri Paloposki
fa8be2a238
Merge pull request #3020 from TracksApp/fix_deferred
Test deferred view
2024-06-15 14:41:18 +03:00
Jyri-Petteri Paloposki
fd76ff273a Test deferred view 2024-06-15 14:30:13 +03:00
Jyri-Petteri Paloposki
f024ff7650
Merge pull request #3019 from TracksApp/dependabot/bundler/i18n-tasks-1.0.14
Bump i18n-tasks from 1.0.13 to 1.0.14
2024-06-14 08:09:50 +03:00
dependabot[bot]
3a0ddc0c02
Bump i18n-tasks from 1.0.13 to 1.0.14
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.13 to 1.0.14.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.13...v1.0.14)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-14 00:17:45 +00:00
Jyri-Petteri Paloposki
495d84adb7
Merge pull request #3018 from TracksApp/dependabot/bundler/listen-3.9.0
Bump listen from 3.8.0 to 3.9.0
2024-06-13 10:59:35 +03:00
dependabot[bot]
2d5aba6ad0
Bump listen from 3.8.0 to 3.9.0
Bumps [listen](https://github.com/guard/listen) from 3.8.0 to 3.9.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.8.0...v3.9.0)

---
updated-dependencies:
- dependency-name: listen
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 00:10:06 +00:00
Jyri-Petteri Paloposki
1e86b123cc
Merge pull request #3015 from TracksApp/dependabot/bundler/will_paginate-4.0.1
Bump will_paginate from 4.0.0 to 4.0.1
2024-06-12 23:16:42 +03:00
Jyri-Petteri Paloposki
03c85842db
Merge pull request #3016 from TracksApp/dependabot/bundler/rubocop-1.64.1
Bump rubocop from 1.58.0 to 1.64.1
2024-06-12 23:16:32 +03:00
dependabot[bot]
9ba1f7a5e3
Bump rubocop from 1.58.0 to 1.64.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.58.0 to 1.64.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.58.0...v1.64.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-12 00:17:23 +00:00
dependabot[bot]
180af5c752
Bump will_paginate from 4.0.0 to 4.0.1
Bumps [will_paginate](https://github.com/mislav/will_paginate) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/mislav/will_paginate/releases)
- [Commits](https://github.com/mislav/will_paginate/compare/v4.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: will_paginate
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-12 00:17:05 +00:00
Jyri-Petteri Paloposki
1e1fcd20a1
Merge pull request #3014 from TracksApp/dependabot/bundler/spring-4.2.1
Bump spring from 4.1.3 to 4.2.1
2024-06-11 03:51:14 +03:00
dependabot[bot]
d056abbc3a
Bump spring from 4.1.3 to 4.2.1
Bumps [spring](https://github.com/rails/spring) from 4.1.3 to 4.2.1.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.1.3...v4.2.1)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 00:39:26 +00:00
Jyri-Petteri Paloposki
445ad25571
Merge pull request #3012 from TracksApp/dependabot/bundler/pg-1.5.6
Bump pg from 1.5.4 to 1.5.6
2024-06-11 03:38:36 +03:00
dependabot[bot]
a910eaf436
Bump pg from 1.5.4 to 1.5.6
Bumps [pg](https://github.com/ged/ruby-pg) from 1.5.4 to 1.5.6.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.5.4...v1.5.6)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 00:30:11 +00:00
Jyri-Petteri Paloposki
e9f9d8fa5c
Merge pull request #3009 from TracksApp/dependabot/bundler/font-awesome-sass-6.5.2
Bump font-awesome-sass from 6.5.1 to 6.5.2
2024-06-10 11:33:18 +03:00
Jyri-Petteri Paloposki
c27c517648
Merge pull request #3010 from TracksApp/dependabot/bundler/factory_bot_rails-6.4.3
Bump factory_bot_rails from 6.4.2 to 6.4.3
2024-06-10 11:33:09 +03:00
Jyri-Petteri Paloposki
bbff8d2d07
Merge pull request #3011 from TracksApp/dependabot/bundler/mysql2-0.5.6
Bump mysql2 from 0.5.5 to 0.5.6
2024-06-10 11:17:48 +03:00
dependabot[bot]
b01f46e412
Bump mysql2 from 0.5.5 to 0.5.6
Bumps [mysql2](https://github.com/brianmario/mysql2) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/brianmario/mysql2/releases)
- [Commits](https://github.com/brianmario/mysql2/compare/0.5.5...0.5.6)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 00:07:59 +00:00
dependabot[bot]
781ae2de5c
Bump factory_bot_rails from 6.4.2 to 6.4.3
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.4.2 to 6.4.3.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.4.2...v6.4.3)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 00:07:44 +00:00
dependabot[bot]
3150420940
Bump font-awesome-sass from 6.5.1 to 6.5.2
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.5.1 to 6.5.2.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits/6.5.2)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-07 00:07:19 +00:00
Jyri-Petteri Paloposki
085faab554
Merge pull request #3008 from TracksApp/default_ruby
Make 3.1 our default build
2024-06-06 11:27:34 +03:00
Jyri-Petteri Paloposki
05854c6560 Update the netcat package name 2024-06-06 11:16:19 +03:00
Jyri-Petteri Paloposki
80c3b22e04 Make 3.1 our default build 2024-06-06 10:46:36 +03:00
Jyri-Petteri Paloposki
86b0a7aa95
Merge pull request #3006 from TracksApp/ruby33
Start testing Ruby 3.3
2024-06-06 10:32:41 +03:00
Jyri-Petteri Paloposki
aefa65a4b4 Start testing Ruby 3.3 2024-06-06 10:19:38 +03:00
Jyri-Petteri Paloposki
fcff755284
Merge pull request #3001 from TracksApp/dependabot/bundler/jquery-ui-rails-7.0.0
Bump jquery-ui-rails from 6.0.1 to 7.0.0
2024-06-06 10:17:05 +03:00
Jyri-Petteri Paloposki
753d230259
Merge pull request #3002 from TracksApp/dependabot/bundler/nokogiri-1.16.5
Bump nokogiri from 1.15.5 to 1.16.5
2024-06-06 10:16:53 +03:00
Jyri-Petteri Paloposki
8f4a0f475f
Merge pull request #3005 from TracksApp/ruby32
Start testing Ruby 3.2
2024-06-06 10:16:35 +03:00
Jyri-Petteri Paloposki
12d7b7911c Start testing Ruby 3.2 2024-06-06 10:06:07 +03:00
dependabot[bot]
b79c983f36
Bump jquery-ui-rails from 6.0.1 to 7.0.0
Bumps [jquery-ui-rails](https://github.com/joliss/jquery-ui-rails) from 6.0.1 to 7.0.0.
- [Release notes](https://github.com/joliss/jquery-ui-rails/releases)
- [Changelog](https://github.com/jquery-ui-rails/jquery-ui-rails/blob/master/History.md)
- [Commits](https://github.com/joliss/jquery-ui-rails/compare/v6.0.1...v7.0.0)

---
updated-dependencies:
- dependency-name: jquery-ui-rails
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-06 07:02:58 +00:00
dependabot[bot]
974af02dbf
Bump nokogiri from 1.15.5 to 1.16.5
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.15.5 to 1.16.5.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.15.5...v1.16.5)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-06 07:02:55 +00:00
Jyri-Petteri Paloposki
ddd8cb8f29
Merge pull request #2709 from TracksApp/ruby31
Test for Ruby 3.1
2024-06-06 10:01:51 +03:00
Jyri-Petteri Paloposki
1be3c27165 Run tests for Ruby 3.1 and change from racer to mini_racer for Ruby 3.1 support 2024-06-06 09:53:59 +03:00
Jyri-Petteri Paloposki
063c8bd786
Merge pull request #2706 from TracksApp/update_rails
Update Rails to last 6.1
2024-06-06 09:53:13 +03:00
Jyri-Petteri Paloposki
a94d4fa00b Remove the inbound message handling to get the Rails upgrade done. Pull requests for re-implementing with ActionMailbox are welcome.
Fixes #2463.
2024-06-06 02:15:00 +03:00
Jyri-Petteri Paloposki
86e36b07a6 Fix syntax errors for upgrade of Rails version 2024-06-06 01:43:48 +03:00
Jyri-Petteri Paloposki
7f567862d7 Upgrade Rails to 6.1 2024-06-06 01:43:38 +03:00
Jyri-Petteri Paloposki
9e662428b8
Merge pull request #3004 from TracksApp/dependabot/bundler/activerecord-6.0.6.1
Bump activerecord from 6.0.5.1 to 6.0.6.1
2024-06-06 01:19:57 +03:00
dependabot[bot]
2f32ba5595
Bump activerecord from 6.0.5.1 to 6.0.6.1
Bumps [activerecord](https://github.com/rails/rails) from 6.0.5.1 to 6.0.6.1.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.1.3.4/activerecord/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v6.0.5.1...v6.0.6.1)

---
updated-dependencies:
- dependency-name: activerecord
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 22:10:43 +00:00
Jyri-Petteri Paloposki
cecdac6af7
Merge pull request #3003 from TracksApp/dependabot/bundler/rexml-3.2.8
Bump rexml from 3.2.6 to 3.2.8
2024-06-06 01:09:22 +03:00
Jyri-Petteri Paloposki
9e7010b6fb
Merge pull request #3000 from TracksApp/dependabot/bundler/yard-0.9.36
Bump yard from 0.9.34 to 0.9.36
2024-06-06 01:06:43 +03:00
dependabot[bot]
444fa0dfff
Bump rexml from 3.2.6 to 3.2.8
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.6 to 3.2.8.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.6...v3.2.8)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 22:00:45 +00:00
dependabot[bot]
9fe75adca3
Bump yard from 0.9.34 to 0.9.36
Bumps [yard](https://github.com/lsegal/yard) from 0.9.34 to 0.9.36.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.34...v0.9.36)

---
updated-dependencies:
- dependency-name: yard
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 21:56:58 +00:00
Jyri-Petteri Paloposki
2360a4ba4e
Merge pull request #2998 from TracksApp/dependabot/bundler/rack-mini-profiler-3.3.1
Bump rack-mini-profiler from 3.1.1 to 3.3.1
2024-06-06 00:55:00 +03:00
Jyri-Petteri Paloposki
662782ec46
Merge pull request #2989 from TracksApp/dependabot/bundler/puma-6.4.2
Bump puma from 6.4.0 to 6.4.2
2024-06-06 00:54:44 +03:00
dependabot[bot]
97da4df7cb
Bump puma from 6.4.0 to 6.4.2
Bumps [puma](https://github.com/puma/puma) from 6.4.0 to 6.4.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.4.0...v6.4.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 21:46:19 +00:00
dependabot[bot]
03bc9a4dda
Bump rack-mini-profiler from 3.1.1 to 3.3.1
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 3.1.1 to 3.3.1.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v3.1.1...v3.3.1)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 21:41:43 +00:00
Jyri-Petteri Paloposki
099a0ff886
Merge pull request #2997 from TracksApp/fix_tests
Upgrade Ruby version to hopefully fix Dependabot
2024-06-06 00:40:14 +03:00
Jyri-Petteri Paloposki
f76a00f261 Rubocop still doesn't support Ruby > 2.5, so let's disable that. 2024-06-06 00:31:07 +03:00
Jyri-Petteri Paloposki
7584d4f051 Upgrade Ruby version to hopefully fix Dependabot 2024-06-06 00:28:49 +03:00
Jyri-Petteri Paloposki
a9a54f76bf
Merge pull request #2996 from TracksApp/fix_tests
Fix tests by removing Ruby 2.7 testing, which is already EOL
2024-06-06 00:22:34 +03:00
Jyri-Petteri Paloposki
6ead4c0307 Fix tests by removing Ruby 2.7 testing, which is already EOL 2024-06-06 00:11:24 +03:00
Matt Rogers
7eb80fb1a1
Merge pull request #2995 from TracksApp/make-ruby-2.7-ci-work-again
Install older version of Bundler in CI for Ruby 2.7
2024-02-15 09:51:45 -06:00
Matt Rogers
f405861c60
ci: Ruby 2.7 needs an older version of bundler
Pin Bundler to 2.4.22 so that 2.7 CI keeps working.
2024-02-15 09:39:45 -06:00
Jyri-Petteri Paloposki
101c97ddff
Merge pull request #2986 from TracksApp/dependabot/bundler/font-awesome-sass-6.5.1
Bump font-awesome-sass from 6.5.0 to 6.5.1
2024-01-31 20:59:59 +02:00
Jyri-Petteri Paloposki
7c5aaa9594
Merge pull request #2988 from TracksApp/dependabot/bundler/solargraph-0.50.0
Bump solargraph from 0.49.0 to 0.50.0
2024-01-31 20:59:48 +02:00
dependabot[bot]
010eb00f8e
Bump solargraph from 0.49.0 to 0.50.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.49.0 to 0.50.0.
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.49.0...v0.50.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 00:06:52 +00:00
Matt Rogers
f5f82bb250
Merge pull request #2987 from TracksApp/dependabot/bundler/rubocop-1.58.0
Bump rubocop from 1.57.2 to 1.58.0
2023-12-03 19:11:41 -06:00
dependabot[bot]
3d45c7dbae
Bump rubocop from 1.57.2 to 1.58.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.2 to 1.58.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.57.2...v1.58.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 00:01:15 +00:00
dependabot[bot]
1b1e3c5322
Bump font-awesome-sass from 6.5.0 to 6.5.1
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.5.0 to 6.5.1.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 00:06:57 +00:00
Jyri-Petteri Paloposki
7b84dadd87
Merge pull request #2985 from TracksApp/dependabot/bundler/font-awesome-sass-6.5.0
Bump font-awesome-sass from 6.4.2 to 6.5.0
2023-11-29 20:04:46 +02:00
dependabot[bot]
4b8dbe4a8c
Bump font-awesome-sass from 6.4.2 to 6.5.0
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.4.2 to 6.5.0.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 00:18:23 +00:00
Jyri-Petteri Paloposki
ebb4e63fb2
Merge pull request #2984 from TracksApp/dependabot/bundler/sqlite3-1.6.9
Bump sqlite3 from 1.6.8 to 1.6.9
2023-11-29 00:15:20 +02:00
Matt Rogers
854cac6acf
Merge pull request #2983 from TracksApp/dependabot/bundler/bullet-7.1.4 2023-11-27 00:32:02 -06:00
dependabot[bot]
e01d52756c
Bump sqlite3 from 1.6.8 to 1.6.9
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.6.8 to 1.6.9.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.6.8...v1.6.9)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 00:56:32 +00:00
dependabot[bot]
7ec8279178
Bump bullet from 7.1.2 to 7.1.4
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.2 to 7.1.4.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.1.2...7.1.4)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 00:56:08 +00:00
Matt Rogers
f81137591f
Merge pull request #2981 from TracksApp/dependabot/bundler/spring-4.1.3
Bump spring from 4.1.1 to 4.1.3
2023-11-24 10:53:13 -06:00
Matt Rogers
01b63e6c18
Merge pull request #2982 from TracksApp/dependabot/bundler/factory_bot_rails-6.4.2 2023-11-24 07:32:11 -06:00
dependabot[bot]
a8ca55389b
Bump factory_bot_rails from 6.2.0 to 6.4.2
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.2.0 to 6.4.2.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/main/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.2.0...v6.4.2)

---
updated-dependencies:
- dependency-name: factory_bot_rails
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-24 00:46:51 +00:00
dependabot[bot]
b6797bf67c
Bump spring from 4.1.1 to 4.1.3
Bumps [spring](https://github.com/rails/spring) from 4.1.1 to 4.1.3.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.1.1...v4.1.3)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-23 00:17:54 +00:00
Matt Rogers
d98f173aa5
Merge pull request #2978 from TracksApp/dependabot/bundler/bcrypt-3.1.20
Bump bcrypt from 3.1.19 to 3.1.20
2023-11-22 11:27:02 -06:00
Matt Rogers
61a4de71ac
Merge pull request #2977 from TracksApp/dependabot/bundler/RedCloth-4.3.3
Bump RedCloth from 4.3.2 to 4.3.3
2023-11-22 11:26:46 -06:00
dependabot[bot]
d64e3fb96d
Bump bcrypt from 3.1.19 to 3.1.20
Bumps [bcrypt](https://github.com/codahale/bcrypt-ruby) from 3.1.19 to 3.1.20.
- [Release notes](https://github.com/codahale/bcrypt-ruby/releases)
- [Changelog](https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/CHANGELOG)
- [Commits](https://github.com/codahale/bcrypt-ruby/compare/v3.1.19...v3.1.20)

---
updated-dependencies:
- dependency-name: bcrypt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 00:54:58 +00:00
dependabot[bot]
6f8bf1db4e
Bump RedCloth from 4.3.2 to 4.3.3
Bumps [RedCloth](https://github.com/jgarber/redcloth) from 4.3.2 to 4.3.3.
- [Changelog](https://github.com/jgarber/redcloth/blob/master/CHANGELOG)
- [Commits](https://github.com/jgarber/redcloth/compare/v4.3.2...v4.3.3)

---
updated-dependencies:
- dependency-name: RedCloth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 00:54:31 +00:00
Jyri-Petteri Paloposki
e97f74041c
Merge pull request #2975 from TracksApp/dependabot/bundler/sqlite3-1.6.8
Bump sqlite3 from 1.6.7 to 1.6.8
2023-11-21 19:33:10 +02:00
Jyri-Petteri Paloposki
fbc0c4f39a
Merge pull request #2974 from TracksApp/dependabot/bundler/rubocop-1.57.2
Bump rubocop from 1.57.1 to 1.57.2
2023-11-21 18:45:13 +02:00
dependabot[bot]
e454fc21ce
Bump sqlite3 from 1.6.7 to 1.6.8
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.6.7 to 1.6.8.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.6.7...v1.6.8)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-02 00:48:25 +00:00
dependabot[bot]
c8ddc60f0c
Bump rubocop from 1.57.1 to 1.57.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.1 to 1.57.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.57.1...v1.57.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-27 00:17:06 +00:00
Matt Rogers
c214037b9a
Merge pull request #2973 from TracksApp/dependabot/bundler/sqlite3-1.6.7
Bump sqlite3 from 1.6.3 to 1.6.7
2023-10-20 16:00:22 -05:00
dependabot[bot]
12afa11429
Bump sqlite3 from 1.6.3 to 1.6.7
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.6.3 to 1.6.7.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.6.3...v1.6.7)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 00:57:24 +00:00
Matt Rogers
471f07bf46
Merge pull request #2970 from TracksApp/dependabot/bundler/rubocop-1.57.1 2023-10-18 19:25:59 -05:00
Matt Rogers
cc7dcee618
Merge pull request #2971 from TracksApp/dependabot/bundler/puma-6.4.0 2023-10-18 19:25:46 -05:00
dependabot[bot]
31b46825de
Bump puma from 6.3.1 to 6.4.0
Bumps [puma](https://github.com/puma/puma) from 6.3.1 to 6.4.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.3.1...v6.4.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 00:01:54 +00:00
dependabot[bot]
f5000acb43
Bump rubocop from 1.57.0 to 1.57.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.0 to 1.57.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.57.0...v1.57.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 00:01:31 +00:00
Matt Rogers
c58a16106e
Merge pull request #2969 from TracksApp/dependabot/bundler/sanitize-6.1.0
Bump sanitize from 6.0.2 to 6.1.0
2023-10-18 10:15:40 -05:00
Matt Rogers
10ff863c38
Merge pull request #2968 from TracksApp/dependabot/bundler/rails-dom-testing-2.2.0 2023-10-17 20:11:03 -05:00
dependabot[bot]
33ac82c262
Bump sanitize from 6.0.2 to 6.1.0
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.2...v6.1.0)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 00:38:31 +00:00
dependabot[bot]
77af1b4148
Bump rails-dom-testing from 2.1.1 to 2.2.0
Bumps [rails-dom-testing](https://github.com/rails/rails-dom-testing) from 2.1.1 to 2.2.0.
- [Release notes](https://github.com/rails/rails-dom-testing/releases)
- [Commits](https://github.com/rails/rails-dom-testing/compare/v2.1.1...v2.2.0)

---
updated-dependencies:
- dependency-name: rails-dom-testing
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 00:37:43 +00:00
Jyri-Petteri Paloposki
6345d3c643
Merge pull request #2967 from TracksApp/dependabot/bundler/font-awesome-sass-6.4.2
Bump font-awesome-sass from 6.4.0 to 6.4.2
2023-10-17 11:04:54 +03:00
Jyri-Petteri Paloposki
bb9baae664
Merge pull request #2966 from TracksApp/dependabot/bundler/pg-1.5.4
Bump pg from 1.5.3 to 1.5.4
2023-10-17 11:04:41 +03:00
dependabot[bot]
92c0fd2c7c
Bump font-awesome-sass from 6.4.0 to 6.4.2
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.4.0 to 6.4.2.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 00:21:44 +00:00
dependabot[bot]
282510a7e7
Bump pg from 1.5.3 to 1.5.4
Bumps [pg](https://github.com/ged/ruby-pg) from 1.5.3 to 1.5.4.
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.5.3...v1.5.4)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 00:21:34 +00:00
Jyri-Petteri Paloposki
5aa51245ed
Merge pull request #2963 from TracksApp/dependabot/bundler/bullet-7.1.2
Bump bullet from 7.0.7 to 7.1.2
2023-10-16 20:39:27 +03:00
dependabot[bot]
e66e782a96
Bump bullet from 7.0.7 to 7.1.2
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.7 to 7.1.2.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.7...7.1.2)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 17:23:26 +00:00
Jyri-Petteri Paloposki
d4f7457cf4
Merge pull request #2964 from TracksApp/dependabot/bundler/i18n-tasks-1.0.13
Bump i18n-tasks from 1.0.12 to 1.0.13
2023-10-16 20:22:41 +03:00
dependabot[bot]
c278640525
Bump i18n-tasks from 1.0.12 to 1.0.13
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.12 to 1.0.13.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.12...v1.0.13)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 00:39:32 +00:00
Jyri-Petteri Paloposki
bda9bde5e1
Merge pull request #2947 from TracksApp/dependabot/bundler/mocha-2.1.0
Bump mocha from 2.0.4 to 2.1.0
2023-10-14 11:27:07 +03:00
Jyri-Petteri Paloposki
53d69fcb02
Merge pull request #2949 from TracksApp/dependabot/bundler/rack-mini-profiler-3.1.1
Bump rack-mini-profiler from 3.1.0 to 3.1.1
2023-10-14 11:26:56 +03:00
Matt Rogers
e9b44f6370
Merge pull request #2961 from TracksApp/dependabot/bundler/rubocop-1.57.0
Bump rubocop from 1.54.2 to 1.57.0
2023-10-13 19:43:49 -05:00
dependabot[bot]
706832cc78
Bump rubocop from 1.54.2 to 1.57.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.54.2 to 1.57.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.54.2...v1.57.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 00:07:59 +00:00
Matt Rogers
596b700c7f
Merge pull request #2953 from TracksApp/dependabot/bundler/puma-6.3.1 2023-08-18 17:37:32 -05:00
dependabot[bot]
5537de25ef
Bump puma from 6.3.0 to 6.3.1
Bumps [puma](https://github.com/puma/puma) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-18 22:15:35 +00:00
dependabot[bot]
beaf5b9064
Bump rack-mini-profiler from 3.1.0 to 3.1.1
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 00:34:16 +00:00
dependabot[bot]
6d92f273a6
Bump mocha from 2.0.4 to 2.1.0
Bumps [mocha](https://github.com/freerange/mocha) from 2.0.4 to 2.1.0.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.0.4...v2.1.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-28 00:57:53 +00:00
Jyri-Petteri Paloposki
1342be9697
Merge pull request #2942 from TracksApp/dependabot/bundler/jquery-rails-4.6.0
Bump jquery-rails from 4.5.1 to 4.6.0
2023-07-19 22:43:14 +03:00
Jyri-Petteri Paloposki
2ad4631ae6
Merge pull request #2943 from TracksApp/dependabot/bundler/rails-dom-testing-2.1.1
Bump rails-dom-testing from 2.0.3 to 2.1.1
2023-07-19 22:43:05 +03:00
Jyri-Petteri Paloposki
c87abb62d0
Merge pull request #2944 from TracksApp/dependabot/bundler/sanitize-6.0.2
Bump sanitize from 6.0.1 to 6.0.2
2023-07-19 22:42:54 +03:00
Jyri-Petteri Paloposki
c0cdc19a37
Merge pull request #2945 from TracksApp/dependabot/bundler/rubocop-1.54.2
Bump rubocop from 1.54.0 to 1.54.2
2023-07-19 22:42:43 +03:00
dependabot[bot]
2ca6b731f0
Bump rubocop from 1.54.0 to 1.54.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.54.0 to 1.54.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.54.0...v1.54.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-14 00:43:42 +00:00
dependabot[bot]
13603eff68
Bump sanitize from 6.0.1 to 6.0.2
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-06 20:05:13 +00:00
dependabot[bot]
97a5f622f1
Bump rails-dom-testing from 2.0.3 to 2.1.1
Bumps [rails-dom-testing](https://github.com/rails/rails-dom-testing) from 2.0.3 to 2.1.1.
- [Release notes](https://github.com/rails/rails-dom-testing/releases)
- [Commits](https://github.com/rails/rails-dom-testing/compare/v2.0.3...v2.1.1)

---
updated-dependencies:
- dependency-name: rails-dom-testing
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 00:21:45 +00:00
dependabot[bot]
f295bfd023
Bump jquery-rails from 4.5.1 to 4.6.0
Bumps [jquery-rails](https://github.com/rails/jquery-rails) from 4.5.1 to 4.6.0.
- [Changelog](https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/jquery-rails/compare/v4.5.1...v4.6.0)

---
updated-dependencies:
- dependency-name: jquery-rails
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-05 00:21:12 +00:00
Jyri-Petteri Paloposki
140d804745
Merge pull request #2936 from TracksApp/dependabot/bundler/mocha-2.0.4
Bump mocha from 2.0.2 to 2.0.4
2023-07-04 16:03:08 +03:00
Jyri-Petteri Paloposki
5863dd47d5
Merge pull request #2934 from TracksApp/dependabot/bundler/puma-6.3.0
Bump puma from 6.2.2 to 6.3.0
2023-07-04 16:02:55 +03:00
Jyri-Petteri Paloposki
1a293ea325
Merge pull request #2940 from TracksApp/dependabot/bundler/rubocop-1.54.0
Bump rubocop from 1.52.1 to 1.54.0
2023-07-04 16:02:44 +03:00
dependabot[bot]
11895a160a
Bump rubocop from 1.52.1 to 1.54.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.52.1 to 1.54.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.52.1...v1.54.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 00:51:11 +00:00
dependabot[bot]
0164195ae9
Bump mocha from 2.0.2 to 2.0.4
Bumps [mocha](https://github.com/freerange/mocha) from 2.0.2 to 2.0.4.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.0.2...v2.0.4)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 01:01:00 +00:00
dependabot[bot]
a55d4500a0
Bump puma from 6.2.2 to 6.3.0
Bumps [puma](https://github.com/puma/puma) from 6.2.2 to 6.3.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.2.2...v6.3.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 00:58:49 +00:00
Jyri-Petteri Paloposki
399f6cfbcf
Merge pull request #2932 from TracksApp/dependabot/bundler/tolk-5.0.1
Bump tolk from 5.0.0 to 5.0.1
2023-06-23 11:58:32 +03:00
Jyri-Petteri Paloposki
452c12b38f
Merge pull request #2931 from TracksApp/dependabot/bundler/kt-paperclip-7.2.0
Bump kt-paperclip from 7.1.1 to 7.2.0
2023-06-23 11:58:26 +03:00
Jyri-Petteri Paloposki
5d5b552685
Merge pull request #2933 from TracksApp/dependabot/bundler/bcrypt-3.1.19
Bump bcrypt from 3.1.18 to 3.1.19
2023-06-23 11:58:17 +03:00
dependabot[bot]
1cc50d071b
Bump bcrypt from 3.1.18 to 3.1.19
Bumps [bcrypt](https://github.com/codahale/bcrypt-ruby) from 3.1.18 to 3.1.19.
- [Release notes](https://github.com/codahale/bcrypt-ruby/releases)
- [Changelog](https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/CHANGELOG)
- [Commits](https://github.com/codahale/bcrypt-ruby/compare/v3.1.18...v3.1.19)

---
updated-dependencies:
- dependency-name: bcrypt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-23 00:57:10 +00:00
dependabot[bot]
3d21e2a415
Bump tolk from 5.0.0 to 5.0.1
Bumps [tolk](https://github.com/tolk/tolk) from 5.0.0 to 5.0.1.
- [Changelog](https://github.com/tolk/tolk/blob/v5.0.1/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v5.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: tolk
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-23 00:56:59 +00:00
dependabot[bot]
a57843ec36
Bump kt-paperclip from 7.1.1 to 7.2.0
Bumps [kt-paperclip](https://github.com/kreeti/kt-paperclip) from 7.1.1 to 7.2.0.
- [Release notes](https://github.com/kreeti/kt-paperclip/releases)
- [Changelog](https://github.com/kreeti/kt-paperclip/blob/master/NEWS)
- [Commits](https://github.com/kreeti/kt-paperclip/compare/v7.1.1...v7.2.0)

---
updated-dependencies:
- dependency-name: kt-paperclip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-23 00:56:46 +00:00
Jyri-Petteri Paloposki
d62cd4fc90
Merge pull request #2930 from TracksApp/dependabot/bundler/rubocop-1.52.1
Bump rubocop from 1.50.2 to 1.52.1
2023-06-22 16:48:53 +03:00
Jyri-Petteri Paloposki
fae82f91b6
Merge pull request #2928 from TracksApp/dependabot/bundler/will_paginate-4.0.0
Bump will_paginate from 3.3.1 to 4.0.0
2023-06-22 16:48:46 +03:00
Jyri-Petteri Paloposki
69e254c4e2
Merge pull request #2926 from TracksApp/dependabot/bundler/sqlite3-1.6.3
Bump sqlite3 from 1.6.2 to 1.6.3
2023-06-22 16:48:36 +03:00
dependabot[bot]
a385d82626
Bump rubocop from 1.50.2 to 1.52.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.50.2 to 1.52.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.50.2...v1.52.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 00:57:01 +00:00
dependabot[bot]
76050612ea
Bump will_paginate from 3.3.1 to 4.0.0
Bumps [will_paginate](https://github.com/mislav/will_paginate) from 3.3.1 to 4.0.0.
- [Release notes](https://github.com/mislav/will_paginate/releases)
- [Commits](https://github.com/mislav/will_paginate/compare/v3.3.1...v4.0.0)

---
updated-dependencies:
- dependency-name: will_paginate
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-30 00:56:54 +00:00
dependabot[bot]
b2c40534b6
Bump sqlite3 from 1.6.2 to 1.6.3
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.6.2...v1.6.3)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 00:58:12 +00:00
Jyri-Petteri Paloposki
d2cfb7e7f9
Merge pull request #2923 from TracksApp/dependabot/bundler/pg-1.5.3
Bump pg from 1.4.6 to 1.5.3
2023-05-04 10:44:39 +03:00
dependabot[bot]
e088e63cb9
Bump pg from 1.4.6 to 1.5.3
Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.6 to 1.5.3.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.4.6...v1.5.3)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 00:59:13 +00:00
Jyri-Petteri Paloposki
67f07ec0c8
Merge pull request #2920 from TracksApp/dependabot/bundler/rspec-expectations-3.12.3
Bump rspec-expectations from 3.12.2 to 3.12.3
2023-04-21 07:58:34 +03:00
Jyri-Petteri Paloposki
8e598ec760
Merge pull request #2919 from TracksApp/dependabot/bundler/puma-6.2.2
Bump puma from 6.2.1 to 6.2.2
2023-04-21 07:58:20 +03:00
Jyri-Petteri Paloposki
e746f190f7
Merge pull request #2918 from TracksApp/dependabot/bundler/rubocop-1.50.2
Bump rubocop from 1.50.1 to 1.50.2
2023-04-21 07:58:06 +03:00
dependabot[bot]
87377792c3
Bump rspec-expectations from 3.12.2 to 3.12.3
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.12.2 to 3.12.3.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.12.2...v3.12.3)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-21 00:57:23 +00:00
dependabot[bot]
49bf58d536
Bump puma from 6.2.1 to 6.2.2
Bumps [puma](https://github.com/puma/puma) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.2.1...v6.2.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 00:57:07 +00:00
dependabot[bot]
69fc52347f
Bump rubocop from 1.50.1 to 1.50.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.50.1 to 1.50.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.50.1...v1.50.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 00:56:56 +00:00
Jyri-Petteri Paloposki
08c3ced469
Merge pull request #2915 from TracksApp/dependabot/bundler/solargraph-0.49.0
Bump solargraph from 0.48.0 to 0.49.0
2023-04-16 13:08:20 +03:00
Jyri-Petteri Paloposki
d3fb77ebe5
Merge pull request #2914 from TracksApp/dependabot/bundler/rubocop-1.50.1
Bump rubocop from 1.48.1 to 1.50.1
2023-04-16 13:08:07 +03:00
dependabot[bot]
d2f6ac7e1b
Bump solargraph from 0.48.0 to 0.49.0
Bumps [solargraph](https://solargraph.org) from 0.48.0 to 0.49.0.

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 00:58:19 +00:00
dependabot[bot]
ae9470659b
Bump rubocop from 1.48.1 to 1.50.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.48.1 to 1.50.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.48.1...v1.50.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 00:57:57 +00:00
Jyri-Petteri Paloposki
39c28c1e6d
Merge pull request #2913 from TracksApp/dependabot/bundler/yard-0.9.34
Bump yard from 0.9.28 to 0.9.34
2023-04-13 13:47:04 +03:00
Jyri-Petteri Paloposki
b8657dc4d3
Merge pull request #2912 from TracksApp/dependabot/bundler/rack-mini-profiler-3.1.0
Bump rack-mini-profiler from 3.0.0 to 3.1.0
2023-04-13 13:46:54 +03:00
Jyri-Petteri Paloposki
4b023c0454
Merge pull request #2911 from TracksApp/dependabot/bundler/font-awesome-sass-6.4.0
Bump font-awesome-sass from 6.3.0 to 6.4.0
2023-04-13 13:46:45 +03:00
dependabot[bot]
3deb8ce993
Bump yard from 0.9.28 to 0.9.34
Bumps [yard](https://github.com/lsegal/yard) from 0.9.28 to 0.9.34.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.28...v0.9.34)

---
updated-dependencies:
- dependency-name: yard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 00:57:51 +00:00
dependabot[bot]
763578f165
Bump rack-mini-profiler from 3.0.0 to 3.1.0
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 00:57:27 +00:00
dependabot[bot]
2802d7cf4e
Bump font-awesome-sass from 6.3.0 to 6.4.0
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 00:57:04 +00:00
Jyri-Petteri Paloposki
1f72de1ff5
Merge pull request #2909 from TracksApp/dependabot/bundler/puma-6.2.1
Bump puma from 6.1.0 to 6.2.1
2023-04-12 11:31:16 +03:00
dependabot[bot]
deb2e9b123
Bump puma from 6.1.0 to 6.2.1
Bumps [puma](https://github.com/puma/puma) from 6.1.0 to 6.2.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.1.0...v6.2.1)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 08:08:29 +00:00
Jyri-Petteri Paloposki
1fcdd40f3f
Merge pull request #2904 from TracksApp/dependabot/bundler/pg-1.4.6
Bump pg from 1.4.5 to 1.4.6
2023-04-12 11:08:02 +03:00
Jyri-Petteri Paloposki
796712472e
Merge pull request #2906 from TracksApp/dependabot/bundler/rack-2.2.6.4
Bump rack from 2.2.6.3 to 2.2.6.4
2023-04-12 11:07:50 +03:00
Jyri-Petteri Paloposki
f6ddc170c5
Merge pull request #2907 from TracksApp/dependabot/bundler/sqlite3-1.6.2
Bump sqlite3 from 1.6.0 to 1.6.2
2023-04-12 11:07:41 +03:00
Jyri-Petteri Paloposki
0ce54f8475
Merge pull request #2910 from TracksApp/dependabot/bundler/nokogiri-1.14.3
Bump nokogiri from 1.14.2 to 1.14.3
2023-04-12 11:07:16 +03:00
dependabot[bot]
df687a6df2
Bump nokogiri from 1.14.2 to 1.14.3
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.14.2 to 1.14.3.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.14.2...v1.14.3)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 06:27:50 +00:00
dependabot[bot]
cf4a25e6c0
Bump sqlite3 from 1.6.0 to 1.6.2
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.6.0 to 1.6.2.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.6.0...v1.6.2)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-28 00:56:55 +00:00
dependabot[bot]
b03f84893f
Bump rack from 2.2.6.3 to 2.2.6.4
Bumps [rack](https://github.com/rack/rack) from 2.2.6.3 to 2.2.6.4.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.6.3...v2.2.6.4)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-16 12:19:50 +00:00
dependabot[bot]
79f2cadd97
Bump pg from 1.4.5 to 1.4.6
Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.5 to 1.4.6.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.md)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.4.5...v1.4.6)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 00:57:27 +00:00
Jyri-Petteri Paloposki
07035ca2fe
Merge pull request #2896 from TracksApp/dependabot/bundler/font-awesome-sass-6.3.0
Bump font-awesome-sass from 6.2.1 to 6.3.0
2023-03-14 21:55:19 +02:00
Jyri-Petteri Paloposki
0e5fa90c2d
Merge pull request #2897 from TracksApp/dependabot/bundler/aasm-5.5.0
Bump aasm from 5.4.0 to 5.5.0
2023-03-14 21:55:08 +02:00
Jyri-Petteri Paloposki
6caacad9d1
Merge pull request #2900 from TracksApp/dependabot/bundler/rack-2.2.6.3
Bump rack from 2.2.6.2 to 2.2.6.3
2023-03-14 21:54:56 +02:00
Jyri-Petteri Paloposki
fdcd6b2abb
Merge pull request #2902 from TracksApp/dependabot/bundler/rubocop-1.48.1
Bump rubocop from 1.45.1 to 1.48.1
2023-03-14 21:54:45 +02:00
dependabot[bot]
2963e2d454
Bump rubocop from 1.45.1 to 1.48.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.45.1 to 1.48.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.45.1...v1.48.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-14 00:59:18 +00:00
dependabot[bot]
beb2583679
Bump rack from 2.2.6.2 to 2.2.6.3
Bumps [rack](https://github.com/rack/rack) from 2.2.6.2 to 2.2.6.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.6.2...v2.2.6.3)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-09 02:53:21 +00:00
dependabot[bot]
ea5a4a8ec7
Bump aasm from 5.4.0 to 5.5.0
Bumps [aasm](https://github.com/aasm/aasm) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/aasm/aasm/releases)
- [Changelog](https://github.com/aasm/aasm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aasm/aasm/commits)

---
updated-dependencies:
- dependency-name: aasm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 00:14:25 +00:00
dependabot[bot]
f01a3fd2f9
Bump font-awesome-sass from 6.2.1 to 6.3.0
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.2.1 to 6.3.0.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 00:14:09 +00:00
Jyri-Petteri Paloposki
18c603162b
Merge pull request #2889 from TracksApp/dependabot/bundler/sanitize-6.0.1
Bump sanitize from 6.0.0 to 6.0.1
2023-02-22 14:33:15 +02:00
Jyri-Petteri Paloposki
fa56fa4ef2
Merge pull request #2894 from TracksApp/dependabot/bundler/puma-6.1.0
Bump puma from 6.0.2 to 6.1.0
2023-02-22 14:33:03 +02:00
Jyri-Petteri Paloposki
7b78b635f0
Merge pull request #2893 from TracksApp/dependabot/bundler/rails_autolink-1.1.8
Bump rails_autolink from 1.1.7 to 1.1.8
2023-02-22 14:32:53 +02:00
dependabot[bot]
ca941cf69e
Bump puma from 6.0.2 to 6.1.0
Bumps [puma](https://github.com/puma/puma) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.0.2...v6.1.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-21 00:57:08 +00:00
dependabot[bot]
54f9379afe
Bump rails_autolink from 1.1.7 to 1.1.8
Bumps [rails_autolink](https://github.com/tenderlove/rails_autolink) from 1.1.7 to 1.1.8.
- [Release notes](https://github.com/tenderlove/rails_autolink/releases)
- [Changelog](https://github.com/tenderlove/rails_autolink/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tenderlove/rails_autolink/compare/v1.1.7...v1.1.8)

---
updated-dependencies:
- dependency-name: rails_autolink
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-21 00:56:49 +00:00
dependabot[bot]
0557fd3401
Bump sanitize from 6.0.0 to 6.0.1
Bumps [sanitize](https://github.com/rgrove/sanitize) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v6.0.0...v6.0.1)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 23:19:22 +00:00
Jyri-Petteri Paloposki
ea3886b4ed
Merge pull request #2892 from TracksApp/dependabot/bundler/rubocop-1.45.1
Bump rubocop from 1.43.0 to 1.45.1
2023-02-21 01:18:35 +02:00
Jyri-Petteri Paloposki
936d057217
Merge pull request #2891 from TracksApp/dependabot/bundler/acts_as_list-1.1.0
Bump acts_as_list from 1.0.4 to 1.1.0
2023-02-21 01:18:21 +02:00
dependabot[bot]
a00d6d5ca8
Bump rubocop from 1.43.0 to 1.45.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.43.0 to 1.45.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.43.0...v1.45.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 00:01:08 +00:00
dependabot[bot]
428ee55976
Bump acts_as_list from 1.0.4 to 1.1.0
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.0.4 to 1.1.0.
- [Release notes](https://github.com/brendon/acts_as_list/releases)
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.0.4...v1.1.0)

---
updated-dependencies:
- dependency-name: acts_as_list
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 00:01:41 +00:00
Jyri-Petteri Paloposki
4ddc6ffc99
Merge pull request #2887 from TracksApp/dependabot/bundler/mysql2-0.5.5
Bump mysql2 from 0.5.4 to 0.5.5
2023-01-27 09:38:16 +02:00
Jyri-Petteri Paloposki
0e4592f642
Merge pull request #2886 from TracksApp/dependabot/bundler/solargraph-0.48.0
Bump solargraph from 0.47.2 to 0.48.0
2023-01-27 09:37:44 +02:00
Jyri-Petteri Paloposki
f972941f4e
Merge pull request #2888 from TracksApp/dependabot/bundler/spring-4.1.1
Bump spring from 4.1.0 to 4.1.1
2023-01-27 09:37:19 +02:00
dependabot[bot]
dc1dc7c739
Bump spring from 4.1.0 to 4.1.1
Bumps [spring](https://github.com/rails/spring) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 00:02:03 +00:00
dependabot[bot]
51c2889443
Bump mysql2 from 0.5.4 to 0.5.5
Bumps [mysql2](https://github.com/brianmario/mysql2) from 0.5.4 to 0.5.5.
- [Release notes](https://github.com/brianmario/mysql2/releases)
- [Commits](https://github.com/brianmario/mysql2/compare/0.5.4...0.5.5)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 00:01:12 +00:00
dependabot[bot]
228b92677e
Bump solargraph from 0.47.2 to 0.48.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.47.2 to 0.48.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.47.2...v0.48.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-27 00:00:54 +00:00
Jyri-Petteri Paloposki
bb63717810
Merge pull request #2881 from TracksApp/dependabot/bundler/sqlite3-1.6.0
Bump sqlite3 from 1.5.4 to 1.6.0
2023-01-26 12:21:35 +02:00
dependabot[bot]
81d27edbf0
Bump sqlite3 from 1.5.4 to 1.6.0
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.5.4 to 1.6.0.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.5.4...v1.6.0)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-26 09:35:50 +00:00
Jyri-Petteri Paloposki
4c372fa2f6
Merge pull request #2880 from TracksApp/dependabot/bundler/rspec-expectations-3.12.2
Bump rspec-expectations from 3.12.0 to 3.12.2
2023-01-26 11:35:14 +02:00
Jyri-Petteri Paloposki
df0e99b8dc
Merge pull request #2882 from TracksApp/dependabot/bundler/tolk-5.0.0
Bump tolk from 4.3.0 to 5.0.0
2023-01-26 11:35:00 +02:00
Jyri-Petteri Paloposki
53858b10fe
Merge pull request #2883 from TracksApp/dependabot/bundler/rack-2.2.6.2
Bump rack from 2.2.5 to 2.2.6.2
2023-01-26 11:34:48 +02:00
Jyri-Petteri Paloposki
bafaf6adb5
Merge pull request #2884 from TracksApp/dependabot/bundler/globalid-1.0.1
Bump globalid from 1.0.0 to 1.0.1
2023-01-26 11:34:33 +02:00
dependabot[bot]
a75e8e4cba
Bump globalid from 1.0.0 to 1.0.1
Bumps [globalid](https://github.com/rails/globalid) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/rails/globalid/releases)
- [Commits](https://github.com/rails/globalid/compare/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: globalid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 22:23:19 +00:00
dependabot[bot]
98f94ff185
Bump rack from 2.2.5 to 2.2.6.2
Bumps [rack](https://github.com/rack/rack) from 2.2.5 to 2.2.6.2.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.5...v2.2.6.2)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 01:57:46 +00:00
dependabot[bot]
011162849d
Bump tolk from 4.3.0 to 5.0.0
Bumps [tolk](https://github.com/tolk/tolk) from 4.3.0 to 5.0.0.
- [Release notes](https://github.com/tolk/tolk/releases)
- [Changelog](https://github.com/tolk/tolk/blob/v5.0.0/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v4.3.0...v5.0.0)

---
updated-dependencies:
- dependency-name: tolk
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 00:02:48 +00:00
dependabot[bot]
5e369866b1
Bump rspec-expectations from 3.12.0 to 3.12.2
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.12.0 to 3.12.2.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.12.0...v3.12.2)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-19 00:01:43 +00:00
Jyri-Petteri Paloposki
58942cc5e6
Merge pull request #2878 from TracksApp/dependabot/bundler/puma-6.0.2
Bump puma from 6.0.0 to 6.0.2
2023-01-18 02:08:29 +02:00
Jyri-Petteri Paloposki
e2d435135e
Merge pull request #2877 from TracksApp/dependabot/bundler/listen-3.8.0
Bump listen from 3.7.1 to 3.8.0
2023-01-18 02:08:17 +02:00
Jyri-Petteri Paloposki
eeeeb952a6
Merge pull request #2876 from TracksApp/dependabot/bundler/bullet-7.0.7
Bump bullet from 7.0.4 to 7.0.7
2023-01-18 02:08:04 +02:00
dependabot[bot]
59790c0236
Bump puma from 6.0.0 to 6.0.2
Bumps [puma](https://github.com/puma/puma) from 6.0.0 to 6.0.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v6.0.0...v6.0.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-12 00:01:39 +00:00
dependabot[bot]
d039a9f12c
Bump listen from 3.7.1 to 3.8.0
Bumps [listen](https://github.com/guard/listen) from 3.7.1 to 3.8.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.7.1...v3.8.0)

---
updated-dependencies:
- dependency-name: listen
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-12 00:01:36 +00:00
dependabot[bot]
068edfe5c1
Bump bullet from 7.0.4 to 7.0.7
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.4 to 7.0.7.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.4...7.0.7)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-12 00:01:16 +00:00
Jyri-Petteri Paloposki
0e95c8aa53
Merge pull request #2873 from TracksApp/dependabot/bundler/sqlite3-1.5.4
Bump sqlite3 from 1.5.3 to 1.5.4
2023-01-11 10:11:07 +02:00
Jyri-Petteri Paloposki
f8b8e28ea1
Merge pull request #2875 from TracksApp/dependabot/bundler/rubocop-1.43.0
Bump rubocop from 1.40.0 to 1.43.0
2023-01-11 02:19:50 +02:00
dependabot[bot]
571f2b4ba2
Bump sqlite3 from 1.5.3 to 1.5.4
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.5.3 to 1.5.4.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.5.3...v1.5.4)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-11 00:06:18 +00:00
Jyri-Petteri Paloposki
c1e2b2880e
Merge pull request #2874 from TracksApp/dependabot/bundler/jquery-rails-4.5.1
Bump jquery-rails from 4.5.0 to 4.5.1
2023-01-11 02:04:55 +02:00
dependabot[bot]
f322b54643
Bump rubocop from 1.40.0 to 1.43.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.40.0 to 1.43.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.40.0...v1.43.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-11 00:01:58 +00:00
dependabot[bot]
878577bf14
Bump jquery-rails from 4.5.0 to 4.5.1
Bumps [jquery-rails](https://github.com/rails/jquery-rails) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/rails/jquery-rails/releases)
- [Changelog](https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/jquery-rails/compare/v4.5.0...v4.5.1)

---
updated-dependencies:
- dependency-name: jquery-rails
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 00:02:06 +00:00
Jyri-Petteri Paloposki
d90782ee25
Merge pull request #2866 from TracksApp/dependabot/bundler/font-awesome-sass-6.2.1
Bump font-awesome-sass from 6.2.0 to 6.2.1
2022-12-31 15:30:28 +02:00
Jyri-Petteri Paloposki
10382ea4d6
Merge pull request #2865 from TracksApp/dependabot/bundler/pg-1.4.5
Bump pg from 1.4.4 to 1.4.5
2022-12-31 14:36:36 +02:00
Jyri-Petteri Paloposki
242e522d02
Merge pull request #2867 from TracksApp/dependabot/bundler/bullet-7.0.4
Bump bullet from 7.0.3 to 7.0.4
2022-12-31 14:36:27 +02:00
Jyri-Petteri Paloposki
9bde927072
Merge pull request #2871 from TracksApp/dependabot/bundler/rails-html-sanitizer-1.4.4
Bump rails-html-sanitizer from 1.4.3 to 1.4.4
2022-12-31 14:28:08 +02:00
dependabot[bot]
b194d72189
Bump rails-html-sanitizer from 1.4.3 to 1.4.4
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.4.3...v1.4.4)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-14 14:52:46 +00:00
dependabot[bot]
d4a69ce2b0
Bump bullet from 7.0.3 to 7.0.4
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.3...7.0.4)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 00:04:31 +00:00
dependabot[bot]
9c2fb152d9
Bump font-awesome-sass from 6.2.0 to 6.2.1
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 00:04:03 +00:00
dependabot[bot]
967289becc
Bump pg from 1.4.4 to 1.4.5
Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.4 to 1.4.5.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.4.4...v1.4.5)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 00:03:49 +00:00
Jyri-Petteri Paloposki
d9d9d19921
Merge pull request #2859 from TracksApp/dependabot/bundler/mocha-2.0.2
Bump mocha from 1.16.0 to 2.0.2
2022-12-10 21:34:10 +02:00
Jyri-Petteri Paloposki
2e43dfd4e2
Merge pull request #2860 from TracksApp/dependabot/bundler/rails_autolink-1.1.7
Bump rails_autolink from 1.1.6 to 1.1.7
2022-12-10 21:33:59 +02:00
Jyri-Petteri Paloposki
371ef6e827
Merge pull request #2862 from TracksApp/dependabot/bundler/nokogiri-1.13.10
Bump nokogiri from 1.13.9 to 1.13.10
2022-12-10 21:33:49 +02:00
Jyri-Petteri Paloposki
b6884ad385
Merge pull request #2863 from TracksApp/dependabot/bundler/rubocop-1.40.0
Bump rubocop from 1.37.1 to 1.40.0
2022-12-10 21:33:36 +02:00
dependabot[bot]
98b14f8482
Bump rubocop from 1.37.1 to 1.40.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.37.1 to 1.40.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.37.1...v1.40.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 00:01:02 +00:00
dependabot[bot]
af6fcc8c67
Bump nokogiri from 1.13.9 to 1.13.10
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.9 to 1.13.10.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.9...v1.13.10)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-08 04:07:29 +00:00
dependabot[bot]
d424d59dba
Bump rails_autolink from 1.1.6 to 1.1.7
Bumps [rails_autolink](https://github.com/tenderlove/rails_autolink) from 1.1.6 to 1.1.7.
- [Release notes](https://github.com/tenderlove/rails_autolink/releases)
- [Changelog](https://github.com/tenderlove/rails_autolink/blob/master/CHANGELOG.rdoc)
- [Commits](https://github.com/tenderlove/rails_autolink/compare/v1.1.6...v1.1.7)

---
updated-dependencies:
- dependency-name: rails_autolink
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 00:02:14 +00:00
dependabot[bot]
031230d807
Bump mocha from 1.16.0 to 2.0.2
Bumps [mocha](https://github.com/freerange/mocha) from 1.16.0 to 2.0.2.
- [Release notes](https://github.com/freerange/mocha/releases)
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v1.16.0...v2.0.2)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 00:02:04 +00:00
Jyri-Petteri Paloposki
6f930da901
Merge pull request #2856 from TracksApp/dependabot/bundler/rspec-expectations-3.12.0
Bump rspec-expectations from 3.11.1 to 3.12.0
2022-10-28 20:02:10 +03:00
dependabot[bot]
c91a5ab05c
Bump rspec-expectations from 3.11.1 to 3.12.0
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.11.1 to 3.12.0.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.11.1...v3.12.0)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-27 00:02:38 +00:00
Jyri-Petteri Paloposki
e6a8dbb994
Merge pull request #2855 from TracksApp/dependabot/bundler/rubocop-1.37.1
Bump rubocop from 1.37.0 to 1.37.1
2022-10-25 18:20:17 +03:00
dependabot[bot]
baae1f2924
Bump rubocop from 1.37.0 to 1.37.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.37.0 to 1.37.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.37.0...v1.37.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 00:03:03 +00:00
Jyri-Petteri Paloposki
f0c2e0a19f
Merge pull request #2852 from TracksApp/dependabot/bundler/rubocop-1.37.0
Bump rubocop from 1.36.0 to 1.37.0
2022-10-24 09:33:19 +03:00
Jyri-Petteri Paloposki
66aca440d5
Merge pull request #2853 from TracksApp/dependabot/bundler/puma-6.0.0
Bump puma from 5.6.5 to 6.0.0
2022-10-24 09:33:11 +03:00
Jyri-Petteri Paloposki
8afaebf721
Merge pull request #2854 from TracksApp/dependabot/bundler/mocha-1.16.0
Bump mocha from 1.15.0 to 1.16.0
2022-10-24 09:33:00 +03:00
dependabot[bot]
d89f9176b6
Bump mocha from 1.15.0 to 1.16.0
Bumps [mocha](https://github.com/freerange/mocha) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/freerange/mocha/releases)
- [Changelog](https://github.com/freerange/mocha/blob/v1.16.0/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 00:07:05 +00:00
dependabot[bot]
aee0630a81
Bump puma from 5.6.5 to 6.0.0
Bumps [puma](https://github.com/puma/puma) from 5.6.5 to 6.0.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.6.5...v6.0.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 00:06:23 +00:00
dependabot[bot]
9cb844d7a7
Bump rubocop from 1.36.0 to 1.37.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.36.0 to 1.37.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.36.0...v1.37.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 00:06:03 +00:00
Jyri-Petteri Paloposki
fae6c2cb8e
Merge pull request #2849 from TracksApp/dependabot/bundler/sqlite3-1.5.3
Bump sqlite3 from 1.5.2 to 1.5.3
2022-10-24 00:19:58 +03:00
Jyri-Petteri Paloposki
e24f5f4016
Merge pull request #2847 from TracksApp/dependabot/bundler/aasm-5.4.0
Bump aasm from 5.3.1 to 5.4.0
2022-10-24 00:19:48 +03:00
Jyri-Petteri Paloposki
f29b72ec44
Merge pull request #2850 from TracksApp/dependabot/bundler/pg-1.4.4
Bump pg from 1.4.3 to 1.4.4
2022-10-24 00:19:06 +03:00
Jyri-Petteri Paloposki
d451e90c51
Merge pull request #2851 from TracksApp/dependabot/bundler/nokogiri-1.13.9
Bump nokogiri from 1.13.8 to 1.13.9
2022-10-24 00:18:54 +03:00
dependabot[bot]
5a98b62cb1
Bump nokogiri from 1.13.8 to 1.13.9
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.8 to 1.13.9.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.8...v1.13.9)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-21 04:15:34 +00:00
dependabot[bot]
076aba6f8c
Bump pg from 1.4.3 to 1.4.4
Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.4.3...v1.4.4)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 00:06:25 +00:00
dependabot[bot]
c5e5f39648
Bump sqlite3 from 1.5.2 to 1.5.3
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.5.2...v1.5.3)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 00:06:02 +00:00
dependabot[bot]
226c7c2bd8
Bump aasm from 5.3.1 to 5.4.0
Bumps [aasm](https://github.com/aasm/aasm) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/aasm/aasm/releases)
- [Changelog](https://github.com/aasm/aasm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aasm/aasm/commits)

---
updated-dependencies:
- dependency-name: aasm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 00:08:43 +00:00
Jyri-Petteri Paloposki
6130547e07
Merge pull request #2842 from TracksApp/dependabot/bundler/codeclimate-test-reporter-1.0.9
Bump codeclimate-test-reporter from 1.0.7 to 1.0.9
2022-10-06 19:35:11 +03:00
Jyri-Petteri Paloposki
3fd631ac6a Fix the MySQL user creation clause in the installation documentation.
Fixes #2843.
2022-10-06 19:33:22 +03:00
dependabot[bot]
7c7f1b5a76
Bump codeclimate-test-reporter from 1.0.7 to 1.0.9
Bumps [codeclimate-test-reporter](https://github.com/codeclimate/ruby-test-reporter) from 1.0.7 to 1.0.9.
- [Release notes](https://github.com/codeclimate/ruby-test-reporter/releases)
- [Changelog](https://github.com/codeclimate/ruby-test-reporter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codeclimate/ruby-test-reporter/compare/v1.0.7...v1.0.9)

---
updated-dependencies:
- dependency-name: codeclimate-test-reporter
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-06 00:03:10 +00:00
Jyri-Petteri Paloposki
957892055c
Merge pull request #2840 from TracksApp/dependabot/bundler/solargraph-0.47.2
Bump solargraph from 0.47.0 to 0.47.2
2022-10-04 11:20:03 +03:00
Jyri-Petteri Paloposki
eb33ffdc97
Merge pull request #2841 from TracksApp/dependabot/bundler/sqlite3-1.5.2
Bump sqlite3 from 1.4.4 to 1.5.2
2022-10-04 11:19:52 +03:00
dependabot[bot]
be45b47f2e
Bump sqlite3 from 1.4.4 to 1.5.2
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.4.4 to 1.5.2.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.4.4...v1.5.2)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 00:08:08 +00:00
dependabot[bot]
7d67195322
Bump solargraph from 0.47.0 to 0.47.2
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.47.0 to 0.47.2.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.47.0...v0.47.2)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-03 00:07:21 +00:00
Jyri-Petteri Paloposki
ba08928618
Merge pull request #2838 from TracksApp/dependabot/bundler/solargraph-0.47.0
Bump solargraph from 0.46.0 to 0.47.0
2022-09-26 09:56:44 +03:00
dependabot[bot]
82bc9d7417
Bump solargraph from 0.46.0 to 0.47.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.46.0 to 0.47.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.46.0...v0.47.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 00:09:44 +00:00
Jyri-Petteri Paloposki
5542bffe21
Merge pull request #2836 from TracksApp/dependabot/bundler/spring-4.1.0
Bump spring from 4.0.0 to 4.1.0
2022-09-24 00:14:07 +03:00
Jyri-Petteri Paloposki
45093f31fd
Merge pull request #2837 from TracksApp/dependabot/bundler/mocha-1.15.0
Bump mocha from 1.14.0 to 1.15.0
2022-09-24 00:13:55 +03:00
dependabot[bot]
7010d88313
Bump mocha from 1.14.0 to 1.15.0
Bumps [mocha](https://github.com/freerange/mocha) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/freerange/mocha/releases)
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-22 00:03:16 +00:00
dependabot[bot]
abc4fc7b22
Bump spring from 4.0.0 to 4.1.0
Bumps [spring](https://github.com/rails/spring) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-22 00:03:03 +00:00
Jyri-Petteri Paloposki
c38797cc3b
Merge pull request #2835 from TracksApp/dependabot/bundler/i18n-tasks-1.0.12
Bump i18n-tasks from 1.0.11 to 1.0.12
2022-09-19 10:10:18 +03:00
dependabot[bot]
f54455c845
Bump i18n-tasks from 1.0.11 to 1.0.12
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.11...v1.0.12)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 06:55:58 +00:00
Jyri-Petteri Paloposki
8cceece390
Merge pull request #2832 from TracksApp/dependabot/bundler/rspec-expectations-3.11.1
Bump rspec-expectations from 3.11.0 to 3.11.1
2022-09-19 09:55:28 +03:00
Jyri-Petteri Paloposki
99057020ec
Merge pull request #2834 from TracksApp/dependabot/bundler/aasm-5.3.1
Bump aasm from 5.3.0 to 5.3.1
2022-09-19 09:55:17 +03:00
dependabot[bot]
11010b3008
Bump aasm from 5.3.0 to 5.3.1
Bumps [aasm](https://github.com/aasm/aasm) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/aasm/aasm/releases)
- [Changelog](https://github.com/aasm/aasm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aasm/aasm/commits)

---
updated-dependencies:
- dependency-name: aasm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 00:06:13 +00:00
dependabot[bot]
dc1b8f4ac6
Bump rspec-expectations from 3.11.0 to 3.11.1
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.11.0 to 3.11.1.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.11.0...v3.11.1)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 00:02:30 +00:00
Jyri-Petteri Paloposki
23b60f2099 Document coding style and adding tests 2022-09-07 15:09:41 +03:00
Jyri-Petteri Paloposki
7bea9f2f3d Add CII best practices badge 2022-09-07 14:56:11 +03:00
Jyri-Petteri Paloposki
4ae2a4e1b2
Merge pull request #2826 from TracksApp/dependabot/bundler/rubocop-1.36.0
Bump rubocop from 1.35.1 to 1.36.0
2022-09-03 01:41:46 +03:00
dependabot[bot]
22c9bba754
Bump rubocop from 1.35.1 to 1.36.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.35.1 to 1.36.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.35.1...v1.36.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 00:03:17 +00:00
Jyri-Petteri Paloposki
7633500f37
Merge pull request #2825 from TracksApp/dependabot/bundler/font-awesome-sass-6.2.0
Bump font-awesome-sass from 6.1.2 to 6.2.0
2022-08-31 23:12:00 +03:00
dependabot[bot]
f2476df3e8
Bump font-awesome-sass from 6.1.2 to 6.2.0
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 6.1.2 to 6.2.0.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-31 19:53:55 +00:00
Jyri-Petteri Paloposki
f08007fc91
Merge pull request #2820 from TracksApp/dependabot/bundler/rubocop-1.35.1
Bump rubocop from 1.35.0 to 1.35.1
2022-08-31 22:53:41 +03:00
Jyri-Petteri Paloposki
0f60fa7e0d
Merge pull request #2821 from TracksApp/dependabot/bundler/solargraph-0.46.0
Bump solargraph from 0.45.0 to 0.46.0
2022-08-31 22:53:32 +03:00
Jyri-Petteri Paloposki
67e158bea2
Merge pull request #2822 from TracksApp/dependabot/bundler/puma-5.6.5
Bump puma from 5.6.4 to 5.6.5
2022-08-31 22:53:23 +03:00
dependabot[bot]
4f2671e1a8
Bump puma from 5.6.4 to 5.6.5
Bumps [puma](https://github.com/puma/puma) from 5.6.4 to 5.6.5.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.6.4...v5.6.5)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-24 00:02:32 +00:00
dependabot[bot]
ad62bb28c2
Bump solargraph from 0.45.0 to 0.46.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.45.0 to 0.46.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.45.0...v0.46.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 00:02:59 +00:00
dependabot[bot]
2be637754f
Bump rubocop from 1.35.0 to 1.35.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.35.0 to 1.35.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.35.0...v1.35.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-23 00:02:49 +00:00
Jyri-Petteri Paloposki
d40d7db1b5 Add automatic building for releases 2022-08-16 02:28:49 +03:00
Jyri-Petteri Paloposki
36a27c3a13 Try without the platform 2022-08-16 01:43:02 +03:00
Jyri-Petteri Paloposki
84cc264a9c Fix the repository name 2022-08-16 00:46:37 +03:00
Jyri-Petteri Paloposki
21e1009ad7 Automatically build latest Docker image 2022-08-16 00:45:34 +03:00
Jyri-Petteri Paloposki
6e27633f64
Merge pull request #2692 from TracksApp/dependabot/bundler/spring-4.0.0
Bump spring from 3.1.1 to 4.0.0
2022-08-14 14:35:47 +03:00
dependabot[bot]
ef99075c91
Bump spring from 3.1.1 to 4.0.0
Bumps [spring](https://github.com/rails/spring) from 3.1.1 to 4.0.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v3.1.1...v4.0.0)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-14 11:08:33 +00:00
Jyri-Petteri Paloposki
c101e9cf4e
Merge pull request #2819 from TracksApp/remove_ruby26
No longer test for Ruby 2.6
2022-08-14 14:07:11 +03:00
Jyri-Petteri Paloposki
a34922f59b No longer test for Ruby 2.6 2022-08-14 14:06:36 +03:00
Jyri-Petteri Paloposki
0a315c10e3
Merge pull request #2818 from TracksApp/v2.6.1
Version 2.6.1
2022-08-14 11:55:06 +03:00
Jyri-Petteri Paloposki
f599cafff8 Version 2.6.1 2022-08-14 11:42:29 +03:00
Jyri-Petteri Paloposki
fcb178fd66
Merge pull request #2817 from TracksApp/version_bumps
Bump all kinds of dependencies
2022-08-14 11:10:54 +03:00
Jyri-Petteri Paloposki
4ab8837c2c Fix the new locale test breaking other tests because of the locale user bleeding to other tests (models) 2022-08-14 10:56:20 +03:00
Jyri-Petteri Paloposki
ca54386523 Update package versions 2022-08-14 01:46:34 +03:00
Jyri-Petteri Paloposki
ac54c0fb6c
Merge pull request #2774 from Werkov/proxy-configuration
Allow autocompletion behind proxy
2022-08-12 13:35:07 +03:00
Jyri-Petteri Paloposki
9ae21dd491
Merge pull request #2810 from TracksApp/datepicker_localisations
Update Datepicker localisations and add missing ones
2022-08-12 00:25:30 +03:00
Jyri-Petteri Paloposki
21373cea43 Update Datepicker localisations and add missing ones. The nb_NO is just a renamed nb. The files are straight from upstream at https://github.com/jquery/jquery-ui/tree/main/ui/i18n 2022-08-12 00:11:21 +03:00
Jyri-Petteri Paloposki
24e3ff53b8
Merge pull request #2809 from TracksApp/test_locales
Test the index page with all locales to make sure missing frontend locale files aren't fatal
2022-08-12 00:09:06 +03:00
Jyri-Petteri Paloposki
e669a18733 Test the index page with all locales to make sure missing frontend locale files aren't fatal 2022-08-11 23:58:04 +03:00
Jyri-Petteri Paloposki
9f653ea520
Merge pull request #2815 from TracksApp/dependabot/bundler/rubocop-1.34.1
Bump rubocop from 1.33.0 to 1.34.1
2022-08-11 21:00:09 +03:00
Jyri-Petteri Paloposki
15425153ff
Merge pull request #2816 from TracksApp/dependabot/bundler/pg-1.4.3
Bump pg from 1.4.2 to 1.4.3
2022-08-11 20:59:59 +03:00
dependabot[bot]
6db8474c49
Bump pg from 1.4.2 to 1.4.3
Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.4.2...v1.4.3)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-10 00:02:01 +00:00
dependabot[bot]
cbf0166208
Bump rubocop from 1.33.0 to 1.34.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.33.0 to 1.34.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.33.0...v1.34.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-10 00:01:50 +00:00
Jyri-Petteri Paloposki
89b50b4ffa
Merge pull request #2813 from Pegasus-RPG/patch-1
Add info for using PostgreSQL
2022-08-08 16:33:52 +03:00
Sean M. Pappalardo
1e76f598b8
Update database.yml.tmpl with PGSQL hint 2022-08-07 16:18:36 -07:00
Sean M. Pappalardo
819dbb4a1e
Update installation.md for PostgreSQL
Update installation.md with PostgreSQL adapter info for the database.yml file
2022-08-07 16:15:08 -07:00
Jyri-Petteri Paloposki
5cd03b4443
Merge pull request #2811 from TracksApp/dependabot/bundler/rubocop-1.33.0
Bump rubocop from 1.32.0 to 1.33.0
2022-08-05 16:10:15 +03:00
dependabot[bot]
4fef516bc1
Bump rubocop from 1.32.0 to 1.33.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.32.0 to 1.33.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.32.0...v1.33.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 00:02:35 +00:00
Jyri-Petteri Paloposki
643331ae43
Merge pull request #2808 from TracksApp/fix_locales
Redo the locale fixes thrown out by Weblate: date.order should always…
2022-08-02 11:00:48 +03:00
Jyri-Petteri Paloposki
0b167bade4 Redo the locale fixes thrown out by Weblate: date.order should always use the English terms, fixed plurals (again) and added language code as root to new locales
Partially reverts #2767.
2022-08-02 10:45:57 +03:00
Jyri-Petteri Paloposki
9501239c3e
Merge pull request #2806 from TracksApp/dependabot/bundler/solargraph-0.45.0
Bump solargraph from 0.44.3 to 0.45.0
2022-08-02 10:02:04 +03:00
Jyri-Petteri Paloposki
e19ee92cc1
Merge pull request #2807 from TracksApp/dependabot/bundler/aasm-5.3.0
Bump aasm from 5.2.0 to 5.3.0
2022-08-02 10:01:53 +03:00
dependabot[bot]
f77d3c7f51
Bump aasm from 5.2.0 to 5.3.0
Bumps [aasm](https://github.com/aasm/aasm) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/aasm/aasm/releases)
- [Changelog](https://github.com/aasm/aasm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aasm/aasm/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: aasm
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 22:42:21 +00:00
Jyri-Petteri Paloposki
3acca63506
Merge pull request #2805 from TracksApp/dependabot/bundler/pg-1.4.2
Bump pg from 1.4.1 to 1.4.2
2022-08-02 01:41:26 +03:00
dependabot[bot]
7fbcc9da12
Bump solargraph from 0.44.3 to 0.45.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.44.3 to 0.45.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.44.3...v0.45.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 22:30:57 +00:00
Jyri-Petteri Paloposki
b00e14cac6
Merge pull request #2804 from TracksApp/dependabot/bundler/jquery-rails-4.5.0
Bump jquery-rails from 4.4.0 to 4.5.0
2022-08-02 01:30:22 +03:00
dependabot[bot]
c5eb0823c4
Bump pg from 1.4.1 to 1.4.2
Bumps [pg](https://github.com/ged/ruby-pg) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 22:22:18 +00:00
Jyri-Petteri Paloposki
0e0490ec03
Merge pull request #2803 from TracksApp/dependabot/bundler/yard-0.9.28
Bump yard from 0.9.27 to 0.9.28
2022-08-02 01:19:10 +03:00
dependabot[bot]
cd2f9ffda3
Bump jquery-rails from 4.4.0 to 4.5.0
Bumps [jquery-rails](https://github.com/rails/jquery-rails) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/rails/jquery-rails/releases)
- [Changelog](https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/jquery-rails/compare/v4.4.0...v4.5.0)

---
updated-dependencies:
- dependency-name: jquery-rails
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 21:59:41 +00:00
dependabot[bot]
cdb727974c
Bump yard from 0.9.27 to 0.9.28
Bumps [yard](https://github.com/lsegal/yard) from 0.9.27 to 0.9.28.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.27...v0.9.28)

---
updated-dependencies:
- dependency-name: yard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 21:59:30 +00:00
Jyri-Petteri Paloposki
7dce5fff1b
Merge pull request #2802 from TracksApp/dependabot/bundler/sqlite3-1.4.4
Bump sqlite3 from 1.4.2 to 1.4.4
2022-08-02 00:51:36 +03:00
Jyri-Petteri Paloposki
a52949b699
Merge pull request #2796 from TracksApp/dependabot/bundler/font-awesome-sass-6.1.2
Bump font-awesome-sass from 5.15.1 to 6.1.2
2022-08-02 00:51:23 +03:00
Jyri-Petteri Paloposki
8f3eab0744 Update icon inclusion and tests for FontAwesome 6. 2022-08-02 00:39:24 +03:00
Jyri-Petteri Paloposki
741b26e366
Merge pull request #2767 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2022-08-02 00:29:20 +03:00
dependabot[bot]
13b8de2a92
Bump font-awesome-sass from 5.15.1 to 6.1.2
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 5.15.1 to 6.1.2.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/commits)

---
updated-dependencies:
- dependency-name: font-awesome-sass
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 21:17:18 +00:00
dependabot[bot]
86e4cdcadd
Bump sqlite3 from 1.4.2 to 1.4.4
Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 1.4.2 to 1.4.4.
- [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases)
- [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v1.4.2...v1.4.4)

---
updated-dependencies:
- dependency-name: sqlite3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 21:16:41 +00:00
Francisco Serrador
070cf4ef32
Translated using Weblate (Spanish)
Currently translated at 89.0% (996 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2022-08-01 23:15:51 +02:00
Allan Nordhøy
943c7907d0
Translated using Weblate (Norwegian Bokmål)
Currently translated at 0.7% (8 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/nb_NO/
2022-08-01 23:15:51 +02:00
Jyri-Petteri Paloposki
de74f9c71a
Translated using Weblate (Finnish)
Currently translated at 99.6% (1115 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2022-08-01 23:15:51 +02:00
Jyri-Petteri Paloposki
0e6f637ca8
Translated using Weblate (Finnish)
Currently translated at 99.6% (1115 of 1119 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2022-08-01 23:15:51 +02:00
Jyri-Petteri Paloposki
d3d02845bf
Merge pull request #2801 from TracksApp/dependabot/bundler/i18n-tasks-1.0.11
Bump i18n-tasks from 1.0.10 to 1.0.11
2022-08-02 00:15:47 +03:00
dependabot[bot]
4b12a34cce
Bump i18n-tasks from 1.0.10 to 1.0.11
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.10 to 1.0.11.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.10...v1.0.11)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 21:02:33 +00:00
Jyri-Petteri Paloposki
223c615433
Merge pull request #2800 from TracksApp/dependabot/bundler/bullet-7.0.2
Bump bullet from 7.0.1 to 7.0.2
2022-08-02 00:02:00 +03:00
dependabot[bot]
069ec8b778
Bump bullet from 7.0.1 to 7.0.2
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.1...7.0.2)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 20:25:16 +00:00
Jyri-Petteri Paloposki
bfa0cec088
Merge pull request #2799 from TracksApp/dependabot/bundler/bcrypt-3.1.18
Bump bcrypt from 3.1.17 to 3.1.18
2022-08-01 23:24:29 +03:00
dependabot[bot]
5ad0f57779
Bump bcrypt from 3.1.17 to 3.1.18
Bumps [bcrypt](https://github.com/codahale/bcrypt-ruby) from 3.1.17 to 3.1.18.
- [Release notes](https://github.com/codahale/bcrypt-ruby/releases)
- [Changelog](https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/CHANGELOG)
- [Commits](https://github.com/codahale/bcrypt-ruby/compare/v3.1.17...v3.1.18)

---
updated-dependencies:
- dependency-name: bcrypt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-27 00:02:23 +00:00
Jyri-Petteri Paloposki
9493ec91b3
Merge pull request #2797 from TracksApp/dependabot/bundler/pg-1.4.1
Bump pg from 1.3.5 to 1.4.1
2022-07-26 10:39:38 +03:00
dependabot[bot]
c1ad402a70
Bump pg from 1.3.5 to 1.4.1
Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.5 to 1.4.1.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.3.5...v1.4.1)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 00:41:38 +00:00
Jyri-Petteri Paloposki
407ab3b0c0
Merge pull request #2789 from TracksApp/dependabot/bundler/rails-html-sanitizer-1.4.3
Bump rails-html-sanitizer from 1.4.2 to 1.4.3
2022-07-26 03:41:28 +03:00
Jyri-Petteri Paloposki
8515bf9b7d
Merge pull request #2793 from TracksApp/dependabot/bundler/rubocop-1.32.0
Bump rubocop from 1.28.2 to 1.32.0
2022-07-26 03:39:40 +03:00
Jyri-Petteri Paloposki
cfafa94303
Merge pull request #2794 from TracksApp/dependabot/bundler/tzinfo-1.2.10
Bump tzinfo from 1.2.9 to 1.2.10
2022-07-26 03:39:29 +03:00
Jyri-Petteri Paloposki
afaa4f07a9
Merge pull request #2795 from TracksApp/fix_tests
Make the recurring year work in the future without manually updating the year numbers
2022-07-26 03:17:06 +03:00
Jyri-Petteri Paloposki
4eabdb1a83 Fix the recurring year tests 2022-07-26 02:01:15 +03:00
dependabot[bot]
1e6794ad09
Bump tzinfo from 1.2.9 to 1.2.10
Bumps [tzinfo](https://github.com/tzinfo/tzinfo) from 1.2.9 to 1.2.10.
- [Release notes](https://github.com/tzinfo/tzinfo/releases)
- [Changelog](https://github.com/tzinfo/tzinfo/blob/master/CHANGES.md)
- [Commits](https://github.com/tzinfo/tzinfo/compare/v1.2.9...v1.2.10)

---
updated-dependencies:
- dependency-name: tzinfo
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-22 08:26:15 +00:00
dependabot[bot]
d2cd74f9e3
Bump rubocop from 1.28.2 to 1.32.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.28.2 to 1.32.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.28.2...v1.32.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-22 00:03:28 +00:00
dependabot[bot]
e00836875d
Bump rails-html-sanitizer from 1.4.2 to 1.4.3
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.4.2...v1.4.3)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 09:05:24 +00:00
Jyri-Petteri Paloposki
195e6af846
Merge pull request #2783 from TracksApp/dependabot/bundler/mysql2-0.5.4
Bump mysql2 from 0.5.3 to 0.5.4
2022-06-02 19:50:14 +03:00
dependabot[bot]
57b8e996a5
Bump mysql2 from 0.5.3 to 0.5.4
Bumps [mysql2](https://github.com/brianmario/mysql2) from 0.5.3 to 0.5.4.
- [Release notes](https://github.com/brianmario/mysql2/releases)
- [Commits](https://github.com/brianmario/mysql2/compare/0.5.3...0.5.4)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-30 00:07:42 +00:00
Jyri-Petteri Paloposki
2eedde60f9
Merge pull request #2782 from TracksApp/dependabot/bundler/rack-2.2.3.1
Bump rack from 2.2.3 to 2.2.3.1
2022-05-29 21:54:02 +03:00
dependabot[bot]
6a0bfb0a1a
Bump rack from 2.2.3 to 2.2.3.1
Bumps [rack](https://github.com/rack/rack) from 2.2.3 to 2.2.3.1.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.3...2.2.3.1)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-27 22:04:43 +00:00
Jyri-Petteri Paloposki
2b89c890bb
Merge pull request #2778 from TracksApp/dependabot/bundler/i18n-tasks-1.0.10
Bump i18n-tasks from 1.0.9 to 1.0.10
2022-05-28 01:04:10 +03:00
Jyri-Petteri Paloposki
c8cc67162f
Merge pull request #2781 from TracksApp/dependabot/bundler/nokogiri-1.13.6
Bump nokogiri from 1.13.4 to 1.13.6
2022-05-28 01:04:00 +03:00
dependabot[bot]
3fdc3eb520
Bump nokogiri from 1.13.4 to 1.13.6
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.4 to 1.13.6.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.4...v1.13.6)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 03:42:33 +00:00
dependabot[bot]
af6819b9ad
Bump i18n-tasks from 1.0.9 to 1.0.10
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.9 to 1.0.10.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.9...v1.0.10)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-13 07:43:30 +00:00
Jyri-Petteri Paloposki
e6e37c279f
Merge pull request #2775 from TracksApp/dependabot/bundler/mocha-1.14.0
Bump mocha from 1.13.0 to 1.14.0
2022-05-13 10:42:45 +03:00
dependabot[bot]
f801a5ed93
Bump mocha from 1.13.0 to 1.14.0
Bumps [mocha](https://github.com/freerange/mocha) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/freerange/mocha/releases)
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v1.13.0...v1.14.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-05 10:16:51 +00:00
Jyri-Petteri Paloposki
4dce1c45af
Merge pull request #2772 from TracksApp/dependabot/bundler/rubocop-1.28.2
Bump rubocop from 1.27.0 to 1.28.2
2022-05-05 13:15:43 +03:00
Michal Koutný
d52893bc58 Allow autocompletion behind proxy
When the application is exposed via proxy, i.e. client visible host
(e.g. example.org:443) is different than Ruby server (e.g.
localhost:3000), autocompletion does not work since the generated URLs
refer to the internal hostname.

The AJAX is constructed with root_url and that can be modified with
default_url_options. So the simple fix just allows specifying customized
default_url_options.

Fixes: #1416
2022-04-29 02:52:17 +02:00
dependabot[bot]
f0f5718291
Bump rubocop from 1.27.0 to 1.28.2
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.27.0 to 1.28.2.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.27.0...v1.28.2)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 00:03:14 +00:00
Jyri-Petteri Paloposki
a5fea13526
Merge pull request #2770 from TracksApp/dependabot/bundler/rubocop-1.27.0
Bump rubocop from 1.26.1 to 1.27.0
2022-04-15 21:44:18 +03:00
dependabot[bot]
f4415c6221
Bump rubocop from 1.26.1 to 1.27.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.26.1 to 1.27.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.26.1...v1.27.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-14 00:02:36 +00:00
Jyri-Petteri Paloposki
ceebffadaa
Merge pull request #2768 from TracksApp/dependabot/bundler/i18n-tasks-1.0.9
Bump i18n-tasks from 1.0.8 to 1.0.9
2022-04-13 14:24:32 +03:00
Jyri-Petteri Paloposki
4e4ca1566a
Merge pull request #2769 from TracksApp/dependabot/bundler/nokogiri-1.13.4
Bump nokogiri from 1.13.3 to 1.13.4
2022-04-13 14:24:22 +03:00
dependabot[bot]
212bdf8d82
Bump nokogiri from 1.13.3 to 1.13.4
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.3 to 1.13.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.4/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.3...v1.13.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-12 10:12:37 +00:00
dependabot[bot]
4ffa5d8b47
Bump i18n-tasks from 1.0.8 to 1.0.9
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.8 to 1.0.9.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v1.0.8...v1.0.9)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-11 00:06:25 +00:00
Jyri-Petteri Paloposki
5f913c4b84
Merge pull request #2766 from TracksApp/dependabot/bundler/tolk-4.3.0
Bump tolk from 4.1.1 to 4.3.0
2022-04-07 22:46:49 +03:00
Jyri-Petteri Paloposki
085d9a89fd
Merge pull request #2765 from TracksApp/fix_rich_help
Fix rich text help to specify that subject is used
2022-04-07 20:04:26 +03:00
dependabot[bot]
2bf00960e2
Bump tolk from 4.1.1 to 4.3.0
Bumps [tolk](https://github.com/tolk/tolk) from 4.1.1 to 4.3.0.
- [Release notes](https://github.com/tolk/tolk/releases)
- [Changelog](https://github.com/tolk/tolk/blob/v4.3.0/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v4.1.1...v4.3.0)

---
updated-dependencies:
- dependency-name: tolk
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 17:03:42 +00:00
Jyri-Petteri Paloposki
a928a1ead0
Merge pull request #2764 from TracksApp/dependabot/bundler/i18n-tasks-1.0.8
Bump i18n-tasks from 0.9.37 to 1.0.8
2022-04-07 20:02:07 +03:00
Jyri-Petteri Paloposki
7435979cb9 Fix rich text help to specify that subject is used 2022-04-07 19:48:37 +03:00
dependabot[bot]
21c5371116
Bump i18n-tasks from 0.9.37 to 1.0.8
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.37 to 1.0.8.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.37...v1.0.8)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-07 16:44:53 +00:00
Jyri-Petteri Paloposki
fa0989c929
Merge pull request #2762 from TracksApp/dependabot/bundler/pg-1.3.5
Bump pg from 1.3.4 to 1.3.5
2022-04-07 19:42:39 +03:00
Jyri-Petteri Paloposki
4881e753ed
Merge pull request #2763 from TracksApp/fix_rich_text_help
Fix rich text documentation of tickler date, which has always been in…
2022-04-07 19:42:26 +03:00
Jyri-Petteri Paloposki
785e1f836a Fix rich text documentation of tickler date, which has always been incorrect. 2022-04-07 18:54:59 +03:00
dependabot[bot]
6f380e26be
Bump pg from 1.3.4 to 1.3.5
Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.4 to 1.3.5.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/commits)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-02 09:33:11 +00:00
Jyri-Petteri Paloposki
9b0a47faa3
Merge pull request #2761 from TracksApp/dependabot/bundler/rubocop-1.26.1
Bump rubocop from 1.26.0 to 1.26.1
2022-04-02 12:32:10 +03:00
dependabot[bot]
cde0d18da9
Bump rubocop from 1.26.0 to 1.26.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.26.0 to 1.26.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.26.0...v1.26.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-31 22:47:32 +00:00
Jyri-Petteri Paloposki
2316a23a42
Merge pull request #2757 from TracksApp/dependabot/bundler/bcrypt-3.1.17
Bump bcrypt from 3.1.16 to 3.1.17
2022-04-01 01:47:03 +03:00
Jyri-Petteri Paloposki
84ba41546f
Merge pull request #2760 from TracksApp/dependabot/bundler/puma-5.6.4
Bump puma from 5.6.2 to 5.6.4
2022-04-01 01:46:52 +03:00
dependabot[bot]
57ca7f9e26
Bump puma from 5.6.2 to 5.6.4
Bumps [puma](https://github.com/puma/puma) from 5.6.2 to 5.6.4.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.6.2...v5.6.4)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-30 22:22:13 +00:00
dependabot[bot]
8bed183582
Bump bcrypt from 3.1.16 to 3.1.17
Bumps [bcrypt](https://github.com/codahale/bcrypt-ruby) from 3.1.16 to 3.1.17.
- [Release notes](https://github.com/codahale/bcrypt-ruby/releases)
- [Changelog](https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/CHANGELOG)
- [Commits](https://github.com/codahale/bcrypt-ruby/compare/v3.1.16...v3.1.17)

---
updated-dependencies:
- dependency-name: bcrypt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-15 00:03:24 +00:00
Jyri-Petteri Paloposki
a7d938f988
Merge pull request #2756 from TracksApp/dependabot/bundler/pg-1.3.4
Bump pg from 1.3.3 to 1.3.4
2022-03-15 00:40:31 +02:00
dependabot[bot]
e687e370f2
Bump pg from 1.3.3 to 1.3.4
Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.3 to 1.3.4.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.3.3...v1.3.4)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-11 00:02:30 +00:00
Jyri-Petteri Paloposki
651c13a3d9
Merge pull request #2755 from TracksApp/dependabot/bundler/rubocop-1.26.0
Bump rubocop from 1.25.1 to 1.26.0
2022-03-10 11:29:13 +02:00
Jyri-Petteri Paloposki
72b4981c7e
Merge pull request #2753 from TracksApp/upgrades
Version bumps
2022-03-10 02:02:32 +02:00
dependabot[bot]
d64c7627a2
Bump rubocop from 1.25.1 to 1.26.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.25.1 to 1.26.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.25.1...v1.26.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-10 00:02:14 +00:00
Jyri-Petteri Paloposki
73993cde40 Version bumps 2022-03-10 01:48:43 +02:00
Jyri-Petteri Paloposki
8507a41e9a
Merge pull request #2751 from TracksApp/dependabot/bundler/nokogiri-1.13.3
Bump nokogiri from 1.13.1 to 1.13.3
2022-03-01 09:49:29 +02:00
Jyri-Petteri Paloposki
29dcf89032
Merge pull request #2750 from TracksApp/dependabot/bundler/rack-mini-profiler-3.0.0
Bump rack-mini-profiler from 2.3.4 to 3.0.0
2022-03-01 09:49:17 +02:00
dependabot[bot]
684ab66eba
Bump nokogiri from 1.13.1 to 1.13.3
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.1 to 1.13.3.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.1...v1.13.3)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-26 09:23:02 +00:00
dependabot[bot]
64a4e457dd
Bump rack-mini-profiler from 2.3.4 to 3.0.0
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.4 to 3.0.0.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.4...v3.0.0)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-25 00:02:26 +00:00
Jyri-Petteri Paloposki
af1261be37
Merge pull request #2748 from TracksApp/dependabot/bundler/rack-mini-profiler-2.3.4
Bump rack-mini-profiler from 2.3.3 to 2.3.4
2022-02-23 13:59:10 +02:00
Jyri-Petteri Paloposki
9d0e4384d6
Merge pull request #2749 from TracksApp/dependabot/bundler/pg-1.3.3
Bump pg from 1.3.2 to 1.3.3
2022-02-23 13:58:57 +02:00
dependabot[bot]
e703584f9f
Bump pg from 1.3.2 to 1.3.3
Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.3.2...v1.3.3)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-23 00:03:30 +00:00
dependabot[bot]
a37a9088e7
Bump rack-mini-profiler from 2.3.3 to 2.3.4
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.3 to 2.3.4.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.3...v2.3.4)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-23 00:03:12 +00:00
Jyri-Petteri Paloposki
4501abc264
Merge pull request #2747 from TracksApp/rubocop_limits
Also make the Codeclimate configuration a bit more relaxed
2022-02-23 01:16:14 +02:00
Jyri-Petteri Paloposki
50c6ba4e0c Also make the Codeclimate configuration a bit more relaxed 2022-02-23 01:15:10 +02:00
Jyri-Petteri Paloposki
d820d6af9c
Merge pull request #2746 from TracksApp/rubocop_limits
Relax the Rubocop limits a bit to make CodeClimate more useful
2022-02-22 23:35:44 +02:00
Jyri-Petteri Paloposki
a0f0ca0c13 Relax the Rubocop limits a bit to make CodeClimate more useful 2022-02-22 23:23:14 +02:00
Jyri-Petteri Paloposki
f40e3c0788
Merge pull request #2742 from TracksApp/footer-version
Fix the Git version in the footer with the Docker image
2022-02-21 13:58:15 +02:00
Jyri-Petteri Paloposki
6ca701f6fd Fix the Git version in the footer with the Docker image and change the wording. 2022-02-21 13:44:43 +02:00
Jyri-Petteri Paloposki
4b2c4db457
Merge pull request #2741 from TracksApp/2.6
Version 2.6
2022-02-21 12:11:20 +02:00
Jyri-Petteri Paloposki
4c429b7a83 Version 2.6 2022-02-21 11:51:37 +02:00
Jyri-Petteri Paloposki
1404e8053d
Merge pull request #2735 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2022-02-21 11:40:00 +02:00
Jyri-Petteri Paloposki
ba861b326d Fixed the plurals 2022-02-21 11:39:36 +02:00
Jyri-Petteri Paloposki
580781536f
Translated using Weblate (Finnish)
Currently translated at 99.6% (1113 of 1117 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2022-02-20 18:57:43 +01:00
Jyri-Petteri Paloposki
8e106ca72c
Merge pull request #2739 from TracksApp/dependabot/bundler/pg-1.3.2
Bump pg from 1.3.1 to 1.3.2
2022-02-20 19:57:40 +02:00
dependabot[bot]
c9845711c0
Bump pg from 1.3.1 to 1.3.2
Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-20 17:44:55 +00:00
Jyri-Petteri Paloposki
746c0a7839
Merge pull request #2740 from TracksApp/rails_minor_upgrade
Minor upgrade to Rails
2022-02-20 19:44:00 +02:00
Jyri-Petteri Paloposki
6aaf56dfe5 Minor upgrade to Rails 2022-02-20 19:28:51 +02:00
Jyri-Petteri Paloposki
f0585b4ba5
Merge pull request #2734 from TracksApp/dependabot/bundler/kt-paperclip-7.1.1
Bump kt-paperclip from 7.1.0 to 7.1.1
2022-02-20 19:19:34 +02:00
Jyri-Petteri Paloposki
56009628fd
Merge pull request #2733 from TracksApp/dependabot/bundler/rspec-expectations-3.11.0
Bump rspec-expectations from 3.10.2 to 3.11.0
2022-02-20 19:19:21 +02:00
Jyri-Petteri Paloposki
fceb10b5ee
Merge pull request #2736 from TracksApp/dependabot/bundler/puma-5.6.2
Bump puma from 5.6.1 to 5.6.2
2022-02-20 19:19:11 +02:00
dependabot[bot]
6487527bbe
Bump puma from 5.6.1 to 5.6.2
Bumps [puma](https://github.com/puma/puma) from 5.6.1 to 5.6.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.6.1...v5.6.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-11 22:05:04 +00:00
dependabot[bot]
237b0591cf
Bump kt-paperclip from 7.1.0 to 7.1.1
Bumps [kt-paperclip](https://github.com/kreeti/kt-paperclip) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/kreeti/kt-paperclip/releases)
- [Changelog](https://github.com/kreeti/kt-paperclip/blob/master/NEWS)
- [Commits](https://github.com/kreeti/kt-paperclip/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: kt-paperclip
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-10 00:07:15 +00:00
dependabot[bot]
889afc6667
Bump rspec-expectations from 3.10.2 to 3.11.0
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.10.2 to 3.11.0.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.10.2...v3.11.0)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-10 00:07:03 +00:00
Jyri-Petteri Paloposki
6c187bf1e5
Merge pull request #2732 from TracksApp/import_fixes
Error message fixes for CSV import. Add the necessary directory to Do…
2022-02-09 12:03:46 +02:00
Jyri-Petteri Paloposki
dfdab8af55 CS fix 2022-02-09 11:50:16 +02:00
Jyri-Petteri Paloposki
511a4a23b6 Better error messages 2022-02-09 11:48:09 +02:00
Jyri-Petteri Paloposki
c2bd1b0d81 Error message fixes for CSV import. Add the necessary directory to Docker image. 2022-02-09 11:28:05 +02:00
Jyri-Petteri Paloposki
2bdacc9d5c
Merge pull request #2728 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2022-02-09 00:09:08 +02:00
Jyri-Petteri Paloposki
eaf6d4f0a4 Fix the plurals again in FI 2022-02-08 23:42:13 +02:00
Jyri-Petteri Paloposki
861a007bea
Translated using Weblate (Finnish)
Currently translated at 99.6% (1112 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2022-02-07 09:19:58 +01:00
Jyri-Petteri Paloposki
194d261042
Merge pull request #2729 from TracksApp/dependabot/bundler/kt-paperclip-7.1.0
Bump kt-paperclip from 7.0.1 to 7.1.0
2022-02-07 10:19:54 +02:00
dependabot[bot]
3e11894caf
Bump kt-paperclip from 7.0.1 to 7.1.0
Bumps [kt-paperclip](https://github.com/kreeti/kt-paperclip) from 7.0.1 to 7.1.0.
- [Release notes](https://github.com/kreeti/kt-paperclip/releases)
- [Changelog](https://github.com/kreeti/kt-paperclip/blob/master/NEWS)
- [Commits](https://github.com/kreeti/kt-paperclip/compare/v7.0.1...v7.1.0)

---
updated-dependencies:
- dependency-name: kt-paperclip
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-07 00:21:41 +00:00
Jyri-Petteri Paloposki
4e2b33a7ef
Merge pull request #2713 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2022-02-04 17:45:30 +02:00
Jyri-Petteri Paloposki
2b2acb494a Fixed the plurals again. 2022-02-04 17:32:11 +02:00
Jyri-Petteri Paloposki
1f363db380
Translated using Weblate (Finnish)
Currently translated at 99.8% (1114 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2022-02-04 16:19:06 +01:00
Burak Hüseyin Ekseli
a26ee3d62d
Translated using Weblate (Turkish)
Currently translated at 30.5% (341 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/tr/
2022-02-04 16:19:06 +01:00
Francisco Serrador
724524f0d1
Translated using Weblate (Spanish)
Currently translated at 89.8% (1003 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2022-02-04 16:19:06 +01:00
Francisco Serrador
1b8a6d732a
Translated using Weblate (Spanish)
Currently translated at 88.2% (985 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/es/
2022-02-04 16:19:06 +01:00
Jyri-Petteri Paloposki
5eddac7731
Translated using Weblate (English)
Currently translated at 99.0% (1105 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/en/
2022-02-04 16:19:06 +01:00
Jyri-Petteri Paloposki
39439b7379
Merge pull request #2727 from TracksApp/dependabot/bundler/rubocop-1.25.1
Bump rubocop from 1.25.0 to 1.25.1
2022-02-04 17:19:02 +02:00
Jyri-Petteri Paloposki
690831ae7d
Merge pull request #2725 from TracksApp/dependabot/bundler/pg-1.3.1
Bump pg from 1.3.0 to 1.3.1
2022-02-04 17:18:48 +02:00
dependabot[bot]
a58b0c77b0
Bump rubocop from 1.25.0 to 1.25.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.25.0 to 1.25.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.25.0...v1.25.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-04 00:02:07 +00:00
Jyri-Petteri Paloposki
7cf119d7df
Merge pull request #2726 from TracksApp/poll_and_obsidian
Add the obsidian link support to config also. Fix poll-for-db.
2022-02-03 12:34:39 +02:00
Jyri-Petteri Paloposki
7a9dd6cd6f Add the obsidian link support to config also. Fix poll-for-db. 2022-02-03 11:44:26 +02:00
dependabot[bot]
9e09972d03
Bump pg from 1.3.0 to 1.3.1
Bumps [pg](https://github.com/ged/ruby-pg) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.3.0...v1.3.1)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-02 00:02:33 +00:00
Jyri-Petteri Paloposki
4c031c7699
Merge pull request #2720 from TracksApp/dependabot/bundler/pg-1.3.0
Bump pg from 1.2.3 to 1.3.0
2022-01-31 12:28:34 +02:00
Jyri-Petteri Paloposki
d553d47a37
Merge pull request #2724 from TracksApp/add_obsidian
Add Obsidian support to the link sanitation
2022-01-31 12:23:19 +02:00
Jyri-Petteri Paloposki
a6d70a05a1 Add Obsidian support to the link sanitation 2022-01-31 12:10:58 +02:00
dependabot[bot]
a37817a90b
Bump pg from 1.2.3 to 1.3.0
Bumps [pg](https://github.com/ged/ruby-pg) from 1.2.3 to 1.3.0.
- [Release notes](https://github.com/ged/ruby-pg/releases)
- [Changelog](https://github.com/ged/ruby-pg/blob/master/History.rdoc)
- [Commits](https://github.com/ged/ruby-pg/compare/v1.2.3...v1.3.0)

---
updated-dependencies:
- dependency-name: pg
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-31 09:44:10 +00:00
Jyri-Petteri Paloposki
d0d70efe52
Merge pull request #2722 from TracksApp/dependabot/bundler/puma-5.6.1
Bump puma from 5.5.2 to 5.6.1
2022-01-31 11:42:51 +02:00
dependabot[bot]
86e14120a2
Bump puma from 5.5.2 to 5.6.1
Bumps [puma](https://github.com/puma/puma) from 5.5.2 to 5.6.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.5.2...v5.6.1)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-28 00:02:13 +00:00
Jyri-Petteri Paloposki
27bbb4105f
Merge pull request #2719 from TracksApp/dependabot/bundler/solargraph-0.44.3
Bump solargraph from 0.44.2 to 0.44.3
2022-01-24 10:15:34 +02:00
Jyri-Petteri Paloposki
d80cf2ef1f
Merge pull request #2718 from TracksApp/dependabot/bundler/rubocop-1.25.0
Bump rubocop from 1.24.1 to 1.25.0
2022-01-24 10:15:21 +02:00
dependabot[bot]
c22ce00951
Bump solargraph from 0.44.2 to 0.44.3
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.44.2 to 0.44.3.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.44.2...v0.44.3)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-24 00:06:00 +00:00
dependabot[bot]
57dd37ada3
Bump rubocop from 1.24.1 to 1.25.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.24.1 to 1.25.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.24.1...v1.25.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-19 00:02:39 +00:00
Jyri-Petteri Paloposki
f7263d17c1
Merge pull request #2716 from TracksApp/dependabot/bundler/rspec-expectations-3.10.2
Bump rspec-expectations from 3.10.1 to 3.10.2
2022-01-17 19:25:53 +02:00
Jyri-Petteri Paloposki
ec2feecbe2
Merge pull request #2715 from TracksApp/dependabot/bundler/bullet-7.0.1
Bump bullet from 7.0.0 to 7.0.1
2022-01-17 19:25:44 +02:00
dependabot[bot]
279cfffeb0
Bump rspec-expectations from 3.10.1 to 3.10.2
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.10.1 to 3.10.2.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.10.1...v3.10.2)

---
updated-dependencies:
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-17 00:09:54 +00:00
dependabot[bot]
771c24154d
Bump bullet from 7.0.0 to 7.0.1
Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/7.0.0...7.0.1)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-17 00:09:20 +00:00
Jyri-Petteri Paloposki
973929239b
Merge pull request #2711 from TracksApp/dependabot/bundler/tolk-4.1.1
Bump tolk from 4.1.0 to 4.1.1
2022-01-15 22:52:35 +02:00
Jyri-Petteri Paloposki
db2d40807d
Merge pull request #2714 from TracksApp/dependabot/bundler/listen-3.7.1
Bump listen from 3.7.0 to 3.7.1
2022-01-15 22:52:26 +02:00
dependabot[bot]
c660f275e0
Bump listen from 3.7.0 to 3.7.1
Bumps [listen](https://github.com/guard/listen) from 3.7.0 to 3.7.1.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.7.0...v3.7.1)

---
updated-dependencies:
- dependency-name: listen
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-15 18:14:16 +00:00
dependabot[bot]
4b95fc4af7
Bump tolk from 4.1.0 to 4.1.1
Bumps [tolk](https://github.com/tolk/tolk) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/tolk/tolk/releases)
- [Changelog](https://github.com/tolk/tolk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: tolk
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-15 18:14:02 +00:00
Jyri-Petteri Paloposki
f99b423445 Apparently Rubocop only works with up to 2.5, so let's use that then for
it.
2022-01-15 10:59:56 +02:00
Jyri-Petteri Paloposki
e165a561ae Bump the .ruby-version 2022-01-04 03:17:04 +02:00
Jyri-Petteri Paloposki
87702f3c00
Merge pull request #2710 from TracksApp/dependabot/bundler/kt-paperclip-7.0.1
Bump kt-paperclip from 6.4.1 to 7.0.1
2022-01-04 02:24:11 +02:00
dependabot[bot]
d1b4ee9e87
Bump kt-paperclip from 6.4.1 to 7.0.1
Bumps [kt-paperclip](https://github.com/kreeti/kt-paperclip) from 6.4.1 to 7.0.1.
- [Release notes](https://github.com/kreeti/kt-paperclip/releases)
- [Changelog](https://github.com/kreeti/kt-paperclip/blob/master/NEWS)
- [Commits](https://github.com/kreeti/kt-paperclip/compare/v6.4.1...v7.0.1)

---
updated-dependencies:
- dependency-name: kt-paperclip
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-04 00:02:10 +00:00
Jyri-Petteri Paloposki
dfef3f31da
Merge pull request #2704 from TracksApp/ruby-update
Ruby 3.0 compatibility and testing
2022-01-03 22:49:22 +02:00
Jyri-Petteri Paloposki
a020beab9e More Ruby 3 compatibility fixes 2022-01-03 22:23:41 +02:00
Jyri-Petteri Paloposki
92c524024a Remove Paperclip in favor of a fork due to Ruby 3 incompatibility 2022-01-03 21:52:56 +02:00
Jyri-Petteri Paloposki
01e09f8708 Ruby 3 compatibility fixes 2022-01-03 21:36:01 +02:00
Jyri-Petteri Paloposki
916ec5121d Enable testing for Ruby 3.0 2022-01-03 21:20:50 +02:00
Jyri-Petteri Paloposki
ff178d1490
Merge pull request #2707 from TracksApp/minimal_rails_update
Update Rails to next minor version
2022-01-03 20:30:07 +02:00
Jyri-Petteri Paloposki
de61a086d1 Update Rails to next minor version 2022-01-03 20:16:17 +02:00
Jyri-Petteri Paloposki
db580a1d9d
Merge pull request #2700 from TracksApp/dependabot/bundler/i18n-tasks-0.9.37
Bump i18n-tasks from 0.9.36 to 0.9.37
2022-01-03 19:26:13 +02:00
dependabot[bot]
101ade7ad5
Bump i18n-tasks from 0.9.36 to 0.9.37
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.36 to 0.9.37.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.36...v0.9.37)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 16:57:15 +00:00
Jyri-Petteri Paloposki
581ee0c0cd
Merge pull request #2701 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2022-01-03 18:56:17 +02:00
Burak Hüseyin Ekseli
0599d7454f
Translated using Weblate (Turkish)
Currently translated at 30.0% (335 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/tr/
2022-01-03 17:53:16 +01:00
Jyri-Petteri Paloposki
76d688eea5
Merge pull request #2705 from TracksApp/goodbye-2.5
Remove testing for Ruby 2.5
2022-01-03 18:53:12 +02:00
Jyri-Petteri Paloposki
a798acd691 Remove testing for Ruby 2.5 2022-01-03 13:02:59 +02:00
Jyri-Petteri Paloposki
612ab1e53b
Merge pull request #2702 from TracksApp/dependabot/bundler/rubocop-1.24.1
Bump rubocop from 1.23.0 to 1.24.1
2022-01-03 12:17:05 +02:00
dependabot[bot]
e0d07bac0a
Bump rubocop from 1.23.0 to 1.24.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.23.0 to 1.24.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.23.0...v1.24.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-03 00:10:08 +00:00
Jyri-Petteri Paloposki
17e0bae77d
Merge pull request #2697 from TracksApp/dependabot/bundler/i18n-tasks-0.9.36
Bump i18n-tasks from 0.9.35 to 0.9.36
2021-12-22 10:03:11 +02:00
dependabot[bot]
1b21416a5d
Bump i18n-tasks from 0.9.35 to 0.9.36
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.35 to 0.9.36.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.35...v0.9.36)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-22 00:02:32 +00:00
Jyri-Petteri Paloposki
f10944171d
Merge pull request #2696 from TracksApp/dependabot/bundler/bullet-7.0.0
Bump bullet from 6.1.5 to 7.0.0
2021-12-20 22:27:44 +02:00
dependabot[bot]
d48e3739ff
Bump bullet from 6.1.5 to 7.0.0
Bumps [bullet](https://github.com/flyerhzm/bullet) from 6.1.5 to 7.0.0.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/6.1.5...7.0.0)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-20 00:13:22 +00:00
Jyri-Petteri Paloposki
a9334a6dd4
Merge pull request #2691 from TracksApp/dependabot/bundler/yard-0.9.27
Bump yard from 0.9.26 to 0.9.27
2021-12-01 18:21:39 +02:00
dependabot[bot]
aedede44ba
Bump yard from 0.9.26 to 0.9.27
Bumps [yard](https://github.com/lsegal/yard) from 0.9.26 to 0.9.27.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.26...v0.9.27)

---
updated-dependencies:
- dependency-name: yard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-30 00:03:07 +00:00
Jyri-Petteri Paloposki
333b35be04
Merge pull request #2689 from TracksApp/fix_image
Use the script in bin/ for running the rails server in the Docker image.
2021-11-29 21:58:41 +02:00
Jyri-Petteri Paloposki
41538efb9e Use the script in bin/ for running the rails server in the Docker image. 2021-11-29 21:37:44 +02:00
Jyri-Petteri Paloposki
ccbd80be66
Merge pull request #2687 from TracksApp/dependabot/bundler/spring-3.1.1
Bump spring from 3.1.0 to 3.1.1
2021-11-26 09:33:17 +02:00
dependabot[bot]
bfc0c0825c
Bump spring from 3.1.0 to 3.1.1
Bumps [spring](https://github.com/rails/spring) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-26 00:02:18 +00:00
Jyri-Petteri Paloposki
c0bd8183be
Merge pull request #2686 from TracksApp/fix_ci
Fix using most recent versions of the Ruby images in the CI
2021-11-25 01:23:30 +02:00
Jyri-Petteri Paloposki
8800bab8a9 Fix using most recent versions of the Ruby images in the CI 2021-11-25 01:10:38 +02:00
Jyri-Petteri Paloposki
9a109c13cb Next release version number 2021-11-24 22:21:29 +02:00
Jyri-Petteri Paloposki
448c8d6e32 Missing line from changelog 2021-11-24 22:19:26 +02:00
Jyri-Petteri Paloposki
573472c262 Few installation doc updates 2021-11-24 22:16:47 +02:00
Jyri-Petteri Paloposki
addc40ad8a
Merge pull request #2684 from weblate/weblate-tracks-tracks
Translations update from Hosted Weblate
2021-11-24 21:58:05 +02:00
Jyri-Petteri Paloposki
eb61d0a292 Fix again the broken plurals 2021-11-24 21:44:32 +02:00
Jyri-Petteri Paloposki
d09c88f78d
Translated using Weblate (Finnish)
Currently translated at 100.0% (1116 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-11-24 20:39:00 +01:00
Jyri-Petteri Paloposki
741d736bcc
Merge pull request #2682 from TracksApp/dependabot/bundler/solargraph-0.44.2
Bump solargraph from 0.44.0 to 0.44.2
2021-11-24 21:07:54 +02:00
Jyri-Petteri Paloposki
9bba278d31
Merge pull request #2683 from TracksApp/dependabot/bundler/spring-3.1.0
Bump spring from 3.0.0 to 3.1.0
2021-11-24 21:07:40 +02:00
dependabot[bot]
ada726f1e8
Bump spring from 3.0.0 to 3.1.0
Bumps [spring](https://github.com/rails/spring) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-24 00:02:17 +00:00
dependabot[bot]
98a99f4bf4
Bump solargraph from 0.44.0 to 0.44.2
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.44.0 to 0.44.2.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.44.0...v0.44.2)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-24 00:02:09 +00:00
Jyri-Petteri Paloposki
697dca509f
Merge pull request #2680 from TracksApp/dependabot/bundler/rubocop-1.23.0
Bump rubocop from 1.22.3 to 1.23.0
2021-11-18 12:55:32 +02:00
dependabot[bot]
91a714cff1
Bump rubocop from 1.22.3 to 1.23.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.3 to 1.23.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.22.3...v1.23.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-16 00:03:26 +00:00
Jyri-Petteri Paloposki
d6448916d4 Fix the plurals 2021-11-15 12:17:06 +02:00
Jyri-Petteri Paloposki
c3fee2acd7
Merge pull request #2666 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-11-15 12:14:56 +02:00
Burak Hüseyin Ekseli
78574462ea
Translated using Weblate (Turkish)
Currently translated at 26.9% (301 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/tr/
2021-11-15 11:11:59 +01:00
Алексей Свистунов
ab57aa3402
Translated using Weblate (Russian)
Currently translated at 96.5% (1078 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-11-15 11:11:59 +01:00
Jyri-Petteri Paloposki
580188622a
Merge pull request #2679 from TracksApp/package_updates
Package updates
2021-11-15 12:11:55 +02:00
Jyri-Petteri Paloposki
d0646485f0 Package updates 2021-11-15 11:57:35 +02:00
Jyri-Petteri Paloposki
1727b728da
Merge pull request #2674 from TracksApp/dependabot/bundler/puma-5.5.2
Bump puma from 5.5.0 to 5.5.2
2021-11-15 10:31:05 +02:00
Jyri-Petteri Paloposki
a6157aa4a1
Merge pull request #2676 from TracksApp/dependabot/bundler/rubocop-1.22.3
Bump rubocop from 1.22.1 to 1.22.3
2021-11-15 10:30:51 +02:00
Jyri-Petteri Paloposki
7e80515e2f
Merge pull request #2677 from TracksApp/dependabot/bundler/i18n-tasks-0.9.35
Bump i18n-tasks from 0.9.34 to 0.9.35
2021-11-15 10:30:38 +02:00
dependabot[bot]
43961f5506
Bump i18n-tasks from 0.9.34 to 0.9.35
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.34 to 0.9.35.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.34...v0.9.35)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-08 00:09:26 +00:00
dependabot[bot]
9cca401810
Bump rubocop from 1.22.1 to 1.22.3
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.1 to 1.22.3.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.22.1...v1.22.3)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 00:02:32 +00:00
dependabot[bot]
e28ff07578
Bump puma from 5.5.0 to 5.5.2
Bumps [puma](https://github.com/puma/puma) from 5.5.0 to 5.5.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.5.0...v5.5.2)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-13 00:02:00 +00:00
Matt Rogers
954b44f8e1
Merge pull request #2672 from TracksApp/dependabot/bundler/rubocop-1.22.1 2021-10-04 19:19:56 -05:00
dependabot[bot]
72c394e1bb
Bump rubocop from 1.22.0 to 1.22.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.22.0 to 1.22.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.22.0...v1.22.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 00:02:01 +00:00
Jyri-Petteri Paloposki
dac8890890
Merge pull request #2671 from TracksApp/dependabot/bundler/rubocop-1.22.0
Bump rubocop from 1.21.0 to 1.22.0
2021-09-30 10:28:51 +03:00
dependabot[bot]
8256ebdd0c
Bump rubocop from 1.21.0 to 1.22.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.21.0...v1.22.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-30 00:02:27 +00:00
Jyri-Petteri Paloposki
e002188df0
Merge pull request #2670 from TracksApp/dependabot/bundler/nokogiri-1.12.5
Bump nokogiri from 1.12.4 to 1.12.5
2021-09-28 09:38:01 +03:00
Jyri-Petteri Paloposki
b280d059f3
Merge pull request #2669 from TracksApp/dependabot/bundler/solargraph-0.44.0
Bump solargraph from 0.43.1 to 0.44.0
2021-09-28 09:37:49 +03:00
dependabot[bot]
cb5d2a580a
Bump nokogiri from 1.12.4 to 1.12.5
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.12.4 to 1.12.5.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.12.4...v1.12.5)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 04:53:34 +00:00
dependabot[bot]
8117deb50f
Bump solargraph from 0.43.1 to 0.44.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.43.1 to 0.44.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.43.1...v0.44.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 00:02:24 +00:00
Jyri-Petteri Paloposki
cabf3b630e
Merge pull request #2665 from TracksApp/dependabot/bundler/solargraph-0.43.1
Bump solargraph from 0.43.0 to 0.43.1
2021-09-21 10:16:03 +03:00
dependabot[bot]
05e6f45044
Bump solargraph from 0.43.0 to 0.43.1
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.43.0 to 0.43.1.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.43.0...v0.43.1)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 00:02:20 +00:00
Jyri-Petteri Paloposki
399f46c00d
Merge pull request #2664 from TracksApp/dependabot/bundler/puma-5.5.0
Bump puma from 5.4.0 to 5.5.0
2021-09-20 10:04:06 +03:00
dependabot[bot]
709dfd7248
Bump puma from 5.4.0 to 5.5.0
Bumps [puma](https://github.com/puma/puma) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.4.0...v5.5.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 00:09:43 +00:00
Jyri-Petteri Paloposki
5374bef574
Merge pull request #2662 from TracksApp/dependabot/bundler/rubocop-1.21.0
Bump rubocop from 1.20.0 to 1.21.0
2021-09-16 07:59:38 +03:00
Jyri-Petteri Paloposki
bc504f3fb1
Merge pull request #2663 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-09-16 07:59:27 +03:00
Burak Hüseyin Ekseli
94c7fcc09a
Translated using Weblate (Turkish)
Currently translated at 17.0% (190 of 1116 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/tr/
2021-09-16 01:36:33 +02:00
dependabot[bot]
21cff05326
Bump rubocop from 1.20.0 to 1.21.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.20.0 to 1.21.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.20.0...v1.21.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-14 00:02:06 +00:00
Matt Rogers
d629527583
Merge pull request #2660 from TracksApp/dependabot/bundler/spring-3.0.0 2021-09-08 20:58:15 -05:00
dependabot[bot]
9aae52f648
Bump spring from 2.1.1 to 3.0.0
Bumps [spring](https://github.com/rails/spring) from 2.1.1 to 3.0.0.
- [Release notes](https://github.com/rails/spring/releases)
- [Changelog](https://github.com/rails/spring/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/spring/compare/v2.1.1...v3.0.0)

---
updated-dependencies:
- dependency-name: spring
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-09 00:01:59 +00:00
Jyri-Petteri Paloposki
4109a1342a
Merge pull request #2657 from TracksApp/dependabot/bundler/rack-mini-profiler-2.3.3
Bump rack-mini-profiler from 2.3.2 to 2.3.3
2021-08-31 10:18:50 +03:00
Jyri-Petteri Paloposki
cfc2ef13a5
Merge pull request #2658 from TracksApp/bin-script
Fix the bin/rails script to run Rails – copy-paste error.
2021-08-31 10:18:37 +03:00
Jyri-Petteri Paloposki
7fad611256 Fix the bin/rails script to run Rails – copy-paste error. 2021-08-31 10:02:52 +03:00
dependabot[bot]
7590bbb264
Bump rack-mini-profiler from 2.3.2 to 2.3.3
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.2...v2.3.3)

---
updated-dependencies:
- dependency-name: rack-mini-profiler
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-31 00:02:29 +00:00
Jyri-Petteri Paloposki
e691c7d135
Merge pull request #2656 from TracksApp/locales
Make REST help translatable; fix a few missing translations
2021-08-31 01:26:46 +03:00
Jyri-Petteri Paloposki
a4a6f50ad5 Make REST help translatable; fix a few missing translations 2021-08-31 01:11:18 +03:00
Jyri-Petteri Paloposki
8cbe476599
Merge pull request #2655 from TracksApp/fix_expiry_check
Parse the session expiry time to a Time instead of DateTime to allow …
2021-08-31 00:43:40 +03:00
Jyri-Petteri Paloposki
fa9d517e59 Parse the session expiry time to a Time instead of DateTime to allow comparison. 2021-08-31 00:25:53 +03:00
Jyri-Petteri Paloposki
5873608b47
Merge pull request #2653 from TracksApp/dependabot/bundler/rubocop-1.20.0
Bump rubocop from 1.19.1 to 1.20.0
2021-08-30 23:04:29 +03:00
dependabot[bot]
bd085b7db9
Bump rubocop from 1.19.1 to 1.20.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.19.1 to 1.20.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.19.1...v1.20.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-27 00:02:27 +00:00
Jyri-Petteri Paloposki
1572ba7204
Merge pull request #2651 from TracksApp/better_pluralisation
Remove the custom pluralisation rules in favor of rails_i18n and fix …
2021-08-26 18:04:49 +03:00
Jyri-Petteri Paloposki
16e26de2c5 Remove the custom pluralisation rules in favor of rails_i18n and fix the RU language file a bit. 2021-08-26 17:38:06 +03:00
Jyri-Petteri Paloposki
16b3de443d
Merge pull request #2650 from TracksApp/jqueryui_lang_files
Precompile datepicker i18n files for each language.
2021-08-26 13:39:48 +03:00
Jyri-Petteri Paloposki
406fdf2335 Fix a coding style error by CodeClimate 2021-08-26 13:22:28 +03:00
Jyri-Petteri Paloposki
5a6ee73d7d Precompile datepicker i18n files for each language.
Not an optimal solution, because it uses files from our own repository instead of the bundle, but found no other solution for now.
2021-08-26 12:49:40 +03:00
Jyri-Petteri Paloposki
d487222893
Merge pull request #2649 from TracksApp/fix_bin_scripts
Remove the Ruby dependency on host by fixing the bin/ra[ke,ils] scripts to use basic sh
2021-08-25 20:41:17 +03:00
Jyri-Petteri Paloposki
d9e20e6d12 Remove the Rails dependency on host by fixing the bin/ra[ke,ils] scripts to use basic sh 2021-08-25 20:28:12 +03:00
Jyri-Petteri Paloposki
bb2bcd7245
Merge pull request #2648 from TracksApp/autocomplete_fix
Fix autocomplete accessibility content overflow
2021-08-25 19:40:12 +03:00
Jyri-Petteri Paloposki
70cca807b7 Add BUNDLE_WITHOUT to the installation document.
Fixes #2297
2021-08-25 19:35:40 +03:00
Jyri-Petteri Paloposki
b268486703 Fix autocomplete accessibility content overflow 2021-08-25 19:26:21 +03:00
Jyri-Petteri Paloposki
fe4aa22c5d
Merge pull request #2647 from TracksApp/lockfile_update
Change the GitHub URL to fix a warning
2021-08-25 17:32:41 +03:00
Jyri-Petteri Paloposki
6c0d3ca1b3 Use the new fork gem 2021-08-25 17:18:57 +03:00
Jyri-Petteri Paloposki
64002c632f
Merge pull request #2646 from TracksApp/dependabot/bundler/rubocop-1.19.1
Bump rubocop from 1.19.0 to 1.19.1
2021-08-24 11:51:31 +03:00
Jyri-Petteri Paloposki
65e2108999
Merge pull request #2645 from TracksApp/dependabot/bundler/listen-3.7.0
Bump listen from 3.6.0 to 3.7.0
2021-08-24 11:51:20 +03:00
dependabot[bot]
76e97a9e77
Bump rubocop from 1.19.0 to 1.19.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.19.0 to 1.19.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.19.0...v1.19.1)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-20 00:02:06 +00:00
dependabot[bot]
59f3f61186
Bump listen from 3.6.0 to 3.7.0
Bumps [listen](https://github.com/guard/listen) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: listen
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-20 00:01:56 +00:00
Jyri-Petteri Paloposki
8a306b6426
Merge pull request #2643 from TracksApp/dependabot/bundler/bullet-6.1.5
Bump bullet from 6.1.4 to 6.1.5
2021-08-17 13:43:10 +03:00
dependabot[bot]
4321fba433
Bump bullet from 6.1.4 to 6.1.5
Bumps [bullet](https://github.com/flyerhzm/bullet) from 6.1.4 to 6.1.5.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/6.1.4...6.1.5)

---
updated-dependencies:
- dependency-name: bullet
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-17 00:01:55 +00:00
Jyri-Petteri Paloposki
9691304c8a
Merge pull request #2641 from TracksApp/dependabot/bundler/will_paginate-3.3.1
Bump will_paginate from 3.3.0 to 3.3.1
2021-08-13 09:49:45 +03:00
Jyri-Petteri Paloposki
ccc3cba16f
Merge pull request #2642 from TracksApp/dependabot/bundler/rubocop-1.19.0
Bump rubocop from 1.18.4 to 1.19.0
2021-08-13 09:49:37 +03:00
dependabot[bot]
401545bb15
Bump rubocop from 1.18.4 to 1.19.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.18.4 to 1.19.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.18.4...v1.19.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 00:02:19 +00:00
dependabot[bot]
72da20788b
Bump will_paginate from 3.3.0 to 3.3.1
Bumps [will_paginate](https://github.com/mislav/will_paginate) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/mislav/will_paginate/releases)
- [Commits](https://github.com/mislav/will_paginate/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: will_paginate
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 00:01:58 +00:00
Jyri-Petteri Paloposki
511b2a5d70
Merge pull request #2639 from TracksApp/dependabot/bundler/listen-3.6.0
Bump listen from 3.5.1 to 3.6.0
2021-08-10 11:13:57 +03:00
Jyri-Petteri Paloposki
907a1767be
Merge pull request #2640 from TracksApp/dependabot/bundler/sanitize-6.0.0
Bump sanitize from 5.2.3 to 6.0.0
2021-08-10 11:13:48 +03:00
dependabot[bot]
621d98d61e
Bump sanitize from 5.2.3 to 6.0.0
Bumps [sanitize](https://github.com/rgrove/sanitize) from 5.2.3 to 6.0.0.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v5.2.3...v6.0.0)

---
updated-dependencies:
- dependency-name: sanitize
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 00:27:35 +00:00
dependabot[bot]
90bf078a46
Bump listen from 3.5.1 to 3.6.0
Bumps [listen](https://github.com/guard/listen) from 3.5.1 to 3.6.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.5.1...v3.6.0)

---
updated-dependencies:
- dependency-name: listen
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 00:26:22 +00:00
Matt Rogers
944f1cf047
Merge pull request #2638 from TracksApp/dependabot/bundler/puma-5.4.0 2021-08-09 19:23:49 -05:00
Matt Rogers
38d7955b92
Merge pull request #2637 from TracksApp/dependabot/bundler/tolk-4.1.0 2021-08-09 19:23:32 -05:00
Matt Rogers
b6030b178e
Merge pull request #2636 from TracksApp/dependabot/bundler/solargraph-0.43.0 2021-08-09 19:23:16 -05:00
dependabot[bot]
9542a6ba6c
Bump puma from 5.3.2 to 5.4.0
Bumps [puma](https://github.com/puma/puma) from 5.3.2 to 5.4.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.3.2...v5.4.0)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 00:01:45 +00:00
dependabot[bot]
7c268bf09c
Bump tolk from 4.0.1 to 4.1.0
Bumps [tolk](https://github.com/tolk/tolk) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/tolk/tolk/releases)
- [Changelog](https://github.com/tolk/tolk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v4.0.1...v4.1.0)

---
updated-dependencies:
- dependency-name: tolk
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 00:01:32 +00:00
dependabot[bot]
039bcf3880
Bump solargraph from 0.40.4 to 0.43.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.40.4 to 0.43.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.40.4...v0.43.0)

---
updated-dependencies:
- dependency-name: solargraph
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 00:01:21 +00:00
Jyri-Petteri Paloposki
8f653c10e1
Merge pull request #2562 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-08-09 16:56:17 +03:00
Jyri-Petteri Paloposki
71ae8a2092 A few clearly wrong plurals fixed in Russian. There may be some broken
left, some were likely changed on purpose.
2021-08-09 16:37:49 +03:00
Jyri-Petteri Paloposki
1f625eab35 Fixed the plurals broken by Weblate (again) 2021-08-09 16:26:20 +03:00
Чтабс
33dfea08ed
Translated using Weblate (Russian)
Currently translated at 100.0% (1070 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-08-09 13:14:05 +02:00
Åke Engelbrektson
663506ba66
Added translation using Weblate (Swedish) 2021-08-09 13:14:05 +02:00
Алексей Свистунов
9b45ee9965
Translated using Weblate (Russian)
Currently translated at 100.0% (1070 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-08-09 13:14:05 +02:00
Алексей Свистунов
e06e5e3c4d
Translated using Weblate (Russian)
Currently translated at 100.0% (1070 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-08-09 13:14:05 +02:00
Алексей Свистунов
1feb0bc82a
Translated using Weblate (Russian)
Currently translated at 90.7% (971 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-08-09 13:14:05 +02:00
Алексей Свистунов
c9d1991f7c
Translated using Weblate (Russian)
Currently translated at 89.1% (954 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-08-09 13:14:05 +02:00
Artem
3985c5e4c4
Translated using Weblate (Russian)
Currently translated at 89.0% (953 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/ru/
2021-08-09 13:14:05 +02:00
Weblate
cbb1fa1365
Added translation using Weblate (Turkish) 2021-08-09 13:14:05 +02:00
Milo Ivir
9d8f5834d6
Translated using Weblate (German)
Currently translated at 96.9% (1037 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/de/
2021-08-09 13:14:05 +02:00
Jyri-Petteri Paloposki
a7b1499e6d
Translated using Weblate (Finnish)
Currently translated at 99.9% (1069 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-08-09 13:14:05 +02:00
Jyri-Petteri Paloposki
739bb7a331
Translated using Weblate (English)
Currently translated at 99.3% (1063 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/en/
2021-08-09 13:14:05 +02:00
Jyri-Petteri Paloposki
da6344989f
Translated using Weblate (Finnish)
Currently translated at 99.8% (1068 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-08-09 13:14:05 +02:00
Jyri-Petteri Paloposki
8146d2b9b8
Merge pull request #2633 from TracksApp/dependabot/bundler/mocha-1.13.0
Bump mocha from 1.12.0 to 1.13.0
2021-08-09 14:14:01 +03:00
Jyri-Petteri Paloposki
1973b41d0d
Merge pull request #2611 from TracksApp/dependabot/bundler/factory_bot_rails-6.2.0
Bump factory_bot_rails from 6.1.0 to 6.2.0
2021-08-09 14:13:50 +03:00
Jyri-Petteri Paloposki
8a2c9d8725
Merge pull request #2634 from TracksApp/dependabot/bundler/nokogiri-1.12.2
Bump nokogiri from 1.11.2 to 1.12.2
2021-08-09 14:13:38 +03:00
dependabot[bot]
ab70445215
Bump factory_bot_rails from 6.1.0 to 6.2.0
Bumps [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/thoughtbot/factory_bot_rails/releases)
- [Changelog](https://github.com/thoughtbot/factory_bot_rails/blob/master/NEWS.md)
- [Commits](https://github.com/thoughtbot/factory_bot_rails/compare/v6.1.0...v6.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 08:49:10 +00:00
dependabot[bot]
a7cdccd1c5
Bump nokogiri from 1.11.2 to 1.12.2
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.2 to 1.12.2.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.2...v1.12.2)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 08:49:00 +00:00
dependabot[bot]
15c63bdf8f
Bump mocha from 1.12.0 to 1.13.0
Bumps [mocha](https://github.com/freerange/mocha) from 1.12.0 to 1.13.0.
- [Release notes](https://github.com/freerange/mocha/releases)
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v1.12.0...v1.13.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 08:46:52 +00:00
Jyri-Petteri Paloposki
ba271fda6e
Merge pull request #2629 from TracksApp/dependabot/bundler/rubocop-1.18.4
Bump rubocop from 1.14.0 to 1.18.4
2021-08-09 11:46:22 +03:00
Jyri-Petteri Paloposki
2790bb9b1e
Merge pull request #2628 from TracksApp/simplify-workflow-file
Simplify the workflow file
2021-08-09 10:40:51 +03:00
Matt Rogers
b9a44c993f
re-add newline at end of file 2021-08-08 20:44:54 -05:00
Jyri-Petteri Paloposki
83b74d43e7 Add another way of supporting 2021-07-29 13:48:42 +03:00
dependabot[bot]
41e87ea8cd
Bump rubocop from 1.14.0 to 1.18.4
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.14.0 to 1.18.4.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.14.0...v1.18.4)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-26 00:11:24 +00:00
Matt Rogers
af32031002
Fix due dates in recurring todo test 2021-07-24 15:14:47 -05:00
Matt Rogers
076208f804 Be more explicit about exclusions
It would seem that lists are not available for use in exclusions.

If this doesn't work, then I'll switch to inclusions only.
2021-07-24 19:04:48 +00:00
Matt Rogers
2d20c8b40e Only define matrices for valid test environments
Removes ruby 3.0 completely and ignores sqlite and postgres for the
older Ruby versions
2021-07-24 19:02:15 +00:00
Matt Rogers
9dd0ee6cef Fix the syntax errors. 2021-07-24 18:57:48 +00:00
Matt Rogers
e8eb4963d5 Simplify the workflow file
This uses a matrix configuration to set up all the various
configurations we're testing tracks with. It also adds testing on ruby
3.0 and testing postgres with all the various ruby versions.
2021-07-24 18:53:52 +00:00
Jyri-Petteri Paloposki
e8805d3d3d
Merge pull request #2616 from TracksApp/dependabot/bundler/puma-5.3.2
Bump puma from 5.2.2 to 5.3.2
2021-07-07 11:39:27 +03:00
Jyri-Petteri Paloposki
df4e317e43 Move from Freenode to Libera due to channel takeover 2021-06-15 23:17:43 +03:00
dependabot[bot]
e3738c52d4
Bump puma from 5.2.2 to 5.3.2
Bumps [puma](https://github.com/puma/puma) from 5.2.2 to 5.3.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.2.2...v5.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 05:49:55 +00:00
Jyri-Petteri Paloposki
09b408b314
Merge pull request #2608 from TracksApp/dependabot/bundler/aasm-5.2.0
Bump aasm from 5.1.1 to 5.2.0
2021-05-09 23:57:29 +03:00
Jyri-Petteri Paloposki
b7a7e49ee4
Merge pull request #2609 from TracksApp/dependabot/bundler/rubocop-1.14.0
Bump rubocop from 1.13.0 to 1.14.0
2021-05-09 23:57:14 +03:00
dependabot[bot]
2afd0f4549
Bump rubocop from 1.13.0 to 1.14.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.13.0...v1.14.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 05:16:11 +00:00
dependabot[bot]
8cc160553c
Bump aasm from 5.1.1 to 5.2.0
Bumps [aasm](https://github.com/aasm/aasm) from 5.1.1 to 5.2.0.
- [Release notes](https://github.com/aasm/aasm/releases)
- [Changelog](https://github.com/aasm/aasm/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aasm/aasm/compare/v5.1.1...v5.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-03 05:54:16 +00:00
Jyri-Petteri Paloposki
c0f7310479
Merge pull request #2604 from TracksApp/dependabot/bundler/acts_as_list-1.0.4
Bump acts_as_list from 1.0.3 to 1.0.4
2021-05-01 12:01:45 +03:00
Jyri-Petteri Paloposki
f16e2c6331
Merge pull request #2605 from TracksApp/dependabot/bundler/rubocop-1.13.0
Bump rubocop from 1.12.1 to 1.13.0
2021-05-01 12:01:34 +03:00
Jyri-Petteri Paloposki
cba4c92ad3
Merge pull request #2606 from TracksApp/dependabot/bundler/rack-mini-profiler-2.3.2
Bump rack-mini-profiler from 2.3.1 to 2.3.2
2021-05-01 12:01:22 +03:00
Jyri-Petteri Paloposki
64e328c263
Merge pull request #2607 from TracksApp/dependabot/bundler/rexml-3.2.5
Bump rexml from 3.2.4 to 3.2.5
2021-05-01 12:01:09 +03:00
dependabot[bot]
176e2a288a
Bump rexml from 3.2.4 to 3.2.5
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.4...v3.2.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-30 20:49:18 +00:00
dependabot[bot]
b6b4e7704e
Bump rack-mini-profiler from 2.3.1 to 2.3.2
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.1...v2.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-30 05:16:52 +00:00
dependabot[bot]
0d77894425
Bump rubocop from 1.12.1 to 1.13.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.12.1 to 1.13.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.12.1...v1.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-21 05:18:42 +00:00
dependabot[bot]
4458dfbeef
Bump acts_as_list from 1.0.3 to 1.0.4
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/brendon/acts_as_list/releases)
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.0.3...v1.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-20 05:24:34 +00:00
Jyri-Petteri Paloposki
c8fcaca2e3
Merge pull request #2600 from TracksApp/dependabot/bundler/rubocop-1.12.1
Bump rubocop from 1.12.0 to 1.12.1
2021-04-13 09:53:07 +03:00
dependabot[bot]
f1efa6aff9
Bump rubocop from 1.12.0 to 1.12.1
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.12.0 to 1.12.1.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.12.0...v1.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-05 05:59:57 +00:00
Jyri-Petteri Paloposki
bbed5b9100
Merge pull request #2595 from TracksApp/dependabot/bundler/rubocop-1.12.0
Bump rubocop from 1.11.0 to 1.12.0
2021-03-31 11:37:34 +03:00
dependabot[bot]
7af47c25ac
Bump rubocop from 1.11.0 to 1.12.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.11.0...v1.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 08:08:27 +00:00
Jyri-Petteri Paloposki
4f7bcab589
Merge pull request #2598 from TracksApp/dependabot/bundler/kramdown-2.3.1
Bump kramdown from 2.3.0 to 2.3.1
2021-03-31 10:35:01 +03:00
Jyri-Petteri Paloposki
78fd032eb7
Merge pull request #2599 from TracksApp/dependabot/bundler/listen-3.5.1
Bump listen from 3.5.0 to 3.5.1
2021-03-31 10:34:46 +03:00
dependabot[bot]
f2d0d62c3e
Bump listen from 3.5.0 to 3.5.1
Bumps [listen](https://github.com/guard/listen) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.5.0...v3.5.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 05:14:52 +00:00
dependabot[bot]
1113145cea
Bump kramdown from 2.3.0 to 2.3.1
Bumps [kramdown](https://github.com/gettalong/kramdown) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/gettalong/kramdown/releases)
- [Changelog](https://github.com/gettalong/kramdown/blob/master/doc/news.page)
- [Commits](https://github.com/gettalong/kramdown/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 13:58:28 +00:00
Jyri-Petteri Paloposki
21291811f3
Merge pull request #2592 from TracksApp/dependabot/bundler/i18n-tasks-0.9.34
Bump i18n-tasks from 0.9.33 to 0.9.34
2021-03-24 18:49:06 +02:00
Jyri-Petteri Paloposki
fa970a2ccd
Merge pull request #2593 from TracksApp/dependabot/bundler/solargraph-0.40.4
Bump solargraph from 0.40.3 to 0.40.4
2021-03-24 18:48:45 +02:00
Jyri-Petteri Paloposki
33388c7c13
Merge pull request #2594 from TracksApp/dependabot/bundler/listen-3.5.0
Bump listen from 3.4.1 to 3.5.0
2021-03-24 18:48:19 +02:00
dependabot[bot]
5b9bbee95f
Bump listen from 3.4.1 to 3.5.0
Bumps [listen](https://github.com/guard/listen) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.4.1...v3.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-24 05:29:04 +00:00
dependabot[bot]
79caae0ccc
Bump solargraph from 0.40.3 to 0.40.4
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.40.3 to 0.40.4.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.40.3...v0.40.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-16 05:29:18 +00:00
dependabot[bot]
51b65f96b8
Bump i18n-tasks from 0.9.33 to 0.9.34
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.33 to 0.9.34.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.33...v0.9.34)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-16 05:28:45 +00:00
Jyri-Petteri Paloposki
9d98abdd9b
Merge pull request #2589 from TracksApp/dependabot/bundler/puma-5.2.2
Bump puma from 5.2.1 to 5.2.2
2021-03-15 10:08:10 +02:00
Jyri-Petteri Paloposki
1d97143836
Merge pull request #2588 from TracksApp/dependabot/bundler/rubocop-1.11.0
Bump rubocop from 1.9.1 to 1.11.0
2021-03-15 10:07:57 +02:00
Jyri-Petteri Paloposki
4240978744
Merge pull request #2587 from TracksApp/dependabot/bundler/bullet-6.1.4
Bump bullet from 6.1.3 to 6.1.4
2021-03-15 10:07:45 +02:00
dependabot[bot]
4699611071
Bump puma from 5.2.1 to 5.2.2
Bumps [puma](https://github.com/puma/puma) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.2.1...v5.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-03 05:15:55 +00:00
dependabot[bot]
7e23d1e546
Bump rubocop from 1.9.1 to 1.11.0
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.9.1 to 1.11.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.9.1...v1.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-02 05:14:11 +00:00
dependabot[bot]
38ed51cc30
Bump bullet from 6.1.3 to 6.1.4
Bumps [bullet](https://github.com/flyerhzm/bullet) from 6.1.3 to 6.1.4.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/6.1.3...6.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 06:36:39 +00:00
Jyri-Petteri Paloposki
b00b420e0f
Merge pull request #2579 from TracksApp/dependabot/bundler/puma-5.2.1
Bump puma from 5.2.0 to 5.2.1
2021-02-11 17:19:07 +02:00
Jyri-Petteri Paloposki
712b61dfd1
Merge pull request #2580 from TracksApp/dependabot/bundler/solargraph-0.40.3
Bump solargraph from 0.40.2 to 0.40.3
2021-02-11 17:18:41 +02:00
Jyri-Petteri Paloposki
b817faf3ec
Merge pull request #2576 from TracksApp/dependabot/bundler/rubocop-1.9.1
Bump rubocop from 1.9.0 to 1.9.1
2021-02-11 17:18:17 +02:00
dependabot[bot]
1ca0993481
Bump solargraph from 0.40.2 to 0.40.3
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.40.2 to 0.40.3.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.40.2...v0.40.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-08 05:56:41 +00:00
dependabot[bot]
95a981cb63
Bump puma from 5.2.0 to 5.2.1
Bumps [puma](https://github.com/puma/puma) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.2.0...v5.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-08 05:56:11 +00:00
dependabot[bot]
3fac35ab5b
Bump rubocop from 1.9.0 to 1.9.1
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v1.9.0...v1.9.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-02 05:37:10 +00:00
Jyri-Petteri Paloposki
79c8203c2a
Merge pull request #2571 from TracksApp/dependabot/bundler/puma-5.2.0
Bump puma from 5.1.1 to 5.2.0
2021-02-01 12:00:45 +02:00
dependabot[bot]
e38d2720ea
Bump puma from 5.1.1 to 5.2.0
Bumps [puma](https://github.com/puma/puma) from 5.1.1 to 5.2.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.1.1...v5.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 08:47:17 +00:00
Jyri-Petteri Paloposki
4b43b82290
Merge pull request #2573 from TracksApp/dependabot/bundler/rack-mini-profiler-2.3.1
Bump rack-mini-profiler from 2.3.0 to 2.3.1
2021-02-01 08:35:36 +02:00
Jyri-Petteri Paloposki
b7e689e4c6
Merge pull request #2572 from TracksApp/dependabot/bundler/rubocop-1.9.0
Bump rubocop from 1.8.1 to 1.9.0
2021-02-01 08:35:19 +02:00
dependabot[bot]
376de3c06d
Bump rack-mini-profiler from 2.3.0 to 2.3.1
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.3.0...v2.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 05:39:16 +00:00
dependabot[bot]
ad36420937
Bump rubocop from 1.8.1 to 1.9.0
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 1.8.1 to 1.9.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v1.8.1...v1.9.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 05:38:34 +00:00
Jyri-Petteri Paloposki
57d9f3e112
Merge pull request #2570 from TracksApp/dependabot/bundler/bullet-6.1.3
Bump bullet from 6.1.2 to 6.1.3
2021-01-22 01:18:04 +02:00
Jyri-Petteri Paloposki
32c26ce504
Merge pull request #2569 from TracksApp/dependabot/bundler/rubocop-1.8.1
Bump rubocop from 1.7.0 to 1.8.1
2021-01-22 01:17:46 +02:00
dependabot[bot]
f771969bbe
Bump bullet from 6.1.2 to 6.1.3
Bumps [bullet](https://github.com/flyerhzm/bullet) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/6.1.2...6.1.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-21 05:14:51 +00:00
dependabot[bot]
e9c9c2a50a
Bump rubocop from 1.7.0 to 1.8.1
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 1.7.0 to 1.8.1.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v1.7.0...v1.8.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-20 05:20:55 +00:00
Jyri-Petteri Paloposki
f30d60846b
Merge pull request #2568 from TracksApp/dependabot/bundler/solargraph-0.40.2
Bump solargraph from 0.40.1 to 0.40.2
2021-01-19 11:36:33 +02:00
dependabot[bot]
c8af38ab24
Bump solargraph from 0.40.1 to 0.40.2
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.40.1 to 0.40.2.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.40.1...v0.40.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-19 05:44:07 +00:00
Jyri-Petteri Paloposki
f0f625f5fe
Merge pull request #2567 from TracksApp/dependabot/bundler/listen-3.4.1
Bump listen from 3.4.0 to 3.4.1
2021-01-15 10:51:48 +02:00
dependabot[bot]
c7ad167547
Bump listen from 3.4.0 to 3.4.1
Bumps [listen](https://github.com/guard/listen) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.4.0...v3.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-15 05:46:29 +00:00
Jyri-Petteri Paloposki
f8df642703
Merge pull request #2564 from TracksApp/dependabot/bundler/simplecov-0.21.2
Bump simplecov from 0.21.1 to 0.21.2
2021-01-13 14:50:04 +02:00
Jyri-Petteri Paloposki
67d2ac793f
Merge pull request #2565 from TracksApp/dependabot/bundler/sanitize-5.2.3
Bump sanitize from 5.2.2 to 5.2.3
2021-01-13 14:49:51 +02:00
Jyri-Petteri Paloposki
49d714a3df
Merge pull request #2566 from TracksApp/fix_no_recurring_label
Fix the logic for no recurring events label broken in a7d8b3c95.
2021-01-13 14:49:35 +02:00
Jyri-Petteri Paloposki
06de71c5bb Fix the logic for no recurring events label broken in a7d8b3c95. 2021-01-13 14:27:10 +02:00
dependabot[bot]
d1ce23558a
Bump sanitize from 5.2.2 to 5.2.3
Bumps [sanitize](https://github.com/rgrove/sanitize) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/master/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v5.2.2...v5.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-12 05:49:11 +00:00
dependabot[bot]
e4275576ab
Bump simplecov from 0.21.1 to 0.21.2
Bumps [simplecov](https://github.com/simplecov-ruby/simplecov) from 0.21.1 to 0.21.2.
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.21.1...v0.21.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-11 06:25:15 +00:00
Jyri-Petteri Paloposki
096afeacd7 Few more fixes to the integrations l10n 2021-01-11 01:40:00 +02:00
Jyri-Petteri Paloposki
221e8e301a
Merge pull request #2561 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-01-11 01:27:11 +02:00
Jyri-Petteri Paloposki
aeafdc2ffc Fixed the plurals once again broken by Weblate as well as some typos in the integration docs 2021-01-11 01:25:38 +02:00
Jyri-Petteri Paloposki
3255e8fafa
Translated using Weblate (Finnish)
Currently translated at 99.7% (1067 of 1070 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-01-11 00:20:10 +01:00
Jyri-Petteri Paloposki
2a88b136ba Translated using Weblate (Finnish)
Currently translated at 99.7% (983 of 985 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-01-10 23:42:21 +01:00
Jyri-Petteri Paloposki
d103453a3d Fixed a duplicate key in translations 2021-01-11 00:42:05 +02:00
Jyri-Petteri Paloposki
238660e573 One more numeral key 2021-01-11 00:39:41 +02:00
Jyri-Petteri Paloposki
83d52cd44f Apparently Weblate doesn't allow numeral keys in the translation file even though Rails does. 2021-01-11 00:36:29 +02:00
Jyri-Petteri Paloposki
679ec77fc6
Merge pull request #2560 from TracksApp/more_translatable
Make a few more targets translatable. Tracks should now be pretty clo…
2021-01-11 00:30:49 +02:00
Jyri-Petteri Paloposki
971ef477e5 Make a few more targets translatable. Tracks should now be pretty close to fully translatable. 2021-01-11 00:15:44 +02:00
Jyri-Petteri Paloposki
6a265068da
Update README.md
Translation status badge
2021-01-10 02:29:29 +02:00
Jyri-Petteri Paloposki
f2abb970ed Fix two remaining plurals broken by Weblate 2021-01-10 02:19:29 +02:00
Jyri-Petteri Paloposki
45835ad1f9
Merge pull request #2557 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-01-10 02:09:11 +02:00
Jyri-Petteri Paloposki
d5ece37b8d Fixed the plurals broken by Weblate 2021-01-10 02:07:46 +02:00
Jyri-Petteri Paloposki
7b684bd675
Translated using Weblate (Finnish)
Currently translated at 99.7% (983 of 985 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-01-10 00:56:42 +01:00
Jyri-Petteri Paloposki
6b76909d3a Translated using Weblate (Finnish)
Currently translated at 100.0% (985 of 985 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-01-09 15:59:16 +01:00
J. Lavoie
48bbc128e9 Translated using Weblate (French)
Currently translated at 100.0% (970 of 970 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fr/
2021-01-09 15:59:16 +01:00
Jyri-Petteri Paloposki
6e053d398d
Merge pull request #2558 from TracksApp/dependabot/bundler/sanitize-5.2.2
Bump sanitize from 5.2.1 to 5.2.2
2021-01-09 16:59:12 +02:00
Jyri-Petteri Paloposki
decac15583
Create FUNDING.yml 2021-01-09 16:57:23 +02:00
dependabot[bot]
8b5d41ffdb
Bump sanitize from 5.2.1 to 5.2.2
Bumps [sanitize](https://github.com/rgrove/sanitize) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/rgrove/sanitize/releases)
- [Changelog](https://github.com/rgrove/sanitize/blob/master/HISTORY.md)
- [Commits](https://github.com/rgrove/sanitize/compare/v5.2.1...v5.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-07 05:46:04 +00:00
Jyri-Petteri Paloposki
ebe16e55ed Few more duplicate keys in fi. I thought I removed them already... 2021-01-06 15:34:41 +02:00
Jyri-Petteri Paloposki
83dd49a52f Small fix to fi locale and whitespace changes to migrate script 2021-01-06 15:33:13 +02:00
Jyri-Petteri Paloposki
589b58c046
Merge pull request #2555 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-01-06 13:26:10 +02:00
Jyri-Petteri Paloposki
d8f98cbc18 Merge remote-tracking branch 'origin/master' into weblate-tracks-tracks 2021-01-06 13:04:34 +02:00
Jyri-Petteri Paloposki
49660a0546
Merge pull request #2514 from TracksApp/code_style
More code style fixes
2021-01-06 12:46:18 +02:00
Jyri-Petteri Paloposki
64619e173d
Merge pull request #2556 from TracksApp/fixes
Make a few string and help page translatable. Fix the recurring todo …
2021-01-06 11:43:30 +02:00
Jyri-Petteri Paloposki
31aa6e6516 Make a few string and help page translatable. Fix the recurring todo dialog close button. 2021-01-06 11:17:08 +02:00
Jyri-Petteri Paloposki
d4c9041ccd More code style fixes 2021-01-06 03:47:35 +02:00
Jyri-Petteri Paloposki
25f98271bd
Translated using Weblate (Finnish)
Currently translated at 99.3% (964 of 970 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-01-06 00:46:19 +01:00
Jyri-Petteri Paloposki
465419f46a
Merge pull request #2554 from TracksApp/2.5.2
Version 2.5.2. Some minor dependency updates.
2021-01-05 22:51:24 +02:00
Jyri-Petteri Paloposki
301b12ade6
Merge pull request #2547 from weblate/weblate-tracks-tracks
Translations update from Weblate
2021-01-05 22:51:05 +02:00
Jyri-Petteri Paloposki
569b9a4866 Fixed some plurals that Weblate has broken. 2021-01-05 22:34:50 +02:00
Jyri-Petteri Paloposki
35d9c26f43 Version 2.5.2. Some minor dependency updates. 2021-01-05 22:06:24 +02:00
J. Lavoie
411a928cad Translated using Weblate (French)
Currently translated at 100.0% (969 of 969 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fr/
2021-01-05 20:48:40 +01:00
J. Lavoie
41d63f7790 Translated using Weblate (French)
Currently translated at 100.0% (969 of 969 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fr/
2021-01-05 20:48:40 +01:00
J. Lavoie
a8b5fa117e Translated using Weblate (German)
Currently translated at 96.6% (937 of 969 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/de/
2021-01-05 20:48:40 +01:00
Weblate
f78e9ca500 Added translation using Weblate (Norwegian Bokmål) 2021-01-05 20:48:40 +01:00
Jyri-Petteri Paloposki
aa957b4008 Translated using Weblate (Finnish)
Currently translated at 96.6% (937 of 969 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/fi/
2021-01-05 20:48:40 +01:00
Jyri-Petteri Paloposki
ee2da84f9f Translated using Weblate (English)
Currently translated at 99.3% (963 of 969 strings)

Translation: Tracks/Tracks
Translate-URL: https://hosted.weblate.org/projects/tracks/tracks/en/
2021-01-05 20:48:40 +01:00
Jyri-Petteri Paloposki
bb151b1d36 Supporting 2021-01-05 21:48:25 +02:00
Jyri-Petteri Paloposki
e1dcaa1542
Merge pull request #2552 from TracksApp/fix_locales
Fix the jquery-ui datepicker i18n files' asset compilation
2021-01-05 20:00:17 +02:00
Jyri-Petteri Paloposki
e1be3b8a95 Fix the jquery-ui datepicker i18n files' asset compilation 2021-01-05 19:40:28 +02:00
Jyri-Petteri Paloposki
e79ed7fdec
Merge pull request #2551 from TracksApp/test_locales
Add testing for locales
2021-01-05 18:51:56 +02:00
Jyri-Petteri Paloposki
da4f662aae Add testing for locales 2021-01-05 18:32:01 +02:00
Jyri-Petteri Paloposki
3863191f48
Merge pull request #2549 from TracksApp/dependabot/bundler/simplecov-0.21.1
Bump simplecov from 0.21.0 to 0.21.1
2021-01-05 08:30:55 +02:00
Jyri-Petteri Paloposki
fc264cf750
Merge pull request #2550 from TracksApp/fix_context_change_test
#2484: Fix test changing contexts. Why choose at random and occasiona…
2021-01-05 08:30:12 +02:00
Jyri-Petteri Paloposki
7272f1c743 #2484: Fix test changing contexts. Why choose at random and occasionally fail when you can just pick useful fixtures? 2021-01-05 07:47:58 +02:00
dependabot[bot]
8cdda3c665
Bump simplecov from 0.21.0 to 0.21.1
Bumps [simplecov](https://github.com/simplecov-ruby/simplecov) from 0.21.0 to 0.21.1.
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.21.0...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 05:37:52 +00:00
Jyri-Petteri Paloposki
45f5c1d3a4
Merge pull request #2535 from TracksApp/bug/2534_calendar_due_fix
#2534: Fix setting the due date in the calendar view.
2021-01-05 07:33:26 +02:00
Jyri-Petteri Paloposki
13af186816
Merge pull request #2542 from TracksApp/test_tests
#2534: Test setting the due date in calendar view.
2021-01-05 07:15:50 +02:00
Jyri-Petteri Paloposki
b9b2a3f5d5 #2534: Test setting the due date in calendar view. 2021-01-05 07:07:17 +02:00
Jyri-Petteri Paloposki
22a1febf3b Add information about the DB volume to the installation document 2021-01-05 05:39:07 +02:00
Jyri-Petteri Paloposki
3332f1e39e
Merge pull request #2548 from TracksApp/dependabot/bundler/simplecov-0.21.0
Bump simplecov from 0.20.0 to 0.21.0
2021-01-04 13:21:02 +02:00
dependabot[bot]
5e1aede5a8
Bump simplecov from 0.20.0 to 0.21.0
Bumps [simplecov](https://github.com/simplecov-ruby/simplecov) from 0.20.0 to 0.21.0.
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.20.0...v0.21.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-04 06:25:19 +00:00
Jyri-Petteri Paloposki
4b391ef4ae
Merge pull request #2545 from TracksApp/dependabot/bundler/listen-3.4.0
Bump listen from 3.3.3 to 3.4.0
2021-01-02 17:07:13 +02:00
dependabot[bot]
a7d5e93828
Bump listen from 3.3.3 to 3.4.0
Bumps [listen](https://github.com/guard/listen) from 3.3.3 to 3.4.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.3.3...v3.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-01 06:03:44 +00:00
Jyri-Petteri Paloposki
c433d1ab40
Merge pull request #2544 from TracksApp/dependabot/bundler/solargraph-0.40.1
Bump solargraph from 0.40.0 to 0.40.1
2020-12-30 22:40:41 +02:00
Jyri-Petteri Paloposki
98af5b37ca
Merge pull request #2543 from TracksApp/dependabot/bundler/rack-mini-profiler-2.3.0
Bump rack-mini-profiler from 2.2.1 to 2.3.0
2020-12-30 22:40:16 +02:00
dependabot[bot]
4d3ca5b51b
Bump solargraph from 0.40.0 to 0.40.1
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.40.0 to 0.40.1.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.40.0...v0.40.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-29 05:47:42 +00:00
dependabot[bot]
8b15d613a9
Bump rack-mini-profiler from 2.2.1 to 2.3.0
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.2.1...v2.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-29 05:47:31 +00:00
Jyri-Petteri Paloposki
813149239f
Merge pull request #2541 from TracksApp/dependabot/bundler/rubocop-1.7.0
Bump rubocop from 0.93.1 to 1.7.0
2020-12-27 20:36:24 +02:00
dependabot[bot]
4597e21248
Bump rubocop from 0.93.1 to 1.7.0
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.93.1 to 1.7.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.93.1...v1.7.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 17:25:09 +00:00
Jyri-Petteri Paloposki
4c687eb874
Merge pull request #2540 from TracksApp/dependabot/bundler/mocha-1.12.0
Bump mocha from 1.11.2 to 1.12.0
2020-12-27 19:24:14 +02:00
Jyri-Petteri Paloposki
86cd461281
Merge pull request #2539 from TracksApp/dependabot/bundler/acts_as_list-1.0.3
Bump acts_as_list from 1.0.2 to 1.0.3
2020-12-27 19:23:56 +02:00
dependabot[bot]
96d4d1f2c3
Bump mocha from 1.11.2 to 1.12.0
Bumps [mocha](https://github.com/freerange/mocha) from 1.11.2 to 1.12.0.
- [Release notes](https://github.com/freerange/mocha/releases)
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v1.11.2...v1.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 17:03:37 +00:00
dependabot[bot]
79f0387e1f
Bump acts_as_list from 1.0.2 to 1.0.3
Bumps [acts_as_list](https://github.com/brendon/acts_as_list) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/brendon/acts_as_list/releases)
- [Changelog](https://github.com/brendon/acts_as_list/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brendon/acts_as_list/compare/v1.0.2...v1.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 17:03:21 +00:00
Jyri-Petteri Paloposki
e6b73633c4
Merge pull request #2538 from TracksApp/dependabot/bundler/rack-mini-profiler-2.2.1
Bump rack-mini-profiler from 2.2.0 to 2.2.1
2020-12-27 19:03:16 +02:00
Jyri-Petteri Paloposki
2235f5a960
Merge pull request #2536 from TracksApp/dependabot/bundler/rspec-expectations-3.10.1
Bump rspec-expectations from 3.10.0 to 3.10.1
2020-12-27 19:03:06 +02:00
Jyri-Petteri Paloposki
e1712b46a6
Merge pull request #2537 from TracksApp/dependabot/bundler/yard-0.9.26
Bump yard from 0.9.25 to 0.9.26
2020-12-27 19:02:49 +02:00
Jyri-Petteri Paloposki
9d5f35a340
Merge pull request #2531 from TracksApp/dependabot/bundler/solargraph-0.40.0
Bump solargraph from 0.39.17 to 0.40.0
2020-12-27 19:02:39 +02:00
dependabot[bot]
fc47a19ac0
Bump rack-mini-profiler from 2.2.0 to 2.2.1
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.2.0...v2.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 16:40:07 +00:00
Jyri-Petteri Paloposki
7398d9ca43
Merge pull request #2530 from TracksApp/dependabot/bundler/bullet-6.1.2
Bump bullet from 6.1.0 to 6.1.2
2020-12-27 18:38:07 +02:00
dependabot[bot]
3de1f05d09
Bump solargraph from 0.39.17 to 0.40.0
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.39.17 to 0.40.0.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Changelog](https://github.com/castwide/solargraph/blob/master/CHANGELOG.md)
- [Commits](https://github.com/castwide/solargraph/compare/v0.39.17...v0.40.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 16:38:03 +00:00
dependabot[bot]
cd402b48f9
Bump yard from 0.9.25 to 0.9.26
Bumps [yard](https://github.com/lsegal/yard) from 0.9.25 to 0.9.26.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.25...v0.9.26)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 16:36:25 +00:00
dependabot[bot]
6578cc1b2e
Bump rspec-expectations from 3.10.0 to 3.10.1
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.10.0 to 3.10.1.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.10.0...v3.10.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 16:36:16 +00:00
Jyri-Petteri Paloposki
642ac56255
Merge pull request #2533 from TracksApp/dependabot/bundler/i18n-tasks-0.9.33
Bump i18n-tasks from 0.9.31 to 0.9.33
2020-12-27 18:32:43 +02:00
dependabot[bot]
979bc35ce9
Bump bullet from 6.1.0 to 6.1.2
Bumps [bullet](https://github.com/flyerhzm/bullet) from 6.1.0 to 6.1.2.
- [Release notes](https://github.com/flyerhzm/bullet/releases)
- [Changelog](https://github.com/flyerhzm/bullet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/6.1.0...6.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 16:22:29 +00:00
dependabot[bot]
921efb3aad
Bump i18n-tasks from 0.9.31 to 0.9.33
Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 0.9.31 to 0.9.33.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](https://github.com/glebm/i18n-tasks/compare/v0.9.31...v0.9.33)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-27 16:16:30 +00:00
Jyri-Petteri Paloposki
baa8644852
Merge pull request #2528 from TracksApp/2527_user_tags
Fix the tag-specific listing to fetch the user's specific tag instead…
2020-12-27 18:09:41 +02:00
Jyri-Petteri Paloposki
680fc3df8b #2534: Fix setting the due date in the calendar view. Reverts abad8c7 partly. 2020-12-27 17:15:15 +02:00
Jyri-Petteri Paloposki
0b2eec4f82 Move to Ruby 2.7 for the default Docker version as well as the default target for alternative DB's. Fix the Ruby image version with three digits because the most recent versions seem to be somehow broken. 2020-12-11 20:02:47 +02:00
Jyri-Petteri Paloposki
f9bae12c31 Upgrade libraries 2020-12-11 18:21:05 +02:00
Jyri-Petteri Paloposki
03ab384b9c Fix the tag-specific listing to fetch the user's specific tag instead of the first one in a multi-user environment. 2020-12-11 17:55:54 +02:00
Jyri-Petteri Paloposki
75e5c98ce6
Merge pull request #2522 from TracksApp/dependabot/bundler/simplecov-0.20.0
Bump simplecov from 0.19.1 to 0.20.0
2020-12-09 01:35:09 +02:00
Jyri-Petteri Paloposki
c9e5e2fc1e
Merge pull request #2524 from TracksApp/dependabot/bundler/puma-5.1.0
Bump puma from 5.0.4 to 5.1.0
2020-12-09 00:51:51 +02:00
Jyri-Petteri Paloposki
8ac2ef9d66
Merge pull request #2523 from TracksApp/dependabot/bundler/listen-3.3.3
Bump listen from 3.3.1 to 3.3.3
2020-12-09 00:51:36 +02:00
dependabot[bot]
da083d7b6c
Bump puma from 5.0.4 to 5.1.0
Bumps [puma](https://github.com/puma/puma) from 5.0.4 to 5.1.0.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.0.4...v5.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-01 06:05:42 +00:00
dependabot[bot]
0bd02da39a
Bump listen from 3.3.1 to 3.3.3
Bumps [listen](https://github.com/guard/listen) from 3.3.1 to 3.3.3.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.3.1...v3.3.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-30 06:34:53 +00:00
dependabot[bot]
dbf33cb799
Bump simplecov from 0.19.1 to 0.20.0
Bumps [simplecov](https://github.com/simplecov-ruby/simplecov) from 0.19.1 to 0.20.0.
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.19.1...v0.20.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-30 06:31:44 +00:00
Jyri-Petteri Paloposki
eaad3cc7c3
Merge pull request #2521 from TracksApp/dependabot/bundler/listen-3.3.1
Bump listen from 3.3.0 to 3.3.1
2020-11-22 15:13:58 +02:00
dependabot[bot]
d034e678d4
Bump listen from 3.3.0 to 3.3.1
Bumps [listen](https://github.com/guard/listen) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.3.0...v3.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-16 06:33:15 +00:00
Jyri-Petteri Paloposki
2c0d824c82
Merge pull request #2520 from TracksApp/dependabot/bundler/listen-3.3.0
Bump listen from 3.2.1 to 3.3.0
2020-11-10 17:30:08 +02:00
dependabot[bot]
265be1a283
Bump listen from 3.2.1 to 3.3.0
Bumps [listen](https://github.com/guard/listen) from 3.2.1 to 3.3.0.
- [Release notes](https://github.com/guard/listen/releases)
- [Commits](https://github.com/guard/listen/compare/v3.2.1...v3.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-10 05:56:16 +00:00
Jyri-Petteri Paloposki
528ffacd4f
Merge pull request #2518 from TracksApp/dependabot/bundler/rspec-expectations-3.10.0
Bump rspec-expectations from 3.9.4 to 3.10.0
2020-11-06 12:50:04 +02:00
Jyri-Petteri Paloposki
864ecfef8e
Merge pull request #2519 from TracksApp/dependabot/bundler/tolk-4.0.1
Bump tolk from 4.0.0 to 4.0.1
2020-11-06 09:57:58 +02:00
dependabot[bot]
e4e17f347a
Bump tolk from 4.0.0 to 4.0.1
Bumps [tolk](https://github.com/tolk/tolk) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/tolk/tolk/releases)
- [Changelog](https://github.com/tolk/tolk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tolk/tolk/compare/v4.0.0...v4.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-05 05:52:04 +00:00
dependabot[bot]
317ca43eea
Bump rspec-expectations from 3.9.4 to 3.10.0
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.9.4 to 3.10.0.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.9.4...v3.10.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-02 06:25:16 +00:00
Jyri-Petteri Paloposki
a471f6cc98
Merge pull request #2515 from TracksApp/dependabot/bundler/puma-5.0.4
Bump puma from 5.0.3 to 5.0.4
2020-10-30 10:39:42 +02:00
Jyri-Petteri Paloposki
59b50a72a1
Merge pull request #2517 from TracksApp/dependabot/bundler/rspec-expectations-3.9.4
Bump rspec-expectations from 3.9.3 to 3.9.4
2020-10-30 09:47:21 +02:00
dependabot[bot]
8095384921
Bump rspec-expectations from 3.9.3 to 3.9.4
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.9.3 to 3.9.4.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.9.3...v3.9.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-30 05:53:28 +00:00
dependabot[bot]
eb57c2047f
Bump puma from 5.0.3 to 5.0.4
Bumps [puma](https://github.com/puma/puma) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.0.3...v5.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-28 06:02:03 +00:00
Jyri-Petteri Paloposki
33f4963a02
Merge pull request #2513 from TracksApp/code_style
Coding style fixes
2020-10-27 21:25:25 +02:00
Jyri-Petteri Paloposki
371f8d5adf Coding style fixes 2020-10-27 21:00:19 +02:00
Jyri-Petteri Paloposki
4fe600a916
Merge pull request #2512 from TracksApp/paginate_locale
Fix paginate locale
2020-10-27 19:06:44 +02:00
Jyri-Petteri Paloposki
d30138ee10 Fix paginate locale and a few small style issues 2020-10-27 18:42:57 +02:00
Jyri-Petteri Paloposki
c1dbba5f11
Merge pull request #2509 from TracksApp/dependabot/bundler/rspec-expectations-3.9.3
Bump rspec-expectations from 3.9.2 to 3.9.3
2020-10-27 10:46:18 +02:00
Jyri-Petteri Paloposki
6042e4dade
Merge pull request #2511 from TracksApp/dependabot/bundler/puma-5.0.3
Bump puma from 5.0.2 to 5.0.3
2020-10-27 10:23:07 +02:00
Jyri-Petteri Paloposki
44cea11ed1
Merge pull request #2510 from TracksApp/dependabot/bundler/simplecov-0.19.1
Bump simplecov from 0.19.0 to 0.19.1
2020-10-27 10:22:52 +02:00
dependabot[bot]
e82be31f0f
Bump puma from 5.0.2 to 5.0.3
Bumps [puma](https://github.com/puma/puma) from 5.0.2 to 5.0.3.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.0.2...v5.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-27 06:00:44 +00:00
dependabot[bot]
95b2411be5
Bump simplecov from 0.19.0 to 0.19.1
Bumps [simplecov](https://github.com/simplecov-ruby/simplecov) from 0.19.0 to 0.19.1.
- [Release notes](https://github.com/simplecov-ruby/simplecov/releases)
- [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md)
- [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.19.0...v0.19.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 06:45:03 +00:00
dependabot[bot]
adb9b24914
Bump rspec-expectations from 3.9.2 to 3.9.3
Bumps [rspec-expectations](https://github.com/rspec/rspec-expectations) from 3.9.2 to 3.9.3.
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](https://github.com/rspec/rspec-expectations/compare/v3.9.2...v3.9.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-26 06:43:33 +00:00
Jyri-Petteri Paloposki
b9a5ab8b4d
Merge pull request #2508 from TracksApp/order_user_list
Allow changing the ordering of the user list
2020-10-23 01:03:50 +03:00
Jyri-Petteri Paloposki
c4d7169cb8 Allow changing the ordering of the user list 2020-10-23 00:44:06 +03:00
Jyri-Petteri Paloposki
08791e0457
Merge pull request #2507 from TracksApp/dependabot/bundler/rack-mini-profiler-2.2.0
Bump rack-mini-profiler from 2.1.0 to 2.2.0
2020-10-21 09:58:43 +03:00
dependabot[bot]
6b302f7058
Bump rack-mini-profiler from 2.1.0 to 2.2.0
Bumps [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/MiniProfiler/rack-mini-profiler/releases)
- [Changelog](https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MiniProfiler/rack-mini-profiler/compare/v2.1.0...v2.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-21 05:44:25 +00:00
Jyri-Petteri Paloposki
9ddc913814
Merge pull request #2506 from TracksApp/dependabot/bundler/font-awesome-sass-5.15.1
Bump font-awesome-sass from 5.13.0 to 5.15.1
2020-10-19 10:04:12 +03:00
dependabot[bot]
0c3a49605e
Bump font-awesome-sass from 5.13.0 to 5.15.1
Bumps [font-awesome-sass](https://github.com/FortAwesome/font-awesome-sass) from 5.13.0 to 5.15.1.
- [Release notes](https://github.com/FortAwesome/font-awesome-sass/releases)
- [Commits](https://github.com/FortAwesome/font-awesome-sass/compare/5.13.0...5.15.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-19 06:30:23 +00:00
Jyri-Petteri Paloposki
47a766425b
Merge pull request #2505 from TracksApp/dependabot/bundler/rubocop-0.93.1
Bump rubocop from 0.93.0 to 0.93.1
2020-10-13 12:39:19 +03:00
dependabot[bot]
fd3e1ecd58
Bump rubocop from 0.93.0 to 0.93.1
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.93.0 to 0.93.1.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.93.0...v0.93.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 05:49:56 +00:00
Jyri-Petteri Paloposki
a76b5efcef
Merge pull request #2504 from TracksApp/user_activity
Update last login field when validating existing login. Show 25 users…
2020-10-10 16:33:30 +03:00
Jyri-Petteri Paloposki
2d02f2f262 Update last login field when validating existing login. Show 25 users in the user list instead of just ten. 2020-10-10 16:17:04 +03:00
Jyri-Petteri Paloposki
318e4a22e4
Merge pull request #2503 from TracksApp/codeclimate_fixes
More code climate style fixes
2020-10-10 15:40:06 +03:00
Jyri-Petteri Paloposki
67a426a2e9 More code climate style fixes 2020-10-10 15:24:01 +03:00
Jyri-Petteri Paloposki
44321c1481
Merge pull request #2502 from TracksApp/codeclimate_fixes
Code style fixes
2020-10-10 05:56:50 +03:00
Jyri-Petteri Paloposki
d8acf60049 Code style fixes 2020-10-10 05:14:24 +03:00
Jyri-Petteri Paloposki
c6bbc67dab
Merge pull request #2501 from TracksApp/fi
Add Finnish locale and normalise & add new messages to all
2020-10-10 01:56:50 +03:00
Jyri-Petteri Paloposki
241477178f Change Gemfile to use single quotes and update the lock file 2020-10-10 01:37:05 +03:00
Jyri-Petteri Paloposki
260efa06df Add CodeClimate configuration 2020-10-10 01:34:22 +03:00
Jyri-Petteri Paloposki
0db28e299f Normalise the locale files and add missing messages 2020-10-10 01:34:22 +03:00
Jyri-Petteri Paloposki
6d6fa8ad9f Add i18n-tasks 2020-10-10 01:34:22 +03:00
Jyri-Petteri Paloposki
5ef41072dd Add Finnish locale 2020-10-10 01:34:22 +03:00
Jyri-Petteri Paloposki
9502fabe69
Merge pull request #2500 from TracksApp/dependabot/bundler/rubocop-0.93.0
Bump rubocop from 0.92.0 to 0.93.0
2020-10-09 12:13:06 +03:00
dependabot[bot]
07537c39e7
Bump rubocop from 0.92.0 to 0.93.0
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.92.0 to 0.93.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.92.0...v0.93.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-09 05:55:13 +00:00
Jyri-Petteri Paloposki
80ce869ad8
Merge pull request #2499 from TracksApp/dependabot/bundler/rails-6.0.3.4
Bump rails from 6.0.3.3 to 6.0.3.4
2020-10-08 12:29:23 +03:00
dependabot[bot]
4924fa19ad
Bump rails from 6.0.3.3 to 6.0.3.4
Bumps [rails](https://github.com/rails/rails) from 6.0.3.3 to 6.0.3.4.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v6.0.3.3...v6.0.3.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-08 05:50:03 +00:00
Jyri-Petteri Paloposki
ff1146c1c9
Merge pull request #2497 from TracksApp/dependabot/bundler/solargraph-0.39.17
Bump solargraph from 0.39.16 to 0.39.17
2020-09-29 14:52:35 +03:00
Jyri-Petteri Paloposki
3a76c253c5
Merge pull request #2496 from TracksApp/dependabot/bundler/puma-5.0.2
Bump puma from 5.0.0 to 5.0.2
2020-09-29 14:52:18 +03:00
dependabot[bot]
e300a39931
Bump solargraph from 0.39.16 to 0.39.17
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.39.16 to 0.39.17.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Commits](https://github.com/castwide/solargraph/compare/v0.39.16...v0.39.17)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-29 05:48:47 +00:00
dependabot[bot]
0eb6be2753
Bump puma from 5.0.0 to 5.0.2
Bumps [puma](https://github.com/puma/puma) from 5.0.0 to 5.0.2.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v5.0.0...v5.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-29 05:48:37 +00:00
Jyri-Petteri Paloposki
31e439b973
Merge pull request #2494 from TracksApp/dependabot/bundler/solargraph-0.39.16
Bump solargraph from 0.39.15 to 0.39.16
2020-09-28 13:57:12 +03:00
Jyri-Petteri Paloposki
57215ada5a
Merge pull request #2495 from TracksApp/dependabot/bundler/rubocop-0.92.0
Bump rubocop from 0.91.1 to 0.92.0
2020-09-28 13:15:40 +03:00
dependabot[bot]
302e71777e
Bump rubocop from 0.91.1 to 0.92.0
Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.91.1 to 0.92.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.91.1...v0.92.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 06:28:44 +00:00
dependabot[bot]
afe1c03f20
Bump solargraph from 0.39.15 to 0.39.16
Bumps [solargraph](https://github.com/castwide/solargraph) from 0.39.15 to 0.39.16.
- [Release notes](https://github.com/castwide/solargraph/releases)
- [Commits](https://github.com/castwide/solargraph/compare/v0.39.15...v0.39.16)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-28 06:28:28 +00:00
217 changed files with 10724 additions and 6211 deletions

25
.codeclimate.yml Normal file
View file

@ -0,0 +1,25 @@
version: "2"
checks:
file-lines:
config:
threshold: 300
method-complexity:
config:
threshold: 50
method-count:
config:
threshold: 20
method-lines:
config:
threshold: 100
plugins:
brakeman:
enabled: true
fixme:
enabled: true
flog:
enabled: true
reek:
enabled: true
#exclude_patterns:
#- app/assets/javascripts-jquery-ui

View file

@ -1,12 +1,9 @@
.bundle .bundle
.git
config/database.yml config/database.yml
config/site.yml config/site.yml
coverage coverage
db/*.sqlite3 db/*.sqlite3
doc
features features
log log
public/assets public/assets
test
tmp tmp

3
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,3 @@
# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
custom: ['https://www.taskitin.fi/']
github: zeip

View file

@ -9,3 +9,4 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: "daily" interval: "daily"
open-pull-requests-limit: 10

View file

@ -0,0 +1,55 @@
---
name: 'Build custom release'
on:
workflow_dispatch:
inputs:
tag:
description: 'Tag to release'
required: true
type: string
name:
description: 'Name of the release'
required: true
type: string
jobs:
build-and-publish-release:
name: 'Build custom release'
runs-on: ubuntu-latest
steps:
-
name: Checkout the code
uses: actions/checkout@v2
with:
ref: ${{ inputs.tag }}
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v3
with:
context: .
target: production
push: true
tags: |
tracksapp/tracks:${{ inputs.name }}
ghcr.io/tracksapp/tracks:${{ inputs.name }}
# platforms: linux/amd64,linux/arm64

45
.github/workflows/build-latest.yml vendored Normal file
View file

@ -0,0 +1,45 @@
---
name: 'Build latest'
on:
push:
branches:
- master
jobs:
build-and-publish-latest:
name: 'Build latest'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 # Checking out the repo
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v3
with:
context: .
target: production
push: true
tags: |
tracksapp/tracks:latest
tracksapp/tracks:master
ghcr.io/tracksapp/tracks:latest
# platforms: linux/amd64,linux/arm64

44
.github/workflows/build-release.yml vendored Normal file
View file

@ -0,0 +1,44 @@
---
name: 'Build release'
on:
release:
types:
- published
jobs:
build-and-publish-release:
name: 'Build release'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 # Checking out the repo
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v3
with:
context: .
target: production
push: true
tags: |
tracksapp/tracks:${{ github.event.release.name }}
ghcr.io/tracksapp/tracks:${{ github.event.release.name }}
# platforms: linux/amd64,linux/arm64

View file

@ -1,38 +1,13 @@
--- ---
name: Automated tests name: Automated tests
on: pull_request on: pull_request
jobs: jobs:
test25mysql: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
ruby: ["3.2", "3.3"]
db: [sqlite, mysql, postgres]
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- run: bash -x script/cibuild 2.5 mysql - run: bash -x script/cibuild ${{ matrix.ruby }} ${{ matrix.db }}
test26mysql:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: bash -x script/cibuild 2.6 mysql
test27mysql:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: bash -x script/cibuild 2.7 mysql
test26postgres:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: bash -x script/cibuild 2.6 postgres
test26sqlite:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: bash -x script/cibuild 2.6 sqlite
# - run: bash -x script/cibuild 2.5 postgres
# - run: bash -x script/cibuild 2.7 postgres

View file

@ -13,3 +13,23 @@ Style/Documentation:
Style/StringLiterals: Style/StringLiterals:
EnforcedStyle: double_quotes EnforcedStyle: double_quotes
Layout/AlignParameters:
EnforcedStyle: with_fixed_indentation
Metrics/AbcSize:
Max: 100
Metrics/CyclomaticComplexity:
Max: 100
Metrics/MethodLength:
Max: 100
CountAsOne: ['array', 'hash', 'heredoc']
Metrics/ModuleLength:
Max: 300
CountAsOne: ['array', 'hash', 'heredoc']
Metrics/ClassLength:
Max: 300
Metrics/ParameterLists:
Max: 20
Metrics/PerceivedComplexity:
Max: 100

1
.ruby-version Normal file
View file

@ -0,0 +1 @@
3.3

View file

@ -19,13 +19,15 @@ It would be great to first discuss them on the [mailing list](https://groups.goo
If you want to contribute an enhancement or a fix, you can: If you want to contribute an enhancement or a fix, you can:
1. [fork the project](https://help.github.com/articles/fork-a-repo) 1. [fork the project](https://help.github.com/articles/fork-a-repo)
1. [create a topic branch](http://learn.github.com/p/branching.html). 2. [create a topic branch](http://learn.github.com/p/branching.html).
1. install [docker-compose](https://docs.docker.com/compose/) 3. install [docker-compose](https://docs.docker.com/compose/)
1. copy `app/config/site.yml.tmpl` to `app/config/site.yml` and customize as needed 4. copy `app/config/site.yml.tmpl` to `app/config/site.yml` and customize as needed
1. then with `./bin/setup` you will prepare for the first run 5. then with `./bin/setup` you will prepare for the first run
1. start the server with `./script/server` which will start everything you need in Docker and present Tracks at [http://0.0.0.0:3000](http://0.0.0.0:3000) 6. start the server with `./script/server` which will start everything you need in Docker and present Tracks at [http://0.0.0.0:3000](http://0.0.0.0:3000)
1. if you need, you can launch a Rails console with `./bin/rails c` (will run inside Docker) 7. if you need, you can launch a Rails console with `./bin/rails c` (will run inside Docker)
1. make your changes and add/update relevant tests 8. make your changes and add/update relevant tests
1. run the test suite with `./bin/rake test` (will run inside Docker) 9. run the test suite with `./bin/rake test` (will run inside Docker)
1. commit the changes 10. commit the changes
1. send a pull request. 11. send a pull request.
Make sure that you've added the necessary tests for any new functionality and preferably also for any bugs and that your contribution conforms to the coding style defined by the CodeClimate checks. The coding style definition should be approximately the same as the [Shopify Ruby Style Guide](https://ruby-style-guide.shopify.dev/).

View file

@ -1,30 +1,66 @@
FROM ruby:2.6 ARG RUBY_VERSION=3.3
FROM ruby:${RUBY_VERSION} AS base
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
WORKDIR /app WORKDIR /app
RUN touch /etc/app-env RUN touch /etc/app-env
COPY Gemfile* /app/ RUN apt-get update && apt-get install -y npm netcat-openbsd
RUN npm install -g yarn
RUN gem install bundler RUN gem install bundler
RUN bundle install --jobs 4
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
RUN mkdir /app/log RUN mkdir /app/log
COPY . /app/ COPY COPYING /app/
COPY config /app/config/
COPY config/database.docker.yml /app/config/database.yml COPY config/database.docker.yml /app/config/database.yml
COPY config/site.docker.yml /app/config/site.yml COPY config/site.docker.yml /app/config/site.yml
RUN RAILS_ENV=production bundle exec rake assets:precompile COPY bin /app/bin/
COPY script /app/script/
COPY public /app/public/
COPY vendor /app/vendor/
COPY .yardopts /app/
COPY Rakefile /app/
COPY config.ru /app/
COPY docker-entrypoint.sh /app/
COPY lib /app/lib/
COPY app /app/app/
COPY db /app/db/
# Use glob to omit error if the .git directory doesn't exists (in case the
# code is from a release archive, not a Git clone)
COPY .gi[t] /app/.git
COPY Gemfile* /app/
ENTRYPOINT ["/app/docker-entrypoint.sh"] ENTRYPOINT ["/app/docker-entrypoint.sh"]
EXPOSE 3000 EXPOSE 3000
CMD ["./bin/rails", "server", "-b", "0.0.0.0"]
CMD ["rails", "server", "-b", "0.0.0.0"] FROM base AS precompile
RUN bundle config set deployment true
RUN bundle install --jobs 4
RUN RAILS_GROUPS=assets bundle exec rake assets:precompile
# Build the environment-specific stuff
FROM base AS production
RUN bundle config set without assets
RUN bundle config --global frozen 1
RUN bundle install --jobs 4
COPY --from=precompile /app/public/assets /app/public/assets
FROM base AS test
COPY test /app/test/
# For testing the API client
COPY doc /app/doc/
RUN bundle config set without assets
RUN bundle config set with development test
RUN bundle config --global frozen 1
RUN bundle install --jobs 4
COPY --from=precompile /app/public/assets /app/public/assets
FROM base AS development
RUN bundle config set with development test
RUN bundle install --jobs 4

View file

@ -1,30 +0,0 @@
FROM ruby:2.5
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
WORKDIR /app
RUN touch /etc/app-env
COPY Gemfile* /app/
RUN gem install bundler
RUN bundle install --jobs 4
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
RUN mkdir /app/log
COPY . /app/
COPY config/database.docker.yml /app/config/database.yml
COPY config/site.docker.yml /app/config/site.yml
RUN RAILS_ENV=production bundle exec rake assets:precompile
ENTRYPOINT ["/app/docker-entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

View file

@ -1,30 +0,0 @@
FROM ruby:2.7
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
WORKDIR /app
RUN touch /etc/app-env
COPY Gemfile* /app/
RUN gem install bundler
RUN bundle install --jobs 4
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
RUN mkdir /app/log
COPY . /app/
COPY config/database.docker.yml /app/config/database.yml
COPY config/site.docker.yml /app/config/site.yml
RUN RAILS_ENV=production bundle exec rake assets:precompile
ENTRYPOINT ["/app/docker-entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

130
Gemfile
View file

@ -1,92 +1,72 @@
source 'https://rubygems.org' source 'https://rubygems.org'
gem 'rails', '~> 6.0.3' gem 'actionpack-xml_parser', '~> 2.0'
gem 'sassc-rails', '~> 2.1.2' gem 'activemodel-serializers-xml', '~> 1.0.3'
gem 'coffee-rails', '~> 5.0.0'
#gem 'json' gem 'rails', '~> 7.1'
# todo: remove xml api gem 'font-awesome-sass', '~> 6.7.2'
gem "actionpack-xml_parser", "~> 2.0" gem 'jquery-rails', '~> 4.6'
gem "activemodel-serializers-xml", "~> 1.0.1" gem 'jquery-ui-rails', '~>8.0.0'
gem 'aasm', '~> 5.5.1'
gem 'acts_as_list'
gem 'bcrypt', '~> 3.1.20'
gem 'htmlentities'
gem "kt-paperclip", "~> 7.2"
gem 'puma', '~> 6.6'
gem 'rails_autolink'
gem 'RedCloth'
gem 'sanitize', '~> 7.0'
gem 'tracks-chartjs-ror'
gem 'will_paginate'
gem 'rexml'
# Use --without <group> argument to skip unnecessary drivers
gem 'sqlite3', '~> 2.7', group: :sqlite
gem 'mysql2', '~> 0.5', group: :mysql
gem 'pg', '~> 1.5', group: :postgresql
# See https://github.com/sstephenson/execjs#readme for more supported runtimes # See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', group: :therubyracer gem 'mini_racer', group: :therubyracer
gem 'uglifier', '>=1.3.0' gem 'sprockets-rails'
gem 'coffee-rails', '~> 5.0.0'
gem 'dartsass-sprockets'
gem 'bootstrap-sass', '3.4.1'
gem 'terser'
gem 'listen'
gem 'tolk', '~> 6.0.0'
gem 'jquery-rails' , '~> 4.4' group :development, :optional => true do
gem 'jquery-ui-rails' , '~>6.0.1' gem 'spring', '~> 4'
gem 'yard'
# you may comment out the database driver(s) you will not be using. gem 'bullet'
# This will prevent a native build of the driver. Building native drivers is not gem 'rack-mini-profiler'
# always possible on all platforms gem 'solargraph'
# Alternatively use --without <group> arguments to bundler to not install that group
gem "sqlite3", group: :sqlite
gem "mysql2", "~> 0.5.3", group: :mysql
gem "pg", "~> 1.2.3", group: :postgresql
gem "RedCloth" gem 'i18n-tasks', '~> 1.0.15'
gem "sanitize", "~> 5.2"
gem "will_paginate"
gem "acts_as_list"
gem "aasm", '~> 5.1.1'
gem "htmlentities"
gem "rails_autolink"
gem 'puma', '~> 5.0'
gem 'paperclip'
# To use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.16'
gem 'chartjs-ror', :git => 'git://github.com/ZeiP/chartjs-ror.git'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
# gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
# gem 'jbuilder', '~> 1.2'
gem "bootstrap-sass", "3.4.1"
gem "font-awesome-sass", "~> 5.13.0"
group :development do
gem "spring"
gem "yard"
gem 'tolk', '~> 4.0.0'
gem "bullet"
gem "rack-mini-profiler"
gem "solargraph"
end end
group :development, :test do group :development, :test, :optional => true do
gem 'byebug' gem 'byebug'
gem 'listen' gem 'rubocop', '~> 1.78'
gem "rubocop", "~> 0.91", require: false
end end
group :test do group :test, :optional => true do
gem 'rails-controller-testing'
gem 'rails-dom-testing', '~> 2.0.0'
gem "factory_bot_rails"
gem "rspec-expectations"
gem "database_cleaner"
gem "mocha", :require => false
gem "minitest-stub-const"
gem "selenium-webdriver", "~> 3.142"
# uncomment to use the webkit option. This depends on Qt being installed
# gem "capybara-webkit"
# uncomment to be able to make screenshots from scenarios
#gem "capybara-screenshot"
#gem "launchy"
gem "simplecov"
# get test coverage info on codeclimate # get test coverage info on codeclimate
gem "codeclimate-test-reporter", "1.0.7", group: :test, require: nil gem 'codeclimate-test-reporter', '1.0.9'
gem 'database_cleaner', '~> 2'
gem 'factory_bot_rails'
gem 'minitest-stub-const'
gem 'mocha'
gem 'rails-controller-testing'
gem 'rails-dom-testing', '~> 2.3.0'
gem 'rspec-expectations'
gem 'simplecov'
end
group :stripe, :optional => true do
gem 'stripe'
end end

View file

@ -1,98 +1,115 @@
GIT
remote: git://github.com/ZeiP/chartjs-ror.git
revision: e9d3aabbda3059c001144833d915a386d8b511c5
specs:
chartjs-ror (3.6.4)
rails (>= 3.1)
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
RedCloth (4.3.2) RedCloth (4.3.4)
aasm (5.1.1) aasm (5.5.1)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
actioncable (6.0.3.3) actioncable (7.1.5.1)
actionpack (= 6.0.3.3) actionpack (= 7.1.5.1)
activesupport (= 7.1.5.1)
nio4r (~> 2.0) nio4r (~> 2.0)
websocket-driver (>= 0.6.1) websocket-driver (>= 0.6.1)
actionmailbox (6.0.3.3) zeitwerk (~> 2.6)
actionpack (= 6.0.3.3) actionmailbox (7.1.5.1)
activejob (= 6.0.3.3) actionpack (= 7.1.5.1)
activerecord (= 6.0.3.3) activejob (= 7.1.5.1)
activestorage (= 6.0.3.3) activerecord (= 7.1.5.1)
activesupport (= 6.0.3.3) activestorage (= 7.1.5.1)
activesupport (= 7.1.5.1)
mail (>= 2.7.1) mail (>= 2.7.1)
actionmailer (6.0.3.3) net-imap
actionpack (= 6.0.3.3) net-pop
actionview (= 6.0.3.3) net-smtp
activejob (= 6.0.3.3) actionmailer (7.1.5.1)
actionpack (= 7.1.5.1)
actionview (= 7.1.5.1)
activejob (= 7.1.5.1)
activesupport (= 7.1.5.1)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0) net-imap
actionpack (6.0.3.3) net-pop
actionview (= 6.0.3.3) net-smtp
activesupport (= 6.0.3.3) rails-dom-testing (~> 2.2)
rack (~> 2.0, >= 2.0.8) actionpack (7.1.5.1)
actionview (= 7.1.5.1)
activesupport (= 7.1.5.1)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.0, >= 1.2.0) rails-html-sanitizer (~> 1.6)
actionpack-xml_parser (2.0.1) actionpack-xml_parser (2.0.1)
actionpack (>= 5.0) actionpack (>= 5.0)
railties (>= 5.0) railties (>= 5.0)
actiontext (6.0.3.3) actiontext (7.1.5.1)
actionpack (= 6.0.3.3) actionpack (= 7.1.5.1)
activerecord (= 6.0.3.3) activerecord (= 7.1.5.1)
activestorage (= 6.0.3.3) activestorage (= 7.1.5.1)
activesupport (= 6.0.3.3) activesupport (= 7.1.5.1)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
actionview (6.0.3.3) actionview (7.1.5.1)
activesupport (= 6.0.3.3) activesupport (= 7.1.5.1)
builder (~> 3.1) builder (~> 3.1)
erubi (~> 1.4) erubi (~> 1.11)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.1, >= 1.2.0) rails-html-sanitizer (~> 1.6)
activejob (6.0.3.3) activejob (7.1.5.1)
activesupport (= 6.0.3.3) activesupport (= 7.1.5.1)
globalid (>= 0.3.6) globalid (>= 0.3.6)
activemodel (6.0.3.3) activemodel (7.1.5.1)
activesupport (= 6.0.3.3) activesupport (= 7.1.5.1)
activemodel-serializers-xml (1.0.2) activemodel-serializers-xml (1.0.3)
activemodel (> 5.x) activemodel (>= 5.0.0.a)
activesupport (> 5.x) activesupport (>= 5.0.0.a)
builder (~> 3.1) builder (~> 3.1)
activerecord (6.0.3.3) activerecord (7.1.5.1)
activemodel (= 6.0.3.3) activemodel (= 7.1.5.1)
activesupport (= 6.0.3.3) activesupport (= 7.1.5.1)
activestorage (6.0.3.3) timeout (>= 0.4.0)
actionpack (= 6.0.3.3) activestorage (7.1.5.1)
activejob (= 6.0.3.3) actionpack (= 7.1.5.1)
activerecord (= 6.0.3.3) activejob (= 7.1.5.1)
marcel (~> 0.3.1) activerecord (= 7.1.5.1)
activesupport (6.0.3.3) activesupport (= 7.1.5.1)
marcel (~> 1.0)
activesupport (7.1.5.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2) connection_pool (>= 2.2.5)
minitest (~> 5.1) drb
tzinfo (~> 1.1) i18n (>= 1.6, < 2)
zeitwerk (~> 2.2, >= 2.2.2) logger (>= 1.4.2)
acts_as_list (1.0.2) minitest (>= 5.1)
activerecord (>= 4.2) mutex_m
ast (2.4.1) securerandom (>= 0.3)
autoprefixer-rails (9.4.7) tzinfo (~> 2.0)
execjs acts_as_list (1.2.4)
backport (1.1.2) activerecord (>= 6.1)
bcrypt (3.1.16) activesupport (>= 6.1)
benchmark (0.1.0) ast (2.4.3)
autoprefixer-rails (10.4.21.0)
execjs (~> 2)
backport (1.2.0)
base64 (0.3.0)
bcrypt (3.1.20)
benchmark (0.4.1)
bigdecimal (3.2.2)
bootstrap-sass (3.4.1) bootstrap-sass (3.4.1)
autoprefixer-rails (>= 5.2.1) autoprefixer-rails (>= 5.2.1)
sassc (>= 2.0.0) sassc (>= 2.0.0)
builder (3.2.4) builder (3.3.0)
bullet (6.1.0) bullet (8.0.8)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
uniform_notifier (~> 1.11) uniform_notifier (~> 1.11)
byebug (11.1.3) byebug (12.0.0)
childprocess (3.0.0)
climate_control (0.2.0) climate_control (0.2.0)
codeclimate-test-reporter (1.0.7) codeclimate-test-reporter (1.0.9)
simplecov simplecov (<= 0.13)
coffee-rails (5.0.0) coffee-rails (5.0.0)
coffee-script (>= 2.2.0) coffee-script (>= 2.2.0)
railties (>= 5.2.0) railties (>= 5.2.0)
@ -100,254 +117,355 @@ GEM
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.12.2) coffee-script-source (1.12.2)
concurrent-ruby (1.1.7) concurrent-ruby (1.3.5)
connection_pool (2.5.3)
crass (1.0.6) crass (1.0.6)
database_cleaner (1.8.5) dartsass-sprockets (3.2.1)
diff-lcs (1.3) railties (>= 4.0.0)
docile (1.3.2) sassc-embedded (~> 1.80.1)
e2mmap (0.1.0) sprockets (> 3.0)
erubi (1.9.0) sprockets-rails
execjs (2.7.0) tilt
factory_bot (6.1.0) database_cleaner (2.1.0)
activesupport (>= 5.0.0) database_cleaner-active_record (>= 2, < 3)
factory_bot_rails (6.1.0) database_cleaner-active_record (2.2.0)
factory_bot (~> 6.1.0) activerecord (>= 5.a)
railties (>= 5.0.0) database_cleaner-core (~> 2.0.0)
ffi (1.13.1) database_cleaner-core (2.0.1)
font-awesome-sass (5.13.0) date (3.4.1)
sassc (>= 1.11) diff-lcs (1.6.2)
globalid (0.4.2) docile (1.1.5)
activesupport (>= 4.2.0) drb (2.2.3)
erb (5.0.1)
erubi (1.13.1)
execjs (2.10.0)
factory_bot (6.5.4)
activesupport (>= 6.1.0)
factory_bot_rails (6.5.0)
factory_bot (~> 6.5)
railties (>= 6.1.0)
ffi (1.17.0)
font-awesome-sass (6.7.2)
sassc (~> 2.0)
globalid (1.2.1)
activesupport (>= 6.1)
google-protobuf (4.31.1)
bigdecimal
rake (>= 13)
highline (3.1.2)
reline
htmlentities (4.3.4) htmlentities (4.3.4)
i18n (1.8.5) i18n (1.14.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jaro_winkler (1.5.4) i18n-tasks (1.0.15)
jquery-rails (4.4.0) activesupport (>= 4.0.2)
ast (>= 2.1.0)
erubi
highline (>= 2.0.0)
i18n
parser (>= 3.2.2.1)
rails-i18n
rainbow (>= 2.2.2, < 4.0)
ruby-progressbar (~> 1.8, >= 1.8.1)
terminal-table (>= 1.5.1)
io-console (0.8.0)
irb (1.15.2)
pp (>= 0.6.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jaro_winkler (1.6.1)
jquery-rails (4.6.0)
rails-dom-testing (>= 1, < 3) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1) jquery-ui-rails (8.0.0)
railties (>= 3.2.16) railties (>= 3.2.16)
libv8 (3.16.14.19) json (2.12.2)
listen (3.2.1) kramdown (2.5.1)
rb-fsevent (~> 0.10, >= 0.10.3) rexml (>= 3.3.9)
rb-inotify (~> 0.9, >= 0.9.10) kramdown-parser-gfm (1.1.0)
loofah (2.7.0) kramdown (~> 2.0)
crass (~> 1.0.2) kt-paperclip (7.2.0)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
maruku (0.7.3)
method_source (1.0.0)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mimemagic (0.3.5)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.14.2)
minitest-stub-const (0.6)
mocha (1.11.2)
mysql2 (0.5.3)
nio4r (2.5.4)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
nokogumbo (2.0.2)
nokogiri (~> 1.8, >= 1.8.4)
paperclip (6.1.0)
activemodel (>= 4.2.0) activemodel (>= 4.2.0)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types mime-types
mimemagic (~> 0.3.0)
terrapin (~> 0.6.0) terrapin (~> 0.6.0)
parallel (1.19.2) language_server-protocol (3.17.0.5)
parser (2.7.1.4) libv8-node (24.1.0.0)
lint_roller (1.1.0)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.7.0)
loofah (2.24.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
marcel (1.0.4)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.0218.1)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
mini_racer (0.19.0)
libv8-node (~> 24.1.0.0)
minitest (5.25.5)
minitest-stub-const (0.6)
mocha (2.7.1)
ruby2_keywords (>= 0.0.5)
mutex_m (0.3.0)
mysql2 (0.5.6)
net-imap (0.5.9)
date
net-protocol
net-pop (0.1.2)
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.5.1)
net-protocol
nio4r (2.7.4)
nokogiri (1.18.9)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
observer (0.1.2)
ostruct (0.6.2)
parallel (1.27.0)
parser (3.3.8.0)
ast (~> 2.4.1) ast (~> 2.4.1)
pg (1.2.3) racc
puma (5.0.0) pg (1.5.9)
pp (0.6.2)
prettyprint
prettyprint (0.2.0)
prism (1.4.0)
psych (5.2.6)
date
stringio
puma (6.6.0)
nio4r (~> 2.0) nio4r (~> 2.0)
rack (2.2.3) racc (1.8.1)
rack-mini-profiler (2.1.0) rack (3.2.0)
rack-mini-profiler (4.0.1)
rack (>= 1.2.0) rack (>= 1.2.0)
rack-test (1.1.0) rack-session (2.1.1)
rack (>= 1.0, < 3) base64 (>= 0.1.0)
rails (6.0.3.3) rack (>= 3.0.0)
actioncable (= 6.0.3.3) rack-test (2.2.0)
actionmailbox (= 6.0.3.3) rack (>= 1.3)
actionmailer (= 6.0.3.3) rackup (2.2.1)
actionpack (= 6.0.3.3) rack (>= 3)
actiontext (= 6.0.3.3) rails (7.1.5.1)
actionview (= 6.0.3.3) actioncable (= 7.1.5.1)
activejob (= 6.0.3.3) actionmailbox (= 7.1.5.1)
activemodel (= 6.0.3.3) actionmailer (= 7.1.5.1)
activerecord (= 6.0.3.3) actionpack (= 7.1.5.1)
activestorage (= 6.0.3.3) actiontext (= 7.1.5.1)
activesupport (= 6.0.3.3) actionview (= 7.1.5.1)
bundler (>= 1.3.0) activejob (= 7.1.5.1)
railties (= 6.0.3.3) activemodel (= 7.1.5.1)
sprockets-rails (>= 2.0.0) activerecord (= 7.1.5.1)
activestorage (= 7.1.5.1)
activesupport (= 7.1.5.1)
bundler (>= 1.15.0)
railties (= 7.1.5.1)
rails-controller-testing (1.0.5) rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1) actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1) activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3) rails-dom-testing (2.3.0)
activesupport (>= 4.2.0) activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6) nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0) rails-html-sanitizer (1.6.2)
loofah (~> 2.3) loofah (~> 2.21)
rails_autolink (1.1.6) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails (> 3.1) rails-i18n (7.0.10)
railties (6.0.3.3) i18n (>= 0.7, < 2)
actionpack (= 6.0.3.3) railties (>= 6.0.0, < 8)
activesupport (= 6.0.3.3) rails_autolink (1.1.8)
method_source actionview (> 3.1)
rake (>= 0.8.7) activesupport (> 3.1)
thor (>= 0.20.3, < 2.0) railties (> 3.1)
rainbow (3.0.0) railties (7.1.5.1)
rake (13.0.1) actionpack (= 7.1.5.1)
rb-fsevent (0.10.4) activesupport (= 7.1.5.1)
rb-inotify (0.10.1) irb
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
rake (13.3.0)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0) ffi (~> 1.0)
ref (2.0.0) rbs (3.9.4)
regexp_parser (1.8.0) logger
reverse_markdown (2.0.0) rdoc (6.14.1)
erb
psych (>= 4.0.0)
regexp_parser (2.10.0)
reline (0.6.1)
io-console (~> 0.5)
reverse_markdown (3.0.0)
nokogiri nokogiri
rexml (3.2.4) rexml (3.4.1)
rspec-expectations (3.9.2) rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0) rspec-support (~> 3.13.0)
rspec-support (3.9.3) rspec-support (3.13.4)
rubocop (0.91.1) rubocop (1.78.0)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 2.7.1.1) parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.7) regexp_parser (>= 2.9.3, < 3.0)
rexml rubocop-ast (>= 1.45.1, < 2.0)
rubocop-ast (>= 0.4.0, < 1.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0) unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (0.4.2) rubocop-ast (1.45.1)
parser (>= 2.7.1.4) parser (>= 3.3.7.2)
ruby-progressbar (1.10.1) prism (~> 1.4)
rubyzip (2.0.0) ruby-progressbar (1.13.0)
safe_yaml (1.0.5) ruby2_keywords (0.0.5)
sanitize (5.2.1) sanitize (7.0.0)
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.8.0) nokogiri (>= 1.16.8)
nokogumbo (~> 2.0) sass-embedded (1.89.2)
google-protobuf (~> 4.31)
rake (>= 13)
sassc (2.4.0) sassc (2.4.0)
ffi (~> 1.9) ffi (~> 1.9)
sassc-rails (2.1.2) sassc-embedded (1.80.4)
railties (>= 4.0.0) sass-embedded (~> 1.80)
sassc (>= 2.0) securerandom (0.4.1)
sprockets (> 3.0) simplecov (0.13.0)
sprockets-rails docile (~> 1.1.0)
tilt json (>= 1.8, < 3)
selenium-webdriver (3.142.7) simplecov-html (~> 0.10.0)
childprocess (>= 0.5, < 4.0) simplecov-html (0.10.2)
rubyzip (>= 1.2.2) solargraph (0.56.0)
simplecov (0.19.0) backport (~> 1.2)
docile (~> 1.1) benchmark (~> 0.4)
simplecov-html (~> 0.11) bundler (~> 2.0)
simplecov-html (0.12.2) diff-lcs (~> 1.4)
solargraph (0.39.15) jaro_winkler (~> 1.6, >= 1.6.1)
backport (~> 1.1) kramdown (~> 2.3)
benchmark kramdown-parser-gfm (~> 1.1)
bundler (>= 1.17.2) logger (~> 1.6)
e2mmap observer (~> 0.1)
jaro_winkler (~> 1.5) ostruct (~> 0.6)
maruku (~> 0.7, >= 0.7.3) parser (~> 3.0)
nokogiri (~> 1.9, >= 1.9.1) prism (~> 1.4)
parser (~> 2.3) rbs (~> 3.3)
reverse_markdown (>= 1.0.5, < 3) reverse_markdown (~> 3.0)
rubocop (~> 0.52) rubocop (~> 1.38)
thor (~> 1.0) thor (~> 1.0)
tilt (~> 2.0) tilt (~> 2.0)
yard (~> 0.9, >= 0.9.24) yard (~> 0.9, >= 0.9.24)
spring (2.1.1) yard-solargraph (~> 0.1)
sprockets (4.0.2) spring (4.3.0)
sprockets (4.2.2)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) logger
sprockets-rails (3.2.1) rack (>= 2.2.4, < 4)
actionpack (>= 4.0) sprockets-rails (3.5.2)
activesupport (>= 4.0) actionpack (>= 6.1)
activesupport (>= 6.1)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
sqlite3 (1.4.2) sqlite3 (2.7.3)
mini_portile2 (~> 2.8.0)
stringio (3.1.7)
stripe (15.5.0)
terminal-table (4.0.0)
unicode-display_width (>= 1.1.1, < 4)
terrapin (0.6.0) terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0) climate_control (>= 0.0.3, < 1.0)
therubyracer (0.12.3) terser (1.2.6)
libv8 (~> 3.16.14.15)
ref
thor (1.0.1)
thread_safe (0.3.6)
tilt (2.0.10)
tolk (4.0.0)
rails (>= 5.0)
safe_yaml (>= 0.8.6)
sassc
tzinfo (1.2.7)
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unicode-display_width (1.7.0) thor (1.4.0)
uniform_notifier (1.13.0) tilt (2.6.0)
websocket-driver (0.7.3) timeout (0.4.3)
tolk (6.0.0)
rails (>= 7.0, < 7.3)
sprockets-rails (~> 3.4)
tracks-chartjs-ror (3.6.4)
rails (>= 3.1)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (3.1.4)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
uniform_notifier (1.17.0)
websocket-driver (0.8.0)
base64
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
will_paginate (3.3.0) will_paginate (4.0.1)
yard (0.9.25) yard (0.9.37)
zeitwerk (2.4.0) yard-solargraph (0.1.0)
yard (~> 0.9)
zeitwerk (2.7.3)
PLATFORMS PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
RedCloth RedCloth
aasm (~> 5.1.1) aasm (~> 5.5.1)
actionpack-xml_parser (~> 2.0) actionpack-xml_parser (~> 2.0)
activemodel-serializers-xml (~> 1.0.1) activemodel-serializers-xml (~> 1.0.3)
acts_as_list acts_as_list
bcrypt (~> 3.1.16) bcrypt (~> 3.1.20)
bootstrap-sass (= 3.4.1) bootstrap-sass (= 3.4.1)
bullet bullet
byebug byebug
chartjs-ror! codeclimate-test-reporter (= 1.0.9)
codeclimate-test-reporter (= 1.0.7)
coffee-rails (~> 5.0.0) coffee-rails (~> 5.0.0)
database_cleaner dartsass-sprockets
database_cleaner (~> 2)
factory_bot_rails factory_bot_rails
font-awesome-sass (~> 5.13.0) font-awesome-sass (~> 6.7.2)
htmlentities htmlentities
jquery-rails (~> 4.4) i18n-tasks (~> 1.0.15)
jquery-ui-rails (~> 6.0.1) jquery-rails (~> 4.6)
jquery-ui-rails (~> 8.0.0)
kt-paperclip (~> 7.2)
listen listen
mini_racer
minitest-stub-const minitest-stub-const
mocha mocha
mysql2 (~> 0.5.3) mysql2 (~> 0.5)
paperclip pg (~> 1.5)
pg (~> 1.2.3) puma (~> 6.6)
puma (~> 5.0)
rack-mini-profiler rack-mini-profiler
rails (~> 6.0.3) rails (~> 7.1)
rails-controller-testing rails-controller-testing
rails-dom-testing (~> 2.0.0) rails-dom-testing (~> 2.3.0)
rails_autolink rails_autolink
rexml
rspec-expectations rspec-expectations
rubocop (~> 0.91) rubocop (~> 1.78)
sanitize (~> 5.2) sanitize (~> 7.0)
sassc-rails (~> 2.1.2)
selenium-webdriver (~> 3.142)
simplecov simplecov
solargraph solargraph
spring spring (~> 4)
sqlite3 sprockets-rails
therubyracer sqlite3 (~> 2.7)
tolk (~> 4.0.0) stripe
uglifier (>= 1.3.0) terser
tolk (~> 6.0.0)
tracks-chartjs-ror
will_paginate will_paginate
yard yard
BUNDLED WITH BUNDLED WITH
2.1.4 2.4.19

View file

@ -2,6 +2,8 @@
[![Build Status](https://github.com/TracksApp/tracks/workflows/Continuous%20Integration/badge.svg)](https://github.com/TracksApp/tracks/actions) [![Build Status](https://github.com/TracksApp/tracks/workflows/Continuous%20Integration/badge.svg)](https://github.com/TracksApp/tracks/actions)
[![Code Climate](https://codeclimate.com/github/TracksApp/tracks/badges/gpa.svg)](https://codeclimate.com/github/TracksApp/tracks) [![Code Climate](https://codeclimate.com/github/TracksApp/tracks/badges/gpa.svg)](https://codeclimate.com/github/TracksApp/tracks)
[![Translation status](https://hosted.weblate.org/widgets/tracks/-/tracks/svg-badge.svg)](https://hosted.weblate.org/engage/tracks/)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6459/badge)](https://bestpractices.coreinfrastructure.org/projects/6459)
## About ## About
@ -11,7 +13,6 @@
* Hosted services: https://github.com/TracksApp/tracks/wiki/Hosted-Tracks * Hosted services: https://github.com/TracksApp/tracks/wiki/Hosted-Tracks
* Bug reports and feature requests: https://github.com/TracksApp/tracks/issues * Bug reports and feature requests: https://github.com/TracksApp/tracks/issues
* Mailing list: http://groups.google.com/group/TracksApp * Mailing list: http://groups.google.com/group/TracksApp
* IRC channel: #tracks on Freenode, available also on [Matrix](https://matrix.to/#/#tracks:matrix.org)
* License: See COPYING * License: See COPYING
Full instructions for both new installations and upgrades from older installations Full instructions for both new installations and upgrades from older installations
@ -27,6 +28,8 @@ Enjoy being productive!
* Original developer: bsag (http://www.rousette.org.uk/) * Original developer: bsag (http://www.rousette.org.uk/)
* Principal maintainer: [Jyri-Petteri ”ZeiP” Paloposki](https://github.com/ZeiP) * Principal maintainer: [Jyri-Petteri ”ZeiP” Paloposki](https://github.com/ZeiP)
(sponsored by [Ardcoras oy](https://www.ardcoras.fi/), also available for paid consulting) (sponsored by [Ardcoras oy](https://www.ardcoras.fi/), also available for paid consulting)
* If you want to support the maintainer's work, subscribe to the
[hosted version](https://www.taskitin.fi/).
* Contributors: https://github.com/TracksApp/tracks/wiki/Contributors * Contributors: https://github.com/TracksApp/tracks/wiki/Contributors
If you are thinking about contributing towards the development of Tracks, If you are thinking about contributing towards the development of Tracks,

View file

@ -1,3 +1,14 @@
//= link_tree ../images //= link_tree ../images
//= link_directory ../javascripts .js //= link_directory ../javascripts .js
//= link_directory ../stylesheets .css //= link_directory ../stylesheets .css
//= link datepicker-cs.js
//= link datepicker-de.js
//= link datepicker-es.js
//= link datepicker-fi.js
//= link datepicker-fr.js
//= link datepicker-he.js
//= link datepicker-nb_NO.js
//= link datepicker-nl.js
//= link datepicker-ru.js
//= link datepicker-sv.js
//= link datepicker-tr.js

View file

@ -0,0 +1,40 @@
/* Czech initialisation for the jQuery UI date picker plugin. */
/* Written by Tomas Muller (tomas@tomas-muller.net). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.cs = {
closeText: "Zavřít",
prevText: "Dříve",
nextText: "Později",
currentText: "Nyní",
monthNames: [ "leden", "únor", "březen", "duben", "květen", "červen",
"červenec", "srpen", "září", "říjen", "listopad", "prosinec" ],
monthNamesShort: [ "led", "úno", "bře", "dub", "kvě", "čer",
"čvc", "srp", "zář", "říj", "lis", "pro" ],
dayNames: [ "neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota" ],
dayNamesShort: [ "ne", "po", "út", "st", "čt", "pá", "so" ],
dayNamesMin: [ "ne", "po", "út", "st", "čt", "pá", "so" ],
weekHeader: "Týd",
dateFormat: "dd.mm.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.cs );
return datepicker.regional.cs;
} );

View file

@ -0,0 +1,40 @@
/* German initialisation for the jQuery UI date picker plugin. */
/* Written by Milian Wolff (mail@milianw.de). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.de = {
closeText: "Schließen",
prevText: "Zurück",
nextText: "Vor",
currentText: "Heute",
monthNames: [ "Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember" ],
monthNamesShort: [ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun",
"Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ],
dayNames: [ "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" ],
dayNamesShort: [ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" ],
dayNamesMin: [ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" ],
weekHeader: "KW",
dateFormat: "dd.mm.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.de );
return datepicker.regional.de;
} );

View file

@ -0,0 +1,40 @@
/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
/* Traducido por Vester (xvester@gmail.com). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.es = {
closeText: "Cerrar",
prevText: "Ant",
nextText: "Sig",
currentText: "Hoy",
monthNames: [ "enero", "febrero", "marzo", "abril", "mayo", "junio",
"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre" ],
monthNamesShort: [ "ene", "feb", "mar", "abr", "may", "jun",
"jul", "ago", "sep", "oct", "nov", "dic" ],
dayNames: [ "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" ],
dayNamesShort: [ "dom", "lun", "mar", "mié", "jue", "vie", "sáb" ],
dayNamesMin: [ "D", "L", "M", "X", "J", "V", "S" ],
weekHeader: "Sm",
dateFormat: "dd/mm/yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.es );
return datepicker.regional.es;
} );

View file

@ -0,0 +1,40 @@
/* Finnish initialisation for the jQuery UI date picker plugin. */
/* Written by Harri Kilpiö (harrikilpio@gmail.com). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.fi = {
closeText: "Sulje",
prevText: "Edellinen",
nextText: "Seuraava",
currentText: "Tänään",
monthNames: [ "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu",
"Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" ],
monthNamesShort: [ "Tammi", "Helmi", "Maalis", "Huhti", "Touko", "Kesä",
"Heinä", "Elo", "Syys", "Loka", "Marras", "Joulu" ],
dayNamesShort: [ "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" ],
dayNames: [ "Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai" ],
dayNamesMin: [ "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" ],
weekHeader: "Vk",
dateFormat: "d.m.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.fi );
return datepicker.regional.fi;
} );

View file

@ -0,0 +1,42 @@
/* French initialisation for the jQuery UI date picker plugin. */
/* Written by Keith Wood (kbwood{at}iinet.com.au),
Stéphane Nahmani (sholby@sholby.net),
Stéphane Raimbault <stephane.raimbault@gmail.com> */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.fr = {
closeText: "Fermer",
prevText: "Précédent",
nextText: "Suivant",
currentText: "Aujourd'hui",
monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre" ],
monthNamesShort: [ "janv.", "févr.", "mars", "avr.", "mai", "juin",
"juil.", "août", "sept.", "oct.", "nov.", "déc." ],
dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ],
dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ],
dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ],
weekHeader: "Sem.",
dateFormat: "dd/mm/yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.fr );
return datepicker.regional.fr;
} );

View file

@ -0,0 +1,40 @@
/* Hebrew initialisation for the UI Datepicker extension. */
/* Written by Amir Hardon (ahardon at gmail dot com). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.he = {
closeText: "סגור",
prevText: "הקודם",
nextText: "הבא",
currentText: "היום",
monthNames: [ "ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני",
"יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" ],
monthNamesShort: [ "ינו", "פבר", "מרץ", "אפר", "מאי", "יוני",
"יולי", "אוג", "ספט", "אוק", "נוב", "דצמ" ],
dayNames: [ "ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת" ],
dayNamesShort: [ "א'", "ב'", "ג'", "ד'", "ה'", "ו'", "שבת" ],
dayNamesMin: [ "א'", "ב'", "ג'", "ד'", "ה'", "ו'", "שבת" ],
weekHeader: "Wk",
dateFormat: "dd/mm/yy",
firstDay: 0,
isRTL: true,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.he );
return datepicker.regional.he;
} );

View file

@ -0,0 +1,52 @@
/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */
/* Written by Bjørn Johansen (post@bjornjohansen.no). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.nb = {
closeText: "Lukk",
prevText: "Forrige",
nextText: "Neste",
currentText: "I dag",
monthNames: [
"januar",
"februar",
"mars",
"april",
"mai",
"juni",
"juli",
"august",
"september",
"oktober",
"november",
"desember"
],
monthNamesShort: [ "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des" ],
dayNamesShort: [ "søn", "man", "tir", "ons", "tor", "fre", "lør" ],
dayNames: [ "søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag" ],
dayNamesMin: [ "sø", "ma", "ti", "on", "to", "fr", "lø" ],
weekHeader: "Uke",
dateFormat: "dd.mm.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ""
};
datepicker.setDefaults( datepicker.regional.nb );
return datepicker.regional.nb;
} );

View file

@ -0,0 +1,40 @@
/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
/* Written by Mathias Bynens <http://mathiasbynens.be/> */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.nl = {
closeText: "Sluiten",
prevText: "Vorig",
nextText: "Volgende",
currentText: "Vandaag",
monthNames: [ "januari", "februari", "maart", "april", "mei", "juni",
"juli", "augustus", "september", "oktober", "november", "december" ],
monthNamesShort: [ "jan", "feb", "mrt", "apr", "mei", "jun",
"jul", "aug", "sep", "okt", "nov", "dec" ],
dayNames: [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ],
dayNamesShort: [ "zon", "maa", "din", "woe", "don", "vri", "zat" ],
dayNamesMin: [ "zo", "ma", "di", "wo", "do", "vr", "za" ],
weekHeader: "Wk",
dateFormat: "dd-mm-yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.nl );
return datepicker.regional.nl;
} );

View file

@ -0,0 +1,40 @@
/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
/* Written by Andrew Stromnov (stromnov@gmail.com). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.ru = {
closeText: "Закрыть",
prevText: "Пред",
nextText: "След",
currentText: "Сегодня",
monthNames: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
monthNamesShort: [ "Янв", "Фев", "Мар", "Апр", "Май", "Июн",
"Июл", "Авг", "Сен", "Окт", "Ноя", "Дек" ],
dayNames: [ "воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота" ],
dayNamesShort: [ "вск", "пнд", "втр", "срд", "чтв", "птн", "сбт" ],
dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
weekHeader: "Нед",
dateFormat: "dd.mm.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.ru );
return datepicker.regional.ru;
} );

View file

@ -0,0 +1,40 @@
/* Swedish initialisation for the jQuery UI date picker plugin. */
/* Written by Anders Ekdahl ( anders@nomadiz.se). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.sv = {
closeText: "Stäng",
prevText: "Förra",
nextText: "Nästa",
currentText: "Idag",
monthNames: [ "januari", "februari", "mars", "april", "maj", "juni",
"juli", "augusti", "september", "oktober", "november", "december" ],
monthNamesShort: [ "jan.", "feb.", "mars", "apr.", "maj", "juni",
"juli", "aug.", "sep.", "okt.", "nov.", "dec." ],
dayNamesShort: [ "sön", "mån", "tis", "ons", "tor", "fre", "lör" ],
dayNames: [ "söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag" ],
dayNamesMin: [ "sö", "må", "ti", "on", "to", "fr", "lö" ],
weekHeader: "Ve",
dateFormat: "yy-mm-dd",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.sv );
return datepicker.regional.sv;
} );

View file

@ -0,0 +1,40 @@
/* Turkish initialisation for the jQuery UI date picker plugin. */
/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional.tr = {
closeText: "kapat",
prevText: "geri",
nextText: "ileri",
currentText: "bugün",
monthNames: [ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran",
"Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" ],
monthNamesShort: [ "Oca", "Şub", "Mar", "Nis", "May", "Haz",
"Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara" ],
dayNames: [ "Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" ],
dayNamesShort: [ "Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct" ],
dayNamesMin: [ "Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct" ],
weekHeader: "Hf",
dateFormat: "dd.mm.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "" };
datepicker.setDefaults( datepicker.regional.tr );
return datepicker.regional.tr;
} );

View file

@ -0,0 +1,40 @@
/* Traditional Chinese (Taiwan) initialisation for the jQuery UI date picker plugin. */
/* Written by Claude Code for Tracks application. */
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "../widgets/datepicker" ], factory );
} else {
// Browser globals
factory( jQuery.datepicker );
}
} )( function( datepicker ) {
"use strict";
datepicker.regional["zh-TW"] = {
closeText: "關閉",
prevText: "上一月",
nextText: "下一月",
currentText: "今天",
monthNames: [ "一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月" ],
monthNamesShort: [ "1月", "2月", "3月", "4月", "5月", "6月",
"7月", "8月", "9月", "10月", "11月", "12月" ],
dayNames: [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ],
dayNamesShort: [ "日", "一", "二", "三", "四", "五", "六" ],
dayNamesMin: [ "日", "一", "二", "三", "四", "五", "六" ],
weekHeader: "週",
dateFormat: "yy/mm/dd",
firstDay: 0,
isRTL: false,
showMonthAfterYear: true,
yearSuffix: "年" };
datepicker.setDefaults( datepicker.regional["zh-TW"] );
return datepicker.regional["zh-TW"];
} );

View file

@ -10,9 +10,9 @@
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives. // about supported directives.
// //
//= require jquery
//= require jquery_ujs //= require jquery_ujs
//= require bootstrap-sprockets //= require jquery3
//= require bootstrap
//= require jquery-ui/widgets/autocomplete //= require jquery-ui/widgets/autocomplete
//= require jquery-ui/widgets/datepicker //= require jquery-ui/widgets/datepicker

View file

@ -841,6 +841,7 @@ var RecurringTodosPage = {
RecurringTodosPage.reset_radio(); RecurringTodosPage.reset_radio();
$('#recurring_daily').show(); $('#recurring_daily').show();
}, },
closeText: 'X',
appendTo: "#content" appendTo: "#content"
}); });

View file

@ -2,6 +2,7 @@
* Apparently the requires need to be in the "root" stylesheet file, not * Apparently the requires need to be in the "root" stylesheet file, not
* the imported manifest. * the imported manifest.
* *
*= require jquery-ui
*= require jquery-ui/menu *= require jquery-ui/menu
*= require jquery-ui/autocomplete *= require jquery-ui/autocomplete
*= require jquery-ui/datepicker *= require jquery-ui/datepicker

View file

@ -1,2 +1 @@
@import "font-awesome-sprockets";
@import "font-awesome"; @import "font-awesome";

View file

@ -21,7 +21,6 @@
} }
.bootstrap { .bootstrap {
@import "bootstrap-sprockets";
@import "bootstrap"; @import "bootstrap";
@import "tracks-logo"; @import "tracks-logo";
@import "login"; @import "login";

View file

@ -2,6 +2,7 @@
* Apparently the requires need to be in the "root" stylesheet file, not * Apparently the requires need to be in the "root" stylesheet file, not
* the imported manifest. * the imported manifest.
* *
*= require jquery-ui
*= require jquery-ui/menu *= require jquery-ui/menu
*= require jquery-ui/autocomplete *= require jquery-ui/autocomplete
*= require jquery-ui/datepicker *= require jquery-ui/datepicker

View file

@ -1,5 +1,5 @@
require_dependency "login_system" require_dependency "login_system"
require_dependency "tracks/source_view" require_dependency "tracks/source_view_switching"
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception. # Prevent CSRF attacks by raising an exception.
@ -10,7 +10,7 @@ class ApplicationController < ActionController::Base
include Common include Common
helper_method :current_user, :prefs, :format_date helper_method :current_user, :prefs, :format_date
layout proc{ |controller| controller.mobile? ? "mobile" : "application" } layout proc { |controller| controller.mobile? ? "mobile" : "application" }
# exempt_from_layout /\.js\.erb$/ # exempt_from_layout /\.js\.erb$/
before_action :set_session_expiration before_action :set_session_expiration
@ -24,10 +24,10 @@ class ApplicationController < ActionController::Base
def set_locale def set_locale
locale = params[:locale] # specifying a locale in the request takes precedence locale = params[:locale] # specifying a locale in the request takes precedence
locale = locale || prefs.locale unless current_user.nil? # otherwise, the locale of the currently logged in user takes over locale ||= prefs.locale unless current_user.nil? # otherwise, the locale of the currently logged in user takes over
locale = locale || request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first if request.env['HTTP_ACCEPT_LANGUAGE'] locale ||= request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first if request.env['HTTP_ACCEPT_LANGUAGE']
if locale && I18n::available_locales.map(&:to_s).include?(locale.to_s) if locale && I18n.available_locales.map(&:to_s).include?(locale.to_s)
I18n.locale = locale I18n.locale = locale
else else
I18n.locale = I18n.default_locale I18n.locale = I18n.default_locale
@ -39,28 +39,28 @@ class ApplicationController < ActionController::Base
# If the method is called by the feed controller (which we don't have # If the method is called by the feed controller (which we don't have
# under session control) or if we checked the box to keep logged in on # under session control) or if we checked the box to keep logged in on
# login don't set the session expiry time. # login don't set the session expiry time.
return if session.nil? || self.controller_name == 'feed' || session['noexpiry'] == "on" return if session.nil? || controller_name == 'feed' || session['noexpiry'] == "on"
# Get expiry time (allow ten seconds window for the case where we have # Get expiry time (allow ten seconds window for the case where we have
# none) # none)
expiry_time = session['expiry_time'] || Time.now + 10 now = Time.zone.now
if expiry_time < Time.now expiry_time = session['expiry_time'] || now + 10
if expiry_time < now
# Too late, matey... bang goes your session! # Too late, matey... bang goes your session!
reset_session reset_session
else else
# Okay, you get another hour # Okay, you get another hour
session['expiry_time'] = Time.now + (60*60) session['expiry_time'] = now + (60 * 60)
end end
end end
def render_failure message, status = 404 def render_failure(message, status = 404)
render :body => message, :status => status render :body => message, :status => status
end end
# Returns a count of next actions in the given context or project The result # Returns a count of next actions in the given context or project The result
# is count and a string descriptor, correctly pluralised if there are no # is count and a string descriptor, correctly pluralised if there are no
# actions or multiple actions # actions or multiple actions
#
def count_undone_todos_phrase(todos_parent) def count_undone_todos_phrase(todos_parent)
count = count_undone_todos(todos_parent) count = count_undone_todos(todos_parent)
deferred_count = count_deferred_todos(todos_parent) deferred_count = count_deferred_todos(todos_parent)
@ -83,13 +83,13 @@ class ApplicationController < ActionController::Base
init_hidden_todo_counts(['context']) if !@context_hidden_todo_counts init_hidden_todo_counts(['context']) if !@context_hidden_todo_counts
count = @context_hidden_todo_counts[todos_parent.id] count = @context_hidden_todo_counts[todos_parent.id]
else else
count = eval "@#{todos_parent.class.to_s.downcase}_not_done_counts[#{todos_parent.id}]" count = eval("@#{todos_parent.class.to_s.downcase}_not_done_counts[#{todos_parent.id}]", binding, __FILE__, __LINE__)
end end
count || 0 count || 0
end end
def count_deferred_todos(todos_parent) def count_deferred_todos(todos_parent)
return todos_parent.nil? ? 0 : eval("@#{todos_parent.class.to_s.downcase}_deferred_counts[#{todos_parent.id}]") || 0 return todos_parent.nil? ? 0 : eval("@#{todos_parent.class.to_s.downcase}_deferred_counts[#{todos_parent.id}]", binding, __FILE__, __LINE__) || 0
end end
# Convert a date object to the format specified in the user's preferences in # Convert a date object to the format specified in the user's preferences in
@ -101,8 +101,8 @@ class ApplicationController < ActionController::Base
def for_autocomplete(coll, substr) def for_autocomplete(coll, substr)
if substr # protect agains empty request if substr # protect agains empty request
filtered = coll.find_all{|item| item.name.downcase.include? substr.downcase} filtered = coll.find_all { |item| item.name.downcase.include? substr.downcase }
json_elems = Array[*filtered.map{ |e| {:id => e.id.to_s, :value => e.name} }].to_json json_elems = Array[*filtered.map { |e| { :id => e.id.to_s, :value => e.name } }].to_json
return json_elems return json_elems
else else
return "" return ""
@ -110,7 +110,7 @@ class ApplicationController < ActionController::Base
end end
def format_dependencies_as_json_for_auto_complete(entries) def format_dependencies_as_json_for_auto_complete(entries)
json_elems = Array[*entries.map{ |e| {:value => e.id.to_s, :label => e.specification} }].to_json json_elems = Array[*entries.map { |e| { :value => e.id.to_s, :label => e.specification } }].to_json
return json_elems return json_elems
end end
@ -138,7 +138,7 @@ class ApplicationController < ActionController::Base
end end
def handle_unverified_request def handle_unverified_request
unless request.format=="application/xml" unless request.format == "application/xml"
super # handle xml http auth via our own login code super # handle xml http auth via our own login code
end end
end end
@ -204,7 +204,7 @@ class ApplicationController < ActionController::Base
private private
def parse_date_per_user_prefs( s ) def parse_date_per_user_prefs(s)
prefs.parse_date(s) prefs.parse_date(s)
end end
@ -220,16 +220,16 @@ class ApplicationController < ActionController::Base
end end
end end
def init_not_done_counts(parents = ['project','context']) def init_not_done_counts(parents = ['project', 'context'])
parents.each do |parent| parents.each do |parent|
eval("@#{parent}_not_done_counts ||= current_user.todos.active.count_by_group('#{parent}_id')") eval("@#{parent}_not_done_counts ||= current_user.todos.active.count_by_group('#{parent}_id')", binding, __FILE__, __LINE__)
eval("@#{parent}_deferred_counts ||= current_user.todos.deferred.count_by_group('#{parent}_id')") eval("@#{parent}_deferred_counts ||= current_user.todos.deferred.count_by_group('#{parent}_id')", binding, __FILE__, __LINE__)
end end
end end
def init_hidden_todo_counts(parents = ['project', 'context']) def init_hidden_todo_counts(parents = ['project', 'context'])
parents.each do |parent| parents.each do |parent|
eval("@#{parent}_hidden_todo_counts ||= current_user.todos.active_or_hidden.count_by_group('#{parent}_id')") eval("@#{parent}_hidden_todo_counts ||= current_user.todos.active_or_hidden.count_by_group('#{parent}_id')", binding, __FILE__, __LINE__)
end end
end end
@ -252,9 +252,9 @@ class ApplicationController < ActionController::Base
def todo_xml_params def todo_xml_params
if params[:limit_fields] == 'index' if params[:limit_fields] == 'index'
return [:only => [:id, :created_at, :updated_at, :completed_at] ] return [:only => [:id, :created_at, :updated_at, :completed_at]]
else else
return [:except => :user_id, :include => [:tags, :predecessors, :successors] ] return [:except => :user_id, :include => [:tags, :predecessors, :successors]]
end end
end end
@ -263,8 +263,8 @@ class ApplicationController < ActionController::Base
@source_view = "all_done" @source_view = "all_done"
@page_title = t("#{object_name.pluralize}.all_completed_tasks_title", "#{object_name}_name".to_sym => object.name) @page_title = t("#{object_name.pluralize}.all_completed_tasks_title", "#{object_name}_name".to_sym => object.name)
@done = object.todos.completed.reorder('completed_at DESC').includes(Todo::DEFAULT_INCLUDES). @done = object.todos.completed.reorder('completed_at DESC').includes(Todo::DEFAULT_INCLUDES)
paginate(:page => params[:page], :per_page => 20) .paginate(:page => params[:page], :per_page => 20)
@count = @done.size @count = @done.size
render :template => 'todos/all_done' render :template => 'todos/all_done'
end end
@ -272,7 +272,7 @@ class ApplicationController < ActionController::Base
def done_todos_for(object) def done_todos_for(object)
object_name = object.class.name.downcase # context or project object_name = object.class.name.downcase # context or project
@source_view = "done" @source_view = "done"
eval("@#{object_name} = object") eval("@#{object_name} = object", binding, __FILE__, __LINE__)
@page_title = t("#{object_name.pluralize}.completed_tasks_title", "#{object_name}_name".to_sym => object.name) @page_title = t("#{object_name.pluralize}.completed_tasks_title", "#{object_name}_name".to_sym => object.name)
@done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(object.todos) @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(object.todos)
@ -284,5 +284,4 @@ class ApplicationController < ActionController::Base
def set_group_view_by def set_group_view_by
@group_view_by = params['_group_view_by'] || cookies['group_view_by'] || 'context' @group_view_by = params['_group_view_by'] || cookies['group_view_by'] || 'context'
end end
end end

View file

@ -13,15 +13,9 @@ class CalendarController < ApplicationController
respond_to do |format| respond_to do |format|
format.html format.html
format.m { format.m { cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] } }
cookies[:mobile_url]= {:value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} format.ics { render :action => 'show', :layout => false, :content_type => Mime[:ics] }
} format.xml { render :xml => @due_all.to_xml(*[todo_xml_params[0].merge({ :root => :todos })]) }
format.ics {
render :action => 'show', :layout => false, :content_type => Mime[:ics]
}
format.xml {
render :xml => @due_all.to_xml( *[todo_xml_params[0].merge({:root => :todos})] )
}
end end
end end
end end

View file

@ -1,5 +1,4 @@
class ContextsController < ApplicationController class ContextsController < ApplicationController
helper :todos helper :todos
before_action :init, :except => [:index, :create, :destroy, :order] before_action :init, :except => [:index, :create, :destroy, :order]
@ -19,15 +18,15 @@ class ContextsController < ApplicationController
respond_to do |format| respond_to do |format|
format.html &render_contexts_html format.html &render_contexts_html
format.m &render_contexts_mobile format.m &render_contexts_mobile
format.xml { render :xml => @all_contexts.to_xml(:root => :contexts, :except => :user_id) } format.xml { render :xml => @all_contexts.to_xml(:root => :contexts, :except => :user_id) }
format.any(:rss, :atom) do format.any(:rss, :atom) do
@feed_title = 'Tracks Contexts' @feed_title = 'Tracks Contexts'
@feed_description = "Lists all the contexts for #{current_user.display_name}" @feed_description = "Lists all the contexts for #{current_user.display_name}"
end end
format.text do format.text do
# somehow passing Mime[:text] using content_type to render does not work # somehow passing Mime[:text] using content_type to render does not work
headers['Content-Type']=Mime[:text].to_s headers['Content-Type'] = Mime[:text].to_s
render :action => 'index', :layout => false, :content_type => Mime[:text] render :action => 'index', :layout => false, :content_type => Mime[:text]
end end
format.autocomplete &render_autocomplete format.autocomplete &render_autocomplete
@ -41,7 +40,7 @@ class ContextsController < ApplicationController
@max_completed = current_user.prefs.show_number_completed @max_completed = current_user.prefs.show_number_completed
@done = @context.todos.completed.limit(@max_completed).reorder(Arel.sql("todos.completed_at DESC, todos.created_at DESC")).includes(Todo::DEFAULT_INCLUDES) @done = @context.todos.completed.limit(@max_completed).reorder(Arel.sql("todos.completed_at DESC, todos.created_at DESC")).includes(Todo::DEFAULT_INCLUDES)
@not_done_todos = @context.todos.active_or_hidden.not_project_hidden.reorder(Arel.sql('todos.due IS NULL, todos.due ASC, todos.created_at ASC')).includes(Todo::DEFAULT_INCLUDES) @not_done_todos = @context.todos.active_or_hidden.not_project_hidden.reorder(Arel.sql('todos.due IS NULL, todos.due ASC, todos.created_at ASC')).includes(Todo::DEFAULT_INCLUDES)
@todos_without_project = @not_done_todos.select{|t| t.project.nil?} @todos_without_project = @not_done_todos.select { |t| t.project.nil? }
@deferred_todos = @context.todos.deferred.includes(Todo::DEFAULT_INCLUDES) @deferred_todos = @context.todos.deferred.includes(Todo::DEFAULT_INCLUDES)
@pending_todos = @context.todos.pending.includes(Todo::DEFAULT_INCLUDES) @pending_todos = @context.todos.pending.includes(Todo::DEFAULT_INCLUDES)
@ -84,7 +83,7 @@ class ContextsController < ApplicationController
end end
format.xml do format.xml do
if @context.new_record? if @context.new_record?
render_failure @context.errors.to_xml.html_safe, 409 render_failure @context.errors.full_messages.to_xml(root: "errors", skip_types: true).html_safe, 409
else else
head :created, :location => context_url(@context) head :created, :location => context_url(@context)
end end
@ -93,14 +92,13 @@ class ContextsController < ApplicationController
end end
# Edit the details of the context # Edit the details of the context
#
def update def update
process_params_for_update process_params_for_update
@context.attributes = context_params @context.attributes = context_params
@saved = @context.save @saved = @context.save
@state_saved = set_state_for_update(@new_state) @state_saved = set_state_for_update(@new_state)
@saved = @saved && @state_saved @saved &&= @state_saved
if @saved if @saved
@state_changed = (@original_context_state != @context.state) @state_changed = (@original_context_state != @context.state)
@ -112,13 +110,13 @@ class ContextsController < ApplicationController
respond_to do |format| respond_to do |format|
format.js format.js
format.xml { format.xml do
if @saved if @saved
render :xml => @context.to_xml( :except => :user_id ) render :xml => @context.to_xml(:except => :user_id)
else else
render :body => "Error on update: #{@context.errors.full_messages.inject("") {|v, e| v + e + " " }}", :status => 409 render :body => "Error on update: #{@context.errors.full_messages.inject("") { |v, e| v + e + " " }}", :status => 409
end end
} end
end end
end end
@ -150,7 +148,7 @@ class ContextsController < ApplicationController
# #
def order def order
context_ids = params["container_context"] context_ids = params["container_context"]
@projects = current_user.contexts.update_positions( context_ids ) @projects = current_user.contexts.update_positions(context_ids)
head :ok head :ok
rescue rescue
notify :error, $! notify :error, $!
@ -204,17 +202,17 @@ class ContextsController < ApplicationController
@active_contexts = current_user.contexts.active @active_contexts = current_user.contexts.active
@hidden_contexts = current_user.contexts.hidden @hidden_contexts = current_user.contexts.hidden
@down_count = @active_contexts.size + @hidden_contexts.size @down_count = @active_contexts.size + @hidden_contexts.size
cookies[:mobile_url]= {:value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] }
render render
end end
end end
def render_context_mobile def render_context_mobile
lambda do lambda do
@page_title = "TRACKS::List actions in "+@context.name @page_title = "TRACKS::List actions in " + @context.name
@not_done = @not_done_todos.select {|t| t.context_id == @context.id } @not_done = @not_done_todos.select { |t| t.context_id == @context.id }
@down_count = @not_done.size @down_count = @not_done.size
cookies[:mobile_url]= {:value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] }
@mobile_from_context = @context.id @mobile_from_context = @context.id
render render
end end
@ -270,5 +268,4 @@ class ContextsController < ApplicationController
return false return false
end end
end end
end end

View file

@ -1,42 +1,39 @@
class DataController < ApplicationController class DataController < ApplicationController
require 'csv' require 'csv'
def index def index
@page_title = "TRACKS::Export" @page_title = t('data.export.page_title')
end end
def import def import; end
end
def csv_map def csv_map
if params[:file].blank? if params[:file].blank?
flash[:notice] = "File can't be blank" flash[:notice] = t "data.import.errors.file_blank"
redirect_to :back redirect_back fallback_location: root_path
else else
@import_to = params[:import_to] @import_to = params[:import_to]
begin begin
#get column headers and format as [['name', column_number]...] # Get column headers and format as [['name', column_number]...]
i = -1 i = -1
@headers = import_headers(params[:file].path).collect { |v| [v, i+=1] } @headers = import_headers(params[:file].path).collect { |v| [v, i += 1] }
@headers.unshift ['',i] @headers.unshift ['', i]
rescue Exception => e rescue Exception => e
flash[:error] = "Invalid CVS: could not read headers: #{e}" flash[:error] = t "data.import.errors.invalid_csv", e: e
redirect_to :back redirect_back fallback_location: root_path
return return
end end
#save file for later # Save file for later
begin begin
uploaded_file = params[:file] uploaded_file = params[:file]
@filename = sanitize_filename(uploaded_file.original_filename) @filename = sanitize_filename(uploaded_file.original_filename)
path_and_file = Rails.root.join('public', 'uploads', 'csv', @filename) path_and_file = Rails.root.join('public', 'uploads', 'csv', @filename)
File.open(path_and_file, "wb") { |f| f.write(uploaded_file.read) } File.open(path_and_file, "wb") { |f| f.write(uploaded_file.read) }
rescue Exception => e rescue Exception => e
flash[:error] = "Could not save uploaded CSV (#{path_and_file}). Can Tracks write to the upload directory? #{e}" flash[:error] = t "data.import.errors.save_error", path_and_file: path_and_file, e: e
redirect_to :back redirect_back fallback_location: root_path
return return
end end
@ -46,8 +43,8 @@ class DataController < ApplicationController
when 'todos' when 'todos'
@labels = [:description, :context, :project, :notes, :created_at, :due, :completed_at] @labels = [:description, :context, :project, :notes, :created_at, :due, :completed_at]
else else
flash[:error] = "Invalid import destination" flash[:error] = t "data.import.errors.invalid_destination"
redirect_to :back redirect_back fallback_location: root_path
end end
respond_to do |format| respond_to do |format|
format.html format.html
@ -62,15 +59,19 @@ class DataController < ApplicationController
case params[:import_to] case params[:import_to]
when 'projects' when 'projects'
count = Project.import path_and_file, params, current_user count = Project.import path_and_file, params, current_user
flash[:notice] = "#{count} Projects imported" flash[:notice] = t 'data.import.projects_count', count: count
when 'todos' when 'todos'
count = Todo.import path_and_file, params, current_user count = Todo.import path_and_file, params, current_user
flash[:notice] = "#{count} Todos imported" if !count
flash[:error] = t('data.import.errors.no_context')
else
flash[:notice] = t 'data.import.todos_count', count: count
end
else else
flash[:error] = t('data.invalid_import_destination') flash[:error] = t('data.import.errors.invalid_destination')
end end
rescue Exception => e rescue Exception => e
flash[:error] = t('data.invalid_import_destination') + ": #{e}" flash[:error] = t 'data.import.errors.invalid_destination', e: e
end end
File.delete(path_and_file) File.delete(path_and_file)
redirect_to import_data_path redirect_to import_data_path
@ -96,17 +97,17 @@ class DataController < ApplicationController
all_tables['projects'] = current_user.projects.load all_tables['projects'] = current_user.projects.load
todo_tag_ids = Tag.find_by_sql([ todo_tag_ids = Tag.find_by_sql([
"SELECT DISTINCT tags.id "+ "SELECT DISTINCT tags.id
"FROM tags, taggings, todos "+ FROM tags, taggings, todos
"WHERE todos.user_id=? "+ WHERE todos.user_id = ?
"AND tags.id = taggings.tag_id " + AND tags.id = taggings.tag_id
"AND taggings.taggable_id = todos.id ", current_user.id]) AND taggings.taggable_id = todos.id", current_user.id])
rec_todo_tag_ids = Tag.find_by_sql([ rec_todo_tag_ids = Tag.find_by_sql([
"SELECT DISTINCT tags.id "+ "SELECT DISTINCT tags.id
"FROM tags, taggings, recurring_todos "+ FROM tags, taggings, recurring_todos
"WHERE recurring_todos.user_id=? "+ WHERE recurring_todos.user_id = ?
"AND tags.id = taggings.tag_id " + AND tags.id = taggings.tag_id
"AND taggings.taggable_id = recurring_todos.id ", current_user.id]) AND taggings.taggable_id = recurring_todos.id", current_user.id])
tags = Tag.where("id IN (?) OR id IN (?)", todo_tag_ids, rec_todo_tag_ids) tags = Tag.where("id IN (?) OR id IN (?)", todo_tag_ids, rec_todo_tag_ids)
taggings = Tagging.where("tag_id IN (?) OR tag_id IN(?)", todo_tag_ids, rec_todo_tag_ids) taggings = Tagging.where("tag_id IN (?) OR tag_id IN(?)", todo_tag_ids, rec_todo_tag_ids)
@ -116,7 +117,8 @@ class DataController < ApplicationController
all_tables['recurring_todos'] = current_user.recurring_todos.load all_tables['recurring_todos'] = current_user.recurring_todos.load
result = all_tables.to_yaml result = all_tables.to_yaml
result.gsub!(/\n/, "\r\n") # TODO: general functionality for line endings # TODO: general functionality for line endings
result.gsub!(/\n/, "\r\n")
send_data(result, :filename => "tracks_backup.yml", :type => 'text/plain') send_data(result, :filename => "tracks_backup.yml", :type => 'text/plain')
end end
@ -131,7 +133,7 @@ class DataController < ApplicationController
csv << [todo.id, todo.context.name, csv << [todo.id, todo.context.name,
todo.project_id.nil? ? "" : todo.project.name, todo.project_id.nil? ? "" : todo.project.name,
todo.description, todo.description,
todo.notes, todo.tags.collect{|t| t.name}.join(', '), todo.notes, todo.tags.collect { |t| t.name }.join(', '),
todo.created_at.to_formatted_s(:db), todo.created_at.to_formatted_s(:db),
todo.due? ? todo.due.to_formatted_s(:db) : "", todo.due? ? todo.due.to_formatted_s(:db) : "",
todo.completed_at? ? todo.completed_at.to_formatted_s(:db) : "", todo.completed_at? ? todo.completed_at.to_formatted_s(:db) : "",
@ -147,8 +149,7 @@ class DataController < ApplicationController
def csv_notes def csv_notes
content_type = 'text/csv' content_type = 'text/csv'
CSV.generate(result = "") do |csv| CSV.generate(result = "") do |csv|
csv << ["id", "User ID", "Project", "Note", csv << ["id", "User ID", "Project", "Note", "Created at", "Updated at"]
"Created at", "Updated at"]
# had to remove project include because it's association order is leaking # had to remove project include because it's association order is leaking
# through and causing an ambiguous column ref even with_exclusive_scope # through and causing an ambiguous column ref even with_exclusive_scope
# didn't seem to help -JamesKebinger # didn't seem to help -JamesKebinger
@ -166,17 +167,17 @@ class DataController < ApplicationController
def xml_export def xml_export
todo_tag_ids = Tag.find_by_sql([ todo_tag_ids = Tag.find_by_sql([
"SELECT DISTINCT tags.id "+ "SELECT DISTINCT tags.id
"FROM tags, taggings, todos "+ FROM tags, taggings, todos
"WHERE todos.user_id=? "+ WHERE todos.user_id = ?
"AND tags.id = taggings.tag_id " + AND tags.id = taggings.tag_id
"AND taggings.taggable_id = todos.id ", current_user.id]) AND taggings.taggable_id = todos.id", current_user.id])
rec_todo_tag_ids = Tag.find_by_sql([ rec_todo_tag_ids = Tag.find_by_sql([
"SELECT DISTINCT tags.id "+ "SELECT DISTINCT tags.id
"FROM tags, taggings, recurring_todos "+ FROM tags, taggings, recurring_todos
"WHERE recurring_todos.user_id=? "+ WHERE recurring_todos.user_id = ?
"AND tags.id = taggings.tag_id " + AND tags.id = taggings.tag_id
"AND taggings.taggable_id = recurring_todos.id ", current_user.id]) AND taggings.taggable_id = recurring_todos.id", current_user.id])
tags = Tag.where("id IN (?) OR id IN (?)", todo_tag_ids, rec_todo_tag_ids) tags = Tag.where("id IN (?) OR id IN (?)", todo_tag_ids, rec_todo_tag_ids)
taggings = Tagging.where("tag_id IN (?) OR tag_id IN(?)", todo_tag_ids, rec_todo_tag_ids) taggings = Tagging.where("tag_id IN (?) OR tag_id IN(?)", todo_tag_ids, rec_todo_tag_ids)
@ -198,7 +199,7 @@ class DataController < ApplicationController
# adjusts time to utc # adjusts time to utc
def adjust_time(timestring) def adjust_time(timestring)
if (timestring=='') or ( timestring == nil) if (timestring == '') || (timestring == nil)
return nil return nil
else else
return Time.parse(timestring + 'UTC') return Time.parse(timestring + 'UTC')
@ -206,12 +207,12 @@ class DataController < ApplicationController
end end
def yaml_import def yaml_import
raise "YAML loading is disabled" raise t "data.import.yaml_disabled"
end end
private private
def sanitize_filename(filename) def sanitize_filename(filename)
filename.gsub(/[^0-9A-z.\-]/, '_') filename.gsub(/[^0-9A-z.\-]/, '_')
end end
end end

View file

@ -1,5 +1,4 @@
class FeedlistController < ApplicationController class FeedlistController < ApplicationController
helper :feedlist helper :feedlist
def index def index
@ -37,9 +36,8 @@ class FeedlistController < ApplicationController
def get_feeds_for(object) def get_feeds_for(object)
respond_to do |format| respond_to do |format|
format.html { render :file => "feedlist/get_feeds_for_#{object.class.name.downcase}"} format.html { render :template => "feedlist/get_feeds_for_#{object.class.name.downcase}" }
format.js format.js
end end
end end
end end

View file

@ -1,8 +1,7 @@
class IntegrationsController < ApplicationController class IntegrationsController < ApplicationController
require 'mail' require 'mail'
skip_before_action :login_required, :only => [:cloudmailin, :search_plugin] skip_before_action :login_required, :only => [:search_plugin]
skip_before_action :verify_authenticity_token, only: [:cloudmailin]
def index def index
@page_title = 'TRACKS::Integrations' @page_title = 'TRACKS::Integrations'
@ -17,38 +16,15 @@ class IntegrationsController < ApplicationController
end end
def search_plugin def search_plugin
@icon_data = [File.open(File.join(Rails.root, 'app', 'assets', 'images', 'done.png')).read]. @icon_data = [File.open(File.join(Rails.root, 'app', 'assets', 'images', 'done.png')).read]
pack('m').gsub(/\n/, '') .pack('m').gsub(/\n/, '')
end
def cloudmailin
if !verify_cloudmailin_signature
render :body => "Message signature verification failed.", :status => 403
return false
end
if process_message(params[:message])
render :body => 'success', :status => 200
else
render :body => "No user found or other error", :status => 404
end
end end
private private
def process_message(message)
MessageGateway::receive(Mail.new(message))
end
def verify_cloudmailin_signature
provided = request.request_parameters.delete(:signature)
signature = Digest::MD5.hexdigest(flatten_params(request.request_parameters).sort.map{|k,v| v}.join + SITE_CONFIG['cloudmailin'])
return provided == signature
end
def flatten_params(params, title = nil, result = {}) def flatten_params(params, title = nil, result = {})
params.each do |key, value| params.each do |key, value|
if value.kind_of?(Hash) if value.is_a? Hash
key_name = title ? "#{title}[#{key}]" : key key_name = title ? "#{title}[#{key}]" : key
flatten_params(value, key_name, result) flatten_params(value, key_name, result)
else else
@ -59,6 +35,4 @@ class IntegrationsController < ApplicationController
return result return result
end end
end end

View file

@ -15,8 +15,8 @@ class LoginController < ApplicationController
cookies[:preferred_auth] = prefered_auth? unless cookies[:preferred_auth] cookies[:preferred_auth] = prefered_auth? unless cookies[:preferred_auth]
case request.method case request.method
when 'POST' when 'POST'
if @user = User.authenticate(params['user_login'], params['user_password']) if (@user = User.authenticate(params['user_login'], params['user_password']))
@user.update_attribute(:last_login_at, Time.now) @user.update_attribute(:last_login_at, Time.zone.now)
return handle_post_success return handle_post_success
else else
handle_post_failure handle_post_failure
@ -28,7 +28,7 @@ class LoginController < ApplicationController
end end
respond_to do |format| respond_to do |format|
format.html format.html
format.m { render :action => 'login', :layout => 'mobile' } format.m { render :action => 'login', :layout => 'mobile' }
end end
end end
@ -43,8 +43,8 @@ class LoginController < ApplicationController
if session if session
return unless should_expire_sessions? return unless should_expire_sessions?
# Get expiry time (allow ten seconds window for the case where we have none) # Get expiry time (allow ten seconds window for the case where we have none)
time_left = expiry_time - Time.now time_left = expiry_time - Time.zone.now
@session_expired = ( time_left < (10*60) ) # Session will time out before the next check @session_expired = (time_left < (10 * 60)) # Session will time out before the next check
end end
end end
respond_to do |format| respond_to do |format|
@ -54,33 +54,32 @@ class LoginController < ApplicationController
private private
def handle_post_success def handle_post_success
session['user_id'] = @user.id session['user_id'] = @user.id
# If checkbox on login page checked, we don't expire the session after 1 hour # If checkbox on login page checked, we don't expire the session after 1 hour
# of inactivity and we remember this user for future browser sessions # of inactivity and we remember this user for future browser sessions
session['noexpiry'] = params['user_noexpiry'] session['noexpiry'] = params['user_noexpiry']
msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire." msg = (should_expire_sessions?) ? "will expire after 1 hour of inactivity." : "will not expire."
notify :notice, "Login successful: session #{msg}" notify :notice, "Login successful: session #{msg}"
cookies[:tracks_login] = { :value => @user.login, :expires => Time.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] } cookies[:tracks_login] = { :value => @user.login, :expires => Time.zone.now + 1.year, :secure => SITE_CONFIG['secure_cookies'] }
unless should_expire_sessions? unless should_expire_sessions?
@user.remember_me @user.remember_me
cookies[:auth_token] = { :value => @user.remember_token , :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] } cookies[:auth_token] = { :value => @user.remember_token, :expires => @user.remember_token_expires_at, :secure => SITE_CONFIG['secure_cookies'] }
end
redirect_back_or_home
end end
redirect_back_or_home
end
def handle_post_failure def handle_post_failure
@login = params['user_login'] @login = params['user_login']
notify :warning, t('login.unsuccessful') notify :warning, t('login.unsuccessful')
end end
def should_expire_sessions? def should_expire_sessions?
session['noexpiry'] != "on" session['noexpiry'] != "on"
end end
def expiry_time def expiry_time
return Time.now + 10 unless session['expiry_time'] return Time.zone.now + 10 unless session['expiry_time']
DateTime.strptime(session['expiry_time'], "%FT%T.%L%Z") Time.zone.parse(session['expiry_time'])
end end
end end

View file

@ -1,38 +0,0 @@
require 'openssl'
class MailgunController < ApplicationController
skip_before_action :login_required, :only => [:mailgun]
before_action :verify, :only => [:mailgun]
protect_from_forgery with: :null_session
def mailgun
unless params.include? 'body-mime'
Rails.logger.info "Cannot process Mailgun request, no body-mime sent"
render_failure "Unacceptable body-mime", 406
return
end
todo = MessageGateway.receive(params['body-mime'])
if todo
render :xml => todo.to_xml( *todo_xml_params )
else
render_failure "Todo not saved", 406
end
end
private
def verify
unless params['signature'] == OpenSSL::HMAC.hexdigest(
OpenSSL::Digest.new('sha256'),
SITE_CONFIG['mailgun_api_key'],
'%s%s' % [params['timestamp'], params['token']]
)
Rails.logger.info "Cannot verify Mailgun signature"
render_failure "Access denied", 406
return
end
end
end

View file

@ -1,5 +1,4 @@
class NotesController < ApplicationController class NotesController < ApplicationController
before_action :set_source_view before_action :set_source_view
def index def index
@ -9,7 +8,7 @@ class NotesController < ApplicationController
@source_view = 'note_list' @source_view = 'note_list'
respond_to do |format| respond_to do |format|
format.html format.html
format.xml { render :xml => @all_notes.to_xml(:root => :notes, :except => :user_id ) } format.xml { render :xml => @all_notes.to_xml(:root => :notes, :except => :user_id) }
end end
end end
@ -75,5 +74,4 @@ class NotesController < ApplicationController
def note_params def note_params
params.require(:note).permit(:project_id, :body) params.require(:note).permit(:project_id, :body)
end end
end end

View file

@ -1,5 +1,4 @@
class PreferencesController < ApplicationController class PreferencesController < ApplicationController
def index def index
@page_title = t('preferences.page_title') @page_title = t('preferences.page_title')
@prefs = current_user.prefs @prefs = current_user.prefs
@ -31,7 +30,7 @@ class PreferencesController < ApplicationController
render :body => l(Date.current, :format => format) render :body => l(Date.current, :format => format)
end end
private private
def prefs_params def prefs_params
params.require(:prefs).permit( params.require(:prefs).permit(
@ -52,5 +51,4 @@ private
notify :notice, t('preferences.updated') notify :notice, t('preferences.updated')
redirect_to :action => 'index' redirect_to :action => 'index'
end end
end end

View file

@ -1,5 +1,4 @@
class ProjectsController < ApplicationController class ProjectsController < ApplicationController
helper :application, :todos, :notes helper :application, :todos, :notes
before_action :set_source_view before_action :set_source_view
before_action :set_project_from_params, :only => [:update, :destroy, :show, :edit, :set_reviewed] before_action :set_project_from_params, :only => [:update, :destroy, :show, :edit, :set_reviewed]
@ -16,14 +15,14 @@ class ProjectsController < ApplicationController
init_not_done_counts(['project']) init_not_done_counts(['project'])
init_hidden_todo_counts(['project']) init_hidden_todo_counts(['project'])
if params[:only_active_with_no_next_actions] if params[:only_active_with_no_next_actions]
@projects = current_user.projects.active.select { |p| count_undone_todos(p) == 0 } @projects = current_user.projects.active.select { |p| count_undone_todos(p) == 0 }
else else
@projects = current_user.projects @projects = current_user.projects
end end
@active_projects = current_user.projects.active @active_projects = current_user.projects.active
@hidden_projects = current_user.projects.hidden @hidden_projects = current_user.projects.hidden
respond_to do |format| respond_to do |format|
format.html do format.html do
@page_title = t('projects.list_projects') @page_title = t('projects.list_projects')
@count = current_user.projects.count @count = current_user.projects.count
@completed_projects = current_user.projects.completed.limit(10) @completed_projects = current_user.projects.completed.limit(10)
@ -32,10 +31,10 @@ class ProjectsController < ApplicationController
current_user.projects.cache_note_counts current_user.projects.cache_note_counts
@new_project = current_user.projects.build @new_project = current_user.projects.build
end end
format.m do format.m do
@completed_projects = current_user.projects.completed @completed_projects = current_user.projects.completed
@down_count = @active_projects.size + @hidden_projects.size + @completed_projects.size @down_count = @active_projects.size + @hidden_projects.size + @completed_projects.size
cookies[:mobile_url]= {:value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] }
end end
format.xml { render :xml => @projects.to_xml(:root => :projects, :except => :user_id) } format.xml { render :xml => @projects.to_xml(:root => :projects, :except => :user_id) }
format.any(:rss, :atom) do format.any(:rss, :atom) do
@ -44,7 +43,7 @@ class ProjectsController < ApplicationController
end end
format.text do format.text do
# somehow passing Mime[:text] using content_type to render does not work # somehow passing Mime[:text] using content_type to render does not work
headers['Content-Type']=Mime[:text].to_s headers['Content-Type'] = Mime[:text].to_s
end end
format.autocomplete do format.autocomplete do
projects = current_user.projects.active + current_user.projects.hidden projects = current_user.projects.active + current_user.projects.hidden
@ -58,10 +57,10 @@ class ProjectsController < ApplicationController
@source_view = params['_source_view'] || 'review' @source_view = params['_source_view'] || 'review'
@page_title = t('projects.list_reviews') @page_title = t('projects.list_reviews')
projects = current_user.projects projects = current_user.projects
@projects_to_review = projects.select {|p| p.needs_review?(current_user)} @projects_to_review = projects.select { |p| p.needs_review?(current_user) }
@stalled_projects = projects.select {|p| p.stalled?} @stalled_projects = projects.select { |p| p.stalled? }
@blocked_projects = projects.select {|p| p.blocked?} @blocked_projects = projects.select { |p| p.blocked? }
@current_projects = projects.uncompleted.select { |p| not (p.needs_review?(current_user)) }.sort_by { |p| p.last_reviewed || Time.zone.at(0) } @current_projects = projects.uncompleted.select { |p| not p.needs_review?(current_user) }.sort_by { |p| p.last_reviewed || Time.zone.at(0) }
init_not_done_counts(['project']) init_not_done_counts(['project'])
init_hidden_todo_counts(['project']) init_hidden_todo_counts(['project'])
@ -85,7 +84,7 @@ class ProjectsController < ApplicationController
@total = current_user.projects.completed.count @total = current_user.projects.completed.count
@no_projects = @projects.empty? @no_projects = @projects.empty?
@range_low = (page.to_i-1) * items_per_page + 1 @range_low = (page.to_i - 1) * items_per_page + 1
@range_high = @range_low + @projects.size - 1 @range_high = @range_low + @projects.size - 1
@range_low = 0 if @total == 0 @range_low = 0 if @total == 0
@ -113,11 +112,11 @@ class ProjectsController < ApplicationController
def projects_and_actions def projects_and_actions
@projects = current_user.projects.active @projects = current_user.projects.active
respond_to do |format| respond_to do |format|
format.text { format.text do
# somehow passing Mime[:text] using content_type to render does not work # somehow passing Mime[:text] using content_type to render does not work
headers['Content-Type']=Mime[:text].to_s headers['Content-Type'] = Mime[:text].to_s
render :action => 'index_text_projects_and_actions', :layout => false, :content_type => Mime[:text] render :action => 'index_text_projects_and_actions', :layout => false, :content_type => Mime[:text]
} end
end end
end end
@ -133,13 +132,13 @@ class ProjectsController < ApplicationController
@projects_to_show = [@project] @projects_to_show = [@project]
@done = {} @done = {}
@done = @project.todos.completed. @done = @project.todos.completed
reorder("todos.completed_at DESC"). .reorder("todos.completed_at DESC")
limit(current_user.prefs.show_number_completed). .limit(current_user.prefs.show_number_completed)
includes(Todo::DEFAULT_INCLUDES) unless @max_completed == 0 .includes(Todo::DEFAULT_INCLUDES) unless @max_completed == 0
@down_count = @not_done_todos.size + @deferred_todos.size + @pending_todos.size @down_count = @not_done_todos.size + @deferred_todos.size + @pending_todos.size
@count=@down_count @count = @down_count
@next_project = current_user.projects.next_from(@project) @next_project = current_user.projects.next_from(@project)
@previous_project = current_user.projects.previous_from(@project) @previous_project = current_user.projects.previous_from(@project)
@default_tags = @project.default_tags @default_tags = @project.default_tags
@ -148,16 +147,16 @@ class ProjectsController < ApplicationController
@contexts = current_user.contexts @contexts = current_user.contexts
respond_to do |format| respond_to do |format|
format.html format.html
format.m do format.m do
if @project.default_context.nil? if @project.default_context.nil?
@project_default_context = t('projects.no_default_context') @project_default_context = t('projects.no_default_context')
else else
@project_default_context = t('projects.default_context', :context => @project.default_context.name) @project_default_context = t('projects.default_context', :context => @project.default_context.name)
end end
cookies[:mobile_url]= {:value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] }
@mobile_from_project = @project.id @mobile_from_project = @project.id
end end
format.xml do format.xml do
render :xml => @project.to_xml(:root => :project, :except => :user_id) { |xml| render :xml => @project.to_xml(:root => :project, :except => :user_id) { |xml|
xml.not_done { @not_done_todos.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } } xml.not_done { @not_done_todos.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } }
xml.deferred { @deferred_todos.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } } xml.deferred { @deferred_todos.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } }
@ -187,17 +186,16 @@ class ProjectsController < ApplicationController
end end
format.xml do format.xml do
if @project.new_record? if @project.new_record?
render_failure @project.errors.to_xml.html_safe, 409 render_failure @project.errors.full_messages.to_xml(root: "errors", skip_types: true).html_safe, 409
else else
head :created, :location => project_url(@project), :text => @project.id head :created, :location => project_url(@project), :text => @project.id
end end
end end
format.html {redirect_to :action => 'index'} format.html { redirect_to :action => 'index' }
end end
end end
# Edit the details of the project # Edit the details of the project
#
def update def update
template = "" template = ""
@ -247,16 +245,15 @@ class ProjectsController < ApplicationController
respond_to do |format| respond_to do |format|
format.js { render :template => template } format.js { render :template => template }
format.html { redirect_to :action => 'index'} format.html { redirect_to :action => 'index' }
format.xml { format.xml do
if @saved if @saved
render :xml => @project.to_xml( :except => :user_id ) render :xml => @project.to_xml(:except => :user_id)
else else
render :body => "Error on update: #{@project.errors.full_messages.inject("") {|v, e| v + e + " " }}", :status => 409 render :body => "Error on update: #{@project.errors.full_messages.inject("") { |v, e| v + e + " " }}", :status => 409
end end
} end
end end
end end
def edit def edit
@ -270,17 +267,17 @@ class ProjectsController < ApplicationController
@project.destroy @project.destroy
respond_to do |format| respond_to do |format|
format.js { format.js do
@down_count = current_user.projects.size @down_count = current_user.projects.size
update_state_counts update_state_counts
} end
format.xml { render :body => "Deleted project #{@project.name}" } format.xml { render :body => "Deleted project #{@project.name}" }
end end
end end
def order def order
project_ids = params["container_project"] project_ids = params["container_project"]
@projects = current_user.projects.update_positions( project_ids ) @projects = current_user.projects.update_positions(project_ids)
head :ok head :ok
rescue rescue
notify :error, $! notify :error, $!
@ -350,5 +347,4 @@ class ProjectsController < ApplicationController
def project_params def project_params
params.require(:project).permit(:name, :position, :user_id, :description, :state, :default_context_id, :default_tags) params.require(:project).permit(:name, :position, :user_id, :description, :state, :default_context_id, :default_tags)
end end
end end

View file

@ -1,18 +1,16 @@
module RecurringTodos module RecurringTodos
class FormHelper class FormHelper
def initialize(recurring_todo) def initialize(recurring_todo)
@recurring_todo = recurring_todo @recurring_todo = recurring_todo
@method_map = { @method_map = {
# delegate daily_xxx to daily_pattern.xxx # delegate daily_xxx to daily_pattern.xxx
"daily" => {prefix: "", method: daily_pattern}, "daily" => { prefix: "", method: daily_pattern },
"weekly" => {prefix: "", method: weekly_pattern}, "weekly" => { prefix: "", method: weekly_pattern },
"monthly" => {prefix: "", method: monthly_pattern}, "monthly" => { prefix: "", method: monthly_pattern },
"yearly" => {prefix: "", method: yearly_pattern}, "yearly" => { prefix: "", method: yearly_pattern },
# delegate on_xxx to weekly_pattern.on_xxx # delegate on_xxx to weekly_pattern.on_xxx
"on" => {prefix: "on_", method: weekly_pattern} "on" => { prefix: "on_", method: weekly_pattern }
} }
end end
@ -41,13 +39,11 @@ module RecurringTodos
def method_missing(method, *args) def method_missing(method, *args)
# delegate daily_xxx to daily_pattern, weekly_xxx to weekly_pattern, etc. # delegate daily_xxx to daily_pattern, weekly_xxx to weekly_pattern, etc.
if method.to_s =~ /^([^_]+)_(.+)$/ if method.to_s =~ /^([^_]+)_(.+)$/
return @method_map[$1][:method].send(@method_map[$1][:prefix]+$2, *args) unless @method_map[$1].nil? return @method_map[$1][:method].send(@method_map[$1][:prefix] + $2, *args) unless @method_map[$1].nil?
end end
# no match, let @recurring_todo handle it, or fail # no match, let @recurring_todo handle it, or fail
@recurring_todo.send(method, *args) @recurring_todo.send(method, *args)
end end
end end
end
end

View file

@ -1,5 +1,4 @@
class RecurringTodosController < ApplicationController class RecurringTodosController < ApplicationController
helper :todos, :recurring_todos helper :todos, :recurring_todos
append_before_action :init, :only => [:index, :new, :edit, :create] append_before_action :init, :only => [:index, :new, :edit, :create]
@ -12,18 +11,16 @@ class RecurringTodosController < ApplicationController
@recurring_todos = current_user.recurring_todos.active.includes(:tags, :taggings) @recurring_todos = current_user.recurring_todos.active.includes(:tags, :taggings)
@completed_recurring_todos = current_user.recurring_todos.completed.limit(10).includes(:tags, :taggings) @completed_recurring_todos = current_user.recurring_todos.completed.limit(10).includes(:tags, :taggings)
@no_recurring_todos = @recurring_todos.exists? @no_recurring_todos = !@recurring_todos.exists?
@no_completed_recurring_todos = @completed_recurring_todos.exists? @no_completed_recurring_todos = !@completed_recurring_todos.exists?
@count = @recurring_todos.count @count = @recurring_todos.count
@new_recurring_todo = RecurringTodo.new @new_recurring_todo = RecurringTodo.new
end end
def new def new; end
end
def show def show; end
end
def done def done
@source_view = params['_source_view'] || 'recurring_todo' @source_view = params['_source_view'] || 'recurring_todo'
@ -34,7 +31,7 @@ class RecurringTodosController < ApplicationController
@completed_recurring_todos = current_user.recurring_todos.completed.paginate :page => page, :per_page => items_per_page @completed_recurring_todos = current_user.recurring_todos.completed.paginate :page => page, :per_page => items_per_page
@total = @count = current_user.recurring_todos.completed.count @total = @count = current_user.recurring_todos.completed.count
@range_low = (page.to_i-1) * items_per_page + 1 @range_low = (page.to_i - 1) * items_per_page + 1
@range_high = @range_low + @completed_recurring_todos.size - 1 @range_high = @range_low + @completed_recurring_todos.size - 1
@range_low = 0 if @total == 0 @range_low = 0 if @total == 0
@ -98,7 +95,6 @@ class RecurringTodosController < ApplicationController
@completed_remaining = current_user.recurring_todos.completed.count @completed_remaining = current_user.recurring_todos.completed.count
respond_to do |format| respond_to do |format|
format.html do format.html do
if @saved if @saved
notify :notice, t('todos.recurring_deleted_success') notify :notice, t('todos.recurring_deleted_success')
@ -107,7 +103,6 @@ class RecurringTodosController < ApplicationController
end end
redirect_to :action => 'index' redirect_to :action => 'index'
end end
format.js do format.js do
render render
end end
@ -165,7 +160,7 @@ class RecurringTodosController < ApplicationController
# derived attributes # derived attributes
:weekly_return_monday, :weekly_return_tuesday, :weekly_return_wednesday, :weekly_return_monday, :weekly_return_tuesday, :weekly_return_wednesday,
:weekly_return_thursday, :weekly_return_friday, :weekly_return_saturday, :weekly_return_sunday :weekly_return_thursday, :weekly_return_friday, :weekly_return_saturday, :weekly_return_sunday
) )
end end
def all_recurring_todo_params def all_recurring_todo_params
@ -174,7 +169,7 @@ class RecurringTodosController < ApplicationController
context_name: :context_name, context_name: :context_name,
project_name: :project_name, project_name: :project_name,
tag_list: :tag_list tag_list: :tag_list
}.each do |target,source| }.each do |target, source|
move_into_recurring_todo_param(params, target, source) move_into_recurring_todo_param(params, target, source)
end end
recurring_todo_params recurring_todo_params
@ -192,14 +187,14 @@ class RecurringTodosController < ApplicationController
tag_list: :edit_recurring_todo_tag_list, tag_list: :edit_recurring_todo_tag_list,
end_date: :recurring_todo_edit_end_date, end_date: :recurring_todo_edit_end_date,
start_from: :recurring_todo_edit_start_from start_from: :recurring_todo_edit_start_from
}.each do |target,source| }.each do |target, source|
move_into_recurring_todo_param(params, target, source) move_into_recurring_todo_param(params, target, source)
end end
# make sure that we set weekly_return_xxx to empty (space) when they are # make sure that we set weekly_return_xxx to empty (space) when they are
# not checked (and thus not present in params["recurring_todo"]) # not checked (and thus not present in params["recurring_todo"])
%w{monday tuesday wednesday thursday friday saturday sunday}.each do |day| %w{monday tuesday wednesday thursday friday saturday sunday}.each do |day|
params["recurring_todo"]["weekly_return_#{day}"]=' ' if params["recurring_todo"]["weekly_return_#{day}"].nil? params["recurring_todo"]["weekly_return_#{day}"] = ' ' if params["recurring_todo"]["weekly_return_#{day}"].nil?
end end
recurring_todo_params recurring_todo_params
@ -210,9 +205,15 @@ class RecurringTodosController < ApplicationController
end end
def init def init
@days_of_week = (0..6).map{|i| [t('date.day_names')[i], i] } @days_of_week = (0..6).map { |i| [t('date.day_names')[i], i] }
@months_of_year = (1..12).map{|i| [t('date.month_names')[i], i] } @months_of_year = (1..12).map { |i| [t('date.month_names')[i], i] }
@xth_day = [[t('common.first'),1],[t('common.second'),2],[t('common.third'),3],[t('common.fourth'),4],[t('common.last'),5]] @xth_day = [
[t('common.first'), 1],
[t('common.second'), 2],
[t('common.third'), 3],
[t('common.fourth'), 4],
[t('common.last'),5]
]
@projects = current_user.projects.includes(:default_context) @projects = current_user.projects.includes(:default_context)
@contexts = current_user.contexts @contexts = current_user.contexts
end end
@ -224,11 +225,10 @@ class RecurringTodosController < ApplicationController
def find_and_inactivate def find_and_inactivate
# find active recurring todos without active todos and inactivate them # find active recurring todos without active todos and inactivate them
current_user.recurring_todos.active. current_user.recurring_todos.active
select("recurring_todos.id, recurring_todos.state"). .select("recurring_todos.id, recurring_todos.state")
joins("LEFT JOIN todos fai_todos ON (recurring_todos.id = fai_todos.recurring_todo_id) AND (NOT fai_todos.state='completed')"). .joins("LEFT JOIN todos fai_todos ON (recurring_todos.id = fai_todos.recurring_todo_id) AND (NOT fai_todos.state='completed')")
where("fai_todos.id IS NULL"). .where("fai_todos.id IS NULL")
each { |rt| current_user.recurring_todos.find(rt.id).toggle_completion! } .each { |rt| current_user.recurring_todos.find(rt.id).toggle_completion! }
end end
end end

View file

@ -1,5 +1,4 @@
class SearchController < ApplicationController class SearchController < ApplicationController
helper :todos, :application, :notes, :projects, :contexts helper :todos, :application, :notes, :projects, :contexts
def results def results

View file

@ -1,6 +1,5 @@
class StatsController < ApplicationController class StatsController < ApplicationController
SECONDS_PER_DAY = 86_400
SECONDS_PER_DAY = 86400;
helper :todos, :projects, :recurring_todos helper :todos, :projects, :recurring_todos
append_before_action :init, :except => :index append_before_action :init, :except => :index
@ -24,22 +23,22 @@ class StatsController < ApplicationController
# less than the minimum completed_at, so no reason to check minimum completed_at # less than the minimum completed_at, so no reason to check minimum completed_at
# convert to array and fill in non-existing months # convert to array and fill in non-existing months
@actions_done_last_months_array = put_events_into_month_buckets(actions_last_months, month_count+1, :completed_at) @actions_done_last_months_array = put_events_into_month_buckets(actions_last_months, month_count + 1, :completed_at)
@actions_created_last_months_array = put_events_into_month_buckets(actions_last_months, month_count+1, :created_at) @actions_created_last_months_array = put_events_into_month_buckets(actions_last_months, month_count + 1, :created_at)
# find max for graph in both hashes # find max for graph in both hashes
@max = (@actions_done_last_months_array + @actions_created_last_months_array).max @max = (@actions_done_last_months_array + @actions_created_last_months_array).max
# set running avg # set running avg
@actions_done_avg_last_months_array = compute_running_avg_array(@actions_done_last_months_array,month_count+1) @actions_done_avg_last_months_array = compute_running_avg_array(@actions_done_last_months_array, month_count + 1)
@actions_created_avg_last_months_array = compute_running_avg_array(@actions_created_last_months_array,month_count+1) @actions_created_avg_last_months_array = compute_running_avg_array(@actions_created_last_months_array, month_count + 1)
# interpolate avg for this month. # interpolate avg for this month.
@interpolated_actions_created_this_month = interpolate_avg_for_current_month(@actions_created_last_months_array) @interpolated_actions_created_this_month = interpolate_avg_for_current_month(@actions_created_last_months_array)
@interpolated_actions_done_this_month = interpolate_avg_for_current_month(@actions_done_last_months_array) @interpolated_actions_done_this_month = interpolate_avg_for_current_month(@actions_done_last_months_array)
@created_count_array = Array.new(month_count+1, actions_last_months.select { |x| x.created_at }.size/month_count) @created_count_array = Array.new(month_count + 1, actions_last_months.select { |x| x.created_at }.size / month_count)
@done_count_array = Array.new(month_count+1, actions_last_months.select { |x| x.completed_at }.size/month_count) @done_count_array = Array.new(month_count + 1, actions_last_months.select { |x| x.completed_at }.size / month_count)
render :layout => false render :layout => false
end end
@ -52,14 +51,13 @@ class StatsController < ApplicationController
case params['id'] case params['id']
when 'avrt', 'avrt_end' # actions_visible_running_time when 'avrt', 'avrt_end' # actions_visible_running_time
# HACK: because open flash chart uses & to denote the end of a parameter, # HACK: because open flash chart uses & to denote the end of a parameter,
# we cannot use URLs with multiple parameters (that would use &). So we # we cannot use URLs with multiple parameters (that would use &). So we
# revert to using two id's for the same selection. avtr_end means that the # revert to using two id's for the same selection. avtr_end means that the
# last bar of the chart is selected. avtr is used for all other bars # last bar of the chart is selected. avtr is used for all other bars
week_from = params['index'].to_i week_from = params['index'].to_i
week_to = week_from+1 week_to = week_from + 1
@chart = Stats::Chart.new('actions_visible_running_time_data') @chart = Stats::Chart.new('actions_visible_running_time_data')
@page_title = t('stats.actions_selected_from_week') @page_title = t('stats.actions_selected_from_week')
@ -72,11 +70,11 @@ class StatsController < ApplicationController
end end
# get all running actions that are visible # get all running actions that are visible
@actions_running_time = current_user.todos.not_completed.not_hidden.not_deferred_or_blocked. @actions_running_time = current_user.todos.not_completed.not_hidden.not_deferred_or_blocked
select("todos.id, todos.created_at"). .select("todos.id, todos.created_at")
reorder("todos.created_at DESC") .reorder("todos.created_at DESC")
selected_todo_ids = get_ids_from(@actions_running_time, week_from, week_to, params['id']== 'avrt_end') selected_todo_ids = get_ids_from(@actions_running_time, week_from, week_to, params['id'] == 'avrt_end')
@selected_actions = selected_todo_ids.size == 0 ? [] : current_user.todos.where("id in (" + selected_todo_ids.join(",") + ")") @selected_actions = selected_todo_ids.size == 0 ? [] : current_user.todos.where("id in (" + selected_todo_ids.join(",") + ")")
@count = @selected_actions.size @count = @selected_actions.size
@ -84,7 +82,7 @@ class StatsController < ApplicationController
when 'art', 'art_end' when 'art', 'art_end'
week_from = params['index'].to_i week_from = params['index'].to_i
week_to = week_from+1 week_to = week_from + 1
@chart = Stats::Chart.new('actions_running_time_data') @chart = Stats::Chart.new('actions_running_time_data')
@page_title = "Actions selected from week " @page_title = "Actions selected from week "
@ -99,7 +97,7 @@ class StatsController < ApplicationController
# get all running actions # get all running actions
@actions_running_time = current_user.todos.not_completed.select("id, created_at") @actions_running_time = current_user.todos.not_completed.select("id, created_at")
selected_todo_ids = get_ids_from(@actions_running_time, week_from, week_to, params['id']=='art_end') selected_todo_ids = get_ids_from(@actions_running_time, week_from, week_to, params['id'] == 'art_end')
@selected_actions = selected_todo_ids.size == 0 ? [] : current_user.todos.where("id in (#{selected_todo_ids.join(",")})") @selected_actions = selected_todo_ids.size == 0 ? [] : current_user.todos.where("id in (#{selected_todo_ids.join(",")})")
@count = @selected_actions.size @count = @selected_actions.size
@ -119,7 +117,7 @@ class StatsController < ApplicationController
@last_completed_projects = current_user.projects.completed.limit(10).reorder('completed_at DESC').includes(:todos, :notes) @last_completed_projects = current_user.projects.completed.limit(10).reorder('completed_at DESC').includes(:todos, :notes)
@last_completed_contexts = [] @last_completed_contexts = []
@last_completed_recurring_todos = current_user.recurring_todos.completed.limit(10).reorder('completed_at DESC').includes(:tags, :taggings) @last_completed_recurring_todos = current_user.recurring_todos.completed.limit(10).reorder('completed_at DESC').includes(:tags, :taggings)
#TODO: @last_completed_contexts = current_user.contexts.completed.all(:limit => 10, :order => 'completed_at DESC') # TODO: @last_completed_contexts = current_user.contexts.completed.all(:limit => 10, :order => 'completed_at DESC')
end end
private private
@ -137,7 +135,7 @@ class StatsController < ApplicationController
@cut_off_30days = 30.days.ago.beginning_of_day @cut_off_30days = 30.days.ago.beginning_of_day
end end
def get_ids_from (actions, week_from, week_to, at_end) def get_ids_from(actions, week_from, week_to, at_end)
selected_todo_ids = [] selected_todo_ids = []
actions.each do |r| actions.each do |r|
@ -145,7 +143,7 @@ class StatsController < ApplicationController
if at_end if at_end
selected_todo_ids << r.id.to_s if weeks >= week_from selected_todo_ids << r.id.to_s if weeks >= week_from
else else
selected_todo_ids << r.id.to_s if weeks.between?(week_from, week_to-1) selected_todo_ids << r.id.to_s if weeks.between?(week_from, week_to - 1)
end end
end end
@ -161,12 +159,12 @@ class StatsController < ApplicationController
end end
def put_events_into_month_buckets(records, array_size, date_method_on_todo) def put_events_into_month_buckets(records, array_size, date_method_on_todo)
convert_to_array(records.select { |x| x.send(date_method_on_todo) }, array_size) { |r| [difference_in_months(@today, r.send(date_method_on_todo))]} convert_to_array(records.select { |x| x.send(date_method_on_todo) }, array_size) { |r| [difference_in_months(@today, r.send(date_method_on_todo))] }
end end
# assumes date1 > date2 # assumes date1 > date2
def difference_in_days(date1, date2) def difference_in_days(date1, date2)
return ((date1.utc.at_midnight-date2.utc.at_midnight)/SECONDS_PER_DAY).to_i return ((date1.utc.at_midnight - date2.utc.at_midnight) / SECONDS_PER_DAY).to_i
end end
# assumes date1 > date2 # assumes date1 > date2

View file

@ -1,6 +1,5 @@
module Todos module Todos
class TodoCreateParamsHelper class TodoCreateParamsHelper
attr_reader :new_project_created, :new_context_created, :attributes attr_reader :new_project_created, :new_context_created, :attributes
def initialize(params, user) def initialize(params, user)
@ -26,7 +25,8 @@ module Todos
elsif params[:todo] elsif params[:todo]
@attributes = todo_params(params) @attributes = todo_params(params)
end end
@attributes = {} if @attributes.nil? # make sure there is at least an empty hash # Make sure there is at least an empty hash
@attributes = {} if @attributes.nil?
end end
def filter_tags def filter_tags
@ -42,7 +42,7 @@ module Todos
def filter_starred def filter_starred
if @params[:new_todo_starred] if @params[:new_todo_starred]
@attributes["starred"] = (@params[:new_todo_starred]||"").include? "true" @attributes["starred"] = (@params[:new_todo_starred] || "").include? "true"
end end
end end
@ -78,14 +78,14 @@ module Todos
@params['predecessor_list'] @params['predecessor_list']
end end
def parse_dates() def parse_dates
@attributes['show_from'] = @user.prefs.parse_date(show_from) @attributes['show_from'] = @user.prefs.parse_date(show_from)
@attributes['due'] = @user.prefs.parse_date(due) @attributes['due'] = @user.prefs.parse_date(due)
@attributes['due'] ||= '' @attributes['due'] ||= ''
end end
def sequential? def sequential?
return @params[:todos_sequential].present? && @params[:todos_sequential]=='true' return @params[:todos_sequential].present? && @params[:todos_sequential] == 'true'
end end
def specified_by_name?(group_type) def specified_by_name?(group_type)
@ -110,7 +110,7 @@ module Todos
end end
def add_errors(model) def add_errors(model)
@errors.each {|e| model.errors.add(e[:attribute], e[:message]) } @errors.each { |e| model.errors.add(e[:attribute], e[:message]) }
end end
private private
@ -124,7 +124,7 @@ module Todos
# accept empty :todo hash # accept empty :todo hash
if params[:todo].empty? if params[:todo].empty?
params[:todo] = {:ignore => true} params[:todo] = { :ignore => true }
end end
filtered = params.require(:todo).permit( filtered = params.require(:todo).permit(
@ -136,7 +136,7 @@ module Todos
:project => [:name]) :project => [:name])
# add back :predecessor_dependencies # add back :predecessor_dependencies
filtered[:predecessor_dependencies] = {:predecessor => deps } unless deps.nil? filtered[:predecessor_dependencies] = { :predecessor => deps } unless deps.nil?
filtered filtered
end end
@ -157,9 +157,8 @@ module Todos
# be aware, this will replace the project_id/context_id (string) in @attributes with the new found id (int) # be aware, this will replace the project_id/context_id (string) in @attributes with the new found id (int)
@attributes["#{group_type}_id"] = set.find(id).id @attributes["#{group_type}_id"] = set.find(id).id
return false return false
rescue rescue
@errors << { :attribute => group_type, :message => "unknown"} @errors << { :attribute => group_type, :message => "unknown" }
end end
end end
end end

View file

@ -1,5 +1,4 @@
class TodosController < ApplicationController class TodosController < ApplicationController
skip_before_action :login_required, :only => [:index, :tag, :list_deferred, :show, :list_hidden, :done] skip_before_action :login_required, :only => [:index, :tag, :list_deferred, :show, :list_hidden, :done]
prepend_before_action :login_or_feed_token_required, :only => [:index, :tag, :list_deferred, :show, :list_hidden, :done] prepend_before_action :login_or_feed_token_required, :only => [:index, :tag, :list_deferred, :show, :list_hidden, :done]
append_before_action :find_and_activate_ready, :only => [:index, :list_deferred] append_before_action :find_and_activate_ready, :only => [:index, :list_deferred]
@ -35,29 +34,29 @@ class TodosController < ApplicationController
@done = current_user.todos.completed.limit(max_completed).includes(Todo::DEFAULT_INCLUDES) unless max_completed == 0 @done = current_user.todos.completed.limit(max_completed).includes(Todo::DEFAULT_INCLUDES) unless max_completed == 0
respond_to do |format| respond_to do |format|
format.html do format.html do
@page_title = t('todos.task_list_title') @page_title = t('todos.task_list_title')
# Set count badge to number of not-done, not hidden context items # Set count badge to number of not-done, not hidden context items
@count = current_user.todos.active.not_hidden.count(:all) @count = current_user.todos.active.not_hidden.count(:all)
@todos_without_project = @not_done_todos.select{|t|t.project.nil?} @todos_without_project = @not_done_todos.select { |t| t.project.nil? }
end end
format.m do format.m do
@page_title = t('todos.mobile_todos_page_title') @page_title = t('todos.mobile_todos_page_title')
@home = true @home = true
cookies[:mobile_url]= { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] }
determine_down_count determine_down_count
render :action => 'index'.freeze render :action => 'index'.freeze
end end
format.text do format.text do
# somehow passing Mime[:text] using content_type to render does not work # somehow passing Mime[:text] using content_type to render does not work
headers['Content-Type'.freeze]=Mime[:text].to_s headers['Content-Type'.freeze] = Mime[:text].to_s
render :content_type => Mime[:text] render :content_type => Mime[:text]
end end
format.xml do format.xml do
@xml_todos = params[:limit_to_active_todos] ? @not_done_todos : @todos @xml_todos = params[:limit_to_active_todos] ? @not_done_todos : @todos
render :xml => @xml_todos.to_xml( *[todo_xml_params[0].merge({:root => :todos})] ) render :xml => @xml_todos.to_xml(*[todo_xml_params[0].merge({ :root => :todos })])
end end
format.any(:rss, :atom) do format.any(:rss, :atom) do
@feed_title = 'Tracks Actions'.freeze @feed_title = 'Tracks Actions'.freeze
@ -71,16 +70,16 @@ class TodosController < ApplicationController
@projects = current_user.projects.active @projects = current_user.projects.active
@contexts = current_user.contexts @contexts = current_user.contexts
respond_to do |format| respond_to do |format|
format.m { format.m do
@new_mobile = true @new_mobile = true
@return_path=cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path @return_path = cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path
@mobile_from_context = current_user.contexts.find(params[:from_context]) if params[:from_context] @mobile_from_context = current_user.contexts.find(params[:from_context]) if params[:from_context]
@mobile_from_project = current_user.projects.find(params[:from_project]) if params[:from_project] @mobile_from_project = current_user.projects.find(params[:from_project]) if params[:from_project]
if params[:from_project] && !params[:from_context] if params[:from_project] && !params[:from_context]
# we have a project but not a context -> use the default context # we have a project but not a context -> use the default context
@mobile_from_context = @mobile_from_project.default_context @mobile_from_context = @mobile_from_project.default_context
end end
} end
end end
end end
@ -123,7 +122,7 @@ class TodosController < ApplicationController
redirect_to :action => "index" redirect_to :action => "index"
end end
format.m do format.m do
@return_path=cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path @return_path = cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path
if @saved if @saved
onsite_redirect_to @return_path onsite_redirect_to @return_path
else else
@ -155,7 +154,7 @@ class TodosController < ApplicationController
if @saved if @saved
head :created, :location => todo_url(@todo) head :created, :location => todo_url(@todo)
else else
render_failure @todo.errors.to_xml.html_safe, 409 render_failure @todo.errors.full_messages.to_xml(root: "errors", skip_types: true).html_safe, 409
end end
end end
end end
@ -175,8 +174,9 @@ class TodosController < ApplicationController
# first build all todos and check if they would validate on save # first build all todos and check if they would validate on save
params[:todo][:multiple_todos].split("\n").map do |line| params[:todo][:multiple_todos].split("\n").map do |line|
if line.present? #ignore blank lines # Ignore blank lines
@todo = current_user.todos.build({:description => line, :context_id => p.context_id, :project_id => p.project_id}) if line.present?
@todo = current_user.todos.build({ :description => line, :context_id => p.context_id, :project_id => p.project_id })
validates &&= @todo.valid? validates &&= @todo.valid?
@build_todos << @todo @build_todos << @todo
@ -246,12 +246,12 @@ class TodosController < ApplicationController
@tag_name = params['_tag_name'] @tag_name = params['_tag_name']
respond_to do |format| respond_to do |format|
format.js format.js
format.m { format.m do
@projects = current_user.projects.active @projects = current_user.projects.active
@contexts = current_user.contexts @contexts = current_user.contexts
@edit_mobile = true @edit_mobile = true
@return_path=cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path @return_path = cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path
} end
end end
end end
@ -259,7 +259,7 @@ class TodosController < ApplicationController
@todo = current_user.todos.find(params['id']) @todo = current_user.todos.find(params['id'])
respond_to do |format| respond_to do |format|
format.m { render :action => 'show' } format.m { render :action => 'show' }
format.xml { render :xml => @todo.to_xml( *[todo_xml_params[0].merge({:root => :todo})] ) } format.xml { render :xml => @todo.to_xml(*[todo_xml_params[0].merge({ :root => :todo })]) }
end end
end end
@ -340,7 +340,7 @@ class TodosController < ApplicationController
determine_down_count determine_down_count
determine_completed_count determine_completed_count
determine_deferred_tag_count(params['_tag_name']) if source_view_is(:tag) determine_deferred_tag_count(params['_tag_name']) if source_view_is(:tag)
@wants_redirect_after_complete = @todo.completed? && !@todo.project_id.nil? && current_user.prefs.show_project_on_todo_done && !source_view_is(:project) @wants_redirect_after_complete = @todo.completed? && !@todo.project_id.nil? && current_user.prefs.show_project_on_todo_done && !source_view_is(:project)
if source_view_is :calendar if source_view_is :calendar
@original_item_due_id = get_due_id_for_calendar(@original_item.due) @original_item_due_id = get_due_id_for_calendar(@original_item.due)
@old_due_empty = is_old_due_empty(@original_item_due_id) @old_due_empty = is_old_due_empty(@original_item_due_id)
@ -348,7 +348,7 @@ class TodosController < ApplicationController
end end
render render
end end
format.xml { render :xml => @todo.to_xml( *todo_xml_params ) } format.xml { render :xml => @todo.to_xml(*todo_xml_params) }
format.html do format.html do
if @saved if @saved
# TODO: I think this will work, but can't figure out how to test it # TODO: I think this will work, but can't figure out how to test it
@ -356,14 +356,14 @@ class TodosController < ApplicationController
redirect_to :action => "index" redirect_to :action => "index"
else else
notify(:notice, t("todos.action_marked_complete_error", :description => @todo.description, :completed => @todo.completed? ? 'complete' : 'incomplete'), "index") notify(:notice, t("todos.action_marked_complete_error", :description => @todo.description, :completed => @todo.completed? ? 'complete' : 'incomplete'), "index")
redirect_to :action => "index" redirect_to :action => "index"
end end
end end
format.m { format.m do
if @saved if @saved
if cookies[:mobile_url] if cookies[:mobile_url]
old_path = cookies[:mobile_url] old_path = cookies[:mobile_url]
cookies[:mobile_url] = {:value => nil, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => nil, :secure => SITE_CONFIG['secure_cookies'] }
notify(:notice, t("todos.action_marked_complete", :description => @todo.description, :completed => @todo.completed? ? 'complete' : 'incomplete')) notify(:notice, t("todos.action_marked_complete", :description => @todo.description, :completed => @todo.completed? ? 'complete' : 'incomplete'))
onsite_redirect_to old_path onsite_redirect_to old_path
else else
@ -373,7 +373,7 @@ class TodosController < ApplicationController
else else
render :action => "edit", :format => :m render :action => "edit", :format => :m
end end
} end
end end
end end
@ -383,19 +383,19 @@ class TodosController < ApplicationController
@saved = true # cannot determine error @saved = true # cannot determine error
respond_to do |format| respond_to do |format|
format.js format.js
format.xml { render :xml => @todo.to_xml( *todo_xml_params ) } format.xml { render :xml => @todo.to_xml(*todo_xml_params) }
format.html { redirect_to request.referrer} format.html { redirect_to request.referrer }
format.m { format.m do
if cookies[:mobile_url] if cookies[:mobile_url]
old_path = cookies[:mobile_url] old_path = cookies[:mobile_url]
cookies[:mobile_url] = {:value => nil, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => nil, :secure => SITE_CONFIG['secure_cookies'] }
notify(:notice, "Star toggled") notify(:notice, "Star toggled")
onsite_redirect_to old_path onsite_redirect_to old_path
else else
notify(:notice, "Star toggled") notify(:notice, "Star toggled")
onsite_redirect_to todos_path(:format => 'm') onsite_redirect_to todos_path(:format => 'm')
end end
} end
end end
end end
@ -414,7 +414,7 @@ class TodosController < ApplicationController
respond_to do |format| respond_to do |format|
format.js { render :action => :update } format.js { render :action => :update }
format.xml { render :xml => @todo.to_xml( *todo_xml_params ) } format.xml { render :xml => @todo.to_xml(*todo_xml_params) }
end end
end end
@ -438,7 +438,7 @@ class TodosController < ApplicationController
rescue ActiveRecord::RecordInvalid => exception rescue ActiveRecord::RecordInvalid => exception
record = exception.record record = exception.record
if record.is_a?(Dependency) if record.is_a?(Dependency)
record.errors.each { |key,value| @todo.errors[key] << value } record.errors.each { |key, value| @todo.errors.add(key, value) }
end end
@saved = false @saved = false
end end
@ -456,19 +456,19 @@ class TodosController < ApplicationController
end end
determine_changes_by_this_update determine_changes_by_this_update
determine_remaining_in_container_count( (@context_changed || @project_changed) ? @original_item : @todo) determine_remaining_in_container_count((@context_changed || @project_changed) ? @original_item : @todo)
determine_down_count determine_down_count
determine_deferred_tag_count(sanitize(params['_tag_name'])) if source_view_is(:tag) determine_deferred_tag_count(sanitize(params['_tag_name'])) if source_view_is(:tag)
@todo.touch_predecessors if @original_item.description != @todo.description @todo.touch_predecessors if @original_item.description != @todo.description
respond_to do |format| respond_to do |format|
format.js { format.js do
@status_message = @todo.deferred? ? t('todos.action_saved_to_tickler') : t('todos.action_saved') @status_message = @todo.deferred? ? t('todos.action_saved_to_tickler') : t('todos.action_saved')
@status_message = t('todos.added_new_project') + ' / ' + @status_message if @new_project_created @status_message = t('todos.added_new_project') + ' / ' + @status_message if @new_project_created
@status_message = t('todos.added_new_context') + ' / ' + @status_message if @new_context_created @status_message = t('todos.added_new_context') + ' / ' + @status_message if @new_context_created
} end
format.xml { render :xml => @todo.to_xml( *todo_xml_params ) } format.xml { render :xml => @todo.to_xml(*todo_xml_params) }
format.m do format.m do
if @saved if @saved
do_mobile_todo_redirection do_mobile_todo_redirection
@ -491,7 +491,8 @@ class TodosController < ApplicationController
def destroy def destroy
@source_view = params['_source_view'] || 'todo' @source_view = params['_source_view'] || 'todo'
@todo = current_user.todos.find(params['id']) @todo = current_user.todos.find(params['id'])
@original_item = current_user.todos.build(@todo.attributes) # create a (unsaved) copy of the original todo # Create a (unsaved) copy of the original todo
@original_item = current_user.todos.build(@todo.attributes)
@context_id = @todo.context_id @context_id = @todo.context_id
@project_id = @todo.project_id @project_id = @todo.project_id
@todo_was_destroyed = true @todo_was_destroyed = true
@ -519,7 +520,6 @@ class TodosController < ApplicationController
@new_recurring_todo = check_for_next_todo(@todo) if @saved @new_recurring_todo = check_for_next_todo(@todo) if @saved
respond_to do |format| respond_to do |format|
format.html do format.html do
if @saved if @saved
message = t('todos.action_deleted_success') message = t('todos.action_deleted_success')
@ -533,7 +533,6 @@ class TodosController < ApplicationController
redirect_to :action => 'index' redirect_to :action => 'index'
end end
end end
format.js do format.js do
if @saved if @saved
determine_down_count determine_down_count
@ -546,9 +545,7 @@ class TodosController < ApplicationController
end end
render render
end end
format.xml { render :body => '200 OK. Action deleted.', :status => 200 } format.xml { render :body => '200 OK. Action deleted.', :status => 200 }
end end
end end
@ -563,7 +560,7 @@ class TodosController < ApplicationController
format.html format.html
format.xml do format.xml do
completed_todos = current_user.todos.completed completed_todos = current_user.todos.completed
render :xml => completed_todos.to_xml( *[todo_xml_params[0].merge({:root => :todos})] ) render :xml => completed_todos.to_xml(*[todo_xml_params[0].merge({ :root => :todos })])
end end
end end
end end
@ -583,10 +580,10 @@ class TodosController < ApplicationController
@contexts_to_show = @contexts = current_user.contexts @contexts_to_show = @contexts = current_user.contexts
@projects_to_show = @projects = current_user.projects @projects_to_show = @projects = current_user.projects
includes = params[:format]=='xml' ? [:context, :project] : Todo::DEFAULT_INCLUDES includes = params[:format] == 'xml' ? [:context, :project] : Todo::DEFAULT_INCLUDES
@not_done_todos = current_user.todos.deferred.includes(includes).reorder('show_from') + current_user.todos.pending.includes(includes) @not_done_todos = current_user.todos.deferred.includes(includes).reorder('show_from') + current_user.todos.pending.includes(includes)
@todos_without_project = @not_done_todos.select{|t|t.project.nil?} @todos_without_project = @not_done_todos.select { |t| t.project.nil? }
@down_count = @count = @not_done_todos.size @down_count = @count = @not_done_todos.size
respond_to do |format| respond_to do |format|
@ -596,7 +593,7 @@ class TodosController < ApplicationController
init_data_for_sidebar unless mobile? init_data_for_sidebar unless mobile?
end end
format.m format.m
format.xml { render :xml => @not_done_todos.to_xml( *[todo_xml_params[0].merge({:root => :todos})] ) } format.xml { render :xml => @not_done_todos.to_xml(*[todo_xml_params[0].merge({ :root => :todos })]) }
end end
end end
@ -630,30 +627,30 @@ class TodosController < ApplicationController
todos_with_tag_ids = find_todos_with_tag_expr(@tag_expr) todos_with_tag_ids = find_todos_with_tag_expr(@tag_expr)
@not_done_todos = todos_with_tag_ids. @not_done_todos = todos_with_tag_ids
active.not_hidden. .active.not_hidden
reorder(Arel.sql('todos.due IS NULL, todos.due ASC, todos.created_at ASC')). .reorder(Arel.sql('todos.due IS NULL, todos.due ASC, todos.created_at ASC'))
includes(Todo::DEFAULT_INCLUDES) .includes(Todo::DEFAULT_INCLUDES)
@hidden_todos = todos_with_tag_ids. @hidden_todos = todos_with_tag_ids
hidden. .hidden
reorder(Arel.sql('todos.completed_at DESC, todos.created_at DESC')). .reorder(Arel.sql('todos.completed_at DESC, todos.created_at DESC'))
includes(Todo::DEFAULT_INCLUDES) .includes(Todo::DEFAULT_INCLUDES)
@deferred_todos = todos_with_tag_ids. @deferred_todos = todos_with_tag_ids
deferred. .deferred
reorder(Arel.sql('todos.show_from ASC, todos.created_at DESC')). .reorder(Arel.sql('todos.show_from ASC, todos.created_at DESC'))
includes(Todo::DEFAULT_INCLUDES) .includes(Todo::DEFAULT_INCLUDES)
@pending_todos = todos_with_tag_ids. @pending_todos = todos_with_tag_ids
blocked. .blocked
reorder(Arel.sql('todos.show_from ASC, todos.created_at DESC')). .reorder(Arel.sql('todos.show_from ASC, todos.created_at DESC'))
includes(Todo::DEFAULT_INCLUDES) .includes(Todo::DEFAULT_INCLUDES)
@todos_without_project = @not_done_todos.select{|t| t.project.nil?} @todos_without_project = @not_done_todos.select { |t| t.project.nil? }
# If you've set no_completed to zero, the completed items box isn't shown on # If you've set no_completed to zero, the completed items box isn't shown on
# the tag page # the tag page
@done = todos_with_tag_ids.completed. @done = todos_with_tag_ids.completed
limit(current_user.prefs.show_number_completed). .limit(current_user.prefs.show_number_completed)
reorder('todos.completed_at DESC'). .reorder('todos.completed_at DESC')
includes(Todo::DEFAULT_INCLUDES) .includes(Todo::DEFAULT_INCLUDES)
@projects = current_user.projects @projects = current_user.projects
@contexts = current_user.contexts @contexts = current_user.contexts
@ -669,12 +666,8 @@ class TodosController < ApplicationController
respond_to do |format| respond_to do |format|
format.html format.html
format.m { format.m { cookies[:mobile_url] = { :value => request.fullpath, :secure => SITE_CONFIG['secure_cookies'] } }
cookies[:mobile_url]= {:value => request.fullpath, :secure => SITE_CONFIG['secure_cookies']} format.text { render :action => 'index', :layout => false, :content_type => Mime[:text] }
}
format.text {
render :action => 'index', :layout => false, :content_type => Mime[:text]
}
end end
end end
@ -705,14 +698,13 @@ class TodosController < ApplicationController
@tag = Tag.where(:name => @tag_name).first_or_create @tag = Tag.where(:name => @tag_name).first_or_create
end end
def tags def tags
tags_beginning = current_user.tags.where(Tag.arel_table[:name].matches("#{params[:term]}%")) tags_beginning = current_user.tags.where(Tag.arel_table[:name].matches("#{params[:term]}%"))
tags_all = current_user.tags.where(Tag.arel_table[:name].matches("%#{params[:term]}%")) tags_all = current_user.tags.where(Tag.arel_table[:name].matches("%#{params[:term]}%"))
tags_all = tags_all - tags_beginning tags_all -= tags_beginning
respond_to do |format| respond_to do |format|
format.autocomplete { render :body => for_autocomplete(tags_beginning+tags_all, params[:term]) } format.autocomplete { render :body => for_autocomplete(tags_beginning + tags_all, params[:term]) }
end end
end end
@ -721,7 +713,8 @@ class TodosController < ApplicationController
numdays = params['days'].to_i numdays = params['days'].to_i
@todo = current_user.todos.find(params[:id]) @todo = current_user.todos.find(params[:id])
@original_item = current_user.todos.build(@todo.attributes) # create a (unsaved) copy of the original todo # Create a (unsaved) copy of the original todo
@original_item = current_user.todos.build(@todo.attributes)
@todo_deferred_state_changed = true @todo_deferred_state_changed = true
@new_context_created = false @new_context_created = false
@ -737,42 +730,38 @@ class TodosController < ApplicationController
determine_down_count determine_down_count
determine_remaining_in_container_count(@todo) determine_remaining_in_container_count(@todo)
source_view do |page| source_view do |page|
page.project { page.project do
@remaining_undone_in_project = current_user.projects.find(@todo.project_id).todos.not_completed.count @remaining_undone_in_project = current_user.projects.find(@todo.project_id).todos.not_completed.count
} end
page.tag { page.tag { determine_deferred_tag_count(params['_tag_name']) }
determine_deferred_tag_count(params['_tag_name'])
}
end end
respond_to do |format| respond_to do |format|
format.html { redirect_to :back } format.html { redirect_to :back }
format.js {render :action => 'update'} format.js { render :action => 'update' }
format.m { format.m do
notify(:notice, t("todos.action_deferred", :description => @todo.description)) notify(:notice, t("todos.action_deferred", :description => @todo.description))
do_mobile_todo_redirection do_mobile_todo_redirection
} end
end end
end end
def list_hidden def list_hidden
@hidden = current_user.todos.hidden @hidden = current_user.todos.hidden
respond_to do |format| respond_to do |format|
format.xml { format.xml { render :xml => @hidden.to_xml(*[todo_xml_params[0].merge({ :root => :todos })]) }
render :xml => @hidden.to_xml( *[todo_xml_params[0].merge({:root => :todos})] )
}
end end
end end
def get_not_completed_for_predecessor(relation, todo_id=nil) def get_not_completed_for_predecessor(relation, todo_id = nil)
items = relation.todos.not_completed. items = relation.todos.not_completed
where('(LOWER(todos.description) ' + Common.like_operator + '?)', "%#{params[:term].downcase}%") .where('(LOWER(todos.description) ' + Common.like_operator + '?)', "%#{params[:term].downcase}%")
items = items.where("AND NOT(todos.id=?)", todo_id) unless todo_id.nil? items = items.where("AND NOT(todos.id=?)", todo_id) unless todo_id.nil?
items. items
includes(:context, :project). .includes(:context, :project)
reorder('description ASC'). .reorder('description ASC')
limit(10) .limit(10)
end end
def auto_complete_for_predecessor def auto_complete_for_predecessor
@ -805,14 +794,10 @@ class TodosController < ApplicationController
def show_notes def show_notes
@todo = current_user.todos.find(params['id']) @todo = current_user.todos.find(params['id'])
@return_path=cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path @return_path = cookies[:mobile_url] ? cookies[:mobile_url] : mobile_path
respond_to do |format| respond_to do |format|
format.html { format.html { redirect_to home_path, "Viewing note of todo is not implemented" }
redirect_to home_path, "Viewing note of todo is not implemented" format.m { render :action => "show_notes" }
}
format.m {
render :action => "show_notes"
}
end end
end end
@ -839,7 +824,7 @@ class TodosController < ApplicationController
def do_mobile_todo_redirection def do_mobile_todo_redirection
if cookies[:mobile_url] if cookies[:mobile_url]
old_path = cookies[:mobile_url] old_path = cookies[:mobile_url]
cookies[:mobile_url] = {:value => nil, :secure => SITE_CONFIG['secure_cookies']} cookies[:mobile_url] = { :value => nil, :secure => SITE_CONFIG['secure_cookies'] }
onsite_redirect_to old_path onsite_redirect_to old_path
else else
onsite_redirect_to todos_path(:format => 'm') onsite_redirect_to todos_path(:format => 'm')
@ -857,7 +842,7 @@ class TodosController < ApplicationController
end end
def tag_title(tag_expr) def tag_title(tag_expr)
and_list = tag_expr.inject([]) { |s,tag_list| s << tag_list.join(',') } and_list = tag_expr.inject([]) { |s, tag_list| s << tag_list.join(',') }
return and_list.join(' AND ') return and_list.join(' AND ')
end end
@ -872,14 +857,16 @@ class TodosController < ApplicationController
# Additional tag condition(s) handled as AND. # Additional tag condition(s) handled as AND.
@tag_expr << params[:and].split(',') if params[:and] @tag_expr << params[:and].split(',') if params[:and]
i = 1 i = 1
while params['and'+i.to_s] while params['and' + i.to_s]
@tag_expr << params['and'+i.to_s].split(',') @tag_expr << params['and' + i.to_s].split(',')
i=i+1 i += 1
end end
@single_tag = @tag_expr.size == 1 && @tag_expr[0].size == 1 @single_tag = @tag_expr.size == 1 && @tag_expr[0].size == 1
@tag_name = @tag_expr[0][0]
@tag_title = @single_tag ? @tag_name : tag_title(@tag_expr) # These are used in the templates, sanitise to prevent XSS.
@tag_name = sanitize(@tag_expr[0][0])
@tag_title = sanitize(@single_tag ? @tag_name : tag_title(@tag_expr))
end end
def filter_format_for_tag_view def filter_format_for_tag_view
@ -919,9 +906,9 @@ end
end end
def find_todos_with_tag_expr(tag_expr) def find_todos_with_tag_expr(tag_expr)
# optimize for the common case: selecting only one tag # Optimize for the common case of selecting only one tag
if @single_tag if @single_tag
tag = Tag.where(:name => @tag_name).first tag = current_user.tags.where(:name => @tag_name).first
tag_id = tag.nil? ? -1 : tag.id tag_id = tag.nil? ? -1 : tag.id
return current_user.todos.with_tag(tag_id) return current_user.todos.with_tag(tag_id)
end end
@ -992,17 +979,17 @@ end
def determine_remaining_in_container_count(todo = @todo) def determine_remaining_in_container_count(todo = @todo)
source_view do |from| source_view do |from|
from.deferred { from.deferred do
todos_in_container, todos_in_target_container = find_todos_in_container_and_target_container(todo, @todo) todos_in_container, todos_in_target_container = find_todos_in_container_and_target_container(todo, @todo)
@remaining_in_context = todos_in_container.deferred_or_blocked.count @remaining_in_context = todos_in_container.deferred_or_blocked.count
@target_context_count = todos_in_target_container.deferred_or_blocked.count @target_context_count = todos_in_target_container.deferred_or_blocked.count
} end
from.todo { from.todo do
todos_in_container, todos_in_target_container = find_todos_in_container_and_target_container(todo, @todo) todos_in_container, todos_in_target_container = find_todos_in_container_and_target_container(todo, @todo)
@remaining_in_context = todos_in_container.active.not_hidden.count @remaining_in_context = todos_in_container.active.not_hidden.count
@target_context_count = todos_in_target_container.active.not_hidden.count @target_context_count = todos_in_target_container.active.not_hidden.count
} end
from.tag { from.tag do
tag = Tag.where(:name => params['_tag_name']).first tag = Tag.where(:name => params['_tag_name']).first
tag = Tag.new(:name => params['tag']) if tag.nil? tag = Tag.new(:name => params['tag']) if tag.nil?
@ -1012,8 +999,8 @@ end
@target_context_count = todos_in_target_container.active.not_hidden.with_tag(tag.id).count @target_context_count = todos_in_target_container.active.not_hidden.with_tag(tag.id).count
@remaining_hidden_count = current_user.todos.hidden.with_tag(tag.id).count @remaining_hidden_count = current_user.todos.hidden.with_tag(tag.id).count
@remaining_deferred_or_pending_count = current_user.todos.with_tag(tag.id).deferred_or_blocked.count @remaining_deferred_or_pending_count = current_user.todos.with_tag(tag.id).deferred_or_blocked.count
} end
from.project { from.project do
project_id = @project_changed ? @original_item.project_id : @todo.project_id project_id = @project_changed ? @original_item.project_id : @todo.project_id
@remaining_deferred_or_pending_count = current_user.projects.find(project_id).todos.deferred_or_blocked.count @remaining_deferred_or_pending_count = current_user.projects.find(project_id).todos.deferred_or_blocked.count
@ -1024,11 +1011,11 @@ end
end end
@target_context_count = current_user.projects.find(project_id).todos.active.count @target_context_count = current_user.projects.find(project_id).todos.active.count
} end
from.calendar { from.calendar do
@target_context_count = @new_due_id.blank? ? 0 : count_old_due_empty(@new_due_id) @target_context_count = @new_due_id.blank? ? 0 : count_old_due_empty(@new_due_id)
} end
from.context { from.context do
context = current_user.contexts.find(todo.context_id) context = current_user.contexts.find(todo.context_id)
@remaining_deferred_or_pending_count = context.todos.deferred_or_blocked.count @remaining_deferred_or_pending_count = context.todos.deferred_or_blocked.count
@ -1043,13 +1030,11 @@ end
actions_in_target = @todo.context.todos.deferred_or_blocked actions_in_target = @todo.context.todos.deferred_or_blocked
end end
@target_context_count = actions_in_target.count @target_context_count = actions_in_target.count
} end
from.done { from.done do
@remaining_in_context = DoneTodos.remaining_in_container(current_user.todos, @original_completed_period) @remaining_in_context = DoneTodos.remaining_in_container(current_user.todos, @original_completed_period)
} end
from.all_done { from.all_done { @remaining_in_context = current_user.todos.completed.count }
@remaining_in_context = current_user.todos.completed.count
}
end end
end end
@ -1060,7 +1045,7 @@ end
end end
def determine_completed_count def determine_completed_count
todos=nil todos = nil
source_view do |from| source_view do |from|
from.todo { todos = current_user.todos.not_hidden.completed } from.todo { todos = current_user.todos.not_hidden.completed }
@ -1096,7 +1081,6 @@ end
date_to_check ||= Time.zone.now date_to_check ||= Time.zone.now
if recurring_todo.active? && recurring_todo.continues_recurring?(date_to_check) if recurring_todo.active? && recurring_todo.continues_recurring?(date_to_check)
# shift the reference date to yesterday if date_to_check is furher in # shift the reference date to yesterday if date_to_check is furher in
# the past. This is to make sure we do not get older todos for overdue # the past. This is to make sure we do not get older todos for overdue
# todos. I.e. checking a daily todo that is overdue with 5 days will # todos. I.e. checking a daily todo that is overdue with 5 days will
@ -1104,7 +1088,7 @@ end
# date. Discard the time part in the compare. We pick yesterday so # date. Discard the time part in the compare. We pick yesterday so
# that new todos due for today will be created instead of new todos # that new todos due for today will be created instead of new todos
# for tomorrow. # for tomorrow.
date = date_to_check.at_midnight >= Time.zone.now.at_midnight ? date_to_check : Time.zone.now-1.day date = date_to_check.at_midnight >= Time.zone.now.at_midnight ? date_to_check : Time.zone.now - 1.day
new_recurring_todo = TodoFromRecurringTodo.new(current_user, recurring_todo).create(date) new_recurring_todo = TodoFromRecurringTodo.new(current_user, recurring_todo).create(date)
end end
@ -1138,18 +1122,19 @@ end
end end
def count_old_due_empty(id) def count_old_due_empty(id)
due_today_date = Time.zone.now
due_this_week_date = Time.zone.now.end_of_week
due_next_week_date = due_this_week_date + 7.days
due_this_month_date = Time.zone.now.end_of_month
case id case id
when "due_today" when "due_today"
due_today_date = Time.zone.now
return current_user.todos.not_completed.where('todos.due <= ?', due_today_date).count return current_user.todos.not_completed.where('todos.due <= ?', due_today_date).count
when "due_this_week" when "due_this_week"
due_this_week_date = Time.zone.now.end_of_week
return current_user.todos.not_completed.where('todos.due > ? AND todos.due <= ?', due_today_date, due_this_week_date).count return current_user.todos.not_completed.where('todos.due > ? AND todos.due <= ?', due_today_date, due_this_week_date).count
when "due_next_week" when "due_next_week"
due_next_week_date = due_this_week_date + 7.days
return current_user.todos.not_completed.where('todos.due > ? AND todos.due <= ?', due_this_week_date, due_next_week_date).count return current_user.todos.not_completed.where('todos.due > ? AND todos.due <= ?', due_this_week_date, due_next_week_date).count
when "due_this_month" when "due_this_month"
due_this_month_date = Time.zone.now.end_of_month
return current_user.todos.not_completed.where('todos.due > ? AND todos.due <= ?', due_next_week_date, due_this_month_date).count return current_user.todos.not_completed.where('todos.due > ? AND todos.due <= ?', due_next_week_date, due_this_month_date).count
when "due_after_this_month" when "due_after_this_month"
return current_user.todos.not_completed.where('todos.due > ?', due_this_month_date).count return current_user.todos.not_completed.where('todos.due > ?', due_this_month_date).count
@ -1179,7 +1164,6 @@ end
end end
end end
def update_context def update_context
@context_changed = false @context_changed = false
if params['todo']['context_id'].blank? && params['context_name'].present? if params['todo']['context_id'].blank? && params['context_name'].present?
@ -1201,7 +1185,8 @@ end
def update_tags def update_tags
if params[:tag_list] if params[:tag_list]
@todo.tag_with(params[:tag_list]) @todo.tag_with(params[:tag_list])
@todo.tags.reload #force a reload for proper rendering # Force a reload for proper rendering
@todo.tags.reload
end end
end end
@ -1209,16 +1194,16 @@ end
begin begin
parse_date_per_user_prefs(date) parse_date_per_user_prefs(date)
rescue rescue
@todo.errors[:base] << error_msg @todo.errors.add(:base, error_msg)
end end
end end
def update_date_for_update(key) def update_date_for_update(key)
params['todo'][key] = params["todo"].has_key?(key) ? parse_date_for_update(params["todo"][key], t("todos.error.invalid_#{key}_date")) : "" params['todo'][key] = params["todo"].key?(key) ? parse_date_for_update(params["todo"][key], t("todos.error.invalid_#{key}_date")) : ""
end end
def update_due_and_show_from_dates def update_due_and_show_from_dates
%w{ due show_from }.each {|date| update_date_for_update(date) } %w{ due show_from }.each { |date| update_date_for_update(date) }
end end
def update_completed_state def update_completed_state
@ -1242,7 +1227,7 @@ end
# assumes @todo.save was called so that the predecessor_list is persistent # assumes @todo.save was called so that the predecessor_list is persistent
original_item_predecessor_list = original_item_predecessor_list =
@original_item.predecessors @original_item.predecessors
.map{ |t| t.specification } .map { |t| t.specification }
.join(', ') .join(', ')
if original_item_predecessor_list != params[:predecessor_list] if original_item_predecessor_list != params[:predecessor_list]
@ -1290,22 +1275,22 @@ end
end end
# all completed todos [today@00:00, today@now] # all completed todos [today@00:00, today@now]
def get_done_today(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) def get_done_today(completed_todos, includes = { :include => Todo::DEFAULT_INCLUDES })
start_of_this_day = Time.zone.now.beginning_of_day start_of_this_day = Time.zone.now.beginning_of_day
completed_todos.completed_after(start_of_this_day).includes(includes[:include]) completed_todos.completed_after(start_of_this_day).includes(includes[:include])
end end
def get_done_in_period(completed_todos, before, after, includes = {:include => Todo::DEFAULT_INCLUDES}) def get_done_in_period(completed_todos, before, after, includes = { :include => Todo::DEFAULT_INCLUDES })
completed_todos.completed_before(before).completed_after(after).includes(includes[:include]) completed_todos.completed_before(before).completed_after(after).includes(includes[:include])
end end
# all completed todos [begin_of_week, start_of_today] # all completed todos [begin_of_week, start_of_today]
def get_done_rest_of_week(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) def get_done_rest_of_week(completed_todos, includes = { :include => Todo::DEFAULT_INCLUDES })
get_done_in_period(completed_todos, Time.zone.now.beginning_of_day, Time.zone.now.beginning_of_week) get_done_in_period(completed_todos, Time.zone.now.beginning_of_day, Time.zone.now.beginning_of_week)
end end
# all completed todos [begin_of_month, begin_of_week] # all completed todos [begin_of_month, begin_of_week]
def get_done_rest_of_month(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) def get_done_rest_of_month(completed_todos, includes = { :include => Todo::DEFAULT_INCLUDES })
get_done_in_period(completed_todos, Time.zone.now.beginning_of_week, Time.zone.now.beginning_of_month) get_done_in_period(completed_todos, Time.zone.now.beginning_of_week, Time.zone.now.beginning_of_month)
end end
@ -1322,5 +1307,4 @@ end
redirect_to(uri.path) redirect_to(uri.path)
end end
end end
end end

View file

@ -1,24 +1,27 @@
class UsersController < ApplicationController class UsersController < ApplicationController
before_action :admin_login_required, :only => [:index, :show]
before_action :admin_login_required, :only => [ :index, :show ] before_action :admin_or_self_login_required, :only => [:destroy]
before_action :admin_or_self_login_required, :only => [ :destroy ] skip_before_action :login_required, :only => [:new, :create]
skip_before_action :login_required, :only => [ :new, :create ] prepend_before_action :login_optional, :only => [:new, :create]
prepend_before_action :login_optional, :only => [ :new, :create ]
# GET /users GET /users.xml # GET /users GET /users.xml
def index def index
respond_to do |format| respond_to do |format|
order_by = 'login'
if params[:order] && User.column_names.include?(params[:order])
order_by = params[:order]
end
format.html do format.html do
@page_title = "TRACKS::Manage Users" @page_title = t('users.manage_users_title')
@users = User.order('login ASC').paginate :page => params[:page] @users = User.order(order_by + ' ASC').paginate :page => params[:page]
@total_users = User.count @total_users = User.count
# When we call users/signup from the admin page we store the URL so that # When we call users/signup from the admin page we store the URL so that
# we get returned here when signup is successful # we get returned here when signup is successful
store_location store_location
end end
format.xml do format.xml do
@users = User.order('login') @users = User.order(order_by)
render :xml => @users.to_xml(:root => :users, :except => [ :password ]) render :xml => @users.to_xml(:root => :users, :except => [:password])
end end
end end
end end
@ -26,16 +29,16 @@ class UsersController < ApplicationController
# GET /users/id GET /users/id.xml # GET /users/id GET /users/id.xml
def show def show
@user = User.find(params[:id]) @user = User.find(params[:id])
render :xml => @user.to_xml(:root => :user, :except => [ :password ]) render :xml => @user.to_xml(:root => :user, :except => [:password])
end end
# GET /users/new # GET /users/new
def new def new
@auth_types = [] @auth_types = []
unless session[:cas_user] unless session[:cas_user]
Tracks::Config.auth_schemes.each {|auth| @auth_types << [auth,auth]} Tracks::Config.auth_schemes.each { |auth| @auth_types << [auth, auth] }
else else
@auth_types << ['cas','cas'] @auth_types << ['cas', 'cas']
end end
if User.no_users_yet? if User.no_users_yet?
@ -78,23 +81,25 @@ class UsersController < ApplicationController
end end
unless params['approve_tos'] == 'on' || SITE_CONFIG['tos_link'].blank? unless params['approve_tos'] == 'on' || SITE_CONFIG['tos_link'].blank?
render_failure "You have to accept the terms of service to sign up!" notify :error, t('users.tos_error')
redirect_to signup_path
return return
end end
user = User.new(user_params) user = User.new(user_params)
unless user.valid? unless user.valid?
notify :error, t('users.create_error')
redirect_to signup_path redirect_to signup_path
return return
end end
signup_by_admin = true if (@user && @user.is_admin?) signup_by_admin = true if @user && @user.is_admin?
first_user_signing_up = User.no_users_yet? first_user_signing_up = User.no_users_yet?
user.is_admin = true if first_user_signing_up user.is_admin = true if first_user_signing_up
if user.save if user.save
@user = User.authenticate(user.login, params['user']['password']) @user = User.authenticate(user.login, params['user']['password'])
@user.create_preference({:locale => I18n.locale}) @user.create_preference(:locale => I18n.locale)
@user.save @user.save
session['user_id'] = @user.id unless signup_by_admin session['user_id'] = @user.id unless signup_by_admin
notify :notice, t('users.signup_successful', :username => @user.login) notify :notice, t('users.signup_successful', :username => @user.login)
@ -122,7 +127,7 @@ class UsersController < ApplicationController
unless user.new_record? unless user.new_record?
render :body => t('users.user_created'), :status => 200 render :body => t('users.user_created'), :status => 200
else else
render_failure user.errors.to_xml, 409 render_failure user.errors.full_messages.to_xml(root: "errors", skip_types: true), 409
end end
return return
end end
@ -216,12 +221,11 @@ class UsersController < ApplicationController
end end
def check_create_user_params def check_create_user_params
return false unless params.has_key?(:user) return false unless params.key?(:user)
return false unless params[:user].has_key?(:login) return false unless params[:user].key?(:login)
return false if params[:user][:login].empty? return false if params[:user][:login].empty?
return false unless params[:user].has_key?(:password) return false unless params[:user].key?(:password)
return false if params[:user][:password].empty? return false if params[:user][:password].empty?
return true return true
end end
end end

View file

@ -10,7 +10,7 @@ module ApplicationHelper
link_to( link_to(
t("layouts.navigation.group_view_by_#{menu_name}"), t("layouts.navigation.group_view_by_#{menu_name}"),
'#', '#',
{:id => "group_view_by_link", :accesskey => "g", :title => t('layouts.navigation.group_view_by_title'), :x_current_group_by => @group_view_by} ) { :id => "group_view_by_link", :accesskey => "g", :title => t('layouts.navigation.group_view_by_title'), :x_current_group_by => @group_view_by })
end end
end end
@ -18,7 +18,7 @@ module ApplicationHelper
link_to( link_to(
image_tag("blank.png", :alt => t('common.collapse_expand')), image_tag("blank.png", :alt => t('common.collapse_expand')),
"#", "#",
{:class => "container_toggle", :id => id} ) { :class => "container_toggle", :id => id })
end end
# Check due date in comparison to today's date Flag up date appropriately with # Check due date in comparison to today's date Flag up date appropriately with
@ -44,7 +44,7 @@ module ApplicationHelper
end end
def count_undone_todos_phrase_text(todos_parent) def count_undone_todos_phrase_text(todos_parent)
count_undone_todos_phrase(todos_parent).gsub("&nbsp;"," ").html_safe count_undone_todos_phrase(todos_parent).gsub("&nbsp;", " ").html_safe
end end
def count_undone_todos_and_notes_phrase(project) def count_undone_todos_and_notes_phrase(project)
@ -54,28 +54,31 @@ module ApplicationHelper
end end
def link_to_context(context, descriptor = sanitize(context.name)) def link_to_context(context, descriptor = sanitize(context.name))
link_to( descriptor, context, :title => "View context: #{context.name}" ) link_to(descriptor, context, :title => I18n.t("contexts.view_link", :name => context.name))
end end
def link_to_project(project, descriptor = sanitize(project.name)) def link_to_project(project, descriptor = sanitize(project.name))
link_to( descriptor, project, :title => "View project: #{project.name}" ) link_to(descriptor, project, :title => I18n.t("projects.view_link", :name => project.name))
end end
def link_to_edit_note (note, descriptor = sanitize(note.id.to_s)) def link_to_edit_note(note, descriptor = sanitize(note.id.to_s))
link_to(descriptor, edit_note_path(note), link_to(descriptor, edit_note_path(note),
{:id => "link_edit_#{dom_id(note)}", :class => "note_edit_settings"}) :id => "link_edit_#{dom_id(note)}", :class => "note_edit_settings")
end end
def link_to_project_mobile(project, accesskey, descriptor = sanitize(project.name)) def link_to_project_mobile(project, accesskey, descriptor = sanitize(project.name))
link_to( descriptor, project_path(project, :format => 'm'), {:title => "View project: #{project.name}", :accesskey => accesskey} ) link_to(descriptor, project_path(project, :format => 'm'),
:title => I18n.t("projects.view_link", :name => project.name), :accesskey => accesskey)
end end
def item_link_to_context(item) def item_link_to_context(item)
link_to_context( item.context, prefs.verbose_action_descriptors ? "[#{item.context.name}]" : "[C]" ) link_to_context(item.context,
prefs.verbose_action_descriptors ? "[#{item.context.name}]" : "[" + I18n.t("contexts.letter_abbreviation") + "]")
end end
def item_link_to_project(item) def item_link_to_project(item)
link_to_project( item.project, prefs.verbose_action_descriptors ? "[#{item.project.name}]" : "[P]" ) link_to_project(item.project,
prefs.verbose_action_descriptors ? "[#{item.project.name}]" : "[" + I18n.t("projects.letter_abbreviation") + "]")
end end
def render_flash def render_flash
@ -113,7 +116,7 @@ module ApplicationHelper
recurring_target + recurrence_pattern + recurrence_time_span recurring_target + recurrence_pattern + recurrence_time_span
end end
def date_format_for_date_picker() def date_format_for_date_picker
[ [
['%m', 'mm'], ['%m', 'mm'],
['%b', 'M'], ['%b', 'M'],
@ -126,16 +129,16 @@ module ApplicationHelper
].inject(current_user.prefs.date_format) { |str, translation| str.gsub(*translation) } ].inject(current_user.prefs.date_format) { |str, translation| str.gsub(*translation) }
end end
def sidebar_html_for_titled_list (list, title) def sidebar_html_for_titled_list(list, title)
return content_tag(:h3, title+" (#{list.size})") + content_tag(:ul, sidebar_html_for_list(list)) return content_tag(:h3, title + " (#{list.size})") + content_tag(:ul, sidebar_html_for_list(list))
end end
def link_to_sidebar_item(item) def link_to_sidebar_item(item)
item.is_a?(Project) ? link_to_project( item ) : link_to_context( item ) item.is_a?(Project) ? link_to_project(item) : link_to_context(item)
end end
def sidebar_html_for_item(item) def sidebar_html_for_item(item)
content_tag(:li, link_to_sidebar_item(item) + " (" + count_undone_todos_phrase(item)+")") content_tag(:li, link_to_sidebar_item(item) + " (" + count_undone_todos_phrase(item) + ")")
end end
def sidebar_html_for_list(list) def sidebar_html_for_list(list)
@ -159,7 +162,7 @@ module ApplicationHelper
common.update common.create common.update common.create
common.ajaxError todos.unresolved_dependency common.ajaxError todos.unresolved_dependency
}.each do |s| }.each do |s|
js << "i18n['#{s}'] = '#{ t(s).gsub(/'/, "\\\\'") }';\n" js << "i18n['#{s}'] = '#{t(s).gsub(/'/, "\\\\'")}';\n"
end end
return js.html_safe return js.html_safe
end end
@ -167,20 +170,18 @@ module ApplicationHelper
def javascript_tag_for_i18n_datepicker def javascript_tag_for_i18n_datepicker
locale = I18n.locale locale = I18n.locale
# do not include en as locale since this the available by default # do not include en as locale since this the available by default
if locale && locale != :en javascript_include_tag("datepicker-#{locale}") if locale && locale != :en
javascript_include_tag("jquery-ui/datepicker-#{locale}")
end
end end
def done_path(controller_name, type) def done_path(controller_name, type)
case controller_name case controller_name
when "contexts" when "contexts"
send("#{type}_todos_context_path",@context) send("#{type}_todos_context_path", @context)
when "projects" when "projects"
send("#{type}_todos_project_path", @project) send("#{type}_todos_project_path", @project)
when "todos" when "todos"
if @tag_name if @tag_name
send("#{type}_tag_path",@tag_name) send("#{type}_tag_path", @tag_name)
else else
send("#{type}_todos_path") send("#{type}_todos_path")
end end
@ -199,7 +200,7 @@ module ApplicationHelper
def get_list_of_error_messages_for(model) def get_list_of_error_messages_for(model)
if model.errors.any? if model.errors.any?
content_tag(:div, {:id=>"errorExplanation"}) do content_tag(:div, { :id => "errorExplanation" }) do
content_tag(:ul) do content_tag(:ul) do
model.errors.full_messages.collect { |msg| concat(content_tag(:li, msg)) } model.errors.full_messages.collect { |msg| concat(content_tag(:li, msg)) }
end end
@ -208,9 +209,7 @@ module ApplicationHelper
end end
def link_to_delete(type, object, descriptor = sanitize(object.name)) def link_to_delete(type, object, descriptor = sanitize(object.name))
link_to( link_to(descriptor, self.send("#{type}_path", object, :format => 'js'),
descriptor,
self.send("#{type}_path", object, :format => 'js'),
{ {
:id => "delete_#{type}_#{object.id}", :id => "delete_#{type}_#{object.id}",
:class => "delete_#{type}_button icon", :class => "delete_#{type}_button icon",
@ -221,7 +220,7 @@ module ApplicationHelper
end end
def link_to_edit(type, object, descriptor) def link_to_edit(type, object, descriptor)
link_to(descriptor, self.send("edit_#{type}_path", object), link_to(descriptor, send("edit_#{type}_path", object),
{ {
:id => "link_edit_#{dom_id(object)}", :id => "link_edit_#{dom_id(object)}",
:class => "#{type}_edit_settings icon" :class => "#{type}_edit_settings icon"
@ -230,7 +229,7 @@ module ApplicationHelper
def source_view_key def source_view_key
# uses @project.id or @context.id depending on source_view # uses @project.id or @context.id depending on source_view
source_view_is_one_of(:project, :context) ? "#{@source_view}-#{eval("@#{@source_view}.id")}" : @source_view source_view_is_one_of(:project, :context) ? "#{@source_view}-#{eval("@#{@source_view}.id", binding, __FILE__, __LINE__)}" : @source_view
end end
# create a unique object name which can be used in ajax calls returning js # create a unique object name which can be used in ajax calls returning js
@ -239,7 +238,7 @@ module ApplicationHelper
"#{name}_#{SecureRandom.hex(5)}" "#{name}_#{SecureRandom.hex(5)}"
end end
def js_render(partial, locals = {}, object=nil) def js_render(partial, locals = {}, object = nil)
if object if object
escape_javascript(render(partial: partial, locals: locals, object: object)) escape_javascript(render(partial: partial, locals: locals, object: object))
else else
@ -250,5 +249,4 @@ module ApplicationHelper
def js_error_messages_for(object) def js_error_messages_for(object)
escape_javascript(get_list_of_error_messages_for(object)) escape_javascript(get_list_of_error_messages_for(object))
end end
end end

View file

@ -5,9 +5,9 @@ module BootstrapFlashHelper
:error => :danger, :error => :danger,
:info => :info, :info => :info,
:warning => :warning :warning => :warning
} unless const_defined?(:ALERT_MAPPING) }.freeze unless const_defined?(:ALERT_MAPPING)
def bootstrap_flash(options = {:close_button => true}) def bootstrap_flash(options = { :close_button => true })
flash_messages = [] flash_messages = []
flash.each do |type, message| flash.each do |type, message|
# Skip empty messages, e.g. for devise messages set to nothing in a locale file. # Skip empty messages, e.g. for devise messages set to nothing in a locale file.
@ -15,7 +15,6 @@ module BootstrapFlashHelper
type = type.to_sym type = type.to_sym
next unless ALERT_MAPPING.keys.include?(type) next unless ALERT_MAPPING.keys.include?(type)
tag_class = options.extract!(:class)[:class] tag_class = options.extract!(:class)[:class]
tag_options = { tag_options = {
class: "alert fade in alert-#{ALERT_MAPPING[type]} #{tag_class}" class: "alert fade in alert-#{ALERT_MAPPING[type]} #{tag_class}"

View file

@ -1,10 +1,9 @@
module ContextsHelper module ContextsHelper
def show_context_name(context) def show_context_name(context)
if source_view_is :context if source_view_is :context
content_tag(:span, :id => "context_name"){context.name} content_tag(:span, :id => "context_name"){ context.name }
else else
link_to_context( context ) link_to_context(context)
end end
end end
@ -12,12 +11,11 @@ module ContextsHelper
link_to_delete(:context, context, descriptor) link_to_delete(:context, context, descriptor)
end end
def link_to_edit_context (context, descriptor = sanitize(context.name)) def link_to_edit_context(context, descriptor = sanitize(context.name))
link_to_edit(:context, context, descriptor) link_to_edit(:context, context, descriptor)
end end
def context_summary(context, undone_todo_count) def context_summary(context, undone_todo_count)
content_tag(:p, "#{undone_todo_count}. Context is #{context.hidden? ? 'Hidden' : 'Active'}.".html_safe) content_tag(:p, "#{undone_todo_count}. Context is #{context.hidden? ? 'Hidden' : 'Active'}.".html_safe)
end end
end end

View file

@ -1,5 +1,4 @@
module DateLabelHelper module DateLabelHelper
class GenericDateView class GenericDateView
include ActionView::Context include ActionView::Context
include ActionView::Helpers include ActionView::Helpers
@ -11,7 +10,7 @@ module DateLabelHelper
:tomorrow => :amber, :tomorrow => :amber,
:this_week => :orange, :this_week => :orange,
:more_than_a_week => :green :more_than_a_week => :green
} }.freeze
def initialize(date, prefs) def initialize(date, prefs)
@date = date @date = date
@ -52,25 +51,19 @@ module DateLabelHelper
def date_html_wrapper def date_html_wrapper
return "" if @date.nil? return "" if @date.nil?
return content_tag(:a, {:title => @prefs.format_date(@date)}) { return content_tag(:a, { :title => @prefs.format_date(@date) }) {
content_tag(:span, {:class => get_color}) { content_tag(:span, { :class => get_color }) { yield }
yield
}
} }
end end
def date_mobile_html_wrapper def date_mobile_html_wrapper
return "" if @date.nil? return "" if @date.nil?
return content_tag(:span, {:class => get_color}) { return content_tag(:span, { :class => get_color }) { yield }
yield
}
end end
end end
class DueDateView < GenericDateView class DueDateView < GenericDateView
def due_text def due_text
case @days_sym case @days_sym
when :overdue_by_one when :overdue_by_one
@ -100,11 +93,9 @@ module DateLabelHelper
def due_date_mobile_html def due_date_mobile_html
date_mobile_html_wrapper { @prefs.format_date(@due) } date_mobile_html_wrapper { @prefs.format_date(@due) }
end end
end end
class ShowFromDateView < GenericDateView class ShowFromDateView < GenericDateView
def show_from_text def show_from_text
case @days_sym case @days_sym
when :overdue_by_more_than_one, :overdue_by_one when :overdue_by_more_than_one, :overdue_by_one
@ -127,7 +118,5 @@ module DateLabelHelper
def show_from_date_html def show_from_date_html
date_html_wrapper { show_from_text } date_html_wrapper { show_from_text }
end end
end end
end end

View file

@ -1,7 +1,6 @@
module FeedlistHelper module FeedlistHelper
def linkoptions(format, options) def linkoptions(format, options)
merge_hashes( {:format => format}, options, user_token_hash) merge_hashes({ :format => format }, options, user_token_hash)
end end
def rss_formatted_link(options = {}) def rss_formatted_link(options = {})
@ -10,25 +9,25 @@ module FeedlistHelper
end end
def text_formatted_link(options = {}) def text_formatted_link(options = {})
link_to(content_tag(:span, 'TXT', {:class => 'feed', :title => "Plain text feed"}), linkoptions('txt', options)) link_to(content_tag(:span, 'TXT', { :class => 'feed', :title => "Plain text feed" }), linkoptions('txt', options))
end end
def ical_formatted_link(options = {}) def ical_formatted_link(options = {})
link_to(content_tag(:span, 'iCal', {:class=>"feed", :title => "iCal feed"}), linkoptions('ics', options)) link_to(content_tag(:span, 'iCal', { :class => "feed", :title => "iCal feed" }), linkoptions('ics', options))
end end
def feed_links(feeds, link_options, title) def feed_links(feeds, link_options, title)
space = " " space = " "
html = "" html = ""
html << rss_formatted_link(link_options) +space if feeds.include?(:rss) html << rss_formatted_link(link_options) + space if feeds.include?(:rss)
html << text_formatted_link(link_options)+space if feeds.include?(:txt) html << text_formatted_link(link_options) + space if feeds.include?(:txt)
html << ical_formatted_link(link_options)+space if feeds.include?(:ical) html << ical_formatted_link(link_options) + space if feeds.include?(:ical)
html << title html << title
return html.html_safe return html.html_safe
end end
def all_feed_links(object, symbol) def all_feed_links(object, symbol)
feed_links([:rss, :txt, :ical], { :controller=> 'todos', :action => 'index', symbol => object.to_param }, content_tag(:strong, object.name)) feed_links([:rss, :txt, :ical], { :controller => 'todos', :action => 'index', symbol => object.to_param }, content_tag(:strong, object.name))
end end
def all_feed_links_for_project(project) def all_feed_links_for_project(project)
@ -42,12 +41,10 @@ module FeedlistHelper
protected protected
def merge_hashes(*hashes) def merge_hashes(*hashes)
hashes.inject(Hash.new){ |result, h| result.merge(h) } hashes.inject({}) { |result, h| result.merge(h) }
end end
def user_token_hash def user_token_hash
{ :token => current_user.token } { :token => current_user.token }
end end
end end

View file

@ -1,3 +1,2 @@
module LoginHelper module LoginHelper
end end

View file

@ -11,9 +11,8 @@ module NotesHelper
link_to( link_to(
descriptor, descriptor,
note_path(note, :format => 'js'), note_path(note, :format => 'js'),
{:id => "delete_note_#{note.id}", :class => "delete_note_button", { :id => "delete_note_#{note.id}", :class => "delete_note_button",
:title => t('notes.delete_note_title', :id => note.id), :x_confirm_message => t('notes.delete_note_confirm', :id => note.id)} :title => t('notes.delete_note_title', :id => note.id), :x_confirm_message => t('notes.delete_note_confirm', :id => note.id) }
) )
end end
end end

View file

@ -1,5 +1,4 @@
module PreferencesHelper module PreferencesHelper
def pref(model, pref_name, &block) def pref(model, pref_name, &block)
s = content_tag(:label, Preference.human_attribute_name(pref_name), :for => model + "_" + pref_name) s = content_tag(:label, Preference.human_attribute_name(pref_name), :for => model + "_" + pref_name)
s << yield s << yield
@ -10,7 +9,7 @@ module PreferencesHelper
pref(model, pref_name) { check_box(model, pref_name, class: "form-control") } pref(model, pref_name) { check_box(model, pref_name, class: "form-control") }
end end
def pref_with_select_field(model, pref_name, collection = [ [t('preferences.is_true'),true], [t('preferences.is_false'), false] ]) def pref_with_select_field(model, pref_name, collection = [[t('preferences.is_true'), true], [t('preferences.is_false'), false]])
pref(model, pref_name) { select(model, pref_name, collection, {}, class: "form-control") } pref(model, pref_name) { select(model, pref_name, collection, {}, class: "form-control") }
end end
@ -21,8 +20,8 @@ module PreferencesHelper
def profile_delete_user(user) def profile_delete_user(user)
return link_to( return link_to(
t('users.destroy_user'), t('users.destroy_user'),
url_for({:controller => 'users', :action => 'destroy', :id => user.id}), url_for({ :controller => 'users', :action => 'destroy', :id => user.id }),
{:id => "delete_user_#{user.id}", { :id => "delete_user_#{user.id}",
:class => "delete_user_button btn btn-danger", :class => "delete_user_button btn btn-danger",
:title => t('users.destroy_user'), :title => t('users.destroy_user'),
:x_confirm_message => t('users.destroy_confirmation', :login => user.login) :x_confirm_message => t('users.destroy_confirmation', :login => user.login)

View file

@ -1,21 +1,20 @@
module ProjectsHelper module ProjectsHelper
def show_project_name(project) def show_project_name(project)
if source_view_is :project if source_view_is :project
content_tag(:span, :id => "project_name"){project.name} content_tag(:span, :id => "project_name") { project.name }
else else
link_to_project( project ) link_to_project(project)
end end
end end
def show_project_settings(project) def show_project_settings(project)
content_tag(:div, :id => dom_id(project, "container"), :class=>"list") do content_tag(:div, :id => dom_id(project, "container"), :class => "list") do
render :partial => "projects/project_settings", :object => project render :partial => "projects/project_settings", :object => project
end end
end end
def project_next_prev def project_next_prev
content_tag(:div, :id=>"project-next-prev") do content_tag(:div, :id => "project-next-prev") do
html = "" html = ""
html << link_to_project(@previous_project, "&laquo; #{@previous_project.shortened_name}".html_safe) if @previous_project html << link_to_project(@previous_project, "&laquo; #{@previous_project.shortened_name}".html_safe) if @previous_project
html << " | " if @previous_project && @next_project html << " | " if @previous_project && @next_project
@ -27,21 +26,20 @@ module ProjectsHelper
def project_next_prev_mobile def project_next_prev_mobile
prev_project = "" prev_project = ""
next_project = "" next_project = ""
prev_project = content_tag(:li, link_to_project_mobile(@previous_project, "5", @previous_project.shortened_name), :class=>"prev") if @previous_project prev_project = content_tag(:li, link_to_project_mobile(@previous_project, "5", @previous_project.shortened_name), :class => "prev") if @previous_project
next_project = content_tag(:li, link_to_project_mobile(@next_project, "6", @next_project.shortened_name), :class=>"next") if @next_project next_project = content_tag(:li, link_to_project_mobile(@next_project, "6", @next_project.shortened_name), :class => "next") if @next_project
return content_tag(:ul, "#{prev_project}#{next_project}".html_safe, :class=>"next-prev-project") return content_tag(:ul, "#{prev_project}#{next_project}".html_safe, :class => "next-prev-project")
end end
def project_summary(project) def project_summary(project)
project_description = '' project_description = ''
project_description += render_text( project.description ) if project.description.present? project_description += render_text(project.description) if project.description.present?
project_description += content_tag(:p, project_description += content_tag(:p,
"#{count_undone_todos_phrase(p)}. #{t('projects.project_state', :state => project.state)}".html_safe "#{count_undone_todos_phrase(p)}. #{t('projects.project_state', :state => project.state)}".html_safe)
)
end end
def needsreview_class(item) def needsreview_class(item)
raise "item must be a Project " unless item.kind_of? Project raise "item must be a Project " unless item.is_a? Project
return item.needs_review?(current_user) ? "needsreview" : "needsnoreview" return item.needs_review?(current_user) ? "needsreview" : "needsnoreview"
end end
@ -49,8 +47,7 @@ module ProjectsHelper
link_to_delete(:project, project, descriptor) link_to_delete(:project, project, descriptor)
end end
def link_to_edit_project (project, descriptor = sanitize(project.name)) def link_to_edit_project(project, descriptor = sanitize(project.name))
link_to_edit(:project, project, descriptor) link_to_edit(:project, project, descriptor)
end end
end end

View file

@ -1,28 +1,27 @@
module RecurringTodosHelper module RecurringTodosHelper
def recurring_todo_tag_list def recurring_todo_tag_list
tags_except_starred = @recurring_todo.tags.reject{|t| t.name == Todo::STARRED_TAG_NAME} tags_except_starred = @recurring_todo.tags.reject { |t| t.name == Todo::STARRED_TAG_NAME }
tag_list = tags_except_starred. tag_list = tags_except_starred
collect{|t| content_tag(:span,link_to(t.name, tag_path(t.name)), :class => "tag #{t.label}")}. .collect { |t| content_tag(:span, link_to(t.name, tag_path(t.name)), :class => "tag #{t.label}") }
join('') .join('')
return content_tag :span, tag_list.html_safe, :class => "tags" return content_tag :span, tag_list.html_safe, :class => "tags"
end end
def recurring_todo_remote_delete_icon def recurring_todo_remote_delete_icon
link_to( image_tag_for_delete, link_to(image_tag_for_delete, recurring_todo_path(@recurring_todo),
recurring_todo_path(@recurring_todo), :id => "delete_icon_"+@recurring_todo.id.to_s, :id => "delete_icon_" + @recurring_todo.id.to_s,
:class => "icon delete_icon", :title => t('todos.delete_recurring_action_title'), :x_confirm_message => t('todos.delete_recurring_action_confirm', :description => @recurring_todo.description)) :class => "icon delete_icon", :title => t('todos.delete_recurring_action_title'), :x_confirm_message => t('todos.delete_recurring_action_confirm', :description => @recurring_todo.description))
end end
def recurring_todo_remote_star_icon def recurring_todo_remote_star_icon
link_to( image_tag_for_star(@recurring_todo), link_to(image_tag_for_star(@recurring_todo),
toggle_star_recurring_todo_path(@recurring_todo), :id => "star_icon_"+@recurring_todo.id.to_s, toggle_star_recurring_todo_path(@recurring_todo), :id => "star_icon_" + @recurring_todo.id.to_s,
:class => "icon star_item", :title => t('todos.star_action')) :class => "icon star_item", :title => t('todos.star_action'))
end end
def recurring_todo_remote_edit_icon def recurring_todo_remote_edit_icon
if !@recurring_todo.completed? if !@recurring_todo.completed?
str = link_to( image_tag_for_edit(@recurring_todo), str = link_to(image_tag_for_edit(@recurring_todo),
edit_recurring_todo_path(@recurring_todo), edit_recurring_todo_path(@recurring_todo),
:class => "icon edit_icon", :id => "link_edit_recurring_todo_#{@recurring_todo.id}") :class => "icon edit_icon", :id => "link_edit_recurring_todo_#{@recurring_todo.id}")
else else
@ -38,10 +37,10 @@ module RecurringTodosHelper
private private
def image_tag_for_delete def image_tag_for_delete
image_tag("blank.png", :title =>t('todos.delete_action'), :class=>"delete_item") image_tag("blank.png", :title => t('todos.delete_action'), :class => "delete_item")
end end
def image_tag_for_edit(todo) def image_tag_for_edit(todo)
image_tag("blank.png", :title =>t('todos.edit_action'), :class=>"edit_item", :id=> dom_id(todo, 'edit_icon')) image_tag("blank.png", :title => t('todos.edit_action'), :class => "edit_item", :id => dom_id(todo, 'edit_icon'))
end end
end end

View file

@ -13,7 +13,7 @@ module RenderingHelper
# do not change string; URL is already linked # do not change string; URL is already linked
href href
else else
content_tag(:a, h(href), :href => URI.escape(href)) content_tag(:a, h(href), :href => href)
end end
end end
end end
@ -21,15 +21,15 @@ module RenderingHelper
def render_text(text) def render_text(text)
rendered = auto_link_message(text) rendered = auto_link_message(text)
rendered = textile(rendered) rendered = textile(rendered)
rendered = auto_link(rendered, link: :urls, html: {target: '_blank'}) rendered = auto_link(rendered, link: :urls, html: { target: '_blank' })
relaxed_config = Sanitize::Config::RELAXED relaxed_config = Sanitize::Config::RELAXED
config = relaxed_config config = relaxed_config
# add onenote and message protocols, allow a target # add onenote and message protocols, allow a target
a_href_config = relaxed_config[:protocols]['a']['href'] + %w(onenote message) a_href_config = relaxed_config[:protocols]['a']['href'] + %w[onenote message obsidian]
a_attributes = relaxed_config[:attributes]['a'] + ['target'] a_attributes = relaxed_config[:attributes]['a'] + ['target']
config = Sanitize::Config.merge(config, protocols: {'a' => {'href' => a_href_config}}, :attributes => {'a' => a_attributes}) config = Sanitize::Config.merge(config, protocols: { 'a' => { 'href' => a_href_config } }, :attributes => { 'a' => a_attributes })
rendered = Sanitize.fragment(rendered, config) rendered = Sanitize.fragment(rendered, config)
return rendered.html_safe return rendered.html_safe

View file

@ -1,11 +1,10 @@
module StatsHelper module StatsHelper
def font_size(cloud, tag) def font_size(cloud, tag)
9 + 2 * cloud.relative_size(tag) 9 + 2 * cloud.relative_size(tag)
end end
def month_and_year_label(i) def month_and_year_label(i)
t('date.month_names')[ (Time.zone.now.mon - i -1 ) % 12 + 1 ]+ " " + (Time.zone.now - i.months).year.to_s t('date.month_names')[(Time.zone.now.mon - i - 1) % 12 + 1] + " " + (Time.zone.now - i.months).year.to_s
end end
def array_of_month_and_year_labels(count) def array_of_month_and_year_labels(count)
@ -13,11 +12,10 @@ module StatsHelper
end end
def month_label(i) def month_label(i)
t('date.month_names')[ (Time.zone.now.mon - i -1 ) % 12 + 1 ] t('date.month_names')[(Time.zone.now.mon - i - 1) % 12 + 1]
end end
def array_of_month_labels(count) def array_of_month_labels(count)
Array.new(count) { |i| month_label(i) } Array.new(count) { |i| month_label(i) }
end end
end end

View file

@ -1,21 +1,19 @@
require 'staleness' require 'staleness'
module TodosHelper module TodosHelper
# === helpers for rendering container # === helpers for rendering container
def empty_message_holder(container_name, show, title_param = nil)
def empty_message_holder(container_name, show, title_param=nil) content_tag(:div, :id => "no_todos_in_view", :class => "container #{container_name}", :style => "display:" + (show ? "block" : "none")) do
content_tag(:div, :id => "no_todos_in_view", :class => "container #{container_name}", :style => "display:" + (show ? "block" : "none") ) do content_tag(:h2) { t("todos.no_actions.title", :param => title_param) } +
content_tag(:h2) { t("todos.no_actions.title", :param=>title_param) } +
content_tag(:div, :class => "message") do content_tag(:div, :class => "message") do
content_tag(:p) { t("todos.no_actions.#{container_name}", :param=>title_param) } content_tag(:p) { t("todos.no_actions.#{container_name}", :param => title_param) }
end end
end end
end end
def todos_container_empty_message(container_name, container_id, show_message) def todos_container_empty_message(container_name, container_id, show_message)
content_tag(:div, :id=>"#{container_id}-empty-d", :style=>"display:#{show_message ? 'block' : 'none'}") do content_tag(:div, :id => "#{container_id}-empty-d", :style => "display:#{show_message ? 'block' : 'none'}") do
content_tag(:div, :class=>"message") do content_tag(:div, :class => "message") do
content_tag(:p) do content_tag(:p) do
t("todos.no_actions.#{container_name}") t("todos.no_actions.#{container_name}")
end end
@ -29,7 +27,7 @@ module TodosHelper
:collapsible => true, :collapsible => true,
:show_empty_containers => @show_empty_containers, :show_empty_containers => @show_empty_containers,
:parent_container_type => @group_view_by :parent_container_type => @group_view_by
})}) }) })
end end
def default_collection_settings def default_collection_settings
@ -43,13 +41,13 @@ module TodosHelper
} }
end end
def show_done_todos(done_todos, settings={}) def show_done_todos(done_todos, settings = {})
settings[:container_name] = "completed" settings[:container_name] = "completed"
settings[:link_in_header] = link_to(t('common.show_all'), determine_done_path) settings[:link_in_header] = link_to(t('common.show_all'), determine_done_path)
render :partial => 'todos/collection', render :partial => 'todos/collection',
:object => done_todos, :object => done_todos,
:locals => {:settings => settings.reverse_merge!(default_collection_settings)} :locals => { :settings => settings.reverse_merge!(default_collection_settings) }
end end
def show_completed_todos_for(period, collection) def show_completed_todos_for(period, collection)
@ -62,30 +60,30 @@ module TodosHelper
render :partial => "todos/collection", render :partial => "todos/collection",
:object => collection, :object => collection,
:locals => { :settings => settings} :locals => { :settings => settings }
end end
def show_hidden_todos(hidden_todos, settings={}) def show_hidden_todos(hidden_todos, settings = {})
settings[:container_name] = "hidden" settings[:container_name] = "hidden"
render :partial => 'todos/collection', render :partial => 'todos/collection',
:object => hidden_todos, :object => hidden_todos,
:locals => {:settings => settings.reverse_merge!(default_collection_settings)} :locals => { :settings => settings.reverse_merge!(default_collection_settings) }
end end
def show_deferred_pending_todos(deferred_todos, pending_todos, settings={}) def show_deferred_pending_todos(deferred_todos, pending_todos, settings = {})
settings[:pending] = pending_todos settings[:pending] = pending_todos
settings[:container_name]="deferred_pending" settings[:container_name] = "deferred_pending"
render :partial => "todos/collection", render :partial => "todos/collection",
:object => deferred_todos+pending_todos, :object => deferred_todos + pending_todos,
:locals => {:settings => settings.reverse_merge!(default_collection_settings)} :locals => { :settings => settings.reverse_merge!(default_collection_settings) }
end end
def show_todos_without_project(todos_without_project, settings = {}) def show_todos_without_project(todos_without_project, settings = {})
render :partial => 'todos/collection', render :partial => 'todos/collection',
:object => todos_without_project, :object => todos_without_project,
:locals => {:settings => settings.reverse_merge!({ :locals => { :settings => settings.reverse_merge!({
:collapsible => true, :collapsible => true,
:container_name => "without_project", :container_name => "without_project",
:parent_container_type => "home" :parent_container_type => "home"
@ -93,7 +91,7 @@ module TodosHelper
} }
end end
def todos_container(settings={}) def todos_container(settings = {})
settings.reverse_merge!({ settings.reverse_merge!({
:id => "#{settings[:container_name]}_container", :id => "#{settings[:container_name]}_container",
:class => "container #{settings[:container_name]}", :class => "container #{settings[:container_name]}",
@ -104,18 +102,18 @@ module TodosHelper
end end
content_tag(:div, content_tag(:div,
:class=>settings[:class], :class => settings[:class],
:id=>settings[:id], :id => settings[:id],
:style => "display:" + (settings[:show_container] ? "block" : "none")) do :style => "display:" + (settings[:show_container] ? "block" : "none")) do
yield yield
end end
end end
def todos_container_header(settings={}) def todos_container_header(settings = {})
settings.reverse_merge!({ settings.reverse_merge!({
:title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param]) :title => t("todos.actions.#{settings[:parent_container_type]}_#{settings[:container_name]}", :param => settings[:title_param])
}) })
header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class=>"link_in_container_header"){settings[:link_in_header]} header = settings[:link_in_header].nil? ? "" : content_tag(:div, :class => "link_in_container_header") { settings[:link_in_header] }
header += content_tag(:h2) do header += content_tag(:h2) do
toggle = settings[:collapsible] ? container_toggle("toggle_#{settings[:id]}") : "" toggle = settings[:collapsible] ? container_toggle("toggle_#{settings[:id]}") : ""
"#{toggle} #{settings[:title]} #{settings[:append_descriptor]}".html_safe "#{toggle} #{settings[:title]} #{settings[:append_descriptor]}".html_safe
@ -124,12 +122,12 @@ module TodosHelper
header.html_safe header.html_safe
end end
def todos_container_items(collection, settings={}) def todos_container_items(collection, settings = {})
settings.reverse_merge!({:id => "#{settings[:container_name]}"}) settings.reverse_merge!({ :id => "#{settings[:container_name]}" })
# do not pass :class to partial locals # do not pass :class to partial locals
settings.delete(:class) settings.delete(:class)
content_tag(:div, :id =>settings[:id]+"_items", :class=>"items toggle_target") do content_tag(:div, :id => settings[:id] + "_items", :class => "items toggle_target") do
todos_container_empty_message(settings[:container_name], settings[:id], collection.empty?) + todos_container_empty_message(settings[:container_name], settings[:id], collection.empty?) +
render(:partial => "todos/todo", :collection => collection, :locals => settings) render(:partial => "todos/todo", :collection => collection, :locals => settings)
end end
@ -138,24 +136,23 @@ module TodosHelper
def todos_calendar_container(period, collection) def todos_calendar_container(period, collection)
render :partial => 'todos/collection', render :partial => 'todos/collection',
:object => collection, :object => collection,
:locals => {:settings => { :locals => { :settings => {
:collapsible => false, :collapsible => false,
:show_empty_containers => true, :show_empty_containers => true,
:container_name => "#{period}", :container_name => "#{period}",
:title =>t("todos.calendar.#{period}", :month => l(Time.zone.now, :format => "%B"), :next_month => l(1.month.from_now, :format => "%B")) :title => t("todos.calendar.#{period}", :month => l(Time.zone.now, :format => "%B"), :next_month => l(1.month.from_now, :format => "%B"))
} } }
}
end end
# === helpers for rendering a todo # === helpers for rendering a todo
def remote_star_icon(todo=@todo) def remote_star_icon(todo = @todo)
link_to( image_tag_for_star(todo), link_to(image_tag_for_star(todo),
toggle_star_todo_path(todo), toggle_star_todo_path(todo),
:class => "icon star_item", :title => t('todos.star_action_with_description', :description => todo.description)) :class => "icon star_item", :title => t('todos.star_action_with_description', :description => todo.description))
end end
def remote_edit_button(todo=@todo) def remote_edit_button(todo = @todo)
link_to( link_to(
image_tag("blank.png", :alt => t('todos.edit'), :align => "absmiddle", :id => dom_id(todo, "edit_icon"), :class => 'edit_item'), image_tag("blank.png", :alt => t('todos.edit'), :align => "absmiddle", :id => dom_id(todo, "edit_icon"), :class => 'edit_item'),
edit_todo_path(todo), edit_todo_path(todo),
@ -167,19 +164,20 @@ module TodosHelper
def remote_delete_menu_item(todo) def remote_delete_menu_item(todo)
return link_to( return link_to(
t('todos.delete'), t('todos.delete'),
{:controller => 'todos', :action => 'destroy', :id => todo.id}, { :controller => 'todos', :action => 'destroy', :id => todo.id },
:class => "icon_delete_item", :class => "icon_delete_item",
:id => dom_id(todo, "delete"), :id => dom_id(todo, "delete"),
:x_confirm_message => t('todos.confirm_delete', :description => todo.description), :x_confirm_message => t('todos.confirm_delete', :description => todo.description),
:title => t('todos.delete_action')); :title => t('todos.delete_action')
)
end end
def remote_defer_menu_item(days, todo) def remote_defer_menu_item(days, todo)
url = {:controller => 'todos', :action => 'defer', :id => todo.id, :days => days, url = { :controller => 'todos', :action => 'defer', :id => todo.id, :days => days,
:_source_view => (@source_view.underscore.gsub(/\s+/,'_') rescue "")} :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
url[:_tag_name] = @tag_name if @source_view == 'tag' url[:_tag_name] = @tag_name if @source_view == 'tag'
options = {:x_defer_alert => false, :class => "icon_defer_item icon_defer_#{days}_item", :id => "defer_#{days}_#{dom_id(todo)}" } options = { :x_defer_alert => false, :class => "icon_defer_item icon_defer_#{days}_item", :id => "defer_#{days}_#{dom_id(todo)}" }
if todo.due if todo.due
futuredate = (todo.show_from || todo.user.date) + days.days futuredate = (todo.show_from || todo.user.date) + days.days
if futuredate.at_midnight > todo.due.at_midnight if futuredate.at_midnight > todo.due.at_midnight
@ -195,45 +193,45 @@ module TodosHelper
link_to( link_to(
image_tag("blank.png", :title => t('todos.remove_dependency'), :align => "absmiddle", :class => "delete_item"), image_tag("blank.png", :title => t('todos.remove_dependency'), :align => "absmiddle", :class => "delete_item"),
remove_predecessor_todo_path(todo), remove_predecessor_todo_path(todo),
{:class => "delete_dependency_button", :x_predecessors_id => predecessor.id} { :class => "delete_dependency_button", :x_predecessors_id => predecessor.id }
) )
end end
def remote_promote_to_project_menu_item(todo) def remote_promote_to_project_menu_item(todo)
url = {:controller => 'todos', :action => 'convert_to_project', :id => todo.id, url = { :controller => 'todos', :action => 'convert_to_project', :id => todo.id,
:_source_view => (@source_view.underscore.gsub(/\s+/,'_') rescue "")} :_source_view => (@source_view.underscore.gsub(/\s+/, '_') rescue "") }
url[:_tag_name] = @tag_name if @source_view == 'tag' url[:_tag_name] = @tag_name if @source_view == 'tag'
link_to(t('todos.convert_to_project'), url, {:class => "icon_item_to_project", :id => dom_id(todo, "to_project")}) link_to(t('todos.convert_to_project'), url, { :class => "icon_item_to_project", :id => dom_id(todo, "to_project") })
end end
def attachment_image(todo) def attachment_image(todo)
link_to( link_to(
image_tag('blank.png', width: 16, height: 16, border:0), image_tag('blank.png', width: 16, height: 16, border: 0),
todo.attachments.first.file.url, todo.attachments.first.file.url,
{:class => 'todo_attachment', title: 'Get attachments of this todo'} { :class => 'todo_attachment', title: 'Get attachments of this todo' }
) )
end end
def collapsed_notes_image(todo) def collapsed_notes_image(todo)
link = link_to( link = link_to(
image_tag( 'blank.png', :width=>'16', :height=>'16', :border=>'0' ), image_tag('blank.png', :width => '16', :height => '16', :border => '0'),
"#", "#",
{:class => 'show_notes', :title => 'Show notes'}) { :class => 'show_notes', :title => 'Show notes' })
notes = content_tag(:div, { notes = content_tag(:div, {
:class => "todo_notes", :class => "todo_notes",
:id => dom_id(todo, 'notes'), :id => dom_id(todo, 'notes'),
:style => "display:none"}) { raw render_text(todo.notes) } :style => "display:none" }) { raw render_text(todo.notes) }
return link+notes return link + notes
end end
def collapsed_successors_image(todo) def collapsed_successors_image(todo)
link = link_to(image_tag( 'blank.png', :width=>'16', :height=>'16', :border=>'0' ), "#", {:class => 'show_successors', :title => 'Show successors'}) link = link_to(image_tag('blank.png', :width => '16', :height => '16', :border => '0'), "#", { :class => 'show_successors', :title => 'Show successors' })
successors = content_tag(:div, {:class => "todo_successors", :id => dom_id(todo, 'successors'), :style => "display:none"}) do successors = content_tag(:div, { :class => "todo_successors", :id => dom_id(todo, 'successors'), :style => "display:none" }) do
render :partial => "todos/successor", :collection => todo.pending_successors, render :partial => "todos/successor", :collection => todo.pending_successors,
:locals => { :parent_container_type => parent_container_type, :suppress_dependencies => true, :predecessor => todo } :locals => { :parent_container_type => parent_container_type, :suppress_dependencies => true, :predecessor => todo }
end end
return link+successors return link + successors
end end
def image_tag_for_recurring_todo(todo) def image_tag_for_recurring_todo(todo)
@ -244,42 +242,42 @@ module TodosHelper
end end
def image_tag_for_star(todo) def image_tag_for_star(todo)
image_tag("blank.png", :title =>t('todos.star_action'), :class => "todo_star"+(todo.starred? ? " starred":""), :id => "star_img_"+todo.id.to_s) image_tag("blank.png", :title => t('todos.star_action'), :class => "todo_star" + (todo.starred? ? " starred" : ""), :id => "star_img_" + todo.id.to_s)
end end
def remote_toggle_checkbox(todo=@todo) def remote_toggle_checkbox(todo = @todo)
check_box_tag("mark_complete_#{todo.id}", toggle_check_todo_path(todo), todo.completed?, :class => 'item-checkbox', check_box_tag("mark_complete_#{todo.id}", toggle_check_todo_path(todo), todo.completed?, :class => 'item-checkbox',
:title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?) :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.to_a.map(&:description).join(', ')) : "", :readonly => todo.pending?)
end end
def remote_mobile_checkbox(todo=@todo) def remote_mobile_checkbox(todo = @todo)
form_tag toggle_check_todo_path(@todo, :format => 'm'), :method => :put, :class => "mobile-done", :name => "mobile_complete_#{@todo.id}" do form_tag toggle_check_todo_path(@todo, :format => 'm'), :method => :put, :class => "mobile-done", :name => "mobile_complete_#{@todo.id}" do
check_box_tag('_source_view', 'todo', @todo && @todo.completed?, "onClick" => "document.mobile_complete_#{@todo.id}.submit()") check_box_tag('_source_view', 'todo', @todo && @todo.completed?, "onClick" => "document.mobile_complete_#{@todo.id}.submit()")
end end
end end
def date_span(todo=@todo) def date_span(todo = @todo)
if todo.completed? if todo.completed?
content_tag(:span, {:class => :grey}) { format_date( todo.completed_at ) } content_tag(:span, { :class => :grey }) { format_date(todo.completed_at) }
elsif todo.pending? elsif todo.pending?
title = t('todos.depends_on')+ ": " + todo.uncompleted_predecessors.to_a.map(&:description).join(', ') title = t('todos.depends_on') + ": " + todo.uncompleted_predecessors.to_a.map(&:description).join(', ')
content_tag(:a, {:title => title}) { content_tag(:span, {:class => :orange}) { t('todos.pending') } } content_tag(:a, { :title => title }) { content_tag(:span, { :class => :orange }) { t('todos.pending') } }
elsif todo.deferred? elsif todo.deferred?
show_date( todo.show_from ) show_date(todo.show_from)
else else
due_date( todo.due ) due_date(todo.due)
end end
end end
def successors_span(todo=@todo) def successors_span(todo = @todo)
unless todo.pending_successors.empty? unless todo.pending_successors.empty?
pending_count = todo.pending_successors.count pending_count = todo.pending_successors.count
title = "#{t('todos.has_x_pending', :count => pending_count)}: #{todo.pending_successors.to_a.map(&:description).join(', ')}" title = "#{t('todos.has_x_pending', :count => pending_count)}: #{todo.pending_successors.to_a.map(&:description).join(', ')}"
image_tag( 'successor_off.png', :width=>'10', :height=>'16', :border=>'0', :title => title ) image_tag('successor_off.png', :width => '10', :height => '16', :border => '0', :title => title)
end end
end end
def grip_span(todo=@todo) def grip_span(todo = @todo)
unless todo.completed? unless todo.completed?
image_tag('grip.png', :width => '7', :height => '16', :border => '0', image_tag('grip.png', :width => '7', :height => '16', :border => '0',
:title => t('todos.drag_action_title'), :title => t('todos.drag_action_title'),
@ -287,41 +285,41 @@ module TodosHelper
end end
end end
def tag_list_text(todo=@todo) def tag_list_text(todo = @todo)
todo.tags.to_a.join(', ') todo.tags.to_a.join(', ')
end end
def tag_span (tag, mobile=false) def tag_span(tag, mobile = false)
content_tag(:span, :class => "tag #{tag.label}") { link_to(tag.name, tag_path(tag.name, :format => mobile ? :m : nil)) } content_tag(:span, :class => "tag #{tag.label}") { link_to(tag.name, tag_path(tag.name, :format => mobile ? :m : nil)) }
end end
def tag_list(todo=@todo, mobile=false) def tag_list(todo=@todo, mobile = false)
content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{|tag| tag_span(tag, mobile)}.join('').html_safe } content_tag(:span, :class => 'tags') { todo.tags.all_except_starred.collect{ |tag| tag_span(tag, mobile) }.join('').html_safe }
end end
def tag_list_mobile(todo=@todo) def tag_list_mobile(todo = @todo)
todo.tags.all_except_starred.empty? ? "" : tag_list(todo, true) todo.tags.all_except_starred.empty? ? "" : tag_list(todo, true)
end end
def deferred_due_date(todo=@todo) def deferred_due_date(todo = @todo)
t('todos.action_due_on', :date => format_date(todo.due)) if todo.deferred? && todo.due t('todos.action_due_on', :date => format_date(todo.due)) if todo.deferred? && todo.due
end end
def project_and_context_links(todo, parent_container_type, opts = {}) def project_and_context_links(todo, parent_container_type, opts = {})
links = '' links = ''
if todo.completed? if todo.completed?
links << item_link_to_context( todo ) unless opts[:suppress_context] links << item_link_to_context(todo) unless opts[:suppress_context]
links << item_link_to_project( todo ) unless opts[:suppress_project] || todo.project.nil? links << item_link_to_project(todo) unless opts[:suppress_project] || todo.project.nil?
else else
links << item_link_to_context( todo ) if include_context_link(todo, parent_container_type) links << item_link_to_context(todo) if include_context_link(todo, parent_container_type)
links << item_link_to_project( todo ) if include_project_link(todo, parent_container_type) links << item_link_to_project(todo) if include_project_link(todo, parent_container_type)
end end
links.html_safe links.html_safe
end end
def include_context_link(todo, parent_container_type) def include_context_link(todo, parent_container_type)
return true if (['stats', 'search'].include?(parent_container_type)) return true if ['stats', 'search'].include?(parent_container_type)
# TODO: remove next line if 'project' supports group_view_by # TODO: remove next line if 'project' supports group_view_by
return true if parent_container_type == 'project' return true if parent_container_type == 'project'
return true if @group_view_by == 'project' return true if @group_view_by == 'project'
@ -330,7 +328,7 @@ module TodosHelper
def include_project_link(todo, parent_container_type) def include_project_link(todo, parent_container_type)
return false unless todo.has_project? return false unless todo.has_project?
return true if (['stats', 'search'].include?(parent_container_type)) return true if ['stats', 'search'].include?(parent_container_type)
# TODO: remove next line if 'context' supports group_view_by # TODO: remove next line if 'context' supports group_view_by
return true if parent_container_type == 'context' return true if parent_container_type == 'context'
return true if @group_view_by == 'context' return true if @group_view_by == 'context'
@ -350,9 +348,9 @@ module TodosHelper
case days_stale case days_stale
when 0...start when 0...start
"" ""
when start...start*2 when start...start * 2
" stale_l1" " stale_l1"
when start*2...start*3 when start*2...start * 3
" stale_l2" " stale_l2"
else else
" stale_l3" " stale_l3"
@ -364,7 +362,7 @@ module TodosHelper
end end
def date_field_tag(name, id, value = nil, options = {}) def date_field_tag(name, id, value = nil, options = {})
text_field_tag name, value, {"size" => 12, "id" => id, "class" => "Date", "autocomplete" => "off"}.update(options.stringify_keys) text_field_tag name, value, { "size" => 12, "id" => id, "class" => "Date", "autocomplete" => "off" }.update(options.stringify_keys)
end end
def sort_key(todo) def sort_key(todo)
@ -383,19 +381,19 @@ module TodosHelper
def default_contexts_for_autocomplete def default_contexts_for_autocomplete
projects = current_user.projects.uncompleted.includes(:default_context).where('NOT(default_context_id IS NULL)') projects = current_user.projects.uncompleted.includes(:default_context).where('NOT(default_context_id IS NULL)')
Hash[*projects.map{ |p| [escape_javascript(p.name), escape_javascript(p.default_context.name)] }.flatten].to_json Hash[*projects.map { |p| [escape_javascript(p.name), escape_javascript(p.default_context.name)] }.flatten].to_json
end end
def default_tags_for_autocomplete def default_tags_for_autocomplete
projects = current_user.projects.uncompleted.where("NOT(default_tags = '')") projects = current_user.projects.uncompleted.where("NOT(default_tags = '')")
Hash[*projects.map{ |p| [escape_javascript(p.name), p.default_tags] }.flatten].to_json Hash[*projects.map { |p| [escape_javascript(p.name), p.default_tags] }.flatten].to_json
end end
# === various helpers # === various helpers
def formatted_pagination(total) def formatted_pagination(total)
s = will_paginate(@todos) s = will_paginate(@todos)
(s.gsub(/(<\/[^<]+>)/, '\1 ')).chomp(' ') s.gsub(/(<\/[^<]+>)/, '\1 ').chomp(' ')
end end
def format_ical_notes(notes) def format_ical_notes(notes)
@ -420,11 +418,12 @@ module TodosHelper
# animation steps. # animation steps.
# if the animation needs to be run inside the namespace of an object, set the # if the animation needs to be run inside the namespace of an object, set the
# object_name to the name of the object and this name will be prepended to each step # object_name to the name of the object and this name will be prepended to each step
def render_animation(animation, object_name=nil) def render_animation(animation, object_name = nil)
object_name += "." unless object_name.nil? # add dot if object_name is given # Add dot if object_name is given
object_name += "." unless object_name.nil?
# concatenate all steps into functions that call functions # concatenate all steps into functions that call functions
html = animation.map{ |step| "#{object_name}#{step}({ go: function() {" }.join("\r\n") html = animation.map { |step| "#{object_name}#{step}({ go: function() {" }.join("\r\n")
# close all functions # close all functions
html += "}}) " * animation.size + ";" html += "}}) " * animation.size + ";"
@ -477,18 +476,18 @@ module TodosHelper
end end
def todo_container_is_empty def todo_container_is_empty
default_container_empty = ( @down_count == 0 ) default_container_empty = (@down_count == 0)
deferred_container_empty = ( @todo.deferred? && @remaining_deferred_count == 0) deferred_container_empty = (@todo.deferred? && @remaining_deferred_count == 0)
return default_container_empty || deferred_container_empty return default_container_empty || deferred_container_empty
end end
def todo_moved_out_of_container def todo_moved_out_of_container
# moved from one project container to another # moved from one project container to another
moved_project = @project_changed && @group_view_by=='project' moved_project = @project_changed && @group_view_by == 'project'
# moved from one context container to another # moved from one context container to another
moved_context = @context_changed && @group_view_by=='context' moved_context = @context_changed && @group_view_by == 'context'
# moved from actions-without-project container to another # moved from actions-without-project container to another
moved_without_project = @context_changed && @group_view_by=='project' && @todo.project_id.nil? moved_without_project = @context_changed && @group_view_by == 'project' && @todo.project_id.nil?
return moved_project || moved_context || moved_without_project return moved_project || moved_context || moved_without_project
end end
@ -519,12 +518,12 @@ module TodosHelper
def update_needs_to_remove_todo_from_container def update_needs_to_remove_todo_from_container
source_view do |page| source_view do |page|
page.context { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @todo_should_be_hidden } page.context { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @todo_should_be_hidden }
page.project { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @project_changed} page.project { return @context_changed || @todo_deferred_state_changed || @todo_pending_state_changed || @project_changed }
page.deferred { return todo_moved_out_of_container || !(@todo.deferred? || @todo.pending?) } page.deferred { return todo_moved_out_of_container || !(@todo.deferred? || @todo.pending?) }
page.calendar { return @due_date_changed || !@todo.due } page.calendar { return @due_date_changed || !@todo.due }
page.stats { return @todo.completed? } page.stats { return @todo.completed? }
page.tag { return ( (@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed } page.tag { return ((@context_changed | @project_changed) && !@todo.hidden?) || @tag_was_removed || @todo_hidden_state_changed || @todo_deferred_state_changed }
page.todo { return todo_moved_out_of_container || @todo.hidden? || @todo.deferred? || @todo.pending?} page.todo { return todo_moved_out_of_container || @todo.hidden? || @todo.deferred? || @todo.pending? }
page.search { return false } page.search { return false }
end end
return false return false
@ -557,7 +556,7 @@ module TodosHelper
page.deferred { return todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) } page.deferred { return todo_moved_out_of_container && (@todo.deferred? || @todo.pending?) }
page.calendar { return @due_date_changed && @todo.due } page.calendar { return @due_date_changed && @todo.due }
page.stats { return false } page.stats { return false }
page.tag { return update_needs_to_remove_todo_from_container && !@tag_was_removed} page.tag { return update_needs_to_remove_todo_from_container && !@tag_was_removed }
page.todo { return todo_moved_out_of_container && !(@todo.deferred? || @todo.pending? || @todo.hidden?) } page.todo { return todo_moved_out_of_container && !(@todo.deferred? || @todo.pending? || @todo.hidden?) }
end end
return false return false
@ -567,7 +566,7 @@ module TodosHelper
source_view do |page| source_view do |page|
page.context { return @remaining_in_context == 0 } page.context { return @remaining_in_context == 0 }
end end
return @down_count==0 return @down_count == 0
end end
def project_container_id(todo) def project_container_id(todo)
@ -612,29 +611,25 @@ module TodosHelper
raise Exception.new, "no @todo or @successor set" if !todo raise Exception.new, "no @todo or @successor set" if !todo
source_view do |page| source_view do |page|
page.project { page.project do
return "deferred_pending_container-empty-d" if empty_criteria_met return "deferred_pending_container-empty-d" if empty_criteria_met
return todo_container_empty_id(todo) return todo_container_empty_id(todo)
} end
page.tag { page.tag do
return "deferred_pending_container-empty-d" if empty_criteria_met return "deferred_pending_container-empty-d" if empty_criteria_met
return "hidden_container-empty-d" if @todo.hidden? return "hidden_container-empty-d" if @todo.hidden?
return todo_container_empty_id(todo) return todo_container_empty_id(todo)
} end
page.calendar { page.calendar do
return "deferred_pending_container-empty-d" if empty_criteria_met return "deferred_pending_container-empty-d" if empty_criteria_met
return "#{@new_due_id}_container-empty-d" return "#{@new_due_id}_container-empty-d"
} end
page.context { page.context do
return "deferred_pending_container-empty-d" if empty_criteria_met return "deferred_pending_container-empty-d" if empty_criteria_met
return todo_container_empty_id(todo) return todo_container_empty_id(todo)
} end
page.todo { page.todo { return todo_container_empty_id(todo) }
return todo_container_empty_id(todo) page.deferred { return todo_container_empty_id(todo) }
}
page.deferred {
return todo_container_empty_id(todo)
}
end end
return context_container_empty_id(todo) return context_container_empty_id(todo)
@ -659,30 +654,29 @@ module TodosHelper
def show_empty_message_in_source_container def show_empty_message_in_source_container
container_id = "" container_id = ""
source_view do |page| source_view do |page|
page.project { page.deferred { container_id = todo_container_empty_id(@original_item) if @remaining_in_context == 0 }
page.calendar { container_id = "#{@original_item_due_id}_container-empty-d" if @old_due_empty }
page.todo { container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 }
page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 }
page.all_done { container_id = "all-done-empty-nd" if @remaining_in_context == 0 }
page.project do
container_id = project_container_empty_id(@original_item) if @remaining_in_context == 0 container_id = project_container_empty_id(@original_item) if @remaining_in_context == 0
container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0 container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed? container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
} end
page.deferred { container_id = todo_container_empty_id(@original_item) if @remaining_in_context == 0 } page.tag do
page.calendar { container_id = "#{@original_item_due_id}_container-empty-d" if @old_due_empty }
page.tag {
container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) || container_id = "hidden_container-empty-d" if (@remaining_hidden_count == 0 && !@todo.hidden? && @todo_hidden_state_changed) ||
(@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?) (@remaining_hidden_count == 0 && @todo.completed? && @original_item.hidden?)
container_id = "deferred_pending_container-empty-d" if (todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0) || container_id = "deferred_pending_container-empty-d" if (todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0) ||
(@original_item.deferred? && @remaining_deferred_or_pending_count == 0 && (@todo.completed? || @tag_was_removed)) (@original_item.deferred? && @remaining_deferred_or_pending_count == 0 && (@todo.completed? || @tag_was_removed))
container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed? container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
} end
page.context { page.context do
container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0
container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0 container_id = "deferred_pending_container-empty-d" if todo_was_removed_from_deferred_or_blocked_container && @remaining_deferred_or_pending_count == 0
container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed? container_id = "completed_container-empty-d" if @completed_count && @completed_count == 0 && !@todo.completed?
} end
page.todo { container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 }
page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 }
page.all_done { container_id = "all-done-empty-nd" if @remaining_in_context == 0 }
end end
return container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);".html_safe return container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);".html_safe
end end
end end

View file

@ -1,12 +1,13 @@
module UsersHelper module UsersHelper
def remote_delete_user(user) def remote_delete_user(user)
return link_to( return link_to(
image_tag("blank.png", :title =>t('users.destroy_user'), :class=>"delete_item"), image_tag("blank.png", :title => t('users.destroy_user'), :class => "delete_item"),
url_for({:controller => 'users', :action => 'destroy', :id => user.id}), url_for(:controller => 'users', :action => 'destroy', :id => user.id), {
{:id => "delete_user_#{user.id}", :id => "delete_user_#{user.id}",
:class => "delete_user_button", :class => "delete_user_button",
:title => t('users.destroy_user'), :title => t('users.destroy_user'),
:x_confirm_message => t('users.destroy_confirmation', :login => user.login) :x_confirm_message => t('users.destroy_confirmation', :login => user.login)
}) }
)
end end
end end

View file

@ -1,5 +1,4 @@
class Context < ApplicationRecord class Context < ApplicationRecord
has_many :todos, -> { order(Arel.sql("todos.due IS NULL, todos.due ASC, todos.created_at ASC")).includes(:project) }, :dependent => :delete_all has_many :todos, -> { order(Arel.sql("todos.due IS NULL, todos.due ASC, todos.created_at ASC")).includes(:project) }, :dependent => :delete_all
has_many :recurring_todos, :dependent => :delete_all has_many :recurring_todos, :dependent => :delete_all
belongs_to :user belongs_to :user
@ -15,7 +14,6 @@ class Context < ApplicationRecord
include AASM include AASM
aasm :column => :state do aasm :column => :state do
state :active, :initial => true state :active, :initial => true
state :closed state :closed
state :hidden state :hidden
@ -33,9 +31,7 @@ class Context < ApplicationRecord
end end
end end
validates_presence_of :name, :message => "context must have a name" validates :name, presence: { message: "context must have a name" }, length: { maximum: 255, message: "context name must be less than 256 characters" }, uniqueness: { message: "already exists", scope: "user_id", case_sensitive: false }
validates_length_of :name, :maximum => 255, :message => "context name must be less than 256 characters"
validates_uniqueness_of :name, :message => "already exists", :scope => "user_id", :case_sensitive => false
def self.null_object def self.null_object
NullContext.new NullContext.new
@ -48,11 +44,9 @@ class Context < ApplicationRecord
def no_active_todos? def no_active_todos?
return todos.active.count == 0 return todos.active.count == 0
end end
end end
class NullContext class NullContext
def nil? def nil?
true true
end end
@ -64,5 +58,4 @@ class NullContext
def name def name
'' ''
end end
end end

View file

@ -1,17 +1,13 @@
class Dependency < ApplicationRecord class Dependency < ApplicationRecord
# touch to make sure todo caches for predecessor and successor are invalidated # touch to make sure todo caches for predecessor and successor are invalidated
belongs_to :predecessor, :foreign_key => 'predecessor_id', :class_name => 'Todo', :touch => true belongs_to :predecessor, :foreign_key => 'predecessor_id', :class_name => 'Todo', :touch => true
belongs_to :successor, :foreign_key => 'successor_id', :class_name => 'Todo', :touch => true belongs_to :successor, :foreign_key => 'successor_id', :class_name => 'Todo', :touch => true
validate :check_circular_dependencies validate :check_circular_dependencies
def check_circular_dependencies def check_circular_dependencies
unless predecessor.nil? or successor.nil? unless predecessor.nil? || successor.nil?
errors.add("Depends on:", "Adding '#{successor.specification}' would create a circular dependency") if successor.is_successor?(predecessor) errors.add("Depends on:", "Adding '#{successor.specification}' would create a circular dependency") if successor.is_successor?(predecessor)
end end
end end
end end

View file

@ -1,142 +0,0 @@
class MessageGateway < ActionMailer::Base
def receive(email)
user = get_receiving_user_from_email_address(email)
return false if user.nil?
return false unless check_sender_is_in_mailmap(user, email)
context = user.prefs.sms_context
todo_params = get_todo_params(email)
todo_builder = TodoFromRichMessage.new(user, context.id, todo_params[:description], todo_params[:notes])
todo = todo_builder.construct
if todo.save!
Rails.logger.info "Saved email as todo for user #{user.login} in context #{context.name}"
if attach_email_to_todo(todo, email)
Rails.logger.info "Saved email as attachment to todo for user #{user.login} in context #{context.name}"
end
end
todo
end
private
def attach_email_to_todo(todo, email)
attachment = todo.attachments.build
# create temp file
tmp = Tempfile.new(['attachment', '.eml'], {universal_newline: true})
tmp.write email.raw_source.gsub(/\r/, "")
# add temp file to attachment. paperclip will copy the file to the right location
Rails.logger.info "Saved received email to #{tmp.path}"
attachment.file = tmp
tmp.close
saved = attachment.save!
# enable write permissions on group, since MessageGateway could be run under different
# user than Tracks (i.e. apache versus mail)
dir = File.open(File.dirname(attachment.file.path))
dir.chmod(0770)
# delete temp file
tmp.unlink
end
def get_todo_params(email)
params = {}
if email.multipart?
params[:description] = get_text_or_nil(email.subject)
params[:notes] = get_first_text_plain_part(email)
else
if email.subject.blank?
params[:description] = get_decoded_text_or_nil(email.body)
params[:notes] = nil
else
params[:description] = get_text_or_nil(email.subject)
params[:notes] = get_decoded_text_or_nil(email.body)
end
end
params
end
def get_receiving_user_from_email_address(email)
SITE_CONFIG['email_dispatch'] == 'single_user' ? get_receiving_user_from_env_setting : get_receiving_user_from_mail_header(email)
end
def get_receiving_user_from_env_setting
Rails.logger.info "All received email goes to #{ENV['TRACKS_MAIL_RECEIVER']}"
user = User.where(:login => ENV['TRACKS_MAIL_RECEIVER']).first
Rails.logger.info "WARNING: Unknown user set for TRACKS_MAIL_RECEIVER (#{ENV['TRACKS_MAIL_RECEIVER']})" if user.nil?
return user
end
def get_receiving_user_from_mail_header(email)
user = get_receiving_user_from_sms_email( get_address(email) )
Rails.logger.info(user.nil? ? "User unknown": "Email belongs to #{user.login}")
return user
end
def get_address(email)
return SITE_CONFIG['email_dispatch'] == 'to' ? email.to[0] : email.from[0]
end
def get_receiving_user_from_sms_email(address)
Rails.logger.info "Looking for user with email #{address}"
user = User.where("preferences.sms_email" => address.strip).includes(:preference).first
user = User.where("preferences.sms_email" => address.strip[1.100]).includes(:preference).first if user.nil?
return user
end
def check_sender_is_in_mailmap(user, email)
if user.present? and !sender_is_in_mailmap?(user,email)
Rails.logger.warn "#{email.from[0]} not found in mailmap for #{user.login}"
return false
end
return true
end
def sender_is_in_mailmap?(user,email)
if SITE_CONFIG['mailmap'].is_a? Hash and SITE_CONFIG['email_dispatch'] == 'to'
# Look for the sender in the map of allowed senders
SITE_CONFIG['mailmap'][user.preference.sms_email].include? email.from[0]
else
# We can't check the map if it's not defined, or if the lookup is the
# wrong way round, so just allow it
true
end
end
def get_text_or_nil(text)
return text ? text.strip : nil
end
def get_decoded_text_or_nil(text)
return text ? text.decoded.strip : nil
end
def get_first_text_plain_part(email)
# get all parts from multipart/alternative attachments
parts = get_all_parts(email.parts)
# remove all parts that are not text/plain
parts.reject{|part| !part.content_type.start_with?("text/plain") }
return parts.count > 0 ? parts[0].decoded.strip : ""
end
def get_all_parts(parts)
# return a flattened array of parts. If a multipart attachment is found, recurse over its parts
all_parts = parts.inject([]) do |set, elem|
if elem.content_type.start_with?("multipart/alternative")
# recurse to handle multiparts in this multipart
set += get_all_parts(elem.parts)
else
set << elem
end
end
end
end

View file

@ -3,11 +3,11 @@ class Preference < ApplicationRecord
belongs_to :sms_context, :class_name => 'Context' belongs_to :sms_context, :class_name => 'Context'
def self.themes def self.themes
{ :black => 'black', :light_blue => 'light_blue'} { :black => 'black', :light_blue => 'light_blue' }
end end
def self.due_styles def self.due_styles
{ :due_in_n_days => 0, :due_on => 1} { :due_in_n_days => 0, :due_on => 1 }
end end
def hide_completed_actions? def hide_completed_actions?
@ -29,8 +29,7 @@ class Preference < ApplicationRecord
date.in_time_zone(time_zone).beginning_of_day date.in_time_zone(time_zone).beginning_of_day
end end
def format_date (date) def format_date(date)
return date ? date.in_time_zone(time_zone).strftime("#{date_format}") : '' return date ? date.in_time_zone(time_zone).strftime("#{date_format}") : ''
end end
end end

View file

@ -1,6 +1,6 @@
class Project < ApplicationRecord class Project < ApplicationRecord
has_many :todos, -> {order(Arel.sql("todos.due IS NULL, todos.due ASC, todos.created_at ASC"))}, dependent: :delete_all has_many :todos, -> { order(Arel.sql("todos.due IS NULL, todos.due ASC, todos.created_at ASC")) }, dependent: :delete_all
has_many :notes, -> {order "created_at DESC"}, dependent: :delete_all has_many :notes, -> { order "created_at DESC" }, dependent: :delete_all
has_many :recurring_todos has_many :recurring_todos
belongs_to :default_context, :class_name => "Context", :foreign_key => "default_context_id" belongs_to :default_context, :class_name => "Context", :foreign_key => "default_context_id"
@ -16,16 +16,13 @@ class Project < ApplicationRecord
before_create :set_last_reviewed_now before_create :set_last_reviewed_now
validates_presence_of :name validates :name, presence: true, length: { maximum: 255 }, uniqueness: { scope: :user_id }
validates_length_of :name, :maximum => 255
validates_uniqueness_of :name, :scope => "user_id", :case_sensitive => true
acts_as_list :scope => 'user_id = #{user_id} AND state = \'#{state}\'', :top_of_list => 0 acts_as_list :scope => 'user_id = #{user_id} AND state = \'#{state}\'', :top_of_list => 0
include AASM include AASM
aasm :column => :state do aasm :column => :state do
state :active, :initial => true state :active, :initial => true
state :hidden state :hidden
state :completed, :enter => :set_completed_at_date, :exit => :clear_completed_at_date state :completed, :enter => :set_completed_at_date, :exit => :clear_completed_at_date
@ -50,7 +47,7 @@ class Project < ApplicationRecord
end end
def set_last_reviewed_now def set_last_reviewed_now
self.last_reviewed = Time.now self.last_reviewed = Time.zone.now
end end
def set_completed_at_date def set_completed_at_date
@ -89,24 +86,24 @@ class Project < ApplicationRecord
end end
def needs_review?(user) def needs_review?(user)
return active? && ( last_reviewed.nil? || return active? && (last_reviewed.nil? ||
(last_reviewed < Time.current - user.prefs.review_period.days)) (last_reviewed < Time.current - user.prefs.review_period.days))
end end
def blocked? def blocked?
## mutually exclusive for stalled and blocked ## mutually exclusive for stalled and blocked
# blocked is uncompleted project with deferred or pending todos, but no next actions # blocked is uncompleted project with deferred or pending todos, but no next actions
return false if self.completed? return false if completed?
return !self.todos.deferred_or_blocked.empty? && self.todos.active.empty? return !todos.deferred_or_blocked.empty? && todos.active.empty?
end end
def stalled? def stalled?
# Stalled projects are active projects with no active next actions # Stalled projects are active projects with no active next actions
return false if self.completed? || self.hidden? return false if completed? || hidden?
return !self.todos.deferred_or_blocked.exists? && !self.todos.active.exists? return !todos.deferred_or_blocked.exists? && !todos.active.exists?
end end
def shortened_name(length=40) def shortened_name(length = 40)
name.truncate(length, :omission => "...").html_safe name.truncate(length, :omission => "...").html_safe
end end
@ -145,11 +142,9 @@ class Project < ApplicationRecord
end end
count count
end end
end end
class NullProject class NullProject
def hidden? def hidden?
false false
end end
@ -169,5 +164,4 @@ class NullProject
def persisted? def persisted?
false false
end end
end end

View file

@ -5,8 +5,8 @@ class RecurringTodo < ApplicationRecord
has_many :todos has_many :todos
scope :active, -> { where state: 'active'} scope :active, -> { where state: 'active' }
scope :completed, -> { where state: 'completed'} scope :completed, -> { where state: 'completed' }
include IsTaggable include IsTaggable
@ -24,10 +24,12 @@ class RecurringTodo < ApplicationRecord
end end
end end
validates_presence_of :description, :recurring_period, :target, :ends_on, :context validates :description, presence: true, length: { maximum: 100 }
validates :notes, length: { maximum: 60_000, allow_nil: true }
validates_length_of :description, :maximum => 100 validates :recurring_period, presence: true
validates_length_of :notes, :maximum => 60000, :allow_nil => true validates :target, presence: true
validates :ends_on, presence: true
validates :context, presence: true
validate :period_validation validate :period_validation
validate :pattern_specific_validations validate :pattern_specific_validations
@ -72,7 +74,7 @@ class RecurringTodo < ApplicationRecord
def pattern def pattern
if valid_period? if valid_period?
@pattern = eval("RecurringTodos::#{recurring_period.capitalize}RecurrencePattern.new(user)") @pattern = eval("RecurringTodos::#{recurring_period.capitalize}RecurrencePattern.new(user)", binding, __FILE__, __LINE__)
@pattern.build_from_recurring_todo(self) @pattern.build_from_recurring_todo(self)
end end
@pattern @pattern
@ -118,12 +120,12 @@ class RecurringTodo < ApplicationRecord
def remove_from_project! def remove_from_project!
self.project = nil self.project = nil
self.save save
end end
def clear_todos_association def clear_todos_association
unless todos.nil? unless todos.nil?
self.todos.each do |t| todos.each do |t|
t.recurring_todo = nil t.recurring_todo = nil
t.save t.save
end end
@ -132,11 +134,10 @@ class RecurringTodo < ApplicationRecord
def increment_occurrences def increment_occurrences
self.occurrences_count += 1 self.occurrences_count += 1
self.save save
end end
def continues_recurring?(previous) def continues_recurring?(previous)
pattern.continues_recurring?(previous) pattern.continues_recurring?(previous)
end end
end end

View file

@ -1,7 +1,5 @@
module RecurringTodos module RecurringTodos
class AbstractRecurrencePattern class AbstractRecurrencePattern
attr_accessor :attributes attr_accessor :attributes
def initialize(user) def initialize(user)
@ -46,9 +44,13 @@ module RecurringTodos
def xth(x) def xth(x)
xth_day = [ xth_day = [
I18n.t('todos.recurrence.pattern.first'),I18n.t('todos.recurrence.pattern.second'),I18n.t('todos.recurrence.pattern.third'), I18n.t('todos.recurrence.pattern.first'),
I18n.t('todos.recurrence.pattern.fourth'),I18n.t('todos.recurrence.pattern.last')] I18n.t('todos.recurrence.pattern.second'),
x.nil? ? '??' : xth_day[x-1] I18n.t('todos.recurrence.pattern.third'),
I18n.t('todos.recurrence.pattern.fourth'),
I18n.t('todos.recurrence.pattern.last'),
]
x.nil? ? '??' : xth_day[x - 1]
end end
def day_of_week_as_text(day) def day_of_week_as_text(day)
@ -78,11 +80,11 @@ module RecurringTodos
end end
def validate_not_blank(object, msg) def validate_not_blank(object, msg)
errors[:base] << msg if object.blank? errors.add(:base, msg) if object.blank?
end end
def validate_not_nil(object, msg) def validate_not_nil(object, msg)
errors[:base] << msg if object.nil? errors.add(:base, msg) if object.nil?
end end
def validate def validate
@ -98,7 +100,7 @@ module RecurringTodos
when "ends_on_end_date" when "ends_on_end_date"
validate_not_blank(end_date, "The end date needs to be filled in for 'Ends on'") validate_not_blank(end_date, "The end date needs to be filled in for 'Ends on'")
else else
errors[:base] << "The end of the recurrence is not selected" unless ends_on == "no_end_date" errors.add(:base, "The end of the recurrence is not selected") unless ends_on == "no_end_date"
end end
end end
@ -111,7 +113,7 @@ module RecurringTodos
validate_not_nil(show_always?, "Please select when to show the action") validate_not_nil(show_always?, "Please select when to show the action")
validate_not_blank(show_from_delta, "Please fill in the number of days to show the todo before the due date") unless show_always? validate_not_blank(show_from_delta, "Please fill in the number of days to show the todo before the due date") unless show_always?
else else
errors[:base] << "Unexpected value of recurrence target selector '#{target}'" errors.add(:base, "Unexpected value of recurrence target selector '#{target}'")
end end
end end
@ -147,7 +149,7 @@ module RecurringTodos
# checks if the next todos should be put in the tickler for recurrence_target == 'due_date' # checks if the next todos should be put in the tickler for recurrence_target == 'due_date'
def put_in_tickler? def put_in_tickler?
!( show_always? || show_from_delta.nil?) !(show_always? || show_from_delta.nil?)
end end
def get_next_date(previous) def get_next_date(previous)
@ -156,13 +158,13 @@ module RecurringTodos
def continues_recurring?(previous) def continues_recurring?(previous)
return @recurring_todo.occurrences_count < @recurring_todo.number_of_occurrences unless @recurring_todo.number_of_occurrences.nil? return @recurring_todo.occurrences_count < @recurring_todo.number_of_occurrences unless @recurring_todo.number_of_occurrences.nil?
return true if self.end_date.nil? || self.ends_on == 'no_end_date' return true if end_date.nil? || ends_on == 'no_end_date'
case self.target case target
when 'due_date' when 'due_date'
get_due_date(previous) <= self.end_date get_due_date(previous) <= end_date
when 'show_from_date' when 'show_from_date'
get_show_from_date(previous) <= self.end_date get_show_from_date(previous) <= end_date
end end
end end
@ -172,8 +174,8 @@ module RecurringTodos
# takes start_from and previous into account. # takes start_from and previous into account.
# offset needs to be 1.day for daily patterns or the start will be the # offset needs to be 1.day for daily patterns or the start will be the
# same day as the previous # same day as the previous
def determine_start(previous, offset=0.day) def determine_start(previous, offset = 0.day)
start = self.start_from || NullTime.new start = start_from || NullTime.new
if previous if previous
# check if the start_from date is later than previous. If so, use # check if the start_from date is later than previous. If so, use
# start_from as start to search for next date # start_from as start to search for next date
@ -207,14 +209,14 @@ module RecurringTodos
end end
def find_xth_day_of_month(x, weekday, month, year) def find_xth_day_of_month(x, weekday, month, year)
start = Time.zone.local(year,month,1) start = Time.zone.local(year, month, 1)
n = x n = x
while n > 0 while n > 0
while start.wday() != weekday while start.wday() != weekday
start += 1.day start += 1.day
end end
n -= 1 n -= 1
start += 1.day unless n==0 start += 1.day unless n == 0
end end
start start
end end

View file

@ -1,20 +1,18 @@
module RecurringTodos module RecurringTodos
class AbstractRecurringTodosBuilder class AbstractRecurringTodosBuilder
attr_reader :mapped_attributes, :pattern attr_reader :mapped_attributes, :pattern
def initialize(user, attributes, pattern_class) def initialize(user, attributes, pattern_class)
@user = user @user = user
@saved = false @saved = false
@attributes = attributes @attributes = attributes
@selector = get_selector(selector_key) @selector = get_selector(selector_key)
@filterred_attributes = filter_attributes(@attributes) @filtered_attributes = filter_attributes(@attributes)
@mapped_attributes = map_attributes(@filterred_attributes) @mapped_attributes = map_attributes(@filtered_attributes)
@pattern = pattern_class.new(user) @pattern = pattern_class.new(user)
@pattern.attributes = @mapped_attributes @pattern.attributes = @mapped_attributes
end end
# build does not add tags. For tags, the recurring todos needs to be saved # build does not add tags. For tags, the recurring todos needs to be saved
@ -60,36 +58,36 @@ module RecurringTodos
def filter_attributes(attributes) def filter_attributes(attributes)
# get pattern independend attributes # get pattern independend attributes
filterred_attributes = filter_generic_attributes(attributes) filtered_attributes = filter_generic_attributes(attributes)
# append pattern specific attributes # append pattern specific attributes
attributes_to_filter.each{|key| filterred_attributes[key]= attributes[key] if attributes.key?(key)} attributes_to_filter.each { |key| filtered_attributes[key] = attributes[key] if attributes.key?(key) }
filterred_attributes filtered_attributes
end end
def filter_generic_attributes(attributes) def filter_generic_attributes(attributes)
return Tracks::AttributeHandler.new(@user, { return Tracks::AttributeHandler.new(@user, {
recurring_period: attributes[:recurring_period], recurring_period: attributes[:recurring_period],
description: attributes[:description], description: attributes[:description],
notes: attributes[:notes], notes: attributes[:notes],
tag_list: tag_list_or_empty_string(attributes), tag_list: tag_list_or_empty_string(attributes),
start_from: attributes[:start_from], start_from: attributes[:start_from],
end_date: attributes[:end_date], end_date: attributes[:end_date],
ends_on: attributes[:ends_on], ends_on: attributes[:ends_on],
number_of_occurrences: attributes[:number_of_occurrences], number_of_occurrences: attributes[:number_of_occurrences],
project: attributes[:project], project: attributes[:project],
context: attributes[:context], context: attributes[:context],
project_id: attributes[:project_id], project_id: attributes[:project_id],
context_id: attributes[:context_id], context_id: attributes[:context_id],
target: attributes[:recurring_target], target: attributes[:recurring_target],
show_from_delta: attributes[:recurring_show_days_before], show_from_delta: attributes[:recurring_show_days_before],
show_always: attributes[:recurring_show_always] show_always: attributes[:recurring_show_always]
}) })
end end
def map_attributes def map_attributes
# should be overwritten by subclasses to map attributes to activerecord model attributes # should be overwritten by subclasses to map attributes to activerecord model attributes
@filterred_attributes @filtered_attributes
end end
# helper method to be used in mapped_attributes in subclasses # helper method to be used in mapped_attributes in subclasses
@ -129,7 +127,7 @@ module RecurringTodos
end end
def save_tags def save_tags
@recurring_todo.tag_with(@filterred_attributes[:tag_list]) if @filterred_attributes[:tag_list].present? @recurring_todo.tag_with(@filtered_attributes[:tag_list]) if @filtered_attributes[:tag_list].present?
@recurring_todo.reload @recurring_todo.reload
end end
@ -145,7 +143,5 @@ module RecurringTodos
# avoid nil # avoid nil
attributes[:tag_list].blank? ? "" : attributes[:tag_list].strip attributes[:tag_list].blank? ? "" : attributes[:tag_list].strip
end end
end end
end end

View file

@ -1,7 +1,5 @@
module RecurringTodos module RecurringTodos
class DailyRecurrencePattern < AbstractRecurrencePattern class DailyRecurrencePattern < AbstractRecurrencePattern
def initialize(user) def initialize(user)
super user super user
end end
@ -26,7 +24,7 @@ module RecurringTodos
def validate def validate
super super
errors[:base] << "Every other nth day may not be empty for this daily recurrence setting" if (!only_work_days?) && every_x_days.blank? errors.add(:base, "Every other nth day may not be empty for this daily recurrence setting") if (!only_work_days?) && every_x_days.blank?
end end
def get_next_date(previous) def get_next_date(previous)
@ -38,15 +36,14 @@ module RecurringTodos
if only_work_days? if only_work_days?
# jump over weekend if necessary # jump over weekend if necessary
return start + 2.day if start.wday() == 6 # saturday return start + 2.day if start.wday == 6 # saturday
return start + 1.day if start.wday() == 0 # sunday return start + 1.day if start.wday == 0 # sunday
return start return start
else else
# if there was no previous todo, do not add n: the first todo starts on # if there was no previous todo, do not add n: the first todo starts on
# today or on start_from # today or on start_from
return previous == nil ? start : start+every_x_days.day-1.day return previous == nil ? start : start + every_x_days.day - 1.day
end end
end end
end end
end end

View file

@ -1,5 +1,4 @@
module RecurringTodos module RecurringTodos
class DailyRecurringTodosBuilder < AbstractRecurringTodosBuilder class DailyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo, :pattern attr_reader :recurring_todo, :pattern
@ -19,7 +18,7 @@ module RecurringTodos
def only_work_days?(daily_selector) def only_work_days?(daily_selector)
{ 'daily_every_x_day' => false, { 'daily_every_x_day' => false,
'daily_every_work_day' => true}[daily_selector] 'daily_every_work_day' => true }[daily_selector]
end end
def selector_key def selector_key
@ -29,7 +28,5 @@ module RecurringTodos
def valid_selector?(selector) def valid_selector?(selector)
%w{daily_every_x_day daily_every_work_day}.include?(selector) %w{daily_every_x_day daily_every_work_day}.include?(selector)
end end
end end
end end

View file

@ -1,7 +1,5 @@
module RecurringTodos module RecurringTodos
class MonthlyRecurrencePattern < AbstractRecurrencePattern class MonthlyRecurrencePattern < AbstractRecurrencePattern
def initialize(user) def initialize(user)
super user super user
end end
@ -34,7 +32,7 @@ module RecurringTodos
get(:recurrence_selector) == 1 ? get(:every_other2) : 1 get(:recurrence_selector) == 1 ? get(:every_other2) : 1
end end
def every_xth_day(default=nil) def every_xth_day(default = nil)
get(:every_other3) || default get(:every_other3) || default
end end

View file

@ -1,5 +1,4 @@
module RecurringTodos module RecurringTodos
class MonthlyRecurringTodosBuilder < AbstractRecurringTodosBuilder class MonthlyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo attr_reader :recurring_todo
@ -26,7 +25,7 @@ module RecurringTodos
end end
def get_recurrence_selector def get_recurrence_selector
@selector=='monthly_every_x_day' ? 0 : 1 @selector == 'monthly_every_x_day' ? 0 : 1
end end
def get_every_other2 def get_every_other2
@ -40,7 +39,5 @@ module RecurringTodos
def valid_selector?(selector) def valid_selector?(selector)
%w{monthly_every_x_day monthly_every_xth_day}.include?(selector) %w{monthly_every_x_day monthly_every_xth_day}.include?(selector)
end end
end end
end end

View file

@ -1,10 +1,8 @@
module RecurringTodos module RecurringTodos
class RecurringTodosBuilder class RecurringTodosBuilder
attr_reader :builder, :project, :context, :tag_list, :user attr_reader :builder, :project, :context, :tag_list, :user
def initialize (user, attributes) def initialize(user, attributes)
@user = user @user = user
@attributes = Tracks::AttributeHandler.new(@user, attributes) @attributes = Tracks::AttributeHandler.new(@user, attributes)
@ -17,7 +15,7 @@ module RecurringTodos
def create_builder(selector) def create_builder(selector)
raise "Unknown recurrence selector in :recurring_period (#{selector})" unless valid_selector? selector raise "Unknown recurrence selector in :recurring_period (#{selector})" unless valid_selector? selector
eval("RecurringTodos::#{selector.capitalize}RecurringTodosBuilder.new(@user, @attributes)") eval("RecurringTodos::#{selector.capitalize}RecurringTodosBuilder.new(@user, @attributes)", binding, __FILE__, __LINE__)
end end
def build def build
@ -62,7 +60,7 @@ module RecurringTodos
end end
def parse_dates def parse_dates
%w{end_date start_from}.each {|date| @attributes.parse_date date } %w{end_date start_from}.each { |date| @attributes.parse_date date }
end end
def parse_project def parse_project
@ -72,7 +70,5 @@ module RecurringTodos
def parse_context def parse_context
@context, @new_context_created = @attributes.parse_collection(:context, @user.contexts) @context, @new_context_created = @attributes.parse_collection(:context, @user.contexts)
end end
end end
end
end

View file

@ -1,7 +1,5 @@
module RecurringTodos module RecurringTodos
class WeeklyRecurrencePattern < AbstractRecurrencePattern class WeeklyRecurrencePattern < AbstractRecurrencePattern
def initialize(user) def initialize(user)
super user super user
end end
@ -31,8 +29,8 @@ module RecurringTodos
def validate def validate
super super
validate_not_blank(every_x_week, "Every other nth week may not be empty for weekly recurrence setting") validate_not_blank(every_x_week, "Every other nth week may not be empty for weekly recurrence setting")
something_set = %w{sunday monday tuesday wednesday thursday friday saturday}.inject(false) { |set, day| set || self.send("on_#{day}") } something_set = %w{ sunday monday tuesday wednesday thursday friday saturday }.inject(false) { |set, day| set || send("on_#{day}") }
errors[:base] << "You must specify at least one day on which the todo recurs" unless something_set errors.add(:base, "You must specify at least one day on which the todo recurs") unless something_set
end end
def get_next_date(previous) def get_next_date(previous)
@ -43,30 +41,30 @@ module RecurringTodos
# we did not find anything this week, so check the nth next, starting from # we did not find anything this week, so check the nth next, starting from
# sunday # sunday
start = start + self.every_x_week.week - (start.wday()).days start = start + every_x_week.week - (start.wday).days
start = find_first_day_in_this_week(start) start = find_first_day_in_this_week(start)
return start unless start == -1 return start unless start == -1
raise Exception.new, "unable to find next weekly date (#{self.every_day})" raise Exception.new, "unable to find next weekly date (#{every_day})"
end end
private private
def determine_start_date(previous) def determine_start_date(previous)
if previous.nil? if previous.nil?
return self.start_from || Time.zone.now return start_from || Time.zone.now
else else
start = previous + 1.day start = previous + 1.day
if start.wday() == 0 if start.wday == 0
# we went to a new week, go to the nth next week and find first match # we went to a new week, go to the nth next week and find first match
# that week. Note that we already went into the next week, so -1 # that week. Note that we already went into the next week, so -1
start += (every_x_week-1).week start += (every_x_week - 1).week
end end
unless self.start_from.nil? unless start_from.nil?
# check if the start_from date is later than previous. If so, use # check if the start_from date is later than previous. If so, use
# start_from as start to search for next date # start_from as start to search for next date
start = self.start_from if self.start_from > previous start = start_from if start_from > previous
end end
return start return start
end end
@ -74,13 +72,10 @@ module RecurringTodos
def find_first_day_in_this_week(start) def find_first_day_in_this_week(start)
# check if there are any days left this week for the next todo # check if there are any days left this week for the next todo
start.wday().upto 6 do |i| start.wday.upto 6 do |i|
return start + (i-start.wday()).days if on_xday(i) return start + (i - start.wday).days if on_xday(i)
end end
-1 -1
end end
end end
end end

View file

@ -1,5 +1,4 @@
module RecurringTodos module RecurringTodos
class WeeklyRecurringTodosBuilder < AbstractRecurringTodosBuilder class WeeklyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo attr_reader :recurring_todo
@ -8,7 +7,7 @@ module RecurringTodos
end end
def attributes_to_filter def attributes_to_filter
%w{weekly_selector weekly_every_x_week} + %w{monday tuesday wednesday thursday friday saturday sunday}.map{|day| "weekly_return_#{day}" } %w{ weekly_selector weekly_every_x_week } + %w{ monday tuesday wednesday thursday friday saturday sunday }.map{ |day| "weekly_return_#{day}" }
end end
def map_attributes(mapping) def map_attributes(mapping)
@ -26,7 +25,7 @@ module RecurringTodos
mapping.set_if_nil(key, ' ') # avoid nil mapping.set_if_nil(key, ' ') # avoid nil
mapping.set_if_nil(source_key, ' ') # avoid nil mapping.set_if_nil(source_key, ' ') # avoid nil
mapping.set(key, mapping.get(key)[0, index] + mapping.get(source_key) + mapping.get(key)[index+1, mapping.get(key).length]) mapping.set(key, mapping.get(key)[0, index] + mapping.get(source_key) + mapping.get(key)[index + 1, mapping.get(key).length])
mapping.except(source_key) mapping.except(source_key)
end end
@ -37,7 +36,5 @@ module RecurringTodos
def valid_selector?(key) def valid_selector?(key)
true true
end end
end end
end end

View file

@ -1,7 +1,5 @@
module RecurringTodos module RecurringTodos
class YearlyRecurrencePattern < AbstractRecurrencePattern class YearlyRecurrencePattern < AbstractRecurrencePattern
def initialize(user) def initialize(user)
super user super user
end end
@ -33,7 +31,7 @@ module RecurringTodos
end end
def recurrence_pattern def recurrence_pattern
if self.recurrence_selector == 0 if recurrence_selector == 0
I18n.t("todos.recurrence.pattern.every_year_on", :date => date_as_month_day) I18n.t("todos.recurrence.pattern.every_year_on", :date => date_as_month_day)
else else
I18n.t("todos.recurrence.pattern.every_year_on", I18n.t("todos.recurrence.pattern.every_year_on",
@ -83,7 +81,7 @@ module RecurringTodos
if start.month > month || (start.month == month && start.day >= every_x_day) if start.month > month || (start.month == month && start.day >= every_x_day)
# if there is no next month n and day m in this year, search in next # if there is no next month n and day m in this year, search in next
# year # year
start = Time.zone.local(start.year+1, month, 1) start = Time.zone.local(start.year + 1, month, 1)
else else
# if there is a next month n, stay in this year # if there is a next month n, stay in this year
start = Time.zone.local(start.year, month, 1) start = Time.zone.local(start.year, month, 1)
@ -93,17 +91,16 @@ module RecurringTodos
def get_relative_weekday_of_month(start, month) def get_relative_weekday_of_month(start, month)
# if there is no next month n in this year, search in next year # if there is no next month n in this year, search in next year
the_next = start.month > month ? Time.zone.local(start.year+1, month, 1) : start the_next = start.month > month ? Time.zone.local(start.year + 1, month, 1) : start
# get the xth day of the month # get the xth day of the month
the_next = get_xth_day_of_month(self.every_xth_day, day_of_week, month, the_next.year) the_next = get_xth_day_of_month(every_xth_day, day_of_week, month, the_next.year)
# if the_next is before previous, we went back into the past, so try next # if the_next is before previous, we went back into the past, so try next
# year # year
the_next = get_xth_day_of_month(self.every_xth_day, day_of_week, month, start.year+1) if the_next <= start the_next = get_xth_day_of_month(every_xth_day, day_of_week, month, start.year + 1) if the_next <= start
the_next the_next
end end
end end
end end

View file

@ -1,5 +1,4 @@
module RecurringTodos module RecurringTodos
class YearlyRecurringTodosBuilder < AbstractRecurringTodosBuilder class YearlyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo attr_reader :recurring_todo
@ -33,13 +32,11 @@ module RecurringTodos
end end
def get_recurrence_selector def get_recurrence_selector
@selector=='yearly_every_x_day' ? 0 : 1 @selector == 'yearly_every_x_day' ? 0 : 1
end end
def get_every_other2 def get_every_other2
{ 0 => :yearly_month_of_year, 1 => :yearly_month_of_year2 }[get_recurrence_selector] { 0 => :yearly_month_of_year, 1 => :yearly_month_of_year2 }[get_recurrence_selector]
end end
end end
end end

View file

@ -1,5 +1,4 @@
module Search module Search
class SearchResults class SearchResults
attr_reader :results attr_reader :results
@ -20,35 +19,33 @@ module Search
end end
def number_of_finds def number_of_finds
results[:todos].size + results[:projects].size + results[:notes].size + results[:contexts].size + results[:tags].size results[:todos].size + results[:projects].size + results[:notes].size + results[:contexts].size + results[:tags].size
end end
private private
def incomplete_todos(terms) def incomplete_todos(terms)
@user.todos. @user.todos
where("(todos.description " + Common.like_operator + " ? OR todos.notes " + Common.like_operator + " ?) AND todos.completed_at IS NULL", terms, terms). .where("(todos.description " + Common.like_operator + " ? OR todos.notes " + Common.like_operator + " ?) AND todos.completed_at IS NULL", terms, terms)
includes(Todo::DEFAULT_INCLUDES). .includes(Todo::DEFAULT_INCLUDES)
reorder(Arel.sql("todos.due IS NULL, todos.due ASC, todos.created_at ASC")) .reorder(Arel.sql("todos.due IS NULL, todos.due ASC, todos.created_at ASC"))
end end
def complete_todos(terms) def complete_todos(terms)
@user.todos. @user.todos
where("(todos.description " + Common.like_operator + " ? OR todos.notes " + Common.like_operator + " ?) AND NOT (todos.completed_at IS NULL)", terms, terms). .where("(todos.description " + Common.like_operator + " ? OR todos.notes " + Common.like_operator + " ?) AND NOT (todos.completed_at IS NULL)", terms, terms)
includes(Todo::DEFAULT_INCLUDES). .includes(Todo::DEFAULT_INCLUDES)
reorder("todos.completed_at DESC") .reorder("todos.completed_at DESC")
end end
def todo_tags_by_name(terms) def todo_tags_by_name(terms)
Tagging.find_by_sql([ Tagging.find_by_sql(["
"SELECT DISTINCT tags.name as name "+ SELECT DISTINCT tags.name as name
"FROM tags "+ FROM tags
"LEFT JOIN taggings ON tags.id = taggings.tag_id "+ LEFT JOIN taggings ON tags.id = taggings.tag_id
"LEFT JOIN todos ON taggings.taggable_id = todos.id "+ LEFT JOIN todos ON taggings.taggable_id = todos.id
"WHERE todos.user_id=? "+ WHERE todos.user_id = ?
"AND tags.name " + Common.like_operator + " ? ", @user.id, terms]) AND tags.name " + Common.like_operator + " ? ", @user.id, terms])
end end
end end
end end

View file

@ -1,9 +1,9 @@
module Stats module Stats
class Actions class Actions
SECONDS_PER_DAY = 86_400
SECONDS_PER_DAY = 86400;
attr_reader :user attr_reader :user
def initialize(user) def initialize(user)
@user = user @user = user
@ -58,17 +58,17 @@ module Stats
@interpolated_actions_created_this_month = interpolate_avg_for_current_month(@actions_created_last12months_array) @interpolated_actions_created_this_month = interpolate_avg_for_current_month(@actions_created_last12months_array)
@interpolated_actions_done_this_month = interpolate_avg_for_current_month(@actions_done_last12months_array) @interpolated_actions_done_this_month = interpolate_avg_for_current_month(@actions_done_last12months_array)
@created_count_array = Array.new(13, actions_last12months.created_after(@cut_off_year).count(:all)/12.0) @created_count_array = Array.new(13, actions_last12months.created_after(@cut_off_year).count(:all) / 12.0)
@done_count_array = Array.new(13, actions_last12months.completed_after(@cut_off_year).count(:all)/12.0) @done_count_array = Array.new(13, actions_last12months.completed_after(@cut_off_year).count(:all) / 12.0)
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.labels.avg_created'), data: @created_count_array, type: "line"}, { label: I18n.t('stats.labels.avg_created'), data: @created_count_array, type: "line" },
{label: I18n.t('stats.labels.avg_completed'), data: @done_count_array, type: "line"}, { label: I18n.t('stats.labels.avg_completed'), data: @done_count_array, type: "line" },
{label: I18n.t('stats.labels.month_avg_completed', :months => 3), data: @actions_done_avg_last12months_array, type: "line"}, { label: I18n.t('stats.labels.month_avg_completed', :months => 3), data: @actions_done_avg_last12months_array, type: "line" },
{label: I18n.t('stats.labels.month_avg_created', :months => 3), data: @actions_created_avg_last12months_array, type: "line"}, { label: I18n.t('stats.labels.month_avg_created', :months => 3), data: @actions_created_avg_last12months_array, type: "line" },
{label: I18n.t('stats.labels.created'), data: @actions_created_last12months_array}, { label: I18n.t('stats.labels.created'), data: @actions_created_last12months_array },
{label: I18n.t('stats.labels.completed'), data: @actions_done_last12months_array}, { label: I18n.t('stats.labels.completed'), data: @actions_done_last12months_array },
], ],
labels: array_of_month_labels(@done_count_array.size), labels: array_of_month_labels(@done_count_array.size),
} }
@ -86,28 +86,28 @@ module Stats
# find max for graph in both hashes # find max for graph in both hashes
@max = [@actions_done_last30days_array.max, @actions_created_last30days_array.max].max @max = [@actions_done_last30days_array.max, @actions_created_last30days_array.max].max
created_count_array = Array.new(30){ |i| @actions_created_last30days.size/30.0 } created_count_array = Array.new(30) { |i| @actions_created_last30days.size / 30.0 }
done_count_array = Array.new(30){ |i| @actions_done_last30days.size/30.0 } done_count_array = Array.new(30) { |i| @actions_done_last30days.size / 30.0 }
# TODO: make the strftime i18n proof # TODO: make the strftime i18n proof
time_labels = Array.new(30){ |i| I18n.l(Time.zone.now-i.days, :format => :stats) } time_labels = Array.new(30) { |i| I18n.l(Time.zone.now - i.days, :format => :stats) }
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.labels.avg_created'), data: created_count_array, type: "line"}, { label: I18n.t('stats.labels.avg_created'), data: created_count_array, type: "line" },
{label: I18n.t('stats.labels.avg_completed'), data: done_count_array, type: "line"}, { label: I18n.t('stats.labels.avg_completed'), data: done_count_array, type: "line" },
{label: I18n.t('stats.labels.created'), data: @actions_created_last30days_array}, { label: I18n.t('stats.labels.created'), data: @actions_created_last30days_array },
{label: I18n.t('stats.labels.completed'), data: @actions_done_last30days_array}, { label: I18n.t('stats.labels.completed'), data: @actions_done_last30days_array },
], ],
labels: time_labels, labels: time_labels,
} }
end end
def completion_time_data def completion_time_data
@actions_completion_time = @user.todos.completed.select("completed_at, created_at").reorder("completed_at DESC" ) @actions_completion_time = @user.todos.completed.select("completed_at, created_at").reorder("completed_at DESC")
# convert to array and fill in non-existing weeks with 0 # convert to array and fill in non-existing weeks with 0
@max_weeks = @actions_completion_time.last ? difference_in_weeks(@today, @actions_completion_time.last.completed_at) : 1 @max_weeks = @actions_completion_time.last ? difference_in_weeks(@today, @actions_completion_time.last.completed_at) : 1
@actions_completed_per_week_array = convert_to_weeks_running_array(@actions_completion_time, @max_weeks+1) @actions_completed_per_week_array = convert_to_weeks_running_array(@actions_completion_time, @max_weeks + 1)
# stop the chart after 10 weeks # stop the chart after 10 weeks
@count = [10, @max_weeks].min @count = [10, @max_weeks].min
@ -119,14 +119,14 @@ module Stats
# get percentage done cumulative # get percentage done cumulative
@cum_percent_done = convert_to_cumulative_array(@actions_completion_time_array, @actions_completion_time.count(:all)) @cum_percent_done = convert_to_cumulative_array(@actions_completion_time_array, @actions_completion_time.count(:all))
time_labels = Array.new(@count){ |i| "#{i}-#{i+1}" } time_labels = Array.new(@count) { |i| "#{i}-#{i + 1}" }
time_labels[0] = I18n.t('stats.within_one') time_labels[0] = I18n.t('stats.within_one')
time_labels[@count] = "> #{@count}" time_labels[@count] = "> #{@count}"
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.legend.percentage'), data: @cum_percent_done, type: "line"}, { label: I18n.t('stats.legend.percentage'), data: @cum_percent_done, type: "line" },
{label: I18n.t('stats.legend.actions'), data: @actions_completion_time_array}, { label: I18n.t('stats.legend.actions'), data: @actions_completion_time_array },
], ],
labels: time_labels, labels: time_labels,
} }
@ -137,7 +137,7 @@ module Stats
# convert to array and fill in non-existing weeks with 0 # convert to array and fill in non-existing weeks with 0
@max_weeks = difference_in_weeks(@today, @actions_running_time.last.created_at) @max_weeks = difference_in_weeks(@today, @actions_running_time.last.created_at)
@actions_running_per_week_array = convert_to_weeks_from_today_array(@actions_running_time, @max_weeks+1, :created_at) @actions_running_per_week_array = convert_to_weeks_from_today_array(@actions_running_time, @max_weeks + 1, :created_at)
# cut off chart at 52 weeks = one year # cut off chart at 52 weeks = one year
@count = [52, @max_weeks].min @count = [52, @max_weeks].min
@ -147,16 +147,16 @@ module Stats
@max_actions = @actions_running_time_array.max @max_actions = @actions_running_time_array.max
# get percentage done cumulative # get percentage done cumulative
@cum_percent_done = convert_to_cumulative_array(@actions_running_time_array, @actions_running_time.count ) @cum_percent_done = convert_to_cumulative_array(@actions_running_time_array, @actions_running_time.count)
time_labels = Array.new(@count){ |i| "#{i}-#{i+1}" } time_labels = Array.new(@count) { |i| "#{i}-#{i + 1}" }
time_labels[0] = "< 1" time_labels[0] = "< 1"
time_labels[@count] = "> #{@count}" time_labels[@count] = "> #{@count}"
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.running_time_all_legend.percentage'), data: @cum_percent_done, type: "line"}, { label: I18n.t('stats.running_time_all_legend.percentage'), data: @cum_percent_done, type: "line" },
{label: I18n.t('stats.running_time_all_legend.actions'), data: @actions_running_time_array}, { label: I18n.t('stats.running_time_all_legend.actions'), data: @actions_running_time_array },
], ],
labels: time_labels, labels: time_labels,
} }
@ -171,12 +171,12 @@ module Stats
# - actions not deferred (show_from must be null) # - actions not deferred (show_from must be null)
# - actions not pending/blocked # - actions not pending/blocked
@actions_running_time = @user.todos.not_completed.not_hidden.not_deferred_or_blocked. @actions_running_time = @user.todos.not_completed.not_hidden.not_deferred_or_blocked
select("todos.created_at"). .select("todos.created_at")
reorder("todos.created_at DESC") .reorder("todos.created_at DESC")
@max_weeks = difference_in_weeks(@today, @actions_running_time.last.created_at) @max_weeks = difference_in_weeks(@today, @actions_running_time.last.created_at)
@actions_running_per_week_array = convert_to_weeks_from_today_array(@actions_running_time, @max_weeks+1, :created_at) @actions_running_per_week_array = convert_to_weeks_from_today_array(@actions_running_time, @max_weeks + 1, :created_at)
# cut off chart at 52 weeks = one year # cut off chart at 52 weeks = one year
@count = [52, @max_weeks].min @count = [52, @max_weeks].min
@ -186,40 +186,40 @@ module Stats
@max_actions = @actions_running_time_array.max @max_actions = @actions_running_time_array.max
# get percentage done cumulative # get percentage done cumulative
@cum_percent_done = convert_to_cumulative_array(@actions_running_time_array, @actions_running_time.count ) @cum_percent_done = convert_to_cumulative_array(@actions_running_time_array, @actions_running_time.count)
time_labels = Array.new(@count){ |i| "#{i}-#{i+1}" } time_labels = Array.new(@count) { |i| "#{i}-#{i + 1}" }
time_labels[0] = "< 1" time_labels[0] = "< 1"
time_labels[@count] = "> #{@count}" time_labels[@count] = "> #{@count}"
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.running_time_legend.percentage'), data: @cum_percent_done, type: "line"}, { label: I18n.t('stats.running_time_legend.percentage'), data: @cum_percent_done, type: "line" },
{label: I18n.t('stats.running_time_legend.actions'), data: @actions_running_time_array}, { label: I18n.t('stats.running_time_legend.actions'), data: @actions_running_time_array },
], ],
labels: time_labels, labels: time_labels,
} }
end end
def open_per_week_data def open_per_week_data
@actions_started = @user.todos.created_after(@today-53.weeks). @actions_started = @user.todos.created_after(@today - 53.weeks)
select("todos.created_at, todos.completed_at"). .select("todos.created_at, todos.completed_at")
reorder("todos.created_at DESC") .reorder("todos.created_at DESC")
@max_weeks = difference_in_weeks(@today, @actions_started.last.created_at) @max_weeks = difference_in_weeks(@today, @actions_started.last.created_at)
# cut off chart at 52 weeks = one year # cut off chart at 52 weeks = one year
@count = [52, @max_weeks].min @count = [52, @max_weeks].min
@actions_open_per_week_array = convert_to_weeks_running_from_today_array(@actions_started, @max_weeks+1) @actions_open_per_week_array = convert_to_weeks_running_from_today_array(@actions_started, @max_weeks + 1)
@actions_open_per_week_array = cut_off_array(@actions_open_per_week_array, @count) @actions_open_per_week_array = cut_off_array(@actions_open_per_week_array, @count)
time_labels = Array.new(@count+1){ |i| "#{i}-#{i+1}" } time_labels = Array.new(@count + 1) { |i| "#{i}-#{i + 1}" }
time_labels[0] = "< 1" time_labels[0] = "< 1"
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.open_per_week_legend.actions'), data: @actions_open_per_week_array}, { label: I18n.t('stats.open_per_week_legend.actions'), data: @actions_open_per_week_array },
], ],
labels: time_labels, labels: time_labels,
} }
@ -230,18 +230,18 @@ module Stats
@actions_completion_day = @user.todos.completed.select("completed_at") @actions_completion_day = @user.todos.completed.select("completed_at")
# convert to array and fill in non-existing days # convert to array and fill in non-existing days
@actions_creation_day_array = Array.new(7) { |i| 0} @actions_creation_day_array = Array.new(7) { |i| 0 }
@actions_creation_day.each { |t| @actions_creation_day_array[ t.created_at.wday ] += 1 } @actions_creation_day.each { |t| @actions_creation_day_array[t.created_at.wday] += 1 }
@max = @actions_creation_day_array.max @max = @actions_creation_day_array.max
# convert to array and fill in non-existing days # convert to array and fill in non-existing days
@actions_completion_day_array = Array.new(7) { |i| 0} @actions_completion_day_array = Array.new(7) { |i| 0 }
@actions_completion_day.each { |t| @actions_completion_day_array[ t.completed_at.wday ] += 1 } @actions_completion_day.each { |t| @actions_completion_day_array[t.completed_at.wday] += 1 }
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.labels.created'), data: @actions_creation_day_array}, { label: I18n.t('stats.labels.created'), data: @actions_creation_day_array },
{label: I18n.t('stats.labels.completed'), data: @actions_completion_day_array}, { label: I18n.t('stats.labels.completed'), data: @actions_completion_day_array },
], ],
labels: I18n.t('date.day_names'), labels: I18n.t('date.day_names'),
} }
@ -252,18 +252,18 @@ module Stats
@actions_completion_day = @user.todos.completed_after(@cut_off_month).select("completed_at") @actions_completion_day = @user.todos.completed_after(@cut_off_month).select("completed_at")
# convert to hash to be able to fill in non-existing days # convert to hash to be able to fill in non-existing days
@max=0 @max = 0
@actions_creation_day_array = Array.new(7) { |i| 0} @actions_creation_day_array = Array.new(7) { |i| 0 }
@actions_creation_day.each { |r| @actions_creation_day_array[ r.created_at.wday ] += 1 } @actions_creation_day.each { |r| @actions_creation_day_array[r.created_at.wday] += 1 }
# convert to hash to be able to fill in non-existing days # convert to hash to be able to fill in non-existing days
@actions_completion_day_array = Array.new(7) { |i| 0} @actions_completion_day_array = Array.new(7) { |i| 0 }
@actions_completion_day.each { |r| @actions_completion_day_array[r.completed_at.wday] += 1 } @actions_completion_day.each { |r| @actions_completion_day_array[r.completed_at.wday] += 1 }
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.labels.created'), data: @actions_creation_day_array}, { label: I18n.t('stats.labels.created'), data: @actions_creation_day_array },
{label: I18n.t('stats.labels.completed'), data: @actions_completion_day_array}, { label: I18n.t('stats.labels.completed'), data: @actions_completion_day_array },
], ],
labels: I18n.t('date.day_names'), labels: I18n.t('date.day_names'),
} }
@ -274,17 +274,17 @@ module Stats
@actions_completion_hour = @user.todos.completed.select("completed_at") @actions_completion_hour = @user.todos.completed.select("completed_at")
# convert to hash to be able to fill in non-existing days # convert to hash to be able to fill in non-existing days
@actions_creation_hour_array = Array.new(24) { |i| 0} @actions_creation_hour_array = Array.new(24) { |i| 0 }
@actions_creation_hour.each{|r| @actions_creation_hour_array[r.created_at.hour] += 1 } @actions_creation_hour.each { |r| @actions_creation_hour_array[r.created_at.hour] += 1 }
# convert to hash to be able to fill in non-existing days # convert to hash to be able to fill in non-existing days
@actions_completion_hour_array = Array.new(24) { |i| 0} @actions_completion_hour_array = Array.new(24) { |i| 0 }
@actions_completion_hour.each{|r| @actions_completion_hour_array[r.completed_at.hour] += 1 } @actions_completion_hour.each { |r| @actions_completion_hour_array[r.completed_at.hour] += 1 }
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.labels.created'), data: @actions_creation_hour_array}, { label: I18n.t('stats.labels.created'), data: @actions_creation_hour_array },
{label: I18n.t('stats.labels.completed'), data: @actions_completion_hour_array}, { label: I18n.t('stats.labels.completed'), data: @actions_completion_hour_array },
], ],
labels: @actions_creation_hour_array.each_with_index.map { |total, hour| [hour] }, labels: @actions_creation_hour_array.each_with_index.map { |total, hour| [hour] },
} }
@ -295,17 +295,17 @@ module Stats
@actions_completion_hour = @user.todos.completed_after(@cut_off_month).select("completed_at") @actions_completion_hour = @user.todos.completed_after(@cut_off_month).select("completed_at")
# convert to hash to be able to fill in non-existing days # convert to hash to be able to fill in non-existing days
@actions_creation_hour_array = Array.new(24) { |i| 0} @actions_creation_hour_array = Array.new(24) { |i| 0 }
@actions_creation_hour.each{|r| @actions_creation_hour_array[r.created_at.hour] += 1 } @actions_creation_hour.each { |r| @actions_creation_hour_array[r.created_at.hour] += 1 }
# convert to hash to be able to fill in non-existing days # convert to hash to be able to fill in non-existing days
@actions_completion_hour_array = Array.new(24) { |i| 0} @actions_completion_hour_array = Array.new(24) { |i| 0 }
@actions_completion_hour.each{|r| @actions_completion_hour_array[r.completed_at.hour] += 1 } @actions_completion_hour.each { |r| @actions_completion_hour_array[r.completed_at.hour] += 1 }
return { return {
datasets: [ datasets: [
{label: I18n.t('stats.labels.created'), data: @actions_creation_hour_array}, { label: I18n.t('stats.labels.created'), data: @actions_creation_hour_array },
{label: I18n.t('stats.labels.completed'), data: @actions_completion_hour_array}, { label: I18n.t('stats.labels.completed'), data: @actions_completion_hour_array },
], ],
labels: @actions_creation_hour_array.each_with_index.map { |total, hour| [hour] }, labels: @actions_creation_hour_array.each_with_index.map { |total, hour| [hour] },
} }
@ -334,7 +334,7 @@ module Stats
end end
def interpolate_avg_for_current_month(set) def interpolate_avg_for_current_month(set)
(set[0]*(1/percent_of_month) + set[1] + set[2]) / 3.0 (set[0] * (1 / percent_of_month) + set[1] + set[2]) / 3.0
end end
def percent_of_month def percent_of_month
@ -350,19 +350,19 @@ module Stats
end end
def put_events_into_month_buckets(records, array_size, date_method_on_todo) def put_events_into_month_buckets(records, array_size, date_method_on_todo)
convert_to_array(records.select { |x| x.send(date_method_on_todo) }, array_size) { |r| [difference_in_months(@today, r.send(date_method_on_todo))]} convert_to_array(records.select { |x| x.send(date_method_on_todo) }, array_size) { |r| [difference_in_months(@today, r.send(date_method_on_todo))] }
end end
def convert_to_days_from_today_array(records, array_size, date_method_on_todo) def convert_to_days_from_today_array(records, array_size, date_method_on_todo)
return convert_to_array(records, array_size){ |r| [difference_in_days(@today, r.send(date_method_on_todo))]} return convert_to_array(records, array_size) { |r| [difference_in_days(@today, r.send(date_method_on_todo))] }
end end
def convert_to_weeks_from_today_array(records, array_size, date_method_on_todo) def convert_to_weeks_from_today_array(records, array_size, date_method_on_todo)
return convert_to_array(records, array_size) { |r| [difference_in_weeks(@today, r.send(date_method_on_todo))]} return convert_to_array(records, array_size) { |r| [difference_in_weeks(@today, r.send(date_method_on_todo))] }
end end
def convert_to_weeks_running_array(records, array_size) def convert_to_weeks_running_array(records, array_size)
return convert_to_array(records, array_size) { |r| [difference_in_weeks(r.completed_at, r.created_at)]} return convert_to_array(records, array_size) { |r| [difference_in_weeks(r.completed_at, r.created_at)] }
end end
def convert_to_weeks_running_from_today_array(records, array_size) def convert_to_weeks_running_from_today_array(records, array_size)
@ -373,37 +373,37 @@ module Stats
a = [] a = []
start_week = difference_in_weeks(@today, record.created_at) start_week = difference_in_weeks(@today, record.created_at)
end_week = record.completed_at ? difference_in_weeks(@today, record.completed_at) : 0 end_week = record.completed_at ? difference_in_weeks(@today, record.completed_at) : 0
end_week.upto(start_week) { |i| a << i }; end_week.upto(start_week) { |i| a << i }
return a return a
end end
def cut_off_array_with_sum(array, cut_off) def cut_off_array_with_sum(array, cut_off)
# +1 to hold sum of rest # +1 to hold sum of rest
a = Array.new(cut_off+1){|i| array[i]||0} a = Array.new(cut_off + 1) { |i| array[i] || 0 }
# add rest of array to last elem # add rest of array to last elem
a[cut_off] += array.inject(:+) - a.inject(:+) a[cut_off] += array.inject(:+) - a.inject(:+)
return a return a
end end
def cut_off_array(array, cut_off) def cut_off_array(array, cut_off)
return Array.new(cut_off){|i| array[i]||0} return Array.new(cut_off) { |i| array[i] || 0 }
end end
def convert_to_cumulative_array(array, max) def convert_to_cumulative_array(array, max)
# calculate fractions # calculate fractions
a = Array.new(array.size){|i| array[i]*100.0/max} a = Array.new(array.size) { |i| array[i] * 100.0 / max }
# make cumulative # make cumulative
1.upto(array.size-1){ |i| a[i] += a[i-1] } 1.upto(array.size - 1) { |i| a[i] += a[i - 1] }
return a return a
end end
def difference_in_months(date1, date2) def difference_in_months(date1, date2)
return (date1.utc.year - date2.utc.year)*12 + (date1.utc.month - date2.utc.month) return (date1.utc.year - date2.utc.year) * 12 + (date1.utc.month - date2.utc.month)
end end
# assumes date1 > date2 # assumes date1 > date2
def difference_in_days(date1, date2) def difference_in_days(date1, date2)
return ((date1.utc.at_midnight-date2.utc.at_midnight)/SECONDS_PER_DAY).to_i return ((date1.utc.at_midnight - date2.utc.at_midnight) / SECONDS_PER_DAY).to_i
end end
# assumes date1 > date2 # assumes date1 > date2
@ -412,23 +412,23 @@ module Stats
end end
def three_month_avg(set, i) def three_month_avg(set, i)
(set.fetch(i){ 0 } + set.fetch(i+1){ 0 } + set.fetch(i+2){ 0 }) / 3.0 (set.fetch(i) { 0 } + set.fetch(i + 1) { 0 } + set.fetch(i + 2) { 0 }) / 3.0
end end
def set_three_month_avg(set,upper_bound) def set_three_month_avg(set, upper_bound)
(0..upper_bound-1).map { |i| three_month_avg(set, i) } (0..upper_bound - 1).map { |i| three_month_avg(set, i) }
end end
def compute_running_avg_array(set, upper_bound) def compute_running_avg_array(set, upper_bound)
result = set_three_month_avg(set, upper_bound) result = set_three_month_avg(set, upper_bound)
result[upper_bound-1] = result[upper_bound-1] * 3 if upper_bound == set.length result[upper_bound - 1] = result[upper_bound - 1] * 3 if upper_bound == set.length
result[upper_bound-2] = result[upper_bound-2] * 3 / 2 if upper_bound > 1 and upper_bound == set.length result[upper_bound - 2] = result[upper_bound - 2] * 3 / 2 if upper_bound > 1 && upper_bound == set.length
result[0] = "null" result[0] = "null"
result result
end # unsolved, not triggered, edge case for set.length == upper_bound + 1 end # unsolved, not triggered, edge case for set.length == upper_bound + 1
def month_label(i) def month_label(i)
I18n.t('date.month_names')[ (Time.zone.now.mon - i -1 ) % 12 + 1 ] I18n.t('date.month_names')[(Time.zone.now.mon - i - 1) % 12 + 1]
end end
def array_of_month_labels(count) def array_of_month_labels(count)

View file

@ -1,8 +1,7 @@
module Stats module Stats
class Chart class Chart
attr_reader :action, :height, :width attr_reader :action, :height, :width
def initialize(action, dimensions = {}) def initialize(action, dimensions = {})
@action = action @action = action
@height = dimensions.fetch(:height) { 250 } @height = dimensions.fetch(:height) { 250 }
@ -12,7 +11,5 @@ module Stats
def dimensions def dimensions
"#{width}x#{height}" "#{width}x#{height}"
end end
end end
end end

View file

@ -1,7 +1,7 @@
module Stats module Stats
class Contexts class Contexts
attr_reader :user attr_reader :user
def initialize(user) def initialize(user)
@user = user @user = user
end end

View file

@ -1,7 +1,7 @@
module Stats module Stats
class Projects class Projects
attr_reader :user attr_reader :user
def initialize(user) def initialize(user)
@user = user @user = user
end end
@ -22,8 +22,7 @@ module Stats
def find_top10_longest_running_projects def find_top10_longest_running_projects
projects = user.projects.order('created_at ASC') projects = user.projects.order('created_at ASC')
projects.sort_by{ |p| p.running_time }.reverse.take(10) projects.sort_by { |p| p.running_time }.reverse.take(10)
end end
end end
end end

View file

@ -2,8 +2,8 @@
# http://www.juixe.com/techknow/index.php/2006/07/15/acts-as-taggable-tag-cloud/ # http://www.juixe.com/techknow/index.php/2006/07/15/acts-as-taggable-tag-cloud/
module Stats module Stats
class TagCloud class TagCloud
attr_reader :levels, :tags attr_reader :levels, :tags
def initialize(tags) def initialize(tags)
@levels = 10 @levels = 10
@tags = tags.sort_by { |tag| tag.name.downcase } @tags = tags.sort_by { |tag| tag.name.downcase }
@ -32,7 +32,7 @@ module Stats
end end
def counts def counts
@counts ||= tags.map {|t| t.count} @counts ||= tags.map(&:count)
end end
end end
end end

View file

@ -1,7 +1,7 @@
module Stats module Stats
class TagCloudQuery class TagCloudQuery
attr_reader :user, :cutoff attr_reader :user, :cutoff
def initialize(user, cutoff = nil) def initialize(user, cutoff = nil)
@user = user @user = user
@cutoff = cutoff @cutoff = cutoff
@ -19,20 +19,19 @@ module Stats
def sql def sql
# TODO: parameterize limit # TODO: parameterize limit
query = "SELECT tags.id, tags.name AS name, count(*) AS count" query = "SELECT tags.id, tags.name AS name, COUNT(*) AS count"
query << " FROM taggings, tags, todos" query << " FROM taggings, tags, todos"
query << " WHERE tags.id = tag_id" query << " WHERE tags.id = tag_id"
query << " AND todos.user_id=? " query << " AND todos.user_id = ? "
query << " AND taggings.taggable_type='Todo' " query << " AND taggings.taggable_type = 'Todo' "
query << " AND taggings.taggable_id=todos.id " query << " AND taggings.taggable_id = todos.id "
if cutoff if cutoff
query << " AND (todos.created_at > ? OR " query << " AND (todos.created_at > ? OR "
query << " todos.completed_at > ?) " query << " todos.completed_at > ?) "
end end
query << " GROUP BY tags.id, tags.name" query << " GROUP BY tags.id, tags.name"
query << " ORDER BY count DESC, name" query << " ORDER BY count DESC, name "
query << " LIMIT 100" query << " LIMIT 100"
end end
end end
end end

View file

@ -1,9 +1,9 @@
module Stats module Stats
class TimeToComplete class TimeToComplete
SECONDS_PER_DAY = 86_400
SECONDS_PER_DAY = 86400;
attr_reader :actions attr_reader :actions
def initialize(actions) def initialize(actions)
@actions = actions @actions = actions
end end
@ -52,12 +52,11 @@ module Stats
end end
def sum def sum
@sum ||= durations.inject(0) {|sum, d| sum + d} @sum ||= durations.inject(0) { |sum, d| sum + d }
end end
def arbitrary_day def arbitrary_day
@arbitrary_day ||= Time.utc(2000, 1, 1, 0, 0) @arbitrary_day ||= Time.utc(2000, 1, 1, 0, 0)
end end
end end
end end

View file

@ -3,8 +3,8 @@
# and visible contexts will be included. # and visible contexts will be included.
module Stats module Stats
class TopContextsQuery class TopContextsQuery
attr_reader :user, :running, :limit attr_reader :user, :running, :limit
def initialize(user, options = {}) def initialize(user, options = {})
@user = user @user = user
@running = options.fetch(:running) { false } @running = options.fetch(:running) { false }

View file

@ -3,8 +3,8 @@
# or completed since that cutoff will be included. # or completed since that cutoff will be included.
module Stats module Stats
class TopProjectsQuery class TopProjectsQuery
attr_reader :user, :cutoff attr_reader :user, :cutoff
def initialize(user, cutoff = nil) def initialize(user, cutoff = nil)
@user = user @user = user
@cutoff = cutoff @cutoff = cutoff
@ -34,6 +34,5 @@ module Stats
query << "ORDER BY count DESC " query << "ORDER BY count DESC "
query << "LIMIT 10" query << "LIMIT 10"
end end
end end
end end

View file

@ -1,7 +1,7 @@
module Stats module Stats
class Totals class Totals
attr_reader :user attr_reader :user
def initialize(user) def initialize(user)
@user = user @user = user
end end
@ -83,6 +83,5 @@ module Stats
def tag_ids def tag_ids
@tag_ids ||= Stats::UserTagsQuery.new(user).result.map(&:id) @tag_ids ||= Stats::UserTagsQuery.new(user).result.map(&:id)
end end
end end
end end

View file

@ -1,7 +1,7 @@
module Stats module Stats
class UserStats class UserStats
attr_reader :user attr_reader :user
def initialize(user) def initialize(user)
@user = user @user = user
end end
@ -38,6 +38,5 @@ module Stats
end end
@tag_cloud_90days @tag_cloud_90days
end end
end end
end end

View file

@ -1,7 +1,7 @@
module Stats module Stats
class UserTagsQuery class UserTagsQuery
attr_reader :user attr_reader :user
def initialize(user) def initialize(user)
@user = user @user = user
end end
@ -21,6 +21,5 @@ module Stats
AND todos.user_id = ? AND todos.user_id = ?
SQL SQL
end end
end end
end end

View file

@ -1,5 +1,4 @@
class Tag < ApplicationRecord class Tag < ApplicationRecord
has_many :taggings has_many :taggings
has_many :taggable, :through => :taggings has_many :taggable, :through => :taggings
@ -10,8 +9,7 @@ class Tag < ApplicationRecord
# If database speed becomes an issue, you could remove these validations and # If database speed becomes an issue, you could remove these validations and
# rescue the ActiveRecord database constraint errors instead. # rescue the ActiveRecord database constraint errors instead.
validates_presence_of :name validates :name, presence: true, uniqueness: { :scope => "user_id", :case_sensitive => false }
validates_uniqueness_of :name, :scope => "user_id", :case_sensitive => false
before_create :before_create before_create :before_create
@ -29,5 +27,4 @@ class Tag < ApplicationRecord
def to_s def to_s
name name
end end
end end

View file

@ -1,8 +1,5 @@
# The Tagging join model. # The Tagging join model.
class Tagging < ApplicationRecord class Tagging < ApplicationRecord
belongs_to :tag belongs_to :tag
belongs_to :taggable, :polymorphic => true, :touch => true belongs_to :taggable, :polymorphic => true, :touch => true
@ -11,7 +8,6 @@ class Tagging < ApplicationRecord
private private
def delete_orphaned_tag def delete_orphaned_tag
tag.destroy if tag and tag.taggings.count == 0 tag.destroy if tag && tag.taggings.count == 0
end end
end end

Some files were not shown because too many files have changed in this diff Show more