From 02f0d4a254d0ba351d91d736b4596d3808c06039 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Thu, 16 Jul 2020 11:15:17 -0700 Subject: [PATCH 01/10] Fix navbar profile pics --- app/assets/stylesheets/osem-navbar.scss | 6 ++++++ app/assets/stylesheets/osem.scss | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/osem-navbar.scss b/app/assets/stylesheets/osem-navbar.scss index 89aa2dce..5966da30 100644 --- a/app/assets/stylesheets/osem-navbar.scss +++ b/app/assets/stylesheets/osem-navbar.scss @@ -50,4 +50,10 @@ .trapezoid { border-top-color: $navbar-default-bg; } + + .profile-thumbnail { + border-radius: 3px; + max-height: 20px; + max-width: 20px; + } } diff --git a/app/assets/stylesheets/osem.scss b/app/assets/stylesheets/osem.scss index 7b913fe6..bcf37d4f 100644 --- a/app/assets/stylesheets/osem.scss +++ b/app/assets/stylesheets/osem.scss @@ -51,11 +51,6 @@ body { margin: 0 auto; } -nav #current-user-detail .profile-thumnail { - max-height: 20px; - max-width: 20px; -} - /* centered columns styles */ .row-centered { text-align:center; From a9d6faf1a364011918f7245922777c626036e1ec Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Thu, 16 Jul 2020 11:25:20 -0700 Subject: [PATCH 02/10] Support forcing the order of rooms in the schedule --- app/controllers/admin/rooms_controller.rb | 2 +- app/models/room.rb | 3 +++ app/views/admin/rooms/_form.html.haml | 5 ++--- app/views/admin/rooms/index.html.haml | 5 ++++- db/migrate/20200716181602_add_order_to_rooms.rb | 5 +++++ db/schema.rb | 3 ++- 6 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20200716181602_add_order_to_rooms.rb diff --git a/app/controllers/admin/rooms_controller.rb b/app/controllers/admin/rooms_controller.rb index 58c2fd83..fd31207d 100644 --- a/app/controllers/admin/rooms_controller.rb +++ b/app/controllers/admin/rooms_controller.rb @@ -48,7 +48,7 @@ module Admin private def room_params - params.require(:room).permit(:name, :size, :url) + params.require(:room).permit(:name, :size, :url, :order) end end end diff --git a/app/models/room.rb b/app/models/room.rb index 4bd88834..027e9c83 100644 --- a/app/models/room.rb +++ b/app/models/room.rb @@ -13,6 +13,9 @@ class Room < ApplicationRecord validates :name, :venue_id, presence: true validates :size, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true + validates :order, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true + + default_scope { order(order: :asc) } def conference venue.conference diff --git a/app/views/admin/rooms/_form.html.haml b/app/views/admin/rooms/_form.html.haml index 951e4094..3137f108 100644 --- a/app/views/admin/rooms/_form.html.haml +++ b/app/views/admin/rooms/_form.html.haml @@ -11,8 +11,7 @@ = semantic_form_for(@room, url: (@room.new_record? ? admin_conference_venue_rooms_path : admin_conference_venue_room_path(@conference.short_title, @room))) do |f| = f.input :name, input_html: { autofocus: true } = f.input :size, label: 'Capacity', input_html: {size: 5} - = f.input :url, label: 'URL' - %p.small - The URL is only visible to registered attendees. + = f.input :order, label: 'Order', input_html: {size: 5}, hint: 'Force the order of rooms in the schedule.' + = f.input :url, label: 'URL', hint: 'The URL is only visible to registered attendees.' %p.text-right = f.action :submit, as: :button, button_html: { class: 'btn btn-primary' } diff --git a/app/views/admin/rooms/index.html.haml b/app/views/admin/rooms/index.html.haml index fd548d59..96487311 100644 --- a/app/views/admin/rooms/index.html.haml +++ b/app/views/admin/rooms/index.html.haml @@ -12,15 +12,18 @@ %thead %th Name %th Capacity + %th Order %th URL %th Actions %tbody - @rooms.each_with_index do |room, index| %tr - %td + %th = room.name %td = room.size + %td + = room.order %td = room.url %td diff --git a/db/migrate/20200716181602_add_order_to_rooms.rb b/db/migrate/20200716181602_add_order_to_rooms.rb new file mode 100644 index 00000000..d6e5f758 --- /dev/null +++ b/db/migrate/20200716181602_add_order_to_rooms.rb @@ -0,0 +1,5 @@ +class AddOrderToRooms < ActiveRecord::Migration[5.2] + def change + add_column :rooms, :order, :int + end +end diff --git a/db/schema.rb b/db/schema.rb index a29ab329..b2b6ee20 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: 2020_07_15_034647) do +ActiveRecord::Schema.define(version: 2020_07_16_181602) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -408,6 +408,7 @@ ActiveRecord::Schema.define(version: 2020_07_15_034647) do t.integer "size" t.integer "venue_id", null: false t.text "url" + t.integer "order" end create_table "schedules", force: :cascade do |t| From ae6581826d0a0002e09b8d1e6a2ea0e268240214 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 09:55:48 -0700 Subject: [PATCH 03/10] Show conference name in tickets partial --- app/views/conferences/_tickets.haml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/conferences/_tickets.haml b/app/views/conferences/_tickets.haml index 65f7e602..b28f705e 100644 --- a/app/views/conferences/_tickets.haml +++ b/app/views/conferences/_tickets.haml @@ -7,11 +7,11 @@ .container .row .col-md-12.text-center - %h2 Sign Up for Snap!Con %br - -# %h2 - -# Support - -# = conference.title + %h2 + Sign up for + = conference.title + ! .row.row-centered - tickets.each do |ticket| .col-lg-4.col-md-3.col-sm-3.col-centered.col-top From 31dfd62fbd4dfc7c4d93bed34427aba40f4d27b7 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 10:03:07 -0700 Subject: [PATCH 04/10] Better design for room URLs --- app/helpers/events_helper.rb | 18 ++++++++++++++++++ app/models/event.rb | 2 ++ app/views/proposals/show.html.haml | 5 ++--- app/views/schedules/_event.html.haml | 6 +++--- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index 31384a2c..82815a1c 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -173,6 +173,24 @@ module EventsHelper ) end + def join_event_link(event, current_user) + return unless event.url.present? && current_user + + conference = event.conference + is_today = event.time&.today? + if current_user.roles.where(id: conference.roles).any? + # Show Pre-Event links for any memeber of the conference team. + link_to("Join Live Event #{'(Pre-Event)' unless is_today}", + event.url, target: '_blank') + elsif current_user.registered_to_event?(conference) + if is_today + link_to('Join Live Event', event.url, target: '_blank') + else + link_to('Live Event Link Coming Soon', '#') + end + end + end + private def active_dropdown(selection, options) diff --git a/app/models/event.rb b/app/models/event.rb index 3c9fe4f1..7b21ee73 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -31,6 +31,8 @@ class Event < ApplicationRecord belongs_to :track belongs_to :difficulty_level belongs_to :program + belongs_to :room + delegate :url, to: :room, allow_nil: true accepts_nested_attributes_for :event_users, allow_destroy: true accepts_nested_attributes_for :speakers, allow_destroy: true diff --git a/app/views/proposals/show.html.haml b/app/views/proposals/show.html.haml index 0de85205..a5fd187f 100644 --- a/app/views/proposals/show.html.haml +++ b/app/views/proposals/show.html.haml @@ -16,9 +16,8 @@ %br %small = @event.subtitle - - if @event.room&.url && @conference.user_registered?(current_user) - %h3 - = link_to('Join Event', @event.room.url, target: '_blank') + %h3 + = join_event_link(@event, current_user) .col-md-2 %p{style: "margin-top: 20px"} - if can?(:update, @event) && @event.require_registration? diff --git a/app/views/schedules/_event.html.haml b/app/views/schedules/_event.html.haml index 7ec7122f..63a65233 100644 --- a/app/views/schedules/_event.html.haml +++ b/app/views/schedules/_event.html.haml @@ -17,11 +17,11 @@ %h4 - if(event.speakers.any?) presented by #{event.speaker_names} - - if event.room&.url && @conference.user_registered?(current_user) - %p - = link_to('Join Event', event.room.url, target: '_blank') + %h5 + = join_event_link(event, current_user) %p = markdown(truncate(event.abstract, length: 400)) + -# TODO: More informative text or aria-label. = link_to 'more', conference_program_proposal_path(@conference.short_title, event.id) if event.abstract.length > 400 - if event_schedule.present? %span.track From dbae506a91a3177249ad220d32e37e4fe07b868a Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 10:09:01 -0700 Subject: [PATCH 05/10] Default schedule links to all events view --- app/views/conferences/_program.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/conferences/_program.haml b/app/views/conferences/_program.haml index dc11119c..18d8a540 100644 --- a/app/views/conferences/_program.haml +++ b/app/views/conferences/_program.haml @@ -2,7 +2,7 @@ %li %a.smoothscroll{ href: '#program' } Program %li - = link_to('Schedule', conference_schedule_path(@conference)) + = link_to('Schedule', events_conference_schedule_path(@conference)) - cache [conference, highlights, tracks, booths, '#splash#program'] do %section#program @@ -30,7 +30,7 @@ .row .col-md-12 %p.cta-button.text-center - = link_to(conference_schedule_path(conference.short_title), + = link_to(events_conference_schedule_path(conference.short_title), class: 'btn btn-success btn-lg') do Full Schedule .trapezoid From 8195426c2c3e40a231ee1c7792fe7dc5894b5d34 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 20:31:42 -0700 Subject: [PATCH 06/10] Fix registrations controller to accept params --- app/controllers/conference_registrations_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/conference_registrations_controller.rb b/app/controllers/conference_registrations_controller.rb index d0dad229..9ee6e6ae 100644 --- a/app/controllers/conference_registrations_controller.rb +++ b/app/controllers/conference_registrations_controller.rb @@ -108,7 +108,7 @@ class ConferenceRegistrationsController < ApplicationController end def registration_params - params.permit(:registration) + params.require(:registration) .permit( :conference_id, :volunteer, :accepted_code_of_conduct, From 61be84a7f90b7dbd27fdb00a341a8f729c325855 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 20:31:48 -0700 Subject: [PATCH 07/10] tidying up --- app/models/registration.rb | 1 + db/schema.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/registration.rb b/app/models/registration.rb index 0e5a9d44..102a4141 100644 --- a/app/models/registration.rb +++ b/app/models/registration.rb @@ -70,6 +70,7 @@ class Registration < ApplicationRecord def user_has_registration_ticket return if TicketPurchase.where(user: user, ticket: conference.registration_tickets).paid.any? + errors.add(:base, 'You must purchase a registration ticket before registering') if TicketPurchase.where(user: user, ticket: conference.registration_tickets).unpaid.any? errors.add(:base, 'You currently have a ticket with an unfinished purchase') diff --git a/db/schema.rb b/db/schema.rb index b2b6ee20..e8ac08e8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -407,7 +407,7 @@ ActiveRecord::Schema.define(version: 2020_07_16_181602) do t.string "name", null: false t.integer "size" t.integer "venue_id", null: false - t.text "url" + t.string "url" t.integer "order" end From fff31f5ac0d447149cd05a0a982951931e0140ae Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 22:32:44 -0700 Subject: [PATCH 08/10] Improved event registration page. Kinda.... --- .../conference_registrations/_event.html.haml | 33 +++++++++++++++++++ .../_registration_info.html.haml | 10 +----- 2 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 app/views/conference_registrations/_event.html.haml diff --git a/app/views/conference_registrations/_event.html.haml b/app/views/conference_registrations/_event.html.haml new file mode 100644 index 00000000..75b6020c --- /dev/null +++ b/app/views/conference_registrations/_event.html.haml @@ -0,0 +1,33 @@ +.panel.panel-default + .panel-heading + %label{for: "registration_event_ids_#{event.id}"} + %h3{style: 'margin: 0 auto;'} + = hidden_field_tag "registration[event_ids][]", nil + = check_box_tag "registration[event_ids][]", event.id, event.registrations.include?(@registration), id: "registration_event_ids_#{event.id}" + = event.title + %small + = event.subtitle + .panel-body + -# %p + -# = canceled_replacement_event_label(event, event_schedule) + -# = replacement_event_notice(event_schedule) + %p + - if event.speakers.any? + presented by #{event.speaker_names} + %p + = markdown(truncate(event.abstract, length: 250)) + -# TODO: More informative text or aria-label. + = link_to 'more', conference_program_proposal_path(@conference.short_title, event.id), target: '_blank' + - if event_schedule.present? + %span.track + %span.fa.fa-clock-o + %span.label{ style: "background-color: grey" } + = event_schedule.start_time.strftime('%A, %d %b %-d %H:%M') + \- + = event_schedule.end_time.strftime('%H:%M') + + - if event.track + %span.track + %span.fa.fa-road + %span.label{ style: "background-color: #{event.track.color}; color: #{ contrast_color(event.track.color) }" } + = event.track.name diff --git a/app/views/conference_registrations/_registration_info.html.haml b/app/views/conference_registrations/_registration_info.html.haml index 5fdd9bf4..18b6e985 100644 --- a/app/views/conference_registrations/_registration_info.html.haml +++ b/app/views/conference_registrations/_registration_info.html.haml @@ -14,14 +14,6 @@ = f.inputs 'Pre-registration required for the following:' do - @registration.events_ordered.each do |event| - %label - = hidden_field_tag "registration[event_ids][]", nil - = check_box_tag "registration[event_ids][]", event.id, event.registrations.include?(@registration) - = event.title - .text-muted - = registered_text(event) - - if event.scheduled? - (Scheduled on: #{event.time.to_date}) - %br + = render 'event', event: event, event_schedule: event.event_schedules.first = render 'conferences/code_of_conduct', organization: @conference.organization From 611277ef679e905d2c7a9cf536dd4e912bf54652 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 22:48:05 -0700 Subject: [PATCH 09/10] More tweaks to the event registrations page --- .../conference_registrations/_event.html.haml | 16 ++++++++-------- .../_registration_info.html.haml | 4 ++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/views/conference_registrations/_event.html.haml b/app/views/conference_registrations/_event.html.haml index 75b6020c..67a35ba2 100644 --- a/app/views/conference_registrations/_event.html.haml +++ b/app/views/conference_registrations/_event.html.haml @@ -1,4 +1,4 @@ -.panel.panel-default +.panel.panel-default{class: ("panel-success" if event.registrations.include?(@registration)) } .panel-heading %label{for: "registration_event_ids_#{event.id}"} %h3{style: 'margin: 0 auto;'} @@ -14,17 +14,17 @@ %p - if event.speakers.any? presented by #{event.speaker_names} + - if event_schedule.present? + .h4.track + %span.fa.fa-clock-o + %span.label{ style: "background-color: grey" } + = event_schedule.start_time.strftime('%A, %B %-d %H:%M') + \- + = event_schedule.end_time.strftime('%H:%M') %p = markdown(truncate(event.abstract, length: 250)) -# TODO: More informative text or aria-label. = link_to 'more', conference_program_proposal_path(@conference.short_title, event.id), target: '_blank' - - if event_schedule.present? - %span.track - %span.fa.fa-clock-o - %span.label{ style: "background-color: grey" } - = event_schedule.start_time.strftime('%A, %d %b %-d %H:%M') - \- - = event_schedule.end_time.strftime('%H:%M') - if event.track %span.track diff --git a/app/views/conference_registrations/_registration_info.html.haml b/app/views/conference_registrations/_registration_info.html.haml index 18b6e985..a04952d9 100644 --- a/app/views/conference_registrations/_registration_info.html.haml +++ b/app/views/conference_registrations/_registration_info.html.haml @@ -13,6 +13,10 @@ - if @conference.program.events.with_registration_open.any? || @registration.events.any? = f.inputs 'Pre-registration required for the following:' do + -# TODO: This needs to be easier to use. + %p + You are registered for #{pluralize(@registration.events.count, 'event')}. + They are at the end of this list. - @registration.events_ordered.each do |event| = render 'event', event: event, event_schedule: event.event_schedules.first From 4babd844391f6a3419de14bfd8f85fba8984db6f Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Fri, 17 Jul 2020 23:06:43 -0700 Subject: [PATCH 10/10] Sort events by time --- app/models/event.rb | 4 ++++ app/models/program.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/event.rb b/app/models/event.rb index 7b21ee73..388bede8 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -288,6 +288,10 @@ class Event < ApplicationRecord program.conference end + def <=>(other) + time <=> other.time + end + private ## diff --git a/app/models/program.rb b/app/models/program.rb index 8db24c6c..48c9d361 100644 --- a/app/models/program.rb +++ b/app/models/program.rb @@ -20,7 +20,7 @@ class Program < ApplicationRecord end def with_registration_open - select { |e| e if e.registration_possible? } + select { |e| e if e.registration_possible? }.sort end # All confirmed events of the conference with attribute require_registration