mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 23:30:12 +01:00
Merge branch 'master' into patch-1
This commit is contained in:
commit
326d434cd7
60 changed files with 1749 additions and 1079 deletions
|
|
@ -1,4 +1,18 @@
|
|||
engines:
|
||||
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:
|
||||
|
|
@ -16,3 +30,5 @@ engines:
|
|||
enabled: false
|
||||
Rubocop/Style/HashSyntax:
|
||||
enabled: false
|
||||
#exclude_patterns:
|
||||
#- app/assets/javascripts-jquery-ui
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
.bundle
|
||||
.git
|
||||
config/database.yml
|
||||
config/site.yml
|
||||
coverage
|
||||
|
|
|
|||
47
.github/workflows/build-docker-image.yml
vendored
Normal file
47
.github/workflows/build-docker-image.yml
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
name: 'build'
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
|
||||
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: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: |
|
||||
tracksapp/tracks:latest
|
||||
tracksapp/tracks:master
|
||||
ghcr.io/tracksapp/tracks:latest
|
||||
|
||||
#ghcr.io/TracksApp/tracks:1.0.0
|
||||
#tracksapp/tracks:1.0.0
|
||||
6
.github/workflows/continuous-integration.yml
vendored
6
.github/workflows/continuous-integration.yml
vendored
|
|
@ -6,13 +6,9 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
ruby: ["2.5", "2.6", "2.7"]
|
||||
ruby: ["2.7", "3.0"]
|
||||
db: [sqlite, mysql, postgres]
|
||||
exclude:
|
||||
- ruby: "2.5"
|
||||
db: sqlite
|
||||
- ruby: "2.5"
|
||||
db: postgres
|
||||
- ruby: "2.6"
|
||||
db: sqlite
|
||||
- ruby: "2.6"
|
||||
|
|
|
|||
17
.rubocop.yml
17
.rubocop.yml
|
|
@ -16,3 +16,20 @@ Style/StringLiterals:
|
|||
|
||||
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
|
||||
|
|
|
|||
25
Dockerfile
25
Dockerfile
|
|
@ -1,4 +1,4 @@
|
|||
FROM ruby:2.7.1
|
||||
FROM ruby:2.7
|
||||
|
||||
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||
RUN bundle config --global frozen 1
|
||||
|
|
@ -13,18 +13,35 @@ 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 apt-get update && apt-get install -y yarn netcat
|
||||
|
||||
RUN mkdir /app/log
|
||||
|
||||
COPY . /app/
|
||||
COPY COPYING /app/
|
||||
COPY config /app/config/
|
||||
COPY config/database.docker.yml /app/config/database.yml
|
||||
COPY config/site.docker.yml /app/config/site.yml
|
||||
|
||||
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/
|
||||
|
||||
COPY .git /app/.git
|
||||
|
||||
RUN RAILS_ENV=production bundle exec rake assets:precompile
|
||||
|
||||
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD ["rails", "server", "-b", "0.0.0.0"]
|
||||
CMD ["./bin/rails", "server", "-b", "0.0.0.0"]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
FROM ruby:2.6.5
|
||||
FROM ruby:2.6
|
||||
|
||||
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||
RUN bundle config --global frozen 1
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
FROM ruby:2.5.7
|
||||
FROM ruby:3.0
|
||||
|
||||
# throw errors if Gemfile has been modified since Gemfile.lock
|
||||
RUN bundle config --global frozen 1
|
||||
34
Gemfile
34
Gemfile
|
|
@ -5,23 +5,23 @@ gem 'activemodel-serializers-xml', '~> 1.0.1'
|
|||
|
||||
gem 'coffee-rails', '~> 5.0.0'
|
||||
|
||||
gem 'jquery-rails', '~> 4.4'
|
||||
gem 'jquery-rails', '~> 4.5'
|
||||
gem 'jquery-ui-rails', '~>6.0.1'
|
||||
|
||||
gem 'rails', '~> 6.0.3'
|
||||
gem 'rails', '~> 6.0.0'
|
||||
gem 'sassc-rails', '~> 2.1.2'
|
||||
|
||||
gem 'bootstrap-sass', '3.4.1'
|
||||
gem 'font-awesome-sass', '~> 5.15.1'
|
||||
gem 'font-awesome-sass', '~> 6.1.2'
|
||||
|
||||
gem 'uglifier', '>=1.3.0'
|
||||
|
||||
gem 'aasm', '~> 5.2.0'
|
||||
gem 'aasm', '~> 5.3.0'
|
||||
gem 'acts_as_list'
|
||||
gem 'bcrypt', '~> 3.1.16'
|
||||
gem 'bcrypt', '~> 3.1.18'
|
||||
gem 'htmlentities'
|
||||
gem 'paperclip'
|
||||
gem 'puma', '~> 5.5'
|
||||
gem "kt-paperclip", "~> 7.1"
|
||||
gem 'puma', '~> 5.6'
|
||||
gem 'rails_autolink'
|
||||
gem 'RedCloth'
|
||||
gem 'sanitize', '~> 6.0'
|
||||
|
|
@ -36,35 +36,35 @@ end
|
|||
|
||||
# Use --without <group> argument to skip unnecessary drivers
|
||||
gem 'sqlite3', group: :sqlite
|
||||
gem 'mysql2', '~> 0.5.3', group: :mysql
|
||||
gem 'pg', '~> 1.2.3', group: :postgresql
|
||||
gem 'mysql2', '~> 0.5.4', group: :mysql
|
||||
gem 'pg', '~> 1.4.3', group: :postgresql
|
||||
|
||||
group :development do
|
||||
gem 'spring'
|
||||
gem 'spring', '~> 4'
|
||||
gem 'yard'
|
||||
|
||||
gem 'tolk', '~> 4.1.0'
|
||||
gem 'tolk', '~> 4.3.0'
|
||||
|
||||
gem 'bullet'
|
||||
gem 'rack-mini-profiler'
|
||||
gem 'solargraph'
|
||||
|
||||
gem 'i18n-tasks', '~> 0.9.35'
|
||||
gem 'i18n-tasks', '~> 1.0.11'
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
gem 'byebug'
|
||||
gem 'listen'
|
||||
gem 'rubocop', '~> 1.22', require: false
|
||||
gem 'rubocop', '~> 1.34', require: false
|
||||
end
|
||||
|
||||
group :test do
|
||||
# Get test coverage info on codeclimate
|
||||
gem 'codeclimate-test-reporter', '1.0.7', require: nil
|
||||
gem 'database_cleaner'
|
||||
# get test coverage info on codeclimate
|
||||
gem 'codeclimate-test-reporter', '1.0.7', group: :test, require: nil
|
||||
gem 'database_cleaner', '~> 1'
|
||||
gem 'factory_bot_rails'
|
||||
gem 'mocha', :require => false
|
||||
gem 'minitest-stub-const'
|
||||
gem 'mocha', :require => false
|
||||
gem 'rails-controller-testing'
|
||||
gem 'rails-dom-testing', '~> 2.0.0'
|
||||
gem 'rspec-expectations'
|
||||
|
|
|
|||
301
Gemfile.lock
301
Gemfile.lock
|
|
@ -2,28 +2,28 @@ GEM
|
|||
remote: https://rubygems.org/
|
||||
specs:
|
||||
RedCloth (4.3.2)
|
||||
aasm (5.2.0)
|
||||
aasm (5.3.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
actioncable (6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
actioncable (6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
actionmailbox (6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
activejob (= 6.0.4.1)
|
||||
activerecord (= 6.0.4.1)
|
||||
activestorage (= 6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
actionmailbox (6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
activejob (= 6.0.5.1)
|
||||
activerecord (= 6.0.5.1)
|
||||
activestorage (= 6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
mail (>= 2.7.1)
|
||||
actionmailer (6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
actionview (= 6.0.4.1)
|
||||
activejob (= 6.0.4.1)
|
||||
actionmailer (6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
actionview (= 6.0.5.1)
|
||||
activejob (= 6.0.5.1)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (6.0.4.1)
|
||||
actionview (= 6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
actionpack (6.0.5.1)
|
||||
actionview (= 6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
rack (~> 2.0, >= 2.0.8)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
|
|
@ -31,36 +31,36 @@ GEM
|
|||
actionpack-xml_parser (2.0.1)
|
||||
actionpack (>= 5.0)
|
||||
railties (>= 5.0)
|
||||
actiontext (6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
activerecord (= 6.0.4.1)
|
||||
activestorage (= 6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
actiontext (6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
activerecord (= 6.0.5.1)
|
||||
activestorage (= 6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
actionview (6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
||||
activejob (6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
activejob (6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
activemodel (6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
activemodel-serializers-xml (1.0.2)
|
||||
activemodel (> 5.x)
|
||||
activesupport (> 5.x)
|
||||
builder (~> 3.1)
|
||||
activerecord (6.0.4.1)
|
||||
activemodel (= 6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
activestorage (6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
activejob (= 6.0.4.1)
|
||||
activerecord (= 6.0.4.1)
|
||||
marcel (~> 1.0.0)
|
||||
activesupport (6.0.4.1)
|
||||
activerecord (6.0.5.1)
|
||||
activemodel (= 6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
activestorage (6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
activejob (= 6.0.5.1)
|
||||
activerecord (= 6.0.5.1)
|
||||
marcel (~> 1.0)
|
||||
activesupport (6.0.5.1)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
|
|
@ -69,16 +69,24 @@ GEM
|
|||
acts_as_list (1.0.4)
|
||||
activerecord (>= 4.2)
|
||||
ast (2.4.2)
|
||||
autoprefixer-rails (10.1.0.0)
|
||||
execjs
|
||||
autoprefixer-rails (10.4.7.0)
|
||||
execjs (~> 2)
|
||||
backport (1.2.0)
|
||||
bcrypt (3.1.16)
|
||||
benchmark (0.1.1)
|
||||
bcrypt (3.1.18)
|
||||
benchmark (0.2.0)
|
||||
better_html (1.0.16)
|
||||
actionview (>= 4.0)
|
||||
activesupport (>= 4.0)
|
||||
ast (~> 2.0)
|
||||
erubi (~> 1.4)
|
||||
html_tokenizer (~> 0.0.6)
|
||||
parser (>= 2.4)
|
||||
smart_properties
|
||||
bootstrap-sass (3.4.1)
|
||||
autoprefixer-rails (>= 5.2.1)
|
||||
sassc (>= 2.0.0)
|
||||
builder (3.2.4)
|
||||
bullet (6.1.5)
|
||||
bullet (7.0.3)
|
||||
activesupport (>= 3.0.0)
|
||||
uniform_notifier (~> 1.11)
|
||||
byebug (11.1.3)
|
||||
|
|
@ -92,31 +100,33 @@ GEM
|
|||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.12.2)
|
||||
concurrent-ruby (1.1.9)
|
||||
concurrent-ruby (1.1.10)
|
||||
crass (1.0.6)
|
||||
database_cleaner (1.8.5)
|
||||
diff-lcs (1.4.4)
|
||||
docile (1.3.4)
|
||||
database_cleaner (1.99.0)
|
||||
diff-lcs (1.5.0)
|
||||
docile (1.4.0)
|
||||
e2mmap (0.1.0)
|
||||
erubi (1.10.0)
|
||||
execjs (2.7.0)
|
||||
factory_bot (6.2.0)
|
||||
erubi (1.11.0)
|
||||
execjs (2.8.1)
|
||||
factory_bot (6.2.1)
|
||||
activesupport (>= 5.0.0)
|
||||
factory_bot_rails (6.2.0)
|
||||
factory_bot (~> 6.2.0)
|
||||
railties (>= 5.0.0)
|
||||
ffi (1.15.3)
|
||||
font-awesome-sass (5.15.1)
|
||||
sassc (>= 1.11)
|
||||
globalid (0.5.2)
|
||||
ffi (1.15.5)
|
||||
font-awesome-sass (6.1.2)
|
||||
sassc (~> 2.0)
|
||||
globalid (1.0.0)
|
||||
activesupport (>= 5.0)
|
||||
highline (2.0.3)
|
||||
html_tokenizer (0.0.7)
|
||||
htmlentities (4.3.4)
|
||||
i18n (1.8.11)
|
||||
i18n (1.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
i18n-tasks (0.9.35)
|
||||
i18n-tasks (1.0.11)
|
||||
activesupport (>= 4.0.2)
|
||||
ast (>= 2.1.0)
|
||||
better_html (~> 1.0)
|
||||
erubi
|
||||
highline (>= 2.0.0)
|
||||
i18n
|
||||
|
|
@ -125,75 +135,73 @@ GEM
|
|||
rainbow (>= 2.2.2, < 4.0)
|
||||
terminal-table (>= 1.5.1)
|
||||
jaro_winkler (1.5.4)
|
||||
jquery-rails (4.4.0)
|
||||
jquery-rails (4.5.0)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
jquery-ui-rails (6.0.1)
|
||||
railties (>= 3.2.16)
|
||||
kramdown (2.3.1)
|
||||
json (2.6.2)
|
||||
kramdown (2.4.0)
|
||||
rexml
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
kt-paperclip (7.1.1)
|
||||
activemodel (>= 4.2.0)
|
||||
activesupport (>= 4.2.0)
|
||||
marcel (~> 1.0.1)
|
||||
mime-types
|
||||
terrapin (~> 0.6.0)
|
||||
libv8 (3.16.14.19)
|
||||
listen (3.7.0)
|
||||
listen (3.7.1)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
loofah (2.12.0)
|
||||
loofah (2.18.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.7.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
marcel (1.0.2)
|
||||
method_source (1.0.0)
|
||||
mime-types (3.3.1)
|
||||
mime-types (3.4.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2020.1104)
|
||||
mimemagic (0.3.10)
|
||||
nokogiri (~> 1)
|
||||
rake
|
||||
mime-types-data (3.2022.0105)
|
||||
mini_mime (1.1.2)
|
||||
mini_portile2 (2.6.1)
|
||||
minitest (5.14.4)
|
||||
mini_portile2 (2.8.0)
|
||||
minitest (5.16.2)
|
||||
minitest-stub-const (0.6)
|
||||
mocha (1.13.0)
|
||||
mysql2 (0.5.3)
|
||||
mocha (1.14.0)
|
||||
mysql2 (0.5.4)
|
||||
nio4r (2.5.8)
|
||||
nokogiri (1.12.5)
|
||||
mini_portile2 (~> 2.6.1)
|
||||
nokogiri (1.13.8)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
racc (~> 1.4)
|
||||
paperclip (6.1.0)
|
||||
activemodel (>= 4.2.0)
|
||||
activesupport (>= 4.2.0)
|
||||
mime-types
|
||||
mimemagic (~> 0.3.0)
|
||||
terrapin (~> 0.6.0)
|
||||
parallel (1.21.0)
|
||||
parser (3.0.2.0)
|
||||
parallel (1.22.1)
|
||||
parser (3.1.2.1)
|
||||
ast (~> 2.4.1)
|
||||
pg (1.2.3)
|
||||
puma (5.5.2)
|
||||
pg (1.4.3)
|
||||
puma (5.6.4)
|
||||
nio4r (~> 2.0)
|
||||
racc (1.6.0)
|
||||
rack (2.2.3)
|
||||
rack-mini-profiler (2.3.3)
|
||||
rack (2.2.4)
|
||||
rack-mini-profiler (3.0.0)
|
||||
rack (>= 1.2.0)
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
rails (6.0.4.1)
|
||||
actioncable (= 6.0.4.1)
|
||||
actionmailbox (= 6.0.4.1)
|
||||
actionmailer (= 6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
actiontext (= 6.0.4.1)
|
||||
actionview (= 6.0.4.1)
|
||||
activejob (= 6.0.4.1)
|
||||
activemodel (= 6.0.4.1)
|
||||
activerecord (= 6.0.4.1)
|
||||
activestorage (= 6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
rack-test (2.0.2)
|
||||
rack (>= 1.3)
|
||||
rails (6.0.5.1)
|
||||
actioncable (= 6.0.5.1)
|
||||
actionmailbox (= 6.0.5.1)
|
||||
actionmailer (= 6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
actiontext (= 6.0.5.1)
|
||||
actionview (= 6.0.5.1)
|
||||
activejob (= 6.0.5.1)
|
||||
activemodel (= 6.0.5.1)
|
||||
activerecord (= 6.0.5.1)
|
||||
activestorage (= 6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 6.0.4.1)
|
||||
railties (= 6.0.5.1)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
|
|
@ -202,44 +210,45 @@ GEM
|
|||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.4.2)
|
||||
rails-html-sanitizer (1.4.3)
|
||||
loofah (~> 2.3)
|
||||
rails-i18n (6.0.0)
|
||||
rails-i18n (7.0.5)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 6.0.0, < 7)
|
||||
railties (>= 6.0.0, < 8)
|
||||
rails_autolink (1.1.6)
|
||||
rails (> 3.1)
|
||||
railties (6.0.4.1)
|
||||
actionpack (= 6.0.4.1)
|
||||
activesupport (= 6.0.4.1)
|
||||
railties (6.0.5.1)
|
||||
actionpack (= 6.0.5.1)
|
||||
activesupport (= 6.0.5.1)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.20.3, < 2.0)
|
||||
rainbow (3.0.0)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
rb-fsevent (0.11.0)
|
||||
rb-fsevent (0.11.1)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
ref (2.0.0)
|
||||
regexp_parser (2.1.1)
|
||||
reverse_markdown (2.0.0)
|
||||
regexp_parser (2.5.0)
|
||||
reverse_markdown (2.1.1)
|
||||
nokogiri
|
||||
rexml (3.2.5)
|
||||
rspec-expectations (3.10.1)
|
||||
rspec-expectations (3.11.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-support (3.10.1)
|
||||
rubocop (1.22.3)
|
||||
rspec-support (~> 3.11.0)
|
||||
rspec-support (3.11.0)
|
||||
rubocop (1.35.0)
|
||||
json (~> 2.3)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.0.0.0)
|
||||
parser (>= 3.1.2.1)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
rexml
|
||||
rubocop-ast (>= 1.12.0, < 2.0)
|
||||
rexml (>= 3.2.5, < 4.0)
|
||||
rubocop-ast (>= 1.20.1, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 3.0)
|
||||
rubocop-ast (1.12.0)
|
||||
parser (>= 3.0.1.1)
|
||||
rubocop-ast (1.21.0)
|
||||
parser (>= 3.1.1.0)
|
||||
ruby-progressbar (1.11.0)
|
||||
safe_yaml (1.0.5)
|
||||
sanitize (6.0.0)
|
||||
|
|
@ -258,8 +267,9 @@ GEM
|
|||
simplecov-html (~> 0.11)
|
||||
simplecov_json_formatter (~> 0.1)
|
||||
simplecov-html (0.12.3)
|
||||
simplecov_json_formatter (0.1.2)
|
||||
solargraph (0.44.0)
|
||||
simplecov_json_formatter (0.1.4)
|
||||
smart_properties (1.17.0)
|
||||
solargraph (0.45.0)
|
||||
backport (~> 1.2)
|
||||
benchmark
|
||||
bundler (>= 1.17.2)
|
||||
|
|
@ -274,15 +284,15 @@ GEM
|
|||
thor (~> 1.0)
|
||||
tilt (~> 2.0)
|
||||
yard (~> 0.9, >= 0.9.24)
|
||||
spring (3.0.0)
|
||||
sprockets (4.0.2)
|
||||
spring (4.0.0)
|
||||
sprockets (4.1.1)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-rails (3.3.0)
|
||||
sprockets-rails (3.4.2)
|
||||
actionpack (>= 5.2)
|
||||
activesupport (>= 5.2)
|
||||
sprockets (>= 3.0.0)
|
||||
sqlite3 (1.4.2)
|
||||
sqlite3 (1.4.4)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
terrapin (0.6.0)
|
||||
|
|
@ -290,77 +300,80 @@ GEM
|
|||
therubyracer (0.12.3)
|
||||
libv8 (~> 3.16.14.15)
|
||||
ref
|
||||
thor (1.1.0)
|
||||
thor (1.2.1)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.10)
|
||||
tolk (4.1.0)
|
||||
tilt (2.0.11)
|
||||
tolk (4.3.0)
|
||||
rails (>= 5.0)
|
||||
safe_yaml (>= 0.8.6)
|
||||
sassc
|
||||
sprockets-rails (~> 3.4)
|
||||
tracks-chartjs-ror (3.6.4)
|
||||
rails (>= 3.1)
|
||||
tzinfo (1.2.9)
|
||||
tzinfo (1.2.10)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (4.2.0)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
unicode-display_width (2.1.0)
|
||||
uniform_notifier (1.14.2)
|
||||
unicode-display_width (2.2.0)
|
||||
uniform_notifier (1.16.0)
|
||||
webrick (1.7.0)
|
||||
websocket-driver (0.7.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.5)
|
||||
will_paginate (3.3.1)
|
||||
yard (0.9.26)
|
||||
zeitwerk (2.5.1)
|
||||
yard (0.9.28)
|
||||
webrick (~> 1.7.0)
|
||||
zeitwerk (2.6.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
RedCloth
|
||||
aasm (~> 5.2.0)
|
||||
aasm (~> 5.3.0)
|
||||
actionpack-xml_parser (~> 2.0)
|
||||
activemodel-serializers-xml (~> 1.0.1)
|
||||
acts_as_list
|
||||
bcrypt (~> 3.1.16)
|
||||
bcrypt (~> 3.1.18)
|
||||
bootstrap-sass (= 3.4.1)
|
||||
bullet
|
||||
byebug
|
||||
codeclimate-test-reporter (= 1.0.7)
|
||||
coffee-rails (~> 5.0.0)
|
||||
database_cleaner
|
||||
database_cleaner (~> 1)
|
||||
factory_bot_rails
|
||||
font-awesome-sass (~> 5.15.1)
|
||||
font-awesome-sass (~> 6.1.2)
|
||||
htmlentities
|
||||
i18n-tasks (~> 0.9.35)
|
||||
jquery-rails (~> 4.4)
|
||||
i18n-tasks (~> 1.0.11)
|
||||
jquery-rails (~> 4.5)
|
||||
jquery-ui-rails (~> 6.0.1)
|
||||
kt-paperclip (~> 7.1)
|
||||
listen
|
||||
mini_racer
|
||||
minitest-stub-const
|
||||
mocha
|
||||
mysql2 (~> 0.5.3)
|
||||
paperclip
|
||||
pg (~> 1.2.3)
|
||||
puma (~> 5.5)
|
||||
mysql2 (~> 0.5.4)
|
||||
pg (~> 1.4.3)
|
||||
puma (~> 5.6)
|
||||
rack-mini-profiler
|
||||
rails (~> 6.0.3)
|
||||
rails (~> 6.0.0)
|
||||
rails-controller-testing
|
||||
rails-dom-testing (~> 2.0.0)
|
||||
rails_autolink
|
||||
rspec-expectations
|
||||
rubocop (~> 1.22)
|
||||
rubocop (~> 1.34)
|
||||
sanitize (~> 6.0)
|
||||
sassc-rails (~> 2.1.2)
|
||||
simplecov
|
||||
solargraph
|
||||
spring
|
||||
spring (~> 4)
|
||||
sqlite3
|
||||
therubyracer
|
||||
tolk (~> 4.1.0)
|
||||
tolk (~> 4.3.0)
|
||||
tracks-chartjs-ror
|
||||
uglifier (>= 1.3.0)
|
||||
will_paginate
|
||||
yard
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.22
|
||||
2.2.33
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@
|
|||
//= 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
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,20 +12,21 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.cs = {
|
||||
closeText: "Zavřít",
|
||||
prevText: "<Dříve",
|
||||
nextText: "Později>",
|
||||
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" ],
|
||||
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" ],
|
||||
dayNamesMin: [ "ne", "po", "út", "st", "čt", "pá", "so" ],
|
||||
weekHeader: "Týd",
|
||||
dateFormat: "dd.mm.yy",
|
||||
firstDay: 1,
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.cs );
|
|||
|
||||
return datepicker.regional.cs;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,20 +12,21 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.de = {
|
||||
closeText: "Schließen",
|
||||
prevText: "<Zurück",
|
||||
nextText: "Vor>",
|
||||
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" ],
|
||||
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,
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.de );
|
|||
|
||||
return datepicker.regional.de;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,20 +12,21 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.es = {
|
||||
closeText: "Cerrar",
|
||||
prevText: "<Ant",
|
||||
nextText: "Sig>",
|
||||
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" ],
|
||||
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,
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.es );
|
|||
|
||||
return datepicker.regional.es;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,20 +12,21 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.fi = {
|
||||
closeText: "Sulje",
|
||||
prevText: "«Edellinen",
|
||||
nextText: "Seuraava»",
|
||||
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" ],
|
||||
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,
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.fi );
|
|||
|
||||
return datepicker.regional.fi;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
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.
|
||||
|
|
@ -12,7 +14,8 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.fr = {
|
||||
closeText: "Fermer",
|
||||
|
|
@ -25,7 +28,7 @@ datepicker.regional.fr = {
|
|||
"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" ],
|
||||
dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ],
|
||||
weekHeader: "Sem.",
|
||||
dateFormat: "dd/mm/yy",
|
||||
firstDay: 1,
|
||||
|
|
@ -36,4 +39,4 @@ datepicker.setDefaults( datepicker.regional.fr );
|
|||
|
||||
return datepicker.regional.fr;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,20 +12,21 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.he = {
|
||||
closeText: "סגור",
|
||||
prevText: "<הקודם",
|
||||
nextText: "הבא>",
|
||||
prevText: "הקודם",
|
||||
nextText: "הבא",
|
||||
currentText: "היום",
|
||||
monthNames: [ "ינואר","פברואר","מרץ","אפריל","מאי","יוני",
|
||||
"יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר" ],
|
||||
monthNamesShort: [ "ינו","פבר","מרץ","אפר","מאי","יוני",
|
||||
"יולי","אוג","ספט","אוק","נוב","דצמ" ],
|
||||
dayNames: [ "ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת" ],
|
||||
dayNamesShort: [ "א'","ב'","ג'","ד'","ה'","ו'","שבת" ],
|
||||
dayNamesMin: [ "א'","ב'","ג'","ד'","ה'","ו'","שבת" ],
|
||||
monthNames: [ "ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני",
|
||||
"יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" ],
|
||||
monthNamesShort: [ "ינו", "פבר", "מרץ", "אפר", "מאי", "יוני",
|
||||
"יולי", "אוג", "ספט", "אוק", "נוב", "דצמ" ],
|
||||
dayNames: [ "ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת" ],
|
||||
dayNamesShort: [ "א'", "ב'", "ג'", "ד'", "ה'", "ו'", "שבת" ],
|
||||
dayNamesMin: [ "א'", "ב'", "ג'", "ד'", "ה'", "ו'", "שבת" ],
|
||||
weekHeader: "Wk",
|
||||
dateFormat: "dd/mm/yy",
|
||||
firstDay: 0,
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.he );
|
|||
|
||||
return datepicker.regional.he;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
52
app/assets/javascripts-jquery-ui/datepicker-nb_NO.js
Normal file
52
app/assets/javascripts-jquery-ui/datepicker-nb_NO.js
Normal 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;
|
||||
|
||||
} );
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,12 +12,13 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.nl = {
|
||||
closeText: "Sluiten",
|
||||
prevText: "←",
|
||||
nextText: "→",
|
||||
prevText: "Vorig",
|
||||
nextText: "Volgende",
|
||||
currentText: "Vandaag",
|
||||
monthNames: [ "januari", "februari", "maart", "april", "mei", "juni",
|
||||
"juli", "augustus", "september", "oktober", "november", "december" ],
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.nl );
|
|||
|
||||
return datepicker.regional.nl;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
/* 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.
|
||||
|
|
@ -10,20 +12,21 @@
|
|||
// Browser globals
|
||||
factory( jQuery.datepicker );
|
||||
}
|
||||
}( function( datepicker ) {
|
||||
} )( function( datepicker ) {
|
||||
"use strict";
|
||||
|
||||
datepicker.regional.ru = {
|
||||
closeText: "Закрыть",
|
||||
prevText: "<Пред",
|
||||
nextText: "След>",
|
||||
prevText: "Пред",
|
||||
nextText: "След",
|
||||
currentText: "Сегодня",
|
||||
monthNames: [ "Январь","Февраль","Март","Апрель","Май","Июнь",
|
||||
"Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ],
|
||||
monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн",
|
||||
"Июл","Авг","Сен","Окт","Ноя","Дек" ],
|
||||
dayNames: [ "воскресенье","понедельник","вторник","среда","четверг","пятница","суббота" ],
|
||||
dayNamesShort: [ "вск","пнд","втр","срд","чтв","птн","сбт" ],
|
||||
dayNamesMin: [ "Вс","Пн","Вт","Ср","Чт","Пт","Сб" ],
|
||||
monthNames: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
|
||||
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
|
||||
monthNamesShort: [ "Янв", "Фев", "Мар", "Апр", "Май", "Июн",
|
||||
"Июл", "Авг", "Сен", "Окт", "Ноя", "Дек" ],
|
||||
dayNames: [ "воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота" ],
|
||||
dayNamesShort: [ "вск", "пнд", "втр", "срд", "чтв", "птн", "сбт" ],
|
||||
dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
|
||||
weekHeader: "Нед",
|
||||
dateFormat: "dd.mm.yy",
|
||||
firstDay: 1,
|
||||
|
|
@ -34,4 +37,4 @@ datepicker.setDefaults( datepicker.regional.ru );
|
|||
|
||||
return datepicker.regional.ru;
|
||||
|
||||
} ) );
|
||||
} );
|
||||
|
|
|
|||
40
app/assets/javascripts-jquery-ui/datepicker-sv.js
Normal file
40
app/assets/javascripts-jquery-ui/datepicker-sv.js
Normal 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;
|
||||
|
||||
} );
|
||||
40
app/assets/javascripts-jquery-ui/datepicker-tr.js
Normal file
40
app/assets/javascripts-jquery-ui/datepicker-tr.js
Normal 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;
|
||||
|
||||
} );
|
||||
|
|
@ -1,2 +1 @@
|
|||
@import "font-awesome-sprockets";
|
||||
@import "font-awesome";
|
||||
|
|
|
|||
|
|
@ -62,12 +62,16 @@ class DataController < ApplicationController
|
|||
flash[:notice] = t 'data.import.projects_count', count: count
|
||||
when 'todos'
|
||||
count = Todo.import path_and_file, params, current_user
|
||||
flash[:notice] = t 'data.import.todos.count', count: count
|
||||
if !count
|
||||
flash[:error] = t('data.import.errors.no_context')
|
||||
else
|
||||
flash[:notice] = t 'data.import.todos_count', count: count
|
||||
end
|
||||
else
|
||||
flash[:error] = t('data.import.errors.invalid_destination')
|
||||
end
|
||||
rescue Exception => e
|
||||
flash[:error] = t 'data.import.invalid_destination', e: e
|
||||
flash[:error] = t 'data.import.errors.invalid_destination', e: e
|
||||
end
|
||||
File.delete(path_and_file)
|
||||
redirect_to import_data_path
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ module RenderingHelper
|
|||
# do not change string; URL is already linked
|
||||
href
|
||||
else
|
||||
content_tag(:a, h(href), :href => URI.escape(href))
|
||||
content_tag(:a, h(href), :href => href)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -27,7 +27,7 @@ module RenderingHelper
|
|||
config = relaxed_config
|
||||
|
||||
# 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']
|
||||
config = Sanitize::Config.merge(config, protocols: { 'a' => { 'href' => a_href_config } }, :attributes => { 'a' => a_attributes })
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class MessageGateway < ActionMailer::Base
|
|||
attachment = todo.attachments.build
|
||||
|
||||
# create temp file
|
||||
tmp = Tempfile.new(['attachment', '.eml'], { universal_newline: true })
|
||||
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
|
||||
|
|
|
|||
|
|
@ -353,6 +353,7 @@ class Todo < ApplicationRecord
|
|||
|
||||
def self.import(filename, params, user)
|
||||
default_context = user.contexts.order('id').first
|
||||
return false if default_context.nil?
|
||||
|
||||
count = 0
|
||||
CSV.foreach(filename, headers: true) do |row|
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ mailmap:
|
|||
<td><</td><td><%= I18n.t 'integrations.email_rich.field_descriptions.due_date' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>></td><td><%= I18n.t 'integrations.email_rich.field_descriptions.due_date' %></td>
|
||||
<td>></td><td><%= I18n.t 'integrations.email_rich.field_descriptions.tickler_date' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>#</td><td><%= I18n.t 'integrations.email_rich.field_descriptions.tag' %></td>
|
||||
|
|
|
|||
|
|
@ -64,10 +64,10 @@
|
|||
<li>/projects/<code><%= t('rest_help.id') %></code>/todos.xml</li>
|
||||
</ul>
|
||||
|
||||
<p><%= raw t('rest_help.retrieve.limit', {
|
||||
<p><%= raw t('rest_help.retrieve.limit',
|
||||
fields: '<code>ID, created_at, modified_at, completed_at</code>',
|
||||
limit_parameter: '<code>limit_fields</code>',
|
||||
set_to: '<code>index</code>'}) %></p>
|
||||
set_to: '<code>index</code>') %></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -87,10 +87,10 @@
|
|||
|
||||
<h2><%= t('rest_help.writing.title') %></h2>
|
||||
|
||||
<p><%= raw t('rest_help.writing.description', {
|
||||
<p><%= raw t('rest_help.writing.description',
|
||||
put: '<code>PUT</code>',
|
||||
post: '<code>POST</code>',
|
||||
delete: '<code>DELETE</code>'}) %></p>
|
||||
delete: '<code>DELETE</code>') %></p>
|
||||
|
||||
<p><%= t('rest_help.writing.example_title') %></p>
|
||||
|
||||
|
|
@ -105,9 +105,9 @@ Location: <%= root_url %>projects/65.xml
|
|||
</code>
|
||||
</pre>
|
||||
|
||||
<p><%= raw t('rest_help.writing.example_project_response_title', {
|
||||
<p><%= raw t('rest_help.writing.example_project_response_title',
|
||||
response_code: '<code>HTTP/1.1 201 Created</code>',
|
||||
header: '<code>Location</code>'}) %></p>
|
||||
header: '<code>Location</code>') %></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -120,9 +120,9 @@ Location: <%= root_url %>todos/452.xml
|
|||
</code>
|
||||
</pre>
|
||||
|
||||
<p><%= raw t('rest_help.writing.example_todo_response_title', {
|
||||
<p><%= raw t('rest_help.writing.example_todo_response_title',
|
||||
response_code: '<code>HTTP/1.1 201 Created</code>',
|
||||
header: '<code>Location</code>'}) %></p>
|
||||
header: '<code>Location</code>') %></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -143,8 +143,8 @@ Location: <%= root_url %>todos/452.xml
|
|||
</code>
|
||||
</pre>
|
||||
|
||||
<p><%= raw t('rest_help.writing.example_note_response_title', {
|
||||
response_code: '<code>HTTP/1.1 200 OK</code>'}) %></p>
|
||||
<p><%= raw t('rest_help.writing.example_note_response_title',
|
||||
response_code: '<code>HTTP/1.1 200 OK</code>') %></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -164,8 +164,8 @@ Location: <%= root_url %>todos/452.xml
|
|||
</code>
|
||||
</pre>
|
||||
|
||||
<p><%= raw t('rest_help.writing.example_delete_title', {
|
||||
delete: '<code>DELETE</code>'}) %></p>
|
||||
<p><%= raw t('rest_help.writing.example_delete_title',
|
||||
delete: '<code>DELETE</code>') %></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -176,15 +176,15 @@ Location: <%= root_url %>todos/452.xml
|
|||
</code>
|
||||
</pre>
|
||||
|
||||
<p><%= raw t('rest_help.writing.example_delete_response_title', {
|
||||
response_code: '<code>HTTP/1.1 200 OK</code>'}) %></p>
|
||||
<p><%= raw t('rest_help.writing.example_delete_response_title',
|
||||
response_code: '<code>HTTP/1.1 200 OK</code>') %></p>
|
||||
|
||||
<h2><%= t('rest_help.response.title') %></h2>
|
||||
|
||||
<p><%= raw t('rest_help.response.description', {
|
||||
<p><%= raw t('rest_help.response.description',
|
||||
response_200: '<code>200 OK</code>',
|
||||
response_201: '<code>201 Created</code>',
|
||||
example_call: '<code>GET /contexts/2/todos.xml</code>'}) %></p>
|
||||
example_call: '<code>GET /contexts/2/todos.xml</code>') %></p>
|
||||
|
||||
<p><%= t('rest_help.response.xml_description') %></p>
|
||||
|
||||
|
|
@ -200,11 +200,11 @@ $ curl -u username:p4ssw0rd -H "Content-Type: text/xml" \
|
|||
|
||||
<h2><%= t('rest_help.activeresource.title') %></h2>
|
||||
|
||||
<p><%= raw I18n.t 'rest_help.activeresource.description', {
|
||||
<p><%= raw I18n.t 'rest_help.activeresource.description',
|
||||
activeresource_link: link_to(I18n.t('rest_help.activeresource.activeresource_link_text'), 'http://weblog.rubyonrails.org/2007/9/30/rails-2-0-0-preview-release'),
|
||||
ror_link: link_to(I18n.t('rest_help.activeresource.ror_link_text'), 'http://www.rubyonrails.org'),
|
||||
gem_command: '<code>gem install activeresource --source http://gems.rubyonrails.org --include-dependencies</code>'
|
||||
} %></p>
|
||||
%></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -226,8 +226,8 @@ Loading development environment (Rails 1.2.4)
|
|||
</code>
|
||||
</pre>
|
||||
|
||||
<p><%= raw I18n.t 'rest_help.activeresource.wrapper_description', {
|
||||
signals_link: link_to(I18n.t('rest_help.activeresource.signals_link_text'), 'http://www.37signals.com')} %></p>
|
||||
<p><%= raw I18n.t 'rest_help.activeresource.wrapper_description',
|
||||
signals_link: link_to(I18n.t('rest_help.activeresource.signals_link_text'), 'http://www.37signals.com') %></p>
|
||||
|
||||
<pre>
|
||||
<code>
|
||||
|
|
@ -246,13 +246,13 @@ irb(main):003:0>
|
|||
<p><%= t('rest_help.notes.description') %></p>
|
||||
|
||||
<ul>
|
||||
<li><%= raw I18n.t 'rest_help.notes.bullet1', {
|
||||
<li><%= raw I18n.t 'rest_help.notes.bullet1',
|
||||
id: '<code>ID</code>',
|
||||
url: '<span class="caps">URL</span>'} %></li>
|
||||
<li><%= raw I18n.t 'rest_help.notes.bullet2', {
|
||||
omit: '<code>...</code>' } %></li>
|
||||
url: '<span class="caps">URL</span>' %></li>
|
||||
<li><%= raw I18n.t 'rest_help.notes.bullet2',
|
||||
omit: '<code>...</code>' %></li>
|
||||
</ul>
|
||||
|
||||
<p><%= raw I18n.t 'rest_help.notes.curl_description', {
|
||||
curl: link_to(I18n.t('rest_help.curl_link_text'), 'http://en.wikipedia.org/wiki/CURL')} %></p>
|
||||
<p><%= raw I18n.t 'rest_help.notes.curl_description',
|
||||
curl: link_to(I18n.t('rest_help.curl_link_text'), 'http://en.wikipedia.org/wiki/CURL') %></p>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<div class="bootstrap">
|
||||
<div class="footer">
|
||||
<%= t('footer.send_feedback', :version => TRACKS_VERSION) %>
|
||||
<%= t('footer.version', :version => TRACKS_VERSION, :revision_with_date => TRACKS_REVISION_WITH_DATE, :revision => TRACKS_REVISION) %>
|
||||
<%= t('footer.send_feedback') %>
|
||||
<span class="footer-line">
|
||||
<a href="https://github.com/TracksApp/tracks/issues"><%= t('common.bugs')%></a> |
|
||||
<a href="https://github.com/TracksApp/tracks/wiki"><%= t('common.wiki')%></a> |
|
||||
|
|
|
|||
|
|
@ -35,5 +35,7 @@ module Tracksapp
|
|||
|
||||
# configure Tracks to handle deployment in a subdir
|
||||
config.relative_url_root = SITE_CONFIG['subdir'] if SITE_CONFIG['subdir']
|
||||
# or deployment behind a proxy
|
||||
config.action_controller.default_url_options = SITE_CONFIG['default_url_options'] if SITE_CONFIG['default_url_options']
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ development:
|
|||
password:
|
||||
|
||||
production:
|
||||
# Set this to 'postgresql' if using PostgreSQL.
|
||||
adapter: mysql2
|
||||
database: tracks
|
||||
# set this if you are storing utf8 in your mysql database to handle strings
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@ safe_list =
|
|||
Loofah::HTML5::WhiteList
|
||||
end
|
||||
|
||||
safe_list::ALLOWED_PROTOCOLS.merge(%w(message onenote))
|
||||
safe_list::ALLOWED_PROTOCOLS.merge(%w(message onenote obsidian))
|
||||
|
|
|
|||
|
|
@ -1,7 +1,3 @@
|
|||
tracks_version='2.5.2'
|
||||
# comment out next two lines if you do not want (or can not) the date of the
|
||||
# last git commit in the footer
|
||||
info=`git log --pretty=format:"%ai" -1`
|
||||
tracks_version=tracks_version + ' ('+info+')'
|
||||
|
||||
TRACKS_VERSION=tracks_version
|
||||
TRACKS_VERSION='2.6.1'
|
||||
TRACKS_REVISION_WITH_DATE=`git log --date=format:'%Y-%m-%d' --pretty=format:"%h @ %ad" -1`
|
||||
TRACKS_REVISION=`git log --pretty=format:"%h" -1`
|
||||
|
|
|
|||
|
|
@ -248,9 +248,9 @@ cs:
|
|||
- Listopad
|
||||
- Prosinec
|
||||
order:
|
||||
- rok
|
||||
- ":měsíc"
|
||||
- den
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
datetime:
|
||||
distance_in_words:
|
||||
about_x_hours:
|
||||
|
|
@ -347,7 +347,8 @@ cs:
|
|||
select_feed_for_context: Select the feed for this context
|
||||
select_feed_for_project: Vyberte feed pro tento projekt
|
||||
footer:
|
||||
send_feedback: Poslat zpětnou vazbu na %{version}
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
send_feedback: Poslat zpětnou vazbu
|
||||
helpers:
|
||||
select:
|
||||
prompt: Выберите
|
||||
|
|
|
|||
|
|
@ -402,7 +402,8 @@ de:
|
|||
select_feed_for_context: Feed für diesen Kontext auswählen
|
||||
select_feed_for_project: Feed für dieses Projekt auswählen
|
||||
footer:
|
||||
send_feedback: Senden Sie Feedback zu %{version}
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
send_feedback: Senden Sie Feedback
|
||||
helpers:
|
||||
select:
|
||||
prompt: Выберите
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ en:
|
|||
invalid_csv: "Invalid CSV: could not read headers: %{e}"
|
||||
save_error: "Could not save uploaded CSV (%{path_and_file}). Can Tracks write\
|
||||
\ to the upload directory? %{e}"
|
||||
no_context: No default context could be found
|
||||
map_title: Map fields to be imported
|
||||
header: Importing data
|
||||
submit: Import
|
||||
|
|
@ -406,7 +407,8 @@ en:
|
|||
select_feed_for_context: Select the feed for this context
|
||||
select_feed_for_project: Select the feed for this project
|
||||
footer:
|
||||
send_feedback: Send feedback on %{version}
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
send_feedback: Send feedback
|
||||
helpers:
|
||||
select:
|
||||
prompt: Please select
|
||||
|
|
@ -481,7 +483,7 @@ en:
|
|||
\ and home email accounts to your Tracks Mailgun route, set it up like this:\
|
||||
\ %{code}"
|
||||
email_rich:
|
||||
description: "For both of the above methods, the follow format can be used:"
|
||||
description: "For both of the above methods, the following format can be used in the message subject to add metadata:"
|
||||
fields_title: "The fields are:"
|
||||
symbol_title: Symbol
|
||||
meaning_title: Meaning
|
||||
|
|
@ -492,6 +494,8 @@ en:
|
|||
project: The project to place the Todo in
|
||||
due_date: The due date for the Todo (may be 2 digits for day, 4 digits for
|
||||
month-day, or 6 digits for year-month-day)
|
||||
tickler_date: The tickler date for the Todo (may be 2 digits for day, 4 digits for
|
||||
month-day, or 6 digits for year-month-day)
|
||||
tag: A tag to apply to the Todo – may be used multiple times
|
||||
star: Flag to star the Todo
|
||||
example_names:
|
||||
|
|
@ -1342,49 +1346,88 @@ en:
|
|||
curl_link_text: cURL
|
||||
intro:
|
||||
title: Introduction
|
||||
content: Tracks is designed to be integrated with scripts, web services, and third-party applications. This page serves as the documentation of our REST API.
|
||||
content_2: The Tracks REST API allows developers to integrate Tracks into their applications. It allows applications to access and modify Tracks data, and is implemented as Vanilla XML over HTTP.
|
||||
content_3: The API is a %{restful_link} service. All data is available through the API as a resource to which can be referred using a unique identifier. It responds to a number of the HTTP methods, specifically GET, PUT, POST and UPDATE, and all responses from the API are in a simple XML format encoded as UTF-8.
|
||||
content: Tracks is designed to be integrated with scripts, web services, and
|
||||
third-party applications. This page serves as the documentation of our REST
|
||||
API.
|
||||
content_2: The Tracks REST API allows developers to integrate Tracks into their
|
||||
applications. It allows applications to access and modify Tracks data, and
|
||||
is implemented as Vanilla XML over HTTP.
|
||||
content_3: The API is a %{restful_link} service. All data is available through
|
||||
the API as a resource to which can be referred using a unique identifier.
|
||||
It responds to a number of the HTTP methods, specifically GET, PUT, POST and
|
||||
UPDATE, and all responses from the API are in a simple XML format encoded
|
||||
as UTF-8.
|
||||
restful_link_text: RESTful
|
||||
auth:
|
||||
title: Authentication
|
||||
content: Authentication is handled using %{auth_link}. Your Tracks username and password is used as the authentication credentials for the API. Note that in Basic HTTP authentication, your password is sent in clear text. If you need a more secure authentication solution, you should configure your web server to run Tracks under HTTPS.
|
||||
content: Authentication is handled using %{auth_link}. Your Tracks username
|
||||
and password is used as the authentication credentials for the API. Note that
|
||||
in Basic HTTP authentication, your password is sent in clear text. If you
|
||||
need a more secure authentication solution, you should configure your web
|
||||
server to run Tracks under HTTPS.
|
||||
basic_auth_link_text: Basic HTTP authentication
|
||||
retrieve:
|
||||
title: Retrieving data from the API
|
||||
content: 'To retrieve data you only need to do an HTTP GET on a resource identifier. For example, if you want to get all the contexts with %{curl_link}:'
|
||||
content: 'To retrieve data you only need to do an HTTP GET on a resource identifier.
|
||||
For example, if you want to get all the contexts with %{curl_link}:'
|
||||
single_context: 'Getting a single context:'
|
||||
todos_from_context: 'Getting the todos within a context:'
|
||||
projects: You also can apply the pattern shown above with projects instead of contexts.
|
||||
projects: You also can apply the pattern shown above with projects instead of
|
||||
contexts.
|
||||
paths_title: 'All data is available according to the following resource paths:'
|
||||
limit: 'For the todo resources (todos, tickler, done, hidden and calendar) you can limit the returnedfield to %{fields} by adding the parameter %{limit_parameter} and setting it to %{set_to}. For example:'
|
||||
active_todos: 'If you only want to get the active todos, you add the parameter %{active_code} and set it to some value like this:'
|
||||
limit: 'For the todo resources (todos, tickler, done, hidden and calendar) you
|
||||
can limit the returnedfield to %{fields} by adding the parameter %{limit_parameter}
|
||||
and setting it to %{set_to}. For example:'
|
||||
active_todos: 'If you only want to get the active todos, you add the parameter
|
||||
%{active_code} and set it to some value like this:'
|
||||
writing:
|
||||
title: Writing to the API
|
||||
description: The API provides mechanisms for adding, updating and deleting resources using the HTTP methods %{put}, %{post} and %{delete} in combination with the content.
|
||||
description: The API provides mechanisms for adding, updating and deleting resources
|
||||
using the HTTP methods %{put}, %{post} and %{delete} in combination with the
|
||||
content.
|
||||
example_title: 'Creating a new project, using curl:'
|
||||
example_project_name: Build a treehouse for the kids
|
||||
example_project_response_title: 'The response is an %{response_code} with %{header} header indicating where the new project resource can be found. Now we can add a todo to this project, using curl:'
|
||||
example_project_response_title: 'The response is an %{response_code} with %{header}
|
||||
header indicating where the new project resource can be found. Now we can
|
||||
add a todo to this project, using curl:'
|
||||
example_todo_name: Model treehouse in SketchUp
|
||||
example_todo_response_title: 'The response is a again an %{response_code} with %{header} header indicating where the new todo resource can be found. Changing the todo notes, again using curl:'
|
||||
example_todo_response_title: 'The response is a again an %{response_code} with
|
||||
%{header} header indicating where the new todo resource can be found. Changing
|
||||
the todo notes, again using curl:'
|
||||
example_note_text: use maple texture
|
||||
example_note_response_title: 'The response is an %{response_code} with in the body the XML representation of the updated todo. We provide a shorcut method to toggle a todo done or undone without having to perform the update with the right field values:'
|
||||
example_delete_title: 'If we want to delete that todo we can call its unique resource identifier (the URL) with the HTTP method %{delete}, again with curl:'
|
||||
example_delete_response_title: The API returns an %{response_code} and the todo is now deleted.
|
||||
example_note_response_title: 'The response is an %{response_code} with in the
|
||||
body the XML representation of the updated todo. We provide a shorcut method
|
||||
to toggle a todo done or undone without having to perform the update with
|
||||
the right field values:'
|
||||
example_delete_title: 'If we want to delete that todo we can call its unique
|
||||
resource identifier (the URL) with the HTTP method %{delete}, again with curl:'
|
||||
example_delete_response_title: The API returns an %{response_code} and the todo
|
||||
is now deleted.
|
||||
response:
|
||||
title: Dealing with the response and response status
|
||||
description: All successful operations respond with a status code of %{response_200} or %{response_201} depending on the operation. Sometimes a list, say %{example_call} will not have any items, it will return an empty list.
|
||||
xml_description: 'The XML for empty list responses look like this, again with curl:'
|
||||
description: All successful operations respond with a status code of %{response_200}
|
||||
or %{response_201} depending on the operation. Sometimes a list, say %{example_call}
|
||||
will not have any items, it will return an empty list.
|
||||
xml_description: 'The XML for empty list responses look like this, again with
|
||||
curl:'
|
||||
activeresource:
|
||||
title: Consuming the API with ActiveResource
|
||||
description: '%{activeresource_link} is a thin but powerful wrapper around RESTful services exposed by %{ror_link}. It will be part of Rails 2.0 but until then you can get it with %{gem_command}.'
|
||||
description: '%{activeresource_link} is a thin but powerful wrapper around RESTful
|
||||
services exposed by %{ror_link}. It will be part of Rails 2.0 but until then
|
||||
you can get it with %{gem_command}.'
|
||||
activeresource_link_text: ActiveResource
|
||||
ror_link_text: Ruby on Rails
|
||||
wrapper_description: 'Inspired by %{signals_link} ’s Highrise wrapper, we’ve put together a small ruby wrapper (find it in the doc/ directory) for the API which sets up the ActiveResource models for you to play with in an IRB session:'
|
||||
wrapper_description: 'Inspired by %{signals_link} ’s Highrise wrapper,
|
||||
we’ve put together a small ruby wrapper (find it in the doc/ directory)
|
||||
for the API which sets up the ActiveResource models for you to play with in
|
||||
an IRB session:'
|
||||
signals_link_text: 37 Signals
|
||||
notes:
|
||||
title: Notes about the documentation
|
||||
description: 'A few conventions have been applied in the documentation, these are:'
|
||||
bullet1: '%{id}’s in a resource %{url} indicate that the resource’s unique ID needs to be inserted there'
|
||||
bullet2: '%{omit} indicates that unimportant bits of response data have been removed to eliminate noise from the documentation'
|
||||
description: 'A few conventions have been applied in the documentation, these
|
||||
are:'
|
||||
bullet1: '%{id}’s in a resource %{url} indicate that the resource’s
|
||||
unique ID needs to be inserted there'
|
||||
bullet2: '%{omit} indicates that unimportant bits of response data have been
|
||||
removed to eliminate noise from the documentation'
|
||||
curl_description: 'All examples make use of %{curl}.'
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -63,14 +63,14 @@ fi:
|
|||
empty: ei voi olla tyhjä
|
||||
equal_to: täytyy olla sama kuin %{count}
|
||||
even: täytyy olla tasan
|
||||
exclusion: is reserved
|
||||
exclusion: on varattu
|
||||
greater_than: täytyy olla suurempi kuin %{count}
|
||||
greater_than_or_equal_to: täytyy olla suurempi tai yhtäsuuri kuin %{count}
|
||||
inclusion: ei sisälly listaan
|
||||
invalid: cannot contain the comma (',') character
|
||||
invalid: ei voi sisältää pilkkua
|
||||
less_than: täytyy olla vähemmän kuin %{count}
|
||||
less_than_or_equal_to: täytyy olla vähemmän tai yhtäsuuri kuin %{count}
|
||||
not_a_number: is not a number
|
||||
not_a_number: ei ole numero
|
||||
odd: täytyy olla pariton
|
||||
record_invalid: 'Validointi epäonnistui: %{errors}'
|
||||
restrict_dependent_destroy:
|
||||
|
|
@ -192,7 +192,7 @@ fi:
|
|||
save_status_message: Asiayhteys tallennettu
|
||||
show_form: Luo uusi asiayhteys
|
||||
show_form_title: Lisää asiayhteys
|
||||
status_active: Context is active
|
||||
status_active: Asiayhteys on aktiivinen
|
||||
status_hidden: Asiayhteys on piilotettu
|
||||
todos_append: tässä asiayhteydessä
|
||||
update_status_message: Asiayhteyden nimi muutettiin
|
||||
|
|
@ -251,6 +251,7 @@ fi:
|
|||
file_blank: Tiedosto ei voi olla tyhjä
|
||||
some: Tuonnissa tapahtui virheitä
|
||||
invalid_destination: 'Virheellinen tuontikohde: %{e}'
|
||||
no_context: Asiayhteyttä ei löytynyt oletusarvoksi
|
||||
date:
|
||||
abbr_day_names:
|
||||
- Su
|
||||
|
|
@ -403,7 +404,8 @@ fi:
|
|||
select_feed_for_context: Valitse tämän asiayhteyden syöte
|
||||
select_feed_for_project: Valitse tämän projektin syöte
|
||||
footer:
|
||||
send_feedback: Lähetä palautetta versiosta %{version}
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
send_feedback: Lähetä palautetta
|
||||
helpers:
|
||||
select:
|
||||
prompt: Valitse
|
||||
|
|
@ -453,12 +455,16 @@ fi:
|
|||
määrittämiseksi näissä järjestyksissä)
|
||||
project: Projekti, johon toimenpide liitetään
|
||||
context: Konteksti, johon toimenpide liitetään
|
||||
tickler_date: Toimenpiteen näyttöajankohta (2 numeroa pelkän päivän määrittämiseksi,
|
||||
4 numeroa kuukauden ja päivän tai 6 numeroa vuoden, kuukauden ja päivän
|
||||
määrittämiseksi näissä järjestyksissä)
|
||||
fields_instruction: Kaikki merkinnät ovat valinnaisia. Tekstiä ensimmäiseen
|
||||
merkintään asti käytetään toimenpiteen kuvauksena
|
||||
meaning_title: Tarkoitus
|
||||
symbol_title: Merkintä
|
||||
fields_title: 'Kentät:'
|
||||
description: 'Molemmilla ylläolevilla tavoilla voidaan käyttää seuraavaa muotoilua:'
|
||||
description: 'Molemmilla ylläolevilla tavoilla voidaan käyttää viestin otsikossa
|
||||
seuraavaa muotoilua tietojen lisäämiseen:'
|
||||
message_gateway:
|
||||
instructions:
|
||||
'3': Lähetä sähköposti juuri asettamaasi osoitteeseen!
|
||||
|
|
@ -513,7 +519,7 @@ fi:
|
|||
contribute_link_text: projektin verkkosivustolta
|
||||
mailing_list_link_text: Sähköpostilista
|
||||
irc_bullet: '%{irc_link} (käytettävissä myös %{matrix_link})'
|
||||
irc_link_text: 'IRC-kanava #Tracks@FreeNode'
|
||||
irc_link_text: 'IRC-kanava #Tracks@Libera'
|
||||
matrix_link_text: Matrixin kautta
|
||||
layouts:
|
||||
mobile_navigation:
|
||||
|
|
@ -745,7 +751,7 @@ fi:
|
|||
hidden_projects: Piilotetut projektit
|
||||
hide_form: Piilota lomake
|
||||
hide_form_title: Piilota projektinluontilomake
|
||||
is_active: is active
|
||||
is_active: on aktiivinen
|
||||
last_completed_in_project: "(viimeiset %{number})"
|
||||
letter_abbreviation: P
|
||||
list_completed_projects: TRACKS::Valmistuneiden projektien lista
|
||||
|
|
@ -756,7 +762,7 @@ fi:
|
|||
no_last_completed_recurring_todos: Valmiita toistuvia toimenpiteitä ei löytynyt
|
||||
no_notes_attached: Projektiin ei ole liitetty muistiinpanoja
|
||||
no_projects: Projekteja ei löytynyt
|
||||
notes: Notes
|
||||
notes: Muistiinpanot
|
||||
notes_empty: Tälle projektille ei ole muistiinpanoja
|
||||
page_title: 'TRACKS::Project: %{project}'
|
||||
project_destroyed_status: Projekti ”%{name}” poistettu
|
||||
|
|
@ -775,7 +781,7 @@ fi:
|
|||
was_marked_hidden: on merkitty piilotetuksi
|
||||
with_default_context: with a default context of '%{context_name}'
|
||||
with_default_tags: ja oletusasiasanoilla ”%{tags}”
|
||||
with_no_default_context: with no default context
|
||||
with_no_default_context: ilman oletusasiayhteyttä
|
||||
with_no_default_tags: ja ilman oletusavainsanoja
|
||||
search:
|
||||
contexts_matching_query: hakua vastaavaa asiayhteyttä
|
||||
|
|
@ -1158,7 +1164,7 @@ fi:
|
|||
no_last_completed_actions: Valmistuneita toimenpiteitä ei ole
|
||||
no_project: "--No project--"
|
||||
no_recurring_todos: Ei toistuvia toimenpiteitä
|
||||
notes: Notes
|
||||
notes: Muistiinpanot
|
||||
overdue: Myöhässä
|
||||
pending: Odottaa
|
||||
recurrence:
|
||||
|
|
@ -1343,3 +1349,88 @@ fi:
|
|||
previous_label: "← Edellinen"
|
||||
auth_type:
|
||||
database: Tietokanta
|
||||
rest_help:
|
||||
writing:
|
||||
example_todo_name: Mallinna puumaja SketchUpilla
|
||||
title: Rajapintaan kirjoittaminen
|
||||
example_title: 'Luo uusi projekti curlilla:'
|
||||
example_project_name: Rakenna puumaja lapsille
|
||||
example_project_response_title: 'Vastaus on %{response_code} yhdessä otsakkeen
|
||||
%{header} kanssa, joka osoittaa mistä uusi projektiresurssi löytyy. Nyt voimme
|
||||
lisätä tähän projektiin uuden tehtävän käyttäen curlia:'
|
||||
example_delete_response_title: Rajapinta palauttaa %{response_code} ja tehtävä
|
||||
on nyt poistettu.
|
||||
example_delete_title: 'Kun haluamme poistaa tehtävän, kutsumme sen yksilöllistä
|
||||
resurssitunnistetta (URL-osoite) HTTP-metodilla %{delete}, jälleen curlilla:'
|
||||
example_todo_response_title: 'Vastaus on jälleen %{response_code} yhdessä otsakkeen
|
||||
%{header} kanssa, joka osoittaa mistä uusi tehtäväresurssi löytyy. Tehtävän
|
||||
muistiinpanojen muuttaminen, jälleen curlilla:'
|
||||
example_note_response_title: 'Vastaus on %{response_code} ja sen rungossa on
|
||||
päivitetty tehtävä XML-muotoisena. Tarjoamme helpomman tavan muuttaa tehtävä
|
||||
tehdyksi tai tekemättömäksi ilman tarvetta päivitysoperaation tekemiselle
|
||||
kenttäarvoilla:'
|
||||
description: Rajapinta tarjoaa mekanismit resurssien lisäämiseen, päivittämiseen
|
||||
ja poistamiseen käyttämällä %{put}, %{post} ja %{delete} yhdessä sisällön
|
||||
kanssa.
|
||||
example_note_text: käytä vaahterakuviota
|
||||
title: REST-rajapinnan dokumentaatio kehittäjille
|
||||
intro:
|
||||
title: Esittely
|
||||
content_2: Tracksin REST-rajapinnan avulla kehittäjät voivat integroida Tracksin
|
||||
sovelluksiinsa. Sen avulla sovellukset voivat lukea ja muuttaa Tracksiin tallennettuja
|
||||
tietoja ja se on toteutettu XML:nä HTTP:n yli.
|
||||
restful_link_text: RESTful
|
||||
content: Tracks on suunniteltu integroitavaksi skripteihin, verkkopalveluihin
|
||||
ja kolmannen osapuolen sovelluksiin. Tämä sivu toimii REST-rajapintamme dokumentaationa.
|
||||
content_3: Rajapinta on %{restful_link}-palvelu. Kaikki tieto on saatavilla
|
||||
rajapinnan kautta resursseina, joihin voidaan viitata yksilöllisellä tunnisteella.
|
||||
Rajapinta vastaa lajitelmaan HTTP-kutsuja (GET, PUT, POST ja UPDATE) ja kaikki
|
||||
rajapinnan vastaukset ovat XML-muotoiltua UTF-8:aa.
|
||||
auth:
|
||||
title: Tunnistautuminen
|
||||
content: Tunnistautuminen tapahtuu %{auth_link}. Tracksin käyttäjätunnusta ja
|
||||
salasanaa käytetään rajapinnan tunnisteina. Huomaathan, että Basic-HTTP-tunnistautumisessa
|
||||
salasanasi lähetetään pelkkänä tekstinä. Jos tarvitset turvallisempaa tunnistautumisratkaisua,
|
||||
asenna verkkopalvelimesi palvelemaan Tracks HTTPS:n yli.
|
||||
basic_auth_link_text: Basic-HTTP-tunnistautuminen
|
||||
retrieve:
|
||||
content: 'Noutaaksesi tietoa sinun tarvitsee vain tehdä HTTP GET-pyyntö resurssitunnisteella.
|
||||
Esimerkiksi jos haluat hakea kaikki asiayhteydet %{curl_link}illa:'
|
||||
single_context: 'Yksittäisen asiayhteyden noutaminen:'
|
||||
todos_from_context: 'Asiayhteyteen kuuluvien tehtävien noutaminen:'
|
||||
projects: Voit käyttää yllä esitettyä muotoa myös projekteilla asiayhteyksien
|
||||
sijaan.
|
||||
paths_title: 'Kaikki tiedot ovat saatavilla seuraavissa resurssipoluissa:'
|
||||
active_todos: 'Jos haluat noutaa vain aktiiviset tehtävät, voit lisätä parametrin
|
||||
%{active_code} ja asettaa siihen jonkin arvon, kuten:'
|
||||
title: Tiedon noutaminen rajapinnasta
|
||||
limit: 'Tehtäväresursseille (tehtävät, tickler, tehdyt, piilotetut ja kalenteri)
|
||||
voit palauttaa vain kentät %{fields} lisäämällä parametrin %{limit_parameter}
|
||||
ja asettamalla sen arvoksi %{set_to}. Esimerkiksi:'
|
||||
notes:
|
||||
description: 'Ohjeessa on noudatettu muutamia merkintötapoja:'
|
||||
curl_description: Kaikki esimerkit käyttävät %{curl}ia.
|
||||
bullet2: '%{omit} osoittaa että epäolennaisia osuuksia vastaustiedosta on jätetty
|
||||
pois ohjeen selkiyttämiseksi'
|
||||
bullet1: '%{id} resurssin %{url} osoittavat että se tulee korvata resurssin
|
||||
yksilöllisellä tunnisteella'
|
||||
title: Huomioita ohjeesta
|
||||
activeresource:
|
||||
title: Rajapinnan käyttäminen ActiveResourcella
|
||||
wrapper_description: '%{signals_link}in Highrise-wrapperin innostamana teimme
|
||||
pienen Ruby-wrapperin (löytyy doc/-hakemistosta) rajapinnalle joka luo sinulle
|
||||
ActiveResource-mallit joilla voit leikkiä IRB-istunnossa:'
|
||||
ror_link_text: Ruby on Rails
|
||||
signals_link_text: 37 Signals
|
||||
activeresource_link_text: ActiveResource
|
||||
description: '%{activeresource_link} on ohut mutta hyödyllinen RESTful-palveluiden
|
||||
ympärillä %{ror_link}issa oleva palvelu. Se tulee olemaan osa Rails 2.0:aa,
|
||||
mutta siihen asti voit noutaa sen %{gem_command}.'
|
||||
response:
|
||||
xml_description: 'XML tyhjälle listalle näyttää tältä, jälleen curlilla:'
|
||||
title: Vastauksen ja vastauskoodin käsittely
|
||||
description: Kaikki onnistuneet toiminnot palauttavat tilakoodin %{response_200}
|
||||
tai %{response_201} riippuen toiminnosta. Joissain tapauksissa listassa, esimerkiksi
|
||||
%{example_call} ei ole lainkaan tuloksia, jolloin palautetaan tyhjä lista.
|
||||
curl_link_text: cURL
|
||||
id: ID
|
||||
|
|
|
|||
|
|
@ -354,7 +354,8 @@ fr:
|
|||
select_feed_for_context: Selectionner un flux pour ce contexte
|
||||
select_feed_for_project: Selectionner le flux pour ce projet
|
||||
footer:
|
||||
send_feedback: Envoyer un feedback sur %{version}
|
||||
send_feedback: Envoyer un feedback
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
helpers:
|
||||
select:
|
||||
prompt: Veuillez sélectionner
|
||||
|
|
|
|||
|
|
@ -304,7 +304,8 @@ he:
|
|||
select_feed_for_context: בחירת ההזנה עבור ההקשר הנתון
|
||||
select_feed_for_project: בחירת ההזנה עבור הפרוייקט
|
||||
footer:
|
||||
send_feedback: שליחת משוב על גירסא %{version}
|
||||
send_feedback: שליחת משוב על גירסא
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
helpers:
|
||||
select:
|
||||
prompt: Выберите
|
||||
|
|
|
|||
|
|
@ -1 +1,5 @@
|
|||
{}
|
||||
nb_NO:
|
||||
activerecord:
|
||||
attributes:
|
||||
note:
|
||||
created_at: Opprettet
|
||||
|
|
|
|||
|
|
@ -347,7 +347,8 @@ nl:
|
|||
select_feed_for_context: Kies de feed voor deze context
|
||||
select_feed_for_project: Kies de feed voor dit project
|
||||
footer:
|
||||
send_feedback: Stuur reactie op %{version}
|
||||
send_feedback: Stuur reactie
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
helpers:
|
||||
select:
|
||||
prompt: Maak een keuze
|
||||
|
|
|
|||
|
|
@ -425,7 +425,8 @@ ru:
|
|||
select_feed_for_context: Выберите ленту новостей для этого контекста
|
||||
select_feed_for_project: Выберите ленту новостей для этого проекта
|
||||
footer:
|
||||
send_feedback: Обратная связь. Версия %{version}
|
||||
send_feedback: Обратная связь
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
helpers:
|
||||
select:
|
||||
prompt: Выберите...
|
||||
|
|
|
|||
|
|
@ -1 +1,2 @@
|
|||
{}
|
||||
sv:
|
||||
{}
|
||||
|
|
|
|||
|
|
@ -1,353 +1,429 @@
|
|||
data:
|
||||
import:
|
||||
yaml_disabled: YAML yükleme kapalı
|
||||
todos_count: İçeri aktarılacak Todos sayısı %{count}
|
||||
projects_count: İçe aktarılacak proje sayısı %{count}
|
||||
upload_csv: Lütfen CSV dosyanızı yükleyin
|
||||
upload: Karşıya yükle
|
||||
target_field: 'Şuraya içe aktar:'
|
||||
successful: İçe aktarma başarılı.
|
||||
map_title: Harita dosyaları içe aktarılabilir
|
||||
header: Dosya içe aktarılıyor
|
||||
submit: İçe aktar
|
||||
errors:
|
||||
invalid_destination: 'Geçersiz içe aktarma dizini: %{e}'
|
||||
some: İçe aktarım esnasında hata meydana geldi
|
||||
save_error: Kayıt yüklenemedi CSV (%{path_and_file}). Tracks yükleme dizinine
|
||||
yazsın mı? %{e}
|
||||
invalid_csv: 'Geçersiz CSV: headerler okunamadı: %{e}'
|
||||
file_blank: Dosya boş olamaz
|
||||
paste_field: 'İçe aktarılan YAML dosyasının içeriğini aşağıdaki metin kutucuğuna
|
||||
yapıştır:'
|
||||
warning: Dikkat
|
||||
yaml_warning: '%{warning}: YAML dosyası dışa aktarılmadan önce mevcut bütün bilgileriniz
|
||||
kaybolacak. Herhangi bir sorun yaşama ihtimalinize karşılık, eğer veri tabanına
|
||||
şu anda erişiminiz var ise yedeklemenizi öneririz.'
|
||||
export:
|
||||
page_title: Tracks::Export
|
||||
title: Dışa aktarılıyor
|
||||
format_header: 'Aşağıdaki biçimleri seçebilirsiniz:'
|
||||
csv_actions_description: CSV dosyası bütün eylemlerinizi, isimlendirilmiş içeriklerinizi
|
||||
ve projelerinizi içerir
|
||||
csv_notes_description: CSV dosyası bütün notlarınızı içerir
|
||||
yaml_link_description: YAML dosyası bütün eylemlerinizi, içeriklerinizi, projelerinizi,
|
||||
etiketlerinizi ve notlarınızı içerir
|
||||
csv_notes_title: CSV dosyası (sadece notlar)
|
||||
xml_link_title: XML dosyası (sadece eylemler)
|
||||
yaml_description: ':{yaml}: Dışarı aktarmak için en iyisidir.'
|
||||
download_link: İndirme bağlantısı
|
||||
yaml_link_title: YAML dosyası
|
||||
xml_description: '%{xml}: Veri aktarımı ve düzenleme için en iyisidir'
|
||||
yaml_experimental: Lütfen YAML dosyalarının deneysel olarak desteklendiğini göz
|
||||
önünde bulundurunuz. Önemli verileri yedeklerken dikkatli olunuz.
|
||||
csv_description: '%{csv}: İş tablosuna veya veri analizi yazılımlarına aktarmak
|
||||
için en iyisidir'
|
||||
xml_link_description: XML dosyası bütün eylemlerinizi, içeriklerinizi, projelerinizi,
|
||||
etiketlerinizi ve notlarınızı içerir
|
||||
csv_actions_title: CSV dosyası (eylemler, içerikler ve projeler)
|
||||
yaml: YAML
|
||||
csv: CSV
|
||||
xml: XML
|
||||
contexts:
|
||||
visible_contexts: Görünür içerikler
|
||||
view_link: '%{name} içeriğini görüntüle'
|
||||
update_status_message: İçerik adı değiştirildi
|
||||
todos_append: bu içerikte
|
||||
status_hidden: İçerik gizli
|
||||
status_active: İçerik etkin
|
||||
show_form_title: Bir içerik ekle
|
||||
show_form: Yeni bir içerik oluştur
|
||||
save_status_message: İçerik kaydedildi
|
||||
no_contexts_hidden: Şu anda gizli bir içerik bulunmuyor
|
||||
no_contexts_closed: Şu anda kapalı bir içerik bulunmuyor
|
||||
no_contexts_active: Şu anda etkin bir içerik bulunmuyor
|
||||
no_contexts_: 'İçerik yok '
|
||||
new_context_pre: Yeni içerik '
|
||||
new_context_post: "' de oluşturulacaktır. Emin misiniz?"
|
||||
letter_abbreviation: C
|
||||
last_completed_in_context: (son%{number})
|
||||
hide_form_title: Yeni içerik biçimini gizle
|
||||
hide_form: Biçimi gizle
|
||||
hidden_contexts: Gizlenmiş içerikler
|
||||
edit_context: İçeriği düzenle
|
||||
delete_context_title: İçeriği sil
|
||||
delete_context_confirmation: Şu içeriği silmek istediğinize emin misiniz? %{name}'
|
||||
İçerikteki bütün (tekrarlanan) eylemler de silinecektir!
|
||||
delete_context: İçeriği sil
|
||||
context_state: İçerik durumu
|
||||
context_name: İçerik adı
|
||||
context_hide: Font sayfasında gizle?
|
||||
context_deleted: Silinen içerik '%{name}'
|
||||
completed_tasks_title: TRACKS::şuradan '%{context_name}' tamamlanan eylemler
|
||||
all_completed_tasks_title: TRACKS::şuradan '%{context_name}' tamamlanan bütün eylemler
|
||||
add_context: İçerik ekle
|
||||
common:
|
||||
wiki: Wiki
|
||||
weeks: haftalar
|
||||
week: hafta
|
||||
website: İnternet sayfası
|
||||
update: Güncelle
|
||||
todo: todo
|
||||
third: Üçüncü
|
||||
sort:
|
||||
sort: Sırala
|
||||
by_task_count_title_confirm: Bu projeleri görev sayısına göre sıralamak istediğinize
|
||||
emin misiniz? Bu işlem mevcut sıralamayı iptal edecektir.
|
||||
by_task_count_title: Görev sayısına göre sırala
|
||||
by_task_count: Görev sayısına göre
|
||||
alphabetically_title: Projeleri alfabetik olarak sırala
|
||||
alphabetically_confirm: Bu projeleri alfabetik olarak sıralamak istediğinize emin
|
||||
misiniz? Bu işlem mevcut sıralamayı iptal edecektir.
|
||||
alphabetically: Alfabetik sırayla
|
||||
show_all: Hepsini göster
|
||||
server_error: Sunucuda bir hata meydana geldi.
|
||||
second: İkinci
|
||||
search: Ara
|
||||
review: Gözden geçir
|
||||
recurring_todos: Tekrarlanan eylemler
|
||||
projects: Projeler
|
||||
project: Proje
|
||||
previous: Önceki
|
||||
optional: opsiyonel
|
||||
ok: Tamam
|
||||
numbered_step: Adım %{number}
|
||||
notes: Notlar
|
||||
not_available_abbr: n/a
|
||||
none: Hiçbiri
|
||||
next: Sıradaki
|
||||
months: aylar
|
||||
month: ay
|
||||
mailing_list: E-posta listesi
|
||||
logout: Çıkış
|
||||
last: Son
|
||||
go_back: Geri git
|
||||
fourth: Dördüncü
|
||||
forth: İleri
|
||||
first: Birinci
|
||||
errors_with_fields: 'Şu alanlarda sorunlarla karşılaşıldı:'
|
||||
email: E-posta
|
||||
drag_handle: SÜRÜKLE
|
||||
description: Açıklama
|
||||
deferred: ertelenmiş
|
||||
create: Oluştur
|
||||
contribute: Katkıda bulun
|
||||
contexts: İçerikler
|
||||
context: İçerik
|
||||
collapse_expand: Daralt/genişlet
|
||||
cancel: İptal
|
||||
bugs: Hatalar
|
||||
back: Geri
|
||||
ajaxError: Sunucudan alınırken bir hatayla karşılaşıldı
|
||||
add: Ekle
|
||||
actions: Eylemler
|
||||
action: Eylem
|
||||
activerecord:
|
||||
errors:
|
||||
template:
|
||||
header:
|
||||
one: 1 hata şunun %{model} kaydını engelledi
|
||||
other: '%{count} hataları şunların %{model} kayıtlarını engelledi'
|
||||
body: 'Şu alanlarda sorunlar mevcuttur:'
|
||||
models:
|
||||
project:
|
||||
attributes:
|
||||
name:
|
||||
too_long: proje adı 256 karakterden kısa olmalıdır
|
||||
taken: zaten mevcut
|
||||
blank: projenin bir adı olmalıdır
|
||||
messages:
|
||||
wrong_length: yanlış uzunlukta (should be %{count} characters)
|
||||
too_short: çok kısa (minimum is %{count} characters)
|
||||
too_long: çok uzun (maximum is %{count} characters)
|
||||
taken: zaten alınmış
|
||||
restrict_dependent_destroy:
|
||||
has_many: Bu kayda bağlı bir dosya bulunduğu için kayıt silinemez %{record}
|
||||
has_one: Bu kayda bağlı farklı bir dosya bulunduğu için kayıt silinemez %{record}
|
||||
record_invalid: 'Doğrulama başarısız: %{errors}'
|
||||
odd: tek sayı olmalıdır
|
||||
not_a_number: rakam değildir
|
||||
less_than_or_equal_to: şundan az veya denk olmalıdır %{count}
|
||||
less_than: şundan az olmalıdır %{count}
|
||||
invalid: geçersiz
|
||||
inclusion: listeye dahil değildir
|
||||
greater_than_or_equal_to: şuna denk veya büyük olmalıdır %{count}
|
||||
greater_than: şundan büyük olmalıdır %{count}
|
||||
exclusion: alınmıştır
|
||||
even: eşit olmalıdır
|
||||
equal_to: şuna eşdeğer olmalıdır %{count}
|
||||
empty: boş bırakılamaz
|
||||
confirmation: eşleşmiyor
|
||||
blank: boş bırakılamaz
|
||||
accepted: Kabul edilmelidir
|
||||
full_messages:
|
||||
format: '%{attribute} %{message}'
|
||||
attributes:
|
||||
user:
|
||||
password: Şifre
|
||||
open_id_url: OpenID URL
|
||||
login: Giriş
|
||||
last_name: Soyad
|
||||
last_login_at: Son giriş tarihi
|
||||
first_name: İlk ad
|
||||
email: E-posta adresi
|
||||
display_name: Görüntüleme adı
|
||||
created_at: Oluşturulma
|
||||
auth_type: Auth türü
|
||||
todo:
|
||||
tags: Etiketler
|
||||
show_from: Şuradan göster
|
||||
project: Proje
|
||||
predecessors: Değişiklik gösterir
|
||||
notes: Notlar
|
||||
due: Bitiş tarihi
|
||||
description: Açıklama
|
||||
context: içerik
|
||||
project:
|
||||
name: Ad
|
||||
description: Açıklama
|
||||
default_tags: Varsayılan etiketler
|
||||
default_context_name: Varsayılan ortam
|
||||
preference:
|
||||
week_starts: Hafta başlama tarihi
|
||||
verbose_action_descriptors: Eylem anahtar sözcüklerini (bağlam, proje) verboz
|
||||
biçiminde göster
|
||||
title_date_format: Başlık zaman biçimi
|
||||
time_zone: Zaman dilimi
|
||||
theme: Tema
|
||||
staleness_starts: Stagnasyonu başlat
|
||||
sms_email: E-posta'dan
|
||||
sms_context: Varsayılan e-posta içeriği
|
||||
show_project_on_todo_done: Yapılacaklar bitiminde proje sayfasına git
|
||||
show_number_completed: Bitmiş eylemlerin sayısını göster
|
||||
show_hidden_projects_in_sidebar: Gizli projeleri kenar çubuğunda göster
|
||||
show_hidden_contexts_in_sidebar: Bitmiş içerikleri kenar çubuğunda göster
|
||||
show_completed_projects_in_sidebar: Bitmiş projeleri kenar çubuğunda göster
|
||||
review_period: Proje yenilenme aralığı
|
||||
refresh: Yenilenme aralığı (dakika)
|
||||
mobile_todos_per_page: Sayfa başı eylem sayısı (Mobil Görünüm)
|
||||
locale: Lokal
|
||||
email: E-posta
|
||||
last_name: Soyad
|
||||
first_name: İlk ad
|
||||
due_style: Bitiş şekli
|
||||
date_format: Tarih formatı
|
||||
tr:
|
||||
data:
|
||||
import:
|
||||
yaml_disabled: YAML yükleme kapalı
|
||||
todos_count: İçeri aktarılacak Todos sayısı %{count}
|
||||
projects_count: İçe aktarılacak proje sayısı %{count}
|
||||
upload_csv: Lütfen CSV dosyanızı yükleyin
|
||||
upload: Karşıya yükle
|
||||
target_field: 'Şuraya içe aktar:'
|
||||
successful: İçe aktarma başarılı.
|
||||
map_title: Harita dosyaları içe aktarılabilir
|
||||
header: Dosya içe aktarılıyor
|
||||
submit: İçe aktar
|
||||
errors:
|
||||
invalid_destination: 'Geçersiz içe aktarma dizini: %{e}'
|
||||
some: İçe aktarım esnasında hata meydana geldi
|
||||
save_error: Kayıt yüklenemedi CSV (%{path_and_file}). Tracks yükleme dizinine
|
||||
yazsın mı? %{e}
|
||||
invalid_csv: 'Geçersiz CSV: headerler okunamadı: %{e}'
|
||||
file_blank: Dosya boş olamaz
|
||||
paste_field: 'İçe aktarılan YAML dosyasının içeriğini aşağıdaki metin kutucuğuna
|
||||
yapıştır:'
|
||||
warning: Dikkat
|
||||
yaml_warning: '%{warning}: YAML dosyası dışa aktarılmadan önce mevcut bütün bilgileriniz
|
||||
kaybolacak. Herhangi bir sorun yaşama ihtimalinize karşılık, eğer veri tabanına
|
||||
şu anda erişiminiz var ise yedeklemenizi öneririz.'
|
||||
export:
|
||||
page_title: Tracks::Export
|
||||
title: Dışa aktarılıyor
|
||||
format_header: 'Aşağıdaki biçimleri seçebilirsiniz:'
|
||||
csv_actions_description: CSV dosyası bütün eylemlerinizi, isimlendirilmiş içeriklerinizi
|
||||
ve projelerinizi içerir
|
||||
csv_notes_description: CSV dosyası bütün notlarınızı içerir
|
||||
yaml_link_description: YAML dosyası bütün eylemlerinizi, içeriklerinizi, projelerinizi,
|
||||
etiketlerinizi ve notlarınızı içerir
|
||||
csv_notes_title: CSV dosyası (sadece notlar)
|
||||
xml_link_title: XML dosyası (sadece eylemler)
|
||||
yaml_description: ':{yaml}: Dışarı aktarmak için en iyisidir.'
|
||||
download_link: İndirme bağlantısı
|
||||
yaml_link_title: YAML dosyası
|
||||
xml_description: '%{xml}: Veri aktarımı ve düzenleme için en iyisidir'
|
||||
yaml_experimental: Lütfen YAML dosyalarının deneysel olarak desteklendiğini göz
|
||||
önünde bulundurunuz. Önemli verileri yedeklerken dikkatli olunuz.
|
||||
csv_description: '%{csv}: İş tablosuna veya veri analizi yazılımlarına aktarmak
|
||||
için en iyisidir'
|
||||
xml_link_description: XML dosyası bütün eylemlerinizi, içeriklerinizi, projelerinizi,
|
||||
etiketlerinizi ve notlarınızı içerir
|
||||
csv_actions_title: CSV dosyası (eylemler, içerikler ve projeler)
|
||||
yaml: YAML
|
||||
csv: CSV
|
||||
xml: XML
|
||||
contexts:
|
||||
visible_contexts: Görünür içerikler
|
||||
view_link: '%{name} içeriğini görüntüle'
|
||||
update_status_message: İçerik adı değiştirildi
|
||||
todos_append: bu içerikte
|
||||
status_hidden: İçerik gizli
|
||||
status_active: İçerik etkin
|
||||
show_form_title: Bir içerik ekle
|
||||
show_form: Yeni bir içerik oluştur
|
||||
save_status_message: İçerik kaydedildi
|
||||
no_contexts_hidden: Şu anda gizli bir içerik bulunmuyor
|
||||
no_contexts_closed: Şu anda kapalı bir içerik bulunmuyor
|
||||
no_contexts_active: Şu anda etkin bir içerik bulunmuyor
|
||||
no_contexts_: 'İçerik yok '
|
||||
new_context_pre: Yeni içerik '
|
||||
new_context_post: "' de oluşturulacaktır. Emin misiniz?"
|
||||
letter_abbreviation: C
|
||||
last_completed_in_context: (son%{number})
|
||||
hide_form_title: Yeni içerik biçimini gizle
|
||||
hide_form: Biçimi gizle
|
||||
hidden_contexts: Gizlenmiş içerikler
|
||||
edit_context: İçeriği düzenle
|
||||
delete_context_title: İçeriği sil
|
||||
delete_context_confirmation: Şu içeriği silmek istediğinize emin misiniz? %{name}'
|
||||
İçerikteki bütün (tekrarlanan) eylemler de silinecektir!
|
||||
delete_context: İçeriği sil
|
||||
context_state: İçerik durumu
|
||||
context_name: İçerik adı
|
||||
context_hide: Font sayfasında gizle?
|
||||
context_deleted: Silinen içerik '%{name}'
|
||||
completed_tasks_title: TRACKS::şuradan '%{context_name}' tamamlanan eylemler
|
||||
all_completed_tasks_title: TRACKS::şuradan '%{context_name}' tamamlanan bütün eylemler
|
||||
add_context: İçerik ekle
|
||||
common:
|
||||
wiki: Wiki
|
||||
weeks: haftalar
|
||||
week: hafta
|
||||
website: İnternet sayfası
|
||||
update: Güncelle
|
||||
todo: todo
|
||||
third: Üçüncü
|
||||
sort:
|
||||
sort: Sırala
|
||||
by_task_count_title_confirm: Bu projeleri görev sayısına göre sıralamak istediğinize
|
||||
emin misiniz? Bu işlem mevcut sıralamayı iptal edecektir.
|
||||
by_task_count_title: Görev sayısına göre sırala
|
||||
by_task_count: Görev sayısına göre
|
||||
alphabetically_title: Projeleri alfabetik olarak sırala
|
||||
alphabetically_confirm: Bu projeleri alfabetik olarak sıralamak istediğinize emin
|
||||
misiniz? Bu işlem mevcut sıralamayı iptal edecektir.
|
||||
alphabetically: Alfabetik sırayla
|
||||
show_all: Hepsini göster
|
||||
server_error: Sunucuda bir hata meydana geldi.
|
||||
second: İkinci
|
||||
search: Ara
|
||||
review: Gözden geçir
|
||||
recurring_todos: Tekrarlanan eylemler
|
||||
projects: Projeler
|
||||
project: Proje
|
||||
previous: Önceki
|
||||
optional: opsiyonel
|
||||
ok: Tamam
|
||||
numbered_step: Adım %{number}
|
||||
notes: Notlar
|
||||
not_available_abbr: n/a
|
||||
none: Hiçbiri
|
||||
next: Sıradaki
|
||||
months: aylar
|
||||
month: ay
|
||||
mailing_list: E-posta listesi
|
||||
logout: Çıkış
|
||||
last: Son
|
||||
go_back: Geri git
|
||||
fourth: Dördüncü
|
||||
forth: İleri
|
||||
first: Birinci
|
||||
errors_with_fields: 'Şu alanlarda sorunlarla karşılaşıldı:'
|
||||
email: E-posta
|
||||
drag_handle: SÜRÜKLE
|
||||
description: Açıklama
|
||||
deferred: ertelenmiş
|
||||
create: Oluştur
|
||||
contribute: Katkıda bulun
|
||||
contexts: İçerikler
|
||||
context: İçerik
|
||||
collapse_expand: Daralt/genişlet
|
||||
cancel: İptal
|
||||
bugs: Hatalar
|
||||
back: Geri
|
||||
ajaxError: Sunucudan alınırken bir hatayla karşılaşıldı
|
||||
add: Ekle
|
||||
actions: Eylemler
|
||||
action: Eylem
|
||||
days_midsentence:
|
||||
one: Gün
|
||||
other: Günler
|
||||
note:
|
||||
updated_at: Güncellenme tarihi
|
||||
created_at: Oluşturulma tarihi
|
||||
date:
|
||||
abbr_day_names:
|
||||
- Pa
|
||||
- Pt
|
||||
- Pe
|
||||
- Cu
|
||||
- Ct
|
||||
abbr_month_names:
|
||||
- Kas
|
||||
- Oca
|
||||
- Şub
|
||||
- Mar
|
||||
- Nis
|
||||
- May
|
||||
- Haz
|
||||
- Tem
|
||||
- Ağu
|
||||
- Eyl
|
||||
- Eki
|
||||
day_names:
|
||||
- Pazar
|
||||
- Pazartesi
|
||||
- Salı
|
||||
- Çarşamba
|
||||
- Perşembe
|
||||
- Cuma
|
||||
- Cumartesi
|
||||
formats:
|
||||
default: '%d/%m/%Y'
|
||||
short: '%d %b'
|
||||
long: '%d-%m-%Y'
|
||||
longer: '%A %d %B, %Y'
|
||||
month_names:
|
||||
- Ocak
|
||||
- Şubat
|
||||
- Eylül
|
||||
- Mart
|
||||
- Nisan
|
||||
- Mayıs
|
||||
- Haziran
|
||||
- Temmuz
|
||||
- Ağustos
|
||||
- Ekim
|
||||
- Kasım
|
||||
- Aralık
|
||||
order:
|
||||
- :yıl
|
||||
- :gün
|
||||
datetime:
|
||||
prompts:
|
||||
day: Gün
|
||||
hour: Saat
|
||||
minute: Dakika
|
||||
month: Ay
|
||||
year: Yıl
|
||||
second: Saniye
|
||||
distance_in_words:
|
||||
almost_x_years:
|
||||
one: neredeyse 1 yıl
|
||||
other: neredeyse %{count} yıl
|
||||
half_a_minute: yarım dakika
|
||||
x_seconds:
|
||||
one: 1 saniye
|
||||
other: '%{count} saniye'
|
||||
x_days:
|
||||
one: 1 gün
|
||||
other: '%{count} gün'
|
||||
x_months:
|
||||
one: 1 ay
|
||||
other: '%{count} ay'
|
||||
about_x_months:
|
||||
one: yaklaşık 1 ay
|
||||
other: yaklaşık %{count} ay
|
||||
about_x_hours:
|
||||
one: yaklaşık 1 saat
|
||||
other: yaklaşık %{count} saat
|
||||
about_x_years:
|
||||
one: yaklaşık 1 yıl
|
||||
other: yaklaşık %{count} yıl
|
||||
x_minutes:
|
||||
one: 1 dakika
|
||||
other: '%{count} dakika'
|
||||
over_x_years:
|
||||
one: 1 yıldan fazla
|
||||
other: '%{count} yıldan fazla'
|
||||
errors:
|
||||
messages:
|
||||
blank: boş bırakılamaz
|
||||
less_than: "%{count}'dan az olmalıdır"
|
||||
not_a_number: bir sayı değildir
|
||||
other_than: "%{count}'dan farklı olmalıdır"
|
||||
present: boş olmalıdır
|
||||
taken: daha önceden alınmış
|
||||
not_an_integer: integer olmalıdır
|
||||
odd: tek sayı olmalıdır
|
||||
too_long: çok uzun (en fazla %{count} karakter olabilir)
|
||||
too_short: çok kısa ( en az %{count} karakter olabilir)
|
||||
accepted: kabul edilmelidir
|
||||
confirmation: '%{attribute} ile eşleşmemektedir'
|
||||
empty: boş bırakılamaz
|
||||
equal_to: '%{count} ile eşit olmalıdır'
|
||||
inclusion: listeye dahil değildir
|
||||
invalid: geçersiz
|
||||
less_than_or_equal_to: "%{count}'dan az veya eşit olmalıdır"
|
||||
wrong_length: yanlış uzunluk (karakter sayısı %{count} kadar olmalıdır)
|
||||
even: eşit olmalıdır
|
||||
greater_than_or_equal_to: "%{count}'dan büyük veya eşit olmalıdır"
|
||||
exclusion: daha önceden alınmış
|
||||
greater_than: "%{count}'dan büyük olmalıdır"
|
||||
format: '%{attribute} %{message}'
|
||||
user_unauthorized: '401 Yetkisiz: sadece yetkili kullanıcılar bu özelliğe erişime
|
||||
sahiptir.'
|
||||
feedlist:
|
||||
actions_completed_last_week: Son 7 günde tamamlanan eylemler
|
||||
actions_due_next_week: 7 gün veya daha önce bitecek eylemler
|
||||
actions_due_today: Bugün veya daha erken bitecek olan eylemler
|
||||
active_projects_wo_next: Eylemi bulunmayan aktif projeler
|
||||
one: Not yok
|
||||
other: 1 not var
|
||||
actions_midsentence:
|
||||
one: Eylem
|
||||
other: Eylemler
|
||||
activerecord:
|
||||
errors:
|
||||
template:
|
||||
header:
|
||||
one: 1 hata şunun %{model} kaydını engelledi
|
||||
other: '%{count} hataları şunların %{model} kayıtlarını engelledi'
|
||||
body: 'Şu alanlarda sorunlar mevcuttur:'
|
||||
models:
|
||||
project:
|
||||
attributes:
|
||||
name:
|
||||
too_long: proje adı 256 karakterden kısa olmalıdır
|
||||
taken: zaten mevcut
|
||||
blank: projenin bir adı olmalıdır
|
||||
messages:
|
||||
wrong_length: yanlış uzunlukta (should be %{count} characters)
|
||||
too_short: çok kısa (minimum is %{count} characters)
|
||||
too_long: çok uzun (maximum is %{count} characters)
|
||||
taken: zaten alınmış
|
||||
restrict_dependent_destroy:
|
||||
has_many: Bu kayda bağlı bir dosya bulunduğu için kayıt silinemez %{record}
|
||||
has_one: Bu kayda bağlı farklı bir dosya bulunduğu için kayıt silinemez %{record}
|
||||
record_invalid: 'Doğrulama başarısız: %{errors}'
|
||||
odd: tek sayı olmalıdır
|
||||
not_a_number: rakam değildir
|
||||
less_than_or_equal_to: şundan az veya denk olmalıdır %{count}
|
||||
less_than: şundan az olmalıdır %{count}
|
||||
invalid: geçersiz
|
||||
inclusion: listeye dahil değildir
|
||||
greater_than_or_equal_to: şuna denk veya büyük olmalıdır %{count}
|
||||
greater_than: şundan büyük olmalıdır %{count}
|
||||
exclusion: alınmıştır
|
||||
even: eşit olmalıdır
|
||||
equal_to: şuna eşdeğer olmalıdır %{count}
|
||||
empty: boş bırakılamaz
|
||||
confirmation: eşleşmiyor
|
||||
blank: boş bırakılamaz
|
||||
accepted: Kabul edilmelidir
|
||||
full_messages:
|
||||
format: '%{attribute} %{message}'
|
||||
attributes:
|
||||
user:
|
||||
password: Şifre
|
||||
open_id_url: OpenID URL
|
||||
login: Giriş
|
||||
last_name: Soyad
|
||||
last_login_at: Son giriş tarihi
|
||||
first_name: İlk ad
|
||||
email: E-posta adresi
|
||||
display_name: Görüntüleme adı
|
||||
created_at: Oluşturulma
|
||||
auth_type: Auth türü
|
||||
todo:
|
||||
tags: Etiketler
|
||||
show_from: Şuradan göster
|
||||
project: Proje
|
||||
predecessors: Değişiklik gösterir
|
||||
notes: Notlar
|
||||
due: Bitiş tarihi
|
||||
description: Açıklama
|
||||
context: içerik
|
||||
project:
|
||||
name: Ad
|
||||
description: Açıklama
|
||||
default_tags: Varsayılan etiketler
|
||||
default_context_name: Varsayılan ortam
|
||||
preference:
|
||||
week_starts: Hafta başlama tarihi
|
||||
verbose_action_descriptors: Eylem anahtar sözcüklerini (bağlam, proje) verboz
|
||||
biçiminde göster
|
||||
title_date_format: Başlık zaman biçimi
|
||||
time_zone: Zaman dilimi
|
||||
theme: Tema
|
||||
staleness_starts: Stagnasyonu başlat
|
||||
sms_email: E-posta'dan
|
||||
sms_context: Varsayılan e-posta içeriği
|
||||
show_project_on_todo_done: Yapılacaklar bitiminde proje sayfasına git
|
||||
show_number_completed: Bitmiş eylemlerin sayısını göster
|
||||
show_hidden_projects_in_sidebar: Gizli projeleri kenar çubuğunda göster
|
||||
show_hidden_contexts_in_sidebar: Bitmiş içerikleri kenar çubuğunda göster
|
||||
show_completed_projects_in_sidebar: Bitmiş projeleri kenar çubuğunda göster
|
||||
review_period: Proje yenilenme aralığı
|
||||
refresh: Yenilenme aralığı (dakika)
|
||||
mobile_todos_per_page: Sayfa başı eylem sayısı (Mobil Görünüm)
|
||||
locale: Lokal
|
||||
email: E-posta
|
||||
last_name: Soyad
|
||||
first_name: İlk ad
|
||||
due_style: Bitiş şekli
|
||||
date_format: Tarih formatı
|
||||
note:
|
||||
updated_at: Güncellenme tarihi
|
||||
created_at: Oluşturulma tarihi
|
||||
date:
|
||||
abbr_day_names:
|
||||
- Pa
|
||||
- Pt
|
||||
- Pe
|
||||
- Cu
|
||||
- Ct
|
||||
- Cum
|
||||
- Cmt
|
||||
abbr_month_names:
|
||||
- Kas
|
||||
- Oca
|
||||
- Şub
|
||||
- Mar
|
||||
- Nis
|
||||
- May
|
||||
- Haz
|
||||
- Tem
|
||||
- Ağu
|
||||
- Eyl
|
||||
- Eki
|
||||
- Kas
|
||||
- Ara
|
||||
day_names:
|
||||
- Pazar
|
||||
- Pazartesi
|
||||
- Salı
|
||||
- Çarşamba
|
||||
- Perşembe
|
||||
- Cuma
|
||||
- Cumartesi
|
||||
formats:
|
||||
default: '%d/%m/%Y'
|
||||
short: '%d %b'
|
||||
long: '%d-%m-%Y'
|
||||
longer: '%A %d %B, %Y'
|
||||
month_names:
|
||||
- Ocak
|
||||
- Şubat
|
||||
- Eylül
|
||||
- Mart
|
||||
- Nisan
|
||||
- Mayıs
|
||||
- Haziran
|
||||
- Temmuz
|
||||
- Ağustos
|
||||
- Ekim
|
||||
- Kasım
|
||||
- Aralık
|
||||
- Aralık
|
||||
order:
|
||||
- :year
|
||||
- :month
|
||||
- :day
|
||||
datetime:
|
||||
prompts:
|
||||
day: Gün
|
||||
hour: Saat
|
||||
minute: Dakika
|
||||
month: Ay
|
||||
year: Yıl
|
||||
second: Saniye
|
||||
distance_in_words:
|
||||
almost_x_years:
|
||||
one: neredeyse 1 yıl
|
||||
other: neredeyse %{count} yıl
|
||||
half_a_minute: yarım dakika
|
||||
x_seconds:
|
||||
one: 1 saniye
|
||||
other: '%{count} saniye'
|
||||
x_days:
|
||||
one: 1 gün
|
||||
other: '%{count} gün'
|
||||
x_months:
|
||||
one: 1 ay
|
||||
other: '%{count} ay'
|
||||
about_x_months:
|
||||
one: yaklaşık 1 ay
|
||||
other: yaklaşık %{count} ay
|
||||
about_x_hours:
|
||||
one: yaklaşık 1 saat
|
||||
other: yaklaşık %{count} saat
|
||||
about_x_years:
|
||||
one: yaklaşık 1 yıl
|
||||
other: yaklaşık %{count} yıl
|
||||
x_minutes:
|
||||
one: 1 dakika
|
||||
other: '%{count} dakika'
|
||||
over_x_years:
|
||||
one: 1 yıldan fazla
|
||||
other: '%{count} yıldan fazla'
|
||||
errors:
|
||||
messages:
|
||||
blank: boş bırakılamaz
|
||||
less_than: "%{count}'dan az olmalıdır"
|
||||
not_a_number: bir sayı değildir
|
||||
other_than: "%{count}'dan farklı olmalıdır"
|
||||
present: boş olmalıdır
|
||||
taken: daha önceden alınmış
|
||||
not_an_integer: integer olmalıdır
|
||||
odd: tek sayı olmalıdır
|
||||
too_long: çok uzun (en fazla %{count} karakter olabilir)
|
||||
too_short: çok kısa ( en az %{count} karakter olabilir)
|
||||
accepted: kabul edilmelidir
|
||||
confirmation: '%{attribute} ile eşleşmemektedir'
|
||||
empty: boş bırakılamaz
|
||||
equal_to: '%{count} ile eşit olmalıdır'
|
||||
inclusion: listeye dahil değildir
|
||||
invalid: geçersiz
|
||||
less_than_or_equal_to: "%{count}'dan az veya eşit olmalıdır"
|
||||
wrong_length: yanlış uzunluk (karakter sayısı %{count} kadar olmalıdır)
|
||||
even: eşit olmalıdır
|
||||
greater_than_or_equal_to: "%{count}'dan büyük veya eşit olmalıdır"
|
||||
exclusion: daha önceden alınmış
|
||||
greater_than: "%{count}'dan büyük olmalıdır"
|
||||
format: '%{attribute} %{message}'
|
||||
user_unauthorized: '401 Yetkisiz: sadece yetkili kullanıcılar bu özelliğe erişime
|
||||
sahiptir.'
|
||||
feedlist:
|
||||
actions_completed_last_week: Son 7 günde tamamlanan eylemler
|
||||
actions_due_next_week: 7 gün veya daha önce bitecek eylemler
|
||||
actions_due_today: Bugün veya daha erken bitecek olan eylemler
|
||||
active_projects_wo_next: Eylemi bulunmayan aktif projeler
|
||||
all_projects: Bütün Projeler
|
||||
choose_context: Almak istediğiniz içeriği seçin
|
||||
projects_and_actions: Aktif projeler ve eylemleri
|
||||
rss_feed: RSS Akışı
|
||||
active_starred_actions: Yıldızlı, etkin eylemler
|
||||
all_actions: Tüm eylemler
|
||||
all_contexts: Bütün İçerikler
|
||||
choose_project: Almak istediğiniz projeyi seçin
|
||||
context_centric_actions: Belirli bir içerikteki tamamlanmamış eylemler için akış
|
||||
context_needed: Akış talep etmeden önce en az bir içerik olmalı
|
||||
ical_feed: iCal akış
|
||||
last_fixed_number: Son %{number} eylem/ler
|
||||
legend: 'Semboller:'
|
||||
notice_incomplete_only: "Not: Akış, aksi işaretlenmedikçe sadece tamamlanmamış eylemleri\
|
||||
\ gösterir. Bu iCal akışları todo listesine eklenebilir. Eğer bitimi yaklaşan\
|
||||
\ todo'ları takvimde görüntülemek istiyorsanız, takvim sayfasından iCal akışını\
|
||||
\ kullanın"
|
||||
plain_text_feed: Düz Yazı Akışı
|
||||
project_centric: Belirli bir projedeki tamamlanmamış eylemler akışı
|
||||
project_needed: Akış talep etmeden önce en az bir proje olmalı
|
||||
select_feed_for_context: Bu içerik için akış seçin
|
||||
select_feed_for_project: Bu proje için akış seçin
|
||||
integrations:
|
||||
sections:
|
||||
email_rich: Zengin Todo Mesaj e-posta formatı
|
||||
message_gateway: Tracks aracılığıyla e-posta gönderebilmek için Tracks'ı e-posta
|
||||
serverine bağlayın
|
||||
automatic_email: Yaklaşan eylemler için kendinize otomatik e-posta gönderin
|
||||
mailgun: Mailgun aracılığıyla Tracks'a e-posta gönder
|
||||
opensearch_description: Tracks'ta ara
|
||||
title: Entegrasyonlar
|
||||
add_your_own: Eklemek istediğiniz araç mı var? Tracks'ın gelecek sürümlerine ekleyebilmemiz
|
||||
için bize gönderin %{tell_us_link}.
|
||||
intro: 'Tracks işinize yarayabilecek diğer araçlarla entegre edilebilir! Bu sayfa
|
||||
bazılarını entegre etmeye yönelik bilgi içerir. Her platforma uygulanabilir olmayabilirler
|
||||
ve bazıları diğerlerine kıyasla daha fazla teknik bilgi gerektirebilir. Ek bilgi
|
||||
için: %{documentation_link}'
|
||||
developer_documentation_link: Tracks için geliştirici dokümantasyonu
|
||||
contents_header: 'İçerikler:'
|
||||
tell_us_link_text: Bunun hakkında bize görüş bildirin
|
||||
cron_2: Başka bir metin kullanabilirsiniz %{feeds_link} Projede birlikte çalıştığınız
|
||||
meslektaşlarınıza neden listeyi e-posta gönderemeyesiniz ki?
|
||||
cron_email_subject: Bitimi 7 gün içerisinde olan Tracks eylemleri
|
||||
feeds_link_text: akış Tracks tarafından sağlanmıştır
|
||||
cron_1: Bu girdiyi crontab üzerinden girerseniz, her gün ÖÖ 5'te 7 gün içerisinde
|
||||
bitimi yaklaşan eylemlerle ilgili bir e-posta alacaksınız.
|
||||
message_gateway:
|
||||
rich_api_tip: Mesaj içeriği tanım, içerik ve proje kısmına, not ise gövde metnine
|
||||
yazarak "çamaşırları yıka @ Ev" veya "Mehmet'i Ara > x projesi" ve benzeri türden
|
||||
görevler oluşturmak için Rich Todo API kullanabilirsiniz.
|
||||
footer:
|
||||
send_feedback: Geri bildirim
|
||||
version: 'Tracks %{version} (%{revision_with_date})'
|
||||
helpers:
|
||||
select:
|
||||
prompt: Seçiniz
|
||||
submit:
|
||||
create: Oluştur %{model}
|
||||
submit: Kaydet %{model}
|
||||
update: Güncelle %{model}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,13 @@ force_ssl: false
|
|||
# the relative URL. Mongrel, for example, has a --prefix option.
|
||||
# subdir: "/tracks"
|
||||
|
||||
# Set this to respective values if you're instance is running behind a proxy
|
||||
# (e.g. localhost:3000 is not the client visible host).
|
||||
# default_url_options:
|
||||
# :host: 'example.org'
|
||||
# :protocol: 'https://'
|
||||
# :port: 443
|
||||
|
||||
# Set to true to allow anyone to sign up for a username.
|
||||
open_signups: false
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,55 @@
|
|||
See doc/upgrading.md for the upgrade documentation!
|
||||
|
||||
## Version 2.6.1
|
||||
|
||||
### Deprecations
|
||||
|
||||
* This will be the last release to support Ruby 2.6, which is already end-of-life.
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Lots of dependencies have been updated (including security updates).
|
||||
* Fixed some documentation.
|
||||
* Updated and added missing Datepicker localisations which caused some locales to fail.
|
||||
* Added PostgreSQL documentation (thanks Sean Pappalardo!)
|
||||
* URL options can be specified to make autocompletion work behind a proxy (thanks Michal Koutný!)
|
||||
|
||||
### Updated translations
|
||||
|
||||
* Finnish (by maintainer Jyri-Petteri ”ZeiP” Paloposki)
|
||||
* Spanish (thanks Francisco Serrador!)
|
||||
* Norwegian Bokmål (thanks Allan Nordhøy!)
|
||||
|
||||
## Version 2.6.0
|
||||
|
||||
### New features
|
||||
|
||||
* Ruby 3.0 is now supported.
|
||||
* Support obsidian links in notes.
|
||||
|
||||
### Removed features
|
||||
|
||||
* No longer supporting EOL Ruby 2.5
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Fix Docker image functionality in certain cases.
|
||||
* Lots of dependencies have been upgraded.
|
||||
* Fixed some error messages in import.
|
||||
* Fixed import in the Docker image.
|
||||
* Footer shows the Git version hash and date in the Docker image
|
||||
|
||||
### Updated translations
|
||||
|
||||
* Finnish (by maintainer Jyri-Petteri ”ZeiP” Paloposki)
|
||||
* Turkish (thanks Burak Ekseli!)
|
||||
* Spanish (thanks Francisco Serrador!)
|
||||
|
||||
## Version 2.5.2
|
||||
|
||||
### New features
|
||||
|
||||
* Whole Tracks is now translatable.
|
||||
* New Finnish locale by the maintainer Jyri-Petteri ”ZeiP” Paloposki.
|
||||
* Update last login field when validating an existing login.
|
||||
* Show more users in the user list and allow changing the order criteria.
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ Tracks container. In future there should be an official image in Docker Hub. You
|
|||
1. Make sure you have Docker properly installed.
|
||||
2. Start a database container with either MySQL or PostgreSQL:
|
||||
```
|
||||
$ docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -d postgres
|
||||
$ docker run -p 3306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=password -d mariadb
|
||||
$ docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -d postgres
|
||||
$ docker run -d -p 3306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=password -d mariadb
|
||||
```
|
||||
3. Create a database and a user for Tracks in the database:
|
||||
```
|
||||
|
|
@ -72,8 +72,8 @@ Tracks container. In future there should be an official image in Docker Hub. You
|
|||
```
|
||||
5. Start the Tracks server:
|
||||
```
|
||||
$ docker run -p 3000:3000 --name tracks --link mariadb:db -t tracks
|
||||
$ docker run -p 3000:3000 --name tracks --link postgres:db -t tracks
|
||||
$ docker run -d -p 3000:3000 --name tracks --link mariadb:db -t tracks
|
||||
$ docker run -d -p 3000:3000 --name tracks --link postgres:db -t tracks
|
||||
```
|
||||
6. You should now be able to access Tracks in http://localhost:3000
|
||||
|
||||
|
|
@ -153,13 +153,13 @@ Tracks is built upon a number of Ruby libraries (known as ‘gems’). The Bundl
|
|||
* If you are using SQLite:
|
||||
|
||||
```
|
||||
bundle install --without development test mysql
|
||||
bundle install --without "development test mysql"
|
||||
```
|
||||
|
||||
* If you are using MySQL:
|
||||
|
||||
```
|
||||
bundle install --without development test sqlite
|
||||
bundle install --without "development test sqlite"
|
||||
```
|
||||
|
||||
* If you are installing Tracks on Windows or Mac OS X, or if you have another JavaScript runtime such as Node.js installed, you may also append `therubyracer` as an additional "without" parameter.
|
||||
|
|
@ -168,10 +168,13 @@ Tracks is built upon a number of Ruby libraries (known as ‘gems’). The Bundl
|
|||
## Configure variables
|
||||
|
||||
1. In the `config` folder, copy the files `database.yml.tmpl` and `site.yml.tmpl` to `database.yml` and `site.yml`, respectively.
|
||||
2. Open the file `config/database.yml` and edit the `production:` section with the details of your database. If you are using MySQL the `adapter:` line should read `adapter: mysql2`, `host: localhost` (in the majority of cases), and your username and password should match those you assigned when you created the database. If you are using SQLite3, you should have only two lines under the production section: `adapter: sqlite3` and `database: db/tracks.db`.
|
||||
3. Open the file `config/site.yml`, and read through the settings to make sure that they suit your setup. In most cases, all you need to change are the `secret_token`, the administrator email address (`admin_email`), and the time zone setting. For the time zone setting you can use the command `bundle exec rake time:zones:local` to see all available timezones on your machine
|
||||
4. If you are using Windows, you may need to check the ‘shebang’ lines (`#!/usr/bin/env ruby`) of the `/public/dispatch.*` files and all the files in the `/script` directory. They are set to `#!/usr/bin/env ruby` by default. This should work for all Unix based setups (Linux or Mac OS X), but Windows users will probably have to change it to something like `#c:/ruby/bin/ruby` to point to the Ruby binary on your system.
|
||||
5. If you intend to use Tracks behind a web server or reverse proxy with https enabled, ensure to set `force_ssl` option to `true`.
|
||||
2. Open the file `config/database.yml` and edit the `production:` section with the details of your database.
|
||||
* If you are using MySQL the `adapter:` line should read `adapter: mysql2`, `host: localhost` (in the majority of cases), and your username and password should match those you assigned when you created the database.
|
||||
* If you are using PostgreSQL, set the line to `adapter: postgresql` and adjust host, username and password as appropriate.
|
||||
* If you are using SQLite3, you should have only two lines under the production section: `adapter: sqlite3` and `database: db/tracks.db`.
|
||||
5. Open the file `config/site.yml`, and read through the settings to make sure that they suit your setup. In most cases, all you need to change are the `secret_token`, the administrator email address (`admin_email`), and the time zone setting. For the time zone setting you can use the command `bundle exec rake time:zones:local` to see all available timezones on your machine
|
||||
6. If you are using Windows, you may need to check the ‘shebang’ lines (`#!/usr/bin/env ruby`) of the `/public/dispatch.*` files and all the files in the `/script` directory. They are set to `#!/usr/bin/env ruby` by default. This should work for all Unix based setups (Linux or Mac OS X), but Windows users will probably have to change it to something like `#c:/ruby/bin/ruby` to point to the Ruby binary on your system.
|
||||
7. If you intend to use Tracks behind a web server or reverse proxy with https enabled, ensure to set `force_ssl` option to `true`.
|
||||
|
||||
### Populate your database with the Tracks schema
|
||||
|
||||
|
|
|
|||
0
public/uploads/csv/.keep
Normal file
0
public/uploads/csv/.keep
Normal file
|
|
@ -1,10 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "==> Polling DB…"
|
||||
|
||||
appdir=$(cd $(dirname "$0")/.. && pwd)
|
||||
[ -f /etc/app-env ] || exec "$appdir/script/docker-environment" $0 $@
|
||||
|
||||
for i in {1..60}; do
|
||||
curl -sf db:3306 >/dev/null && exit
|
||||
nc -z -w5 db 3306 && exit
|
||||
sleep 1
|
||||
done
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ services:
|
|||
web:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: Dockerfile-2.5
|
||||
dockerfile: Dockerfile-3.0
|
||||
environment:
|
||||
# These are set in script/ci-build, so we need to pass-thru them.
|
||||
RAILS_ENV: $RAILS_ENV
|
||||
|
|
@ -1,22 +1,25 @@
|
|||
version: '3'
|
||||
services:
|
||||
db:
|
||||
image: mysql:5.7
|
||||
image: postgres:13
|
||||
environment:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: 1
|
||||
MYSQL_DATABASE: ${TRACKS_DB:-tracks}
|
||||
POSTGRES_DB: ${DATABASE_NAME:-tracks}
|
||||
POSTGRES_PASSWORD: password
|
||||
volumes:
|
||||
- db-data:/var/lib/mysql
|
||||
- db-data:/var/lib/postgresql/data
|
||||
web:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: Dockerfile-2.6
|
||||
dockerfile: Dockerfile-3.0
|
||||
environment:
|
||||
# These are set in script/ci-build, so we need to pass-thru them.
|
||||
RAILS_ENV: $RAILS_ENV
|
||||
DATABASE_NAME: $DATABASE_NAME
|
||||
DATABASE_USERNAME: root
|
||||
DATABASE_PASSWORD_EMPTY: 1
|
||||
DATABASE_USERNAME: postgres
|
||||
DATABASE_PASSWORD: password
|
||||
DATABASE_TYPE: postgresql
|
||||
DATABASE_ENCODING: unicode
|
||||
DATABASE_PORT: 5432
|
||||
volumes:
|
||||
- ${VOLUME:-..}:/app:Z
|
||||
- ${VOLUME:-..}/config/database.docker.yml:/app/config/database.yml:Z
|
||||
17
test-envs/docker-compose-3.0-sqlite.yml
Normal file
17
test-envs/docker-compose-3.0-sqlite.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
version: '3'
|
||||
services:
|
||||
web:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: Dockerfile-3.0
|
||||
environment:
|
||||
# These are set in script/ci-build, so we need to pass-thru them.
|
||||
RAILS_ENV: $RAILS_ENV
|
||||
DATABASE_NAME: "/app/db.sqlite"
|
||||
DATABASE_TYPE: sqlite3
|
||||
volumes:
|
||||
- ${VOLUME:-..}:/app:Z
|
||||
- ${VOLUME:-..}/config/database.docker.yml:/app/config/database.yml:Z
|
||||
- ${VOLUME:-..}/config/site.docker.yml:/app/config/site.yml:Z
|
||||
ports:
|
||||
- 3000:3000
|
||||
|
|
@ -4,10 +4,10 @@ class IconHelperTest < ActionView::TestCase
|
|||
include IconHelper
|
||||
|
||||
test 'icon_fw generates fixed-width class' do
|
||||
assert_equal '<i class="fas fa-gear fa-fw"></i>', icon_fw('fas', 'gear')
|
||||
assert_equal '<i class="fas fa-gear fa-fw" aria-hidden="true"></i>', icon_fw('fas', 'gear')
|
||||
end
|
||||
|
||||
test 'icon_fw accepts an additional class' do
|
||||
assert_equal '<i class="fas fa-gear fa-fw myclass"></i>', icon_fw('fas', 'gear', class: 'myclass')
|
||||
assert_equal '<i class="fas fa-gear fa-fw myclass" aria-hidden="true"></i>', icon_fw('fas', 'gear', class: 'myclass')
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class RenderingHelperTest < ActionView::TestCase
|
|||
end
|
||||
|
||||
test "message link" do
|
||||
expected = '<p>Call <a href="message://%3C123%3E">message://<123></a>.</p>'
|
||||
expected = '<p>Call <a href="message://<123>">message://<123></a>.</p>'
|
||||
actual = render_text("Call message://<123>.")
|
||||
assert_equal(expected, actual)
|
||||
end
|
||||
|
|
|
|||
25
test/integration/locale_test.rb
Normal file
25
test/integration/locale_test.rb
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
require 'test_helper'
|
||||
|
||||
class LocaleTest < ActionDispatch::IntegrationTest
|
||||
|
||||
fixtures :users
|
||||
|
||||
def test_locale_index
|
||||
logs_in_as(users(:other_user_email), 'open')
|
||||
@user = User.find(@request.session['user_id'])
|
||||
locales = I18n.available_locales.map {|l| l.to_s}
|
||||
locales.each do |locale|
|
||||
# Set the locale
|
||||
@user.preference.locale = locale
|
||||
@user.preference.save!
|
||||
logs_in_as(users(:other_user_email), 'open')
|
||||
get '/'
|
||||
assert_response :success
|
||||
assert_template "todos/index"
|
||||
end
|
||||
|
||||
# Finally log in as normal admin user to prevent other tests from failing to the non-English locale.
|
||||
logs_in_as(users(:admin_user), 'abracadabra')
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -2,17 +2,6 @@ require 'test_helper'
|
|||
|
||||
class RecurringTodosTest < ActionDispatch::IntegrationTest
|
||||
|
||||
def logs_in_as(user,plain_pass)
|
||||
@user = user
|
||||
post "/login", params: { :user_login => @user.login,
|
||||
:user_password => plain_pass,
|
||||
:user_noexpiry => 'n' }
|
||||
assert_response :redirect
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
assert_template "todos/index"
|
||||
end
|
||||
|
||||
def test_deleting_recurring_todo_clears_reference_from_related_todos
|
||||
logs_in_as(users(:admin_user), 'abracadabra')
|
||||
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ class RecurringTodoTest < ActiveSupport::TestCase
|
|||
def test_start_from_in_future
|
||||
|
||||
## Test: every day
|
||||
|
||||
# every_day should return start_day if it is in the future
|
||||
@every_day.start_from = @in_three_days
|
||||
due_date = @every_day.get_due_date(nil)
|
||||
|
|
@ -120,18 +119,14 @@ class RecurringTodoTest < ActiveSupport::TestCase
|
|||
due_date = @every_day.get_due_date(@in_four_days)
|
||||
assert_equal (@in_four_days+1.day).at_midnight, due_date
|
||||
|
||||
|
||||
## Test: Every weekday
|
||||
|
||||
# 1 Jan 2020 is a Wednesday
|
||||
@weekly_every_day.start_from = Time.zone.local(2020,1,1)
|
||||
assert_equal Time.zone.local(2020,1,1), @weekly_every_day.get_due_date(nil)
|
||||
assert_equal Time.zone.local(2020,1,1), @weekly_every_day.get_due_date(Time.zone.local(2019,10,1))
|
||||
assert_equal Time.zone.local(2020,1,10), @weekly_every_day.get_due_date(Time.zone.local(2020,1,9))
|
||||
|
||||
|
||||
## Test: every month
|
||||
|
||||
@monthly_every_last_friday.start_from = Time.zone.local(@next_year,3,1)
|
||||
|
||||
last_friday_in_march = Time.zone.local(@next_year, 3, 31)
|
||||
|
|
@ -152,16 +147,17 @@ class RecurringTodoTest < ActiveSupport::TestCase
|
|||
# Starting from 1 April next year: next due date is the last Friday of April
|
||||
assert_equal last_friday_in_april, @monthly_every_last_friday.get_due_date(Time.zone.local(@next_year,4,1))
|
||||
|
||||
|
||||
## Test: every year
|
||||
|
||||
# start from after june 8th 2008
|
||||
@yearly.start_from = Time.zone.local(2021,6,12)
|
||||
assert_equal Time.zone.local(2022,6,8), @yearly.get_due_date(nil) # jun 8th next year
|
||||
assert_equal Time.zone.local(2022,6,8), @yearly.get_due_date(Time.zone.local(2019,6,1)) # also next year
|
||||
assert_equal Time.zone.local(2022,6,8), @yearly.get_due_date(Time.zone.local(2020,6,15)) # also next year
|
||||
|
||||
this_year = Time.zone.now.utc.year
|
||||
next_year = this_year + 1
|
||||
|
||||
# Test that we're getting the next due date both without a specific date,
|
||||
# after this year and after the next year's.
|
||||
@yearly.start_from = Time.zone.local(this_year, 6, 12)
|
||||
assert_equal Time.zone.local(next_year, 6, 8), @yearly.get_due_date(nil) # jun 8th next year
|
||||
assert_equal Time.zone.local(next_year, 6, 8), @yearly.get_due_date(Time.zone.local(next_year, 6, 1)) # also next year
|
||||
assert_equal Time.zone.local(next_year + 1, 6, 8), @yearly.get_due_date(Time.zone.local(next_year, 6, 15)) # also next year
|
||||
|
||||
@yearly.start_from = Time.zone.local(this_year+1,6,12)
|
||||
due_date = @yearly.get_due_date(nil)
|
||||
assert_equal due_date.year, this_year+2
|
||||
|
|
|
|||
|
|
@ -109,6 +109,17 @@ end
|
|||
|
||||
class ActionDispatch::IntegrationTest
|
||||
|
||||
def logs_in_as(user, plain_pass)
|
||||
@user = user
|
||||
post "/login", params: { :user_login => @user.login,
|
||||
:user_password => plain_pass,
|
||||
:user_noexpiry => 'n' }
|
||||
assert_response :redirect
|
||||
follow_redirect!
|
||||
assert_response :success
|
||||
assert_template "todos/index"
|
||||
end
|
||||
|
||||
def authenticated_post_xml(url, username, password, parameters, headers = {})
|
||||
post url, params: parameters, headers:
|
||||
{ 'HTTP_AUTHORIZATION' => "Basic " + Base64.encode64("#{username}:#{password}"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue