Merge branch 'master' into mass_commercials
This commit is contained in:
commit
cccc28dab7
167 changed files with 1422 additions and 452 deletions
|
|
@ -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'
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
14
Dockerfile
14
Dockerfile
|
|
@ -16,6 +16,12 @@ RUN cd /usr/bin && \
|
||||||
tar -xf dockerize.tar.gz && \
|
tar -xf dockerize.tar.gz && \
|
||||||
rm dockerize.tar.gz
|
rm dockerize.tar.gz
|
||||||
|
|
||||||
|
# dumb-init for a proper PID 1
|
||||||
|
RUN cd /tmp && \
|
||||||
|
wget https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
|
||||||
|
dpkg -i dumb-init_1.2.0_amd64.deb && \
|
||||||
|
rm dumb-init_1.2.0_amd64.deb
|
||||||
|
|
||||||
# explicitly add Gemfile and install dependencies using bundler to make use of
|
# explicitly add Gemfile and install dependencies using bundler to make use of
|
||||||
# Docker's caching
|
# Docker's caching
|
||||||
WORKDIR /osem/
|
WORKDIR /osem/
|
||||||
|
|
@ -25,12 +31,13 @@ RUN bundle install --without test development
|
||||||
|
|
||||||
# add OSEM files and prepare them for use inside a Docker container
|
# add OSEM files and prepare them for use inside a Docker container
|
||||||
COPY . /osem/
|
COPY . /osem/
|
||||||
RUN chown osem.osem /osem/ -R && \
|
RUN chown -R osem.root /osem/ && \
|
||||||
|
chmod -R g=u /osem/ && \
|
||||||
mv /osem/config/database.yml.docker /osem/config/database.yml
|
mv /osem/config/database.yml.docker /osem/config/database.yml
|
||||||
|
|
||||||
# data directory is used to cache the secret key in a file
|
# data directory is used to cache the secret key in a file
|
||||||
ENV DATA_DIR /data
|
ENV DATA_DIR /data
|
||||||
RUN install -d -m 0700 -o osem $DATA_DIR
|
RUN install -d -m 0770 -o osem -g root $DATA_DIR
|
||||||
VOLUME ["$DATA_DIR"]
|
VOLUME ["$DATA_DIR"]
|
||||||
|
|
||||||
USER osem
|
USER osem
|
||||||
|
|
@ -42,4 +49,7 @@ COPY docker/init.sh /init.sh
|
||||||
# from a webserver
|
# from a webserver
|
||||||
ENV RAILS_SERVE_STATIC_FILES 1
|
ENV RAILS_SERVE_STATIC_FILES 1
|
||||||
|
|
||||||
|
# Runs "/usr/bin/dumb-init -- /my/script --with --args"
|
||||||
|
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
|
||||||
|
|
||||||
CMD ["bash", "/init.sh"]
|
CMD ["bash", "/init.sh"]
|
||||||
|
|
|
||||||
49
Gemfile
49
Gemfile
|
|
@ -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
|
||||||
|
|
|
||||||
187
Gemfile.lock
187
Gemfile.lock
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,24 @@ module Admin
|
||||||
load_and_authorize_resource :conference, find_by: :short_title
|
load_and_authorize_resource :conference, find_by: :short_title
|
||||||
load_and_authorize_resource through: :conference
|
load_and_authorize_resource through: :conference
|
||||||
|
|
||||||
def index; end
|
def index
|
||||||
|
@file_name = "booths_for_#{@conference.short_title}"
|
||||||
|
@booth_export_option = params[:booth_export_option]
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
# Explicity call #to_json to avoid the use of EventSerializer
|
||||||
|
format.json { render json: Booth.where(state: :confirmed, program: @program).to_json }
|
||||||
|
format.xlsx do
|
||||||
|
response.headers['Content-Disposition'] = "attachment; filename=\"#{@file_name}.xlsx\""
|
||||||
|
render 'booths'
|
||||||
|
end
|
||||||
|
format.pdf { render 'booths' }
|
||||||
|
format.csv do
|
||||||
|
response.headers['Content-Disposition'] = "attachment; filename=\"#{@file_name}.csv\""
|
||||||
|
render 'booths'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def show; end
|
def show; end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,25 @@ module Admin
|
||||||
# Show flash message with ajax calls
|
# Show flash message with ajax calls
|
||||||
after_action :prepare_unobtrusive_flash, only: :toggle_cfp_inclusion
|
after_action :prepare_unobtrusive_flash, only: :toggle_cfp_inclusion
|
||||||
|
|
||||||
def index; end
|
def index
|
||||||
|
@file_name = "tracks_for_#{@conference.short_title}"
|
||||||
|
@track_export_option = params[:track_export_option]
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
# Explicity call #to_json to avoid the use of EventSerializer
|
||||||
|
format.json { render json: Track.where(state: :confirmed, program: @program).to_json }
|
||||||
|
format.xlsx do
|
||||||
|
response.headers['Content-Disposition'] = "attachment; filename=\"#{@file_name}.xlsx\""
|
||||||
|
render 'tracks'
|
||||||
|
end
|
||||||
|
format.pdf { render 'tracks' }
|
||||||
|
format.csv do
|
||||||
|
response.headers['Content-Disposition'] = "attachment; filename=\"#{@file_name}.csv\""
|
||||||
|
render 'tracks'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
||||||
|
|
@ -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?
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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]
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,10 @@ class OrganizationsController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@organizations = Organization.all
|
@organizations = Organization.all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def conferences
|
||||||
|
@current = @organization.conferences.upcoming.reorder(start_date: :asc)
|
||||||
|
@antiquated = @organization.conferences.past
|
||||||
|
render '/conferences/index'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
:email,
|
||||||
|
:password,
|
||||||
|
:password_confirmation,
|
||||||
|
:name,
|
||||||
|
:username
|
||||||
|
)
|
||||||
end
|
end
|
||||||
devise_parameter_sanitizer.permit(:sign_up) do |u|
|
|
||||||
u
|
def account_update_params
|
||||||
.permit(:email, :password, :password_confirmation, :name, :username)
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -171,4 +177,18 @@ module ApplicationHelper
|
||||||
def hidden_if_conference_over(conference)
|
def hidden_if_conference_over(conference)
|
||||||
'hidden' if Date.today > conference.end_date
|
'hidden' if Date.today > conference.end_date
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def nav_root_link_for(conference)
|
||||||
|
link_text = (
|
||||||
|
conference.try(:organization).try(:name) ||
|
||||||
|
ENV['OSEM_NAME'] ||
|
||||||
|
'OSEM'
|
||||||
|
)
|
||||||
|
link_to(
|
||||||
|
link_text,
|
||||||
|
root_path,
|
||||||
|
class: 'navbar-brand',
|
||||||
|
title: 'Open Source Event Manager'
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
2
app/jobs/application_job.rb
Normal file
2
app/jobs/application_job.rb
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
class ApplicationJob < ActiveJob::Base
|
||||||
|
end
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class ConferenceCfpUpdateMailJob < ActiveJob::Base
|
class ConferenceCfpUpdateMailJob < ApplicationJob
|
||||||
queue_as :default
|
queue_as :default
|
||||||
|
|
||||||
def perform(conference)
|
def perform(conference)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class ConferenceDateUpdateMailJob < ActiveJob::Base
|
class ConferenceDateUpdateMailJob < ApplicationJob
|
||||||
queue_as :default
|
queue_as :default
|
||||||
|
|
||||||
def perform(conference)
|
def perform(conference)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class ConferenceRegistrationDateUpdateMailJob < ActiveJob::Base
|
class ConferenceRegistrationDateUpdateMailJob < ApplicationJob
|
||||||
queue_as :default
|
queue_as :default
|
||||||
|
|
||||||
def perform(conference)
|
def perform(conference)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class ConferenceScheduleUpdateMailJob < ActiveJob::Base
|
class ConferenceScheduleUpdateMailJob < ApplicationJob
|
||||||
queue_as :default
|
queue_as :default
|
||||||
|
|
||||||
def perform(conference)
|
def perform(conference)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class ConferenceVenueUpdateMailJob < ActiveJob::Base
|
class ConferenceVenueUpdateMailJob < ApplicationJob
|
||||||
queue_as :default
|
queue_as :default
|
||||||
|
|
||||||
def perform(conference)
|
def perform(conference)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class EventCommentMailJob < ActiveJob::Base
|
class EventCommentMailJob < ApplicationJob
|
||||||
queue_as :default
|
queue_as :default
|
||||||
|
|
||||||
def perform(comment)
|
def perform(comment)
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ class Ability
|
||||||
|
|
||||||
# Abilities for not signed in users (guests)
|
# Abilities for not signed in users (guests)
|
||||||
def not_signed_in
|
def not_signed_in
|
||||||
can [:index], Organization
|
can [:index, :conferences], Organization
|
||||||
can [:index], Conference
|
can [:index], Conference
|
||||||
can [:show], Conference do |conference|
|
can [:show], Conference do |conference|
|
||||||
conference.splashpage && conference.splashpage.public == true
|
conference.splashpage && conference.splashpage.public == true
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
3
app/models/application_record.rb
Normal file
3
app/models/application_record.rb
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
class ApplicationRecord < ActiveRecord::Base
|
||||||
|
self.abstract_class = true
|
||||||
|
end
|
||||||
|
|
@ -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 }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class BoothRequest < ActiveRecord::Base
|
class BoothRequest < ApplicationRecord
|
||||||
belongs_to :booth
|
belongs_to :booth
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
@ -204,11 +204,12 @@ class Event < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def speaker_names
|
def speaker_names
|
||||||
result = Set.new
|
speakers.map(&:name).join(', ')
|
||||||
speakers.each do |speaker|
|
|
||||||
result.add(speaker.name)
|
|
||||||
end
|
end
|
||||||
result.to_a.to_sentence
|
|
||||||
|
# Returns emails of all the speaker belongs to a particular event
|
||||||
|
def speaker_emails
|
||||||
|
speakers.map(&:email).join(', ')
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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]]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class EventsRegistration < ActiveRecord::Base
|
class EventsRegistration < ApplicationRecord
|
||||||
belongs_to :registration
|
belongs_to :registration
|
||||||
belongs_to :event
|
belongs_to :event
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -42,7 +42,8 @@ class Program < ActiveRecord::Base
|
||||||
has_many :event_schedules, through: :events
|
has_many :event_schedules, through: :events
|
||||||
|
|
||||||
has_many :event_users, through: :events
|
has_many :event_users, through: :events
|
||||||
has_many :speakers, -> { distinct }, through: :event_users, source: :user do
|
has_many :program_events_speakers, -> {where(event_role: 'speaker')}, through: :events, source: :event_users
|
||||||
|
has_many :speakers, -> { distinct }, through: :program_events_speakers, source: :user do
|
||||||
def confirmed
|
def confirmed
|
||||||
joins(:events).where(events: { state: :confirmed })
|
joins(:events).where(events: { state: :confirmed })
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
class QuestionType < ActiveRecord::Base
|
class QuestionType < ApplicationRecord
|
||||||
has_many :questions
|
has_many :questions
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Registration < ActiveRecord::Base
|
class Registration < ApplicationRecord
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Subscription < ActiveRecord::Base
|
class Subscription < ApplicationRecord
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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') }
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Track < ActiveRecord::Base
|
class Track < ApplicationRecord
|
||||||
include ActiveRecord::Transitions
|
include ActiveRecord::Transitions
|
||||||
include RevisionCount
|
include RevisionCount
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class UsersRole < ActiveRecord::Base
|
class UsersRole < ApplicationRecord
|
||||||
belongs_to :role
|
belongs_to :role
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Vchoice < ActiveRecord::Base
|
class Vchoice < ApplicationRecord
|
||||||
belongs_to :vday
|
belongs_to :vday
|
||||||
belongs_to :vposition
|
belongs_to :vposition
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Vday < ActiveRecord::Base
|
class Vday < ApplicationRecord
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
|
|
||||||
has_many :vchoices
|
has_many :vchoices
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Vote < ActiveRecord::Base
|
class Vote < ApplicationRecord
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :event
|
belongs_to :event
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
class Vposition < ActiveRecord::Base
|
class Vposition < ApplicationRecord
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
|
|
||||||
has_many :vchoices
|
has_many :vchoices
|
||||||
|
|
|
||||||
19
app/views/admin/booths/_all_booths.csv.haml
Normal file
19
app/views/admin/booths/_all_booths.csv.haml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
- headers = ['Booth ID',
|
||||||
|
'Title',
|
||||||
|
'Description',
|
||||||
|
'Reasoning',
|
||||||
|
'Submitter Name',
|
||||||
|
'Submitter Relationship',
|
||||||
|
'Website Url',
|
||||||
|
'State']
|
||||||
|
= CSV.generate_line ['All booths']
|
||||||
|
= CSV.generate_line headers
|
||||||
|
- @booths.each do |booth|
|
||||||
|
= CSV.generate_line([booth.id,
|
||||||
|
booth.title,
|
||||||
|
booth.description,
|
||||||
|
booth.reasoning,
|
||||||
|
booth.submitter.name,
|
||||||
|
booth.submitter_relationship,
|
||||||
|
booth.website_url,
|
||||||
|
booth.state]).html_safe
|
||||||
26
app/views/admin/booths/_all_booths.pdf.prawn
Normal file
26
app/views/admin/booths/_all_booths.pdf.prawn
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
prawn_document(force_download: true, filename: "#{@file_name}.pdf", page_layout: :landscape) do |pdf|
|
||||||
|
booths_array = []
|
||||||
|
header_array = ['Booth ID',
|
||||||
|
'Title',
|
||||||
|
'Description',
|
||||||
|
'Reasoning',
|
||||||
|
'Submitter Name',
|
||||||
|
'Submitter Relationship',
|
||||||
|
'Website Url',
|
||||||
|
'State']
|
||||||
|
booths_array << header_array
|
||||||
|
@booths.each do |booth|
|
||||||
|
row = []
|
||||||
|
row << booth.id
|
||||||
|
row << booth.title
|
||||||
|
row << booth.description
|
||||||
|
row << booth.reasoning
|
||||||
|
row << booth.submitter.name
|
||||||
|
row << booth.submitter_relationship
|
||||||
|
row << booth.website_url
|
||||||
|
row << booth.state
|
||||||
|
booths_array << row
|
||||||
|
end
|
||||||
|
pdf.text "#{@conference.short_title} booths", font_size: 25, align: :center
|
||||||
|
pdf.table booths_array, header: true, cell_style: {size: 8, border_width: 1},column_widths: [45,70,153,152,70,80,105,45]
|
||||||
|
end
|
||||||
27
app/views/admin/booths/_all_booths.xlsx.axlsx
Normal file
27
app/views/admin/booths/_all_booths.xlsx.axlsx
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
wb.add_worksheet(name: 'all booths') do |sheet|
|
||||||
|
bold_style = wb.styles.add_style(b: true)
|
||||||
|
wrap_text = wb.styles.add_style alignment: {wrap_text: true}
|
||||||
|
row = ['Booth ID',
|
||||||
|
'Title',
|
||||||
|
'Description',
|
||||||
|
'Reasoning',
|
||||||
|
'Submitter Name',
|
||||||
|
'Submitter Relationship',
|
||||||
|
'Website Url',
|
||||||
|
'State']
|
||||||
|
|
||||||
|
sheet.add_row row, style: bold_style
|
||||||
|
@booths.each do |booth|
|
||||||
|
row = []
|
||||||
|
row << booth.id
|
||||||
|
row << booth.title
|
||||||
|
row << booth.description
|
||||||
|
row << booth.reasoning
|
||||||
|
row << booth.submitter.name
|
||||||
|
row << booth.submitter_relationship
|
||||||
|
row << booth.website_url
|
||||||
|
row << booth.state
|
||||||
|
sheet.add_row row , style: wrap_text
|
||||||
|
sheet.column_widths 10,20,35,35,20,30,35,10
|
||||||
|
end
|
||||||
|
end
|
||||||
19
app/views/admin/booths/_confirmed_booths.csv.haml
Normal file
19
app/views/admin/booths/_confirmed_booths.csv.haml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
- headers = ['Booth ID',
|
||||||
|
'Title',
|
||||||
|
'Description',
|
||||||
|
'Reasoning',
|
||||||
|
'Submitter Name',
|
||||||
|
'Submitter Relationship',
|
||||||
|
'Website Url',
|
||||||
|
'State']
|
||||||
|
= CSV.generate_line ['All booths']
|
||||||
|
= CSV.generate_line headers
|
||||||
|
- @booths.confirmed.each do |booth|
|
||||||
|
= CSV.generate_line([booth.id,
|
||||||
|
booth.title,
|
||||||
|
booth.description,
|
||||||
|
booth.reasoning,
|
||||||
|
booth.submitter.name,
|
||||||
|
booth.submitter_relationship,
|
||||||
|
booth.website_url,
|
||||||
|
booth.state]).html_safe
|
||||||
26
app/views/admin/booths/_confirmed_booths.pdf.prawn
Normal file
26
app/views/admin/booths/_confirmed_booths.pdf.prawn
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
prawn_document(force_download: true, filename: "#{@file_name}.pdf", page_layout: :landscape) do |pdf|
|
||||||
|
booths_array = []
|
||||||
|
header_array = ['Booth ID',
|
||||||
|
'Title',
|
||||||
|
'Description',
|
||||||
|
'Reasoning',
|
||||||
|
'Submitter Name',
|
||||||
|
'Submitter Relationship',
|
||||||
|
'Website Url',
|
||||||
|
'State']
|
||||||
|
booths_array << header_array
|
||||||
|
@booths.confirmed.each do |booth|
|
||||||
|
row = []
|
||||||
|
row << booth.id
|
||||||
|
row << booth.title
|
||||||
|
row << booth.description
|
||||||
|
row << booth.reasoning
|
||||||
|
row << booth.submitter.name
|
||||||
|
row << booth.submitter_relationship
|
||||||
|
row << booth.website_url
|
||||||
|
row << booth.state
|
||||||
|
booths_array << row
|
||||||
|
end
|
||||||
|
pdf.text "#{@conference.short_title} booths", font_size: 25, align: :center
|
||||||
|
pdf.table booths_array, header: true, cell_style: {size: 8, border_width: 1},column_widths: [45,70,153,152,70,80,105,45]
|
||||||
|
end
|
||||||
27
app/views/admin/booths/_confirmed_booths.xlsx.axlsx
Normal file
27
app/views/admin/booths/_confirmed_booths.xlsx.axlsx
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
wb.add_worksheet(name: 'all booths') do |sheet|
|
||||||
|
bold_style = wb.styles.add_style(b: true)
|
||||||
|
wrap_text = wb.styles.add_style alignment: {wrap_text: true}
|
||||||
|
row = ['Booth ID',
|
||||||
|
'Title',
|
||||||
|
'Description',
|
||||||
|
'Reasoning',
|
||||||
|
'Submitter Name',
|
||||||
|
'Submitter Relationship',
|
||||||
|
'Website Url',
|
||||||
|
'State']
|
||||||
|
sheet.add_row row, style: bold_style
|
||||||
|
|
||||||
|
@booths.confirmed.each do |booth|
|
||||||
|
row = []
|
||||||
|
row << booth.id
|
||||||
|
row << booth.title
|
||||||
|
row << booth.description
|
||||||
|
row << booth.reasoning
|
||||||
|
row << booth.submitter.name
|
||||||
|
row << booth.submitter_relationship
|
||||||
|
row << booth.website_url
|
||||||
|
row << booth.state
|
||||||
|
sheet.add_row row , style: wrap_text
|
||||||
|
sheet.column_widths 10,20,35,35,20,30,35,10
|
||||||
|
end
|
||||||
|
end
|
||||||
4
app/views/admin/booths/booths.csv.haml
Normal file
4
app/views/admin/booths/booths.csv.haml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
- if @booth_export_option == 'confirmed'
|
||||||
|
= render 'confirmed_booths'
|
||||||
|
- elsif @booth_export_option == 'all'
|
||||||
|
= render 'all_booths'
|
||||||
5
app/views/admin/booths/booths.pdf.prawn
Normal file
5
app/views/admin/booths/booths.pdf.prawn
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
if @booth_export_option == 'confirmed'
|
||||||
|
render 'confirmed_booths'
|
||||||
|
elsif @booth_export_option == 'all'
|
||||||
|
render 'all_booths'
|
||||||
|
end
|
||||||
7
app/views/admin/booths/booths.xlsx.axlsx
Normal file
7
app/views/admin/booths/booths.xlsx.axlsx
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
wb = xlsx_package.workbook
|
||||||
|
xlsx_package.use_autowidth = true
|
||||||
|
if @booth_export_option == 'confirmed'
|
||||||
|
render partial: 'confirmed_booths', locals: { wb: wb }
|
||||||
|
elsif @booth_export_option == 'all'
|
||||||
|
render partial: 'all_booths', locals: { wb: wb }
|
||||||
|
end
|
||||||
|
|
@ -3,6 +3,30 @@
|
||||||
.page-header
|
.page-header
|
||||||
%h1
|
%h1
|
||||||
Booths
|
Booths
|
||||||
|
.pull-right
|
||||||
|
- if can? :read, Booth
|
||||||
|
.btn-group
|
||||||
|
.btn-group
|
||||||
|
%button.btn.btn-default.dropdown-toggle{ 'data-toggle' => 'dropdown', type: 'button', class: 'btn btn-success' }
|
||||||
|
Export PDF
|
||||||
|
%span.caret
|
||||||
|
%ul.dropdown-menu{ role: 'menu' }
|
||||||
|
%li= link_to 'All Booths', admin_conference_booths_path(@conference.short_title, format: :pdf, booth_export_option: 'all')
|
||||||
|
%li= link_to 'Confirmed Booths', admin_conference_booths_path(@conference.short_title, format: :pdf, booth_export_option: 'confirmed')
|
||||||
|
.btn-group
|
||||||
|
%button.btn.btn-default.dropdown-toggle{ 'data-toggle' => 'dropdown', type: 'button', class: 'btn btn-success' }
|
||||||
|
Export CSV
|
||||||
|
%span.caret
|
||||||
|
%ul.dropdown-menu{ role: 'menu' }
|
||||||
|
%li= link_to 'All', admin_conference_booths_path(@conference.short_title, format: :csv, booth_export_option: 'all')
|
||||||
|
%li= link_to 'Confirmed', admin_conference_booths_path(@conference.short_title, format: :csv, booth_export_option: 'confirmed')
|
||||||
|
.btn-group
|
||||||
|
%button.btn.btn-default.dropdown-toggle{ 'data-toggle' => 'dropdown', type: 'button', class: 'btn btn-success' }
|
||||||
|
Export XLS
|
||||||
|
%span.caret
|
||||||
|
%ul.dropdown-menu{ role: 'menu' }
|
||||||
|
%li= link_to 'All', admin_conference_booths_path(@conference.short_title, format: :xlsx, booth_export_option: 'all')
|
||||||
|
%li= link_to 'Confirmed', admin_conference_booths_path(@conference.short_title, format: :xlsx, booth_export_option: 'confirmed')
|
||||||
= "(#{@booths.length})" if @booths.any?
|
= "(#{@booths.length})" if @booths.any?
|
||||||
%p.text-muted
|
%p.text-muted
|
||||||
All the booth requests
|
All the booth requests
|
||||||
|
|
|
||||||
|
|
@ -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')
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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' }
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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?' } }
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
'Start time',
|
'Start time',
|
||||||
'Submitter',
|
'Submitter',
|
||||||
'Speaker',
|
'Speaker',
|
||||||
|
'Speaker Email',
|
||||||
'Event Type',
|
'Event Type',
|
||||||
'Track',
|
'Track',
|
||||||
'Difficulty Level',
|
'Difficulty Level',
|
||||||
|
|
@ -12,8 +13,15 @@
|
||||||
= CSV.generate_line ['All Events']
|
= CSV.generate_line ['All Events']
|
||||||
= CSV.generate_line headers
|
= CSV.generate_line headers
|
||||||
- @events.each do |event|
|
- @events.each do |event|
|
||||||
= CSV.generate_line([event.id, event.title, event.abstract, (event.time.present? ? "#{event.time.strftime("%Y-%m-%d")} #{event.time.strftime("%I:%M%p")} " : ''),
|
= CSV.generate_line([event.id,
|
||||||
event.submitter.name, event.speaker_names, event.event_type.title,
|
event.title,
|
||||||
|
event.abstract,
|
||||||
|
(event.time.present? ? "#{event.time.strftime("%Y-%m-%d")}#{event.time.strftime("%I:%M%p")} " : ''),
|
||||||
|
event.submitter.name,
|
||||||
|
event.speaker_names,
|
||||||
|
event.speaker_emails,
|
||||||
|
event.event_type.title,
|
||||||
(event.track.present? ? event.track.name : ''),
|
(event.track.present? ? event.track.name : ''),
|
||||||
(event.difficulty_level.present? ? event.difficulty_level.title : ''),
|
(event.difficulty_level.present? ? event.difficulty_level.title : ''),
|
||||||
(event.room.present? ? event.room.name : ''), event.state]).html_safe
|
(event.room.present? ? event.room.name : ''),
|
||||||
|
event.state]).html_safe
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue