diff --git a/Gemfile b/Gemfile index 743510a2..38c2fa96 100644 --- a/Gemfile +++ b/Gemfile @@ -76,8 +76,12 @@ group :development, :test do gem 'rspec', '>= 3.0.0.beta' gem 'rspec-rails', '>= 3.0.0.beta' gem 'capybara' +<<<<<<< HEAD gem 'database_cleaner' gem 'capybara-webkit' +======= + gem 'shoulda' +>>>>>>> 374efd311fb7f82d0e8257a62675a663904708d5 end # FIXME: We should use http://weblog.rubyonrails.org/2012/3/21/strong-parameters/ diff --git a/Gemfile.lock b/Gemfile.lock index ba6788b1..8bd4910f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -252,6 +252,12 @@ GEM sass (~> 3.2.0) sprockets (~> 2.8, <= 2.11.0) sprockets-rails (~> 2.0) + shoulda (3.5.0) + shoulda-context (~> 1.0, >= 1.0.1) + shoulda-matchers (>= 1.4.1, < 3.0) + shoulda-context (1.2.1) + shoulda-matchers (2.6.1) + activesupport (>= 3.0.0) simplecov (0.8.2) docile (~> 1.1.0) multi_json @@ -335,6 +341,7 @@ DEPENDENCIES rspec (>= 3.0.0.beta) rspec-rails (>= 3.0.0.beta) sass-rails (>= 4.0.2) + shoulda spring-commands-rspec sqlite3 transitions diff --git a/app/controllers/admin/conference_controller.rb b/app/controllers/admin/conference_controller.rb index 70e56897..81820be6 100644 --- a/app/controllers/admin/conference_controller.rb +++ b/app/controllers/admin/conference_controller.rb @@ -15,11 +15,21 @@ class Admin::ConferenceController < ApplicationController def create @conference = Conference.new(params[:conference]) +<<<<<<< HEAD if @conference.save redirect_to(admin_conference_path(id: @conference.short_title), notice: 'Conference was successfully created.') else render action: 'new' +======= + if @conference.valid? + @conference.save + redirect_to(admin_conference_path(id: @conference.short_title), + notice: 'Conference was successfully created.') + else + redirect_to(new_admin_conference_path, + flash: { error: @conference.errors.full_messages.join('! ') }) +>>>>>>> 374efd311fb7f82d0e8257a62675a663904708d5 end end diff --git a/app/views/admin/conference/new.html.haml b/app/views/admin/conference/new.html.haml index 1b78f27d..f77d9d0b 100644 --- a/app/views/admin/conference/new.html.haml +++ b/app/views/admin/conference/new.html.haml @@ -1,14 +1,17 @@ .row .col-md-6.col-md-offset-3 = semantic_form_for(@conference, :url => admin_conference_index_path) do |f| - = f.inputs "Basic Information" do - = f.input :title, :hint => "The name of your conference as it shall appear throughout the site. Example: 'OpenSUSE Conference 2013'" - = f.input :short_title, :hint => "A short and unique handle for your conference, using only lower-case letters, numbers and underscores. This will be used to identify your conference in URLs etc. Example: 'froscon2011'" - = f.input :social_tag, :hint => "The hashtag you'll use on Twitter and Google+. Don't include the '#' sign!'" - = f.input :contact_email, :hint => "Contact email address for your conference. Will be used as reply-to address in emails sent out by the system." - = f.inputs "Scheduling" do - = f.input :timezone, :as => :time_zone, :hint => "Please select in what time zone your conference will take place." - = f.input :start_date, :as => :string, :input_html => { :id => "conference-start-datepicker", :readonly => "readonly" } - = f.input :end_date, :as => :string, :input_html => { :id => "conference-end-datepicker", :readonly => "readonly" } + = f.inputs 'Basic Information' do + = f.input :title, hint: "The name of your conference as it shall appear throughout the site. Example: 'OpenSUSE Conference 2013'", + input_html: { required: 'required' } + = f.input :short_title, hint: "A short and unique handle for your conference, using only lower-case letters, numbers and underscores. This will be used to identify your conference in URLs etc. Example: 'froscon2011'", + input_html: { required: 'required' } + = f.input :social_tag, hint: "The hashtag you'll use on Twitter and Google+. Don't include the '#' sign!'", + input_html: { required: 'required' } + = f.input :contact_email, hint: 'Contact email address for your conference. Will be used as reply-to address in emails sent out by the system.' + = f.inputs 'Scheduling' do + = f.input :timezone, as: :time_zone, hint: 'Please select in what time zone your conference will take place.' + = f.input :start_date, as: :string, input_html: { id: 'conference-start-datepicker', readonly: 'readonly', required: 'required' } + = f.input :end_date, as: :string, input_html: { id: 'conference-end-datepicker', readonly: 'readonly', required: 'required' } = f.actions do - = f.action :submit, :button_html => {:class => "btn btn-success pull-right"} + = f.action :submit, button_html: {class: 'btn btn-success pull-right'} diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index c844c4a3..e9e9e0af 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,4 +1,4 @@ -!!! +%html{:xmlns => "http://www.w3.org/1999/html"} %html %head %meta{:charset => "utf-8"} diff --git a/app/views/proposal/show.html.haml b/app/views/proposal/show.html.haml index 02173839..9f974ede 100644 --- a/app/views/proposal/show.html.haml +++ b/app/views/proposal/show.html.haml @@ -6,6 +6,9 @@ %br %small = @event.subtitle + = link_to "Schedule", conference_schedule_path(@conference.short_title), :class =>"btn btn-success pull-right" + - if has_role?(current_user, "admin") + = link_to "Edit", edit_admin_conference_event_path(@conference.short_title, @event), :class => "btn btn-mini btn-primary pull-right" .row .col-md-3 %p @@ -13,6 +16,12 @@ %dl %dt Date: %dd= @event.start_time.strftime("%Y %B %e %H:%M") if @event.start_time + %dt Duration: + %dd= show_time(@event.event_type.length) + %dt Room: + %dd + - if @event.room_id + = @event.room.name %dt Conference: %dd= @event.conference.title %dt Language: @@ -22,6 +31,13 @@ - if @event.track_id %span.label{:style =>"background-color: #{@event.track.color};"} = @event.track.name + %dt Difficulty: + %dd + - if @event.difficulty_level_id + %span.label{:style =>"background-color: #{@event.difficulty_level.color};"} + = @event.difficulty_level.title + - if @event.require_registration + = link_to "Registration required!", register_conference_path(@conference.short_title), :class => "btn btn-xs btn-warning" .col-md-9 .row .col-md-12 @@ -42,6 +58,9 @@ %h3 by = @speaker.public_name + ( + = @speaker.email + ) - if @speaker.company? %br %span.muted diff --git a/config/initializers/formtastic.rb b/config/initializers/formtastic.rb index 69eaae95..b676d4a0 100644 --- a/config/initializers/formtastic.rb +++ b/config/initializers/formtastic.rb @@ -73,7 +73,7 @@ Formtastic::FormBuilder.required_string = "(required)" # You can opt-in to new HTML5 browser validations (for things like email and url inputs) by setting # this to false. Doing so will add a `novalidate` attribute to the `