Merge branch 'master' into ticket_button

This commit is contained in:
James Mason 2017-12-11 16:46:46 -08:00 • committed by GitHub
commit 827cb04a87
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
123 changed files with 713 additions and 387 deletions

View file

@ -1,19 +1,11 @@
# This configuration was generated by # This configuration was generated by
# `rubocop --auto-gen-config` # `rubocop --auto-gen-config`
# on 2017-07-14 12:03:16 +0000 using RuboCop version 0.49.1. # on 2017-11-27 22:40:12 +0530 using RuboCop version 0.51.0.
# The point is for the user to remove these configuration records # The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base. # one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new # Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again. # versions of RuboCop, may require this file to be generated again.
# Offense count: 15
# Cop supports --auto-correct.
# Configuration parameters: Include, TreatCommentsAsGroupSeparators.
# Include: **/Gemfile, **/gems.rb
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
@ -46,7 +38,7 @@ Layout/EmptyLineAfterMagicComment:
Exclude: Exclude:
- 'spec/models/conference_spec.rb' - 'spec/models/conference_spec.rb'
# Offense count: 104 # Offense count: 109
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: empty_lines, no_empty_lines # SupportedStyles: empty_lines, no_empty_lines
@ -151,7 +143,7 @@ Layout/MultilineHashBraceLayout:
Layout/MultilineMethodCallBraceLayout: Layout/MultilineMethodCallBraceLayout:
Enabled: false Enabled: false
# Offense count: 55 # Offense count: 53
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: aligned, indented, indented_relative_to_receiver # SupportedStyles: aligned, indented, indented_relative_to_receiver
@ -192,10 +184,11 @@ Layout/SpaceAroundOperators:
Exclude: Exclude:
- 'lib/tasks/data.rake' - 'lib/tasks/data.rake'
# Offense count: 416 # Offense count: 463
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles, SupportedStylesForEmptyBraces.
# SupportedStyles: space, no_space # SupportedStyles: space, no_space
# SupportedStylesForEmptyBraces: space, no_space
Layout/SpaceBeforeBlockBraces: Layout/SpaceBeforeBlockBraces:
Enabled: false Enabled: false
@ -205,20 +198,13 @@ Layout/SpaceBeforeComma:
Exclude: Exclude:
- 'lib/tasks/data_demo.rake' - 'lib/tasks/data_demo.rake'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment.
Layout/SpaceBeforeFirstArg:
Exclude:
- 'spec/controllers/admin/roles_controller_spec.rb'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
Layout/SpaceBeforeSemicolon: Layout/SpaceBeforeSemicolon:
Exclude: Exclude:
- 'Guardfile' - 'Guardfile'
# Offense count: 51 # Offense count: 54
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces, SpaceBeforeBlockParameters. # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces, SpaceBeforeBlockParameters.
# SupportedStyles: space, no_space # SupportedStyles: space, no_space
@ -293,6 +279,13 @@ Lint/IneffectiveAccessModifier:
- 'app/models/conference.rb' - 'app/models/conference.rb'
# Offense count: 2 # Offense count: 2
Lint/RescueWithoutErrorClass:
Exclude:
- 'app/controllers/users/omniauth_callbacks_controller.rb'
- 'lib/tasks/migrate_config.rake'
# Offense count: 2
# Cop supports --auto-correct.
Lint/ScriptPermission: Lint/ScriptPermission:
Exclude: Exclude:
- 'Guardfile' - 'Guardfile'
@ -305,49 +298,41 @@ Lint/UnusedBlockArgument:
Exclude: Exclude:
- 'lib/tasks/user.rake' - 'lib/tasks/user.rake'
# Offense count: 114 # Offense count: 136
Metrics/AbcSize: Metrics/AbcSize:
Max: 86 Max: 86
# Offense count: 233 # Offense count: 258
# Configuration parameters: CountComments, ExcludedMethods. # Configuration parameters: CountComments, ExcludedMethods.
Metrics/BlockLength: Metrics/BlockLength:
Max: 471 Max: 471
# Offense count: 23 # Offense count: 28
Metrics/CyclomaticComplexity: Metrics/CyclomaticComplexity:
Max: 12 Max: 14
Exclude:
- 'app/models/track.rb'
# Offense count: 2353 # Offense count: 2774
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https # URISchemes: http, https
Metrics/LineLength: Metrics/LineLength:
Max: 619 Max: 619
# Offense count: 120 # Offense count: 133
# Configuration parameters: CountComments. # Configuration parameters: CountComments.
Metrics/MethodLength: Metrics/MethodLength:
Max: 56 Max: 56
Exclude:
- 'app/models/admin_ability.rb'
# Offense count: 3 # Offense count: 4
# Configuration parameters: CountComments. # Configuration parameters: CountComments.
Metrics/ModuleLength: Metrics/ModuleLength:
Max: 159 Max: 171
Exclude:
- 'app/helpers/format_helper.rb'
# Offense count: 15
Metrics/PerceivedComplexity:
Max: 16
Exclude:
- 'app/models/track.rb'
# Offense count: 20 # Offense count: 20
Style/AccessorMethodName: Metrics/PerceivedComplexity:
Max: 16
# Offense count: 20
Naming/AccessorMethodName:
Exclude: Exclude:
- 'app/controllers/admin/events_controller.rb' - 'app/controllers/admin/events_controller.rb'
- 'app/controllers/application_controller.rb' - 'app/controllers/application_controller.rb'
@ -356,6 +341,51 @@ Style/AccessorMethodName:
- 'app/models/target.rb' - 'app/models/target.rb'
- 'app/models/user.rb' - 'app/models/user.rb'
# Offense count: 2
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
Naming/FileName:
Exclude:
- 'Gemfile'
- 'Vagrantfile'
# Offense count: 2
# Configuration parameters: Blacklist.
# Blacklist: END, (?-mix:EO[A-Z]{1})
Naming/HeredocDelimiterNaming:
Exclude:
- 'spec/factories/users.rb'
- 'spec/models/user_spec.rb'
# Offense count: 2
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist, MethodDefinitionMacros.
# NamePrefix: is_, has_, have_
# NamePrefixBlacklist: is_, has_, have_
# NameWhitelist: is_a?
# MethodDefinitionMacros: define_method, define_singleton_method
Naming/PredicateName:
Exclude:
- 'spec/**/*'
- 'app/models/comment.rb'
- 'app/models/contact.rb'
# Offense count: 2
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: snake_case, normalcase, non_integer
Naming/VariableNumber:
Exclude:
- 'spec/models/ticket_purchase_spec.rb'
# Offense count: 4
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect.
Performance/HashEachMethods:
Exclude:
- 'app/controllers/admin/conferences_controller.rb'
- 'app/helpers/application_helper.rb'
- 'db/migrate/20140701123203_add_events_per_week_to_conference.rb'
- 'spec/factories/event_users.rb'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles.
@ -386,7 +416,14 @@ Style/ConditionalAssignment:
- 'db/migrate/20140610165551_migrate_data_person_to_user.rb' - 'db/migrate/20140610165551_migrate_data_person_to_user.rb'
- 'db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb' - 'db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb'
# Offense count: 464 # Offense count: 9
Style/DateTime:
Exclude:
- 'app/models/conference.rb'
- 'app/models/program.rb'
- 'spec/models/conference_spec.rb'
# Offense count: 488
Style/Documentation: Style/Documentation:
Enabled: false Enabled: false
@ -419,14 +456,13 @@ Style/EmptyMethod:
- 'db/migrate/20130216122155_set_registration_defaults_to_false.rb' - 'db/migrate/20130216122155_set_registration_defaults_to_false.rb'
# Offense count: 2 # Offense count: 2
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms. # Cop supports --auto-correct.
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS Style/Encoding:
Style/FileName:
Exclude: Exclude:
- 'Gemfile' - 'app/uploaders/picture_uploader.rb'
- 'Vagrantfile' - 'spec/models/conference_spec.rb'
# Offense count: 24 # Offense count: 32
# Configuration parameters: MinBodyLength. # Configuration parameters: MinBodyLength.
Style/GuardClause: Style/GuardClause:
Enabled: false Enabled: false
@ -445,7 +481,6 @@ Style/HashSyntax:
# Configuration parameters: MaxLineLength. # Configuration parameters: MaxLineLength.
Style/IfUnlessModifier: Style/IfUnlessModifier:
Exclude: Exclude:
- 'app/controllers/admin/booths_controller.rb'
- 'app/controllers/admin/events_controller.rb' - 'app/controllers/admin/events_controller.rb'
- 'app/controllers/api/v1/events_controller.rb' - 'app/controllers/api/v1/events_controller.rb'
- 'app/controllers/conference_registrations_controller.rb' - 'app/controllers/conference_registrations_controller.rb'
@ -454,7 +489,6 @@ Style/IfUnlessModifier:
- 'app/models/commercial.rb' - 'app/models/commercial.rb'
- 'app/models/conference.rb' - 'app/models/conference.rb'
- 'app/models/email_settings.rb' - 'app/models/email_settings.rb'
- 'app/models/ticket_purchase.rb'
- 'app/models/user.rb' - 'app/models/user.rb'
- 'db/migrate/20151031092713_change_conference_id_to_venue_id_in_rooms.rb' - 'db/migrate/20151031092713_change_conference_id_to_venue_id_in_rooms.rb'
- 'lib/tasks/events_registrations.rake' - 'lib/tasks/events_registrations.rake'
@ -469,7 +503,7 @@ Style/LineEndConcatenation:
- 'spec/features/conference_spec.rb' - 'spec/features/conference_spec.rb'
- 'spec/features/registration_periods_spec.rb' - 'spec/features/registration_periods_spec.rb'
# Offense count: 6 # Offense count: 9
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: require_parentheses, require_no_parentheses, require_no_parentheses_except_multiline # SupportedStyles: require_parentheses, require_no_parentheses, require_no_parentheses_except_multiline
@ -498,12 +532,14 @@ Style/MutableConstant:
# Offense count: 4 # Offense count: 4
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: Whitelist.
# Whitelist: be, be_a, be_an, be_between, be_falsey, be_kind_of, be_instance_of, be_truthy, be_within, eq, eql, end_with, include, match, raise_error, respond_to, start_with
Style/NestedParenthesizedCalls: Style/NestedParenthesizedCalls:
Exclude: Exclude:
- 'spec/features/conference_spec.rb' - 'spec/features/conference_spec.rb'
- 'spec/models/conference_spec.rb' - 'spec/models/conference_spec.rb'
# Offense count: 26 # Offense count: 27
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles. # Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
# SupportedStyles: skip_modifier_ifs, always # SupportedStyles: skip_modifier_ifs, always
@ -548,6 +584,12 @@ Style/OptionalArguments:
Exclude: Exclude:
- 'app/models/event.rb' - 'app/models/event.rb'
# Offense count: 1
# Cop supports --auto-correct.
Style/OrAssignment:
Exclude:
- 'app/controllers/schedules_controller.rb'
# Offense count: 3 # Offense count: 3
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: AllowSafeAssignment. # Configuration parameters: AllowSafeAssignment.
@ -557,7 +599,7 @@ Style/ParenthesesAroundCondition:
- 'app/controllers/application_controller.rb' - 'app/controllers/application_controller.rb'
- 'app/helpers/format_helper.rb' - 'app/helpers/format_helper.rb'
# Offense count: 14 # Offense count: 15
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: PreferredDelimiters. # Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters: Style/PercentLiteralDelimiters:
@ -571,20 +613,9 @@ Style/PercentLiteralDelimiters:
- 'app/models/contact.rb' - 'app/models/contact.rb'
- 'app/models/registration.rb' - 'app/models/registration.rb'
- 'app/models/subscription.rb' - 'app/models/subscription.rb'
- 'app/models/track.rb'
- 'app/uploaders/picture_uploader.rb' - 'app/uploaders/picture_uploader.rb'
- 'spec/models/program_spec.rb' - 'spec/models/program_spec.rb'
- 'app/models/track.rb'
# Offense count: 2
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
# NamePrefix: is_, has_, have_
# NamePrefixBlacklist: is_, has_, have_
# NameWhitelist: is_a?
Style/PredicateName:
Exclude:
- 'spec/**/*'
- 'app/models/comment.rb'
- 'app/models/contact.rb'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
@ -607,16 +638,6 @@ Style/RedundantParentheses:
Exclude: Exclude:
- 'app/controllers/admin/base_controller.rb' - 'app/controllers/admin/base_controller.rb'
# Offense count: 9
# Cop supports --auto-correct.
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/helpers/application_helper.rb'
- 'app/helpers/format_helper.rb'
- 'app/helpers/paths_helper.rb'
- 'app/helpers/users_helper.rb'
# Offense count: 2 # Offense count: 2
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes. # Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
@ -662,7 +683,7 @@ Style/StringLiteralsInInterpolation:
Exclude: Exclude:
- 'lib/tasks/dump_db.rake' - 'lib/tasks/dump_db.rake'
# Offense count: 73 # Offense count: 79
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinSize, SupportedStyles. # Configuration parameters: EnforcedStyle, MinSize, SupportedStyles.
# SupportedStyles: percent, brackets # SupportedStyles: percent, brackets
@ -701,17 +722,3 @@ Style/TrailingCommaInLiteral:
- 'Guardfile' - 'Guardfile'
- 'db/migrate/20140701123203_add_events_per_week_to_conference.rb' - 'db/migrate/20140701123203_add_events_per_week_to_conference.rb'
- 'spec/models/conference_spec.rb' - 'spec/models/conference_spec.rb'
# Offense count: 3
# Cop supports --auto-correct.
Style/UnneededInterpolation:
Exclude:
- 'app/helpers/format_helper.rb'
- 'spec/controllers/admin/conferences_controller_spec.rb'
# Offense count: 2
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: snake_case, normalcase, non_integer
Style/VariableNumber:
Exclude:
- 'spec/models/ticket_purchase_spec.rb'

