el_finder 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -7,10 +7,6 @@
7
7
  Ruby library to provide server side functionality for elFinder. elFinder is an
8
8
  open-source file manager for web, written in JavaScript using jQuery UI.
9
9
 
10
- == Features/Problems:
11
-
12
- * Does not yet support thumbnail generation.
13
-
14
10
  == Todo:
15
11
 
16
12
  * Document library.
@@ -18,7 +14,7 @@ open-source file manager for web, written in JavaScript using jQuery UI.
18
14
 
19
15
  == Requirements:
20
16
 
21
- The gem, by default, relies upon the 'image_size' ruby gem and ImageMagick's 'mogrify' command.
17
+ The gem, by default, relies upon the 'image_size' ruby gem and ImageMagick's 'mogrify' and 'convert' commands.
22
18
  These requirements can be changed by implementing custom methods for determining image size
23
19
  and resizing of an image.
24
20
 
data/el_finder.gemspec CHANGED
@@ -20,5 +20,6 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency('image_size', '>= 1.0.0')
23
+ s.requirements << 'ImageMagick'
23
24
 
24
25
  end
@@ -1,3 +1,7 @@
1
+ #
2
+ # http://elrte.org/redmine/projects/elfinder/wiki/Client-Server_Protocol_EN
3
+ #
4
+
1
5
  require 'base64'
2
6
 
3
7
  module ElFinder
@@ -7,8 +11,7 @@ module ElFinder
7
11
 
8
12
  DEFAULT_OPTIONS = {
9
13
  :mime_handler => ElFinder::MimeType,
10
- :image_size_handler => ElFinder::ImageSize,
11
- :image_resize_handler => ElFinder::ImageResize,
14
+ :image_handler => ElFinder::Image,
12
15
  :original_filename_method => lambda {|file| file.original_filename},
13
16
  :disabled_commands => [],
14
17
  :show_dot_files => true,
@@ -17,7 +20,11 @@ module ElFinder
17
20
  :extractors => {},
18
21
  :home => 'Home',
19
22
  :default_perms => {:read => true, :write => true, :rm => true},
20
- :perms => []
23
+ :perms => [],
24
+ :thumbs => false,
25
+ :thumbs_directory => '.thumbs',
26
+ :thumbs_size => 48,
27
+ :thumbs_at_once => 5,
21
28
  }
22
29
 
23
30
  #
@@ -27,8 +34,7 @@ module ElFinder
27
34
  raise(RuntimeError, "Missing required :url option") unless @options.key?(:url)
28
35
  raise(RuntimeError, "Missing required :root option") unless @options.key?(:root)
29
36
  raise(RuntimeError, "Mime Handler is invalid") unless mime_handler.respond_to?(:for)
30
- raise(RuntimeError, "Image Size Handler is invalid") unless image_size_handler.nil? || image_size_handler.respond_to?(:for)
31
- raise(RuntimeError, "Image Resize Handler is invalid") unless image_resize_handler.nil? || image_resize_handler.respond_to?(:resize)
37
+ raise(RuntimeError, "Image Handler is invalid") unless image_handler.nil? || ([:size, :resize, :thumbnail].all?{|m| image_handler.respond_to?(m)})
32
38
 
33
39
  @root = ElFinder::Pathname.new(options[:root])
34
40
 
@@ -39,18 +45,24 @@ module ElFinder
39
45
  #
40
46
  def run(params = {})
41
47
  @params = params.dup
48
+ @headers = {}
49
+ @response = {}
42
50
  @response[:errorData] = {}
43
51
 
44
52
  if VALID_COMMANDS.include?(@params[:cmd])
45
53
 
54
+ if @options[:thumbs]
55
+ @thumb_directory = @root + @options[:thumbs_directory]
56
+ @thumb_directory.mkdir unless @thumb_directory.exist?
57
+ raise(RuntimeError, "Unable to create thumbs directory") unless @thumb_directory.directory?
58
+ end
59
+
46
60
  @current = @params[:current] ? from_hash(@params[:current]) : nil
47
61
  @target = @params[:target] ? from_hash(@params[:target]) : nil
