Browse Source

Merge branch 'master' of https://github.com/bikebike/BikeBike

Conflicts:
	Gemfile
	Gemfile.lock
development
Graham Kaplan 11 years ago
parent
commit
abaf5b55a4
  1. 11
      DB specs.txt
  2. 27
      Gemfile
  3. 36
      Gemfile.lock
  4. 1
      app/assets/javascripts/application.js.coffee
  5. 3
      app/assets/javascripts/event_types.js.coffee
  6. 3
      app/assets/javascripts/events.js.coffee
  7. 3
      app/assets/javascripts/workshop_facilitators.js.coffee
  8. 3
      app/assets/javascripts/workshop_requested_resources.js.coffee
  9. 3
      app/assets/javascripts/workshops.js.coffee
  10. 3
      app/assets/stylesheets/event_types.css.scss
  11. 3
      app/assets/stylesheets/events.css.scss
  12. 3
      app/assets/stylesheets/workshop_facilitators.css.scss
  13. 3
      app/assets/stylesheets/workshop_requested_resources.css.scss
  14. 3
      app/assets/stylesheets/workshops.css.scss
  15. 21
      app/controllers/conferences_controller.rb
  16. 58
      app/controllers/event_types_controller.rb
  17. 58
      app/controllers/events_controller.rb
  18. 9
      app/controllers/registration_form_fields_controller.rb
  19. 58
      app/controllers/workshop_facilitators_controller.rb
  20. 58
      app/controllers/workshop_requested_resources_controller.rb
  21. 69
      app/controllers/workshops_controller.rb
  22. 78
      app/helpers/application_helper.rb
  23. 2
      app/helpers/event_types_helper.rb
  24. 2
      app/helpers/events_helper.rb
  25. 2
      app/helpers/workshop_facilitators_helper.rb
  26. 2
      app/helpers/workshop_requested_resources_helper.rb
  27. 4
      app/helpers/workshops_helper.rb
  28. 2
      app/models/conference.rb
  29. 2
      app/models/event.rb
  30. 2
      app/models/event_type.rb
  31. 8
      app/models/registration_form_field.rb
  32. 7
      app/models/workshop.rb
  33. 2
      app/models/workshop_facilitator.rb
  34. 2
      app/models/workshop_requested_resource.rb
  35. 5
      app/views/conferences/_registration_register.html.haml
  36. 16
      app/views/event_types/_form.html.haml
  37. 7
      app/views/event_types/edit.html.haml
  38. 21
      app/views/event_types/index.html.haml
  39. 5
      app/views/event_types/new.html.haml
  40. 12
      app/views/event_types/show.html.haml
  41. 34
      app/views/events/_form.html.haml
  42. 7
      app/views/events/edit.html.haml
  43. 33
      app/views/events/index.html.haml
  44. 5
      app/views/events/new.html.haml
  45. 30
      app/views/events/show.html.haml
  46. 3
      app/views/registration_form_fields/_form.html.haml
  47. 19
      app/views/workshop_facilitators/_form.html.haml
  48. 7
      app/views/workshop_facilitators/edit.html.haml
  49. 23
      app/views/workshop_facilitators/index.html.haml
  50. 5
      app/views/workshop_facilitators/new.html.haml
  51. 15
      app/views/workshop_facilitators/show.html.haml
  52. 19
      app/views/workshop_requested_resources/_form.html.haml
  53. 7
      app/views/workshop_requested_resources/edit.html.haml
  54. 23
      app/views/workshop_requested_resources/index.html.haml
  55. 5
      app/views/workshop_requested_resources/new.html.haml
  56. 15
      app/views/workshop_requested_resources/show.html.haml
  57. 23
      app/views/workshops/_form.html.haml
  58. 6
      app/views/workshops/edit.html.haml
  59. 35
      app/views/workshops/index.html.haml
  60. 6
      app/views/workshops/new.html.haml
  61. 30
      app/views/workshops/show.html.haml
  62. 1
      config/application.rb
  63. 9
      config/environments/development.rb
  64. 10
      config/routes.rb
  65. 18
      db/migrate/20140314025647_create_workshops.rb
  66. 11
      db/migrate/20140315175914_create_workshop_facilitators.rb
  67. 11
      db/migrate/20140315181222_create_workshop_requested_resources.rb
  68. 10
      db/migrate/20140315183121_create_event_types.rb
  69. 16
      db/migrate/20140315183241_create_events.rb
  70. 59
      db/schema.rb
  71. 8
      spec/features/pages_spec.rb
  72. 49
      test/controllers/event_types_controller_test.rb
  73. 49
      test/controllers/events_controller_test.rb
  74. 49
      test/controllers/workshop_facilitators_controller_test.rb
  75. 49
      test/controllers/workshop_requested_resources_controller_test.rb
  76. 49
      test/controllers/workshops_controller_test.rb
  77. 8
      test/factories/event_types.rb
  78. 14
      test/factories/events.rb
  79. 9
      test/factories/workshop_facilitators.rb
  80. 9
      test/factories/workshop_requested_resources.rb
  81. 16
      test/factories/workshops.rb
  82. 4
      test/helpers/event_types_helper_test.rb
  83. 4
      test/helpers/events_helper_test.rb
  84. 4
      test/helpers/workshop_facilitators_helper_test.rb
  85. 4
      test/helpers/workshop_requested_resources_helper_test.rb
  86. 4
      test/helpers/workshops_helper_test.rb
  87. 7
      test/models/event_test.rb
  88. 7
      test/models/event_type_test.rb
  89. 7
      test/models/workshop_facilitator_test.rb
  90. 7
      test/models/workshop_requested_resource_test.rb
  91. 7
      test/models/workshop_test.rb

11
DB specs.txt

@ -22,7 +22,7 @@
- slug : string - slug : string
- info : text - info : text
event *event
- title : string - title : string
- slug : string - slug : string
- conference : [conference] - conference : [conference]
@ -66,18 +66,12 @@ event
- other_option : *boolean - other_option : *boolean
- retired : boolean - retired : boolean
request
- comment : text
- object : Nto1[object]
- is_invite : boolean
- state : list(string)
*user_organization_relationship *user_organization_relationship
- user : [user] - user : [user]
- organization : [organization] - organization : [organization]
- relationship : string - relationship : string
workshop *workshop
- title : string - title : string
- slug : string - slug : string
- info : text - info : text
@ -106,4 +100,3 @@ workshop
- slug : string - slug : string
- info : text - info : text
rails g scaffold

27
Gemfile

