el_finder 1.0.7 → 1.0.8
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.
- 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
|