drg_elfinder 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +8 -0
  5. data/app/assets/config/drg_elfinder_manifest.js +1 -0
  6. data/app/assets/javascripts/drg_elfinder.js +15 -0
  7. data/app/assets/javascripts/elfinder/Changelog +1283 -0
  8. data/app/assets/javascripts/elfinder/LICENSE.md +15 -0
  9. data/app/assets/javascripts/elfinder/README.md +216 -0
  10. data/app/assets/javascripts/elfinder/bower.json +28 -0
  11. data/app/assets/javascripts/elfinder/composer.json +39 -0
  12. data/app/assets/javascripts/elfinder/css/elfinder.full.css +5350 -0
  13. data/app/assets/javascripts/elfinder/css/elfinder.min.css +9 -0
  14. data/app/assets/javascripts/elfinder/css/theme.css +430 -0
  15. data/app/assets/javascripts/elfinder/elfinder.html +74 -0
  16. data/app/assets/javascripts/elfinder/elfinder.legacy.html +94 -0
  17. data/app/assets/javascripts/elfinder/img/arrows-active.png +0 -0
  18. data/app/assets/javascripts/elfinder/img/arrows-normal.png +0 -0
  19. data/app/assets/javascripts/elfinder/img/crop.gif +0 -0
  20. data/app/assets/javascripts/elfinder/img/dialogs.png +0 -0
  21. data/app/assets/javascripts/elfinder/img/edit_aceeditor.png +0 -0
  22. data/app/assets/javascripts/elfinder/img/edit_ckeditor.png +0 -0
  23. data/app/assets/javascripts/elfinder/img/edit_ckeditor5.png +0 -0
  24. data/app/assets/javascripts/elfinder/img/edit_codemirror.png +0 -0
  25. data/app/assets/javascripts/elfinder/img/edit_creativecloud.png +0 -0
  26. data/app/assets/javascripts/elfinder/img/edit_onlineconvert.png +0 -0
  27. data/app/assets/javascripts/elfinder/img/edit_pixlreditor.png +0 -0
  28. data/app/assets/javascripts/elfinder/img/edit_pixlrexpress.png +0 -0
  29. data/app/assets/javascripts/elfinder/img/edit_simplemde.png +0 -0
  30. data/app/assets/javascripts/elfinder/img/edit_tinymce.png +0 -0
  31. data/app/assets/javascripts/elfinder/img/edit_tuiimgedit.png +0 -0
  32. data/app/assets/javascripts/elfinder/img/edit_zohooffice.png +0 -0
  33. data/app/assets/javascripts/elfinder/img/editor-icons.png +0 -0
  34. data/app/assets/javascripts/elfinder/img/icons-big.png +0 -0
  35. data/app/assets/javascripts/elfinder/img/icons-big.svg +1 -0
  36. data/app/assets/javascripts/elfinder/img/icons-small.png +0 -0
  37. data/app/assets/javascripts/elfinder/img/logo.png +0 -0
  38. data/app/assets/javascripts/elfinder/img/progress.gif +0 -0
  39. data/app/assets/javascripts/elfinder/img/quicklook-bg.png +0 -0
  40. data/app/assets/javascripts/elfinder/img/quicklook-icons.png +0 -0
  41. data/app/assets/javascripts/elfinder/img/resize.png +0 -0
  42. data/app/assets/javascripts/elfinder/img/spinner-mini.gif +0 -0
  43. data/app/assets/javascripts/elfinder/img/toolbar.png +0 -0
  44. data/app/assets/javascripts/elfinder/img/trashmesh.png +0 -0
  45. data/app/assets/javascripts/elfinder/img/tui-icon-a.svg +235 -0
  46. data/app/assets/javascripts/elfinder/img/tui-icon-b.svg +224 -0
  47. data/app/assets/javascripts/elfinder/img/tui-icon-c.svg +224 -0
  48. data/app/assets/javascripts/elfinder/img/tui-icon-d.svg +224 -0
  49. data/app/assets/javascripts/elfinder/img/ui-icons_ffffff_256x240.png +0 -0
  50. data/app/assets/javascripts/elfinder/img/volume_icon_box.png +0 -0
  51. data/app/assets/javascripts/elfinder/img/volume_icon_box.svg +1 -0
  52. data/app/assets/javascripts/elfinder/img/volume_icon_dropbox.png +0 -0
  53. data/app/assets/javascripts/elfinder/img/volume_icon_dropbox.svg +1 -0
  54. data/app/assets/javascripts/elfinder/img/volume_icon_ftp.png +0 -0
  55. data/app/assets/javascripts/elfinder/img/volume_icon_ftp.svg +1 -0
  56. data/app/assets/javascripts/elfinder/img/volume_icon_googledrive.png +0 -0
  57. data/app/assets/javascripts/elfinder/img/volume_icon_googledrive.svg +1 -0
  58. data/app/assets/javascripts/elfinder/img/volume_icon_local.png +0 -0
  59. data/app/assets/javascripts/elfinder/img/volume_icon_local.svg +1 -0
  60. data/app/assets/javascripts/elfinder/img/volume_icon_network.png +0 -0
  61. data/app/assets/javascripts/elfinder/img/volume_icon_network.svg +1 -0
  62. data/app/assets/javascripts/elfinder/img/volume_icon_onedrive.png +0 -0
  63. data/app/assets/javascripts/elfinder/img/volume_icon_onedrive.svg +1 -0
  64. data/app/assets/javascripts/elfinder/img/volume_icon_sql.png +0 -0
  65. data/app/assets/javascripts/elfinder/img/volume_icon_sql.svg +1 -0
  66. data/app/assets/javascripts/elfinder/img/volume_icon_trash.png +0 -0
  67. data/app/assets/javascripts/elfinder/img/volume_icon_trash.svg +1 -0
  68. data/app/assets/javascripts/elfinder/img/volume_icon_zip.png +0 -0
  69. data/app/assets/javascripts/elfinder/img/volume_icon_zip.svg +1 -0
  70. data/app/assets/javascripts/elfinder/js/elfinder.full.js +36019 -0
  71. data/app/assets/javascripts/elfinder/js/elfinder.min.js +25 -0
  72. data/app/assets/javascripts/elfinder/js/extras/editors.default.js +2643 -0
  73. data/app/assets/javascripts/elfinder/js/extras/editors.default.min.js +2 -0
  74. data/app/assets/javascripts/elfinder/js/extras/quicklook.googledocs.js +75 -0
  75. data/app/assets/javascripts/elfinder/js/extras/quicklook.googledocs.min.js +1 -0
  76. data/app/assets/javascripts/elfinder/js/i18n/elfinder.LANG.js +587 -0
  77. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ar.js +580 -0
  78. data/app/assets/javascripts/elfinder/js/i18n/elfinder.bg.js +559 -0
  79. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ca.js +375 -0
  80. data/app/assets/javascripts/elfinder/js/i18n/elfinder.cs.js +581 -0
  81. data/app/assets/javascripts/elfinder/js/i18n/elfinder.da.js +580 -0
  82. data/app/assets/javascripts/elfinder/js/i18n/elfinder.de.js +582 -0
  83. data/app/assets/javascripts/elfinder/js/i18n/elfinder.el.js +374 -0
  84. data/app/assets/javascripts/elfinder/js/i18n/elfinder.es.js +546 -0
  85. data/app/assets/javascripts/elfinder/js/i18n/elfinder.fa.js +580 -0
  86. data/app/assets/javascripts/elfinder/js/i18n/elfinder.fallback.js +11 -0
  87. data/app/assets/javascripts/elfinder/js/i18n/elfinder.fo.js +419 -0
  88. data/app/assets/javascripts/elfinder/js/i18n/elfinder.fr.js +578 -0
  89. data/app/assets/javascripts/elfinder/js/i18n/elfinder.fr_CA.js +580 -0
  90. data/app/assets/javascripts/elfinder/js/i18n/elfinder.he.js +375 -0
  91. data/app/assets/javascripts/elfinder/js/i18n/elfinder.hr.js +434 -0
  92. data/app/assets/javascripts/elfinder/js/i18n/elfinder.hu.js +580 -0
  93. data/app/assets/javascripts/elfinder/js/i18n/elfinder.id.js +498 -0
  94. data/app/assets/javascripts/elfinder/js/i18n/elfinder.it.js +552 -0
  95. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ja.js +581 -0
  96. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ko.js +582 -0
  97. data/app/assets/javascripts/elfinder/js/i18n/elfinder.nl.js +581 -0
  98. data/app/assets/javascripts/elfinder/js/i18n/elfinder.no.js +374 -0
  99. data/app/assets/javascripts/elfinder/js/i18n/elfinder.pl.js +580 -0
  100. data/app/assets/javascripts/elfinder/js/i18n/elfinder.pt_BR.js +580 -0
  101. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ro.js +417 -0
  102. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ru.js +582 -0
  103. data/app/assets/javascripts/elfinder/js/i18n/elfinder.si.js +537 -0
  104. data/app/assets/javascripts/elfinder/js/i18n/elfinder.sk.js +581 -0
  105. data/app/assets/javascripts/elfinder/js/i18n/elfinder.sl.js +374 -0
  106. data/app/assets/javascripts/elfinder/js/i18n/elfinder.sr.js +374 -0
  107. data/app/assets/javascripts/elfinder/js/i18n/elfinder.sv.js +375 -0
  108. data/app/assets/javascripts/elfinder/js/i18n/elfinder.tr.js +583 -0
  109. data/app/assets/javascripts/elfinder/js/i18n/elfinder.ug_CN.js +374 -0
  110. data/app/assets/javascripts/elfinder/js/i18n/elfinder.uk.js +580 -0
  111. data/app/assets/javascripts/elfinder/js/i18n/elfinder.vi.js +579 -0
  112. data/app/assets/javascripts/elfinder/js/i18n/elfinder.zh_CN.js +585 -0
  113. data/app/assets/javascripts/elfinder/js/i18n/elfinder.zh_TW.js +582 -0
  114. data/app/assets/javascripts/elfinder/js/i18n/help/cs.html.js +10 -0
  115. data/app/assets/javascripts/elfinder/js/i18n/help/de.html.js +15 -0
  116. data/app/assets/javascripts/elfinder/js/i18n/help/en.html.js +10 -0
  117. data/app/assets/javascripts/elfinder/js/i18n/help/es.html.js +10 -0
  118. data/app/assets/javascripts/elfinder/js/i18n/help/ja.html.js +10 -0
  119. data/app/assets/javascripts/elfinder/js/i18n/help/ko.html.js +10 -0
  120. data/app/assets/javascripts/elfinder/js/i18n/help/pl.html.js +10 -0
  121. data/app/assets/javascripts/elfinder/js/i18n/help/ru.html.js +10 -0
  122. data/app/assets/javascripts/elfinder/js/i18n/help/sk.html.js +10 -0
  123. data/app/assets/javascripts/elfinder/js/i18n/help/tr.html.js +10 -0
  124. data/app/assets/javascripts/elfinder/js/proxy/elFinderSupportVer1.js +408 -0
  125. data/app/assets/javascripts/elfinder/js/worker/calcfilehash.js +20 -0
  126. data/app/assets/javascripts/elfinder/js/worker/quicklook.tiff.js +7 -0
  127. data/app/assets/javascripts/elfinder/js/worker/quicklook.unzip.js +55 -0
  128. data/app/assets/javascripts/elfinder/main.default.js +175 -0
  129. data/app/assets/javascripts/elfinder/package.json +13 -0
  130. data/app/assets/javascripts/elfinder/php/MySQLStorage.sql +47 -0
  131. data/app/assets/javascripts/elfinder/php/autoload.php +56 -0
  132. data/app/assets/javascripts/elfinder/php/connector.maximal.php-dist +449 -0
  133. data/app/assets/javascripts/elfinder/php/connector.minimal.php-dist +180 -0
  134. data/app/assets/javascripts/elfinder/php/editors/OnlineConvert/editor.php +113 -0
  135. data/app/assets/javascripts/elfinder/php/editors/ZipArchive/editor.php +12 -0
  136. data/app/assets/javascripts/elfinder/php/editors/ZohoOffice/editor.php +206 -0
  137. data/app/assets/javascripts/elfinder/php/editors/editor.php +79 -0
  138. data/app/assets/javascripts/elfinder/php/elFinder.class.php +5401 -0
  139. data/app/assets/javascripts/elfinder/php/elFinderConnector.class.php +380 -0
  140. data/app/assets/javascripts/elfinder/php/elFinderFlysystemGoogleDriveNetmount.php +380 -0
  141. data/app/assets/javascripts/elfinder/php/elFinderPlugin.php +113 -0
  142. data/app/assets/javascripts/elfinder/php/elFinderSession.php +335 -0
  143. data/app/assets/javascripts/elfinder/php/elFinderSessionInterface.php +57 -0
  144. data/app/assets/javascripts/elfinder/php/elFinderVolumeBox.class.php +1972 -0
  145. data/app/assets/javascripts/elfinder/php/elFinderVolumeDriver.class.php +7651 -0
  146. data/app/assets/javascripts/elfinder/php/elFinderVolumeDropbox.class.php +1464 -0
  147. data/app/assets/javascripts/elfinder/php/elFinderVolumeDropbox2.class.php +1516 -0
  148. data/app/assets/javascripts/elfinder/php/elFinderVolumeFTP.class.php +1810 -0
  149. data/app/assets/javascripts/elfinder/php/elFinderVolumeGoogleDrive.class.php +2163 -0
  150. data/app/assets/javascripts/elfinder/php/elFinderVolumeGroup.class.php +315 -0
  151. data/app/assets/javascripts/elfinder/php/elFinderVolumeLocalFileSystem.class.php +1477 -0
  152. data/app/assets/javascripts/elfinder/php/elFinderVolumeMySQL.class.php +1022 -0
  153. data/app/assets/javascripts/elfinder/php/elFinderVolumeOneDrive.class.php +2131 -0
  154. data/app/assets/javascripts/elfinder/php/elFinderVolumeSFTPphpseclib.class.php +838 -0
  155. data/app/assets/javascripts/elfinder/php/elFinderVolumeTrash.class.php +51 -0
  156. data/app/assets/javascripts/elfinder/php/elFinderVolumeTrashMySQL.class.php +51 -0
  157. data/app/assets/javascripts/elfinder/php/libs/GdBmp.php +473 -0
  158. data/app/assets/javascripts/elfinder/php/mime.types +781 -0
  159. data/app/assets/javascripts/elfinder/php/plugins/AutoResize/plugin.php +151 -0
  160. data/app/assets/javascripts/elfinder/php/plugins/AutoRotate/plugin.php +148 -0
  161. data/app/assets/javascripts/elfinder/php/plugins/Normalizer/plugin.php +204 -0
  162. data/app/assets/javascripts/elfinder/php/plugins/Sanitizer/plugin.php +157 -0
  163. data/app/assets/javascripts/elfinder/php/plugins/Watermark/logo.png +0 -0
  164. data/app/assets/javascripts/elfinder/php/plugins/Watermark/plugin.php +432 -0
  165. data/app/assets/javascripts/elfinder/php/plugins/WinRemoveTailDots/plugin.php +114 -0
  166. data/app/assets/javascripts/elfinder/php/resources/image.png +0 -0
  167. data/app/assets/javascripts/elfinder/php/resources/video.png +0 -0
  168. data/app/assets/javascripts/elfinder/sounds/rm.wav +0 -0
  169. data/app/controllers/dc_elfinder_controller.rb +63 -0
  170. data/app/models/drgcms_form_fields/elfinder.rb +85 -0
  171. data/changelog.md +0 -0
  172. data/lib/drg_elfinder/engine.rb +5 -0
  173. data/lib/drg_elfinder/version.rb +3 -0
  174. data/lib/drg_elfinder.rb +9 -0
  175. data/lib/el_finder/action.rb +19 -0
  176. data/lib/el_finder/base64.rb +24 -0
  177. data/lib/el_finder/connector.rb +625 -0
  178. data/lib/el_finder/image.rb +33 -0
  179. data/lib/el_finder/mime_type.rb +86 -0
  180. data/lib/el_finder/pathname.rb +185 -0
  181. data/lib/el_finder/version.rb +5 -0
  182. data/lib/el_finder.rb +8 -0
  183. data/lib/patches/patch_for_elfinder.rb +115 -0
  184. data/lib/tasks/drg_elfinder_tasks.rake +10 -0
  185. metadata +245 -0
