effective_assets 1.6.2 → 1.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9bacc3e0d5f658838bebe3ac64e6914078952cea
4
- data.tar.gz: 614b38bdf3162f44dd810256ab7cc092bb11b3b9
3
+ metadata.gz: 47cf237da48597a134011c3256f2631b731b2d6b
4
+ data.tar.gz: b4a479a03cff5dfda60b5a5566f3674bbd494361
5
5
  SHA512:
6
- metadata.gz: 88cd095f1bd880b215c82d32f898b5e02e07f23efdccf43d1b2494d8ee1adeb03d057ec59d0c105b54379a2acfa17a8fc467c298aa0a524cda633e94cff56173
7
- data.tar.gz: 54b14269944ca4446002934cd239eb127ca6e2c0ea9a3e3adb1c5144cdfcf93944798beef96b91afa27c04f697542e8f5425af9f3d8fa9c32b648001ec54ec2a
6
+ metadata.gz: 95bcb6b27a4e4623f05d0b4d40a6bc676ca6a5067da6bef4a24ea5b686b84db5b4a10fc93bb2e19c8aab08d7d90ab1bfca8a609e3b120dd8a8497d8ec9a8a364
7
+ data.tar.gz: ab67f6beab1aa7a87d375f66ace82566dd6e0dca4004e143e0ba27c1060bbf43861b2770aa9d1756ef380ea73302656ebf6efaff7f1e5be0e2c7f79c818bc769
@@ -4,22 +4,22 @@ module Effective
4
4
  class AssetsController < ApplicationController
5
5
  layout false
6
6
 
7
- def index # This is the Modal dialog that is read by CKEDITOR
7
+ # iframe
8
+ def index # This is the IFRAME modal dialog that is read by CKEDITOR
8
9
  EffectiveAssets.authorized?(self, :index, Effective::Asset.new(:user_id => current_user.try(:id)))
9
10
 
10
- @assets = Effective::Asset.where(:user_id => current_user.try(:id))
11
- @aws_acl = EffectiveAssets.aws_acl.presence || 'public-read'
11
+ effective_iframe_uploads = Effective::Attachment.where(box: EffectiveAssets::IFRAME_UPLOADS).pluck(:asset_id)
12
+ @assets = Effective::Asset.where(id: effective_iframe_uploads)
12
13
 
13
14
  if params[:only] == 'images'
14
15
  @assets = @assets.images
15
16
  @file_types = [:jpg, :gif, :png, :bmp, :ico]
16
- @aws_acl = 'public-read' # The CKEditor Insert Image functionality needs a public-read image here
17
17
  elsif params[:only] == 'nonimages'
18
18
  @assets = @assets.nonimages
19
19
  @file_types = [:pdf, :zip, :doc, :docx, :xls, :xlsx, :txt, :csv, :avi, :m4v, :m2v, :mov, :mp3, :mp4, :eml]
20
20
  end
21
21
 
22
- @user_uploads = UserUploads.new(@assets)
22
+ @user_uploads = IframeUploads.new(@assets)
23
23
 
24
24
  render :file => 'effective/assets/iframe'
25
25
  end
@@ -34,6 +34,11 @@ module Effective
34
34
  end
35
35
  end
36
36
 
37
+ # Kind of a hacky way of saving IFRAME uploads without joining them to anything
38
+ if params[:attachable_object_name] == EffectiveAssets::IFRAME_UPLOADS
39
+ Effective::Attachment.new(asset: @asset, box: EffectiveAssets::IFRAME_UPLOADS, position: 0).save!
40
+ end
41
+
37
42
  # If the attachment information is present, then our input needs some attachment HTML
38
43
  if params.key?(:attachable_object_name)
39
44
  attachment = Effective::Attachment.new
@@ -44,7 +49,7 @@ module Effective
44
49
  attachment.position = 0
45
50
  attachable_object_name = params[:attachable_object_name].to_s
46
51
  attachment_actions = params[:attachment_actions]
