diff --git a/.ruby-version b/.ruby-version index 437459cd..0cadbc1e 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.5.0 +2.5.5 diff --git a/CHANGES.md b/CHANGES.md index db20a234..432cdcdf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,12 @@ Not release yet... ## Update from 1.0 +### Dropped travel information +We have dropped input and storage of travel schedules for event registrants. If +you would like to continue to collect travel schedules, please create a custom +survey for this purpose. +_Please be aware that existing travel data will be destroyed during migration._ + ### Multiple Schedules A conference can have multiple schedules now so it's easier for organizers to test schedules and collaborate on different versions. diff --git a/Gemfile b/Gemfile index b281e1aa..1a43ca93 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' -ruby ENV['OSEM_RUBY_VERSION'] || '2.5.0' +ruby ENV['OSEM_RUBY_VERSION'] || '2.5.5' # rails-assets requires >= 1.8.4 if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4') @@ -20,7 +20,7 @@ gem 'puma', '~> 3.0' gem 'responders', '~> 2.0' # as supported databases -gem 'mysql2' +# gem 'mysql2' gem 'pg' # for tracking data changes @@ -38,12 +38,12 @@ gem 'rails-i18n' gem 'devise' gem 'devise_ichain_authenticatable' -# for openID authentication gem 'omniauth' -gem 'omniauth-facebook' -gem 'omniauth-github' gem 'omniauth-google-oauth2' -gem 'omniauth-openid' +gem 'omniauth-discourse' +# gem 'omniauth-openid' +# gem 'omniauth-facebook' +# gem 'omniauth-github' # Bot-filtering gem 'recaptcha', require: 'recaptcha/rails' diff --git a/Gemfile.lock b/Gemfile.lock index 2e1da283..788c1861 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -304,7 +304,6 @@ GEM multi_json (1.13.1) multi_xml (0.6.0) multipart-post (2.1.1) - mysql2 (0.5.2) nenv (0.3.0) net-http-persistent (3.0.1) connection_pool (~> 2.2) @@ -324,11 +323,8 @@ GEM omniauth (1.9.0) hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) - omniauth-facebook (5.0.0) - omniauth-oauth2 (~> 1.2) - omniauth-github (1.3.0) - omniauth (~> 1.5) - omniauth-oauth2 (>= 1.4.0, < 2.0) + omniauth-discourse (1.0.0) + omniauth (~> 1.0) omniauth-google-oauth2 (0.6.1) jwt (>= 2.0) omniauth (>= 1.1.1) @@ -336,9 +332,6 @@ GEM omniauth-oauth2 (1.6.0) oauth2 (~> 1.1) omniauth (~> 1.9) - omniauth-openid (1.0.1) - omniauth (~> 1.0) - rack-openid (~> 1.3.1) open4 (1.3.4) orm_adapter (0.5.0) paper_trail (10.3.1) @@ -380,9 +373,6 @@ GEM public_suffix (3.1.1) puma (3.12.2) rack (2.0.8) - rack-openid (1.3.1) - rack (>= 1.1.0) - ruby-openid (>= 2.1.8) rack-test (1.1.0) rack (>= 1.0, < 3) rails (5.2.3) @@ -499,7 +489,6 @@ GEM rubocop-rspec (1.36.0) rubocop (>= 0.68.1) ruby-oembed (0.12.0) - ruby-openid (2.9.2) ruby-progressbar (1.10.1) ruby-rc4 (0.1.5) ruby_dep (1.5.0) @@ -665,13 +654,10 @@ DEPENDENCIES mina mini_magick money-rails - mysql2 nokogiri (>= 1.8.1) omniauth - omniauth-facebook - omniauth-github + omniauth-discourse omniauth-google-oauth2 - omniauth-openid paper_trail pdf-inspector pg @@ -726,7 +712,7 @@ DEPENDENCIES whenever RUBY VERSION - ruby 2.5.0p0 + ruby 2.5.5p157 BUNDLED WITH 1.17.3 diff --git a/app/assets/images/snapcon_logo.png b/app/assets/images/snapcon_logo.png new file mode 100644 index 00000000..cec0ed9b Binary files /dev/null and b/app/assets/images/snapcon_logo.png differ diff --git a/app/assets/javascripts/osem-datepickers.js b/app/assets/javascripts/osem-datepickers.js index b907aa0c..c11c61a9 100644 --- a/app/assets/javascripts/osem-datepickers.js +++ b/app/assets/javascripts/osem-datepickers.js @@ -13,40 +13,6 @@ $(function () { format: 'YYYY-MM-DD HH:mm' }); - $("#registration-arrival-datepicker").datetimepicker({ - useCurrent: false, - stepping: 15, - sideBySide: true, - format: "YYYY-MM-DD HH:mm", - // current_date <= arrival_date <= end_date - maxDate : $("#registration-arrival-datepicker").attr('end_date'), - minDate : today - }); - - $("#registration-departure-datepicker").datetimepicker({ - useCurrent: false, - stepping: 15, - sideBySide: true, - format: "YYYY-MM-DD HH:mm", - // departure_date > start_date - minDate : $("#registration-arrival-datepicker").attr('start_date') - }); - - $("#registration-arrival-datepicker").on("dp.change",function (e) { - // departure_date > start_date,arrival_date - if ((new Date(e.date).getTime()) > (new Date($("#registration-arrival-datepicker").attr('start_date')).getTime())){ - $('#registration-departure-datepicker').data("DateTimePicker").minDate(e.date); - } - else{ - $('#registration-departure-datepicker').data("DateTimePicker").minDate($("#registration-arrival-datepicker").attr('start_date')); - } - }); - - // departure_date >= arrival_date - $("#registration-departure-datepicker").on("dp.change",function (e) { - $('#registration-arrival-datepicker').data("DateTimePicker").maxDate(e.date); - }); - $("#conference-start-datepicker").datetimepicker({ useCurrent: false, format: "YYYY-MM-DD", diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 567fa050..0b80bc19 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -2,6 +2,13 @@ *= require strap-on *= require formtastic-bootstrap *= require dataTables/bootstrap/3/jquery.dataTables.bootstrap + *= require selectize + *= require selectize.bootstrap3 + *= require bootstrap-select + *= require bootstrap-markdown + *= require bootstrap-datetimepicker + *= require leaflet + *= require osem *= require osem-rating *= require osem-schedule @@ -10,15 +17,9 @@ *= require osem-splash *= require font-awesome *= require osem-fonts - *= require bootstrap-markdown - *= require bootstrap-datetimepicker - *= require leaflet *= require bootstrap3-switch *= require osem-payments *= require osem-navbar - *= require selectize - *= require selectize.bootstrap3 *= require mastodon - *= require bootstrap-select *= require conferences */ diff --git a/app/assets/stylesheets/osem-navbar.scss b/app/assets/stylesheets/osem-navbar.scss index 011ebc89..89aa2dce 100644 --- a/app/assets/stylesheets/osem-navbar.scss +++ b/app/assets/stylesheets/osem-navbar.scss @@ -1,4 +1,6 @@ @import "breakpoints.scss"; +@import "osem-variables.scss"; + .nav-osem { border: none; @include breakpoint(xs) { @@ -29,7 +31,23 @@ } } .dropdown-menu { - padding: 17px; min-width: 225px; } + + &.navbar-default { + .navbar-nav > .open > a { + &:hover, &:focus { + color: $navbar-default-link-color; + } + } + } + + .navbar-brand img { + margin-top: -5px; + max-height: 100%; + } + + .trapezoid { + border-top-color: $navbar-default-bg; + } } diff --git a/app/assets/stylesheets/osem-schedule.scss b/app/assets/stylesheets/osem-schedule.scss index 1cf1efec..b7c4e3ac 100644 --- a/app/assets/stylesheets/osem-schedule.scss +++ b/app/assets/stylesheets/osem-schedule.scss @@ -64,9 +64,8 @@ #schedule td.event { background-image: linear-gradient(to top, rgb(247,250,242) 24%, rgb(194,232,190) 97%, rgb(194,232,190) 100%); - -cursor: pointer; -padding: 3px 2px; + cursor: pointer; + padding: 3px 2px; } #schedule td.event:hover diff --git a/app/assets/stylesheets/osem-splash.scss b/app/assets/stylesheets/osem-splash.scss index ce0418d6..e2bdda65 100644 --- a/app/assets/stylesheets/osem-splash.scss +++ b/app/assets/stylesheets/osem-splash.scss @@ -1,4 +1,5 @@ @import "breakpoints.scss"; +@import "osem-variables.scss"; #splash { // Counter the general padding for #content @@ -6,18 +7,30 @@ section { padding-top: 60px; padding-bottom: 60px; + + .trapezoid { + top: 60px + $trapezoid-height; + } } section:nth-child(even) { - background: none repeat scroll 0 0 #e0e0e0; - color: #555; + background: none repeat scroll 0 0 #eee; + color: #333; + + .trapezoid { + border-top-color: #eee; + } } section:nth-child(odd) { background: none repeat scroll 0 0 #ffffff; - color: #7b7b7b; + color: #333; .thumbnail { background: none repeat scroll 0 0 #e0e0e0; } + + .trapezoid { + border-top-color: #fff; + } } .cta-button { @@ -32,11 +45,15 @@ padding-top: 100px; padding-bottom: 100px; .container { - #header { + #header-no-image { background-color: rgba(224, 224, 224,.80); padding-top: 20px; padding-bottom: 20px; } + + #header-image { + color: #FFF; + } } } @@ -67,6 +84,10 @@ #venue-pic { margin-top: 20px; } + // The venue section has less padding. + .trapezoid { + top: $trapezoid-height; + } } #lodging { @@ -93,6 +114,14 @@ } } + #tickets { + a { + &:hover, &:focus { + text-decoration: none; + } + } + } + #sponsors { .img-sponsor { max-height: 100px; @@ -116,14 +145,13 @@ } #social-media{ - background: none repeat scroll 0 0 #2f2f2f; - padding-top: 60px; - padding-bottom: 60px; + background: none repeat scroll 0 0 #0C3559; + padding: 50px 20px; i{ - color: #4a4a4a; + color: #FFF; } i:hover{ - color: #16a085; + color: #F2E205; } a{ padding-left: 100px; @@ -164,11 +192,11 @@ i.fa { line-height: inherit; } - &.show { - visibility:visible; - cursor:pointer; - opacity: 1.0; - } + // &.show { + // visibility:visible; + // cursor:pointer; + // opacity: 1.0; + // } a { color: white; } diff --git a/app/assets/stylesheets/osem-variables.scss b/app/assets/stylesheets/osem-variables.scss new file mode 100644 index 00000000..1ae23c03 --- /dev/null +++ b/app/assets/stylesheets/osem-variables.scss @@ -0,0 +1,14 @@ +// This file is included *early* in CSS order! +// These variables change bootstrap defaults. + +$navbar-default-bg: #0C3559; +$navbar-default-link-active-bg: rgb(8,8,8); +$navbar-default-border: 1px solid #d4d4d4; +$navbar-default-color: #FFF; +$navbar-default-link-color: #FFF; +$navbar-default-link-hover-color: #F2E205; +$navbar-default-link-active-hover-color: #FFF; + + +// The hiegh of the section tabs that are like Snap! blocks. +$trapezoid-height: 14px; diff --git a/app/assets/stylesheets/osem.scss b/app/assets/stylesheets/osem.scss index 04da1a37..bcf37d4f 100644 --- a/app/assets/stylesheets/osem.scss +++ b/app/assets/stylesheets/osem.scss @@ -1,3 +1,4 @@ +@import "osem-variables"; @import "bootstrap/mixins"; html { @@ -7,15 +8,31 @@ html { body { /* Margin bottom by 2 times the footer height */ - margin-bottom: 60px; + margin-bottom: 85px; /* Margin bottom by navbar height */ padding-top: 60px; + font-size: 16px; } #content { padding-bottom: 60px; } +// Designed to be the last element in a section / nav +// Makes a little "puzzle piece" connector. +.trapezoid { + position: relative; + margin-left: 60px; + border-top: $trapezoid-height solid; + border-left: 9px solid transparent; + border-right: 9px solid transparent; + height: 0; + width: 64px; + margin-top: -1 * $trapezoid-height; + top: $trapezoid-height; + z-index: 1000; +} + #footer { position: absolute; bottom: 0; diff --git a/app/assets/stylesheets/strap-on.scss b/app/assets/stylesheets/strap-on.scss index 571161e6..69538d2e 100644 --- a/app/assets/stylesheets/strap-on.scss +++ b/app/assets/stylesheets/strap-on.scss @@ -1,10 +1,5 @@ -$navbar-default-bg: #299a0b; -$navbar-default-link-active-bg: #DFE0DF; -$navbar-default-border: 1px solid #d4d4d4; -$navbar-default-color: #ffffff; -$navbar-default-link-color: #ffffff; -$navbar-default-link-hover-color: #000000; - +// Place bootstrap variable customizations in the file below. +@import "osem-variables"; @import 'bootstrap-datetimepicker'; @import "bootstrap-sprockets"; diff --git a/app/controllers/admin/commercials_controller.rb b/app/controllers/admin/commercials_controller.rb index e361086d..ee8cee00 100644 --- a/app/controllers/admin/commercials_controller.rb +++ b/app/controllers/admin/commercials_controller.rb @@ -17,10 +17,10 @@ module Admin if @commercial.save redirect_to admin_conference_commercials_path, - notice: 'Commercial was successfully created.' + notice: 'Materials were successfully created.' else redirect_to admin_conference_commercials_path, - error: 'An error prohibited this Commercial from being saved: '\ + error: 'An error prohibited materials from being saved: '\ "#{@commercial.errors.full_messages.join('. ')}." end @@ -29,17 +29,17 @@ module Admin def update if @commercial.update(commercial_params) redirect_to admin_conference_commercials_path, - notice: 'Commercial was successfully updated.' + notice: 'Materials were successfully updated.' else redirect_to admin_conference_commercials_path, - error: 'An error prohibited this Commercial from being saved: '\ + error: 'An error prohibited materials from being saved: '\ "#{@commercial.errors.full_messages.join('. ')}." end end def destroy @commercial.destroy - redirect_to admin_conference_commercials_path, notice: 'Commercial was successfully destroyed.' + redirect_to admin_conference_commercials_path, notice: 'Materials were successfully removed.' end def render_commercial @@ -60,9 +60,9 @@ module Admin errors = Commercial.read_file(params[:file]) if params[:file] if !params[:file] - flash[:error] = 'Empty file detected while adding commercials to Event' + flash[:error] = 'Empty file detected while adding materials to Event' elsif errors.all? { |_k, v| v.blank? } - flash[:notice] = 'Successfully added commercials.' + flash[:notice] = 'Successfully added materials.' else errors_text = '' errors_text << 'Unable to find event with ID: ' + errors[:no_event].join(', ') + '. ' if errors[:no_event].any? diff --git a/app/controllers/admin/registrations_controller.rb b/app/controllers/admin/registrations_controller.rb index 89c4d069..ef94ae2e 100644 --- a/app/controllers/admin/registrations_controller.rb +++ b/app/controllers/admin/registrations_controller.rb @@ -82,7 +82,7 @@ module Admin def registration_params params.require(:registration).permit( - :user_id, :conference_id, :arrival, :departure, :attended, + :user_id, :conference_id, :attended, :volunteer, :other_special_needs, :accepted_code_of_conduct, vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: [] ) diff --git a/app/controllers/admin/venue_commercials_controller.rb b/app/controllers/admin/venue_commercials_controller.rb index ddd13aa9..10a46de6 100644 --- a/app/controllers/admin/venue_commercials_controller.rb +++ b/app/controllers/admin/venue_commercials_controller.rb @@ -12,10 +12,10 @@ module Admin if @commercial.save redirect_to admin_conference_venue_path, - notice: 'Commercial was successfully created.' + notice: 'Materials successfully created.' else redirect_to admin_conference_venue_path, - error: 'An error prohibited this Commercial from being saved: '\ + error: 'An error prohibited materials from being saved: '\ "#{@commercial.errors.full_messages.join('. ')}." end @@ -24,17 +24,17 @@ module Admin def update if @commercial.update(commercial_params) redirect_to admin_conference_venue_path, - notice: 'Commercial was successfully updated.' + notice: 'Materials successfully updated.' else redirect_to admin_conference_venue_path, - error: 'An error prohibited this Commercial from being saved: '\ + error: 'An error prohibited materials from being saved: '\ "#{@commercial.errors.full_messages.join('. ')}." end end def destroy @commercial.destroy - redirect_to admin_conference_venue_path, notice: 'Commercial was successfully destroyed.' + redirect_to admin_conference_venue_path, notice: 'Materials successfully destroyed.' end def render_commercial diff --git a/app/controllers/commercials_controller.rb b/app/controllers/commercials_controller.rb index aa48a406..9b5e2110 100644 --- a/app/controllers/commercials_controller.rb +++ b/app/controllers/commercials_controller.rb @@ -12,27 +12,27 @@ class CommercialsController < ApplicationController if @commercial.save redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'), - notice: 'Commercial was successfully created.' + notice: 'Materials were successfully created.' else redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'), - error: "An error prohibited this Commercial from being saved: #{@commercial.errors.full_messages.join('. ')}." + error: "An error prohibited these materials from being saved: #{@commercial.errors.full_messages.join('. ')}." end end def update if @commercial.update(commercial_params) redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'), - notice: 'Commercial was successfully updated.' + notice: 'Materials were successfully updated.' else redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content'), - error: "An error prohibited this Commercial from being saved: #{@commercial.errors.full_messages.join('. ')}." + error: "An error prohibited materials from being saved: #{@commercial.errors.full_messages.join('. ')}." end end def destroy @commercial.destroy redirect_to edit_conference_program_proposal_path(conference_id: @conference.short_title, id: @event.id), - notice: 'Commercial was successfully destroyed.' + notice: 'Materials were successfully destroyed.' end def render_commercial diff --git a/app/controllers/conference_registrations_controller.rb b/app/controllers/conference_registrations_controller.rb index 88ff816b..d0dad229 100644 --- a/app/controllers/conference_registrations_controller.rb +++ b/app/controllers/conference_registrations_controller.rb @@ -108,9 +108,9 @@ class ConferenceRegistrationsController < ApplicationController end def registration_params - params.require(:registration) + params.permit(:registration) .permit( - :conference_id, :arrival, :departure, + :conference_id, :volunteer, :accepted_code_of_conduct, vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], diff --git a/app/controllers/conferences_controller.rb b/app/controllers/conferences_controller.rb index 005fe4ad..e7d196d5 100644 --- a/app/controllers/conferences_controller.rb +++ b/app/controllers/conferences_controller.rb @@ -54,7 +54,7 @@ class ConferencesController < ApplicationController @tickets = @conference.tickets.visible.order('price_cents') end if splashpage.include_lodgings - @lodgings = @conference.lodgings.order('name') + @lodgings = @conference.lodgings.order('id') end if splashpage.include_sponsors @sponsorship_levels = @conference.sponsorship_levels.eager_load( diff --git a/app/datatables/registration_datatable.rb b/app/datatables/registration_datatable.rb index bdd97e72..a20fe3af 100644 --- a/app/datatables/registration_datatable.rb +++ b/app/datatables/registration_datatable.rb @@ -10,8 +10,6 @@ class RegistrationDatatable < AjaxDatatablesRails::Base roles: { source: 'Role.name' }, email: { source: 'User.email' }, accepted_code_of_conduct: { source: 'Registration.accepted_code_of_conduct', searchable: false }, - arrival: { source: 'Registration.arrival', searchable: false }, - departure: { source: 'Registration.departure', searchable: false }, actions: { source: 'Registration.id', searchable: false, orderable: false } } end @@ -36,8 +34,6 @@ class RegistrationDatatable < AjaxDatatablesRails::Base roles: conference_role_titles(record.user), email: record.email, accepted_code_of_conduct: !!record.accepted_code_of_conduct, # rubocop:disable Style/DoubleNegation - arrival: record.arrival&.utc, - departure: record.departure&.utc, questions: {}, edit_url: edit_admin_conference_registration_path(conference, record), DT_RowId: record.id diff --git a/app/datatables/user_datatable.rb b/app/datatables/user_datatable.rb index ab0e877f..a01e7e12 100644 --- a/app/datatables/user_datatable.rb +++ b/app/datatables/user_datatable.rb @@ -40,19 +40,20 @@ class UserDatatable < AjaxDatatablesRails::Base # rubocop:disable Naming/AccessorMethodName def get_raw_records - User.left_outer_joins(:registrations, :roles) - .distinct - .select("users.*, COUNT(CASE WHEN registrations.attended = 't' THEN 1 END) AS attended_count") - .group('users.id') + User.left_outer_joins(:registrations, :roles).select( + "DISTINCT users.id, users.name, users.email, users.confirmed_at, COUNT(CASE WHEN registrations.attended = 't' THEN 1 END) AS attended_count" + ).group( + 'users.id, users.name, users.email, users.confirmed_at' + ) end # rubocop:enable Naming/AccessorMethodName def records_total_count - fetch_records.unscope(:group).count(:all) + fetch_records.unscoped.count(:id) end def records_filtered_count - filter_records(fetch_records).unscope(:group).count(:all) + filter_records(fetch_records).unscoped.count end # ==== These methods represent the basic operations to perform on records diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9e27c1a5..4091792d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -185,7 +185,7 @@ module ApplicationHelper 'OSEM' ) link_to( - link_text, + image_tag('snapcon_logo.png'), root_path, class: 'navbar-brand', title: 'Open Source Event Manager' diff --git a/app/helpers/format_helper.rb b/app/helpers/format_helper.rb index b0691518..9dc7abc5 100644 --- a/app/helpers/format_helper.rb +++ b/app/helpers/format_helper.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true +require 'redcarpet/render_strip' module FormatHelper ## @@ -191,9 +192,12 @@ module FormatHelper return '' if text.nil? options = { - autolink: true, + autolink: true, space_after_headers: true, - no_intra_emphasis: true + tables: true, + strikethrough: true, + footnotes: true, + superscript: true } markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(escape_html: escape_html), options) markdown.render(text).html_safe @@ -203,6 +207,11 @@ module FormatHelper markdown("#{text} Please look at #{link_to '**Markdown Syntax**', 'https://daringfireball.net/projects/markdown/syntax', target: '_blank'} to format your text", false) end + # Return a plain text markdown stripped of formatting. + def plain_text(content) + Redcarpet::Markdown.new(Redcarpet::Render::StripDown).render(content) + end + def quantity_left_of(resource) return '-/-' if resource.quantity.blank? diff --git a/app/models/.gitkeep b/app/models/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/models/.lodging.rb.swp b/app/models/.lodging.rb.swp deleted file mode 100644 index 70c3567d..00000000 Binary files a/app/models/.lodging.rb.swp and /dev/null differ diff --git a/app/models/commercial.rb b/app/models/commercial.rb index 7bb2a081..4d28330c 100644 --- a/app/models/commercial.rb +++ b/app/models/commercial.rb @@ -39,7 +39,7 @@ class Commercial < ApplicationRecord commercial = event.commercials.new(url: url) unless commercial.save - errors[:validation_errors] << "Could not create commercial for event with ID #{event.id} (" + commercial.errors.full_messages.to_sentence + ')' + errors[:validation_errors] << "Could not create materials for event with ID #{event.id} (" + commercial.errors.full_messages.to_sentence + ')' end end errors diff --git a/app/models/conference.rb b/app/models/conference.rb index be3c36ad..c48dcf02 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -25,8 +25,8 @@ class Conference < ApplicationRecord has_one :email_settings, dependent: :destroy has_one :program, dependent: :destroy has_one :venue, dependent: :destroy - has_many :physical_tickets, through: :ticket_purchases has_many :ticket_purchases, dependent: :destroy + has_many :physical_tickets, through: :ticket_purchases has_many :payments, dependent: :destroy has_many :supporters, through: :ticket_purchases, source: :user has_many :tickets, dependent: :destroy diff --git a/app/models/registration.rb b/app/models/registration.rb index 84a9aba0..759003fd 100644 --- a/app/models/registration.rb +++ b/app/models/registration.rb @@ -28,8 +28,6 @@ class Registration < ApplicationRecord validates :user_id, uniqueness: { scope: :conference_id, message: 'already Registered!' } validate :registration_limit_not_exceed, on: :create - validate :registration_to_events_only_if_present - validates :accepted_code_of_conduct, acceptance: { if: -> { conference.try(:code_of_conduct).present? } } @@ -48,19 +46,6 @@ class Registration < ApplicationRecord private - ## - # If the user registers to attend events that are already scheduled, - # only allow registration to events if the user will be present - # (based on arrival and departure attributes) - # No validation if arrival/departure attributes are empty - def registration_to_events_only_if_present - if (arrival || departure) && events.pluck(:start_time).any? - errors.add(:arrival, 'is too late! You cannot register for events that take place before your arrival') if events.pluck(:start_time).compact.map { |x| x < arrival }.any? - - errors.add(:departure, 'is too early! You cannot register for events that take place after your departure') if events.pluck(:start_time).compact.map { |x| x > departure }.any? - end - end - def subscribe_to_conference Subscription.create(conference_id: conference.id, user_id: user.id) end diff --git a/app/models/user.rb b/app/models/user.rb index 7c764fa1..1e148579 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -50,7 +50,7 @@ class User < ApplicationRecord else [:database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, - :omniauthable, omniauth_providers: [:suse, :google, :facebook, :github]] + :omniauthable, omniauth_providers: [:google, :discourse]] end devise(*devise_modules) diff --git a/app/views/admin/commercials/index.html.haml b/app/views/admin/commercials/index.html.haml index 095ddad2..2dbe10a2 100644 --- a/app/views/admin/commercials/index.html.haml +++ b/app/views/admin/commercials/index.html.haml @@ -1,11 +1,11 @@ .row .col-md-12 .page-header - %h1 Commercials + %h1 Session Materials %p.text-muted - Conference commercials will be displayed on the events in the + Conference materials will be displayed on the events in the = link_to 'schedule,', conference_schedule_path(@conference.short_title) - if the event speaker didn't add an event commercial. + if the event speaker didn't add any event materials. - if can? :create, @conference.commercials.new .row .col-md-6 diff --git a/app/views/admin/event_types/_form.html.haml b/app/views/admin/event_types/_form.html.haml index 29fac398..91533877 100644 --- a/app/views/admin/event_types/_form.html.haml +++ b/app/views/admin/event_types/_form.html.haml @@ -7,11 +7,12 @@ Event Type = @event_type.title .row - .col-md-12 - = semantic_form_for(@event_type, url: (@event_type.new_record? ? admin_conference_program_event_types_path : admin_conference_program_event_type_path(@conference.short_title, @event_type))) do |f| + .col-md-8 + - form_url = (@event_type.new_record? ? admin_conference_program_event_types_path : admin_conference_program_event_type_path(@conference.short_title, @event_type)) + = semantic_form_for(@event_type, url: form_url) do |f| = f.input :title, input_html: { autofocus: true } = f.input :length, input_html: {size: 3, type: 'number', step: @event_type.program.schedule_interval, min: @event_type.program.schedule_interval} - = f.input :description + = f.input :description, as: :text, hint: markdown_hint, input_html: { rows: 5, data: { provide: 'markdown-editable' } } = f.input :minimum_abstract_length, input_html: {size: 3} = f.input :maximum_abstract_length, input_html: {size: 3} = f.input :color, input_html: { size: 6, type: 'color' } diff --git a/app/views/admin/event_types/index.html.haml b/app/views/admin/event_types/index.html.haml index 4d3c27b8..e18cceeb 100644 --- a/app/views/admin/event_types/index.html.haml +++ b/app/views/admin/event_types/index.html.haml @@ -20,7 +20,7 @@ %td = event_type.title %td - = event_type.description + = markdown(event_type.description) %td = event_type.length Minutes diff --git a/app/views/admin/events/index.html.haml b/app/views/admin/events/index.html.haml index 4944d946..c766a7a6 100644 --- a/app/views/admin/events/index.html.haml +++ b/app/views/admin/events/index.html.haml @@ -6,9 +6,9 @@ = "(#{@events.length})" if @events.any? .btn-group.pull-right - %button.btn.btn-primary{ title: 'Mass import of commercials for events', + %button.btn.btn-primary{ title: 'Mass import of materials for events', data: { toggle: 'modal', target: '#mass-commercials-modal' } } - Add Commercials + Add Materials - if can? :create, Event = link_to 'Add Event', @@ -28,7 +28,7 @@ .modal-dialog .modal-content .modal-header - %h1 Add commercials to events + %h1 Add materials to events .text-muted Upload your file with data in the following format: %b Event_ID:Commercial_Link diff --git a/app/views/admin/events/show.html.haml b/app/views/admin/events/show.html.haml index 4b764838..525e4c93 100644 --- a/app/views/admin/events/show.html.haml +++ b/app/views/admin/events/show.html.haml @@ -11,7 +11,7 @@ - progress_status = @event.progress_status = progress_status.reject{ |_key, value| value || value.nil? }.length %li - = link_to 'Commercials', '#proposal-commercials', 'data-toggle' => 'tab' + = link_to 'Materials', '#proposal-commercials', 'data-toggle' => 'tab' .tab-content #proposal-content.tab-pane.active @@ -42,7 +42,7 @@ - else = general_change_description(version) - = link_to 'commercial', + = link_to 'materials', edit_admin_conference_program_event_path(conference_id: @conference.short_title, id: @event.id, anchor: 'commercials-content') @@ -82,7 +82,7 @@ %td{ 'class' => class_for_todo(progress_status['subtitle']) } %span{ 'class' => [icon_for_todo(progress_status['subtitle']), 'fa-lg'] } %tr - %td= link_to 'Add a commercial', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event, anchor: 'commercials-content') + %td= link_to 'Add materials', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event, anchor: 'commercials-content') %td{ 'class' => class_for_todo(progress_status['commercials']) } %span{ 'class' => [icon_for_todo(progress_status['commercials']), 'fa-lg'] } - unless progress_status['track'].nil? diff --git a/app/views/admin/registrations/index.html.haml b/app/views/admin/registrations/index.html.haml index 8ea544d8..09f674e9 100644 --- a/app/views/admin/registrations/index.html.haml +++ b/app/views/admin/registrations/index.html.haml @@ -30,8 +30,6 @@ %th{ width: '0' } E-Mail %th{ width: '0' } %abbr{ title: 'Code of Conduct' } CoC - %th{ width: '0' } Arrival - %th{ width: '0' } Departure %th{ width: '0' } Actions %tbody @@ -81,22 +79,6 @@ "className": "code-of-conduct text-center", "searchable": false }, - { - "data": "arrival", - "searchable": false, - "render": function(data, type, row) { - if (data) { return moment(data).format('ll LT'); } - return ''; - } - }, - { - "data": "departure", - "searchable": false, - "render": function(data, type, row) { - if (data) { return moment(data).format('ll LT'); } - return ''; - } - }, { "data": null, "className": "actions", diff --git a/app/views/admin/registrations/index.pdf.prawn b/app/views/admin/registrations/index.pdf.prawn index d7c97ef2..3edebf04 100644 --- a/app/views/admin/registrations/index.pdf.prawn +++ b/app/views/admin/registrations/index.pdf.prawn @@ -4,9 +4,7 @@ prawn_document(force_download: true, filename: @pdf_filename, page_layout: :land 'Name', 'Nickname', 'Affiliation', - 'Email', - 'Arrival Date', - 'Departure Date'] + 'Email'] @conference.questions.each do |question| header_array << question.title end @@ -19,8 +17,6 @@ prawn_document(force_download: true, filename: @pdf_filename, page_layout: :land row << registration.nickname row << registration.affiliation row << registration.email - row << registration.arrival.to_s || '' - row << registration.departure.to_s || '' @conference.questions.each do |question| qa = registration.qanswers.find_by(question: question) diff --git a/app/views/admin/registrations/index.xlsx.axlsx b/app/views/admin/registrations/index.xlsx.axlsx index ee49eb4d..a95c163e 100644 --- a/app/views/admin/registrations/index.xlsx.axlsx +++ b/app/views/admin/registrations/index.xlsx.axlsx @@ -3,7 +3,7 @@ wb = xlsx_package.workbook wb.add_worksheet(name: 'registrations') do |sheet| bold_style = wb.styles.add_style(b: true) - row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email', 'Arrival', 'Departure'] + row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email'] @conference.questions.each do |question| row << question.title @@ -18,8 +18,6 @@ wb.add_worksheet(name: 'registrations') do |sheet| row << registration.nickname row << registration.affiliation row << registration.email - row << registration.arrival.to_s - row << registration.departure.to_s @conference.questions.each do |question| qa = registration.qanswers.find_by(question: question) answer = ( qa ? qa.answer.title : '' ) @@ -30,4 +28,3 @@ wb.add_worksheet(name: 'registrations') do |sheet| sheet.add_row row end end - diff --git a/app/views/admin/reports/_all_events.html.haml b/app/views/admin/reports/_all_events.html.haml index 712d4ad7..0eb6b829 100644 --- a/app/views/admin/reports/_all_events.html.haml +++ b/app/views/admin/reports/_all_events.html.haml @@ -14,7 +14,7 @@ %th Title %th Speakers Registered %th Speakers Biographies - %th Commercial + %th Materials %th Subtitle %th Difficulty Level - if @program.tracks.any? diff --git a/app/views/admin/reports/_events_without_commercials.html.haml b/app/views/admin/reports/_events_without_commercials.html.haml index 8f26cb99..77020191 100644 --- a/app/views/admin/reports/_events_without_commercials.html.haml +++ b/app/views/admin/reports/_events_without_commercials.html.haml @@ -2,10 +2,10 @@ .col-md-12 .page-header %h1 - Events without commercials + Events Without Materials = "(#{@events_missing_commercial.length})" %p.text-muted - All submissions that have no commercial + All submissions that have no materials .col-md-12 %table.datatable %thead diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml index 6bbb8886..db6480f3 100644 --- a/app/views/admin/reports/index.html.haml +++ b/app/views/admin/reports/index.html.haml @@ -4,7 +4,7 @@ = link_to 'All Events', '#all', 'data-toggle' => 'tab' %li %a{href: '#missing-commercial', 'data-toggle' => 'tab'} - Events without Commercials + Events without Materials %span.label.label-danger{style: 'border-radius: 1em;'} = @events_missing_commercial.length %li diff --git a/app/views/admin/venues/_form.html.haml b/app/views/admin/venues/_form.html.haml index 6674305b..e19325da 100644 --- a/app/views/admin/venues/_form.html.haml +++ b/app/views/admin/venues/_form.html.haml @@ -7,7 +7,7 @@ %li.active = link_to 'Details', '#details-content', 'data-toggle' => 'tab' %li - = link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab' + = link_to 'Materials', '#commercials-content', 'data-toggle' => 'tab' .tab-content #details-content.tab-pane.active @@ -56,4 +56,4 @@ %hr - else - First Create Venue, then update commercial + First Create Venue, then update materials diff --git a/app/views/admin/venues/show.html.haml b/app/views/admin/venues/show.html.haml index 36906e05..de29c4e3 100644 --- a/app/views/admin/venues/show.html.haml +++ b/app/views/admin/venues/show.html.haml @@ -12,7 +12,7 @@ -else - if @venue.commercial.nil? .row - %img{ "data-src" => "holder.js/500x300?text=No Commercial Set", class: 'img-responsive img-rounded' } + %img{ "data-src" => "holder.js/500x300?text=No Materials Set", class: 'img-responsive img-rounded' } - else - if @venue.commercial.persisted? .thumbnail diff --git a/app/views/commercials/edit.html.haml b/app/views/commercials/edit.html.haml index 174a1a60..359f27a8 100644 --- a/app/views/commercials/edit.html.haml +++ b/app/views/commercials/edit.html.haml @@ -2,7 +2,7 @@ .row .col-md-12 .page-header - %h1 Editing Commercial + %h1 Edit Materials .row .col-md-12 = semantic_form_for @commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event.id, id: @commercial.id) do |f| diff --git a/app/views/commercials/new.html.haml b/app/views/commercials/new.html.haml index da726e89..4152ff88 100644 --- a/app/views/commercials/new.html.haml +++ b/app/views/commercials/new.html.haml @@ -2,7 +2,7 @@ .row .col-md-12 .page-header - %h1 New Commercial + %h1 New Materials .row .col-md-12 = semantic_form_for @commercial, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event.id) do |f| diff --git a/app/views/conference_registrations/_form.html.haml b/app/views/conference_registrations/_form.html.haml index 971a613f..1dd5f175 100644 --- a/app/views/conference_registrations/_form.html.haml +++ b/app/views/conference_registrations/_form.html.haml @@ -22,6 +22,7 @@ = render partial: 'devise/shared/sign_up_form_embedded' = render partial: 'registration_info', locals: { f: f } + = f.input :conference_id, as: :hidden, value: @conference.id .row .col-md-12 %p.pull-right diff --git a/app/views/conference_registrations/_registration_info.html.haml b/app/views/conference_registrations/_registration_info.html.haml index a81f385d..5fdd9bf4 100644 --- a/app/views/conference_registrations/_registration_info.html.haml +++ b/app/views/conference_registrations/_registration_info.html.haml @@ -24,10 +24,4 @@ (Scheduled on: #{event.time.to_date}) %br - - -= f.inputs 'Your Travel Info' do - = f.input :arrival, as: :string, label: 'Your arrival time', hint: "Leave blank if not sure", input_html: { value: (f.object.arrival.to_formatted_s(:db_without_seconds) unless f.object.arrival.nil?), id: 'registration-arrival-datepicker',start_date: @conference.start_date,end_date: @conference.end_date } - = f.input :departure, as: :string, label: 'Your departure time', hint: "Leave blank if not sure", input_html: { value: (f.object.departure.to_formatted_s(:db_without_seconds) unless f.object.departure.nil?), id: 'registration-departure-datepicker' } - = render 'conferences/code_of_conduct', organization: @conference.organization diff --git a/app/views/conference_registrations/show.html.haml b/app/views/conference_registrations/show.html.haml index 4bde4a41..a5663ef1 100644 --- a/app/views/conference_registrations/show.html.haml +++ b/app/views/conference_registrations/show.html.haml @@ -33,28 +33,6 @@ data: { toggle: 'modal', target: '#modal-code-of-conduct'} = render 'conferences/code_of_conduct', organization: @conference.organization - .row - .col-md-12 - %h4 - %span.fa-stack - %i.fa.fa-square-o.fa-stack-2x - %i.fa.fa-plane.fa-stack-1x - Travel Schedule - %ul - %li - - if @registration.arrival.present? - arrive at - %strong - = @registration.arrival.strftime('%A, %B %-d. %Y %H:%M') - - else - You haven't scheduled your arrival - %li - - if @registration.departure.present? - depart at - %strong - = @registration.departure.strftime('%A, %B %-d. %Y %H:%M') - - else - You haven't scheduled your departure - if @conference.surveys.for_registration.any? .row .col-md-12 diff --git a/app/views/conferences/_call_for_content.haml b/app/views/conferences/_call_for_content.haml index 8287e911..57cd9dc8 100644 --- a/app/views/conferences/_call_for_content.haml +++ b/app/views/conferences/_call_for_content.haml @@ -1,6 +1,6 @@ = content_for :splash_nav do %li - %a.smoothscroll{ href: '#call' } Call For Content + %a.smoothscroll{ href: '#call' } Call For Participation %section#call .container @@ -20,3 +20,4 @@ call: call_for_booths - if two_calls_open(call_for_events, call_for_tracks, call_for_booths) .col-md-2.col-sm-2.hidden-xs   + .trapezoid diff --git a/app/views/conferences/_call_for_papers.haml b/app/views/conferences/_call_for_papers.haml index 4847a992..d0d513ff 100644 --- a/app/views/conferences/_call_for_papers.haml +++ b/app/views/conferences/_call_for_papers.haml @@ -2,7 +2,7 @@ expires_in: 1.hour) do .col-md-4.col-sm-4.text-center %h2 - Call for Papers + Call for Participation %p.lead We are now accepting proposals for sessions! %p diff --git a/app/views/conferences/_conference_details.html.haml b/app/views/conferences/_conference_details.html.haml index 08b73023..02e54c29 100644 --- a/app/views/conferences/_conference_details.html.haml +++ b/app/views/conferences/_conference_details.html.haml @@ -6,7 +6,7 @@ = image_tag(conference.picture_url, class: 'img-responsive') if conference.picture? .col-md-6 %h3 - = conference.title + = conference.title.html_safe %small %b = date_string(conference.start_date, conference.end_date) diff --git a/app/views/conferences/_footer.haml b/app/views/conferences/_footer.haml index 5b24fd92..6b66478a 100644 --- a/app/views/conferences/_footer.haml +++ b/app/views/conferences/_footer.haml @@ -1,14 +1,14 @@ -.scroll-top-wrapper - = link_to "#banner", class: "smoothscroll" do - %i.fa.fa-2x.fa-arrow-circle-up +-# .scroll-top-wrapper +-# = link_to "#banner", class: "smoothscroll" do +-# %i.fa.fa-2x.fa-arrow-circle-up -:javascript - $(function(){ - $(document).on( 'scroll', function(){ - if ($(window).scrollTop() > 100) { - $('.scroll-top-wrapper').addClass('show'); - } else { - $('.scroll-top-wrapper').removeClass('show'); - } - }); - }); +-# :javascript +-# $(function(){ +-# $(document).on( 'scroll', function(){ +-# if ($(window).scrollTop() > 100) { +-# $('.scroll-top-wrapper').addClass('show'); +-# } else { +-# $('.scroll-top-wrapper').removeClass('show'); +-# } +-# }); +-# }); diff --git a/app/views/conferences/_header.haml b/app/views/conferences/_header.haml index c3a75bbc..7edf2afd 100644 --- a/app/views/conferences/_header.haml +++ b/app/views/conferences/_header.haml @@ -1,28 +1,28 @@ - cache [conference, venue, '#splash#header'] do - #banner + #banner{ style: ("background-image: url(#{conference.picture_url})" if conference.picture_url) } .container .row - .col-md-8.col-md-offset-2#header + .col-md-6.col-md-offset-3{id: (conference.picture? ? "header-image" : "header-no-image")} .row - .col-md-4 - - if conference.picture? - = image_tag(conference.picture_url, - class: 'img-responsive img-center', - id: 'splash-logo') + -# - if conference.picture? + -# .col-md-4 + -# = image_tag(conference.picture_url, + -# class: 'img-responsive img-center', + -# id: 'splash-logo') .col-md-8 %h1 - = conference.title + = conference.title.html_safe %h3 - if conference.start_date && conference.end_date %span.date.text-nowrap = date_string(conference.start_date, conference.end_date) - if conference.venue %span.venue.text-nowrap - - if venue.website + - if venue.website.present? = sanitize link_to(venue.name, venue.website) - else = venue.city - - if venue.country_name != 'US' + - if venue.country != 'US' • = venue.country_name @@ -32,3 +32,4 @@ .row .col-md-8.col-md-offset-2 = markdown(conference.description) + .trapezoid diff --git a/app/views/conferences/_lodging.haml b/app/views/conferences/_lodging.haml index 724e78ca..fcffbff8 100644 --- a/app/views/conferences/_lodging.haml +++ b/app/views/conferences/_lodging.haml @@ -17,11 +17,11 @@ .row.row-centered - lodgings.each do |lodging| - .col-md-4.col-sm-4.col-centered.col-top + .col-md-6.col-sm-4.col-centered.col-top .thumbnail - if lodging.picture? - if lodging.website_link.present? - = link_to(lodging.website_link, class: 'thumbnail') do + = link_to(lodging.website_link) do = image_tag lodging.picture.large.url, class: 'img-responsive img-lodging' - else @@ -30,12 +30,16 @@ - else %p.text-center - if lodging.website_link.present? - = link_to(lodging.website_link, class: 'thumbnail') do + = link_to(lodging.website_link) do %i.fa.fa-home.fa-5x - else %i.fa.fa-home.fa-5x .caption %h3.text-center - = lodging.name + - if lodging.website_link.present? + = link_to(lodging.name, lodging.website_link) + - else + = lodging.name - if lodging.description.present? = markdown(lodging.description) + .trapezoid diff --git a/app/views/conferences/_program.haml b/app/views/conferences/_program.haml index 2ab2ef70..2998c2f0 100644 --- a/app/views/conferences/_program.haml +++ b/app/views/conferences/_program.haml @@ -9,8 +9,8 @@ .col-md-12 %p.lead.text-center %span.notranslate - = conference.title - has the most awesome program ever! + = conference.title.html_safe + will have an enaging program! - unless highlights.blank? = render 'highlights', conference_id: conference.short_title, @@ -31,6 +31,7 @@ = link_to(conference_schedule_path(conference.short_title), class: 'btn btn-success btn-lg') do Full Schedule + .trapezoid - unless booths.blank? - booths.each do |booth| diff --git a/app/views/conferences/_registration.haml b/app/views/conferences/_registration.haml index 51258f15..468b8b38 100644 --- a/app/views/conferences/_registration.haml +++ b/app/views/conferences/_registration.haml @@ -37,3 +37,4 @@ = link_to('Register Now', new_conference_conference_registration_path(conference_id), class: 'btn btn-lg btn-success') + .trapezoid diff --git a/app/views/conferences/_social_media.haml b/app/views/conferences/_social_media.haml index ea5c481d..ebbfb8e1 100644 --- a/app/views/conferences/_social_media.haml +++ b/app/views/conferences/_social_media.haml @@ -27,3 +27,4 @@ - if contact.email? = mail_to "#{ contact.email }" do %i.fa.fa-envelope-o.fa-4x + .trapezoid diff --git a/app/views/conferences/_sponsors.haml b/app/views/conferences/_sponsors.haml index 5d7bbaa9..0bd5edb0 100644 --- a/app/views/conferences/_sponsors.haml +++ b/app/views/conferences/_sponsors.haml @@ -27,9 +27,10 @@ .row .col-md-12 %h3.text-center - Want to sponsor? + = "Interested in sponsoring #{conference.title}?" = link_to(sponsorship_mailto(conference)) do - Contact us! + Please, contact us! + .trapezoid - sponsors.each do |sponsor| - content_for :modals do diff --git a/app/views/conferences/_tickets.haml b/app/views/conferences/_tickets.haml index 5f0da517..1250266e 100644 --- a/app/views/conferences/_tickets.haml +++ b/app/views/conferences/_tickets.haml @@ -7,12 +7,14 @@ .container .row .col-md-12.text-center - %h2 - Support - = conference.title + %h2 Sign Up for Campus Housing + %br + -# %h2 + -# Support + -# = conference.title .row.row-centered - tickets.each do |ticket| - .col-md-3.col-sm-3.col-centered.col-top + .col-lg-4.col-md-3.col-sm-3.col-centered.col-top = link_to(conference_tickets_path(conference.short_title), class: 'thumbnail') do .caption @@ -21,5 +23,6 @@ .word_break = markdown(ticket.description) %button.btn-block.btn.btn-lg.btn-success - %i.fa.fa-ticket.fa-fw + %i.fa.fa-ticket.fa-fw{"aria-hidden": true} = humanized_money_with_symbol(ticket.price) + .trapezoid diff --git a/app/views/conferences/_venue.haml b/app/views/conferences/_venue.haml index fbdcde48..aae6b43d 100644 --- a/app/views/conferences/_venue.haml +++ b/app/views/conferences/_venue.haml @@ -5,6 +5,12 @@ %section#venue - if venue.location? = render '/conferences/venue_map', venue: venue + - if venue.description.present? + .container + .row + .col-md-8.col-md-offset-2 + = markdown(venue.description, escape_html=false) + .trapezoid - else - cache [venue, commercial, '#splash#venue'] do .container @@ -41,3 +47,4 @@ - if venue.website %br = sanitize link_to(h(venue.website), h(venue.website)) + .trapezoid diff --git a/app/views/conferences/show.html.haml b/app/views/conferences/show.html.haml index e8f64db3..f067fe2d 100644 --- a/app/views/conferences/show.html.haml +++ b/app/views/conferences/show.html.haml @@ -1,10 +1,10 @@ - content_for :head do %meta{ property: "og:title", content: @conference.title } %meta{ property: "og:site_name", content: (ENV['OSEM_NAME'] || 'OSEM') } - %meta{ property: "og:description", content: @conference.description } + %meta{ property: "og:description", content: plain_text(@conference.description) } %meta{ property: "og:url", content: conference_url(@conference.short_title) } %meta{ property: "twitter:title", content: (@conference.title) } - %meta{ property: "twitter:description", content: @conference.description } + %meta{ property: "twitter:description", content: plain_text(@conference.description) } - if @conference.picture? %meta{ property: "og:image", content: @image_url } %meta{ property: "og:image:secure_url", content: @image_url } @@ -64,21 +64,22 @@ = render 'social_media', contact: @conference.contact = render 'footer' -- content_for :script_head do - :javascript - var triangle_tcs = tinycolor("#{h(@conference.color)}").monochromatic(); - var triangle_colors = triangle_tcs.map(function(t) { - return t.toHexString(); - }); - $(function () { - $(document).ready(function() { - var triangle_width = document.body.clientWidth; - var triangle_height = ($( "#banner" ).height() + 200 ); - var pattern = Trianglify({ width: triangle_width, - height: triangle_height, - cell_size: 100, - x_colors: triangle_colors - }); - $('#banner').css('background-image', 'url("' + pattern.png() + '")'); - }); - }); + +-# - content_for :script_head do +-# :javascript +-# var triangle_tcs = tinycolor("#{h(@conference.color)}").monochromatic(); +-# var triangle_colors = triangle_tcs.map(function(t) { +-# return t.toHexString(); +-# }); +-# $(function () { +-# $(document).ready(function() { +-# var triangle_width = document.body.clientWidth; +-# var triangle_height = ($( "#banner" ).height() + 200 ); +-# var pattern = Trianglify({ width: triangle_width, +-# height: triangle_height, +-# cell_size: 100, +-# x_colors: triangle_colors +-# }); +-# $('#banner').css('background-image', 'url(' + 0 + ')'); +-# }); +-# }); diff --git a/app/views/devise/shared/_openid_links.html.haml b/app/views/devise/shared/_openid_links.html.haml index 09c7a7ea..fc6086c9 100644 --- a/app/views/devise/shared/_openid_links.html.haml +++ b/app/views/devise/shared/_openid_links.html.haml @@ -1,7 +1,14 @@ .text-center .btn-group.btn-group-lg#openid-btn-grp - omniauth_configured.each do |provider| - = link_to "user_#{provider}_omniauth_authorize".to_sym, class: "btn btn-success btn-lg", - id: "omniauth-#{provider}", - title: "Your #{provider} login" do - %i{class: "fa fa-#{provider}"} + - if provider != :discourse + = link_to "user_#{provider}_omniauth_authorize".to_sym, class: "btn btn-success btn-lg", + id: "omniauth-#{provider}", + title: "Your #{provider} login" do + %i{class: "fa fa-#{provider}"} + - else + = link_to("Snap!", + "user_#{provider}_omniauth_authorize".to_sym, + class: "btn btn-success btn-lg", + id: "omniauth-#{provider}", + title: "Your #{provider} login") diff --git a/app/views/devise/shared/_sign_in_form_embedded.html.haml b/app/views/devise/shared/_sign_in_form_embedded.html.haml index 362fc695..9a82b188 100644 --- a/app/views/devise/shared/_sign_in_form_embedded.html.haml +++ b/app/views/devise/shared/_sign_in_form_embedded.html.haml @@ -1,25 +1,26 @@ - if ENV['OSEM_ICHAIN_ENABLED'] != 'true' - = form_tag(new_user_session_path, class: 'form-horizontal') do - %legend - %span - Sign In - .form-group - %label{for: "user[login]", class: 'col-sm-2 control-label'} - Username - .col-sm-10 - = text_field_tag 'user[login]', nil, placeholder: 'Username', class: 'form-control', required: 'required' - .form-group - %label{for: "user[password]", class: 'col-sm-2 control-label'} - Password - .col-sm-10 - = password_field_tag 'user[password]', nil, placeholder: 'Password', class: 'form-control', required: 'required' - .form-group - .col-sm-12 - %button.btn.btn-success.pull-right - Sign in - = render partial: 'devise/shared/openid' - %p.text-right - %a.small.btn.btn-default{"data-toggle" => "collapse", "data-target" => "#devise-help-sign-in"} - Need Help? - #devise-help-sign-in.collapse - = render partial: 'devise/shared/links' + .container.panel + = form_tag(new_user_session_path, class: '') do + %legend + %span + Sign In + .form-group + %label{for: "user[login]", class: 'col-sm-2 control-label'} + Username + .col-sm-10 + = text_field_tag 'user[login]', nil, placeholder: 'Username', class: 'form-control', required: 'required' + .form-group + %label{for: "user[password]", class: 'col-sm-2 control-label'} + Password + .col-sm-10 + = password_field_tag 'user[password]', nil, placeholder: 'Password', class: 'form-control', required: 'required' + .form-group + .col-sm-12 + %button.btn.btn-success.pull-right + Sign in + = render partial: 'devise/shared/openid' + %p.text-right + %a.small.btn.btn-default{"data-toggle" => "collapse", "data-target" => "#devise-help-sign-in"} + Need Help? + #devise-help-sign-in.collapse + = render partial: 'devise/shared/links' diff --git a/app/views/layouts/_admin_sidebar.html.haml b/app/views/layouts/_admin_sidebar.html.haml index 78523bc7..78b6da07 100644 --- a/app/views/layouts/_admin_sidebar.html.haml +++ b/app/views/layouts/_admin_sidebar.html.haml @@ -43,7 +43,7 @@ = link_to 'Contact', edit_admin_conference_contact_path(@conference.short_title) - if can? :index, @conference.commercials.build %li{class: "#{active_nav_li(admin_conference_commercials_path(@conference.short_title))}"} - = link_to 'Commercials', admin_conference_commercials_path(@conference.short_title) + = link_to 'Materials', admin_conference_commercials_path(@conference.short_title) - if can? :update, @conference %li{class: active_nav_li(edit_admin_conference_splashpage_path(@conference.short_title))} = link_to 'Splashpage', admin_conference_splashpage_path(@conference.short_title) diff --git a/app/views/layouts/_navigation.html.haml b/app/views/layouts/_navigation.html.haml index deea4f09..ddc8634a 100644 --- a/app/views/layouts/_navigation.html.haml +++ b/app/views/layouts/_navigation.html.haml @@ -1,7 +1,6 @@ -.navbar.navbar-default.navbar-fixed-top.nav-osem{role: 'navigation'} +%nav.navbar.navbar-default.navbar-fixed-top.nav-osem{role: 'navigation'} .container .navbar-header - - if controller.class.name.split("::").first=="Admin" %button{ "data-target"=>"#side-nav", "data-toggle"=>"collapse", class: 'navbar-toggle side-nav-btn', type: 'button' } %span.sr-only Toggle navigation @@ -14,7 +13,7 @@ %span.icon-bar %span.icon-bar %span.icon-bar - = nav_root_link_for conference + = nav_root_link_for(conference) .collapse.navbar-collapse#main-nav - if content_for :splash_nav @@ -42,34 +41,41 @@ = link_to(new_registration_path('user')) do %span.fa.fa-heart Sign Up - %li.dropdown.visible-desktop - %a.dropdown-toggle{"data-toggle" => "dropdown", href: '#'} - %span.fa.fa-user - Sign In - %span.caret - .dropdown-menu - - if ENV['OSEM_ICHAIN_ENABLED'] == 'true' - = form_tag User.ichain_login_url do - = text_field_tag 'username', nil, id: 'user_ichain_email_dd', class: 'form-control', placeholder: 'Username' - = password_field_tag 'password', nil, id: 'user_ichain_password_dd', class: 'form-control', placeholder: 'Password' - %button.btn.btn-success.btn-block Sign in - - else - = form_tag new_user_session_path do - = text_field_tag 'user[login]', nil, id: 'user_login_dd', class: 'form-control', placeholder: 'Username / E-Mail' - = password_field_tag 'user[password]', nil, id: 'user_password_dd', class: 'form-control', placeholder: 'Password' - %p.text-right - %small - %label{for: 'user_remember_me'} Remember me - = check_box_tag 'user[remember_me]' - %button.btn.btn-success.btn-block Sign in - - unless omniauth_configured.empty? - .divider - %h6.text-center - or - = render 'devise/shared/openid_links' - %p.text-right - %br - %a.small.btn.btn-xs.btn-default{"data-toggle" => "collapse", "data-target" => "#navbar-devise-help"} - Need Help? - #navbar-devise-help.collapse - = render 'devise/shared/links' + %li{class: ""} + = link_to(sign_in_path) do + %span.fa.fa-user + Sign In + -# %li.dropdown.visible-desktop + -# %a.dropdown-toggle{"data-toggle" => "dropdown", href: '#'} + -# %span.fa.fa-user + -# Sign In + -# %span.caret + -# .dropdown-menu + -# - if ENV['OSEM_ICHAIN_ENABLED'] == 'true' + -# = form_tag User.ichain_login_url do + -# = text_field_tag 'username', nil, id: 'user_ichain_email_dd', class: 'form-control', placeholder: 'Username' + -# = password_field_tag 'password', nil, id: 'user_ichain_password_dd', class: 'form-control', placeholder: 'Password' + -# %button.btn.btn-success.btn-block Sign in + -# - else + -# %div{style: "padding: 6px"} + -# = form_tag new_user_session_path, class: 'form-group' do + -# = text_field_tag 'user[login]', nil, id: 'user_login_dd', class: 'form-control', placeholder: 'Username / E-Mail' + -# = password_field_tag 'user[password]', nil, id: 'user_password_dd', class: 'form-control', placeholder: 'Password' + -# %p.text-right + -# %small + -# %label{for: 'user_remember_me'} Remember me + -# = check_box_tag 'user[remember_me]' + -# %br + -# %button.btn.btn-success.btn-block Sign in + -# - unless omniauth_configured.empty? + -# .divider + -# %h6.text-center + -# or + -# = render 'devise/shared/openid_links' + -# %p.text-right + -# %br + -# %a.small.btn.btn-xs.btn-default{"data-toggle" => "collapse", "data-target" => "#navbar-devise-help"} + -# Need Help? + -# #navbar-devise-help.collapse + -# = render 'devise/shared/links' + .trapezoid diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d4c194b9..86eafac9 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,10 +1,10 @@ -%html{xmlns: 'http://www.w3.org/1999/html'} +%html{lang: 'en'} %head %meta{charset: 'utf-8'} - %meta{name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1'} - %title= content_for?(:title) ? yield(:title) : (ENV['OSEM_NAME'] || 'OSEM') - %meta{content: '', name: 'description'} - %meta{content: '', name: 'author'} + %meta{name: 'viewport', content: 'width=device-width, initial-scale=1'} + %title= content_for?(:title) ? strip_tags( yield(:title) ) : (ENV['OSEM_NAME'] || 'OSEM') + %meta{content: 'Snap!Con -- A conference all about Snap!, a programing language from UC Berkeley.', name: 'description'} + %meta{content: 'Michael Ball, Brian Harvey, Jens Moenig, Bernat Romagosa, Dan Garcia, Lauren Mock', name: 'author'} = stylesheet_link_tag "application", media: 'all' = javascript_include_tag "application" @@ -26,7 +26,7 @@ -# Admin area - if controller.class.name.split("::").first=="Admin" = render 'layouts/admin' - -else + - else #messages .container = render 'layouts/messages' @@ -45,7 +45,7 @@ #{link_to "MIT license", "http://opensource.org/licenses/MIT"}. You can run, copy, distribute, study, change and improve it. The source code and the developers are on - #{link_to "GitHub", "https://github.com/openSUSE/osem"}. + #{link_to "GitHub", "https://github.com/snap-cloud/snapcon"}. This site is a modification of #{link_to "OSEM", "https://github.com/openSUSE/osem"}. - if ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"].present? Performance data is available on #{link_to "Skylight", ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"]}. diff --git a/app/views/physical_tickets/index.html.haml b/app/views/physical_tickets/index.html.haml index 2ded8115..e8adbc80 100644 --- a/app/views/physical_tickets/index.html.haml +++ b/app/views/physical_tickets/index.html.haml @@ -16,6 +16,7 @@ %th ID %th Type %th User + %th Registration? %th Actions %tbody - @physical_tickets.each do |physical_ticket| @@ -23,6 +24,7 @@ %td= physical_ticket.id %td= physical_ticket.ticket.title %td= physical_ticket.user.name + %td= physical_ticket.ticket.registration_ticket? ? 'Yes' : 'No' %td .btn-group = link_to 'Show', diff --git a/app/views/proposals/_form.html.haml b/app/views/proposals/_form.html.haml index fe966ed1..7f6716d5 100644 --- a/app/views/proposals/_form.html.haml +++ b/app/views/proposals/_form.html.haml @@ -3,15 +3,15 @@ %li.active = link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab' %li - = link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab' + = link_to 'Materials', '#commercials-content', 'data-toggle' => 'tab' .tab-content #proposal-content.tab-pane.active = render 'proposals/proposal_form' #commercials-content.tab-pane %p.text-muted - You can add commercials for your proposal. These commercials will be displayed on the + You can add materals for your proposal. These materials will be displayed on the = link_to 'public proposal page.', conference_program_proposal_path(@conference.short_title, @event) - If you don't add a commercial, the conference commercial will be displayed! + If you don't add any materials, the conference materials will be displayed. - if can? :create, @event.commercials.new .row .col-md-6 diff --git a/app/views/proposals/_tooltip.html.haml b/app/views/proposals/_tooltip.html.haml index b10b5a7a..2220451d 100644 --- a/app/views/proposals/_tooltip.html.haml +++ b/app/views/proposals/_tooltip.html.haml @@ -20,7 +20,7 @@ = link_to 'Add a subtitle', edit_conference_program_proposal_path(event.program.conference.short_title, event) %li{'class'=>class_for_todo(progress_status['commercials'])} %span{'class'=>icon_for_todo(progress_status['commercials'])} - = link_to 'Add a commercial', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content') + = link_to 'Add materials', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content') - unless progress_status['track'].nil? %li{'class'=>class_for_todo(progress_status['track'])} %span{'class'=>icon_for_todo(progress_status['track'])} diff --git a/app/views/proposals/new.html.haml b/app/views/proposals/new.html.haml index 7885f990..bab6eebd 100644 --- a/app/views/proposals/new.html.haml +++ b/app/views/proposals/new.html.haml @@ -7,7 +7,7 @@ - if @program.cfp.description.present? .row .col-md-12 - = markdown(@program.cfp.description) + = markdown(@program.cfp.description, escape_html=false) .row .col-md-12 = render partial: 'encouragement_text' @@ -43,10 +43,10 @@ - @program.event_types.each do |event_type| %span{ class: 'help-block event_event_type_id collapse', id: "#{event_type.id}-help" } - = event_type.description + = markdown(event_type.description) = f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown-editable' } }, - hint: markdown_hint('[Tips to improve your presentations.](http://blog.hubspot.com/blog/tabid/6307/bid/5975/10-Rules-to-Instantly-Improve-Your-Presentations.aspx)') + hint: markdown_hint %p You have used diff --git a/app/views/tickets/_ticket.html.haml b/app/views/tickets/_ticket.html.haml index 501e4151..052bc9e9 100644 --- a/app/views/tickets/_ticket.html.haml +++ b/app/views/tickets/_ticket.html.haml @@ -3,9 +3,9 @@ .media .media-body %h4.media-heading= ticket.title - %h5.media-heading= markdown(ticket.description) - - if @conference.tickets.for_registration.any? - %td.col-sm-1.col-md-2.text-center + .media-heading= markdown(ticket.description) + %td.col-sm-1.col-md-2 + %span.text-center = ticket.registration_ticket? ? 'Yes' : 'No' %td.col-sm-1.col-md-1 :ruby diff --git a/app/views/tickets/index.html.haml b/app/views/tickets/index.html.haml index e877845f..2128aa19 100644 --- a/app/views/tickets/index.html.haml +++ b/app/views/tickets/index.html.haml @@ -13,8 +13,7 @@ %thead %tr %th Ticket - - if @conference.tickets.for_registration.any? - %th Registration Ticket + %th Registration? %th Quantity %th Price %th Total @@ -23,8 +22,7 @@ = render 'ticket', f: f, ticket: ticket %tr %td - - if @conference.tickets.for_registration.any? - %td + %td %td %td.col-sm-1.col-md-1.text-center %h4 diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index a533ffe2..0afd8ae3 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -6,12 +6,18 @@ Devise.setup do |config| # Define the available openID providers that can be used to log in # Pass each provider to User model in :omniauth_providers (for open_id providers use their name) - config.omniauth :open_id, name: 'suse', identifier: 'http://www.opensuse.org/openid/user' + # config.omniauth :open_id, name: 'suse', identifier: 'http://www.opensuse.org/openid/user' + config.omniauth :google_oauth2, (ENV['OSEM_GOOGLE_KEY'] || Rails.application.secrets.google_key), (ENV['OSEM_GOOGLE_SECRET'] || Rails.application.secrets.google_secret), name: 'google', scope: 'email' - config.omniauth :facebook, (ENV['OSEM_FACEBOOK_KEY'] || Rails.application.secrets.facebook_key), (ENV['OSEM_FACEBOOK_SECRET'] || Rails.application.secrets.facebook_secret) - config.omniauth :github, (ENV['OSEM_GITHUB_KEY'] || Rails.application.secrets.github_key), (ENV['OSEM_GITHUB_SECRET'] || Rails.application.secrets.github_secret) + + config.omniauth :discourse, + sso_url: "https://forum.snap.berkeley.edu/session/sso_provider", + sso_secret: ENV['OSEM_DISCOURSE_SECRET'] + + # config.omniauth :facebook, (ENV['OSEM_FACEBOOK_KEY'] || Rails.application.secrets.facebook_key), (ENV['OSEM_FACEBOOK_SECRET'] || Rails.application.secrets.facebook_secret) + # config.omniauth :github, (ENV['OSEM_GITHUB_KEY'] || Rails.application.secrets.github_key), (ENV['OSEM_GITHUB_SECRET'] || Rails.application.secrets.github_secret) # ==> Mailer Configuration # Configure the e-mail address which will be shown in Devise::Mailer, diff --git a/db/migrate/20181229233811_remove_arrival_departure_from_registrations.rb b/db/migrate/20181229233811_remove_arrival_departure_from_registrations.rb new file mode 100644 index 00000000..18f1398d --- /dev/null +++ b/db/migrate/20181229233811_remove_arrival_departure_from_registrations.rb @@ -0,0 +1,6 @@ +class RemoveArrivalDepartureFromRegistrations < ActiveRecord::Migration[5.0] + def change + remove_column :registrations, :arrival, :datetime + remove_column :registrations, :departure, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index 8168dfbe..ee2c6a14 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20181113195810) do +ActiveRecord::Schema.define(version: 20181229233811) do create_table "answers", force: :cascade do |t| t.string "title" @@ -364,8 +364,6 @@ ActiveRecord::Schema.define(version: 20181113195810) do create_table "registrations", force: :cascade do |t| t.integer "conference_id" - t.datetime "arrival" - t.datetime "departure" t.datetime "created_at" t.datetime "updated_at" t.text "other_special_needs" diff --git a/spec/controllers/conference_registration_controller_spec.rb b/spec/controllers/conference_registration_controller_spec.rb index f2849c27..964acaac 100644 --- a/spec/controllers/conference_registration_controller_spec.rb +++ b/spec/controllers/conference_registration_controller_spec.rb @@ -290,14 +290,15 @@ describe ConferenceRegistrationsController, type: :controller do before do @registration = create(:registration, conference: conference, - user: user, - arrival: Date.new(2014, 04, 25)) + user: user) end context 'updates successfully' do before do - patch :update, params: { registration: attributes_for(:registration, arrival: Date.new(2014, 04, 29)), - conference_id: conference.short_title } + patch :update, params: { + registration: attributes_for(:registration, volunteer: true), + conference_id: conference.short_title + } end it 'redirects to registration show path' do @@ -309,16 +310,17 @@ describe ConferenceRegistrationsController, type: :controller do end it 'updates the registration' do - @registration.reload - expect(@registration.arrival).to eq Date.new(2014, 04, 29) + expect{ @registration.reload }.to change(@registration, :updated_at) end end context 'update fails' do before do allow_any_instance_of(Registration).to receive(:update_attributes).and_return(false) - patch :update, params: { registration: attributes_for(:registration, arrival: Date.new(2014, 04, 27)), - conference_id: conference.short_title } + patch :update, params: { + registration: attributes_for(:registration, volunteer: true), + conference_id: conference.short_title + } end it 'renders edit template' do @@ -331,7 +333,7 @@ describe ConferenceRegistrationsController, type: :controller do it 'does not update the registration' do @registration.reload - expect(@registration.arrival).to eq Date.new(2014, 04, 25) + expect { @registration.reload }.not_to change(@registration, :updated_at) end end end diff --git a/spec/features/commercials_spec.rb b/spec/features/commercials_spec.rb index a0710f86..5ddb08b2 100644 --- a/spec/features/commercials_spec.rb +++ b/spec/features/commercials_spec.rb @@ -17,9 +17,9 @@ feature Commercial do # Create valid commercial fill_in 'commercial_url', with: 'https://www.youtube.com/watch?v=M9bq_alk-sw' - click_button 'Create Commercial' + click_button 'Save Materials' page.find('#flash') - expect(flash).to eq('Commercial was successfully created.') + expect(flash).to eq('Materials were successfully created.') page.find('#flash .button.close').click expect(conference.commercials.count).to eq(1) @@ -28,7 +28,7 @@ feature Commercial do fill_in "commercial_url_#{commercial.id}", with: 'https://www.youtube.com/watch?v=VNkDJk5_9eU' click_button 'Update' page.find('#flash') - expect(flash).to eq('Commercial was successfully updated.') + expect(flash).to eq('Materials were successfully updated.') page.find('#flash .button.close').click expect(conference.commercials.count).to eq(1) commercial.reload @@ -39,7 +39,7 @@ feature Commercial do click_link 'Delete' end page.find('#flash') - expect(flash).to eq('Commercial was successfully destroyed.') + expect(flash).to eq('Materials were successfully destroyed.') expect(conference.commercials.count).to eq(0) end end @@ -56,23 +56,23 @@ feature Commercial do scenario 'adds a valid commercial of an event', feature: true, js: true do visit edit_conference_program_proposal_path(conference.short_title, event.id) - click_link 'Commercials' + click_link 'Materials' fill_in 'commercial_url', with: 'https://www.youtube.com/watch?v=M9bq_alk-sw' - # Workaround to enable the 'Create Commercial' button + # Workaround to enable the 'Save Materials' button page.execute_script("$('#commercial_submit_action').prop('disabled', false)") - click_button 'Create Commercial' + click_button 'Save Materials' page.find('#flash') - expect(flash).to eq('Commercial was successfully created.') + expect(flash).to eq('Materials were successfully created.') end scenario 'does not add an invalid commercial of an event', feature: true, js: true do visit edit_conference_program_proposal_path(conference.short_title, event.id) - click_link 'Commercials' + click_link 'Materials' fill_in 'commercial_url', with: 'invalid_commercial_url' expect(page).to have_content('No embeddable content') - expect(page).to have_css("button[type='submit']:disabled", text: 'Create Commercial') + expect(page).to have_css("button[type='submit']:disabled", text: 'Save Materials') end scenario 'updates a commercial of an event', feature: true, js: true do @@ -80,11 +80,11 @@ feature Commercial do commercialable_id: event.id, commercialable_type: 'Event') visit edit_conference_program_proposal_path(conference.short_title, event.id) - click_link 'Commercials' + click_link 'Materials' fill_in "commercial_url_#{commercial.id}", with: 'https://www.youtube.com/watch?v=M9bq_alk-sw' click_button 'Update' page.find('#flash') - expect(flash).to eq('Commercial was successfully updated.') + expect(flash).to eq('Materials were successfully updated.') TransactionalCapybara::AjaxHelpers.wait_for_ajax(page) expect(event.commercials.count).to eq(1) commercial.reload @@ -97,12 +97,12 @@ feature Commercial do commercialable_type: 'Event', url: 'https://www.youtube.com/watch?v=BTTygyxuGj8') visit edit_conference_program_proposal_path(conference.short_title, event.id) - click_link 'Commercials' + click_link 'Materials' fill_in "commercial_url_#{commercial.id}", with: 'invalid_commercial_url' click_button 'Update' find('#flash') expect(current_path).to eq edit_conference_program_proposal_path(conference.short_title, event.id) - expect(flash).to include('An error prohibited this Commercial from being saved:') + expect(flash).to include('An error prohibited materials from being saved:') commercial.reload expect(commercial.url).to eq('https://www.youtube.com/watch?v=BTTygyxuGj8') end @@ -112,12 +112,12 @@ feature Commercial do commercialable_id: event.id, commercialable_type: 'Event') visit edit_conference_program_proposal_path(conference.short_title, event.id) - click_link 'Commercials' + click_link 'Materials' page.accept_alert do click_link 'Delete' end page.find('#flash') - expect(flash).to eq('Commercial was successfully destroyed.') + expect(flash).to eq('Materials were successfully destroyed.') TransactionalCapybara::AjaxHelpers.wait_for_ajax(page) expect(event.commercials.count).to eq(0) end diff --git a/spec/features/info_desk_ability_spec.rb b/spec/features/info_desk_ability_spec.rb index 066c95b8..95367ebb 100644 --- a/spec/features/info_desk_ability_spec.rb +++ b/spec/features/info_desk_ability_spec.rb @@ -21,7 +21,7 @@ feature 'Has correct abilities' do expect(page).to_not have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit") expect(page).to have_text('Basics') expect(page).to_not have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit") - expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials") + expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials") expect(page).to_not have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage") expect(page).to_not have_link('Lodgings', href: "/admin/conferences/#{conference.short_title}/lodgings") expect(page).to_not have_link('Registration Period', href: "/admin/conferences/#{conference.short_title}/registration_period") diff --git a/spec/features/organization_admin_ability_spec.rb b/spec/features/organization_admin_ability_spec.rb index 5765d97f..3f9e32f8 100644 --- a/spec/features/organization_admin_ability_spec.rb +++ b/spec/features/organization_admin_ability_spec.rb @@ -32,7 +32,7 @@ feature 'Has correct abilities' do expect(page).to have_selector('li.nav-header.nav-header-bigger a', text: 'Dashboard') expect(page).to have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit") expect(page).to have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit") - expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials") + expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials") expect(page).to have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage") expect(page).to have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue") expect(page).to have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms") diff --git a/spec/features/organizer_ability_spec.rb b/spec/features/organizer_ability_spec.rb index 6339b6fa..27935824 100644 --- a/spec/features/organizer_ability_spec.rb +++ b/spec/features/organizer_ability_spec.rb @@ -35,7 +35,7 @@ feature 'Has correct abilities' do expect(page).to have_selector('li.nav-header.nav-header-bigger a', text: 'Dashboard') expect(page).to have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit") expect(page).to have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit") - expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials") + expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials") expect(page).to have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage") expect(page).to have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue") expect(page).to have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms") diff --git a/spec/features/track_organizer_ability_spec.rb b/spec/features/track_organizer_ability_spec.rb index ec2ffdf1..1107f777 100644 --- a/spec/features/track_organizer_ability_spec.rb +++ b/spec/features/track_organizer_ability_spec.rb @@ -23,7 +23,7 @@ feature 'Has correct abilities' do expect(page).to_not have_link('Basics', href: "/admin/conferences/#{conference.short_title}/edit") expect(page).to have_text('Basics') expect(page).to_not have_link('Contact', href: "/admin/conferences/#{conference.short_title}/contact/edit") - expect(page).to have_link('Commercials', href: "/admin/conferences/#{conference.short_title}/commercials") + expect(page).to have_link('Materials', href: "/admin/conferences/#{conference.short_title}/commercials") expect(page).to_not have_link('Splashpage', href: "/admin/conferences/#{conference.short_title}/splashpage") expect(page).to_not have_link('Venue', href: "/admin/conferences/#{conference.short_title}/venue") expect(page).to_not have_link('Rooms', href: "/admin/conferences/#{conference.short_title}/venue/rooms") diff --git a/spec/features/versions_spec.rb b/spec/features/versions_spec.rb index ec443fd0..cf0c49ed 100644 --- a/spec/features/versions_spec.rb +++ b/spec/features/versions_spec.rb @@ -277,9 +277,9 @@ feature 'Version' do conference_commercial.destroy visit admin_revision_history_path - expect(page).to have_text("Someone (probably via the console) created new commercial in conference #{conference.short_title}") - expect(page).to have_text("Someone (probably via the console) updated url of commercial in conference #{conference.short_title}") - expect(page).to have_text("Someone (probably via the console) deleted commercial in conference #{conference.short_title}") + expect(page).to have_text("Someone (probably via the console) created new materials in conference #{conference.short_title}") + expect(page).to have_text("Someone (probably via the console) updated url of materials in conference #{conference.short_title}") + expect(page).to have_text("Someone (probably via the console) deleted materials in conference #{conference.short_title}") end scenario 'display changes in event commercials', feature: true, versioning: true, js: true do @@ -288,9 +288,9 @@ feature 'Version' do event_commercial.destroy visit admin_revision_history_path - expect(page).to have_text("Someone (probably via the console) created new commercial in event #{event_with_commercial.title} in conference #{conference.short_title}") - expect(page).to have_text("Someone (probably via the console) updated url of commercial in event #{event_with_commercial.title} in conference #{conference.short_title}") - expect(page).to have_text("Someone (probably via the console) deleted commercial in event #{event_with_commercial.title} in conference #{conference.short_title}") + expect(page).to have_text("Someone (probably via the console) created new materals in event #{event_with_commercial.title} in conference #{conference.short_title}") + expect(page).to have_text("Someone (probably via the console) updated url of materials in event #{event_with_commercial.title} in conference #{conference.short_title}") + expect(page).to have_text("Someone (probably via the console) deleted materials in event #{event_with_commercial.title} in conference #{conference.short_title}") end scenario 'display changes in event commercials in event history', feature: true, versioning: true, js: true do @@ -299,10 +299,10 @@ feature 'Version' do visit admin_conference_program_event_path(conference.short_title, event_with_commercial) click_link 'History' - expect(page).to have_text('Someone (probably via the console) created new commercial') + expect(page).to have_text('Someone (probably via the console) created new materials') visit admin_conference_program_event_path(conference.short_title, event_without_commercial) click_link 'History' - expect(page).to have_no_text('Someone (probably via the console) created new commercial') + expect(page).to have_no_text('Someone (probably via the console) created new materials') end scenario 'display changes in organization', feature: true, versioning: true, js: true do diff --git a/spec/models/registration_spec.rb b/spec/models/registration_spec.rb index 9f710416..d6c86838 100644 --- a/spec/models/registration_spec.rb +++ b/spec/models/registration_spec.rb @@ -51,26 +51,4 @@ describe Registration do expect(subject).to receive(:send_registration_mail) end end - - describe 'registration_to_events_only_if_present' do - context 'valid' do - it 'when user registers for events happening while user is at the conference' do - registration.arrival = conference.start_date - registration.departure = conference.end_date - registration.events << create(:event, program: conference.program, start_time: conference.end_date) - - expect(registration.valid?).to eq true - end - end - - context 'invalid' do - it 'when user registers for events happening while user is not at the conference' do - registration.arrival = conference.start_date - registration.departure = conference.start_date - registration.events << create(:event, program: conference.program, start_time: conference.end_date) - - expect(registration.valid?).to eq false - end - end - end end