Merge branch 'master' of https://github.com/CactusPuppy/snapcon into 176895124-happening-now-json-api-endpoint

This commit is contained in:
Jimmy 2021-03-18 08:41:41 +08:00
commit d6e161b7e5
20 changed files with 136 additions and 149 deletions

View file

@ -16,6 +16,8 @@ before_install:
- "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
- gem install bundler -v $(tail -n 1 Gemfile.lock)
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > $CCTR
- chmod +x $CCTR
notifications:
email:
on_success: change
@ -26,20 +28,17 @@ notifications:
on_success: change
on_failure: change
before_script:
# install CodeClimate test reporter and tell it we are starting a test run
# - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > $CCTR
# - chmod +x $CCTR
# - $CCTR before-build
- RAILS_ENV=test bundle exec rake db:bootstrap --trace
- RAILS_ENV=test bundle exec bin/rails webdrivers:chromedriver:update
- $CCTR before-build
script:
- "bin/travis_script.sh $TEST_SUITE"
# TODO Get this working.
# - $CCTR format-coverage -t simplecov --output coverage/codeclimate.$SUITE.json
# after_script:
after_script:
# combine coverage from all suites, and upload3 to CodeClimate
# - $CCTR sum-coverage coverage/codeclimate.*.json | $CCTR upload-coverage
# - $CCTR after-build --exit-code $TRAVIS_TEST_RESULT
- $CCTR format-coverage -t simplecov --output coverage/codeclimate.$TEST_SUITE.json
- $CCTR sum-coverage coverage/codeclimate.*.json
- if [[ "$TRAVIS_TEST_RESULT" == 0 ]]; then $CCTR upload-coverage; fi
env:
global:

View file

@ -266,7 +266,7 @@ group :test do
gem 'pdf-inspector', require: "pdf/inspector"
end
group :development, :test do
group :development, :test, :linters do
# as debugger
gem 'byebug'
gem 'pry'

View file

@ -29,8 +29,9 @@
= render 'line_chart',
title: 'Submissions per week', data: @submissions
.col-md-4
-# = render 'todo_list',
-# conference_progress: @conference_progress, conference: @conference
-#
= render 'todo_list',
conference_progress: @conference_progress, conference: @conference
.row#tickets
.col-md-8
= render 'line_chart',
@ -58,22 +59,27 @@
= render 'donut_chart', title: 'Event types',
combined_data: @event_type_distribution
.col-md-4
-# = render 'donut_chart', title: 'Difficulty levels',
-# combined_data: @difficulty_levels_distribution
-#
= render 'donut_chart', title: 'Difficulty levels',
combined_data: @difficulty_levels_distribution
.col-md-4
-# = render 'donut_chart', title: 'Tracks',
-# combined_data: @tracks_distribution
-#
= render 'donut_chart', title: 'Tracks',
combined_data: @tracks_distribution
.tab-pane#distribution_confirmed
.row
.col-md-4
-# = render 'donut_chart', title: 'Event types',
-# combined_data: @event_type_distribution_confirmed
-#
= render 'donut_chart', title: 'Event types',
combined_data: @event_type_distribution_confirmed
.col-md-4
-# = render 'donut_chart', title: 'Difficulty levels',
-# combined_data: @difficulty_levels_distribution_confirmed
-#
= render 'donut_chart', title: 'Difficulty levels',
combined_data: @difficulty_levels_distribution_confirmed
.col-md-4
-# = render 'donut_chart', title: 'Tracks',
-# combined_data: @tracks_distribution_confirmed
-#
= render 'donut_chart', title: 'Tracks',
combined_data: @tracks_distribution_confirmed
.tab-pane#distribution_withdrawn
.row
.col-md-4

View file

