drg_elfinder 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f9485f1bc2ad1ee110742db313a2f1149edd6bb0db8d2ec9722f7efcbc44941
4
- data.tar.gz: fa1a4c2a1af90ab38c4ea71e3791560ed4f5eaa9e5be0550e72bb5fbc88783c9
3
+ metadata.gz: 2e3e224a4227a6779fc24aefc14053a0e9f3776627b2c75df346129cca57ae54
4
+ data.tar.gz: 22b9dc8381ffb3205e49cb2f550fc4fe5b869efb29e9acd52ba6de05636d86d2
5
5
  SHA512:
6
- metadata.gz: f520f7b3c960fa19fbb0781b63704058a8f4a730308aee6cc3e69e7ca379e72ee6f67c513dad897cdb7395caf128d033c79bbb353d090737dd66b834c2acdea9
7
- data.tar.gz: b40adff69753182e48953ee2099e9784cde560e0ff2c34342ed51eedef2ddf04b0628f95fe5d507e2769a07049aa7f6b79a4ddef198da1bb57c22b94d41e5445
6
+ metadata.gz: d88ab05cb787041866bcdbf4b313253f8930bc1e52671293d7b9eddda748bc469e4c277ebf5a51fd614e33c8a70c3aa65026c4c6f01b03621ce812cf0cb10e54
7
+ data.tar.gz: fea60e9ea2cc2efe9ff83a4b3310368ed415e2f4a810df8a3c95a2b9ac579bd7db30bd95f89a4d76763ebfab9c24a91d792972b39369828ee46714b218a0c96c
@@ -60,7 +60,7 @@
60
60
  resizable : true,
61
61
  lang: lang_code, // language (OPTIONAL) *Rems*
62
62
 
63
- },
63
+ },
64
64
 
65
65
  // 2nd Arg - before boot up function