View file

@ -22,7 +22,7 @@ before_script:
- cp config/database.yml.travis config/database.yml - cp config/database.yml.travis config/database.yml
- cp config/secrets.yml.example config/secrets.yml - cp config/secrets.yml.example config/secrets.yml
- mysql -u root -e 'create database osem_test;' - mysql -u root -e 'create database osem_test;'
- RAILS_ENV=test bundle exec rake db:migrate --trace - RAILS_ENV=test bundle exec rake db:schema:load --trace
script: script:
- "./travis_script.sh $TEST_SUITE" - "./travis_script.sh $TEST_SUITE"
env: env:

49
Gemfile
View file

@ -6,7 +6,10 @@ if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4')
end end
# as web framework # as web framework
gem 'rails', '~> 4.2.8' gem 'rails', '~> 5.0.5'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# enables serving assets in production and setting your logger to standard out # enables serving assets in production and setting your logger to standard out
# both of which are required to run an application on a twelve-factor provider # both of which are required to run an application on a twelve-factor provider
@ -27,11 +30,11 @@ gem 'paper_trail'
# for upload management # for upload management
gem 'carrierwave' gem 'carrierwave'
gem 'mini_magick'
gem 'carrierwave-bombshelter' gem 'carrierwave-bombshelter'
gem 'mini_magick'
# for internationalizing # for internationalizing
gem 'rails-i18n', '~> 4.0.0' gem 'rails-i18n', '~> 5.0.0'
# as authentification framework # as authentification framework
gem 'devise' gem 'devise'
@ -40,12 +43,15 @@ gem 'devise_ichain_authenticatable'
# for openID authentication # for openID authentication
gem 'omniauth' gem 'omniauth'
gem 'omniauth-facebook' gem 'omniauth-facebook'
gem 'omniauth-openid'
gem 'omniauth-google-oauth2'
gem 'omniauth-github' gem 'omniauth-github'
gem 'omniauth-google-oauth2'
gem 'omniauth-openid'
# Bot-filtering
gem 'recaptcha', require: 'recaptcha/rails'
# as authorization framework # as authorization framework
gem 'cancancan' gem 'cancancan', '~> 2.0'
# for roles # for roles
gem 'rolify' gem 'rolify'
@ -57,8 +63,8 @@ gem 'unobtrusive_flash', '>=3'
gem 'transitions', :require => %w( transitions active_record/transitions ) gem 'transitions', :require => %w( transitions active_record/transitions )
# for comments # for comments
gem 'awesome_nested_set', '~> 3.1.3'
gem 'acts_as_commentable_with_threading' gem 'acts_as_commentable_with_threading'
gem 'awesome_nested_set', '~> 3.1.3'
# as templating language # as templating language
gem 'haml-rails' gem 'haml-rails'
@ -70,11 +76,11 @@ gem 'sass-rails', '>= 4.0.2'
gem 'uglifier', '>= 1.3.0' gem 'uglifier', '>= 1.3.0'
# as the front-end framework # as the front-end framework
gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'autoprefixer-rails' gem 'autoprefixer-rails'
gem 'formtastic-bootstrap' gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'formtastic', '~> 3.1.1'
gem 'cocoon' gem 'cocoon'
gem 'formtastic', '~> 3.1.5'
gem 'formtastic-bootstrap'
# as the JavaScript library # as the JavaScript library
gem 'jquery-rails' gem 'jquery-rails'
@ -105,8 +111,8 @@ source 'https://rails-assets.org' do
gem 'rails-assets-waypoints' gem 'rails-assets-waypoints'
# for markdown editors # for markdown editors
gem 'rails-assets-bootstrap-markdown' gem 'rails-assets-bootstrap-markdown'
gem 'rails-assets-to-markdown'
gem 'rails-assets-markdown' gem 'rails-assets-markdown'
gem 'rails-assets-to-markdown'
end end
# as date picker # as date picker
@ -126,9 +132,9 @@ gem 'gravtastic'
gem 'country_select' gem 'country_select'
# as PDF generator # as PDF generator
gem 'prawn-qrcode', '~> 0.2.2.1'
gem 'prawn_rails' gem 'prawn_rails'
gem 'rqrcode' gem 'rqrcode'
gem 'prawn-qrcode', '~> 0.2.2.1'
# to render XLS spreadsheets # to render XLS spreadsheets
gem 'axlsx', git: 'https://github.com/randym/axlsx.git' gem 'axlsx', git: 'https://github.com/randym/axlsx.git'
@ -154,12 +160,11 @@ gem 'rdoc-generator-fivefish'
# for visitor tracking # for visitor tracking
gem 'ahoy_matey' gem 'ahoy_matey'
gem 'activeuuid'
gem 'piwik_analytics', '~> 1.0.1' gem 'piwik_analytics', '~> 1.0.1'
# for recurring jobs # for recurring jobs
gem 'whenever', :require => false
gem 'delayed_job_active_record' gem 'delayed_job_active_record'
gem 'whenever', :require => false
# to run scripts # to run scripts
gem 'daemons' gem 'daemons'
@ -182,6 +187,10 @@ gem 'cloudinary'
# for setting app configuration in the environment # for setting app configuration in the environment
gem 'dotenv-rails' gem 'dotenv-rails'
# configurable toggles for functionality
# https://github.com/mgsnova/feature
gem 'feature'
# For countable.js # For countable.js
gem "countable-rails", "~> 0.0.1" gem "countable-rails", "~> 0.0.1"
@ -209,10 +218,10 @@ gem 'nokogiri', '>= 1.8.1'
group :development do group :development do
# to launch specs when files are modified # to launch specs when files are modified
gem 'guard-rspec' gem 'guard-rspec'
gem 'spring-commands-rspec'
gem 'haml_lint', '~> 0.24.0' gem 'haml_lint', '~> 0.24.0'
gem 'spring-commands-rspec'
# for static code analisys # for static code analisys
gem 'rubocop', '~> 0.49.0', require: false gem 'rubocop', '~> 0.51.0', require: false
# as database # as database
gem 'sqlite3' gem 'sqlite3'
# to open mails # to open mails
@ -227,11 +236,11 @@ end
group :test do group :test do
# as test framework # as test framework
gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
gem 'database_cleaner'
gem 'capybara' gem 'capybara'
gem 'poltergeist' gem 'database_cleaner'
gem 'phantomjs', :require => 'phantomjs/poltergeist' gem 'phantomjs', :require => 'phantomjs/poltergeist'
gem 'poltergeist'
gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
# for measuring test coverage # for measuring test coverage
gem 'coveralls', require: false gem 'coveralls', require: false
# for describing models # for describing models
@ -246,6 +255,8 @@ group :test do
gem 'stripe-ruby-mock' gem 'stripe-ruby-mock'
# For validating JSON schemas # For validating JSON schemas
gem 'json-schema' gem 'json-schema'
# For using 'assigns' in tests
gem 'rails-controller-testing'
end end
group :development, :test do group :development, :test do

