Merge master

This commit is contained in:
Michael Ball 2020-02-06 01:20:11 -08:00
commit 7586112f72
217 changed files with 2853 additions and 3035 deletions

View file

@ -1,4 +1,4 @@
- headers = ['Booth ID',
- headers = ["#{(t'booth').capitalize } ID",
'Title',
'Description',
'Reasoning',
@ -6,7 +6,7 @@
'Submitter Relationship',
'Website Url',
'State']
= CSV.generate_line ['All booths']
= CSV.generate_line ["All #{(t'booth').pluralize}"]
= CSV.generate_line headers
- @booths.each do |booth|
= CSV.generate_line([booth.id,

View file

@ -1,6 +1,6 @@
prawn_document(force_download: true, filename: "#{@file_name}.pdf", page_layout: :landscape) do |pdf|
booths_array = []
header_array = ['Booth ID',
header_array = ["#{(t'booth').capitalize } ID",
'Title',
'Description',
'Reasoning',
@ -21,6 +21,6 @@ prawn_document(force_download: true, filename: "#{@file_name}.pdf", page_layout:
row << booth.state
booths_array << row
end
pdf.text "#{@conference.short_title} booths", font_size: 25, align: :center
pdf.text "#{@conference.short_title} #{(t'booth').pluralize}", font_size: 25, align: :center
pdf.table booths_array, header: true, cell_style: {size: 8, border_width: 1},column_widths: [45,70,153,152,70,80,105,45]
end

View file

@ -1,9 +1,9 @@
# frozen_string_literal: true
wb.add_worksheet(name: 'all booths') do |sheet|
wb.add_worksheet(name: "all #{(t 'booth').pluralize}") do |sheet|
bold_style = wb.styles.add_style(b: true)
wrap_text = wb.styles.add_style alignment: {wrap_text: true}
row = ['Booth ID',
row = ["#{(t 'booth').capitalize} ID",
'Title',
'Description',
'Reasoning',

View file

@ -2,12 +2,12 @@
- if booth.transition_possible? :accept
- if can? :accept, booth
- if @conference.booth_limit > 0
- confirm_message = ' You are able to accept '+ pluralize(@conference.booth_limit - (@conference.booths.accepted.count + @conference.booths.confirmed.count), 'more booth') + " (booth limit set to #{@conference.booth_limit}). Are you sure you want to accept this one?"
- confirm_message = ' You are able to accept '+ pluralize(@conference.booth_limit - (@conference.booths.accepted.count + @conference.booths.confirmed.count), "more #{t'booth'}") + " (#{t'booth'} limit set to #{@conference.booth_limit}). Are you sure you want to accept this one?"
- if @conference.email_settings.send_on_booths_acceptance
- link = 'Accept with email'
- confirm_message = "By accepting this booth, an email will be sent informing the submitter for the acceptance. You may change the state to \'To accept\' until you are completely sure." + confirm_message
- confirm_message = "By accepting this #{t'booth'}, an email will be sent informing the submitter for the acceptance. You may change the state to \'To accept\' until you are completely sure." + confirm_message
- else
- link = 'Accept booth'
- link = "Accept #{t'booth'}"
%li= link_to link,
accept_admin_conference_booth_path(@conference.short_title, booth),
method: :patch ,id: "accept_booth_#{booth.id}",
@ -24,7 +24,7 @@
data: (@conference.email_settings.send_on_booths_rejection ? { confirm: 'By rejecting this booth, an email will be sent informing the submitter about the rejection. You may change the state to \'To reject\' until you are completely sure.'} : nil)
- if booth.transition_possible? :to_reject
%li= link_to 'To reject booth',
%li= link_to "To reject #{t'booth'}",
to_reject_admin_conference_booth_path(@conference.short_title, booth),
method: :patch, id: "to_reject_booth_#{booth.id}"
@ -34,16 +34,16 @@
method: :patch, id: "restart_booth_#{booth.id}"
- if booth.transition_possible? :to_accept
%li= link_to 'To accept booth',
%li= link_to "To accept #{t'booth'}",
to_accept_admin_conference_booth_path(@conference.short_title, booth),
method: :patch, id: "to_accept_booth_#{booth.id}"
- if booth.transition_possible? :cancel
%li= link_to 'Cancel booth',
%li= link_to "Cancel #{t'booth'}",
cancel_admin_conference_booth_path(@conference.short_title, booth),
method: :patch, id: "cancel_booth_#{booth.id}"
- if booth.transition_possible? :confirm
%li= link_to 'Confirm booth',
%li= link_to "Confirm #{t'booth'}",
confirm_admin_conference_booth_path(@conference.short_title, booth),
method: :patch, id: "confirm_booth_#{booth.id}"

View file

@ -1,4 +1,4 @@
- headers = ['Booth ID',
- headers = ["#{(t'booth').capitalize } ID",
'Title',
'Description',
'Reasoning',
@ -6,7 +6,7 @@
'Submitter Relationship',
'Website Url',
'State']
= CSV.generate_line ['All booths']
= CSV.generate_line ["All #{(t'booth').pluralize}"]
= CSV.generate_line headers
- @booths.confirmed.each do |booth|
= CSV.generate_line([booth.id,

View file

@ -1,6 +1,6 @@
prawn_document(force_download: true, filename: "#{@file_name}.pdf", page_layout: :landscape) do |pdf|
booths_array = []
header_array = ['Booth ID',
header_array = ["#{(t'booth').capitalize } ID",
'Title',
'Description',
'Reasoning',

View file

@ -1,9 +1,9 @@
# frozen_string_literal: true
wb.add_worksheet(name: 'all booths') do |sheet|
wb.add_worksheet(name: "all #{(t 'booth').pluralize}") do |sheet|
bold_style = wb.styles.add_style(b: true)
wrap_text = wb.styles.add_style alignment: {wrap_text: true}
row = ['Booth ID',
row = ["#{(t 'booth').capitalize} ID",
'Title',
'Description',
'Reasoning',

View file

@ -2,7 +2,7 @@
.col-md-12
.page-header
%h1
Booths
#{(t'booth').pluralize.capitalize }
.pull-right
- if can? :read, Booth
.btn-group
@ -11,8 +11,8 @@
Export PDF
%span.caret
%ul.dropdown-menu{ role: 'menu' }
%li= link_to 'All Booths', admin_conference_booths_path(@conference.short_title, format: :pdf, booth_export_option: 'all')
%li= link_to 'Confirmed Booths', admin_conference_booths_path(@conference.short_title, format: :pdf, booth_export_option: 'confirmed')
%li= link_to "All #{(t'booth').pluralize.capitalize }", admin_conference_booths_path(@conference.short_title, format: :pdf, booth_export_option: 'all')
%li= link_to "Confirmed #{(t'booth').pluralize.capitalize }", admin_conference_booths_path(@conference.short_title, format: :pdf, booth_export_option: 'confirmed')
.btn-group
%button.btn.btn-default.dropdown-toggle{ 'data-toggle' => 'dropdown', type: 'button', class: 'btn btn-success' }
Export CSV
@ -29,7 +29,7 @@
%li= link_to 'Confirmed', admin_conference_booths_path(@conference.short_title, format: :xlsx, booth_export_option: 'confirmed')
= "(#{@booths.length})" if @booths.any?
%p.text-muted
All the booth requests
All the #{t'booth'} requests
.row
.col-md-12
@ -37,21 +37,21 @@
- if @conference.booth_limit == 0
%p
Set the
= link_to 'Booth limit', edit_admin_conference_path(@conference.short_title)
to make sure you are not accepting more booths than you can accommodate.
= link_to "#{(t'booth').capitalize } limit", edit_admin_conference_path(@conference.short_title)
to make sure you are not accepting more #{(t'booth').pluralize} than you can accommodate.
- elsif !@conference.maximum_accepted_booths?
%p
You cannot accept more than
%b
= pluralize(@conference.booth_limit, 'booth')
= pluralize(@conference.booth_limit, "#{t'booth'}")
(
= pluralize(@conference.booths.accepted.count + @conference.booths.confirmed.count, 'accepted booth')
= pluralize(@conference.booths.accepted.count + @conference.booths.confirmed.count, "accepted #{t'booth'}")
so far)
- else
%p
You have reached the maximum number of accepted booths.
You have reached the maximum number of accepted #{(t'booth').pluralize}.
(
= link_to "#{@conference.booth_limit} booths", edit_admin_conference_path(@conference.short_title)
= link_to "#{@conference.booth_limit} #{(t'booth').pluralize}", edit_admin_conference_path(@conference.short_title)
)
- if @booths.any?
%table.datatable

View file

@ -1,3 +1,3 @@
%h1 New booth
%h1 New #{t'booth'}
= render 'booths/form'

View file

@ -7,15 +7,15 @@
.row
.col-md-8
= semantic_form_for(cfp, url: cfp_form_url(cfp, conference),
html: { multipart: true }) do |f|
html: { multipart: true,
data: { end_conference: conference.end_date.to_s } }) do |f|
= f.input :cfp_type, as: :hidden
= f.input :start_date, as: :string,
input_html: { id: 'registration-period-start-datepicker',
start_date: conference.start_date,
end_date: conference.end_date, readonly: 'readonly' }
input_html: { class: 'form-control',
id: 'registration-period-start-datepicker' }
= f.input :end_date, as: :string,
input_html: { id: 'registration-period-end-datepicker',
readonly: 'readonly' }
input_html: { class: 'form-control',
id: 'registration-period-end-datepicker' }
= f.input :description, hint: markdown_hint,
input_html: { rows: 2, data: { provide: 'markdown-editable' } }
- if cfp.cfp_type == 'events'

View file

@ -1,23 +0,0 @@
.text-center
%h4 #{title}
%canvas.doughnut_chart{ id: "dough_#{title.parameterize.underscore}", 'data-chart' => data.to_json }
- if data
- data.each do |key, value|
%span{ 'style' => "border-bottom: 3px solid #{value['color']}" } #{key}: #{value['value']}
:javascript
$(document).ready( function(){
var d = $("#dough_#{title.parameterize.underscore}");
var dt = d.get(0).getContext('2d');
$(window).resize( respondCanvas );
function respondCanvas(){
dt.canvas.width = 150;
dt.canvas.height = 150;
}
respondCanvas();
});

View file

@ -1,47 +0,0 @@
.row
.col-md-12
.text-center
%h4
= title
.row
.col-md-12
.chart_data{ 'data-chart' => "#{y.to_json}", 'data-conferences' => "#{conferences.to_json}",
'data-deactive' => "#{deactive_conferences.to_json}", 'data-weeks' => "#{x.to_json}",
'data-active' => "#{active_conferences.to_json}" }
%canvas.line_chart{ id: "line_chart_#{name}", 'data-name' => "#{name}" }
.row
.col-md-12
.text-center
= unit
.row
.col-md-12
.conferenceCheckboxes{ id: "#{name}Checkboxes", 'data-name' => "#{name}" }
- if active_conferences && deactive_conferences && conferences && conferences.length > 1
- active_conferences.each do |conference|
%div
%span{ 'style' => "border-bottom: 3px solid #{conference[:color]};", 'data-chart' => "#{name}" }
%input{ 'type' => 'checkbox', 'name' => "#{conference[:short_title]}", 'checked' => 'checked' }
#{conference[:short_title]}
- deactive_conferences.each do |conference|
%div
%span{ 'style' => "border-bottom: 3px solid #{conference[:color]};", 'data-chart' => "#{name}" }
%input{ 'type' => 'checkbox', 'name' => "#{conference[:short_title]}" }
#{conference[:short_title]}
:javascript
$(document).ready( function(){
var c = $("#line_chart_#{name}");
var ct = c.get(0).getContext('2d');
var container = $(c).parent();
$(window).resize( respondCanvas );
function respondCanvas(){
c.attr('width', $(container).width() );
c.attr('height', $(container).height() );
}
respondCanvas();
});

View file

@ -14,10 +14,7 @@
%td= link_to user.email, admin_user_path(user.id)
%td= user.created_at.strftime('%m/%d/%Y')
%td
= check_box_tag user.id, user.id, user.confirmed?,
url: "/admin/users/#{user.id}/toggle_confirmation?user[to_confirm]=",
class: 'switch-checkbox',
readonly: true
= user.confirmed? ? 'Yes' : 'No'
- else
%h5.text-warning.text-center
No sign ups!

View file

@ -28,5 +28,5 @@
= f.input :registration_limit, as: :number, in: 0..9999, hint: 'Limit the number of registrations to the conference (0 no limit). Please note that the registration limit doesn\'t apply to speakers of confirmed events (they will still be able to register even if it has been reached). You currently have ' + pluralize(@conference.registrations.count, 'registration')
= f.inputs name: 'Booths' do
= f.input :booth_limit, as: :number, in: 0..9999,
hint: 'Booth limit is the maximum number of booths that you can accept for this conference. By setting this number (0 no limit) you can be sure that you are not going to accept more booths than the conference can accommodate. You currently have ' + pluralize(@conference.booths.accepted.count, 'accepted booth') +'.'
hint: "#{(t'booth').capitalize } limit is the maximum number of #{(t'booth').pluralize} that you can accept for this conference. By setting this number (0 no limit) you can be sure that you are not going to accept more #{(t'booth').pluralize} than the conference can accommodate. You currently have " + pluralize(@conference.booths.accepted.count, "accepted #{t'booth'}") +'.'
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary', data: { confirm: 'Are you sure you want to proceed?' } }

View file

@ -1,52 +1,32 @@
= javascript_include_tag 'Chart.min'
.row
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "user", subtitle: "User", value: @total_user, delta: @new_user
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "check-square", subtitle: "Registration", value: @total_reg, delta: @new_reg
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "file-text", subtitle: "Submission", value: @total_submissions, delta: @new_submissions
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "archive", subtitle: "Withdrawn", value: @total_withdrawn, delta: @new_withdrawn, reverse: true
.row#registrations
.col-md-8
= render partial: 'line_chart', locals: { title: 'Registrations over time',
name: 'registrations',
conferences: @conferences,
active_conferences: @active_conferences,
deactive_conferences: @deactive_conferences,
y: @registrations,
x: @registration_weeks,
unit: 'weeks' }
= render 'line_chart', title: 'Registrations per week', data: @registrations
.col-md-4
= render partial: 'doughnut_chart', locals: { title: 'Events', data: @event_distribution }
= render 'donut_chart', title: 'Events',
data: @event_distribution, colors: @event_distribution_colors
.row#submissions
.col-md-8
= render partial: 'line_chart', locals: { title: 'Submissions over time',
name: 'submissions',
conferences: @conferences,
active_conferences: @active_conferences,
deactive_conferences: @deactive_conferences,
y: @submissions,
x: @cfp_weeks,
unit: 'weeks' }
= render 'line_chart', title: 'Submissions per week', data: @submissions
.col-md-4
= render partial: 'doughnut_chart', locals: { title: 'User', data: @user_distribution }
= render 'donut_chart', title: 'Users',
data: @user_distribution, colors: @user_distribution_colors
.row#tickets
.col-md-8
= render partial: 'line_chart', locals: { title: 'Tickets sold over time',
name: 'tickets',
conferences: @conferences,
active_conferences: @active_conferences,
deactive_conferences: @deactive_conferences,
y: @tickets,
x: @ticket_weeks,
unit: 'weeks' }
= render 'line_chart', title: 'Tickets sold per week', data: @tickets
%br
.row
.col-md-8

View file

@ -1,21 +1,19 @@
= javascript_include_tag 'Chart.min'
%h1
%span.fa.fa-tachometer
Dashboard for #{@conference.title}
%hr
.row
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "user", subtitle: "Registration", value: @total_reg, delta: @new_reg
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "check-square", subtitle: "Submission", value: @total_submissions, delta: @new_submissions
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "file-text", subtitle: "Hour", value: @program_length, delta: @new_program_length
.col-sm-3.col-xs-3
= render "shared/big_statistic",
= render "big_statistic",
icon: "archive", subtitle: "Withdrawn", value: @total_withdrawn, delta: @new_withdrawn
.row
@ -24,37 +22,19 @@
.col-md-8
.row#registrations
.col-md-12
= render partial: 'line_chart', locals: { title: 'Registrations over time',
name: 'registrations',
conferences: [@conference],
active_conferences: [@conference],
deactive_conferences: [],
y: @registrations,
x: @registration_weeks,
unit: 'weeks' }
= render 'line_chart',
title: 'Registrations per week', data: @registrations
.row#submissions
.col-md-12
= render partial: 'line_chart', locals: { title: 'Submissions over time',
name: 'submissions',
conferences: @submissions,
active_conferences: @submissions,
deactive_conferences: [],
y: @submissions_data,
x: @cfp_weeks,
unit: 'weeks' }
= render 'line_chart',
title: 'Submissions per week', data: @submissions
.col-md-4
= render partial: 'todo_list', locals: { conference_progress: @conference_progress,
conference: @conference }
= render 'todo_list',
conference_progress: @conference_progress, conference: @conference
.row#tickets
.col-md-8
= render partial: 'line_chart', locals: { title: 'Tickets sold over time',
name: 'tickets',
conferences: @tickets,
active_conferences: @tickets,
deactive_conferences: [],
y: @tickets_data,
x: @ticket_weeks,
unit: 'weeks' }
= render 'line_chart',
title: 'Tickets sold per week', data: @tickets
%br
.row
.col-md-12#doughnut
@ -75,27 +55,36 @@
.tab-pane.active#distribution_all
.row
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Event types', data: @event_type_distribution}
= render 'donut_chart', title: 'Event types',
combined_data: @event_type_distribution
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Difficulty levels', data: @difficulty_levels_distribution}
= render 'donut_chart', title: 'Difficulty levels',
combined_data: @difficulty_levels_distribution
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Tracks', data: @tracks_distribution}
= render 'donut_chart', title: 'Tracks',
combined_data: @tracks_distribution
.tab-pane#distribution_confirmed
.row
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Event types', data: @event_type_distribution_confirmed}
= render 'donut_chart', title: 'Event types',
combined_data: @event_type_distribution_confirmed
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Difficulty levels', data: @difficulty_levels_distribution_confirmed}
= render 'donut_chart', title: 'Difficulty levels',
combined_data: @difficulty_levels_distribution_confirmed
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Tracks', data: @tracks_distribution_confirmed}
= render 'donut_chart', title: 'Tracks',
combined_data: @tracks_distribution_confirmed
.tab-pane#distribution_withdrawn
.row
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Event types', data: @event_type_distribution_withdrawn}
= render 'donut_chart', title: 'Event types',
combined_data: @event_type_distribution_withdrawn
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Difficulty levels', data: @difficulty_levels_distribution_withdrawn}
= render 'donut_chart', title: 'Difficulty levels',
combined_data: @difficulty_levels_distribution_withdrawn
.col-md-4
= render partial: 'doughnut_chart', locals: {title: 'Tracks', data: @tracks_distribution_withdrawn}
= render 'donut_chart', title: 'Tracks',
combined_data: @tracks_distribution_withdrawn
.row
.col-md-8

View file

@ -114,18 +114,18 @@
= f.input :booths_acceptance_subject
= f.input :booths_acceptance_body, input_html: { rows:10, cols: 20 }
%a.btn.btn-link.control_label.load_template{ 'data-subject-input-id' => 'email_settings_booths_acceptance_subject',
'data-subject-text' => 'Your booth has been accepted!',
'data-subject-text' => "Your #{t'booth'} has been accepted!",
'data-body-input-id' => 'email_settings_booths_acceptance_body',
'data-body-text' => "Dear {name},\n\nWe are pleased to inform you that your booth request {booth_title} has been accepted for the conference {conference}.\nPlease click the confirm button to let us know you can make it as soon as possible!\n\nFeel free to contact us with any questions or concerns.\n\nWe are looking forward to seeing you there.\n\nBest wishes\n\n{conference} Team"} Load Template
'data-body-text' => "Dear {name},\n\nWe are pleased to inform you that your #{t'booth'} request {booth_title} has been accepted for the conference {conference}.\nPlease click the confirm button to let us know you can make it as soon as possible!\n\nFeel free to contact us with any questions or concerns.\n\nWe are looking forward to seeing you there.\n\nBest wishes\n\n{conference} Team"} Load Template
%a.btn.btn-link.control_label.template_help_link{ 'data-name' => 'booth_acceptance_help' } Show help
= render partial: 'help', locals: {id: 'booth_acceptance_help', show_event_variables: false}
= f.input :send_on_booths_rejection
= f.input :booths_rejection_subject
= f.input :booths_rejection_body, input_html: { rows:10, cols:20 }
%a.btn.btn-link.control_label.load_template{ 'data-subject-input-id' => 'email_settings_booths_rejection_subject',
'data-subject-text' => 'Your booth request has been rejected',
'data-subject-text' => "Your #{t'booth'} request has been rejected",
'data-body-input-id' => 'email_settings_booths_rejection_body',
'data-body-text' => "Dear {name},\n\nThank you for your booth request {booth_title} for the conference {conference}.\n\nUnfortunately, we are sorry to inform you that your request has been rejected.\n\n\nBest wishes\n\n{conference} Team" } Load Template
'data-body-text' => "Dear {name},\n\nThank you for your #{t'booth'} request {booth_title} for the conference {conference}.\n\nUnfortunately, we are sorry to inform you that your request has been rejected.\n\n\nBest wishes\n\n{conference} Team" } Load Template
%a.btn.btn-link.control_label.template_help_link{ 'data-name' => 'booth_rejection_help' } Show help
= render partial: 'help', locals: {id: 'booth_rejection_help', show_event_variables: false}

View file

@ -24,11 +24,15 @@
Unknown submitter
%td
- event.speakers_ordered.each do |speaker|
.speaker
= link_to speaker.name, admin_user_path(speaker)
- unless speaker.registrations.for_conference(event.conference)
%span.label.label-danger Unregistered
- if event.speakers.any?
- event.speakers_ordered.each do |speaker|
.speaker
= link_to speaker.name, admin_user_path(speaker)
- unless speaker.registrations.for_conference(event.conference)
%span.label.label-danger Unregistered
- else
.small
No Speaker
- if @program.languages.present?
%td

View file

@ -1,5 +1,3 @@
= javascript_include_tag 'Chart.min'
.row
.col-md-12
.page-header
@ -47,17 +45,14 @@
= f.submit 'Add', class: 'btn btn-primary'
.row
.col-md-4
= render 'admin/conferences/doughnut_chart',
title: 'Events state',
data: @event_distribution
= render 'donut_chart', title: 'Events state',
data: @event_distribution, colors: @event_distribution_colors
.col-md-4
= render 'admin/conferences/doughnut_chart',
title: 'Confirmed events scheduled',
data: @scheduled_event_distribution
= render 'donut_chart', title: 'Confirmed events scheduled',
combined_data: @scheduled_event_distribution
.col-md-4
= render 'admin/conferences/doughnut_chart',
title: 'Tracks of confirmed events',
data: @tracks_distribution_confirmed
= render 'donut_chart', title: 'Tracks of confirmed events',
combined_data: @tracks_distribution_confirmed
.row
.col-md-12
.margin-event-table

View file

@ -11,7 +11,7 @@
for
= @event.title
- if @event.room && (@event_registrations.length > @event.room.size)
- if @event.room.try(:size) && (@event_registrations.length > @event.room.size)
%b Attention:
You have more registrations than the capacity of the room!
@ -32,7 +32,7 @@
%td= event_registration.email
%td= event_registration.created_at
%td
= check_box_tag @conference.short_title, @event.id, event_registration.attended, class: 'switch-checkbox', url: "/admin/conferences/#{@conference.short_title}/program/events/#{@event.id}/toggle_attendance?events_registration_id=#{event_registration.id}&&event_registration[attended]="
= check_box_tag @conference.short_title, @event.id, event_registration.attended, class: 'switch-checkbox', url: "#{toggle_attendance_admin_conference_program_event_path(@conference, @event, events_registration_id: event_registration)}&&event_registration[attended]="
%td
- if event_registration.registration.attended
%i.fa.fa-check.text-success

View file

@ -69,9 +69,10 @@
%span{ 'class' => [icon_for_todo(progress_status['registered']), 'fa-lg'] }
%tr
%td
- if @event.speakers.count == 1
- speakers_count = @event.speakers.count
- if speakers_count == 1
= link_to 'Fill out speaker\'s biography', edit_admin_user_path(@event.speakers.first)
- else
- elsif speakers_count > 1
Fill out speaker's biography:
= speaker_links(@event)
%td{ 'class' => class_for_todo(progress_status['biographies']) }

View file

@ -16,9 +16,9 @@
- else
- if lodging.website_link.present?
= link_to(lodging.website_link, class: 'thumbnail') do
= image_tag lodging.picture.thumb, class: 'img-responsive img-lodging'
= image_tag lodging.picture.thumb.url, class: 'img-responsive img-lodging'
- else
= image_tag lodging.picture.thumb, class: 'img-responsive img-lodging'
= image_tag lodging.picture.thumb.url, class: 'img-responsive img-lodging'
.caption
%h3.text-center
= lodging.name

View file

@ -1,5 +1,3 @@
= javascript_include_tag 'Chart.min'
.container
.row
.col-md-12.page-header
@ -9,11 +7,11 @@
Tickets sold for the conference
.row
.col-md-4
= render partial: 'admin/conferences/doughnut_chart',
locals: { title: 'Tickets sold', data: @tickets_sold_distribution }
= render 'donut_chart', title: 'Tickets sold',
combined_data: @tickets_sold_distribution
.col-md-4
= render partial: 'admin/conferences/doughnut_chart',
locals: {title: 'Tickets turnover', data: @tickets_turnover_distribution}
= render 'donut_chart', title: 'Tickets turnover',
combined_data: @tickets_turnover_distribution
%br
- if @physical_tickets.any?
.row

View file

@ -11,7 +11,7 @@
= f.input :languages, hint: "Enter the languages allowed for events as values of #{link_to('ISO 639-1', 'http://www.loc.gov/standards/iso639-2/php/code_list.php', target: "_blank")} language codes separated with commas. The first language would be the default language. Leave it blank if you do not want to specify languages.".html_safe
= f.input :schedule_interval, input_html: { autofocus: true }, hint: "It is the minimal time interval of your schedule. The value should be 5, 6, 10, 12, 15, 20, 30 or 60. Warning! Some events could be unscheduled when changing this value."
= f.input :blind_voting, hint: 'Enable this feature if you do not want to show voting results and voters prior to user submitting a vote. For the feature to work you need to set the voting dates below as well'
= f.input :voting_start_date, as: :string, input_html: { id: 'datetimepicker-voting_start_date', readonly: true, value: (f.object.voting_start_date.to_formatted_s(:db_without_seconds) unless f.object.voting_start_date.nil?) }
= f.input :voting_end_date, as: :string, input_html: { id: 'datetimepicker-voting_start_date', readonly: true, value: (f.object.voting_end_date.to_formatted_s(:db_without_seconds) unless f.object.voting_end_date.nil?) }
= f.input :voting_start_date, as: :string, input_html: { id: 'datetimepicker-voting_start_date', value: (f.object.voting_start_date.to_formatted_s(:db_without_seconds) unless f.object.voting_start_date.nil?) }
= f.input :voting_end_date, as: :string, input_html: { id: 'datetimepicker-voting_end_date', value: (f.object.voting_end_date.to_formatted_s(:db_without_seconds) unless f.object.voting_end_date.nil?) }
%p.text-right
= f.action :submit, as: :button, button_html: {class: 'btn btn-primary'}

View file

@ -5,7 +5,7 @@
.row
.col-md-8
= semantic_form_for(@registration_period, url: admin_conference_registration_period_path(@conference.short_title)) do |f|
= f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker',start_date: @conference.start_date,end_date: @conference.end_date, readonly: 'readonly' }
= f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker', readonly: 'readonly' }
= f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker', start_date: @conference.start_date, end_date: @conference.end_date }
= f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker' }
%p.text-right
= f.submit 'Save Registration Period', class: 'btn btn-primary'

View file

@ -8,29 +8,38 @@
.row
.col-md-8
%dl.dl-horizontal
%dt
Start Date
%dd
= @registration_period.start_date
%dt
End Date
%dd
= @registration_period.end_date
%dt Start Date
%dd= @registration_period.start_date
%dt End Date
%dd= @registration_period.end_date
%dt Ticket required?
%dd= @conference.tickets.for_registration.any? ? 'Yes' : 'No'
.row
.col-md-12
%p
If you would like to require a ticket purchase for registration, at least
one
= link_to 'ticket', admin_conference_tickets_path(@conference)
must be set as a registration ticket, and the registration process
will not proceed without the purchase (or selection of a free) single
registration ticket.
%p
To make ticketing optional, do not mark any
= link_to 'tickets', admin_conference_tickets_path(@conference)
as registration tickets, and registration can proceed without them.
.row
.col-md-12.text-right
- if @registration_period
- if can? :update, @registration_period
= link_to 'Edit', edit_admin_conference_registration_period_path, class: 'btn btn-primary'
- if can? :destroy, @registration_period
= link_to 'Delete', admin_conference_registration_period_path,
method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger'
- else
- if @conference.tickets.for_registration.empty?
.h3.text-left
No Registration Tickets!
%small
= link_to 'Create registration tickets', new_admin_conference_ticket_path
before creating the registration period.
- else
- if can? :create, @conference.build_registration_period
= link_to 'New Registration Period', new_admin_conference_registration_period_path, class: 'btn btn-primary'
.btn-group{ role: 'group' }
- if @registration_period
- if can? :update, @registration_period
= link_to 'Edit', edit_admin_conference_registration_period_path,
class: 'btn btn-primary'
- if can? :destroy, @registration_period
= link_to 'Delete', admin_conference_registration_period_path,
method: :delete, data: { confirm: 'Are you sure?' },
class: 'btn btn-danger'
- elsif can? :create, @conference.build_registration_period
= link_to 'New Registration Period',
new_admin_conference_registration_period_path,
class: 'btn btn-primary'

View file

@ -1,4 +1,16 @@
- headers = ['Name', 'Email']
- headers = ['Attended',
'Name',
'Nickname',
'Affilιation',
'Email',
'Arrival',
'Departure']
= CSV.generate_line headers
- @registrations.each do |registration|
= CSV.generate_line([registration.name, registration.email])
= CSV.generate_line([registration.attended ? 'X' : '',
registration.name,
registration.nickname,
registration.affiliation,
registration.email,
registration.arrival.to_s,
registration.departure.to_s])

View file

@ -1,5 +1,3 @@
= javascript_include_tag 'Chart.min'
.row
.col-md-12
.page-header
@ -14,10 +12,12 @@
%p.text-muted
All the people who registered to your event
.col-md-4
= render partial: 'admin/conferences/doughnut_chart', locals: {title: 'Affiliation', data: @affiliation_distribution}
= render 'donut_chart', title: 'Affiliation',
combined_data: @affiliation_distribution
- unless @conference.pending?
.col-md-4
= render partial: 'admin/conferences/doughnut_chart', locals: {title: 'Attended registrations', data: @registration_distribution}
= render 'donut_chart', title: 'Attended registrations',
combined_data: @registration_distribution
.row
.col-md-12
%div.margin-event-table

View file

@ -27,10 +27,14 @@
%td
= link_to event.title, edit_admin_conference_program_event_path(@conference.short_title, event)
%br
.small
(Presented by
= speaker_links(event)
)
- if(event.speakers.any?)
.small
(Presented by
= speaker_links(event)
)
- else
.small
(No speaker)
- %w(registered biographies commercials subtitle difficulty_level).each do |info|
%td{'data-order' => "#{progress_status[info]}"}

View file

@ -18,4 +18,8 @@
%td= event.id
%td= link_to event.title, edit_admin_conference_program_event_path(@conference.short_title, event)
%td
= speaker_links(event)
- if(event.speakers.any?)
= speaker_links(event)
- else
.small
(No speaker)

View file

@ -1,30 +1,29 @@
- cache [:admin, @conference, @program, :schedule, event] do
- cells_length = event.event_type.length / @program.schedule_interval
/ this height fits the room cells
- compact_grid = @program.schedule_interval < 15
- single_cell_height = compact_grid ? 32 : 58
- height = (cells_length * single_cell_height)
- height -= 23 unless compact_grid
/ subtracting the padding before calculate the number of lines
- lines = (height - 7) / 23
- color = event.track.try(:color).present? ? event.track.try(:color) : 'FFFFFF'
- non_schedulable = event_schedule_id && (EventSchedule.find(event_schedule_id).schedule != @schedule)
.schedule-event{ style: "height: #{height}px; background-color: #{color}; color: #{contrast_color(color)}", |
id: "event-#{event.id}", |
event_id: event.id, |
length: cells_length, |
event_schedule_id: event_schedule_id, |
class: "#{'compact' if compact_grid} #{'non_schedulable' if non_schedulable}" }
.schedule-event-text{ style: "-webkit-line-clamp: #{lines}; height: #{lines * 23}px;"}
%span.schedule-event-delete-button{ onclick: "Schedule.remove(\'event-#{event.id}\');" } X
%b
= link_to(event.id, admin_conference_program_event_path(@conference, event))
= event.speakers.collect(&:name).to_sentence
= ':'
= event.title
- if event.difficulty_level
%span.label.label-default= event.difficulty_level.title
- if event.event_type
%span.label.label-default= event.event_type.title
- if event.track
%span.label.label-default= event.track.short_name
- cells_length = event.event_type.length / @program.schedule_interval
/ this height fits the room cells
- compact_grid = @program.schedule_interval < 15
- single_cell_height = compact_grid ? 32 : 58
- height = (cells_length * single_cell_height)
- height -= 23 unless compact_grid
/ subtracting the padding before calculate the number of lines
- lines = (height - 7) / 23
- color = event.track.try(:color).present? ? event.track.try(:color) : 'FFFFFF'
- non_schedulable = event_schedule_id && (EventSchedule.find(event_schedule_id).schedule != @schedule)
.schedule-event{ style: "height: #{height}px; background-color: #{color}; color: #{contrast_color(color)}", |
id: "event-#{event.id}", |
event_id: event.id, |
length: cells_length, |
event_schedule_id: event_schedule_id, |
class: "#{'compact' if compact_grid} #{'non_schedulable' if non_schedulable}" }
.schedule-event-text{ style: "-webkit-line-clamp: #{lines}; height: #{lines * 23}px;"}
%span.schedule-event-delete-button{ onclick: "Schedule.remove(\'event-#{event.id}\');" } X
%b
= link_to(event.id, admin_conference_program_event_path(@conference, event))
= event.speakers.collect(&:name).to_sentence
= ':'
= event.title
- if event.difficulty_level
%span.label.label-default= event.difficulty_level.title
- if event.event_type
%span.label.label-default= event.event_type.title
- if event.track
%span.label.label-default= event.track.short_name

View file

@ -8,6 +8,13 @@
.col-md-12
= f.inputs name: 'Components' do
%ul.fa-ul
%li
%th
%button.btn.btn-default#select-all{ type: "button" }
Select All
%th
%button.btn.btn-default#unselect-all{ type: "button" }
Unselect All
%li
= f.input :include_cfp, label: 'Display call for papers and call for tracks, while open', input_html: { checked: params[:action] == 'new' || @splashpage.try(:include_cfp) }
%li
@ -17,7 +24,7 @@
%li
= f.input :include_tracks, label: 'Include confirmed tracks', input_html: { checked: params[:action] == 'new' || @splashpage.try(:include_tracks) }
%li
= f.input :include_booths, label: 'Include confirmed booths', input_html: { checked: params[:action] == 'new' || @splashpage.try(:include_booths) }
= f.input :include_booths, label: "Include confirmed #{(t'booth').pluralize}", input_html: { checked: params[:action] == 'new' || @splashpage.try(:include_booths) }
%li
= f.input :include_registrations, label: 'Display the registration period', input_html: { checked: params[:action] == 'new' || @splashpage.try(:include_registrations) }
@ -45,3 +52,15 @@
.col-md-12
%p.text-right
= f.submit 'Save Changes', class: 'btn btn-primary'
:javascript
$(document).ready(function(){
$('#select-all').click(function(event) {
var parent = $(this).parents('.inputs:last');
parent.find('.input.checkbox input[type=checkbox]').prop('checked',true);
});
$('#unselect-all').click(function(event) {
var parent = $(this).parents('.inputs:last');
parent.find('.input.checkbox input[type=checkbox]').prop('checked',false);
});
});

View file

@ -26,7 +26,7 @@
Include confirmed tracks
%li
%i{ class: "fa-li #{icon_for_todo @splashpage.include_booths?}" }
Include confirmed booths
Include confirmed #{(t'booth').pluralize}
%li
%i{ class: "fa-li #{icon_for_todo @splashpage.include_registrations?}" }
Display the registration period

View file

@ -10,7 +10,7 @@
.col-md-8
= semantic_form_for(@sponsor, url: (@sponsor.new_record? ? admin_conference_sponsors_path : admin_conference_sponsor_path(@conference.short_title, @sponsor))) do |f|
= f.input :name, input_html: { autofocus: true }
= f.input :description
= f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint
= image_tag f.object.picture.thumb.url if f.object.picture?
= f.input :picture
= f.input :website_url

View file

@ -24,7 +24,7 @@
%td
= sponsor.name
%td
= truncate(sponsor.description)
= truncate(markdown(sponsor.description))
%td
= sponsor.website_url
%td

View file

@ -1,6 +1,3 @@
= javascript_include_tag "//www.google.com/jsapi", "chartkick"
= javascript_include_tag 'chartkick'
= bar_chart @survey.survey_questions.map{ |q| [q.title, q.survey_replies.count] }
- @survey.survey_questions.each.with_index(1) do |survey_question, question_index|

View file

@ -12,8 +12,8 @@
= f.input :name, input_html: { autofocus: true }
= f.input :short_name, hint: "A short and unique handle for the track, using only letters, numbers, underscores, and dashes. This will be used to identify the track in URLs etc. Example: 'my_awesome_track'", input_html: { required: 'required', pattern: '[a-zA-Z0-9_-]+', title: 'Only letters, numbers, underscores, and dashes.' }
= f.input :color, input_html: {size: 6, type: 'color'}, required: true
= f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker', start_date: @conference.start_date, end_date: @conference.end_date, readonly: 'readonly', required: @track.self_organized_and_accepted_or_confirmed? }
= f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker', readonly: 'readonly', required: @track.self_organized_and_accepted_or_confirmed? }
= f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker', start_date: @conference.start_date, end_date: @conference.end_date, required: @track.self_organized_and_accepted_or_confirmed? }
= f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker', required: @track.self_organized_and_accepted_or_confirmed? }
- if @conference.venue.try(:rooms).present?
= f.input :room, as: :select, collection: (@conference.venue.rooms).map {|room| ["#{room.name}", room.id]}, include_blank: true, label: 'Room', input_html: { class: 'select-help-toggle', required: @track.self_organized_and_accepted_or_confirmed? }
- else

View file

@ -6,12 +6,12 @@
Confirmed?
- if can? :toggle_confirmation, @user
= check_box_tag @user.id, @user.id, @user.confirmed?,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
url: "#{toggle_confirmation_admin_user_path(@user.id)}?user[to_confirm]=",
class: 'switch-checkbox',
readonly: false
- else
= check_box_tag @user.id, @user.id, @user.confirmed?,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
url: "#{toggle_confirmation_admin_user_path(@user.id)}?user[to_confirm]=",
class: 'switch-checkbox',
readonly: true
= f.input :is_admin, hint: 'An admin can create a new conference, manage users and make other users admins.'

View file

@ -36,12 +36,12 @@
%td
- if can? :toggle_confirmation, @user
= check_box_tag @user.id, @user.id, @user.confirmed?,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
url: "#{toggle_confirmation_admin_user_path(@user)}?user[to_confirm]=",
class: 'switch-checkbox',
readonly: false
- else
= check_box_tag @user.id, @user.id, @user.confirmed?,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
url: "#{toggle_confirmation_admin_user_path(@user)}?user[to_confirm]=",
class: 'switch-checkbox',
readonly: true
- else

View file

@ -79,8 +79,8 @@
= link_to (current_or_last_object_state('Event', object.event_id).try(:title) || 'deleted'),
admin_conference_program_event_path(conference_short_title, object.event_id)
in
= link_to "Schedule #{event_schedule.schedule_id}",
admin_conference_schedule_path(conference_short_title, event_schedule.schedule_id)
= link_to "Schedule #{version.item.schedule_id}",
admin_conference_schedule_path(conference_short_title, version.item.schedule_id)
- when 'Schedule'
= link_if_alive version, "Schedule #{version.item_id}",
@ -102,7 +102,7 @@
conference
- when 'Booth'
= 'booth'
= t 'booth'
= link_if_alive version, object.title,
admin_conference_booth_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id ),
conference

View file

@ -0,0 +1,16 @@
:ruby
combined_data ||= {}
data ||= chart_values(combined_data)
colors ||= chart_colors(combined_data)
options = {
donut: true,
legend: 'bottom',
download: true,
messages: { empty: 'No data' }
}
options[:colors] = colors if colors.present?
.text-center
%h4= title
= pie_chart data, options

View file

@ -0,0 +1,15 @@
:ruby
options = {
legend: 'bottom',
download: true,
messages: { empty: 'No data' }
}
.row
.col-md-12
.text-center
%h4
= title
.row
.col-md-12
= line_chart data, options

View file

@ -17,9 +17,9 @@
%p.text-right
- if @booth.new_record?
= f.submit 'Create Booth Request', class: 'btn btn-success'
= f.submit "Create #{(t'booth').capitalize } Request", class: 'btn btn-success'
- else
= f.submit 'Update Booth Request', class: 'btn btn-success'
= f.submit "Update #{(t'booth').capitalize } Request", class: 'btn btn-success'
:javascript
$(document).ready(function() {

View file

@ -2,7 +2,7 @@
.row
.col-md-12.page-header
%h1
Your booth requests for
Your #{t'booth'} requests for
= @conference.title
.row
.col-md-12
@ -48,4 +48,4 @@
restart_conference_booth_path(@conference.short_title, booth),
method: :patch, class: 'btn btn-mini btn-success', id: "restart_booth_#{booth.id}"
.pull-right
= link_to 'Add Booth', new_conference_booth_path(@conference.short_title), class: 'button btn btn-primary'
= link_to "Add #{(t'booth').capitalize }", new_conference_booth_path(@conference.short_title), class: 'button btn btn-primary'

View file

@ -1,4 +1,4 @@
.container
%h1 Request a booth
%h1 Request a #{t'booth'}
= render 'form'

View file

@ -27,7 +27,7 @@
= 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'}
= 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

View file

@ -97,37 +97,48 @@
- if @conference.tickets.visible.any?
.row
.col-md-12
-if @tickets.any?
%h4
%span.fa-stack
%i.fa.fa-square-o.fa-stack-2x
%i.fa.fa-ticket.fa-stack-1x
Ticket Purchases
= "(#{@tickets.first.price.symbol}#{humanized_money @total_price})"
%ul
.col-md-12
- @ticket_payments.each_pair do |ticket_id, tickets|
%li
= @total_quantity[ticket_id]
= tickets.first.title
= word_pluralize(@total_quantity[ticket_id], 'Ticket')
for
= tickets.first.price.symbol
= humanized_money @total_price_per_ticket[ticket_id]
%br
%h4
%span.fa-stack
%i.fa.fa-square-o.fa-stack-2x
%i.fa.fa-ticket.fa-stack-1x
Tickets
- if @tickets.any?
.btn-group
= link_to 'View all tickets', conference_physical_tickets_path(@conference.short_title), class: "btn btn-success"
= link_to 'Get more tickets', conference_tickets_path(@conference.short_title), class: "btn btn-default"
Total Purchased:
= "(#{@tickets.first.price.symbol}#{humanized_money @total_price})"
%ul
.col-md-12
- @ticket_payments.each_pair do |ticket_id, tickets|
%li
= @total_quantity[ticket_id]
= tickets.first.title
= word_pluralize(@total_quantity[ticket_id], 'Ticket')
for
= tickets.first.price.symbol
= humanized_money @total_price_per_ticket[ticket_id]
%br
.btn-group{ role: 'group' }
= link_to 'View all tickets',
conference_physical_tickets_path(@conference.short_title),
class: 'btn btn-success'
= link_to 'Get more tickets',
conference_tickets_path(@conference.short_title),
class: 'btn btn-default'
- else
You haven't bought any tickets.
= link_to 'Please get some tickets to support us!', conference_tickets_path(@conference.short_title)
%p
(Your participation won't be valid without getting a registration ticket)
You haven't bought any tickets.
= link_to 'Please get some tickets to support us!', conference_tickets_path(@conference.short_title)
- if @conference.tickets.for_registration.any?
%p
%em
Your participation won't be valid without getting a
registration ticket.
= link_to 'Get tickets',
conference_tickets_path(@conference.short_title),
class: 'btn btn-default'
.row
.col-md-12
-if @registration
- if @registration
.btn-group-vertical.pull-right
= link_to 'Edit your Registration', edit_conference_conference_registration_path(@conference.short_title), class: 'btn btn-success', disabled: @conference.end_date < Date.today
- if @tickets.any?

View file

@ -1,6 +1,6 @@
.row
.col-md-12
%h3.text-center Booths
%h3.text-center "#{(t'booth').pluralize.capitalize }"
.row.row-centered
- booths.each do |booth|
.col-md-2.col-sm-2.col-centered.col-top.booth

View file

@ -1,12 +1,12 @@
- cache [conference_id, call, '#splash#callforbooths'] do
.col-md-4.col-sm-4.text-center
%h2
Call for Booths
Call for #{(t'booth').pluralize.capitalize }
%p.lead
We are now accepting custom booth requests!
We are now accepting custom #{t'booth'} requests!
%p
Would you like to request a new booth?
The submission period for booth requests is open
Would you like to request a new #{t'booth'}?
The submission period for #{t'booth'} requests is open
%em
= date_string(call.start_date, call.end_date) + '.'
%b
@ -14,6 +14,6 @@
= pluralize(call.remaining_days, 'day')
left!
%p.cta-button
= link_to("Submit your request for booth",
= link_to("Submit your request for #{t'booth'}",
new_conference_booth_path(conference_id),
class: 'btn btn-success btn-lg text-center')

View file

@ -41,11 +41,12 @@
- if !current_user.nil? && current_user.proposal_count(conference) > 0
= link_to "My Proposals", conference_program_proposals_path(conference.short_title), class: 'btn btn-default'
- elsif can? :new, conference.program.events.new
= link_to "Submit Proposal", new_conference_program_proposal_path(conference.short_title), class: 'btn btn-default'
- if conference.program.cfp_open?
= link_to "Submit Proposal", new_conference_program_proposal_path(conference.short_title), class: 'btn btn-default'
- if current_user && current_user.booths.where(conference_id: conference.id).count > 0
= link_to 'My Booth Requests', conference_booths_path(conference.short_title), class: 'btn btn-default'
= link_to "My #{(t'booth').capitalize } Requests", conference_booths_path(conference.short_title), class: 'btn btn-default'
- elsif can? :new, conference.booths.new
= link_to 'Request Booth', new_conference_booth_path(conference.short_title), class: 'btn btn-default'
= link_to "Request #{(t'booth').capitalize }", new_conference_booth_path(conference.short_title), class: 'btn btn-default'
- if current_user.nil? || !current_user.subscribed?(conference)
= link_to 'Subscribe', conference_subscriptions_path(conference.short_title), method: :post, class: 'btn btn-default'
- else

View file

@ -18,6 +18,6 @@
- if object.picture?
= image_tag get_logo(object), class: img_classes
%p.description
= object.description
= markdown(object.description)
.modal-footer
= link_to nil, object.website_url, target: '_blank'

View file

@ -0,0 +1,21 @@
.row
.col-md-12
.well
%h1
Welcome to your new
= link_to('https://osem.io') do
Open Source Event Manager
installation!
%p
The first user to
- if ENV['OSEM_ICHAIN_ENABLED'] == 'true'
= link_to(new_ichain_registration_path('user')) do
sign up
- else
= link_to(new_registration_path('user')) do
sign up
will the be administrator of it.
%p
We hope you enjoy using OSEM, if you have any question don't hesitate to
= link_to('http://osem.io/#contact') do
contact us!

View file

@ -5,7 +5,7 @@
%h2 Upcoming Conferences
- @current.each do |conference|
= render '/conferences/conference_details', conference: conference
-if @antiquated and @antiquated.any?
- if @antiquated and @antiquated.any?
.row
.col-md-12
%p.text-right
@ -18,6 +18,8 @@
#antiquated.collapse
- @antiquated.each do |conference|
= render '/conferences/conference_details', conference: conference
- if @antiquated.empty? && @current.empty? && User.empty?
= render partial: 'new_install'
-content_for :script_body do
:javascript

View file

@ -64,22 +64,21 @@
= render 'social_media', contact: @conference.contact
= render 'footer'
- cache [@conference.color, '#splash#inlinejs'] do
- 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("' + pattern.png() + '")');
});
});

View file

@ -9,7 +9,7 @@
= f.input :username, required: false, input_html: { autocomplete: 'off' }
= f.input :email, required: false, input_html: { autocomplete: 'off' }
= f.input :email_public,
hint: "Do you want to your email address publicly? (On sessions, registration lists, etc.)"
hint: "Do you want your email address to appear publicly? (e.g. on sessions, registration lists, etc.)"
= f.input :password, hint: "(Leave blank if you don't want to change it)", input_html: { autocomplete: 'off' }
= f.input :password_confirmation, input_html: { autocomplete: 'off' }
= f.inputs name: 'OpenID' do

View file

@ -120,7 +120,7 @@
%li
= link_to admin_conference_booths_path(@conference.short_title) do
%span.fa.fa-shopping-bag
Booths
= (t'booth').pluralize.capitalize
- if can? :update, @conference.email_settings
%li{class: active_nav_li(admin_conference_emails_path(@conference.short_title))}
= link_to(admin_conference_emails_path(@conference.short_title)) do

View file

@ -38,7 +38,7 @@
%li
= link_to (conference_booths_path(@conference.short_title)) do
%span.fa.fa-shopping-bag
My Booth Requests
My #{(t'booth').capitalize } Requests
%li
- if ENV['OSEM_ICHAIN_ENABLED'] == 'true'
= link_to(destroy_user_ichain_session_path, method: 'delete') do

View file

@ -50,4 +50,5 @@
Performance data is available on
#{link_to "Skylight", ENV["SKYLIGHT_PUBLIC_DASHBOARD_URL"]}.
= yield :script_body
= yield :charts_js
= piwik_tracking_tag

View file

@ -43,7 +43,7 @@
250
words.
- if @program.cfp.enable_registrations?
- if current_user.is_admin? or @program.cfp.enable_registrations?
= f.inputs 'Enable pre-registration' do
= f.input :require_registration, label: 'Require participants to register to your event'
- message = @event.room ? "Value must be between 1 and #{@event.room.size}" : 'Check room capacity after scheduling.'

View file

@ -27,27 +27,28 @@
.row
.col-md-3
%h3
- if @event.speakers.any?
Presented by:
- @speakers_ordered.each do |speaker|
.speakerinfo
.row
.col-md-4
= image_tag speaker.gravatar_url(: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
%i.fa.fa-envelope-o.fa-2x
- if speaker.affiliation?
.text-muted
from
= speaker.affiliation
-if speaker.biography?
.row.speakerbio
.col-md-12
= markdown(speaker.biography)
- @speakers_ordered.each do |speaker|
.speakerinfo
.row
.col-md-4
= image_tag speaker.gravatar_url(: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
%i.fa.fa-envelope-o.fa-2x
- if speaker.affiliation?
.text-muted
from
= speaker.affiliation
-if speaker.biography?
.row.speakerbio
.col-md-12
= markdown(speaker.biography)
.col-md-9
.row
.col-md-12
@ -83,7 +84,7 @@
= @event.room.name
.col-md-12
%dt Conference:
%dd= @event.program.conference.title
%dd= link_to @event.program.conference.title, conference_path(@conference)
.col-md-12
%dt Language:
%dd= @event.language if @event.language

View file

@ -15,7 +15,8 @@
%small
= event.subtitle
%h4
presented by #{event.speaker_names}
- if(event.speakers.any?)
presented by #{event.speaker_names}
%p
= markdown(truncate(event.abstract, length: 400))
= link_to 'more', conference_program_proposal_path(@conference.short_title, event.id) if event.abstract.length > 400

View file

@ -0,0 +1,19 @@
.container
.page-header
%h1
Get the schedule on your mobile with Giggity!
= link_to 'https://f-droid.org/packages/net.gaast.giggity' do
%img.img-responsive.center-block{ alt: 'Get it on F-Droid', src: 'https://fdroid.gitlab.io/artwork/badge/get-it-on.png' }
%p
The schedule URL:
%p.lead.text-center
= link_to conference_schedule_url(format: :xml) do
= conference_schedule_url(format: :xml)
%p
Or point your phone at the QR code:
.img-responsive.text-center
= raw @qr_code
%p.text-muted
Not free of surveilance capitalism yet? Use the
= link_to 'https://play.google.com/store/apps/details?id=net.gaast.giggity' do
google play store...

View file

@ -26,6 +26,9 @@
.visible-md-inline.visible-lg-inline
= render partial: 'carousel', locals: { date: date, hrs_per_slide: 3 }
%p.pull-right
= link_to app_conference_schedule_path do
Get the mobile app!
:javascript
// change of active tab and the button title when a date is clicked

View file

@ -16,7 +16,7 @@
%room{ name: room.name }
- events_in_rooms[room].each do |event|
%event{ guid: event.guid, id: event.id }
%date= time_with_timezone(event.time)
%date= event.time.in_time_zone(@conference.timezone).iso8601
%start= event.time.strftime('%H:%M')
%duration= length_timestamp(event.event_type.length)
%room= event.room.name

View file

@ -5,7 +5,7 @@
- else
%ul.nav.nav-tabs{ 'role'=>'tablist' }
- commercials.each.with_index(1) do |commercial, index|
%li{class: "#{active if (index == 1)}"}
%li{class: "#{'active' if (index == 1)}"}
%a{ 'href'=>"##{index}", 'role'=>'tab', 'data-toggle'=>'tab' }
= index
.tab-content

View file

@ -2,18 +2,26 @@
%td.col-sm-8.col-md-4
.media
.media-body
%h4.media-heading
= ticket.title
%h5.media-heading
- unless ticket.description.blank?
= markdown(ticket.description)
%td.col-sm-1.col-md-2.text-center
= ticket.registration_ticket? ? 'Yes' : 'No'
%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
= ticket.registration_ticket? ? 'Yes' : 'No'
%td.col-sm-1.col-md-1
- options = { type: 'number', min: 0, max: 99, class: "form-control quantity", 'data-id' => ticket.id }
- if ticket.registration_ticket?
- options[:max] = 1
- options[:disabled] = current_user.tickets.for_registration(ticket.conference).present?
:ruby
options = {
type: 'number',
min: 0,
max: 99,
class: 'form-control quantity',
'data-id' => ticket.id
}
if ticket.registration_ticket?
options[:max] = 1
options[:disabled] = current_user.tickets.for_registration(
ticket.conference
).present?
end
= text_field_tag("tickets[][#{ticket.id}]", 0, options)
%td.col-sm-1.col-md-1.text-center
= ticket.price.symbol

View file

@ -8,22 +8,23 @@
Please choose your tickets for
%strong
= @conference.title
here*
=form_tag(conference_ticket_purchases_path, method: :post) do |f|
= form_tag(conference_ticket_purchases_path, method: :post) do |f|
%table.table.table-hover
%thead
%tr
%th Ticket
%th Registration Ticket
- if @conference.tickets.for_registration.any?
%th Registration Ticket
%th Quantity
%th Price
%th Total
%tbody
- @conference.tickets.visible.each do |ticket|
= render partial: 'ticket', f: f, locals: {ticket: ticket}
= render 'ticket', f: f, ticket: ticket
%tr
%td
%td
- if @conference.tickets.for_registration.any?
%td
%td
%td.col-sm-1.col-md-1.text-center
%h4
@ -32,20 +33,20 @@
%h4
%strong
= @conference.tickets.first.price.symbol
%span{id: 'total_price'}
%span{ id: 'total_price' }
0
.pull-right
.btn-group-vertical
= button_tag(type: 'submit', class: 'btn btn-success btn-lg') do
Continue
%i.fa.fa-shopping-cart
- if current_user.ticket_purchases.by_conference(@conference).any?
= link_to 'Back to registration', conference_conference_registration_path(@conference.short_title), class: 'btn btn-default btn-sm'
- else
= link_to 'Cancel registration', conference_conference_registration_path(@conference.short_title), method: :delete, class: 'btn btn-danger btn-sm',
data: { confirm: 'Are you sure you want to unregister?' }
.row
.col-md-13
%p.text-muted.text-center
%small
* Getting a registration ticket is mandatory. Your participation will not be valid until you get a registration ticket.
= link_to 'Back to registration',
conference_conference_registration_path(@conference.short_title),
class: 'btn btn-default btn-sm'
- if @conference.tickets.for_registration.any?
.row
.col-md-13
%p.text-muted.text-center
%small
Getting a registration ticket is mandatory. Your participation
will not be valid until you get a registration ticket.