48
62
  if params[:targets]
49
63
  @targets = @params[:targets].map{|t| from_hash(t)}
50
64
  end
51
65
 
52
-
53
-
54
66
  send("_#{@params[:cmd]}")
55
67
  else
56
68
  invalid_request
@@ -99,7 +111,7 @@ module ElFinder
99
111
  command_not_implemented
100
112
  elsif target.directory?
101
113
  @response[:cwd] = cwd_for(target)
102
- @response[:cdc] = target.children.map{|e| cdc_for(e)}
114
+ @response[:cdc] = target.children.map{|e| cdc_for(e)}.compact
103
115
 
104
116
  if @params[:tree]
105
117
  @response[:tree] = {
@@ -120,8 +132,6 @@ module ElFinder
120
132
  }
121
133
  end
122
134
 
123
- # FIXME - add 'tmb:true' when necessary
124
-
125
135
  else
126
136
  @response[:error] = "Directory does not exist"
127
137
  _open(@root)
@@ -334,18 +344,33 @@ module ElFinder
334
344
 
335
345
  #
336
346
  def _tmb
337
- command_not_implemented
347
+ if image_handler.nil?
348
+ command_not_implemented
349
+ else
350
+ @response[:current] = to_hash(@current)
351
+ @response[:images] = {}
352
+ @current.children.select{|e| mime_handler.for(e) =~ /image/}.each_with_index do |img, idx|
353
+ if idx >= @options[:thumbs_at_once]
354
+ @response[:tmb] = true
355
+ break
356
+ end
357
+ thumbnail = thumbnail_for(img)
358
+ image_handler.thumbnail(img, thumbnail, :width => @options[:thumbs_size].to_i, :height => @options[:thumbs_size].to_i)
359
+ @response[:images][to_hash(img)] = @options[:url] + '/' + thumbnail.path.to_s
360
+ end
361
+ end
362
+
338
363
  end # of tmb
339
364
 
340
365
  #
341
366
  def _resize
342
- if image_resize_handler.nil?
367
+ if image_handler.nil?
343
368
  command_not_implemented
344
369
  else
345
370
  if @target.file?
346
371
  perms = perms_for(@target)
347
372
  if perms[:read] == true && perms[:write] == true
348
- image_resize_handler.resize(@target, :width => @params[:width].to_i, :height => @params[:height].to_i)
373
+ image_handler.resize(@target, :width => @params[:width].to_i, :height => @params[:height].to_i)
349
374
  @response[:select] = [to_hash(@target)]
350
375
  _open(@current)
351
376
  else
@@ -360,6 +385,11 @@ module ElFinder
360
385
  ################################################################################
361
386
  private
362
387
 
388
+ #
389
+ def thumbnail_for(pathname)
390
+ @thumb_directory + "#{to_hash(pathname)}.png"
391
+ end
392
+
363
393
  #
364
394
  def remove_target(target)
365
395
  if target.directory?
@@ -373,6 +403,9 @@ module ElFinder
373
403
  else
374
404
  begin
375
405
  target.unlink
406
+ if (thumbnail = thumbnail_for(target)).file?
407
+ thumbnail.unlink
408
+ end
376
409
  rescue
377
410
  @response[:error] ||= 'Some files/directories were unable to be removed'
378
411
  @response[:errorData][target.basename.to_s] = "Remove failed"
@@ -386,13 +419,8 @@ module ElFinder
386
419
  end
387
420
 
388
421
  #
389
- def image_size_handler
390
- @options[:image_size_handler]
391
- end
392
-
393
- #
394
- def image_resize_handler
395
- @options[:image_resize_handler]
422
+ def image_handler
423
+ @options[:image_handler]
396
424
  end
397
425
 
398
426
  #
@@ -408,6 +436,7 @@ module ElFinder
408
436
  end
409
437
 
410
438
  def cdc_for(pathname)
439
+ return nil if @options[:thumbs] && pathname.to_s == @thumb_directory.to_s
411
440
  response = {
412
441
  :name => pathname.basename.to_s,
413
442
  :hash => to_hash(pathname),
@@ -427,10 +456,11 @@ module ElFinder
427
456
  :url => (@options[:url] + '/' + pathname.path.to_s)
428
457
  )