@ -8,7 +8,7 @@ gem 'rails', '4.0.0'
# Servers # Servers
# gem 'puma' # gem 'puma'
# gem 'unicorn' # gem 'unicorn'
gem 'thin' gem 'eventmachine'
# Multi-environment configuration # Multi-environment configuration
# gem 'simpleconfig' # gem 'simpleconfig'
@ -48,7 +48,6 @@ gem "compass-rails", "~> 1.1.3"
gem 'foundation-rails' gem 'foundation-rails'
gem 'turbolinks' gem 'turbolinks'
gem 'uglifier', '>= 1.3.0' gem 'uglifier', '>= 1.3.0'
#gem 'bcrypt-ruby', git: 'https://github.com/codahale/bcrypt-ruby.git'
gem 'sorcery', '>= 0.8.1' gem 'sorcery', '>= 0.8.1'
gem 'oauth2', '~> 0.8.0' gem 'oauth2', '~> 0.8.0'
gem 'ruby-drupal-hash' gem 'ruby-drupal-hash'
@ -56,26 +55,29 @@ gem 'redis'
gem 'carrierwave' gem 'carrierwave'
gem 'carrierwave-imageoptimizer' gem 'carrierwave-imageoptimizer'
gem 'mini_magick' gem 'mini_magick'
gem 'carmen-rails', '~> 1.0.0', github: 'jim/carmen-rails' #gem 'carmen-rails'#, '~> 1.0.0', github: 'jim/carmen-rails'
gem 'nested_form' gem 'nested_form'
gem 'acts_as_list' gem 'acts_as_list'
#gem 'jcrop-rails' ##gem 'jcrop-rails'
#gem 'rmagick' ##gem 'rmagick'
gem 'geocoder' gem 'geocoder'
gem 'forgery' gem 'forgery'
gem 'paper_trail' gem 'paper_trail'
group :development, :test do group :development, :test do
#gem 'thin'
gem 'debugger' gem 'debugger'
gem 'delorean' gem 'delorean'
gem 'factory_girl_rails' gem 'factory_girl_rails'
gem 'faker' #gem 'faker'
gem 'pry' #gem 'pry'
gem 'pry-rails' #gem 'pry-rails'
end end
group :development do group :development do
<<<<<<< HEAD
#gem 'perftools.rb' #gem 'perftools.rb'
gem 'bullet' gem 'bullet'
gem 'better_errors' gem 'better_errors'
@ -84,6 +86,15 @@ group :development do
gem 'haml-rails' gem 'haml-rails'
gem 'awesome_print' gem 'awesome_print'
gem 'rails-footnotes', :github => 'josevalim/rails-footnotes' gem 'rails-footnotes', :github => 'josevalim/rails-footnotes'
=======
#gem 'perftools.rb'
gem 'bullet'
gem 'better_errors'
gem 'binding_of_caller'
gem 'meta_request'
gem 'haml-rails'
gem 'awesome_print'
>>>>>>> FETCH_HEAD
end end
group :test do group :test do

36
Gemfile.lock

@ -1,4 +1,5 @@
GIT GIT
<<<<<<< HEAD
remote: git://github.com/jim/carmen-rails.git remote: git://github.com/jim/carmen-rails.git
revision: 076dd251e075d07408e0b5268f886956ef2a347c revision: 076dd251e075d07408e0b5268f886956ef2a347c
specs: specs:
@ -14,6 +15,8 @@ GIT
rails (>= 3.0.0) rails (>= 3.0.0)
GIT GIT
=======
>>>>>>> FETCH_HEAD
remote: git://github.com/svenfuchs/i18n-active_record.git remote: git://github.com/svenfuchs/i18n-active_record.git
revision: 55507cf59f8f2173d38e07e18df0e90d25b1f0f6 revision: 55507cf59f8f2173d38e07e18df0e90d25b1f0f6
specs: specs:
@ -75,8 +78,6 @@ GEM
rack (>= 1.0.0) rack (>= 1.0.0)
rack-test (>= 0.5.4) rack-test (>= 0.5.4)
xpath (~> 2.0) xpath (~> 2.0)
carmen (1.0.0)
unicode_utils (~> 1.4.0)
carrierwave (0.9.0) carrierwave (0.9.0)
activemodel (>= 3.2.0) activemodel (>= 3.2.0)
activesupport (>= 3.2.0) activesupport (>= 3.2.0)
@ -111,7 +112,6 @@ GEM
thor thor
crack (0.4.2) crack (0.4.2)
safe_yaml (~> 1.0.0) safe_yaml (~> 1.0.0)
daemons (1.1.9)
database_cleaner (1.2.0) database_cleaner (1.2.0)
debug_inspector (0.0.2) debug_inspector (0.0.2)
debugger (1.6.5) debugger (1.6.5)
@ -128,7 +128,6 @@ GEM
launchy (~> 2.1) launchy (~> 2.1)
mail (~> 2.2) mail (~> 2.2)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.0.3)
eventmachine (1.0.3-x86-mingw32) eventmachine (1.0.3-x86-mingw32)
execjs (2.0.2) execjs (2.0.2)
factory_girl (4.4.0) factory_girl (4.4.0)
@ -136,8 +135,6 @@ GEM
factory_girl_rails (4.4.0) factory_girl_rails (4.4.0)
factory_girl (~> 4.4.0) factory_girl (~> 4.4.0)
railties (>= 3.0.0) railties (>= 3.0.0)
faker (1.2.0)
i18n (~> 0.5)
faraday (0.9.0) faraday (0.9.0)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
ffi (1.9.3) ffi (1.9.3)
@ -189,7 +186,6 @@ GEM
callsite callsite
rack-contrib rack-contrib
railties railties
method_source (0.8.2)
mime-types (1.25.1) mime-types (1.25.1)
mini_magick (3.7.0) mini_magick (3.7.0)
subexec (~> 0.2.1) subexec (~> 0.2.1)
@ -198,8 +194,6 @@ GEM
multi_json (1.8.4) multi_json (1.8.4)
multipart-post (2.0.0) multipart-post (2.0.0)
nested_form (0.3.2) nested_form (0.3.2)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
nokogiri (1.6.1-x86-mingw32) nokogiri (1.6.1-x86-mingw32)
mini_portile (~> 0.5.0) mini_portile (~> 0.5.0)
oauth (0.4.7) oauth (0.4.7)
@ -215,17 +209,6 @@ GEM
pg (0.17.1) pg (0.17.1)
pg (0.17.1-x86-mingw32) pg (0.17.1-x86-mingw32)
polyglot (0.3.3) polyglot (0.3.3)
pry (0.9.12.6)
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
pry (0.9.12.6-x86-mingw32)
coderay (~> 1.0)
method_source (~> 0.8)
slop (~> 3.4)
win32console (~> 1.3)
pry-rails (0.3.2)
pry (>= 0.9.10)
rack (1.5.2) rack (1.5.2)
rack-contrib (1.1.0) rack-contrib (1.1.0)
rack (>= 0.9.1) rack (>= 0.9.1)
@ -287,7 +270,6 @@ GEM
multi_json multi_json
simplecov-html (~> 0.8.0) simplecov-html (~> 0.8.0)
simplecov-html (0.8.0) simplecov-html (0.8.0)
slop (3.4.7)
sorcery (0.8.5) sorcery (0.8.5)
bcrypt-ruby (>= 3.0) bcrypt-ruby (>= 3.0)
oauth (~> 0.4.4) oauth (~> 0.4.4)
@ -304,10 +286,6 @@ GEM
subexec (0.2.3) subexec (0.2.3)
term-ansicolor (1.3.0) term-ansicolor (1.3.0)
tins (~> 1.0) tins (~> 1.0)
thin (1.6.1)
daemons (>= 1.0.9)
eventmachine (>= 1.0.0)
rack (>= 1.0.0)
thor (0.18.1) thor (0.18.1)
thread_safe (0.1.3) thread_safe (0.1.3)
atomic atomic
@ -322,13 +300,11 @@ GEM
uglifier (2.4.0) uglifier (2.4.0)
execjs (>= 0.3.0) execjs (>= 0.3.0)
json (>= 1.8.0) json (>= 1.8.0)
unicode_utils (1.4.0)
uniform_notifier (1.4.0) uniform_notifier (1.4.0)
webmock (1.17.3) webmock (1.17.3)
addressable (>= 2.2.7) addressable (>= 2.2.7)
crack (>= 0.3.2) crack (>= 0.3.2)
websocket (1.0.7) websocket (1.0.7)
win32console (1.3.2-x86-mingw32)
xpath (2.0.0) xpath (2.0.0)
nokogiri (~> 1.3) nokogiri (~> 1.3)
@ -343,7 +319,6 @@ DEPENDENCIES
binding_of_caller binding_of_caller
bullet bullet
capybara capybara
carmen-rails (~> 1.0.0)!
carrierwave carrierwave
carrierwave-imageoptimizer carrierwave-imageoptimizer
coffee-rails (~> 4.0.0) coffee-rails (~> 4.0.0)
@ -353,8 +328,8 @@ DEPENDENCIES
debugger debugger
delorean delorean
email_spec email_spec
eventmachine
factory_girl_rails factory_girl_rails
faker
forgery forgery
foundation-rails foundation-rails
geocoder geocoder
@ -374,8 +349,6 @@ DEPENDENCIES
oauth2 (~> 0.8.0) oauth2 (~> 0.8.0)
paper_trail paper_trail
pg pg
pry
pry-rails
rails (= 4.0.0) rails (= 4.0.0)
rails-footnotes! rails-footnotes!
rails_12factor rails_12factor
@ -387,7 +360,6 @@ DEPENDENCIES
selenium-webdriver selenium-webdriver
simplecov simplecov
sorcery (>= 0.8.1) sorcery (>= 0.8.1)
thin
turbolinks turbolinks
uglifier (>= 1.3.0) uglifier (>= 1.3.0)
webmock webmock

