tb_photos 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +75 -0
- data/Rakefile +28 -0
- data/app/assets/images/spud/photos/buttons/cog_16x16.png +0 -0
- data/app/assets/images/spud/photos/buttons/x_16x16.png +0 -0
- data/app/assets/images/spud/photos/photo_albums_thumb.png +0 -0
- data/app/assets/images/spud/photos/photo_albums_thumb@2x.png +0 -0
- data/app/assets/javascripts/spud/admin/photos.js +356 -0
- data/app/assets/stylesheets/spud/admin/photos.css +128 -0
- data/app/controllers/photo_albums_controller.rb +54 -0
- data/app/controllers/photo_galleries_controller.rb +17 -0
- data/app/controllers/spud/admin/photo_albums_controller.rb +64 -0
- data/app/controllers/spud/admin/photo_galleries_controller.rb +53 -0
- data/app/controllers/spud/admin/photos_controller.rb +93 -0
- data/app/helpers/photo_albums_helper.rb +2 -0
- data/app/helpers/photo_galleries_helper.rb +2 -0
- data/app/helpers/spud/admin/photo_albums_helper.rb +2 -0
- data/app/helpers/spud/admin/photo_galleries_helper.rb +2 -0
- data/app/helpers/spud/admin/photos_helper.rb +7 -0
- data/app/models/spud_photo.rb +29 -0
- data/app/models/spud_photo_album.rb +49 -0
- data/app/models/spud_photo_albums_photo.rb +5 -0
- data/app/models/spud_photo_galleries_album.rb +5 -0
- data/app/models/spud_photo_gallery.rb +36 -0
- data/app/models/spud_photo_sweeper.rb +39 -0
- data/app/views/layouts/spud/admin/spud_photos.html.erb +8 -0
- data/app/views/photo_albums/index.html.erb +24 -0
- data/app/views/photo_albums/show.html.erb +27 -0
- data/app/views/photo_galleries/index.html.erb +18 -0
- data/app/views/spud/admin/photo_albums/_album.html.erb +10 -0
- data/app/views/spud/admin/photo_albums/_form.html.erb +36 -0
- data/app/views/spud/admin/photo_albums/destroy.js.erb +1 -0
- data/app/views/spud/admin/photo_albums/edit.html.erb +1 -0
- data/app/views/spud/admin/photo_albums/index.html.erb +9 -0
- data/app/views/spud/admin/photo_albums/new.html.erb +1 -0
- data/app/views/spud/admin/photo_galleries/_form.html.erb +39 -0
- data/app/views/spud/admin/photo_galleries/destroy.js.erb +1 -0
- data/app/views/spud/admin/photo_galleries/edit.html.erb +1 -0
- data/app/views/spud/admin/photo_galleries/index.html.erb +17 -0
- data/app/views/spud/admin/photo_galleries/new.html.erb +1 -0
- data/app/views/spud/admin/photos/_form.html.erb +41 -0
- data/app/views/spud/admin/photos/_photo.html.erb +13 -0
- data/app/views/spud/admin/photos/destroy.js.erb +1 -0
- data/app/views/spud/admin/photos/edit.html.erb +1 -0
- data/app/views/spud/admin/photos/index.html.erb +3 -0
- data/app/views/spud/admin/photos/new.html.erb +1 -0
- data/app/views/spud/admin/photos/show.js.erb +5 -0
- data/config/routes.rb +24 -0
- data/db/migrate/20120228232120_create_spud_photos.rb +13 -0
- data/db/migrate/20120228232329_create_spud_photo_albums.rb +15 -0
- data/db/migrate/20120228232344_create_spud_photo_galleries.rb +15 -0
- data/db/migrate/20120405042046_upgrade_photo_relationships.rb +8 -0
- data/db/migrate/20121127210314_rename_order_to_sort_order.rb +6 -0
- data/lib/generators/spud/photos/views_generator.rb +14 -0
- data/lib/spud_photos/configuration.rb +21 -0
- data/lib/spud_photos/engine.rb +37 -0
- data/lib/spud_photos/version.rb +5 -0
- data/lib/tasks/spud_photos_tasks.rake +4 -0
- data/lib/tb_photos.rb +6 -0
- metadata +258 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
class PhotoGalleriesController < ApplicationController
|
2
|
+
|
3
|
+
respond_to :html, :json, :xml
|
4
|
+
layout Spud::Photos.base_layout
|
5
|
+
|
6
|
+
after_filter :only => [:index] do |c|
|
7
|
+
if Spud::Photos.enable_full_page_caching
|
8
|
+
c.cache_page(nil, nil, false)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def index
|
13
|
+
@photo_galleries = SpudPhotoGallery.order('created_at desc').includes(:albums)
|
14
|
+
respond_with @photo_galleries
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class Spud::Admin::PhotoAlbumsController < Spud::Admin::ApplicationController
|
2
|
+
|
3
|
+
before_filter :get_album, :only => [:show, :edit, :update, :destroy, :library]
|
4
|
+
add_breadcrumb 'Photo Albums', :spud_admin_photo_albums_path
|
5
|
+
respond_to :html, :json, :xml
|
6
|
+
layout 'spud/admin/spud_photos'
|
7
|
+
cache_sweeper :spud_photo_sweeper, :only => [:create, :update, :destroy]
|
8
|
+
|
9
|
+
def index
|
10
|
+
@photo_albums = SpudPhotoAlbum.all
|
11
|
+
respond_with @photo_albums
|
12
|
+
end
|
13
|
+
|
14
|
+
def show
|
15
|
+
respond_with @photo_album
|
16
|
+
end
|
17
|
+
|
18
|
+
def new
|
19
|
+
@photo_album = SpudPhotoAlbum.new
|
20
|
+
respond_with @photo_album
|
21
|
+
end
|
22
|
+
|
23
|
+
def create
|
24
|
+
@photo_album = SpudPhotoAlbum.new(params[:spud_photo_album])
|
25
|
+
if @photo_album.save
|
26
|
+
set_photo_order
|
27
|
+
end
|
28
|
+
respond_with @photo_album, :location => spud_admin_photo_albums_path
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit
|
32
|
+
respond_with @photo_album
|
33
|
+
end
|
34
|
+
|
35
|
+
def update
|
36
|
+
@photo_album.update_attributes(params[:spud_photo_album])
|
37
|
+
if @photo_album.save
|
38
|
+
set_photo_order
|
39
|
+
flash[:notice] = 'SpudPhotoAlbum updated successfully'
|
40
|
+
end
|
41
|
+
respond_with @photo_album, :location => spud_admin_photo_albums_path
|
42
|
+
end
|
43
|
+
|
44
|
+
def destroy
|
45
|
+
flash[:notice] = 'SpudPhotoAlbum deleted successfully' if @photo_album.destroy
|
46
|
+
respond_with @photo_album, :location => spud_admin_photo_albums_path
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_album
|
50
|
+
@photo_album = SpudPhotoAlbum.find(params[:id])
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def set_photo_order
|
56
|
+
order_ids = params[:spud_photo_album][:photo_ids] || []
|
57
|
+
@photo_album.spud_photo_albums_photos.each do |obj|
|
58
|
+
logger.debug "##### ID: #{obj.spud_photo_id.to_s}"
|
59
|
+
index = order_ids.index(obj.spud_photo_id.to_s)
|
60
|
+
obj.update_attribute(:sort_order, index)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class Spud::Admin::PhotoGalleriesController < Spud::Admin::ApplicationController
|
2
|
+
|
3
|
+
before_filter :get_gallery, :only => [:show, :edit, :update, :destroy]
|
4
|
+
before_filter :get_albums, :only => [:new, :create, :edit, :update]
|
5
|
+
add_breadcrumb 'Photo Galleries', :spud_admin_photo_galleries_path
|
6
|
+
respond_to :html, :json, :xml
|
7
|
+
layout 'spud/admin/spud_photos'
|
8
|
+
cache_sweeper :spud_photo_sweeper, :only => [:create, :update, :destroy]
|
9
|
+
|
10
|
+
def index
|
11
|
+
@photo_galleries = SpudPhotoGallery.all
|
12
|
+
respond_with @photo_galleries
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
respond_with @photo_gallery
|
17
|
+
end
|
18
|
+
|
19
|
+
def new
|
20
|
+
@photo_gallery = SpudPhotoGallery.new
|
21
|
+
respond_with @photo_gallery
|
22
|
+
end
|
23
|
+
|
24
|
+
def create
|
25
|
+
@photo_gallery = SpudPhotoGallery.new(params[:spud_photo_gallery])
|
26
|
+
flash[:notice] = 'SpudPhotoGallery created successfully' if @photo_gallery.save
|
27
|
+
respond_with @photo_gallery, :location => spud_admin_photo_galleries_path
|
28
|
+
end
|
29
|
+
|
30
|
+
def edit
|
31
|
+
respond_with @photo_gallery
|
32
|
+
end
|
33
|
+
|
34
|
+
def update
|
35
|
+
@photo_gallery.update_attributes(params[:spud_photo_gallery])
|
36
|
+
flash[:notice] = 'SpudPhotoGallery updated successfully' if @photo_gallery.save
|
37
|
+
respond_with @photo_gallery, :location => spud_admin_photo_galleries_path
|
38
|
+
end
|
39
|
+
|
40
|
+
def destroy
|
41
|
+
flash[:notice] = 'SpudPhotoGallery deleted successfully' if @photo_gallery.destroy
|
42
|
+
respond_with @photo_gallery, :location => spud_admin_photo_galleries_path
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_gallery
|
46
|
+
@photo_gallery = SpudPhotoGallery.find(params[:id])
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_albums
|
50
|
+
@photo_albums = SpudPhotoAlbum.all
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
class Spud::Admin::PhotosController < Spud::Admin::ApplicationController
|
2
|
+
|
3
|
+
include RespondsToParent
|
4
|
+
|
5
|
+
before_filter :get_photo, :only => [:show, :edit, :update, :destroy]
|
6
|
+
respond_to :html, :json, :xml, :js
|
7
|
+
layout false
|
8
|
+
cache_sweeper :spud_photo_sweeper, :only => [:create, :update, :destroy]
|
9
|
+
|
10
|
+
def index
|
11
|
+
@photos = SpudPhoto.all
|
12
|
+
respond_with @photos
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
respond_with @photo
|
17
|
+
end
|
18
|
+
|
19
|
+
def new
|
20
|
+
@photo = SpudPhoto.new
|
21
|
+
respond_with @photo do |format|
|
22
|
+
format.js { render 'new', :layout => false }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def create
|
27
|
+
@photo = SpudPhoto.new(params[:spud_photo])
|
28
|
+
if @photo.save
|
29
|
+
success = true
|
30
|
+
flash[:notice] = 'SpudPhoto created successfully'
|
31
|
+
end
|
32
|
+
if request.xhr?
|
33
|
+
render json_for_photo(success)
|
34
|
+
else
|
35
|
+
respond_to_parent do
|
36
|
+
render 'show.js'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def edit
|
42
|
+
respond_with @photo do |format|
|
43
|
+
format.js { render 'edit', :layout => false }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def update
|
48
|
+
@photo.update_attributes(params[:spud_photo])
|
49
|
+
if @photo.save
|
50
|
+
success = true
|
51
|
+
flash[:notice] = 'SpudPhoto updated successfully'
|
52
|
+
end
|
53
|
+
if request.xhr?
|
54
|
+
render json_for_photo(success)
|
55
|
+
else
|
56
|
+
respond_to_parent do
|
57
|
+
render 'show.js'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def destroy
|
63
|
+
flash[:notice] = 'SpudPhoto deleted successfully' if @photo.destroy
|
64
|
+
respond_with @photo, :location => spud_admin_photos_path
|
65
|
+
end
|
66
|
+
|
67
|
+
def mass_destroy
|
68
|
+
@photos = SpudPhoto.where(:id => params[:spud_photo_ids])
|
69
|
+
flash[:notice] = 'Photos deleted successfully' if @photos.destroy_all
|
70
|
+
respond_with @photos, :location => spud_admin_photos_path
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def get_photo
|
76
|
+
@photo = SpudPhoto.find(params[:id])
|
77
|
+
end
|
78
|
+
|
79
|
+
def json_for_photo(success)
|
80
|
+
if success
|
81
|
+
return {:status => 200, :json => {
|
82
|
+
:id => @photo.id,
|
83
|
+
:html => render_to_string(:partial => 'photo', :locals => {:photo => @photo}, :layout => nil)
|
84
|
+
}}
|
85
|
+
else
|
86
|
+
return {:status => 422, :json => {
|
87
|
+
:id => 0,
|
88
|
+
:html => render_to_string(:partial => 'form', :layout => nil)
|
89
|
+
}}
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class SpudPhoto < ActiveRecord::Base
|
2
|
+
|
3
|
+
attr_accessible :title, :caption, :photo
|
4
|
+
|
5
|
+
has_many :spud_photo_albums_photos, :dependent => :destroy
|
6
|
+
has_many :albums,
|
7
|
+
:through => :spud_photo_albums_photos,
|
8
|
+
:source => :spud_photo_album
|
9
|
+
|
10
|
+
has_attached_file :photo,
|
11
|
+
:styles => lambda { |attachment| attachment.instance.dynamic_styles },
|
12
|
+
:convert_options => Spud::Photos.config.convert_options,
|
13
|
+
:storage => Spud::Photos.paperclip_storage,
|
14
|
+
:s3_credentials => Spud::Photos.s3_credentials,
|
15
|
+
:url => Spud::Photos.storage_url,
|
16
|
+
:path => Spud::Photos.storage_path
|
17
|
+
|
18
|
+
validates_attachment_presence :photo
|
19
|
+
|
20
|
+
def dynamic_styles
|
21
|
+
compress = '-strip -density 72x72'
|
22
|
+
admin_styles = {
|
23
|
+
:spud_admin_small => {:geometry => '125x125#', :convert_options => compress},
|
24
|
+
:spud_admin_medium => {:geometry => '300x200', :convert_options => compress}
|
25
|
+
}
|
26
|
+
return admin_styles.merge(Spud::Photos.config.photo_styles)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class SpudPhotoAlbum < ActiveRecord::Base
|
2
|
+
|
3
|
+
attr_accessible :title, :url_name, :photos, :photo_ids
|
4
|
+
|
5
|
+
has_many :spud_photo_albums_photos, :dependent => :destroy
|
6
|
+
has_many :photos,
|
7
|
+
:through => :spud_photo_albums_photos,
|
8
|
+
:source => :spud_photo,
|
9
|
+
:order => 'spud_photo_albums_photos.sort_order asc'
|
10
|
+
|
11
|
+
has_many :spud_photo_galleries_albums
|
12
|
+
has_many :galleries,
|
13
|
+
:through => :spud_photo_galleries_albums,
|
14
|
+
:source => :spud_photo_gallery
|
15
|
+
|
16
|
+
validates_presence_of :title, :url_name
|
17
|
+
validates_uniqueness_of :title, :url_name
|
18
|
+
before_validation :set_url_name
|
19
|
+
after_save :update_photo_order
|
20
|
+
|
21
|
+
def top_photo_url(style)
|
22
|
+
unless photos.empty?
|
23
|
+
return photos.first.photo.url(style)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def photos_available
|
28
|
+
if photo_ids.any?
|
29
|
+
return SpudPhoto.where('id not in (?)', photo_ids)
|
30
|
+
else
|
31
|
+
return SpudPhoto.all
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def set_url_name
|
38
|
+
self.url_name = self.title.parameterize
|
39
|
+
end
|
40
|
+
|
41
|
+
def update_photo_order
|
42
|
+
# order = 0
|
43
|
+
# self.photos.each do |p|
|
44
|
+
# p.update_attribute(:order, order)
|
45
|
+
# order += 1
|
46
|
+
# end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class SpudPhotoGallery < ActiveRecord::Base
|
2
|
+
|
3
|
+
attr_accessible :title, :url_name, :albums, :album_ids
|
4
|
+
|
5
|
+
has_many :spud_photo_galleries_albums, :dependent => :destroy
|
6
|
+
has_many :albums,
|
7
|
+
:through => :spud_photo_galleries_albums,
|
8
|
+
:source => :spud_photo_album
|
9
|
+
|
10
|
+
validates_presence_of :title, :url_name
|
11
|
+
validates_uniqueness_of :title, :url_name
|
12
|
+
before_validation :set_url_name
|
13
|
+
|
14
|
+
def top_photo_url(style)
|
15
|
+
unless albums.empty?
|
16
|
+
return albums.first.top_photo_url(style)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def albums_available
|
21
|
+
if album_ids.any?
|
22
|
+
return SpudPhotoAlbum.where('id not in (?)', album_ids)
|
23
|
+
else
|
24
|
+
return SpudPhotoAlbum.all
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def set_url_name
|
31
|
+
if self.title
|
32
|
+
self.url_name = self.title.parameterize
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class SpudPhotoSweeper < ActionController::Caching::Sweeper
|
2
|
+
|
3
|
+
observe :spud_photo, :spud_photo_album, :spud_photo_gallery
|
4
|
+
|
5
|
+
def after_create(record)
|
6
|
+
expire_cache_for(record)
|
7
|
+
end
|
8
|
+
|
9
|
+
def before_update(record)
|
10
|
+
expire_cache_for(record)
|
11
|
+
end
|
12
|
+
|
13
|
+
def after_destroy(record)
|
14
|
+
expire_cache_for(record)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def expire_cache_for(record)
|
20
|
+
if Spud::Photos.config.enable_full_page_caching
|
21
|
+
cache_path = File.join(ActionController::Base.page_cache_directory, Spud::Photos.config.base_path)
|
22
|
+
if File.directory?(cache_path)
|
23
|
+
FileUtils.rm_rf(cache_path)
|
24
|
+
end
|
25
|
+
if Spud::Photos.config.galleries_enabled
|
26
|
+
expire_page photo_galleries_path
|
27
|
+
else
|
28
|
+
expire_page photo_albums_path
|
29
|
+
end
|
30
|
+
|
31
|
+
if !Spud::Photos.config.page_caches_to_sweep.blank?
|
32
|
+
Spud::Photos.config.page_caches_to_sweep.each do |route|
|
33
|
+
expire_page(route)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= content_for :head do %>
|
2
|
+
<%= javascript_include_tag "spud/admin/photos" %>
|
3
|
+
<%= stylesheet_link_tag 'spud/admin/photos' %>
|
4
|
+
<script type="text/javascript">
|
5
|
+
$(document).ready(Spud.Admin.Photos.init);
|
6
|
+
</script>
|
7
|
+
<% end %>
|
8
|
+
<%= render :template => 'layouts/spud/admin/detail' %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<% content_for :title do %>
|
2
|
+
<%= (@photo_gallery ? @photo_gallery.title : 'Photo Albums') %> | <%= Spud::Core.site_name %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :head do %>
|
6
|
+
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<h2><%= (@photo_gallery ? "Photo Gallery: #{@photo_gallery.title}" : 'Photo Albums') %></h2>
|
10
|
+
|
11
|
+
<% if Spud::Photos.galleries_enabled %>
|
12
|
+
<p><%= link_to 'Back to Galleries', photo_galleries_path %></p>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<div id="spud_photo_albums">
|
16
|
+
<% @photo_albums.each do |album| %>
|
17
|
+
<div class="spud_photo_album_thumbnail">
|
18
|
+
<h3>
|
19
|
+
<%= link_to album.title, (@photo_gallery ? photo_gallery_photo_album_path(@photo_gallery.url_name, album.url_name) : photo_album_path(album.url_name)) %>
|
20
|
+
</h3>
|
21
|
+
<%= image_tag album.top_photo_url(:medium), :title => album.title %>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<% content_for :title do %>
|
2
|
+
<%= @photo_album.title %> | <%= Spud::Core.site_name %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :head do %>
|
6
|
+
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<h2>Photo Album: <%= @photo_album.title %></h2>
|
10
|
+
|
11
|
+
<% if @photo_gallery %>
|
12
|
+
<% if @photo_gallery.albums.count == 1 %>
|
13
|
+
<p><%= link_to 'Back to Galleries', photo_galleries_path %>
|
14
|
+
<% else %>
|
15
|
+
<p><%= link_to 'Back to Gallery', photo_gallery_photo_albums_path(@photo_gallery.url_name) %>
|
16
|
+
<% end %>
|
17
|
+
<% else %>
|
18
|
+
<p><%= link_to 'Back to Albums', photo_albums_path %>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<div id="spud_photo_galleries">
|
22
|
+
<% @photo_album.photos.each do |photo| %>
|
23
|
+
<div class="spud_photo_album_thumbnail">
|
24
|
+
<%= link_to image_tag(photo.photo.url(:small), :alt => photo.caption, :title => photo.title), photo.photo.url(:large) %>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<% content_for :title do %>
|
2
|
+
Photo Galleries | <%= Spud::Core.site_name %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :head do %>
|
6
|
+
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<h2>Photo Galleries</h2>
|
10
|
+
|
11
|
+
<div id="spud_photo_galleries">
|
12
|
+
<% @photo_galleries.each do |gallery| %>
|
13
|
+
<div class="spud_photo_gallery_thumbnail">
|
14
|
+
<h3><%= link_to gallery.title, (gallery.albums.length == 1 ? photo_gallery_photo_album_path(gallery.url_name, gallery.albums.first.url_name) : photo_gallery_photo_albums_path(gallery.url_name)) %></h3>
|
15
|
+
<%= image_tag gallery.top_photo_url(:medium), :title => gallery.title %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<div id="spud_admin_photo_album_<%= album.id %>" class="spud_admin_photo_ui_thumb" style="background-image:url('<%= album.top_photo_url(:spud_admin_small) %>')">
|
2
|
+
<h5><%= album.title %></h5>
|
3
|
+
<div style="display:none;">
|
4
|
+
<%= hidden_field_tag 'spud_photo_gallery[album_ids][]', album.id %>
|
5
|
+
</div>
|
6
|
+
<div class="spud_admin_photo_ui_thumb_controls">
|
7
|
+
<%= link_to 'Edit', edit_spud_admin_photo_album_path(album), :class => 'spud_admin_photos_btn_edit' %>
|
8
|
+
<%= link_to 'Delete', spud_admin_photo_album_path(album), :method => :delete, :class => 'spud_admin_photos_btn_delete', :remote => true, :confirm => 'Are you sure?' %>
|
9
|
+
</div>
|
10
|
+
</div>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%= form_for @photo_album, :url => path, :html => {:class => 'form-horizontal', :id => 'spud_admin_photo_album_form'} do |f| %>
|
2
|
+
|
3
|
+
<%= error_messages_for(f.object) %>
|
4
|
+
|
5
|
+
<fieldset>
|
6
|
+
<legend>Photo Album Info</legend>
|
7
|
+
<div class="control-group">
|
8
|
+
<%= f.label :title, :class => "control-label" %>
|
9
|
+
<div class="controls">
|
10
|
+
<%= f.text_field :title %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</fieldset>
|
14
|
+
|
15
|
+
<fieldset class="spud_admin_photos_album_fieldset">
|
16
|
+
<legend>Selected Photos</legend>
|
17
|
+
<div id="spud_admin_photo_album_actions" class="control-group">
|
18
|
+
<%= link_to "Photo Library", spud_admin_photos_path, :class => "btn btn-primary", :id => 'spud_admin_photo_album_action_library' %>
|
19
|
+
<%= link_to "Upload Photo", new_spud_admin_photo_path, :class => "btn btn-success", :id => 'spud_admin_photo_album_action_upload' %>
|
20
|
+
</div>
|
21
|
+
<div id="spud_admin_photo_upload_queue">
|
22
|
+
<p>Drag and drop photos here to upload</p>
|
23
|
+
<h5 id="spud_admin_photo_upload_queue_label">Queued Uploads: <span>0</span></h5>
|
24
|
+
<div id="spud_admin_photo_upload_queue_bars"></div>
|
25
|
+
</div>
|
26
|
+
<div id="spud_admin_photos_selected" class="control-group spud_admin_photo_ui_thumbs spud_admin_photo_ui_thumbs_sortable">
|
27
|
+
<%= render :partial => '/spud/admin/photos/photo', :collection => @photo_album.photos %>
|
28
|
+
</div>
|
29
|
+
</fieldset>
|
30
|
+
|
31
|
+
<div class="form-actions" style="clear:both">
|
32
|
+
<%= f.submit "Save Photo Album", :class=>"btn btn-primary form-btn", "data-loading-text" => "Saving..." %>
|
33
|
+
or <%=link_to "cancel", request.referer, :class => "btn" %>
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Spud.Admin.Photos.markPhotoAlbumAsDeleted(<%= @photo_album.id %>);
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => 'form', :locals => {:path => spud_admin_photo_album_path(@photo_album)} %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%= content_for :data_controls do %>
|
2
|
+
<%= link_to "New Photo Album", new_spud_admin_photo_album_path, :class => "btn btn-primary", :title => "New Photo Album" %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= content_for :detail do %>
|
6
|
+
<div id="spud_admin_photo_galleries" class="spud_admin_photo_ui_thumbs">
|
7
|
+
<%= render :partial => 'album', :collection => @photo_albums %>
|
8
|
+
<div>
|
9
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => 'form', :locals => {:path => spud_admin_photo_albums_path} %>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<%= form_for @photo_gallery, :url => path, :html => {:class => 'form-horizontal', :id => 'spud_admin_photo_gallery_form'} do |f| %>
|
2
|
+
|
3
|
+
<%= error_messages_for(f.object) %>
|
4
|
+
|
5
|
+
<fieldset>
|
6
|
+
<legend>Gallery Info</legend>
|
7
|
+
<div class="control-group">
|
8
|
+
<%= f.label :title, :class => "control-label" %>
|
9
|
+
<div class="controls">
|
10
|
+
<%= f.text_field :title %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</fieldset>
|
14
|
+
|
15
|
+
<!-- if no albums are selected below, this ensures we send an empty album_ids array -->
|
16
|
+
<%= hidden_field_tag 'spud_photo_gallery[album_ids][]' %>
|
17
|
+
|
18
|
+
<fieldset>
|
19
|
+
<legend>Select Albums</legend>
|
20
|
+
<div id="spud_admin_photo_albums_selected" class="spud_admin_photos_selection_left">
|
21
|
+
<h4>Selected:</h4>
|
22
|
+
<div class="spud_admin_photo_ui_thumbs spud_admin_photo_ui_thumbs_sortable">
|
23
|
+
<%= render :partial => '/spud/admin/photo_albums/album', :collection => @photo_gallery.albums %>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<div id="spud_admin_photo_albums_available" class="spud_admin_photos_selection_right">
|
27
|
+
<h4>Available:</h4>
|
28
|
+
<div class="spud_admin_photo_ui_thumbs spud_admin_photo_ui_thumbs_sortable">
|
29
|
+
<%= render :partial => '/spud/admin/photo_albums/album', :collection => @photo_gallery.albums_available %>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</fieldset>
|
33
|
+
|
34
|
+
<div class="form-actions">
|
35
|
+
<%= f.submit "Save Photo Gallery", :class=>"btn btn-primary form-btn", "data-loading-text" => "Saving..." %>
|
36
|
+
or <%= link_to "cancel", request.referer, :class => "btn" %>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Spud.Admin.Photos.markPhotoGalleryAsDeleted(<%= @photo_gallery.id %>);
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => 'form', :locals => {:path => spud_admin_photo_gallery_path(@photo_gallery)} %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%= content_for :data_controls do %>
|
2
|
+
<%= link_to "New Photo Gallery", new_spud_admin_photo_gallery_path, :class => "btn btn-primary", :title => "New Photo Gallery" %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= content_for :detail do %>
|
6
|
+
<div id="spud_admin_photo_galleries" class="spud_admin_photo_ui_thumbs">
|
7
|
+
<% @photo_galleries.each do |gallery| %>
|
8
|
+
<div id="spud_admin_photo_gallery_<%= gallery.id %>" class="spud_admin_photo_ui_thumb" style="background-image:url('<%= gallery.top_photo_url(:spud_admin_small) %>')">
|
9
|
+
<h5><%= gallery.title %></h5>
|
10
|
+
<div class="spud_admin_photo_ui_thumb_controls">
|
11
|
+
<%= link_to 'Edit', edit_spud_admin_photo_gallery_path(gallery), :class => 'spud_admin_photos_btn_edit' %>
|
12
|
+
<%= link_to 'Delete', spud_admin_photo_gallery_path(gallery), :method => :delete, :class => 'spud_admin_photos_btn_delete', :remote => true, :confirm => 'Are you sure?' %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<% end %>
|
16
|
+
<div>
|
17
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => 'form', :locals => {:path => spud_admin_photo_galleries_path} %>
|