Rename 'ConferenceController' to 'ConferencesController', and 'ProposalController' to 'ProposalsController'

This commit is contained in:
richiethomas 2016-09-14 22:42:04 -04:00
parent 0b6550d060
commit daf1f805bd
71 changed files with 225 additions and 191 deletions

View file

@ -0,0 +1,24 @@
%p.lead
- if @program.event_types.any?
You can submit proposals for
= "#{event_types(@conference)}."
- if @program.tracks.any?
Proposals should fit in one of the
= "#{pluralize(@program.tracks.count, 'track')}:"
= "#{tracks(@conference)}."
- if @program.cfp_open?
The submission period has begun
%em.notranslate
= @program.cfp.start_date.strftime('%A, %B %-d. %Y')
and closes
%em.notranslate
= @program.cfp.end_date.strftime('%A, %B %-d. %Y.')
That means you have
%b.notranslate= pluralize(@program.cfp.remaining_days, 'day')
left!
Remember
%span.notranslate
= @conference.title
will only be as good as the content you present. Submit early, submit often!
-else
The submission period is closed now.

View file

@ -0,0 +1,45 @@
.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
= semantic_form_for(@event.commercials.build, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event)) do |f|
= f.input :url, label: 'URL', as: :string, input_html: { required: 'required', type: 'url' },
hint: 'Just paste the url of your video/photo provider. Currently supported: YouTube, Vimeo, SpeakerDeck, SlideShare, Instagram, Flickr.'
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary pull-right', disabled: true }
%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
= semantic_form_for commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event, id: commercial) do |f|
= f.input :url, label: 'URL', as: :string, input_html: { id: "commercial_url_#{commercial.id}", required: 'required', type: 'url' }
= f.action :submit, as: :button, button_html: { class: 'btn btn-success' }, label: 'Update'
- if can? :destroy, commercial
= link_to 'Delete', conference_program_proposal_commercial_path(@conference.short_title, @event.id, commercial.id),
:method => :delete, :data => { :confirm => 'Are you sure?' }, class: 'btn btn-danger'
.text-right
= "added by "
= link_to_user(commercial.versions.last.whodunnit)

View file

