Refactor proposal forms

This commit is contained in:
mkiroshdz 2022-04-27 23:01:25 -05:00
parent bb6c68b1c5
commit 88b55966cc
7 changed files with 132 additions and 181 deletions

View file

@ -70,7 +70,6 @@ linters:
UnnecessaryInterpolation: UnnecessaryInterpolation:
exclude: exclude:
- "app/views/admin/conferences/_recent_submissions.html.haml" - "app/views/admin/conferences/_recent_submissions.html.haml"
- "app/views/proposals/_proposal_form.html.haml"
- "app/views/proposals/new.html.haml" - "app/views/proposals/new.html.haml"
# Offense count: 262 # Offense count: 262

View file

@ -1,11 +1,43 @@
.row .container
.col-md-12 .row
.page-header .col-md-12
%h1 .tabbable
-if @event.new_record? %ul.nav.nav-tabs
New %li.active
= @event.title = link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab'
Event %li
.row = link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab'
.col-md-12 .tab-content
= render 'proposals/proposal_form' .tab-pane.active#proposal-content
= form_for(@event, url: @url) do |f|
= render partial: 'proposals/form', locals: { f: f }
= render partial: 'shared/user_selectize'
.tab-pane#commercials-content
%p.text-muted
You can add commercials for your proposal. These commercials will be displayed on the
= link_to 'public proposal page.', conference_program_proposal_path(@conference.short_title, @event)
If you don't add a commercial, the conference commercial will be displayed!
- if can? :create, @event.commercials.new
.row
.col-md-6
#resource-content
#resource-placeholder{ style: 'background-color:#d3d3d3; float: left; width: 400px; height: 250px; margin: 5px; border-width: 1px; border-style: solid; border-color: rgba(0,0,0,.2);' }
.row
.col-md-6
= form_for(@event.commercials.new, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event)) do |f|
= render partial: 'proposals/commercial_form_fields', locals: { f: f, commercial: @event.commercials.build }
%hr
- @event.commercials.each_slice(3) do |slice|
.row
- slice.each do |commercial|
- if commercial.persisted?
.col-md-4
.thumbnail
.flexvideo{ id: "resource-content-#{commercial.id}"}
= render partial: 'shared/media_item', locals: { commercial: commercial }
.caption
- if can? :update, commercial
= form_for(commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event, id: commercial)) do |f|
= render partial: 'proposals/commercial_form_fields', locals: { f: f, commercial: commercial }

View file

@ -1 +1 @@
= render 'proposals/form' = render 'form'

View file

