el_finder 1.0.19 → 1.0.20
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/el_finder/connector.rb +19 -6
- data/lib/el_finder/version.rb +1 -1
- data/test/test_el_finder_permissions.rb +19 -0
- metadata +5 -5
data/lib/el_finder/connector.rb
CHANGED
@@ -20,7 +20,7 @@ module ElFinder
|
|
20
20
|
:archivers => {},
|
21
21
|
:extractors => {},
|
22
22
|
:home => 'Home',
|
23
|
-
:default_perms => {:read => true, :write => true, :rm => true},
|
23
|
+
:default_perms => {:read => true, :write => true, :rm => true, :hidden => false },
|
24
24
|
:perms => [],
|
25
25
|
:thumbs => false,
|
26
26
|
:thumbs_directory => '.thumbs',
|
@@ -124,7 +124,9 @@ module ElFinder
|
|
124
124
|
command_not_implemented
|
125
125
|
elsif target.directory?
|
126
126
|
@response[:cwd] = cwd_for(target)
|
127
|
-
@response[:cdc] = target.children.
|
127
|
+
@response[:cdc] = target.children.
|
128
|
+
reject{ |child| perms_for(child)[:hidden]}.
|
129
|
+
sort_by{|e| e.basename.to_s.downcase}.map{|e| cdc_for(e)}.compact
|
128
130
|
|
129
131
|
if @params[:tree]
|
130
132
|
@response[:tree] = {
|
@@ -147,7 +149,7 @@ module ElFinder
|
|
147
149
|
|
148
150
|
else
|
149
151
|
@response[:error] = "Directory does not exist"
|
150
|
-
_open(@root)
|
152
|
+
_open(@root) if File.directory?(@root)
|
151
153
|
end
|
152
154
|
|
153
155
|
end # of open
|
@@ -341,7 +343,7 @@ module ElFinder
|
|
341
343
|
|
342
344
|
#
|
343
345
|
def _archive
|
344
|
-
@response[:error] = 'Invalid Parameters' and return unless !@targets.nil? && @targets.all?{|e| e.exist?} && @current.directory?
|
346
|
+
@response[:error] = 'Invalid Parameters' and return unless !@targets.nil? && @targets.all?{|e| e && e.exist?} && @current && @current.directory?
|
345
347
|
@response[:error] = 'Access Denied' and return unless !@targets.nil? && @targets.all?{|e| perms_for(e)[:read]} && perms_for(@current)[:write] == true
|
346
348
|
@response[:error] = 'No archiver available for this file type' and return if (archiver = @options[:archivers][@params[:type]]).nil?
|
347
349
|
extension = archiver.shift
|
@@ -504,7 +506,9 @@ module ElFinder
|
|
504
506
|
#
|
505
507
|
def tree_for(root)
|
506
508
|
root.child_directories.
|
507
|
-
reject{ |child|
|
509
|
+
reject{ |child|
|
510
|
+
( @options[:thumbs] && child.to_s == @thumb_directory.to_s ) || perms_for(child)[:hidden]
|
511
|
+
}.
|
508
512
|
sort_by{|e| e.basename.to_s.downcase}.
|
509
513
|
map { |child|
|
510
514
|
{:name => child.basename.to_s,
|
@@ -531,13 +535,22 @@ module ElFinder
|
|
531
535
|
response[:rm] &&= specific_perm_for(pathname, :rm)
|
532
536
|
response[:rm] &&= @options[:default_perms][:rm]
|
533
537
|
|
538
|
+
response[:hidden] = false
|
539
|
+
response[:hidden] ||= specific_perm_for(pathname, :hidden)
|
540
|
+
response[:hidden] ||= @options[:default_perms][:hidden]
|
541
|
+
|
534
542
|
response
|
535
543
|
end # of perms_for
|
536
544
|
|
537
545
|
#
|
538
546
|
def specific_perm_for(pathname, perm)
|
539
547
|
pathname = pathname.path if pathname.is_a?(ElFinder::Pathname)
|
540
|
-
@options[:perms].select{ |k,v| pathname.to_s.send((k.is_a?(String) ? :== : :match), k) }
|
548
|
+
matches = @options[:perms].select{ |k,v| pathname.to_s.send((k.is_a?(String) ? :== : :match), k) }
|
549
|
+
if perm == :hidden
|
550
|
+
matches.one?{|e| e.last[perm] }
|
551
|
+
else
|
552
|
+
matches.none?{|e| e.last[perm] == false}
|
553
|
+
end
|
541
554
|
end # of specific_perm_for
|
542
555
|
|
543
556
|
#
|
data/lib/el_finder/version.rb
CHANGED
@@ -358,5 +358,24 @@ class TestElFinder < Test::Unit::TestCase
|
|
358
358
|
assert_equal '100x100', ElFinder::Image.size(File.join(@vroot, 'pjkh.png')).to_s
|
359
359
|
end
|
360
360
|
|
361
|
+
|
362
|
+
def test_hidden_permissions
|
363
|
+
@elfinder.options = {
|
364
|
+
:perms => {
|
365
|
+
'README.txt' => { :hidden => true }
|
366
|
+
}
|
367
|
+
}
|
368
|
+
h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
|
369
|
+
assert_nil r[:cdc].find{|e| e[:name] == 'README.txt'}
|
370
|
+
|
371
|
+
@elfinder.options = {
|
372
|
+
:perms => {
|
373
|
+
'README.txt' => { :hidden => false }
|
374
|
+
}
|
375
|
+
}
|
376
|
+
h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
|
377
|
+
assert_not_nil r[:cdc].find{|e| e[:name] == 'README.txt'}
|
378
|
+
end
|
379
|
+
|
361
380
|
|
362
381
|
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: 63
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 20
|
10
|
+
version: 1.0.20
|
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:
|
18
|
+
date: 2012-04-02 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: image_size
|
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
108
108
|
- ImageMagick
|
109
109
|
rubyforge_project: el_finder
|
110
|
-
rubygems_version: 1.8.
|
110
|
+
rubygems_version: 1.8.15
|
111
111
|
signing_key:
|
112
112
|
specification_version: 3
|
113
113
|
summary: elFinder server side connector for Ruby.
|