Registration form more-or-less working, workshop scaffold is up
This commit is contained in:
		
							parent
							
								
									4b79de7a24
								
							
						
					
					
						commit
						3d6ad3b432
					
				@ -106,4 +106,7 @@ workshop
 | 
				
			|||||||
	- slug	: string
 | 
						- slug	: string
 | 
				
			||||||
	- info	: text
 | 
						- info	: text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rails g scaffold 
 | 
					rails g scaffold workshop title:string slug:string info:text conference_id:integer workshop_stream_id:integer workshop_presentation_style:integer min_facilitators:integer location_id:integer start_time:datetime end_time:datetime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						- requested_resources	: NtoN[workshop_resource]
 | 
				
			||||||
 | 
						- facilitators			: NtoN[user]
 | 
				
			||||||
							
								
								
									
										3
									
								
								app/assets/javascripts/workshops.js.coffee
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/assets/javascripts/workshops.js.coffee
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					# Place all the behaviors and hooks related to the matching controller here.
 | 
				
			||||||
 | 
					# All this logic will automatically be available in application.js.
 | 
				
			||||||
 | 
					# You can use CoffeeScript in this file: http://coffeescript.org/
 | 
				
			||||||
							
								
								
									
										3
									
								
								app/assets/stylesheets/workshops.css.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								app/assets/stylesheets/workshops.css.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					// Place all the styles related to the workshops controller here.
 | 
				
			||||||
 | 
					// They will automatically be included in application.css.
 | 
				
			||||||
 | 
					// You can use Sass (SCSS) here: http://sass-lang.com/
 | 
				
			||||||
@ -37,6 +37,7 @@ class ConferencesController < ApplicationController
 | 
				
			|||||||
			registration = ConferenceRegistration.find_by(:user_id => current_user.id, :conference_id => @conference.id)
 | 
								registration = ConferenceRegistration.find_by(:user_id => current_user.id, :conference_id => @conference.id)
 | 
				
			||||||
			if registration
 | 
								if registration
 | 
				
			||||||
				registration.conference_registration_responses.destroy_all
 | 
									registration.conference_registration_responses.destroy_all
 | 
				
			||||||
 | 
									registration.is_attending = params[:is_attending]
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				registration = ConferenceRegistration.new(user_id: current_user.id, conference_id: @conference.id, is_attending: params[:is_attending])
 | 
									registration = ConferenceRegistration.new(user_id: current_user.id, conference_id: @conference.id, is_attending: params[:is_attending])
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
@ -53,7 +54,7 @@ class ConferencesController < ApplicationController
 | 
				
			|||||||
				end
 | 
									end
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			data.each do |key, value|
 | 
								data.each do |key, value|
 | 
				
			||||||
				registration.conference_registration_responses << ConferenceRegistrationResponse.new(registration_form_field_id: key.to_i, data: value.to_json.to_s)
 | 
									registration.conference_registration_responses << ConferenceRegistrationResponse.new(registration_form_field_id: key.to_i, data: value.to_json)
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			registration.save!
 | 
								registration.save!
 | 
				
			||||||
			render action: 'show'
 | 
								render action: 'show'
 | 
				
			||||||