47
- attachment_links = ![false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF'].include?(params[:attachment_links])
52
+ attachment_links = !['0', 'f', 'false', 'off'].include?(params[:attachment_links].to_s.downcase)
48
53
 
49
54
  attachment_partial =
50
55
  case params[:attachment_style].to_s
@@ -13,24 +13,27 @@ module EffectiveAssetsHelper
13
13
  opts = {}
14
14
  end
15
15
 
16
+ public_url = options.delete(:public) || options.delete(:public_url)
17
+
16
18
  opts = opts.merge({:alt => asset.title || asset.file_name}).merge(options)
17
19
 
18
- content_tag(:img, nil, opts.merge(:src => _effective_asset_image_url(asset, version))).gsub('"', "'").html_safe
20
+ content_tag(:img, nil, opts.merge(:src => _effective_asset_image_url(asset, version, public_url))).gsub('"', "'").html_safe
19
21
  end
20
22
 
21
23
  def effective_asset_link_to(asset, version = nil, options = {})
22
24
  options_title = options.delete(:title)
25
+ public_url = options.delete(:public) || options.delete(:public_url)
23
26
  link_title = options_title || asset.title || asset.file_name || "Asset ##{asset.id}"
24
27
 
25
28
  if asset.image?
26
- link_to(link_title, _effective_asset_image_url(asset, version), options).gsub('"', "'").html_safe # we need all ' quotes or it breaks Insert as functionality
29
+ link_to(link_title, _effective_asset_image_url(asset, version, public_url), options)
27
30
  else
28
- link_to(link_title, asset.url, options).gsub('"', "'").html_safe # we need all ' quotes or it breaks Insert as functionality
29
- end
31
+ link_to(link_title, (public_url ? asset.public_url : asset.url), options)
32
+ end.gsub('"', "'").html_safe # we need all ' quotes or it breaks Insert as functionality
30
33
  end
31
34
 
32
35
  def effective_asset_video_tag(asset)
33
- render(:partial => 'assets/video', :locals => { :asset => asset }).gsub('"', "'").html_safe # we need all ' quotes or it breaks Insert as functionality
36
+ render(:partial => 'effective/assets/video', :locals => { :asset => asset }).gsub('"', "'").html_safe # we need all ' quotes or it breaks Insert as functionality
34
37
  end
35
38
 
36
39
  def effective_asset_title(asset)
@@ -41,15 +44,15 @@ module EffectiveAssetsHelper
41
44
  ].compact.join("\n")
42
45
  end
43
46
 
44
- def _effective_asset_image_url(asset, version = nil)
47
+ def _effective_asset_image_url(asset, version = nil, public_url = nil)
45
48
  # asset_url and image_url will work in Rails4
46
49
 
47
50
  return image_path('mime-types/file.png') if !asset.content_type.present? or asset.content_type == 'unknown'
48
51
 
49
52
  if asset.icon?
50
- asset.url
53
+ (public_url ? asset.public_url : asset.url)
51
54
  elsif asset.image?
52
- asset.url(version)
55
+ (public_url ? asset.public_url(version) : asset.url(version))
53
56
  elsif asset.audio?
54
57
  image_path('mime-types/mp3.png')
55
58
  elsif asset.video?
@@ -19,26 +19,32 @@ module Effective
19
19
 
20
20
  has_many :attachments, :dependent => :delete_all
21
21
 
22
- structure do
23
- title :string
24
- extra :text
22
+ # structure do
23
+ # title :string
24
+ # extra :text
25
25
 
26
- content_type :string, :validates => [:presence]
27
- upload_file :string, :validates => [:presence] # The full url of the file, as originally uploaded
26
+ # content_type :string
27
+ # upload_file :string # The full url of the file, as originally uploaded
28
28
 
29
- processed :boolean, :default => false
30
- aws_acl :string, :default => 'public-read', :validates => [:presence, :inclusion => {:in => ['public-read', 'authenticated-read']}]
29
+ # processed :boolean, :default => false
30
+ # aws_acl :string, :default => 'public-read'
31
31
 
32
- data :string
32
+ # data :string
33
33
 
34
- data_size :integer
35
- height :integer, :validates => [:numericality => { :allow_nil => true }]
36
- width :integer, :validates => [:numericality => { :allow_nil => true }]
34
+ # data_size :integer
35
+ # height :integer
36
+ # width :integer
37
37
 
38
- versions_info :text # We store a hash of {:thumb => 34567, :medium => 3343434} data sizes
38
+ # versions_info :text # We store a hash of {:thumb => 34567, :medium => 3343434} data sizes
39
39
 
40
- timestamps
41
- end
40
+ # timestamps
41
+ # end
42
+
43
+ validates :content_type, presence: true
44
+ validates :upload_file, presence: true
45
+ validates :aws_acl, presence: true, inclusion: { in: [EffectiveAssets::AWS_PUBLIC, EffectiveAssets::AWS_PRIVATE] }
46
+ validates :height, numericality: { allow_nil: true }
47
+ validates :width, numericality: { allow_nil: true }
42
48
 