66
66
  function(fm, extraObj) {
@@ -86,7 +86,6 @@
86
86
  </script>
87
87
  </head>
88
88
  <body>
89
-
90
89
  <!-- Element where elFinder will be created (REQUIRED) -->
91
90
  <div id="elfinder"></div>
92
91
 
@@ -1,4 +1,3 @@
1
- #coding: utf-8
2
1
  #--
3
2
  # Copyright (c) 2022+ Damjan Rems
4
3
  #
@@ -24,22 +23,22 @@
24
23
  ##########################################################################
25
24
  #
26
25
  ##########################################################################
27
- #require 'el_finder/action'
28
26
 
29
27
  class DcElfinderController < DcApplicationController
30
28
 
31
29
  skip_before_action :verify_authenticity_token # otherwise it fails on post because of protect_from_forgery
32
30
  ##########################################################################
33
- # elfinder file manager connector
31
+ # ElFinder file manager connector
34
32
  ##########################################################################
35
33
  def connector
36
34
  site = dc_get_site
37
- home_dir = File.join('/',site.files_directory)
38
- # it is convenient for admin to have access to root dir directly
39
- if dc_user_has_role('admin') then home_dir = File.join('/',home_dir.split('/')[1])
35
+ home_dir = File.join('/', site.files_directory)
36
+ # it is convenient for admin to have access to root dir directly
37
+ if dc_user_has_role('admin')
38
+ home_dir = File.join('/', home_dir.split('/')[1])
40
39
  else
41
40
  user = DcUser.find(session[:user_id])
42
- home_dir = File.join('/', user.root_folder) if user.respond_to?(:root_folder) and !user.root_folder.blank?
41
+ home_dir = File.join('/', user.root_folder) if user.respond_to?(:root_folder) && user.root_folder.present?
43
42
  end
44
43
 
45
44
  h, r = ElFinder::Connector.new(
@@ -47,17 +46,18 @@ def connector
47
46
  :url => home_dir,
48
47
  :perms => { '.' => { :read => true, :write => true, :rm => true }},
49
48
  :extractors => {
50
- 'application/zip' => ['unzip', '-qq', '-o'], # Each argument will be shellescaped (also true for archivers)
51
- 'application/x-gzip' => ['tar', '-xzf'],
49
+ 'application/zip' => %w[unzip -qq -o], # Each argument will be shellescaped (also true for archivers)
50
+ 'application/x-gzip' => %w[tar -xzf],
52
51
  },
53
52
  :archivers => {
54
- 'application/zip' => ['.zip', 'zip', '-qr9'], # Note first argument is archive extension
55
- 'application/x-gzip' => ['.tgz', 'tar', '-czf'],
53
+ 'application/zip' => %w[.zip zip -qr9], # Note first argument is archive extension
54
+ 'application/x-gzip' => %w[.tgz tar -czf],
56
55
  },
57
56
  :user_roles => session[:user_roles]
58
57
  ).run(params)
58
+
59
59
  headers.merge!(h)
60
- render (r.empty? ? {:nothing => true} : {:plain => r.to_json}), :layout => false
60
+ render (r.empty? ? { nothing: true } : { plain: r.to_json }), :layout => false
61
61
  end
62
62
 
63
63
  end
@@ -22,12 +22,12 @@
22
22
  #++
23
23
 
24
24
  module DrgcmsFormFields
25
-
25
+
26
26
  ###########################################################################
27
27
  # Class for creating ElFinder file manager enabled form field.
28
28
  ###########################################################################
29
29
  class Elfinder < DrgcmsField
30
-
30
+
31
31
  ###########################################################################
32
32
  # Return code required to render elfinder DRG CMS form field.
33
33
  ###########################################################################
@@ -37,36 +37,37 @@ def render
37
37
  set_initial_value
38
38
  record = record_text_for(@yaml['name'])
39
39
  @js << <<EOJS
40
- $('##{record}_#{@yaml['name']}').dblclick(function(){
41
- $('##{record}_div_#{@yaml['name']}').show();
42
- let f = $('##{record}_div_#{@yaml['name']}').elfinder({
43
- url : '/elfinder',
44
- baseUrl : '/assets/elfinder/',
45
- transport : new elFinderSupportVer1(),
46
- rememberLastDir: true,
47
- height: 490,
48
- docked: false,
49
- dialog: { width: 400, modal: true },
50
- lang: '#{I18n.locale}',
51
- getFileCallback : function(files) {
52
- console.log(files);
53
- $('##{record}_#{@yaml['name']}').val(files.url);
54
- $('##{record}_div_#{@yaml['name']}').hide();
55
- },
56
- });
57
- });
40
+ $('##{record}_#{@yaml['name']}').dblclick(function(){
41
+ $('##{record}_div_#{@yaml['name']}').show();
42
+ let f = $('##{record}_div_#{@yaml['name']}').elfinder({
43
+ url : '/elfinder',
44
+ baseUrl : '/assets/elfinder/',
45
+ transport : new elFinderSupportVer1(),
46
+ rememberLastDir: true,
47
+ height: 490,
48
+ docked: false,
49
+ dialog: { width: 400, modal: true },
50
+ lang: '#{I18n.locale}',
51
+ getFileCallback : function(files) {
52
+ $('##{record}_#{@yaml['name']}').val(files.url);
53
+ $('##{record}_div_#{@yaml['name']}').hide();
54
+ },
55
+ });
56
+ });
58
57
  EOJS
59
58
 
60
59
  @html << @parent.text_field(record, @yaml['name'], @yaml['html'])
61
- unless @record[@yaml['name']].blank? or @parent.dc_dont?(@yaml['preview'], false)
60
+ @html << @parent.dc_image_invoke("record_#{@yaml['name']}") if @parent.respond_to?(:dc_image_invoke)
61
+ @html << @parent.agile_image_invoke("record_#{@yaml['name']}") if @parent.respond_to?(:agile_image_invoke)
62
+ unless @record[@yaml['name']].blank? || @parent.dc_dont?(@yaml['preview'], false)
62
63
  @html << %(
63
- <span class="dc-image-preview">
64
- #{(@parent.image_tag(@record[@yaml['name']], title: t('drgcms.img_large') ) unless @record[@yaml['name']].match('<i ')) rescue ''}
65
- </span><div id="dc-image-preview"></div>
66
- )
67
- end
68
- @html << "<div id='#{record}_div_#{@yaml['name']}'></div>"
69
-
64
+ <span class="dc-image-preview">
65
+ #{(@parent.image_tag(@record[@yaml['name']], title: t('drgcms.img_large') ) unless @record[@yaml['name']].match('<i ')) rescue ''}
66
+ </span><div id="dc-image-preview"></div>
67
+ )
68
+ end
69
+ @html << "<div id='#{record}_div_#{@yaml['name']}'></div>"
70
+
70
71
  self