1
app/assets/javascripts/application.js.coffee

@ -113,7 +113,6 @@ updateFormFieldList = () ->
(json) -> (json) ->
$('#conference-form').html(json.form) $('#conference-form').html(json.form)
$('#registration-form-field-list').html(json.list) $('#registration-form-field-list').html(json.list)
#console.log json
updateFormFieldList() updateFormFieldList()
return return
$('#conference-form .remove-form-field').click () -> $('#conference-form .remove-form-field').click () ->

3
app/assets/javascripts/event_types.js.coffee

@ -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/javascripts/events.js.coffee

@ -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/javascripts/workshop_facilitators.js.coffee

@ -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/javascripts/workshop_requested_resources.js.coffee

@ -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/javascripts/workshops.js.coffee

@ -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/event_types.css.scss

@ -0,0 +1,3 @@
// Place all the styles related to the event_types controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

3
app/assets/stylesheets/events.css.scss

@ -0,0 +1,3 @@
// Place all the styles related to the events controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

3
app/assets/stylesheets/workshop_facilitators.css.scss

@ -0,0 +1,3 @@
// Place all the styles related to the workshop_facilitators controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

3
app/assets/stylesheets/workshop_requested_resources.css.scss

@ -0,0 +1,3 @@
// Place all the styles related to the workshop_requested_resources controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

3
app/assets/stylesheets/workshops.css.scss

@ -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/

21
app/controllers/conferences_controller.rb

@ -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'
@ -124,6 +125,12 @@ class ConferencesController < ApplicationController
set_conference set_conference
end end
def workshops
set_conference
@workshops = Workshop.where(:conference_id => @conference.id)
render 'workshops/index'
end
# DELETE /conferences/1 # DELETE /conferences/1
def destroy def destroy
@conference.destroy @conference.destroy
@ -133,7 +140,17 @@ class ConferencesController < ApplicationController
private private
# 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[:conference_slug] || params[: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/event_types_controller.rb

@ -0,0 +1,58 @@
class EventTypesController < ApplicationController
before_action :set_event_type, only: [:show, :edit, :update, :destroy]
# GET /event_types
def index
@event_types = EventType.all
end
# GET /event_types/1
def show
end
# GET /event_types/new
def new
@event_type = EventType.new
end
# GET /event_types/1/edit
def edit
end
# POST /event_types
def create
@event_type = EventType.new(event_type_params)
if @event_type.save
redirect_to @event_type, notice: 'Event type was successfully created.'
else
render action: 'new'
end
end
# PATCH/PUT /event_types/1
def update
if @event_type.update(event_type_params)
redirect_to @event_type, notice: 'Event type was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /event_types/1
def destroy
@event_type.destroy
redirect_to event_types_url, notice: 'Event type was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_event_type
@event_type = EventType.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def event_type_params
params.require(:event_type).permit(:slug, :info)
end
end

58
app/controllers/events_controller.rb

@ -0,0 +1,58 @@
class EventsController < ApplicationController
before_action :set_event, only: [:show, :edit, :update, :destroy]
# GET /events
def index
@events = Event.all
end
# GET /events/1
def show
end
# GET /events/new
def new
@event = Event.new
end
# GET /events/1/edit
def edit
end
# POST /events
def create
@event = Event.new(event_params)
if @event.save
redirect_to @event, notice: 'Event was successfully created.'
else
render action: 'new'
end
end
# PATCH/PUT /events/1
def update
if @event.update(event_params)
redirect_to @event, notice: 'Event was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /events/1
def destroy
@event.destroy
redirect_to events_url, notice: 'Event was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_event
@event = Event.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def event_params
params.require(:event).permit(:title, :slug, :event_type_id, :conference, :info, :location, :start_time, :end_time)
end
end

9
app/controllers/registration_form_fields_controller.rb

