Compare commits
No commits in common. "master" and "depfu/update/temple-0.10.4" have entirely different histories.
master
...
depfu/upda
76 changed files with 353 additions and 352 deletions
|
|
@ -1 +1 @@
|
||||||
3.4.10
|
3.4.5
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,20 @@
|
||||||
FROM registry.opensuse.org/opensuse/infrastructure/dale/containers/osem/base:latest
|
FROM registry.opensuse.org/opensuse/infrastructure/dale/containers/osem/base:latest
|
||||||
|
|
||||||
EXPOSE 5000
|
|
||||||
|
|
||||||
ENV RAILS_ENV=production
|
ENV RAILS_ENV=production
|
||||||
ENV RAILS_SERVE_STATIC_FILES=true
|
|
||||||
|
|
||||||
# Add our files
|
# Add our files
|
||||||
COPY --chown=1000:1000 . /osem/
|
COPY --chown=1000:1000 . /osem/
|
||||||
|
|
||||||
# Install foreman
|
# Install bundler & foreman
|
||||||
RUN gem install foreman
|
RUN gem install bundler -v "$(grep -A 1 "BUNDLED WITH" /osem/Gemfile.lock | tail -n 1)"; \
|
||||||
|
gem install foreman
|
||||||
|
|
||||||
USER osem
|
USER osem
|
||||||
WORKDIR /osem/
|
WORKDIR /osem/
|
||||||
|
|
||||||
RUN rm -rf /osem/public/system/sponsors; mkdir -p /osem/public/system/sponsors; \
|
|
||||||
rm -rf /osem/public/assets; mkdir -p /osem/public/assets; \
|
|
||||||
rm -rf /osem/log; mkdir -p /osem/public/assets
|
|
||||||
|
|
||||||
# Install our bundle
|
# Install our bundle
|
||||||
RUN bundle config set --local without 'test development'; \
|
RUN bundle config set --local without 'test development'
|
||||||
bundle config set --local path 'vendor/bundle'; \
|
RUN bundle install --jobs=3 --retry=3
|
||||||
bundle config build.nokogiri --use-system-libraries; \
|
|
||||||
bundle install --jobs=4 --retry=3
|
|
||||||
|
|
||||||
# Generate assets
|
# Generate assets
|
||||||
RUN bundle exec rake assets:precompile
|
RUN bundle exec rake assets:precompile
|
||||||
|
|
|
||||||
4
Gemfile
4
Gemfile
|
|
@ -183,8 +183,6 @@ gem 'sprockets-rails'
|
||||||
# for multiple speakers select on proposal/event forms
|
# for multiple speakers select on proposal/event forms
|
||||||
gem 'selectize-rails'
|
gem 'selectize-rails'
|
||||||
|
|
||||||
# Pin to solve https://github.com/mperham/connection_pool/issues/212
|
|
||||||
gem "connection_pool", "< 3"
|
|
||||||
# memcached binary connector
|
# memcached binary connector
|
||||||
gem 'dalli'
|
gem 'dalli'
|
||||||
|
|
||||||
|
|
@ -195,7 +193,7 @@ gem 'icalendar'
|
||||||
gem 'lograge'
|
gem 'lograge'
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
# for static code analysis
|
# for static code analisys
|
||||||
gem 'rubocop', require: false
|
gem 'rubocop', require: false
|
||||||
gem 'rubocop-rspec', require: false
|
gem 'rubocop-rspec', require: false
|
||||||
gem 'rubocop-rails', require: false
|
gem 'rubocop-rails', require: false
|
||||||
|
|
|
||||||
410
Gemfile.lock
410
Gemfile.lock
|
|
@ -2,73 +2,71 @@ GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
Ascii85 (2.0.1)
|
Ascii85 (2.0.1)
|
||||||
actioncable (7.2.3)
|
actioncable (7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
zeitwerk (~> 2.6)
|
zeitwerk (~> 2.6)
|
||||||
actionmailbox (7.2.3)
|
actionmailbox (7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
activejob (= 7.2.3)
|
activejob (= 7.2.2.1)
|
||||||
activerecord (= 7.2.3)
|
activerecord (= 7.2.2.1)
|
||||||
activestorage (= 7.2.3)
|
activestorage (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
mail (>= 2.8.0)
|
mail (>= 2.8.0)
|
||||||
actionmailer (7.2.3)
|
actionmailer (7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
actionview (= 7.2.3)
|
actionview (= 7.2.2.1)
|
||||||
activejob (= 7.2.3)
|
activejob (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
mail (>= 2.8.0)
|
mail (>= 2.8.0)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.2)
|
||||||
actionpack (7.2.3)
|
actionpack (7.2.2.1)
|
||||||
actionview (= 7.2.3)
|
actionview (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
cgi
|
|
||||||
nokogiri (>= 1.8.5)
|
nokogiri (>= 1.8.5)
|
||||||
racc
|
racc
|
||||||
rack (>= 2.2.4, < 3.3)
|
rack (>= 2.2.4, < 3.2)
|
||||||
rack-session (>= 1.0.1)
|
rack-session (>= 1.0.1)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.2)
|
||||||
rails-html-sanitizer (~> 1.6)
|
rails-html-sanitizer (~> 1.6)
|
||||||
useragent (~> 0.16)
|
useragent (~> 0.16)
|
||||||
actiontext (7.2.3)
|
actiontext (7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
activerecord (= 7.2.3)
|
activerecord (= 7.2.2.1)
|
||||||
activestorage (= 7.2.3)
|
activestorage (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
globalid (>= 0.6.0)
|
globalid (>= 0.6.0)
|
||||||
nokogiri (>= 1.8.5)
|
nokogiri (>= 1.8.5)
|
||||||
actionview (7.2.3)
|
actionview (7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
cgi
|
|
||||||
erubi (~> 1.11)
|
erubi (~> 1.11)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.2)
|
||||||
rails-html-sanitizer (~> 1.6)
|
rails-html-sanitizer (~> 1.6)
|
||||||
active_model_serializers (0.10.16)
|
active_model_serializers (0.10.15)
|
||||||
actionpack (>= 4.1)
|
actionpack (>= 4.1)
|
||||||
activemodel (>= 4.1)
|
activemodel (>= 4.1)
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
activejob (7.2.3)
|
activejob (7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (7.2.3)
|
activemodel (7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
activerecord (7.2.3)
|
activerecord (7.2.2.1)
|
||||||
activemodel (= 7.2.3)
|
activemodel (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
timeout (>= 0.4.0)
|
timeout (>= 0.4.0)
|
||||||
activestorage (7.2.3)
|
activestorage (7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
activejob (= 7.2.3)
|
activejob (= 7.2.2.1)
|
||||||
activerecord (= 7.2.3)
|
activerecord (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
marcel (~> 1.0)
|
marcel (~> 1.0)
|
||||||
activesupport (7.2.3)
|
activesupport (7.2.2.1)
|
||||||
base64
|
base64
|
||||||
benchmark (>= 0.3)
|
benchmark (>= 0.3)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
|
|
@ -84,37 +82,32 @@ GEM
|
||||||
activerecord (>= 3.0)
|
activerecord (>= 3.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
awesome_nested_set (>= 2.0)
|
awesome_nested_set (>= 2.0)
|
||||||
acts_as_list (1.2.6)
|
acts_as_list (1.0.4)
|
||||||
activerecord (>= 6.1)
|
activerecord (>= 4.2)
|
||||||
activesupport (>= 6.1)
|
addressable (2.8.7)
|
||||||
addressable (2.9.0)
|
public_suffix (>= 2.0.2, < 7.0)
|
||||||
public_suffix (>= 2.0.2, < 8.0)
|
afm (0.2.2)
|
||||||
afm (1.0.0)
|
|
||||||
ajax-datatables-rails (1.3.1)
|
ajax-datatables-rails (1.3.1)
|
||||||
zeitwerk
|
zeitwerk
|
||||||
anonymous_loader (0.1.3)
|
archive-zip (0.12.0)
|
||||||
version_gem (~> 1.1, >= 1.1.14)
|
io-like (~> 0.3.0)
|
||||||
archive-zip (0.13.1)
|
|
||||||
io-like (~> 0.4.0)
|
|
||||||
ast (2.4.3)
|
ast (2.4.3)
|
||||||
auth-sanitizer (0.2.3)
|
|
||||||
version_gem (~> 1.1, >= 1.1.14)
|
|
||||||
autoprefixer-rails (10.3.1.0)
|
autoprefixer-rails (10.3.1.0)
|
||||||
execjs (~> 2)
|
execjs (~> 2)
|
||||||
awesome_nested_set (3.8.0)
|
awesome_nested_set (3.8.0)
|
||||||
activerecord (>= 4.0.0, < 8.1)
|
activerecord (>= 4.0.0, < 8.1)
|
||||||
base64 (0.3.0)
|
base64 (0.3.0)
|
||||||
bcrypt (3.1.22)
|
bcrypt (3.1.20)
|
||||||
benchmark (0.5.0)
|
benchmark (0.4.1)
|
||||||
bigdecimal (3.3.1)
|
bigdecimal (3.2.2)
|
||||||
bindex (0.8.1)
|
bindex (0.8.1)
|
||||||
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-switch-rails (3.3.3)
|
bootstrap-switch-rails (3.3.3)
|
||||||
builder (3.3.0)
|
builder (3.3.0)
|
||||||
byebug (12.0.0)
|
byebug (11.1.3)
|
||||||
cancancan (3.6.1)
|
cancancan (3.3.0)
|
||||||
capybara (3.40.0)
|
capybara (3.40.0)
|
||||||
addressable
|
addressable
|
||||||
matrix
|
matrix
|
||||||
|
|
@ -124,7 +117,7 @@ GEM
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
regexp_parser (>= 1.5, < 3.0)
|
regexp_parser (>= 1.5, < 3.0)
|
||||||
xpath (~> 3.2)
|
xpath (~> 3.2)
|
||||||
carrierwave (3.1.3)
|
carrierwave (3.1.2)
|
||||||
activemodel (>= 6.0.0)
|
activemodel (>= 6.0.0)
|
||||||
activesupport (>= 6.0.0)
|
activesupport (>= 6.0.0)
|
||||||
addressable (~> 2.6)
|
addressable (~> 2.6)
|
||||||
|
|
@ -137,16 +130,15 @@ GEM
|
||||||
fastimage
|
fastimage
|
||||||
case_transform (0.2)
|
case_transform (0.2)
|
||||||
activesupport
|
activesupport
|
||||||
caxlsx (4.3.0)
|
caxlsx (4.2.0)
|
||||||
htmlentities (~> 4.3, >= 4.3.4)
|
htmlentities (~> 4.3, >= 4.3.4)
|
||||||
marcel (~> 1.0)
|
marcel (~> 1.0)
|
||||||
nokogiri (~> 1.10, >= 1.10.4)
|
nokogiri (~> 1.10, >= 1.10.4)
|
||||||
rubyzip (>= 2.4, < 4)
|
rubyzip (>= 1.3.0, < 3)
|
||||||
caxlsx_rails (0.6.2)
|
caxlsx_rails (0.6.2)
|
||||||
actionpack (>= 3.1)
|
actionpack (>= 3.1)
|
||||||
caxlsx (>= 3.0)
|
caxlsx (>= 3.0)
|
||||||
cgi (0.5.1)
|
chartkick (4.1.3)
|
||||||
chartkick (5.2.1)
|
|
||||||
childprocess (5.1.0)
|
childprocess (5.1.0)
|
||||||
logger (~> 1.5)
|
logger (~> 1.5)
|
||||||
chronic (0.10.2)
|
chronic (0.10.2)
|
||||||
|
|
@ -158,13 +150,13 @@ GEM
|
||||||
faraday-multipart (~> 1.0, >= 1.0.4)
|
faraday-multipart (~> 1.0, >= 1.0.4)
|
||||||
ostruct
|
ostruct
|
||||||
cocoon (1.2.15)
|
cocoon (1.2.15)
|
||||||
concurrent-ruby (1.3.7)
|
concurrent-ruby (1.3.5)
|
||||||
connection_pool (2.5.5)
|
connection_pool (2.5.3)
|
||||||
countable-rails (0.0.1)
|
countable-rails (0.0.1)
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
crack (0.4.5)
|
crack (0.4.5)
|
||||||
rexml
|
rexml
|
||||||
crass (1.0.7)
|
crass (1.0.6)
|
||||||
csv (3.3.5)
|
csv (3.3.5)
|
||||||
daemons (1.4.0)
|
daemons (1.4.0)
|
||||||
dalli (2.7.11)
|
dalli (2.7.11)
|
||||||
|
|
@ -175,40 +167,39 @@ GEM
|
||||||
activerecord (>= 5.a)
|
activerecord (>= 5.a)
|
||||||
database_cleaner-core (~> 2.0)
|
database_cleaner-core (~> 2.0)
|
||||||
database_cleaner-core (2.0.1)
|
database_cleaner-core (2.0.1)
|
||||||
date (3.5.1)
|
date (3.4.1)
|
||||||
delayed_job (4.2.0)
|
delayed_job (4.1.13)
|
||||||
activesupport (>= 3.0, < 9.0)
|
activesupport (>= 3.0, < 9.0)
|
||||||
benchmark
|
|
||||||
logger
|
|
||||||
delayed_job_active_record (4.1.11)
|
delayed_job_active_record (4.1.11)
|
||||||
activerecord (>= 3.0, < 9.0)
|
activerecord (>= 3.0, < 9.0)
|
||||||
delayed_job (>= 3.0, < 5)
|
delayed_job (>= 3.0, < 5)
|
||||||
devise (5.0.4)
|
devise (4.9.4)
|
||||||
bcrypt (~> 3.0)
|
bcrypt (~> 3.0)
|
||||||
orm_adapter (~> 0.1)
|
orm_adapter (~> 0.1)
|
||||||
railties (>= 7.0)
|
railties (>= 4.1.0)
|
||||||
responders
|
responders
|
||||||
warden (~> 1.2.3)
|
warden (~> 1.2.3)
|
||||||
devise_ichain_authenticatable (0.3.2)
|
devise_ichain_authenticatable (0.3.2)
|
||||||
devise (>= 2.2)
|
devise (>= 2.2)
|
||||||
diff-lcs (1.6.2)
|
diff-lcs (1.6.2)
|
||||||
docile (1.4.1)
|
docile (1.4.1)
|
||||||
dotenv (3.2.0)
|
dotenv (3.1.8)
|
||||||
dotenv-rails (3.2.0)
|
dotenv-rails (3.1.8)
|
||||||
dotenv (= 3.2.0)
|
dotenv (= 3.1.8)
|
||||||
railties (>= 6.1)
|
railties (>= 6.1)
|
||||||
drb (2.2.3)
|
drb (2.2.3)
|
||||||
erb (6.0.6)
|
erb (5.0.2)
|
||||||
erubi (1.13.1)
|
erubi (1.13.1)
|
||||||
|
erubis (2.7.0)
|
||||||
execjs (2.8.1)
|
execjs (2.8.1)
|
||||||
factory_bot (6.5.6)
|
factory_bot (6.5.4)
|
||||||
activesupport (>= 6.1.0)
|
activesupport (>= 6.1.0)
|
||||||
factory_bot_rails (6.5.1)
|
factory_bot_rails (6.5.0)
|
||||||
factory_bot (~> 6.5)
|
factory_bot (~> 6.5)
|
||||||
railties (>= 6.1.0)
|
railties (>= 6.1.0)
|
||||||
faker (3.5.2)
|
faker (3.5.2)
|
||||||
i18n (>= 1.8.11, < 2)
|
i18n (>= 1.8.11, < 2)
|
||||||
faraday (2.14.3)
|
faraday (2.13.4)
|
||||||
faraday-net_http (>= 2.0, < 3.5)
|
faraday-net_http (>= 2.0, < 3.5)
|
||||||
json
|
json
|
||||||
logger
|
logger
|
||||||
|
|
@ -216,42 +207,46 @@ GEM
|
||||||
faraday (>= 1, < 3)
|
faraday (>= 1, < 3)
|
||||||
faraday-multipart (1.1.1)
|
faraday-multipart (1.1.1)
|
||||||
multipart-post (~> 2.0)
|
multipart-post (~> 2.0)
|
||||||
faraday-net_http (3.4.4)
|
faraday-net_http (3.4.1)
|
||||||
net-http (~> 0.5)
|
net-http (>= 0.5.0)
|
||||||
fastimage (2.4.1)
|
fastimage (2.4.0)
|
||||||
feature (1.4.0)
|
feature (1.4.0)
|
||||||
ffi (1.17.4)
|
ffi (1.17.2)
|
||||||
font-awesome-sass (6.7.2)
|
font-awesome-sass (6.7.2)
|
||||||
sassc (~> 2.0)
|
sassc (~> 2.0)
|
||||||
geckodriver-helper (0.24.0)
|
geckodriver-helper (0.24.0)
|
||||||
archive-zip (~> 0.7)
|
archive-zip (~> 0.7)
|
||||||
globalid (1.3.0)
|
globalid (1.2.1)
|
||||||
activesupport (>= 6.1)
|
activesupport (>= 6.1)
|
||||||
gravtastic (3.2.6)
|
gravtastic (3.2.6)
|
||||||
haml (6.3.0)
|
haml (5.2.2)
|
||||||
temple (>= 0.8.2)
|
temple (>= 0.8.0)
|
||||||
thor
|
|
||||||
tilt
|
tilt
|
||||||
haml-rails (2.1.0)
|
haml-rails (2.0.1)
|
||||||
actionpack (>= 5.1)
|
actionpack (>= 5.1)
|
||||||
activesupport (>= 5.1)
|
activesupport (>= 5.1)
|
||||||
haml (>= 4.0.6)
|
haml (>= 4.0.6, < 6.0)
|
||||||
|
html2haml (>= 1.0.1)
|
||||||
railties (>= 5.1)
|
railties (>= 5.1)
|
||||||
haml_lint (0.66.0)
|
haml_lint (0.37.1)
|
||||||
haml (>= 5.0)
|
haml (>= 4.0, < 5.3)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
rainbow
|
rainbow
|
||||||
rubocop (>= 1.0)
|
rubocop (>= 0.50.0)
|
||||||
sysexits (~> 1.1)
|
sysexits (~> 1.1)
|
||||||
hashdiff (1.2.1)
|
hashdiff (1.0.1)
|
||||||
hashery (2.1.2)
|
hashery (2.1.2)
|
||||||
hashie (5.1.0)
|
hashie (5.0.0)
|
||||||
logger
|
html2haml (2.2.0)
|
||||||
htmlentities (4.4.2)
|
erubis (~> 2.7.0)
|
||||||
i18n (1.14.8)
|
haml (>= 4.0, < 6)
|
||||||
|
nokogiri (>= 1.6.0)
|
||||||
|
ruby_parser (~> 3.5)
|
||||||
|
htmlentities (4.3.4)
|
||||||
|
i18n (1.14.7)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
i18n_data (0.13.0)
|
i18n_data (0.13.0)
|
||||||
icalendar (2.12.4)
|
icalendar (2.11.2)
|
||||||
base64
|
base64
|
||||||
ice_cube (~> 0.16)
|
ice_cube (~> 0.16)
|
||||||
logger
|
logger
|
||||||
|
|
@ -260,11 +255,10 @@ GEM
|
||||||
image_processing (1.14.0)
|
image_processing (1.14.0)
|
||||||
mini_magick (>= 4.9.5, < 6)
|
mini_magick (>= 4.9.5, < 6)
|
||||||
ruby-vips (>= 2.0.17, < 3)
|
ruby-vips (>= 2.0.17, < 3)
|
||||||
io-console (0.8.2)
|
io-console (0.8.1)
|
||||||
io-like (0.4.0)
|
io-like (0.3.1)
|
||||||
irb (1.18.0)
|
irb (1.15.2)
|
||||||
pp (>= 0.6.0)
|
pp (>= 0.6.0)
|
||||||
prism (>= 1.3.0)
|
|
||||||
rdoc (>= 4.0.0)
|
rdoc (>= 4.0.0)
|
||||||
reline (>= 0.4.2)
|
reline (>= 0.4.2)
|
||||||
iso-639 (0.3.8)
|
iso-639 (0.3.8)
|
||||||
|
|
@ -274,20 +268,19 @@ GEM
|
||||||
jquery-rails
|
jquery-rails
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
sass-rails
|
sass-rails
|
||||||
jquery-rails (4.6.1)
|
jquery-rails (4.4.0)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
jquery-ui-rails (6.0.1)
|
jquery-ui-rails (6.0.1)
|
||||||
railties (>= 3.2.16)
|
railties (>= 3.2.16)
|
||||||
json (2.21.2)
|
json (2.13.2)
|
||||||
json-schema (6.0.0)
|
json-schema (2.8.1)
|
||||||
addressable (~> 2.8)
|
addressable (>= 2.4)
|
||||||
bigdecimal (~> 3.1)
|
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
jwt (3.2.0)
|
jwt (3.1.2)
|
||||||
base64
|
base64
|
||||||
language_server-protocol (3.17.0.6)
|
language_server-protocol (3.17.0.5)
|
||||||
launchy (3.1.1)
|
launchy (3.1.1)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
childprocess (~> 5.0)
|
childprocess (~> 5.0)
|
||||||
|
|
@ -309,26 +302,24 @@ GEM
|
||||||
activesupport (>= 4)
|
activesupport (>= 4)
|
||||||
railties (>= 4)
|
railties (>= 4)
|
||||||
request_store (~> 1.0)
|
request_store (~> 1.0)
|
||||||
loofah (2.25.2)
|
loofah (2.24.1)
|
||||||
crass (~> 1.0.2)
|
crass (~> 1.0.2)
|
||||||
nokogiri (>= 1.12.0)
|
nokogiri (>= 1.12.0)
|
||||||
mail (2.9.1)
|
mail (2.8.1)
|
||||||
logger
|
|
||||||
mini_mime (>= 0.1.1)
|
mini_mime (>= 0.1.1)
|
||||||
net-imap
|
net-imap
|
||||||
net-pop
|
net-pop
|
||||||
net-smtp
|
net-smtp
|
||||||
marcel (1.0.4)
|
marcel (1.0.4)
|
||||||
matrix (0.4.3)
|
matrix (0.4.2)
|
||||||
mina (1.2.5)
|
mina (1.2.4)
|
||||||
|
open4 (~> 1.3.4)
|
||||||
rake
|
rake
|
||||||
mini_magick (5.3.2)
|
mini_magick (5.3.0)
|
||||||
logger
|
logger
|
||||||
mini_mime (1.1.5)
|
mini_mime (1.1.5)
|
||||||
mini_portile2 (2.8.9)
|
mini_portile2 (2.8.9)
|
||||||
minitest (6.0.6)
|
minitest (5.25.5)
|
||||||
drb (~> 2.0)
|
|
||||||
prism (~> 1.5)
|
|
||||||
monetize (1.9.4)
|
monetize (1.9.4)
|
||||||
money (~> 6.12)
|
money (~> 6.12)
|
||||||
money (6.13.8)
|
money (6.13.8)
|
||||||
|
|
@ -339,12 +330,12 @@ GEM
|
||||||
money (~> 6.13.2)
|
money (~> 6.13.2)
|
||||||
railties (>= 3.0)
|
railties (>= 3.0)
|
||||||
multi_json (1.17.0)
|
multi_json (1.17.0)
|
||||||
multi_xml (0.9.1)
|
multi_xml (0.7.2)
|
||||||
bigdecimal (>= 3.1, < 5)
|
bigdecimal (~> 3.1)
|
||||||
multipart-post (2.4.1)
|
multipart-post (2.4.1)
|
||||||
net-http (0.9.1)
|
net-http (0.6.0)
|
||||||
uri (>= 0.11.1)
|
uri
|
||||||
net-imap (0.6.6)
|
net-imap (0.5.9)
|
||||||
date
|
date
|
||||||
net-protocol
|
net-protocol
|
||||||
net-pop (0.1.2)
|
net-pop (0.1.2)
|
||||||
|
|
@ -353,25 +344,22 @@ GEM
|
||||||
timeout
|
timeout
|
||||||
net-smtp (0.5.1)
|
net-smtp (0.5.1)
|
||||||
net-protocol
|
net-protocol
|
||||||
next_rails (1.4.8)
|
next_rails (1.4.6)
|
||||||
rainbow (>= 3)
|
rainbow (>= 3)
|
||||||
nio4r (2.7.5)
|
nio4r (2.7.4)
|
||||||
nokogiri (1.19.4)
|
nokogiri (1.18.9)
|
||||||
mini_portile2 (~> 2.8.2)
|
mini_portile2 (~> 2.8.2)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
oauth2 (2.0.25)
|
oauth2 (2.0.12)
|
||||||
anonymous_loader (~> 0.1, >= 0.1.3)
|
|
||||||
auth-sanitizer (~> 0.2, >= 0.2.3)
|
|
||||||
faraday (>= 0.17.3, < 4.0)
|
faraday (>= 0.17.3, < 4.0)
|
||||||
jwt (>= 1.0, < 4.0)
|
jwt (>= 1.0, < 4.0)
|
||||||
logger (~> 1.2)
|
logger (~> 1.2)
|
||||||
multi_xml (~> 0.5)
|
multi_xml (~> 0.5)
|
||||||
rack (>= 1.2, < 4)
|
rack (>= 1.2, < 4)
|
||||||
snaky_hash (~> 2.0, >= 2.0.7)
|
snaky_hash (~> 2.0, >= 2.0.3)
|
||||||
version_gem (~> 1.1, >= 1.1.14)
|
version_gem (>= 1.1.8, < 3)
|
||||||
omniauth (2.1.4)
|
omniauth (2.1.3)
|
||||||
hashie (>= 3.4.6)
|
hashie (>= 3.4.6)
|
||||||
logger
|
|
||||||
rack (>= 2.2.3)
|
rack (>= 2.2.3)
|
||||||
rack-protection
|
rack-protection
|
||||||
omniauth-facebook (8.0.0)
|
omniauth-facebook (8.0.0)
|
||||||
|
|
@ -379,13 +367,13 @@ GEM
|
||||||
omniauth-github (2.0.1)
|
omniauth-github (2.0.1)
|
||||||
omniauth (~> 2.0)
|
omniauth (~> 2.0)
|
||||||
omniauth-oauth2 (~> 1.8)
|
omniauth-oauth2 (~> 1.8)
|
||||||
omniauth-google-oauth2 (1.2.2)
|
omniauth-google-oauth2 (1.2.1)
|
||||||
jwt (>= 2.9.2)
|
jwt (>= 2.9.2)
|
||||||
oauth2 (~> 2.0)
|
oauth2 (~> 2.0)
|
||||||
omniauth (~> 2.0)
|
omniauth (~> 2.0)
|
||||||
omniauth-oauth2 (~> 1.8)
|
omniauth-oauth2 (~> 1.8)
|
||||||
omniauth-oauth2 (1.9.0)
|
omniauth-oauth2 (1.8.0)
|
||||||
oauth2 (>= 2.0.2, < 3)
|
oauth2 (>= 1.4, < 3)
|
||||||
omniauth (~> 2.0)
|
omniauth (~> 2.0)
|
||||||
omniauth-openid (2.0.2)
|
omniauth-openid (2.0.2)
|
||||||
omniauth (>= 1.1)
|
omniauth (>= 1.1)
|
||||||
|
|
@ -395,26 +383,27 @@ GEM
|
||||||
omniauth-rails_csrf_protection (1.0.0)
|
omniauth-rails_csrf_protection (1.0.0)
|
||||||
actionpack (>= 4.2)
|
actionpack (>= 4.2)
|
||||||
omniauth (~> 2.0)
|
omniauth (~> 2.0)
|
||||||
|
open4 (1.3.4)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
ostruct (0.6.3)
|
ostruct (0.6.3)
|
||||||
paper_trail (16.0.0)
|
paper_trail (16.0.0)
|
||||||
activerecord (>= 6.1)
|
activerecord (>= 6.1)
|
||||||
request_store (~> 1.4)
|
request_store (~> 1.4)
|
||||||
parallel (1.27.0)
|
parallel (1.27.0)
|
||||||
parser (3.3.12.0)
|
parser (3.3.9.0)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
racc
|
racc
|
||||||
pdf-core (0.10.0)
|
pdf-core (0.10.0)
|
||||||
pdf-inspector (1.3.0)
|
pdf-inspector (1.3.0)
|
||||||
pdf-reader (>= 1.0, < 3.0.a)
|
pdf-reader (>= 1.0, < 3.0.a)
|
||||||
pdf-reader (2.15.1)
|
pdf-reader (2.14.1)
|
||||||
Ascii85 (>= 1.0, < 3.0, != 2.0.0)
|
Ascii85 (>= 1.0, < 3.0, != 2.0.0)
|
||||||
afm (>= 0.2.1, < 2)
|
afm (~> 0.2.1)
|
||||||
hashery (~> 2.0)
|
hashery (~> 2.0)
|
||||||
ruby-rc4
|
ruby-rc4
|
||||||
ttfunk
|
ttfunk
|
||||||
pg (1.6.3)
|
pg (1.6.1)
|
||||||
pp (0.6.3)
|
pp (0.6.2)
|
||||||
prettyprint
|
prettyprint
|
||||||
prawn (2.5.0)
|
prawn (2.5.0)
|
||||||
matrix (~> 0.4)
|
matrix (~> 0.4)
|
||||||
|
|
@ -431,43 +420,43 @@ GEM
|
||||||
prawn-table (0.2.2)
|
prawn-table (0.2.2)
|
||||||
prawn (>= 1.3.0, < 3.0.0)
|
prawn (>= 1.3.0, < 3.0.0)
|
||||||
prettyprint (0.2.0)
|
prettyprint (0.2.0)
|
||||||
prism (1.9.0)
|
prism (1.4.0)
|
||||||
psych (5.3.1)
|
psych (5.2.6)
|
||||||
date
|
date
|
||||||
stringio
|
stringio
|
||||||
public_suffix (7.0.5)
|
public_suffix (6.0.2)
|
||||||
puma (8.0.2)
|
puma (6.6.1)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
racc (1.8.1)
|
racc (1.8.1)
|
||||||
rack (3.2.6)
|
rack (3.1.16)
|
||||||
rack-openid (1.4.2)
|
rack-openid (1.4.2)
|
||||||
rack (>= 1.1.0)
|
rack (>= 1.1.0)
|
||||||
ruby-openid (>= 2.1.8)
|
ruby-openid (>= 2.1.8)
|
||||||
rack-protection (4.2.1)
|
rack-protection (4.1.1)
|
||||||
base64 (>= 0.1.0)
|
base64 (>= 0.1.0)
|
||||||
logger (>= 1.6.0)
|
logger (>= 1.6.0)
|
||||||
rack (>= 3.0.0, < 4)
|
rack (>= 3.0.0, < 4)
|
||||||
rack-session (2.1.2)
|
rack-session (2.1.1)
|
||||||
base64 (>= 0.1.0)
|
base64 (>= 0.1.0)
|
||||||
rack (>= 3.0.0)
|
rack (>= 3.0.0)
|
||||||
rack-test (2.2.0)
|
rack-test (2.2.0)
|
||||||
rack (>= 1.3)
|
rack (>= 1.3)
|
||||||
rackup (2.3.1)
|
rackup (2.2.1)
|
||||||
rack (>= 3)
|
rack (>= 3)
|
||||||
rails (7.2.3)
|
rails (7.2.2.1)
|
||||||
actioncable (= 7.2.3)
|
actioncable (= 7.2.2.1)
|
||||||
actionmailbox (= 7.2.3)
|
actionmailbox (= 7.2.2.1)
|
||||||
actionmailer (= 7.2.3)
|
actionmailer (= 7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
actiontext (= 7.2.3)
|
actiontext (= 7.2.2.1)
|
||||||
actionview (= 7.2.3)
|
actionview (= 7.2.2.1)
|
||||||
activejob (= 7.2.3)
|
activejob (= 7.2.2.1)
|
||||||
activemodel (= 7.2.3)
|
activemodel (= 7.2.2.1)
|
||||||
activerecord (= 7.2.3)
|
activerecord (= 7.2.2.1)
|
||||||
activestorage (= 7.2.3)
|
activestorage (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
bundler (>= 1.15.0)
|
bundler (>= 1.15.0)
|
||||||
railties (= 7.2.3)
|
railties (= 7.2.2.1)
|
||||||
rails-controller-testing (1.0.5)
|
rails-controller-testing (1.0.5)
|
||||||
actionpack (>= 5.0.1.rc1)
|
actionpack (>= 5.0.1.rc1)
|
||||||
actionview (>= 5.0.1.rc1)
|
actionview (>= 5.0.1.rc1)
|
||||||
|
|
@ -476,65 +465,63 @@ GEM
|
||||||
activesupport (>= 5.0.0)
|
activesupport (>= 5.0.0)
|
||||||
minitest
|
minitest
|
||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
rails-html-sanitizer (1.7.1)
|
rails-html-sanitizer (1.6.2)
|
||||||
loofah (~> 2.25, >= 2.25.2)
|
loofah (~> 2.21)
|
||||||
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
||||||
rails-i18n (7.0.1)
|
rails-i18n (7.0.1)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
railties (>= 6.0.0, < 8)
|
railties (>= 6.0.0, < 8)
|
||||||
railties (7.2.3)
|
railties (7.2.2.1)
|
||||||
actionpack (= 7.2.3)
|
actionpack (= 7.2.2.1)
|
||||||
activesupport (= 7.2.3)
|
activesupport (= 7.2.2.1)
|
||||||
cgi
|
|
||||||
irb (~> 1.13)
|
irb (~> 1.13)
|
||||||
rackup (>= 1.0.0)
|
rackup (>= 1.0.0)
|
||||||
rake (>= 12.2)
|
rake (>= 12.2)
|
||||||
thor (~> 1.0, >= 1.2.2)
|
thor (~> 1.0, >= 1.2.2)
|
||||||
tsort (>= 0.2)
|
|
||||||
zeitwerk (~> 2.6)
|
zeitwerk (~> 2.6)
|
||||||
rainbow (3.1.1)
|
rainbow (3.1.1)
|
||||||
rake (13.4.2)
|
rake (13.3.0)
|
||||||
rdoc (7.2.0)
|
rdoc (6.14.2)
|
||||||
erb
|
erb
|
||||||
psych (>= 4.0.0)
|
psych (>= 4.0.0)
|
||||||
tsort
|
recaptcha (5.8.1)
|
||||||
recaptcha (5.21.2)
|
json
|
||||||
redcarpet (3.6.1)
|
redcarpet (3.6.1)
|
||||||
regexp_parser (2.11.3)
|
regexp_parser (2.11.1)
|
||||||
reline (0.6.3)
|
reline (0.6.2)
|
||||||
io-console (~> 0.5)
|
io-console (~> 0.5)
|
||||||
request_store (1.7.0)
|
request_store (1.7.0)
|
||||||
rack (>= 1.4)
|
rack (>= 1.4)
|
||||||
responders (3.2.0)
|
responders (3.1.1)
|
||||||
actionpack (>= 7.0)
|
actionpack (>= 5.2)
|
||||||
railties (>= 7.0)
|
railties (>= 5.2)
|
||||||
rexml (3.4.4)
|
rexml (3.4.1)
|
||||||
rolify (6.0.0)
|
rolify (6.0.0)
|
||||||
rqrcode (3.1.0)
|
rqrcode (2.0.0)
|
||||||
chunky_png (~> 1.0)
|
chunky_png (~> 1.0)
|
||||||
rqrcode_core (~> 2.0)
|
rqrcode_core (~> 1.0)
|
||||||
rqrcode_core (2.0.0)
|
rqrcode_core (1.1.0)
|
||||||
rspec-activemodel-mocks (1.3.0)
|
rspec-activemodel-mocks (1.1.0)
|
||||||
activemodel (>= 3.0)
|
activemodel (>= 3.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
rspec-mocks (>= 2.99, < 4.0)
|
rspec-mocks (>= 2.99, < 4.0)
|
||||||
rspec-core (3.13.6)
|
rspec-core (3.13.5)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
rspec-expectations (3.13.5)
|
rspec-expectations (3.13.5)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
rspec-mocks (3.13.8)
|
rspec-mocks (3.13.5)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
rspec-rails (8.0.4)
|
rspec-rails (8.0.2)
|
||||||
actionpack (>= 7.2)
|
actionpack (>= 7.2)
|
||||||
activesupport (>= 7.2)
|
activesupport (>= 7.2)
|
||||||
railties (>= 7.2)
|
railties (>= 7.2)
|
||||||
rspec-core (>= 3.13.0, < 5.0.0)
|
rspec-core (~> 3.13)
|
||||||
rspec-expectations (>= 3.13.0, < 5.0.0)
|
rspec-expectations (~> 3.13)
|
||||||
rspec-mocks (>= 3.13.0, < 5.0.0)
|
rspec-mocks (~> 3.13)
|
||||||
rspec-support (>= 3.13.0, < 5.0.0)
|
rspec-support (~> 3.13)
|
||||||
rspec-support (3.13.7)
|
rspec-support (3.13.4)
|
||||||
rubocop (1.79.2)
|
rubocop (1.79.2)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
language_server-protocol (~> 3.17.0.2)
|
language_server-protocol (~> 3.17.0.2)
|
||||||
|
|
@ -559,7 +546,7 @@ GEM
|
||||||
lint_roller (~> 1.1)
|
lint_roller (~> 1.1)
|
||||||
rubocop (>= 1.75.0, < 2.0)
|
rubocop (>= 1.75.0, < 2.0)
|
||||||
rubocop-ast (>= 1.38.0, < 2.0)
|
rubocop-ast (>= 1.38.0, < 2.0)
|
||||||
rubocop-rails (2.33.3)
|
rubocop-rails (2.33.1)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
lint_roller (~> 1.1)
|
lint_roller (~> 1.1)
|
||||||
rack (>= 1.1)
|
rack (>= 1.1)
|
||||||
|
|
@ -576,9 +563,11 @@ GEM
|
||||||
ruby-openid (2.9.2)
|
ruby-openid (2.9.2)
|
||||||
ruby-progressbar (1.13.0)
|
ruby-progressbar (1.13.0)
|
||||||
ruby-rc4 (0.1.5)
|
ruby-rc4 (0.1.5)
|
||||||
ruby-vips (2.3.0)
|
ruby-vips (2.2.4)
|
||||||
ffi (~> 1.12)
|
ffi (~> 1.12)
|
||||||
logger
|
logger
|
||||||
|
ruby_parser (3.17.0)
|
||||||
|
sexp_processor (~> 4.15, >= 4.15.1)
|
||||||
rubyzip (2.4.1)
|
rubyzip (2.4.1)
|
||||||
sass-rails (6.0.0)
|
sass-rails (6.0.0)
|
||||||
sassc-rails (~> 2.1, >= 2.1.1)
|
sassc-rails (~> 2.1, >= 2.1.1)
|
||||||
|
|
@ -602,20 +591,21 @@ GEM
|
||||||
sentry-ruby (5.26.0)
|
sentry-ruby (5.26.0)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
|
sexp_processor (4.15.3)
|
||||||
shoulda-matchers (6.5.0)
|
shoulda-matchers (6.5.0)
|
||||||
activesupport (>= 5.2.0)
|
activesupport (>= 5.2.0)
|
||||||
simplecov (0.22.0)
|
simplecov (0.22.0)
|
||||||
docile (~> 1.1)
|
docile (~> 1.1)
|
||||||
simplecov-html (~> 0.11)
|
simplecov-html (~> 0.11)
|
||||||
simplecov_json_formatter (~> 0.1)
|
simplecov_json_formatter (~> 0.1)
|
||||||
simplecov-cobertura (3.1.0)
|
simplecov-cobertura (3.0.0)
|
||||||
rexml
|
rexml
|
||||||
simplecov (~> 0.19)
|
simplecov (~> 0.19)
|
||||||
simplecov-html (0.13.2)
|
simplecov-html (0.13.2)
|
||||||
simplecov_json_formatter (0.1.4)
|
simplecov_json_formatter (0.1.4)
|
||||||
snaky_hash (2.0.7)
|
snaky_hash (2.0.3)
|
||||||
hashie (>= 0.1.0, < 6)
|
hashie (>= 0.1.0, < 6)
|
||||||
version_gem (~> 1.1, >= 1.1.14)
|
version_gem (>= 1.1.8, < 3)
|
||||||
sprockets (4.2.2)
|
sprockets (4.2.2)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
logger
|
logger
|
||||||
|
|
@ -624,8 +614,8 @@ GEM
|
||||||
actionpack (>= 4.0)
|
actionpack (>= 4.0)
|
||||||
activesupport (>= 4.0)
|
activesupport (>= 4.0)
|
||||||
sprockets (>= 3.0.0)
|
sprockets (>= 3.0.0)
|
||||||
ssrf_filter (1.5.0)
|
ssrf_filter (1.3.0)
|
||||||
stringio (3.2.0)
|
stringio (3.1.7)
|
||||||
stripe (5.43.0)
|
stripe (5.43.0)
|
||||||
stripe-ruby-mock (3.1.0.rc3)
|
stripe-ruby-mock (3.1.0.rc3)
|
||||||
dante (>= 0.2.0)
|
dante (>= 0.2.0)
|
||||||
|
|
@ -633,12 +623,11 @@ GEM
|
||||||
stripe (> 5, < 6)
|
stripe (> 5, < 6)
|
||||||
sysexits (1.2.0)
|
sysexits (1.2.0)
|
||||||
temple (0.10.4)
|
temple (0.10.4)
|
||||||
thor (1.5.0)
|
thor (1.4.0)
|
||||||
tilt (2.6.1)
|
tilt (2.0.10)
|
||||||
timecop (0.9.4)
|
timecop (0.9.4)
|
||||||
timeout (0.6.1)
|
timeout (0.4.3)
|
||||||
transitions (1.2.1)
|
transitions (1.2.1)
|
||||||
tsort (0.2.0)
|
|
||||||
ttfunk (1.8.0)
|
ttfunk (1.8.0)
|
||||||
bigdecimal (~> 3.1)
|
bigdecimal (~> 3.1)
|
||||||
turbolinks (5.2.1)
|
turbolinks (5.2.1)
|
||||||
|
|
@ -648,14 +637,14 @@ GEM
|
||||||
concurrent-ruby (~> 1.0)
|
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 (3.2.0)
|
unicode-display_width (3.1.4)
|
||||||
unicode-emoji (~> 4.1)
|
unicode-emoji (~> 4.0, >= 4.0.4)
|
||||||
unicode-emoji (4.2.0)
|
unicode-emoji (4.0.4)
|
||||||
unobtrusive_flash (3.3.1)
|
unobtrusive_flash (3.3.1)
|
||||||
railties
|
railties
|
||||||
uri (1.1.1)
|
uri (1.0.3)
|
||||||
useragent (0.16.11)
|
useragent (0.16.11)
|
||||||
version_gem (1.1.14)
|
version_gem (1.1.8)
|
||||||
warden (1.2.9)
|
warden (1.2.9)
|
||||||
rack (>= 2.0.9)
|
rack (>= 2.0.9)
|
||||||
web-console (4.1.0)
|
web-console (4.1.0)
|
||||||
|
|
@ -672,7 +661,7 @@ GEM
|
||||||
crack (>= 0.3.2)
|
crack (>= 0.3.2)
|
||||||
hashdiff (>= 0.4.0, < 2.0.0)
|
hashdiff (>= 0.4.0, < 2.0.0)
|
||||||
websocket (1.2.11)
|
websocket (1.2.11)
|
||||||
websocket-driver (0.8.2)
|
websocket-driver (0.8.0)
|
||||||
base64
|
base64
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.5)
|
websocket-extensions (0.1.5)
|
||||||
|
|
@ -680,7 +669,7 @@ GEM
|
||||||
chronic (>= 0.6.3)
|
chronic (>= 0.6.3)
|
||||||
xpath (3.2.0)
|
xpath (3.2.0)
|
||||||
nokogiri (~> 1.8)
|
nokogiri (~> 1.8)
|
||||||
zeitwerk (2.7.5)
|
zeitwerk (2.7.3)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
@ -704,7 +693,6 @@ DEPENDENCIES
|
||||||
climate_control
|
climate_control
|
||||||
cloudinary
|
cloudinary
|
||||||
cocoon
|
cocoon
|
||||||
connection_pool (< 3)
|
|
||||||
countable-rails
|
countable-rails
|
||||||
daemons
|
daemons
|
||||||
dalli
|
dalli
|
||||||
|
|
@ -787,7 +775,7 @@ DEPENDENCIES
|
||||||
whenever
|
whenever
|
||||||
|
|
||||||
RUBY VERSION
|
RUBY VERSION
|
||||||
ruby 3.4.10
|
ruby 3.4.5
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.6.9
|
2.6.9
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Gemfile
|
|
||||||
1
Gemfile.next
Symbolic link
1
Gemfile.next
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
Gemfile
|
||||||
16
INSTALL.md
16
INSTALL.md
|
|
@ -26,22 +26,21 @@ You can find the latest OSEM releases on our [release page](https://github.com/o
|
||||||
|
|
||||||
## Deploy to the cloud
|
## Deploy to the cloud
|
||||||
|
|
||||||
The easiest way to deploy OSEM is to use one of the many platform as a service (PaaS) providers that support Ruby on Rails.
|
The easiest way to deploy OSEM is to use one of the many platform as a service providers that support ruby on rails. We have prepared OSEM to be used with [heroku](https://heroku.com). So if you have an account there, you can deploy OSEM by pressing this button:
|
||||||
There are too many to list, here are a few we have seen OSEM deployed to:
|
|
||||||
|
|
||||||
- https://heroku.com
|
<a href="https://heroku.com/deploy?template=https://github.com/openSUSE/osem/tree/v1.0">
|
||||||
- https://render.com
|
<img src="https://www.herokucdn.com/deploy/button.svg" alt="Deploy">
|
||||||
- https://fly.io
|
</a>
|
||||||
|
|
||||||
## Deploy to your own server
|
## Deploy to your own server
|
||||||
|
|
||||||
We recommend to run OSEM in production with [mod\_passenger](https://www.phusionpassenger.com/download/#open_source)
|
We recommend to run OSEM in production with [mod\_passenger](https://www.phusionpassenger.com/download/#open_source)
|
||||||
and the [apache web-server](https://www.apache.org/). There are tons of guides on how to deploy rails apps on various
|
and the [apache web-server](https://www.apache.org/). There are tons of guides on how to deploy rails apps on various
|
||||||
base operating systems, [check DuckDuckGo](https://duckduckgo.com/?t=h_&q=ruby+on+rails+apache+passenger). Of course there are also other options for the application server and reverse proxy, pick your poison.
|
base operating systems. [Check Google](https://encrypted.google.com/search?hl=en&q=ruby%20on%20rails%20apache%20passenger). Of course there are also other options for the application server and reverse proxy, pick your poison.
|
||||||
|
|
||||||
## Deploy via docker/docker-compose
|
## Deploy via docker/docker-compose
|
||||||
|
|
||||||
There is a rudimentary docker-compose configuration for production usage (`docker-compose.yml.production-example`). It brings OSEM up on port 80. It uses persistent storage volumes for all the data your users might create. You can start it with
|
There is a rudimentary docker-compose configuration for production usage (`docker-compose.yml.production-example`). It brings [OSEM up](http://0.0.0.0:8080) on port 8080. It uses persistent storage volumes for all the data users might create. You can start it with
|
||||||
|
|
||||||
1. Configure OSEM (at least `SECRET_KEY_BASE`)
|
1. Configure OSEM (at least `SECRET_KEY_BASE`)
|
||||||
```
|
```
|
||||||
|
|
@ -54,13 +53,12 @@ There is a rudimentary docker-compose configuration for production usage (`docke
|
||||||
```
|
```
|
||||||
1. Setup the database (only once)
|
1. Setup the database (only once)
|
||||||
```
|
```
|
||||||
docker-compose -f docker-compose.yml.production-example run --rm osem bundle exec rake db:setup
|
docker-compose -f docker-compose.yml.production-example run --rm production_web bundle exec rake db:bootstrap
|
||||||
```
|
```
|
||||||
1. Start the services
|
1. Start the services
|
||||||
```
|
```
|
||||||
docker-compose -f docker-compose.yml.production-example up
|
docker-compose -f docker-compose.yml.production-example up
|
||||||
```
|
```
|
||||||
1. Visit http://0.0.0.0
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
OSEM is configured through environment variables and falls back to sensible defaults. See the [dotenv.example](https://github.com/openSUSE/osem/blob/master/dotenv.example) for all possible configuration options. However here is a list of things you most likely want to configure because otherwise things will not work as expected.
|
OSEM is configured through environment variables and falls back to sensible defaults. See the [dotenv.example](https://github.com/openSUSE/osem/blob/master/dotenv.example) for all possible configuration options. However here is a list of things you most likely want to configure because otherwise things will not work as expected.
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,6 @@
|
||||||
|
|
||||||
An event management tool tailored to Free and Open Source Software conferences.
|
An event management tool tailored to Free and Open Source Software conferences.
|
||||||
|
|
||||||
## Trial
|
|
||||||
|
|
||||||
Check out our demo at https://osem.copyleft.dev
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
Please refer to our [installation guide](INSTALL.md).
|
Please refer to our [installation guide](INSTALL.md).
|
||||||
|
|
||||||
|
|
@ -19,7 +15,4 @@ Please refer to our [installation guide](INSTALL.md).
|
||||||
Please refer to our [contributing guide](CONTRIBUTING.md).
|
Please refer to our [contributing guide](CONTRIBUTING.md).
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
GitHub issues are the primary way for communicating about specific proposed changes to this project. If you have other questions feel free chat us up in the #osem channel on [libera.chat IRC](https://libera.chat).
|
GitHub issues are the primary way for communicating about specific proposed changes to this project. If you have other questions feel free to subscribe to the [opensuse-web@opensuse.org](http://lists.opensuse.org/opensuse-web/) mailinglist, all OSEM contributors are on that list! Additionally you can use #osem channel on [libera.chat IRC](https://libera.chat).
|
||||||
|
|
||||||
https://web.libera.chat/#osem
|
|
||||||
|
|
||||||
|
|
|
||||||
37
app.json
Normal file
37
app.json
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"name": "osem",
|
||||||
|
"description": "Open Source Event Manager",
|
||||||
|
"repository": "https://github.com/openSUSE/osem",
|
||||||
|
"env": {
|
||||||
|
"CLOUDINARY_URL": {
|
||||||
|
"description": "Create a https://cloudinary.com account and set the cloud url here. It starts with cloudinary://",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"SECRET_KEY_BASE": {
|
||||||
|
"description": "A key to verify sessions. At least 40 characters. For instance: https://www.randomlists.com/string?base=16&length=64&qty=1",
|
||||||
|
"generator": "secret"
|
||||||
|
},
|
||||||
|
"NOKOGIRI_USE_SYSTEM_LIBRARIES": "1",
|
||||||
|
"RAILS_ENV": "production",
|
||||||
|
"RACK_ENV": "production"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"postdeploy": "bundle exec rake db:schema:load db:seed"
|
||||||
|
},
|
||||||
|
"formation": {
|
||||||
|
"web": {
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"worker": {
|
||||||
|
"quantity": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"addons": [
|
||||||
|
{
|
||||||
|
"plan": "heroku-postgresql"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"plan": "sendgrid"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
$navbar-default-bg: #005cb3;
|
$navbar-default-bg: #299a0b;
|
||||||
$navbar-default-link-active-bg: #DFE0DF;
|
$navbar-default-link-active-bg: #DFE0DF;
|
||||||
$navbar-default-border: 1px solid #d4d4d4;
|
$navbar-default-border: 1px solid #d4d4d4;
|
||||||
$navbar-default-color: #ffffff;
|
$navbar-default-color: #ffffff;
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,8 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def booth_params
|
def booth_params
|
||||||
params.require(:booth).permit(:title, :description, :reasoning, :picture, :website_url, :submitter_relationship, responsible_ids: [])
|
params.require(:booth).permit(:title, :description, :reasoning, :state, :picture, :conference_id,
|
||||||
|
:created_at, :updated_at, :submitter_relationship, :website_url, responsible_ids: [])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def difficulty_level_params
|
def difficulty_level_params
|
||||||
params.require(:difficulty_level).permit(:title, :description, :color)
|
params.require(:difficulty_level).permit(:title, :description, :color, :conference_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def event_type_params
|
def event_type_params
|
||||||
params.require(:event_type).permit(:title, :length, :minimum_abstract_length, :maximum_abstract_length, :color, :description)
|
params.require(:event_type).permit(:title, :length, :minimum_abstract_length, :maximum_abstract_length, :color, :conference_id, :description)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def comment_params
|
def comment_params
|
||||||
params.require(:comment).permit(:body)
|
params.require(:comment).permit(:commentable, :body, :user_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_state(transition, notice, mail = false, subject = false, send_mail = false)
|
def update_state(transition, notice, mail = false, subject = false, send_mail = false)
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def lodging_params
|
def lodging_params
|
||||||
params.require(:lodging).permit(:name, :description, :picture, :picture_cache, :website_link)
|
params.require(:lodging).permit(:name, :description, :picture, :picture_cache, :website_link, :conference_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ module Admin
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize! :update, @conference.program
|
authorize! :update, @conference.program
|
||||||
|
@program = @conference.program
|
||||||
params['program']['languages'] = params['program']['languages'].join(',') if params['program']['languages'].present?
|
params['program']['languages'] = params['program']['languages'].join(',') if params['program']['languages'].present?
|
||||||
@program.assign_attributes(program_params)
|
@program.assign_attributes(program_params)
|
||||||
send_mail_on_schedule_public = @program.notify_on_schedule_public?
|
send_mail_on_schedule_public = @program.notify_on_schedule_public?
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def question_params
|
def question_params
|
||||||
params.require(:question).permit(:title, :global, :answer_ids, :question_type_id, answers_attributes: [:id, :title])
|
params.require(:question).permit(:title, :global, :answer_ids, :question_type_id, :conference_id, answers_attributes: [:id, :title])
|
||||||
end
|
end
|
||||||
|
|
||||||
def conference_params
|
def conference_params
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,8 @@ module Admin
|
||||||
|
|
||||||
def registration_params
|
def registration_params
|
||||||
params.require(:registration).permit(
|
params.require(:registration).permit(
|
||||||
:attended, :volunteer, :other_special_needs, :accepted_code_of_conduct,
|
:user_id, :conference_id, :attended,
|
||||||
|
:volunteer, :other_special_needs, :accepted_code_of_conduct,
|
||||||
vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: []
|
vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: []
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def resource_params
|
def resource_params
|
||||||
params.require(:resource).permit(:name, :description, :quantity, :used)
|
params.require(:resource).permit(:name, :description, :quantity, :used, :conference_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ module Admin
|
||||||
elsif user.add_role @role.name, role_resource
|
elsif user.add_role @role.name, role_resource
|
||||||
flash[:notice] = "Successfully added role #{@role.name} to user #{user.email}"
|
flash[:notice] = "Successfully added role #{@role.name} to user #{user.email}"
|
||||||
else
|
else
|
||||||
flash[:error] = "Could not add role #{@role.name} to #{user.email}"
|
flash[:error] = "Coud not add role #{@role.name} to #{user.email}"
|
||||||
end
|
end
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
||||||
|
|
@ -52,14 +52,14 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def sponsor_params
|
def sponsor_params
|
||||||
params.require(:sponsor).permit(:name, :description, :website_url, :picture, :picture_cache, :sponsorship_level_id)
|
params.require(:sponsor).permit(:name, :description, :website_url, :picture, :picture_cache, :sponsorship_level_id, :conference_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def sponsorship_level_required
|
def sponsorship_level_required
|
||||||
return unless @conference.sponsorship_levels.empty?
|
return unless @conference.sponsorship_levels.empty?
|
||||||
|
|
||||||
redirect_to admin_conference_sponsorship_levels_path(conference_id: @conference.short_title),
|
redirect_to admin_conference_sponsorship_levels_path(conference_id: @conference.short_title),
|
||||||
alert: 'You need to create at least one sponsorship level to add a sponsor'
|
alert: 'You need to create atleast one sponsorship level to add a sponsor'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def sponsorship_level_params
|
def sponsorship_level_params
|
||||||
params.require(:sponsorship_level).permit(:title)
|
params.require(:sponsorship_level).permit(:title, :conference_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def ticket_params
|
def ticket_params
|
||||||
params.require(:ticket).permit(:title, :url, :description, :price_cents, :price_currency, :price, :registration_ticket)
|
params.require(:ticket).permit(:conference, :title, :url, :description, :conference_id, :price_cents, :price_currency, :price, :registration_ticket)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ module Admin
|
||||||
private
|
private
|
||||||
|
|
||||||
def venue_params
|
def venue_params
|
||||||
params.require(:venue).permit(:name, :street, :postalcode, :city, :country, :longitude, :latitude, :description, :website, :picture, :picture_cache, :lodgings_attributes)
|
params.require(:venue).permit(:name, :street, :postalcode, :city, :country, :longitude, :latitude, :description, :website, :picture, :picture_cache, :lodgings_attributes, :conference_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
elsif @version.event == 'create' && @version.item
|
elsif @version.event == 'create' && @version.item
|
||||||
# if @version represents a create event and is not currently deleted
|
# if @version represets a create event and is not currently deleted
|
||||||
@version.item.destroy
|
@version.item.destroy
|
||||||
flash[:notice] = 'The selected change was successfully reverted'
|
flash[:notice] = 'The selected change was successfully reverted'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ class BoothsController < ApplicationController
|
||||||
private
|
private
|
||||||
|
|
||||||
def booth_params
|
def booth_params
|
||||||
params.require(:booth).permit(:title, :description, :reasoning, :picture, :website_url, :submitter_relationship, responsible_ids: [])
|
params.require(:booth).permit(:title, :description, :reasoning, :state, :picture, :conference_id,
|
||||||
|
:created_at, :updated_at, :submitter_relationship, :website_url, responsible_ids: [])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@ class ConferenceRegistrationsController < ApplicationController
|
||||||
def registration_params
|
def registration_params
|
||||||
params.require(:registration)
|
params.require(:registration)
|
||||||
.permit(
|
.permit(
|
||||||
|
:conference_id,
|
||||||
:volunteer, :accepted_code_of_conduct,
|
:volunteer, :accepted_code_of_conduct,
|
||||||
vchoice_ids: [], qanswer_ids: [],
|
vchoice_ids: [], qanswer_ids: [],
|
||||||
qanswers_attributes: [],
|
qanswers_attributes: [],
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class SchedulesController < ApplicationController
|
||||||
@current_day = @conference.current_conference_day
|
@current_day = @conference.current_conference_day
|
||||||
@day = @current_day.present? ? @current_day : @dates.first
|
@day = @current_day.present? ? @current_day : @dates.first
|
||||||
if @current_day
|
if @current_day
|
||||||
# the schedule takes you to the current time if it is between the start and the end time.
|
# the schedule takes you to the current time if it is beetween the start and the end time.
|
||||||
@hour_column = @conference.hours_from_start_time(@conf_start, @conference.end_hour)
|
@hour_column = @conference.hours_from_start_time(@conf_start, @conference.end_hour)
|
||||||
end
|
end
|
||||||
# Ids of the @event_schedules of confrmed self_organized tracks along with the selected_schedule_id
|
# Ids of the @event_schedules of confrmed self_organized tracks along with the selected_schedule_id
|
||||||
|
|
|
||||||
|
|
@ -31,4 +31,10 @@ class TicketPurchasesController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@unpaid_ticket_purchases = current_user.ticket_purchases.by_conference(@conference).unpaid
|
@unpaid_ticket_purchases = current_user.ticket_purchases.by_conference(@conference).unpaid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def ticket_purchase_params
|
||||||
|
params.require(:ticket_purchase).permit(:ticket_id, :user_id, :conference_id, :quantity)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ module ConferenceHelper
|
||||||
location += "#{v.country_name}, " if v.country_name
|
location += "#{v.country_name}, " if v.country_name
|
||||||
e.location = location
|
e.location = location
|
||||||
end
|
end
|
||||||
e.categories = conference.title, "Audience: #{proposal.difficulty_level.title}", "Track: #{proposal.track.name}"
|
e.categories = conference.title, "Difficulty: #{proposal.difficulty_level.title}", "Track: #{proposal.track.name}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
calendar
|
calendar
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ module DateTimeHelper
|
||||||
##
|
##
|
||||||
# Gets a datetime object
|
# Gets a datetime object
|
||||||
# ====Returns
|
# ====Returns
|
||||||
# * +String+ -> formatted datetime object
|
# * +String+ -> formated datetime object
|
||||||
def format_datetime(obj)
|
def format_datetime(obj)
|
||||||
return unless obj
|
return unless obj
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ class Ability
|
||||||
can [:show], Conference do |conference|
|
can [:show], Conference do |conference|
|
||||||
conference.splashpage&.public == true
|
conference.splashpage&.public == true
|
||||||
end
|
end
|
||||||
can :code_of_conduct, Conference
|
|
||||||
# Can view the schedule
|
# Can view the schedule
|
||||||
can [:schedule, :events], Conference do |conference|
|
can [:schedule, :events], Conference do |conference|
|
||||||
conference.program.cfp && conference.program.schedule_public
|
conference.program.cfp && conference.program.schedule_public
|
||||||
|
|
@ -152,8 +151,6 @@ class Ability
|
||||||
can :manage, Registration, conference_id: conf_ids_for_organizer
|
can :manage, Registration, conference_id: conf_ids_for_organizer
|
||||||
# To access conference/proposals
|
# To access conference/proposals
|
||||||
can :manage, Event, program: { conference_id: conf_ids_for_organizer }
|
can :manage, Event, program: { conference_id: conf_ids_for_organizer }
|
||||||
can :manage, Commercial, commercialable_type: 'Event',
|
|
||||||
commercialable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_organizer).pluck(:id)).pluck(:id)
|
|
||||||
# To access comment link in menu bar
|
# To access comment link in menu bar
|
||||||
can :index, Comment, commentable_type: 'Event',
|
can :index, Comment, commentable_type: 'Event',
|
||||||
commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_organizer).pluck(:id)).pluck(:id)
|
commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_organizer).pluck(:id)).pluck(:id)
|
||||||
|
|
@ -165,8 +162,6 @@ class Ability
|
||||||
commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_cfp).pluck(:id)).pluck(:id)
|
commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_cfp).pluck(:id)).pluck(:id)
|
||||||
# To access conference/proposals
|
# To access conference/proposals
|
||||||
can :manage, Event, program: { conference_id: conf_ids_for_cfp }
|
can :manage, Event, program: { conference_id: conf_ids_for_cfp }
|
||||||
can :manage, Commercial, commercialable_type: 'Event',
|
|
||||||
commercialable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_cfp).pluck(:id)).pluck(:id)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if conf_ids_for_info_desk
|
if conf_ids_for_info_desk
|
||||||
|
|
|
||||||
|
|
@ -422,7 +422,7 @@ class Conference < ApplicationRecord
|
||||||
|
|
||||||
##
|
##
|
||||||
# Returns a hash with affiliation =>
|
# Returns a hash with affiliation =>
|
||||||
# {value: count of registration whose user has that affiliation, color: color}
|
# {value: count of registration whose user has that affilation, color: color}
|
||||||
# In case that the affiliation is blank, it groups them in None and
|
# In case that the affiliation is blank, it groups them in None and
|
||||||
# if the number of persons that have an affiliation are less than the 2% of
|
# if the number of persons that have an affiliation are less than the 2% of
|
||||||
# the total number of registered people, they are grouped in others.
|
# the total number of registered people, they are grouped in others.
|
||||||
|
|
@ -696,7 +696,7 @@ class Conference < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the number of hours since the conference start hour (9) to the
|
# Returns the number of hours since the conference start hour (9) to the
|
||||||
# current hour, in case that the current hour is between the start and the
|
# current hour, in case that the current hour is beetween the start and the
|
||||||
# end hour (20). Otherwise, returns 0
|
# end hour (20). Otherwise, returns 0
|
||||||
def hours_from_start_time(start_hour, end_hour)
|
def hours_from_start_time(start_hour, end_hour)
|
||||||
current_time = Time.find_zone(timezone).now
|
current_time = Time.find_zone(timezone).now
|
||||||
|
|
@ -744,7 +744,7 @@ class Conference < ApplicationRecord
|
||||||
'#' + next_color_component(:r, i) + next_color_component(:g, i) + next_color_component(:b, i)
|
'#' + next_color_component(:r, i) + next_color_component(:g, i) + next_color_component(:b, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Auxiliary function which is used in next_color and returns each component of
|
# Auxiliar function which is used in next_color and returns each component of
|
||||||
# the color. We make use of big prime numbers to avoid repetition and to make
|
# the color. We make use of big prime numbers to avoid repetition and to make
|
||||||
# consecutive colors clearly different.
|
# consecutive colors clearly different.
|
||||||
def next_color_component(component, i)
|
def next_color_component(component, i)
|
||||||
|
|
@ -787,7 +787,7 @@ class Conference < ApplicationRecord
|
||||||
|
|
||||||
##
|
##
|
||||||
# Checks if start hour of the conference is greater or equal than the end hour
|
# Checks if start hour of the conference is greater or equal than the end hour
|
||||||
# and that both hours are between 0 and 24
|
# and that both hours are beetween 0 and 24
|
||||||
#
|
#
|
||||||
# Reports an error when such a condition is found
|
# Reports an error when such a condition is found
|
||||||
def valid_times_range?
|
def valid_times_range?
|
||||||
|
|
@ -922,7 +922,7 @@ class Conference < ApplicationRecord
|
||||||
#
|
#
|
||||||
# ====Returns
|
# ====Returns
|
||||||
# * +True+ -> One difficulty level or more
|
# * +True+ -> One difficulty level or more
|
||||||
# * +False+ -> No difficulty level
|
# * +False+ -> No diffculty level
|
||||||
def difficulty_levels_set?
|
def difficulty_levels_set?
|
||||||
program.difficulty_levels.any?
|
program.difficulty_levels.any?
|
||||||
end
|
end
|
||||||
|
|
@ -932,7 +932,7 @@ class Conference < ApplicationRecord
|
||||||
#
|
#
|
||||||
# ====Returns
|
# ====Returns
|
||||||
# * +True+ -> One difficulty level or more
|
# * +True+ -> One difficulty level or more
|
||||||
# * +False+ -> No difficulty level
|
# * +False+ -> No diffculty level
|
||||||
def event_types_set?
|
def event_types_set?
|
||||||
program.event_types.any?
|
program.event_types.any?
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ class Event < ApplicationRecord
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
##
|
##
|
||||||
# Checks if the event has a start_time and a room for the selected schedule if there is any
|
# Checkes if the event has a start_time and a room for the selected schedule if there is any
|
||||||
# ====Returns
|
# ====Returns
|
||||||
# * +true+ or +false+
|
# * +true+ or +false+
|
||||||
def scheduled?
|
def scheduled?
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ class Program < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Checks if the program has rating enabled
|
# Checcks if the program has rating enabled
|
||||||
#
|
#
|
||||||
# ====Returns
|
# ====Returns
|
||||||
# * +false+ -> If rating is not enabled
|
# * +false+ -> If rating is not enabled
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class Ticket < ApplicationRecord
|
||||||
scope :for_registration, -> { where(registration_ticket: true) }
|
scope :for_registration, -> { where(registration_ticket: true) }
|
||||||
|
|
||||||
# This validation is for the sake of simplicity.
|
# This validation is for the sake of simplicity.
|
||||||
# If we would allow different currencies per conference we also have to handle conversions between currencies!
|
# If we would allow different currencies per conference we also have to handle convertions between currencies!
|
||||||
validate :tickets_of_conference_have_same_currency
|
validate :tickets_of_conference_have_same_currency
|
||||||
|
|
||||||
validates :price_cents, :price_currency, :title, presence: true
|
validates :price_cents, :price_currency, :title, presence: true
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ class User < ApplicationRecord
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
##
|
##
|
||||||
# Checks if the user attended the event
|
# Checkes if the user attended the event
|
||||||
# This is used for events that require registration
|
# This is used for events that require registration
|
||||||
# The user must have registered to attend the event
|
# The user must have registered to attend the event
|
||||||
# Gets an event
|
# Gets an event
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1
|
%h1
|
||||||
Edit Audience
|
Edit Difficulty Level
|
||||||
= @difficulty_level.title
|
= @difficulty_level.title
|
||||||
.row
|
.row
|
||||||
.col-md-8
|
.col-md-8
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1 Audiences
|
%h1 Difficulty Levels
|
||||||
%p.text-muted
|
%p.text-muted
|
||||||
Classify your conference.program.events by difficulty
|
Classify your conference.program.events by difficulty
|
||||||
.row
|
.row
|
||||||
|
|
@ -32,4 +32,4 @@
|
||||||
data: { confirm: "Do you really want to delete #{difficulty_level.title}? Attention: This difficulty level will be removed from all Events that have it set" }
|
data: { confirm: "Do you really want to delete #{difficulty_level.title}? Attention: This difficulty level will be removed from all Events that have it set" }
|
||||||
.row
|
.row
|
||||||
.col-md-12.text-right
|
.col-md-12.text-right
|
||||||
= link_to 'Add Audience', new_admin_conference_program_difficulty_level_path(@conference.short_title), class: 'btn btn-primary'
|
= link_to 'Add Difficulty Level', new_admin_conference_program_difficulty_level_path(@conference.short_title), class: 'btn btn-primary'
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1
|
%h1
|
||||||
Create Audience
|
Create Difficulty Level
|
||||||
.row
|
.row
|
||||||
.col-md-8
|
.col-md-8
|
||||||
= render partial: 'form'
|
= render partial: 'form'
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
%th
|
%th
|
||||||
%b Track
|
%b Track
|
||||||
%th
|
%th
|
||||||
%b Audience
|
%b Difficulty
|
||||||
%th
|
%th
|
||||||
%b State
|
%b State
|
||||||
%th
|
%th
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@
|
||||||
%td{ 'class' => class_for_todo(progress_status['track']) }
|
%td{ 'class' => class_for_todo(progress_status['track']) }
|
||||||
%span{ 'class' => [icon_for_todo(progress_status['track']), 'fa-lg'] }
|
%span{ 'class' => [icon_for_todo(progress_status['track']), 'fa-lg'] }
|
||||||
%tr
|
%tr
|
||||||
%td= link_to 'Add an Audience level', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event)
|
%td= link_to 'Add a difficulty level', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event)
|
||||||
%td{ 'class' => class_for_todo(progress_status['difficulty_level']) }
|
%td{ 'class' => class_for_todo(progress_status['difficulty_level']) }
|
||||||
%span{ 'class' => [icon_for_todo(progress_status['difficulty_level']), 'fa-lg'] }
|
%span{ 'class' => [icon_for_todo(progress_status['difficulty_level']), 'fa-lg'] }
|
||||||
#proposal-commercials.tab-pane
|
#proposal-commercials.tab-pane
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
%dd
|
%dd
|
||||||
= tracks(@conference)
|
= tracks(@conference)
|
||||||
%dt
|
%dt
|
||||||
Audiences:
|
Difficulty Levels:
|
||||||
%dd
|
%dd
|
||||||
= difficulty_levels(@conference)
|
= difficulty_levels(@conference)
|
||||||
%dt
|
%dt
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
%p
|
%p
|
||||||
Setup the time frame in which people can register to your conference
|
Setup the time frame in which people can registrer to your conference
|
||||||
= form_for(@registration_period, url: admin_conference_registration_period_path(@conference.short_title)) do |f|
|
= form_for(@registration_period, url: admin_conference_registration_period_path(@conference.short_title)) do |f|
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :start_date
|
= f.label :start_date
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
wb = xlsx_package.workbook
|
wb = xlsx_package.workbook
|
||||||
wb.add_worksheet(name: 'registrations') do |sheet|
|
wb.add_worksheet(name: 'registrations') do |sheet|
|
||||||
bold_style = wb.styles.add_style(b: true)
|
bold_style = wb.styles.add_style(b: true)
|
||||||
row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email', 'Ticket Token']
|
row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email']
|
||||||
|
|
||||||
@conference.questions.each do |question|
|
@conference.questions.each do |question|
|
||||||
row << question.title
|
row << question.title
|
||||||
|
|
@ -18,7 +18,6 @@ wb.add_worksheet(name: 'registrations') do |sheet|
|
||||||
row << registration.nickname
|
row << registration.nickname
|
||||||
row << registration.affiliation
|
row << registration.affiliation
|
||||||
row << registration.email
|
row << registration.email
|
||||||
row << registration.user.physical_tickets.by_conference(@conference).first&.token
|
|
||||||
@conference.questions.each do |question|
|
@conference.questions.each do |question|
|
||||||
qa = registration.qanswers.find_by(question: question)
|
qa = registration.qanswers.find_by(question: question)
|
||||||
answer = ( qa ? qa.answer.title : '' )
|
answer = ( qa ? qa.answer.title : '' )
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
url = update_selected_schedule_admin_conference_program_track_path(@conference.short_title, @schedule.track) + '?[track][selected_schedule_id]='
|
url = update_selected_schedule_admin_conference_program_track_path(@conference.short_title, @schedule.track) + '?[track][selected_schedule_id]='
|
||||||
else
|
else
|
||||||
value = @schedule.id == @selected_schedule.try(:id)
|
value = @schedule.id == @selected_schedule.try(:id)
|
||||||
url = admin_conference_program_path(@conference.short_title) + '?program[selected_schedule_id]='
|
url = admin_conference_program_path(@conference.short_title) + '?[program][selected_schedule_id]='
|
||||||
end
|
end
|
||||||
= check_box_tag @conference.short_title, @schedule.id, value, url: url,
|
= check_box_tag @conference.short_title, @schedule.id, value, url: url,
|
||||||
class: 'switch-checkbox-schedule'
|
class: 'switch-checkbox-schedule'
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
.page-header
|
.page-header
|
||||||
%h1
|
%h1
|
||||||
Edit Track
|
Edit Tack
|
||||||
= @track.name
|
= @track.name
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
= f.file_field :picture
|
= f.file_field :picture
|
||||||
= f.hidden_field :picture_cache
|
= f.hidden_field :picture_cache
|
||||||
%span.help-block
|
%span.help-block
|
||||||
This will be displayed on the venue area of the splash page.
|
This will be displayed on the venue are of the splash page.
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :street
|
= f.label :street
|
||||||
%abbr{title: 'This field is required'} *
|
%abbr{title: 'This field is required'} *
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
%abbr{title: 'This field is required'} *
|
%abbr{title: 'This field is required'} *
|
||||||
= f.text_field :submitter_relationship, rows: 5, required: true, class: 'form-control'
|
= f.text_field :submitter_relationship, rows: 5, required: true, class: 'form-control'
|
||||||
%span.help-block
|
%span.help-block
|
||||||
e.g. employee, community manager, etc
|
e.g. employee, comunity manager, etc
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :website_url, 'Website URL'
|
= f.label :website_url, 'Website URL'
|
||||||
%abbr{title: 'This field is required'} *
|
%abbr{title: 'This field is required'} *
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
= link_to 'Event Types', admin_conference_program_event_types_path(@conference.short_title)
|
= link_to 'Event Types', admin_conference_program_event_types_path(@conference.short_title)
|
||||||
- if can? :update, @conference.program.difficulty_levels.build, conference_id: @conference.id
|
- if can? :update, @conference.program.difficulty_levels.build, conference_id: @conference.id
|
||||||
%li{class: active_nav_li(admin_conference_program_difficulty_levels_path(@conference.short_title))}
|
%li{class: active_nav_li(admin_conference_program_difficulty_levels_path(@conference.short_title))}
|
||||||
= link_to 'Audience', admin_conference_program_difficulty_levels_path(@conference.short_title)
|
= link_to 'Difficulty Levels', admin_conference_program_difficulty_levels_path(@conference.short_title)
|
||||||
- if can? :update, @conference.program.schedules.build
|
- if can? :update, @conference.program.schedules.build
|
||||||
%li{class: active_nav_li(admin_conference_schedules_path(@conference.short_title))}
|
%li{class: active_nav_li(admin_conference_schedules_path(@conference.short_title))}
|
||||||
= link_to 'Schedules', admin_conference_schedules_path(@conference.short_title)
|
= link_to 'Schedules', admin_conference_schedules_path(@conference.short_title)
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
= f.select :language, @program.languages_list, { include_blank: false}, { class: 'select-help-toggle form-control' }
|
= f.select :language, @program.languages_list, { include_blank: false}, { class: 'select-help-toggle form-control' }
|
||||||
- if display_details
|
- if display_details
|
||||||
- if @conference.program.difficulty_levels.any?
|
- if @conference.program.difficulty_levels.any?
|
||||||
= f.label :difficulty_level, 'Audience'
|
= f.label :difficulty_level
|
||||||
= f.select :difficulty_level_id, @conference.program.difficulty_levels.map{|level| [level.title, level.id ] }, {include_blank: false}, { class: 'select-help-toggle form-control' }
|
= f.select :difficulty_level_id, @conference.program.difficulty_levels.map{|level| [level.title, level.id ] }, {include_blank: false}, { class: 'select-help-toggle form-control' }
|
||||||
= render 'shared/select_help_text', f: f, for: :difficulty_level_id, options: @conference.program.difficulty_levels do |difficulty_level|
|
= render 'shared/select_help_text', f: f, for: :difficulty_level_id, options: @conference.program.difficulty_levels do |difficulty_level|
|
||||||
= difficulty_level.description
|
= difficulty_level.description
|
||||||
|
|
|
||||||
|
|
@ -27,4 +27,4 @@
|
||||||
= link_to 'Add a track', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
= link_to 'Add a track', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
||||||
%li{'class'=>class_for_todo(progress_status['difficulty_level'])}
|
%li{'class'=>class_for_todo(progress_status['difficulty_level'])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['difficulty_level'])}
|
%span{'class'=>icon_for_todo(progress_status['difficulty_level'])}
|
||||||
= link_to 'Add an Audience', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
= link_to 'Add a difficulty level', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@
|
||||||
%dl#proposal-info
|
%dl#proposal-info
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%dt Date:
|
%dt Date:
|
||||||
%dd= @event_schedule.start_time.strftime("%Y %B %e - %-I:%M %p") if @event_schedule
|
%dd= @event_schedule.start_time.strftime("%Y %B %e - %H:%M") if @event_schedule
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%dt Duration:
|
%dt Duration:
|
||||||
%dd= show_time(@event.event_type.length)
|
%dd= show_time(@event.event_type.length)
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
%span.label{style: "background-color: #{@event.track.color}; color: #{ contrast_color(@event.track.color) }"}
|
%span.label{style: "background-color: #{@event.track.color}; color: #{ contrast_color(@event.track.color) }"}
|
||||||
= @event.track.name
|
= @event.track.name
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%dt Audience:
|
%dt Difficulty:
|
||||||
%dd
|
%dd
|
||||||
- if @event.difficulty_level
|
- if @event.difficulty_level
|
||||||
%span.label{style: "background-color: #{@event.difficulty_level.color}; color: #{ contrast_color(@event.difficulty_level.color) };"}
|
%span.label{style: "background-color: #{@event.difficulty_level.color}; color: #{ contrast_color(@event.difficulty_level.color) };"}
|
||||||
|
|
@ -118,7 +118,7 @@
|
||||||
%dl
|
%dl
|
||||||
%dt Start Time:
|
%dt Start Time:
|
||||||
%dd
|
%dd
|
||||||
= event.program.selected_event_schedules.find { |es| es.event == event }.start_time.strftime("%Y %B %e %-I:%M %p")
|
= event.program.selected_event_schedules.find { |es| es.event == event }.start_time.strftime("%Y %B %e %H:%M")
|
||||||
%br
|
%br
|
||||||
%dt Room:
|
%dt Room:
|
||||||
%dd
|
%dd
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@
|
||||||
- interval_count.times do
|
- interval_count.times do
|
||||||
%th.date
|
%th.date
|
||||||
%span
|
%span
|
||||||
= (td_start_time).strftime("%-I:%M %p")
|
= (td_start_time).strftime("%H:")
|
||||||
|
%span
|
||||||
|
= (td_start_time).strftime("%M")
|
||||||
- td_start_time += @step_minutes
|
- td_start_time += @step_minutes
|
||||||
- start_room_time = start_time
|
- start_room_time = start_time
|
||||||
- @rooms.each do |room|
|
- @rooms.each do |room|
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,9 @@
|
||||||
%span.track
|
%span.track
|
||||||
%span.fa-solid.fa-clock
|
%span.fa-solid.fa-clock
|
||||||
%span.label{ style: "background-color: grey" }
|
%span.label{ style: "background-color: grey" }
|
||||||
= event_schedule.start_time.strftime('%-I:%M %p')
|
= event_schedule.start_time.strftime('%H:%M')
|
||||||
\-
|
\-
|
||||||
= event_schedule.end_time.strftime('%-I:%M %p')
|
= event_schedule.end_time.strftime('%H:%M')
|
||||||
%span.track
|
%span.track
|
||||||
%span.fa-solid.fa-location-dot
|
%span.fa-solid.fa-location-dot
|
||||||
%span.label{ style: "background-color: grey" }
|
%span.label{ style: "background-color: grey" }
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// hide the right and left controls when necessary after moving the carousel
|
// hide the right and left controls when neccesary after moving the carousel
|
||||||
$('.carousel').on('slid.bs.carousel', '',
|
$('.carousel').on('slid.bs.carousel', '',
|
||||||
function(){
|
function(){
|
||||||
$(this).children('.left.carousel-control').show();
|
$(this).children('.left.carousel-control').show();
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
/ scheduled events
|
/ scheduled events
|
||||||
- date = nil
|
- date = nil
|
||||||
|
- time = nil
|
||||||
- @events_schedules.each do |event_schedule|
|
- @events_schedules.each do |event_schedule|
|
||||||
- unless event_schedule.start_time.strftime('%Y-%m-%d').eql?(date)
|
- unless event_schedule.start_time.strftime('%Y-%m-%d').eql?(date)
|
||||||
.col-xs-12.col-md-12
|
.col-xs-12.col-md-12
|
||||||
|
|
@ -29,11 +30,15 @@
|
||||||
= date = event_schedule.start_time.strftime('%Y-%m-%d')
|
= date = event_schedule.start_time.strftime('%Y-%m-%d')
|
||||||
%a{ title: "Go up", class: "pull-right", href: "#program" }
|
%a{ title: "Go up", class: "pull-right", href: "#program" }
|
||||||
%i{ class: "fa-solid fa-angles-up fa-lg", 'aria-hidden' => true }
|
%i{ class: "fa-solid fa-angles-up fa-lg", 'aria-hidden' => true }
|
||||||
.col-xs-12.col-md-1
|
- unless event_schedule.start_time.strftime('%H:%M').eql?(time)
|
||||||
.start-time
|
.col-xs-12.col-md-1
|
||||||
= event_schedule.start_time.strftime('%-I:%M %p')
|
.start-time
|
||||||
.col-xs-12.col-md-11
|
= time = event_schedule.start_time.strftime('%H:%M')
|
||||||
.new-time-event
|
.col-xs-12.col-md-11
|
||||||
|
.new-time-event
|
||||||
|
= render partial: 'event', locals: { event: event_schedule.event, event_schedule: event_schedule }
|
||||||
|
- else
|
||||||
|
.col-xs-12.col-md-11.col-md-offset-1
|
||||||
= render partial: 'event', locals: { event: event_schedule.event, event_schedule: event_schedule }
|
= render partial: 'event', locals: { event: event_schedule.event, event_schedule: event_schedule }
|
||||||
|
|
||||||
/ confirmed events that are not scheduled
|
/ confirmed events that are not scheduled
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// hide the right and left controls when necessary after moving the carousel
|
// hide the right and left controls when neccesary after moving the carousel
|
||||||
$('.carousel').on('slid.bs.carousel', '',
|
$('.carousel').on('slid.bs.carousel', '',
|
||||||
function(){
|
function(){
|
||||||
$(this).children('.left.carousel-control').show();
|
$(this).children('.left.carousel-control').show();
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
%th Updated Attribute
|
%th Updated Attribute
|
||||||
|
|
||||||
%th{ class: "#{'hidden' if version.event == 'create'}" }
|
%th{ class: "#{'hidden' if version.event == 'create'}" }
|
||||||
Previous Value
|
Prevous Value
|
||||||
|
|
||||||
%th{ class: "#{'hidden' if version.event == 'destroy'}" }
|
%th{ class: "#{'hidden' if version.event == 'destroy'}" }
|
||||||
New Value
|
New Value
|
||||||
|
|
|
||||||
0
bin/bundle
Normal file → Executable file
0
bin/bundle
Normal file → Executable file
0
bin/bundle_report
Normal file → Executable file
0
bin/bundle_report
Normal file → Executable file
0
bin/delayed_job
Normal file → Executable file
0
bin/delayed_job
Normal file → Executable file
0
bin/deprecations
Normal file → Executable file
0
bin/deprecations
Normal file → Executable file
0
bin/gem-next-diff
Normal file → Executable file
0
bin/gem-next-diff
Normal file → Executable file
0
bin/next
Normal file → Executable file
0
bin/next
Normal file → Executable file
0
bin/rails
Normal file → Executable file
0
bin/rails
Normal file → Executable file
0
bin/rake
Normal file → Executable file
0
bin/rake
Normal file → Executable file
0
bin/rspec
Normal file → Executable file
0
bin/rspec
Normal file → Executable file
|
|
@ -1,25 +1,24 @@
|
||||||
services:
|
services:
|
||||||
postgres:
|
production_database:
|
||||||
image: postgres:16-alpine
|
image: postgres:12-alpine
|
||||||
environment:
|
environment:
|
||||||
PGDATA: /var/lib/postgresql/data/pgdata
|
PGDATA: /var/lib/postgresql/data/pgdata
|
||||||
POSTGRES_USER: osem
|
|
||||||
POSTGRES_PASSWORD: mysecretpassword
|
POSTGRES_PASSWORD: mysecretpassword
|
||||||
volumes:
|
volumes:
|
||||||
- osem_production_database:/var/lib/postgresql/data/pgdata
|
- osem_production_database:/var/lib/postgresql/data/pgdata
|
||||||
osem:
|
production_web:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile.production
|
dockerfile: Dockerfile.production
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- production_database
|
||||||
ports:
|
ports:
|
||||||
- 80:5000
|
- 8080:3000
|
||||||
env_file: .env.production # see dotenv.example file
|
env_file: .env.production # see dotenv.example file
|
||||||
environment:
|
environment:
|
||||||
OSEM_DB_HOST: postgres
|
OSEM_DB_HOST: production_database
|
||||||
OSEM_DB_USER: osem
|
RAILS_SERVE_STATIC_FILES: 'true'
|
||||||
OSEM_DB_PASSWORD: mysecretpassword
|
command: foreman start -p 3000
|
||||||
volumes:
|
volumes:
|
||||||
- osem_production_web_data:/osem/public/system
|
- osem_production_web_data:/osem/public/system
|
||||||
- osem_production_web_assets:/osem/public/assets
|
- osem_production_web_assets:/osem/public/assets
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
# The name of the host the database runs on
|
# The name of the host the database runs on
|
||||||
# OSEM_DB_HOST=database
|
# OSEM_DB_HOST=database
|
||||||
|
|
||||||
# The port the database runs on
|
# The port the databse runs on
|
||||||
# OSEM_DB_PORT=3306
|
# OSEM_DB_PORT=3306
|
||||||
|
|
||||||
# The user to access the database with
|
# The user to access the database with
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ namespace :data do
|
||||||
task demo: :environment do
|
task demo: :environment do
|
||||||
include FactoryBot::Syntax::Methods
|
include FactoryBot::Syntax::Methods
|
||||||
|
|
||||||
conference = create(:full_conference, title: 'Open Source Event Manager Demo', short_title: 'osemdemo' ,description: "This is an [Open Source Event Manager](http://osem.io/) demo instance. You can log in as **admin** with the password **password123** or you [sign up](/accounts/sign_up) as a user. We hope you enjoy checking out all the functionality, if you have questions do not hesitate to contact us on [IRC](https://web.libera.chat/#osem) or file an issue on [GitHub](https://github.com/openSUSE/osem).\r\n\r\n## Data will be destroyed every thirty minutes! (next reset: #{29.minutes.after})")
|
conference = create(:full_conference, title: 'Open Source Event Manager Demo', short_title: 'osemdemo' ,description: "This is a [Open Source Event Manager](http://osem.io/) demo instance. You can log in as **admin** with the password **password123** or just you just [sign up](/accounts/sign_up) with your own user. We hope you enjoy checking out all the functionality, if you have questions don't hesitate to [contact us](http://osem.io/#contact)!\r\n\r\n## Data will be destroyed every thirty minutes or whenever someone updates the [OSEM source code on github](https://github.com/openSUSE/osem/commits/master).")
|
||||||
conference.contact.update(email: 'osemdemo@osem.io', sponsor_email: 'osemdemo@osem.io')
|
conference.contact.update(email: 'osemdemo@osem.io', sponsor_email: 'osemdemo@osem.io')
|
||||||
create(:admin, email: 'admin@osem.io', username: 'admin', password: 'password123', password_confirmation: 'password123')
|
create(:admin, email: 'admin@osem.io', username: 'admin', password: 'password123', password_confirmation: 'password123')
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ namespace :data do
|
||||||
task surveys: :environment do
|
task surveys: :environment do
|
||||||
conference = create(:full_conference, start_date: Date.current, end_date: Date.current + 1.day)
|
conference = create(:full_conference, start_date: Date.current, end_date: Date.current + 1.day)
|
||||||
survey_after_conference_active = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date - 1.day, end_date: conference.end_date + 5.days, description: 'Survey about the conference. You can already see it.')
|
survey_after_conference_active = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date - 1.day, end_date: conference.end_date + 5.days, description: 'Survey about the conference. You can already see it.')
|
||||||
# survey_after_conference_inactive = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date + 1.day, end_date: conference.end_date + 5.days, description: 'Survey about the conference. Not available yet!')
|
# survey_after_conference_inactive = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date + 1.day, end_date: conference.end_date + 5.days, description: 'Survey abou the conference. Not available yet!')
|
||||||
# survey_on_registration = create(:survey, surveyable: conference, target: :during_registration, title: 'Survey during registation', start_date: conference.registration_period.start_date, end_date: conference.registration_period.end_date, description: 'Survey during registration.')
|
# survey_on_registration = create(:survey, surveyable: conference, target: :during_registration, title: 'Survey during registation', start_date: conference.registration_period.start_date, end_date: conference.registration_period.end_date, description: 'Survey during registration.')
|
||||||
|
|
||||||
create(:boolean_non_mandatory, survey: survey_after_conference_active)
|
create(:boolean_non_mandatory, survey: survey_after_conference_active)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ namespace :user do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Set email_public attribute true for all users"
|
desc "Set email_public attrubute true for all users"
|
||||||
task :set_email_public => :environment do
|
task :set_email_public => :environment do
|
||||||
User.update_all email_public: true
|
User.update_all email_public: true
|
||||||
end
|
end
|
||||||
|
|
|
||||||
11
railway.json
Normal file
11
railway.json
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://railway.app/railway.schema.json",
|
||||||
|
"build": {
|
||||||
|
"builder": "nixpacks"
|
||||||
|
},
|
||||||
|
"deploy": {
|
||||||
|
"startCommand": "foreman start -p 3000",
|
||||||
|
"restartPolicyType": "ON_FAILURE",
|
||||||
|
"restartPolicyMaxRetries": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -264,31 +264,5 @@ describe 'User' do
|
||||||
it{ should_not be_able_to(:edit, other_self_organized_track) }
|
it{ should_not be_able_to(:edit, other_self_organized_track) }
|
||||||
it{ should_not be_able_to(:update, other_self_organized_track) }
|
it{ should_not be_able_to(:update, other_self_organized_track) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when user is organizer of conference' do
|
|
||||||
let(:conference) { create(:conference) }
|
|
||||||
let(:user) { create(:organizer, resource: conference) }
|
|
||||||
let(:event_in_conference) { create(:event, program: conference.program) }
|
|
||||||
let(:event_in_other_conference) { create(:event) }
|
|
||||||
let(:commercial_in_conference) { create(:commercial, commercialable: event_in_conference) }
|
|
||||||
let(:commercial_in_other_conference) { create(:commercial, commercialable: event_in_other_conference) }
|
|
||||||
|
|
||||||
it{ should be_able_to(:create, event_in_conference.commercials.new) }
|
|
||||||
it{ should be_able_to(:manage, commercial_in_conference) }
|
|
||||||
it{ should_not be_able_to(:manage, commercial_in_other_conference) }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is on cfp team of conference' do
|
|
||||||
let(:conference) { create(:conference) }
|
|
||||||
let(:user) { create(:cfp_user, resource: conference) }
|
|
||||||
let(:event_in_conference) { create(:event, program: conference.program) }
|
|
||||||
let(:event_in_other_conference) { create(:event) }
|
|
||||||
let(:commercial_in_conference) { create(:commercial, commercialable: event_in_conference) }
|
|
||||||
let(:commercial_in_other_conference) { create(:commercial, commercialable: event_in_other_conference) }
|
|
||||||
|
|
||||||
it{ should be_able_to(:create, event_in_conference.commercials.new) }
|
|
||||||
it{ should be_able_to(:manage, commercial_in_conference) }
|
|
||||||
it{ should_not be_able_to(:manage, commercial_in_other_conference) }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
FactoryBot.define do
|
FactoryBot.define do
|
||||||
factory :comment do
|
factory :comment do
|
||||||
body { 'Most interesting comment ever, created by a girl.' }
|
body { 'Most interresting comment ever, created by a girl.' }
|
||||||
user
|
user
|
||||||
association :commentable, factory: :event
|
association :commentable, factory: :event
|
||||||
end
|
end
|
||||||
|
|
|
||||||
0
spec/models/conference_spec.rb
Normal file → Executable file
0
spec/models/conference_spec.rb
Normal file → Executable file
Loading…
Add table
Add a link
Reference in a new issue