429
458
 
430
- if pathname.readable? && response[:mime] =~ /image/ && !image_size_handler.nil? && !image_resize_handler.nil?
459
+ if pathname.readable? && response[:mime] =~ /image/ && !image_handler.nil?
460
+ @response[:tmb] = true if @options[:thumbs] && !thumbnail_for(pathname).exist?
431
461
  response.merge!(
432
462
  :resize => true,
433
- :dim => image_size_handler.for(pathname)
463
+ :dim => image_handler.size(pathname)
434
464
  )
435
465
  end
436
466
 
@@ -449,11 +479,15 @@ module ElFinder
449
479
 
450
480
  #
451
481
  def tree_for(root)
452
- root.children.select{ |child| child.directory? }.sort_by{|e| e.basename.to_s.downcase}.map { |child|
453
- {:name => child.basename.to_s,
454
- :hash => to_hash(child),
455
- :dirs => tree_for(child),
456
- }.merge(perms_for(child))
482
+ root.children.
483
+ select{ |child| child.directory? }.
484
+ reject{ |child| child.to_s == @thumb_directory.to_s }.
485
+ sort_by{|e| e.basename.to_s.downcase}.
486
+ map { |child|
487
+ {:name => child.basename.to_s,
488
+ :hash => to_hash(child),
489
+ :dirs => tree_for(child),
490
+ }.merge(perms_for(child))
457
491
  }
458
492
  end # of tree_for
459
493
 
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'shellwords'
3
+ require 'image_size'
4
+
5
+ module ElFinder
6
+
7
+ class Image
8
+
9
+ def self.size(pathname)
10
+ return nil unless File.exist?(pathname)
11
+ s = ::ImageSize.new(File.open(pathname)).size.to_s
12
+ s = nil if s.empty?
13
+ return s
14
+ end
15
+
16
+ def self.resize(pathname, options = {})
17
+ return nil unless File.exist?(pathname)
18
+ system( ::Shellwords.join(['mogrify', '-resize', "#{options[:width]}x#{options[:height]}!", pathname.to_s]) )
19
+ end # of self.resize
20
+
21
+ def self.thumbnail(src, dst, options = {})
22
+ return nil unless File.exist?(src)
23
+ system( ::Shellwords.join(['convert', '-resize', "#{options[:width]}x#{options[:height]}!", src.to_s, dst.to_s]) )
24
+ end # of self.resize
25
+
26
+ end # of class Image
27
+
28
+ end # of module ElFinder
@@ -1,3 +1,3 @@
1
1
  module ElFinder
2
- VERSION = '1.0.7'
2
+ VERSION = '1.0.8'
3
3
  end
data/lib/el_finder.rb CHANGED
@@ -2,6 +2,5 @@ require 'fileutils'
2
2
 
3
3
  require 'el_finder/pathname'
4
4
  require 'el_finder/mime_type'
5
- require 'el_finder/image_size'
6
- require 'el_finder/image_resize'
5
+ require 'el_finder/image'
7
6
  require 'el_finder/connector'
@@ -0,0 +1,23 @@
1
+ require "test/unit"
2
+ require "el_finder"
3
+
4
+ class TestImage < Test::Unit::TestCase
5
+
6
+ def test_that_method_exists
7
+ assert_respond_to ElFinder::Image, :size
8
+ end
9
+
10
+ def test_that_logos_are_correct_size
11
+ assert_equal '70x66', ElFinder::Image.size( File.join(File.dirname(__FILE__), '../files/elfinder.png') )
12
+ assert_equal '100x100', ElFinder::Image.size( File.join(File.dirname(__FILE__), '../files/pjkh.png') )
13
+ end
14
+
15
+ def test_that_nil_is_returned_on_non_images
16
+ assert_equal nil, ElFinder::Image.size( File.join(File.dirname(__FILE__), '../files/README.txt') )
17
+ end
18
+
19
+ def test_that_nil_is_returned_on_nonexistint_files
20
+ assert_equal nil, ElFinder::Image.size( File.join(File.dirname(__FILE__), '../files/NON_EXIST') )
21
+ end
22
+
23
+ end
@@ -193,8 +193,8 @@ class TestElFinder < Test::Unit::TestCase
193
193
 
194
194
  def test_rm
195
195
  h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
196
- h, r = @elfinder.run(:cmd => 'rm', :current => r[:cwd][:hash], :targets => [])
197
- assert_match(/no files/i, r[:error])
196
+ h, r1 = @elfinder.run(:cmd => 'rm', :current => r[:cwd][:hash], :targets => [])
197
+ assert_match(/no files/i, r1[:error])
198
198
 
199
199
  h, r = @elfinder.run(:cmd => 'rm', :targets => r[:cdc].reject{|e| e[:mime] =~ /image/}.map{|e| e[:hash]})
200
200
  assert !File.exist?(File.join(@vroot, 'README.txt'))
@@ -234,7 +234,7 @@ class TestElFinder < Test::Unit::TestCase
234
234
  file = r[:cdc].find{|e| e[:name] == 'pjkh.png'}
235
235
  h, r = @elfinder.run(:cmd => 'resize', :target => file[:hash], :current => r[:cwd][:hash], :width => '50', :height => '25')
236
236
  assert File.exist?(File.join(@vroot, 'pjkh.png'))
237
- assert_equal '50x25', ElFinder::ImageSize.for(File.join(@vroot, 'pjkh.png')).to_s
237
+ assert_equal '50x25', ElFinder::Image.size(File.join(@vroot, 'pjkh.png')).to_s
238
238
  end
239
239
 
240
240
  ################################################################################
@@ -341,7 +341,7 @@ class TestElFinder < Test::Unit::TestCase
341
341
  h, r = @elfinder.run(:cmd => 'resize', :target => file[:hash], :current => r[:cwd][:hash], :width => '50', :height => '25')
342
342
  assert_match(/access denied/i, r[:error])
343
343
  assert File.exist?(File.join(@vroot, 'pjkh.png'))
344
- assert_equal '100x100', ElFinder::ImageSize.for(File.join(@vroot, 'pjkh.png')).to_s
344
+ assert_equal '100x100', ElFinder::Image.size(File.join(@vroot, 'pjkh.png')).to_s
345
345
  end
346
346
 
347
347
  def test_resize_permissions_read
@@ -355,7 +355,7 @@ class TestElFinder < Test::Unit::TestCase
355
355
  h, r = @elfinder.run(:cmd => 'resize', :target => file[:hash], :current => r[:cwd][:hash], :width => '50', :height => '25')
356
356
  assert_match(/access denied/i, r[:error])
357
357
  assert File.exist?(File.join(@vroot, 'pjkh.png'))
358
- assert_equal '100x100', ElFinder::ImageSize.for(File.join(@vroot, 'pjkh.png')).to_s
358
+ assert_equal '100x100', ElFinder::Image.size(File.join(@vroot, 'pjkh.png')).to_s
359
359
  end
360
360
 
361
361
 
@@ -0,0 +1,115 @@
1
+ require 'el_finder_test_case'
2
+
3
+ class TestElFinderThumbs < Test::Unit::TestCase
4
+
5
+ include ElFinderTestCase
6
+
7
+ ################################################################################
8
+
9
+ def test_tmb_is_false_by_default
10
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
11
+ assert_equal nil, r[:tmb]
12
+ end
13
+
14
+ def test_thumbs_directory_does_not_show_in_output
15
+ @elfinder.options = { :thumbs => true, :thumbs_directory => '.thumbs' }
16
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
17
+ target = r[:cdc].find{|e| e[:name] == '.thumbs'}
18
+ assert_equal true, target.nil?
19
+ end
20
+
21
+ def test_thumbs_directory_exists
22
+ @elfinder.options = { :thumbs => true, :thumbs_directory => '.thumbs' }
23
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
24
+ assert File.directory?(File.join(@vroot, '.thumbs'))
25
+ end
26
+
27
+ def test_thumbs_directory_cannot_be_created
28
+ FileUtils.touch(File.join(@vroot, '.thumbs'))
29
+ @elfinder.options = { :thumbs => true, :thumbs_directory => '.thumbs' }
30
+ assert_raise RuntimeError do
31
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
32
+ end
33
+ end
34
+
35
+ #
36
+ # In the root there are a two images: elfinder.png, pjkh.png
37
+ #
38
+
39
+ def test_tmb_is_true_when_thumbs_enabled_and_images_exist_without_thumbnail
40
+ @elfinder.options = { :thumbs => true }
41
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
42
+ assert_equal true, r[:tmb]
43
+ end
44
+
45
+ def test_tmb_is_false_when_thumbs_enabled_and_images_exist_with_thumbnail
46
+ @elfinder.options = { :thumbs => true }
47
+ Dir.mkdir(File.join(@vroot, '.thumbs'))
48
+ FileUtils.touch(File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))}.png"))
49
+ FileUtils.touch(File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'pjkh.png'))}.png"))
50
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
51
+ assert_equal nil, r[:tmb]
52
+ end
53
+
54
+ def test_thumbs_are_created_when_requested
55
+ @elfinder.options = { :thumbs => true }
56
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
57
+ h, r = @elfinder.run(:cmd => 'tmb', :current => '')
58
+ assert File.exist?(File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))}.png"))
59
+ assert File.exist?(File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'pjkh.png'))}.png"))
60
+ end
61
+
62
+ def test_thumbs_of_non_images_are_not_created
63
+ @elfinder.options = { :thumbs => true }
64
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
65
+ h, r = @elfinder.run(:cmd => 'tmb', :current => '')
66
+ assert !File.exist?(File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'README.txt'))}.png"))
67
+ end
68
+
69
+ def test_tmb_response
70
+ @elfinder.options = { :thumbs => true }
71
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
72
+ h, r = @elfinder.run(:cmd => 'tmb', :current => '')
73
+
74
+ elfinder_hash = @elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))
75
+ pjkh_hash = @elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))
76
+
77
+ assert_equal 2, r[:images].size
78
+ assert_equal "/elfinder/.thumbs/#{elfinder_hash}.png", r[:images][elfinder_hash]
79
+ assert_equal "/elfinder/.thumbs/#{pjkh_hash}.png", r[:images][pjkh_hash]
80
+ end
81
+
82
+ def test_tmb_more_to_be_created
83
+ @elfinder.options = { :thumbs => true, :thumbs_at_once => 1 }
84
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
85
+ h, r = @elfinder.run(:cmd => 'tmb', :current => '')
86
+
87
+ elfinder_hash = @elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))
88
+ pjkh_hash = @elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))
89
+
90
+ assert_equal true, r[:tmb]
91
+ assert_equal 1, r[:images].size
92
+ end
93
+
94
+ def test_thumbnail_removed_when_image_removed
95
+ @elfinder.options = { :thumbs => true }
96
+ pjkh_thumb = File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))}.png")
97
+ elfinder_thumb = File.join(@vroot, '.thumbs', "#{@elfinder.to_hash(ElFinder::Pathname.new(@vroot, 'elfinder.png'))}.png")
98
+ Dir.mkdir(File.join(@vroot, '.thumbs'))
99
+ FileUtils.touch pjkh_thumb
100
+ FileUtils.touch elfinder_thumb
101
+
102
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
103
+ h, r = @elfinder.run(:cmd => 'rm', :targets => r[:cdc].select{|e| e[:mime] =~ /image/}.map{|e| e[:hash]})
104
+
105
+ assert !File.exist?(pjkh_thumb)
106
+ assert !File.exist?(elfinder_thumb)
107
+
108
+ end
109
+
110
+
111
+
112
+ ################################################################################
113
+
114
+
115
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: el_finder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 7
10
- version: 1.0.7
9
+ - 8
10
+ version: 1.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Philip Hallstrom
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-12 00:00:00 -08:00
18
+ date: 2011-01-14 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -52,12 +52,11 @@ files:
52
52
  - el_finder.gemspec