@ -38,7 +38,10 @@ class RegistrationFormFieldsController < ApplicationController
private private
def ajax_return(success) def ajax_return(success)
@registration_form_fields = RegistrationFormField.all if params[:conference_id]
@conference = Conference.find(params[:conference_id])
@registration_form_fields = RegistrationFormField.where(["id NOT IN (?)", @conference.registration_form_fields.map(&:id)])
end
if success if success
@registration_form_field = RegistrationFormField.new @registration_form_field = RegistrationFormField.new
end end
@ -54,13 +57,11 @@ class RegistrationFormFieldsController < ApplicationController
# Only allow a trusted parameter "white list" through. # Only allow a trusted parameter "white list" through.
def registration_form_field_params def registration_form_field_params
#type = params[:type]
#allowed = RegistrationFormField::Types[type]
#allowed << 'field_type'
rff_params = params.require(:registration_form_field) rff_params = params.require(:registration_form_field)
allowed = RegistrationFormField::GetNonOptionKeys(rff_params[:field_type], rff_params) allowed = RegistrationFormField::GetNonOptionKeys(rff_params[:field_type], rff_params)
p = rff_params.send('permit', *allowed)#permit(:title, :help, :required, :field_type, :options, :is_retired) p = rff_params.send('permit', *allowed)#permit(:title, :help, :required, :field_type, :options, :is_retired)
p[:options] = RegistrationFormField::GetOptions(rff_params[:field_type], rff_params).to_json.to_s p[:options] = RegistrationFormField::GetOptions(rff_params[:field_type], rff_params).to_json.to_s
p[:field_type] = rff_params[:field_type]
p p
end end
end end

58
app/controllers/workshop_facilitators_controller.rb

@ -0,0 +1,58 @@
class WorkshopFacilitatorsController < ApplicationController
before_action :set_workshop_facilitator, only: [:show, :edit, :update, :destroy]
# GET /workshop_facilitators
def index
@workshop_facilitators = WorkshopFacilitator.all
end
# GET /workshop_facilitators/1
def show
end
# GET /workshop_facilitators/new
def new
@workshop_facilitator = WorkshopFacilitator.new
end
# GET /workshop_facilitators/1/edit
def edit
end
# POST /workshop_facilitators
def create
@workshop_facilitator = WorkshopFacilitator.new(workshop_facilitator_params)
if @workshop_facilitator.save
redirect_to @workshop_facilitator, notice: 'Workshop facilitator was successfully created.'
else
render action: 'new'
end
end
# PATCH/PUT /workshop_facilitators/1
def update
if @workshop_facilitator.update(workshop_facilitator_params)
redirect_to @workshop_facilitator, notice: 'Workshop facilitator was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /workshop_facilitators/1
def destroy
@workshop_facilitator.destroy
redirect_to workshop_facilitators_url, notice: 'Workshop facilitator was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_workshop_facilitator
@workshop_facilitator = WorkshopFacilitator.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def workshop_facilitator_params
params.require(:workshop_facilitator).permit(:user_id, :workshop_id, :role)
end
end

58
app/controllers/workshop_requested_resources_controller.rb

@ -0,0 +1,58 @@
class WorkshopRequestedResourcesController < ApplicationController
before_action :set_workshop_requested_resource, only: [:show, :edit, :update, :destroy]
# GET /workshop_requested_resources
def index
@workshop_requested_resources = WorkshopRequestedResource.all
end
# GET /workshop_requested_resources/1
def show
end
# GET /workshop_requested_resources/new
def new
@workshop_requested_resource = WorkshopRequestedResource.new
end
# GET /workshop_requested_resources/1/edit
def edit
end
# POST /workshop_requested_resources
def create
@workshop_requested_resource = WorkshopRequestedResource.new(workshop_requested_resource_params)
if @workshop_requested_resource.save
redirect_to @workshop_requested_resource, notice: 'Workshop requested resource was successfully created.'
else
render action: 'new'
end
end
# PATCH/PUT /workshop_requested_resources/1
def update
if @workshop_requested_resource.update(workshop_requested_resource_params)
redirect_to @workshop_requested_resource, notice: 'Workshop requested resource was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /workshop_requested_resources/1
def destroy
@workshop_requested_resource.destroy
redirect_to workshop_requested_resources_url, notice: 'Workshop requested resource was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_workshop_requested_resource
@workshop_requested_resource = WorkshopRequestedResource.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def workshop_requested_resource_params
params.require(:workshop_requested_resource).permit(:workshop_id, :workshop_resource_id, :status)
end
end

69
app/controllers/workshops_controller.rb

@ -0,0 +1,69 @@
class WorkshopsController < ApplicationController
before_action :set_workshop, only: [:show, :edit, :update, :destroy]
# GET /workshops
def index
set_conference
@workshops = Workshop.where(['conference_id = ?', @conference.id])
end
# GET /workshops/1
def show
set_workshop
set_conference
end
# GET /workshops/new
def new
set_conference
@workshop = Workshop.new
end
# GET /workshops/1/edit
def edit
set_conference
end
# POST /workshops
def create
set_conference
@workshop = Workshop.new(workshop_params)
if @workshop.save
redirect_to conference_workshop_path(@conference, @workshop), notice: 'Workshop was successfully created.'
else
render action: 'new'
end
end
# PATCH/PUT /workshops/1
def update
set_conference
if @workshop.update(workshop_params)
redirect_to conference_workshop_path(@conference, @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_by(slug: params[:workshop_slug] || params[:slug])
end
def set_conference
@conference = Conference.find_by(slug: params[:conference_slug] || params[:slug])
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

78
app/helpers/application_helper.rb

@ -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, required: false)
if form.is_a?(Symbol) || form.is_a?(String) if form.is_a?(Symbol) || form.is_a?(String)
param = type param = type
@ -226,20 +226,26 @@ module ApplicationHelper
end end
select_prompt = nil select_prompt = nil
show_label = true show_label = !(/^hidden_field/.match(type.to_s))
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 = ''
@ -256,7 +262,7 @@ module ApplicationHelper
label_html = eval("(" + (form ? 'form.label' : 'label_tag') + " name, '<span>#{label ? CGI.escapeHTML(label) : name}</span>'.html_safe)") label_html = eval("(" + (form ? 'form.label' : 'label_tag') + " name, '<span>#{label ? CGI.escapeHTML(label) : name}</span>'.html_safe)")
end end
if label === false if label === false || !show_label
label_html = '' label_html = ''
end end
@ -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
@ -333,7 +354,9 @@ module ApplicationHelper
end end
end end
form_html += (html_options || '') form_html += (html_options || '')
puts "\n\t" + form_html + "\n" if required
form_html += ', :required => true'
end
form_html = eval(form_html) form_html = eval(form_html)
if root if root
form_html = "<#{root}>" + form_html + "</#{root}>" form_html = "<#{root}>" + form_html + "</#{root}>"
@ -383,7 +406,18 @@ module ApplicationHelper
if params[:action] == tab.to_s if params[:action] == tab.to_s
c << 'current' c << 'current'
end end
tab_list += link_to tab, link || object, :class => c link_html = ''
if tab.is_a?(Hash)
func = tab.keys[0]
val = tab[func]
args = val ? (val.is_a?(Array) ? (val.collect { |v| object[v] } ) : [object[val]] ) : nil
link_html = link_to func.to_s.gsub(/_path$/, ''), args ? self.send(func, args) : self.send(func), :class => c
else
#x
link_html = link_to tab, link || object, :class => c
end
tab_list += link_html
end end
('<nav class="row centered"> ('<nav class="row centered">
<div class="tabs">' + <div class="tabs">' +
@ -402,6 +436,9 @@ module ApplicationHelper
when 'conferences' when 'conferences'
object = @conference object = @conference
tabs = ConferencesHelper::TABS tabs = ConferencesHelper::TABS
when 'workshops'
object = [@conference, @workshop]
tabs = WorkshopsHelper::TABS
end end
if object && tabs if object && tabs
@ -451,9 +488,9 @@ 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')
options = JSON.parse(f.options) options = JSON.parse(f.options)
if f.field_type == 'multiple' if f.field_type == 'multiple'
@ -466,12 +503,19 @@ 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
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 += 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, required: f.required)
html += field((id + '_' + key), options['selection_type'] + '_tag', label: value) end
else
html += field(id.to_sym, options['selection_type'] + '_tag', opts, value: val, required: f.required)
end end
else else
html += field(id.to_sym, options['input_type'] + '_tag', label: false, placeholder: f.help) html += field(id.to_sym, options['input_type'] + '_tag', label: false, placeholder: f.help, value: response ? ActiveSupport::JSON.decode(response.data) : nil, required: f.required)
end end
html.html_safe html.html_safe

