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.
@@ -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.