@ -1,9 +1,9 @@
.panel.panel-default{class: ("panel-success" if event.registrations.include?(@registration)) }
.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;'}
= 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}"
%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
@ -13,26 +13,27 @@
(Scheduled on: #{event.time.to_date})
.panel-body
-# %p
-# = canceled_replacement_event_label(event, event_schedule)
-# = replacement_event_notice(event_schedule)
-#
%p
= canceled_replacement_event_label(event, event_schedule)
= replacement_event_notice(event_schedule)
%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" }
%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'
= link_to 'more', conference_program_proposal_path(conference.short_title, event.id), target: '_blank'
- if event.track
%span.track
%span.fa.fa-road
%span.label{ style: "background-color: #{event.track.color}; color: #{ contrast_color(event.track.color) }" }
%span.label{ style: "background-color: #{event.track.color}; color: #{contrast_color(event.track.color)}" }
= event.track.name

View file

@ -18,6 +18,6 @@
You are registered for #{pluralize(@registration.events.count, 'event')}.
They are at the end of this list.
- @registration.events_ordered.each do |event|
= render 'conference_registrations/event', event: event, event_schedule: event.event_schedules.first
= render 'conference_registrations/event', event: event, event_schedule: event.event_schedules.first, conference: @conference, registration: @registration
= render 'conferences/code_of_conduct', organization: @conference.organization

View file

@ -1,14 +1,15 @@
-# .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');
}
});
});

View file

@ -2,13 +2,14 @@
#banner{ style: ("background-image: url(#{conference.picture_url})" if conference.picture_url) }
.container
.row
.col-md-6.col-md-offset-3{id: (conference.picture? ? "header-image" : "header-no-image")}
.col-md-6.col-md-offset-3{ id: (conference.picture? ? "header-image" : "header-no-image") }
.row
-# - if conference.picture?
-# .col-md-4
-# = 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.html_safe

View file

@ -2,7 +2,7 @@
%li
%a.smoothscroll{ href: '#program' } Program
%li
= link_to('Schedule', events_conference_schedule_path(@conference))
= link_to('Schedule', events_conference_schedule_path(conference))
- cache [conference, highlights, tracks, booths, '#splash#program'] do
%section#program

View file

@ -27,7 +27,7 @@
.row
.col-md-12
%h3.text-center
= "Interested in sponsoring #{conference.title}?"
Interested in sponsoring #{conference.title}?
= link_to(sponsorship_mailto(conference)) do
Please, contact us!
.trapezoid

View file

@ -22,6 +22,6 @@
.word_break
= short_ticket_description(ticket)
%button.btn-block.btn.btn-lg.btn-success
%i.fa.fa-ticket.fa-fw{"aria-hidden": true}
%i.fa.fa-ticket.fa-fw{ "aria-hidden": true }
= humanized_money_with_symbol(ticket.price)
.trapezoid

View file

@ -20,24 +20,22 @@
- if @unpaid_tickets
.row
.col-md-12
.alert.alert-dismissable.alert-info.text-center#unpaid-tickets{role: 'alert'}
%button.button.close{"data-dismiss" => "alert", "aria-label"=>"close"}
.alert.alert-dismissable.alert-info.text-center#unpaid-tickets{ role: 'alert' }
%button.button.close{ "data-dismiss" => "alert", "aria-label"=>"close" }
×
%p
You have unpaid tickets. Please complete your purchase.
= link_to('Purchase Tickets', new_conference_payment_path(@conference), class: 'btn btn-success btn-lg')
- if @user_needs_to_register
.row
.col-md-12
.alert.alert-dismissable.alert-warning.text-center#flash{role: 'alert'}
%button.button.close{"data-dismiss" => "alert", 'aria-label': 'close'}
×
%p
You still need to complete your registration for #{@conference.title}.
= link_to('Complete Registration', new_conference_conference_registration_path(@conference), class: 'btn btn-success btn-lg')
.col-md-12
.alert.alert-dismissable.alert-warning.text-center#flash{ role: 'alert' }
%button.button.close{ "data-dismiss" => "alert", 'aria-label': 'close' }
×
%p
You still need to complete your registration for #{@conference.title}.
= link_to('Complete Registration', new_conference_conference_registration_path(@conference), class: 'btn btn-success btn-lg')
#splash
- if @conference.code_of_conduct.present?
@ -79,29 +77,8 @@
sponsorship_levels: @sponsorship_levels,
sponsors: @sponsors
-# footer
- if @conference.splashpage.include_social_media
- if @conference.contact.has_social_media?
= 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(' + 0 + ')');
-# });
-# });