2
app/helpers/event_types_helper.rb

@ -0,0 +1,2 @@
module EventTypesHelper
end

2
app/helpers/events_helper.rb

@ -0,0 +1,2 @@
module EventsHelper
end

2
app/helpers/workshop_facilitators_helper.rb

@ -0,0 +1,2 @@
module WorkshopFacilitatorsHelper
end

2
app/helpers/workshop_requested_resources_helper.rb

@ -0,0 +1,2 @@
module WorkshopRequestedResourcesHelper
end

4
app/helpers/workshops_helper.rb

@ -0,0 +1,4 @@
module WorkshopsHelper
TABS = [{:conference_path => 0}, {:conference_workshop_path => nil}, {:edit_conference_workshop_path => nil}]#, :hosts]
#SUB_TABS = [:registration, :registration_form, :registration_register, :registration_stats]
end

2
app/models/conference.rb

@ -10,6 +10,8 @@ class Conference < ActiveRecord::Base
has_many :conference_registration_form_fields, :order => 'position ASC', :dependent => :destroy#, :class_name => '::ConferenceRegistrationFormField' has_many :conference_registration_form_fields, :order => 'position ASC', :dependent => :destroy#, :class_name => '::ConferenceRegistrationFormField'
has_many :registration_form_fields, :through => :conference_registration_form_fields has_many :registration_form_fields, :through => :conference_registration_form_fields
has_many :workshops
accepts_nested_attributes_for :conference_host_organizations, :reject_if => proc {|u| u[:organization_id].blank?}, :allow_destroy => true accepts_nested_attributes_for :conference_host_organizations, :reject_if => proc {|u| u[:organization_id].blank?}, :allow_destroy => true
def to_param def to_param

2
app/models/event.rb

@ -0,0 +1,2 @@
class Event < ActiveRecord::Base
end

2
app/models/event_type.rb

@ -0,0 +1,2 @@
class EventType < ActiveRecord::Base
end

8
app/models/registration_form_field.rb

@ -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

7
app/models/workshop.rb

@ -0,0 +1,7 @@
class Workshop < ActiveRecord::Base
belongs_to :conference
def to_param
slug
end
end

2
app/models/workshop_facilitator.rb

@ -0,0 +1,2 @@
class WorkshopFacilitator < ActiveRecord::Base
end

2
app/models/workshop_requested_resource.rb

@ -0,0 +1,2 @@
class WorkshopRequestedResource < ActiveRecord::Base
end

5
app/views/conferences/_registration_register.html.haml

@ -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

16
app/views/event_types/_form.html.haml

@ -0,0 +1,16 @@
= form_for @event_type do |f|
- if @event_type.errors.any?
#error_explanation
%h2= "#{pluralize(@event_type.errors.count, "error")} prohibited this event_type from being saved:"
%ul
- @event_type.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :slug
= f.text_field :slug
.field
= f.label :info
= f.text_area :info
.actions
= f.submit 'Save'

7
app/views/event_types/edit.html.haml

@ -0,0 +1,7 @@
%h1 Editing event_type
= render 'form'
= link_to 'Show', @event_type
\|
= link_to 'Back', event_types_path

21
app/views/event_types/index.html.haml

@ -0,0 +1,21 @@
%h1 Listing event_types
%table
%tr
%th Slug
%th Info
%th
%th
%th
- @event_types.each do |event_type|
%tr
%td= event_type.slug
%td= event_type.info
%td= link_to 'Show', event_type
%td= link_to 'Edit', edit_event_type_path(event_type)
%td= link_to 'Destroy', event_type, :method => :delete, :data => { :confirm => 'Are you sure?' }
%br
= link_to 'New Event type', new_event_type_path

5
app/views/event_types/new.html.haml

@ -0,0 +1,5 @@
%h1 New event_type
= render 'form'
= link_to 'Back', event_types_path

12
app/views/event_types/show.html.haml

@ -0,0 +1,12 @@
%p#notice= notice
%p
%b Slug:
= @event_type.slug
%p
%b Info:
= @event_type.info
= link_to 'Edit', edit_event_type_path(@event_type)
\|
= link_to 'Back', event_types_path

34
app/views/events/_form.html.haml

@ -0,0 +1,34 @@
= form_for @event do |f|
- if @event.errors.any?
#error_explanation
%h2= "#{pluralize(@event.errors.count, "error")} prohibited this event from being saved:"
%ul
- @event.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 :event_type_id
= f.number_field :event_type_id
.field
= f.label :conference
= f.text_field :conference
.field
= f.label :info
= f.text_area :info
.field
= f.label :location
= f.text_field :location
.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/events/edit.html.haml

@ -0,0 +1,7 @@
%h1 Editing event
= render 'form'
= link_to 'Show', @event
\|
= link_to 'Back', events_path

33
app/views/events/index.html.haml

@ -0,0 +1,33 @@
%h1 Listing events
%table
%tr
%th Title
%th Slug
%th Event type
%th Conference
%th Info
%th Location
%th Start time
%th End time
%th
%th
%th
- @events.each do |event|
%tr
%td= event.title
%td= event.slug
%td= event.event_type_id
%td= event.conference
%td= event.info
%td= event.location
%td= event.start_time
%td= event.end_time
%td= link_to 'Show', event
%td= link_to 'Edit', edit_event_path(event)
%td= link_to 'Destroy', event, :method => :delete, :data => { :confirm => 'Are you sure?' }
%br
= link_to 'New Event', new_event_path