53
53
  - lib/el_finder.rb
54
54
  - lib/el_finder/connector.rb
55
- - lib/el_finder/image_resize.rb
56
- - lib/el_finder/image_size.rb
55
+ - lib/el_finder/image.rb
57
56
  - lib/el_finder/mime_type.rb
58
57
  - lib/el_finder/pathname.rb
59
58
  - lib/el_finder/version.rb
60
- - test/el_finder/test_image_size.rb
59
+ - test/el_finder/test_image.rb
61
60
  - test/el_finder/test_mime_type.rb
62
61
  - test/el_finder/test_pathname.rb
63
62
  - test/el_finder_test_case.rb
@@ -75,6 +74,7 @@ files:
75
74
  - test/test_el_finder_hash.rb
76
75
  - test/test_el_finder_permissions.rb
77
76
  - test/test_el_finder_symlink.rb
77
+ - test/test_el_finder_thumbs.rb
78
78
  has_rdoc: true
79
79
  homepage: http://github.com/phallstrom/el_finder
80
80
  licenses: []
@@ -102,15 +102,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  segments:
103
103
  - 0
104
104
  version: "0"
105
- requirements: []
106
-
105
+ requirements:
106
+ - ImageMagick
107
107
  rubyforge_project: el_finder
108
108
  rubygems_version: 1.3.7
