drg_elfinder 0.1.0 → 0.1.2

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.
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: []