View file

@ -12,62 +12,65 @@ GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
remote: https://rails-assets.org/ remote: https://rails-assets.org/
specs: specs:
actionmailer (4.2.9) actioncable (5.0.5)
actionpack (= 4.2.9) actionpack (= 5.0.5)
actionview (= 4.2.9) nio4r (>= 1.2, < 3.0)
activejob (= 4.2.9) websocket-driver (~> 0.6.1)
actionmailer (5.0.5)
actionpack (= 5.0.5)
actionview (= 5.0.5)
activejob (= 5.0.5)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
actionpack (4.2.9) actionpack (5.0.5)
actionview (= 4.2.9) actionview (= 5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
rack (~> 1.6) rack (~> 2.0)
rack-test (~> 0.6.2) rack-test (~> 0.6.3)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.9) actionview (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3) rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.9.4) active_model_serializers (0.9.4)
activemodel (>= 3.2) activemodel (>= 3.2)
activejob (4.2.9) activejob (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
globalid (>= 0.3.0) globalid (>= 0.3.6)
activemodel (4.2.9) activemodel (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
builder (~> 3.1) activerecord (5.0.5)
activerecord (4.2.9) activemodel (= 5.0.5)
activemodel (= 4.2.9) activesupport (= 5.0.5)
activesupport (= 4.2.9) arel (~> 7.0)
arel (~> 6.0) activesupport (5.0.5)
activesupport (4.2.9) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7) i18n (~> 0.7)
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
activeuuid (0.6.1)
activerecord (>= 3.1)
uuidtools
acts_as_commentable_with_threading (1.2.0) acts_as_commentable_with_threading (1.2.0)
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 (0.4.0) acts_as_list (0.9.7)
activerecord (>= 3.0) activerecord (>= 3.0)
addressable (2.5.1) addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2) public_suffix (~> 2.0, >= 2.0.2)
ahoy_matey (1.0.0) ahoy_matey (1.6.0)
addressable addressable
browser (>= 0.4.0) browser (~> 2.0)
geocoder geocoder
referer-parser rack-attack (< 6)
railties
referer-parser (>= 0.3.0)
request_store request_store
safely_block (>= 0.1.1)
user_agent_parser user_agent_parser
uuidtools uuidtools
arel (6.0.4) arel (7.1.4)
ast (2.3.0) ast (2.3.0)
autoprefixer-rails (7.1.1) autoprefixer-rails (7.1.1)
execjs execjs
@ -86,10 +89,10 @@ GEM
bootstrap-switch-rails (3.0.2) bootstrap-switch-rails (3.0.2)
bootstrap3-datetimepicker-rails (3.0.3) bootstrap3-datetimepicker-rails (3.0.3)
momentjs-rails (>= 2.8.1) momentjs-rails (>= 2.8.1)
browser (0.6.0) browser (2.5.1)
builder (3.2.3) builder (3.2.3)
byebug (9.0.6) byebug (9.0.6)
cancancan (1.13.1) cancancan (2.0.0)
capybara (2.6.2) capybara (2.6.2)
addressable addressable
mime-types (>= 1.16) mime-types (>= 1.16)
@ -144,7 +147,7 @@ GEM
daemons (1.1.9) daemons (1.1.9)
dante (0.2.0) dante (0.2.0)
database_cleaner (1.3.0) database_cleaner (1.3.0)
debug_inspector (0.0.2) debug_inspector (0.0.3)
delayed_job (4.1.3) delayed_job (4.1.3)
activesupport (>= 3.0, < 5.2) activesupport (>= 3.0, < 5.2)
delayed_job_active_record (4.1.2) delayed_job_active_record (4.1.2)
@ -166,6 +169,7 @@ GEM
dotenv-rails (2.2.1) dotenv-rails (2.2.1)
dotenv (= 2.2.1) dotenv (= 2.2.1)
railties (>= 3.2, < 5.2) railties (>= 3.2, < 5.2)
errbase (0.0.3)
erubis (2.7.0) erubis (2.7.0)
execjs (2.6.0) execjs (2.6.0)
factory_girl (4.5.0) factory_girl (4.5.0)
@ -179,15 +183,16 @@ GEM
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
fastimage (2.0.0) fastimage (2.0.0)
addressable (~> 2) addressable (~> 2)
feature (1.4.0)
ffi (1.9.18) ffi (1.9.18)
font-awesome-rails (4.7.0.2) font-awesome-rails (4.7.0.2)
railties (>= 3.2, < 5.2) railties (>= 3.2, < 5.2)
formatador (0.2.5) formatador (0.2.5)
formtastic (3.1.3) formtastic (3.1.5)
actionpack (>= 3.2.13) actionpack (>= 3.2.13)
formtastic-bootstrap (3.1.1) formtastic-bootstrap (3.1.1)
formtastic (>= 3.0) formtastic (>= 3.0)
geocoder (1.2.2) geocoder (1.4.4)
globalid (0.4.0) globalid (0.4.0)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
gravtastic (3.2.6) gravtastic (3.2.6)
@ -290,6 +295,7 @@ GEM
mysql2 (0.4.9) mysql2 (0.4.9)
nenv (0.3.0) nenv (0.3.0)
netrc (0.11.0) netrc (0.11.0)
nio4r (2.1.0)
nokogiri (1.8.1) nokogiri (1.8.1)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
notiffany (0.1.1) notiffany (0.1.1)
@ -324,9 +330,9 @@ GEM
activerecord (>= 3.0, < 6.0) activerecord (>= 3.0, < 6.0)
activesupport (>= 3.0, < 6.0) activesupport (>= 3.0, < 6.0)
request_store (~> 1.1) request_store (~> 1.1)
parallel (1.11.2) parallel (1.12.0)
parser (2.4.0.0) parser (2.4.0.2)
ast (~> 2.2) ast (~> 2.3)
pdf-core (0.2.5) pdf-core (0.2.5)
phantomjs (2.1.1.0) phantomjs (2.1.1.0)
piwik_analytics (1.0.2) piwik_analytics (1.0.2)
@ -353,23 +359,27 @@ GEM
method_source (~> 0.8.1) method_source (~> 0.8.1)
slop (~> 3.4) slop (~> 3.4)
public_suffix (2.0.5) public_suffix (2.0.5)
rack (1.6.8) puma (3.10.0)
rack (2.0.3)
rack-attack (5.0.1)
rack
rack-openid (1.3.1) rack-openid (1.3.1)
rack (>= 1.1.0) rack (>= 1.1.0)
ruby-openid (>= 2.1.8) ruby-openid (>= 2.1.8)
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
rails (4.2.9) rails (5.0.5)
actionmailer (= 4.2.9) actioncable (= 5.0.5)
actionpack (= 4.2.9) actionmailer (= 5.0.5)
actionview (= 4.2.9) actionpack (= 5.0.5)
activejob (= 4.2.9) actionview (= 5.0.5)
activemodel (= 4.2.9) activejob (= 5.0.5)
activerecord (= 4.2.9) activemodel (= 5.0.5)
activesupport (= 4.2.9) activerecord (= 5.0.5)
bundler (>= 1.3.0, < 2.0) activesupport (= 5.0.5)
railties (= 4.2.9) bundler (>= 1.3.0)
sprockets-rails railties (= 5.0.5)
sprockets-rails (>= 2.0.0)
rails-assets-bootstrap (3.3.6) rails-assets-bootstrap (3.3.6)
rails-assets-jquery (>= 1.9.1, < 3) rails-assets-jquery (>= 1.9.1, < 3)
rails-assets-bootstrap-markdown (2.10.0) rails-assets-bootstrap-markdown (2.10.0)
@ -387,30 +397,32 @@ GEM
rails-assets-to-markdown (1.3.0) rails-assets-to-markdown (1.3.0)
rails-assets-trianglify (0.4.0) rails-assets-trianglify (0.4.0)
rails-assets-waypoints (4.0.0) rails-assets-waypoints (4.0.0)
rails-deprecated_sanitizer (1.0.3) rails-controller-testing (1.0.2)
activesupport (>= 4.2.0.alpha) actionpack (~> 5.x, >= 5.0.1)
rails-dom-testing (1.0.8) actionview (~> 5.x, >= 5.0.1)
activesupport (>= 4.2.0.beta, < 5.0) activesupport (~> 5.x)
nokogiri (~> 1.6) rails-dom-testing (2.0.3)
rails-deprecated_sanitizer (>= 1.0.1) activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.3) rails-html-sanitizer (1.0.3)
loofah (~> 2.0) loofah (~> 2.0)
rails-i18n (4.0.8) rails-i18n (5.0.4)
i18n (~> 0.7) i18n (~> 0.7)
railties (~> 4.0) railties (~> 5.0)
rails_12factor (0.0.3) rails_12factor (0.0.3)
rails_serve_static_assets rails_serve_static_assets
rails_stdout_logging rails_stdout_logging
rails_serve_static_assets (0.0.4) rails_serve_static_assets (0.0.4)
rails_stdout_logging (0.0.3) rails_stdout_logging (0.0.3)
railties (4.2.9) railties (5.0.5)
actionpack (= 4.2.9) actionpack (= 5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
method_source
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.2.2) rainbow (2.2.2)
rake rake
rake (12.0.0) rake (12.3.0)
rb-fsevent (0.10.2) rb-fsevent (0.10.2)
rb-inotify (0.9.10) rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2) ffi (>= 0.5.0, < 2)
@ -420,8 +432,10 @@ GEM
loggability (~> 0.12) loggability (~> 0.12)
rdoc (~> 5.0) rdoc (~> 5.0)
yajl-ruby (~> 1.3) yajl-ruby (~> 1.3)
recaptcha (4.6.2)
json
redcarpet (3.2.3) redcarpet (3.2.3)
referer-parser (0.2.1) referer-parser (0.3.0)
request_store (1.1.0) request_store (1.1.0)
responders (2.4.0) responders (2.4.0)
actionpack (>= 4.2.0, < 5.3) actionpack (>= 4.2.0, < 5.3)
@ -458,19 +472,21 @@ GEM
rspec-mocks (~> 3.6.0) rspec-mocks (~> 3.6.0)
rspec-support (~> 3.6.0) rspec-support (~> 3.6.0)
rspec-support (3.6.0) rspec-support (3.6.0)
rubocop (0.49.1) rubocop (0.51.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0) parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1) powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0) rainbow (>= 2.2.2, < 3.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1) unicode-display_width (~> 1.0, >= 1.0.1)
ruby-oembed (0.8.14) ruby-oembed (0.8.14)
ruby-openid (2.5.0) ruby-openid (2.5.0)
ruby-progressbar (1.8.1) ruby-progressbar (1.9.0)
ruby_dep (1.5.0) ruby_dep (1.5.0)
rubyzip (1.2.1) rubyzip (1.2.1)
safe_yaml (1.0.4) safe_yaml (1.0.4)
safely_block (0.2.0)
errbase
sass (3.2.19) sass (3.2.19)
sass-rails (5.0.6) sass-rails (5.0.6)
railties (>= 4.0.0, < 6) railties (>= 4.0.0, < 6)
@ -497,10 +513,10 @@ GEM
sprockets (3.7.1) sprockets (3.7.1)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) rack (> 1, < 3)
sprockets-rails (2.3.3) sprockets-rails (3.2.1)
actionpack (>= 3.0) actionpack (>= 4.0)
activesupport (>= 3.0) activesupport (>= 4.0)
sprockets (>= 2.8, < 4.0) sprockets (>= 3.0.0)
sqlite3 (1.3.9) sqlite3 (1.3.9)
stripe (1.43.0) stripe (1.43.0)
rest-client (~> 1.4) rest-client (~> 1.4)
@ -531,11 +547,11 @@ GEM
unicode_utils (1.4.0) unicode_utils (1.4.0)
unobtrusive_flash (3.1.0) unobtrusive_flash (3.1.0)
railties railties
user_agent_parser (2.1.5) user_agent_parser (2.4.0)
uuidtools (2.1.5) uuidtools (2.1.5)
warden (1.2.4) warden (1.2.4)
rack (>= 1.0) rack (>= 1.0)
web-console (2.2.1) web-console (2.3.0)
activemodel (>= 4.0) activemodel (>= 4.0)
binding_of_caller (>= 0.7.2) binding_of_caller (>= 0.7.2)
railties (>= 4.0) railties (>= 4.0)
@ -552,14 +568,13 @@ GEM
chronic (>= 0.6.3) chronic (>= 0.6.3)
xpath (2.0.0) xpath (2.0.0)
nokogiri (~> 1.3) nokogiri (~> 1.3)
yajl-ruby (1.3.0) yajl-ruby (1.3.1)
PLATFORMS PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
active_model_serializers active_model_serializers
activeuuid
acts_as_commentable_with_threading acts_as_commentable_with_threading
acts_as_list acts_as_list
ahoy_matey ahoy_matey
@ -571,7 +586,7 @@ DEPENDENCIES
bootstrap-switch-rails (~> 3.0.0) bootstrap-switch-rails (~> 3.0.0)
bootstrap3-datetimepicker-rails (~> 3.0.2) bootstrap3-datetimepicker-rails (~> 3.0.2)
byebug byebug
cancancan cancancan (~> 2.0)
capybara capybara
carrierwave carrierwave
carrierwave-bombshelter carrierwave-bombshelter
@ -589,8 +604,9 @@ DEPENDENCIES
dotenv-rails dotenv-rails
factory_girl_rails factory_girl_rails
faker faker
feature
font-awesome-rails font-awesome-rails
formtastic (~> 3.1.1) formtastic (~> 3.1.5)
formtastic-bootstrap formtastic-bootstrap
gravtastic gravtastic
guard-rspec guard-rspec
@ -621,7 +637,8 @@ DEPENDENCIES
poltergeist poltergeist
prawn-qrcode (~> 0.2.2.1) prawn-qrcode (~> 0.2.2.1)
prawn_rails prawn_rails
rails (~> 4.2.8) puma (~> 3.0)
rails (~> 5.0.5)
rails-assets-bootstrap-markdown! rails-assets-bootstrap-markdown!
rails-assets-date.format! rails-assets-date.format!
rails-assets-holderjs! rails-assets-holderjs!
@ -633,16 +650,18 @@ DEPENDENCIES
rails-assets-to-markdown! rails-assets-to-markdown!
rails-assets-trianglify! rails-assets-trianglify!
rails-assets-waypoints! rails-assets-waypoints!
rails-i18n (~> 4.0.0) rails-controller-testing
rails-i18n (~> 5.0.0)
rails_12factor rails_12factor
rdoc-generator-fivefish rdoc-generator-fivefish
recaptcha
redcarpet redcarpet
responders (~> 2.0) responders (~> 2.0)
rolify rolify
rqrcode rqrcode
rspec-activemodel-mocks rspec-activemodel-mocks
rspec-rails (~> 3.5, >= 3.5.2) rspec-rails (~> 3.5, >= 3.5.2)
rubocop (~> 0.49.0) rubocop (~> 0.51.0)
ruby-oembed ruby-oembed
sass-rails (>= 4.0.2) sass-rails (>= 4.0.2)
selectize-rails selectize-rails
@ -663,4 +682,4 @@ DEPENDENCIES
whenever whenever
BUNDLED WITH BUNDLED WITH
1.15.4 1.16.0