View file

@ -51,37 +51,38 @@
= 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'
-#
%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

View file

@ -12,7 +12,7 @@
-# TODO: And if they have a registration ticket?
- if !@conference.user_registered?(@user) && @has_registration_ticket
.col-md-12
.alert.alert-success{role: 'alert'}
.alert.alert-success{ role: 'alert' }
= link_to 'Complete Registration',
new_conference_conference_registration_path(@conference),
class: 'btn btn-info pull-right btn-lg'

View file

@ -16,7 +16,7 @@
That means you have
%b.notranslate= pluralize(@program.cfp.remaining_days, 'day')
left!
%span.notranslate #{@conference.title}
%span.notranslate= @conference.title
will only be as good as the content you present. Submit early, submit often!
- else
The submission period is closed now.

View file

@ -1,13 +1,13 @@
.speakerinfo
.row
.col-md-4
= image_tag speaker.profile_picture(:size => 120), class: 'img-responsive img-rounded'
= image_tag speaker.profile_picture(size: 120), class: 'img-responsive img-rounded'
.col-md-8
%h4
= link_to speaker.name, user_path(speaker.id)
%br
- if speaker.email_public?
= mail_to "#{ speaker.email }" do
= mail_to speaker.email.to_s do
%i.fa.fa-envelope-o.fa-2x
- if speaker.affiliation?
.text-muted

View file

@ -1,7 +1,7 @@
.speakerinfo
.row
.col-md-4
= image_tag speaker.profile_picture(:size => 120), class: 'img-responsive img-rounded'
= image_tag speaker.profile_picture(size: 120), class: 'img-responsive img-rounded'
.col-md-8
%h4
= link_to speaker.name, user_path(speaker.id)

View file

@ -1,8 +1,8 @@
%table.table.table-striped#events
- events.each do |event|
%tr
%td.col-md-7{style: "padding:20px 8px 20px 8px;"}
= link_to event.title, conference_program_proposal_path(@conference.short_title, event.id)
%td.col-md-7{ style: 'padding:20px 8px 20px 8px;' }
= link_to event.title, conference_program_proposal_path(conference.short_title, event.id)
%br
%small.text-muted
= event.event_type.title
@ -10,10 +10,11 @@
= "in #{event.track.name}" if event.track
- if event.require_registration
%br
= link_to registered_text(event), registrations_conference_program_proposal_path(@conference.short_title, event), class: 'btn btn-xs btn-danger'
= link_to registered_text(event), registrations_conference_program_proposal_path(conference.short_title, event),
class: 'btn btn-xs btn-danger'
%td.col-md-2{style: "padding:20px 8px 20px 8px;"}
- event_schedule = event.event_schedules.find_by(schedule_id: @program.selected_schedule_id)
%td.col-md-2{ style: 'padding:20px 8px 20px 8px;' }
- event_schedule = event.event_schedules.find_by(schedule_id: program.selected_schedule_id)
- if event_schedule.present?
= inyourtz(event_schedule.start_time, @conference.timezone) do
= event_schedule.start_time.strftime("%Y %B %e - %H:%M")
= inyourtz(event_schedule.start_time, conference.timezone) do
= event_schedule.start_time.strftime('%Y %B %e - %H:%M')

View file

@ -121,7 +121,7 @@
Volunteer Duties
%small
Thanks for being a host at #{@conference.title}
= render 'volunteers_table', events: @volunteer_events
= render 'volunteers_table', events: @volunteer_events, conference: @conference, program: @program
.row
.col-md-12

View file

