From ed20ff3b510feb9faa6f947f377ecb5b44128b03 Mon Sep 17 00:00:00 2001 From: Michael Ball Date: Tue, 23 Mar 2021 22:43:11 -0700 Subject: [PATCH] Refactor the new/edit submission forms --- app/assets/javascripts/osem.js | 2 +- app/helpers/events_helper.rb | 13 ++++ app/views/proposals/_proposal_form.html.haml | 68 ++++--------------- .../_submission_type_content_form.haml | 66 ++++++++++++++++++ app/views/proposals/new.html.haml | 67 +++--------------- 5 files changed, 101 insertions(+), 115 deletions(-) create mode 100644 app/views/proposals/_submission_type_content_form.haml diff --git a/app/assets/javascripts/osem.js b/app/assets/javascripts/osem.js index 59c5249b..e6a99815 100644 --- a/app/assets/javascripts/osem.js +++ b/app/assets/javascripts/osem.js @@ -199,7 +199,7 @@ $( document ).ready(function() { let affirm = confirm($this.data('confirm')); if (affirm) { let sub_text = $('#event_submission_text'); - sub_text.val($selected.data('help')); + sub_text.val($selected.data('instructions')); sub_text.trigger('change'); } }); diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index eebaa4fe..9b7b9951 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -60,6 +60,19 @@ module EventsHelper "#{event.average_rating}/#{max_rating}, #{pluralize(event.voters.length, 'vote')}" 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, + help: type.submission_instructions + } + ] + end + end def event_type_dropdown(event, event_types, conference_id) selection = event.event_type.try(:title) || 'Event Type' options = event_types.collect do |event_type| diff --git a/app/views/proposals/_proposal_form.html.haml b/app/views/proposals/_proposal_form.html.haml index 5f907d6a..dfbcdadd 100644 --- a/app/views/proposals/_proposal_form.html.haml +++ b/app/views/proposals/_proposal_form.html.haml @@ -11,85 +11,43 @@ = 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? = f.input :language, as: :select, collection: @languages, include_blank: false, label: 'Language', input_html: { class: 'select-help-toggle' } - - @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" } - = event_type.description + - if @program.difficulty_levels.present? + = f.input :difficulty_level, as: :select, collection: @program.difficulty_levels, + input_html: { class: 'select-help-toggle' }, + include_blank: '(Please select)' if @conference.program.difficulty_levels.any? - = 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? + - @program.difficulty_levels.each do |difficulty_level| + %span{ class: 'help-block select-help-text collapse event_difficulty_level_id', id: "#{difficulty_level.id}-help" } + = difficulty_level.description - - @conference.program.difficulty_levels.each do |difficulty_level| - %span{ class: 'help-block select-help-text collapse event_difficulty_level_id', id: "#{difficulty_level.id}-help" } - = difficulty_level.description + = render 'submission_type_content_form', f: f, program: @program - = f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown' } }, - 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 - 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? + - if @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.' = 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 = link_to '#description', 'data-toggle' => 'collapse' do Do you require something special? #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.' + - 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 - if @event.new_record? = f.submit 'Submit Proposal', class: 'btn btn-success' - else - = f.submit 'Update Proposal', class: 'btn btn-success' + = f.submit 'Update Proposal', class: 'btn btn-primary' :javascript $(document).ready(function() { diff --git a/app/views/proposals/_submission_type_content_form.haml b/app/views/proposals/_submission_type_content_form.haml new file mode 100644 index 00000000..fcdd4539 --- /dev/null +++ b/app/views/proposals/_submission_type_content_form.haml @@ -0,0 +1,66 @@ +-# PARTIAL FOR EVENT/PROPOSAL FORM +-# `f` a current from helper. + += 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 #{@event.abstract_word_count} + 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{ type: 'button', id: 'sub_text_reset', 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 diff --git a/app/views/proposals/new.html.haml b/app/views/proposals/new.html.haml index fe258cd3..7c709235 100644 --- a/app/views/proposals/new.html.haml +++ b/app/views/proposals/new.html.haml @@ -38,67 +38,16 @@ collection: @languages, include_blank: false, label: 'Language', input_html: { class: 'select-help-toggle' } - = 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, instructions: type.submission_instructions }]}, - include_blank: false, label: 'Type', input_html: { class: 'select-help-toggle' } + - if @program.difficulty_levels.present? + = f.input :difficulty_level, as: :select, collection: @program.difficulty_levels, + input_html: { class: 'select-help-toggle' }, + include_blank: '(Please select)' if @conference.program.difficulty_levels.any? - - @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) + - @program.difficulty_levels.each do |difficulty_level| + %span.help-block.select-help-text.collapse.event_difficulty_level_id{ id: "#{difficulty_level.id}-help" } + = difficulty_level.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 #{@event.abstract_word_count} - 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. - - - @conference.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? - 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{ type: 'button', id: 'sub_text_reset', 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 + = render 'submission_type_content_form', f: f, program: @program - if @program.cfp.enable_registrations? = f.input :require_registration, label: 'Require participants to register to your event'