View file

@ -42,7 +42,7 @@ There are two configurations to deploy OSEM with Docker: *evaluation mode* and *
If you want to evaluate OSEM to see if it fits your needs, the default configuration in `docker-compose.env` will work perfectly fine for you. If you want to evaluate OSEM to see if it fits your needs, the default configuration in `docker-compose.env` will work perfectly fine for you.
For convenience reasons, `docker-compose.yml` already contains a [MailHog](https://github.com/mailhog/MailHog) service configuration. MailHog For convenience reasons, `docker-compose.yml` already contains a [MailHog](https://github.com/mailhog/MailHog) service configuration. MailHog
is going to catch every email sent by OSEM and displays them on a special web service. Thus, it eliminitates the need to set up an SMTP server just to try out OSEM. is going to catch every email sent by OSEM and displays them on a special web service. Thus, it eliminates the need to set up an SMTP server just to try out OSEM.
Just point your browser to http://localhost:8025 to get access to registration confirmation links etc. Just point your browser to http://localhost:8025 to get access to registration confirmation links etc.
Run `docker-compose up --build` to start the services. On first run, it will take a few minutes to initialize the database. Thus, wait a few minutes before you open up Run `docker-compose up --build` to start the services. On first run, it will take a few minutes to initialize the database. Thus, wait a few minutes before you open up
@ -105,6 +105,7 @@ There are a couple of environment variables you can set to configure OSEM. Check
| CLOUDINARY_URL | *string* | Configure your cloudinary.com cloud name and api key/secret | CLOUDINARY_URL | *string* | Configure your cloudinary.com cloud name and api key/secret
| STRIPE_PUBLISHABLE_KEY | *string* | Publishable Key for Stripe Gateway | STRIPE_PUBLISHABLE_KEY | *string* | Publishable Key for Stripe Gateway
| STRIPE_SECRET_KEY | *string* | Secret Key for Stripe Gateway | STRIPE_SECRET_KEY | *string* | Secret Key for Stripe Gateway
| OSEM_REDIS_URL | *string* | Redis server URL e.g. redis://localhost:6379/1
### Online Ticket Payments ### Online Ticket Payments
We use [Stripe](https://stripe.com) for accepting your ticket payments securely over the web. We use [Stripe](https://stripe.com) for accepting your ticket payments securely over the web.

View file

@ -79,11 +79,23 @@ $(function () {
$("#conference-start-datepicker").on("dp.change",function (e) { $("#conference-start-datepicker").on("dp.change",function (e) {
$('#conference-end-datepicker').data("DateTimePicker").setMinDate(e.date); $('#conference-end-datepicker').data("DateTimePicker").setMinDate(e.date);
if (!$('#conference-end-datepicker').val()) {
$('#conference-end-datepicker').data("DateTimePicker").setDate(e.date);
}
}); });
$("#conference-start-datepicker").change(function (e) {
$('#conference-start-datepicker').val()?$('#conference-end-datepicker').data("DateTimePicker").setMinDate(e.date):$('#conference-end-datepicker').data("DateTimePicker").setMinDate(null);
});
$("#conference-end-datepicker").on("dp.change",function (e) { $("#conference-end-datepicker").on("dp.change",function (e) {
$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date); $('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date);
}); });
$("#conference-end-datepicker").change(function (e) {
$('#conference-end-datepicker').val()?$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date):$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(null);
});
$("#registration-period-start-datepicker").on("dp.change",function (e) { $("#registration-period-start-datepicker").on("dp.change",function (e) {
$('#registration-period-end-datepicker').data("DateTimePicker").setMinDate(e.date); $('#registration-period-end-datepicker').data("DateTimePicker").setMinDate(e.date);
}); });

View file

@ -1,3 +1,5 @@
@import "bootstrap/mixins";
html { html {
position: relative; position: relative;
min-height: 100%; min-height: 100%;
@ -104,3 +106,12 @@ p.comment-body {
.qr-image{ .qr-image{
margin-left: 120px; margin-left: 120px;
} }
.g-recaptcha {
@include clearfix;
padding-bottom: 12px;
div {
float: right;
}
}

View file

@ -1,6 +1,6 @@
module Admin module Admin
class BaseController < ApplicationController class BaseController < ApplicationController
before_filter :verify_user_admin before_action :verify_user_admin
private private

View file

@ -55,7 +55,7 @@ module Admin
private private
def cfp_params def cfp_params
params.require(:cfp).permit(:start_date, :end_date, :cfp_type) params.require(:cfp).permit(:start_date, :end_date, :description, :cfp_type)
end end
end end
end end

View file

@ -193,6 +193,7 @@ module Admin
def edit def edit
@conferences = Conference.all @conferences = Conference.all
@date_string = date_string(@conference.start_date, @conference.end_date) @date_string = date_string(@conference.start_date, @conference.end_date)
@affected_event_count = @conference.program.events.scheduled(@conference.program.selected_schedule_id).count
respond_to do |format| respond_to do |format|
format.html format.html
format.json { render json: @conference.to_json } format.json { render json: @conference.to_json }

View file

@ -2,7 +2,7 @@ module Admin
class RegistrationsController < Admin::BaseController class RegistrationsController < Admin::BaseController
load_and_authorize_resource :conference, find_by: :short_title load_and_authorize_resource :conference, find_by: :short_title
load_and_authorize_resource :registration, through: :conference load_and_authorize_resource :registration, through: :conference
before_filter :set_user, except: [:index] before_action :set_user, except: [:index]
def index def index
authorize! :show, Registration.new(conference_id: @conference.id) authorize! :show, Registration.new(conference_id: @conference.id)

View file

@ -1,10 +1,10 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
before_filter :set_paper_trail_whodunnit before_action :set_paper_trail_whodunnit
include ApplicationHelper include ApplicationHelper
add_flash_types :error add_flash_types :error
protect_from_forgery with: :exception protect_from_forgery with: :exception, prepend: true
before_filter :get_conferences before_action :get_conferences
before_filter :store_location before_action :store_location
# Ensure every controller authorizes resource or skips authorization (skip_authorization_check) # Ensure every controller authorizes resource or skips authorization (skip_authorization_check)
check_authorization unless: :devise_controller? check_authorization unless: :devise_controller?

View file

@ -1,5 +1,5 @@
class ConferenceRegistrationsController < ApplicationController class ConferenceRegistrationsController < ApplicationController
before_filter :authenticate_user!, except: [:new, :create] before_action :authenticate_user!, except: [:new, :create]
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
authorize_resource :conference_registrations, class: Registration, except: [:new, :create] authorize_resource :conference_registrations, class: Registration, except: [:new, :create]
before_action :set_registration, only: [:edit, :update, :destroy, :show] before_action :set_registration, only: [:edit, :update, :destroy, :show]

View file

@ -1,5 +1,5 @@
class RegistrationsController < Devise::RegistrationsController class RegistrationsController < Devise::RegistrationsController
before_action :configure_permitted_parameters, if: :devise_controller? prepend_before_action :check_captcha, only: [:create]
def edit def edit
@openids = Openid.where(user_id: current_user.id).order(:provider) @openids = Openid.where(user_id: current_user.id).order(:provider)
@ -21,14 +21,34 @@ class RegistrationsController < Devise::RegistrationsController
edit_user_registration_path(resource) edit_user_registration_path(resource)
end end
def configure_permitted_parameters private
devise_parameter_sanitizer.permit(:account_update) do |u|
u def sign_up_params
.permit(:email, :password, :password_confirmation, :current_password, :username, :email_public) params.require(:user).permit(
end :email,
devise_parameter_sanitizer.permit(:sign_up) do |u| :password,
u :password_confirmation,
.permit(:email, :password, :password_confirmation, :name, :username) :name,
:username
)
end
def account_update_params
params.require(:user).permit(
:email,
:password,
:password_confirmation,
:current_password,
:username,
:email_public
)
end
def check_captcha
unless Feature.inactive?(:recaptcha) || verify_recaptcha
self.resource = resource_class.new sign_up_params
resource.validate # Look for any other validation errors besides Recaptcha
respond_with_navigational(resource) { render :new }
end end
end end
end end

View file

@ -1,5 +1,5 @@
class SubscriptionsController < ApplicationController class SubscriptionsController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
load_and_authorize_resource only: [:create, :destroy], through: :conference load_and_authorize_resource only: [:create, :destroy], through: :conference

View file

@ -1,5 +1,5 @@
class TicketPurchasesController < ApplicationController class TicketPurchasesController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
authorize_resource :conference_registrations, class: Registration authorize_resource :conference_registrations, class: Registration
authorize_resource authorize_resource

View file

@ -1,9 +1,9 @@
class TicketsController < ApplicationController class TicketsController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
load_resource :ticket, through: :conference load_resource :ticket, through: :conference
authorize_resource :conference_registrations, class: Registration authorize_resource :conference_registrations, class: Registration
before_filter :check_load_resource, only: :index before_action :check_load_resource, only: :index
def index; end def index; end

View file

@ -66,7 +66,7 @@ module ApplicationHelper
else else
ts = all.join ts = all.join
end end
return ts ts
end end
def difficulty_levels(conference) def difficulty_levels(conference)
@ -80,7 +80,7 @@ module ApplicationHelper
else else
ts = all.join ts = all.join
end end
return ts ts
end end
def unread_notifications(user) def unread_notifications(user)
@ -163,6 +163,12 @@ module ApplicationHelper
end end
end end
def rescheduling_hint(affected_event_count)
if affected_event_count > 0
"You have #{affected_event_count} scheduled #{'event'.pluralize(affected_event_count)}. Changing the conference hours will unschedule those scheduled outside the conference hours."
end
end
## ##
# ====Gets # ====Gets
# a conference object # a conference object

View file

@ -101,17 +101,17 @@ module FormatHelper
def icon_for_todo(bool) def icon_for_todo(bool)
if bool if bool
return 'fa fa-check' 'fa fa-check'
else else
return 'fa fa-times' 'fa fa-times'
end end
end end
def class_for_todo(bool) def class_for_todo(bool)
if bool if bool
return 'todolist-ok' 'todolist-ok'
else else
return 'todolist-missing' 'todolist-missing'
end end
end end
@ -122,7 +122,7 @@ module FormatHelper
plural || singular.pluralize plural || singular.pluralize
end end
"#{word}" word
end end
# Returns black or white deppending on what of them contrast more with the # Returns black or white deppending on what of them contrast more with the

View file

@ -5,9 +5,9 @@ module PathsHelper
def active_nav_li(link) def active_nav_li(link)
if current_page?(link) if current_page?(link)
return 'active' 'active'
else else
return '' ''
end end
end end
end end

View file

@ -18,7 +18,7 @@ module UsersHelper
providers << provider if !ENV["OSEM_#{provider.upcase}_KEY"].blank? && !ENV["OSEM_#{provider.upcase}_SECRET"].blank? providers << provider if !ENV["OSEM_#{provider.upcase}_KEY"].blank? && !ENV["OSEM_#{provider.upcase}_SECRET"].blank?
end end
return providers.uniq providers.uniq
end end
# Receives a hash, generated from User model, function get_roles # Receives a hash, generated from User model, function get_roles

View file

@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end

View file

@ -1,4 +1,4 @@
class ConferenceCfpUpdateMailJob < ActiveJob::Base class ConferenceCfpUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceDateUpdateMailJob < ActiveJob::Base class ConferenceDateUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceRegistrationDateUpdateMailJob < ActiveJob::Base class ConferenceRegistrationDateUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceScheduleUpdateMailJob < ActiveJob::Base class ConferenceScheduleUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceVenueUpdateMailJob < ActiveJob::Base class ConferenceVenueUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class EventCommentMailJob < ActiveJob::Base class EventCommentMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(comment) def perform(comment)

View file

@ -1,5 +1,5 @@
module Ahoy module Ahoy
class Event < ActiveRecord::Base class Event < ApplicationRecord
self.table_name = 'ahoy_events' self.table_name = 'ahoy_events'
belongs_to :visit belongs_to :visit

View file

@ -1,4 +1,4 @@
class Answer < ActiveRecord::Base class Answer < ApplicationRecord
has_many :qanswers has_many :qanswers
has_many :questions, through: :qanswers has_many :questions, through: :qanswers

View file

@ -0,0 +1,3 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

View file

@ -1,4 +1,4 @@
class Booth < ActiveRecord::Base class Booth < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class BoothRequest < ActiveRecord::Base class BoothRequest < ApplicationRecord
belongs_to :booth belongs_to :booth
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Campaign < ActiveRecord::Base class Campaign < ApplicationRecord
validates :name, :utm_campaign, presence: true validates :name, :utm_campaign, presence: true
has_many :targets, dependent: :nullify has_many :targets, dependent: :nullify

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted # cannot delete program if there are events submitted
class Cfp < ActiveRecord::Base class Cfp < ApplicationRecord
TYPES = %w(events booths tracks).freeze TYPES = %w(events booths tracks).freeze
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Comment < ActiveRecord::Base class Comment < ApplicationRecord
acts_as_nested_set scope: %i(commentable_id commentable_type) acts_as_nested_set scope: %i(commentable_id commentable_type)
validates :body, presence: true validates :body, presence: true
validates :user, presence: true validates :user, presence: true

View file

@ -1,4 +1,4 @@
class Commercial < ActiveRecord::Base class Commercial < ApplicationRecord
require 'oembed' require 'oembed'
belongs_to :commercialable, polymorphic: true belongs_to :commercialable, polymorphic: true

View file

@ -1,4 +1,4 @@
class Conference < ActiveRecord::Base class Conference < ApplicationRecord
include RevisionCount include RevisionCount
require 'uri' require 'uri'
serialize :events_per_week, Hash serialize :events_per_week, Hash

View file

@ -1,4 +1,4 @@
class Contact < ActiveRecord::Base class Contact < ApplicationRecord
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class DifficultyLevel < ActiveRecord::Base class DifficultyLevel < ApplicationRecord
belongs_to :program belongs_to :program
has_many :events, dependent: :nullify has_many :events, dependent: :nullify

View file

@ -1,4 +1,4 @@
class EmailSettings < ActiveRecord::Base class EmailSettings < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Event < ActiveRecord::Base class Event < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
include RevisionCount include RevisionCount
has_paper_trail on: [:create, :update], ignore: [:updated_at, :guid, :week], meta: { conference_id: :conference_id } has_paper_trail on: [:create, :update], ignore: [:updated_at, :guid, :week], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class EventSchedule < ActiveRecord::Base class EventSchedule < ApplicationRecord
belongs_to :schedule belongs_to :schedule
belongs_to :event belongs_to :event
belongs_to :room belongs_to :room

View file

@ -1,4 +1,4 @@
class EventType < ActiveRecord::Base class EventType < ApplicationRecord
belongs_to :program belongs_to :program
has_many :events, dependent: :restrict_with_error has_many :events, dependent: :restrict_with_error

View file

@ -1,4 +1,4 @@
class EventUser < ActiveRecord::Base class EventUser < ApplicationRecord
# TODO: Do we need these roles? # TODO: Do we need these roles?
ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator]] ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator]]

View file

@ -1,4 +1,4 @@
class EventsRegistration < ActiveRecord::Base class EventsRegistration < ApplicationRecord
belongs_to :registration belongs_to :registration
belongs_to :event belongs_to :event

View file

@ -1,4 +1,4 @@
class Lodging < ActiveRecord::Base class Lodging < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Openid < ActiveRecord::Base class Openid < ApplicationRecord
belongs_to :user belongs_to :user
validates :provider, :uid, presence: true validates :provider, :uid, presence: true

View file

@ -1,4 +1,4 @@
class Organization < ActiveRecord::Base class Organization < ApplicationRecord
resourcify :roles, dependent: :delete_all resourcify :roles, dependent: :delete_all
has_paper_trail has_paper_trail

View file

@ -1,4 +1,4 @@
class Payment < ActiveRecord::Base class Payment < ApplicationRecord
has_many :ticket_purchases has_many :ticket_purchases
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class PhysicalTicket < ActiveRecord::Base class PhysicalTicket < ApplicationRecord
belongs_to :ticket_purchase belongs_to :ticket_purchase
has_one :ticket, through: :ticket_purchase has_one :ticket, through: :ticket_purchase
has_one :conference, through: :ticket_purchase has_one :conference, through: :ticket_purchase

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted # cannot delete program if there are events submitted
class Program < ActiveRecord::Base class Program < ApplicationRecord
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class Qanswer < ActiveRecord::Base class Qanswer < ApplicationRecord
belongs_to :question belongs_to :question
belongs_to :answer, dependent: :delete belongs_to :answer, dependent: :delete

View file

@ -1,4 +1,4 @@
class Question < ActiveRecord::Base class Question < ApplicationRecord
belongs_to :question_type belongs_to :question_type
has_and_belongs_to_many :conferences has_and_belongs_to_many :conferences

View file

@ -1,3 +1,3 @@
class QuestionType < ActiveRecord::Base class QuestionType < ApplicationRecord
has_many :questions has_many :questions
end end

View file

@ -1,4 +1,4 @@
class Registration < ActiveRecord::Base class Registration < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class RegistrationPeriod < ActiveRecord::Base class RegistrationPeriod < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Resource < ActiveRecord::Base class Resource < ApplicationRecord
belongs_to :conference belongs_to :conference
validates :name, :used, :quantity, presence: true validates :name, :used, :quantity, presence: true
validates :used, :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true } validates :used, :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true }