@ -1,37 +1,87 @@
.tabbable - action_is_edit = @event.persisted?
%ul.nav.nav-tabs - display_registration = current_user&.is_admin? || @program.cfp&.enable_registrations?
%li.active
= link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab' %h4
%li Proposal Information
= link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab' %hr
.tab-content .form-group
#proposal-content.tab-pane.active = f.label :title
= render 'proposals/proposal_form' %abbr{title: 'This field is required'} *
#commercials-content.tab-pane = f.text_field :title, autofocus: true, required: true, class: 'form-control'
%p.text-muted - if action_is_edit
You can add commercials for your proposal. These commercials will be displayed on the .form-group
= link_to 'public proposal page.', conference_program_proposal_path(@conference.short_title, @event) = f.label :subtitle
If you don't add a commercial, the conference commercial will be displayed! = f.text_field :subtitle, class: 'form-control'
- if can? :create, @event.commercials.new .form-group
.row = f.select :speaker_ids, f.object.speakers.pluck(:username, :id), {}, { multiple: true, class: "form-control", id: "users_selectize", placeholder: "Speakers" }
.col-md-6 %span.help-block
#resource-content The people responsible for the event, beside you. You can only select existing users.
#resource-placeholder{ style: 'background-color:#d3d3d3; float: left; width: 400px; height: 250px; margin: 5px; border-width: 1px; border-style: solid; border-color: rgba(0,0,0,.2);' } - if @program.tracks.confirmed.cfp_active.any?
.row .form-group
.col-md-6 = f.label :track_id, 'Track'
= form_for(@event.commercials.new, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event)) do |f| = f.select :track_id, @program.tracks.confirmed.cfp_active.pluck(:name, :id), { include_blank: '(Please select)' }, { class: 'form-control' }
= render partial: 'proposals/commercial_form_fields', locals: { f: f, commercial: @event.commercials.build } .form-group
%hr = f.label :event_type_id, 'Type'
- @event.commercials.each_slice(3) do |slice| = f.select :event_type_id, event_type_select_options(@conference.program.event_types), { include_blank: false }, { class: 'select-help-toggle form-control' }
.row - if @program.languages.present?
- slice.each do |commercial| .form-group
- if commercial.persisted? = f.label :language
.col-md-4 = f.select :language, @languages, { include_blank: false}, { class: 'select-help-toggle form-control' }
.thumbnail - @conference.program.event_types.each do |event_type|
.flexvideo{ id: "resource-content-#{commercial.id}"} %span{ class: 'help-block select-help-text event_event_type_id collapse', id: "#{event_type.id}-help" }
= render partial: 'shared/media_item', locals: { commercial: commercial } = event_type.description
.caption - if action_is_edit
- if can? :update, commercial - if @conference.program.difficulty_levels.any?
= form_for(commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event, id: commercial)) do |f| = f.label :difficulty_level
= render partial: 'proposals/commercial_form_fields', locals: { f: f, commercial: commercial } = f.select :difficulty_level_id, @conference.program.difficulty_levels.map{|level| [level.title, level.id ] }, {include_blank: false}, { class: 'select-help-toggle form-control' }
- @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
.form-group
= f.label :abstract
= f.text_area :abstract, required: true, rows: 5, data: { provide: 'markdown' }, class: 'form-control'
%span.help-block
= 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.
- if display_registration && action_is_edit
%h4
Event Registration
%hr
- if display_registration
.checkbox
%label
= f.check_box :require_registration
Require participants to register to your event
- if display_registration && action_is_edit
.form-group
= f.number_field :max_attendees
%span.help-block
- message = @event.room ? "Value must be between 1 and #{@event.room.size}" : 'Check room capacity after scheduling.'
= 'The maximum number of participants. ' + message
- if action_is_edit && current_user.has_any_role?(:admin, { name: :organizer, resource: @conference }, { name: :cfp, resource: @conference })
.checkbox
%label
= f.check_box :is_highlight
Is a highlight?
%p.text-right
= link_to '#description', 'data-toggle' => 'collapse' do
Do you require something special for your event?
#description{ class: "collapse #{ 'in' if @event.description.present? }" }
.form-group
= f.label :description, 'Requirements'
= f.text_area :description, rows: 5
%span.help-block
Eg. Whiteboard, printer, or something like that.
%p.text-right
- submit_copy = action_is_edit ? 'Update Proposal' : 'Create Proposal'
= f.submit submit_copy, class: 'btn btn-success'

View file