109
109
  signing_key:
110
110
  specification_version: 3
111
111
  summary: elFinder server side connector for Ruby.
112
112
  test_files:
113
- - test/el_finder/test_image_size.rb
113
+ - test/el_finder/test_image.rb
114
114
  - test/el_finder/test_mime_type.rb
115
115
  - test/el_finder/test_pathname.rb
116
116
  - test/el_finder_test_case.rb
@@ -128,3 +128,4 @@ test_files:
128
128
  - test/test_el_finder_hash.rb
129
129
  - test/test_el_finder_permissions.rb
130
130
  - test/test_el_finder_symlink.rb
131
+ - test/test_el_finder_thumbs.rb
@@ -1,14 +0,0 @@
1
- require 'shellwords'
2
-
3
- module ElFinder
4
-
5
- class ImageResize
6
-
7
- def self.resize(pathname, options = {})
8
- return nil unless File.exist?(pathname)
9
- system( ::Shellwords.join(['mogrify', '-resize', "#{options[:width]}x#{options[:height]}!", pathname.to_s]) )
10
- end # of self.resize
11
-
12
- end # of class ImageSize
13
-
14
- end # of module ElFinder
@@ -1,17 +0,0 @@
1
- require 'rubygems'
2
- require 'image_size'
3
-
4
- module ElFinder
5
-
6
- class ImageSize < ::ImageSize
7
-
8
- def self.for(pathname)
9
- return nil unless File.exist?(pathname)
10
- s = new(File.open(pathname)).size.to_s
11
- s = nil if s.empty?
12
- return s
13
- end
14
-
15
- end # of class ImageSize
16
-
17
- end # of module ElFinder
@@ -1,23 +0,0 @@
1
- require "test/unit"
2
- require "el_finder"
3
-
4
- class TestImageSize < Test::Unit::TestCase
5
-
6
- def test_that_method_exists
7
- assert_respond_to ElFinder::ImageSize, :for
8
- end
9
-
10
- def test_that_logos_are_correct_size
11
- assert_equal '70x66', ElFinder::ImageSize.for( File.join(File.dirname(__FILE__), '../files/elfinder.png') )
12
- assert_equal '100x100', ElFinder::ImageSize.for( File.join(File.dirname(__FILE__), '../files/pjkh.png') )
13
- end
14
-
15
- def test_that_nil_is_returned_on_non_images
16
- assert_equal nil, ElFinder::ImageSize.for( File.join(File.dirname(__FILE__), '../files/README.txt') )
17
- end
18
-
19
- def test_that_nil_is_returned_on_nonexistint_files
20
- assert_equal nil, ElFinder::ImageSize.for( File.join(File.dirname(__FILE__), '../files/NON_EXIST') )
21
- end
22
-
23
- end