43
49
  serialize :versions_info, Hash
44
50
  serialize :extra, Hash
@@ -128,7 +134,7 @@ module Effective
128
134
  end
129
135
 
130
136
  def url(version = nil, expire_in = nil)
131
- aws_acl == 'authenticated-read' ? authenticated_url(version, expire_in) : public_url(version)
137
+ aws_acl == EffectiveAssets::AWS_PRIVATE ? authenticated_url(version, expire_in) : public_url(version)
132
138
  end
133
139
 
134
140
  def public_url(version = nil)
@@ -7,14 +7,16 @@ module Effective
7
7
  belongs_to :asset
8
8
  belongs_to :attachable, :polymorphic => true
9
9
 
10
- structure do
11
- position :integer, :validates => [:presence, :numericality]
12
- box :string, :default => 'assets', :validates => [:presence] # This is essentially a category
13
- end
10
+ # structure do
11
+ # position :integer
12
+ # box :string, :default => 'assets' # This is essentially a category
13
+ # end
14
14
 
15
15
  default_scope -> { includes(:asset).order("\"#{EffectiveAssets.attachments_table_name.to_s}\".\"position\" ASC, \"#{EffectiveAssets.attachments_table_name.to_s}\".\"asset_id\" ASC") }
16
16
 
17
- validates_presence_of :asset_id
17
+ validates :asset_id, presence: true
18
+ validates :position, presence: true, numericality: true
19
+ validates :box, presence: true
18
20
 
19
21
  end
20
22
  end
@@ -1,4 +1,3 @@
1
- #require 'uri'
2
1
  # Call with DelayedJob.new.process_asset_images(...)
3
2
  # Run jobs locally with "rake jobs:work"
4
3
 
@@ -1,7 +1,7 @@
1
1
  # This is a class used for the IFrame views
2
2
 
3
3
  module Effective
4
- class UserUploads < ActiveRecord::Base
4
+ class IframeUploads < ActiveRecord::Base
5
5
  acts_as_asset_box :uploads
6
6
 
7
7
  def initialize(items = nil)
@@ -16,7 +16,7 @@ if defined?(EffectiveRegions)
16
16
  end
17
17
 
18
18
  def is_private?
19
- private_url == true || (asset.try(:aws_acl) == 'authenticated-read')
19
+ private_url == true || (asset.try(:aws_acl) == EffectiveAssets::AWS_PRIVATE)
20
20
  end
21
21
 
22
22
  end
@@ -70,11 +70,7 @@ module Inputs
70
70
  def attachments_table_head_html
71
71
  content_tag(:thead) do
72
72
  content_tag(:tr) do
73
- [
74
- content_tag(:th, ''),
75
- content_tag(:th, ''),
76
- content_tag(:th, filter_bar_html, :colspan => 2)
77
- ].join().html_safe
73
+ content_tag(:th, filter_bar_html, :colspan => 4)
78
74
  end
79
75
  end
80
76
  end
@@ -106,16 +102,11 @@ module Inputs
106
102
  end
107
103
 
108
104
  def filter_bar_html
109
- "<input type='text' class='form-control filter-attachments' placeholder='Search Title'>".html_safe
105
+ "<input type='text' class='form-control filter-attachments' placeholder='Filter by title'>".html_safe
110
106
  end
111
107
 
112
108
  def build_values_html
113
- count = 0
114
-
115
- attachments.map do |attachment|
116
- count += 1 unless attachment.marked_for_destruction?
117
-
118
- attachment_partial =
109
+ attachment_partial =
119
110
  case @options[:attachment_style]
120
111
  when :table
121
112
  'attachment_as_table'
@@ -129,18 +120,18 @@ module Inputs
129
120
  raise "unknown AssetBox attachment_style: #{@options[:attachment_style]}. Valid options are :thumbnail, :list and :table"
130
121
  end
131
122
 
