Refactoring Venue, Lodgings und Rooms

#385
This commit is contained in:
Chrisbr 2014-07-31 12:20:04 +02:00
parent 518e1cc62b
commit 5fe99dd041
26 changed files with 352 additions and 130 deletions

View file

@ -1,23 +1,57 @@
module Admin
class LodgingsController < ApplicationController
before_filter :verify_organizer
before_action :set_lodging, only: [:edit, :update, :destroy]
before_action :set_venue, only: [:index]
def index
@venue = @conference.venue
end
def show
def new
@lodging = @conference.venue.lodgings.build
end
def edit
end
def create
@lodging = @conference.venue.lodgings.build(lodging_params)
if @lodging.save
redirect_to admin_conference_lodgings_path(@conference.short_title), notice: 'Lodging was successfully created.'
else
flash[:alert] = "A error prohibited this Lodging from being saved: #{@lodging.errors.full_messages.join('. ')}."
render :new
end
end
def update
@venue = @conference.venue
if @venue.update_attributes(params[:venue])
if @lodging.update_attributes(lodging_params)
redirect_to(admin_conference_lodgings_path(conference_id: @conference.short_title),
notice: 'Lodgings were successfully updated.')
notice: 'Lodging was successfully updated.')
else
redirect_to(admin_conference_lodgings_path(conference_id: @conference.short_title),
notice: 'Updating lodgings failed!')
flash[:alert] = "A error prohibited this Lodging from being saved: #{@venue.errors.full_messages.join('. ')}."
render :edit
end
end
def destroy
@lodging.destroy
redirect_to admin_conference_lodgings_path, notice: 'Lodging was successfully destroyed.'
end
private
def set_lodging
@lodging = Lodging.find(params[:id])
end
def set_venue
@venue = @conference.venue
end
def lodging_params
params[:lodging]
end
end
end

View file

@ -1,19 +1,54 @@
class Admin::RoomsController < ApplicationController
before_filter :verify_organizer
before_action :set_room, only: [:edit, :update, :destroy]
before_action :set_conference
def show
render :rooms_list
def index
@rooms = @conference.rooms
end
def new
@room = @conference.rooms.build
end
def edit
end
def create
@room = @conference.rooms.build(room_params)
if @room.save
redirect_to admin_conference_rooms_path(@conference.short_title), notice: 'Room was successfully created.'
else
flash[:alert] = "A error prohibited this Rooms from being saved: #{@room.errors.full_messages.join('. ')}."
render :new
end
end
def update
if @conference.update_attributes(params[:conference])
redirect_to(admin_conference_rooms_path(
conference_id: @conference.short_title),
notice: 'Rooms were successfully updated.')
if @room.update(room_params)
redirect_to admin_conference_rooms_path(@conference.short_title), notice: 'Room was successfully updated.'
else
redirect_to(admin_conference_rooms_path(
conference_id: @conference.short_title),
notice: 'Room update failed.')
flash[:alert] = "A error prohibited this Rooms from being saved: #{@room.errors.full_messages.join('. ')}."
render :edit
end
end
def destroy
@room.destroy
redirect_to admin_conference_rooms_path, notice: 'Room was successfully destroyed.'
end
private
def set_conference
@conference = Conference.find_by(short_title: params[:conference_id])
end
def set_room
@room = Room.find(params[:id])
end
def room_params
params[:room]
end
end

View file