5
app/views/events/new.html.haml

@ -0,0 +1,5 @@
%h1 New event
= render 'form'
= link_to 'Back', events_path

30
app/views/events/show.html.haml

@ -0,0 +1,30 @@
%p#notice= notice
%p
%b Title:
= @event.title
%p
%b Slug:
= @event.slug
%p
%b Event type:
= @event.event_type_id
%p
%b Conference:
= @event.conference
%p
%b Info:
= @event.info
%p
%b Location:
= @event.location
%p
%b Start time:
= @event.start_time
%p
%b End time:
= @event.end_time
= link_to 'Edit', edit_event_path(@event)
\|
= link_to 'Back', events_path

3
app/views/registration_form_fields/_form.html.haml

@ -5,7 +5,8 @@
%ul %ul
- @registration_form_field.errors.full_messages.each do |msg| - @registration_form_field.errors.full_messages.each do |msg|
%li= msg %li= msg
- if @conference
= field :conference_id, :hidden_field_tag, value: @conference.id
= field f, :field_type, :select, RegistrationFormField::Types.keys = field f, :field_type, :select, RegistrationFormField::Types.keys
- RegistrationFormField::Fields.each do |key, value| - RegistrationFormField::Fields.each do |key, value|
- classes = RegistrationFormField::TypesForField(key.to_sym).collect{|v| 'field-type-' + v.to_s} - classes = RegistrationFormField::TypesForField(key.to_sym).collect{|v| 'field-type-' + v.to_s}

19
app/views/workshop_facilitators/_form.html.haml

@ -0,0 +1,19 @@
= form_for @workshop_facilitator do |f|
- if @workshop_facilitator.errors.any?
#error_explanation
%h2= "#{pluralize(@workshop_facilitator.errors.count, "error")} prohibited this workshop_facilitator from being saved:"
%ul
- @workshop_facilitator.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :user_id
= f.number_field :user_id
.field
= f.label :workshop_id
= f.number_field :workshop_id
.field
= f.label :role
= f.text_field :role
.actions
= f.submit 'Save'

7
app/views/workshop_facilitators/edit.html.haml

@ -0,0 +1,7 @@
%h1 Editing workshop_facilitator
= render 'form'
= link_to 'Show', @workshop_facilitator
\|
= link_to 'Back', workshop_facilitators_path

23
app/views/workshop_facilitators/index.html.haml

@ -0,0 +1,23 @@
%h1 Listing workshop_facilitators
%table
%tr
%th User
%th Workshop
%th Role
%th
%th
%th
- @workshop_facilitators.each do |workshop_facilitator|
%tr
%td= workshop_facilitator.user_id
%td= workshop_facilitator.workshop_id
%td= workshop_facilitator.role
%td= link_to 'Show', workshop_facilitator
%td= link_to 'Edit', edit_workshop_facilitator_path(workshop_facilitator)
%td= link_to 'Destroy', workshop_facilitator, :method => :delete, :data => { :confirm => 'Are you sure?' }
%br
= link_to 'New Workshop facilitator', new_workshop_facilitator_path

5
app/views/workshop_facilitators/new.html.haml

@ -0,0 +1,5 @@
%h1 New workshop_facilitator
= render 'form'
= link_to 'Back', workshop_facilitators_path

15
app/views/workshop_facilitators/show.html.haml

@ -0,0 +1,15 @@
%p#notice= notice
%p
%b User:
= @workshop_facilitator.user_id
%p
%b Workshop:
= @workshop_facilitator.workshop_id
%p
%b Role:
= @workshop_facilitator.role
= link_to 'Edit', edit_workshop_facilitator_path(@workshop_facilitator)
\|
= link_to 'Back', workshop_facilitators_path

19
app/views/workshop_requested_resources/_form.html.haml

@ -0,0 +1,19 @@
= form_for @workshop_requested_resource do |f|
- if @workshop_requested_resource.errors.any?
#error_explanation
%h2= "#{pluralize(@workshop_requested_resource.errors.count, "error")} prohibited this workshop_requested_resource from being saved:"
%ul
- @workshop_requested_resource.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :workshop_id
= f.number_field :workshop_id
.field
= f.label :workshop_resource_id
= f.number_field :workshop_resource_id
.field
= f.label :status
= f.text_field :status
.actions
= f.submit 'Save'

7
app/views/workshop_requested_resources/edit.html.haml

@ -0,0 +1,7 @@
%h1 Editing workshop_requested_resource
= render 'form'
= link_to 'Show', @workshop_requested_resource
\|
= link_to 'Back', workshop_requested_resources_path

23
app/views/workshop_requested_resources/index.html.haml

@ -0,0 +1,23 @@
%h1 Listing workshop_requested_resources
%table
%tr
%th Workshop
%th Workshop resource
%th Status
%th
%th
%th
- @workshop_requested_resources.each do |workshop_requested_resource|
%tr
%td= workshop_requested_resource.workshop_id
%td= workshop_requested_resource.workshop_resource_id
%td= workshop_requested_resource.status
%td= link_to 'Show', workshop_requested_resource
%td= link_to 'Edit', edit_workshop_requested_resource_path(workshop_requested_resource)
%td= link_to 'Destroy', workshop_requested_resource, :method => :delete, :data => { :confirm => 'Are you sure?' }
%br
= link_to 'New Workshop requested resource', new_workshop_requested_resource_path

5
app/views/workshop_requested_resources/new.html.haml

@ -0,0 +1,5 @@
%h1 New workshop_requested_resource
= render 'form'
= link_to 'Back', workshop_requested_resources_path

15
app/views/workshop_requested_resources/show.html.haml

@ -0,0 +1,15 @@
%p#notice= notice
%p
%b Workshop:
= @workshop_requested_resource.workshop_id
%p
%b Workshop resource:
= @workshop_requested_resource.workshop_resource_id
%p
%b Status:
= @workshop_requested_resource.status
= link_to 'Edit', edit_workshop_requested_resource_path(@workshop_requested_resource)
\|
= link_to 'Back', workshop_requested_resources_path

23
app/views/workshops/_form.html.haml

@ -0,0 +1,23 @@
= form_for @workshop, url: conference_workshops_path(@conference, @workshop) do |f|
.columns
- 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, :title, :text_field
= field f, :slug, :text_field
.columns.medium-4
%h2=_'workshop.form.help.title', :t
=_'workshop.form.help', :p
.columns.medium-8
= field f, :info, :text_area
= field f, :workshop_stream_id, :number_field
= field f, :workshop_presentation_style, :number_field
=# field f, :min_facilitators, :number_field
=# field f, :location_id, :number_field
=# field f, :start_time, :datetime_select
=# field f, :end_time, :datetime_select
.columns
= actions :save

6
app/views/workshops/edit.html.haml

@ -0,0 +1,6 @@
- page_style :form
= tabs!
.row
= render 'form'

