Compare commits
5 Commits
master
...
lz1irq/doc
Author | SHA1 | Date | |
---|---|---|---|
|
428bfb9639 | ||
|
d718850253 | ||
|
5ba2709a8e | ||
|
6386ae6db9 | ||
|
6bbd39dc23 |
@ -1,43 +0,0 @@
|
|||||||
# See https://docs.docker.com/engine/reference/builder/#dockerignore-file for more about ignoring files.
|
|
||||||
|
|
||||||
# Ignore git directory.
|
|
||||||
/.git/
|
|
||||||
|
|
||||||
# Ignore bundler config.
|
|
||||||
/.bundle
|
|
||||||
|
|
||||||
# Ignore all environment files (except templates).
|
|
||||||
/.env*
|
|
||||||
!/.env*.erb
|
|
||||||
|
|
||||||
# Ignore all default key files.
|
|
||||||
/config/master.key
|
|
||||||
/config/credentials/*.key
|
|
||||||
|
|
||||||
# Ignore all logfiles and tempfiles.
|
|
||||||
/log/*
|
|
||||||
/tmp/*
|
|
||||||
!/log/.keep
|
|
||||||
!/tmp/.keep
|
|
||||||
|
|
||||||
# Ignore pidfiles, but keep the directory.
|
|
||||||
/tmp/pids/*
|
|
||||||
!/tmp/pids/.keep
|
|
||||||
|
|
||||||
# Ignore storage (uploaded files in development and any SQLite databases).
|
|
||||||
/storage/*
|
|
||||||
!/storage/.keep
|
|
||||||
/tmp/storage/*
|
|
||||||
!/tmp/storage/.keep
|
|
||||||
|
|
||||||
# Ignore assets.
|
|
||||||
/node_modules/
|
|
||||||
/app/assets/builds/*
|
|
||||||
!/app/assets/builds/.keep
|
|
||||||
/public/assets
|
|
||||||
|
|
||||||
# Archives
|
|
||||||
*.tar.gz
|
|
||||||
|
|
||||||
# SQL
|
|
||||||
*.sql
|
|
37
.gitignore
vendored
37
.gitignore
vendored
@ -7,29 +7,18 @@
|
|||||||
# Ignore bundler config.
|
# Ignore bundler config.
|
||||||
/.bundle
|
/.bundle
|
||||||
|
|
||||||
# Ignore all environment files (except templates).
|
# Ignore the default SQLite database.
|
||||||
/.env*
|
/db/*.sqlite3
|
||||||
!/.env*.erb
|
/db/*.sqlite3-journal
|
||||||
|
|
||||||
# Ignore all logfiles and tempfiles.
|
# Ignore all logfiles and tempfiles.
|
||||||
/log/*
|
/log/*.log
|
||||||
/tmp/*
|
/tmp
|
||||||
!/log/.keep
|
/config/secrets.yml
|
||||||
!/tmp/.keep
|
/db/schema.rb
|
||||||
|
/erd.pdf
|
||||||
# Ignore pidfiles, but keep the directory.
|
/public/uploads/tmp/*
|
||||||
/tmp/pids/*
|
/public/uploads/personal_profile/*
|
||||||
!/tmp/pids/
|
.sass-cache/
|
||||||
!/tmp/pids/.keep
|
/coverage/
|
||||||
|
/db/structure.sql
|
||||||
# Ignore storage (uploaded files in development and any SQLite databases).
|
|
||||||
/storage/*
|
|
||||||
!/storage/.keep
|
|
||||||
/tmp/storage/*
|
|
||||||
!/tmp/storage/
|
|
||||||
!/tmp/storage/.keep
|
|
||||||
|
|
||||||
/public/assets
|
|
||||||
|
|
||||||
# Ignore master key for decrypting credentials and more.
|
|
||||||
/config/master.key
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
require: standard
|
|
||||||
|
|
||||||
inherit_gem:
|
|
||||||
standard: config/base.yml
|
|
||||||
|
|
||||||
AllCops:
|
|
||||||
DisabledByDefault: true
|
|
@ -1 +1 @@
|
|||||||
3.3.5
|
2.6.3
|
||||||
|
@ -2,7 +2,7 @@ language: ruby
|
|||||||
dist: xenial
|
dist: xenial
|
||||||
cache: bundler
|
cache: bundler
|
||||||
rvm:
|
rvm:
|
||||||
- 3.3
|
- 2.6
|
||||||
script:
|
script:
|
||||||
- RAILS_ENV=test bundle exec rake --trace bootstrap spec
|
- RAILS_ENV=test bundle exec rake --trace bootstrap spec
|
||||||
addons:
|
addons:
|
||||||
|
62
Dockerfile
62
Dockerfile
@ -1,62 +0,0 @@
|
|||||||
# syntax = docker/dockerfile:1
|
|
||||||
|
|
||||||
# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
|
|
||||||
ARG RUBY_VERSION=3.3.5
|
|
||||||
FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base
|
|
||||||
|
|
||||||
# Rails app lives here
|
|
||||||
WORKDIR /rails
|
|
||||||
|
|
||||||
# Set production environment
|
|
||||||
ENV RAILS_ENV="production" \
|
|
||||||
BUNDLE_DEPLOYMENT="1" \
|
|
||||||
BUNDLE_PATH="/usr/local/bundle" \
|
|
||||||
BUNDLE_WITHOUT="development"
|
|
||||||
|
|
||||||
|
|
||||||
# Throw-away build stage to reduce size of final image
|
|
||||||
FROM base as build
|
|
||||||
|
|
||||||
# Install packages needed to build gems
|
|
||||||
RUN apt-get update -qq && \
|
|
||||||
apt-get install --no-install-recommends -y build-essential git libvips pkg-config libpq-dev libsqlite3-dev nodejs yarn
|
|
||||||
|
|
||||||
# Install application gems
|
|
||||||
COPY Gemfile Gemfile.lock ./
|
|
||||||
RUN bundle install && \
|
|
||||||
rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \
|
|
||||||
bundle exec bootsnap precompile --gemfile
|
|
||||||
|
|
||||||
# Copy application code
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Precompile bootsnap code for faster boot times
|
|
||||||
RUN bundle exec bootsnap precompile app/ lib/
|
|
||||||
|
|
||||||
# Precompiling assets for production without requiring secret RAILS_MASTER_KEY
|
|
||||||
RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile
|
|
||||||
|
|
||||||
|
|
||||||
# Final stage for app image
|
|
||||||
FROM base
|
|
||||||
|
|
||||||
# Install packages needed for deployment
|
|
||||||
RUN apt-get update -qq && \
|
|
||||||
apt-get install --no-install-recommends -y curl libsqlite3-0 nodejs libpq5 libvips && \
|
|
||||||
rm -rf /var/lib/apt/lists /var/cache/apt/archives
|
|
||||||
|
|
||||||
# Copy built artifacts: gems, application
|
|
||||||
COPY --from=build /usr/local/bundle /usr/local/bundle
|
|
||||||
COPY --from=build /rails /rails
|
|
||||||
|
|
||||||
# Run and own only the runtime files as a non-root user for security
|
|
||||||
RUN useradd rails --create-home --shell /bin/bash && \
|
|
||||||
chown -R rails:rails db log storage tmp
|
|
||||||
USER rails:rails
|
|
||||||
|
|
||||||
# Entrypoint prepares the database.
|
|
||||||
ENTRYPOINT ["/rails/bin/docker-entrypoint"]
|
|
||||||
|
|
||||||
# Start the server by default, this can be overwritten at runtime
|
|
||||||
EXPOSE 80
|
|
||||||
CMD ["./bin/thrust", "./bin/rails", "server", "--early-hints"]
|
|
25
Gemfile
25
Gemfile
@ -1,8 +1,7 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "rails", "~> 7.1.0"
|
gem "rails", "~> 5.2.0"
|
||||||
gem "bootsnap"
|
gem "bootsnap"
|
||||||
gem "sprockets"
|
|
||||||
|
|
||||||
gem "sqlite3"
|
gem "sqlite3"
|
||||||
gem "pg"
|
gem "pg"
|
||||||
@ -11,6 +10,7 @@ gem "sass-rails"
|
|||||||
|
|
||||||
gem "uglifier"
|
gem "uglifier"
|
||||||
gem "coffee-rails"
|
gem "coffee-rails"
|
||||||
|
gem "mini_racer", platforms: :ruby
|
||||||
gem "jquery-rails"
|
gem "jquery-rails"
|
||||||
|
|
||||||
gem "slim-rails"
|
gem "slim-rails"
|
||||||
@ -23,9 +23,18 @@ gem "devise-i18n"
|
|||||||
gem "simple_form"
|
gem "simple_form"
|
||||||
|
|
||||||
# Phone validation
|
# Phone validation
|
||||||
gem "phony"
|
gem "phony", "~> 2.15.11"
|
||||||
gem "phony_rails"
|
gem "phony_rails"
|
||||||
|
|
||||||
|
# Picture uploads
|
||||||
|
gem "carrierwave"
|
||||||
|
# gem 'rmagick'
|
||||||
|
gem "mini_magick"
|
||||||
|
|
||||||
|
gem "refile", github: "refile/refile", require: ["refile/rails", "refile/simple_form"]
|
||||||
|
gem "refile-mini_magick"
|
||||||
|
gem "image_processing"
|
||||||
|
|
||||||
gem "puma", group: :production
|
gem "puma", group: :production
|
||||||
|
|
||||||
gem "globalize"
|
gem "globalize"
|
||||||
@ -40,7 +49,7 @@ gem "font-awesome-sass", "~> 4.6.2"
|
|||||||
|
|
||||||
gem "nested_form"
|
gem "nested_form"
|
||||||
gem "jquery-datatables-rails"
|
gem "jquery-datatables-rails"
|
||||||
# gem "morrisjs-rails"
|
gem "morrisjs-rails"
|
||||||
gem "raphael-rails"
|
gem "raphael-rails"
|
||||||
|
|
||||||
gem "copy_carrierwave_file"
|
gem "copy_carrierwave_file"
|
||||||
@ -65,12 +74,17 @@ group :development do
|
|||||||
gem "pry-rails"
|
gem "pry-rails"
|
||||||
# gem 'hirb'
|
# gem 'hirb'
|
||||||
gem "awesome_print"
|
gem "awesome_print"
|
||||||
|
gem "capistrano"
|
||||||
|
gem "capistrano-rails"
|
||||||
|
gem 'capistrano-rvm'
|
||||||
|
gem "capistrano3-puma"
|
||||||
gem "better_errors"
|
gem "better_errors"
|
||||||
gem "binding_of_caller"
|
gem "binding_of_caller"
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem "rspec-rails"
|
gem "rspec-rails"
|
||||||
|
gem "factory_bot_rails"
|
||||||
gem "faker"
|
gem "faker"
|
||||||
gem "capybara"
|
gem "capybara"
|
||||||
gem "selenium-webdriver"
|
gem "selenium-webdriver"
|
||||||
@ -86,7 +100,4 @@ end
|
|||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem "database_cleaner"
|
gem "database_cleaner"
|
||||||
gem "factory_bot_rails"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
gem "thruster", "~> 0.1.8"
|
|
||||||
|
685
Gemfile.lock
685
Gemfile.lock
@ -1,137 +1,123 @@
|
|||||||
|
GIT
|
||||||
|
remote: git://github.com/refile/refile.git
|
||||||
|
revision: e690bf5c2d83b3dfd805764d54e8f5daf14993b0
|
||||||
|
specs:
|
||||||
|
refile (0.7.0)
|
||||||
|
mime-types
|
||||||
|
sinatra (>= 2.0.0, <= 3.0.0)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actioncable (7.1.3)
|
actioncable (5.2.3)
|
||||||
actionpack (= 7.1.3)
|
actionpack (= 5.2.3)
|
||||||
activesupport (= 7.1.3)
|
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
zeitwerk (~> 2.6)
|
actionmailer (5.2.3)
|
||||||
actionmailbox (7.1.3)
|
actionpack (= 5.2.3)
|
||||||
actionpack (= 7.1.3)
|
actionview (= 5.2.3)
|
||||||
activejob (= 7.1.3)
|
activejob (= 5.2.3)
|
||||||
activerecord (= 7.1.3)
|
|
||||||
activestorage (= 7.1.3)
|
|
||||||
activesupport (= 7.1.3)
|
|
||||||
mail (>= 2.7.1)
|
|
||||||
net-imap
|
|
||||||
net-pop
|
|
||||||
net-smtp
|
|
||||||
actionmailer (7.1.3)
|
|
||||||
actionpack (= 7.1.3)
|
|
||||||
actionview (= 7.1.3)
|
|
||||||
activejob (= 7.1.3)
|
|
||||||
activesupport (= 7.1.3)
|
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
net-imap
|
rails-dom-testing (~> 2.0)
|
||||||
net-pop
|
actionpack (5.2.3)
|
||||||
net-smtp
|
actionview (= 5.2.3)
|
||||||
rails-dom-testing (~> 2.2)
|
activesupport (= 5.2.3)
|
||||||
actionpack (7.1.3)
|
rack (~> 2.0)
|
||||||
actionview (= 7.1.3)
|
|
||||||
activesupport (= 7.1.3)
|
|
||||||
nokogiri (>= 1.8.5)
|
|
||||||
racc
|
|
||||||
rack (>= 2.2.4)
|
|
||||||
rack-session (>= 1.0.1)
|
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.6)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
actiontext (7.1.3)
|
actionview (5.2.3)
|
||||||
actionpack (= 7.1.3)
|
activesupport (= 5.2.3)
|
||||||
activerecord (= 7.1.3)
|
|
||||||
activestorage (= 7.1.3)
|
|
||||||
activesupport (= 7.1.3)
|
|
||||||
globalid (>= 0.6.0)
|
|
||||||
nokogiri (>= 1.8.5)
|
|
||||||
actionview (7.1.3)
|
|
||||||
activesupport (= 7.1.3)
|
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.11)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.6)
|
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||||
activejob (7.1.3)
|
activejob (5.2.3)
|
||||||
activesupport (= 7.1.3)
|
activesupport (= 5.2.3)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (7.1.3)
|
activemodel (5.2.3)
|
||||||
activesupport (= 7.1.3)
|
activesupport (= 5.2.3)
|
||||||
activemodel-serializers-xml (1.0.2)
|
activemodel-serializers-xml (1.0.2)
|
||||||
activemodel (> 5.x)
|
activemodel (> 5.x)
|
||||||
activesupport (> 5.x)
|
activesupport (> 5.x)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
activerecord (7.1.3)
|
activerecord (5.2.3)
|
||||||
activemodel (= 7.1.3)
|
activemodel (= 5.2.3)
|
||||||
activesupport (= 7.1.3)
|
activesupport (= 5.2.3)
|
||||||
timeout (>= 0.4.0)
|
arel (>= 9.0)
|
||||||
activestorage (7.1.3)
|
activestorage (5.2.3)
|
||||||
actionpack (= 7.1.3)
|
actionpack (= 5.2.3)
|
||||||
activejob (= 7.1.3)
|
activerecord (= 5.2.3)
|
||||||
activerecord (= 7.1.3)
|
marcel (~> 0.3.1)
|
||||||
activesupport (= 7.1.3)
|
activesupport (5.2.3)
|
||||||
marcel (~> 1.0)
|
|
||||||
activesupport (7.1.3)
|
|
||||||
base64
|
|
||||||
bigdecimal
|
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
connection_pool (>= 2.2.5)
|
i18n (>= 0.7, < 2)
|
||||||
drb
|
minitest (~> 5.1)
|
||||||
i18n (>= 1.6, < 2)
|
tzinfo (~> 1.1)
|
||||||
minitest (>= 5.1)
|
addressable (2.7.0)
|
||||||
mutex_m
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
tzinfo (~> 2.0)
|
airbrussh (1.3.4)
|
||||||
addressable (2.8.6)
|
sshkit (>= 1.6.1, != 1.7.0)
|
||||||
public_suffix (>= 2.0.2, < 6.0)
|
arel (9.0.0)
|
||||||
ast (2.4.2)
|
ast (2.4.0)
|
||||||
autoprefixer-rails (10.4.16.0)
|
autoprefixer-rails (9.6.1.1)
|
||||||
execjs (~> 2)
|
execjs
|
||||||
awesome_print (1.9.2)
|
awesome_print (1.8.0)
|
||||||
base64 (0.2.0)
|
bcrypt (3.1.13)
|
||||||
bcrypt (3.1.20)
|
better_errors (2.5.1)
|
||||||
better_errors (2.10.1)
|
coderay (>= 1.0.0)
|
||||||
erubi (>= 1.0.0)
|
erubi (>= 1.0.0)
|
||||||
rack (>= 0.9.0)
|
rack (>= 0.9.0)
|
||||||
rouge (>= 1.0.0)
|
binding_of_caller (0.8.0)
|
||||||
better_html (2.0.2)
|
|
||||||
actionview (>= 6.0)
|
|
||||||
activesupport (>= 6.0)
|
|
||||||
ast (~> 2.0)
|
|
||||||
erubi (~> 1.4)
|
|
||||||
parser (>= 2.4)
|
|
||||||
smart_properties
|
|
||||||
bigdecimal (3.1.6)
|
|
||||||
binding_of_caller (1.0.0)
|
|
||||||
debug_inspector (>= 0.0.1)
|
debug_inspector (>= 0.0.1)
|
||||||
bootsnap (1.18.3)
|
bootsnap (1.4.5)
|
||||||
msgpack (~> 1.2)
|
msgpack (~> 1.0)
|
||||||
bootstrap-sass (3.4.1)
|
bootstrap-sass (3.4.1)
|
||||||
autoprefixer-rails (>= 5.2.1)
|
autoprefixer-rails (>= 5.2.1)
|
||||||
sassc (>= 2.0.0)
|
sassc (>= 2.0.0)
|
||||||
bootstrap-sass-extras (0.1.0)
|
bootstrap-sass-extras (0.0.7)
|
||||||
rails (>= 3.1.0)
|
rails (>= 3.1.0)
|
||||||
bootswatch-rails (3.3.5)
|
bootswatch-rails (3.3.5)
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
builder (3.2.4)
|
builder (3.2.3)
|
||||||
byebug (11.1.3)
|
byebug (11.0.1)
|
||||||
capybara (3.40.0)
|
capistrano (3.11.2)
|
||||||
|
airbrussh (>= 1.0.0)
|
||||||
|
i18n
|
||||||
|
rake (>= 10.0.0)
|
||||||
|
sshkit (>= 1.9.0)
|
||||||
|
capistrano-bundler (1.6.0)
|
||||||
|
capistrano (~> 3.1)
|
||||||
|
capistrano-rails (1.4.0)
|
||||||
|
capistrano (~> 3.1)
|
||||||
|
capistrano-bundler (~> 1.1)
|
||||||
|
capistrano-rvm (0.1.2)
|
||||||
|
capistrano (~> 3.0)
|
||||||
|
sshkit (~> 1.2)
|
||||||
|
capistrano3-puma (4.0.0)
|
||||||
|
capistrano (~> 3.7)
|
||||||
|
capistrano-bundler
|
||||||
|
puma (~> 4.0)
|
||||||
|
capybara (3.29.0)
|
||||||
addressable
|
addressable
|
||||||
matrix
|
|
||||||
mini_mime (>= 0.1.3)
|
mini_mime (>= 0.1.3)
|
||||||
nokogiri (~> 1.11)
|
nokogiri (~> 1.8)
|
||||||
rack (>= 1.6.0)
|
rack (>= 1.6.0)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
regexp_parser (>= 1.5, < 3.0)
|
regexp_parser (~> 1.5)
|
||||||
xpath (~> 3.2)
|
xpath (~> 3.2)
|
||||||
carrierwave (3.0.5)
|
carrierwave (2.0.2)
|
||||||
activemodel (>= 6.0.0)
|
activemodel (>= 5.0.0)
|
||||||
activesupport (>= 6.0.0)
|
activesupport (>= 5.0.0)
|
||||||
addressable (~> 2.6)
|
addressable (~> 2.6)
|
||||||
image_processing (~> 1.1)
|
image_processing (~> 1.1)
|
||||||
marcel (~> 1.0.0)
|
mimemagic (>= 0.3.0)
|
||||||
ssrf_filter (~> 1.0)
|
mini_mime (>= 0.1.3)
|
||||||
|
childprocess (3.0.0)
|
||||||
choice (0.2.0)
|
choice (0.2.0)
|
||||||
chronic (0.10.2)
|
chronic (0.10.2)
|
||||||
chunky_png (1.4.0)
|
chunky_png (1.3.11)
|
||||||
coderay (1.1.3)
|
coderay (1.1.2)
|
||||||
coffee-rails (5.0.0)
|
coffee-rails (5.0.0)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
railties (>= 5.2.0)
|
railties (>= 5.2.0)
|
||||||
@ -139,70 +125,58 @@ GEM
|
|||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.12.2)
|
coffee-script-source (1.12.2)
|
||||||
concurrent-ruby (1.2.3)
|
concurrent-ruby (1.1.5)
|
||||||
connection_pool (2.4.1)
|
|
||||||
copy_carrierwave_file (1.3.0)
|
copy_carrierwave_file (1.3.0)
|
||||||
carrierwave (>= 0.9)
|
carrierwave (>= 0.9)
|
||||||
crass (1.0.6)
|
crass (1.0.4)
|
||||||
database_cleaner (2.0.2)
|
database_cleaner (1.7.0)
|
||||||
database_cleaner-active_record (>= 2, < 3)
|
debug_inspector (0.0.3)
|
||||||
database_cleaner-active_record (2.1.0)
|
|
||||||
activerecord (>= 5.a)
|
|
||||||
database_cleaner-core (~> 2.0.0)
|
|
||||||
database_cleaner-core (2.0.1)
|
|
||||||
date (3.3.4)
|
|
||||||
debug_inspector (1.2.0)
|
|
||||||
delorean (2.1.0)
|
delorean (2.1.0)
|
||||||
chronic
|
chronic
|
||||||
devise (4.9.3)
|
devise (4.7.1)
|
||||||
bcrypt (~> 3.0)
|
bcrypt (~> 3.0)
|
||||||
orm_adapter (~> 0.1)
|
orm_adapter (~> 0.1)
|
||||||
railties (>= 4.1.0)
|
railties (>= 4.1.0)
|
||||||
responders
|
responders
|
||||||
warden (~> 1.2.3)
|
warden (~> 1.2.3)
|
||||||
devise-i18n (1.12.0)
|
devise-i18n (1.8.2)
|
||||||
devise (>= 4.9.0)
|
devise (>= 4.6)
|
||||||
diff-lcs (1.5.1)
|
diff-lcs (1.3)
|
||||||
docile (1.4.0)
|
docile (1.3.2)
|
||||||
draper (4.0.2)
|
draper (3.1.0)
|
||||||
actionpack (>= 5.0)
|
actionpack (>= 5.0)
|
||||||
activemodel (>= 5.0)
|
activemodel (>= 5.0)
|
||||||
activemodel-serializers-xml (>= 1.0)
|
activemodel-serializers-xml (>= 1.0)
|
||||||
activesupport (>= 5.0)
|
activesupport (>= 5.0)
|
||||||
request_store (>= 1.0)
|
request_store (>= 1.0)
|
||||||
ruby2_keywords
|
erubi (1.9.0)
|
||||||
drb (2.2.0)
|
execjs (2.7.0)
|
||||||
ruby2_keywords
|
factory_bot (5.1.1)
|
||||||
erubi (1.12.0)
|
activesupport (>= 4.2.0)
|
||||||
execjs (2.9.1)
|
factory_bot_rails (5.1.1)
|
||||||
factory_bot (6.4.6)
|
factory_bot (~> 5.1.0)
|
||||||
activesupport (>= 5.0.0)
|
railties (>= 4.2.0)
|
||||||
factory_bot_rails (6.4.3)
|
faker (2.5.0)
|
||||||
factory_bot (~> 6.4)
|
i18n (~> 1.6.0)
|
||||||
railties (>= 5.0.0)
|
faraday (0.16.2)
|
||||||
faker (3.2.3)
|
multipart-post (>= 1.2, < 3)
|
||||||
i18n (>= 1.8.11, < 2)
|
ffi (1.11.1)
|
||||||
faraday (2.9.0)
|
|
||||||
faraday-net_http (>= 2.0, < 3.2)
|
|
||||||
faraday-net_http (3.1.0)
|
|
||||||
net-http
|
|
||||||
ffi (1.16.3)
|
|
||||||
font-awesome-sass (4.6.2)
|
font-awesome-sass (4.6.2)
|
||||||
sass (>= 3.2)
|
sass (>= 3.2)
|
||||||
formatador (1.1.0)
|
formatador (0.2.5)
|
||||||
globalid (1.2.1)
|
globalid (0.4.2)
|
||||||
activesupport (>= 6.1)
|
activesupport (>= 4.2.0)
|
||||||
globalize (6.3.0)
|
globalize (5.3.0)
|
||||||
activemodel (>= 4.2, < 7.2)
|
activemodel (>= 4.2, < 6.1)
|
||||||
activerecord (>= 4.2, < 7.2)
|
activerecord (>= 4.2, < 6.1)
|
||||||
request_store (~> 1.0)
|
request_store (~> 1.0)
|
||||||
guard (2.18.1)
|
guard (2.15.1)
|
||||||
formatador (>= 0.2.4)
|
formatador (>= 0.2.4)
|
||||||
listen (>= 2.7, < 4.0)
|
listen (>= 2.7, < 4.0)
|
||||||
lumberjack (>= 1.0.12, < 2.0)
|
lumberjack (>= 1.0.12, < 2.0)
|
||||||
nenv (~> 0.1)
|
nenv (~> 0.1)
|
||||||
notiffany (~> 0.0)
|
notiffany (~> 0.0)
|
||||||
pry (>= 0.13.0)
|
pry (>= 0.9.12)
|
||||||
shellany (~> 0.0)
|
shellany (~> 0.0)
|
||||||
thor (>= 0.18.1)
|
thor (>= 0.18.1)
|
||||||
guard-compat (1.2.1)
|
guard-compat (1.2.1)
|
||||||
@ -210,218 +184,185 @@ GEM
|
|||||||
guard (~> 2.1)
|
guard (~> 2.1)
|
||||||
guard-compat (~> 1.1)
|
guard-compat (~> 1.1)
|
||||||
rspec (>= 2.99.0, < 4.0)
|
rspec (>= 2.99.0, < 4.0)
|
||||||
highline (3.0.1)
|
highline (2.0.2)
|
||||||
i18n (1.14.1)
|
i18n (1.6.0)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
i18n-tasks (1.0.13)
|
i18n-tasks (0.9.29)
|
||||||
activesupport (>= 4.0.2)
|
activesupport (>= 4.0.2)
|
||||||
ast (>= 2.1.0)
|
ast (>= 2.1.0)
|
||||||
better_html (>= 1.0, < 3.0)
|
|
||||||
erubi
|
erubi
|
||||||
highline (>= 2.0.0)
|
highline (>= 2.0.0)
|
||||||
i18n
|
i18n
|
||||||
parser (>= 3.2.2.1)
|
parser (>= 2.2.3.0)
|
||||||
rails-i18n
|
rails-i18n
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
terminal-table (>= 1.5.1)
|
terminal-table (>= 1.5.1)
|
||||||
icalendar (2.10.1)
|
icalendar (2.5.3)
|
||||||
ice_cube (~> 0.16)
|
ice_cube (~> 0.16)
|
||||||
ice_cube (0.16.4)
|
ice_cube (0.16.3)
|
||||||
image_processing (1.12.2)
|
image_processing (1.9.3)
|
||||||
mini_magick (>= 4.9.5, < 5)
|
mini_magick (>= 4.9.5, < 5)
|
||||||
ruby-vips (>= 2.0.17, < 3)
|
ruby-vips (>= 2.0.13, < 3)
|
||||||
io-console (0.7.2)
|
jaro_winkler (1.5.3)
|
||||||
irb (1.11.2)
|
jbuilder (2.9.1)
|
||||||
rdoc
|
activesupport (>= 4.2.0)
|
||||||
reline (>= 0.4.2)
|
|
||||||
jbuilder (2.11.5)
|
|
||||||
actionview (>= 5.0.0)
|
|
||||||
activesupport (>= 5.0.0)
|
|
||||||
jquery-datatables-rails (3.4.0)
|
jquery-datatables-rails (3.4.0)
|
||||||
actionpack (>= 3.1)
|
actionpack (>= 3.1)
|
||||||
jquery-rails
|
jquery-rails
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
sass-rails
|
sass-rails
|
||||||
jquery-rails (4.6.0)
|
jquery-rails (4.3.5)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (2.7.1)
|
json (2.2.0)
|
||||||
language_server-protocol (3.17.0.3)
|
libv8 (7.3.492.27.1)
|
||||||
lint_roller (1.1.0)
|
listen (3.2.0)
|
||||||
listen (3.8.0)
|
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
loofah (2.22.0)
|
loofah (2.3.0)
|
||||||
crass (~> 1.0.2)
|
crass (~> 1.0.2)
|
||||||
nokogiri (>= 1.12.0)
|
nokogiri (>= 1.5.9)
|
||||||
lumberjack (1.2.10)
|
lumberjack (1.0.13)
|
||||||
mail (2.8.1)
|
mail (2.7.1)
|
||||||
mini_mime (>= 0.1.1)
|
mini_mime (>= 0.1.1)
|
||||||
net-imap
|
marcel (0.3.3)
|
||||||
net-pop
|
mimemagic (~> 0.3.2)
|
||||||
net-smtp
|
method_source (0.9.2)
|
||||||
marcel (1.0.2)
|
mime-types (3.3)
|
||||||
matrix (0.4.2)
|
mime-types-data (~> 3.2015)
|
||||||
method_source (1.0.0)
|
mime-types-data (3.2019.0904)
|
||||||
mini_magick (4.12.0)
|
mimemagic (0.3.3)
|
||||||
mini_mime (1.1.5)
|
mini_magick (4.9.5)
|
||||||
mini_portile2 (2.8.5)
|
mini_mime (1.0.2)
|
||||||
minitest (5.22.2)
|
mini_portile2 (2.4.0)
|
||||||
msgpack (1.7.2)
|
mini_racer (0.2.6)
|
||||||
mutex_m (0.2.0)
|
libv8 (>= 6.9.411)
|
||||||
|
minitest (5.12.2)
|
||||||
|
morrisjs-rails (0.5.1.2)
|
||||||
|
railties (> 3.1, < 6)
|
||||||
|
msgpack (1.3.1)
|
||||||
|
multipart-post (2.1.1)
|
||||||
|
mustermann (1.0.3)
|
||||||
nenv (0.3.0)
|
nenv (0.3.0)
|
||||||
nested_form (0.3.2)
|
nested_form (0.3.2)
|
||||||
net-http (0.4.1)
|
net-scp (2.0.0)
|
||||||
uri
|
net-ssh (>= 2.6.5, < 6.0.0)
|
||||||
net-imap (0.4.10)
|
net-ssh (5.2.0)
|
||||||
date
|
nio4r (2.5.2)
|
||||||
net-protocol
|
nokogiri (1.10.4)
|
||||||
net-pop (0.1.2)
|
mini_portile2 (~> 2.4.0)
|
||||||
net-protocol
|
|
||||||
net-protocol (0.2.2)
|
|
||||||
timeout
|
|
||||||
net-smtp (0.4.0.1)
|
|
||||||
net-protocol
|
|
||||||
nio4r (2.7.0)
|
|
||||||
nokogiri (1.16.2)
|
|
||||||
mini_portile2 (~> 2.8.2)
|
|
||||||
racc (~> 1.4)
|
|
||||||
notiffany (0.1.3)
|
notiffany (0.1.3)
|
||||||
nenv (~> 0.1)
|
nenv (~> 0.1)
|
||||||
shellany (~> 0.0)
|
shellany (~> 0.0)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
parallel (1.24.0)
|
parallel (1.17.0)
|
||||||
parser (3.3.0.5)
|
parser (2.6.5.0)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.0)
|
||||||
racc
|
pg (1.1.4)
|
||||||
pg (1.5.5)
|
phony (2.15.49)
|
||||||
phony (2.20.12)
|
phony_rails (0.14.13)
|
||||||
phony_rails (0.15.0)
|
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
phony (>= 2.18.12)
|
phony (> 2.15)
|
||||||
pry (0.14.2)
|
pry (0.12.2)
|
||||||
coderay (~> 1.1)
|
coderay (~> 1.1.0)
|
||||||
method_source (~> 1.0)
|
method_source (~> 0.9.0)
|
||||||
pry-rails (0.3.9)
|
pry-rails (0.3.9)
|
||||||
pry (>= 0.10.4)
|
pry (>= 0.10.4)
|
||||||
psych (5.1.2)
|
public_suffix (4.0.1)
|
||||||
stringio
|
puma (4.2.0)
|
||||||
public_suffix (5.0.4)
|
|
||||||
puma (6.4.2)
|
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
racc (1.7.3)
|
rack (2.0.7)
|
||||||
rack (3.0.9)
|
rack-protection (2.0.7)
|
||||||
rack-session (2.0.0)
|
rack
|
||||||
rack (>= 3.0.0)
|
rack-test (1.1.0)
|
||||||
rack-test (2.1.0)
|
rack (>= 1.0, < 3)
|
||||||
rack (>= 1.3)
|
rails (5.2.3)
|
||||||
rackup (2.1.0)
|
actioncable (= 5.2.3)
|
||||||
rack (>= 3)
|
actionmailer (= 5.2.3)
|
||||||
webrick (~> 1.8)
|
actionpack (= 5.2.3)
|
||||||
rails (7.1.3)
|
actionview (= 5.2.3)
|
||||||
actioncable (= 7.1.3)
|
activejob (= 5.2.3)
|
||||||
actionmailbox (= 7.1.3)
|
activemodel (= 5.2.3)
|
||||||
actionmailer (= 7.1.3)
|
activerecord (= 5.2.3)
|
||||||
actionpack (= 7.1.3)
|
activestorage (= 5.2.3)
|
||||||
actiontext (= 7.1.3)
|
activesupport (= 5.2.3)
|
||||||
actionview (= 7.1.3)
|
bundler (>= 1.3.0)
|
||||||
activejob (= 7.1.3)
|
railties (= 5.2.3)
|
||||||
activemodel (= 7.1.3)
|
sprockets-rails (>= 2.0.0)
|
||||||
activerecord (= 7.1.3)
|
rails-dom-testing (2.0.3)
|
||||||
activestorage (= 7.1.3)
|
activesupport (>= 4.2.0)
|
||||||
activesupport (= 7.1.3)
|
|
||||||
bundler (>= 1.15.0)
|
|
||||||
railties (= 7.1.3)
|
|
||||||
rails-dom-testing (2.2.0)
|
|
||||||
activesupport (>= 5.0.0)
|
|
||||||
minitest
|
|
||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
rails-erd (1.7.2)
|
rails-erd (1.6.0)
|
||||||
activerecord (>= 4.2)
|
activerecord (>= 4.2)
|
||||||
activesupport (>= 4.2)
|
activesupport (>= 4.2)
|
||||||
choice (~> 0.2.0)
|
choice (~> 0.2.0)
|
||||||
ruby-graphviz (~> 1.2)
|
ruby-graphviz (~> 1.2)
|
||||||
rails-html-sanitizer (1.6.0)
|
rails-html-sanitizer (1.2.0)
|
||||||
loofah (~> 2.21)
|
loofah (~> 2.2, >= 2.2.2)
|
||||||
nokogiri (~> 1.14)
|
rails-i18n (5.1.3)
|
||||||
rails-i18n (7.0.8)
|
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
railties (>= 6.0.0, < 8)
|
railties (>= 5.0, < 6)
|
||||||
railties (7.1.3)
|
railties (5.2.3)
|
||||||
actionpack (= 7.1.3)
|
actionpack (= 5.2.3)
|
||||||
activesupport (= 7.1.3)
|
activesupport (= 5.2.3)
|
||||||
irb
|
method_source
|
||||||
rackup (>= 1.0.0)
|
rake (>= 0.8.7)
|
||||||
rake (>= 12.2)
|
thor (>= 0.19.0, < 2.0)
|
||||||
thor (~> 1.0, >= 1.2.2)
|
rainbow (3.0.0)
|
||||||
zeitwerk (~> 2.6)
|
rake (13.0.0)
|
||||||
rainbow (3.1.1)
|
|
||||||
rake (13.1.0)
|
|
||||||
raphael-rails (2.1.2)
|
raphael-rails (2.1.2)
|
||||||
rb-fsevent (0.11.2)
|
rb-fsevent (0.10.3)
|
||||||
rb-inotify (0.10.1)
|
rb-inotify (0.10.0)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rdoc (6.6.2)
|
refile-mini_magick (0.2.0)
|
||||||
psych (>= 4.0.0)
|
mini_magick (~> 4.0)
|
||||||
regexp_parser (2.9.0)
|
refile (~> 0.5)
|
||||||
reline (0.4.2)
|
regexp_parser (1.6.0)
|
||||||
io-console (~> 0.5)
|
request_store (1.4.1)
|
||||||
request_store (1.6.0)
|
|
||||||
rack (>= 1.4)
|
rack (>= 1.4)
|
||||||
responders (3.1.1)
|
responders (3.0.0)
|
||||||
actionpack (>= 5.2)
|
actionpack (>= 5.0)
|
||||||
railties (>= 5.2)
|
railties (>= 5.0)
|
||||||
rexml (3.2.6)
|
rqrcode (1.1.1)
|
||||||
rouge (4.2.0)
|
|
||||||
rqrcode (2.2.0)
|
|
||||||
chunky_png (~> 1.0)
|
chunky_png (~> 1.0)
|
||||||
rqrcode_core (~> 1.0)
|
rqrcode_core (~> 0.1.0)
|
||||||
rqrcode_core (1.2.0)
|
rqrcode_core (0.1.0)
|
||||||
rspec (3.13.0)
|
rspec (3.8.0)
|
||||||
rspec-core (~> 3.13.0)
|
rspec-core (~> 3.8.0)
|
||||||
rspec-expectations (~> 3.13.0)
|
rspec-expectations (~> 3.8.0)
|
||||||
rspec-mocks (~> 3.13.0)
|
rspec-mocks (~> 3.8.0)
|
||||||
rspec-core (3.13.0)
|
rspec-core (3.8.2)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.8.0)
|
||||||
rspec-expectations (3.13.0)
|
rspec-expectations (3.8.5)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.8.0)
|
||||||
rspec-mocks (3.13.0)
|
rspec-mocks (3.8.2)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.8.0)
|
||||||
rspec-rails (6.1.1)
|
rspec-rails (3.8.2)
|
||||||
actionpack (>= 6.1)
|
actionpack (>= 3.0)
|
||||||
activesupport (>= 6.1)
|
activesupport (>= 3.0)
|
||||||
railties (>= 6.1)
|
railties (>= 3.0)
|
||||||
rspec-core (~> 3.12)
|
rspec-core (~> 3.8.0)
|
||||||
rspec-expectations (~> 3.12)
|
rspec-expectations (~> 3.8.0)
|
||||||
rspec-mocks (~> 3.12)
|
rspec-mocks (~> 3.8.0)
|
||||||
rspec-support (~> 3.12)
|
rspec-support (~> 3.8.0)
|
||||||
rspec-support (3.13.0)
|
rspec-support (3.8.3)
|
||||||
rubocop (1.60.2)
|
rubocop (0.72.0)
|
||||||
json (~> 2.3)
|
jaro_winkler (~> 1.5.1)
|
||||||
language_server-protocol (>= 3.17.0)
|
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 3.3.0.2)
|
parser (>= 2.6)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
regexp_parser (>= 1.8, < 3.0)
|
|
||||||
rexml (>= 3.2.5, < 4.0)
|
|
||||||
rubocop-ast (>= 1.30.0, < 2.0)
|
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 3.0)
|
unicode-display_width (>= 1.4.0, < 1.7)
|
||||||
rubocop-ast (1.30.0)
|
rubocop-performance (1.4.1)
|
||||||
parser (>= 3.2.1.0)
|
rubocop (>= 0.71.0)
|
||||||
rubocop-performance (1.20.2)
|
ruby-graphviz (1.2.4)
|
||||||
rubocop (>= 1.48.1, < 2.0)
|
ruby-progressbar (1.10.1)
|
||||||
rubocop-ast (>= 1.30.0, < 2.0)
|
ruby-vips (2.0.15)
|
||||||
ruby-graphviz (1.2.5)
|
ffi (~> 1.9)
|
||||||
rexml
|
rubyzip (2.0.0)
|
||||||
ruby-progressbar (1.13.0)
|
|
||||||
ruby-vips (2.2.0)
|
|
||||||
ffi (~> 1.12)
|
|
||||||
ruby2_keywords (0.0.5)
|
|
||||||
rubyzip (2.3.2)
|
|
||||||
sass (3.7.4)
|
sass (3.7.4)
|
||||||
sass-listen (~> 4.0.0)
|
sass-listen (~> 4.0.0)
|
||||||
sass-listen (4.0.0)
|
sass-listen (4.0.0)
|
||||||
@ -429,7 +370,7 @@ GEM
|
|||||||
rb-inotify (~> 0.9, >= 0.9.7)
|
rb-inotify (~> 0.9, >= 0.9.7)
|
||||||
sass-rails (6.0.0)
|
sass-rails (6.0.0)
|
||||||
sassc-rails (~> 2.1, >= 2.1.1)
|
sassc-rails (~> 2.1, >= 2.1.1)
|
||||||
sassc (2.4.0)
|
sassc (2.2.1)
|
||||||
ffi (~> 1.9)
|
ffi (~> 1.9)
|
||||||
sassc-rails (2.1.2)
|
sassc-rails (2.1.2)
|
||||||
railties (>= 4.0.0)
|
railties (>= 4.0.0)
|
||||||
@ -437,82 +378,69 @@ GEM
|
|||||||
sprockets (> 3.0)
|
sprockets (> 3.0)
|
||||||
sprockets-rails
|
sprockets-rails
|
||||||
tilt
|
tilt
|
||||||
search_object (1.2.5)
|
search_object (1.2.2)
|
||||||
selenium-webdriver (4.18.1)
|
selenium-webdriver (3.142.6)
|
||||||
base64 (~> 0.2)
|
childprocess (>= 0.5, < 4.0)
|
||||||
rexml (~> 3.2, >= 3.2.5)
|
rubyzip (>= 1.2.2)
|
||||||
rubyzip (>= 1.2.2, < 3.0)
|
|
||||||
websocket (~> 1.0)
|
|
||||||
shellany (0.0.1)
|
shellany (0.0.1)
|
||||||
simple_form (5.3.0)
|
simple_form (5.0.0)
|
||||||
actionpack (>= 5.2)
|
actionpack (>= 5.0)
|
||||||
activemodel (>= 5.2)
|
activemodel (>= 5.0)
|
||||||
simplecov (0.22.0)
|
simplecov (0.17.1)
|
||||||
docile (~> 1.1)
|
docile (~> 1.1)
|
||||||
simplecov-html (~> 0.11)
|
json (>= 1.8, < 3)
|
||||||
simplecov_json_formatter (~> 0.1)
|
simplecov-html (~> 0.10.0)
|
||||||
simplecov-html (0.12.3)
|
simplecov-html (0.10.2)
|
||||||
simplecov_json_formatter (0.1.4)
|
sinatra (2.0.7)
|
||||||
slim (5.2.1)
|
mustermann (~> 1.0)
|
||||||
temple (~> 0.10.0)
|
rack (~> 2.0)
|
||||||
tilt (>= 2.1.0)
|
rack-protection (= 2.0.7)
|
||||||
slim-rails (3.6.3)
|
tilt (~> 2.0)
|
||||||
|
slim (4.0.1)
|
||||||
|
temple (>= 0.7.6, < 0.9)
|
||||||
|
tilt (>= 2.0.6, < 2.1)
|
||||||
|
slim-rails (3.2.0)
|
||||||
actionpack (>= 3.1)
|
actionpack (>= 3.1)
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
slim (>= 3.0, < 6.0, != 5.0.0)
|
slim (>= 3.0, < 5.0)
|
||||||
smart_properties (1.17.0)
|
spring (2.1.0)
|
||||||
spring (4.1.3)
|
|
||||||
spring-commands-rspec (1.0.4)
|
spring-commands-rspec (1.0.4)
|
||||||
spring (>= 0.9.1)
|
spring (>= 0.9.1)
|
||||||
sprockets (4.2.1)
|
sprockets (3.7.2)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
rack (>= 2.2.4, < 4)
|
rack (> 1, < 3)
|
||||||
sprockets-rails (3.4.2)
|
sprockets-rails (3.2.1)
|
||||||
actionpack (>= 5.2)
|
actionpack (>= 4.0)
|
||||||
activesupport (>= 5.2)
|
activesupport (>= 4.0)
|
||||||
sprockets (>= 3.0.0)
|
sprockets (>= 3.0.0)
|
||||||
sqlite3 (1.7.2)
|
sqlite3 (1.4.1)
|
||||||
mini_portile2 (~> 2.8.0)
|
sshkit (1.20.0)
|
||||||
ssrf_filter (1.1.2)
|
net-scp (>= 1.1.2)
|
||||||
standard (1.34.0)
|
net-ssh (>= 2.8.0)
|
||||||
language_server-protocol (~> 3.17.0.2)
|
standard (0.1.4)
|
||||||
lint_roller (~> 1.0)
|
rubocop (~> 0.72.0)
|
||||||
rubocop (~> 1.60)
|
rubocop-performance (~> 1.4.0)
|
||||||
standard-custom (~> 1.0.0)
|
temple (0.8.2)
|
||||||
standard-performance (~> 1.3)
|
terminal-table (1.8.0)
|
||||||
standard-custom (1.0.2)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
lint_roller (~> 1.0)
|
thor (0.20.3)
|
||||||
rubocop (~> 1.50)
|
thread_safe (0.3.6)
|
||||||
standard-performance (1.3.1)
|
tilt (2.0.10)
|
||||||
lint_roller (~> 1.1)
|
tzinfo (1.2.5)
|
||||||
rubocop-performance (~> 1.20.2)
|
thread_safe (~> 0.1)
|
||||||
stringio (3.1.0)
|
|
||||||
temple (0.10.3)
|
|
||||||
terminal-table (3.0.2)
|
|
||||||
unicode-display_width (>= 1.1.1, < 3)
|
|
||||||
thor (1.3.0)
|
|
||||||
thruster (0.1.8)
|
|
||||||
tilt (2.3.0)
|
|
||||||
timeout (0.4.1)
|
|
||||||
tzinfo (2.0.6)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
uglifier (4.2.0)
|
uglifier (4.2.0)
|
||||||
execjs (>= 0.3.0, < 3)
|
execjs (>= 0.3.0, < 3)
|
||||||
unicode-display_width (2.5.0)
|
unicode-display_width (1.6.0)
|
||||||
uri (0.13.0)
|
warden (1.2.8)
|
||||||
warden (1.2.9)
|
rack (>= 2.0.6)
|
||||||
rack (>= 2.0.9)
|
websocket-driver (0.7.1)
|
||||||
webrick (1.8.1)
|
|
||||||
websocket (1.2.10)
|
|
||||||
websocket-driver (0.7.6)
|
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.5)
|
websocket-extensions (0.1.4)
|
||||||
xpath (3.2.0)
|
xpath (3.2.0)
|
||||||
nokogiri (~> 1.8)
|
nokogiri (~> 1.8)
|
||||||
yaml_db (0.7.0)
|
yaml_db (0.7.0)
|
||||||
rails (>= 3.0)
|
rails (>= 3.0)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
zeitwerk (2.6.13)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
@ -527,7 +455,12 @@ DEPENDENCIES
|
|||||||
bootstrap-sass-extras
|
bootstrap-sass-extras
|
||||||
bootswatch-rails
|
bootswatch-rails
|
||||||
byebug
|
byebug
|
||||||
|
capistrano
|
||||||
|
capistrano-rails
|
||||||
|
capistrano-rvm
|
||||||
|
capistrano3-puma
|
||||||
capybara
|
capybara
|
||||||
|
carrierwave
|
||||||
coffee-rails
|
coffee-rails
|
||||||
copy_carrierwave_file
|
copy_carrierwave_file
|
||||||
database_cleaner
|
database_cleaner
|
||||||
@ -543,19 +476,25 @@ DEPENDENCIES
|
|||||||
guard-rspec
|
guard-rspec
|
||||||
i18n-tasks
|
i18n-tasks
|
||||||
icalendar
|
icalendar
|
||||||
|
image_processing
|
||||||
jbuilder
|
jbuilder
|
||||||
jquery-datatables-rails
|
jquery-datatables-rails
|
||||||
jquery-rails
|
jquery-rails
|
||||||
|
mini_magick
|
||||||
|
mini_racer
|
||||||
|
morrisjs-rails
|
||||||
nested_form
|
nested_form
|
||||||
pg
|
pg
|
||||||
phony
|
phony (~> 2.15.11)
|
||||||
phony_rails
|
phony_rails
|
||||||
pry-rails
|
pry-rails
|
||||||
puma
|
puma
|
||||||
rails (~> 7.1.0)
|
rails (~> 5.2.0)
|
||||||
rails-erd
|
rails-erd
|
||||||
rails-i18n
|
rails-i18n
|
||||||
raphael-rails
|
raphael-rails
|
||||||
|
refile!
|
||||||
|
refile-mini_magick
|
||||||
rqrcode
|
rqrcode
|
||||||
rspec-rails
|
rspec-rails
|
||||||
sass-rails
|
sass-rails
|
||||||
@ -566,12 +505,10 @@ DEPENDENCIES
|
|||||||
slim-rails
|
slim-rails
|
||||||
spring
|
spring
|
||||||
spring-commands-rspec
|
spring-commands-rspec
|
||||||
sprockets
|
|
||||||
sqlite3
|
sqlite3
|
||||||
standard
|
standard
|
||||||
thruster (~> 0.1.8)
|
|
||||||
uglifier
|
uglifier
|
||||||
yaml_db
|
yaml_db
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.5.6
|
1.17.3
|
||||||
|
38
README.md
38
README.md
@ -1,31 +1,21 @@
|
|||||||
# Clarion
|
Clarion
|
||||||
|
=======
|
||||||
|
|
||||||
A CfP automation system for OpenFest.
|
A CfP automation system for OpenFest.
|
||||||
|
|
||||||
## Installation
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
### For local development
|
1. `git clone https://github.com/ignisf/clarion.git`
|
||||||
|
2. Run `bundle install; bin/rake bootstrap`
|
||||||
|
3. You can now run the rails server with `bin/rails s`
|
||||||
|
|
||||||
1. `git clone https://git.openfest.org/Site/clarion/`
|
Usage with Docker
|
||||||
2. Run `rvm install "ruby-$(cat .ruby-version)"; rvm install "ruby-$(cat .ruby-version)"`
|
-----------------
|
||||||
3. Start up postgresql
|
|
||||||
4. Run `bundle install; bin/rake bootstrap`
|
|
||||||
5. You can now run the rails server with `bin/rails s`
|
|
||||||
|
|
||||||
### For production
|
Requires [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/).
|
||||||
|
|
||||||
`docker build -t clarion:latest -f Dockerfile .`
|
1. Run `git clone https://github.com/ignisf/clarion.git`.
|
||||||
|
2. Run `docker-compose up --build --detach`.
|
||||||
Note that the docker image contains a default user (for credentials see `db/seeds.rb`).
|
3. Add `127.0.0.1 clarion.openfest.test` to your system's host file.
|
||||||
|
4. Open http://clarion.openfest.test:3000/management in your browser and log in with username `foo@example.com` and password `123qweASD`.
|
||||||
### docker-compose
|
|
||||||
|
|
||||||
`docker-compose up` will bring everything up on `http://127.0.0.1:3000` with production configuration.
|
|
||||||
|
|
||||||
## Initial Usage
|
|
||||||
|
|
||||||
1. Go to `http://127.0.0.1:3000/management/`
|
|
||||||
2. Login (for initial creds see `db/seeds.rb`)
|
|
||||||
3. Change the credentials
|
|
||||||
4. Create a conference.
|
|
||||||
- NB: When creating a conference make sure to use the same `domain` as the one you are currently using, otherwise nothing will be shown.
|
|
15
TODO
15
TODO
@ -1,14 +1,14 @@
|
|||||||
- User-facing:
|
- User-facing:
|
||||||
- # Event proposal: lecture, workshop, open space (CRUD)
|
- Event proposal: lecture, workshop, open space (CRUD)
|
||||||
- # Volunteership
|
- Volunteership
|
||||||
- Sponsorship
|
- Sponsorship
|
||||||
|
|
||||||
- Admin:
|
- Admin:
|
||||||
- # Create a conference, halls, tracks
|
- # Create a conference, halls, tracks
|
||||||
- # Starting a CFP
|
- # Starting a CFP
|
||||||
- # conferences#show -> admin dashboard
|
- # conferences#show -> admin dashboard
|
||||||
- # volunteers#index -> approved volunteers
|
- volunteers#index -> approved volunteers
|
||||||
- # sponsorships#index -> generate token, links to send around
|
- sponsorships#index -> generate token, links to send around
|
||||||
- scheduling -> calendar with events
|
- scheduling -> calendar with events
|
||||||
|
|
||||||
- # proposals#index -> undecided events, grouped by user
|
- # proposals#index -> undecided events, grouped by user
|
||||||
@ -17,11 +17,12 @@
|
|||||||
- users:
|
- users:
|
||||||
- # edit profile: image upload and stuff
|
- # edit profile: image upload and stuff
|
||||||
- # show profile
|
- # show profile
|
||||||
- # Edit profiles instead
|
- Edit profiles instead
|
||||||
|
|
||||||
- # Home-area user CRUD
|
- Home-area user CRUD
|
||||||
- # Controller before_action that checks for current_conference
|
- # Controller before_action that checks for current_conference
|
||||||
- # Devise view styling
|
- Devise view styling
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
- .row > .col-lg-12 -> put that outside of the "yield"?
|
- .row > .col-lg-12 -> put that outside of the "yield"?
|
||||||
|
- human_attribute_name -> create a short alias?
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
//= link_tree ../images
|
|
||||||
//= link_tree ../../../lib/initfest/assets/images
|
|
||||||
//= link_directory ../javascripts .js
|
|
||||||
//= link_directory ../stylesheets .css
|
|
||||||
//= link initfest/application.css
|
|
||||||
//= link initfest/application.js
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.8 KiB |
@ -3,5 +3,6 @@
|
|||||||
//= require jquery_nested_form
|
//= require jquery_nested_form
|
||||||
//= require bootstrap-sprockets
|
//= require bootstrap-sprockets
|
||||||
//= require raphael
|
//= require raphael
|
||||||
|
//= require morris
|
||||||
//= require chroma-js/chroma
|
//= require chroma-js/chroma
|
||||||
//= require_directory .
|
//= require_directory .
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
@import "bootstrap";
|
@import "bootstrap";
|
||||||
@import "bootswatch/simplex/bootswatch";
|
@import "bootswatch/simplex/bootswatch";
|
||||||
|
|
||||||
/* @import "morris"; */
|
@import "morris";
|
||||||
|
|
||||||
@import "users";
|
@import "users";
|
||||||
@import "colors";
|
@import "colors";
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
class Api::ConferencesController < Api::ApplicationController
|
|
||||||
include ::PublicApiExposing
|
|
||||||
|
|
||||||
def index
|
|
||||||
@conferences = Conference.all
|
|
||||||
fresh_when @conferences
|
|
||||||
end
|
|
||||||
end
|
|
@ -5,6 +5,5 @@ class Api::EventTypesController < Api::ApplicationController
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
@event_types = current_conference.event_types.includes(:translations)
|
@event_types = current_conference.event_types.includes(:translations)
|
||||||
fresh_when @event_types
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,5 +9,6 @@ class Api::EventsController < Api::ApplicationController
|
|||||||
|
|
||||||
def halfnarp_friendly
|
def halfnarp_friendly
|
||||||
@events = current_conference.events.joins(:proposition).includes(:track, :event_type).where.not(propositions: {status: :rejected})
|
@events = current_conference.events.joins(:proposition).includes(:track, :event_type).where.not(propositions: {status: :rejected})
|
||||||
|
render json: @events, include: [:track, :event_type]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,6 +5,5 @@ class Api::HallsController < Api::ApplicationController
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
@halls = current_conference.halls
|
@halls = current_conference.halls
|
||||||
fresh_when @halls
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
class Api::SchedulesController < Api::ApplicationController
|
|
||||||
include ::CurrentConferenceAssigning
|
|
||||||
include ::PublicApiExposing
|
|
||||||
before_action :require_current_conference!
|
|
||||||
|
|
||||||
def show
|
|
||||||
@halls = Conference.last.halls.includes(:translations, slots: {approved_event: [:participants_with_personal_profiles, :proposition]})
|
|
||||||
end
|
|
||||||
end
|
|
@ -5,7 +5,5 @@ class Api::SlotsController < Api::ApplicationController
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
@slots = current_conference.slots
|
@slots = current_conference.slots
|
||||||
|
|
||||||
fresh_when @slots
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,6 +5,5 @@ class Api::SpeakersController < Api::ApplicationController
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
@speakers = PersonalProfile.joins(user: {participations: {event: :proposition}}).where(events: {id: current_conference.approved_events.pluck(:id)}, conference: current_conference).distinct
|
@speakers = PersonalProfile.joins(user: {participations: {event: :proposition}}).where(events: {id: current_conference.approved_events.pluck(:id)}, conference: current_conference).distinct
|
||||||
fresh_when @speakers
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,6 +5,5 @@ class Api::TracksController < Api::ApplicationController
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
@tracks = current_conference.tracks.includes(:translations)
|
@tracks = current_conference.tracks.includes(:translations)
|
||||||
fresh_when @tracks
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -33,8 +33,7 @@ class ApplicationController < ActionController::Base
|
|||||||
# TODO: make this get the domain from the database
|
# TODO: make this get the domain from the database
|
||||||
prepend_view_path "lib/initfest/views" if request.host =~ /openfest/
|
prepend_view_path "lib/initfest/views" if request.host =~ /openfest/
|
||||||
prepend_view_path "lib/initfest/views" if request.host =~ /example/
|
prepend_view_path "lib/initfest/views" if request.host =~ /example/
|
||||||
prepend_view_path "lib/initfest/views" if request.host =~ /^127\.0\.0/
|
prepend_view_path "lib/initfest/views" if request.host =~ /127\.0\.0/
|
||||||
prepend_view_path "lib/initfest/views" if request.host =~ /^localhost$/
|
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
module Management
|
|
||||||
class FeedbackController < ManagementController
|
|
||||||
def index
|
|
||||||
@conference = find_conference
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def find_conference
|
|
||||||
Conference.find(params[:conference_id])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -8,11 +8,7 @@ module Management
|
|||||||
private
|
private
|
||||||
|
|
||||||
def authorize_user!
|
def authorize_user!
|
||||||
if params[:conference_id] && params[:conference_id].to_i < Conference.last.id
|
|
||||||
head :forbidden unless current_user.admin? && current_user.owner?
|
|
||||||
else
|
|
||||||
head :forbidden unless current_user.admin?
|
head :forbidden unless current_user.admin?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
@ -53,7 +53,7 @@ module Management
|
|||||||
@conference = find_conference
|
@conference = find_conference
|
||||||
@profile = find_profile
|
@profile = find_profile
|
||||||
|
|
||||||
if @profile.update(profile_params)
|
if @profile.update_attributes(profile_params)
|
||||||
redirect_to [:management, @conference, @profile]
|
redirect_to [:management, @conference, @profile]
|
||||||
else
|
else
|
||||||
render action: "edit"
|
render action: "edit"
|
||||||
|
@ -4,7 +4,7 @@ module Management
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
@filters = filter_params || {}
|
@filters = filter_params || {}
|
||||||
@volunteers = VolunteerSearch.new(scope: Volunteer.where(conference: current_conference).eager_load(:volunteer_team), filters: params[:filters]).results
|
@volunteers = VolunteerSearch.new(scope: Volunteer.where(conference: current_conference).eager_load(:volunteer_teams), filters: params[:filters]).results
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@ -15,12 +15,6 @@ module Management
|
|||||||
@volunteer = current_conference.volunteers.find(params[:id])
|
@volunteer = current_conference.volunteers.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
|
||||||
@volunteer = current_conference.volunteers.find(params[:id])
|
|
||||||
@volunteer.destroy!
|
|
||||||
redirect_to management_conference_volunteers_path(conference_id: current_conference.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@volunteer = current_conference.volunteers.find(params[:id])
|
@volunteer = current_conference.volunteers.find(params[:id])
|
||||||
|
|
||||||
@ -41,9 +35,8 @@ module Management
|
|||||||
params.require(:volunteer).permit(:name, :picture, :email, :phone,
|
params.require(:volunteer).permit(:name, :picture, :email, :phone,
|
||||||
:tshirt_size, :tshirt_cut,
|
:tshirt_size, :tshirt_cut,
|
||||||
:food_preferences, :previous_experience,
|
:food_preferences, :previous_experience,
|
||||||
:notes, :language, :terms_accepted,
|
:notes, :language,
|
||||||
:volunteer_team_id,
|
volunteer_team_ids: [])
|
||||||
additional_volunteer_team_ids: [])
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,27 +4,27 @@ class Public::ConferenceFeedbacksController < Public::ApplicationController
|
|||||||
@unrated_events = @conference.events
|
@unrated_events = @conference.events
|
||||||
.joins(:proposition).approved
|
.joins(:proposition).approved
|
||||||
.joins("LEFT JOIN feedbacks ON feedbacks.feedback_receiving_id = events.id AND feedbacks.feedback_receiving_type = 'Event'")
|
.joins("LEFT JOIN feedbacks ON feedbacks.feedback_receiving_id = events.id AND feedbacks.feedback_receiving_type = 'Event'")
|
||||||
.where("feedbacks.session_id != ? OR feedbacks.id IS NULL", session.id.to_s).distinct
|
.where("feedbacks.session_id != ? OR feedbacks.id IS NULL", session.id).distinct
|
||||||
|
|
||||||
@rated_events = @conference.events
|
@rated_events = @conference.events
|
||||||
.joins(:proposition).approved
|
.joins(:proposition).approved
|
||||||
.joins(:feedbacks)
|
.joins(:feedbacks)
|
||||||
.where(feedbacks: {session_id: session.id.to_s}).distinct
|
.where(feedbacks: {session_id: session.id}).distinct
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
if current_conference.feedbacks.where(session_id: session.id.to_s).exists?
|
if current_conference.feedbacks.where(session_id: session.id).exists?
|
||||||
@feedback = current_conference.feedbacks.where(session_id: session.id.to_s).order(updated_at: :asc).last
|
@feedback = current_conference.feedbacks.where(session_id: session.id).order(updated_at: :asc).last
|
||||||
else
|
else
|
||||||
@feedback = current_conference.feedbacks.build
|
@feedback = current_conference.feedbacks.build
|
||||||
@feedback.author_email = Feedback.where(session_id: session.id.to_s).order(updated_at: :asc).last.try(:author_email)
|
@feedback.author_email = Feedback.where(session_id: session.id).order(updated_at: :asc).last.try(:author_email)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@feedback = current_conference.feedbacks.build(feedback_params)
|
@feedback = current_conference.feedbacks.build(feedback_params)
|
||||||
@feedback.ip_address = request.remote_ip
|
@feedback.ip_address = request.remote_ip
|
||||||
@feedback.session_id = session.id.to_s
|
@feedback.session_id = session.id
|
||||||
|
|
||||||
if @feedback.save
|
if @feedback.save
|
||||||
flash[:notice] = I18n.t("public.conference_feedbacks.new.success")
|
flash[:notice] = I18n.t("public.conference_feedbacks.new.success")
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
class Public::EventFeedbacksController < Public::ApplicationController
|
class Public::EventFeedbacksController < Public::ApplicationController
|
||||||
def new
|
def new
|
||||||
if event.feedbacks.where(session_id: session.id.to_s).exists?
|
if event.feedbacks.where(session_id: session.id).exists?
|
||||||
@feedback = event.feedbacks.where(session_id: session.id.to_s).order(updated_at: :asc).last
|
@feedback = event.feedbacks.where(session_id: session.id).order(updated_at: :asc).last
|
||||||
else
|
else
|
||||||
@feedback = event.feedbacks.build
|
@feedback = event.feedbacks.build
|
||||||
@feedback.author_email = Feedback.where(session_id: session.id.to_s).order(updated_at: :asc).last.try(:author_email)
|
@feedback.author_email = Feedback.where(session_id: session.id).order(updated_at: :asc).last.try(:author_email)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@feedback = event.feedbacks.build(feedback_params)
|
@feedback = event.feedbacks.build(feedback_params)
|
||||||
@feedback.ip_address = request.remote_ip
|
@feedback.ip_address = request.remote_ip
|
||||||
@feedback.session_id = session.id.to_s
|
@feedback.session_id = session.id
|
||||||
|
|
||||||
if @feedback.save
|
if @feedback.save
|
||||||
flash[:notice] = I18n.t("public.event_feedbacks.new.success")
|
flash[:notice] = I18n.t("public.event_feedbacks.new.success")
|
||||||
|
@ -20,7 +20,7 @@ module Public
|
|||||||
def update
|
def update
|
||||||
@profile = current_user.personal_profile(current_conference)
|
@profile = current_user.personal_profile(current_conference)
|
||||||
|
|
||||||
if @profile.update(profile_params)
|
if @profile.update_attributes(profile_params)
|
||||||
flash[:notice] = t("views.personal_profiles.successfully_updated")
|
flash[:notice] = t("views.personal_profiles.successfully_updated")
|
||||||
redirect_to root_path
|
redirect_to root_path
|
||||||
else
|
else
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
module Public
|
|
||||||
class VolunteerConfirmationsController < Public::ApplicationController
|
|
||||||
def create
|
|
||||||
@volunteer = Volunteer.find_by!(unique_id: params[:id])
|
|
||||||
|
|
||||||
if ActiveSupport::SecurityUtils.secure_compare(@volunteer.confirmation_token, params[:confirmation_token])
|
|
||||||
@volunteer.transaction do
|
|
||||||
@volunteer.touch(:confirmed_at)
|
|
||||||
@volunteer.update(confirmation_token: nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
@volunteer.send_notification_to_volunteer
|
|
||||||
|
|
||||||
redirect_to edit_volunteer_path(@volunteer.unique_id), notice: I18n.t("views.volunteers.email_confirmed_successfully")
|
|
||||||
else
|
|
||||||
redirect_to root_path, alert: I18n.t("views.volunteers.email_confirmation_error")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,6 +1,5 @@
|
|||||||
module Public
|
module Public
|
||||||
class VolunteersController < Public::ApplicationController
|
class VolunteersController < Public::ApplicationController
|
||||||
before_action :check_honey_pot, only: [:create, :edit]
|
|
||||||
def new
|
def new
|
||||||
@volunteer = current_conference.volunteers.build
|
@volunteer = current_conference.volunteers.build
|
||||||
end
|
end
|
||||||
@ -31,15 +30,11 @@ module Public
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def check_honey_pot
|
|
||||||
head :unauthorized unless params.dig(:volunteer_ht, :full_name).blank?
|
|
||||||
end
|
|
||||||
|
|
||||||
def volunteer_params
|
def volunteer_params
|
||||||
params.require(:volunteer).permit(
|
params.require(:volunteer).permit(
|
||||||
:name, :picture, :email, :phone, :tshirt_size, :tshirt_cut,
|
:name, :picture, :email, :phone, :tshirt_size, :tshirt_cut,
|
||||||
:food_preferences, :previous_experience, :notes, :language,
|
:food_preferences, :previous_experience, :notes, :language,
|
||||||
:terms_accepted, :volunteer_team_id,
|
volunteer_team_ids: []
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,10 +2,8 @@ class VolunteerMailer < ActionMailer::Base
|
|||||||
def team_notification(new_volunteer)
|
def team_notification(new_volunteer)
|
||||||
@volunteer = new_volunteer
|
@volunteer = new_volunteer
|
||||||
|
|
||||||
mail(
|
mail(to: @volunteer.conference.email,
|
||||||
to: @volunteer.conference.email,
|
subject: "Нов доброволец – #{@volunteer.name} <#{@volunteer.email}> за екип(и) #{@volunteer.volunteer_teams.map(&:name).join(", ")}")
|
||||||
subject: "Нов доброволец за #{@volunteer.conference.title} - #{@volunteer.volunteer_team.name}"
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def volunteer_notification(new_volunteer)
|
def volunteer_notification(new_volunteer)
|
||||||
@ -13,19 +11,8 @@ class VolunteerMailer < ActionMailer::Base
|
|||||||
I18n.locale = @volunteer.language
|
I18n.locale = @volunteer.language
|
||||||
mail(to: @volunteer.email,
|
mail(to: @volunteer.email,
|
||||||
reply_to: @volunteer.conference.email,
|
reply_to: @volunteer.conference.email,
|
||||||
from: "OpenFest <cfp@openfest.org>",
|
from: "no-reply@openfest.org",
|
||||||
subject: I18n.t("volunteer_mailer.success_notification.subject",
|
subject: I18n.t("volunteer_mailer.success_notification.subject",
|
||||||
conference_name: @volunteer.conference.title))
|
conference_name: @volunteer.conference.title))
|
||||||
end
|
end
|
||||||
|
|
||||||
def volunteer_email_confirmation(new_volunteer)
|
|
||||||
@volunteer = new_volunteer
|
|
||||||
I18n.locale = @volunteer.language
|
|
||||||
mail(to: @volunteer.email,
|
|
||||||
reply_to: @volunteer.conference.email,
|
|
||||||
from: "OpenFest <cfp@openfest.org>",
|
|
||||||
subject: I18n.t("volunteer_mailer.email_confirmation.subject",
|
|
||||||
conference_name: @volunteer.conference.title))
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -22,15 +22,10 @@ class Conference < ActiveRecord::Base
|
|||||||
has_many :participants, -> { distinct }, class_name: "User", through: :events
|
has_many :participants, -> { distinct }, class_name: "User", through: :events
|
||||||
has_many :participant_profiles, class_name: "PersonalProfile"
|
has_many :participant_profiles, class_name: "PersonalProfile"
|
||||||
has_many :slots, through: :halls
|
has_many :slots, through: :halls
|
||||||
|
has_many :feedbacks, as: :feedback_receiving
|
||||||
has_many :editions, primary_key: :host_name, foreign_key: :host_name, class_name: "Conference"
|
has_many :editions, primary_key: :host_name, foreign_key: :host_name, class_name: "Conference"
|
||||||
has_many :events_of_all_editions, through: :editions, source: :events
|
has_many :events_of_all_editions, through: :editions, source: :events
|
||||||
|
|
||||||
include FeedbackReceiving
|
|
||||||
has_many :feedbacks, as: :feedback_receiving
|
|
||||||
has_many :feedbacks_with_comment, -> { where.not(comment: [nil, ""]) }, as: :feedback_receiving, class_name: 'Feedback'
|
|
||||||
has_many :event_feedbacks, through: :events, source: :feedbacks
|
|
||||||
has_many :event_feedbacks_with_comment, through: :events, source: :feedbacks_with_comment
|
|
||||||
|
|
||||||
accepts_nested_attributes_for :tracks, :halls, :event_types, :volunteer_teams,
|
accepts_nested_attributes_for :tracks, :halls, :event_types, :volunteer_teams,
|
||||||
reject_if: :all_blank, allow_destroy: true
|
reject_if: :all_blank, allow_destroy: true
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ class Event < ActiveRecord::Base
|
|||||||
|
|
||||||
scope :ranked, -> { where.not(ranked: nil).where.not(votes: nil) }
|
scope :ranked, -> { where.not(ranked: nil).where.not(votes: nil) }
|
||||||
scope :approved, -> { where(propositions: {status: Proposition.statuses[:approved]})}
|
scope :approved, -> { where(propositions: {status: Proposition.statuses[:approved]})}
|
||||||
scope :approved_joined, -> { joins(:proposition).merge(Proposition.approved) }
|
|
||||||
|
|
||||||
validates :conference, presence: true
|
validates :conference, presence: true
|
||||||
validates :title, presence: true, length: {maximum: 65}
|
validates :title, presence: true, length: {maximum: 65}
|
||||||
|
@ -13,7 +13,7 @@ class PersonalProfile < ActiveRecord::Base
|
|||||||
|
|
||||||
phony_normalize :mobile_phone, default_country_code: "BG", add_plus: false
|
phony_normalize :mobile_phone, default_country_code: "BG", add_plus: false
|
||||||
|
|
||||||
has_one_attached :picture
|
mount_uploader :picture, PictureUploader
|
||||||
|
|
||||||
accepts_nested_attributes_for :user
|
accepts_nested_attributes_for :user
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ class Proposition < ActiveRecord::Base
|
|||||||
enum status: [:undecided, :approved, :rejected, :backup]
|
enum status: [:undecided, :approved, :rejected, :backup]
|
||||||
delegate :proposable_title, :proposable_type, :proposable_description, to: :proposable
|
delegate :proposable_title, :proposable_type, :proposable_description, to: :proposable
|
||||||
|
|
||||||
after_commit :send_creation_notification, on: [:create]
|
after_create :send_creation_notification
|
||||||
before_destroy :send_withdrawal_notification
|
before_destroy :send_withdrawal_notification
|
||||||
|
|
||||||
def confirm!
|
def confirm!
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
class Slot < ActiveRecord::Base
|
class Slot < ActiveRecord::Base
|
||||||
belongs_to :hall
|
belongs_to :hall
|
||||||
belongs_to :event, required: false
|
belongs_to :event, required: false
|
||||||
belongs_to :approved_event, -> { joins(:proposition).approved_joined }, class_name: 'Event', foreign_key: 'event_id'
|
|
||||||
end
|
end
|
||||||
|
@ -38,7 +38,7 @@ class User < ActiveRecord::Base
|
|||||||
def build_personal_profile(conference, params = {})
|
def build_personal_profile(conference, params = {})
|
||||||
if personal_profiles.last.present?
|
if personal_profiles.last.present?
|
||||||
new_personal_profile = personal_profiles.last.try(:dup)
|
new_personal_profile = personal_profiles.last.try(:dup)
|
||||||
new_personal_profile.picture.attach(personal_profiles.last.picture.blob)
|
CopyCarrierwaveFile::CopyFileService.new(personal_profiles.last, new_personal_profile, :picture).set_file
|
||||||
else
|
else
|
||||||
new_personal_profile = personal_profiles.build
|
new_personal_profile = personal_profiles.build
|
||||||
end
|
end
|
||||||
|
@ -3,63 +3,44 @@ class Volunteer < ActiveRecord::Base
|
|||||||
TSHIRT_CUTS = [:unisex, :female]
|
TSHIRT_CUTS = [:unisex, :female]
|
||||||
FOOD_PREFERENCES = [:none, :vegetarian, :vegan]
|
FOOD_PREFERENCES = [:none, :vegetarian, :vegan]
|
||||||
|
|
||||||
has_one_attached :picture
|
attachment :picture, type: :image
|
||||||
|
|
||||||
validates :name, :language, :tshirt_size, :tshirt_cut, :food_preferences, presence: true
|
validates :name, :language, :tshirt_size, :tshirt_cut, :food_preferences, presence: true
|
||||||
validates :tshirt_size, inclusion: {in: TSHIRT_SIZES.map(&:to_s)}
|
validates :tshirt_size, inclusion: {in: TSHIRT_SIZES.map(&:to_s)}
|
||||||
validates :tshirt_cut, inclusion: {in: TSHIRT_CUTS.map(&:to_s)}
|
validates :tshirt_cut, inclusion: {in: TSHIRT_CUTS.map(&:to_s)}
|
||||||
validates :food_preferences, inclusion: {in: FOOD_PREFERENCES.map(&:to_s)}
|
validates :food_preferences, inclusion: {in: FOOD_PREFERENCES.map(&:to_s)}
|
||||||
validates :email, format: {with: /\A[^@]+@[^@]+\z/}, presence: true, uniqueness: {scope: :conference_id}
|
validates :email, format: {with: /\A[^@]+@[^@]+\z/}, presence: true
|
||||||
validates :phone, presence: true, format: {with: /\A[+\- \(\)0-9]+\z/}
|
validates :phone, presence: true, format: {with: /\A[+\- \(\)0-9]+\z/}
|
||||||
validates :volunteer_team, presence: true
|
validates :volunteer_teams, presence: true
|
||||||
validates :terms_accepted, acceptance: true
|
|
||||||
validate :volunteer_teams_belong_to_conference
|
validate :volunteer_teams_belong_to_conference
|
||||||
|
|
||||||
phony_normalize :phone, default_country_code: "BG"
|
phony_normalize :phone, default_country_code: "BG"
|
||||||
|
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
belongs_to :volunteer_team
|
has_and_belongs_to_many :volunteer_teams
|
||||||
has_and_belongs_to_many :additional_volunteer_teams, class_name: "VolunteerTeam"
|
|
||||||
|
|
||||||
before_create :ensure_main_volunteer_team_is_part_of_additional_volunteer_teams
|
|
||||||
before_create :assign_unique_id
|
before_create :assign_unique_id
|
||||||
before_create :assign_confirmation_token
|
after_create :send_notification_to_organizers
|
||||||
after_commit :send_email_confirmation_to_volunteer, on: [:create]
|
after_create :send_notification_to_volunteer
|
||||||
after_commit :send_email_to_organisers, on: [:create] # technically the volunteer's email is not confirmed yet
|
|
||||||
|
|
||||||
def send_notification_to_volunteer
|
|
||||||
VolunteerMailer.volunteer_notification(self).deliver_later
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def ensure_main_volunteer_team_is_part_of_additional_volunteer_teams
|
|
||||||
self.additional_volunteer_teams |= [volunteer_team] if volunteer_team
|
|
||||||
end
|
|
||||||
|
|
||||||
def assign_unique_id
|
def assign_unique_id
|
||||||
self.unique_id = Digest::SHA256.hexdigest(SecureRandom.uuid)
|
self.unique_id = Digest::SHA256.hexdigest(SecureRandom.uuid)
|
||||||
end
|
end
|
||||||
|
|
||||||
def assign_confirmation_token
|
def send_notification_to_organizers
|
||||||
self.confirmation_token = Digest::SHA256.hexdigest(SecureRandom.uuid)
|
|
||||||
end
|
|
||||||
|
|
||||||
def send_email_confirmation_to_volunteer
|
|
||||||
VolunteerMailer.volunteer_email_confirmation(self).deliver_later
|
|
||||||
end
|
|
||||||
|
|
||||||
def send_email_to_organisers
|
|
||||||
VolunteerMailer.team_notification(self).deliver_later
|
VolunteerMailer.team_notification(self).deliver_later
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def send_notification_to_volunteer
|
||||||
|
VolunteerMailer.volunteer_notification(self).deliver_later
|
||||||
|
end
|
||||||
|
|
||||||
def volunteer_teams_belong_to_conference
|
def volunteer_teams_belong_to_conference
|
||||||
conference_volunteer_teams = conference.volunteer_teams
|
conference_volunteer_teams = conference.volunteer_teams
|
||||||
unless additional_volunteer_teams.all? { |team| conference_volunteer_teams.include? team }
|
unless volunteer_teams.all? { |team| conference_volunteer_teams.include? team }
|
||||||
errors.add :additional_volunteer_teams, :invalid_volunteer_team
|
errors.add :volunteer_teams, :invalid_volunteer_team
|
||||||
end
|
|
||||||
unless conference_volunteer_teams.include?(volunteer_team)
|
|
||||||
errors.add :volunteer_team, :invalid_volunteer_team
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
class VolunteerSearch
|
class VolunteerSearch
|
||||||
include SearchObject.module(:sorting)
|
include SearchObject.module(:sorting)
|
||||||
|
|
||||||
option(:volunteer_team_id) { |scope, value| scope.joins(:volunteer_team).where volunteer_team: {id: value} }
|
option(:volunteer_team_id) { |scope, value| scope.joins(:volunteer_teams).where volunteer_teams: {id: value} }
|
||||||
|
|
||||||
sort_by "name"
|
sort_by "name"
|
||||||
config[:defaults]["sort"] = "#{config[:sort_attributes].first} asc"
|
config[:defaults]["sort"] = "#{config[:sort_attributes].first} asc"
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
class VolunteerTeam < ActiveRecord::Base
|
class VolunteerTeam < ActiveRecord::Base
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
has_many :volunteers, inverse_of: :volunteer_team
|
has_and_belongs_to_many :volunteers
|
||||||
has_and_belongs_to_many :supporters, class_name: "Volunteer", inverse_of: :additional_volunteer_teams
|
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :color, presence: true, format: {with: /\A#?[a-f0-9]{6}\z/i}
|
validates :color, presence: true, format: {with: /\A#?[a-f0-9]{6}\z/i}
|
||||||
|
53
app/uploaders/picture_uploader.rb
Normal file
53
app/uploaders/picture_uploader.rb
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
class PictureUploader < CarrierWave::Uploader::Base
|
||||||
|
# Include RMagick or MiniMagick support:
|
||||||
|
# include CarrierWave::RMagick
|
||||||
|
include CarrierWave::MiniMagick
|
||||||
|
|
||||||
|
# Choose what kind of storage to use for this uploader:
|
||||||
|
storage :file
|
||||||
|
# storage :fog
|
||||||
|
|
||||||
|
# Override the directory where uploaded files will be stored.
|
||||||
|
# This is a sensible default for uploaders that are meant to be mounted:
|
||||||
|
def store_dir
|
||||||
|
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Provide a default URL as a default if there hasn't been a file uploaded:
|
||||||
|
def default_url
|
||||||
|
ActionController::Base.helpers.asset_path("fallback/profile_picture/" + [version_name, "default.png"].compact.join("_"))
|
||||||
|
end
|
||||||
|
|
||||||
|
# Process files as they are uploaded:
|
||||||
|
# process :scale => [200, 300]
|
||||||
|
#
|
||||||
|
# def scale(width, height)
|
||||||
|
# # do something
|
||||||
|
# end
|
||||||
|
|
||||||
|
# Create different versions of your uploaded files:
|
||||||
|
|
||||||
|
version :medium do
|
||||||
|
process resize_to_fit: [171, 180]
|
||||||
|
end
|
||||||
|
|
||||||
|
version :thumb do
|
||||||
|
process resize_to_fit: [50, 50]
|
||||||
|
end
|
||||||
|
|
||||||
|
version :schedule do
|
||||||
|
process resize_to_fill: [100, 100]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Add a white list of extensions which are allowed to be uploaded.
|
||||||
|
# For images you might use something like this:
|
||||||
|
def extension_white_list
|
||||||
|
%w[jpg jpeg png]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Override the filename of the uploaded files:
|
||||||
|
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
||||||
|
# def filename
|
||||||
|
# "something.jpg" if original_filename
|
||||||
|
# end
|
||||||
|
end
|
@ -1 +0,0 @@
|
|||||||
json.array! @conferences, :id, :title, :start_date, :end_date, :created_at, :updated_at
|
|
@ -1,13 +0,0 @@
|
|||||||
json.array! @events, cached: ->(event) { [event, event.track, event.event_type] } do |event|
|
|
||||||
json.id event.id
|
|
||||||
json.title event.title
|
|
||||||
json.abstract event.abstract
|
|
||||||
json.track_id event.track_id
|
|
||||||
|
|
||||||
json.track do
|
|
||||||
json.name event.track.name
|
|
||||||
end
|
|
||||||
json.event_type do
|
|
||||||
json.name event.event_type.name
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,22 +0,0 @@
|
|||||||
@halls.each do |hall|
|
|
||||||
json.set! hall.name do
|
|
||||||
json.days do
|
|
||||||
hall.slots.to_a.sort_by(&:starts_at).group_by { |slot| slot.starts_at.to_date }.each do |day, slots|
|
|
||||||
json.set! day do
|
|
||||||
json.array! slots do |slot|
|
|
||||||
next unless slot.approved_event
|
|
||||||
json.starts_at slot.starts_at
|
|
||||||
json.starts_at_human l(slot.starts_at, format: '%a, %H:%M')
|
|
||||||
json.title slot.approved_event.title
|
|
||||||
json.speakers do
|
|
||||||
json.array! slot.approved_event.participants_with_personal_profiles do |participant|
|
|
||||||
json.name participant.name
|
|
||||||
json.email participant.public_email
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,6 +1,6 @@
|
|||||||
@speakers.each do |speaker|
|
@speakers.each do |speaker|
|
||||||
json.set! speaker.user_id do
|
json.set! speaker.user_id do
|
||||||
json.extract! speaker, :twitter, :github, :biography, :public_email, :organisation, :last_name, :first_name, :name
|
json.extract! speaker, :twitter, :github, :biography, :public_email, :organisation, :last_name, :first_name
|
||||||
json.picture rails_blob_url(speaker.picture.variant(resize_to_fill: [100, 100]))
|
json.picture speaker.picture.serializable_hash
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
Здравейте,
|
Здравейте,
|
||||||
|
|
||||||
Имаме удоволствието да ви информираме, че Вашето предложение за участие в „<%= @event.conference.title %>“ с <%= @event.event_type.name.mb_chars.downcase %> на тема „<%= @event.title %>“ беше одобрено. <% if @event.slot.present? -%>
|
Радваме се да Ви съобщим, че предложението Ви за участие в <%= @event.conference.title %> с <%= @event.event_type.name.mb_chars.downcase %> на тема „<%= @event.title %>“ беше одобрено. <% if @event.slot.present? -%>
|
||||||
Ще се проведе на <%= I18n.l @event.slot.starts_at, format: :long %> часа.
|
Ще се проведе на <%= I18n.l @event.slot.starts_at, format: :long %> часа.
|
||||||
<% else %>
|
<% else %>
|
||||||
Определянето на датата и часа на провеждане все още предстои.
|
Все още не са избрани час и дата за провеждането му.
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
Моля, потвърдете Вашето участие възможно най-скоро като кликнете на следния линк:
|
Моля, потвърдете участието си възможно най-скоро като кликнете на следния линк:
|
||||||
<%= confirm_event_url @event, host: @event.conference.host_name, protocol: 'https' %>
|
<%= confirm_event_url @event, host: @event.conference.host_name, protocol: 'https' %>
|
||||||
|
|
||||||
С приложения QR код към този имейл ще можете да достъпите формуляра за обратна връзка на предложеното от Вас събитие. Моля, включете го в презентацията си.
|
Моля, добавете прикачения към този e-mail QR код в презентацията си. Той
|
||||||
|
съдържа връзка към формуляра за обратна връзка за предложеното от Вас събитие.
|
||||||
|
|
||||||
|
Отговорете на този email, ако възникнат някакви въпроси.
|
||||||
|
|
||||||
Поздрави,
|
Поздрави,
|
||||||
Екипът на <%= @event.conference.title %>
|
Екипът на <%= @event.conference.title %>
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
Hello,
|
Hello,
|
||||||
|
|
||||||
We are thrilled to inform you that your request for participation in <%= @event.conference.title %> with the <%= @event.event_type.name.downcase %> titled "<%= @event.title %>" has been approved. <% if @event.slot.present? -%>
|
We are happy to notify you that your request for participation in <%= @event.conference.title %> with the <%= @event.event_type.name.downcase %> titled "<%= @event.title %>" was approved. <% if @event.slot.present? -%>
|
||||||
It has been scheduled for <%= I18n.l @event.slot.starts_at, format: :long %>.
|
It has been scheduled for <%= I18n.l @event.slot.starts_at, format: :long %>.
|
||||||
<% else %>
|
<% else %>
|
||||||
It has not been scheduled yet.
|
It has not been scheduled yet.
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
To confirm your participation please follow the link below as soon as you can:
|
Please confirm your participation as soon as you can by following the following link:
|
||||||
<%= confirm_event_url @event, host: @event.conference.host_name, protocol: 'https' %>
|
<%= confirm_event_url @event, host: @event.conference.host_name, protocol: 'https' %>
|
||||||
|
|
||||||
We kindly request that you ensure the inclusion of the QR code attached to this email in your presentation. It links directly to the feedback form for your presentation, making it easier for attendees to provide valuable insights.
|
Please make sure you include the QR code attached to this email in your
|
||||||
|
presentation. It contains a link to the feedback form for your <%= @event.event_type.name.downcase %>.
|
||||||
|
|
||||||
Should you have any questions or require further information, please do not hesitate to contact us by replying to this email.
|
Please respond to this email in case you have any questions.
|
||||||
|
|
||||||
Best regards,
|
Regards,
|
||||||
The <%= @event.conference.title %> Team
|
The <%= @event.conference.title %> Team
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
Здравейте,
|
Здравейте,
|
||||||
|
|
||||||
За съжаление, поради голямото количество предложения за лекции, които получихме тази година, и ограниченото ни време, предложението ви за <%= @event.event_type.name.mb_chars.downcase %> на тема „<%= @event.title %>“ няма да може да бъде включено в програмата.
|
За съжаление, поради големия брой предложения за лекции, които получихме тази година, както и ограниченото време, с което разполагаме, вашето предложение за <%= @event.event_type.name.mb_chars.downcase %> на тема „<%= @event.title %>“ не влезе в програмата.
|
||||||
|
|
||||||
Обаче, ако желаете, може да представите лекцията си в рамките на 5 минути като част от програмата на Lightning talks (кратки 5 минутни лекции). Записването за тези слотове ще бъде възможно на място.
|
До скоро! Екипът на <%= @event.conference.title %>
|
||||||
|
|
||||||
Благодарим ви за интереса и участието ви в нашето събитие. До скоро!
|
|
||||||
|
|
||||||
Поздрави,
|
|
||||||
Екипът на <%= @event.conference.title %>
|
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
Hello,
|
Hi,
|
||||||
|
|
||||||
We regret to inform you that, due to an overwhelming number of talk submissions and the time constraints, we were unable to include your submission for a <%= @event.event_type.name.mb_chars.downcase %> titled "<%= @event.title %>" in the main schedule.
|
Regretfully, because of the high amount of talk submissions that we've received this year and the limited amount of time that we have, your submission for a <%= @event.event_type.name.mb_chars.downcase %> titled "<%= @event.title %>" was not included in the schedule.
|
||||||
|
|
||||||
However, we have an alternative option available for you. If you're interested, you can present a condensed, 5-minute version of your talk during our Lightning Talks slot at the event venue. You can sign up for Lightning Talks in person during the event.
|
See you soon,
|
||||||
|
<%= @event.conference.title %> team
|
||||||
We appreciate your interest in contributing to <%= @event.conference.title %> and hope to see you there!
|
|
||||||
|
|
||||||
Best regards,
|
|
||||||
<%= @event.conference.title %> Team
|
|
||||||
|
@ -12,10 +12,10 @@ html
|
|||||||
- else
|
- else
|
||||||
| Clarion
|
| Clarion
|
||||||
|
|
||||||
= stylesheet_link_tag "management/application", nopush: false
|
= stylesheet_link_tag "management/application"
|
||||||
= csrf_meta_tags
|
= csrf_meta_tags
|
||||||
body
|
body
|
||||||
main
|
main
|
||||||
= render 'layouts/management/flash'
|
= render 'layouts/management/flash'
|
||||||
== yield
|
== yield
|
||||||
= javascript_include_tag "management/application", nopush: false
|
= javascript_include_tag "management/application"
|
||||||
|
@ -15,11 +15,11 @@ html
|
|||||||
- else
|
- else
|
||||||
| Clarion
|
| Clarion
|
||||||
|
|
||||||
= stylesheet_link_tag "management/application", nopush: false
|
= stylesheet_link_tag "management/application"
|
||||||
= csrf_meta_tags
|
= csrf_meta_tags
|
||||||
body
|
body
|
||||||
= render 'layouts/management/navigation'
|
= render 'layouts/management/navigation'
|
||||||
main
|
main
|
||||||
= render 'layouts/management/flash'
|
= render 'layouts/management/flash'
|
||||||
== yield
|
== yield
|
||||||
= javascript_include_tag "management/application", nopush: false
|
= javascript_include_tag "management/application"
|
||||||
|
@ -32,9 +32,7 @@ nav.navbar.navbar-static-top.navbar-inverse role="navigation"
|
|||||||
/ li class="#{'active' if controller_name == 'propositions'}"
|
/ li class="#{'active' if controller_name == 'propositions'}"
|
||||||
/ = link_to [:management, current_conference, :propositions] do
|
/ = link_to [:management, current_conference, :propositions] do
|
||||||
/ => icon 'question', Proposition.model_name.human(count: 2).mb_chars.capitalize, class: 'fa-fw'
|
/ => icon 'question', Proposition.model_name.human(count: 2).mb_chars.capitalize, class: 'fa-fw'
|
||||||
li class="#{'active' if controller_name == 'feedback'}"
|
|
||||||
= link_to management_conference_feedback_index_path(current_conference) do
|
|
||||||
=> icon 'star-half-o', t('activerecord.models.feedback', count: 2).mb_chars.capitalize, class: 'fa-fw'
|
|
||||||
ul.nav.navbar-nav.navbar-right
|
ul.nav.navbar-nav.navbar-right
|
||||||
li.dropdown
|
li.dropdown
|
||||||
= link_to '#', class: 'dropdown-toggle', data: {toggle: 'dropdown'} do
|
= link_to '#', class: 'dropdown-toggle', data: {toggle: 'dropdown'} do
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
- if personal_profile.present?
|
- if personal_profile.present?
|
||||||
.panel-image
|
.panel-image
|
||||||
= image_tag personal_profile.picture
|
= image_tag personal_profile.picture.url
|
||||||
.panel-body
|
.panel-body
|
||||||
.media
|
.media
|
||||||
.media-body
|
.media-body
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<%- csv_headers = %w{id title subtitle type track language paticipants length status rank number_of_votes proposer_notes} -%>
|
<%- csv_headers = %w{id title subtitle type track language paticipants status rank number_of_votes} -%>
|
||||||
<%= CSV.generate_line(csv_headers).html_safe -%>
|
<%= CSV.generate_line(csv_headers).html_safe -%>
|
||||||
<%- @events.each do |event| -%>
|
<%- @events.each do |event| -%>
|
||||||
<%= CSV.generate_line([event.id, event.title, event.subtitle, event.event_type.name, event.track.name, event.language, participant_names_with_emails(event).join(', '), event.length, event.status, event.rank, event.number_of_votes, event.notes]).html_safe -%>
|
<%= CSV.generate_line([event.id, event.title, event.subtitle, event.event_type.name, event.track.name, event.language, participant_names_with_emails(event).join(', '), event.status, event.rank, event.number_of_votes]).html_safe -%>
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
<%- csv_headers = %w{id feedback_receiving_type feedback_receiving_id name/title author_email rating comment ip session_id created_at} -%>
|
|
||||||
<%= CSV.generate_line(csv_headers).html_safe -%>
|
|
||||||
<%- @conference.feedbacks.each do |feedback| -%>
|
|
||||||
<%= CSV.generate_line([feedback.id, feedback.feedback_receiving_type, feedback.feedback_receiving_id, feedback.feedback_receiving&.title || feefback.feedback_receiving&.name, feedback.author_email, feedback.rating, feedback.comment, feedback.ip_address, feedback.session_id, feedback.created_at]).html_safe -%>
|
|
||||||
<%- end -%>
|
|
||||||
<%- @conference.event_feedbacks.each do |feedback| -%>
|
|
||||||
<%= CSV.generate_line([feedback.id, feedback.feedback_receiving_type, feedback.feedback_receiving_id, feedback.feedback_receiving&.title || feefback.feedback_receiving&.name, feedback.author_email, feedback.rating, feedback.comment, feedback.ip_address, feedback.session_id, feedback.created_at]).html_safe -%>
|
|
||||||
<%- end -%>
|
|
@ -1,62 +0,0 @@
|
|||||||
- content_for :title
|
|
||||||
= t '.feedback'
|
|
||||||
|
|
||||||
.row
|
|
||||||
.col-lg-12
|
|
||||||
h1.page-header
|
|
||||||
= t '.feedback'
|
|
||||||
= link_to management_conference_feedback_index_path(@conference, format: 'csv'), class: 'btn btn-info pull-right'
|
|
||||||
= icon :download, t('.export')
|
|
||||||
|
|
||||||
- if @conference.start_date.past? || @conference.rated?
|
|
||||||
.row
|
|
||||||
.col-xs-12
|
|
||||||
h3
|
|
||||||
=< t '.overall_organisation'
|
|
||||||
- if @conference.rated?
|
|
||||||
.row
|
|
||||||
.col-md-10
|
|
||||||
.panel.panel-default
|
|
||||||
.panel-heading = t('.comments')
|
|
||||||
- if @conference.feedbacks_with_comment.order(created_at: :asc).size > 0
|
|
||||||
table.table.table-striped
|
|
||||||
tbody
|
|
||||||
= render partial: '/management/shared/feedback', collection: @conference.feedbacks_with_comment.order(created_at: :asc), locals: {hide_title: true}
|
|
||||||
- else
|
|
||||||
.panel-body
|
|
||||||
= t ('.no_comments_received')
|
|
||||||
.col-md-2
|
|
||||||
.panel.panel-info
|
|
||||||
.panel-heading
|
|
||||||
= t '.average_grade'
|
|
||||||
.panel-body.text-right
|
|
||||||
.huge
|
|
||||||
= number_with_precision(@conference.average_rating, precision: 2, strip_insignificant_zeros: true) || '–'
|
|
||||||
= t('.total_feedback_grades', total_grades: @conference.feedbacks.count, count: @conference.feedbacks.count)
|
|
||||||
- else
|
|
||||||
p = t '.no_feedback_received'
|
|
||||||
|
|
||||||
- if @conference.start_date.past? || @conference.event_feedbacks_with_comment.order(created_at: :asc).size > 0
|
|
||||||
.row
|
|
||||||
.col-xs-12
|
|
||||||
h3
|
|
||||||
=< t '.events'
|
|
||||||
|
|
||||||
- if @conference.event_feedbacks.size > 0
|
|
||||||
.row
|
|
||||||
.col-md-10
|
|
||||||
.panel.panel-default
|
|
||||||
.panel-heading = t('.comments')
|
|
||||||
table.table.table-striped
|
|
||||||
tbody
|
|
||||||
= render partial: '/management/shared/feedback', collection: @conference.event_feedbacks_with_comment.order(created_at: :asc)
|
|
||||||
.col-md-2
|
|
||||||
.panel.panel-info
|
|
||||||
.panel-heading
|
|
||||||
= t '.average_grade'
|
|
||||||
.panel-body.text-right
|
|
||||||
.huge
|
|
||||||
= number_with_precision(@conference.event_feedbacks.average(:rating), precision: 2, strip_insignificant_zeros: true) || '–'
|
|
||||||
= t('.total_feedback_grades', total_grades: @conference.event_feedbacks.count, count: @conference.event_feedbacks.count)
|
|
||||||
- else
|
|
||||||
p = t '.no_comments_received'
|
|
@ -10,9 +10,9 @@
|
|||||||
.panel-body
|
.panel-body
|
||||||
.row
|
.row
|
||||||
.col-lg-12
|
.col-lg-12
|
||||||
- if f.object.picture.attached?
|
- if f.object.picture.present?
|
||||||
.col-sm-offset-3.col-sm-9
|
.col-sm-offset-3.col-sm-9
|
||||||
= image_tag f.object.picture.variant(resize_to_limit: [150, 150]), class: 'img-thumbnail'
|
= image_tag f.object.picture.medium.url, class: 'img-thumbnail'
|
||||||
|
|
||||||
= f.input :picture, wrapper: :horizontal_file_input
|
= f.input :picture, wrapper: :horizontal_file_input
|
||||||
|
|
||||||
|
@ -27,9 +27,10 @@
|
|||||||
.media
|
.media
|
||||||
.media-left
|
.media-left
|
||||||
- if profile.present?
|
- if profile.present?
|
||||||
= image_tag(profile.picture.variant(resize_to_fill: [50, 50]))
|
= image_tag(profile.picture.thumb.url)
|
||||||
- else
|
- else
|
||||||
= image_tag('avatar-placeholder.png')
|
= image_tag(PictureUploader.new.thumb.url)
|
||||||
|
|
||||||
.media-body
|
.media-body
|
||||||
h4.media-heading
|
h4.media-heading
|
||||||
- if profile.try(:name).present?
|
- if profile.try(:name).present?
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
.col-sm-5.col-md-4
|
.col-sm-5.col-md-4
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-image
|
.panel-image
|
||||||
= image_tag @profile.picture
|
= image_tag @profile.picture.url
|
||||||
.panel-body
|
.panel-body
|
||||||
.media
|
.media
|
||||||
.media-body
|
.media-body
|
||||||
|
@ -11,6 +11,6 @@ tr
|
|||||||
= feedback.author_email
|
= feedback.author_email
|
||||||
- else
|
- else
|
||||||
= t(".anonymous")
|
= t(".anonymous")
|
||||||
- if !local_assigns[:hide_title]
|
- if !local_assigns[:show_title]
|
||||||
span<> = t '.about'
|
span<> = t '.about'
|
||||||
= link_to feedback.feedback_receiving.title, [:management, current_conference, feedback.feedback_receiving]
|
= link_to feedback.feedback_receiving.title, [:management, feedback.feedback_receiving.conference, feedback.feedback_receiving]
|
||||||
|
@ -5,14 +5,13 @@
|
|||||||
.col-lg-12
|
.col-lg-12
|
||||||
- if f.object.picture.present?
|
- if f.object.picture.present?
|
||||||
.col-sm-offset-3.col-sm-9
|
.col-sm-offset-3.col-sm-9
|
||||||
= @volunteer.picture.variant(resize_to_limit: [150, 150]) if @volunteer.picture.attached?
|
= attachment_image_tag(@volunteer, :picture, :fill, 150, 150) if @volunteer.picture.present?
|
||||||
|
|
||||||
= f.input :picture, as: :file, wrapper: :horizontal_file_input, direct: true
|
= f.input :picture, as: :attachment, wrapper: :horizontal_file_input, direct: true
|
||||||
|
|
||||||
= f.input :name, autofocus: true
|
= f.input :name, autofocus: true
|
||||||
= f.input :email
|
= f.input :email
|
||||||
= f.association :volunteer_team, as: :radio_buttons, wrapper: :horizontal_radio_and_checkboxes, collection: current_conference.volunteer_teams
|
= f.association :volunteer_teams, as: :check_boxes, wrapper: :horizontal_radio_and_checkboxes, collection: current_conference.volunteer_teams
|
||||||
= f.association :additional_volunteer_teams, as: :check_boxes, wrapper: :horizontal_radio_and_checkboxes, collection: current_conference.volunteer_teams
|
|
||||||
= f.input :phone, input_html: {value: @volunteer.phone.try(:phony_formatted, format: :international)}
|
= f.input :phone, input_html: {value: @volunteer.phone.try(:phony_formatted, format: :international)}
|
||||||
= f.input :language, as: :radio_buttons, wrapper: :horizontal_radio_and_checkboxes, collection: locale_collection, include_blank: false, checked: (@volunteer.language.presence || I18n.locale)
|
= f.input :language, as: :radio_buttons, wrapper: :horizontal_radio_and_checkboxes, collection: locale_collection, include_blank: false, checked: (@volunteer.language.presence || I18n.locale)
|
||||||
= f.input :tshirt_size, collection: Volunteer::TSHIRT_SIZES, as: :radio_buttons, wrapper: :horizontal_radio_and_checkboxes, checked: (@volunteer.tshirt_size.presence || :m)
|
= f.input :tshirt_size, collection: Volunteer::TSHIRT_SIZES, as: :radio_buttons, wrapper: :horizontal_radio_and_checkboxes, checked: (@volunteer.tshirt_size.presence || :m)
|
||||||
@ -20,6 +19,5 @@
|
|||||||
= f.input :food_preferences, collection: Volunteer::FOOD_PREFERENCES, wrapper: :horizontal_radio_and_checkboxes, as: :radio_buttons, checked: (@volunteer.food_preferences.presence || :none)
|
= f.input :food_preferences, collection: Volunteer::FOOD_PREFERENCES, wrapper: :horizontal_radio_and_checkboxes, as: :radio_buttons, checked: (@volunteer.food_preferences.presence || :none)
|
||||||
= f.input :previous_experience
|
= f.input :previous_experience
|
||||||
= f.input :notes
|
= f.input :notes
|
||||||
= f.input :terms_accepted
|
|
||||||
.panel-footer.text-right
|
.panel-footer.text-right
|
||||||
= f.submit class: 'btn btn-primary'
|
= f.submit class: 'btn btn-primary'
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<%- csv_headers = %w{id name email language unique_id phone tshirt_size tshirt_cut food_preferences previous_experience notes team additional_teams} -%>
|
<%- csv_headers = %w{id name email language unique_id phone tshirt_size tshirt_cut food_preferences previous_experience notes teams} -%>
|
||||||
<%= CSV.generate_line(csv_headers).html_safe -%>
|
<%= CSV.generate_line(csv_headers).html_safe -%>
|
||||||
<%- @volunteers.each do |volunteer| -%>
|
<%- @volunteers.each do |volunteer| -%>
|
||||||
<%= CSV.generate_line([volunteer.id,
|
<%= CSV.generate_line([volunteer.id,
|
||||||
volunteer.name,
|
volunteer.name,
|
||||||
"#{volunteer.confirmed_at.nil? ? '(unverified) ' : ''}#{volunteer.email}",
|
volunteer.email,
|
||||||
volunteer.language,
|
volunteer.language,
|
||||||
volunteer.unique_id,
|
volunteer.unique_id,
|
||||||
volunteer.phone,
|
volunteer.phone,
|
||||||
@ -12,6 +12,5 @@
|
|||||||
volunteer.food_preferences,
|
volunteer.food_preferences,
|
||||||
volunteer.previous_experience,
|
volunteer.previous_experience,
|
||||||
volunteer.notes,
|
volunteer.notes,
|
||||||
volunteer.volunteer_team.name,
|
volunteer.volunteer_teams.map(&:name).join(', ')]).html_safe -%>
|
||||||
volunteer.additional_volunteer_teams.map(&:name).join(', ')]).html_safe -%>
|
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th = t '.profile'
|
th = t '.profile'
|
||||||
th = Volunteer.human_attribute_name :volunteer_team
|
th = Volunteer.human_attribute_name :volunteer_teams
|
||||||
th.actions
|
th.actions
|
||||||
tbody
|
tbody
|
||||||
- @volunteers.each do |volunteer|
|
- @volunteers.each do |volunteer|
|
||||||
@ -41,16 +41,16 @@
|
|||||||
.media
|
.media
|
||||||
.media-left
|
.media-left
|
||||||
- if volunteer.picture.present?
|
- if volunteer.picture.present?
|
||||||
= image_tag volunteer.picture.variant(resize_to_limit: [50, 50])
|
= attachment_image_tag(volunteer, :picture, :fill, 50, 50)
|
||||||
- else
|
- else
|
||||||
= image_tag('avatar-placeholder.png')
|
= image_tag(PictureUploader.new.thumb.url)
|
||||||
.media-body
|
.media-body
|
||||||
h4.media-heading
|
h4.media-heading
|
||||||
= volunteer.name
|
= volunteer.name
|
||||||
p
|
p
|
||||||
= icon(volunteer.confirmed_at.present? ? "envelope" : "envelope-o", "#{volunteer.confirmed_at.nil? ? '(unverified) ' : ''}#{volunteer.email}")
|
= icon(:envelope, volunteer.email)
|
||||||
td
|
td
|
||||||
= volunteer.volunteer_team.name
|
= volunteer.volunteer_teams.map(&:name).join(', ')
|
||||||
td.actions
|
td.actions
|
||||||
div.btn-group.btn-group-sm
|
div.btn-group.btn-group-sm
|
||||||
= action_buttons(current_conference, volunteer, [:show, :edit])
|
= action_buttons(current_conference, volunteer, [:show, :edit])
|
||||||
|
@ -10,25 +10,22 @@
|
|||||||
.panel-body
|
.panel-body
|
||||||
.media
|
.media
|
||||||
.media-left.hidden-sm.hidden-xs
|
.media-left.hidden-sm.hidden-xs
|
||||||
- if @volunteer.picture.attached?
|
- if @volunteer.picture.present?
|
||||||
= image_tag @volunteer.picture.variant(resize_to_limit: [150, 150])
|
= attachment_image_tag(@volunteer, :picture, :fill, 150, 150)
|
||||||
- else
|
- else
|
||||||
= image_tag('avatar-placeholder.png')
|
= image_tag(PictureUploader.new.medium.url)
|
||||||
|
|
||||||
.media-body
|
.media-body
|
||||||
.text-center.visible-sm.visible-xs
|
.text-center.visible-sm.visible-xs
|
||||||
- if @volunteer.picture.attached?
|
- if @volunteer.picture.present?
|
||||||
= image_tag @volunteer.picture.variant(resize_to_limit: [150, 150])
|
= attachment_image_tag(@volunteer, :picture, :fill, 150, 150)
|
||||||
- else
|
- else
|
||||||
= image_tag('avatar-placeholder.png')
|
= image_tag(PictureUploader.new.medium.url)
|
||||||
|
|
||||||
h4.media-heading
|
h4.media-heading
|
||||||
= @volunteer.name
|
= @volunteer.name
|
||||||
hr
|
hr
|
||||||
h4 = Volunteer.human_attribute_name(:volunteer_team)
|
h4 = Volunteer.human_attribute_name(:volunteer_teams)
|
||||||
= @volunteer.volunteer_team.name
|
= @volunteer.volunteer_teams.map(&:name).join(', ')
|
||||||
h4 = Volunteer.human_attribute_name(:additional_volunteer_teams)
|
|
||||||
= @volunteer.additional_volunteer_teams.map(&:name).join(', ')
|
|
||||||
- if @volunteer.previous_experience.present?
|
- if @volunteer.previous_experience.present?
|
||||||
h4 = Volunteer.human_attribute_name(:previous_experience)
|
h4 = Volunteer.human_attribute_name(:previous_experience)
|
||||||
= simple_format @volunteer.previous_experience
|
= simple_format @volunteer.previous_experience
|
||||||
@ -38,7 +35,7 @@
|
|||||||
h4 = t '.other_info'
|
h4 = t '.other_info'
|
||||||
= icon(:language, t("locales.#{@volunteer.language}"))
|
= icon(:language, t("locales.#{@volunteer.language}"))
|
||||||
br
|
br
|
||||||
= icon(@volunteer.confirmed_at.present? ? "envelope" : "envelope-o", @volunteer.email)
|
= icon(:envelope, @volunteer.email)
|
||||||
br
|
br
|
||||||
= icon(:phone, @volunteer.phone.try(:phony_formatted, format: :international))
|
= icon(:phone, @volunteer.phone.try(:phony_formatted, format: :international))
|
||||||
br
|
br
|
||||||
|
@ -1,11 +1,22 @@
|
|||||||
Здравейте,
|
Здравейте,
|
||||||
|
|
||||||
Някой изпрати кандидатура за доброволец.
|
<%= @volunteer.name %> <<%= @volunteer.email %>> изпрати кандидатура за доброволец.
|
||||||
|
|
||||||
Екип: <%= @volunteer.volunteer_team.name %>
|
Екипи: <%= @volunteer.volunteer_teams.map(&:name).join(', ') %>
|
||||||
|
|
||||||
Връзка към профил: <%= management_conference_volunteer_url(@volunteer.conference, @volunteer) %>
|
|
||||||
|
|
||||||
|
Снимка: <%= attachment_url(@volunteer, :picture, host: "https://#{@volunteer.conference.host_name}/") %>
|
||||||
Език: <%= @volunteer.language %>
|
Език: <%= @volunteer.language %>
|
||||||
|
Телефон: <%= @volunteer.phone %>
|
||||||
Размер на тениска: <%= @volunteer.tshirt_size %>
|
Размер на тениска: <%= @volunteer.tshirt_size %>
|
||||||
Кройка на тениска: <%= @volunteer.tshirt_cut %>
|
Кройка на тениска: <%= @volunteer.tshirt_cut %>
|
||||||
|
Предпочитания за храна: <%= @volunteer.food_preferences %>
|
||||||
|
<% if @volunteer.previous_experience.present? -%>
|
||||||
|
|
||||||
|
Предходен опит:
|
||||||
|
<%= @volunteer.previous_experience %>
|
||||||
|
<% end -%>
|
||||||
|
<% if @volunteer.notes.present? -%>
|
||||||
|
|
||||||
|
Бележки:
|
||||||
|
<%= @volunteer.notes %>
|
||||||
|
<% end -%>
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
Здравейте,
|
|
||||||
|
|
||||||
Моля, потвърдете e-mail адреса си от следния линк:
|
|
||||||
|
|
||||||
<%= confirm_volunteer_url(@volunteer.unique_id, confirmation_token: @volunteer.confirmation_token, host: @volunteer.conference.host_name, protocol: 'https') %>
|
|
@ -1,5 +0,0 @@
|
|||||||
Hello,
|
|
||||||
|
|
||||||
Please confirm your e-mail address by clicking the following link:
|
|
||||||
|
|
||||||
<%= confirm_volunteer_url(@volunteer.unique_id, confirmation_token: @volunteer.confirmation_token, host: @volunteer.conference.host_name, protocol: 'https') %>
|
|
@ -1,6 +1,6 @@
|
|||||||
Здравейте,
|
Здравейте,
|
||||||
|
|
||||||
Кандидатурата ви беше получена.
|
Кандидатурата Ви беше получена.
|
||||||
|
|
||||||
Можете да я редактирате по всяко време от този адрес:
|
Можете да я редактирате по всяко време от този адрес:
|
||||||
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
# If running the rails server then create or migrate existing database
|
|
||||||
if [ "${1}" == "./bin/rails" ] && [ "${2}" == "server" ]; then
|
|
||||||
./bin/rails db:prepare
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec "${@}"
|
|
11
bin/rails
11
bin/rails
@ -1,4 +1,9 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
APP_PATH = File.expand_path("../config/application", __dir__)
|
begin
|
||||||
require_relative "../config/boot"
|
load File.expand_path('../spring', __FILE__)
|
||||||
require "rails/commands"
|
rescue LoadError => e
|
||||||
|
raise unless e.message.include?('spring')
|
||||||
|
end
|
||||||
|
APP_PATH = File.expand_path('../config/application', __dir__)
|
||||||
|
require_relative '../config/boot'
|
||||||
|
require 'rails/commands'
|
||||||
|
9
bin/rake
9
bin/rake
@ -1,4 +1,9 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
require_relative "../config/boot"
|
begin
|
||||||
require "rake"
|
load File.expand_path('../spring', __FILE__)
|
||||||
|
rescue LoadError => e
|
||||||
|
raise unless e.message.include?('spring')
|
||||||
|
end
|
||||||
|
require_relative '../config/boot'
|
||||||
|
require 'rake'
|
||||||
Rake.application.run
|
Rake.application.run
|
||||||
|
31
bin/setup
31
bin/setup
@ -1,33 +1,36 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
require "fileutils"
|
require 'fileutils'
|
||||||
|
include FileUtils
|
||||||
|
|
||||||
# path to your application root.
|
# path to your application root.
|
||||||
APP_ROOT = File.expand_path("..", __dir__)
|
APP_ROOT = File.expand_path('..', __dir__)
|
||||||
|
|
||||||
def system!(*args)
|
def system!(*args)
|
||||||
system(*args, exception: true)
|
system(*args) || abort("\n== Command #{args} failed ==")
|
||||||
end
|
end
|
||||||
|
|
||||||
FileUtils.chdir APP_ROOT do
|
chdir APP_ROOT do
|
||||||
# This script is a way to set up or update your development environment automatically.
|
# This script is a starting point to setup your application.
|
||||||
# This script is idempotent, so that you can run it at any time and get an expectable outcome.
|
|
||||||
# Add necessary setup steps to this file.
|
# Add necessary setup steps to this file.
|
||||||
|
|
||||||
puts "== Installing dependencies =="
|
puts '== Installing dependencies =='
|
||||||
system! "gem install bundler --conservative"
|
system! 'gem install bundler --conservative'
|
||||||
system("bundle check") || system!("bundle install")
|
system('bundle check') || system!('bundle install')
|
||||||
|
|
||||||
|
# Install JavaScript dependencies if using Yarn
|
||||||
|
# system('bin/yarn')
|
||||||
|
|
||||||
# puts "\n== Copying sample files =="
|
# puts "\n== Copying sample files =="
|
||||||
# unless File.exist?("config/database.yml")
|
# unless File.exist?('config/database.yml')
|
||||||
# FileUtils.cp "config/database.yml.sample", "config/database.yml"
|
# cp 'config/database.yml.sample', 'config/database.yml'
|
||||||
# end
|
# end
|
||||||
|
|
||||||
puts "\n== Preparing database =="
|
puts "\n== Preparing database =="
|
||||||
system! "bin/rails db:prepare"
|
system! 'bin/rails db:setup'
|
||||||
|
|
||||||
puts "\n== Removing old logs and tempfiles =="
|
puts "\n== Removing old logs and tempfiles =="
|
||||||
system! "bin/rails log:clear tmp:clear"
|
system! 'bin/rails log:clear tmp:clear'
|
||||||
|
|
||||||
puts "\n== Restarting application server =="
|
puts "\n== Restarting application server =="
|
||||||
system! "bin/rails restart"
|
system! 'bin/rails restart'
|
||||||
end
|
end
|
||||||
|
17
bin/spring
Executable file
17
bin/spring
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
# This file loads spring without using Bundler, in order to be fast.
|
||||||
|
# It gets overwritten when you run the `spring binstub` command.
|
||||||
|
|
||||||
|
unless defined?(Spring)
|
||||||
|
require 'rubygems'
|
||||||
|
require 'bundler'
|
||||||
|
|
||||||
|
lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
|
||||||
|
spring = lockfile.specs.detect { |spec| spec.name == "spring" }
|
||||||
|
if spring
|
||||||
|
Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
|
||||||
|
gem 'spring', spring.version
|
||||||
|
require 'spring/binstub'
|
||||||
|
end
|
||||||
|
end
|
@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env ruby
|
|
||||||
require "rubygems"
|
|
||||||
require "bundler/setup"
|
|
||||||
|
|
||||||
load Gem.bin_path("thruster", "thrust")
|
|
12
bin/yarn
12
bin/yarn
@ -1,15 +1,9 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
APP_ROOT = File.expand_path('..', __dir__)
|
APP_ROOT = File.expand_path('..', __dir__)
|
||||||
Dir.chdir(APP_ROOT) do
|
Dir.chdir(APP_ROOT) do
|
||||||
yarn = ENV["PATH"].split(File::PATH_SEPARATOR).
|
begin
|
||||||
select { |dir| File.expand_path(dir) != __dir__ }.
|
exec "yarnpkg", *ARGV
|
||||||
product(["yarn", "yarn.cmd", "yarn.ps1"]).
|
rescue Errno::ENOENT
|
||||||
map { |dir, file| File.expand_path(file, dir) }.
|
|
||||||
find { |file| File.executable?(file) }
|
|
||||||
|
|
||||||
if yarn
|
|
||||||
exec yarn, *ARGV
|
|
||||||
else
|
|
||||||
$stderr.puts "Yarn executable was not detected in the system."
|
$stderr.puts "Yarn executable was not detected in the system."
|
||||||
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
|
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
# This file is used by Rack-based servers to start the application.
|
# This file is used by Rack-based servers to start the application.
|
||||||
|
|
||||||
require_relative "config/environment"
|
require ::File.expand_path("../config/environment", __FILE__)
|
||||||
|
|
||||||
run Rails.application
|
run Rails.application
|
||||||
Rails.application.load_server
|
|
||||||
|
@ -9,29 +9,26 @@ Bundler.require(*Rails.groups)
|
|||||||
module Clarion
|
module Clarion
|
||||||
class Application < Rails::Application
|
class Application < Rails::Application
|
||||||
# Initialize configuration defaults for originally generated Rails version.
|
# Initialize configuration defaults for originally generated Rails version.
|
||||||
config.load_defaults 7.1
|
config.load_defaults 5.2
|
||||||
|
|
||||||
# Please, add to the `ignore` list any other `lib` subdirectories that do
|
# Settings in config/environments/* take precedence over those specified here.
|
||||||
# not contain `.rb` files, or that should not be reloaded or eager loaded.
|
# Application configuration can go into files in config/initializers
|
||||||
# Common ones are `templates`, `generators`, or `middleware`, for example.
|
# -- all .rb files in that directory are automatically loaded after loading
|
||||||
config.autoload_lib(ignore: %w(assets tasks))
|
# the framework and any gems in your application.
|
||||||
|
|
||||||
# Configuration for the application, engines, and railties goes here.
|
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||||
#
|
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||||||
# These settings can be overridden in specific environments using the files
|
|
||||||
# in config/environments, which are processed later.
|
|
||||||
#
|
|
||||||
config.time_zone = "Sofia"
|
config.time_zone = "Sofia"
|
||||||
# config.eager_load_paths << Rails.root.join("extras")
|
|
||||||
|
|
||||||
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||||
|
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||||
config.i18n.available_locales = [:bg, :en]
|
config.i18n.available_locales = [:bg, :en]
|
||||||
config.i18n.default_locale = :bg
|
config.i18n.default_locale = :bg
|
||||||
|
|
||||||
config.active_record.schema_format = :sql
|
config.active_record.schema_format = :sql
|
||||||
|
|
||||||
config.generators do |g|
|
config.generators do |g|
|
||||||
g.test_framework :rspec,
|
g.test_framework :rspec, fixtures: true,
|
||||||
fixtures: true,
|
|
||||||
view_specs: false,
|
view_specs: false,
|
||||||
helper_specs: false,
|
helper_specs: false,
|
||||||
routing_specs: false,
|
routing_specs: false,
|
||||||
|
@ -2,7 +2,7 @@ development:
|
|||||||
adapter: async
|
adapter: async
|
||||||
|
|
||||||
test:
|
test:
|
||||||
adapter: test
|
adapter: async
|
||||||
|
|
||||||
production:
|
production:
|
||||||
adapter: redis
|
adapter: redis
|
||||||
|
@ -1,35 +1,42 @@
|
|||||||
# PostgreSQL. Versions 9.3 and up are supported.
|
# PostgreSQL. Versions 9.1 and up are supported.
|
||||||
#
|
#
|
||||||
# Install the pg driver:
|
# Install the pg driver:
|
||||||
# gem install pg
|
# gem install pg
|
||||||
# On macOS with Homebrew:
|
# On OS X with Homebrew:
|
||||||
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
|
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
|
||||||
|
# On OS X with MacPorts:
|
||||||
|
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
|
||||||
# On Windows:
|
# On Windows:
|
||||||
# gem install pg
|
# gem install pg
|
||||||
# Choose the win32 build.
|
# Choose the win32 build.
|
||||||
# Install PostgreSQL and put its /bin directory on your path.
|
# Install PostgreSQL and put its /bin directory on your path.
|
||||||
#
|
#
|
||||||
# Configure Using Gemfile
|
# Configure Using Gemfile
|
||||||
# gem "pg"
|
# gem 'pg'
|
||||||
#
|
#
|
||||||
default: &default
|
default: &default
|
||||||
adapter: postgresql
|
adapter: postgresql
|
||||||
encoding: unicode
|
encoding: unicode
|
||||||
# For details on connection pooling, see Rails configuration guide
|
# For details on connection pooling, see Rails configuration guide
|
||||||
# https://guides.rubyonrails.org/configuring.html#database-pooling
|
# http://guides.rubyonrails.org/configuring.html#database-pooling
|
||||||
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
||||||
|
database: <%= ENV.fetch("POSTGRES_DB") { "clarion" } %>
|
||||||
|
username: <%= ENV.fetch("POSTGRES_USER") { "clarion" } %>
|
||||||
|
password: <%= ENV["POSTGRES_PASSWORD"] %>
|
||||||
|
host: <%= ENV.fetch("POSTGRES_HOST") { "localhost" } %>
|
||||||
|
port: <%= ENV.fetch("POSTGRES_PORT") { 5432 } %>
|
||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *default
|
<<: *default
|
||||||
database: clarion_development
|
database: <%= ENV.fetch("POSTGRES_DB") { "clarion_development" } %>
|
||||||
|
|
||||||
# The specified database role being used to connect to PostgreSQL.
|
# The specified database role being used to connect to postgres.
|
||||||
# To create additional roles in PostgreSQL see `$ createuser --help`.
|
# To create additional roles in postgres see `$ createuser --help`.
|
||||||
# When left blank, PostgreSQL will use the default role. This is
|
# When left blank, postgres will use the default role. This is
|
||||||
# the same name as the operating system user running Rails.
|
# the same name as the operating system user that initialized the database.
|
||||||
#username: clarion
|
#username: clarion
|
||||||
|
|
||||||
# The password associated with the PostgreSQL role (username).
|
# The password associated with the postgres role (username).
|
||||||
#password:
|
#password:
|
||||||
|
|
||||||
# Connect on a TCP socket. Omitted by default since the client uses a
|
# Connect on a TCP socket. Omitted by default since the client uses a
|
||||||
@ -57,29 +64,27 @@ test:
|
|||||||
<<: *default
|
<<: *default
|
||||||
database: clarion_test
|
database: clarion_test
|
||||||
|
|
||||||
# As with config/credentials.yml, you never want to store sensitive information,
|
# As with config/secrets.yml, you never want to store sensitive information,
|
||||||
# like your database password, in your source code. If your source code is
|
# like your database password, in your source code. If your source code is
|
||||||
# ever seen by anyone, they now have access to your database.
|
# ever seen by anyone, they now have access to your database.
|
||||||
#
|
#
|
||||||
# Instead, provide the password or a full connection URL as an environment
|
# Instead, provide the password as a unix environment variable when you boot
|
||||||
# variable when you boot the app. For example:
|
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
|
||||||
|
# for a full rundown on how to provide these environment variables in a
|
||||||
|
# production deployment.
|
||||||
|
#
|
||||||
|
# On Heroku and other platform providers, you may have a full connection URL
|
||||||
|
# available as an environment variable. For example:
|
||||||
#
|
#
|
||||||
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
|
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
|
||||||
#
|
#
|
||||||
# If the connection URL is provided in the special DATABASE_URL environment
|
# You can use this database configuration with:
|
||||||
# variable, Rails will automatically merge its configuration values on top of
|
|
||||||
# the values provided in this file. Alternatively, you can specify a connection
|
|
||||||
# URL environment variable explicitly:
|
|
||||||
#
|
#
|
||||||
# production:
|
# production:
|
||||||
# url: <%= ENV["MY_APP_DATABASE_URL"] %>
|
# url: <%= ENV['DATABASE_URL'] %>
|
||||||
#
|
|
||||||
# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
|
|
||||||
# for a full overview on how database connection configuration can be specified.
|
|
||||||
#
|
#
|
||||||
production:
|
production:
|
||||||
<<: *default
|
<<: *default
|
||||||
host: <%= ENV.fetch("CLARION_DATABASE_HOST") { "host.containers.internal" } %>
|
database: clarion_production
|
||||||
database: clarion
|
|
||||||
username: clarion
|
username: clarion
|
||||||
password: <%= ENV["CLARION_DATABASE_PASSWORD"] %>
|
password: <%= ENV['CLARION_DATABASE_PASSWORD'] %>
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
# SQLite version 3.x
|
|
||||||
# gem install sqlite3
|
|
||||||
#
|
|
||||||
# Ensure the SQLite 3 gem is defined in your Gemfile
|
|
||||||
# gem 'sqlite3'
|
|
||||||
#
|
|
||||||
default: &default
|
|
||||||
adapter: sqlite3
|
|
||||||
pool: 5
|
|
||||||
timeout: 5000
|
|
||||||
|
|
||||||
development:
|
|
||||||
<<: *default
|
|
||||||
database: db/development.sqlite3
|
|
||||||
|
|
||||||
# Warning: The database defined as "test" will be erased and
|
|
||||||
# re-generated from your development database when you run "rake".
|
|
||||||
# Do not set this db to the same as development or production.
|
|
||||||
test:
|
|
||||||
<<: *default
|
|
||||||
database: db/test.sqlite3
|
|
||||||
|
|
||||||
production:
|
|
||||||
<<: *default
|
|
||||||
database: db/production.sqlite3
|
|
@ -1,85 +0,0 @@
|
|||||||
# PostgreSQL. Versions 9.1 and up are supported.
|
|
||||||
#
|
|
||||||
# Install the pg driver:
|
|
||||||
# gem install pg
|
|
||||||
# On OS X with Homebrew:
|
|
||||||
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
|
|
||||||
# On OS X with MacPorts:
|
|
||||||
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
|
|
||||||
# On Windows:
|
|
||||||
# gem install pg
|
|
||||||
# Choose the win32 build.
|
|
||||||
# Install PostgreSQL and put its /bin directory on your path.
|
|
||||||
#
|
|
||||||
# Configure Using Gemfile
|
|
||||||
# gem 'pg'
|
|
||||||
#
|
|
||||||
default: &default
|
|
||||||
adapter: postgresql
|
|
||||||
encoding: unicode
|
|
||||||
# For details on connection pooling, see Rails configuration guide
|
|
||||||
# http://guides.rubyonrails.org/configuring.html#database-pooling
|
|
||||||
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
|
||||||
|
|
||||||
development:
|
|
||||||
<<: *default
|
|
||||||
database: clarion_development
|
|
||||||
|
|
||||||
# The specified database role being used to connect to postgres.
|
|
||||||
# To create additional roles in postgres see `$ createuser --help`.
|
|
||||||
# When left blank, postgres will use the default role. This is
|
|
||||||
# the same name as the operating system user that initialized the database.
|
|
||||||
#username: clarion
|
|
||||||
|
|
||||||
# The password associated with the postgres role (username).
|
|
||||||
#password:
|
|
||||||
|
|
||||||
# Connect on a TCP socket. Omitted by default since the client uses a
|
|
||||||
# domain socket that doesn't need configuration. Windows does not have
|
|
||||||
# domain sockets, so uncomment these lines.
|
|
||||||
#host: localhost
|
|
||||||
|
|
||||||
# The TCP port the server listens on. Defaults to 5432.
|
|
||||||
# If your server runs on a different port number, change accordingly.
|
|
||||||
#port: 5432
|
|
||||||
|
|
||||||
# Schema search path. The server defaults to $user,public
|
|
||||||
#schema_search_path: myapp,sharedapp,public
|
|
||||||
|
|
||||||
# Minimum log levels, in increasing order:
|
|
||||||
# debug5, debug4, debug3, debug2, debug1,
|
|
||||||
# log, notice, warning, error, fatal, and panic
|
|
||||||
# Defaults to warning.
|
|
||||||
#min_messages: notice
|
|
||||||
|
|
||||||
# Warning: The database defined as "test" will be erased and
|
|
||||||
# re-generated from your development database when you run "rake".
|
|
||||||
# Do not set this db to the same as development or production.
|
|
||||||
test:
|
|
||||||
<<: *default
|
|
||||||
database: clarion_test
|
|
||||||
|
|
||||||
# As with config/secrets.yml, you never want to store sensitive information,
|
|
||||||
# like your database password, in your source code. If your source code is
|
|
||||||
# ever seen by anyone, they now have access to your database.
|
|
||||||
#
|
|
||||||
# Instead, provide the password as a unix environment variable when you boot
|
|
||||||
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
|
|
||||||
# for a full rundown on how to provide these environment variables in a
|
|
||||||
# production deployment.
|
|
||||||
#
|
|
||||||
# On Heroku and other platform providers, you may have a full connection URL
|
|
||||||
# available as an environment variable. For example:
|
|
||||||
#
|
|
||||||
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
|
|
||||||
#
|
|
||||||
# You can use this database configuration with:
|
|
||||||
#
|
|
||||||
# production:
|
|
||||||
# url: <%= ENV['DATABASE_URL'] %>
|
|
||||||
#
|
|
||||||
production:
|
|
||||||
<<: *default
|
|
||||||
database: clarion_production
|
|
||||||
username: clarion
|
|
||||||
password: <%= ENV['CLARION_DATABASE_PASSWORD'] %>
|
|
@ -37,9 +37,9 @@ set :linked_dirs, fetch(:linked_dirs, []).push("log", "tmp/uploads", "tmp/pids",
|
|||||||
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
|
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
|
||||||
|
|
||||||
# Default value for keep_releases is 5
|
# Default value for keep_releases is 5
|
||||||
set :keep_releases, 550
|
set :keep_releases, 5
|
||||||
|
|
||||||
set :rvm_ruby_version, "3.3.5"
|
set :rvm_ruby_version, "2.6.5"
|
||||||
|
|
||||||
set :puma_bind, ["tcp://127.0.0.1:9087"]
|
set :puma_bind, ["tcp://127.0.0.1:9087"]
|
||||||
set :puma_init_active_record, true
|
set :puma_init_active_record, true
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
require "active_support/core_ext/integer/time"
|
|
||||||
|
|
||||||
Rails.application.configure do
|
Rails.application.configure do
|
||||||
# Settings specified here will take precedence over those in config/application.rb.
|
# Settings specified here will take precedence over those in config/application.rb.
|
||||||
|
|
||||||
# In the development environment your application's code is reloaded any time
|
# In the development environment your application's code is reloaded on
|
||||||
# it changes. This slows down response time but is perfect for development
|
# every request. This slows down response time but is perfect for development
|
||||||
# since you don't have to restart the web server when you make code changes.
|
# since you don't have to restart the web server when you make code changes.
|
||||||
config.enable_reloading = true
|
config.cache_classes = false
|
||||||
|
|
||||||
# Do not eager load code on boot.
|
# Do not eager load code on boot.
|
||||||
config.eager_load = false
|
config.eager_load = false
|
||||||
@ -14,18 +12,14 @@ Rails.application.configure do
|
|||||||
# Show full error reports.
|
# Show full error reports.
|
||||||
config.consider_all_requests_local = true
|
config.consider_all_requests_local = true
|
||||||
|
|
||||||
# Enable server timing
|
|
||||||
config.server_timing = true
|
|
||||||
|
|
||||||
# Enable/disable caching. By default caching is disabled.
|
# Enable/disable caching. By default caching is disabled.
|
||||||
# Run rails dev:cache to toggle caching.
|
# Run rails dev:cache to toggle caching.
|
||||||
if Rails.root.join("tmp/caching-dev.txt").exist?
|
if Rails.root.join("tmp", "caching-dev.txt").exist?
|
||||||
config.action_controller.perform_caching = true
|
config.action_controller.perform_caching = true
|
||||||
config.action_controller.enable_fragment_cache_logging = true
|
|
||||||
|
|
||||||
config.cache_store = :memory_store
|
config.cache_store = :memory_store
|
||||||
config.public_file_server.headers = {
|
config.public_file_server.headers = {
|
||||||
"Cache-Control" => "public, max-age=#{2.days.to_i}"
|
"Cache-Control" => "public, max-age=#{2.days.to_i}",
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
config.action_controller.perform_caching = false
|
config.action_controller.perform_caching = false
|
||||||
@ -33,7 +27,7 @@ Rails.application.configure do
|
|||||||
config.cache_store = :null_store
|
config.cache_store = :null_store
|
||||||
end
|
end
|
||||||
|
|
||||||
# Store uploaded files on the local file system (see config/storage.yml for options).
|
# Store uploaded files on the local file system (see config/storage.yml for options)
|
||||||
config.active_storage.service = :local
|
config.active_storage.service = :local
|
||||||
|
|
||||||
# Don't care if the mailer can't send.
|
# Don't care if the mailer can't send.
|
||||||
@ -47,35 +41,24 @@ Rails.application.configure do
|
|||||||
# Print deprecation notices to the Rails logger.
|
# Print deprecation notices to the Rails logger.
|
||||||
config.active_support.deprecation = :log
|
config.active_support.deprecation = :log
|
||||||
|
|
||||||
# Raise exceptions for disallowed deprecations.
|
|
||||||
config.active_support.disallowed_deprecation = :raise
|
|
||||||
|
|
||||||
# Tell Active Support which deprecation messages to disallow.
|
|
||||||
config.active_support.disallowed_deprecation_warnings = []
|
|
||||||
|
|
||||||
# Raise an error on page load if there are pending migrations.
|
# Raise an error on page load if there are pending migrations.
|
||||||
config.active_record.migration_error = :page_load
|
config.active_record.migration_error = :page_load
|
||||||
|
|
||||||
# Highlight code that triggered database queries in logs.
|
# Highlight code that triggered database queries in logs.
|
||||||
config.active_record.verbose_query_logs = true
|
config.active_record.verbose_query_logs = true
|
||||||
|
|
||||||
# Highlight code that enqueued background job in logs.
|
# Debug mode disables concatenation and preprocessing of assets.
|
||||||
config.active_job.verbose_enqueue_logs = true
|
# This option may cause significant delays in view rendering with a large
|
||||||
|
# number of complex assets.
|
||||||
|
config.assets.debug = true
|
||||||
|
|
||||||
# Suppress logger output for asset requests.
|
# Suppress logger output for asset requests.
|
||||||
config.assets.quiet = true
|
config.assets.quiet = true
|
||||||
|
|
||||||
# Raises error for missing translations.
|
# Raises error for missing translations
|
||||||
# config.i18n.raise_on_missing_translations = true
|
# config.action_view.raise_on_missing_translations = true
|
||||||
|
|
||||||
# Annotate rendered view with file names.
|
# Use an evented file watcher to asynchronously detect changes in source code,
|
||||||
# config.action_view.annotate_rendered_view_with_filenames = true
|
# routes, locales, etc. This feature depends on the listen gem.
|
||||||
|
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||||
# Uncomment if you wish to allow Action Cable access from any origin.
|
|
||||||
# config.action_cable.disable_request_forgery_protection = true
|
|
||||||
|
|
||||||
# Raise error when a before_action's only/except options reference missing actions
|
|
||||||
config.action_controller.raise_on_missing_callback_actions = true
|
|
||||||
|
|
||||||
config.hosts << "dev.openfest.org:3000"
|
|
||||||
end
|
end
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
require "active_support/core_ext/integer/time"
|
|
||||||
|
|
||||||
Rails.application.configure do
|
Rails.application.configure do
|
||||||
# Settings specified here will take precedence over those in config/application.rb.
|
# Settings specified here will take precedence over those in config/application.rb.
|
||||||
|
|
||||||
# Code is not reloaded between requests.
|
# Code is not reloaded between requests.
|
||||||
config.enable_reloading = false
|
config.cache_classes = true
|
||||||
|
|
||||||
# Eager load code on boot. This eager loads most of Rails and
|
# Eager load code on boot. This eager loads most of Rails and
|
||||||
# your application in memory, allowing both threaded web servers
|
# your application in memory, allowing both threaded web servers
|
||||||
@ -16,69 +14,54 @@ Rails.application.configure do
|
|||||||
config.consider_all_requests_local = false
|
config.consider_all_requests_local = false
|
||||||
config.action_controller.perform_caching = true
|
config.action_controller.perform_caching = true
|
||||||
|
|
||||||
# Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment
|
# Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
|
||||||
# key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files).
|
# or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
|
||||||
# config.require_master_key = true
|
# config.require_master_key = true
|
||||||
|
|
||||||
# Disable serving static files from `public/`, relying on NGINX/Apache to do so instead.
|
# Disable serving static files from the `/public` folder by default since
|
||||||
# config.public_file_server.enabled = false
|
# Apache or NGINX already handles this.
|
||||||
|
config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
|
||||||
|
|
||||||
# Compress CSS using a preprocessor.
|
# Compress JavaScripts and CSS.
|
||||||
|
config.assets.js_compressor = :uglifier
|
||||||
# config.assets.css_compressor = :sass
|
# config.assets.css_compressor = :sass
|
||||||
|
|
||||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||||
config.assets.compile = false
|
config.assets.compile = false
|
||||||
|
|
||||||
|
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
||||||
|
|
||||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||||
# config.asset_host = "http://assets.example.com"
|
# config.action_controller.asset_host = 'http://assets.example.com'
|
||||||
|
|
||||||
# Specifies the header that your server uses for sending files.
|
# Specifies the header that your server uses for sending files.
|
||||||
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
|
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
||||||
# config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
|
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
||||||
|
|
||||||
# Store uploaded files on the local file system (see config/storage.yml for options).
|
# Store uploaded files on the local file system (see config/storage.yml for options)
|
||||||
config.active_storage.service = :local
|
config.active_storage.service = :local
|
||||||
|
|
||||||
# Mount Action Cable outside main process or domain.
|
# Mount Action Cable outside main process or domain
|
||||||
# config.action_cable.mount_path = nil
|
# config.action_cable.mount_path = nil
|
||||||
# config.action_cable.url = "wss://example.com/cable"
|
# config.action_cable.url = 'wss://example.com/cable'
|
||||||
# config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
|
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
|
||||||
|
|
||||||
# Assume all access to the app is happening through a SSL-terminating reverse proxy.
|
|
||||||
# Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
|
|
||||||
config.assume_ssl = true
|
|
||||||
|
|
||||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||||
config.force_ssl = ENV["CLARION_USE_PLAINTEXT"] != "yes"
|
config.force_ssl = true
|
||||||
|
|
||||||
# Log to STDOUT by default
|
# Use the lowest log level to ensure availability of diagnostic information
|
||||||
config.logger = ActiveSupport::Logger.new(STDOUT)
|
# when problems arise.
|
||||||
.tap { |logger| logger.formatter = ::Logger::Formatter.new }
|
config.log_level = :debug
|
||||||
.then { |logger| ActiveSupport::TaggedLogging.new(logger) }
|
|
||||||
|
|
||||||
# Prepend all log lines with the following tags.
|
# Prepend all log lines with the following tags.
|
||||||
config.log_tags = [
|
config.log_tags = [:request_id]
|
||||||
:request_id,
|
|
||||||
:subdomain,
|
|
||||||
->(req) {
|
|
||||||
session_key = (Rails.application.config.session_options || {})[:key]
|
|
||||||
session_data = req.cookie_jar.encrypted[session_key] || {}
|
|
||||||
user_id = session_data["warden.user.user.key"]&.flatten&.first || "guest"
|
|
||||||
"user: #{user_id}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
# "info" includes generic and useful information about system operation, but avoids logging too much
|
|
||||||
# information to avoid inadvertent exposure of personally identifiable information (PII). If you
|
|
||||||
# want to log everything, set the level to "debug".
|
|
||||||
config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info")
|
|
||||||
|
|
||||||
# Use a different cache store in production.
|
# Use a different cache store in production.
|
||||||
# config.cache_store = :mem_cache_store
|
# config.cache_store = :mem_cache_store
|
||||||
|
|
||||||
# Use a real queuing backend for Active Job (and separate queues per environment).
|
# Use a real queuing backend for Active Job (and separate queues per environment)
|
||||||
# config.active_job.queue_adapter = :resque
|
# config.active_job.queue_adapter = :resque
|
||||||
# config.active_job.queue_name_prefix = "clarion_production"
|
# config.active_job.queue_name_prefix = "clarion_#{Rails.env}"
|
||||||
|
|
||||||
config.action_mailer.perform_caching = false
|
config.action_mailer.perform_caching = false
|
||||||
|
|
||||||
@ -86,28 +69,30 @@ Rails.application.configure do
|
|||||||
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||||
# config.action_mailer.raise_delivery_errors = false
|
# config.action_mailer.raise_delivery_errors = false
|
||||||
|
|
||||||
config.action_mailer.delivery_method = :smtp
|
config.action_mailer.delivery_method = :sendmail
|
||||||
config.action_mailer.default_options = {from: "OpenFest <cfp@openfest.org>"}
|
config.action_mailer.default_options = {from: "no-reply@openfest.org"}
|
||||||
config.action_mailer.default_url_options = {host: "cfp.openfest.org"}
|
config.action_mailer.default_url_options = {host: "cfp.openfest.org"}
|
||||||
config.action_mailer.smtp_settings = {
|
|
||||||
address: ENV.fetch("CLARION_MAIL_SERVER", "mail.openfest.org")
|
|
||||||
}
|
|
||||||
|
|
||||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||||
# the I18n.default_locale when a translation cannot be found).
|
# the I18n.default_locale when a translation cannot be found).
|
||||||
config.i18n.fallbacks = true
|
config.i18n.fallbacks = true
|
||||||
|
|
||||||
# Don't log any deprecations.
|
# Send deprecation notices to registered listeners.
|
||||||
config.active_support.report_deprecations = false
|
config.active_support.deprecation = :notify
|
||||||
|
|
||||||
|
# Use default logging formatter so that PID and timestamp are not suppressed.
|
||||||
|
config.log_formatter = ::Logger::Formatter.new
|
||||||
|
|
||||||
|
# Use a different logger for distributed setups.
|
||||||
|
# require 'syslog/logger'
|
||||||
|
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
|
||||||
|
|
||||||
|
if ENV["RAILS_LOG_TO_STDOUT"].present?
|
||||||
|
logger = ActiveSupport::Logger.new(STDOUT)
|
||||||
|
logger.formatter = config.log_formatter
|
||||||
|
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
||||||
|
end
|
||||||
|
|
||||||
# Do not dump schema after migrations.
|
# Do not dump schema after migrations.
|
||||||
config.active_record.dump_schema_after_migration = false
|
config.active_record.dump_schema_after_migration = false
|
||||||
|
|
||||||
# Enable DNS rebinding protection and other `Host` header attacks.
|
|
||||||
# config.hosts = [
|
|
||||||
# "example.com", # Allow requests from example.com
|
|
||||||
# /.*\.example\.com/ # Allow requests from subdomains like `www.example.com`
|
|
||||||
# ]
|
|
||||||
# Skip DNS rebinding protection for the default health check endpoint.
|
|
||||||
# config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
|
|
||||||
end
|
end
|
||||||
|
@ -1,40 +1,34 @@
|
|||||||
require "active_support/core_ext/integer/time"
|
Rails.application.configure do
|
||||||
|
# Settings specified here will take precedence over those in config/application.rb.
|
||||||
|
|
||||||
# The test environment is used exclusively to run your application's
|
# The test environment is used exclusively to run your application's
|
||||||
# test suite. You never need to work with it otherwise. Remember that
|
# test suite. You never need to work with it otherwise. Remember that
|
||||||
# your test database is "scratch space" for the test suite and is wiped
|
# your test database is "scratch space" for the test suite and is wiped
|
||||||
# and recreated between test runs. Don't rely on the data there!
|
# and recreated between test runs. Don't rely on the data there!
|
||||||
|
config.cache_classes = true
|
||||||
|
|
||||||
Rails.application.configure do
|
# Do not eager load code on boot. This avoids loading your whole application
|
||||||
# Settings specified here will take precedence over those in config/application.rb.
|
# just for the purpose of running a single test. If you are using a tool that
|
||||||
|
# preloads Rails for running tests, you may have to set it to true.
|
||||||
# While tests run files are not watched, reloading is not necessary.
|
config.eager_load = false
|
||||||
config.enable_reloading = false
|
|
||||||
|
|
||||||
# Eager loading loads your entire application. When running a single test locally,
|
|
||||||
# this is usually not necessary, and can slow down your test suite. However, it's
|
|
||||||
# recommended that you enable it in continuous integration systems to ensure eager
|
|
||||||
# loading is working properly before deploying your code.
|
|
||||||
config.eager_load = ENV["CI"].present?
|
|
||||||
|
|
||||||
# Configure public file server for tests with Cache-Control for performance.
|
# Configure public file server for tests with Cache-Control for performance.
|
||||||
config.public_file_server.enabled = true
|
config.public_file_server.enabled = true
|
||||||
config.public_file_server.headers = {
|
config.public_file_server.headers = {
|
||||||
"Cache-Control" => "public, max-age=#{1.hour.to_i}"
|
"Cache-Control" => "public, max-age=#{1.hour.to_i}",
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show full error reports and disable caching.
|
# Show full error reports and disable caching.
|
||||||
config.consider_all_requests_local = true
|
config.consider_all_requests_local = true
|
||||||
config.action_controller.perform_caching = false
|
config.action_controller.perform_caching = false
|
||||||
config.cache_store = :null_store
|
|
||||||
|
|
||||||
# Render exception templates for rescuable exceptions and raise for other exceptions.
|
# Raise exceptions instead of rendering exception templates.
|
||||||
config.action_dispatch.show_exceptions = :rescuable
|
config.action_dispatch.show_exceptions = false
|
||||||
|
|
||||||
# Disable request forgery protection in test environment.
|
# Disable request forgery protection in test environment.
|
||||||
config.action_controller.allow_forgery_protection = false
|
config.action_controller.allow_forgery_protection = false
|
||||||
|
|
||||||
# Store uploaded files on the local file system in a temporary directory.
|
# Store uploaded files on the local file system in a temporary directory
|
||||||
config.active_storage.service = :test
|
config.active_storage.service = :test
|
||||||
|
|
||||||
config.action_mailer.perform_caching = false
|
config.action_mailer.perform_caching = false
|
||||||
@ -50,18 +44,6 @@ Rails.application.configure do
|
|||||||
# Print deprecation notices to the stderr.
|
# Print deprecation notices to the stderr.
|
||||||
config.active_support.deprecation = :stderr
|
config.active_support.deprecation = :stderr
|
||||||
|
|
||||||
# Raise exceptions for disallowed deprecations.
|
# Raises error for missing translations
|
||||||
config.active_support.disallowed_deprecation = :raise
|
# config.action_view.raise_on_missing_translations = true
|
||||||
|
|
||||||
# Tell Active Support which deprecation messages to disallow.
|
|
||||||
config.active_support.disallowed_deprecation_warnings = []
|
|
||||||
|
|
||||||
# Raises error for missing translations.
|
|
||||||
# config.i18n.raise_on_missing_translations = true
|
|
||||||
|
|
||||||
# Annotate rendered view with file names.
|
|
||||||
# config.action_view.annotate_rendered_view_with_filenames = true
|
|
||||||
|
|
||||||
# Raise error when a before_action's only/except options reference missing actions
|
|
||||||
config.action_controller.raise_on_missing_callback_actions = true
|
|
||||||
end
|
end
|
||||||
|
@ -1 +0,0 @@
|
|||||||
Rails.application.config.active_storage.resolve_model_to_route = :rails_storage_proxy
|
|
@ -5,11 +5,13 @@ Rails.application.config.assets.version = "1.0"
|
|||||||
|
|
||||||
# Add additional assets to the asset load path.
|
# Add additional assets to the asset load path.
|
||||||
# Rails.application.config.assets.paths << Emoji.images_path
|
# Rails.application.config.assets.paths << Emoji.images_path
|
||||||
|
# Add Yarn node_modules folder to the asset load path.
|
||||||
|
Rails.application.config.assets.paths << Rails.root.join("node_modules")
|
||||||
|
|
||||||
Rails.application.config.assets.paths << "lib/initfest/assets/images"
|
Rails.application.config.assets.paths << "lib/initfest/assets/images"
|
||||||
Rails.application.config.assets.paths << "lib/initfest/assets/javascripts"
|
Rails.application.config.assets.paths << "lib/initfest/assets/javascripts"
|
||||||
Rails.application.config.assets.paths << "lib/initfest/assets/stylesheets"
|
Rails.application.config.assets.paths << "lib/initfest/assets/stylesheets"
|
||||||
#Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/
|
Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/
|
||||||
|
|
||||||
# Precompile additional assets.
|
# Precompile additional assets.
|
||||||
# application.js, application.css, and all non-JS/CSS in the app/assets
|
# application.js, application.css, and all non-JS/CSS in the app/assets
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
|
||||||
# Rails.backtrace_cleaner.add_silencer { |line| /my_noisy_library/.match?(line) }
|
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
|
||||||
|
|
||||||
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code
|
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
|
||||||
# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'".
|
# Rails.backtrace_cleaner.remove_silencers!
|
||||||
Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"]
|
|
||||||
|
@ -1,25 +1,25 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
# Define an application-wide content security policy.
|
# Define an application-wide content security policy
|
||||||
# See the Securing Rails Applications Guide for more information:
|
# For further information see the following documentation
|
||||||
# https://guides.rubyonrails.org/security.html#content-security-policy-header
|
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
|
||||||
|
|
||||||
# Rails.application.configure do
|
# Rails.application.config.content_security_policy do |policy|
|
||||||
# config.content_security_policy do |policy|
|
|
||||||
# policy.default_src :self, :https
|
# policy.default_src :self, :https
|
||||||
# policy.font_src :self, :https, :data
|
# policy.font_src :self, :https, :data
|
||||||
# policy.img_src :self, :https, :data
|
# policy.img_src :self, :https, :data
|
||||||
# policy.object_src :none
|
# policy.object_src :none
|
||||||
# policy.script_src :self, :https
|
# policy.script_src :self, :https
|
||||||
# policy.style_src :self, :https
|
# policy.style_src :self, :https
|
||||||
|
|
||||||
# # Specify URI for violation reports
|
# # Specify URI for violation reports
|
||||||
# # policy.report_uri "/csp-violation-report-endpoint"
|
# # policy.report_uri "/csp-violation-report-endpoint"
|
||||||
# end
|
# end
|
||||||
#
|
|
||||||
# # Generate session nonces for permitted importmap, inline scripts, and inline styles.
|
# If you are using UJS then enable automatic nonce generation
|
||||||
# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
|
# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
|
||||||
# config.content_security_policy_nonce_directives = %w(script-src style-src)
|
|
||||||
#
|
# Report CSP violations to a specified URI
|
||||||
# # Report violations without enforcing the policy.
|
# For further information see the following documentation:
|
||||||
# # config.content_security_policy_report_only = true
|
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
|
||||||
# end
|
# Rails.application.config.content_security_policy_report_only = true
|
||||||
|
@ -12,7 +12,7 @@ Devise.setup do |config|
|
|||||||
# Configure the e-mail address which will be shown in Devise::Mailer,
|
# Configure the e-mail address which will be shown in Devise::Mailer,
|
||||||
# note that it will be overwritten if you use your own mailer class
|
# note that it will be overwritten if you use your own mailer class
|
||||||
# with default "from" parameter.
|
# with default "from" parameter.
|
||||||
config.mailer_sender = "OpenFest <cfp@openfest.org>"
|
config.mailer_sender = "no-reply@openfest.org"
|
||||||
|
|
||||||
# Configure the class responsible to send e-mails.
|
# Configure the class responsible to send e-mails.
|
||||||
# config.mailer = 'Devise::Mailer'
|
# config.mailer = 'Devise::Mailer'
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
# Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file.
|
# Configure sensitive parameters which will be filtered from the log file.
|
||||||
# Use this to limit dissemination of sensitive information.
|
Rails.application.config.filter_parameters += [:password]
|
||||||
# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.
|
|
||||||
Rails.application.config.filter_parameters += [
|
|
||||||
:passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
|
|
||||||
]
|
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
# are locale specific, and you may define rules for as many different
|
# are locale specific, and you may define rules for as many different
|
||||||
# locales as you wish. All of these examples are active by default:
|
# locales as you wish. All of these examples are active by default:
|
||||||
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||||
# inflect.plural /^(ox)$/i, "\\1en"
|
# inflect.plural /^(ox)$/i, '\1en'
|
||||||
# inflect.singular /^(ox)en/i, "\\1"
|
# inflect.singular /^(ox)en/i, '\1'
|
||||||
# inflect.irregular "person", "people"
|
# inflect.irregular 'person', 'people'
|
||||||
# inflect.uncountable %w( fish sheep )
|
# inflect.uncountable %w( fish sheep )
|
||||||
# end
|
# end
|
||||||
|
|
||||||
# These inflection rules are supported but not enabled by default:
|
# These inflection rules are supported but not enabled by default:
|
||||||
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||||
# inflect.acronym "RESTful"
|
# inflect.acronym 'RESTful'
|
||||||
# end
|
# end
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
|
||||||
#
|
|
||||||
# This file contains migration options to ease your Rails 6.0 upgrade.
|
|
||||||
#
|
|
||||||
# Once upgraded flip defaults one by one to migrate to the new default.
|
|
||||||
#
|
|
||||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
|
||||||
|
|
||||||
# Don't force requests from old versions of IE to be UTF-8 encoded.
|
|
||||||
# Rails.application.config.action_view.default_enforce_utf8 = false
|
|
||||||
|
|
||||||
# Embed purpose and expiry metadata inside signed and encrypted
|
|
||||||
# cookies for increased security.
|
|
||||||
#
|
|
||||||
# This option is not backwards compatible with earlier Rails versions.
|
|
||||||
# It's best enabled when your entire app is migrated and stable on 6.0.
|
|
||||||
# Rails.application.config.action_dispatch.use_cookies_with_metadata = true
|
|
||||||
|
|
||||||
# Change the return value of `ActionDispatch::Response#content_type` to Content-Type header without modification.
|
|
||||||
# Rails.application.config.action_dispatch.return_only_media_type_on_content_type = false
|
|
||||||
|
|
||||||
# Return false instead of self when enqueuing is aborted from a callback.
|
|
||||||
# Rails.application.config.active_job.return_false_on_aborted_enqueue = true
|
|
||||||
|
|
||||||
# Send Active Storage analysis and purge jobs to dedicated queues.
|
|
||||||
# Rails.application.config.active_storage.queues.analysis = :active_storage_analysis
|
|
||||||
# Rails.application.config.active_storage.queues.purge = :active_storage_purge
|
|
||||||
|
|
||||||
# When assigning to a collection of attachments declared via `has_many_attached`, replace existing
|
|
||||||
# attachments instead of appending. Use #attach to add new attachments without replacing existing ones.
|
|
||||||
Rails.application.config.active_storage.replace_on_assign_to_many = true
|
|
||||||
|
|
||||||
# Use ActionMailer::MailDeliveryJob for sending parameterized and normal mail.
|
|
||||||
#
|
|
||||||
# The default delivery jobs (ActionMailer::Parameterized::DeliveryJob, ActionMailer::DeliveryJob),
|
|
||||||
# will be removed in Rails 6.1. This setting is not backwards compatible with earlier Rails versions.
|
|
||||||
# If you send mail in the background, job workers need to have a copy of
|
|
||||||
# MailDeliveryJob to ensure all delivery jobs are processed properly.
|
|
||||||
# Make sure your entire app is migrated and stable on 6.0 before using this setting.
|
|
||||||
# Rails.application.config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob"
|
|
||||||
|
|
||||||
# Enable the same cache key to be reused when the object being cached of type
|
|
||||||
# `ActiveRecord::Relation` changes by moving the volatile information (max updated at and count)
|
|
||||||
# of the relation's cache key into the cache version to support recycling cache key.
|
|
||||||
# Rails.application.config.active_record.collection_cache_versioning = true
|
|
@ -1,67 +0,0 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
|
||||||
#
|
|
||||||
# This file contains migration options to ease your Rails 6.1 upgrade.
|
|
||||||
#
|
|
||||||
# Once upgraded flip defaults one by one to migrate to the new default.
|
|
||||||
#
|
|
||||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
|
||||||
|
|
||||||
# Support for inversing belongs_to -> has_many Active Record associations.
|
|
||||||
# Rails.application.config.active_record.has_many_inversing = true
|
|
||||||
|
|
||||||
# Track Active Storage variants in the database.
|
|
||||||
Rails.application.config.active_storage.track_variants = true
|
|
||||||
|
|
||||||
# Apply random variation to the delay when retrying failed jobs.
|
|
||||||
# Rails.application.config.active_job.retry_jitter = 0.15
|
|
||||||
|
|
||||||
# Stop executing `after_enqueue`/`after_perform` callbacks if
|
|
||||||
# `before_enqueue`/`before_perform` respectively halts with `throw :abort`.
|
|
||||||
# Rails.application.config.active_job.skip_after_callbacks_if_terminated = true
|
|
||||||
|
|
||||||
# Specify cookies SameSite protection level: either :none, :lax, or :strict.
|
|
||||||
#
|
|
||||||
# This change is not backwards compatible with earlier Rails versions.
|
|
||||||
# It's best enabled when your entire app is migrated and stable on 6.1.
|
|
||||||
# Rails.application.config.action_dispatch.cookies_same_site_protection = :lax
|
|
||||||
|
|
||||||
# Generate CSRF tokens that are encoded in URL-safe Base64.
|
|
||||||
#
|
|
||||||
# This change is not backwards compatible with earlier Rails versions.
|
|
||||||
# It's best enabled when your entire app is migrated and stable on 6.1.
|
|
||||||
# Rails.application.config.action_controller.urlsafe_csrf_tokens = true
|
|
||||||
|
|
||||||
# Specify whether `ActiveSupport::TimeZone.utc_to_local` returns a time with an
|
|
||||||
# UTC offset or a UTC time.
|
|
||||||
# ActiveSupport.utc_to_local_returns_utc_offset_times = true
|
|
||||||
|
|
||||||
# Change the default HTTP status code to `308` when redirecting non-GET/HEAD
|
|
||||||
# requests to HTTPS in `ActionDispatch::SSL` middleware.
|
|
||||||
# Rails.application.config.action_dispatch.ssl_default_redirect_status = 308
|
|
||||||
|
|
||||||
# Use new connection handling API. For most applications this won't have any
|
|
||||||
# effect. For applications using multiple databases, this new API provides
|
|
||||||
# support for granular connection swapping.
|
|
||||||
# Rails.application.config.active_record.legacy_connection_handling = false
|
|
||||||
|
|
||||||
# Make `form_with` generate non-remote forms by default.
|
|
||||||
# Rails.application.config.action_view.form_with_generates_remote_forms = false
|
|
||||||
|
|
||||||
# Set the default queue name for the analysis job to the queue adapter default.
|
|
||||||
Rails.application.config.active_storage.queues.analysis = nil
|
|
||||||
|
|
||||||
# Set the default queue name for the purge job to the queue adapter default.
|
|
||||||
Rails.application.config.active_storage.queues.purge = nil
|
|
||||||
|
|
||||||
# Set the default queue name for the incineration job to the queue adapter default.
|
|
||||||
# Rails.application.config.action_mailbox.queues.incineration = nil
|
|
||||||
|
|
||||||
# Set the default queue name for the routing job to the queue adapter default.
|
|
||||||
# Rails.application.config.action_mailbox.queues.routing = nil
|
|
||||||
|
|
||||||
# Set the default queue name for the mail deliver job to the queue adapter default.
|
|
||||||
# Rails.application.config.action_mailer.deliver_later_queue_name = nil
|
|
||||||
|
|
||||||
# Generate a `Link` header that gives a hint to modern browsers about
|
|
||||||
# preloading assets when using `javascript_include_tag` and `stylesheet_link_tag`.
|
|
||||||
# Rails.application.config.action_view.preload_links_header = true
|
|
@ -1,143 +0,0 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
|
||||||
#
|
|
||||||
# This file eases your Rails 7.0 framework defaults upgrade.
|
|
||||||
#
|
|
||||||
# Uncomment each configuration one by one to switch to the new default.
|
|
||||||
# Once your application is ready to run with all new defaults, you can remove
|
|
||||||
# this file and set the `config.load_defaults` to `7.0`.
|
|
||||||
#
|
|
||||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
|
||||||
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
|
||||||
|
|
||||||
# `button_to` view helper will render `<button>` element, regardless of whether
|
|
||||||
# or not the content is passed as the first argument or as a block.
|
|
||||||
# Rails.application.config.action_view.button_to_generates_button_tag = true
|
|
||||||
|
|
||||||
# `stylesheet_link_tag` view helper will not render the media attribute by default.
|
|
||||||
# Rails.application.config.action_view.apply_stylesheet_media_default = false
|
|
||||||
|
|
||||||
# Change the digest class for the key generators to `OpenSSL::Digest::SHA256`.
|
|
||||||
# Changing this default means invalidate all encrypted messages generated by
|
|
||||||
# your application and, all the encrypted cookies. Only change this after you
|
|
||||||
# rotated all the messages using the key rotator.
|
|
||||||
#
|
|
||||||
# See upgrading guide for more information on how to build a rotator.
|
|
||||||
# https://guides.rubyonrails.org/v7.0/upgrading_ruby_on_rails.html
|
|
||||||
# Rails.application.config.active_support.key_generator_hash_digest_class = OpenSSL::Digest::SHA256
|
|
||||||
|
|
||||||
# Change the digest class for ActiveSupport::Digest.
|
|
||||||
# Changing this default means that for example Etags change and
|
|
||||||
# various cache keys leading to cache invalidation.
|
|
||||||
# Rails.application.config.active_support.hash_digest_class = OpenSSL::Digest::SHA256
|
|
||||||
|
|
||||||
# Don't override ActiveSupport::TimeWithZone.name and use the default Ruby
|
|
||||||
# implementation.
|
|
||||||
# Rails.application.config.active_support.remove_deprecated_time_with_zone_name = true
|
|
||||||
|
|
||||||
# Calls `Rails.application.executor.wrap` around test cases.
|
|
||||||
# This makes test cases behave closer to an actual request or job.
|
|
||||||
# Several features that are normally disabled in test, such as Active Record query cache
|
|
||||||
# and asynchronous queries will then be enabled.
|
|
||||||
# Rails.application.config.active_support.executor_around_test_case = true
|
|
||||||
|
|
||||||
# Set both the `:open_timeout` and `:read_timeout` values for `:smtp` delivery method.
|
|
||||||
# Rails.application.config.action_mailer.smtp_timeout = 5
|
|
||||||
|
|
||||||
# The ActiveStorage video previewer will now use scene change detection to generate
|
|
||||||
# better preview images (rather than the previous default of using the first frame
|
|
||||||
# of the video).
|
|
||||||
Rails.application.config.active_storage.video_preview_arguments =
|
|
||||||
"-vf 'select=eq(n\\,0)+eq(key\\,1)+gt(scene\\,0.015),loop=loop=-1:size=2,trim=start_frame=1' -frames:v 1 -f image2"
|
|
||||||
|
|
||||||
# Automatically infer `inverse_of` for associations with a scope.
|
|
||||||
# Rails.application.config.active_record.automatic_scope_inversing = true
|
|
||||||
|
|
||||||
# Raise when running tests if fixtures contained foreign key violations
|
|
||||||
# Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true
|
|
||||||
|
|
||||||
# Disable partial inserts.
|
|
||||||
# This default means that all columns will be referenced in INSERT queries
|
|
||||||
# regardless of whether they have a default or not.
|
|
||||||
# Rails.application.config.active_record.partial_inserts = false
|
|
||||||
|
|
||||||
# Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`.
|
|
||||||
# Rails.application.config.action_controller.raise_on_open_redirects = true
|
|
||||||
|
|
||||||
# Change the variant processor for Active Storage.
|
|
||||||
# Changing this default means updating all places in your code that
|
|
||||||
# generate variants to use image processing macros and ruby-vips
|
|
||||||
# operations. See the upgrading guide for detail on the changes required.
|
|
||||||
# The `:mini_magick` option is not deprecated; it's fine to keep using it.
|
|
||||||
Rails.application.config.active_storage.variant_processor = :vips
|
|
||||||
|
|
||||||
# Enable parameter wrapping for JSON.
|
|
||||||
# Previously this was set in an initializer. It's fine to keep using that initializer if you've customized it.
|
|
||||||
# To disable parameter wrapping entirely, set this config to `false`.
|
|
||||||
# Rails.application.config.action_controller.wrap_parameters_by_default = true
|
|
||||||
|
|
||||||
# Specifies whether generated namespaced UUIDs follow the RFC 4122 standard for namespace IDs provided as a
|
|
||||||
# `String` to `Digest::UUID.uuid_v3` or `Digest::UUID.uuid_v5` method calls.
|
|
||||||
#
|
|
||||||
# See https://guides.rubyonrails.org/configuring.html#config-active-support-use-rfc4122-namespaced-uuids for
|
|
||||||
# more information.
|
|
||||||
# Rails.application.config.active_support.use_rfc4122_namespaced_uuids = true
|
|
||||||
|
|
||||||
# Change the default headers to disable browsers' flawed legacy XSS protection.
|
|
||||||
# Rails.application.config.action_dispatch.default_headers = {
|
|
||||||
# "X-Frame-Options" => "SAMEORIGIN",
|
|
||||||
# "X-XSS-Protection" => "0",
|
|
||||||
# "X-Content-Type-Options" => "nosniff",
|
|
||||||
# "X-Download-Options" => "noopen",
|
|
||||||
# "X-Permitted-Cross-Domain-Policies" => "none",
|
|
||||||
# "Referrer-Policy" => "strict-origin-when-cross-origin"
|
|
||||||
# }
|
|
||||||
|
|
||||||
|
|
||||||
# ** Please read carefully, this must be configured in config/application.rb **
|
|
||||||
# Change the format of the cache entry.
|
|
||||||
# Changing this default means that all new cache entries added to the cache
|
|
||||||
# will have a different format that is not supported by Rails 6.1 applications.
|
|
||||||
# Only change this value after your application is fully deployed to Rails 7.0
|
|
||||||
# and you have no plans to rollback.
|
|
||||||
# When you're ready to change format, add this to `config/application.rb` (NOT this file):
|
|
||||||
# config.active_support.cache_format_version = 7.0
|
|
||||||
|
|
||||||
|
|
||||||
# Cookie serializer: 2 options
|
|
||||||
#
|
|
||||||
# If you're upgrading and haven't set `cookies_serializer` previously, your cookie serializer
|
|
||||||
# is `:marshal`. The default for new apps is `:json`.
|
|
||||||
#
|
|
||||||
# Rails.application.config.action_dispatch.cookies_serializer = :json
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# To migrate an existing application to the `:json` serializer, use the `:hybrid` option.
|
|
||||||
#
|
|
||||||
# Rails transparently deserializes existing (Marshal-serialized) cookies on read and
|
|
||||||
# re-writes them in the JSON format.
|
|
||||||
#
|
|
||||||
# It is fine to use `:hybrid` long term; you should do that until you're confident *all* your cookies
|
|
||||||
# have been converted to JSON. To keep using `:hybrid` long term, move this config to its own
|
|
||||||
# initializer or to `config/application.rb`.
|
|
||||||
#
|
|
||||||
# Rails.application.config.action_dispatch.cookies_serializer = :hybrid
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# If your cookies can't yet be serialized to JSON, keep using `:marshal` for backward-compatibility.
|
|
||||||
#
|
|
||||||
# If you have configured the serializer elsewhere, you can remove this section of the file.
|
|
||||||
#
|
|
||||||
# See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information.
|
|
||||||
|
|
||||||
# Change the return value of `ActionDispatch::Request#content_type` to the Content-Type header without modification.
|
|
||||||
# Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type = false
|
|
||||||
|
|
||||||
# Active Storage `has_many_attached` relationships will default to replacing the current collection instead of appending to it.
|
|
||||||
# Thus, to support submitting an empty collection, the `file_field` helper will render an hidden field `include_hidden` by default when `multiple_file_field_include_hidden` is set to `true`.
|
|
||||||
# See https://guides.rubyonrails.org/configuring.html#config-active-storage-multiple-file-field-include-hidden for more information.
|
|
||||||
Rails.application.config.active_storage.multiple_file_field_include_hidden = true
|
|
||||||
|
|
||||||
# ** Please read carefully, this must be configured in config/application.rb (NOT this file) **
|
|
||||||
# Disables the deprecated #to_s override in some Ruby core classes
|
|
||||||
# See https://guides.rubyonrails.org/configuring.html#config-active-support-disable-to-s-conversion for more information.
|
|
||||||
# config.active_support.disable_to_s_conversion = true
|
|
@ -1,284 +0,0 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
|
||||||
#
|
|
||||||
# This file eases your Rails 7.1 framework defaults upgrade.
|
|
||||||
#
|
|
||||||
# Uncomment each configuration one by one to switch to the new default.
|
|
||||||
# Once your application is ready to run with all new defaults, you can remove
|
|
||||||
# this file and set the `config.load_defaults` to `7.1`.
|
|
||||||
#
|
|
||||||
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
|
||||||
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
|
||||||
|
|
||||||
###
|
|
||||||
# No longer add autoloaded paths into `$LOAD_PATH`. This means that you won't be able
|
|
||||||
# to manually require files that are managed by the autoloader, which you shouldn't do anyway.
|
|
||||||
#
|
|
||||||
# This will reduce the size of the load path, making `require` faster if you don't use bootsnap, or reduce the size
|
|
||||||
# of the bootsnap cache if you use it.
|
|
||||||
#
|
|
||||||
# To set this configuration, add the following line to `config/application.rb` (NOT this file):
|
|
||||||
# config.add_autoload_paths_to_load_path = false
|
|
||||||
|
|
||||||
###
|
|
||||||
# Remove the default X-Download-Options headers since it is used only by Internet Explorer.
|
|
||||||
# If you need to support Internet Explorer, add back `"X-Download-Options" => "noopen"`.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.action_dispatch.default_headers = {
|
|
||||||
# "X-Frame-Options" => "SAMEORIGIN",
|
|
||||||
# "X-XSS-Protection" => "0",
|
|
||||||
# "X-Content-Type-Options" => "nosniff",
|
|
||||||
# "X-Permitted-Cross-Domain-Policies" => "none",
|
|
||||||
# "Referrer-Policy" => "strict-origin-when-cross-origin"
|
|
||||||
# }
|
|
||||||
|
|
||||||
###
|
|
||||||
# Do not treat an `ActionController::Parameters` instance
|
|
||||||
# as equal to an equivalent `Hash` by default.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.action_controller.allow_deprecated_parameters_hash_equality = false
|
|
||||||
|
|
||||||
###
|
|
||||||
# Active Record Encryption now uses SHA-256 as its hash digest algorithm.
|
|
||||||
#
|
|
||||||
# There are 3 scenarios to consider.
|
|
||||||
#
|
|
||||||
# 1. If you have data encrypted with previous Rails versions, and you have
|
|
||||||
# +config.active_support.key_generator_hash_digest_class+ configured as SHA1 (the default
|
|
||||||
# before Rails 7.0), you need to configure SHA-1 for Active Record Encryption too:
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA1
|
|
||||||
#
|
|
||||||
# 2. If you have +config.active_support.key_generator_hash_digest_class+ configured as SHA256 (the new default
|
|
||||||
# in 7.0), then you need to configure SHA-256 for Active Record Encryption:
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.encryption.hash_digest_class = OpenSSL::Digest::SHA256
|
|
||||||
#
|
|
||||||
# 3. If you don't currently have data encrypted with Active Record encryption, you can disable this setting to
|
|
||||||
# configure the default behavior starting 7.1+:
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.encryption.support_sha1_for_non_deterministic_encryption = false
|
|
||||||
|
|
||||||
###
|
|
||||||
# No longer run after_commit callbacks on the first of multiple Active Record
|
|
||||||
# instances to save changes to the same database row within a transaction.
|
|
||||||
# Instead, run these callbacks on the instance most likely to have internal
|
|
||||||
# state which matches what was committed to the database, typically the last
|
|
||||||
# instance to save.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.run_commit_callbacks_on_first_saved_instances_in_transaction = false
|
|
||||||
|
|
||||||
###
|
|
||||||
# Configures SQLite with a strict strings mode, which disables double-quoted string literals.
|
|
||||||
#
|
|
||||||
# SQLite has some quirks around double-quoted string literals.
|
|
||||||
# It first tries to consider double-quoted strings as identifier names, but if they don't exist
|
|
||||||
# it then considers them as string literals. Because of this, typos can silently go unnoticed.
|
|
||||||
# For example, it is possible to create an index for a non existing column.
|
|
||||||
# See https://www.sqlite.org/quirks.html#double_quoted_string_literals_are_accepted for more details.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.sqlite3_adapter_strict_strings_by_default = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Disable deprecated singular associations names.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.allow_deprecated_singular_associations_name = false
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable the Active Job `BigDecimal` argument serializer, which guarantees
|
|
||||||
# roundtripping. Without this serializer, some queue adapters may serialize
|
|
||||||
# `BigDecimal` arguments as simple (non-roundtrippable) strings.
|
|
||||||
#
|
|
||||||
# When deploying an application with multiple replicas, old (pre-Rails 7.1)
|
|
||||||
# replicas will not be able to deserialize `BigDecimal` arguments from this
|
|
||||||
# serializer. Therefore, this setting should only be enabled after all replicas
|
|
||||||
# have been successfully upgraded to Rails 7.1.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_job.use_big_decimal_serializer = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Specify if an `ArgumentError` should be raised if `Rails.cache` `fetch` or
|
|
||||||
# `write` are given an invalid `expires_at` or `expires_in` time.
|
|
||||||
# Options are `true`, and `false`. If `false`, the exception will be reported
|
|
||||||
# as `handled` and logged instead.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_support.raise_on_invalid_cache_expiration_time = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Specify whether Query Logs will format tags using the SQLCommenter format
|
|
||||||
# (https://open-telemetry.github.io/opentelemetry-sqlcommenter/), or using the legacy format.
|
|
||||||
# Options are `:legacy` and `:sqlcommenter`.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.query_log_tags_format = :sqlcommenter
|
|
||||||
|
|
||||||
###
|
|
||||||
# Specify the default serializer used by `MessageEncryptor` and `MessageVerifier`
|
|
||||||
# instances.
|
|
||||||
#
|
|
||||||
# The legacy default is `:marshal`, which is a potential vector for
|
|
||||||
# deserialization attacks in cases where a message signing secret has been
|
|
||||||
# leaked.
|
|
||||||
#
|
|
||||||
# In Rails 7.1, the new default is `:json_allow_marshal` which serializes and
|
|
||||||
# deserializes with `ActiveSupport::JSON`, but can fall back to deserializing
|
|
||||||
# with `Marshal` so that legacy messages can still be read.
|
|
||||||
#
|
|
||||||
# In Rails 7.2, the default will become `:json` which serializes and
|
|
||||||
# deserializes with `ActiveSupport::JSON` only.
|
|
||||||
#
|
|
||||||
# Alternatively, you can choose `:message_pack` or `:message_pack_allow_marshal`,
|
|
||||||
# which serialize with `ActiveSupport::MessagePack`. `ActiveSupport::MessagePack`
|
|
||||||
# can roundtrip some Ruby types that are not supported by JSON, and may provide
|
|
||||||
# improved performance, but it requires the `msgpack` gem.
|
|
||||||
#
|
|
||||||
# For more information, see
|
|
||||||
# https://guides.rubyonrails.org/v7.1/configuring.html#config-active-support-message-serializer
|
|
||||||
#
|
|
||||||
# If you are performing a rolling deploy of a Rails 7.1 upgrade, wherein servers
|
|
||||||
# that have not yet been upgraded must be able to read messages from upgraded
|
|
||||||
# servers, first deploy without changing the serializer, then set the serializer
|
|
||||||
# in a subsequent deploy.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_support.message_serializer = :json_allow_marshal
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable a performance optimization that serializes message data and metadata
|
|
||||||
# together. This changes the message format, so messages serialized this way
|
|
||||||
# cannot be read by older versions of Rails. However, messages that use the old
|
|
||||||
# format can still be read, regardless of whether this optimization is enabled.
|
|
||||||
#
|
|
||||||
# To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
|
|
||||||
# not yet been upgraded must be able to read messages from upgraded servers,
|
|
||||||
# leave this optimization off on the first deploy, then enable it on a
|
|
||||||
# subsequent deploy.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_support.use_message_serializer_for_metadata = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Set the maximum size for Rails log files.
|
|
||||||
#
|
|
||||||
# `config.load_defaults 7.1` does not set this value for environments other than
|
|
||||||
# development and test.
|
|
||||||
#++
|
|
||||||
# if Rails.env.local?
|
|
||||||
# Rails.application.config.log_file_size = 100 * 1024 * 1024
|
|
||||||
# end
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable raising on assignment to attr_readonly attributes. The previous
|
|
||||||
# behavior would allow assignment but silently not persist changes to the
|
|
||||||
# database.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.raise_on_assign_to_attr_readonly = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable validating only parent-related columns for presence when the parent is mandatory.
|
|
||||||
# The previous behavior was to validate the presence of the parent record, which performed an extra query
|
|
||||||
# to get the parent every time the child record was updated, even when parent has not changed.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.belongs_to_required_validates_foreign_key = false
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable precompilation of `config.filter_parameters`. Precompilation can
|
|
||||||
# improve filtering performance, depending on the quantity and types of filters.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.precompile_filter_parameters = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable before_committed! callbacks on all enrolled records in a transaction.
|
|
||||||
# The previous behavior was to only run the callbacks on the first copy of a record
|
|
||||||
# if there were multiple copies of the same record enrolled in the transaction.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.before_committed_on_all_records = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Disable automatic column serialization into YAML.
|
|
||||||
# To keep the historic behavior, you can set it to `YAML`, however it is
|
|
||||||
# recommended to explicitly define the serialization method for each column
|
|
||||||
# rather than to rely on a global default.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.default_column_serializer = nil
|
|
||||||
|
|
||||||
###
|
|
||||||
# Enable a performance optimization that serializes Active Record models
|
|
||||||
# in a faster and more compact way.
|
|
||||||
#
|
|
||||||
# To perform a rolling deploy of a Rails 7.1 upgrade, wherein servers that have
|
|
||||||
# not yet been upgraded must be able to read caches from upgraded servers,
|
|
||||||
# leave this optimization off on the first deploy, then enable it on a
|
|
||||||
# subsequent deploy.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.marshalling_format_version = 7.1
|
|
||||||
|
|
||||||
###
|
|
||||||
# Run `after_commit` and `after_*_commit` callbacks in the order they are defined in a model.
|
|
||||||
# This matches the behaviour of all other callbacks.
|
|
||||||
# In previous versions of Rails, they ran in the inverse order.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.run_after_transaction_callbacks_in_order_defined = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Whether a `transaction` block is committed or rolled back when exited via `return`, `break` or `throw`.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.commit_transaction_on_non_local_return = true
|
|
||||||
|
|
||||||
###
|
|
||||||
# Controls when to generate a value for <tt>has_secure_token</tt> declarations.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.active_record.generate_secure_token_on = :initialize
|
|
||||||
|
|
||||||
###
|
|
||||||
# ** Please read carefully, this must be configured in config/application.rb **
|
|
||||||
#
|
|
||||||
# Change the format of the cache entry.
|
|
||||||
#
|
|
||||||
# Changing this default means that all new cache entries added to the cache
|
|
||||||
# will have a different format that is not supported by Rails 7.0
|
|
||||||
# applications.
|
|
||||||
#
|
|
||||||
# Only change this value after your application is fully deployed to Rails 7.1
|
|
||||||
# and you have no plans to rollback.
|
|
||||||
# When you're ready to change format, add this to `config/application.rb` (NOT
|
|
||||||
# this file):
|
|
||||||
# config.active_support.cache_format_version = 7.1
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
# Configure Action View to use HTML5 standards-compliant sanitizers when they are supported on your
|
|
||||||
# platform.
|
|
||||||
#
|
|
||||||
# `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action View to use HTML5-compliant
|
|
||||||
# sanitizers if they are supported, else fall back to HTML4 sanitizers.
|
|
||||||
#
|
|
||||||
# In previous versions of Rails, Action View always used `Rails::HTML4::Sanitizer` as its vendor.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.action_view.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
# Configure Action Text to use an HTML5 standards-compliant sanitizer when it is supported on your
|
|
||||||
# platform.
|
|
||||||
#
|
|
||||||
# `Rails::HTML::Sanitizer.best_supported_vendor` will cause Action Text to use HTML5-compliant
|
|
||||||
# sanitizers if they are supported, else fall back to HTML4 sanitizers.
|
|
||||||
#
|
|
||||||
# In previous versions of Rails, Action Text always used `Rails::HTML4::Sanitizer` as its vendor.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.action_text.sanitizer_vendor = Rails::HTML::Sanitizer.best_supported_vendor
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
# Configure the log level used by the DebugExceptions middleware when logging
|
|
||||||
# uncaught exceptions during requests.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.action_dispatch.debug_exception_log_level = :error
|
|
||||||
|
|
||||||
|
|
||||||
###
|
|
||||||
# Configure the test helpers in Action View, Action Dispatch, and rails-dom-testing to use HTML5
|
|
||||||
# parsers.
|
|
||||||
#
|
|
||||||
# Nokogiri::HTML5 isn't supported on JRuby, so JRuby applications must set this to :html4.
|
|
||||||
#
|
|
||||||
# In previous versions of Rails, these test helpers always used an HTML4 parser.
|
|
||||||
#++
|
|
||||||
# Rails.application.config.dom_testing_default_html_version = :html5
|
|
@ -1,13 +0,0 @@
|
|||||||
# Be sure to restart your server when you modify this file.
|
|
||||||
|
|
||||||
# Define an application-wide HTTP permissions policy. For further
|
|
||||||
# information see: https://developers.google.com/web/updates/2018/06/feature-policy
|
|
||||||
|
|
||||||
# Rails.application.config.permissions_policy do |policy|
|
|
||||||
# policy.camera :none
|
|
||||||
# policy.gyroscope :none
|
|
||||||
# policy.microphone :none
|
|
||||||
# policy.usb :none
|
|
||||||
# policy.fullscreen :self
|
|
||||||
# policy.payment :self, "https://secure.example.com"
|
|
||||||
# end
|
|
@ -15,6 +15,77 @@ bg:
|
|||||||
change_feedback_for: Преоценете „%{title}“
|
change_feedback_for: Преоценете „%{title}“
|
||||||
by: от %{authors}
|
by: от %{authors}
|
||||||
feedback_incentive: Бихме били благодарни, ако споделите с нас мнението си за конференцията и събитията в нея.
|
feedback_incentive: Бихме били благодарни, ако споделите с нас мнението си за конференцията и събитията в нея.
|
||||||
|
management:
|
||||||
|
volunteers:
|
||||||
|
index:
|
||||||
|
all: Всички
|
||||||
|
profile: Профил
|
||||||
|
total: "%{current} от общо %{total}"
|
||||||
|
personal_profiles:
|
||||||
|
index:
|
||||||
|
no_profile: 'Този потребител няма въведен профил за текущата конференция.'
|
||||||
|
total: "%{current} от общо %{total}"
|
||||||
|
create:
|
||||||
|
successfully_created: "Профилът беше създаден успешно."
|
||||||
|
show:
|
||||||
|
contacts: "Данни за контакт"
|
||||||
|
event_propositions: "Предложения за събития"
|
||||||
|
conferences:
|
||||||
|
update_vote_data:
|
||||||
|
vote_data_successfully_updated: "Резултатите от гласуването бяха обновени успешно"
|
||||||
|
error_during_vote_data_save: "Възникна грешка при запазването на резултатите от гласуването"
|
||||||
|
error_during_connection_with_voting_endpoint: "Възникна грешка при опит за изтегляне на резултатите от гласуването: %{error}"
|
||||||
|
vote_results:
|
||||||
|
back_to: "Обратно към %{conference}"
|
||||||
|
vote_results: "Резултати от гласуването"
|
||||||
|
vote_data_never_updated: "Резулатите от гласуването не са изтеглени"
|
||||||
|
voting_results: "Резултати от гласуването"
|
||||||
|
vote_data_updated_at: "последно обновяване %{updated_at}"
|
||||||
|
vote_ratio: "%{votes} от общо %{total_votes} гласа"
|
||||||
|
fetch_vote_results: "Обнови резултатите от гласуването"
|
||||||
|
percent: "%"
|
||||||
|
rank: "Позиция"
|
||||||
|
unranked: "Няма данни"
|
||||||
|
export: Експорт
|
||||||
|
show:
|
||||||
|
full_vote_results: "Пълни резултати от гласуването"
|
||||||
|
vote_data_never_updated: "Резулатите от гласуването не са изтеглени"
|
||||||
|
voting_results: "Резултати от гласуването"
|
||||||
|
vote_data_updated_at: "последно обновяване %{updated_at}"
|
||||||
|
vote_ratio: "%{votes} от общо %{total_votes} гласа"
|
||||||
|
summary: 'Обобщение'
|
||||||
|
cfp_status: 'Състояние на CFP'
|
||||||
|
fetch_vote_results: "Обнови резултатите от гласуването"
|
||||||
|
percent: "%"
|
||||||
|
rank: "Позиция"
|
||||||
|
events:
|
||||||
|
conflicts:
|
||||||
|
conflicts: "Конфликти"
|
||||||
|
conflicts_of: "Конфликти на „%{event}“"
|
||||||
|
percent: "Процент"
|
||||||
|
hint_html: "Следващата таблица илюстрира какъв процент от посетителите, изявили интерес да присъстват на <strong>„%{event}“</strong>, биха желали да присъстват на всяко от посочените събития."
|
||||||
|
edit:
|
||||||
|
edit: "Редакция на %{event_type} „%{event_title}“"
|
||||||
|
speaker:
|
||||||
|
no_profile: 'Този потребител няма въведени профили в системата.'
|
||||||
|
profile_from: "профил от %{conference}"
|
||||||
|
create_profile: "Създай нов профил"
|
||||||
|
previous_event_propositions: 'Предишни предложения за събития'
|
||||||
|
contacts: "Информация за контакт"
|
||||||
|
show:
|
||||||
|
between_approved_events: "Между настоящото и одобрените събития"
|
||||||
|
no_approved_events: "Няма достатъчно одобрени събития"
|
||||||
|
rank: "Класиране"
|
||||||
|
review: "Преглед на %{event_type} „%{event_title}“"
|
||||||
|
conflicts: "Конфликти"
|
||||||
|
percent: "Процент"
|
||||||
|
index:
|
||||||
|
all: "Всички"
|
||||||
|
total: "%{current} от общо %{total}"
|
||||||
|
event:
|
||||||
|
create_profile: "Създай профил"
|
||||||
|
no_records:
|
||||||
|
no_records_found: 'Не бяха открити записи, които да отговарят на изискванията'
|
||||||
abstract: "Резюме"
|
abstract: "Резюме"
|
||||||
helpers:
|
helpers:
|
||||||
submit:
|
submit:
|
||||||
@ -118,10 +189,8 @@ bg:
|
|||||||
food_preferences: Предпочитана храна
|
food_preferences: Предпочитана храна
|
||||||
previous_experience: Предишен опит
|
previous_experience: Предишен опит
|
||||||
notes: Бележки
|
notes: Бележки
|
||||||
terms_accepted: Съгласен съм екипът да се свързва с мен
|
|
||||||
language: Език
|
language: Език
|
||||||
volunteer_team: Екип доброволци
|
volunteer_teams: Екипи доброволци
|
||||||
additional_volunteer_teams: Допълнителни екипи доброволци
|
|
||||||
track:
|
track:
|
||||||
color: "Цвят"
|
color: "Цвят"
|
||||||
description: "Описание"
|
description: "Описание"
|
||||||
@ -161,9 +230,7 @@ bg:
|
|||||||
attributes:
|
attributes:
|
||||||
picture:
|
picture:
|
||||||
invalid_content_type: "невалиден формат на снимката"
|
invalid_content_type: "невалиден формат на снимката"
|
||||||
volunteer_team:
|
volunteer_teams:
|
||||||
invalid_volunteer_team: "невалиден екип от доброволци"
|
|
||||||
additional_volunteer_teams:
|
|
||||||
invalid_volunteer_team: "невалиден екип от доброволци"
|
invalid_volunteer_team: "невалиден екип от доброволци"
|
||||||
models:
|
models:
|
||||||
feedback:
|
feedback:
|
||||||
@ -225,7 +292,7 @@ bg:
|
|||||||
did_not_get_confirmation: "Не сте получили инструкции за потвърждение?"
|
did_not_get_confirmation: "Не сте получили инструкции за потвърждение?"
|
||||||
did_not_get_unlock: "Не сте получили инструкции за отключване?"
|
did_not_get_unlock: "Не сте получили инструкции за отключване?"
|
||||||
do_not_want_pass_reset1: "Ако не желаете да смените паролата си, моля изтрийте това писмо."
|
do_not_want_pass_reset1: "Ако не желаете да смените паролата си, моля изтрийте това писмо."
|
||||||
do_not_want_pass_reset2: "Паролата ви няма да бъде променена, докато не кликнете горния линк и не въведете нова парола."
|
do_not_want_pass_reset2: "Паролата Ви няма да бъде променена, докато не кликнете горния линк и не въведете нова парола."
|
||||||
edit: "Редактирай"
|
edit: "Редактирай"
|
||||||
edit_speaker_profile: "Редакция на профил"
|
edit_speaker_profile: "Редакция на профил"
|
||||||
edit_talk: "Редакция на лекция"
|
edit_talk: "Редакция на лекция"
|
||||||
@ -237,14 +304,12 @@ bg:
|
|||||||
improbable_phone: "не е валиден телефонен номер"
|
improbable_phone: "не е валиден телефонен номер"
|
||||||
event_mailer:
|
event_mailer:
|
||||||
acceptance_notification:
|
acceptance_notification:
|
||||||
subject: "Предложението ви за провеждане на %{submission_type} „%{title}“ на %{conference} е одобрено"
|
subject: "Предложението Ви за провеждане на %{submission_type} „%{title}“ на %{conference} е одобрено"
|
||||||
rejection_notification:
|
rejection_notification:
|
||||||
subject: "Предложението ви за %{submission_type} „%{title}“ на %{conference} не е одобрено"
|
subject: "Предложението Ви за %{submission_type} „%{title}“ на %{conference} не е одобрено"
|
||||||
volunteer_mailer:
|
volunteer_mailer:
|
||||||
success_notification:
|
success_notification:
|
||||||
subject: "Кандидатурата ви за доброволец за %{conference_name} беше получена"
|
subject: "Кандидатурата Ви за доброволец за %{conference_name} беше получена"
|
||||||
email_confirmation:
|
|
||||||
subject: "Потвърдете e-mail адреса си, за да се включите в %{conference_name}"
|
|
||||||
event_states:
|
event_states:
|
||||||
approved:
|
approved:
|
||||||
one: "Одобрено"
|
one: "Одобрено"
|
||||||
@ -264,9 +329,9 @@ bg:
|
|||||||
expected_validation: "Очаква се потвърждение на: %{email}"
|
expected_validation: "Очаква се потвърждение на: %{email}"
|
||||||
hello: "Здравейте, %{name}"
|
hello: "Здравейте, %{name}"
|
||||||
home: "Начало"
|
home: "Начало"
|
||||||
home_title: "%{conference} — сподели знания, предложи лекция"
|
home_title: "%{conference} - зов за лектори"
|
||||||
lecture_was_successfully_confirmed: "Лекцията беше потвърдена успешно"
|
lecture_was_successfully_confirmed: "Лекцията беше потвърдена успешно"
|
||||||
license_notice: "Имайте предвид, че презентациите ви впоследствие ще бъдат публикувани с лиценз CC-BY-ND (Creative Commons – Attribution – No derivatives)."
|
license_notice: "Имайте предвид, че презентациите Ви впоследствие ще бъдат публикувани с лиценз CC-BY-ND (Creative Commons – Attribution – No derivatives)."
|
||||||
locales:
|
locales:
|
||||||
bg: "Български"
|
bg: "Български"
|
||||||
en: Английски
|
en: Английски
|
||||||
@ -304,7 +369,7 @@ bg:
|
|||||||
sign_up: "Регистрация"
|
sign_up: "Регистрация"
|
||||||
unhappy: "Не Сте щастливи?"
|
unhappy: "Не Сте щастливи?"
|
||||||
update: "Промени"
|
update: "Промени"
|
||||||
we_need_your_current_password: "нуждаем се от сегашната ви парола, за да потвърдим промените"
|
we_need_your_current_password: "нуждаем се от сегашната Ви парола, за да потвърдим промените"
|
||||||
resend_instructions_btn: "Изпрати отново инструкциите"
|
resend_instructions_btn: "Изпрати отново инструкциите"
|
||||||
resend_instructions_header: "Повторно изпращане на инструкции за потвърждаване на акаунт"
|
resend_instructions_header: "Повторно изпращане на инструкции за потвърждаване на акаунт"
|
||||||
resend_unlock_instructions_title: "Изпрати отново инструкции за отключване"
|
resend_unlock_instructions_title: "Изпрати отново инструкции за отключване"
|
||||||
@ -352,30 +417,29 @@ bg:
|
|||||||
name: "Име на потока"
|
name: "Име на потока"
|
||||||
event:
|
event:
|
||||||
abstract: "Резюме на предложението, което да може да бъде представено на посетителите (1 абзац)"
|
abstract: "Резюме на предложението, което да може да бъде представено на посетителите (1 абзац)"
|
||||||
agreement: "Отбележете съгласни ли сте с това събитието ви да бъде записано и публикувано под лиценз CC-BY-ND (Creative Commons – Attribution – No Derivatives)"
|
agreement: "Отбележете съгласни ли сте с това събитието Ви да бъде записано и публикувано под лиценз CC-BY-ND (Creative Commons – Attribution – No Derivatives)"
|
||||||
description: "Подробно описание на предложението (няколко абзаца)"
|
description: "Подробно описание на предложението (няколко абзаца)"
|
||||||
language: ""
|
language: ""
|
||||||
length: "Продължителността на събитието (в минути). Продължителността на %{type} е между %{min} и %{max} минути, заедно с въпросите"
|
length: "Продължителността на събитието (в минути). Продължителността на %{type} е между %{min} и %{max} минути, заедно с въпросите"
|
||||||
notes: "Допълнителни бележки, които искате да споделите с организаторския екип"
|
notes: "Допълнителни бележки, които искате да споделите с организаторския екип"
|
||||||
subtitle: ""
|
subtitle: ""
|
||||||
title: ""
|
title: ""
|
||||||
track: "Потокът от лекции, в който искате да попадне предложението ви"
|
track: "Потокът от лекции, в който искате да попадне предложението Ви"
|
||||||
personal_profile:
|
personal_profile:
|
||||||
biography: "Опишете се с няколко изречения, говорейки за себе си в трето лице :)"
|
biography: "Опишете се с няколко изречения, говорейки за себе си в трето лице :)"
|
||||||
github: "Потребителското ви име в Github"
|
github: "Потребителското Ви име в Github"
|
||||||
mobile_phone: "Мобилен телефон, който ще бъде видим само за организаторите"
|
mobile_phone: "Мобилен телефон, който ще бъде видим само за организаторите"
|
||||||
organisation: "Организацията, която представлявате"
|
organisation: "Организацията, която представлявате"
|
||||||
picture: "Ваша снимка"
|
picture: "Ваша снимка"
|
||||||
public_email: E-mail адрес, който ще бъде видим за посетителите
|
public_email: E-mail адрес, който ще бъде видим за посетителите
|
||||||
twitter: "Потребителското ви име в Twitter"
|
twitter: "Потребителското Ви име в Twitter"
|
||||||
volunteer:
|
volunteer:
|
||||||
name: "Имайте предвид, че това име ще бъде изписано на грамотата ви за участие в конференцията"
|
email: "Е-mail адресът Ви, който ще бъде видим само от организаторите"
|
||||||
email: "Е-mail адресът ви, който ще бъде видим само от организаторите"
|
phone: "Мобилният Ви телефон, който ще бъде видим само за организаторите"
|
||||||
phone: "Мобилният ви телефон, който ще бъде видим само за организаторите"
|
|
||||||
picture: "Ваша снимка в jpeg, png или gif формат"
|
picture: "Ваша снимка в jpeg, png или gif формат"
|
||||||
volunteer_team: "Доброволческият екип, от които искате да бъдете част. Подробни описания на екипите можете да намерите <a href=\"/volunteer_teams\" target=\"_blank\">тук</a>. Ако желаете да участвате в повече от един екип, споменете това в полето бележка."
|
volunteer_teams: "Доброволческите екипи, от които искате да сте част. Подробни описания на екипите можете да намерите <a href=\"/volunteer_teams\" target=\"_blank\">тук</a>"
|
||||||
user:
|
user:
|
||||||
email: e-mail адресът ви. Ще бъде видим само от организаторите
|
email: e-mail адресът Ви. Ще бъде видим само от организаторите
|
||||||
password: "Парола с дължина между 8 и 128 символа"
|
password: "Парола с дължина между 8 и 128 символа"
|
||||||
password_confirmation: "Отново въведената отгоре парола"
|
password_confirmation: "Отново въведената отгоре парола"
|
||||||
'no': "Не"
|
'no': "Не"
|
||||||
@ -383,7 +447,7 @@ bg:
|
|||||||
mark: "*"
|
mark: "*"
|
||||||
text: "Задължително поле"
|
text: "Задължително поле"
|
||||||
'yes': "Да"
|
'yes': "Да"
|
||||||
someone_requested_passreset: "Някой поиска линк за промяна на парола на акаунта ви. Паролата може да бъде променена от линкът отдолу."
|
someone_requested_passreset: "Някой поиска линк за промяна на парола на акаунта Ви. Паролата може да бъде променена от линкът отдолу."
|
||||||
speaker_profile: "Личен профил"
|
speaker_profile: "Личен профил"
|
||||||
submit_talk_header: "Предложи нова лекция"
|
submit_talk_header: "Предложи нова лекция"
|
||||||
suggestion_and_speaker_count: "%{suggestions} предложения от %{speakers} лектори"
|
suggestion_and_speaker_count: "%{suggestions} предложения от %{speakers} лектори"
|
||||||
@ -399,34 +463,31 @@ bg:
|
|||||||
see_details: "Повече информация"
|
see_details: "Повече информация"
|
||||||
events:
|
events:
|
||||||
edit_event: "Редактиране на %{event_type} %{title}"
|
edit_event: "Редактиране на %{event_type} %{title}"
|
||||||
event_successfully_created: "Предложението ви за %{event_type} беше създадено успешно"
|
event_successfully_created: "Предложението Ви за %{event_type} беше създадено успешно"
|
||||||
event_successfully_updated: "Предложението ви за %{event_type} беше обновено успешно"
|
event_successfully_updated: "Предложението Ви за %{event_type} беше обновено успешно"
|
||||||
successfully_confirmed: "Предложението ви за %{event_type} беше потвърдено успешно"
|
successfully_confirmed: "Предложението Ви за %{event_type} беше потвърдено успешно"
|
||||||
error_on_confirmation: "Възникна грешка при потвърждението на предложението ви за %{event_type}"
|
error_on_confirmation: "Възникна грешка при потвърждението на предложението Ви за %{event_type}"
|
||||||
no_events: "Все още не сте предложили събитие"
|
no_events: "Все още не сте предложили събитие"
|
||||||
submit_event: "Предлагане на %{event_type}"
|
submit_event: "Предлагане на %{event_type}"
|
||||||
navigation:
|
navigation:
|
||||||
my_submissions: "Моите предложения"
|
my_submissions: "Моите предложения"
|
||||||
personal_profiles:
|
personal_profiles:
|
||||||
successfully_created: "Профилът ви беше създаден успешно"
|
successfully_created: "Профилът Ви беше създаден успешно"
|
||||||
successfully_updated: "Профилът ви беше обновен успешно"
|
successfully_updated: "Профилът Ви беше обновен успешно"
|
||||||
user:
|
user:
|
||||||
info: "Информация за потребител"
|
info: "Информация за потребител"
|
||||||
welcome:
|
welcome:
|
||||||
submit_event: "Предложи %{event_type}"
|
submit_event: "Предложи %{event_type}"
|
||||||
volunteers:
|
volunteers:
|
||||||
email_not_confirmed: Вашият e-mail адрес не е потвърден. Моля, проверете електронната си поща и кликнете на линка от полученото писмо за потвърждение.
|
|
||||||
email_confirmed_successfully: Успешно потвърдихте e-mail адреса си!
|
|
||||||
email_confirmation_error: Възникна грешка при опит за потвърждаване на e-mail адреса ви.
|
|
||||||
new_volunteer_title: Кандидатствай за доброволец
|
new_volunteer_title: Кандидатствай за доброволец
|
||||||
edit_volunteer_title: "Кандидатура за доброволец на %{name}"
|
edit_volunteer_title: "Кандидатура за доброволец на %{name}"
|
||||||
apply: Кандидатствай за доброволец
|
apply: Кандидатствай за доброволец
|
||||||
withdraw_application: Оттегли кандидатурата си
|
withdraw_application: Оттегли кандидатурата си
|
||||||
successful_application: "Успешно изпратихте кандидатурата си"
|
successful_application: "Успешно изпратихте кандидатурата си"
|
||||||
successful_application_edit: "Успешно редактирахте кандидатурата си"
|
successful_application_edit: "Успешно редактирахте кандидатурата си"
|
||||||
error_occurred_while_applying: "Възникна грешка и кандидатурата ви не беше изпратена"
|
error_occurred_while_applying: "Възникна грешка и кандидатурата Ви не беше изпратена"
|
||||||
you_successfully_retracted_your_application_for: "Успешно оттеглихте кандидатурата си“"
|
you_successfully_retracted_your_application_for: "Успешно оттеглихте кандидатурата си“"
|
||||||
welcome: "Добре дошли, %{name}"
|
welcome: "Добре дошли, %{name}"
|
||||||
what_we_ask: "Бихме искали да получим предложенията ви за лекции, уъркшопи и щандове до %{date}г. Категориите, които имаме тази година, са:"
|
what_we_ask: "Бихме искали да получим предложенията Ви за лекции и уъркшопи, принадлежащи към следните категории, до %{date}г.:"
|
||||||
workshop_was_successfully_confirmed: "Уъркшопът беше потвърден успешно"
|
workshop_was_successfully_confirmed: "Уъркшопът беше потвърден успешно"
|
||||||
workshops: "Уъркшопи"
|
workshops: "Уъркшопи"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user