132
- render(
133
- :partial => "asset_box_input/#{attachment_partial}",
134
- :locals => {
135
- :attachment => attachment,
136
- :attachment_actions => @options[:attachment_actions].map(&:to_s),
137
- :attachment_links => @options[:attachment_links],
138
- :hidden => (count > @options[:limit]),
139
- :disabled => @options[:disabled],
140
- :attachable_object_name => @object_name,
141
- }
142
- )
143
- end.join.html_safe
123
+ render(
124
+ :partial => "asset_box_input/#{attachment_partial}",
125
+ :collection => attachments.reject { |attachment| attachment.marked_for_destruction? },
126
+ :as => :attachment,
127
+ :locals => {
128
+ :attachment_actions => @options[:attachment_actions].map { |action| action.to_s },
129
+ :attachment_links => @options[:attachment_links],
130
+ :limit => @options[:limit],
131
+ :disabled => @options[:disabled],
132
+ :attachable_object_name => @object_name
133
+ }
134
+ )
144
135
  end
145
136
 
146
137
  def footer_html
@@ -12,7 +12,7 @@ class EffectiveAssetsUploader < CarrierWave::Uploader::Base
12
12
  end
13
13
 
14
14
  def aws_public
15
- model.aws_acl == 'public-read' rescue true
15
+ model.aws_acl == EffectiveAssets::AWS_PUBLIC rescue true
16
16
  end
17
17
 
18
18
  def aws_authenticated_url_expiration
@@ -1,10 +1,12 @@
1
1
  - uid = (attachment.persisted? ? attachment.id : Time.now.to_f.to_s.split('.')[1] + Random.rand(10000).to_s)
2
- - hidden ||= false
2
+ - limit ||= 99999999
3
+ - attachment_counter ||= 0
4
+ - hidden ||= (attachment_counter >= limit)
3
5
 
4
6
  %li.attachment
5
7
  .attachment-title.caption
6
8
  - if attachment_links
7
- = link_to attachment.asset.title, attachment.asset.url, :target => '_blank'
9
+ = link_to attachment.asset.title, attachment.asset.public_url, :target => '_blank'
8
10
  - else
9
11
  = attachment.asset.title
10
12
 
@@ -1,12 +1,14 @@
1
1
  - uid = (attachment.persisted? ? attachment.id : Time.now.to_f.to_s.split('.')[1] + Random.rand(10000).to_s)
2
- - hidden ||= false
2
+ - limit ||= 99999999
3
+ - attachment_counter ||= 0
4
+ - hidden ||= (attachment_counter >= limit)
3
5
 
4
6
  %tr.attachment{:style => "#{(attachment.marked_for_destruction? || hidden) ? 'display: none;' : ''}"}
5
7
  %td.attachment-image
6
8
  = effective_asset_image_tag(attachment.asset)
7
9
  %td.attachment-title{:title => effective_asset_title(attachment.asset)}
8
10
  - if attachment_links
9
- = link_to attachment.asset.title, attachment.asset.url, :target => '_blank'
11
+ = link_to attachment.asset.title, attachment.asset.public_url, :target => '_blank'
10
12
  - else
11
13
  = attachment.asset.title
12
14
  %td.attachment-size
@@ -15,11 +17,11 @@
15
17
  - if attachment_actions.include?('insert') || attachment_actions.include?('attach')
16
18
  - asset = attachment.asset
17
19
  - if asset.image? || asset.icon?
18
- %a.btn.btn-primary.attachment-insert{:href => '#', 'data-asset-id' => asset.id, 'data-asset' => effective_asset_image_tag(asset)} Attach
20
+ %a.btn.btn-primary.attachment-insert{:href => '#', 'data-asset-id' => asset.id, 'data-asset' => effective_asset_image_tag(asset, nil, public: true)} Attach
19
21
  - elsif asset.video?
20
- %a.btn.btn-primary.attachment-insert{:href => '#', 'data-asset-id' => asset.id, 'data-asset' => effective_asset_video_tag(asset)} Attach
22
+ %a.btn.btn-primary.attachment-insert{:href => '#', 'data-asset-id' => asset.id, 'data-asset' => effective_asset_video_tag(asset, nil, public: true)} Attach
21
23
  - else
22
- %a.btn.btn-primary.attachment-insert{:href => '#', 'data-asset-id' => asset.id, 'data-asset' => effective_asset_link_to(asset)} Attach
24
+ %a.btn.btn-primary.attachment-insert{:href => '#', 'data-asset-id' => asset.id, 'data-asset' => effective_asset_link_to(asset, nil, public: true)} Attach
23
25
 
24
26
  - if attachment_actions.include?('remove')
25
27
  %a.attachment-remove{:href => '#', :title => 'Remove'}
