polygallery 0.3.6 → 0.4.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/assets/javascripts/polygallery/polygallery.js.coffee +4 -3
- data/app/models/polygallery/photo.rb +0 -1
- data/app/views/polygallery/galleries/_simple_fields_for.html.haml +17 -22
- data/app/views/polygallery/photos/_simple_fields_for.html.haml +3 -1
- data/config/routes.rb +0 -2
- data/lib/polygallery/acts_as_polygallery.rb +6 -0
- data/{app/models/concerns → lib}/polygallery/acts_as_polyphoto.rb +44 -20
- data/lib/polygallery/capybara_helpers.rb +1 -1
- data/lib/polygallery/controller_helpers.rb +13 -0
- data/lib/polygallery/engine.rb +30 -1
- data/lib/polygallery/factories/polygallery/photos.rb +2 -1
- data/lib/polygallery/has_polygallery.rb +7 -46
- data/lib/polygallery/has_polyphotos.rb +24 -18
- data/lib/polygallery/model_helpers.rb +14 -0
- data/lib/polygallery/railtie.rb +1 -15
- data/lib/polygallery/simple_form_helper.rb +19 -0
- data/lib/polygallery/strong_params_helper.rb +21 -0
- data/lib/polygallery/version.rb +1 -1
- data/lib/polygallery/view_helpers.rb +0 -9
- data/lib/polygallery.rb +38 -5
- metadata +22 -7
- data/app/assets/javascripts/polygallery/application.js +0 -13
- data/app/assets/javascripts/polygallery/galleries.js +0 -2
- data/app/assets/javascripts/polygallery/photos.js +0 -2
- data/app/controllers/concerns/polygallery/strong_params.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8829251245b28dc2aad475352c43d7b87e53c421
|
4
|
+
data.tar.gz: 65d64fa087c79cb6b302adb49b467a6be196d705
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db78604c051a6e545e94b1e39ff7aafa12479b35f976c6040a7f3205ee460ac048d819d42a5c5bd6ecc173e44ed9dccf288425d3b1ac73e78159ff7c0304e718
|
7
|
+
data.tar.gz: bbf0ea8af4cd065796f21c5e297f050668228f368e2d59df8ed36b941ec199b69a3b4ed8cb413d5e16f010c52f6efc45375acab5670e8b2d33a05f13fa8b533b
|
@@ -1,4 +1,5 @@
|
|
1
1
|
(($)->
|
2
|
-
$(
|
3
|
-
$(
|
4
|
-
)(
|
2
|
+
$(document).ready ->
|
3
|
+
$('.polygallery-cocoon-table').on 'cocoon:after-insert', (e, insertedItem)->
|
4
|
+
$(insertedItem).find('input[type=file]').bootstrapFileInput()
|
5
|
+
)(jQuery)
|
@@ -1,23 +1,18 @@
|
|
1
|
-
- photo_association_name =
|
2
|
-
= f.
|
3
|
-
|
4
|
-
|
5
|
-
= ff.input_field :galleryable_type, :as => :hidden
|
1
|
+
- photo_association_name = f.object.polygallery_settings[:association_names][:photos]
|
2
|
+
= f.input_field :title, :as => :hidden, :value => f.object.title
|
3
|
+
= f.input_field :galleryable_id, :as => :hidden
|
4
|
+
= f.input_field :galleryable_type, :as => :hidden
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
%th.text-center Actions
|
21
|
-
%tbody.photo-receptacle
|
22
|
-
= ff.simple_fields_for :photos do |pf| # photo_association_name do |pf|
|
23
|
-
= render 'polygallery/photos/simple_fields_for', :f => pf
|
6
|
+
%h3.lead
|
7
|
+
= link_to_add_association 'Add Photo', f, :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'}
|
8
|
+
= f.object.title.titleize
|
9
|
+
.polygallery-cocoon-table{:id => photo_association_name.to_s}
|
10
|
+
%table.table.table-bordered.table-striped.table-condensed.polygallery-photos-table
|
11
|
+
%thead
|
12
|
+
%tr
|
13
|
+
%th.text-center{:style => 'width:85px;'} Photo
|
14
|
+
%th File
|
15
|
+
%th.text-center Actions
|
16
|
+
%tbody.photo-receptacle
|
17
|
+
= f.simple_fields_for :photos do |pf| # photo_association_name do |pf|
|
18
|
+
= render 'polygallery/photos/simple_fields_for', f: pf
|
@@ -1,6 +1,8 @@
|
|
1
|
-
%tr
|
1
|
+
%tr{class: "nested-fields #{f.object.new_record? ? 'new-polyphoto' : ''}",
|
2
|
+
data: { new: f.object.new_record? }}
|
2
3
|
%td.text-center
|
3
4
|
= f.input_field :gallery_title, :as => :hidden
|
5
|
+
= f.input_field :gallery_id, :as => :hidden
|
4
6
|
= f.input_field :galleryable_id, :as => :hidden
|
5
7
|
= f.input_field :galleryable_type, :as => :hidden
|
6
8
|
= image_tag f.object.photo.file? ? f.object.photo.url(:thumb) : 'polygallery/thumbnail-missing.jpg', class: 'img-responsive'
|
data/config/routes.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
|
1
3
|
module Polygallery
|
2
4
|
module ActsAsPolyphoto
|
3
5
|
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
end
|
7
|
-
|
8
6
|
module ClassMethods
|
9
7
|
def acts_as_polyphoto(options={})
|
10
8
|
defaults = self.polygallery_settings
|
@@ -16,7 +14,17 @@ module Polygallery
|
|
16
14
|
init_attachment settings[:paperclip]
|
17
15
|
init_associations settings
|
18
16
|
|
19
|
-
before_validation
|
17
|
+
before_validation do
|
18
|
+
# self.polygallery_options = nil
|
19
|
+
# self.polygallery_options = self.polygallery_settings
|
20
|
+
# self.class.init_attachment self.polygallery_options
|
21
|
+
if gallery.present?
|
22
|
+
self.gallery_title = gallery.title if gallery_title.blank?
|
23
|
+
self.galleryable ||= gallery.galleryable
|
24
|
+
initialize_polyphoto
|
25
|
+
end
|
26
|
+
process_photo_to_upload
|
27
|
+
end
|
20
28
|
# before_save {
|
21
29
|
# # puts "Photo changes: #{self.changes.inspect}"
|
22
30
|
# puts 'SAVING PHOTO!' }
|
@@ -30,7 +38,7 @@ module Polygallery
|
|
30
38
|
end
|
31
39
|
|
32
40
|
def polygallery_settings
|
33
|
-
|
41
|
+
DEFAULT_SETTINGS
|
34
42
|
end
|
35
43
|
|
36
44
|
def init_attachment(paperclip_settings)
|
@@ -44,7 +52,7 @@ module Polygallery
|
|
44
52
|
validates_attachment_presence(:photo) if validations[:presence]
|
45
53
|
end
|
46
54
|
|
47
|
-
def init_associations(settings=
|
55
|
+
def init_associations(settings=DEFAULT_SETTINGS)
|
48
56
|
belongs_to settings[:association_names][:gallery],
|
49
57
|
:class_name => settings[:associations][:gallery][:class_name],
|
50
58
|
:foreign_key => :gallery_id
|
@@ -76,14 +84,14 @@ module Polygallery
|
|
76
84
|
.send(:"#{self.gallery_title}_settings")
|
77
85
|
end
|
78
86
|
return s if s.present?
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
+
elsif respond_to?(:gallery) && gallery.present?
|
88
|
+
return gallery.polygallery_settings
|
89
|
+
elsif self.gallery_id.present?
|
90
|
+
g = Polygallery::Gallery.find(self.gallery_id)
|
91
|
+
if g.present?
|
92
|
+
self.gallery_title = g.title
|
93
|
+
return self.polygallery_settings
|
94
|
+
end
|
87
95
|
end
|
88
96
|
self.class.polygallery_settings
|
89
97
|
# if gallery_title.present? && galleryable_type.present?
|
@@ -94,7 +102,7 @@ module Polygallery
|
|
94
102
|
# elsif self.gallery.present? && gallery.polygallery_settings.present?
|
95
103
|
# self.gallery.polygallery_settings
|
96
104
|
# else
|
97
|
-
#
|
105
|
+
# DEFAULT_SETTINGS
|
98
106
|
# end
|
99
107
|
end
|
100
108
|
|
@@ -103,13 +111,29 @@ module Polygallery
|
|
103
111
|
end
|
104
112
|
|
105
113
|
def process_photo_to_upload
|
114
|
+
# As crazy as this looks, it's necessary to assign paperclip's
|
115
|
+
# dynamic styles through an association. It would be great if we
|
116
|
+
# could find a better way, though...
|
117
|
+
#
|
118
|
+
# This part runs the second try.
|
119
|
+
if photo_updated_at_changed? && gallery.present? &&
|
120
|
+
photo_to_upload.present? && File.exists?(photo_to_upload)
|
121
|
+
# puts 'Running the swaparoo!'
|
122
|
+
File.open(photo_to_upload, 'rb') {|h| self.photo = h }
|
123
|
+
# self.photo_to_upload = nil
|
124
|
+
end
|
125
|
+
# This part runs the first try.
|
106
126
|
if self.photo.present? && self.photo_to_upload.nil?
|
107
|
-
if self.new_record? || self.photo_file_name_changed?
|
108
|
-
|
109
|
-
|
127
|
+
# if self.new_record? || self.photo_file_name_changed?
|
128
|
+
if self.photo.staged?
|
129
|
+
# puts "#{photo_file_name} is staged!"
|
130
|
+
if File.exists? self.photo.staged_path
|
131
|
+
# puts "Setting photo to upload to #{photo_file_name}"
|
132
|
+
self.photo_to_upload = self.photo.staged_path
|
133
|
+
# self.photo = nil
|
134
|
+
end
|
110
135
|
end
|
111
136
|
end
|
112
|
-
self.photo = File.open(photo_to_upload) if photo_to_upload.present?
|
113
137
|
end
|
114
138
|
|
115
139
|
def init_attachment
|
@@ -19,7 +19,7 @@ module Polygallery
|
|
19
19
|
attrs = table_id; table_id = 'photos' end
|
20
20
|
attrs ||= build :polygallery_photo
|
21
21
|
trs = polyphoto_trs(table_id); last_tr = trs.last
|
22
|
-
unless
|
22
|
+
unless last_tr[:class].include?('new-polyphoto') && last_tr.find('input[id$="_photo"]').value.blank?
|
23
23
|
page.execute_script "$('#{add_polyphoto_btn_selector table_id}').click();"
|
24
24
|
last_tr = polyphoto_trs(table_id).last
|
25
25
|
end
|
data/lib/polygallery/engine.rb
CHANGED
@@ -1,9 +1,38 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
require 'polygallery/controller_helpers'
|
3
|
+
require 'polygallery/model_helpers'
|
4
|
+
require 'polygallery/view_helpers'
|
5
|
+
require 'polygallery/simple_form_helper'
|
6
|
+
require 'polygallery/glue'
|
7
|
+
|
1
8
|
module Polygallery
|
2
9
|
class Engine < ::Rails::Engine
|
3
10
|
isolate_namespace Polygallery
|
11
|
+
|
12
|
+
initializer 'polygallery.assets' do
|
13
|
+
Rails.application.config.assets.precompile +=
|
14
|
+
%w( polygallery/thumbnail-missing.jpg )
|
15
|
+
end
|
4
16
|
initializer 'polygallery_engine.action_controller' do |app|
|
5
17
|
ActiveSupport.on_load :action_controller do
|
6
|
-
|
18
|
+
ActionController::Base.send :include, ControllerHelpers
|
19
|
+
end
|
20
|
+
end
|
21
|
+
initializer 'polygallery.model_helpers' do
|
22
|
+
ActiveSupport.on_load :active_record do
|
23
|
+
ActiveRecord::Base.send :include, ModelHelpers
|
24
|
+
ActiveRecord::Base.send :include, Polygallery::Glue
|
25
|
+
end
|
26
|
+
end
|
27
|
+
initializer "polygallery.view_helpers" do
|
28
|
+
ActiveSupport.on_load :action_view do
|
29
|
+
ActionView::Base.send :include, ViewHelpers
|
30
|
+
if defined? SimpleForm
|
31
|
+
ActionView::Base.send :include, SimpleFormHelper
|
32
|
+
SimpleForm::FormBuilder.send :define_method, 'simple_fields_for_polygallery' do |*args, &block|
|
33
|
+
template.simple_fields_for_polygallery self, *args, &block
|
34
|
+
end
|
35
|
+
end
|
7
36
|
end
|
8
37
|
end
|
9
38
|
initializer :append_migrations do |app|
|
@@ -7,6 +7,7 @@ FactoryGirl.define do
|
|
7
7
|
|
8
8
|
factory :polygallery_photo, :class => Polygallery::Photo do
|
9
9
|
caption { [nil, MFaker::BaconIpsum.paragraph].sample }
|
10
|
-
photo
|
10
|
+
photo { File.new get_random_photo }
|
11
|
+
# photo_to_upload { get_random_photo }
|
11
12
|
end
|
12
13
|
end
|
@@ -1,46 +1,8 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
|
1
3
|
module Polygallery
|
2
4
|
module HasPolygallery
|
3
5
|
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
DEFAULTS = {
|
6
|
-
:associations => {
|
7
|
-
:gallery => {
|
8
|
-
:class_name => '::Polygallery::Gallery',
|
9
|
-
:as => :galleryable,
|
10
|
-
:dependent => :destroy
|
11
|
-
},
|
12
|
-
:photos => {
|
13
|
-
:class_name => '::Polygallery::Photo',
|
14
|
-
# :before_add => :set_nest,
|
15
|
-
:dependent => :destroy,
|
16
|
-
:foreign_key => :gallery_id
|
17
|
-
}
|
18
|
-
},
|
19
|
-
:association_names => {
|
20
|
-
:gallery => :gallery,
|
21
|
-
:photos => :photos
|
22
|
-
},
|
23
|
-
:nested_attributes => {
|
24
|
-
:gallery => { :reject_if => :all_blank },
|
25
|
-
:photos => {
|
26
|
-
:allow_destroy => true,
|
27
|
-
:reject_if => proc {|attributes|
|
28
|
-
!attributes.key?('id') && attributes['photo'].nil? } }
|
29
|
-
},
|
30
|
-
:validates => {},
|
31
|
-
:paperclip => {
|
32
|
-
:styles => {:medium => '300x300#', :thumb => '100x100#'},
|
33
|
-
:default_url => 'polygallery/thumbnail-missing.jpg'
|
34
|
-
},
|
35
|
-
:paperclip_validations => {
|
36
|
-
:content_type => /\Aimage\/.*\Z/,
|
37
|
-
:presence => false
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
included do
|
42
|
-
end
|
43
|
-
|
44
6
|
module ClassMethods
|
45
7
|
def has_polygallery(title='gallery', options={})
|
46
8
|
if title.is_a? Hash
|
@@ -48,19 +10,18 @@ module Polygallery
|
|
48
10
|
title = 'gallery'
|
49
11
|
end
|
50
12
|
|
51
|
-
defaults =
|
13
|
+
defaults = DEFAULT_SETTINGS
|
52
14
|
if options[:association_names].nil? && title.to_s != 'gallery'
|
53
15
|
options[:association_names] = {
|
54
16
|
:gallery => :"#{title}",
|
55
|
-
:photos => :"#{title.to_s.gsub('_gallery', '')}_photos"
|
56
|
-
}
|
17
|
+
:photos => :"#{title.to_s.gsub('_gallery', '')}_photos" }
|
57
18
|
end
|
58
19
|
settings = defaults.deep_merge(options)
|
59
20
|
cattr_accessor "#{title}_settings".to_sym
|
60
21
|
send("#{title}_settings=".to_sym, settings)
|
61
22
|
attr_accessor :"#{title}_attributes", :galleries_built
|
62
23
|
|
63
|
-
has_one title.to_sym, -> { where(:
|
24
|
+
has_one title.to_sym, -> { where(title: title.to_s) }, settings[:associations][:gallery]
|
64
25
|
has_many settings[:association_names][:photos],
|
65
26
|
:through => :"#{title}",
|
66
27
|
:source => :photos, # settings[:association_names][:photos],
|
@@ -74,8 +35,8 @@ module Polygallery
|
|
74
35
|
# puts "GA: #{self.gallery_attributes.inspect}"
|
75
36
|
if self.gallery_attributes.nil?
|
76
37
|
# puts 'BUILDING FIRST PHOTOS ON INIT!'
|
38
|
+
build_gallery_associations
|
77
39
|
build_first_photos
|
78
|
-
# build_gallery_associations
|
79
40
|
end
|
80
41
|
end
|
81
42
|
# puts instance.inspect
|
@@ -213,4 +174,4 @@ module Polygallery
|
|
213
174
|
end
|
214
175
|
end
|
215
176
|
|
216
|
-
ActiveRecord::Base.send :include, Polygallery::HasPolygallery
|
177
|
+
# ActiveRecord::Base.send :include, Polygallery::HasPolygallery
|
@@ -1,10 +1,8 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
|
1
3
|
module Polygallery
|
2
4
|
module HasPolyphotos
|
3
5
|
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
end
|
7
|
-
|
8
6
|
module ClassMethods
|
9
7
|
def has_polyphotos(title=nil, options={})
|
10
8
|
attr_accessor :polygallery_options
|
@@ -20,13 +18,16 @@ module Polygallery
|
|
20
18
|
attr_accessor :photos_attributes, :photos_built
|
21
19
|
|
22
20
|
settings = defaults.deep_merge options
|
23
|
-
init_associations settings
|
21
|
+
# init_associations settings
|
22
|
+
belongs_to :galleryable, polymorphic: true
|
23
|
+
# photos_name = settings[:association_names][:photos]
|
24
|
+
has_many :photos, settings[:associations][:photos].symbolize_keys
|
24
25
|
|
25
26
|
after_initialize do
|
26
27
|
self.polygallery_options ||= self.polygallery_settings
|
27
28
|
self.initialize_polygallery
|
28
29
|
end
|
29
|
-
after_initialize
|
30
|
+
after_initialize :build_polygallery_photos, :if => :new_record?
|
30
31
|
before_validation :set_nested_attributes_to_correct_gallery
|
31
32
|
before_validation :build_polygallery_photos, :unless => :photos_built? # , :on => :update
|
32
33
|
before_validation :prune_empty_photos
|
@@ -35,10 +36,10 @@ module Polygallery
|
|
35
36
|
end
|
36
37
|
|
37
38
|
def polygallery_settings
|
38
|
-
|
39
|
+
DEFAULT_SETTINGS
|
39
40
|
end
|
40
41
|
|
41
|
-
def init_associations(settings=
|
42
|
+
def init_associations(settings=DEFAULT_SETTINGS)
|
42
43
|
belongs_to :galleryable, :polymorphic => true
|
43
44
|
photos_name = settings[:association_names][:photos]
|
44
45
|
has_many :photos, settings[:associations][:photos].symbolize_keys
|
@@ -77,8 +78,6 @@ module Polygallery
|
|
77
78
|
photo_association.build(
|
78
79
|
:polygallery_options => self.polygallery_settings,
|
79
80
|
:galleryable => self.galleryable,
|
80
|
-
:galleryable_id => self.galleryable_id,
|
81
|
-
:galleryable_type => self.galleryable_type,
|
82
81
|
:gallery_title => self.title ) unless photo_association.any?
|
83
82
|
end
|
84
83
|
|
@@ -102,11 +101,11 @@ module Polygallery
|
|
102
101
|
Object.const_get polygallery_photos_classname end
|
103
102
|
|
104
103
|
def set_nested_attributes_to_correct_gallery
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
104
|
+
if self.photos_attributes.present? &&
|
105
|
+
self.polygallery_photos_name.to_s != 'photos'
|
106
|
+
# self.send :"#{polygallery_photos_name.to_s}_attributes=", self.photos_attributes
|
107
|
+
# self.photos_attributes = nil
|
108
|
+
end
|
110
109
|
end
|
111
110
|
|
112
111
|
def build_polygallery_photos
|
@@ -149,10 +148,10 @@ module Polygallery
|
|
149
148
|
def prune_empty_photos
|
150
149
|
# puts "#{title} is pruning empty photos..."
|
151
150
|
polygallery_photos.each {|pp|
|
152
|
-
if pp.new_record? && !pp.photo.file?
|
153
|
-
# TODO: find a way not to generate these photos in the first place!
|
151
|
+
if pp.new_record? && !pp.photo.file? && pp.photo_to_upload.nil?
|
154
152
|
# puts 'Marking photo for destruction'
|
155
153
|
pp.mark_for_destruction
|
154
|
+
polygallery_photos.delete pp
|
156
155
|
end }
|
157
156
|
end
|
158
157
|
|
@@ -163,8 +162,15 @@ module Polygallery
|
|
163
162
|
photos.first || Photo.new
|
164
163
|
end
|
165
164
|
|
165
|
+
def method_missing(m, *args, &block)
|
166
|
+
if m == :photos
|
167
|
+
self.initialize_polygallery
|
168
|
+
return send(m, *args, &block) if self.respond_to? m
|
169
|
+
Photo.where('1 = 0')
|
170
|
+
else super end
|
171
|
+
end
|
166
172
|
end
|
167
173
|
end
|
168
174
|
end
|
169
175
|
|
170
|
-
ActiveRecord::Base.send :include, Polygallery::HasPolyphotos
|
176
|
+
# ActiveRecord::Base.send :include, Polygallery::HasPolyphotos
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
require 'polygallery/has_polygallery'
|
3
|
+
require 'polygallery/has_polyphotos'
|
4
|
+
require 'polygallery/acts_as_polyphoto'
|
5
|
+
|
6
|
+
module Polygallery
|
7
|
+
module ModelHelpers
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
include HasPolygallery
|
11
|
+
include HasPolyphotos
|
12
|
+
include ActsAsPolyphoto
|
13
|
+
end
|
14
|
+
end
|
data/lib/polygallery/railtie.rb
CHANGED
@@ -1,32 +1,18 @@
|
|
1
|
-
require 'polygallery
|
1
|
+
require 'polygallery'
|
2
2
|
require 'polygallery/glue'
|
3
3
|
|
4
4
|
module Polygallery
|
5
5
|
require 'rails'
|
6
|
-
|
7
6
|
class Railtie < Rails::Railtie
|
8
|
-
# initializer "polygallery.configure_rails_initialization" do |app|
|
9
|
-
# app.middleware.use Railtie::
|
10
|
-
# end
|
11
7
|
initializer "polygallery.insert_into_active_record" do |app|
|
12
8
|
ActiveSupport.on_load :active_record do
|
13
9
|
Polygallery::Railtie.insert
|
14
10
|
end
|
15
|
-
|
16
11
|
if app.config.respond_to?(:polygallery_defaults)
|
17
12
|
Polygallery::Gallery.default_options.merge!(app.config.polygallery_defaults)
|
18
13
|
end
|
19
14
|
end
|
20
|
-
initializer "polygallery.view_helpers" do
|
21
|
-
ActionView::Base.send :include, ViewHelpers
|
22
|
-
end
|
23
|
-
initializer 'polygallery.assets' do
|
24
|
-
Rails.application.config.assets.precompile +=
|
25
|
-
%w( polygallery/thumbnail-missing.jpg )
|
26
|
-
end
|
27
|
-
end
|
28
15
|
|
29
|
-
class Railtie
|
30
16
|
def self.insert
|
31
17
|
if defined?(ActiveRecord)
|
32
18
|
ActiveRecord::Base.send(:include, Polygallery::Glue)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
|
3
|
+
module Polygallery
|
4
|
+
module SimpleFormHelper
|
5
|
+
|
6
|
+
def self.simple_fields_for_polygallery(fb, title=:gallery, *args, &block)
|
7
|
+
( '<div class="polygallery-fields">' <<
|
8
|
+
fb.simple_fields_for(title, *args, &block) << '</div>' ).html_safe
|
9
|
+
end
|
10
|
+
def simple_fields_for_polygallery(fb, title=:gallery, *args, &block)
|
11
|
+
new_block = block_given? ? block : ->(fb2) {
|
12
|
+
render partial: 'polygallery/galleries/simple_fields_for',
|
13
|
+
locals: { f: fb2 } }
|
14
|
+
Polygallery::SimpleFormHelper.simple_fields_for_polygallery(
|
15
|
+
fb, title, *args, &new_block)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'polygallery'
|
2
|
+
|
3
|
+
module Polygallery
|
4
|
+
module StrongParamsHelper
|
5
|
+
def self.polygallery_params(title=:gallery, photos_title=:photos)
|
6
|
+
{:"#{title}_attributes" => [:id, :title, :galleryable_id, :galleryable_type,
|
7
|
+
:_destroy, polyphoto_params(photos_title) ] }
|
8
|
+
end
|
9
|
+
def self.polyphoto_params(title=:photos)
|
10
|
+
{:"#{title}_attributes" => [:id, :photo, :title, :caption, :gallery_title,
|
11
|
+
:gallery_id,
|
12
|
+
:galleryable_id, :galleryable_type, :_destroy] }
|
13
|
+
end
|
14
|
+
def polygallery_params(title=:gallery, photos_title=:photos)
|
15
|
+
Polygallery::StrongParamsHelper.polygallery_params title, photos_title end
|
16
|
+
def polyphoto_params(title=:photos)
|
17
|
+
Polygallery::StrongParamsHelper.polyphoto_params title
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/lib/polygallery/version.rb
CHANGED
@@ -8,14 +8,5 @@ module Polygallery
|
|
8
8
|
render :partial => 'polygallery/galleries/fields_for', :locals => {:f => f, :gallery => gallery, :options => options}
|
9
9
|
end
|
10
10
|
|
11
|
-
def simple_fields_for_polygallery(title, f, options={})
|
12
|
-
options = {
|
13
|
-
:label => true,
|
14
|
-
:input_html => {}
|
15
|
-
}.merge(options)
|
16
|
-
gallery = f.object.send(title)
|
17
|
-
render :partial => 'polygallery/galleries/simple_fields_for', :locals => {:f => f, :gallery => gallery, :options => options}
|
18
|
-
end
|
19
|
-
|
20
11
|
end
|
21
12
|
end
|
data/lib/polygallery.rb
CHANGED
@@ -1,8 +1,41 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require "polygallery/paperclip_integration"
|
5
|
-
require "polygallery/railtie" if defined? Rails
|
1
|
+
require 'polygallery/engine'
|
2
|
+
require 'polygallery/paperclip_integration' # <-- Try removing this monstrosity
|
3
|
+
# require 'polygallery/railtie' if defined? Rails
|
6
4
|
|
7
5
|
module Polygallery
|
6
|
+
DEFAULT_SETTINGS = {
|
7
|
+
associations: {
|
8
|
+
gallery: {
|
9
|
+
class_name: '::Polygallery::Gallery',
|
10
|
+
as: :galleryable,
|
11
|
+
dependent: :destroy
|
12
|
+
},
|
13
|
+
photos: {
|
14
|
+
class_name: '::Polygallery::Photo',
|
15
|
+
# before_add: :set_nest,
|
16
|
+
dependent: :destroy,
|
17
|
+
foreign_key: :gallery_id
|
18
|
+
}
|
19
|
+
},
|
20
|
+
association_names: {
|
21
|
+
gallery: :gallery,
|
22
|
+
photos: :photos
|
23
|
+
},
|
24
|
+
nested_attributes: {
|
25
|
+
gallery: { reject_if: :all_blank },
|
26
|
+
photos: {
|
27
|
+
allow_destroy: true,
|
28
|
+
reject_if: proc {|attributes|
|
29
|
+
!attributes.key?('id') && attributes['photo'].nil? } }
|
30
|
+
},
|
31
|
+
validates: {},
|
32
|
+
paperclip: {
|
33
|
+
styles: {medium: '300x300#', thumb: '100x100#'},
|
34
|
+
default_url: 'polygallery/thumbnail-missing.jpg'
|
35
|
+
},
|
36
|
+
paperclip_validations: {
|
37
|
+
content_type: /\Aimage\/.*\Z/,
|
38
|
+
presence: false
|
39
|
+
}
|
40
|
+
}
|
8
41
|
end
|
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.4.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-09-
|
11
|
+
date: 2015-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: byebug
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: paperclip
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -272,22 +286,17 @@ files:
|
|
272
286
|
- MIT-LICENSE
|
273
287
|
- README.rdoc
|
274
288
|
- Rakefile
|
275
|
-
- app/assets/javascripts/polygallery/application.js
|
276
|
-
- app/assets/javascripts/polygallery/galleries.js
|
277
289
|
- app/assets/javascripts/polygallery/init.js
|
278
|
-
- app/assets/javascripts/polygallery/photos.js
|
279
290
|
- app/assets/javascripts/polygallery/polygallery.js.coffee
|
280
291
|
- app/assets/stylesheets/polygallery/application.css
|
281
292
|
- app/assets/stylesheets/polygallery/galleries.css
|
282
293
|
- app/assets/stylesheets/polygallery/photos.css
|
283
|
-
- app/controllers/concerns/polygallery/strong_params.rb
|
284
294
|
- app/controllers/polygallery/application_controller.rb
|
285
295
|
- app/controllers/polygallery/galleries_controller.rb
|
286
296
|
- app/controllers/polygallery/photos_controller.rb
|
287
297
|
- app/helpers/polygallery/application_helper.rb
|
288
298
|
- app/helpers/polygallery/galleries_helper.rb
|
289
299
|
- app/helpers/polygallery/photos_helper.rb
|
290
|
-
- app/models/concerns/polygallery/acts_as_polyphoto.rb
|
291
300
|
- app/models/concerns/polygallery/customized_gallery.rb
|
292
301
|
- app/models/concerns/polygallery/customized_photo.rb
|
293
302
|
- app/models/polygallery/gallery.rb
|
@@ -305,7 +314,10 @@ files:
|
|
305
314
|
- lib/generators/polygallery/install/templates/add_gallery_title.rb
|
306
315
|
- lib/generators/polygallery/install/templates/polygallery_migration.rb
|
307
316
|
- lib/polygallery.rb
|
317
|
+
- lib/polygallery/acts_as_polygallery.rb
|
318
|
+
- lib/polygallery/acts_as_polyphoto.rb
|
308
319
|
- lib/polygallery/capybara_helpers.rb
|
320
|
+
- lib/polygallery/controller_helpers.rb
|
309
321
|
- lib/polygallery/engine.rb
|
310
322
|
- lib/polygallery/factories.rb
|
311
323
|
- lib/polygallery/factories/polygallery/galleries.rb
|
@@ -313,8 +325,11 @@ files:
|
|
313
325
|
- lib/polygallery/glue.rb
|
314
326
|
- lib/polygallery/has_polygallery.rb
|
315
327
|
- lib/polygallery/has_polyphotos.rb
|
328
|
+
- lib/polygallery/model_helpers.rb
|
316
329
|
- lib/polygallery/paperclip_integration.rb
|
317
330
|
- lib/polygallery/railtie.rb
|
331
|
+
- lib/polygallery/simple_form_helper.rb
|
332
|
+
- lib/polygallery/strong_params_helper.rb
|
318
333
|
- lib/polygallery/validators.rb
|
319
334
|
- lib/polygallery/validators/polygallery_presence_validator.rb
|
320
335
|
- lib/polygallery/version.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
-
// listed below.
|
3
|
-
//
|
4
|
-
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
-
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
-
//
|
7
|
-
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
-
// compiled file.
|
9
|
-
//
|
10
|
-
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
-
// about supported directives.
|
12
|
-
//
|
13
|
-
//= require_tree .
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Polygallery::StrongParams
|
2
|
-
extend ActiveSupport::Concern
|
3
|
-
|
4
|
-
included do
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.polygallery_params(association='photos')
|
8
|
-
[:id, :title, :galleryable_id, :galleryable_type,
|
9
|
-
:_destroy, {:photos_attributes => polyphoto_params(association) } ]
|
10
|
-
end
|
11
|
-
def self.polyphoto_params(association='photos')
|
12
|
-
[:id, :photo, :title, :caption, :gallery_title,
|
13
|
-
:galleryable_id, :galleryable_type, :_destroy]
|
14
|
-
end
|
15
|
-
def polygallery_params(association='photos')
|
16
|
-
self.class.polygallery_params association end
|
17
|
-
def polyphoto_params(association='photos')
|
18
|
-
self.class.polyphoto_params association end
|
19
|
-
end
|