effective_assets 1.9.0 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4203bea664bf1bdd6bb31fb866375a10a186b51b
4
- data.tar.gz: 0d8792dd7b61066eb0e13d671d8c591c98052a0e
3
+ metadata.gz: 366a2e6fe96f2009b7a8b5fde08d6c3bcb0ab73c
4
+ data.tar.gz: e4a72c773c655f15c672fce235e20858ee9343d0
5
5
  SHA512:
6
- metadata.gz: 8b36113a751f8240e1929663e61e9f91128f336746d3848002c9fd84c5fb6425f19dd74fafa3513089ed70dd96b169dc801579fdf8ba8ef4102abb96ad49d623
7
- data.tar.gz: e49cb21cfc006dc6116098d85a64cedabf170ab0780a9753862f3f1770b4953ac0d8599ca4bc645a0cc3d15557ce8126be95e82be9ca41a83d4c4ea5e8e0329e
6
+ metadata.gz: 95e1c356d67092ef2c5cd95cebc822e2d9809e38d2683885d9d35959abd6bbc951a0fd8509d2a5f1ca95db3f6c56f8575f4378a36c9bcb1e462997c657ac211f
7
+ data.tar.gz: 7e0fb528bc1c149f315a4048268fe9c2634ae518bab0580baf2d2a38c712c73d6e2cc35a9afa59308c74705a1ecd221537d735502fa208ed1d753716cc15e362
@@ -0,0 +1,15 @@
1
+ initialize = ->
2
+ $('div.asset-box-uploader:not(.initialized)').each (i, element) ->
3
+ element = $(element)
4
+ options = element.data('input-js-options') || {}
5
+
6
+ options['progress_bar_target'] = $(element).siblings('.uploads').first()
7
+ options['progress_bar_template'] = $(element).children("script[type='text/x-tmpl']").first()
8
+ options['dropZone'] = $(element).parent()
9
+
10
+ element.addClass('initialized').S3Uploader(options)
11
+
12
+ $ -> initialize()
13
+ $(document).on 'page:change', -> initialize()
14
+ $(document).on 'turbolinks:load', -> initialize()
15
+ $(document).on 'cocoon:after-insert', -> initialize()
@@ -35,6 +35,12 @@
35
35
  }
36
36
  }
37
37
 
38
+ .fileinput-button.disabled {
39
+ input {
40
+ cursor: not-allowed;
41
+ }
42
+ }
43
+
38
44
  // Display uploader bordered area
39
45
  .drop-files {
40
46
  border: 4px dashed #cfcfcf;
@@ -14,14 +14,14 @@ module Effective
14
14
 
15
15
  def create
16
16
  # Here we initialize an empty placeholder Asset, so we can reserve the ID
17
- @asset = Effective::Asset.new(:user_id => ((current_user.try(:id) || 1) rescue 1), :upload_file => 'placeholder')
17
+ @asset = Effective::Asset.new(user_id: ((current_user.try(:id) || 1) rescue 1), upload_file: 'placeholder')
18
18
  @asset.extra = params[:extra] if params[:extra].kind_of?(Hash)
19
19
 
20
20
  EffectiveAssets.authorized?(self, :create, @asset)
21
21
 
22
22
  begin
23
23
  @asset.save!
24
- render(:body => {:id => @asset.id, :s3_key => asset_s3_key(@asset)}.to_json, :status => 200)
24
+ render(body: {:id => @asset.id, :s3_key => asset_s3_key(@asset)}.to_json, :status => 200)
25
25
  rescue => e
26
26
  render(:body => e.message, :status => 500)
27
27
  end
@@ -30,7 +30,7 @@ module Effective
30
30
  def update
31
31
  @asset = Effective::Asset.find(params[:id])
32
32
 
33
- EffectiveAssets.authorized?(self, :update, @asset)
33
+ EffectiveAssets.authorized?(self, :create, @asset)
34
34
 
35
35
  unless params[:skip_update] # This is useful for the acts_as_asset_box Attach action
36
36
  if update_placeholder_asset(@asset, params) == false
@@ -2,12 +2,19 @@ module EffectiveAssetsS3Helper
2
2
 
3
3
  def s3_uploader_fields(options = {})
4
4
  S3Uploader.new(options).fields.map do |name, value|
5
- hidden_field_tag(name, value, :disabled => 'disabled')
5
+ hidden_field_tag(name, value, disabled: 'disabled')
6
6
  end.join.html_safe
7
7
  end
8
8
 
9
- def s3_uploader_url
10
- Effective::Asset.s3_base_path.chomp('/') + '/'
9
+ def s3_uploader_input_js_options(options = {})
10
+ {
11
+ url: (Effective::Asset.s3_base_path.chomp('/') + '/'),
12
+ remove_completed_progress_bar: true,
13
+ allow_multiple_files: (options[:limit].to_i > 1),
14
+ file_types: Array(options[:file_types]).flatten.join('|').to_s,
15
+ create_asset_url: effective_assets.s3_uploads_url,
16
+ update_asset_url: "#{effective_assets.s3_uploads_url}/:id",
17
+ }.to_json()
11
18
  end
12
19
 
13
20
  # Copied and modified from https://github.com/waynehoover/s3_direct_upload/blob/master/lib/s3_direct_upload/form_helper.rb
@@ -1,6 +1,6 @@
1
1
  module Inputs
2
2
  class AssetBox
3
- delegate :content_tag, :render, :to => :@template
3
+ delegate :content_tag, :render, :current_user, :to => :@template
4
4
 
5
5
  def initialize(object, object_name, template, method, opts)
6
6
  @object = object
@@ -85,6 +85,14 @@ module Inputs
85
85
  end
86
86
 
87
87
  def uploader_html
88
+ # Check that we have permission to upload.
89
+ asset = Effective::Asset.new(user_id: ((current_user.try(:id) || 1) rescue 1), upload_file: 'placeholder')
90
+
91
+ unless (EffectiveAssets.authorized?(@template.controller, :create, asset) rescue false)
92
+ @options[:btn_title] = 'Unable to upload. (cannot :create Effective::Asset)'
93
+ @options[:disabled] = true
94
+ end
95
+
88
96
  render(
89
97
  :partial => 'asset_box_input/uploader',
90
98
  :locals => {
@@ -97,7 +105,8 @@ module Inputs
97
105
  :drop_files => @options[:uploader_drop_files],
98
106
  :drop_files_help_text => @options[:drop_files_help_text],
99
107
  :aws_acl => @options[:aws_acl],
100
- :btn_label => @options[:btn_label]
108
+ :btn_label => @options[:btn_label],
109
+ :btn_title => @options[:btn_title]
101
110
  }
102
111
  ).html_safe
103
112
  end
@@ -158,7 +167,8 @@ module Inputs
158
167
  :dialog_url => @template.effective_assets.effective_assets_path,
159
168
  :disabled => false,
160
169
  :file_types => [:any],
161
- :btn_label => "Upload..."
170
+ :btn_label => 'Upload...',
171
+ :btn_title => 'Click or drag & drop to upload a file'
162
172
  }.merge(opts).tap do |options|
163
173
  options[:method] = method.to_s
164
174
  options[:box] = method.to_s.pluralize
@@ -52,7 +52,7 @@ class EffectiveAssetsUploader < CarrierWave::Uploader::Base
52
52
  end
53
53
 
54
54
  def image?(new_file)
55
- new_file.present? and new_file.content_type.to_s.include?('image') and !(new_file.content_type.include?('icon'))
55
+ new_file.present? && (new_file.uploader.model.image? rescue false)
56
56
  end
57
57
 
58
58
  def calculate_versions_info
@@ -1,8 +1,8 @@
1
- %script{:type => 'text/x-tmpl'}
1
+ %script{type: 'text/x-tmpl'}
2
2
  .upload
