assetable 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/controllers/assetable/assets_controller.rb +7 -7
- data/app/controllers/assetable/external_services_controller.rb +2 -2
- data/app/helpers/assetable/asset_helper.rb +1 -1
- data/app/inputs/gallery_input.rb +2 -1
- data/app/inputs/uploader_input.rb +2 -1
- data/app/models/assetabler.rb +5 -0
- data/app/models/assetabler/asset.rb +55 -0
- data/app/models/assetabler/asset_attachment.rb +33 -0
- data/app/models/assetabler/document.rb +7 -0
- data/app/models/assetabler/external_service.rb +24 -0
- data/app/models/assetabler/gallery.rb +13 -0
- data/app/models/assetabler/image.rb +7 -0
- data/app/models/assetabler/video.rb +7 -0
- data/db/migrate/20131122232735_create_assets.rb +1 -1
- data/db/migrate/20131123172825_create_asset_attachments.rb +5 -5
- data/db/migrate/20131125200943_create_galleries.rb +4 -4
- data/db/migrate/20140121173312_add_ratio_to_assets.rb +1 -1
- data/db/migrate/20140220053656_add_sort_order_to_asset_attachments.rb +4 -3
- data/lib/assetable/active_record/base.rb +12 -4
- data/lib/assetable/engine.rb +5 -0
- data/lib/assetable/inputs/uploaders.rb +11 -4
- data/lib/assetable/version.rb +1 -1
- metadata +11 -10
- data/app/models/asset.rb +0 -70
- data/app/models/asset_attachment.rb +0 -31
- data/app/models/document.rb +0 -5
- data/app/models/external_service.rb +0 -22
- data/app/models/gallery.rb +0 -9
- data/app/models/image.rb +0 -5
- data/app/models/video.rb +0 -5
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Mjg5N2ViZDI4NDNjYjA1YWIxYWI0MTczN2IyMGU5OTdiNmI5MmNjMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDZjYmQzY2RhNjgyNDVhY2Y2OGEyNTU3MmIyOTFjMjRlMzQwN2Y0YQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODIxZTgwNWZiYjQzZTQzY2Q4MjFlMGQzNjQ1M2Y5MTBkYmMyYjA2ZjM4ODJj
|
10
|
+
MGFiMTlhOTk4ODU2MmVlMzVmNWZiOGVkOWQ2ZDg1MmYyNjM3NWI1NGQwOWY0
|
11
|
+
YzRmZjdmZTEzZjhiZjZlOTRiNTAwMzdiOTQzMzQyNjFjZjQ1MTk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzVjYTBkNzVlYmNkNWRjZDNlYzE5YjVkYjNkNzYwZTgyY2EyODg1MTkyNDA3
|
14
|
+
MTVkZjZkNTZhNDE0NTA3ZDBkNTcyM2I2OGE1OWFlNGEwNTQ5ZjU1MWQ2MmVl
|
15
|
+
NDI4ZDJiMTFkYjc3NmM0ZjdlYjBkNzFjOGU3YTMwMGJlNzNlMGI=
|
@@ -3,7 +3,7 @@ class Assetable::AssetsController < ActionController::Base
|
|
3
3
|
respond_to :html, :js
|
4
4
|
|
5
5
|
def index
|
6
|
-
@assets = Asset.page(params[:page]).per(20)
|
6
|
+
@assets = Assetabler::Asset.page(params[:page]).per(20)
|
7
7
|
@fieldname = params[:fieldname]
|
8
8
|
@uploader_id = params[:uploader_id]
|
9
9
|
end
|
@@ -12,7 +12,7 @@ class Assetable::AssetsController < ActionController::Base
|
|
12
12
|
def insert
|
13
13
|
@fieldname = params[:fieldname]
|
14
14
|
@uploader_id = params[:uploader_id]
|
15
|
-
@assets = Asset.find(params[:asset_ids])
|
15
|
+
@assets = Assetabler::Asset.find(params[:asset_ids])
|
16
16
|
end
|
17
17
|
|
18
18
|
# Create a new asset
|
@@ -23,11 +23,11 @@ class Assetable::AssetsController < ActionController::Base
|
|
23
23
|
|
24
24
|
# Create the appropriate model
|
25
25
|
if content_type.split("/").first == "image"
|
26
|
-
@asset = Image.new(asset_params)
|
26
|
+
@asset = Assetabler::Image.new(asset_params)
|
27
27
|
elsif content_type.split("/").first == "video"
|
28
|
-
@asset = Video.new(asset_params)
|
28
|
+
@asset = Assetabler::Video.new(asset_params)
|
29
29
|
elsif content_type.split("/").first == "application"
|
30
|
-
@asset = Document.new(asset_params)
|
30
|
+
@asset = Assetabler::Document.new(asset_params)
|
31
31
|
end
|
32
32
|
|
33
33
|
# Return
|
@@ -42,12 +42,12 @@ class Assetable::AssetsController < ActionController::Base
|
|
42
42
|
|
43
43
|
# Edit an asset will return the edit form
|
44
44
|
def edit
|
45
|
-
@asset = Asset.find(params[:id])
|
45
|
+
@asset = Assetabler::Asset.find(params[:id])
|
46
46
|
end
|
47
47
|
|
48
48
|
# Update an asset
|
49
49
|
def update
|
50
|
-
@asset = Asset.find(params[:id])
|
50
|
+
@asset = Assetabler::Asset.find(params[:id])
|
51
51
|
@asset.update_attributes(permitted_params)
|
52
52
|
end
|
53
53
|
|
@@ -9,14 +9,14 @@ class Assetable::ExternalServicesController < ActionController::Base
|
|
9
9
|
|
10
10
|
# New template
|
11
11
|
def new
|
12
|
-
@external_service = ExternalService.new
|
12
|
+
@external_service = Assetabler::ExternalService.new
|
13
13
|
@fieldname = params[:fieldname]
|
14
14
|
@uploader_id = params[:uploader_id]
|
15
15
|
end
|
16
16
|
|
17
17
|
# Create a new external service asset
|
18
18
|
def create
|
19
|
-
@external_service = ExternalService.new(permitted_params)
|
19
|
+
@external_service = Assetabler::ExternalService.new(permitted_params)
|
20
20
|
|
21
21
|
if @external_service.errors.empty? and @external_service.save
|
22
22
|
@fieldname = params[:fieldname]
|
data/app/inputs/gallery_input.rb
CHANGED
@@ -21,7 +21,8 @@ class GalleryInput < SimpleForm::Inputs::FileInput
|
|
21
21
|
uploader_html = template.content_tag(:div, (gallery_hidden_input + preview), class: "uploader-assets-wrapper")
|
22
22
|
|
23
23
|
# Create and return the uploader html
|
24
|
-
|
24
|
+
directions = options[:directions]
|
25
|
+
uploader_wrapper = template.content_tag :div, (uploader_html + hidden_input + directions_html(directions, attribute_name).html_safe), class: "gallery-uploader"
|
25
26
|
return uploader_wrapper
|
26
27
|
end
|
27
28
|
|
@@ -3,6 +3,7 @@ class UploaderInput < SimpleForm::Inputs::FileInput
|
|
3
3
|
include Assetable::Uploaders
|
4
4
|
|
5
5
|
def input
|
6
|
+
|
6
7
|
# Create the hidden input as fields_for
|
7
8
|
fieldname = "#{object_name}[#{attribute_name}_association_attributes][asset_id]"
|
8
9
|
|
@@ -18,7 +19,7 @@ class UploaderInput < SimpleForm::Inputs::FileInput
|
|
18
19
|
|
19
20
|
# Create and return the uploader html
|
20
21
|
directions = options[:directions]
|
21
|
-
uploader_wrapper = template.content_tag :div, (uploader_html + directions_html(directions).html_safe), class: "assetable-uploader"
|
22
|
+
uploader_wrapper = template.content_tag :div, (uploader_html + directions_html(directions, attribute_name).html_safe), class: "assetable-uploader"
|
22
23
|
return uploader_wrapper
|
23
24
|
end
|
24
25
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Assetabler
|
2
|
+
class Asset < ActiveRecord::Base
|
3
|
+
|
4
|
+
has_many :asset_attachments, :as => :assetable, :dependent => :destroy
|
5
|
+
has_many :assetable, :through => :asset_attachments
|
6
|
+
|
7
|
+
before_save :update_asset_attributes
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
# File Type Helpers
|
12
|
+
# ---------------------------------------------------------------------
|
13
|
+
|
14
|
+
# Is the asset a image?
|
15
|
+
def image?
|
16
|
+
self.type == "Assetabler::Image"
|
17
|
+
end
|
18
|
+
|
19
|
+
# Is the asset a document?
|
20
|
+
def document?
|
21
|
+
self.type == "Assetabler::Document"
|
22
|
+
end
|
23
|
+
|
24
|
+
# Is the asset a video?
|
25
|
+
def video?
|
26
|
+
self.type == "Assetabler::Video"
|
27
|
+
end
|
28
|
+
|
29
|
+
def external_service?
|
30
|
+
self.type == "Assetabler::ExternalService"
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
# File meta and helpers
|
35
|
+
# ---------------------------------------------------------------------
|
36
|
+
|
37
|
+
# Get the file type extension from the filename
|
38
|
+
def extension
|
39
|
+
filename = File.extname(self.filename.to_s)
|
40
|
+
filename[0] = '' # remove the dot, i.e. (.docx or .pptx)
|
41
|
+
filename
|
42
|
+
end
|
43
|
+
|
44
|
+
# Add some custom attributes to the asset
|
45
|
+
def update_asset_attributes
|
46
|
+
if !self.external_service? and self.present? and self.changed?
|
47
|
+
self.content_type = self.filename.file.content_type
|
48
|
+
self.file_size = self.filename.file.size
|
49
|
+
self.width, self.height = `identify -format "%wx%h" #{self.filename.file.path}`.split(/x/) unless self.document? or self.width? or self.height?
|
50
|
+
self.ratio = self.width.to_f / self.height.to_f if self.width.present? and self.height.present?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Assetabler
|
2
|
+
class AssetAttachment < ActiveRecord::Base
|
3
|
+
|
4
|
+
belongs_to :asset
|
5
|
+
belongs_to :assetable, polymorphic: true
|
6
|
+
|
7
|
+
before_validation :ensure_name_is_not_blank
|
8
|
+
before_save :set_sort_order
|
9
|
+
|
10
|
+
# Is the asset_attachment attached to a gallery?
|
11
|
+
def gallery?
|
12
|
+
assetable_type.downcase == "gallery"
|
13
|
+
end
|
14
|
+
|
15
|
+
def gallery
|
16
|
+
assetable
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
# Ensure the name is not blank to avoid unique indexes on the name
|
23
|
+
# If it's blank, let's set it to nil
|
24
|
+
def ensure_name_is_not_blank
|
25
|
+
name = nil if name.blank?
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_sort_order
|
29
|
+
sort_order = assetable.asset_attachments.size if gallery? and sort_order.blank?
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Assetabler
|
2
|
+
class ExternalService < Asset
|
3
|
+
|
4
|
+
validates_presence_of :name, :body
|
5
|
+
|
6
|
+
def self.possible_content_types
|
7
|
+
if user_defined_document_types = Assetable.external_document_types
|
8
|
+
return user_defined_document_types
|
9
|
+
else
|
10
|
+
return ["iFrame", "Third Party API"]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def has_icon?
|
15
|
+
available_icons = Assetable.external_document_icons.collect{|k, v| k}
|
16
|
+
available_icons.include? self.content_type.to_sym if self.content_type.present?
|
17
|
+
end
|
18
|
+
|
19
|
+
def icon
|
20
|
+
Assetable.external_document_icons[self.content_type.to_sym].to_s if self.has_icon?
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Assetabler
|
2
|
+
class Gallery < ActiveRecord::Base
|
3
|
+
|
4
|
+
belongs_to :galleryable, polymorphic: true
|
5
|
+
has_many :asset_attachments, -> { order('sort_order asc') }, as: :assetable, dependent: :destroy
|
6
|
+
has_many :assets, through: :asset_attachments
|
7
|
+
|
8
|
+
accepts_nested_attributes_for :asset_attachments, allow_destroy: true
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
class CreateAssetAttachments < ActiveRecord::Migration
|
2
2
|
def change
|
3
|
-
create_table :
|
3
|
+
create_table :assetable_asset_attachments do |t|
|
4
4
|
t.references :asset
|
5
5
|
t.references :assetable, :polymorphic => true
|
6
6
|
t.string :name
|
7
7
|
t.timestamps
|
8
8
|
end
|
9
9
|
|
10
|
-
add_index :
|
11
|
-
add_index :
|
12
|
-
add_index :
|
13
|
-
add_index :
|
10
|
+
add_index :assetable_asset_attachments, :asset_id
|
11
|
+
add_index :assetable_asset_attachments, [:assetable_type, :assetable_id], name: "poly_asset"
|
12
|
+
add_index :assetable_asset_attachments, [:assetable_type, :assetable_id, :name], unique: true, name: "named_asset"
|
13
|
+
add_index :assetable_asset_attachments, :assetable_id
|
14
14
|
end
|
15
15
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
class CreateGalleries < ActiveRecord::Migration
|
2
2
|
def change
|
3
|
-
create_table :
|
3
|
+
create_table :assetable_galleries do |t|
|
4
4
|
t.references :galleryable, :polymorphic => true
|
5
5
|
t.string :name
|
6
6
|
t.timestamps
|
7
7
|
end
|
8
8
|
|
9
|
-
add_index :
|
10
|
-
add_index :
|
9
|
+
add_index :assetable_galleries, [:galleryable_type, :galleryable_id], name: "poly_asset"
|
10
|
+
add_index :assetable_galleries, [:galleryable_type, :galleryable_id, :name], unique: true, name: "named_gallery"
|
11
11
|
|
12
|
-
add_index :
|
12
|
+
add_index :assetable_galleries, :galleryable_id
|
13
13
|
end
|
14
14
|
end
|
@@ -1,10 +1,11 @@
|
|
1
1
|
class AddSortOrderToAssetAttachments < ActiveRecord::Migration
|
2
2
|
def change
|
3
|
-
add_column :
|
3
|
+
add_column :assetable_asset_attachments, :sort_order, :integer, default: 0
|
4
4
|
|
5
|
-
AssetAttachment.reset_column_information
|
5
|
+
Assetabler::AssetAttachment.reset_column_information
|
6
|
+
Assetabler::Gallery.reset_column_information
|
6
7
|
|
7
|
-
Gallery.all.each do |gallery|
|
8
|
+
Assetabler::Gallery.all.each do |gallery|
|
8
9
|
if gallery.asset_attachments.present?
|
9
10
|
gallery.asset_attachments.each_with_index do |attachment, index|
|
10
11
|
attachment.update_attribute(:sort_order, index)
|
@@ -9,24 +9,32 @@ module Assetable
|
|
9
9
|
def assetable *args
|
10
10
|
if args.present?
|
11
11
|
args.each do |arg|
|
12
|
-
has_one :"#{arg}_association", -> { where(name: arg) }, class_name: "AssetAttachment", as: :assetable
|
13
|
-
has_one arg, through: :"#{arg}_association", source
|
12
|
+
has_one :"#{arg}_association", -> { where(name: arg) }, class_name: "Assetabler::AssetAttachment", as: :assetable
|
13
|
+
has_one arg, through: :"#{arg}_association", :source => :asset
|
14
14
|
accepts_nested_attributes_for :"#{arg}_association", allow_destroy: true
|
15
|
+
# Hack to fix the has_one accessor from not correctly guessing namespace of source association
|
16
|
+
class_eval %Q"
|
17
|
+
def #{arg}
|
18
|
+
#{arg}_association.try(:asset) || super
|
19
|
+
end
|
20
|
+
"
|
21
|
+
|
15
22
|
end
|
16
23
|
end
|
24
|
+
|
17
25
|
end
|
18
26
|
|
19
27
|
# Galleries
|
20
28
|
def galleryable *args
|
21
29
|
# By default, let's include a gallery.
|
22
30
|
unless args.include? :gallery
|
23
|
-
has_one :gallery, as: :galleryable, dependent: :destroy
|
31
|
+
has_one :gallery, class_name: "Assetabler::Gallery", as: :galleryable, dependent: :destroy
|
24
32
|
accepts_nested_attributes_for :gallery
|
25
33
|
end
|
26
34
|
|
27
35
|
if args.present?
|
28
36
|
args.each do |arg|
|
29
|
-
has_one arg, -> { where(name: arg) }, class_name: "Gallery", as: :galleryable
|
37
|
+
has_one arg, -> { where(name: arg) }, class_name: "Assetabler::Gallery", as: :galleryable
|
30
38
|
accepts_nested_attributes_for arg
|
31
39
|
end
|
32
40
|
end
|
data/lib/assetable/engine.rb
CHANGED
@@ -3,6 +3,11 @@ module Assetable
|
|
3
3
|
config.generators.integration_tool :rspec
|
4
4
|
config.generators.test_framework :rspec
|
5
5
|
|
6
|
+
|
7
|
+
initializer :assets do |config|
|
8
|
+
Rails.application.config.assets.precompile += %w( Moxie.swf Moxie.xap )
|
9
|
+
end
|
10
|
+
|
6
11
|
# Run the engine migrations with the main app rake task
|
7
12
|
initializer :append_migrations do |app|
|
8
13
|
unless app.root.to_s.match root.to_s
|
@@ -9,7 +9,7 @@ module Assetable::Uploaders
|
|
9
9
|
# modal_gallery.assets.each do |asset|
|
10
10
|
modal_gallery.asset_attachments.each_with_index do |asset_attachment, index|
|
11
11
|
# gallery += asset_preview(asset, :gallery, fieldname)
|
12
|
-
gallery +=
|
12
|
+
gallery += ac.send(:render_to_string, partial: "assetable/shared/templates/gallery_item", locals: { asset: asset_attachment.asset, asset_attachment: asset_attachment, fieldname: fieldname, index: index })
|
13
13
|
end
|
14
14
|
|
15
15
|
gallery
|
@@ -17,11 +17,18 @@ module Assetable::Uploaders
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def asset_preview asset, type=:asset, fieldname=nil
|
20
|
-
|
20
|
+
ac.send(:render_to_string, partial: "assetable/shared/templates/#{type.downcase.to_s}_item", locals: { asset: asset, fieldname: fieldname })
|
21
21
|
end
|
22
22
|
|
23
|
-
def directions_html
|
24
|
-
|
23
|
+
def directions_html(directions, fieldname=nil)
|
24
|
+
ac.send(:render_to_string, :partial => 'assetable/assets/directions', locals: {directions: directions, fieldname: fieldname})
|
25
|
+
end
|
26
|
+
|
27
|
+
def ac
|
28
|
+
return @c if @c.present?
|
29
|
+
@c = ActionController::Base.new
|
30
|
+
@c.request = OpenStruct.new()
|
31
|
+
@c
|
25
32
|
end
|
26
33
|
|
27
34
|
end
|
data/lib/assetable/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assetable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Koht
|
@@ -14,14 +14,14 @@ dependencies:
|
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ! '>'
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 4.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ! '>'
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 4.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -335,13 +335,14 @@ files:
|
|
335
335
|
- app/helpers/assetable/asset_helper.rb
|
336
336
|
- app/inputs/gallery_input.rb
|
337
337
|
- app/inputs/uploader_input.rb
|
338
|
-
- app/models/
|
339
|
-
- app/models/
|
340
|
-
- app/models/
|
341
|
-
- app/models/
|
342
|
-
- app/models/
|
343
|
-
- app/models/
|
344
|
-
- app/models/
|
338
|
+
- app/models/assetabler.rb
|
339
|
+
- app/models/assetabler/asset.rb
|
340
|
+
- app/models/assetabler/asset_attachment.rb
|
341
|
+
- app/models/assetabler/document.rb
|
342
|
+
- app/models/assetabler/external_service.rb
|
343
|
+
- app/models/assetabler/gallery.rb
|
344
|
+
- app/models/assetabler/image.rb
|
345
|
+
- app/models/assetabler/video.rb
|
345
346
|
- app/uploaders/asset_uploader.rb
|
346
347
|
- app/uploaders/document_uploader.rb
|
347
348
|
- app/uploaders/image_uploader.rb
|
data/app/models/asset.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
# Base Asset Class
|
2
|
-
# ---------------------------------------
|
3
|
-
# Available Attributes:
|
4
|
-
# :type
|
5
|
-
# :name
|
6
|
-
# :body
|
7
|
-
# :filename
|
8
|
-
# :checksum
|
9
|
-
# :path
|
10
|
-
# :content_type
|
11
|
-
# :file_size
|
12
|
-
# :width
|
13
|
-
# :height
|
14
|
-
# :duration
|
15
|
-
# :bit_rate
|
16
|
-
|
17
|
-
class Asset < ActiveRecord::Base
|
18
|
-
|
19
|
-
has_many :asset_attachments, :as => :assetable, :dependent => :destroy
|
20
|
-
has_many :assetable, :through => :asset_attachments
|
21
|
-
|
22
|
-
before_validation :update_asset_attributes
|
23
|
-
|
24
|
-
validates_uniqueness_of :checksum, message: "File has already been uploaded." if Assetable.unique_assets
|
25
|
-
|
26
|
-
|
27
|
-
# File Type Helpers
|
28
|
-
# ---------------------------------------------------------------------
|
29
|
-
|
30
|
-
# Is the asset a image?
|
31
|
-
def image?
|
32
|
-
self.type == "Image"
|
33
|
-
end
|
34
|
-
|
35
|
-
# Is the asset a document?
|
36
|
-
def document?
|
37
|
-
self.type == "Document"
|
38
|
-
end
|
39
|
-
|
40
|
-
# Is the asset a video?
|
41
|
-
def video?
|
42
|
-
self.type == "Video"
|
43
|
-
end
|
44
|
-
|
45
|
-
def external_service?
|
46
|
-
self.type == "ExternalService"
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
# File meta and helpers
|
51
|
-
# ---------------------------------------------------------------------
|
52
|
-
|
53
|
-
# Get the file type extension from the filename
|
54
|
-
def extension
|
55
|
-
filename = File.extname(self.filename.to_s)
|
56
|
-
filename[0] = '' # remove the dot, i.e. (.docx or .pptx)
|
57
|
-
filename
|
58
|
-
end
|
59
|
-
|
60
|
-
# Add some custom attributes to the asset
|
61
|
-
def update_asset_attributes
|
62
|
-
if !self.external_service? and self.present? and self.changed?
|
63
|
-
self.content_type = self.filename.file.content_type
|
64
|
-
self.file_size = self.filename.file.size
|
65
|
-
self.width, self.height = `identify -format "%wx%h" #{self.filename.file.path}`.split(/x/) unless self.document? or self.width? or self.height?
|
66
|
-
self.ratio = self.width.to_f / self.height.to_f if self.width.present? and self.height.present?
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class AssetAttachment < ActiveRecord::Base
|
2
|
-
|
3
|
-
belongs_to :asset
|
4
|
-
belongs_to :assetable, polymorphic: true
|
5
|
-
|
6
|
-
before_validation :ensure_name_is_not_blank
|
7
|
-
before_save :set_sort_order
|
8
|
-
|
9
|
-
# Is the asset_attachment attached to a gallery?
|
10
|
-
def gallery?
|
11
|
-
assetable_type.downcase == "gallery"
|
12
|
-
end
|
13
|
-
|
14
|
-
def gallery
|
15
|
-
assetable
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
# Ensure the name is not blank to avoid unique indexes on the name
|
22
|
-
# If it's blank, let's set it to nil
|
23
|
-
def ensure_name_is_not_blank
|
24
|
-
name = nil if name.blank?
|
25
|
-
end
|
26
|
-
|
27
|
-
def set_sort_order
|
28
|
-
sort_order = assetable.asset_attachments.size if gallery? and sort_order.blank?
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
data/app/models/document.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
class ExternalService < Asset
|
2
|
-
|
3
|
-
validates_presence_of :name, :body
|
4
|
-
|
5
|
-
def self.possible_content_types
|
6
|
-
if user_defined_document_types = Assetable.external_document_types
|
7
|
-
return user_defined_document_types
|
8
|
-
else
|
9
|
-
return ["iFrame", "Third Party API"]
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def has_icon?
|
14
|
-
available_icons = Assetable.external_document_icons.collect{|k, v| k}
|
15
|
-
available_icons.include? self.content_type.to_sym if self.content_type.present?
|
16
|
-
end
|
17
|
-
|
18
|
-
def icon
|
19
|
-
Assetable.external_document_icons[self.content_type.to_sym].to_s if self.has_icon?
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
data/app/models/gallery.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
class Gallery < ActiveRecord::Base
|
2
|
-
|
3
|
-
belongs_to :galleryable, polymorphic: true
|
4
|
-
has_many :asset_attachments, -> { order('sort_order asc') }, as: :assetable, dependent: :destroy
|
5
|
-
has_many :assets, through: :asset_attachments
|
6
|
-
|
7
|
-
accepts_nested_attributes_for :asset_attachments, allow_destroy: true
|
8
|
-
|
9
|
-
end
|
data/app/models/image.rb
DELETED