trusty-cms 4.1.2 → 4.1.3
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/Gemfile +2 -2
- data/Gemfile.lock +25 -25
- data/Rakefile +7 -7
- data/app/assets/stylesheets/admin/partials/_content.scss +1 -2
- data/app/controllers/admin/assets_controller.rb +22 -21
- data/app/controllers/admin/configuration_controller.rb +9 -11
- data/app/controllers/admin/extensions_controller.rb +3 -3
- data/app/controllers/admin/layouts_controller.rb +3 -4
- data/app/controllers/admin/page_attachments_controller.rb +5 -5
- data/app/controllers/admin/page_fields_controller.rb +3 -4
- data/app/controllers/admin/page_parts_controller.rb +4 -5
- data/app/controllers/admin/pages_controller.rb +55 -56
- data/app/controllers/admin/references_controller.rb +1 -1
- data/app/controllers/admin/resource_controller.rb +132 -130
- data/app/controllers/admin/sites_controller.rb +4 -4
- data/app/controllers/admin/snippets_controller.rb +3 -4
- data/app/controllers/admin/users_controller.rb +16 -16
- data/app/controllers/application_controller.rb +47 -48
- data/app/controllers/site_controller.rb +51 -48
- data/app/controllers/social_mailer_controller.rb +13 -16
- data/app/helpers/admin/configuration_helper.rb +19 -20
- data/app/helpers/admin/layouts_helper.rb +0 -1
- data/app/helpers/admin/node_helper.rb +27 -24
- data/app/helpers/admin/pages_helper.rb +2 -2
- data/app/helpers/admin/preferences_helper.rb +0 -1
- data/app/helpers/admin/references_helper.rb +9 -10
- data/app/helpers/admin/regions_helper.rb +3 -3
- data/app/helpers/application_helper.rb +32 -33
- data/app/helpers/rad_social_helper.rb +8 -11
- data/app/helpers/scoped_helper.rb +1 -3
- data/app/helpers/sites_helper.rb +4 -4
- data/app/mailers/devise_mailer.rb +3 -4
- data/app/mailers/rad_social_mailer.rb +8 -8
- data/app/models/asset.rb +62 -63
- data/app/models/asset_type.rb +38 -39
- data/app/models/deprecated_tags.rb +3 -4
- data/app/models/file_not_found_page.rb +1 -3
- data/app/models/haml_filter.rb +1 -1
- data/app/models/layout.rb +4 -5
- data/app/models/legacy_user.rb +2 -2
- data/app/models/menu_renderer.rb +16 -18
- data/app/models/page.rb +96 -93
- data/app/models/page_attachment.rb +1 -2
- data/app/models/page_context.rb +11 -12
- data/app/models/page_part.rb +3 -4
- data/app/models/rails_page.rb +10 -12
- data/app/models/site.rb +22 -21
- data/app/models/snippet.rb +6 -8
- data/app/models/snippet_finder.rb +3 -3
- data/app/models/snippet_tags.rb +4 -4
- data/app/models/standard_tags.rb +258 -252
- data/app/models/status.rb +8 -8
- data/app/models/trusty_cms/config.rb +25 -25
- data/app/models/trusty_cms/page_response_cache_director.rb +2 -3
- data/app/models/user.rb +15 -14
- data/app/models/user_action_observer.rb +3 -3
- data/bin/rails +4 -4
- data/bin/trusty_cms +3 -5
- data/config.ru +1 -1
- data/config/application.rb +14 -15
- data/config/boot.rb +1 -2
- data/config/environment.rb +1 -1
- data/config/environments/production.rb +0 -1
- data/config/environments/test.rb +1 -2
- data/config/initializers/devise.rb +1 -1
- data/config/initializers/kraken.rb +2 -2
- data/config/initializers/tmp.rb +1 -1
- data/config/initializers/trusty_cms_config.rb +48 -48
- data/config/routes.rb +6 -6
- data/lib/active_record_extensions/active_record_extensions.rb +1 -2
- data/lib/annotatable.rb +3 -5
- data/lib/configuration_extensions/configuration_extensions.rb +1 -1
- data/lib/inheritable_class_attributes.rb +13 -9
- data/lib/login_system.rb +73 -73
- data/lib/method_observer.rb +13 -12
- data/lib/ostruct.rb +7 -10
- data/lib/simpleton.rb +0 -4
- data/lib/string_extensions/string_extensions.rb +3 -3
- data/lib/symbol_extensions/symbol_extensions.rb +1 -1
- data/lib/tasks/database.rake +28 -28
- data/lib/tasks/extensions.rake +18 -18
- data/lib/tasks/framework.rake +68 -68
- data/lib/tasks/radiant_config.rake +4 -4
- data/lib/tasks/snippets_extension_tasks.rake +11 -11
- data/lib/tasks/translate.rake +14 -14
- data/lib/tasks/upgrade_to_devise.rake +1 -1
- data/lib/translation_support.rb +22 -22
- data/lib/trusty_cms.rb +2 -2
- data/lib/trusty_cms/admin_ui.rb +19 -16
- data/lib/trusty_cms/admin_ui/region_partials.rb +4 -3
- data/lib/trusty_cms/admin_ui/region_set.rb +4 -5
- data/lib/trusty_cms/available_locales.rb +2 -4
- data/lib/trusty_cms/config/definition.rb +11 -8
- data/lib/trusty_cms/engine.rb +14 -14
- data/lib/trusty_cms/extension.rb +14 -16
- data/lib/trusty_cms/extension_loader.rb +6 -6
- data/lib/trusty_cms/extension_migrator.rb +42 -41
- data/lib/trusty_cms/extension_path.rb +20 -19
- data/lib/trusty_cms/initializer.rb +5 -8
- data/lib/trusty_cms/pagination/controller.rb +7 -10
- data/lib/trusty_cms/pagination/link_renderer.rb +2 -2
- data/lib/trusty_cms/resource_responses.rb +3 -3
- data/lib/trusty_cms/setup.rb +130 -132
- data/lib/trusty_cms/taggable.rb +19 -22
- data/lib/trusty_cms/task_support.rb +9 -6
- data/public/dispatch.fcgi +1 -1
- data/public/dispatch.rb +2 -2
- data/script/extension +1 -1
- data/script/rails +2 -2
- data/trusty_cms.gemspec +23 -23
- metadata +32 -32
data/app/models/asset.rb
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
class Asset < ActiveRecord::Base
|
|
2
2
|
include Paperclip::Glue
|
|
3
3
|
|
|
4
|
-
has_many :page_attachments, :
|
|
5
|
-
has_many :pages, :
|
|
4
|
+
has_many :page_attachments, dependent: :destroy
|
|
5
|
+
has_many :pages, through: :page_attachments
|
|
6
6
|
has_site if respond_to? :has_site
|
|
7
7
|
|
|
8
|
-
belongs_to :created_by, :
|
|
9
|
-
belongs_to :updated_by, :
|
|
8
|
+
belongs_to :created_by, class_name: 'User'
|
|
9
|
+
belongs_to :updated_by, class_name: 'User'
|
|
10
10
|
|
|
11
|
-
default_scope {order(
|
|
11
|
+
default_scope { order('created_at DESC') }
|
|
12
12
|
|
|
13
13
|
scope :latest, lambda { |limit|
|
|
14
|
-
order(
|
|
14
|
+
order('created_at DESC').limit(limit)
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
scope :of_types, lambda { |types|
|
|
@@ -20,81 +20,81 @@ class Asset < ActiveRecord::Base
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
scope :matching, lambda { |term|
|
|
23
|
-
where([
|
|
23
|
+
where(['LOWER(assets.asset_file_name) LIKE (:term) OR LOWER(title) LIKE (:term) OR LOWER(caption) LIKE (:term)', { term: "%#{term.downcase}%" }])
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
scope :excepting, lambda { |assets|
|
|
27
27
|
if assets.any?
|
|
28
28
|
assets = assets.split(',') if assets.is_a?(String)
|
|
29
29
|
asset_ids = assets.first.is_a?(Asset) ? assets.map(&:id) : assets
|
|
30
|
-
where(["assets.id NOT IN(#{asset_ids.map{ '?' }.join(',')})", *asset_ids])
|
|
30
|
+
where(["assets.id NOT IN(#{asset_ids.map { '?' }.join(',')})", *asset_ids])
|
|
31
31
|
else
|
|
32
32
|
{}
|
|
33
33
|
end
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
has_attached_file :asset,
|
|
37
|
-
:
|
|
37
|
+
styles: lambda { |attachment|
|
|
38
38
|
AssetType.for(attachment).paperclip_styles
|
|
39
39
|
},
|
|
40
|
-
:
|
|
40
|
+
processors: lambda { |asset|
|
|
41
41
|
asset.paperclip_processors
|
|
42
42
|
},
|
|
43
|
-
:
|
|
44
|
-
:
|
|
45
|
-
:
|
|
46
|
-
:
|
|
47
|
-
:
|
|
48
|
-
|
|
49
|
-
:
|
|
50
|
-
:
|
|
51
|
-
:
|
|
52
|
-
|
|
53
|
-
'Cache-Control' => 'max-age=31536000'
|
|
43
|
+
whiny: false,
|
|
44
|
+
storage: TrustyCms.config['paperclip.storage'],
|
|
45
|
+
path: TrustyCms.config['paperclip.path'],
|
|
46
|
+
url: TrustyCms.config['paperclip.url'],
|
|
47
|
+
fog_credentials: TrustyCmsClippedExtension::Cloud.credentials,
|
|
48
|
+
fog_directory: TrustyCms.config['paperclip.fog.directory'],
|
|
49
|
+
fog_public: TrustyCms.config['paperclip.fog.public?'] || true,
|
|
50
|
+
fog_host: TrustyCmsClippedExtension::Cloud.host,
|
|
51
|
+
fog_file: {
|
|
52
|
+
'Cache-Control' => 'max-age=31536000',
|
|
54
53
|
}
|
|
55
54
|
|
|
56
|
-
validates_attachment_content_type :asset, :
|
|
55
|
+
validates_attachment_content_type :asset, content_type: ['application/zip', 'image/jpg', 'image/jpeg', 'image/png', 'image/gif', 'application/pdf', 'application/javascript', 'text/javascript', 'text/css']
|
|
57
56
|
|
|
58
57
|
before_save :assign_title
|
|
59
58
|
before_save :assign_uuid
|
|
60
59
|
|
|
61
60
|
after_post_process :read_dimensions
|
|
62
61
|
|
|
63
|
-
validates_attachment_presence :asset, :
|
|
64
|
-
if TrustyCms.config[
|
|
65
|
-
validates_attachment_content_type :asset, :
|
|
62
|
+
validates_attachment_presence :asset, message: 'You must choose a file to upload!'
|
|
63
|
+
if TrustyCms.config['paperclip.skip_filetype_validation'] != 'true' && TrustyCms.config['paperclip.content_types']
|
|
64
|
+
validates_attachment_content_type :asset, content_type: TrustyCms.config['paperclip.content_types'].gsub(' ', '').split(',')
|
|
66
65
|
else
|
|
67
|
-
validates_attachment_presence :asset, :
|
|
66
|
+
validates_attachment_presence :asset, message: 'Your uploaded file must have an extension in its name!'
|
|
68
67
|
end
|
|
69
|
-
validates_attachment_size :asset, :
|
|
68
|
+
validates_attachment_size :asset, less_than: (TrustyCms.config['assets.max_asset_size'] || 5).to_i.megabytes
|
|
70
69
|
|
|
71
70
|
def asset_type
|
|
72
71
|
AssetType.for(asset)
|
|
73
72
|
end
|
|
74
|
-
delegate :paperclip_processors, :paperclip_styles, :style_dimensions, :style_format, :
|
|
73
|
+
delegate :paperclip_processors, :paperclip_styles, :style_dimensions, :style_format, to: :asset_type
|
|
75
74
|
|
|
76
|
-
def thumbnail(style_name='original')
|
|
75
|
+
def thumbnail(style_name = 'original')
|
|
77
76
|
return asset.url if style_name.to_sym == :original
|
|
78
77
|
return asset.url(style_name.to_sym) if has_style?(style_name)
|
|
79
|
-
|
|
78
|
+
|
|
79
|
+
asset_type.icon(style_name)
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
def has_style?(style_name='original')
|
|
82
|
+
def has_style?(style_name = 'original')
|
|
83
83
|
style_name == 'original' || paperclip_styles.keys.include?(style_name.to_sym)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def basename
|
|
87
|
-
File.basename(asset_file_name,
|
|
87
|
+
File.basename(asset_file_name, '.*') if asset_file_name
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
def extension(style_name='original')
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
def extension(style_name = 'original')
|
|
91
|
+
if style_name == 'original'
|
|
92
|
+
original_extension
|
|
93
|
+
elsif style = paperclip_styles[style_name.to_sym]
|
|
94
|
+
style.format
|
|
95
|
+
else
|
|
96
|
+
original_extension
|
|
97
|
+
end
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
def original_extension
|
|
@@ -109,57 +109,57 @@ class Asset < ActiveRecord::Base
|
|
|
109
109
|
@original_geometry ||= Paperclip::Geometry.new(original_width, original_height)
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
def geometry(style_name='original')
|
|
112
|
+
def geometry(style_name = 'original')
|
|
113
113
|
raise Paperclip::StyleError, "Requested style #{style_name} is not defined for this asset." unless has_style?(style_name)
|
|
114
|
+
|
|
114
115
|
@geometry ||= {}
|
|
115
116
|
begin
|
|
116
117
|
@geometry[style_name] ||= if style_name.to_s == 'original'
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
original_geometry
|
|
119
|
+
else
|
|
120
|
+
style = asset.styles[style_name.to_sym]
|
|
121
|
+
original_geometry.transformed_by(style.geometry) # this can return dimensions for fully specified style sizes but not for relative sizes when there are no original dimensions
|
|
121
122
|
end
|
|
122
123
|
rescue Paperclip::TransformationError => e
|
|
123
124
|
Rails.logger.warn "geometry transformation error: #{e}"
|
|
124
|
-
original_geometry
|
|
125
|
+
original_geometry # returns a blank geometry if the real geometry cannot be calculated
|
|
125
126
|
end
|
|
126
127
|
end
|
|
127
128
|
|
|
128
|
-
def aspect(style_name='original')
|
|
129
|
+
def aspect(style_name = 'original')
|
|
129
130
|
geometry(style_name).aspect
|
|
130
131
|
end
|
|
131
132
|
|
|
132
|
-
def orientation(style_name='original')
|
|
133
|
+
def orientation(style_name = 'original')
|
|
133
134
|
a = aspect(style_name)
|
|
134
|
-
|
|
135
|
-
when a == nil?
|
|
135
|
+
if a == nil?
|
|
136
136
|
'unknown'
|
|
137
|
-
|
|
137
|
+
elsif a < 1.0
|
|
138
138
|
'vertical'
|
|
139
|
-
|
|
139
|
+
elsif a > 1.0
|
|
140
140
|
'horizontal'
|
|
141
141
|
else
|
|
142
142
|
'square'
|
|
143
143
|
end
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
-
def width(style_name='original')
|
|
146
|
+
def width(style_name = 'original')
|
|
147
147
|
geometry(style_name).width.to_i
|
|
148
148
|
end
|
|
149
149
|
|
|
150
|
-
def height(style_name='original')
|
|
150
|
+
def height(style_name = 'original')
|
|
151
151
|
geometry(style_name).height.to_i
|
|
152
152
|
end
|
|
153
153
|
|
|
154
|
-
def square?(style_name='original')
|
|
154
|
+
def square?(style_name = 'original')
|
|
155
155
|
geometry(style_name).square?
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
def vertical?(style_name='original')
|
|
158
|
+
def vertical?(style_name = 'original')
|
|
159
159
|
geometry(style_name).vertical?
|
|
160
160
|
end
|
|
161
161
|
|
|
162
|
-
def horizontal?(style_name='original')
|
|
162
|
+
def horizontal?(style_name = 'original')
|
|
163
163
|
geometry(style_name).horizontal?
|
|
164
164
|
end
|
|
165
165
|
|
|
@@ -167,7 +167,7 @@ class Asset < ActiveRecord::Base
|
|
|
167
167
|
original_width? && original_height?
|
|
168
168
|
end
|
|
169
169
|
|
|
170
|
-
private
|
|
170
|
+
private
|
|
171
171
|
|
|
172
172
|
# at this point the file queue will not have been written
|
|
173
173
|
# but the upload should be in place. We read dimensions from the
|
|
@@ -186,7 +186,7 @@ private
|
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
def assign_title
|
|
189
|
-
self.title =
|
|
189
|
+
self.title = asset_file_name.downcase.sub(original_extension, '').sub('.', '')
|
|
190
190
|
end
|
|
191
191
|
|
|
192
192
|
def assign_uuid
|
|
@@ -210,7 +210,7 @@ private
|
|
|
210
210
|
|
|
211
211
|
def with_asset_types(asset_types, &block)
|
|
212
212
|
w_asset_types = AssetType.conditions_for(asset_types)
|
|
213
|
-
with_scope(where(:
|
|
213
|
+
with_scope(where(conditions: ["#{w_asset_types} = ?", block]))
|
|
214
214
|
end
|
|
215
215
|
end
|
|
216
216
|
|
|
@@ -235,14 +235,13 @@ private
|
|
|
235
235
|
|
|
236
236
|
# this is a convenience for image-pickers
|
|
237
237
|
def self.thumbnail_options
|
|
238
|
-
asset_sizes = thumbnail_sizes.collect
|
|
238
|
+
asset_sizes = thumbnail_sizes.collect do |k, v|
|
|
239
239
|
size_id = k
|
|
240
240
|
size_description = "#{k}: "
|
|
241
241
|
size_description << (v.is_a?(Array) ? v.join(' as ') : v)
|
|
242
242
|
[size_description, size_id]
|
|
243
|
-
|
|
243
|
+
end.sort_by { |pair| pair.last.to_s }
|
|
244
244
|
asset_sizes.unshift ['Original (as uploaded)', 'original']
|
|
245
245
|
asset_sizes
|
|
246
246
|
end
|
|
247
|
-
|
|
248
247
|
end
|
data/app/models/asset_type.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
class AssetType
|
|
2
|
-
|
|
3
2
|
# The Asset Type encapsulates a type of attachment.
|
|
4
3
|
# Conventionally this would a sensible category like 'image' or 'video'
|
|
5
4
|
# that should be processed and presented in a particular way.
|
|
@@ -34,10 +33,10 @@ class AssetType
|
|
|
34
33
|
Asset.send :define_method, "#{name}?".intern do this.mime_types.include?(asset_content_type) end
|
|
35
34
|
Asset.send :define_class_method, "#{name}_condition".intern do this.condition; end
|
|
36
35
|
Asset.send :define_class_method, "not_#{name}_condition".intern do this.non_condition; end
|
|
37
|
-
Asset.send :scope, plural.to_sym, -> {where(:
|
|
38
|
-
Asset.send :scope, "not_#{plural}".to_sym, -> {where(:
|
|
36
|
+
Asset.send :scope, plural.to_sym, -> { where(conditions: condition) }
|
|
37
|
+
Asset.send :scope, "not_#{plural}".to_sym, -> { where(conditions: non_condition) }
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
define_radius_tags
|
|
41
40
|
@@types.push self
|
|
42
41
|
@@type_lookup[@name] = self
|
|
43
42
|
end
|
|
@@ -46,21 +45,21 @@ class AssetType
|
|
|
46
45
|
name.to_s.pluralize
|
|
47
46
|
end
|
|
48
47
|
|
|
49
|
-
def icon(style_name='icon')
|
|
50
|
-
if File.exist?(Rails.root + "public/images/admin/assets/#{icon_name}_#{style_name
|
|
51
|
-
|
|
48
|
+
def icon(style_name = 'icon')
|
|
49
|
+
if File.exist?(Rails.root + "public/images/admin/assets/#{icon_name}_#{style_name}.png")
|
|
50
|
+
"/assets/admin/#{icon_name}_#{style_name}.png"
|
|
52
51
|
else
|
|
53
|
-
|
|
52
|
+
"/assets/admin/#{icon_name}_icon.png"
|
|
54
53
|
end
|
|
55
54
|
end
|
|
56
55
|
|
|
57
|
-
def icon_path(style_name='icon')
|
|
56
|
+
def icon_path(style_name = 'icon')
|
|
58
57
|
Rails.root + "public#{icon(style_name)}"
|
|
59
58
|
end
|
|
60
59
|
|
|
61
60
|
def condition
|
|
62
61
|
if @mimes.any?
|
|
63
|
-
["asset_content_type IN (#{@mimes.map{'?'}.join(',')})", *@mimes]
|
|
62
|
+
["asset_content_type IN (#{@mimes.map { '?' }.join(',')})", *@mimes]
|
|
64
63
|
else
|
|
65
64
|
self.class.other_condition
|
|
66
65
|
end
|
|
@@ -72,7 +71,7 @@ class AssetType
|
|
|
72
71
|
|
|
73
72
|
def non_condition
|
|
74
73
|
if @mimes.any?
|
|
75
|
-
["NOT asset_content_type IN (#{@mimes.map{'?'}.join(',')})", *@mimes]
|
|
74
|
+
["NOT asset_content_type IN (#{@mimes.map { '?' }.join(',')})", *@mimes]
|
|
76
75
|
else
|
|
77
76
|
self.class.non_other_condition
|
|
78
77
|
end
|
|
@@ -98,23 +97,23 @@ class AssetType
|
|
|
98
97
|
def paperclip_styles
|
|
99
98
|
# Styles are not relevant if processors are not defined.
|
|
100
99
|
@paperclip_styles ||= if paperclip_processors.any?
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
normalize_style_rules(configured_styles.merge(styles))
|
|
101
|
+
else
|
|
102
|
+
{}
|
|
104
103
|
end
|
|
105
104
|
@paperclip_styles
|
|
106
105
|
end
|
|
107
106
|
|
|
108
107
|
# Takes a motley collection of differently-defined styles and renders them into the standard hash-of-hashes format.
|
|
109
108
|
# Solitary strings are assumed to be #
|
|
110
|
-
def normalize_style_rules(styles={})
|
|
109
|
+
def normalize_style_rules(styles = {})
|
|
111
110
|
styles.each_pair do |name, rule|
|
|
112
111
|
unless rule.is_a? Hash
|
|
113
112
|
if rule =~ /\=/
|
|
114
|
-
parameters = rule.split(',').collect{ |parameter| parameter.split('=') }
|
|
115
|
-
rule = Hash[parameters].symbolize_keys
|
|
113
|
+
parameters = rule.split(',').collect { |parameter| parameter.split('=') } # array of pairs
|
|
114
|
+
rule = Hash[parameters].symbolize_keys # into hash of :first => last
|
|
116
115
|
else
|
|
117
|
-
rule = {:
|
|
116
|
+
rule = { geometry: rule } # simplest case: name:geom|name:geom
|
|
118
117
|
end
|
|
119
118
|
end
|
|
120
119
|
rule[:geometry] ||= rule.delete(:size)
|
|
@@ -122,10 +121,10 @@ class AssetType
|
|
|
122
121
|
end
|
|
123
122
|
styles
|
|
124
123
|
end
|
|
125
|
-
|
|
124
|
+
|
|
126
125
|
def standard_styles
|
|
127
126
|
{
|
|
128
|
-
:
|
|
127
|
+
thumbnail: { geometry: '100x100#', format: :png },
|
|
129
128
|
}
|
|
130
129
|
end
|
|
131
130
|
|
|
@@ -140,17 +139,17 @@ class AssetType
|
|
|
140
139
|
#
|
|
141
140
|
def configured_styles
|
|
142
141
|
@configured_styles ||= if style_definitions = TrustyCms.config["assets.thumbnails.#{name}"]
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
142
|
+
style_definitions.split('|').each_with_object({}) do |definition, styles|
|
|
143
|
+
name, rule = definition.split(':')
|
|
144
|
+
styles[name.strip.to_sym] = rule.to_s.strip
|
|
145
|
+
end
|
|
146
|
+
else
|
|
147
|
+
{}
|
|
149
148
|
end
|
|
150
149
|
end
|
|
151
150
|
|
|
152
151
|
def legacy_styles
|
|
153
|
-
TrustyCms::config[
|
|
152
|
+
TrustyCms::config['assets.additional_thumbnails'].to_s.gsub(' ', '').split(',').collect { |s| s.split('=') }.inject({}) { |ha, (k, v)| ha[k.to_sym] = v; ha }
|
|
154
153
|
end
|
|
155
154
|
|
|
156
155
|
def style_dimensions(style_name)
|
|
@@ -160,21 +159,21 @@ class AssetType
|
|
|
160
159
|
end
|
|
161
160
|
|
|
162
161
|
def define_radius_tags
|
|
163
|
-
type =
|
|
164
|
-
Page.class_eval
|
|
162
|
+
type = name
|
|
163
|
+
Page.class_eval do
|
|
165
164
|
tag "asset:if_#{type}" do |tag|
|
|
166
165
|
tag.expand if find_asset(tag, tag.attr.dup).send("#{type}?".to_sym)
|
|
167
166
|
end
|
|
168
167
|
tag "asset:unless_#{type}" do |tag|
|
|
169
168
|
tag.expand unless find_asset(tag, tag.attr.dup).send("#{type}?".to_sym)
|
|
170
169
|
end
|
|
171
|
-
|
|
170
|
+
end
|
|
172
171
|
end
|
|
173
172
|
|
|
174
173
|
# class methods
|
|
175
174
|
|
|
176
175
|
def self.for(attachment)
|
|
177
|
-
extension = File.extname(attachment.original_filename).sub(/^\.+/,
|
|
176
|
+
extension = File.extname(attachment.original_filename).sub(/^\.+/, '')
|
|
178
177
|
from_extension(extension) || from_mimetype(attachment.instance_read(:content_type)) || catchall
|
|
179
178
|
end
|
|
180
179
|
|
|
@@ -187,20 +186,21 @@ class AssetType
|
|
|
187
186
|
end
|
|
188
187
|
|
|
189
188
|
def self.catchall
|
|
190
|
-
@@default_type ||=
|
|
189
|
+
@@default_type ||= find(:other)
|
|
191
190
|
end
|
|
192
191
|
|
|
193
192
|
def self.known?(name)
|
|
194
|
-
!
|
|
193
|
+
!find(name).nil?
|
|
195
194
|
end
|
|
196
195
|
|
|
197
196
|
def self.slice(*types)
|
|
198
|
-
@@type_lookup.slice(*types.map(&:to_sym)).values if types
|
|
197
|
+
@@type_lookup.slice(*types.map(&:to_sym)).values if types # Hash#slice is provided by will_paginate
|
|
199
198
|
end
|
|
200
199
|
|
|
201
200
|
def self.find(type)
|
|
202
201
|
@@type_lookup[type] if type
|
|
203
202
|
end
|
|
203
|
+
|
|
204
204
|
def self.[](type)
|
|
205
205
|
find(type)
|
|
206
206
|
end
|
|
@@ -218,19 +218,18 @@ class AssetType
|
|
|
218
218
|
end
|
|
219
219
|
|
|
220
220
|
def self.mime_types_for(*names)
|
|
221
|
-
names.collect{ |name| find(name).mime_types }.flatten
|
|
221
|
+
names.collect { |name| find(name).mime_types }.flatten
|
|
222
222
|
end
|
|
223
223
|
|
|
224
224
|
def self.conditions_for(*names)
|
|
225
|
-
names.collect{ |name|
|
|
225
|
+
names.collect { |name| find(name).sanitized_condition }.join(' OR ')
|
|
226
226
|
end
|
|
227
227
|
|
|
228
228
|
def self.non_other_condition
|
|
229
|
-
["asset_content_type IN (#{known_mimetypes.map{'?'}.join(',')})", *known_mimetypes]
|
|
229
|
+
["asset_content_type IN (#{known_mimetypes.map { '?' }.join(',')})", *known_mimetypes]
|
|
230
230
|
end
|
|
231
231
|
|
|
232
232
|
def self.other_condition
|
|
233
|
-
["NOT asset_content_type IN (#{known_mimetypes.map{'?'}.join(',')})", *known_mimetypes]
|
|
233
|
+
["NOT asset_content_type IN (#{known_mimetypes.map { '?' }.join(',')})", *known_mimetypes]
|
|
234
234
|
end
|
|
235
|
-
|
|
236
235
|
end
|