View file

@ -1,4 +1,4 @@
class Role < ActiveRecord::Base class Role < ApplicationRecord
belongs_to :resource, polymorphic: true belongs_to :resource, polymorphic: true
has_many :users_roles has_many :users_roles
has_many :users, through: :users_roles has_many :users, through: :users_roles

View file

@ -1,4 +1,4 @@
class Room < ActiveRecord::Base class Room < ApplicationRecord
include RevisionCount include RevisionCount
belongs_to :venue belongs_to :venue
has_many :event_schedules, dependent: :destroy has_many :event_schedules, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Schedule < ActiveRecord::Base class Schedule < ApplicationRecord
belongs_to :program belongs_to :program
belongs_to :track belongs_to :track
has_many :event_schedules, dependent: :destroy has_many :event_schedules, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Splashpage < ActiveRecord::Base class Splashpage < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Sponsor < ActiveRecord::Base class Sponsor < ApplicationRecord
belongs_to :sponsorship_level belongs_to :sponsorship_level
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class SponsorshipLevel < ActiveRecord::Base class SponsorshipLevel < ApplicationRecord
validates :title, presence: true validates :title, presence: true
belongs_to :conference belongs_to :conference
acts_as_list scope: :conference acts_as_list scope: :conference

View file

@ -1,4 +1,4 @@
class Subscription < ActiveRecord::Base class Subscription < ApplicationRecord
belongs_to :conference belongs_to :conference
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Target < ActiveRecord::Base class Target < ApplicationRecord
include ActionView::Helpers::TextHelper include ActionView::Helpers::TextHelper
default_scope { order('due_date ASC') } default_scope { order('due_date ASC') }