35
app/views/workshops/index.html.haml

@ -0,0 +1,35 @@
%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
- @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', conference_workshop_path(@conference, workshop)
%td= link_to 'Edit', edit_conference_workshop_path(@conference, workshop)
%br
= link_to 'New Workshop', new_conference_workshop_path

6
app/views/workshops/new.html.haml

@ -0,0 +1,6 @@
- page_style :form
= tabs!
.row
= render 'form'

30
app/views/workshops/show.html.haml

@ -0,0 +1,30 @@
%p#notice= notice
.row
.columns.medium-12
%h1= @workshop.title
= tabs!
.row
.columns.medium-4
%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
.columns.medium-8
=p @workshop, :info

1
config/application.rb

@ -1,6 +1,7 @@
require File.expand_path('../boot', __FILE__) require File.expand_path('../boot', __FILE__)
require 'rails/all' require 'rails/all'
require 'pry'
# Require the gems listed in Gemfile, including any gems # Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production. # you've limited to :test, :development, or :production.

9
config/environments/development.rb

@ -1,3 +1,5 @@
#require 'perftools'
BikeBike::Application.configure do BikeBike::Application.configure do
# Settings specified here will take precedence over those in config/application.rb. # Settings specified here will take precedence over those in config/application.rb.
@ -42,4 +44,11 @@ BikeBike::Application.configure do
config.action_mailer.raise_delivery_errors = true config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true config.action_mailer.perform_deliveries = true
#config.action_mailer.default_charset = 'utf-8' #config.action_mailer.default_charset = 'utf-8'
#Carmen.i18n_backend.locale_paths = ''
#puts "CARMEN\t" + Carmen.i18n_backend.locale_paths
#PerfTools::CpuProfiler.start('/tmp/dev_prof')
#config.serve_static_assets = true
#config.assets.precompile = false
end end

10
config/routes.rb

@ -1,5 +1,13 @@
BikeBike::Application.routes.draw do BikeBike::Application.routes.draw do
resources :events
resources :event_types
resources :workshop_requested_resources
resources :workshop_facilitators
#resources :conference_registration_responses #resources :conference_registration_responses
#resources :conference_registrations #resources :conference_registrations
@ -15,7 +23,7 @@ BikeBike::Application.routes.draw do
resources :conferences, :param => 'slug' do resources :conferences, :param => 'slug' do
get :hosts get :hosts
get :registration get :registration
get :workshops resources :workshops, :param => 'slug'
get :registration get :registration
#resources :registrations, :path => 'registration' do #resources :registrations, :path => 'registration' do
# get :form, on: :collection # get :form, on: :collection

18
db/migrate/20140314025647_create_workshops.rb

@ -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

11
db/migrate/20140315175914_create_workshop_facilitators.rb

@ -0,0 +1,11 @@
class CreateWorkshopFacilitators < ActiveRecord::Migration
def change
create_table :workshop_facilitators do |t|
t.integer :user_id
t.integer :workshop_id
t.string :role
t.timestamps
end
end
end

11
db/migrate/20140315181222_create_workshop_requested_resources.rb

@ -0,0 +1,11 @@
class CreateWorkshopRequestedResources < ActiveRecord::Migration
def change
create_table :workshop_requested_resources do |t|
t.integer :workshop_id
t.integer :workshop_resource_id
t.string :status
t.timestamps
end
end
end

10
db/migrate/20140315183121_create_event_types.rb

@ -0,0 +1,10 @@
class CreateEventTypes < ActiveRecord::Migration
def change
create_table :event_types do |t|
t.string :slug
t.text :info
t.timestamps
end
end
end

16
db/migrate/20140315183241_create_events.rb

@ -0,0 +1,16 @@
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :title
t.string :slug
t.integer :event_type_id
t.integer :conference_id
t.text :info
t.integer :location_id
t.datetime :start_time
t.datetime :end_time
t.timestamps
end
end
end

59
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: 20140315183241) 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"
@ -92,6 +92,26 @@ ActiveRecord::Schema.define(version: 20140308173325) do
t.text "postregistration_info" t.text "postregistration_info"
end end
create_table "event_types", force: true do |t|
t.string "slug"
t.text "info"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "events", force: true do |t|
t.string "title"
t.string "slug"
t.integer "event_type_id"
t.integer "conference_id"
t.text "info"
t.integer "location_id"
t.datetime "start_time"
t.datetime "end_time"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "locations", force: true do |t| create_table "locations", force: true do |t|
t.string "title" t.string "title"
t.float "latitude" t.float "latitude"
@ -162,8 +182,8 @@ ActiveRecord::Schema.define(version: 20140308173325) do
end end
create_table "user_organization_relationships", force: true do |t| create_table "user_organization_relationships", force: true do |t|
t.integer "user_id", null: false t.integer "user_id"
t.integer "organization_id", null: false t.integer "organization_id"
t.string "relationship" t.string "relationship"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
@ -201,7 +221,15 @@ ActiveRecord::Schema.define(version: 20140308173325) do
t.string "whodunnit" t.string "whodunnit"
t.text "object" t.text "object"
t.datetime "created_at" t.datetime "created_at"
t.text "value" t.string "value"
end
create_table "workshop_facilitators", force: true do |t|
t.integer "user_id"
t.integer "workshop_id"
t.string "role"
t.datetime "created_at"
t.datetime "updated_at"
end end
create_table "workshop_presentation_styles", force: true do |t| create_table "workshop_presentation_styles", force: true do |t|
@ -212,6 +240,14 @@ ActiveRecord::Schema.define(version: 20140308173325) do
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "workshop_requested_resources", force: true do |t|
t.integer "workshop_id"
t.integer "workshop_resource_id"
t.string "status"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "workshop_resources", force: true do |t| create_table "workshop_resources", force: true do |t|
t.string "name" t.string "name"
t.string "slug" t.string "slug"
@ -228,4 +264,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

8
spec/features/pages_spec.rb

@ -1,8 +1,8 @@
require 'spec_helper' require 'spec_helper'
describe 'Home' do describe 'Home' do
it "has Hello World in title" do #it "has Hello World in title" do
visit root_path # visit root_path
expect(page).to have_title I18n.t('hello') # expect(page).to have_title I18n.t('hello')
end #end
end end

49
test/controllers/event_types_controller_test.rb

@ -0,0 +1,49 @@
require 'test_helper'
class EventTypesControllerTest < ActionController::TestCase
setup do
@event_type = event_types(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:event_types)
end
test "should get new" do
get :new
assert_response :success
end
test "should create event_type" do
assert_difference('EventType.count') do
post :create, event_type: { info: @event_type.info, slug: @event_type.slug }
end
assert_redirected_to event_type_path(assigns(:event_type))
end
test "should show event_type" do
get :show, id: @event_type
assert_response :success
end
test "should get edit" do
get :edit, id: @event_type
assert_response :success
end
test "should update event_type" do
patch :update, id: @event_type, event_type: { info: @event_type.info, slug: @event_type.slug }
assert_redirected_to event_type_path(assigns(:event_type))
end
test "should destroy event_type" do
assert_difference('EventType.count', -1) do
delete :destroy, id: @event_type
end
assert_redirected_to event_types_path
end
end