@ -1,20 +1,20 @@
.panel.panel-default.event-panel{ onClick: 'eventClicked(event, this);', "data-url" => "#{url_for(conference_program_proposal_path(@conference.short_title, event.id))}" }
.panel.panel-default.event-panel{ onClick: 'eventClicked(event, this);', 'data-url' => "#{url_for(conference_program_proposal_path(@conference.short_title, event.id))}" }
- header_color = event.event_type&.color || '#f5f5f5'
.trapezoid{style: "color: white; top: 12px; z-index: 100;"}
.trapezoid{ style: 'color: white; top: 12px; z-index: 100;' }
.panel-heading{ style: "background-color: #{header_color}; color: #{ contrast_color(header_color) }; border-radius: 4px" }
- event.speakers_ordered.each do |speaker|
= image_tag speaker.profile_picture, class: "img-circle pull-right", alt: speaker.name, style: "padding: 2px;"
= image_tag speaker.profile_picture, class: 'img-circle pull-right', alt: speaker.name, style: 'padding: 2px;'
%p
= canceled_replacement_event_label(event, event_schedule)
= replacement_event_notice(event_schedule)
%span.h3{style: "margin-bottom: 14px"}
%span.h3{ style: 'margin-bottom: 14px' }
= event.title
%br
%small{style: "color: #{contrast_color(header_color)}"}
%small{ style: "color: #{contrast_color(header_color)}" }
= event.subtitle
.trapezoid{style: "color: #{header_color}; top: 12px;"}
.trapezoid{ style: "color: #{header_color}; top: 12px;" }
.panel-body
%h4
@ -30,13 +30,13 @@
= inyourtz(event_schedule.start_time) do
%span.track
%span.fa.fa-clock-o
%span.label{ style: "background-color: grey" }
%span.label{ style: 'background-color: grey' }
= event_schedule.start_time.strftime('%l:%M %P')
\-
= event_schedule.end_time.strftime('%l:%M %P')
%span.track
%span.fa.fa-map-marker
%span.label{ style: "background-color: grey" }
%span.label{ style: 'background-color: grey' }
= event_schedule.room.name
- if event.track
%span.track

View file

@ -12,7 +12,7 @@
%h3
This page was loaded at
= inyourtz(Time.now) do
#{Time.now.strftime('%a %b %d at %I:%M %P (%z)')}
Time.now.strftime('%a %b %d at %I:%M %P (%z)').to_s
.row
/ TODO: Clean this up, merge with all events page.
@ -23,12 +23,15 @@
- unless event_schedule.start_time.strftime('%Y-%m-%d').eql?(date)
.col-xs-12.col-md-12
.date-content
%span{ class: 'date-title', id: "#{ event_schedule.start_time.strftime('%Y-%m-%d') }" }
%span.date-title{ id: event_schedule.start_time.strftime('%Y-%m-%d').to_s }
= inyourtz(event_schedule.start_time, @conference.timezone) do
= date = event_schedule.start_time.strftime('%Y-%m-%d')
%a{ title: "Go up", class: "pull-right", href: "#program" }
%i{ class: "fa fa-angle-double-up fa-lg", 'aria-hidden' => true }
- unless event_schedule.start_time.strftime('%H:%M').eql?(time)
%a.pull-right{ title: 'Go up', href: '#program' }
%i.fa.fa-angle-double-up.fa-lg{ 'aria-hidden' => true }
- if event_schedule.start_time.strftime('%H:%M').eql?(time)
.col-xs-12.col-md-11.col-md-offset-1
= render 'event', event: event_schedule.event, event_schedule: event_schedule
- else
.col-xs-12.col-md-1
.start-time
= inyourtz(event_schedule.start_time, @conference.timezone) do
@ -36,9 +39,6 @@
.col-xs-12.col-md-11
.new-time-event
= render 'event', event: event_schedule.event, event_schedule: event_schedule
- else
.col-xs-12.col-md-11.col-md-offset-1
= render 'event', event: event_schedule.event, event_schedule: event_schedule
:javascript
// Refresh the page every 5 minutes.