Merge pull request #33 from differentreality/final_difficulty_levels
Add difficulty levels
This commit is contained in:
commit
4ed72d4967
15 changed files with 119 additions and 3 deletions
30
app/controllers/admin/difficulty_levels_controller.rb
Normal file
30
app/controllers/admin/difficulty_levels_controller.rb
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
class Admin::DifficultyLevelsController < ApplicationController
|
||||||
|
before_filter :verify_organizer
|
||||||
|
|
||||||
|
def index
|
||||||
|
@conference = Conference.find_all_by_short_title(params[:conference_id]).first
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @conference.update_attributes(params[:conference])
|
||||||
|
if !(@conference.difficulty_levels.count > 0) && @conference.use_difficulty_levels == true
|
||||||
|
begin
|
||||||
|
@conference.use_difficulty_levels = false
|
||||||
|
@conference.save!
|
||||||
|
flash[:error] = "You cannot enable the usage of difficulty levels without having set any levels."
|
||||||
|
redirect_to(admin_conference_difficulty_levels_path(:conference_id => @conference.short_title))
|
||||||
|
rescue ActiveRecord::RecordInvalid
|
||||||
|
flash[:error] = "Something went wrong. Difficulty Levels update failed."
|
||||||
|
redirect_to(admin_conference_difficulty_levels_path(:conference_id => @conference.short_title))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
flash[:notice] = "Difficulty Levels were successfully updated."
|
||||||
|
redirect_to(admin_conference_difficulty_levels_path(:conference_id => @conference.short_title))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
flash[:error] = "Difficulty Levels update failed."
|
||||||
|
redirect_to(admin_conference_difficulty_levels_path(:conference_id => @conference.short_title))
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -71,6 +71,7 @@ class Admin::EventsController < ApplicationController
|
||||||
@comments = @event.root_comments
|
@comments = @event.root_comments
|
||||||
@comment_count = @event.comment_threads.count
|
@comment_count = @event.comment_threads.count
|
||||||
@ratings = @event.votes.includes(:person)
|
@ratings = @event.votes.includes(:person)
|
||||||
|
@difficulty_levels = @conference.difficulty_levels
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
|
|
@ -102,6 +103,9 @@ class Admin::EventsController < ApplicationController
|
||||||
if params.has_key? :event_type_id
|
if params.has_key? :event_type_id
|
||||||
@event.update_attribute(:event_type_id, params[:event_type_id])
|
@event.update_attribute(:event_type_id, params[:event_type_id])
|
||||||
end
|
end
|
||||||
|
if params.has_key? :difficulty_level_id
|
||||||
|
@event.update_attribute(:difficulty_level_id, params[:difficulty_level_id])
|
||||||
|
end
|
||||||
if @event.update_attributes(params[:event]) && @event.submitter.update_attributes(params[:person])
|
if @event.update_attributes(params[:event]) && @event.submitter.update_attributes(params[:person])
|
||||||
flash[:notice] = "Successfully updated #{@event.title}."
|
flash[:notice] = "Successfully updated #{@event.title}."
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ class Conference < ActiveRecord::Base
|
||||||
attr_accessible :title, :short_title, :social_tag, :contact_email, :timezone, :html_export_path,
|
attr_accessible :title, :short_title, :social_tag, :contact_email, :timezone, :html_export_path,
|
||||||
:start_date, :end_date, :rooms_attributes, :tracks_attributes, :dietary_choices_attributes,
|
:start_date, :end_date, :rooms_attributes, :tracks_attributes, :dietary_choices_attributes,
|
||||||
:use_dietary_choices, :use_supporter_levels, :supporter_levels_attributes, :social_events_attributes,
|
:use_dietary_choices, :use_supporter_levels, :supporter_levels_attributes, :social_events_attributes,
|
||||||
:event_types_attributes, :registration_start_date, :registration_end_date, :logo
|
:event_types_attributes, :difficulty_levels_attributes, :use_difficulty_levels, :registration_start_date, :registration_end_date, :logo
|
||||||
|
|
||||||
has_paper_trail
|
has_paper_trail
|
||||||
|
|
||||||
|
|
@ -15,6 +15,7 @@ class Conference < ActiveRecord::Base
|
||||||
has_many :events, :dependent => :destroy
|
has_many :events, :dependent => :destroy
|
||||||
has_many :event_types, :dependent => :destroy
|
has_many :event_types, :dependent => :destroy
|
||||||
has_many :tracks, :dependent => :destroy
|
has_many :tracks, :dependent => :destroy
|
||||||
|
has_many :difficulty_levels, :dependent => :destroy
|
||||||
has_many :rooms, :dependent => :destroy
|
has_many :rooms, :dependent => :destroy
|
||||||
has_many :registrations, :dependent => :destroy
|
has_many :registrations, :dependent => :destroy
|
||||||
|
|
||||||
|
|
@ -22,6 +23,7 @@ class Conference < ActiveRecord::Base
|
||||||
|
|
||||||
accepts_nested_attributes_for :rooms, :reject_if => proc {|r| r["name"].blank?}, :allow_destroy => true
|
accepts_nested_attributes_for :rooms, :reject_if => proc {|r| r["name"].blank?}, :allow_destroy => true
|
||||||
accepts_nested_attributes_for :tracks, :reject_if => proc {|r| r["name"].blank?}, :allow_destroy => true
|
accepts_nested_attributes_for :tracks, :reject_if => proc {|r| r["name"].blank?}, :allow_destroy => true
|
||||||
|
accepts_nested_attributes_for :difficulty_levels, :allow_destroy => true
|
||||||
accepts_nested_attributes_for :social_events, :allow_destroy => true
|
accepts_nested_attributes_for :social_events, :allow_destroy => true
|
||||||
accepts_nested_attributes_for :venue
|
accepts_nested_attributes_for :venue
|
||||||
accepts_nested_attributes_for :dietary_choices, :allow_destroy => true
|
accepts_nested_attributes_for :dietary_choices, :allow_destroy => true
|
||||||
|
|
@ -41,6 +43,7 @@ class Conference < ActiveRecord::Base
|
||||||
:social_tag
|
:social_tag
|
||||||
validates_uniqueness_of :short_title
|
validates_uniqueness_of :short_title
|
||||||
validates_format_of :short_title, :with => /^[a-zA-Z0-9_-]*$/
|
validates_format_of :short_title, :with => /^[a-zA-Z0-9_-]*$/
|
||||||
|
|
||||||
before_create :generate_guid
|
before_create :generate_guid
|
||||||
before_create :create_venue
|
before_create :create_venue
|
||||||
before_create :create_email_settings
|
before_create :create_email_settings
|
||||||
|
|
|
||||||
8
app/models/difficulty_level.rb
Normal file
8
app/models/difficulty_level.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
class DifficultyLevel < ActiveRecord::Base
|
||||||
|
attr_accessible :title, :description, :color
|
||||||
|
|
||||||
|
belongs_to :conference
|
||||||
|
has_many :events
|
||||||
|
|
||||||
|
validates :title, :presence => true
|
||||||
|
end
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
class Event < ActiveRecord::Base
|
class Event < ActiveRecord::Base
|
||||||
include ActiveRecord::Transitions
|
include ActiveRecord::Transitions
|
||||||
has_paper_trail
|
has_paper_trail
|
||||||
attr_accessible :title, :subtitle, :abstract, :description, :event_type_id, :people_attributes, :person,
|
attr_accessible :title, :subtitle, :abstract, :description, :event_type_id, :people_attributes, :person, :proposal_additional_speakers, :track_id, :video_id, :video_type, :require_registration, :difficulty_level_id
|
||||||
:proposal_additional_speakers, :track_id, :video_id, :video_type, :require_registration
|
|
||||||
acts_as_commentable
|
acts_as_commentable
|
||||||
|
|
||||||
has_many :event_people, :dependent => :destroy
|
has_many :event_people, :dependent => :destroy
|
||||||
|
|
@ -17,6 +17,7 @@ class Event < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :track
|
belongs_to :track
|
||||||
belongs_to :room
|
belongs_to :room
|
||||||
|
belongs_to :difficulty_level
|
||||||
belongs_to :conference
|
belongs_to :conference
|
||||||
|
|
||||||
accepts_nested_attributes_for :event_people, :allow_destroy => true
|
accepts_nested_attributes_for :event_people, :allow_destroy => true
|
||||||
|
|
@ -92,6 +93,7 @@ class Event < ActiveRecord::Base
|
||||||
person
|
person
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def as_json(options)
|
def as_json(options)
|
||||||
json = super(options)
|
json = super(options)
|
||||||
|
|
||||||
|
|
@ -106,6 +108,7 @@ class Event < ActiveRecord::Base
|
||||||
else
|
else
|
||||||
json[:track_color] = self.track.color;
|
json[:track_color] = self.track.color;
|
||||||
end
|
end
|
||||||
|
|
||||||
if self.event_type.nil?
|
if self.event_type.nil?
|
||||||
json[:length] = 25
|
json[:length] = 25
|
||||||
else
|
else
|
||||||
|
|
@ -114,6 +117,7 @@ class Event < ActiveRecord::Base
|
||||||
|
|
||||||
json
|
json
|
||||||
end
|
end
|
||||||
|
|
||||||
def transition_possible?(transition)
|
def transition_possible?(transition)
|
||||||
self.class.state_machine.events_for(self.current_state).include?(transition)
|
self.class.state_machine.events_for(self.current_state).include?(transition)
|
||||||
end
|
end
|
||||||
|
|
@ -125,6 +129,7 @@ class Event < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def process_acceptance(options)
|
def process_acceptance(options)
|
||||||
if options[:send_mail] == "true"
|
if options[:send_mail] == "true"
|
||||||
Rails.logger.debug "Sending acceptance mail"
|
Rails.logger.debug "Sending acceptance mail"
|
||||||
|
|
@ -156,6 +161,7 @@ class Event < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
public_state
|
public_state
|
||||||
end
|
end
|
||||||
|
|
||||||
def abstract_word_count
|
def abstract_word_count
|
||||||
if self.abstract.nil?
|
if self.abstract.nil?
|
||||||
0
|
0
|
||||||
|
|
@ -163,6 +169,7 @@ class Event < ActiveRecord::Base
|
||||||
self.abstract.split.size
|
self.abstract.split.size
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def abstract_limit
|
def abstract_limit
|
||||||
|
|
@ -184,6 +191,7 @@ class Event < ActiveRecord::Base
|
||||||
errors.add(:person_biography, "must be filled out")
|
errors.add(:person_biography, "must be filled out")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def generate_guid
|
def generate_guid
|
||||||
begin
|
begin
|
||||||
guid = SecureRandom.urlsafe_base64
|
guid = SecureRandom.urlsafe_base64
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,10 @@
|
||||||
%li.active= link_to "Event Types", "#"
|
%li.active= link_to "Event Types", "#"
|
||||||
- else
|
- else
|
||||||
%li= link_to "Event Types", admin_conference_eventtype_list_path(@conference.short_title)
|
%li= link_to "Event Types", admin_conference_eventtype_list_path(@conference.short_title)
|
||||||
|
- if activated == "Difficulty Levels"
|
||||||
|
%li.active= link_to "Difficulty Levels", "#"
|
||||||
|
- else
|
||||||
|
%li= link_to "Difficulty Levels", admin_conference_difficulty_levels_path(@conference.short_title)
|
||||||
- if activated == "Social Events"
|
- if activated == "Social Events"
|
||||||
%li.active= link_to "Social Events", "#"
|
%li.active= link_to "Social Events", "#"
|
||||||
- else
|
- else
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
.nested-fields
|
||||||
|
= f.inputs do
|
||||||
|
= f.input :title, :required => true
|
||||||
|
= f.input :description, :input_html => {:rows => 3, :class => "span6"}
|
||||||
|
= f.input :color, :input_html => {:size => 6, :type => "color"}
|
||||||
|
= remove_association_link :difficulty_level, f
|
||||||
9
app/views/admin/difficulty_levels/index.html.haml
Normal file
9
app/views/admin/difficulty_levels/index.html.haml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
.container-fluid
|
||||||
|
.row-fluid
|
||||||
|
.span3
|
||||||
|
= render 'admin/conference/sidebar', :activated => "Difficulty Levels"
|
||||||
|
.span9
|
||||||
|
= semantic_form_for(@conference, :url => admin_conference_difficulty_levels_path(@conference.short_title)) do |f|
|
||||||
|
= f.input :use_difficulty_levels, :label => false
|
||||||
|
= dynamic_association :difficulty_levels, "Difficulty_Levels", f
|
||||||
|
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}
|
||||||
|
|
@ -71,6 +71,21 @@
|
||||||
- @tracks.each do |track|
|
- @tracks.each do |track|
|
||||||
%li= link_to track.name, admin_conference_event_path(@conference.short_title, @event, :track_id => track.id) ,
|
%li= link_to track.name, admin_conference_event_path(@conference.short_title, @event, :track_id => track.id) ,
|
||||||
:method => :put, :track_id => track.id
|
:method => :put, :track_id => track.id
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
%b Difficulty
|
||||||
|
%td
|
||||||
|
.dropdown
|
||||||
|
= link_to "#", :class => "dropdown-toggle", :id => "difficulty-dropdown" do
|
||||||
|
- if @event.difficulty_level.nil?
|
||||||
|
Difficulty Level
|
||||||
|
- else
|
||||||
|
= @event.difficulty_level.title
|
||||||
|
<b class="caret"></b>
|
||||||
|
%ul.dropdown-menu
|
||||||
|
- @difficulty_levels.each do |difficulty|
|
||||||
|
%li= link_to difficulty.title, admin_conference_event_path(@conference.short_title, @event, :difficulty_level_id => difficulty.id) ,
|
||||||
|
:method => :put, :difficulty_level_id => difficulty.id
|
||||||
- if !@event.room.nil?
|
- if !@event.room.nil?
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@
|
||||||
%b Type
|
%b Type
|
||||||
%th
|
%th
|
||||||
%b Track
|
%b Track
|
||||||
|
%th
|
||||||
|
%b Difficulty
|
||||||
%th
|
%th
|
||||||
%b State
|
%b State
|
||||||
- @events.each do |event|
|
- @events.each do |event|
|
||||||
|
|
@ -92,6 +94,8 @@
|
||||||
- @tracks.each do |track|
|
- @tracks.each do |track|
|
||||||
%li= link_to track.name, admin_conference_event_path(@conference.short_title, event, :track_id => track.id) ,
|
%li= link_to track.name, admin_conference_event_path(@conference.short_title, event, :track_id => track.id) ,
|
||||||
:method => :put, :track_id => track.id
|
:method => :put, :track_id => track.id
|
||||||
|
%td
|
||||||
|
= event.difficulty_level.title if @conference.use_difficulty_levels && event.difficulty_level
|
||||||
%td
|
%td
|
||||||
- if event.state == "withdrawn"
|
- if event.state == "withdrawn"
|
||||||
Withdrawn
|
Withdrawn
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
%br
|
%br
|
||||||
- else
|
- else
|
||||||
= f.input :event_type_id,:as => :select, :collection => @event_types.map {|x| ["#{x.title} - #{show_time(x.length)}", x.id]}, :include_blank => false, :label => "Session Type"
|
= f.input :event_type_id,:as => :select, :collection => @event_types.map {|x| ["#{x.title} - #{show_time(x.length)}", x.id]}, :include_blank => false, :label => "Session Type"
|
||||||
|
= f.input :difficulty_level, :as => :select, :collection => @conference.difficulty_levels, :include_blank => "(Please select)" if @conference.use_difficulty_levels
|
||||||
= f.input :require_registration
|
= f.input :require_registration
|
||||||
= f.input :abstract, :input_html => {:rows => 5, :class => "span11"},
|
= f.input :abstract, :input_html => {:rows => 5, :class => "span11"},
|
||||||
:required => true, :label => "Session Abstract"
|
:required => true, :label => "Session Abstract"
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,8 @@ Osem::Application.routes.draw do
|
||||||
post "/cfp" => "callforpapers#create", :as => "cfp_create"
|
post "/cfp" => "callforpapers#create", :as => "cfp_create"
|
||||||
get "/event_types" => "eventtype#show", :as => "eventtype_list"
|
get "/event_types" => "eventtype#show", :as => "eventtype_list"
|
||||||
put "/event_types" => "eventtype#update", :as => "eventtype_update"
|
put "/event_types" => "eventtype#update", :as => "eventtype_update"
|
||||||
|
put "/difficulty_levels" => "difficulty_levels#update"
|
||||||
|
resources :difficulty_levels
|
||||||
resources :events do
|
resources :events do
|
||||||
member do
|
member do
|
||||||
post :comment
|
post :comment
|
||||||
|
|
|
||||||
12
db/migrate/20140212172244_create_difficulty_levels.rb
Normal file
12
db/migrate/20140212172244_create_difficulty_levels.rb
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
class CreateDifficultyLevels < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :difficulty_levels do |t|
|
||||||
|
t.references :conference
|
||||||
|
t.string :title
|
||||||
|
t.text :description
|
||||||
|
t.string :color, :default => "#ffffff"
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddUseDifficultyLevelsToConference < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :conferences, :use_difficulty_levels, :boolean, :default => false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddDifficultyLevelIdToEvents < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :events, :difficulty_level_id, :integer
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Add table
Add a link
Reference in a new issue