49
test/controllers/events_controller_test.rb

@ -0,0 +1,49 @@
require 'test_helper'
class EventsControllerTest < ActionController::TestCase
setup do
@event = events(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:events)
end
test "should get new" do
get :new
assert_response :success
end
test "should create event" do
assert_difference('Event.count') do
post :create, event: { conference: @event.conference, end_time: @event.end_time, event_type_id: @event.event_type_id, info: @event.info, location: @event.location, slug: @event.slug, start_time: @event.start_time, title: @event.title }
end
assert_redirected_to event_path(assigns(:event))
end
test "should show event" do
get :show, id: @event
assert_response :success
end
test "should get edit" do
get :edit, id: @event
assert_response :success
end
test "should update event" do
patch :update, id: @event, event: { conference: @event.conference, end_time: @event.end_time, event_type_id: @event.event_type_id, info: @event.info, location: @event.location, slug: @event.slug, start_time: @event.start_time, title: @event.title }
assert_redirected_to event_path(assigns(:event))
end
test "should destroy event" do
assert_difference('Event.count', -1) do
delete :destroy, id: @event
end
assert_redirected_to events_path
end
end

49
test/controllers/workshop_facilitators_controller_test.rb

@ -0,0 +1,49 @@
require 'test_helper'
class WorkshopFacilitatorsControllerTest < ActionController::TestCase
setup do
@workshop_facilitator = workshop_facilitators(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:workshop_facilitators)
end
test "should get new" do
get :new
assert_response :success
end
test "should create workshop_facilitator" do
assert_difference('WorkshopFacilitator.count') do
post :create, workshop_facilitator: { role: @workshop_facilitator.role, user_id: @workshop_facilitator.user_id, workshop_id: @workshop_facilitator.workshop_id }
end
assert_redirected_to workshop_facilitator_path(assigns(:workshop_facilitator))
end
test "should show workshop_facilitator" do
get :show, id: @workshop_facilitator
assert_response :success
end
test "should get edit" do
get :edit, id: @workshop_facilitator
assert_response :success
end
test "should update workshop_facilitator" do
patch :update, id: @workshop_facilitator, workshop_facilitator: { role: @workshop_facilitator.role, user_id: @workshop_facilitator.user_id, workshop_id: @workshop_facilitator.workshop_id }
assert_redirected_to workshop_facilitator_path(assigns(:workshop_facilitator))
end
test "should destroy workshop_facilitator" do
assert_difference('WorkshopFacilitator.count', -1) do
delete :destroy, id: @workshop_facilitator
end
assert_redirected_to workshop_facilitators_path
end
end

49
test/controllers/workshop_requested_resources_controller_test.rb

@ -0,0 +1,49 @@
require 'test_helper'
class WorkshopRequestedResourcesControllerTest < ActionController::TestCase
setup do
@workshop_requested_resource = workshop_requested_resources(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:workshop_requested_resources)
end
test "should get new" do
get :new
assert_response :success
end
test "should create workshop_requested_resource" do
assert_difference('WorkshopRequestedResource.count') do
post :create, workshop_requested_resource: { status: @workshop_requested_resource.status, workshop_id: @workshop_requested_resource.workshop_id, workshop_resource_id: @workshop_requested_resource.workshop_resource_id }
end
assert_redirected_to workshop_requested_resource_path(assigns(:workshop_requested_resource))
end
test "should show workshop_requested_resource" do
get :show, id: @workshop_requested_resource
assert_response :success
end
test "should get edit" do
get :edit, id: @workshop_requested_resource
assert_response :success
end
test "should update workshop_requested_resource" do
patch :update, id: @workshop_requested_resource, workshop_requested_resource: { status: @workshop_requested_resource.status, workshop_id: @workshop_requested_resource.workshop_id, workshop_resource_id: @workshop_requested_resource.workshop_resource_id }
assert_redirected_to workshop_requested_resource_path(assigns(:workshop_requested_resource))
end
test "should destroy workshop_requested_resource" do
assert_difference('WorkshopRequestedResource.count', -1) do
delete :destroy, id: @workshop_requested_resource
end
assert_redirected_to workshop_requested_resources_path
end
end

49
test/controllers/workshops_controller_test.rb

@ -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

8
test/factories/event_types.rb

@ -0,0 +1,8 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :event_type do
slug "MyString"
info "MyText"
end
end

14
test/factories/events.rb

@ -0,0 +1,14 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :event do
title "MyString"
slug "MyString"
event_type_id 1
conference ""
info "MyText"
location ""
start_time "2014-03-15 12:32:41"
end_time "2014-03-15 12:32:41"
end
end

9
test/factories/workshop_facilitators.rb

@ -0,0 +1,9 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :workshop_facilitator do
user_id 1
workshop_id 1
role "MyString"
end
end

9
test/factories/workshop_requested_resources.rb

@ -0,0 +1,9 @@
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :workshop_requested_resource do
workshop_id 1
workshop_resource_id 1
status "MyString"
end
end

16
test/factories/workshops.rb

@ -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/event_types_helper_test.rb

@ -0,0 +1,4 @@
require 'test_helper'
class EventTypesHelperTest < ActionView::TestCase
end

4
test/helpers/events_helper_test.rb

@ -0,0 +1,4 @@
require 'test_helper'
class EventsHelperTest < ActionView::TestCase
end

4
test/helpers/workshop_facilitators_helper_test.rb

@ -0,0 +1,4 @@
require 'test_helper'
class WorkshopFacilitatorsHelperTest < ActionView::TestCase
end

4
test/helpers/workshop_requested_resources_helper_test.rb

@ -0,0 +1,4 @@
require 'test_helper'
class WorkshopRequestedResourcesHelperTest < ActionView::TestCase
end

4
test/helpers/workshops_helper_test.rb

@ -0,0 +1,4 @@
require 'test_helper'
class WorkshopsHelperTest < ActionView::TestCase
end

7
test/models/event_test.rb

@ -0,0 +1,7 @@
require 'test_helper'
class EventTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

7
test/models/event_type_test.rb

@ -0,0 +1,7 @@
require 'test_helper'
class EventTypeTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

7
test/models/workshop_facilitator_test.rb

@ -0,0 +1,7 @@
require 'test_helper'
class WorkshopFacilitatorTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

7
test/models/workshop_requested_resource_test.rb

@ -0,0 +1,7 @@
require 'test_helper'
class WorkshopRequestedResourceTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

7
test/models/workshop_test.rb

@ -0,0 +1,7 @@
require 'test_helper'
class WorkshopTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end
Loading…
Cancel
Save