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 +1 -5
- data/el_finder.gemspec +1 -0
- data/lib/el_finder/connector.rb +61 -27
- data/lib/el_finder/image.rb +28 -0
- data/lib/el_finder/version.rb +1 -1
- data/lib/el_finder.rb +1 -2
- data/test/el_finder/test_image.rb +23 -0
- data/test/test_el_finder.rb +3 -3
- data/test/test_el_finder_permissions.rb +2 -2
- data/test/test_el_finder_thumbs.rb +115 -0
- metadata +11 -10
- data/lib/el_finder/image_resize.rb +0 -14
- data/lib/el_finder/image_size.rb +0 -17
- data/test/el_finder/test_image_size.rb +0 -23
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'
|
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
data/lib/el_finder/connector.rb
CHANGED
@@ -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
|
-
:
|
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
|
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
|
-
|
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
|
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
|
-
|
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
|
390
|
-
@options[:
|
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/ && !
|
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 =>
|
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.
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
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
|
data/lib/el_finder/version.rb
CHANGED
data/lib/el_finder.rb
CHANGED
@@ -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
|
data/test/test_el_finder.rb
CHANGED
@@ -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,
|
197
|
-
assert_match(/no files/i,
|
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::
|
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::
|
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::
|
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:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
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-
|
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/
|
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/
|
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/
|
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
|
data/lib/el_finder/image_size.rb
DELETED
@@ -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
|