@ -1,30 +1,34 @@
class Admin::VenueController < ApplicationController
class Admin::VenuesController < ApplicationController
before_filter :verify_organizer
def index
end
before_action :set_venue, only: [:update, :edit]
def update
@venue = @conference.venue
@venue.assign_attributes(params[:venue])
@venue.assign_attributes(venue_params)
venue_notify = (@venue.name_changed? || @venue.address_changed?) &&
(!@venue.name.blank? && !@venue.address.blank?) &&
(@conference.email_settings.send_on_venue_update &&
!@conference.email_settings.venue_update_subject.blank? &&
@conference.email_settings.venue_update_template)
if @venue.update_attributes(params[:venue])
if @venue.save
Mailbot.delay.send_email_on_venue_update(@conference) if venue_notify
redirect_to(admin_conference_venue_info_path(conference_id: @conference.short_title),
notice: 'Venue was successfully updated.')
redirect_to(:back, notice: 'Venue was successfully updated.')
else
redirect_to(admin_conference_venue_info_path(conference_id: @conference.short_title),
redirect_to(:back,
notice: 'Venue Updation Failed!')
end
end
def show
def edit
end
private
def venue_params
params[:venue]
end
def set_venue
@venue = @conference.venue
render :venue_info
end
end

View file

@ -14,7 +14,7 @@
= link_to 'Set up call for papers', admin_conference_callforpapers_path(conference_progress['short_title'])
%li{'class'=>class_for_todo(conference_progress['venue'])}
%span{'class'=>icon_for_todo(conference_progress['venue'])}
= link_to 'Add venue', admin_conference_venue_info_path(conference_progress['short_title'])
= link_to 'Add venues', edit_admin_conference_venue_path(conference_progress['short_title'])
%li{'class'=>class_for_todo(conference_progress['rooms'])}
%span{'class'=>icon_for_todo(conference_progress['rooms'])}
= link_to 'Add rooms', admin_conference_rooms_path(conference_progress['short_title'])

View file

@ -0,0 +1,8 @@
= f.inputs do
= f.input :name
= f.input :description, :input_html => {:rows => 2, data: { provide: "markdown-editable" } }, hint: markdown_hint("Write about the hotel/place, of what they are offering, about types of rooms, prices and address.")
= image_tag f.object.photo(:thumb) if !f.object.photo.blank?
= f.input :photo
= f.input :website_link
.actions
= f.button 'Save Lodging', class: 'btn btn-primary'

View file

@ -1,10 +0,0 @@
<div class="nested-fields">
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :description, :input_html => {:rows => 2, data: { provide: "markdown-editable" } }, hint: markdown_hint("Write about the hotel/place, of what they are offering, about types of rooms, prices and address.") %>
<%= image_tag f.object.photo(:thumb) if !f.object.photo.blank? %>
<%= f.input :photo %>
<%= f.input :website_link %>
<%= remove_association_link :lodging, f %>
<% end %>
</div>

View file

@ -0,0 +1,6 @@
%h1 Editing Lodging
= semantic_form_for @lodging, url: admin_conference_lodging_path(conference_id: @conference.short_title, id: @lodging.id) do |f|
= render 'form', f: f
= link_to 'Back', admin_conference_lodgings_path

View file

@ -1,6 +1,37 @@
.row
.col-md-8
= semantic_form_for(@venue, :url => admin_conference_lodging_path(@conference.short_title, @conference.venue.lodgings), :html => {:multipart => true}) do |f|
= semantic_form_for(@venue, :url => admin_conference_venue_path(@conference.short_title, @conference.venue)) do |f|
= f.input :include_lodgings_in_splash, hint: 'On setting this true you will enable the lodgings to be displayed on the splash page'
= dynamic_association :lodgings, "Lodgings", f
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}
%hr
- @venue.lodgings.each_slice(3) do |slice|
.row.row-flex.row-flex-wrap
- slice.each do |lodging|
.col-md-4
.thumbnail.flex-col
%h3.text-center
= lodging.name
- unless lodging.photo.blank?
= image_tag(lodging.photo(:large), class: 'img-responsive')
-else
%h4.text-center
Not set!
.caption.flex-grow
.caption
%p
%dl.dl-horizontal
%dt
Description
%dd
= markdown(lodging.description) unless lodging.description.blank?
%dt
Website
%dd
= lodging.website_link
%p
= link_to 'Edit', edit_admin_conference_lodging_path(@conference.short_title, lodging.id), class: 'btn btn-primary'
= link_to 'Delete', admin_conference_lodging_path(@conference.short_title, lodging.id),
method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-danger'
= link_to 'New Lodging', new_admin_conference_lodging_path(@conference.short_title), class: 'btn btn-primary'

View file

@ -0,0 +1,6 @@
%h1 New Lodging
= semantic_form_for @lodging, url: admin_conference_lodgings_path(conference_id: @conference.short_title) do |f|
= render 'form', f: f
= link_to 'Back', admin_conference_lodgings_path

View file

@ -0,0 +1,6 @@
= f.inputs do
= f.input :name
= f.input :size, input_html: { size: 5 }
= f.input :public, as: :boolean
.actions
= f.button 'Save Room', class: 'btn btn-primary'

View file

@ -1,8 +0,0 @@
<div class="nested-fields">
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :size, :input_html => {:size => 5} %>
<%= f.input :public, :as => :boolean %>
<%= remove_association_link :room, f %>
<% end %>
</div>

View file

@ -0,0 +1,6 @@
%h1 Editing Room
= semantic_form_for @room, url: admin_conference_room_path(conference_id: @conference.short_title, id: @room.id) do |f|
= render 'form', f: f
= link_to 'Back', admin_conference_rooms_path

View file

@ -1,5 +1,23 @@
.row
.col-md-8
= semantic_form_for(@conference, :url => admin_conference_room_path(@conference.short_title, @conference.rooms)) do |f|
= dynamic_association :rooms, "Rooms", f
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}
%h1 Rooms
%table.table
%thead
%tr
%th Name
%th Size
%th Public
%th Delete
- @rooms.each do |room|
%tr
%td= link_to room.name, edit_admin_conference_room_path(@conference.short_title, room.id)
%td= room.size
%td
- if room.public
%span.fa.fa-check{'style'=>'color: green;'}
-else
%span.fa.fa-times{'style'=>'color: red;'}
%td= link_to 'Delete', admin_conference_room_path(@conference.short_title, room.id),
method: :delete, data: { confirm: 'Are you sure?' }
= link_to 'New Room', new_admin_conference_room_path(@conference.short_title), class: 'btn btn-primary'

