diff --git a/app/controllers/proposal_controller.rb b/app/controllers/proposal_controller.rb
index 7bb678e9..4dc7dd27 100644
--- a/app/controllers/proposal_controller.rb
+++ b/app/controllers/proposal_controller.rb
@@ -134,13 +134,13 @@ class ProposalController < ApplicationController
end
def show
-
+ @event = Event.find(params[:id])
end
def confirm
if @event.transition_possible? :confirm
begin
- @event.confirm!
+ @event.confirm!(:send_mail => params[:send_mail])
rescue Exception => e
redirect_to(conference_proposal_index_path(:conference_id => @conference.short_title), :alert => "Event was NOT confirmed: #{e.message}")
return
diff --git a/app/models/event.rb b/app/models/event.rb
index e653c4c7..d0aea5f5 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -35,7 +35,7 @@ class Event < ActiveRecord::Base
state :rejected
event :start_review do
- transitions :to => :review, :from => [:new, :rejected]
+ transitions :to => :review, :from => [:new, :rejected, :canceled]
end
event :withdraw do
transitions :to => :withdrawn, :from => [:new, :review, :unconfirmed]
@@ -98,7 +98,7 @@ class Event < ActiveRecord::Base
self.class.state_machine.events_for(self.current_state).include?(transition)
end
- def process_confirmation
+ def process_confirmation(options)
if self.conference.email_settings.send_on_confirmed_without_registration?
if self.conference.registrations.where(:person_id => self.submitter.id).first.nil?
Mailbot.confirm_reminder_mail(self).deliver
@@ -171,4 +171,4 @@ class Event < ActiveRecord::Base
self.guid = guid
end
-end
\ No newline at end of file
+end
diff --git a/app/views/admin/events/_proposal.html.haml b/app/views/admin/events/_proposal.html.haml
index 3910be9c..c4749bb5 100644
--- a/app/views/admin/events/_proposal.html.haml
+++ b/app/views/admin/events/_proposal.html.haml
@@ -5,14 +5,17 @@
%i= @event.subtitle
.span2
- -#= link_to "Edit Submission", edit_admin_conference_event_path(@conference.short_title, @event),
- -# :class => "btn btn-mini btn-primary pull-right", :style => "margin-top:20px;", :onclick => "javascript:alert('Not ready yet');"
= link_to "Edit Submission", "#",
:class => "btn btn-mini btn-primary pull-right", :style => "margin-top:20px;", :onclick => "javascript:alert('Not ready yet');"
.row-fluid
.span12
%table.table
+ %tr
+ %td
+ %b Type
+ %td
+ = @event.event_type.title
%tr
%td
%b State
diff --git a/app/views/admin/events/index.html.haml b/app/views/admin/events/index.html.haml
index 1f058d87..589d1c89 100644
--- a/app/views/admin/events/index.html.haml
+++ b/app/views/admin/events/index.html.haml
@@ -1,53 +1,65 @@
.row-fluid
.span12
- %table.table.table-striped.table-bordered.table-hover
- %thead
- %th
- %b Title
- %th
- %b Submitter
- %th
- %b Type
- %th
- %b State
- - @events.each do |event|
- %tr
- %td
- =link_to event.title, admin_conference_event_path(@conference.short_title, event)
- %td
- - if !event.submitter.nil?
- =link_to event.submitter.public_name, admin_person_path(event.submitter)
- - else
- Unknown submitter
- %td
- = event.event_type.title
- %td
- - if event.state == "withdrawn"
- Withdrawn
- - else
- .dropdown
- = link_to "#", :class => "dropdown-toggle" do
- = event.state.humanize
-
- %ul.dropdown-menu
- - if event.transition_possible? :accept
- %li= link_to "Accept event (no email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :accept, :send_mail => false),
- :method => :put, :hint => "Accept this event without sending an automated email."
- %li= link_to "Accept event (WITH email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :accept, :send_mail => true),
- :method => :put, :hint => "Accept this event and send an automated email."
- - if event.transition_possible? :reject
- %li= link_to "Reject event (no email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :reject, :send_mail => false),
- :method => :put, :confirm => "Are you sure?",
- :hint => "Reject this event without sending an automated email."
- %li= link_to "Reject event (WITH email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :reject, :send_mail => true),
- :method => :put, :confirm => "Are you sure?",
- :hint => "Reject this event and send an automated email."
- - if event.transition_possible? :start_review
- %li= link_to "Start review", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :start_review),
- :method => :put
- - if event.transition_possible? :confirm
- %li= link_to "Confirm event", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :confirm),
- :method => :put, :hint => "Confirm that the speaker(s) will be present and that the event will actually take place."
- - if event.transition_possible? :cancel
- %li= link_to "Cancel event", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :cancel),
- :method => :put, :hint => "Mark this event as cancelled. Usually this means that the speakers had to cancel their appearance."
+ %h2
+ Events
+ - if @events
+ = "(#{@events.length})"
+ .well
+ %table.table.table-striped.table-bordered.table-hover#events
+ %thead
+ %th
+ %b Title
+ %th
+ %b Submitter
+ %th
+ %b Type
+ %th
+ %b State
+ - @events.each do |event|
+ %tr
+ %td
+ =link_to event.title, admin_conference_event_path(@conference.short_title, event)
+ %td
+ - if !event.submitter.nil?
+ =link_to event.submitter.public_name, admin_person_path(event.submitter)
+ - else
+ Unknown submitter
+ %td
+ = event.event_type.title
+ %td
+ - if event.state == "withdrawn"
+ Withdrawn
+ - else
+ .dropdown
+ = link_to "#", :class => "dropdown-toggle" do
+ = event.state.humanize
+
+ %ul.dropdown-menu
+ - if event.transition_possible? :accept
+ %li= link_to "Accept event (no email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :accept, :send_mail => false),
+ :method => :put, :hint => "Accept this event without sending an automated email."
+ %li= link_to "Accept event (WITH email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :accept, :send_mail => true),
+ :method => :put, :hint => "Accept this event and send an automated email."
+ - if event.transition_possible? :reject
+ %li= link_to "Reject event (no email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :reject, :send_mail => false),
+ :method => :put, :confirm => "Are you sure?",
+ :hint => "Reject this event without sending an automated email."
+ %li= link_to "Reject event (WITH email)", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :reject, :send_mail => true),
+ :method => :put, :confirm => "Are you sure?",
+ :hint => "Reject this event and send an automated email."
+ - if event.transition_possible? :start_review
+ %li= link_to "Start review", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :start_review),
+ :method => :put
+ - if event.transition_possible? :confirm
+ %li= link_to "Confirm event", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :confirm),
+ :method => :put, :hint => "Confirm that the speaker(s) will be present and that the event will actually take place."
+ - if event.transition_possible? :cancel
+ %li= link_to "Cancel event", update_state_admin_conference_event_path(@conference.short_title, event, :transition => :cancel),
+ :method => :put, :hint => "Mark this event as cancelled. Usually this means that the speakers had to cancel their appearance."
+
+:javascript
+ $(document).ready(function() {
+ $('#events').dataTable( {
+ "bPaginate": false
+ } );
+ } );
diff --git a/app/views/admin/people/index.html.haml b/app/views/admin/people/index.html.haml
index af8a64bf..567fedfe 100644
--- a/app/views/admin/people/index.html.haml
+++ b/app/views/admin/people/index.html.haml
@@ -1,18 +1,35 @@
-%table.table.table-striped.table-bordered.table-hover
- %thead
- %th
- %b Last Name
- %th
- %b First Name
- %th
- %b Public Name
- %th
- %b # of Conference Registrations
- %th
- - @people.each do |person|
- %tr
- %td= person.last_name
- %td= person.first_name
- %td= person.public_name
- %td= person.registrations.count
- %td= link_to "View", admin_person_path(person)
\ No newline at end of file
+%h2
+ People
+ - if @people
+ = "(#{@people.length})"
+.well
+ %table.table.table-striped.table-bordered.table-hover#people
+ %thead
+ %th
+ %b Email
+ %th
+ %b Last Name
+ %th
+ %b First Name
+ %th
+ %b Public Name
+ %th
+ %b # of Conference Registrations
+ %th
+ - @people.each do |person|
+ %tr
+ %td= person.email
+ %td= person.last_name
+ %td= person.first_name
+ %td= person.public_name
+ %td= person.registrations.count
+ %td= link_to "View", admin_person_path(person)
+
+:javascript
+ $(document).ready(function() {
+ $('#people').dataTable( {
+ "bScrollInfinite": true,
+ "bScrollCollapse": true,
+ "sScrollY": "200px"
+ } );
+ } );
diff --git a/app/views/admin/registrations/show.html.haml b/app/views/admin/registrations/show.html.haml
index df3dc0b1..4ba9f67b 100644
--- a/app/views/admin/registrations/show.html.haml
+++ b/app/views/admin/registrations/show.html.haml
@@ -4,6 +4,10 @@
= link_to "Export PDF", admin_conference_registrations_path(@conference.short_title, :format => :pdf), :class => "btn btn-success"
.row-fluid
.span12
+ %h2
+ Registrations
+ - if @registrations
+ = "(#{@registrations.length})"
%table.table.table-striped.table-bordered.table-hover
%thead
%th
@@ -45,4 +49,4 @@
%td
= link_to "Edit", "#", :class => "btn btn-primary"
%td
- = link_to "Delete", "#", :class => "btn btn-danger", :confirm => "Really delete registration for #{registration.public_name}?"
\ No newline at end of file
+ = link_to "Delete", "#", :class => "btn btn-danger", :confirm => "Really delete registration for #{registration.public_name}?"
diff --git a/app/views/admin/registrations/show.pdf.prawn b/app/views/admin/registrations/show.pdf.prawn
index 0a9dfc4e..39c57e0f 100644
--- a/app/views/admin/registrations/show.pdf.prawn
+++ b/app/views/admin/registrations/show.pdf.prawn
@@ -28,11 +28,11 @@ prawn_document(:force_download=>true, :filename => @pdf_filename) do |pdf|
else
row << " "
end
- row << registration.arrival
- row << registration.departure
+ row << registration.arrival.to_s
+ row << registration.departure.to_s
table_array << row
end
pdf.text "#{@conference.title} Registrations", :font_size => 25
pdf.table table_array, :header => true, :cell_style => {:size => 5, :border_width => 1}
-end
\ No newline at end of file
+end
diff --git a/app/views/admin/supporters/index.html.haml b/app/views/admin/supporters/index.html.haml
index 256a9276..31bebdcf 100644
--- a/app/views/admin/supporters/index.html.haml
+++ b/app/views/admin/supporters/index.html.haml
@@ -13,6 +13,7 @@
= link_to "New Supporter", "#", :id => "new-supporter-button", :class => "btn btn-success"
.row-fluid
.span12
+ %h2 Supporters
.well
%table.table.table-striped#supporters
%thead
diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml
index fe72cd30..d118e7b7 100644
--- a/app/views/admin/users/index.html.haml
+++ b/app/views/admin/users/index.html.haml
@@ -1,57 +1,70 @@
.container-fluid
.row-fluid
.span12
- %table.table.table-striped.table-bordered.table-hover
- %thead
- %th
- %b Email
- %th
- %b Last Name
- %th
- %b First Name
- %th
- %b Public Name
- %th
- %b Roles
- %th
- %th
- - @users.each do |user|
- %tr
- %td
- = user.email
- %td
- = user.last_name
- %td
- = user.first_name
- %td
- = user.public_name
- %td
- = user.roles.map { |role| role.name }.join ','
- %td
- .modal.hide.fade{:id => "user-role-selection-#{user.id}", "role" => "dialog", "aria-hidden" => "true"}
- .modal-header
- %button{"type"=>"button", :class=>"close", "data-dismiss"=>"modal", "aria-hidden"=>"true"}
- ×
- %h3{:id => "role-selector-header-#{user.id}"}
- Modifying Roles
- .modal-body
- - if current_user == user
- You cannot modify your own role!
- %br
- %button{:class=> "btn btn-danger", "data-dismiss"=> "modal", "aria-hidden"=>"true"}
- Cancel
-
- - else
- = "Give #{user.public_name} (#{user.email}) the following roles:"
- = semantic_form_for(user, :url => admin_user_path(user), :method => :put) do |f|
- = f.input :roles, :label => false
+ %h2
+ Users
+ - if @users
+ = "(#{@users.length})"
+ .well
+ %table.table.table-striped.table-bordered.table-hover#users
+ %thead
+ %th
+ %b Email
+ %th
+ %b Last Name
+ %th
+ %b First Name
+ %th
+ %b Public Name
+ %th
+ %b Roles
+ %th
+ %th
+ - @users.each do |user|
+ %tr
+ %td
+ = user.email
+ %td
+ = user.last_name
+ %td
+ = user.first_name
+ %td
+ = user.public_name
+ %td
+ = user.roles.map { |role| role.name }.join ','
+ %td
+ .modal.hide.fade{:id => "user-role-selection-#{user.id}", "role" => "dialog", "aria-hidden" => "true"}
+ .modal-header
+ %button{"type"=>"button", :class=>"close", "data-dismiss"=>"modal", "aria-hidden"=>"true"}
+ ×
+ %h3{:id => "role-selector-header-#{user.id}"}
+ Modifying Roles
+ .modal-body
+ - if current_user == user
+ You cannot modify your own role!
+ %br
%button{:class=> "btn btn-danger", "data-dismiss"=> "modal", "aria-hidden"=>"true"}
Cancel
- = f.action :submit, :as => :button, :button_html => {:value => "Save", :class => "btn btn-primary"}
- =link_to "Modify Roles", "#", "data-toggle" => "modal", "data-target" => "#user-role-selection-#{user.id}}"
- %td
- =link_to "Details", "javascript: void(0)", :class => "user-details-popover", "data-trigger" => "click", "data-placement" => "bottom",
- "data-html" => "true",
- "data-content" => user.popup_details,
- "data-original-title" => ""
+ - else
+ = "Give #{user.public_name} (#{user.email}) the following roles:"
+ = semantic_form_for(user, :url => admin_user_path(user), :method => :put) do |f|
+ = f.input :roles, :label => false
+ %button{:class=> "btn btn-danger", "data-dismiss"=> "modal", "aria-hidden"=>"true"}
+ Cancel
+ = f.action :submit, :as => :button, :button_html => {:value => "Save", :class => "btn btn-primary"}
+ =link_to "Modify Roles", "#", "data-toggle" => "modal", "data-target" => "#user-role-selection-#{user.id}}"
+ %td
+ =link_to "Details", "javascript: void(0)", :class => "user-details-popover", "data-trigger" => "click", "data-placement" => "bottom",
+ "data-html" => "true",
+ "data-content" => user.popup_details,
+ "data-original-title" => ""
+
+:javascript
+ $(document).ready(function() {
+ $('#users').dataTable( {
+ "bScrollInfinite": true,
+ "bScrollCollapse": true,
+ "sScrollY": "200px"
+ } );
+ } );
diff --git a/app/views/layouts/_admin_navigation.html.haml b/app/views/layouts/_admin_navigation.html.haml
index 58f99680..0bce258a 100644
--- a/app/views/layouts/_admin_navigation.html.haml
+++ b/app/views/layouts/_admin_navigation.html.haml
@@ -30,20 +30,22 @@
%li
= link_to "Schedule ", admin_conference_schedule_path(@conference.short_title)
%ul.nav.secondary-nav.pull-right
+ %li
+ = link_to "User Area", root_url
- if !@conference.nil?
%li.dropdown
- = link_to "#", :class => "dropdown-toggle" do
+ = link_to "#", :class => "dropdown-toggle", :id =>'drop1', "data-toggle" => 'dropdown' do
Export
- %ul.dropdown-menu
+ %ul.dropdown-menu{:role => 'menu', "aria-labelledby" => "drop1"}
%li= link_to "JSON", "#"
%li= link_to "HTML", "#"
%li.dropdown
- unless Conference.count == 1 && !has_role?(current_user, "admin")
- = link_to "#", :class => "dropdown-toggle" do
+ = link_to "#", :class => "dropdown-toggle", :id => 'drop2', "data-toggle" => 'dropdown' do
Conferences
- %ul.dropdown-menu
+ %ul.dropdown-menu{:role => 'menu', "aria-labelledby" => "drop2"}
- conferences = Conference.order("created_at DESC")
- unless conferences.nil?
- conferences.each do |c|
@@ -54,4 +56,4 @@
- if has_role?(current_user, "admin")
%li= link_to "Users", admin_users_path
%li= link_to "People", admin_people_path
- %li= link_to "Log out", destroy_user_session_path, :method => :delete
\ No newline at end of file
+ %li= link_to "Log out", destroy_user_session_path, :method => :delete
diff --git a/app/views/layouts/_navigation.html.haml b/app/views/layouts/_navigation.html.haml
index f70b528b..ecc3dcc1 100644
--- a/app/views/layouts/_navigation.html.haml
+++ b/app/views/layouts/_navigation.html.haml
@@ -30,3 +30,16 @@
- if user_signed_in?
%li
= link_to('Edit account', edit_user_registration_path)
+ %li.dropdown
+ - unless Conference.count == 1 && !has_role?(current_user, "admin")
+ = link_to "#", :class => "dropdown-toggle" do
+ Conferences
+
+ %ul.dropdown-menu
+ - conferences = Conference.order("created_at DESC")
+ - unless conferences.nil?
+ - conferences.each do |c|
+ - unless @conference == c
+ %li= link_to c.short_title, admin_conference_path(c.short_title)
+ - if has_role?(current_user, "admin")
+ %li= link_to "New Conference", new_admin_conference_path
diff --git a/app/views/proposal/_proposal_form.html.haml b/app/views/proposal/_proposal_form.html.haml
index 2c36f243..1c3ec600 100644
--- a/app/views/proposal/_proposal_form.html.haml
+++ b/app/views/proposal/_proposal_form.html.haml
@@ -6,7 +6,7 @@
= f.input :subtitle, :as => :string
%section#details
= f.input :event_type_id,:as => :select, :collection => @event_types, :include_blank => false, :label => "Session Type"
- = f.input :abstract, :input_html => {:rows => 5},
+ = f.input :abstract, :input_html => {:rows => 5, :class => "span11"},
:required => true, :label => "Session Abstract"
You have used
%span#abstract-count #{@event.abstract_word_count}
@@ -19,13 +19,13 @@
words.
%br
%br
- = f.input :description, :input_html => {:rows => 5}, :hint => "This will only be shown to organizers, not to attendees."
+ = f.input :description, :input_html => {:rows => 5, :class=> "span11"}, :hint => "This will only be shown to organizers, not to attendees."
%section#information
= f.inputs :name => "Your Information" do
= semantic_fields_for @person do |p|
= p.input :public_name, :as => :string, :required => true
= p.input :company, :as => :string, :label => "Affiliation", :hint => "This could be a company, a user group, or nothing at all."
- = p.input :biography, :required => true, :input_html => {:rows => 5, "onkeyup" => "word_count(this, 'biography-count', 150)"}
+ = p.input :biography, :required => true, :input_html => {:rows => 5, :class => 'span11', "onkeyup" => "word_count(this, 'biography-count', 150)"}
You have used
%span#biography-count #{@person.biography_word_count}
words. Biographies are limited to 150 words.
@@ -36,7 +36,7 @@
= f.inputs :name => "Additional Speakers" do
Will there be any additional speakers? If so, please enter their full names, email address, and a short
biography for each.
- = f.input :proposal_additional_speakers, :input_html => {:rows => 5}, :label => false
+ = f.input :proposal_additional_speakers, :input_html => {:rows => 5, :class => "span11"}, :label => false
= f.action :submit, :as => :button, :label => "Submit Session", :button_html => {:class => "btn btn-primary"}
:javascript
@@ -54,4 +54,4 @@
$("#event_abstract").bind('keyup', function() {
word_count(this, 'abstract-count', maxcount);
- } );
\ No newline at end of file
+ } );
diff --git a/app/views/proposal/index.html.haml b/app/views/proposal/index.html.haml
index c0d7915c..e2da2c5f 100644
--- a/app/views/proposal/index.html.haml
+++ b/app/views/proposal/index.html.haml
@@ -18,7 +18,7 @@
- @events.each do |event|
%tr
%td
- = event.title
+ = link_to event.title, conference_proposal_path(@conference.short_title, event.id)
%td
= event.public_state
- if event.confirmed? && !@conference.user_registered?(current_user)
@@ -27,7 +27,7 @@
%td
.pull-right
- if event.transition_possible? :confirm
- = link_to "Confirm", conference_proposal_confirm_path(@conference.short_title, event), :method => :put, :class => "btn btn-mini btn-success"
+ = link_to "Confirm", conference_proposal_confirm_path(@conference.short_title, event, :send_mail=>false), :method => :put, :class => "btn btn-mini btn-success"
- if @conference.cfp_open?
- if !event.unconfirmed? && !event.confirmed?
= link_to "Edit", edit_conference_proposal_path(@conference.short_title, event.id), :class => "btn btn-mini btn-primary"
diff --git a/app/views/proposal/show.html.haml b/app/views/proposal/show.html.haml
new file mode 100644
index 00000000..c91f6713
--- /dev/null
+++ b/app/views/proposal/show.html.haml
@@ -0,0 +1,84 @@
+.row-fluid
+ .span10
+ %h3
+ = @event.title
+ %i= @event.subtitle
+
+ .span2
+ - if @event.transition_possible? :confirm
+ = link_to "Confirm", conference_proposal_confirm_path(@conference.short_title, @event), :method => :put, :class => "btn btn-mini btn-success"
+ = link_to "Withdraw", conference_proposal_path(@conference.short_title, @event.id), :method => :delete,
+ :confirm => "Are you sure you want to withdraw this proposal?", :class => "btn btn-mini btn-danger"
+
+.row-fluid
+ .span12
+ %table.table
+ %tr
+ %td
+ %b Type
+ %td
+ - if @event.event_type
+ = @event.event_type.title
+ - if !@event.track.nil?
+ %tr
+ %td
+ %b Track
+ %td
+ = @event.track.name
+ - if !@event.room.nil?
+ %tr
+ %td
+ %b Room
+ %td
+ = @event.room.name
+ - if !@event.start_time.nil?
+ %tr
+ %td
+ %b Scheduled time
+ %td
+ = @event.start_time
+ %tr
+ %td
+ %b Submitted on
+ %td= @event.created_at
+ %tr
+ %td
+ %b Last updated on
+ %td= @event.updated_at
+ %tr
+ %td
+ %b Abstract
+ %td= simple_format(@event.abstract)
+ %tr
+ %td
+ %b Description
+ %td= simple_format(@event.description)
+ - if @event.event_attachments.size > 0
+ %table.table
+ %thead
+ %th
+ %b Filename
+ %th
+ %b Title
+ %th
+ %b Size
+ %th
+ %b Public?
+ %th
+ %tbody
+ - @event.event_attachments.each do |a|
+ %tr
+ %td
+ = link_to a.attachment_file_name, conference_proposal_event_attachment_path(@conference.short_title, @event.id, a.id)
+ %td
+ = a.title
+ %td
+ = number_to_human_size a.attachment_file_size
+ %td
+ - if a.public?
+ Public
+ - else
+ Not Public
+ %td
+ = link_to "Delete", conference_proposal_event_attachment_path(@conference.short_title, @event.id, a.id),
+ :method => :delete, :confirm => "Are you sure you want to delete this attachment? It's permanant!"