@@ -1,5 +1,7 @@
1
1
  - uid = (attachment.persisted? ? attachment.id : Time.now.to_f.to_s.split('.')[1] + Random.rand(10000).to_s)
2
- - hidden ||= false
2
+ - limit ||= 99999999
3
+ - attachment_counter ||= 0
4
+ - hidden ||= (attachment_counter >= limit)
3
5
 
4
6
  .col-sm-3.attachment
5
7
  .thumbnail{:style => "#{(attachment.marked_for_destruction? || hidden) ? 'display: none;' : ''}", :title => effective_asset_title(attachment.asset)}
@@ -7,7 +9,7 @@
7
9
 
8
10
  .attachment-title.caption
9
11
  - if attachment_links
10
- = link_to attachment.asset.title, attachment.asset.url, :target => '_blank'
12
+ = link_to attachment.asset.title, attachment.asset.public_url, :target => '_blank'
11
13
  - else
12
14
  = attachment.asset.title
13
15
 
@@ -24,4 +24,4 @@
24
24
  attachment_actions: [:insert, :delete],
25
25
  attachment_add_to: :top,
26
26
  file_types: (@file_types || :any),
27
- aws_acl: (@aws_acl || 'public-read')
27
+ aws_acl: EffectiveAssets::AWS_PUBLIC
@@ -1,5 +1,5 @@
1
1
  - asset = effective_asset.asset
2
- - asset.aws_acl = 'authenticated-read' if effective_asset.is_private?
2
+ - asset.aws_acl = EffectiveAssets::AWS_PRIVATE if effective_asset.is_private?
3
3
 
4
4
  - if asset.nil?
5
5
  %img{:src => '#'}
@@ -1,12 +1,15 @@
1
1
  require 'carrierwave-aws'
2
2
  require 'delayed_job_active_record'
3
- require 'migrant' # Required for rspec to run properly
4
3
  require 'jquery-fileupload-rails'
5
4
  require 'haml-rails'
6
5
  require 'effective_assets/engine'
7
6
  require 'effective_assets/version'
8
7
 
9
8
  module EffectiveAssets
9
+ AWS_PUBLIC = 'public-read'
10
+ AWS_PRIVATE = 'authenticated-read'
11
+ IFRAME_UPLOADS = 'effective_iframe_uploads'
12
+
10
13
  # The following are all valid config keys
11
14
  mattr_accessor :assets_table_name
12
15
  mattr_accessor :attachments_table_name
@@ -49,7 +52,7 @@ module EffectiveAssets
49
52
  CarrierWave.configure do |config|
50
53
  config.storage = :aws
51
54
  config.aws_bucket = EffectiveAssets.aws_bucket
52
- config.aws_acl = EffectiveAssets.aws_acl.presence || 'public-read'
55
+ config.aws_acl = EffectiveAssets.aws_acl.presence || EffectiveAssets::AWS_PUBLIC
53
56
  config.cache_dir = "#{Rails.root}/tmp/uploads" # For heroku
54
57
 
55
58
  config.aws_credentials = {
@@ -1,3 +1,3 @@
1
1
  module EffectiveAssets
2
- VERSION = '1.6.2'.freeze
2
+ VERSION = '1.6.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-22 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,20 +108,6 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: migrant
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: mini_magick
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -197,8 +183,8 @@ files:
197
183
  - app/models/effective/asset.rb
198
184
  - app/models/effective/attachment.rb
199
185
  - app/models/effective/delayed_job.rb
186
+ - app/models/effective/iframe_uploads.rb
200
187
  - app/models/effective/snippets/effective_asset.rb
201
- - app/models/effective/user_uploads.rb
202
188
  - app/models/inputs/asset_box.rb
203
189
  - app/models/inputs/asset_box_form_input.rb
204
190
  - app/models/inputs/asset_box_formtastic_input.rb
@@ -217,7 +203,7 @@ files:
217
203
  - app/views/asset_box_input/_dialog.html.haml
218
204
  - app/views/asset_box_input/_progress_bar_template.html.haml
219
205
  - app/views/asset_box_input/_uploader.html.haml
220
- - app/views/assets/_video.html.erb
206
+ - app/views/effective/assets/_video.html.erb
221
207
  - app/views/effective/assets/iframe.html.haml
222
208
  - app/views/effective/snippets/_effective_asset.html.haml
223
209
  - config/routes.rb