71
72
  end
72
73
 
@@ -75,10 +76,9 @@ end
75
76
  ###########################################################################
76
77
  def self.file_manager_url(parent)
77
78
  url = "/assets/elfinder/elfinder.legacy.html?langCode=#{I18n.locale}"
78
-
79
+
79
80
  parent.link_to( parent.fa_icon('inventory_2-o', title: parent.t('drgcms.file_manager')), '#',
80
- { onclick: "window.open('#{url}', '#{parent.t('drgcms.file_manager')}',
81
- 'width=700,height=500')"} )
81
+ { onclick: "window.open('#{url}', '#{parent.t('drgcms.file_manager')}','width=700,height=500')"} )
82
82
  end
83
83
 
84
84
  end
@@ -1,3 +1,3 @@
1
1
  module DrgElfinder
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -54,6 +54,28 @@ def remove_target(target)
54
54
  end
55
55
  end
56
56
 
57
+ #######################################################################
58
+ # Return all folders. Take care of the project.
59
+ #######################################################################
60
+ def get_folders(root)
61
+ if defined?(ArFolderPermission)
62
+ ArFolderPermission.where("folder_name like '#{root}%' and active = ?", true).order(folder_name: 'asc')
63
+ else
64
+ DcFolderPermission.where(folder_name: /#{root}*/, active: true).order(folder_name: 1)
65
+ end
66
+ end
67
+
68
+ #######################################################################
69
+ # Return all folders. Take care of the project.
70
+ #######################################################################
71
+ def get_permissions(permission)
72
+ if defined?(ArFolderPermission)
73
+ permission.ar_folder_rules
74
+ else
75
+ permission.dc_policy_rules
76
+ end
77
+ end
78
+
57
79
  #######################################################################
58
80
  # Return permissions for a file or directory. This overwrites default
59
81
  # behavior and inserts drgcms users roles.
@@ -64,7 +86,8 @@ def perms_for(pathname, options = {})
64
86
  # find root name and get all rules, that are descendent of root.
65
87
  # There can be more than one root, because each site can have its own root
66
88
  root = pathname.root.to_s.sub(Rails.root.join('public').to_s,'')
67
- DcFolderPermission.where(folder_name: /#{root}*/).sort(folder_name: 1).each do |permission|
89
+
90
+ get_folders(root).each do |permission|
68
91
  folder = permission.folder_name.sub(root,'')
69
92
  folder.gsub!(/^\/|\/$/, '')
70
93
  # root is always ., remove leading and trailing /
@@ -72,9 +95,13 @@ def perms_for(pathname, options = {})
72
95
  # no rights by default.
73
96
  h = { read: false, write: false, rw: false, inherited: permission.inherited }
74
97
  # go through policy_rules and set rights if role matches rules role
75
- permission.dc_policy_rules.each do |r|
98
+ get_permissions(permission).each do |r|
76
99
  @options[:user_roles].each do |role|
77
- next unless role == r.dc_policy_role_id
100
+ if defined?(ArFolderPermission)
101
+ next unless role == r.ar_role_id
102
+ else
103
+ next unless role == r.dc_policy_role_id
104
+ end
78
105
 
79
106
  h[:read] ||= r.permission > 0
80
107
  h[:write] ||= r.permission > 1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drg_elfinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damjan Rems
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-17 00:00:00.000000000 Z
11
+ date: 2024-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: image_size
@@ -222,7 +222,7 @@ metadata:
222
222
  homepage_uri: https://www.drgcms.org
223
223
  source_code_uri: https://github.com/drg-cms/drg-elfinder
224
224
  changelog_uri: https://github.com/drg-cms/drg-elfinder/changelog.md
225
- post_install_message:
225
+ post_install_message:
226
226
  rdoc_options: []
227
227
  require_paths:
228
228
  - lib
@@ -238,8 +238,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
238
238
  version: '0'
239
239
  requirements:
240
240
  - ImageMagick
241
- rubygems_version: 3.3.15
242
- signing_key:
241
+ rubygems_version: 3.4.10
242
+ signing_key:
243
243
  specification_version: 4
244
244
  summary: ElFinder file manager for web. DRG Forms plugin.
245
245
  test_files: []