@ -134,6 +135,16 @@ class ConferencesController < ApplicationController
 | 
				
			|||||||
		# Use callbacks to share common setup or constraints between actions.
 | 
							# Use callbacks to share common setup or constraints between actions.
 | 
				
			||||||
		def set_conference
 | 
							def set_conference
 | 
				
			||||||
			@conference = Conference.find_by(slug: params[:slug] || params[:conference_slug])
 | 
								@conference = Conference.find_by(slug: params[:slug] || params[:conference_slug])
 | 
				
			||||||
 | 
								set_conference_registration
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							def set_conference_registration
 | 
				
			||||||
 | 
								if !@conference || !current_user
 | 
				
			||||||
 | 
									@conference_registration = nil
 | 
				
			||||||
 | 
									return
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@conference_registration = ConferenceRegistration.find_by(conference_id: @conference.id, user_id: current_user.id)
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# Only allow a trusted parameter "white list" through.
 | 
							# Only allow a trusted parameter "white list" through.
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								app/controllers/workshops_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								app/controllers/workshops_controller.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					class WorkshopsController < ApplicationController
 | 
				
			||||||
 | 
					  before_action :set_workshop, only: [:show, :edit, :update, :destroy]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # GET /workshops
 | 
				
			||||||
 | 
					  def index
 | 
				
			||||||
 | 
					    @workshops = Workshop.all
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # GET /workshops/1
 | 
				
			||||||
 | 
					  def show
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # GET /workshops/new
 | 
				
			||||||
 | 
					  def new
 | 
				
			||||||
 | 
					    @workshop = Workshop.new
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # GET /workshops/1/edit
 | 
				
			||||||
 | 
					  def edit
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # POST /workshops
 | 
				
			||||||
 | 
					  def create
 | 
				
			||||||
 | 
					    @workshop = Workshop.new(workshop_params)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if @workshop.save
 | 
				
			||||||
 | 
					      redirect_to @workshop, notice: 'Workshop was successfully created.'
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      render action: 'new'
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # PATCH/PUT /workshops/1
 | 
				
			||||||
 | 
					  def update
 | 
				
			||||||
 | 
					    if @workshop.update(workshop_params)
 | 
				
			||||||
 | 
					      redirect_to @workshop, notice: 'Workshop was successfully updated.'
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      render action: 'edit'
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # DELETE /workshops/1
 | 
				
			||||||
 | 
					  def destroy
 | 
				
			||||||
 | 
					    @workshop.destroy
 | 
				
			||||||
 | 
					    redirect_to workshops_url, notice: 'Workshop was successfully destroyed.'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					    # Use callbacks to share common setup or constraints between actions.
 | 
				
			||||||
 | 
					    def set_workshop
 | 
				
			||||||
 | 
					      @workshop = Workshop.find(params[:id])
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Only allow a trusted parameter "white list" through.
 | 
				
			||||||
 | 
					    def workshop_params
 | 
				
			||||||
 | 
					      params.require(:workshop).permit(:title, :slug, :info, :conference_id, :workshop_stream_id, :workshop_presentation_style, :min_facilitators, :location_id, :start_time, :end_time)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -90,7 +90,7 @@ module ApplicationHelper
 | 
				
			|||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def _(key, behavior = nil, behavior_size = nil, fake: nil, vars: {}, html: nil, blockData: {}, &block)
 | 
						def _(key, behavior = nil, behavior_size = nil, vars: {}, html: nil, blockData: {}, &block)
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		queued_keys = nil
 | 
							queued_keys = nil
 | 
				
			||||||
		result = nil
 | 
							result = nil
 | 
				
			||||||
