From 88b55966ccc93fe308a0c6f890565d1a35f8ae9e Mon Sep 17 00:00:00 2001 From: mkiroshdz Date: Wed, 27 Apr 2022 23:01:25 -0500 Subject: [PATCH] Refactor proposal forms --- .haml-lint_todo.yml | 1 - app/views/admin/events/_form.html.haml | 54 ++++++-- app/views/admin/events/edit.html.haml | 2 +- app/views/proposals/_form.html.haml | 122 +++++++++++++------ app/views/proposals/_proposal_form.html.haml | 83 ------------- app/views/proposals/edit.html.haml | 5 +- app/views/proposals/new.html.haml | 46 +------ 7 files changed, 132 insertions(+), 181 deletions(-) delete mode 100644 app/views/proposals/_proposal_form.html.haml diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 7b325440..8d6474cd 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -70,7 +70,6 @@ linters: UnnecessaryInterpolation: exclude: - "app/views/admin/conferences/_recent_submissions.html.haml" - - "app/views/proposals/_proposal_form.html.haml" - "app/views/proposals/new.html.haml" # Offense count: 262 diff --git a/app/views/admin/events/_form.html.haml b/app/views/admin/events/_form.html.haml index 36e62439..e3e75f7f 100644 --- a/app/views/admin/events/_form.html.haml +++ b/app/views/admin/events/_form.html.haml @@ -1,11 +1,43 @@ -.row - .col-md-12 - .page-header - %h1 - -if @event.new_record? - New - = @event.title - Event -.row - .col-md-12 - = render 'proposals/proposal_form' +.container + .row + .col-md-12 + .tabbable + %ul.nav.nav-tabs + %li.active + = link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab' + %li + = link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab' + .tab-content + .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 } + + diff --git a/app/views/admin/events/edit.html.haml b/app/views/admin/events/edit.html.haml index 4c45a5a4..bcc58327 100644 --- a/app/views/admin/events/edit.html.haml +++ b/app/views/admin/events/edit.html.haml @@ -1 +1 @@ -= render 'proposals/form' += render 'form' diff --git a/app/views/proposals/_form.html.haml b/app/views/proposals/_form.html.haml index 248846e4..964bc873 100644 --- a/app/views/proposals/_form.html.haml +++ b/app/views/proposals/_form.html.haml @@ -1,37 +1,87 @@ -.tabbable - %ul.nav.nav-tabs - %li.active - = link_to 'Proposal', '#proposal-content', 'data-toggle' => 'tab' - %li - = link_to 'Commercials', '#commercials-content', 'data-toggle' => 'tab' - .tab-content - #proposal-content.tab-pane.active - = render 'proposals/proposal_form' - #commercials-content.tab-pane - %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 } +- action_is_edit = @event.persisted? +- display_registration = current_user&.is_admin? || @program.cfp&.enable_registrations? + +%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' +- if action_is_edit + .form-group + = f.label :subtitle + = f.text_field :subtitle, class: 'form-control' + .form-group + = 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 action_is_edit + - 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 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' diff --git a/app/views/proposals/_proposal_form.html.haml b/app/views/proposals/_proposal_form.html.haml deleted file mode 100644 index 940cd286..00000000 --- a/app/views/proposals/_proposal_form.html.haml +++ /dev/null @@ -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' - diff --git a/app/views/proposals/edit.html.haml b/app/views/proposals/edit.html.haml index 1f65d485..59350849 100644 --- a/app/views/proposals/edit.html.haml +++ b/app/views/proposals/edit.html.haml @@ -1,4 +1 @@ -.container - .row - .col-md-12 - = render 'form' += render 'admin/events/form' diff --git a/app/views/proposals/new.html.haml b/app/views/proposals/new.html.haml index 794fde6d..bdfbb1e5 100644 --- a/app/views/proposals/new.html.haml +++ b/app/views/proposals/new.html.haml @@ -26,50 +26,6 @@ .tab-pane.active{role: 'tabpanel', id: 'signup'} = form_for(@event, url: @url) do |f| = render partial: 'devise/registrations/new_embedded' - %h4 - 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' + = render partial: 'form', locals: { f: f } .tab-pane{role: 'tabpanel', id: 'signin'} = render partial: 'devise/sessions/new_embedded'