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.
@@ -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.sort_by{|e| e.basename.to_s.downcase}.map{|e| cdc_for(e)}.compact
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| @options[:thumbs] && child.to_s == @thumb_directory.to_s }.
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) }.none?{|e| e.last[perm] == false}
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
  #
@@ -1,3 +1,3 @@
1
1
  module ElFinder
2
- VERSION = '1.0.19'
2
+ VERSION = '1.0.20'
3
3
  end
@@ -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: 49
4
+ hash: 63
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 19
10
- version: 1.0.19
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: 2011-11-27 00:00:00 Z
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.10
110
+ rubygems_version: 1.8.15
111
111
  signing_key:
112
112
  specification_version: 3
113
113
  summary: elFinder server side connector for Ruby.