View file

@ -1,4 +1,4 @@
class Ticket < ActiveRecord::Base class Ticket < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :ticket_purchases, dependent: :destroy has_many :ticket_purchases, dependent: :destroy
has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user
@ -61,7 +61,7 @@ class Ticket < ActiveRecord::Base
end end
def tickets_turnover_total(id) def tickets_turnover_total(id)
tickets = TicketPurchase.where(ticket_id: id) tickets = TicketPurchase.where(ticket_id: id).paid
tickets.inject(0){ |sum, ticket| sum + (ticket.amount_paid * ticket.quantity) } tickets.inject(0){ |sum, ticket| sum + (ticket.amount_paid * ticket.quantity) }
end end

View file

@ -1,4 +1,4 @@
class TicketPurchase < ActiveRecord::Base class TicketPurchase < ApplicationRecord
belongs_to :ticket belongs_to :ticket
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class TicketScanning < ActiveRecord::Base class TicketScanning < ApplicationRecord
belongs_to :physical_ticket belongs_to :physical_ticket
before_create :mark_user_present before_create :mark_user_present

View file

@ -1,4 +1,4 @@
class Track < ActiveRecord::Base class Track < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
include RevisionCount include RevisionCount

View file

@ -4,7 +4,7 @@ end
class UserDisabled < StandardError class UserDisabled < StandardError
end end
class User < ActiveRecord::Base class User < ApplicationRecord
rolify rolify
has_many :physical_tickets, through: :ticket_purchases do has_many :physical_tickets, through: :ticket_purchases do
def by_conference(conference) def by_conference(conference)

