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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e3e224a4227a6779fc24aefc14053a0e9f3776627b2c75df346129cca57ae54
|
4
|
+
data.tar.gz: 22b9dc8381ffb3205e49cb2f550fc4fe5b869efb29e9acd52ba6de05636d86d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
#
|
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')
|
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)
|
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' => [
|
51
|
-
'application/x-gzip' => [
|
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' => [
|
55
|
-
'application/x-gzip' => [
|
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? ? {:
|
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
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/drg_elfinder/version.rb
CHANGED
@@ -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
|
-
|
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.
|
98
|
+
get_permissions(permission).each do |r|
|
76
99
|
@options[:user_roles].each do |role|
|
77
|
-
|
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.
|
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:
|
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.
|
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: []
|