el_finder 1.0.19 → 1.0.20
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/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.
|