View file

@ -0,0 +1,6 @@
%h1 New Room
= semantic_form_for @room, url: admin_conference_rooms_path(conference_id: @conference.short_title) do |f|
= render 'form', f: f
= link_to 'Back', admin_conference_rooms_path

View file

@ -1,6 +1,6 @@
.row
.col-md-8
= semantic_form_for(@venue, :url => admin_conference_venue_update_path(@conference.short_title),:html => {:multipart => true}) do |f|
= semantic_form_for(@venue, :url => admin_conference_venue_path(@conference.short_title),:html => {:multipart => true}) do |f|
= f.input :include_venue_in_splash, hint: 'On setting this true you will enable the venue to be displayed on the splash page'
= f.input :name, :input_html => {:rows => 1}
= f.input :address, :input_html => {:rows => 1}

View file

@ -0,0 +1,44 @@
%dl.dl-horizontal
%dt
Name
%dd
- unless @conference.venue.name.blank?
= @conference.venue.name
- else
Not set!
%dt
Address
%dd
- unless @conference.venue.name.blank?
= @conference.venue.address
- else
Not set!
%dt
Website
%dd
- unless @conference.venue.name.blank?
= @conference.venue.website
- else
Not set!
%dt
Description
%dd
- unless @conference.venue.name.blank?
= markdown(@conference.venue.description)
- else
Not set!
.thumbnail
%h3.text-center
Venue Photo
- if @conference.venue.photo?
= image_tag(@conference.venue.photo(:large), class: 'img-responsive')
.caption
%p
%dl.dl-horizontal
%dt
Filename
%dd
= @conference.venue.photo_file_name
-else
%h4.text-center
Not set!

View file

@ -0,0 +1,16 @@
.row
.col-md-12
%ul.nav.nav-tabs{'role'=>'tablist'}
%li.active
%a{'href'=> '#show', 'role'=>'tab', 'data-toggle'=>'tab'}
Show
%li
%a{'href'=> '#edit', 'role'=>'tab', 'data-toggle'=>'tab'}
Edit
.row
.col-md-12
.tab-content
.tab-pane.active#show
= render partial: 'show'
.tab-pane#edit
= render partial: 'edit'

View file

@ -22,8 +22,22 @@
%hr
%li{:class=> "#{active_nav_li(admin_conference_path(@conference.short_title))} nav-header nav-header-bigger"}
= link_to(admin_conference_path(@conference.short_title)) do
%span.glyphicon.glyphicon-dashboard
Manage
%span.fa.fa-tachometer
Dashboard
%li{ class: active_nav_li(edit_admin_conference_venue_path(@conference.short_title)) }
= link_to(edit_admin_conference_venue_path(@conference.short_title)) do
%span.fa.fa-building
Venue
%ul
%li{ class: active_nav_li(admin_conference_rooms_path(@conference.short_title)) }
= link_to(admin_conference_rooms_path(@conference.short_title)) do
%span.fa.fa-flag
Rooms
%li{ class: active_nav_li(admin_conference_lodgings_path(@conference.short_title)) }
= link_to(admin_conference_lodgings_path(@conference.short_title)) do
%span.fa.fa-institution
Lodgings
%hr
%li{:class=> active_nav_li(admin_conference_events_path(@conference.short_title))}
= link_to(admin_conference_events_path(@conference.short_title)) do
%span.glyphicon.glyphicon-comment
@ -49,16 +63,6 @@
= link_to(admin_conference_targets_path(@conference.short_title)) do
%span.glyphicon.glyphicon-flag
Targets
%li{:class=> "#{active_nav_li(admin_conference_venue_info_path(@conference.short_title))} myAccordion"}
= link_to(admin_conference_venue_info_path(@conference.short_title)) do
%span.glyphicon.glyphicon-road
Venue
%span.small.glyphicon.glyphicon-chevron-right
%ul.nav.nav-stacked.nav-pills.small.collapse.subNav
%li{:class=> active_nav_li(admin_conference_rooms_path(@conference.short_title))}
= link_to 'Rooms', admin_conference_rooms_path(@conference.short_title)
%li{ class: active_nav_li(admin_conference_lodgings_path(@conference.short_title)) }
= link_to 'Lodgings', admin_conference_lodgings_path(@conference.short_title)
%li{:class=> "#{active_nav_li(admin_conference_sponsorship_levels_path(@conference.short_title))} myAccordion" }
= link_to(admin_conference_sponsorship_levels_path(@conference.short_title)) do
%span.glyphicon.glyphicon-star