drg_elfinder 0.1.0

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