View file

@ -1,4 +1,4 @@
class UsersRole < ActiveRecord::Base class UsersRole < ApplicationRecord
belongs_to :role belongs_to :role
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Vchoice < ActiveRecord::Base class Vchoice < ApplicationRecord
belongs_to :vday belongs_to :vday
belongs_to :vposition belongs_to :vposition

View file

@ -1,4 +1,4 @@
class Vday < ActiveRecord::Base class Vday < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :vchoices has_many :vchoices

View file

@ -1,4 +1,4 @@
class Venue < ActiveRecord::Base class Venue < ApplicationRecord
belongs_to :conference belongs_to :conference
has_one :commercial, as: :commercialable, dependent: :destroy has_one :commercial, as: :commercialable, dependent: :destroy
has_many :rooms, dependent: :destroy has_many :rooms, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Visit < ActiveRecord::Base class Visit < ApplicationRecord
has_many :ahoy_events, class_name: 'Ahoy::Event' has_many :ahoy_events, class_name: 'Ahoy::Event'
belongs_to :user belongs_to :user
end end

View file

@ -1,4 +1,4 @@
class Vote < ActiveRecord::Base class Vote < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :event belongs_to :event

View file

@ -1,4 +1,4 @@
class Vposition < ActiveRecord::Base class Vposition < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :vchoices has_many :vchoices

View file

@ -11,6 +11,10 @@
%dd %dd
= @cfp.end_date.strftime('%A, %B %e. %Y') = @cfp.end_date.strftime('%A, %B %e. %Y')
%dt %dt
Days Left: Description
%dd
= markdown(@cfp.description)
%dt
Days Left
%dd %dd
= pluralize(@cfp.remaining_days, 'day') = pluralize(@cfp.remaining_days, 'day')

View file

@ -10,6 +10,10 @@
End Date: End Date:
%dd#end_date %dd#end_date
= @cfp.end_date.strftime('%A, %B %-d. %Y') = @cfp.end_date.strftime('%A, %B %-d. %Y')
%dt
Description:
%dd#description
= markdown(@cfp.description)
%dt %dt
Days Left: Days Left:
%dd %dd

View file

@ -8,5 +8,6 @@
= f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker', start_date: @conference.start_date, end_date: @conference.end_date, readonly: 'readonly' } = f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker', start_date: @conference.start_date, end_date: @conference.end_date, readonly: 'readonly' }
= f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker', readonly: 'readonly' } = f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker', readonly: 'readonly' }
= f.input :cfp_type, as: :select, collection: (@cfp.new_record? ? @program.remaining_cfp_types : [@cfp.cfp_type] + @program.remaining_cfp_types).map {|type| ["#{type.capitalize}", type]}, include_blank: false, label: 'Type', input_html: { class: 'select-help-toggle' } = f.input :cfp_type, as: :select, collection: (@cfp.new_record? ? @program.remaining_cfp_types : [@cfp.cfp_type] + @program.remaining_cfp_types).map {|type| ["#{type.capitalize}", type]}, include_blank: false, label: 'Type', input_html: { class: 'select-help-toggle' }
= f.input :description, input_html: {rows: 2, data: { provide: 'markdown-editable' } }, hint: markdown_hint
%p.text-right %p.text-right
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' } = f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }

View file

@ -10,6 +10,10 @@
End Date: End Date:
%dd#end_date %dd#end_date
= @cfp.end_date.strftime('%A, %B %-d. %Y') = @cfp.end_date.strftime('%A, %B %-d. %Y')
%dt
Description:
%dd#description
= markdown(@cfp.description)
%dt %dt
Days Left: Days Left:
%dd %dd

View file

@ -12,6 +12,7 @@
%th Type %th Type
%th Start Date %th Start Date
%th End Date %th End Date
%th Description
%th Days Left %th Days Left
%th Actions %th Actions
%tbody %tbody
@ -24,6 +25,9 @@
= cfp.start_date.strftime('%A, %B %-d. %Y') = cfp.start_date.strftime('%A, %B %-d. %Y')
%td %td
= cfp.end_date.strftime('%A, %B %-d. %Y') = cfp.end_date.strftime('%A, %B %-d. %Y')
%td
%p
= truncate(cfp.description)
%td %td
= pluralize(cfp.remaining_days, 'day') = pluralize(cfp.remaining_days, 'day')
%td %td

View file

