Merge master
This commit is contained in:
commit
e2f5b5e933
24 changed files with 272 additions and 234 deletions
|
|
@ -248,6 +248,11 @@ linters:
|
||||||
- "app/views/users/edit.html.haml"
|
- "app/views/users/edit.html.haml"
|
||||||
- "app/views/users/show.html.haml"
|
- "app/views/users/show.html.haml"
|
||||||
|
|
||||||
|
ConsecutiveComments:
|
||||||
|
exclude:
|
||||||
|
# This one seems like a bug in haml-lint.
|
||||||
|
- "app/views/admin/conferences/show.html.haml"
|
||||||
|
|
||||||
# Offense count: 24
|
# Offense count: 24
|
||||||
ConsecutiveSilentScripts:
|
ConsecutiveSilentScripts:
|
||||||
exclude:
|
exclude:
|
||||||
|
|
@ -605,11 +610,6 @@ linters:
|
||||||
- "app/views/admin/registrations/index.csv.haml"
|
- "app/views/admin/registrations/index.csv.haml"
|
||||||
- "app/views/layouts/_admin.html.haml"
|
- "app/views/layouts/_admin.html.haml"
|
||||||
|
|
||||||
# Offense count: 1
|
|
||||||
ImplicitDiv:
|
|
||||||
exclude:
|
|
||||||
- "app/views/admin/registrations/index.html.haml"
|
|
||||||
|
|
||||||
# Offense count: 9
|
# Offense count: 9
|
||||||
MultilinePipe:
|
MultilinePipe:
|
||||||
exclude:
|
exclude:
|
||||||
|
|
@ -637,7 +637,6 @@ linters:
|
||||||
- "app/views/devise/passwords/new.html.haml"
|
- "app/views/devise/passwords/new.html.haml"
|
||||||
- "app/views/payments/new.html.haml"
|
- "app/views/payments/new.html.haml"
|
||||||
|
|
||||||
|
|
||||||
# Offense count: 13
|
# Offense count: 13
|
||||||
ViewLength:
|
ViewLength:
|
||||||
exclude:
|
exclude:
|
||||||
|
|
|
||||||
24
Gemfile.lock
24
Gemfile.lock
|
|
@ -36,9 +36,9 @@ GEM
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||||
active_model_serializers (0.10.10)
|
active_model_serializers (0.10.12)
|
||||||
actionpack (>= 4.1, < 6.1)
|
actionpack (>= 4.1, < 6.2)
|
||||||
activemodel (>= 4.1, < 6.1)
|
activemodel (>= 4.1, < 6.2)
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
activejob (5.2.4.5)
|
activejob (5.2.4.5)
|
||||||
|
|
@ -79,7 +79,7 @@ GEM
|
||||||
ast (2.4.0)
|
ast (2.4.0)
|
||||||
autoprefixer-rails (9.6.4)
|
autoprefixer-rails (9.6.4)
|
||||||
execjs
|
execjs
|
||||||
awesome_nested_set (3.2.1)
|
awesome_nested_set (3.4.0)
|
||||||
activerecord (>= 4.0.0, < 7.0)
|
activerecord (>= 4.0.0, < 7.0)
|
||||||
aws_cf_signer (0.1.3)
|
aws_cf_signer (0.1.3)
|
||||||
axlsx_rails (0.5.2)
|
axlsx_rails (0.5.2)
|
||||||
|
|
@ -94,7 +94,7 @@ GEM
|
||||||
bootstrap3-datetimepicker-rails (4.17.47)
|
bootstrap3-datetimepicker-rails (4.17.47)
|
||||||
momentjs-rails (>= 2.8.1)
|
momentjs-rails (>= 2.8.1)
|
||||||
builder (3.2.4)
|
builder (3.2.4)
|
||||||
byebug (11.0.1)
|
byebug (11.1.3)
|
||||||
cancancan (2.3.0)
|
cancancan (2.3.0)
|
||||||
capybara (3.26.0)
|
capybara (3.26.0)
|
||||||
addressable
|
addressable
|
||||||
|
|
@ -127,8 +127,6 @@ GEM
|
||||||
aws_cf_signer
|
aws_cf_signer
|
||||||
rest-client
|
rest-client
|
||||||
cocoon (1.2.15)
|
cocoon (1.2.15)
|
||||||
codecov (0.5.0)
|
|
||||||
simplecov (>= 0.15, < 0.22)
|
|
||||||
coderay (1.1.1)
|
coderay (1.1.1)
|
||||||
concurrent-ruby (1.1.8)
|
concurrent-ruby (1.1.8)
|
||||||
countable-rails (0.0.1)
|
countable-rails (0.0.1)
|
||||||
|
|
@ -147,10 +145,10 @@ GEM
|
||||||
dalli (2.7.11)
|
dalli (2.7.11)
|
||||||
dante (0.2.0)
|
dante (0.2.0)
|
||||||
database_cleaner (1.7.0)
|
database_cleaner (1.7.0)
|
||||||
delayed_job (4.1.8)
|
delayed_job (4.1.9)
|
||||||
activesupport (>= 3.0, < 6.1)
|
activesupport (>= 3.0, < 6.2)
|
||||||
delayed_job_active_record (4.1.4)
|
delayed_job_active_record (4.1.5)
|
||||||
activerecord (>= 3.0, < 6.1)
|
activerecord (>= 3.0, < 6.2)
|
||||||
delayed_job (>= 3.0, < 5)
|
delayed_job (>= 3.0, < 5)
|
||||||
devise (4.7.3)
|
devise (4.7.3)
|
||||||
bcrypt (~> 3.0)
|
bcrypt (~> 3.0)
|
||||||
|
|
@ -254,7 +252,7 @@ GEM
|
||||||
i18n (1.8.9)
|
i18n (1.8.9)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
i18n_data (0.8.0)
|
i18n_data (0.8.0)
|
||||||
icalendar (2.7.0)
|
icalendar (2.7.1)
|
||||||
ice_cube (~> 0.16)
|
ice_cube (~> 0.16)
|
||||||
ice_cube (0.16.3)
|
ice_cube (0.16.3)
|
||||||
image_processing (1.12.1)
|
image_processing (1.12.1)
|
||||||
|
|
@ -380,7 +378,7 @@ GEM
|
||||||
hashery (~> 2.0)
|
hashery (~> 2.0)
|
||||||
ruby-rc4
|
ruby-rc4
|
||||||
ttfunk
|
ttfunk
|
||||||
pg (1.1.4)
|
pg (1.2.3)
|
||||||
piwik_analytics (1.0.2)
|
piwik_analytics (1.0.2)
|
||||||
actionpack
|
actionpack
|
||||||
activesupport
|
activesupport
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 15 KiB |
BIN
app/assets/images/snapshot-2020.png
Normal file
BIN
app/assets/images/snapshot-2020.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
|
|
@ -49,6 +49,8 @@ $(function () {
|
||||||
$('.' + id).collapse('hide');
|
$('.' + id).collapse('hide');
|
||||||
|
|
||||||
$('#' + $(this).val() + '-help.' + id).collapse('show');
|
$('#' + $(this).val() + '-help.' + id).collapse('show');
|
||||||
|
$('#' + $(this).val() + '-instructions.' + id).collapse('show');
|
||||||
|
|
||||||
});
|
});
|
||||||
$('.dropdown-toggle').dropdown();
|
$('.dropdown-toggle').dropdown();
|
||||||
|
|
||||||
|
|
@ -165,7 +167,7 @@ $( document ).ready(function() {
|
||||||
var min = $selected.data("min-words");
|
var min = $selected.data("min-words");
|
||||||
|
|
||||||
// Set the filler text for the submission text
|
// Set the filler text for the submission text
|
||||||
fill_if_empty('event_submission_text', $selected.data("help"));
|
fill_if_empty('event_submission_text', $selected.data("instructions"));
|
||||||
|
|
||||||
$("#abstract-maximum-word-count").text(max);
|
$("#abstract-maximum-word-count").text(max);
|
||||||
$("#submission-maximum-word-count").text(max);
|
$("#submission-maximum-word-count").text(max);
|
||||||
|
|
@ -173,8 +175,7 @@ $( document ).ready(function() {
|
||||||
$("#submission-minimum-word-count").text(min);
|
$("#submission-minimum-word-count").text(min);
|
||||||
word_count($('#event_abstract').get(0), 'abstract-count', max);
|
word_count($('#event_abstract').get(0), 'abstract-count', max);
|
||||||
word_count($('#event_submission_text').get(0), 'submission-count', max);
|
word_count($('#event_submission_text').get(0), 'submission-count', max);
|
||||||
})
|
}).trigger('change');
|
||||||
.trigger('change');
|
|
||||||
|
|
||||||
/* Count the proposal abstract length */
|
/* Count the proposal abstract length */
|
||||||
$("#event_abstract").bind('change keyup paste input', function() {
|
$("#event_abstract").bind('change keyup paste input', function() {
|
||||||
|
|
@ -191,13 +192,13 @@ $( document ).ready(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Listen for reset template button, wait for confirm, and reset. */
|
/* Listen for reset template button, wait for confirm, and reset. */
|
||||||
$('#sub_text_reset').click((e) => {
|
$('.js-resetSubmissionText').click((e) => {
|
||||||
let $selected = $("#event_event_type_id option:selected");
|
let $selected = $("#event_event_type_id option:selected");
|
||||||
let $this = $(e.target);
|
let $this = $(e.target);
|
||||||
let affirm = confirm($this.data('confirm'));
|
let affirm = confirm($this.data('confirm'));
|
||||||
if (affirm) {
|
if (affirm) {
|
||||||
let sub_text = $('#event_submission_text');
|
let sub_text = $('#event_submission_text');
|
||||||
sub_text.val($selected.data('help'));
|
sub_text.val($selected.data('instructions'));
|
||||||
sub_text.trigger('change');
|
sub_text.trigger('change');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,34 @@
|
||||||
@import "breakpoints.scss";
|
@import "breakpoints.scss";
|
||||||
|
|
||||||
.dashbox span.fa {
|
.dashbox span.fa {
|
||||||
line-height: 1.1em;
|
margin-bottom: 2px;
|
||||||
|
|
||||||
|
@include breakpoint(xs) {
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
@include breakpoint(sm) {
|
@include breakpoint(sm) {
|
||||||
font-size: 3em;
|
font-size: 2em;
|
||||||
}
|
}
|
||||||
@include breakpoint(md) {
|
@include breakpoint(md) {
|
||||||
font-size: 4em;
|
font-size: 3.5em;
|
||||||
}
|
}
|
||||||
@include breakpoint(lg) {
|
@include breakpoint(lg) {
|
||||||
font-size: 5em;
|
font-size: 5em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dashbox {
|
.dashbox.panel {
|
||||||
padding-top: 20px;
|
padding: 10px;
|
||||||
padding-bottom: 20px;
|
display: -webkit-flex;
|
||||||
}
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
line-height: 1.6rem;
|
||||||
|
|
||||||
.dashbox label {
|
label {
|
||||||
display: block;
|
line-height: 2rem;
|
||||||
font-size: 1.1em;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.todolist-missing span {
|
.todolist-missing span {
|
||||||
|
|
|
||||||
|
|
@ -124,8 +124,7 @@ module Admin
|
||||||
# current_user.last_sign_in_at
|
# current_user.last_sign_in_at
|
||||||
# ).count
|
# ).count
|
||||||
|
|
||||||
# Step by step list
|
@conference_todo_list = @conference.get_status
|
||||||
# @conference_progress = @conference.get_status
|
|
||||||
|
|
||||||
# Line charts
|
# Line charts
|
||||||
@registrations = @conference.get_registrations_per_week
|
@registrations = @conference.get_registrations_per_week
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,20 @@ module EventsHelper
|
||||||
"#{event.average_rating}/#{max_rating}, #{pluralize(event.voters.length, 'vote')}"
|
"#{event.average_rating}/#{max_rating}, #{pluralize(event.voters.length, 'vote')}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def event_type_options(event_types)
|
||||||
|
event_types.map do |type|
|
||||||
|
[
|
||||||
|
"#{type.title} - #{show_time(type.length)}",
|
||||||
|
type.id,
|
||||||
|
data: {
|
||||||
|
min_words: type.minimum_abstract_length,
|
||||||
|
max_words: type.maximum_abstract_length,
|
||||||
|
instructions: type.submission_instructions
|
||||||
|
}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def event_type_dropdown(event, event_types, conference_id)
|
def event_type_dropdown(event, event_types, conference_id)
|
||||||
selection = event.event_type.try(:title) || 'Event Type'
|
selection = event.event_type.try(:title) || 'Event Type'
|
||||||
options = event_types.collect do |event_type|
|
options = event_types.collect do |event_type|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@ YTLF_TICKET_ID = 50
|
||||||
class Mailbot < ActionMailer::Base
|
class Mailbot < ActionMailer::Base
|
||||||
helper ConferenceHelper
|
helper ConferenceHelper
|
||||||
|
|
||||||
default bcc: -> { SNAPCON_BCC_ADDRESS },
|
default bcc: SNAPCON_BCC_ADDRESS,
|
||||||
template_name: -> { EMAIL_TEMPLATE },
|
template_name: EMAIL_TEMPLATE,
|
||||||
|
content_type: 'text/html',
|
||||||
to: -> { @user.email },
|
to: -> { @user.email },
|
||||||
from: -> { @conference.contact.email }
|
from: -> { @conference.contact.email }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -273,7 +273,7 @@ class Event < ApplicationRecord
|
||||||
biographies: speakers.all? { |speaker| !speaker.biography.blank? },
|
biographies: speakers.all? { |speaker| !speaker.biography.blank? },
|
||||||
subtitle: !subtitle.blank?,
|
subtitle: !subtitle.blank?,
|
||||||
track: (!track.blank? unless program.tracks.empty?),
|
track: (!track.blank? unless program.tracks.empty?),
|
||||||
difficulty_level: !difficulty_level.blank?,
|
difficulty_level: (difficulty_level.present? unless program.difficulty_levels.empty?),
|
||||||
title: true,
|
title: true,
|
||||||
abstract: true
|
abstract: true
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
.list-group
|
%ul.list-group
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)}" }
|
.list-group-item
|
||||||
%h4
|
%h4
|
||||||
Conference progress
|
Conference progress
|
||||||
.progress
|
.progress
|
||||||
.progress-bar{ 'role' => 'progressbar', 'aria-valuenow' => "#{conference_progress['process']}", 'aria-valuemin' => '0',
|
.progress-bar{ role: 'progressbar', 'aria-valuenow': conference_progress['process'],
|
||||||
'aria-valuemax' => '100', 'style' => "width: #{conference_progress['process']}%;" }
|
'aria-valuemin': 0, 'aria-valuemax': 100,
|
||||||
|
style: "width: #{conference_progress['process']}%;" }
|
||||||
= conference_progress['process'] + '%'
|
= conference_progress['process'] + '%'
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['registration'])}" }
|
%li.list-group-item{ class: class_for_todo(conference_progress['registration']) }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['registration']) }
|
%span{ class: icon_for_todo(conference_progress['registration']) }
|
||||||
- if can? :update, @conference
|
- if can? :update, @conference
|
||||||
- if conference.registration_period
|
- if conference.registration_period
|
||||||
= link_to 'Set up registration period', edit_admin_conference_registration_period_path(conference_progress['short_title'])
|
= link_to 'Set up registration period', edit_admin_conference_registration_period_path(conference_progress['short_title'])
|
||||||
|
|
@ -15,14 +16,14 @@
|
||||||
= link_to 'Set up registration period', new_admin_conference_registration_period_path(conference_progress['short_title'])
|
= link_to 'Set up registration period', new_admin_conference_registration_period_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
Set up registration period
|
Set up registration period
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['cfp'])}" }
|
%li.list-group-item{ class: class_for_todo(conference_progress['cfp']) }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['cfp']) }
|
%span{ class: icon_for_todo(conference_progress['cfp']) }
|
||||||
- if can? :update, Cfp.new(program_id: @program.id)
|
- if can? :update, Cfp.new(program_id: @program.id)
|
||||||
= link_to 'Set up call for papers', admin_conference_program_cfps_path(conference_progress['short_title'])
|
= link_to 'Set up call for papers', admin_conference_program_cfps_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
Set up call for papers
|
Set up call for papers
|
||||||
%li{'class'=>"list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['venue'])}"}
|
%li.list-group-item{ class: class_for_todo(conference_progress['venue']) }
|
||||||
%span{'class'=>icon_for_todo(conference_progress['venue'])}
|
%span{ class: icon_for_todo(conference_progress['venue'])}
|
||||||
- if can? :update, Venue.new(conference: @conference)
|
- if can? :update, Venue.new(conference: @conference)
|
||||||
- @conference.reload
|
- @conference.reload
|
||||||
- if conference.venue
|
- if conference.venue
|
||||||
|
|
@ -32,32 +33,32 @@
|
||||||
- else
|
- else
|
||||||
- @conference.reload
|
- @conference.reload
|
||||||
Add venue
|
Add venue
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['rooms'])}" }
|
%li.list-group-item{ class: class_for_todo(conference_progress['rooms']) }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['rooms']) }
|
%span{ class: icon_for_todo(conference_progress['rooms']) }
|
||||||
- if @conference.venue && (can? :update, @conference.venue.rooms.build)
|
- if @conference.venue && (can? :update, @conference.venue.rooms.build)
|
||||||
= link_to 'Add rooms', admin_conference_venue_rooms_path(conference_progress['short_title'])
|
= link_to 'Add rooms', admin_conference_venue_rooms_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
Add rooms
|
Add rooms
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['tracks'])}" }
|
%li.list-group-item{ class: class_for_todo(conference_progress['tracks']) }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['tracks']) }
|
%span{ class: icon_for_todo(conference_progress['tracks']) }
|
||||||
- if can? :update, @conference.program.tracks.build
|
- if can? :update, @conference.program.tracks.build
|
||||||
= link_to 'Add tracks', admin_conference_program_tracks_path(conference_progress['short_title'])
|
= link_to 'Add tracks', admin_conference_program_tracks_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
Add tracks
|
Add tracks
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['event_types'])}" }
|
%li{ class: "list-group-item #{class_for_todo(conference_progress['event_types'])}" }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['event_types']) }
|
%span{ class: icon_for_todo(conference_progress['event_types']) }
|
||||||
- if can? :update, @conference.program.event_types.build
|
- if can? :update, @conference.program.event_types.build
|
||||||
= link_to 'Add event types', admin_conference_program_event_types_path(conference_progress['short_title'])
|
= link_to 'Add event types', admin_conference_program_event_types_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
Add event types
|
Add event types
|
||||||
%li{ 'class' => "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['difficulty_levels'])}" }
|
%li{ class: "list-group-item #{class_for_todo(conference_progress['difficulty_levels'])}" }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['difficulty_levels']) }
|
%span{ class: icon_for_todo(conference_progress['difficulty_levels']) }
|
||||||
- if can? :update, @conference.program.difficulty_levels.build
|
- if can? :update, @conference.program.difficulty_levels.build
|
||||||
= link_to 'Add difficulty levels', admin_conference_program_difficulty_levels_path(conference_progress['short_title'])
|
= link_to 'Add difficulty levels', admin_conference_program_difficulty_levels_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
Add difficulty levels
|
Add difficulty levels
|
||||||
%li{ class: "list-group-item #{hidden_if_conference_over(conference)} #{class_for_todo(conference_progress['splashpage'])}" }
|
%li.list-group-item{ class: "#{class_for_todo(conference_progress['splashpage'])}" }
|
||||||
%span{ 'class' => icon_for_todo(conference_progress['splashpage']) }
|
%span{ class: icon_for_todo(conference_progress['splashpage']) }
|
||||||
- if can? :update, @conference
|
- if can? :update, @conference
|
||||||
= link_to 'Set up a Splashpage', admin_conference_splashpage_path(conference_progress['short_title'])
|
= link_to 'Set up a Splashpage', admin_conference_splashpage_path(conference_progress['short_title'])
|
||||||
- else
|
- else
|
||||||
|
|
|
||||||
|
|
@ -9,24 +9,27 @@
|
||||||
= semantic_form_for(@conference, url: admin_conference_path(@conference.short_title), html: {multipart: true}) do |f|
|
= semantic_form_for(@conference, url: admin_conference_path(@conference.short_title), html: {multipart: true}) do |f|
|
||||||
= f.input :title, hint: "The full title of the conference, e.g. 'openSUSE Conference 2014'"
|
= f.input :title, hint: "The full title of the conference, e.g. 'openSUSE Conference 2014'"
|
||||||
= f.input :short_title, hint: "A short title, e.g. 'oSC14', to be used in URLs"
|
= f.input :short_title, hint: "A short title, e.g. 'oSC14', to be used in URLs"
|
||||||
= f.input :description, hint: markdown_hint('A description of the conference.'), input_html: { rows: 5, data: { provide: 'markdown' } }
|
= f.input :description,
|
||||||
= f.input :color, hint: 'The color will be used eg for the dashboard.', input_html: {size: 6, type: 'color'}
|
hint: markdown_hint('A description of the conference. (Supports unsafe HTML.)'),
|
||||||
= f.label 'Conference Logo'
|
input_html: { rows: 5, data: { provide: 'markdown' } }
|
||||||
|
= f.input :color, hint: 'The will be used in emails.',
|
||||||
|
input_html: {size: 6, type: 'color'}
|
||||||
|
= f.label 'Conference Logo', for: 'conference_picture'
|
||||||
%br
|
%br
|
||||||
- if @conference.picture?
|
- if @conference.picture?
|
||||||
= image_tag @conference.picture.thumb.url
|
= image_tag @conference.picture.thumb.url
|
||||||
= f.input :picture, label: false, hint: 'This will be displayed on the front page.'
|
= f.input :picture, label: false, hint: 'This will be shown in the navigation bar and emails.'
|
||||||
= f.hidden_field :picture_cache
|
= f.hidden_field :picture_cache
|
||||||
|
|
||||||
= f.input :custom_css,
|
= f.input :custom_css,
|
||||||
hint: "Add Custon CSS to the main page. You might find the class '.conference-#{@conference.short_title}' useful.",
|
hint: "Add custon CSS to all pages within the conference. The class <code>.conference-#{@conference.short_title}</code> is included on the body element.".html_safe,
|
||||||
input_html: { rows: 5 }
|
input_html: { rows: 10, style: 'font-family: monospace' }
|
||||||
|
|
||||||
= f.input :ticket_layout, as: :select, collection: Conference.ticket_layouts.keys, hint: "Layout type for tickets of the conference."
|
= f.input :ticket_layout, as: :select, collection: Conference.ticket_layouts.keys, hint: "Layout type for tickets of the conference."
|
||||||
= f.inputs name: 'Scheduling' do
|
= f.inputs name: 'Scheduling' do
|
||||||
= f.input :timezone, as: :time_zone, hint: 'The conference time zone'
|
= f.input :timezone, as: :time_zone, hint: 'The conference time zone'
|
||||||
= f.input :start_date, as: :string, input_html: { id: 'conference-start-datepicker', readonly: 'readonly' }
|
= f.input :start_date, as: :string, input_html: { id: 'conference-start-datepicker' }
|
||||||
= f.input :end_date, as: :string, input_html: { id: 'conference-end-datepicker', readonly: 'readonly' }
|
= f.input :end_date, as: :string, input_html: { id: 'conference-end-datepicker' }
|
||||||
= f.input :start_hour, input_html: {size: 2, type: 'number', min: 0, max: 23}, hint: rescheduling_hint(@affected_event_count)
|
= f.input :start_hour, input_html: {size: 2, type: 'number', min: 0, max: 23}, hint: rescheduling_hint(@affected_event_count)
|
||||||
= f.input :end_hour, input_html: {size: 2, type: 'number', min: 1, max: 24}, hint: rescheduling_hint(@affected_event_count)
|
= f.input :end_hour, input_html: {size: 2, type: 'number', min: 1, max: 24}, hint: rescheduling_hint(@affected_event_count)
|
||||||
= f.inputs name: 'Registrations' do
|
= f.inputs name: 'Registrations' do
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,16 @@
|
||||||
Dashboard for #{@conference.title}
|
Dashboard for #{@conference.title}
|
||||||
%hr
|
%hr
|
||||||
.row
|
.row
|
||||||
.col-sm-3.col-xs-3
|
.col-sm-3.col-xs-6
|
||||||
= render "big_statistic",
|
= render "big_statistic",
|
||||||
icon: "user", subtitle: "Registration", value: @total_reg, delta: @new_reg
|
icon: "user", subtitle: "Registration", value: @total_reg, delta: @new_reg
|
||||||
.col-sm-3.col-xs-3
|
.col-sm-3.col-xs-6
|
||||||
= render "big_statistic",
|
= render "big_statistic",
|
||||||
icon: "check-square", subtitle: "Submission", value: @total_submissions, delta: @new_submissions
|
icon: "check-square", subtitle: "Submission", value: @total_submissions, delta: @new_submissions
|
||||||
.col-sm-3.col-xs-3
|
.col-sm-3.col-xs-6
|
||||||
= render "big_statistic",
|
= render "big_statistic",
|
||||||
icon: "file-text", subtitle: "Hour", value: @program_length, delta: @new_program_length
|
icon: "file-text", subtitle: "Hour", value: @program_length, delta: @new_program_length
|
||||||
.col-sm-3.col-xs-3
|
.col-sm-3.col-xs-6
|
||||||
= render "big_statistic",
|
= render "big_statistic",
|
||||||
icon: "archive", subtitle: "Withdrawn", value: @total_withdrawn, delta: @new_withdrawn
|
icon: "archive", subtitle: "Withdrawn", value: @total_withdrawn, delta: @new_withdrawn
|
||||||
|
|
||||||
|
|
@ -29,9 +29,20 @@
|
||||||
= render 'line_chart',
|
= render 'line_chart',
|
||||||
title: 'Submissions per week', data: @submissions
|
title: 'Submissions per week', data: @submissions
|
||||||
.col-md-4
|
.col-md-4
|
||||||
-#
|
- unless @conference.ended?
|
||||||
= render 'todo_list',
|
= render 'todo_list',
|
||||||
conference_progress: @conference_progress, conference: @conference
|
conference_progress: @conference_todo_list, conference: @conference
|
||||||
|
- else
|
||||||
|
.list-group
|
||||||
|
.list-group-item
|
||||||
|
%h4
|
||||||
|
Conference Progress
|
||||||
|
.progress
|
||||||
|
.progress-bar{ role: 'progressbar', 'aria-valuenow': 100,
|
||||||
|
'aria-valuemin': 0, 'aria-valuemax': 100,
|
||||||
|
style: 'width: 100%;' }
|
||||||
|
Conference Complete!
|
||||||
|
|
||||||
.row#tickets
|
.row#tickets
|
||||||
.col-md-8
|
.col-md-8
|
||||||
= render 'line_chart',
|
= render 'line_chart',
|
||||||
|
|
@ -44,6 +55,7 @@
|
||||||
%a{ href: '#distribution_all', 'data-toggle' => 'tab' }
|
%a{ href: '#distribution_all', 'data-toggle' => 'tab' }
|
||||||
%span.fa.fa-star
|
%span.fa.fa-star
|
||||||
All
|
All
|
||||||
|
-# TODO-SNAP: Disabled for Snap!Con
|
||||||
%li
|
%li
|
||||||
%a{ href: '#distribution_confirmed', 'data-toggle' => 'tab' }
|
%a{ href: '#distribution_confirmed', 'data-toggle' => 'tab' }
|
||||||
%span.fa.fa-comment
|
%span.fa.fa-comment
|
||||||
|
|
@ -59,38 +71,33 @@
|
||||||
= render 'donut_chart', title: 'Event types',
|
= render 'donut_chart', title: 'Event types',
|
||||||
combined_data: @event_type_distribution
|
combined_data: @event_type_distribution
|
||||||
.col-md-4
|
.col-md-4
|
||||||
-#
|
|
||||||
= render 'donut_chart', title: 'Difficulty levels',
|
= render 'donut_chart', title: 'Difficulty levels',
|
||||||
combined_data: @difficulty_levels_distribution
|
combined_data: @difficulty_levels_distribution
|
||||||
.col-md-4
|
.col-md-4
|
||||||
-#
|
|
||||||
= render 'donut_chart', title: 'Tracks',
|
= render 'donut_chart', title: 'Tracks',
|
||||||
combined_data: @tracks_distribution
|
combined_data: @tracks_distribution
|
||||||
.tab-pane#distribution_confirmed
|
-# .tab-pane#distribution_withdrawn
|
||||||
.row
|
|
||||||
.col-md-4
|
|
||||||
-#
|
|
||||||
= 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
|
|
||||||
.col-md-4
|
|
||||||
-#
|
|
||||||
= render 'donut_chart', title: 'Tracks',
|
|
||||||
combined_data: @tracks_distribution_confirmed
|
|
||||||
.tab-pane#distribution_withdrawn
|
|
||||||
.row
|
.row
|
||||||
.col-md-4
|
.col-md-4
|
||||||
= render 'donut_chart', title: 'Event types',
|
= render 'donut_chart', title: 'Event types',
|
||||||
combined_data: @event_type_distribution_withdrawn
|
combined_data: @event_type_distribution_withdrawn
|
||||||
.col-md-4
|
.col-md-4
|
||||||
= render 'donut_chart', title: 'Difficulty levels',
|
= render 'donut_chart', title: 'Difficulty levels',
|
||||||
combined_data: @difficulty_levels_distribution_withdrawn
|
combined_data: @difficulty_levels_distribution
|
||||||
.col-md-4
|
.col-md-4
|
||||||
= render 'donut_chart', title: 'Tracks',
|
= render 'donut_chart', title: 'Tracks',
|
||||||
combined_data: @tracks_distribution_withdrawn
|
combined_data: @tracks_distribution
|
||||||
|
-# .tab-pane#distribution_confirmed
|
||||||
|
.row
|
||||||
|
.col-md-4
|
||||||
|
= 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
|
||||||
|
.col-md-4
|
||||||
|
= render 'donut_chart', title: 'Tracks',
|
||||||
|
combined_data: @tracks_distribution_confirmed
|
||||||
|
|
||||||
.row
|
.row
|
||||||
.col-md-8
|
.col-md-8
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
combined_data: @registration_distribution
|
combined_data: @registration_distribution
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%div.margin-event-table
|
.margin-event-table
|
||||||
%table.datatable#registrations{ data: { source: admin_conference_registrations_path(conference_id: @conference, format: :json) } }
|
%table.datatable#registrations{ data: { source: admin_conference_registrations_path(conference_id: @conference, format: :json) } }
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
- reverse ||= false
|
- reverse ||= false
|
||||||
- variant = variant_from_delta(delta, reverse: reverse)
|
- variant = variant_from_delta(delta, reverse: reverse)
|
||||||
.dashbox.text-center
|
.dashbox.panel.panel-primary
|
||||||
|
.paenl-body.text-center
|
||||||
%span.fa
|
%span.fa
|
||||||
= fa_icon(icon)
|
= fa_icon(icon)
|
||||||
= value
|
= value
|
||||||
%p.text-nowrap
|
%p
|
||||||
%small
|
|
||||||
= subtitle.pluralize(value)
|
= subtitle.pluralize(value)
|
||||||
%span.label{ class: "label-#{variant}" }
|
.label{ class: "label-#{variant}" }
|
||||||
= delta
|
= delta || 0
|
||||||
since you last logged in
|
since last log in
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
= f.input :password
|
= f.input :password
|
||||||
- if devise_mapping.rememberable?
|
- if devise_mapping.rememberable?
|
||||||
%p.text-right.small
|
%p.text-right.small
|
||||||
= f.label 'Remember me'
|
= f.label 'Remember me', for: 'user_remember_me'
|
||||||
= f.check_box :remember_me
|
= f.check_box :remember_me
|
||||||
%p.text-right
|
%p.text-right
|
||||||
= f.action :submit, as: :button, label: 'Sign In', button_html: {class: 'btn btn-success'}
|
= f.action :submit, as: :button, label: 'Sign In', button_html: {class: 'btn btn-success'}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
%b.notranslate= pluralize(@program.cfp.remaining_days, 'day')
|
%b.notranslate= pluralize(@program.cfp.remaining_days, 'day')
|
||||||
left!
|
left!
|
||||||
%span.notranslate= @conference.title
|
%span.notranslate= @conference.title
|
||||||
will only be as good as the content you present. Submit early, submit often!
|
will only be as good as the content you present.
|
||||||
|
%br Submit early, submit often!
|
||||||
- else
|
- else
|
||||||
The submission period is closed now.
|
The submission period is closed now.
|
||||||
|
|
|
||||||
|
|
@ -11,85 +11,43 @@
|
||||||
|
|
||||||
= track_selector_input f
|
= track_selector_input f
|
||||||
|
|
||||||
= f.input :event_type_id, as: :select,
|
|
||||||
collection: @conference.program.event_types.map {|type| ["#{type.title} - #{show_time(type.length)}", type.id,
|
|
||||||
data: { min_words: type.minimum_abstract_length, max_words: type.maximum_abstract_length, help: type.description }]},
|
|
||||||
include_blank: false, label: 'Type', input_html: { class: 'select-help-toggle' }
|
|
||||||
|
|
||||||
- if @program.languages.present?
|
- if @program.languages.present?
|
||||||
= f.input :language, as: :select,
|
= f.input :language, as: :select,
|
||||||
collection: @languages,
|
collection: @languages,
|
||||||
include_blank: false, label: 'Language', input_html: { class: 'select-help-toggle' }
|
include_blank: false, label: 'Language', input_html: { class: 'select-help-toggle' }
|
||||||
|
|
||||||
- @conference.program.event_types.each do |event_type|
|
- if @program.difficulty_levels.present?
|
||||||
%span{ class: 'help-block select-help-text event_event_type_id collapse', id: "#{event_type.id}-help" }
|
= f.input :difficulty_level, as: :select, collection: @program.difficulty_levels,
|
||||||
= event_type.description
|
input_html: { class: 'select-help-toggle' },
|
||||||
|
|
||||||
= f.input :difficulty_level, as: :select, collection: @conference.program.difficulty_levels, input_html: { class: 'select-help-toggle' },
|
|
||||||
include_blank: '(Please select)' if @conference.program.difficulty_levels.any?
|
include_blank: '(Please select)' if @conference.program.difficulty_levels.any?
|
||||||
|
|
||||||
- @conference.program.difficulty_levels.each do |difficulty_level|
|
- @program.difficulty_levels.each do |difficulty_level|
|
||||||
%span{ class: 'help-block select-help-text collapse event_difficulty_level_id', id: "#{difficulty_level.id}-help" }
|
%span{ class: 'help-block select-help-text collapse event_difficulty_level_id', id: "#{difficulty_level.id}-help" }
|
||||||
= difficulty_level.description
|
= difficulty_level.description
|
||||||
|
|
||||||
= f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown' } },
|
= render 'proposals/submission_type_content_form', f: f, program: @program
|
||||||
hint: markdown_hint('[Tips to improve your presentations.](http://blog.hubspot.com/blog/tabid/6307/bid/5975/10-Rules-to-Instantly-Improve-Your-Presentations.aspx)')
|
|
||||||
|
|
||||||
%p
|
- if @program.cfp&.enable_registrations?
|
||||||
You have used
|
|
||||||
%span#abstract-count #{@event.abstract_word_count}
|
|
||||||
words. Abstracts must be between
|
|
||||||
%span#abstract-minimum-word-count
|
|
||||||
0
|
|
||||||
and
|
|
||||||
%span#abstract-maximum-word-count
|
|
||||||
250
|
|
||||||
words.
|
|
||||||
|
|
||||||
%br
|
|
||||||
- @conference.program.event_types.each do |event_type|
|
|
||||||
%span{ class: 'help-block select-help-text event_event_type_id collapse', id: "#{event_type.id}-help" }
|
|
||||||
%h3
|
|
||||||
= event_type.name
|
|
||||||
Instructions
|
|
||||||
= markdown(event_type.submission_instructions)
|
|
||||||
|
|
||||||
= f.input :submission_text, input_html: { rows: 5, data: { provide: 'markdown' }, placeholder: '' },
|
|
||||||
hint: markdown_hint('Only conference organizers will read this.')
|
|
||||||
%button.btn.btn-primary.primary-button{ type: 'button', id: 'sub_text_reset', data: { confirm: 'Do you really want to reset your submission text to the provided template?' } } Reset to Template
|
|
||||||
|
|
||||||
%p
|
|
||||||
You have used
|
|
||||||
%span#submission-count #{@event.submission_word_count}
|
|
||||||
words. Submission descriptions must be between
|
|
||||||
%span#submission-minimum-word-count
|
|
||||||
0
|
|
||||||
and
|
|
||||||
%span#submission-maximum-word-count
|
|
||||||
250
|
|
||||||
words.
|
|
||||||
|
|
||||||
- if current_user.is_admin? or @program.cfp&.enable_registrations?
|
|
||||||
= f.inputs 'Enable pre-registration' do
|
= f.inputs 'Enable pre-registration' do
|
||||||
= f.input :require_registration, label: 'Require participants to register to your event'
|
= 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.'
|
- message = @event.room ? "Value must be between 1 and #{@event.room.size}" : 'Check room capacity after scheduling.'
|
||||||
= f.input :max_attendees, hint: 'The maximum number of participants. ' + message
|
= f.input :max_attendees, hint: 'The maximum number of participants. ' + message
|
||||||
|
|
||||||
- if current_user.has_any_role? :admin, { name: :organizer, resource: @conference }, { name: :cfp, resource: @conference }
|
|
||||||
= f.input :is_highlight
|
|
||||||
|
|
||||||
%p.text-right
|
%p.text-right
|
||||||
= link_to '#description', 'data-toggle' => 'collapse' do
|
= link_to '#description', 'data-toggle' => 'collapse' do
|
||||||
Do you require something special?
|
Do you require something special?
|
||||||
#description{ class: "collapse #{ 'in' if @event.description.present? }" }
|
#description{ class: "collapse #{ 'in' if @event.description.present? }" }
|
||||||
= f.input :description, input_html: { rows: 5 }, label: 'Requirements', placeholder: 'Eg. Whiteboard, printer, or something like that.'
|
= f.input :description, input_html: { rows: 5 }, label: 'Requirements', placeholder: 'Eg. Whiteboard, printer, or something like that.'
|
||||||
|
|
||||||
|
- if current_user.has_any_role? :admin, { name: :organizer, resource: @conference }, { name: :cfp, resource: @conference }
|
||||||
|
%p (Admin Only)
|
||||||
|
= f.input :is_highlight
|
||||||
|
|
||||||
%p.text-right
|
%p.text-right
|
||||||
- if @event.new_record?
|
- if @event.new_record?
|
||||||
= f.submit 'Submit Proposal', class: 'btn btn-success'
|
= f.submit 'Submit Proposal', class: 'btn btn-success'
|
||||||
- else
|
- else
|
||||||
= f.submit 'Update Proposal', class: 'btn btn-success'
|
= f.submit 'Update Proposal', class: 'btn btn-primary'
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
|
||||||
68
app/views/proposals/_submission_type_content_form.haml
Normal file
68
app/views/proposals/_submission_type_content_form.haml
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
-# PARTIAL FOR EVENT/PROPOSAL FORM
|
||||||
|
|
||||||
|
= f.input :event_type_id, as: :select, include_blank: false, label: 'Type',
|
||||||
|
input_html: { class: 'select-help-toggle' },
|
||||||
|
collection: event_type_options(program.event_types)
|
||||||
|
|
||||||
|
|
||||||
|
- program.event_types.each do |event_type|
|
||||||
|
.help-block.event_event_type_id.collapse{ id: "#{event_type.id}-help" }
|
||||||
|
%strong Description
|
||||||
|
%div
|
||||||
|
= markdown(event_type.description)
|
||||||
|
|
||||||
|
%h3 Submission Abstract
|
||||||
|
%p
|
||||||
|
The abstract is reviewed by the committee and included in the conference program.
|
||||||
|
You are encouraged to include links or other references as appropriate.
|
||||||
|
|
||||||
|
= f.label :abstract, class: 'sr-only'
|
||||||
|
= f.input :abstract, required: true, label: false,
|
||||||
|
input_html: { rows: 5, data: { provide: 'markdown' } },
|
||||||
|
hint: markdown_hint
|
||||||
|
|
||||||
|
%p
|
||||||
|
You have used
|
||||||
|
%span#abstract-count 0
|
||||||
|
words. Abstracts must be between
|
||||||
|
%span#abstract-minimum-word-count 0
|
||||||
|
and
|
||||||
|
%span#abstract-maximum-word-count 250
|
||||||
|
words.
|
||||||
|
|
||||||
|
%hr
|
||||||
|
%h3 Submission Details
|
||||||
|
%p
|
||||||
|
This part of the submission is intended only for the conference committee.
|
||||||
|
|
||||||
|
- program.event_types.each do |event_type|
|
||||||
|
.help-block.select-help-text.event_event_type_id.collapse{ id: "#{event_type.id}-instructions" }
|
||||||
|
- if event_type.submission_instructions.blank?
|
||||||
|
%p
|
||||||
|
Use this space to include any additional inforrmation that is helpful in reviewing your
|
||||||
|
submission. If you have any co-presenters, please include them
|
||||||
|
below. After submission, you will have the opportunity to add them to the
|
||||||
|
speakers list. (However, they must have an active #{ENV['OSEM_NAME']} account.)
|
||||||
|
- else
|
||||||
|
%p
|
||||||
|
Please use the following as the template for your submission. This will help the conference
|
||||||
|
committee review your submission with all the details they need. If you have any
|
||||||
|
co-presenters, please include them below. After submission, you will have the opportunity
|
||||||
|
to add them to the speakers list. (However, they must have an active #{ENV['OSEM_NAME']}
|
||||||
|
account.)
|
||||||
|
.panel.panel-primary
|
||||||
|
.panel-heading
|
||||||
|
= event_type.name
|
||||||
|
Template
|
||||||
|
.panel-body
|
||||||
|
= markdown(event_type.submission_instructions)
|
||||||
|
.panel-footer
|
||||||
|
%button.btn.btn-warning.btn-xs.js-resetSubmissionText{ type: 'button',
|
||||||
|
data: { confirm: 'Do you really want to reset your submission text to the provided template?' } }
|
||||||
|
Reset Submission to Template
|
||||||
|
%span.small You may want to use this if you have changed the submission type.
|
||||||
|
|
||||||
|
= f.label :submission_text, class: 'sr-only'
|
||||||
|
= f.input :submission_text, label: false,
|
||||||
|
input_html: { rows: 10, data: { provide: 'markdown' } },
|
||||||
|
hint: markdown_hint
|
||||||
|
|
@ -1,30 +1,31 @@
|
||||||
- progress_status = event.progress_status
|
- progress_status = event.progress_status
|
||||||
%ul.list-unstyled
|
%ul.list-unstyled
|
||||||
- if can? :create, @conference.registrations.new
|
- if can? :create, @conference.registrations.new
|
||||||
%li{'class'=>class_for_todo(progress_status['registered'])}
|
%li{class: class_for_todo(progress_status[:registered])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['registered'])}
|
%span{class: icon_for_todo(progress_status[:registered])}
|
||||||
- if progress_status['registered']
|
- if progress_status[:registered]
|
||||||
Speaker(s) registered to the conference
|
Speaker(s) registered to the conference
|
||||||
- else
|
- else
|
||||||
= link_to 'Speaker(s) not registered to the conference', new_conference_conference_registration_path(event.program.conference.short_title)
|
= link_to 'Speaker(s) not registered to the conference', new_conference_conference_registration_path(event.program.conference.short_title)
|
||||||
%li{'class'=>class_for_todo(progress_status['biographies'])}
|
%li{class: class_for_todo(progress_status[:biographies])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['biographies'])}
|
%span{class: icon_for_todo(progress_status[:biographies])}
|
||||||
- if progress_status['biographies']
|
- if progress_status[:biographies]
|
||||||
Speakers have filled out their biographies
|
Speakers have filled out their biographies
|
||||||
- elsif current_user.biography.blank? && event.speakers.include?(current_user)
|
- elsif current_user.biography.blank? && event.speakers.include?(current_user)
|
||||||
= link_to 'Fill out your biography', edit_user_path(current_user)
|
= link_to 'Fill out your biography', edit_user_path(current_user)
|
||||||
- else
|
- else
|
||||||
Speakers' biographies missing
|
Speakers' biographies missing
|
||||||
%li{'class'=>class_for_todo(progress_status['subtitle'])}
|
%li{class: class_for_todo(progress_status[:subtitle])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['subtitle'])}
|
%span{class: icon_for_todo(progress_status[:subtitle])}
|
||||||
= link_to 'Add a subtitle', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
= link_to 'Add a subtitle', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
||||||
%li{'class'=>class_for_todo(progress_status['commercials'])}
|
%li{class: class_for_todo(progress_status[:commercials])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['commercials'])}
|
%span{class: icon_for_todo(progress_status[:commercials])}
|
||||||
= link_to 'Add materials', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content')
|
= link_to 'Add materials', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content')
|
||||||
- unless progress_status['track'].nil?
|
- unless progress_status[:track].nil?
|
||||||
%li{'class'=>class_for_todo(progress_status['track'])}
|
%li{class: class_for_todo(progress_status[:track])}
|
||||||
%span{'class'=>icon_for_todo(progress_status['track'])}
|
%span{class: icon_for_todo(progress_status[:track])}
|
||||||
= link_to 'Add a track', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
= link_to 'Add a track', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
||||||
%li{'class'=>class_for_todo(progress_status['difficulty_level'])}
|
- unless progress_status[:difficulty_level].nil?
|
||||||
%span{'class'=>icon_for_todo(progress_status['difficulty_level'])}
|
%li{class: class_for_todo(progress_status[:difficulty_level])}
|
||||||
|
%span{class: icon_for_todo(progress_status[:difficulty_level])}
|
||||||
= link_to 'Add a difficulty level', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
= link_to 'Add a difficulty level', edit_conference_program_proposal_path(event.program.conference.short_title, event)
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
%h1 New #{@conference.title} Proposal
|
%h1 New #{@conference.title} Proposal
|
||||||
- if @program.cfp_open?
|
- if @program.cfp_open?
|
||||||
- if @program.cfp.description.present?
|
- if @program.cfp.description.present?
|
||||||
|
%h2 Call for Proposals
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
= markdown(@program.cfp.description, escape_html=false)
|
= markdown(@program.cfp.description, escape_html=false)
|
||||||
|
|
@ -31,52 +32,22 @@
|
||||||
|
|
||||||
= f.inputs name: 'Proposal Information' do
|
= f.inputs name: 'Proposal Information' do
|
||||||
= f.input :title, as: :string, required: true, input_html: { required: true }
|
= f.input :title, as: :string, required: true, input_html: { required: true }
|
||||||
= f.input :event_type_id, as: :select,
|
|
||||||
collection: @program.event_types.map {|type| ["#{type.title} - #{show_time(type.length)}", type.id,
|
|
||||||
data: { min_words: type.minimum_abstract_length, max_words: type.maximum_abstract_length, help: type.description }]},
|
|
||||||
include_blank: false, label: 'Type', input_html: { class: 'select-help-toggle' }
|
|
||||||
|
|
||||||
- if @program.languages.present?
|
- if @program.languages.present?
|
||||||
= f.input :language, as: :select,
|
= f.input :language, as: :select,
|
||||||
collection: @languages,
|
collection: @languages,
|
||||||
include_blank: false, label: 'Language', input_html: { class: 'select-help-toggle' }
|
include_blank: false, label: 'Language', input_html: { class: 'select-help-toggle' }
|
||||||
|
|
||||||
- @program.event_types.each do |event_type|
|
- if @program.difficulty_levels.present?
|
||||||
%div{ class: 'help-block event_event_type_id collapse', id: "#{event_type.id}-help"}
|
= f.input :difficulty_level, as: :select, collection: @program.difficulty_levels,
|
||||||
%strong Directions
|
input_html: { class: 'select-help-toggle' },
|
||||||
%div
|
include_blank: '(Please select)' if @conference.program.difficulty_levels.any?
|
||||||
= markdown(event_type.description)
|
|
||||||
|
|
||||||
= f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown' } },
|
- @program.difficulty_levels.each do |difficulty_level|
|
||||||
hint: markdown_hint
|
%span.help-block.select-help-text.collapse.event_difficulty_level_id{ id: "#{difficulty_level.id}-help" }
|
||||||
|
= difficulty_level.description
|
||||||
|
|
||||||
%p
|
= render 'submission_type_content_form', f: f, program: @program
|
||||||
You have used
|
|
||||||
%span#abstract-count #{@event.abstract_word_count}
|
|
||||||
words. Abstracts must be between
|
|
||||||
%span#abstract-minimum-word-count
|
|
||||||
0
|
|
||||||
and
|
|
||||||
%span#abstract-maximum-word-count
|
|
||||||
250
|
|
||||||
words.
|
|
||||||
|
|
||||||
%br
|
|
||||||
- @conference.program.event_types.each do |event_type|
|
|
||||||
%span{ class: 'help-block select-help-text event_event_type_id collapse', id: "#{event_type.id}-help" }
|
|
||||||
%h3
|
|
||||||
= event_type.name
|
|
||||||
Instructions
|
|
||||||
%p Please use this as the template for your submission.
|
|
||||||
This part of the submission is intended only for the conference committee.
|
|
||||||
%hr
|
|
||||||
= markdown(event_type.submission_instructions)
|
|
||||||
|
|
||||||
|
|
||||||
= f.input :submission_text, input_html: { rows: 5, data: { provide: 'markdown' } },
|
|
||||||
hint: markdown_hint
|
|
||||||
|
|
||||||
%button.btn.btn-primary.primary-button{ type: 'button', id: 'sub_text_reset', data: { confirm: 'Do you really want to reset your submission text to the provided template?' } } Reset to Template
|
|
||||||
|
|
||||||
- if @program.cfp.enable_registrations?
|
- if @program.cfp.enable_registrations?
|
||||||
= f.input :require_registration, label: 'Require participants to register to your event'
|
= f.input :require_registration, label: 'Require participants to register to your event'
|
||||||
|
|
@ -89,7 +60,7 @@
|
||||||
= f.input :description, input_html: { rows: 5 }, label: 'Requirements', placeholder: 'Eg. Whiteboard, printer, or something like that.'
|
= f.input :description, input_html: { rows: 5 }, label: 'Requirements', placeholder: 'Eg. Whiteboard, printer, or something like that.'
|
||||||
|
|
||||||
%p.text-right
|
%p.text-right
|
||||||
= f.submit 'Submit Proposal', class: 'btn btn-success'
|
= f.submit 'Submit Proposal', class: 'btn btn-success btn-lg'
|
||||||
|
|
||||||
.tab-pane{role: 'tabpanel', id: 'signin'}
|
.tab-pane{role: 'tabpanel', id: 'signin'}
|
||||||
= render partial: 'devise/shared/sign_in_form_embedded'
|
= render partial: 'devise/shared/sign_in_form_embedded'
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,22 @@
|
||||||
.col-md-12
|
.col-md-12
|
||||||
%h2
|
%h2
|
||||||
#{pluralize(@events_schedules.count, 'Event')} Occurring Within The Next 30 minutes.
|
#{pluralize(@events_schedules.count, 'Event')} Occurring Within The Next 30 minutes.
|
||||||
|
<<<<<<< HEAD
|
||||||
%h3
|
%h3
|
||||||
This page was loaded at
|
This page was loaded at
|
||||||
= inyourtz(Time.now) do
|
= 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)')
|
||||||
|
=======
|
||||||
|
%br
|
||||||
|
%small
|
||||||
|
This page was loaded at
|
||||||
|
= inyourtz(Time.now) do
|
||||||
|
= Time.now.strftime('%a %b %d at %I:%M %P (%z)')
|
||||||
|
\.
|
||||||
|
>>>>>>> b194ad8ad6e0af95b48002a350a87a514cd8593a
|
||||||
|
|
||||||
.row
|
.row
|
||||||
/ TODO: Clean this up, merge with all events page.
|
/ TODO: Clean this up, merge with all events page.
|
||||||
/ scheduled events
|
|
||||||
- date = nil
|
- date = nil
|
||||||
- time = nil
|
- time = nil
|
||||||
- @events_schedules.each do |event_schedule|
|
- @events_schedules.each do |event_schedule|
|
||||||
|
|
|
||||||
|
|
@ -195,6 +195,7 @@ feature Event do
|
||||||
scenario 'can reset to text template', feature: true, js: true do
|
scenario 'can reset to text template', feature: true, js: true do
|
||||||
event_type = conference.program.event_types[-1]
|
event_type = conference.program.event_types[-1]
|
||||||
event_type.description = 'Example event description'
|
event_type.description = 'Example event description'
|
||||||
|
event_type.submission_instructions = '## Fill Me In!'
|
||||||
event_type.save!
|
event_type.save!
|
||||||
|
|
||||||
sign_in participant
|
sign_in participant
|
||||||
|
|
@ -205,10 +206,10 @@ feature Event do
|
||||||
fill_in 'event_submission_text', with: 'Lorem ipsum example submission text'
|
fill_in 'event_submission_text', with: 'Lorem ipsum example submission text'
|
||||||
|
|
||||||
accept_confirm do
|
accept_confirm do
|
||||||
click_button 'Reset to Template'
|
click_button 'Reset Submission to Template'
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(page.find('#event_submission_text').value).to eq(event_type.description)
|
expect(page.find('#event_submission_text').value).to eq(event_type.submission_instructions)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue