polygallery 0.2.5 → 0.3.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 +4 -4
- data/app/controllers/concerns/polygallery/strong_params.rb +5 -3
- data/app/models/concerns/polygallery/acts_as_polyphoto.rb +4 -0
- data/app/views/polygallery/galleries/_simple_fields_for.html.haml +2 -7
- data/app/views/polygallery/photos/_simple_fields_for.html.haml +1 -1
- data/lib/polygallery/capybara_helpers.rb +22 -0
- data/lib/polygallery/factories.rb +9 -0
- data/lib/polygallery/factories/polygallery/galleries.rb +14 -7
- data/lib/polygallery/factories/polygallery/photos.rb +5 -1
- data/lib/polygallery/has_polygallery.rb +96 -36
- data/lib/polygallery/has_polyphotos.rb +84 -5
- data/lib/polygallery/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2220d771dc5f8a3fd23774aa1634b548b19cf7f
|
4
|
+
data.tar.gz: 59130d77b7a9a7911128fab5b9a43cd0a170b744
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0fca5ba2a6d89cd400816b01d69e27ce2b8511934094c2a1288051b9d02aa80b0b37329825bef633e5fd41c1c1bd9e88fe9d75d40e8317b29a463feefef8e34
|
7
|
+
data.tar.gz: eec43e1ed442f0790aa38e306797eef002dcba0b454b0accdeda9901bf453c8af681c068d6aa01769bbac7a31e9da09c66d34a559f5860161f8d2d6225ca54cb
|
@@ -6,8 +6,10 @@ module Polygallery::StrongParams
|
|
6
6
|
|
7
7
|
def polygallery_params(association='photos')
|
8
8
|
[:id, :title, :galleryable_id, :galleryable_type,
|
9
|
-
:_destroy, {:
|
10
|
-
|
11
|
-
|
9
|
+
:_destroy, {:photos_attributes => polyphoto_params(association) } ]
|
10
|
+
end
|
11
|
+
def polyphoto_params(association='photos')
|
12
|
+
[:id, :photo, :title, :caption, :gallery_title,
|
13
|
+
:galleryable_id, :galleryable_type, :_destroy]
|
12
14
|
end
|
13
15
|
end
|
@@ -38,6 +38,10 @@ module Polygallery
|
|
38
38
|
validates_attachment_presence(:photo) if validations[:presence]
|
39
39
|
|
40
40
|
before_validation :process_photo_to_upload
|
41
|
+
# TODO: figure out why save gets called so much!
|
42
|
+
# before_save {
|
43
|
+
# # puts "Photo changes: #{self.changes.inspect}"
|
44
|
+
# puts 'SAVING PHOTO!' }
|
41
45
|
end
|
42
46
|
|
43
47
|
def init_associations(settings=HasPolygallery::DEFAULTS)
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
- if options[:label]
|
8
8
|
%h3.lead
|
9
|
-
= link_to_add_association 'Add Photo', ff,
|
9
|
+
= link_to_add_association 'Add Photo', ff, :photos, :partial => 'polygallery/photos/simple_fields_for', :class => 'btn btn-default btn-sm pull-right', :data => {:association_insertion_node => "##{photo_association_name} .photo-receptacle", :association_insertion_method => 'append'}
|
10
10
|
- if options[:label] == true
|
11
11
|
= gallery.title.titleize
|
12
12
|
- else
|
@@ -19,10 +19,5 @@
|
|
19
19
|
%th File
|
20
20
|
%th.text-center Actions
|
21
21
|
%tbody.photo-receptacle
|
22
|
-
= ff.simple_fields_for photo_association_name do |pf|
|
22
|
+
= ff.simple_fields_for :photos do |pf| # photo_association_name do |pf|
|
23
23
|
= render 'polygallery/photos/simple_fields_for', :f => pf
|
24
|
-
|
25
|
-
-#- if !options[:label]
|
26
|
-
-# = ff.input_field :content, options[:input_html].merge({:as => :ckeditor})
|
27
|
-
-#- else
|
28
|
-
-#= ff.input :content, :as => :ckeditor, :label => options[:label].is_a?(String) ? options[:label] : name.to_s.titleize, :input_html => name.is_a?(String) ? options[:input_html].merge({:value => pb.content}) : options[:input_html]
|
@@ -3,7 +3,7 @@
|
|
3
3
|
= f.input_field :gallery_title, :as => :hidden
|
4
4
|
= f.input_field :galleryable_id, :as => :hidden
|
5
5
|
= f.input_field :galleryable_type, :as => :hidden
|
6
|
-
= image_tag f.object.photo.file? ? f.object.photo.url(:thumb) : 'polygallery/thumbnail-missing.jpg', :
|
6
|
+
= image_tag f.object.photo.file? ? f.object.photo.url(:thumb) : 'polygallery/thumbnail-missing.jpg', class: 'img-responsive'
|
7
7
|
%td
|
8
8
|
= f.input_field :photo
|
9
9
|
= f.input_field :caption, :placeholder => "Caption... (optional)", :style => "margin-top:5px;", :as => :string
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'polygallery/factories'
|
2
|
+
module Polygallery
|
3
|
+
module CapybaraHelpers
|
4
|
+
def add_photo_to_form(attrs=nil, table_id='photos')
|
5
|
+
attrs ||= build :polygallery_photo
|
6
|
+
tr_selector = ".polygallery-cocoon-table##{table_id} tr"
|
7
|
+
last_tr = all(tr_selector).last
|
8
|
+
if last_tr.find('input[id$="_photo"]').value.present?
|
9
|
+
page.execute_script <<-SCRIPT
|
10
|
+
$('.btn.add_fields[data-association-insertion-node="##{table_id} .photo-receptacle"]').click();
|
11
|
+
SCRIPT
|
12
|
+
last_tr = all(tr_selector).last
|
13
|
+
end
|
14
|
+
within last_tr do
|
15
|
+
random_photo = get_random_photo
|
16
|
+
find('input[id$="_photo"]').set random_photo
|
17
|
+
find('input[id$="_caption"]').set(attrs.caption)
|
18
|
+
yield if block_given?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
MFaker = defined?(Faker) ? Faker : FFaker
|
2
|
+
|
3
|
+
require 'polygallery/factories/polygallery/galleries'
|
4
|
+
require 'polygallery/factories/polygallery/photos'
|
5
|
+
|
6
|
+
def get_random_photo
|
7
|
+
photos_dir = Rails.root.join 'spec', 'upload_files'
|
8
|
+
Dir.glob(photos_dir.join('*.{jpg,png,gif}')).sample
|
9
|
+
end
|
@@ -1,13 +1,20 @@
|
|
1
|
-
MFaker = defined?(Faker) ? Faker : FFaker
|
2
|
-
|
3
1
|
FactoryGirl.define do
|
2
|
+
# to_create do |instance|
|
3
|
+
# raise "Save failed for #{instance.class} (#{instance.errors.full_messages.inspect})" if !instance.save
|
4
|
+
# end
|
5
|
+
|
4
6
|
factory :polygallery_gallery, :class => Polygallery::Gallery do
|
7
|
+
title 'gallery'
|
5
8
|
|
9
|
+
trait :with_photo do
|
10
|
+
photos_attributes { generate_photo_attributes } end
|
6
11
|
trait :with_photos do
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
+
photos_attributes { generate_photo_attributes 3 } end
|
13
|
+
trait :with_tons_of_photos do
|
14
|
+
photos_attributes { generate_photo_attributes 10 } end
|
12
15
|
end
|
13
16
|
end
|
17
|
+
def generate_photo_attributes(count=1, attrs={})
|
18
|
+
if count.is_a? Hash; attrs = count; count = 1 end
|
19
|
+
(1..count).map{ attributes_for :polygallery_photo, attrs }
|
20
|
+
end
|
@@ -1,8 +1,12 @@
|
|
1
1
|
include ActionDispatch::TestProcess
|
2
|
-
MFaker = defined?(Faker) ? Faker : FFaker
|
3
2
|
|
4
3
|
FactoryGirl.define do
|
4
|
+
# to_create do |instance|
|
5
|
+
# raise "Save failed for #{instance.class} (#{instance.errors.full_messages.inspect})" if !instance.save
|
6
|
+
# end
|
7
|
+
|
5
8
|
factory :polygallery_photo, :class => Polygallery::Photo do
|
6
9
|
caption { [nil, MFaker::BaconIpsum.paragraph].sample }
|
10
|
+
photo { File.new get_random_photo }
|
7
11
|
end
|
8
12
|
end
|
@@ -23,8 +23,9 @@ module Polygallery
|
|
23
23
|
:nested_attributes => {
|
24
24
|
:gallery => { :reject_if => :all_blank },
|
25
25
|
:photos => {
|
26
|
-
:
|
27
|
-
:
|
26
|
+
:allow_destroy => true,
|
27
|
+
:reject_if => proc {|attributes|
|
28
|
+
!attributes.key?('id') && attributes['photo'].nil? } }
|
28
29
|
},
|
29
30
|
:validates => {},
|
30
31
|
:paperclip => {
|
@@ -47,9 +48,6 @@ module Polygallery
|
|
47
48
|
title = 'gallery'
|
48
49
|
end
|
49
50
|
|
50
|
-
# associations = options[:associations]
|
51
|
-
# gallery_association = options[:associations][:gallery] if associations.present?
|
52
|
-
# gallery_class_name = gallery_association[:class_name] if gallery_association.present?
|
53
51
|
defaults = HasPolygallery::DEFAULTS
|
54
52
|
if options[:association_names].nil? && title.to_s != 'gallery'
|
55
53
|
options[:association_names] = {
|
@@ -60,18 +58,35 @@ module Polygallery
|
|
60
58
|
settings = defaults.deep_merge(options)
|
61
59
|
cattr_accessor "#{title}_settings".to_sym
|
62
60
|
send("#{title}_settings=".to_sym, settings)
|
61
|
+
attr_accessor :"#{title}_attributes", :galleries_built
|
63
62
|
|
64
63
|
has_one title.to_sym, -> { where(:title => title.to_s) }, settings[:associations][:gallery]
|
65
64
|
has_many settings[:association_names][:photos],
|
66
65
|
:through => :"#{title}",
|
67
|
-
:source => settings[:association_names][:photos],
|
66
|
+
:source => :photos, # settings[:association_names][:photos],
|
68
67
|
:class_name => settings[:associations][:photos][:class_name]
|
69
68
|
accepts_nested_attributes_for settings[:association_names][:gallery],
|
70
69
|
settings[:nested_attributes][:gallery]
|
71
70
|
accepts_nested_attributes_for settings[:association_names][:photos],
|
72
71
|
settings[:nested_attributes][:photos]
|
73
72
|
|
74
|
-
after_initialize :
|
73
|
+
after_initialize :if => :new_record? do
|
74
|
+
# puts "GA: #{self.gallery_attributes.inspect}"
|
75
|
+
if self.gallery_attributes.nil?
|
76
|
+
# puts 'BUILDING FIRST PHOTOS ON INIT!'
|
77
|
+
build_first_photos
|
78
|
+
# build_gallery_associations
|
79
|
+
end
|
80
|
+
end
|
81
|
+
# puts instance.inspect
|
82
|
+
# instance.new_record? && !instance.has_polygallery? }
|
83
|
+
before_validation do # , :on => :update # , :unless => :new_record?
|
84
|
+
# puts 'BUILDING GALLERIES ON VALIDATION'
|
85
|
+
# unless self.galleries_built?
|
86
|
+
build_gallery_associations
|
87
|
+
# end
|
88
|
+
prune_empty_photos
|
89
|
+
end
|
75
90
|
before_save :ensure_galleryable_set
|
76
91
|
|
77
92
|
include HasPolygallery::LocalInstanceMethods
|
@@ -87,19 +102,20 @@ module Polygallery
|
|
87
102
|
polygalleries.include?(gallery_title)
|
88
103
|
end
|
89
104
|
|
90
|
-
# def new(*args)
|
91
|
-
# super(*args)
|
92
|
-
# end
|
93
|
-
|
94
105
|
end
|
95
106
|
|
96
107
|
module LocalInstanceMethods
|
97
108
|
def polygalleries
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
.
|
102
|
-
.
|
109
|
+
self.class.polygalleries.each do |pg_name|
|
110
|
+
gallery_opts = self.send(:"#{pg_name}_settings")
|
111
|
+
gallery_classname = gallery_opts[:associations][:gallery][:class_name]
|
112
|
+
gallery_class = Object.const_get gallery_classname
|
113
|
+
table_name = gallery_class.table_name
|
114
|
+
gallery_class.select("#{table_name}.title")
|
115
|
+
.where(:galleryable => self)
|
116
|
+
.group("#{table_name}.title")
|
117
|
+
.map(&:title)
|
118
|
+
end
|
103
119
|
end
|
104
120
|
|
105
121
|
def has_polygallery?(gallery_title=nil)
|
@@ -107,32 +123,72 @@ module Polygallery
|
|
107
123
|
polygalleries.include?(gallery_title)
|
108
124
|
end
|
109
125
|
|
110
|
-
def
|
111
|
-
return unless self.class.has_polygallery?
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
126
|
+
def build_gallery_associations
|
127
|
+
return [] unless self.class.has_polygallery?
|
128
|
+
# puts 'BUILDING GALLERIES!'
|
129
|
+
gallery_associations = self.class.polygalleries.map{|pg|
|
130
|
+
self.build_gallery_association pg }
|
131
|
+
self.galleries_built = true
|
132
|
+
gallery_associations
|
133
|
+
end
|
134
|
+
def build_gallery_association(gallery_name=:gallery)
|
135
|
+
gallery_association = send gallery_name
|
136
|
+
attrs_for_this_gallery = send(:"#{gallery_name}_attributes") || {}
|
137
|
+
if gallery_association.present?
|
138
|
+
# if attrs_for_this_gallery.empty?
|
139
|
+
# gallery_association.photos.each do |p|
|
140
|
+
# if p.photo_to_upload.present?
|
141
|
+
# p.photo = File.new p.photo_to_upload
|
142
|
+
# p.photo_to_upload = nil
|
143
|
+
# end
|
144
|
+
# relevant_changes = p.changed -
|
145
|
+
# %w(galleryable_type galleryable_id gallery_title)
|
146
|
+
# if relevant_changes.any?
|
147
|
+
# attrs_for_this_photo = Hash[*relevant_changes.map{|column|
|
148
|
+
# [ column, p.send(column) ] }.flatten]
|
149
|
+
# attrs_for_this_gallery[:photos_attributes] ||= {}
|
150
|
+
# attrs_for_this_gallery[:photos_attributes][(p.id ||
|
151
|
+
# attrs_for_this_gallery[:photos_attributes].length).to_s] = attrs_for_this_photo
|
152
|
+
# end
|
153
|
+
# end
|
154
|
+
# # return gallery_association
|
155
|
+
# end
|
156
|
+
if attrs_for_this_gallery.empty?
|
157
|
+
# puts 'Returning due to empty attrs!'
|
158
|
+
return gallery_association
|
159
|
+
end
|
160
|
+
if gallery_association.persisted?
|
161
|
+
# puts 'Updating an existing gallery!'
|
162
|
+
gallery_association.update_attributes attrs_for_this_gallery
|
163
|
+
else
|
164
|
+
attrs_for_this_gallery.each{|k, v|
|
165
|
+
gallery_association.send :"#{k}=", v }
|
120
166
|
end
|
121
|
-
gallery_association
|
167
|
+
return gallery_association
|
122
168
|
end
|
169
|
+
settings_for_this_gallery = send :"#{gallery_name}_settings"
|
170
|
+
attrs_for_this_gallery[:polygallery_options] = settings_for_this_gallery
|
171
|
+
# puts "Building a new gallery: #{gallery_name}"
|
172
|
+
built_gallery = send :"build_#{gallery_name}", attrs_for_this_gallery
|
173
|
+
gallery_association = send :"#{gallery_name}=", built_gallery
|
174
|
+
gallery_association.galleryable ||= self
|
175
|
+
gallery_association
|
123
176
|
end
|
124
177
|
|
125
178
|
def build_first_photos
|
126
179
|
return unless self.class.has_polygallery?
|
127
|
-
self.class.polygalleries.each
|
180
|
+
# self.class.polygalleries.each{|pg|
|
181
|
+
# build_gallery_association pg
|
182
|
+
# send(pg.to_sym).build_first_photo }
|
183
|
+
build_gallery_associations.map(&:build_first_photo)
|
128
184
|
end
|
129
185
|
|
130
186
|
def first_photo
|
131
187
|
return unless self.class.has_polygallery?
|
132
188
|
first_p = nil
|
133
189
|
self.class.polygalleries.each do |pg|
|
134
|
-
|
135
|
-
ptos = send(
|
190
|
+
settings_for_this_gallery = send :"#{pg.to_s}_settings"
|
191
|
+
ptos = send(settings_for_this_gallery[:association_names][:photos])
|
136
192
|
.select{|p| p.photo.file? }
|
137
193
|
next if ptos.empty?
|
138
194
|
first_p = ptos.first.photo
|
@@ -142,15 +198,19 @@ module Polygallery
|
|
142
198
|
end
|
143
199
|
|
144
200
|
def ensure_galleryable_set
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
pp.galleryable ||= self
|
150
|
-
end
|
201
|
+
gallery_associations.each do |ga|
|
202
|
+
ga.galleryable ||= self
|
203
|
+
ga.polygallery_photos.each{|pp|
|
204
|
+
pp.galleryable ||= self }
|
151
205
|
end
|
152
206
|
end
|
153
207
|
|
208
|
+
def gallery_associations
|
209
|
+
self.class.polygalleries.map{|pg| send(pg) } end
|
210
|
+
def galleries_built?; self.galleries_built.present? end
|
211
|
+
def prune_empty_photos
|
212
|
+
gallery_associations.each(&:prune_empty_photos) end
|
213
|
+
|
154
214
|
end
|
155
215
|
end
|
156
216
|
end
|
@@ -17,6 +17,7 @@ module Polygallery
|
|
17
17
|
options = title
|
18
18
|
title = association_names[:photos].to_s
|
19
19
|
end
|
20
|
+
attr_accessor :photos_attributes, :photos_built
|
20
21
|
|
21
22
|
settings = defaults.deep_merge options
|
22
23
|
init_associations settings
|
@@ -24,7 +25,12 @@ module Polygallery
|
|
24
25
|
after_initialize do
|
25
26
|
self.polygallery_options ||= self.polygallery_settings
|
26
27
|
self.initialize_polygallery
|
28
|
+
# self.build_polygallery_photos # if new_record? && !polygallery_photos_attributes.is_a?(Hash)
|
27
29
|
end
|
30
|
+
after_initialize :build_polygallery_photos, :if => :new_record?
|
31
|
+
before_validation :set_nested_attributes_to_correct_gallery
|
32
|
+
before_validation :build_polygallery_photos, :unless => :photos_built? # , :on => :update
|
33
|
+
before_validation :prune_empty_photos
|
28
34
|
|
29
35
|
include HasPolyphotos::LocalInstanceMethods
|
30
36
|
end
|
@@ -36,9 +42,11 @@ module Polygallery
|
|
36
42
|
def init_associations(settings=HasPolygallery::DEFAULTS)
|
37
43
|
belongs_to :galleryable, :polymorphic => true
|
38
44
|
photos_name = settings[:association_names][:photos]
|
39
|
-
has_many
|
40
|
-
|
41
|
-
|
45
|
+
has_many :photos, settings[:associations][:photos].symbolize_keys
|
46
|
+
# has_many photos_name, settings[:associations][:photos].symbolize_keys
|
47
|
+
accepts_nested_attributes_for :photos,
|
48
|
+
settings[:nested_attributes][:photos].symbolize_keys
|
49
|
+
attr_accessor :"#{photos_name.to_s}_attributes"
|
42
50
|
end
|
43
51
|
|
44
52
|
end
|
@@ -82,8 +90,79 @@ module Polygallery
|
|
82
90
|
self.class.polygallery_settings
|
83
91
|
end
|
84
92
|
|
85
|
-
def
|
86
|
-
self.
|
93
|
+
def polygallery_photos_name
|
94
|
+
self.polygallery_settings[:association_names][:photos] end
|
95
|
+
def polygallery_photos; photos end # send self.polygallery_photos_name end
|
96
|
+
def polygallery_photos_attributes; self.photos_attributes end
|
97
|
+
# self.send :"#{polygallery_photos_name.to_s}_attributes" end
|
98
|
+
def polygallery_photos_attributes=(v); self.photos_attributes = v end
|
99
|
+
# self.send :"#{polygallery_photos_name.to_s}_attributes=", v end
|
100
|
+
def polygallery_photos_classname
|
101
|
+
self.polygallery_settings[:associations][:photos][:class_name] end
|
102
|
+
def polygallery_photos_class
|
103
|
+
Object.const_get polygallery_photos_classname end
|
104
|
+
|
105
|
+
def set_nested_attributes_to_correct_gallery
|
106
|
+
# if self.photos_attributes.present? &&
|
107
|
+
# self.polygallery_photos_name.to_s != 'photos'
|
108
|
+
# self.send :"#{polygallery_photos_name.to_s}_attributes=", self.photos_attributes
|
109
|
+
# self.photos_attributes = nil
|
110
|
+
# end
|
111
|
+
end
|
112
|
+
|
113
|
+
def build_polygallery_photos
|
114
|
+
# puts "BUILDING PHOTOS for #{title}"
|
115
|
+
# puts "PHOTO ATTRS: #{self.photos_attributes.inspect}"
|
116
|
+
# Convert attributes to array if in hash form
|
117
|
+
# self.photos_attributes =
|
118
|
+
# self.photos_attributes.map{|_, v| v
|
119
|
+
# } if self.photos_attributes.is_a? Hash
|
120
|
+
|
121
|
+
# Initialize a duplicate
|
122
|
+
attrs_for_photos = if self.photos_attributes.is_a? Hash
|
123
|
+
self.photos_attributes.values
|
124
|
+
else
|
125
|
+
( self.photos_attributes || [] ).dup
|
126
|
+
end
|
127
|
+
return unless attrs_for_photos.any?
|
128
|
+
return if self.photos_built?
|
129
|
+
|
130
|
+
attrs_for_photos.each_with_index do |attrs_for_photo, index|
|
131
|
+
attrs_for_photo[:polygallery_options] = self.polygallery_settings
|
132
|
+
should_destroy = attrs_for_photo.delete(:_destroy) == 'true'
|
133
|
+
if attrs_for_photo.key? :id
|
134
|
+
existing_id = attrs_for_photo.delete(:id).to_i
|
135
|
+
existing_photo = self.polygallery_photos_class.find existing_id
|
136
|
+
if should_destroy
|
137
|
+
# puts 'Destroying a photo'
|
138
|
+
existing_photo.destroy
|
139
|
+
else
|
140
|
+
# puts 'Updating an existing photo'
|
141
|
+
existing_photo.update_attributes attrs_for_photo end
|
142
|
+
# elsif attrs_for_photo.key? :built
|
143
|
+
# puts 'Photo already built'
|
144
|
+
else
|
145
|
+
# puts 'Building a new photo'
|
146
|
+
# puts attrs_for_photo.inspect
|
147
|
+
# raise 'WOO' if self.polygallery_photos
|
148
|
+
built_photo = self.polygallery_photos.build attrs_for_photo
|
149
|
+
set_nest built_photo
|
150
|
+
# self.polygallery_photos_attributes[index][:built] = true
|
151
|
+
end
|
152
|
+
end
|
153
|
+
self.photos_built = true
|
154
|
+
end
|
155
|
+
|
156
|
+
def photos_built?; self.photos_built.present? end
|
157
|
+
|
158
|
+
def prune_empty_photos
|
159
|
+
# puts "#{title} is pruning empty photos..."
|
160
|
+
polygallery_photos.each {|pp|
|
161
|
+
if pp.new_record? && !pp.photo.file?
|
162
|
+
# TODO: find a way not to generate these photos in the first place!
|
163
|
+
# puts 'Marking photo for destruction'
|
164
|
+
pp.mark_for_destruction
|
165
|
+
end }
|
87
166
|
end
|
88
167
|
|
89
168
|
end
|
data/lib/polygallery/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polygallery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MacKinley Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -305,7 +305,9 @@ files:
|
|
305
305
|
- lib/generators/polygallery/install/templates/add_gallery_title.rb
|
306
306
|
- lib/generators/polygallery/install/templates/polygallery_migration.rb
|
307
307
|
- lib/polygallery.rb
|
308
|
+
- lib/polygallery/capybara_helpers.rb
|
308
309
|
- lib/polygallery/engine.rb
|
310
|
+
- lib/polygallery/factories.rb
|
309
311
|
- lib/polygallery/factories/polygallery/galleries.rb
|
310
312
|
- lib/polygallery/factories/polygallery/photos.rb
|
311
313
|
- lib/polygallery/glue.rb
|