@ -1,83 +0,0 @@
= form_for(@event, url: @url) do |f|
%h4
Proposal Information
%hr
.form-group
= f.label :title
%abbr{title: 'This field is required'} *
= f.text_field :title, autofocus: true, required: true, class: 'form-control'
.form-group
= f.label :subtitle
= f.text_field :subtitle, class: 'form-control'
.form-group
= f.label :speaker_ids, 'Speakers'
= f.select :speaker_ids, f.object.speakers.pluck(:username, :id), {}, { multiple: true, class: "form-control", id: "users_selectize", placeholder: "Speakers" }
%span.help-block
The people responsible for the event, beside you. You can only select existing users.
- if @program.tracks.confirmed.cfp_active.any?
.form-group
= f.label :track_id, 'Track'
= f.select :track_id, @program.tracks.confirmed.cfp_active.pluck(:name, :id), { include_blank: '(Please select)' }, { class: 'form-control' }
.form-group
= f.label :event_type_id, 'Type'
= f.select :event_type_id, event_type_select_options(@conference.program.event_types), { include_blank: false }, { class: 'select-help-toggle form-control' }
- if @program.languages.present?
.form-group
= f.label :language
= f.select :language, @languages, { include_blank: false}, { class: 'select-help-toggle form-control' }
- @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 @conference.program.difficulty_levels.any?
= f.label :difficulty_level
= f.select :difficulty_level_id, @conference.program.difficulty_levels.map{|level| [level.title, level.id ] }, {include_blank: false}, { class: 'select-help-toggle form-control' }
- @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
.form-group
= f.label :abstract
= f.text_area :abstract, required: true, rows: 5, data: { provide: 'markdown' }, class: 'form-control'
%span.help-block
= 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.
- if current_user.is_admin? || @program.cfp&.enable_registrations?
%h4
Event Registration
%hr
.checkbox
%label
= f.check_box :require_registration
Require participants to register to your event
.form-group
= f.number_field :max_attendees
%span.help-block
- message = @event.room ? "Value must be between 1 and #{@event.room.size}" : 'Check room capacity after scheduling.'
= 'The maximum number of participants. ' + message
- if current_user.has_any_role?(:admin, { name: :organizer, resource: @conference }, { name: :cfp, resource: @conference })
.checkbox
%label
= f.check_box :is_highlight
Is a highlight?
%p.text-right
= link_to '#description', 'data-toggle' => 'collapse' do
Do you require something special for your event?
#description{ class: "collapse #{ 'in' if @event.description.present? }" }
.form-group
= f.label :description, 'Requirements'
= f.text_area :description, rows: 5
%span.help-block
Eg. Whiteboard, printer, or something like that.
%p.text-right
= f.submit 'Update Proposal', class: 'btn btn-success'
= render partial: 'shared/user_selectize'

View file

@ -1,4 +1 @@
.container = render 'admin/events/form'
.row
.col-md-12
= render 'form'

View file

@ -26,50 +26,6 @@
.tab-pane.active{role: 'tabpanel', id: 'signup'} .tab-pane.active{role: 'tabpanel', id: 'signup'}
= form_for(@event, url: @url) do |f| = form_for(@event, url: @url) do |f|
= render partial: 'devise/registrations/new_embedded' = render partial: 'devise/registrations/new_embedded'
%h4 = render partial: 'form', locals: { f: f }
Proposal Information
%hr
.form-group
= f.label :title
= f.text_field :title, required: true, class: 'form-control'
= f.label :event_type_id, 'Type'
= f.select :event_type_id, @program.event_types.map {|type| ["#{type.title} - #{show_time(type.length)}", type.id] }, { include_blank: false }, { class: 'select-help-toggle form-control' }
- if @program.languages.present?
= f.label :language
= f.select :language, @languages, include_blank: false, class: 'select-help-toggle form-control'
- @program.event_types.each do |event_type|
%span{ class: 'help-block event_event_type_id collapse', id: "#{event_type.id}-help" }
= event_type.description
.form-group
= f.label :abstract
= f.text_area :abstract, required: true, rows: 5, data: { provide: 'markdown' }, class: 'form-control'
%span.help-block
%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.
= markdown_hint('[Tips to improve your presentations.](http://blog.hubspot.com/blog/tabid/6307/bid/5975/10-Rules-to-Instantly-Improve-Your-Presentations.aspx)')
- if @program.cfp.enable_registrations?
.checkbox
%label
= f.check_box :require_registration
Require participants to register to your event?
%p.text-right
= link_to '#description', 'data-toggle' => 'collapse', id: 'description_link' do
Do you require something special for your event?
.collapse#description
.form-group
= f.label :description, 'Requirements'
= f.text_area :description, rows: 5, class: 'form-control'
%span.help-block
Tell us what you need for your event. A whiteboard, a printer or something like that.
%p.text-right
= f.submit 'Create Proposal', class: 'btn btn-success'
.tab-pane{role: 'tabpanel', id: 'signin'} .tab-pane{role: 'tabpanel', id: 'signin'}
= render partial: 'devise/sessions/new_embedded' = render partial: 'devise/sessions/new_embedded'