@ -0,0 +1,66 @@
= semantic_form_for(@event, url: @url) do |f|
= f.inputs name: 'Proposal Information' do
= f.input :title, as: :string, required: true
= f.input :subtitle, as: :string
- if @program.tracks.any?
= f.input :track_id, as: :select,
collection: @program.tracks.map {|track| ["#{track.name}", track.id] },
include_blank: true
= 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 }]},
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
:javascript
$("##{@conference.program.event_types.first.id}-help").collapse('show');
= 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?
- @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
= f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown-editable' } },
hint: markdown_hint(link_to('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.
= 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?
.collapse#description
= f.input :description, input_html: { rows: 5 }, label: 'Requirements', placeholder: 'Eg. Whiteboard, printer, or something like that.'
%p.text-right
= f.submit 'Update Proposal', class: 'btn btn-success'

View file

@ -0,0 +1,24 @@
- progress_status = event.progress_status
%ul.list-unstyled
%li{'class'=>class_for_todo(progress_status['registered'])}
%span{'class'=>icon_for_todo(progress_status['registered'])}
- if progress_status['registered']
= link_to 'Register to the conference', edit_conference_conference_registration_path(event.program.conference.short_title)
- else
= link_to 'Register to the conference', new_conference_conference_registration_path(event.program.conference.short_title)
%li{'class'=>class_for_todo(progress_status['biography'])}
%span{'class'=>icon_for_todo(progress_status['biography'])}
= link_to 'Fill out your biography', edit_user_path(event.submitter)
%li{'class'=>class_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)
%li{'class'=>class_for_todo(progress_status['commercials'])}
%span{'class'=>icon_for_todo(progress_status['commercials'])}
= link_to 'Add a commercial', edit_conference_program_proposal_path(event.program.conference.short_title, event, anchor: 'commercials-content')
- unless progress_status['track'].nil?
%li{'class'=>class_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)
%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)

View file

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

View file

@ -0,0 +1,104 @@
.container
.row
.col-md-12.page-header
%h1
Proposals for
%span.notranslate
= @conference.title
.row
.col-md-12
= render partial: 'encouragement_text'
- if @events.any?
- if @events.highlighted.any?
.row
.col-md-12
%p.lead
%strong
Congratulations!
Some of your proposals have been selected as a highlight of #{@conference.title}!
%ul
- @events.highlighted.each do |event|
%li= link_to event.title, conference_program_proposal_path(@conference.short_title, event)
.row
.col-md-12
%p.text-right
= link_to '#status-help', class: 'btn btn-default', "data-toggle"=>"collapse" do
Help?
.collapse#status-help
%p
%strong
What happens next with my proposal?
%p
If you submit a proposal, the conference organizers will review it and either accept or reject it.
%br
If your proposal is accepted, the conference organizers expect you to confirm that you will be able to hold it.
%br
If your proposal is rejected, you can either live with that or adapt it and resubmit it for review again.
%br
If something changes and you can't hold the presentation any more, you should withdraw it.
%p
%strong
Why do I need to add more information?
%p
The more information you add to your proposal, the more likely it is that the conference organizers accept your proposal.
%br
It will also be more likely that visitors find your proposal interesting enough to attend.
%p
%strong
Why do I need to register to the conference?
%p
Knowing the number of visitors for the conference helps the organizers plan better.
%table.table.table-striped
- @events.each do |event|
%tr
%td{style: "padding:20px 8px 20px 8px;"}
%span{ title: event.state.humanize, class: "fa #{event_status_icon(event)}" }
%td.col-md-7{style: "padding:20px 8px 20px 8px;"}
= link_to event.title, conference_program_proposal_path(@conference.short_title, event.id)
%br
%small.text-muted
= event.event_type.title
= "(#{event.event_type.length} min)"
= "in #{event.track.name}" if event.track
- if event.require_registration
%br
= link_to registered_text(event), registrations_conference_program_proposal_path(@conference.short_title, event), class: 'btn btn-xs btn-danger'
%td.col-md-2{style: "padding:20px 8px 20px 8px;"}
= link_to 'Complete your proposal', 'javascript: void(0)', "type"=>"button", "data-trigger"=>"focus", "data-toggle"=>"popover", "title"=>"Your todo list", "data-content"=>"#{render partial: 'tooltip', locals: { event: event} }"
- progress_percentage = event.calculate_progress
.progress
%div{class: "progress-bar #{event_progress_color(progress_percentage)}", style: "width:#{progress_percentage}%;"}
= event.progress_status.reject{ |_key, value| value || value.nil? }.length
left
%td.col-md-3{style: "padding:20px 0px 20px 0px;"}
.pull-right
- if event.transition_possible? :confirm
= link_to 'Confirm',
confirm_conference_program_proposal_path(@conference.short_title, event),
method: :patch, class: 'btn btn-mini btn-success', id: "confirm_proposal_#{event.id}"
- if event.transition_possible? :withdraw
= link_to 'Withdraw', withdraw_conference_program_proposal_path(@conference.short_title, event.id), method: :patch,
data: { confirm: 'Are you sure you want to withdraw this proposal?' }, class: 'btn btn-mini btn-warning',
id: "delete_proposal_#{event.id}"
- if event.state == 'withdrawn' || event.state == 'rejected'
= link_to 'Re-Submit',
restart_conference_program_proposal_path(@conference.short_title, event.id),
method: :patch, class: 'btn btn-mini btn-success', id: "review_event_#{event.id}"
= link_to 'Edit', edit_conference_program_proposal_path(@conference.short_title, event.id),
class: 'btn btn-default', id: "edit_proposal_#{event.id}"
.row
.col-md-12
- if can? :create, @event
= link_to "New Proposal", new_conference_program_proposal_path(@conference.short_title), :class => "btn btn-success pull-right"

View file

@ -0,0 +1,72 @@
.container
.row
.col-md-12
.page-header
%h1 New Proposal
.row
.col-md-12
= render partial: 'encouragement_text'
.row
.col-md-8
- unless current_user
%legend
%span
=link_to('#signup', role: 'tab', 'aria-controls' => 'home', 'data-toggle' => 'tab') do
= ENV['OSEM_NAME'] || 'OSEM'
Account
%span.pull-right#account-already
=link_to('#signin', role: 'tab', 'aria-controls' => 'home', 'data-toggle' => 'tab') do
Already have an account?
.tab-content
.tab-pane.active{role: 'tabpanel', id: 'signup'}
= semantic_form_for(@event, url: @url) do |f|
= render partial: 'devise/shared/sign_up_form_embedded'
= f.inputs name: 'Proposal Information' do
= 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 }]},
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' }
- @program.event_types.each do |event_type|
%span{ class: 'help-block event_event_type_id collapse', id: "#{event_type.id}-help" }
= event_type.description
:javascript
$("##{@program.event_types.first.id}-help").collapse('show');
= f.input :abstract, required: true, input_html: { rows: 5, data: { provide: 'markdown-editable' } },
hint: markdown_hint(link_to('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.
= f.input :require_registration, label: '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?
.collapse#description
= f.input :description, input_html: { rows: 5 }, label: 'Requirements', placeholder: 'Eg. Whiteboard, printer, or something like that.'
%p.text-right
= f.submit 'Create Proposal', class: 'btn btn-success'
.tab-pane{role: 'tabpanel', id: 'signin'}
= render partial: 'devise/shared/sign_in_form_embedded'

View file

@ -0,0 +1,40 @@
.container
.row
.col-md-10.col-md-offset-1
.page-header
%h1
Registrations
- if @event.max_attendees
(#{@event.events_registrations.length}/#{@event.max_attendees})
- else
(#{@event.events_registrations.length})
.text-muted
for
= @event.title
.well
%table.table.table-hover.table-borderd.table-striped.datatable#registrations
%thead
%th
%th Name
%th Email
%th Created AT
%th Attended
%th Attended Conference
%tbody
- @event.events_registrations.each.with_index(1) do |event_registration, index|
%tr
%td= index
%td= event_registration.name
%td= event_registration.email
%td= event_registration.created_at
%td.text-center
- if event_registration.attended
%i.fa.fa-check.text-success
- else
%i.fa.fa-times.text-danger
%td
- if event_registration.registration.attended
%i.fa.fa-check.text-success
-else
%i.fa.fa-times.text-danger

View file

@ -0,0 +1,103 @@
.container
.row
.col-md-12.page-header
%h2
= @event.title
- if @event.subtitle
%br
%small
= @event.subtitle
.btn-group.pull-right
- if can? :update, @event
= link_to 'Registrations', registrations_conference_program_proposal_path(@conference.short_title, @event), class: 'btn btn-mini btn-success'
- if can? :edit, @event
= link_to "Edit", edit_conference_program_proposal_path(@conference.short_title, @event), :class => "btn btn-mini btn-primary"
- if can? :schedule, @conference
= link_to "Schedule", conference_schedule_path(@conference.short_title), :class =>"btn btn-success"
- if @event.state == 'canceled' || @event.state == 'withdrawn'
%span.label.label-danger CANCELED
- elsif @event.state == 'confirmed' && @event_schedule.present? && (!@event_schedule.intersecting_events.canceled.empty? || !@event_schedule.intersecting_events.withdrawn.empty?)
%span.label.label-info REPLACEMENT
.row
.col-md-3
.speakerinfo
.col-md-12
= image_tag @speaker.gravatar_url(:size => 200), :class => "img-responsive img-rounded"
.col-md-12
%h3
by
= link_to @speaker.name, user_path(@speaker.id)
= "(#{@speaker.email})"
- if @speaker.affiliation?
%br
%span.muted
from
= @speaker.affiliation
-if @speaker.biography?
= markdown(@speaker.biography)
.col-md-9
.row
.col-md-12
-if @event_schedule.present?
.lead
- if @event.state == 'confirmed' && !@event_schedule.intersecting_events.withdrawn.empty?
= "Please note that this talk replaces"
= link_to @event_schedule.intersecting_events.withdrawn.first.event.title,
conference_program_proposal_path(@conference.short_title, @event_schedule.intersecting_events.withdrawn.first.event.id)
- elsif @event.state == 'confirmed' && !@event_schedule.intersecting_events.canceled.empty?
= "Please note that this talk replaces"
= link_to @event_schedule.intersecting_events.canceled.first.title,
conference_program_proposal_path(@conference.short_title, @event_schedule.intersecting_events.canceled.first.event.id)
- if @event.commercials.empty?
%h5.text-warning
No video of the event yet, sorry!
- unless @conference.commercials.empty?
Meanwhile...
- unless @conference.commercials.empty?
= render partial: 'shared/media_items', locals: { commercials: @conference.commercials }
- else
%p
= render partial: 'shared/media_items', locals: { commercials: @event.commercials }
.row
.col-md-12
%p
= markdown(@event.abstract)
%dl#proposal-info
.col-md-12
%dt Date:
%dd= @event_schedule.start_time.strftime("%Y %B %e %H:%M") if @event_schedule
.col-md-12
%dt Duration:
%dd= show_time(@event.event_type.length)
.col-md-12
%dt Room:
%dd
- if @event.room
= @event.room.name
.col-md-12
%dt Conference:
%dd= @event.program.conference.title
.col-md-12
%dt Language:
%dd= @event.language if @event.language
.col-md-12
%dt Track:
%dd
- if @event.track
%span.label{:style =>"background-color: #{@event.track.color}; color: #{ contrast_color(@event.track.color) }"}
= @event.track.name
.col-md-12
%dt Difficulty:
%dd
- if @event.difficulty_level
%span.label{:style =>"background-color: #{@event.difficulty_level.color}; color: #{ contrast_color(@event.difficulty_level.color) };"}
= @event.difficulty_level.title
- if @event.require_registration
.col-md-12
%dt Requires Registration:
%dd
= link_to "Yes (#{registered_text(@event)})", new_conference_conference_registration_path(@conference.short_title), class: 'btn btn-xs btn-danger', disabled: !@event.registration_possible?