@@ -0,0 +1,86 @@
1
+ module ElFinder
2
+
3
+ # Represents default MIME types recognizer.
4
+ class MimeType
5
+
6
+ # File extension to mime type mapping.
7
+ TYPES = {
8
+ 'ai' => 'application/postscript',
9
+ 'eps' => 'application/postscript',
10
+ 'exe' => 'application/octet-stream',
11
+ 'doc' => 'application/vnd.ms-word',
12
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
13
+ 'xls' => 'application/vnd.ms-excel',
14
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
15
+ 'ppt' => 'application/vnd.ms-powerpoint',
16
+ 'pps' => 'application/vnd.ms-powerpoint',
17
+ 'pdf' => 'application/pdf',
18
+ 'xml' => 'application/xml',
19
+ 'odt' => 'application/vnd.oasis.opendocument.text',
20
+ 'swf' => 'application/x-shockwave-flash',
21
+ # archives
22
+ 'gz' => 'application/x-gzip',
23
+ 'tgz' => 'application/x-gzip',
24
+ 'bz' => 'application/x-bzip2',
25
+ 'bz2' => 'application/x-bzip2',
26
+ 'tbz' => 'application/x-bzip2',
27
+ 'zip' => 'application/zip',
28
+ 'rar' => 'application/x-rar',
29
+ 'tar' => 'application/x-tar',
30
+ '7z' => 'application/x-7z-compressed',
31
+ # texts
32
+ 'txt' => 'text/plain',
33
+ 'php' => 'text/x-php',
34
+ 'html' => 'text/html',
35
+ 'htm' => 'text/html',
36
+ 'js' => 'text/javascript',
37
+ 'css' => 'text/css',
38
+ 'rtf' => 'text/rtf',
39
+ 'rtfd' => 'text/rtfd',
40
+ 'py' => 'text/x-python',
41
+ 'java' => 'text/x-java-source',
42
+ 'rb' => 'text/x-ruby',
43
+ 'erb' => 'text/x-ruby',
44
+ 'sh' => 'text/x-shellscript',
45
+ 'pl' => 'text/x-perl',
46
+ 'sql' => 'text/x-sql',
47
+ # images
48
+ 'bmp' => 'image/x-ms-bmp',
49
+ 'jpg' => 'image/jpeg',
50
+ 'jpeg' => 'image/jpeg',
51
+ 'gif' => 'image/gif',
52
+ 'png' => 'image/png',
53
+ 'tif' => 'image/tiff',
54
+ 'tiff' => 'image/tiff',
55
+ 'tga' => 'image/x-targa',
56
+ 'psd' => 'image/vnd.adobe.photoshop',
57
+ # audio
58
+ 'mp3' => 'audio/mpeg',
59
+ 'mid' => 'audio/midi',
60
+ 'ogg' => 'audio/ogg',
61
+ 'mp4a' => 'audio/mp4',
62
+ 'wav' => 'audio/wav',
63
+ 'wma' => 'audio/x-ms-wma',
64
+ # video
65
+ 'avi' => 'video/x-msvideo',
66
+ 'dv' => 'video/x-dv',
67
+ 'mp4' => 'video/mp4',
68
+ 'mpeg' => 'video/mpeg',
69
+ 'mpg' => 'video/mpeg',
70
+ 'mov' => 'video/quicktime',
71
+ 'wm' => 'video/x-ms-wmv',
72
+ 'flv' => 'video/x-flv',
73
+ 'mkv' => 'video/x-matroska'
74
+ }
75
+
76
+ # Gets MIME type fort specified path.
77
+ # @param [::Pathname, String] pathname Path to recognize its MIME type.
78
+ # @return [String] MIME type if known; 'unknown/unknown' otherwise.
79
+ def self.for(pathname)
80
+ pathname = ::Pathname.new(pathname) if pathname.is_a?(String)
81
+ TYPES[pathname.extname.downcase[1..-1]] || 'unknown/unknown'
82
+ end # of for
83
+
84
+ end # of class MimeType
85
+
86
+ end # of module ElFinder
@@ -0,0 +1,185 @@
1
+ require 'fileutils'
2
+ require 'pathname'
3
+
4
+ module ElFinder
5
+
6
+ class Pathname
7
+ attr_reader :root, :path
8
+
9
+ #
10
+ def initialize(root, path = '.')
11
+ @root = root.is_a?(ElFinder::Pathname) ? root.root : ::Pathname.new(root)
12
+
13
+ @path = ::Pathname.new(path)
14
+ @path = path.is_a?(ElFinder::Pathname) ? path.path : ::Pathname.new(path)
15
+ if absolute?
16
+ if @path.cleanpath.to_s.start_with?(@root.to_s)
17
+ @path = ::Pathname.new @path.to_s.slice((@root.to_s.length + 1)..-1)
18
+ elsif @path.cleanpath.to_s.start_with?(@root.realpath.to_s)
19
+ @path = ::Pathname.new @path.to_s.slice((@root.realpath.to_s.length + 1)..-1)
20
+ else
21
+ raise SecurityError, "Absolute paths are not allowed"
22
+ end
23
+ end
24
+ raise SecurityError, "Paths outside the root are not allowed" if outside_of_root?
25
+
26
+ end # of initialize
27
+
28
+ #
29
+ def +(other)
30
+ if other.is_a? ::ElFinder::Pathname
31
+ other = other.path
32
+ end
33
+ self.class.new(@root, (@path + other).to_s)
34
+ end # of +
35
+
36
+ #
37
+ def is_root?
38
+ @path.to_s == '.'
39
+ end
40
+
41
+ #
42
+ def absolute?
43
+ @path.absolute?
44
+ end # of absolute?
45
+
46
+ #
47
+ def relative?
48
+ @path.relative?
49
+ end # of relative?
50
+
51
+ #
52
+ def outside_of_root?
53
+ !cleanpath.to_s.start_with?(@root.to_s)
54
+ end # of outside_of_root?
55
+
56
+ #
57
+ def fullpath
58
+ @path.nil? ? @root : @root + @path
59
+ end # of fullpath
60
+
61
+ #
62
+ def cleanpath
63
+ fullpath.cleanpath
64
+ end # of cleanpath
65
+
66
+ #
67
+ def realpath
68
+ fullpath.realpath
69
+ end # of realpath
70
+
71
+ #
72
+ def basename(*args)
73
+ @path.basename(*args)
74
+ end # of basename
75
+
76
+ #
77
+ def basename_sans_extension
78
+ @path.basename(@path.extname)
79
+ end # of basename
80
+
81
+ #
82
+ def basename(*args)
83
+ @path.basename(*args)
84
+ end # of basename
85
+
86
+ #
87
+ def dirname
88
+ self.class.new(@root, @path.dirname)
89
+ end # of basename
90
+
91
+ #
92
+ def extname
93
+ @path.nil? ? '' : @path.extname
94
+ end # of extname
95
+
96
+ #
97
+ def to_s
98
+ cleanpath.to_s
99
+ end # of to_s
100
+ alias_method :to_str, :to_s
101
+
102
+ #
103
+ def child_directories(with_directory=true)
104
+ realpath.children(with_directory).select{ |child| child.directory? }.map{|e| self.class.new(@root, e)}
105
+ end
106
+
107
+ #
108
+ def children(with_directory=true)
109
+ realpath.children(with_directory).map{|e| self.class.new(@root, e)}
110
+ end
111
+
112
+ #
113
+ def touch(options = {})
114
+ FileUtils.touch(cleanpath)#, options)
115
+ end
116
+
117
+ #
118
+ def relative_to(other)
119
+ @path.relative_path_from(other)
120
+ end
121
+
122
+ #
123
+ def unique
124
+ return self.dup unless self.file?
125
+ copy = 1
126
+ begin
127
+ new_file = self.class.new(@root, dirname + "#{basename_sans_extension} #{copy}#{extname}")
128
+ copy += 1
129
+ end while new_file.exist?
130
+ new_file
131
+ end # of unique
132
+
133
+ #
134
+ def duplicate
135
+ _basename = basename_sans_extension
136
+ copy = 1
137
+ if _basename.to_s =~ /^(.*) copy (\d+)$/
138
+ _basename = $1
139
+ copy = $2.to_i
140
+ end
141
+ begin
142
+ new_file = self.class.new(@root, dirname + "#{_basename} copy #{copy}#{extname}")
143
+ copy += 1
144
+ end while new_file.exist?
145
+ new_file
146
+ end # of duplicate
147
+
148
+ #
149
+ def rename(to)
150
+ to = self.class.new(@root, to.to_s)
151
+ realpath.rename(to.fullpath.to_s)
152
+ rescue Errno::EXDEV
153
+ FileUtils.move(realpath.to_s, to.fullpath.to_s)
154
+ ensure
155
+ @path = to.path
156
+ end # of rename
157
+
158
+ {
159
+ 'directory?' => {:path => 'realpath', :rescue => true },
160
+ 'exist?' => {:path => 'realpath', :rescue => true },
161
+ 'file?' => {:path => 'realpath', :rescue => true },
162
+ 'ftype' => {:path => 'realpath', },
163
+ 'mkdir' => {:path => 'fullpath', :args => '(*args)' },
164
+ 'mtime' => {:path => 'realpath', },
165
+ 'open' => {:path => 'fullpath', :args => '(*args, &block)' },
166
+ 'read' => {:path => 'fullpath', :args => '(*args)' },
167
+ 'readlink' => {:path => 'fullpath', },
168
+ 'readable?' => {:path => 'realpath', :rescue => true },
169
+ 'size' => {:path => 'realpath', },
170
+ 'symlink?' => {:path => 'fullpath', },
171
+ 'unlink' => {:path => 'realpath', },
172
+ 'writable?' => {:path => 'realpath', :rescue => true },
173
+ }.each_pair do |meth, opts|
174
+ class_eval <<-METHOD, __FILE__, __LINE__ + 1
175
+ def #{meth}#{opts[:args]}
176
+ #{opts[:path]}.#{meth}#{opts[:args]}
177
+ #{"rescue Errno::ENOENT\nfalse" if opts[:rescue]}
178
+ end
179
+ METHOD
180
+ end
181
+
182
+
183
+ end # of class Pathname
184
+
185
+ end # of module ElFinder
@@ -0,0 +1,5 @@
1
+ # Represents ElFinder namespace.
2
+ module ElFinder
3
+ # Gem version.
4
+ VERSION = '2.1.61'
5
+ end
data/lib/el_finder.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'fileutils'
2
+
3
+ require 'el_finder/base64'
4
+ require 'el_finder/pathname'
5
+ require 'el_finder/mime_type'
6
+ require 'el_finder/image'
7
+ require 'el_finder/connector'
8
+ require 'el_finder/action'
@@ -0,0 +1,115 @@
1
+ #--
2
+ # Copyright (c) 2014+ Damjan Rems
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ module ElFinder
25
+ class Connector
26
+
27
+ private
28
+ #######################################################################
29
+ # Will only move selected files to .trash folder instead of remove them.
30
+ #
31
+ # The only problem I see is that if user has rights to perform remove parent
32
+ # folder but not some of its children, whole parent folder will be moved to .trash.
33
+ #######################################################################
34
+ def remove_target(target)
35
+ if perms_for(target)[:rm] == false
36
+ @response[:error] ||= 'Some files/directories were unable to be removed'
37
+ @response[:errorData][target.basename.to_s] = "Access Denied"
38
+ return
39
+ end
40
+ # create trash folder if it doesn't exist
41
+ trash_dir = File.join(@root,'.trash/')
42
+ FileUtils.mkdir(trash_dir) unless File.exist?(trash_dir)
43
+
44
+ begin
45
+ FileUtils.mv(target, trash_dir, force: true)
46
+ if !target.directory?
47
+ if @options[:thumbs] && (thumbnail = thumbnail_for(target)).file?
48
+ FileUtils.mv(thumbnail, trash_dir, force: true )
49
+ end
50
+ end
51
+ rescue
52
+ @response[:error] ||= 'Some files/directories were unable to be removed'
53
+ @response[:errorData][target.basename.to_s] = "Remove failed"
54
+ end
55
+ end
56
+
57
+ #######################################################################
58
+ # Return permissions for a file or directory. This overwrites default
59
+ # behavior and inserts drgcms users roles.
60
+ #######################################################################
61
+ def perms_for(pathname, options = {})
62
+ if @permissions.nil?
63
+ @permissions = {}
64
+ # find root name and get all rules, that are descendent of root.
65
+ # There can be more than one root, because each site can have its own root
66
+ 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|
68
+ folder = permission.folder_name.sub(root,'')
69
+ folder.gsub!(/^\/|\/$/, '')
70
+ # root is always ., remove leading and trailing /
71
+ folder = '.' if folder.blank?
72
+ # no rights by default.
73
+ h = { read: false, write: false, rw: false, inherited: permission.inherited }
74
+ # go through policy_rules and set rights if role matches rules role
75
+ permission.dc_policy_rules.each do |r|
76
+ @options[:user_roles].each do |role|
77
+ next unless role == r.dc_policy_role_id
78
+
79
+ h[:read] ||= r.permission > 0
80
+ h[:write] ||= r.permission > 1
81
+ h[:rw] ||= r.permission > 8
82
+ end
83
+ @permissions[folder] = h
84
+ end
85
+ end
86
+ end
87
+ # create response. First check for defaults of root folder
88
+ response = {}
89
+ response[:read] = pathname.exist? && @permissions['.'][:read]
90
+ response[:write] = pathname.exist? && @permissions['.'][:write]
91
+ response[:rm] = !pathname.is_root? && @permissions['.'][:rw]
92
+ dir = ''
93
+ # go through every subfolder part. Policy is: if right has been revoked on
94
+ # parent folder it can't be set on child unless inherited is false.
95
+ pathname.path.to_s.split('/').each do |path|
96
+ dir << (dir.size > 0 ? '/' : '') + path
97
+ pe = @permissions[dir]
98
+ next if pe.nil? # ignore if not set
99
+
100
+ if pe[:inherited]
101
+ response[:read] &&= pe[:read]
102
+ response[:write] &&= pe[:write]
103
+ response[:rm] &&= pe[:rw]
104
+ else
105
+ response[:read] = pe[:read]
106
+ response[:write] = pe[:write]
107
+ response[:rm] = pe[:rw]
108
+ end
109
+ end
110
+ response[:hidden] = false
111
+ response
112
+ end # of perms_for
113
+
114
+ end
115
+ end
@@ -0,0 +1,10 @@
1
+ require 'fileutils'
2
+
3
+ desc "Copy elfinder folder from gem's assets folder to public/assets/ directory"
4
+ task "assets:precompile" do
5
+ p 'Copying elfinder files to public/assets directory '
6
+
7
+ input_dir = File.realpath( File.dirname(__FILE__) + '/../../app/assets/javascripts/elfinder')
8
+ output_dir = Rails.root.join('public/assets')
9
+ cp_r(input_dir, output_dir, verbose: true)
10
+ end
metadata ADDED
@@ -0,0 +1,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: drg_elfinder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Damjan Rems
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-10-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: image_size
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ description: Package consists of ElFinder file manager for web for usage with DRG
28
+ Forms
29
+ email:
30
+ - damjan.rems@gmail.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - MIT-LICENSE
36
+ - README.md
37
+ - Rakefile
38
+ - app/assets/config/drg_elfinder_manifest.js
39
+ - app/assets/javascripts/drg_elfinder.js
40
+ - app/assets/javascripts/elfinder/Changelog
41
+ - app/assets/javascripts/elfinder/LICENSE.md
42
+ - app/assets/javascripts/elfinder/README.md
43
+ - app/assets/javascripts/elfinder/bower.json
44
+ - app/assets/javascripts/elfinder/composer.json
45
+ - app/assets/javascripts/elfinder/css/elfinder.full.css
46
+ - app/assets/javascripts/elfinder/css/elfinder.min.css
47
+ - app/assets/javascripts/elfinder/css/theme.css
48
+ - app/assets/javascripts/elfinder/elfinder.html
49
+ - app/assets/javascripts/elfinder/elfinder.legacy.html
50
+ - app/assets/javascripts/elfinder/img/arrows-active.png
51
+ - app/assets/javascripts/elfinder/img/arrows-normal.png
52
+ - app/assets/javascripts/elfinder/img/crop.gif
53
+ - app/assets/javascripts/elfinder/img/dialogs.png
54
+ - app/assets/javascripts/elfinder/img/edit_aceeditor.png
55
+ - app/assets/javascripts/elfinder/img/edit_ckeditor.png
56
+ - app/assets/javascripts/elfinder/img/edit_ckeditor5.png
57
+ - app/assets/javascripts/elfinder/img/edit_codemirror.png
58
+ - app/assets/javascripts/elfinder/img/edit_creativecloud.png
59
+ - app/assets/javascripts/elfinder/img/edit_onlineconvert.png
60
+ - app/assets/javascripts/elfinder/img/edit_pixlreditor.png
61
+ - app/assets/javascripts/elfinder/img/edit_pixlrexpress.png
62
+ - app/assets/javascripts/elfinder/img/edit_simplemde.png
63
+ - app/assets/javascripts/elfinder/img/edit_tinymce.png
64
+ - app/assets/javascripts/elfinder/img/edit_tuiimgedit.png
65
+ - app/assets/javascripts/elfinder/img/edit_zohooffice.png
66
+ - app/assets/javascripts/elfinder/img/editor-icons.png
67
+ - app/assets/javascripts/elfinder/img/icons-big.png
68
+ - app/assets/javascripts/elfinder/img/icons-big.svg
69
+ - app/assets/javascripts/elfinder/img/icons-small.png
70
+ - app/assets/javascripts/elfinder/img/logo.png
71
+ - app/assets/javascripts/elfinder/img/progress.gif
72
+ - app/assets/javascripts/elfinder/img/quicklook-bg.png
73
+ - app/assets/javascripts/elfinder/img/quicklook-icons.png
74
+ - app/assets/javascripts/elfinder/img/resize.png
75
+ - app/assets/javascripts/elfinder/img/spinner-mini.gif
76
+ - app/assets/javascripts/elfinder/img/toolbar.png
77
+ - app/assets/javascripts/elfinder/img/trashmesh.png
78
+ - app/assets/javascripts/elfinder/img/tui-icon-a.svg
79
+ - app/assets/javascripts/elfinder/img/tui-icon-b.svg
80
+ - app/assets/javascripts/elfinder/img/tui-icon-c.svg
81
+ - app/assets/javascripts/elfinder/img/tui-icon-d.svg
82
+ - app/assets/javascripts/elfinder/img/ui-icons_ffffff_256x240.png
83
+ - app/assets/javascripts/elfinder/img/volume_icon_box.png
84
+ - app/assets/javascripts/elfinder/img/volume_icon_box.svg
85
+ - app/assets/javascripts/elfinder/img/volume_icon_dropbox.png
86
+ - app/assets/javascripts/elfinder/img/volume_icon_dropbox.svg
87
+ - app/assets/javascripts/elfinder/img/volume_icon_ftp.png
88
+ - app/assets/javascripts/elfinder/img/volume_icon_ftp.svg
89
+ - app/assets/javascripts/elfinder/img/volume_icon_googledrive.png
90
+ - app/assets/javascripts/elfinder/img/volume_icon_googledrive.svg
91
+ - app/assets/javascripts/elfinder/img/volume_icon_local.png
92
+ - app/assets/javascripts/elfinder/img/volume_icon_local.svg
93
+ - app/assets/javascripts/elfinder/img/volume_icon_network.png
94
+ - app/assets/javascripts/elfinder/img/volume_icon_network.svg
95
+ - app/assets/javascripts/elfinder/img/volume_icon_onedrive.png
96
+ - app/assets/javascripts/elfinder/img/volume_icon_onedrive.svg
97
+ - app/assets/javascripts/elfinder/img/volume_icon_sql.png
98
+ - app/assets/javascripts/elfinder/img/volume_icon_sql.svg
99
+ - app/assets/javascripts/elfinder/img/volume_icon_trash.png
100
+ - app/assets/javascripts/elfinder/img/volume_icon_trash.svg
101
+ - app/assets/javascripts/elfinder/img/volume_icon_zip.png
102
+ - app/assets/javascripts/elfinder/img/volume_icon_zip.svg
103
+ - app/assets/javascripts/elfinder/js/elfinder.full.js
104
+ - app/assets/javascripts/elfinder/js/elfinder.min.js
105
+ - app/assets/javascripts/elfinder/js/extras/editors.default.js
106
+ - app/assets/javascripts/elfinder/js/extras/editors.default.min.js
107
+ - app/assets/javascripts/elfinder/js/extras/quicklook.googledocs.js
108
+ - app/assets/javascripts/elfinder/js/extras/quicklook.googledocs.min.js
109
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.LANG.js
110
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ar.js
111
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.bg.js
112
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ca.js
113
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.cs.js
114
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.da.js
115
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.de.js
116
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.el.js
117
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.es.js
118
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.fa.js
119
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.fallback.js
120
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.fo.js
121
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.fr.js
122
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.fr_CA.js
123
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.he.js
124
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.hr.js
125
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.hu.js
126
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.id.js
127
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.it.js
128
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ja.js
129
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ko.js
130
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.nl.js
131
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.no.js
132
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.pl.js
133
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.pt_BR.js
134
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ro.js
135
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ru.js
136
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.si.js
137
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.sk.js
138
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.sl.js
139
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.sr.js
140
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.sv.js
141
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.tr.js
142
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.ug_CN.js
143
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.uk.js
144
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.vi.js
145
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.zh_CN.js
146
+ - app/assets/javascripts/elfinder/js/i18n/elfinder.zh_TW.js
147
+ - app/assets/javascripts/elfinder/js/i18n/help/cs.html.js
148
+ - app/assets/javascripts/elfinder/js/i18n/help/de.html.js
149
+ - app/assets/javascripts/elfinder/js/i18n/help/en.html.js
150
+ - app/assets/javascripts/elfinder/js/i18n/help/es.html.js
151
+ - app/assets/javascripts/elfinder/js/i18n/help/ja.html.js
152
+ - app/assets/javascripts/elfinder/js/i18n/help/ko.html.js
153
+ - app/assets/javascripts/elfinder/js/i18n/help/pl.html.js
154
+ - app/assets/javascripts/elfinder/js/i18n/help/ru.html.js
155
+ - app/assets/javascripts/elfinder/js/i18n/help/sk.html.js
156
+ - app/assets/javascripts/elfinder/js/i18n/help/tr.html.js
157
+ - app/assets/javascripts/elfinder/js/proxy/elFinderSupportVer1.js
158
+ - app/assets/javascripts/elfinder/js/worker/calcfilehash.js
159
+ - app/assets/javascripts/elfinder/js/worker/quicklook.tiff.js
160
+ - app/assets/javascripts/elfinder/js/worker/quicklook.unzip.js
161
+ - app/assets/javascripts/elfinder/main.default.js
162
+ - app/assets/javascripts/elfinder/package.json
163
+ - app/assets/javascripts/elfinder/php/MySQLStorage.sql
164
+ - app/assets/javascripts/elfinder/php/autoload.php
165
+ - app/assets/javascripts/elfinder/php/connector.maximal.php-dist
166
+ - app/assets/javascripts/elfinder/php/connector.minimal.php-dist
167
+ - app/assets/javascripts/elfinder/php/editors/OnlineConvert/editor.php
168
+ - app/assets/javascripts/elfinder/php/editors/ZipArchive/editor.php
169
+ - app/assets/javascripts/elfinder/php/editors/ZohoOffice/editor.php
170
+ - app/assets/javascripts/elfinder/php/editors/editor.php
171
+ - app/assets/javascripts/elfinder/php/elFinder.class.php
172
+ - app/assets/javascripts/elfinder/php/elFinderConnector.class.php
173
+ - app/assets/javascripts/elfinder/php/elFinderFlysystemGoogleDriveNetmount.php
174
+ - app/assets/javascripts/elfinder/php/elFinderPlugin.php
175
+ - app/assets/javascripts/elfinder/php/elFinderSession.php
176
+ - app/assets/javascripts/elfinder/php/elFinderSessionInterface.php
177
+ - app/assets/javascripts/elfinder/php/elFinderVolumeBox.class.php
178
+ - app/assets/javascripts/elfinder/php/elFinderVolumeDriver.class.php
179
+ - app/assets/javascripts/elfinder/php/elFinderVolumeDropbox.class.php
180
+ - app/assets/javascripts/elfinder/php/elFinderVolumeDropbox2.class.php
181
+ - app/assets/javascripts/elfinder/php/elFinderVolumeFTP.class.php
182
+ - app/assets/javascripts/elfinder/php/elFinderVolumeGoogleDrive.class.php
183
+ - app/assets/javascripts/elfinder/php/elFinderVolumeGroup.class.php
184
+ - app/assets/javascripts/elfinder/php/elFinderVolumeLocalFileSystem.class.php
185
+ - app/assets/javascripts/elfinder/php/elFinderVolumeMySQL.class.php
186
+ - app/assets/javascripts/elfinder/php/elFinderVolumeOneDrive.class.php
187
+ - app/assets/javascripts/elfinder/php/elFinderVolumeSFTPphpseclib.class.php
188
+ - app/assets/javascripts/elfinder/php/elFinderVolumeTrash.class.php
189
+ - app/assets/javascripts/elfinder/php/elFinderVolumeTrashMySQL.class.php
190
+ - app/assets/javascripts/elfinder/php/libs/GdBmp.php
191
+ - app/assets/javascripts/elfinder/php/mime.types
192
+ - app/assets/javascripts/elfinder/php/plugins/AutoResize/plugin.php
193
+ - app/assets/javascripts/elfinder/php/plugins/AutoRotate/plugin.php
194
+ - app/assets/javascripts/elfinder/php/plugins/Normalizer/plugin.php
195
+ - app/assets/javascripts/elfinder/php/plugins/Sanitizer/plugin.php
196
+ - app/assets/javascripts/elfinder/php/plugins/Watermark/logo.png
197
+ - app/assets/javascripts/elfinder/php/plugins/Watermark/plugin.php
198
+ - app/assets/javascripts/elfinder/php/plugins/WinRemoveTailDots/plugin.php
199
+ - app/assets/javascripts/elfinder/php/resources/image.png
200
+ - app/assets/javascripts/elfinder/php/resources/video.png
201
+ - app/assets/javascripts/elfinder/sounds/rm.wav
202
+ - app/controllers/dc_elfinder_controller.rb
203
+ - app/models/drgcms_form_fields/elfinder.rb
204
+ - changelog.md
205
+ - lib/drg_elfinder.rb
206
+ - lib/drg_elfinder/engine.rb
207
+ - lib/drg_elfinder/version.rb
208
+ - lib/el_finder.rb
209
+ - lib/el_finder/action.rb
210
+ - lib/el_finder/base64.rb
211
+ - lib/el_finder/connector.rb
212
+ - lib/el_finder/image.rb
213
+ - lib/el_finder/mime_type.rb
214
+ - lib/el_finder/pathname.rb
215
+ - lib/el_finder/version.rb
216
+ - lib/patches/patch_for_elfinder.rb
217
+ - lib/tasks/drg_elfinder_tasks.rake
218
+ homepage: https://www.drgcms.org
219
+ licenses:
220
+ - MIT
221
+ metadata:
222
+ homepage_uri: https://www.drgcms.org
223
+ source_code_uri: https://github.com/drg-cms/drg-elfinder
224
+ changelog_uri: https://github.com/drg-cms/drg-elfinder/changelog.md
225
+ post_install_message:
226
+ rdoc_options: []
227
+ require_paths:
228
+ - lib
229
+ required_ruby_version: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: '0'
234
+ required_rubygems_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ requirements:
240
+ - ImageMagick
241
+ rubygems_version: 3.3.15
242
+ signing_key:
243
+ specification_version: 4
244
+ summary: ElFinder file manager for web. DRG Forms plugin.
245
+ test_files: []