Add venue_photos model and venue_photos admin controller in order to add more images to Venues and allow to delete it.
Show the additional photos in splash. Added fancybox gem for zoom when click on the additional photo. fix #777
This commit is contained in:
parent
2034c0f965
commit
7c0cd30dda
13 changed files with 85 additions and 7 deletions
3
Gemfile
3
Gemfile
|
|
@ -127,6 +127,9 @@ gem 'bootstrap-switch-rails', '~> 3.0.0'
|
|||
|
||||
gem 'ruby-oembed'
|
||||
|
||||
# for zoom in images
|
||||
gem 'fancybox2-rails'
|
||||
|
||||
# Use guard and spring for testing in development
|
||||
group :development do
|
||||
# rspec Guard rules
|
||||
|
|
|
|||
|
|
@ -159,6 +159,8 @@ GEM
|
|||
factory_girl_rails (4.6.0)
|
||||
factory_girl (~> 4.5.0)
|
||||
railties (>= 3.0.0)
|
||||
fancybox2-rails (0.2.8)
|
||||
railties (>= 3.1.0, < 5.0)
|
||||
faraday (0.9.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.3)
|
||||
|
|
@ -491,6 +493,7 @@ DEPENDENCIES
|
|||
devise
|
||||
devise_ichain_authenticatable
|
||||
factory_girl_rails
|
||||
fancybox2-rails
|
||||
font-awesome-rails
|
||||
formtastic (~> 2.3.0.rc3)
|
||||
formtastic-bootstrap
|
||||
|
|
|
|||
|
|
@ -38,9 +38,14 @@
|
|||
//= require osem-switch
|
||||
//= require osem-bootstrap
|
||||
//= require osem-commercials
|
||||
//= require fancybox
|
||||
|
||||
$(document).ready(function() {
|
||||
$('a[disabled=disabled]').click(function(event){
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
$("a.fancybox").fancybox();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -14,4 +14,5 @@
|
|||
*= require bootstrap-datetimepicker
|
||||
*= require leaflet
|
||||
*= require bootstrap3-switch
|
||||
*= require fancybox
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#program {
|
||||
h3 {
|
||||
padding-left: 5px;
|
||||
|
|
@ -51,7 +51,7 @@
|
|||
background-color: #F0FFFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#callforpapers {
|
||||
.timer-box{
|
||||
width: 130px;
|
||||
|
|
@ -60,10 +60,9 @@
|
|||
border:4px solid #989797;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#venue {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
#lodging {
|
||||
|
|
@ -89,7 +88,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#sponsors {
|
||||
.img-sponsor {
|
||||
max-height: 100px;
|
||||
|
|
@ -133,7 +132,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.scroll-top-wrapper {
|
||||
position: fixed;
|
||||
opacity: 0;
|
||||
|
|
@ -169,4 +168,4 @@
|
|||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
15
app/controllers/admin/venue_photos_controller.rb
Normal file
15
app/controllers/admin/venue_photos_controller.rb
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
module Admin
|
||||
class VenuePhotosController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :venue, through: :conference, singleton: true
|
||||
|
||||
def destroy
|
||||
photo = @venue.venue_photos.find(params[:id])
|
||||
if photo.destroy
|
||||
redirect_to edit_admin_conference_venue_path(@conference.short_title), notice: 'Photo deleted'
|
||||
else
|
||||
redirect_to edit_admin_conference_venue_path(@conference.short_title), alert: 'Photo not deleted'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -15,6 +15,9 @@ module Admin
|
|||
@venue = @conference.build_venue(venue_params)
|
||||
|
||||
if @venue.save
|
||||
if params[:venue_photos]
|
||||
create_additional_photos(@venue, params[:venue_photos])
|
||||
end
|
||||
redirect_to admin_conference_venue_path,
|
||||
notice: 'Venue was successfully created.'
|
||||
else
|
||||
|
|
@ -24,6 +27,9 @@ module Admin
|
|||
|
||||
def update
|
||||
if @venue.update_attributes(venue_params)
|
||||
if params[:venue_photos]
|
||||
create_additional_photos(@venue, params[:venue_photos])
|
||||
end
|
||||
redirect_to(admin_conference_venue_path(conference_id: @conference.short_title),
|
||||
notice: 'Venue was successfully updated.')
|
||||
else
|
||||
|
|
@ -46,5 +52,11 @@ module Admin
|
|||
def venue_params
|
||||
params.require(:venue).permit(:name, :street, :postalcode, :city, :country, :longitude, :latitude, :description, :website, :photo, :lodgings_attributes, :conference_id)
|
||||
end
|
||||
|
||||
def create_additional_photos(venue, photos)
|
||||
photos.each { |photo|
|
||||
venue.venue_photos.create(photo: photo )
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
class Venue < ActiveRecord::Base
|
||||
belongs_to :conference
|
||||
has_many :rooms, dependent: :destroy
|
||||
has_many :venue_photos, dependent: :destroy
|
||||
before_create :generate_guid
|
||||
|
||||
validates :name, :street, :city, :country, presence: true
|
||||
|
|
|
|||
9
app/models/venue_photo.rb
Normal file
9
app/models/venue_photo.rb
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
class VenuePhoto < ActiveRecord::Base
|
||||
belongs_to :venue
|
||||
|
||||
has_attached_file :photo,
|
||||
styles: { thumb: '100x100>', large: '300x300>' }
|
||||
validates_attachment_content_type :photo,
|
||||
content_type: [/jpg/, /jpeg/, /png/, /gif/],
|
||||
size: { in: 0..500.kilobytes }
|
||||
end
|
||||
|
|
@ -11,4 +11,15 @@
|
|||
- unless @venue.photo.blank?
|
||||
= image_tag @venue.photo(:thumb)
|
||||
= f.input :photo
|
||||
%label
|
||||
Additional photos
|
||||
- @venue.venue_photos.in_groups_of(4, false).each do |photo_group|
|
||||
.row
|
||||
- photo_group.each do |photo|
|
||||
.col-md-3
|
||||
= image_tag photo.photo(:thumb)
|
||||
= link_to "Delete", admin_conference_venue_photo_path(@conference.short_title, photo), method: :delete, class: 'btn btn-default', data: { confirm: 'really delete this photo ?' }
|
||||
%br
|
||||
= file_field_tag "venue_photos[]", type: :file, multiple: true
|
||||
%br
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }
|
||||
|
|
|
|||
|
|
@ -60,3 +60,8 @@
|
|||
- if @conference.venue.website
|
||||
%br
|
||||
=link_to @conference.venue.website, @conference.venue.website
|
||||
- @conference.venue.venue_photos.in_groups_of(4, false).each do |photo_group|
|
||||
.row
|
||||
- photo_group.each do |photo|
|
||||
.col-md-3
|
||||
= link_to image_tag(photo.photo(:thumb), class: 'img-rounded'), photo.photo(:large), class: 'fancybox'
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ Osem::Application.routes.draw do
|
|||
resource :splashpage
|
||||
resource :venue do
|
||||
resources :rooms, except: [:show]
|
||||
resources :venue_photos, only: [:destroy], as: :photos
|
||||
end
|
||||
resource :registration_period
|
||||
resource :program do
|
||||
|
|
|
|||
13
db/migrate/20160212231923_create_venue_photos.rb
Normal file
13
db/migrate/20160212231923_create_venue_photos.rb
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
class CreateVenuePhotos < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :venue_photos do |t|
|
||||
t.integer :venue_id
|
||||
t.string :photo_file_name
|
||||
t.string :photo_content_type
|
||||
t.integer :photo_file_size
|
||||
t.datetime :photo_updated_at
|
||||
|
||||
t.timestamps null: false
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue