el_finder 1.1.0 → 1.1.1

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.
@@ -18,7 +18,7 @@ module ElFinder
18
18
  DEFAULT_OPTIONS = {
19
19
  :mime_handler => ElFinder::MimeType,
20
20
  :image_handler => ElFinder::Image,
21
- :original_filename_method => lambda { |file| file.original_filename },
21
+ :original_filename_method => lambda { |file| file.original_filename.force_encoding('utf-8') },
22
22
  :disabled_commands => [],
23
23
  :allow_dot_files => true,
24
24
  :upload_max_size => '50M',
@@ -236,15 +236,19 @@ module ElFinder
236
236
  @response[:error] = 'Access Denied'
237
237
  return
238
238
  end
239
-
240
239
  select = []
241
240
  @params[:upload].to_a.each do |file|
242
- dst = @current + @options[:original_filename_method].call(file)
243
- FileUtils.mv(file.path, dst.fullpath)
244
- FileUtils.chmod @options[:upload_file_mode], dst
245
- select << to_hash(dst)
241
+ if upload_max_size_in_bytes > 0 && file.size > upload_max_size_in_bytes
242
+ @response[:error] ||= "Some files were not uploaded"
243
+ @response[:errorData][@options[:original_filename_method].call(file)] = 'File exceeds the maximum allowed filesize'
244
+ else
245
+ dst = @current + @options[:original_filename_method].call(file)
246
+ FileUtils.mv(file.path, dst.fullpath)
247
+ FileUtils.chmod @options[:upload_file_mode], dst
248
+ select << to_hash(dst)
249
+ end
246
250
  end
247
- @response[:select] = select
251
+ @response[:select] = select unless select.empty?
248
252
  _open(@current)
249
253
  end # of upload
250
254
 
@@ -421,6 +425,24 @@ module ElFinder
421
425
  ################################################################################
422
426
  private
423
427
 
428
+ #
429
+ def upload_max_size_in_bytes
430
+ bytes = @options[:upload_max_size]
431
+ if bytes.is_a?(String) && bytes.strip =~ /(\d+)([KMG]?)/
432
+ bytes = $1.to_i
433
+ unit = $2
434
+ case unit
435
+ when 'K'
436
+ bytes *= 1024
437
+ when 'M'
438
+ bytes *= 1024 * 1024
439
+ when 'G'
440
+ bytes *= 1024 * 1024 * 1024
441
+ end
442
+ end
443
+ bytes.to_i
444
+ end
445
+
424
446
  #
425
447
  def thumbnail_for(pathname)
426
448
  @thumb_directory + "#{to_hash(pathname)}.png"
@@ -1,5 +1,5 @@
1
1
  # Represents ElFinder namespace.
2
2
  module ElFinder
3
3
  # Gem version.
4
- VERSION = '1.1.0'
4
+ VERSION = '1.1.1'
5
5
  end
@@ -141,6 +141,19 @@ class TestElFinder < Test::Unit::TestCase
141
141
  assert_not_nil r[:select]
142
142
  end
143
143
 
144
+ def test_upload_too_big
145
+ @elfinder.options = {:upload_max_size => 5}
146
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
147
+ uploads = []
148
+ uploads << File.open(File.join(@vroot, 'foo/philip.txt'))
149
+ uploads << File.open(File.join(@vroot, 'foo/sam.txt'))
150
+ h, r = @elfinder.run(:cmd => 'upload', :upload => uploads, :current => r[:cwd][:hash])
151
+ assert !File.exist?(File.join(@vroot, 'philip.txt'))
152
+ assert File.exist?(File.join(@vroot, 'sam.txt'))
153
+ assert_not_nil r[:select]
154
+ assert_match(/some files were not uploaded/i, r[:error])
155
+ end
156
+
144
157
  def test_ping
145
158
  h, r = @elfinder.run(:cmd => 'ping')
146
159
  assert r.empty?
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+ require 'el_finder_test_case'
3
+
4
+ class TestElFinder < Test::Unit::TestCase
5
+
6
+ include ElFinderTestCase
7
+
8
+ ################################################################################
9
+
10
+ def test_to_hash_method
11
+ @elfinder.options = {} # default is '50M'
12
+ assert_equal (50 * 1024 * 1024), @elfinder.send(:upload_max_size_in_bytes)
13
+ end
14
+
15
+ def test_from_hash_method
16
+ @elfinder.options = {
17
+ :upload_max_size => 1
18
+ }
19
+ assert_equal 1, @elfinder.send(:upload_max_size_in_bytes)
20
+ end
21
+
22
+ def test_from_hash_method
23
+ @elfinder.options = {
24
+ :upload_max_size => '1'
25
+ }
26
+ assert_equal 1, @elfinder.send(:upload_max_size_in_bytes)
27
+ end
28
+
29
+ def test_from_hash_method
30
+ @elfinder.options = {
31
+ :upload_max_size => '1K'
32
+ }
33
+ assert_equal 1024, @elfinder.send(:upload_max_size_in_bytes)
34
+ end
35
+
36
+ def test_from_hash_method
37
+ @elfinder.options = {
38
+ :upload_max_size => '1G'
39
+ }
40
+ assert_equal 1073741824, @elfinder.send(:upload_max_size_in_bytes)
41
+ end
42
+
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: el_finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-15 00:00:00.000000000 Z
12
+ date: 2012-11-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: image_size
@@ -100,6 +100,7 @@ files:
100
100
  - test/test_el_finder_archivers.rb
101
101
  - test/test_el_finder_extractors.rb
102
102
  - test/test_el_finder_hash.rb
103
+ - test/test_el_finder_options.rb
103
104
  - test/test_el_finder_permissions.rb
104
105
  - test/test_el_finder_symlink.rb
105
106
  - test/test_el_finder_thumbs.rb
@@ -146,6 +147,7 @@ test_files:
146
147
  - test/test_el_finder_archivers.rb
147
148
  - test/test_el_finder_extractors.rb
148
149
  - test/test_el_finder_hash.rb
150
+ - test/test_el_finder_options.rb
149
151
  - test/test_el_finder_permissions.rb
150
152
  - test/test_el_finder_symlink.rb
151
153
  - test/test_el_finder_thumbs.rb