@ -201,7 +201,7 @@ module ApplicationHelper
 | 
				
			|||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def field(form, name, type = nil, param = nil, html: nil, help: false, attrs: [], classes: nil, label: nil, placeholder: nil)
 | 
						def field(form, name, type = nil, param = nil, html: nil, help: false, attrs: [], classes: nil, label: nil, placeholder: nil, value: nil, checked: nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if form.is_a?(Symbol) || form.is_a?(String)
 | 
							if form.is_a?(Symbol) || form.is_a?(String)
 | 
				
			||||||
			param = type
 | 
								param = type
 | 
				
			||||||
@ -228,18 +228,24 @@ module ApplicationHelper
 | 
				
			|||||||
		select_prompt = nil
 | 
							select_prompt = nil
 | 
				
			||||||
		show_label = true
 | 
							show_label = true
 | 
				
			||||||
		label_after = true
 | 
							label_after = true
 | 
				
			||||||
 | 
							value_attribute = !form
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if /select(_tag)?$/.match(type.to_s)
 | 
							if /select(_tag)?$/.match(type.to_s)
 | 
				
			||||||
			placeholder = nil
 | 
					 | 
				
			||||||
			if !label
 | 
								if !label
 | 
				
			||||||
				select_prompt = 'Select a ' + name.to_s
 | 
									select_prompt = placeholder || (form ? 'Select a ' + name.to_s : 'Select one')
 | 
				
			||||||
				label_html = ''
 | 
									label_html = ''
 | 
				
			||||||
				show_label = false
 | 
									show_label = false
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
 | 
								placeholder = nil
 | 
				
			||||||
			label_after = false
 | 
								label_after = false
 | 
				
			||||||
			if param && param.is_a?(Array)
 | 
								if param
 | 
				
			||||||
				param = options_for_select(param)
 | 
									if param.is_a?(Array)
 | 
				
			||||||
 | 
										param = options_for_select(param, value)
 | 
				
			||||||
 | 
									elsif param.is_a?(Hash)
 | 
				
			||||||
 | 
										param = options_from_collection_for_select(param, :first, :last, value)
 | 
				
			||||||
				end
 | 
									end
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
								value_attribute = false
 | 
				
			||||||
		elsif type.to_s == 'image_field' || type.to_s == 'user_select_field' || type.to_s == 'organization_select_field'
 | 
							elsif type.to_s == 'image_field' || type.to_s == 'user_select_field' || type.to_s == 'organization_select_field'
 | 
				
			||||||
			placeholder = nil
 | 
								placeholder = nil
 | 
				
			||||||
			label_html = ''
 | 
								label_html = ''
 | 
				
			||||||
@ -316,14 +322,29 @@ module ApplicationHelper
 | 
				
			|||||||
			end
 | 
								end
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			ph = ''
 | 
								ph = ''
 | 
				
			||||||
 | 
								va = ''
 | 
				
			||||||
 | 
								if value_attribute
 | 
				
			||||||
 | 
									if /^(check_box|radio_button)/.match(type.to_s)
 | 
				
			||||||
 | 
										if checked === nil
 | 
				
			||||||
 | 
											checked = value == "on" || value.to_s == "1"
 | 
				
			||||||
 | 
										end
 | 
				
			||||||
 | 
										if /^(radio_button)/.match(type.to_s)
 | 
				
			||||||
 | 
											va = ', "' + value + '", checked'
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
											va = ', "1", checked'
 | 
				
			||||||
 | 
										end
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										va = ', value'
 | 
				
			||||||
 | 
									end
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
			if placeholder
 | 
								if placeholder
 | 
				
			||||||
				if form
 | 
									if form
 | 
				
			||||||
					ph = ", :placeholder => '#{placeholder}'"
 | 
										ph = ", :placeholder => '#{placeholder}'"
 | 
				
			||||||
				else
 | 
									else
 | 
				
			||||||
					ph = ", nil, placeholder: '#{placeholder}'"
 | 
										ph = ", placeholder: '#{placeholder}'"
 | 
				
			||||||
				end
 | 
									end
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			form_html = (form ? "form.#{type} :#{name}" : "#{type} :#{name}") + ph + (param ? ', param' : '')
 | 
								form_html = (form ? "form.#{type} :#{name}" : "#{type} :#{name}") + va + ph + (param ? ', param' : '')
 | 
				
			||||||
			attrs.each_index { |i| form_html += (i >= attrs_used ? ', attrs[' + i.to_s + ']' : '') }
 | 
								attrs.each_index { |i| form_html += (i >= attrs_used ? ', attrs[' + i.to_s + ']' : '') }
 | 
				
			||||||
			if select_prompt
 | 
								if select_prompt
 | 
				
			||||||
				if form
 | 
									if form
 | 
				
			||||||
@ -451,10 +472,11 @@ module ApplicationHelper
 | 
				
			|||||||
		('<p>' + object.send(attribute.to_s).strip.gsub(/\s*\n+\s*/, '</p><p>') + '</p>').html_safe
 | 
							('<p>' + object.send(attribute.to_s).strip.gsub(/\s*\n+\s*/, '</p><p>') + '</p>').html_safe
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def form_field(f)
 | 
						def form_field(f, response = nil)
 | 
				
			||||||
		id = 'field_' + f.id.to_s
 | 
							id = 'field_' + f.id.to_s
 | 
				
			||||||
		html = p(f, 'title')#'<label for="' + id + '">' + f.title + '</label>'
 | 
							html = p(f, 'title')#'<label for="' + id + '">' + f.title + '</label>'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							#options = ActiveSupport::JSON.decode(options)#JSON.parse(f.options)
 | 
				
			||||||
		options = JSON.parse(f.options)
 | 
							options = JSON.parse(f.options)
 | 
				
			||||||
		if f.field_type == 'multiple'
 | 
							if f.field_type == 'multiple'
 | 
				
			||||||
			if f.help
 | 
								if f.help
 | 
				
			||||||
@ -466,12 +488,27 @@ module ApplicationHelper
 | 
				
			|||||||
				kv = value.split(/\s*\|\s*/, 2)
 | 
									kv = value.split(/\s*\|\s*/, 2)
 | 
				
			||||||
				opts[kv[0]] = kv[1]
 | 
									opts[kv[0]] = kv[1]
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								val = response ? ActiveSupport::JSON.decode(response.data) : Hash.new
 | 
				
			||||||
 | 
								#val = nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if f.repeats?
 | 
				
			||||||
 | 
									is_array = f.is_array?
 | 
				
			||||||
				opts.each do |key, value|
 | 
									opts.each do |key, value|
 | 
				
			||||||
					#html += self.send(options['selection_type'] + '_tag', 'field-' + id)
 | 
										#html += self.send(options['selection_type'] + '_tag', 'field-' + id)
 | 
				
			||||||
				html += field((id + '_' + key), options['selection_type'] + '_tag', label: value)
 | 
										#ActiveSupport::JSON.decode(key)
 | 
				
			||||||
 | 
										if is_array
 | 
				
			||||||
 | 
											#x
 | 
				
			||||||
 | 
										end
 | 
				
			||||||
 | 
										html += field((id + (is_array ? ('_' + key) : '')).to_sym, options['selection_type'] + '_tag', label: value, value: is_array ? (val ? val[key] : nil) : key, checked: is_array ? (val[key] == "1" || val[key] == "on") : val.to_s == key.to_s)
 | 
				
			||||||
				end
 | 
									end
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
			html += field(id.to_sym, options['input_type'] + '_tag', label: false, placeholder: f.help)
 | 
									html += field(id.to_sym, options['selection_type'] + '_tag', opts, value: val)
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
 | 
								#html += collection_check_boxes nil, nil, opts, nil, :key
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								#x
 | 
				
			||||||
 | 
								html += field(id.to_sym, options['input_type'] + '_tag', label: false, placeholder: f.help, value: response ? ActiveSupport::JSON.decode(response.data) : nil)
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		html.html_safe
 | 
							html.html_safe
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								app/helpers/workshops_helper.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/helpers/workshops_helper.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					module WorkshopsHelper
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -56,6 +56,14 @@ class RegistrationFormField < ActiveRecord::Base
 | 
				
			|||||||
		o
 | 
							o
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def repeats?()
 | 
				
			||||||
 | 
							field_type.to_s == 'multiple' && selection_type.to_s != 'select'
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						def is_array?()
 | 
				
			||||||
 | 
							field_type.to_s == 'multiple' && selection_type.to_s != 'radio_button'
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private
 | 
						private
 | 
				
			||||||
		def get_from_options(key)
 | 
							def get_from_options(key)
 | 
				
			||||||
			if options
 | 
								if options
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								app/models/workshop.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/models/workshop.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					class Workshop < ActiveRecord::Base
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -1,7 +1,8 @@
 | 
				
			|||||||
.columns.medium-8
 | 
					.columns.medium-8
 | 
				
			||||||
	= field :is_attending, :select_tag, ConferenceRegistration::AttendingOptions, label: 'Are you attending?'
 | 
						= field :is_attending, :select_tag, ConferenceRegistration::AttendingOptions, label: 'Are you attending?', value: @conference_registration.try(:is_attending)
 | 
				
			||||||
	%ol
 | 
						%ol
 | 
				
			||||||
		- @conference.registration_form_fields.each do |ff|
 | 
							- @conference.registration_form_fields.each do |ff|
 | 
				
			||||||
			%li
 | 
								%li
 | 
				
			||||||
				= form_field ff
 | 
									- response = @conference_registration ? ConferenceRegistrationResponse.find_by(conference_registration_id: @conference_registration.id, registration_form_field_id: ff.id) : nil
 | 
				
			||||||
 | 
									= form_field ff, response
 | 
				
			||||||
= actions :register
 | 
					= actions :register
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										40
									
								
								app/views/workshops/_form.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								app/views/workshops/_form.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					= form_for @workshop do |f|
 | 
				
			||||||
 | 
					  - if @workshop.errors.any?
 | 
				
			||||||
 | 
					    #error_explanation
 | 
				
			||||||
 | 
					      %h2= "#{pluralize(@workshop.errors.count, "error")} prohibited this workshop from being saved:"
 | 
				
			||||||
 | 
					      %ul
 | 
				
			||||||
 | 
					        - @workshop.errors.full_messages.each do |msg|
 | 
				
			||||||
 | 
					          %li= msg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :title
 | 
				
			||||||
 | 
					    = f.text_field :title
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :slug
 | 
				
			||||||
 | 
					    = f.text_field :slug
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :info
 | 
				
			||||||
 | 
					    = f.text_area :info
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :conference_id
 | 
				
			||||||
 | 
					    = f.number_field :conference_id
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :workshop_stream_id
 | 
				
			||||||
 | 
					    = f.number_field :workshop_stream_id
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :workshop_presentation_style
 | 
				
			||||||
 | 
					    = f.number_field :workshop_presentation_style
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :min_facilitators
 | 
				
			||||||
 | 
					    = f.number_field :min_facilitators
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :location_id
 | 
				
			||||||
 | 
					    = f.number_field :location_id
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :start_time
 | 
				
			||||||
 | 
					    = f.datetime_select :start_time
 | 
				
			||||||
 | 
					  .field
 | 
				
			||||||
 | 
					    = f.label :end_time
 | 
				
			||||||
 | 
					    = f.datetime_select :end_time
 | 
				
			||||||
 | 
					  .actions
 | 
				
			||||||
 | 
					    = f.submit 'Save'
 | 
				
			||||||
							
								
								
									
										7
									
								
								app/views/workshops/edit.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/views/workshops/edit.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					%h1 Editing workshop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					= render 'form'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					= link_to 'Show', @workshop
 | 
				
			||||||
 | 
					\|
 | 
				
			||||||
 | 
					= link_to 'Back', workshops_path
 | 
				
			||||||
							
								
								
									
										37
									
								
								app/views/workshops/index.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								app/views/workshops/index.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					%h1 Listing workshops
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%table
 | 
				
			||||||
 | 
					  %tr
 | 
				
			||||||
 | 
					    %th Title
 | 
				
			||||||
 | 
					    %th Slug
 | 
				
			||||||
 | 
					    %th Info
 | 
				
			||||||
 | 
					    %th Conference
 | 
				
			||||||
 | 
					    %th Workshop stream
 | 
				
			||||||
 | 
					    %th Workshop presentation style
 | 
				
			||||||
 | 
					    %th Min facilitators
 | 
				
			||||||
 | 
					    %th Location
 | 
				
			||||||
 | 
					    %th Start time
 | 
				
			||||||
 | 
					    %th End time
 | 
				
			||||||
 | 
					    %th
 | 
				
			||||||
 | 
					    %th
 | 
				
			||||||
 | 
					    %th
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - @workshops.each do |workshop|
 | 
				
			||||||
 | 
					    %tr
 | 
				
			||||||
 | 
					      %td= workshop.title
 | 
				
			||||||
 | 
					      %td= workshop.slug
 | 
				
			||||||
 | 
					      %td= workshop.info
 | 
				
			||||||
 | 
					      %td= workshop.conference_id
 | 
				
			||||||
 | 
					      %td= workshop.workshop_stream_id
 | 
				
			||||||
 | 
					      %td= workshop.workshop_presentation_style
 | 
				
			||||||
 | 
					      %td= workshop.min_facilitators
 | 
				
			||||||
 | 
					      %td= workshop.location_id
 | 
				
			||||||
 | 
					      %td= workshop.start_time
 | 
				
			||||||
 | 
					      %td= workshop.end_time
 | 
				
			||||||
 | 
					      %td= link_to 'Show', workshop
 | 
				
			||||||
 | 
					      %td= link_to 'Edit', edit_workshop_path(workshop)
 | 
				
			||||||
 | 
					      %td= link_to 'Destroy', workshop, :method => :delete, :data => { :confirm => 'Are you sure?' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%br
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					= link_to 'New Workshop', new_workshop_path
 | 
				
			||||||
							
								
								
									
										5
									
								
								app/views/workshops/new.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app/views/workshops/new.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					%h1 New workshop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					= render 'form'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					= link_to 'Back', workshops_path
 | 
				
			||||||
							
								
								
									
										36
									
								
								app/views/workshops/show.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								app/views/workshops/show.html.haml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					%p#notice= notice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Title:
 | 
				
			||||||
 | 
					  = @workshop.title
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Slug:
 | 
				
			||||||
 | 
					  = @workshop.slug
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Info:
 | 
				
			||||||
 | 
					  = @workshop.info
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Conference:
 | 
				
			||||||
 | 
					  = @workshop.conference_id
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Workshop stream:
 | 
				
			||||||
 | 
					  = @workshop.workshop_stream_id
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Workshop presentation style:
 | 
				
			||||||
 | 
					  = @workshop.workshop_presentation_style
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Min facilitators:
 | 
				
			||||||
 | 
					  = @workshop.min_facilitators
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Location:
 | 
				
			||||||
 | 
					  = @workshop.location_id
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b Start time:
 | 
				
			||||||
 | 
					  = @workshop.start_time
 | 
				
			||||||
 | 
					%p
 | 
				
			||||||
 | 
					  %b End time:
 | 
				
			||||||
 | 
					  = @workshop.end_time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					= link_to 'Edit', edit_workshop_path(@workshop)
 | 
				
			||||||
 | 
					\|
 | 
				
			||||||
 | 
					= link_to 'Back', workshops_path
 | 
				
			||||||
@ -1,5 +1,7 @@
 | 
				
			|||||||
BikeBike::Application.routes.draw do
 | 
					BikeBike::Application.routes.draw do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  resources :workshops
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#resources :conference_registration_responses
 | 
						#resources :conference_registration_responses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#resources :conference_registrations
 | 
						#resources :conference_registrations
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								db/migrate/20140314025647_create_workshops.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								db/migrate/20140314025647_create_workshops.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					class CreateWorkshops < ActiveRecord::Migration
 | 
				
			||||||
 | 
					  def change
 | 
				
			||||||
 | 
					    create_table :workshops do |t|
 | 
				
			||||||
 | 
					      t.string :title
 | 
				
			||||||
 | 
					      t.string :slug
 | 
				
			||||||
 | 
					      t.text :info
 | 
				
			||||||
 | 
					      t.integer :conference_id
 | 
				
			||||||
 | 
					      t.integer :workshop_stream_id
 | 
				
			||||||
 | 
					      t.integer :workshop_presentation_style
 | 
				
			||||||
 | 
					      t.integer :min_facilitators
 | 
				
			||||||
 | 
					      t.integer :location_id
 | 
				
			||||||
 | 
					      t.datetime :start_time
 | 
				
			||||||
 | 
					      t.datetime :end_time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      t.timestamps
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										17
									
								
								db/schema.rb
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								db/schema.rb
									
									
									
									
									
								
							@ -11,7 +11,7 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# It's strongly recommended that you check this file into your version control system.
 | 
					# It's strongly recommended that you check this file into your version control system.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ActiveRecord::Schema.define(version: 20140308173325) do
 | 
					ActiveRecord::Schema.define(version: 20140314025647) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # These are extensions that must be enabled in order to support this database
 | 
					  # These are extensions that must be enabled in order to support this database
 | 
				
			||||||
  enable_extension "plpgsql"
 | 
					  enable_extension "plpgsql"
 | 
				
			||||||
@ -228,4 +228,19 @@ ActiveRecord::Schema.define(version: 20140308173325) do
 | 
				
			|||||||
    t.datetime "updated_at"
 | 
					    t.datetime "updated_at"
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "workshops", force: true do |t|
 | 
				
			||||||
 | 
					    t.string   "title"
 | 
				
			||||||
 | 
					    t.string   "slug"
 | 
				
			||||||
 | 
					    t.text     "info"
 | 
				
			||||||
 | 
					    t.integer  "conference_id"
 | 
				
			||||||
 | 
					    t.integer  "workshop_stream_id"
 | 
				
			||||||
 | 
					    t.integer  "workshop_presentation_style"
 | 
				
			||||||
 | 
					    t.integer  "min_facilitators"
 | 
				
			||||||
 | 
					    t.integer  "location_id"
 | 
				
			||||||
 | 
					    t.datetime "start_time"
 | 
				
			||||||
 | 
					    t.datetime "end_time"
 | 
				
			||||||
 | 
					    t.datetime "created_at"
 | 
				
			||||||
 | 
					    t.datetime "updated_at"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										49
									
								
								test/controllers/workshops_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								test/controllers/workshops_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					require 'test_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WorkshopsControllerTest < ActionController::TestCase
 | 
				
			||||||
 | 
					  setup do
 | 
				
			||||||
 | 
					    @workshop = workshops(:one)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should get index" do
 | 
				
			||||||
 | 
					    get :index
 | 
				
			||||||
 | 
					    assert_response :success
 | 
				
			||||||
 | 
					    assert_not_nil assigns(:workshops)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should get new" do
 | 
				
			||||||
 | 
					    get :new
 | 
				
			||||||
 | 
					    assert_response :success
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should create workshop" do
 | 
				
			||||||
 | 
					    assert_difference('Workshop.count') do
 | 
				
			||||||
 | 
					      post :create, workshop: { conference_id: @workshop.conference_id, end_time: @workshop.end_time, info: @workshop.info, location_id: @workshop.location_id, min_facilitators: @workshop.min_facilitators, slug: @workshop.slug, start_time: @workshop.start_time, title: @workshop.title, workshop_presentation_style: @workshop.workshop_presentation_style, workshop_stream_id: @workshop.workshop_stream_id }
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_redirected_to workshop_path(assigns(:workshop))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should show workshop" do
 | 
				
			||||||
 | 
					    get :show, id: @workshop
 | 
				
			||||||
 | 
					    assert_response :success
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should get edit" do
 | 
				
			||||||
 | 
					    get :edit, id: @workshop
 | 
				
			||||||
 | 
					    assert_response :success
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should update workshop" do
 | 
				
			||||||
 | 
					    patch :update, id: @workshop, workshop: { conference_id: @workshop.conference_id, end_time: @workshop.end_time, info: @workshop.info, location_id: @workshop.location_id, min_facilitators: @workshop.min_facilitators, slug: @workshop.slug, start_time: @workshop.start_time, title: @workshop.title, workshop_presentation_style: @workshop.workshop_presentation_style, workshop_stream_id: @workshop.workshop_stream_id }
 | 
				
			||||||
 | 
					    assert_redirected_to workshop_path(assigns(:workshop))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  test "should destroy workshop" do
 | 
				
			||||||
 | 
					    assert_difference('Workshop.count', -1) do
 | 
				
			||||||
 | 
					      delete :destroy, id: @workshop
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert_redirected_to workshops_path
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										16
									
								
								test/factories/workshops.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								test/factories/workshops.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					# Read about factories at https://github.com/thoughtbot/factory_girl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FactoryGirl.define do
 | 
				
			||||||
 | 
					  factory :workshop do
 | 
				
			||||||
 | 
					    title "MyString"
 | 
				
			||||||
 | 
					    slug "MyString"
 | 
				
			||||||
 | 
					    info "MyText"
 | 
				
			||||||
 | 
					    conference_id 1
 | 
				
			||||||
 | 
					    workshop_stream_id 1
 | 
				
			||||||
 | 
					    workshop_presentation_style 1
 | 
				
			||||||
 | 
					    min_facilitators 1
 | 
				
			||||||
 | 
					    location_id 1
 | 
				
			||||||
 | 
					    start_time "2014-03-13 20:56:47"
 | 
				
			||||||
 | 
					    end_time "2014-03-13 20:56:47"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										4
									
								
								test/helpers/workshops_helper_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/helpers/workshops_helper_test.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					require 'test_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WorkshopsHelperTest < ActionView::TestCase
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										7
									
								
								test/models/workshop_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/models/workshop_test.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					require 'test_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WorkshopTest < ActiveSupport::TestCase
 | 
				
			||||||
 | 
					  # test "the truth" do
 | 
				
			||||||
 | 
					  #   assert true
 | 
				
			||||||
 | 
					  # end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user