3
3
  = "{%=o.name%}"
4
4
  .progress
5
5
  %span
6
- = image_tag('effective_assets/spinner.gif', :class => 'spinner')
6
+ = image_tag('effective_assets/spinner.gif', class: 'spinner')
7
7
  Uploading...
8
- .bar{:style => 'width: 0%'}
8
+ .bar{style: 'width: 0%'}
@@ -1,37 +1,22 @@
1
1
  .uploads
2
- .asset-box-uploader{:id => "s3_#{uid}", :class => ('drop-files' if drop_files) }
3
- = s3_uploader_fields(:aws_acl => aws_acl)
2
+ .asset-box-uploader{id: "s3_#{uid}", class: ('drop-files' if drop_files), 'data-input-js-options': s3_uploader_input_js_options(limit: limit, file_types: file_types) }
3
+ = s3_uploader_fields(aws_acl: aws_acl)
4
4
 
5
5
  - if drop_files
6
6
  %p= drop_files_help_text
7
7
 
8
- %span.btn.btn-default.fileinput-button
8
+ %span.btn.btn-default.fileinput-button{class: ('disabled' if disabled)}
9
9
  %i.glyphicon.glyphicon-upload
10
10
  %span= btn_label
11
11
  - if limit > 1
12
12
  - if required
13
- %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, multiple: 'multiple', disabled: disabled, required: true}
13
+ %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, multiple: 'multiple', disabled: disabled, required: true, title: btn_title}
14
14
  - else
15
- %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, multiple: 'multiple', disabled: disabled}
15
+ %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, multiple: 'multiple', disabled: disabled, title: btn_title}
16
16
  - else
17
17
  - if required
18
- %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, disabled: disabled, required: true}
18
+ %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, disabled: disabled, required: true, title: btn_title}
19
19
  - else
20
- %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, disabled: disabled}
20
+ %input.asset-box-uploader-fileinput{type: 'file', name: 'file', id: uid, disabled: disabled, title: btn_title}
21
21
 
22
- = render :partial => progress_bar_partial
23
-
24
- %script{:type => 'text/javascript'}
25
- :erb
26
-
27
- $("#s3_<%= uid %>").S3Uploader({
28
- url: '<%= s3_uploader_url %>',
29
- progress_bar_target: $("#s3_<%= uid %>").siblings('.uploads').first(),
30
- progress_bar_template: $("#s3_<%= uid %>").children("script[type='text/x-tmpl']").first(),
31
- remove_completed_progress_bar: true,
32
- allow_multiple_files: <%= limit > 1 %>,
33
- file_types: '<%= [file_types].flatten.join('|').to_s %>',
34
- create_asset_url: '<%= effective_assets.s3_uploads_url %>',
35
- update_asset_url: '<%= effective_assets.s3_uploads_url %>/:id',
36
- dropZone: $("#s3_<%= uid %>").parent()
37
- });
22
+ = render partial: progress_bar_partial
@@ -1,3 +1,3 @@
1
1
  module EffectiveAssets
2
- VERSION = '1.9.0'.freeze
2
+ VERSION = '1.9.1'.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.9.0
4
+ version: 1.9.1
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: 2017-01-06 00:00:00.000000000 Z
11
+ date: 2017-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -162,6 +162,7 @@ files:
162
162
  - app/assets/javascripts/effective_assets/asset_box_dialog.js.coffee
163
163
  - app/assets/javascripts/effective_assets/asset_box_drag_and_drop.js.coffee
164
164
  - app/assets/javascripts/effective_assets/asset_box_filtering.js.coffee
165
+ - app/assets/javascripts/effective_assets/asset_box_initialize.js.coffee
165
166
  - app/assets/javascripts/effective_assets/asset_box_sorting.js.coffee
166
167
  - app/assets/javascripts/effective_assets/cocoon.js.coffee
167
168
  - app/assets/javascripts/effective_assets/jquery_ui_sortable.js