@ -22,11 +22,11 @@
= f.input :timezone, as: :time_zone, hint: 'The conference time zone' = f.input :timezone, as: :time_zone, hint: 'The conference time zone'
= f.input :start_date, as: :string, input_html: { id: 'conference-start-datepicker', readonly: 'readonly' } = f.input :start_date, as: :string, input_html: { id: 'conference-start-datepicker', readonly: 'readonly' }
= f.input :end_date, as: :string, input_html: { id: 'conference-end-datepicker', readonly: 'readonly' } = f.input :end_date, as: :string, input_html: { id: 'conference-end-datepicker', readonly: 'readonly' }
= f.input :start_hour, input_html: {size: 2, type: 'number', min: 0, max: 23} = f.input :start_hour, input_html: {size: 2, type: 'number', min: 0, max: 23}, hint: rescheduling_hint(@affected_event_count)
= f.input :end_hour, input_html: {size: 2, type: 'number', min: 1, max: 24} = f.input :end_hour, input_html: {size: 2, type: 'number', min: 1, max: 24}, hint: rescheduling_hint(@affected_event_count)
= f.inputs name: 'Registrations' do = f.inputs name: 'Registrations' do
= f.input :registration_limit, as: :number, in: 0..9999, hint: 'Limit the number of registrations to the conference (0 no limit). Please note that the registration limit doesn\'t apply to speakers of confirmed events (they will still be able to register even if it has been reached). You currently have ' + pluralize(@conference.registrations.count, 'registration') = f.input :registration_limit, as: :number, in: 0..9999, hint: 'Limit the number of registrations to the conference (0 no limit). Please note that the registration limit doesn\'t apply to speakers of confirmed events (they will still be able to register even if it has been reached). You currently have ' + pluralize(@conference.registrations.count, 'registration')
= f.inputs name: 'Booths' do = f.inputs name: 'Booths' do
= f.input :booth_limit, as: :number, in: 0..9999, = f.input :booth_limit, as: :number, in: 0..9999,
hint: 'Booth limit is the maximum number of booths that you can accept for this conference. By setting this number (0 no limit) you can be sure that you are not going to accept more booths than the conference can accommodate. You currently have ' + pluralize(@conference.booths.accepted.count, 'accepted booth') +'.' hint: 'Booth limit is the maximum number of booths that you can accept for this conference. By setting this number (0 no limit) you can be sure that you are not going to accept more booths than the conference can accommodate. You currently have ' + pluralize(@conference.booths.accepted.count, 'accepted booth') +'.'
= f.action :submit, as: :button, button_html: {class: 'btn btn-primary'} = f.action :submit, as: :button, button_html: { class: 'btn btn-primary', data: { confirm: 'Are you sure you want to proceed?' } }

View file

@ -165,7 +165,7 @@
%td= markdown(@event.abstract) %td= markdown(@event.abstract)
%tr %tr
%td %td
%b Description %b Requirements
%td= simple_format(@event.description) %td= simple_format(@event.description)
- if @conference.program && @conference.program.rating && @conference.program.rating > 0 - if @conference.program && @conference.program.rating && @conference.program.rating > 0

View file

@ -9,7 +9,7 @@
.row .row
.col-md-8 .col-md-8
= semantic_form_for(@lodging, url: (@lodging.new_record? ? admin_conference_lodgings_path : admin_conference_lodging_path(@conference.short_title, @lodging))) do |f| = semantic_form_for(@lodging, url: (@lodging.new_record? ? admin_conference_lodgings_path : admin_conference_lodging_path(@conference.short_title, @lodging))) do |f|
= f.input :name = f.input :name, input_html: { autofocus: true}
= f.input :website_link = f.input :website_link
= f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint = f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint
- if @lodging.picture? - if @lodging.picture?

View file

@ -3,7 +3,7 @@
= f.input :name, as: :string, required: true = f.input :name, as: :string, required: true
= f.input :description, as: :text, input_html: { rows: 10 }, placeholder: 'Decribe about your organization..' = f.input :description, as: :text, input_html: { rows: 10 }, placeholder: 'Decribe about your organization..'
= image_tag f.object.picture.thumb.url if f.object.picture? = image_tag f.object.picture.thumb.url if f.object.picture?
- if @organization.picture - if @organization.picture?
= image_tag(@organization.picture.thumb.url, width: '20%') = image_tag(@organization.picture.thumb.url, width: '20%')
= f.input :picture = f.input :picture
%p.text-right %p.text-right

View file

@ -12,6 +12,8 @@
= f.input :name, input_html: { required: true }, hint: 'This is your real name' = f.input :name, input_html: { required: true }, hint: 'This is your real name'
= f.input :password, input_html: { required: true } = f.input :password, input_html: { required: true }
= f.input :password_confirmation, input_html: { required: true } = f.input :password_confirmation, input_html: { required: true }
- Feature.with(:recaptcha) do
= recaptcha_tags
%p.text-right %p.text-right
= f.action :submit, as: :button, label: 'Sign Up', button_html: { class: 'btn btn-success' } = f.action :submit, as: :button, label: 'Sign Up', button_html: { class: 'btn btn-success' }

View file

@ -9,15 +9,16 @@
= javascript_include_tag "application" = javascript_include_tag "application"
= csrf_meta_tags = csrf_meta_tags
:javascript
window.liveSettings = {
api_key: "#{ENV['OSEM_TRANSIFEX_APIKEY']}",
picker: "bottom-right",
detectlang: true,
autocollect: true
};
= content_for(:script_head) = content_for(:script_head)
= javascript_include_tag "//cdn.transifex.com/live.js" - if ENV['OSEM_TRANSIFEX_APIKEY']
:javascript
window.liveSettings = {
api_key: "#{ENV['OSEM_TRANSIFEX_APIKEY']}",
picker: "bottom-right",
detectlang: true,
autocollect: true
};
= javascript_include_tag "//cdn.transifex.com/live.js"
= yield(:head) = yield(:head)
%body %body

View file

@ -8,7 +8,7 @@
- @organizations.each do |organization| - @organizations.each do |organization|
.col-md-4 .col-md-4
.thumbnail .thumbnail
= image_tag(organization.picture.thumb.url, width: '20%') = image_tag(organization.picture.thumb.url, width: '20%') if organization.picture?
.caption .caption
%h4 %h4
= organization.name = organization.name

View file

@ -6,6 +6,14 @@
%span.notranslate %span.notranslate
= @conference.title = @conference.title
- if @program.cfp_open?
- if @program.cfp.description.present?
.row
.col-md-12
= markdown(@program.cfp.description)
.row .row
.col-md-12 .col-md-12
= render partial: 'encouragement_text' = render partial: 'encouragement_text'

View file

@ -3,6 +3,11 @@
.col-md-12 .col-md-12
.page-header .page-header
%h1 New Proposal %h1 New Proposal
- if @program.cfp_open?
- if @program.cfp.description.present?
.row
.col-md-12
= markdown(@program.cfp.description)
.row .row
.col-md-12 .col-md-12
= render partial: 'encouragement_text' = render partial: 'encouragement_text'

View file

@ -36,7 +36,8 @@
.col-md-8 .col-md-8
%h4 %h4
= link_to speaker.name, user_path(speaker.id) = link_to speaker.name, user_path(speaker.id)
= "(#{speaker.email})" - if speaker.email_public?
= "(#{speaker.email})"
- if speaker.affiliation? - if speaker.affiliation?
.text-muted .text-muted
from from

3
bin/bundle Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env ruby.ruby2.4
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
load Gem.bin_path('bundler', 'bundle')

4
bin/rake Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env ruby.ruby2.4
require_relative '../config/boot'
require 'rake'
Rake.application.run

34
bin/setup Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env ruby.ruby2.4
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a starting point to setup your application.
# Add necessary setup steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')
# cp 'config/database.yml.sample', 'config/database.yml'
# end
puts "\n== Preparing database =="
system! 'bin/rails db:setup'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

29
bin/update Executable file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env ruby.ruby2.4
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a way to update your development environment automatically.
# Add necessary update steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
puts "\n== Updating database =="
system! 'bin/rails db:migrate'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

View file

@ -60,9 +60,6 @@ module Osem
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
# Errors raised within `after_rollback`/`after_commit` propagate normally
# like in other Active Record callbacks.
config.active_record.raise_in_transactional_callbacks = true
config.active_job.queue_adapter = :delayed_job config.active_job.queue_adapter = :delayed_job
end end
end end

View file

@ -1,4 +1,3 @@
# Set up gems listed in the Gemfile. ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) require 'bundler/setup' # Set up gems listed in the Gemfile.

9
config/cable.yml Normal file
View file

@ -0,0 +1,9 @@
development:
adapter: async
test:
adapter: async
production:
adapter: redis
url: <%= ENV['OSEM_REDIS_URL'] %>

Some files were not shown because too many files have changed in this diff Show more