el_finder2 0.1.1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +22 -0
- data/app/assets/javascripts/el_finder2/application.js +13 -0
- data/app/assets/stylesheets/el_finder2/application.css +15 -0
- data/app/controllers/el_finder2/application_controller.rb +4 -0
- data/app/controllers/el_finder2/el_finder_controller.rb +12 -0
- data/app/models/el_finder2/document.rb +9 -0
- data/app/models/el_finder2/file.rb +28 -0
- data/app/models/el_finder2/folder.rb +9 -0
- data/app/models/el_finder2/image.rb +16 -0
- data/app/serializers/el_finder2/document_serializer.rb +9 -0
- data/app/serializers/el_finder2/file_serializer.rb +41 -0
- data/app/serializers/el_finder2/folder_serializer.rb +30 -0
- data/app/serializers/el_finder2/image_serializer.rb +13 -0
- data/config/routes.rb +4 -0
- data/db/migrate/20151130180935_create_files.rb +14 -0
- data/db/migrate/20151130191903_create_el_finder2_file_hierarchies.rb +16 -0
- data/db/migrate.old/20151124151257_create_el_finder2_folders.rb +11 -0
- data/db/migrate.old/20151124160017_create_el_finder2_files.rb +13 -0
- data/db/migrate.old/20151124170526_create_el_finder2_folder_hierarchies.rb +16 -0
- data/lib/el_finder2/command/base.rb +22 -0
- data/lib/el_finder2/command/dim.rb +26 -0
- data/lib/el_finder2/command/duplicate.rb +26 -0
- data/lib/el_finder2/command/file.rb +61 -0
- data/lib/el_finder2/command/mkdir.rb +33 -0
- data/lib/el_finder2/command/open.rb +134 -0
- data/lib/el_finder2/command/parents.rb +31 -0
- data/lib/el_finder2/command/rename.rb +29 -0
- data/lib/el_finder2/command/resize.rb +36 -0
- data/lib/el_finder2/command/rm.rb +23 -0
- data/lib/el_finder2/command/size.rb +29 -0
- data/lib/el_finder2/command/tmb.rb +23 -0
- data/lib/el_finder2/command/tree.rb +25 -0
- data/lib/el_finder2/command/upload.rb +84 -0
- data/lib/el_finder2/command.rb +34 -0
- data/lib/el_finder2/engine.rb +23 -0
- data/lib/el_finder2/error.rb +9 -0
- data/lib/el_finder2/hash_utils.rb +22 -0
- data/lib/el_finder2/version.rb +3 -0
- data/lib/el_finder2.rb +10 -0
- data/lib/tasks/el_finder2_tasks.rake +4 -0
- metadata +267 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
# Returns all parent folders and its subfolders on required (in connector
|
4
|
+
# options) deep. This command is invoked when a directory is reloaded in
|
5
|
+
# the client. Data provided by 'parents' command should enable the correct
|
6
|
+
# drawing of tree hierarchy directories.
|
7
|
+
class Parents < Base
|
8
|
+
def execute
|
9
|
+
folders = ElFinder2::Folder.where(
|
10
|
+
'id IN (:ancestor_ids) OR parent_id IN (:ancestor_ids)',
|
11
|
+
ancestor_ids: @file.ancestor_ids
|
12
|
+
)
|
13
|
+
|
14
|
+
render json: {
|
15
|
+
tree: ActiveModel::ArraySerializer.new(folders).as_json
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
private def parse_params!(params)
|
20
|
+
target = params[:target]
|
21
|
+
fail ElFinder2::Error.new(%w(errCmdParams parents)) unless target
|
22
|
+
|
23
|
+
path = to_path(target)
|
24
|
+
|
25
|
+
@file = ElFinder2::File.find_by_path(path)
|
26
|
+
|
27
|
+
fail ElFinder2::Error.new('errFolderNotFound') unless @file
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
class Rename < Base
|
4
|
+
def execute
|
5
|
+
@file.name = @name
|
6
|
+
@file.save!
|
7
|
+
|
8
|
+
render json: {
|
9
|
+
added: ActiveModel::ArraySerializer.new([@file]).as_json,
|
10
|
+
removed: [@hash]
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
private def parse_params!(params)
|
15
|
+
@name, target = params.values_at(:name, :target)
|
16
|
+
|
17
|
+
fail ElFinder2::Error.new(%w(errCmdParams rename)) unless @name && target
|
18
|
+
|
19
|
+
path = to_path(target)
|
20
|
+
|
21
|
+
@file = ElFinder2::File.find_by_path(path)
|
22
|
+
|
23
|
+
fail ElFinder2::Error.new('errFileNotFound') unless @file
|
24
|
+
|
25
|
+
@hash = @file.path_hash
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
# Output file into browser. This command applies to download and preview
|
4
|
+
# actions.
|
5
|
+
class File < Base
|
6
|
+
# May need to set Content-Disposition, Content-Location and
|
7
|
+
# Content-Transfer-Encoding. Content-Disposition should have 'inline' for
|
8
|
+
# preview action or 'attachments' for download.
|
9
|
+
def execute
|
10
|
+
if @download
|
11
|
+
data = Paperclip.io_adapters.for(@file.content)
|
12
|
+
send_data(data.read, filename: @file.name, type: @file.content_type)
|
13
|
+
else
|
14
|
+
redirect_to @file.content.url
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Arguments:
|
19
|
+
# target : file's hash,
|
20
|
+
# download : Send headers to force download file instead of opening it in
|
21
|
+
# the browser.
|
22
|
+
private def parse_params!(params)
|
23
|
+
target = params[:target]
|
24
|
+
fail ElFinder2::Error.new(%w(errCmdParams file)) unless target
|
25
|
+
|
26
|
+
path = to_path(target)
|
27
|
+
|
28
|
+
@file = ElFinder2::File.find_by_path(path)
|
29
|
+
|
30
|
+
fail ElFinder2::Error.new('errFileNotFound') unless @file
|
31
|
+
|
32
|
+
@download = params[:download] == '1'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
class Rm < Base
|
4
|
+
def execute
|
5
|
+
files = @targets.flat_map(&:self_and_descendants).uniq
|
6
|
+
hashes = files.map(&:path_hash)
|
7
|
+
files.map(&:destroy)
|
8
|
+
|
9
|
+
render json: { removed: hashes }
|
10
|
+
end
|
11
|
+
|
12
|
+
private def parse_params!(params)
|
13
|
+
targets = params[:targets]
|
14
|
+
fail ElFinder2::Error.new(%w(errCmdParams rm)) unless targets.present?
|
15
|
+
|
16
|
+
@targets = targets
|
17
|
+
.map(&method(:to_path))
|
18
|
+
.map(&ElFinder2::File.method(:find_by_path))
|
19
|
+
.compact
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
# Returns the size of a directory or file.
|
4
|
+
class Size < Base
|
5
|
+
include ElFinder2::HashUtils
|
6
|
+
|
7
|
+
# Response:
|
8
|
+
# size: The total size for all the supplied targets.
|
9
|
+
def execute
|
10
|
+
size = @targets.sum(&:size)
|
11
|
+
|
12
|
+
render json: { size: size }
|
13
|
+
end
|
14
|
+
|
15
|
+
# Arguments:
|
16
|
+
# cmd : size
|
17
|
+
# targets[] : hash paths of the nodes
|
18
|
+
private def parse_params!(params)
|
19
|
+
targets = params[:targets]
|
20
|
+
fail ElFinder2::Error.new(%w(errCmdParams size)) unless targets.present?
|
21
|
+
|
22
|
+
@targets = targets.
|
23
|
+
map(&method(:to_path)).
|
24
|
+
map(&ElFinder2::File.method(:find_by_path)).
|
25
|
+
compact
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
class Tmb < Base
|
4
|
+
def execute
|
5
|
+
images = @targets.inject({}) do |hash, image|
|
6
|
+
hash[image.path_hash] = image.url(:thumb)
|
7
|
+
end
|
8
|
+
|
9
|
+
render json: { images: images }
|
10
|
+
end
|
11
|
+
|
12
|
+
private def parse_params!(params)
|
13
|
+
targets = params[:targets]
|
14
|
+
fail ElFinder2::Error.new(%w(errCmdParams tmb)) unless targets.present?
|
15
|
+
|
16
|
+
@targets = targets.
|
17
|
+
map(&method(:to_path)).
|
18
|
+
map(&ElFinder2::Image.method(:find_by_path)).
|
19
|
+
compact
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
class Tree < Base
|
4
|
+
def execute
|
5
|
+
children = @folder.children.where(type: 'ElFinder2::Folder')
|
6
|
+
|
7
|
+
render json: {
|
8
|
+
tree: ActiveModel::ArraySerializer.new(children).as_json
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
private def parse_params!(params)
|
13
|
+
target = params[:target]
|
14
|
+
|
15
|
+
fail ElFinder2::Error.new(%w(errCmdParams tree)) unless target
|
16
|
+
|
17
|
+
path = to_path(target)
|
18
|
+
|
19
|
+
@folder = ElFinder2::Folder.find_by_path(path)
|
20
|
+
|
21
|
+
fail ElFinder2::Error.new('errFolderNotFound') unless @folder
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module Command
|
3
|
+
# Process file upload requests. Client may request the upload of multiple
|
4
|
+
# files at once.
|
5
|
+
class Upload < Base
|
6
|
+
# Response: An array of successfully uploaded files if success, an error
|
7
|
+
# otherwise.
|
8
|
+
# added : (Array) of files that were successfully uploaded. Information
|
9
|
+
# about File/Directory
|
10
|
+
#
|
11
|
+
# If the files could not be loaded, return the following:
|
12
|
+
# {
|
13
|
+
# error: "Unable to upload files"
|
14
|
+
# }
|
15
|
+
#
|
16
|
+
# If at least one file has been uploaded, the response is
|
17
|
+
# Client-Server-API-2.1 # open and * select *. If not all files are
|
18
|
+
# uploaded, failures will be put in * error * and * errorData *:
|
19
|
+
# {
|
20
|
+
# // open
|
21
|
+
# // (Array) An array of hashes of the loaded paths
|
22
|
+
# select: [ "8d331825ebfbe1ddae14d314bf81a712" ],
|
23
|
+
# // (String) If not all files have been uploaded
|
24
|
+
# error: "Some files were not uploaded",
|
25
|
+
# // (Object) Info about the files that could not be uploaded
|
26
|
+
# errorData{
|
27
|
+
# // (String) "filename": "error"
|
28
|
+
# "some-file.exe": "Not allowed file type"
|
29
|
+
# }
|
30
|
+
# }
|
31
|
+
def execute
|
32
|
+
uploads = @uploads.map do |upload|
|
33
|
+
type = upload_type(upload)
|
34
|
+
attributes = type.upload_attributes(upload).merge(content: upload)
|
35
|
+
|
36
|
+
type.all.merge(@folder.children).
|
37
|
+
where(name: upload.original_filename).
|
38
|
+
first_or_initialize.
|
39
|
+
tap { |instance| instance.update_attributes(attributes) }
|
40
|
+
end
|
41
|
+
|
42
|
+
added, errored = uploads.partition(&:valid?)
|
43
|
+
|
44
|
+
response = { added: ActiveModel::ArraySerializer.new(added).as_json }
|
45
|
+
|
46
|
+
unless errored.empty?
|
47
|
+
response[:error] = 'Some files were not uploaded'
|
48
|
+
response[:errorData] = errored.map do |file|
|
49
|
+
{ file.name => file.errors.full_messages.to_sentence }
|
50
|
+
end.reduce(&:merge)
|
51
|
+
end
|
52
|
+
|
53
|
+
render json: response
|
54
|
+
end
|
55
|
+
|
56
|
+
# Arguments (HTTP POST):
|
57
|
+
# target : hash of the directory to upload to
|
58
|
+
# upload[] : array of multipart files to upload
|
59
|
+
private def parse_params!(params)
|
60
|
+
target, @uploads = params.values_at(:target, :upload)
|
61
|
+
|
62
|
+
fail ElFinder2::Error.new(%w(errCmdParams upload)) unless @uploads.present? && target
|
63
|
+
|
64
|
+
path = to_path(target)
|
65
|
+
|
66
|
+
@folder = ElFinder2::Folder.find_by_path(path)
|
67
|
+
|
68
|
+
fail ElFinder2::Error.new('errFolderNotFound') unless @folder
|
69
|
+
end
|
70
|
+
|
71
|
+
IMAGE_MIME_REGEX = /^(image|(x-)?application)\/(bmp|gif|p?jpeg|jpg|(x-)?png)$/
|
72
|
+
|
73
|
+
private def upload_type(upload)
|
74
|
+
mime_type = Paperclip::ContentTypeDetector.new(upload.path).detect
|
75
|
+
|
76
|
+
if mime_type =~ ElFinder2::IMAGE_MIME_REGEX
|
77
|
+
ElFinder2::Image
|
78
|
+
else
|
79
|
+
ElFinder2::Document
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'el_finder2/hash_utils'
|
2
|
+
require 'el_finder2/command/base'
|
3
|
+
# require 'el_finder2/command/dim'
|
4
|
+
require 'el_finder2/command/duplicate'
|
5
|
+
require 'el_finder2/command/file'
|
6
|
+
require 'el_finder2/command/mkdir'
|
7
|
+
require 'el_finder2/command/open'
|
8
|
+
require 'el_finder2/command/parents'
|
9
|
+
require 'el_finder2/command/rename'
|
10
|
+
require 'el_finder2/command/resize'
|
11
|
+
require 'el_finder2/command/rm'
|
12
|
+
require 'el_finder2/command/size'
|
13
|
+
require 'el_finder2/command/tmb'
|
14
|
+
require 'el_finder2/command/tree'
|
15
|
+
require 'el_finder2/command/upload'
|
16
|
+
|
17
|
+
module ElFinder2
|
18
|
+
module Command
|
19
|
+
def self.dispatch(controller, params)
|
20
|
+
verb = params.delete(:cmd)
|
21
|
+
|
22
|
+
fail ElFinder2::Error.new('No command specified') unless verb
|
23
|
+
|
24
|
+
command_class = verb.capitalize
|
25
|
+
command_implemented = const_defined?(command_class)
|
26
|
+
|
27
|
+
fail ElFinder2::Error.new("Unrecognized command: #{verb}") unless command_implemented
|
28
|
+
|
29
|
+
command = const_get(command_class)
|
30
|
+
|
31
|
+
command.new(controller, params).execute
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'el_finder2/error'
|
2
|
+
require 'el_finder2/command'
|
3
|
+
require 'el_finder2/engine'
|
4
|
+
|
5
|
+
module ElFinder2
|
6
|
+
class Engine < ::Rails::Engine
|
7
|
+
isolate_namespace ElFinder2
|
8
|
+
|
9
|
+
initializer :append_migrations do |app|
|
10
|
+
config.paths['db/migrate'].expanded.each do |path|
|
11
|
+
app.config.paths['db/migrate'] << path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
config.generators do |g|
|
16
|
+
g.test_framework :rspec
|
17
|
+
g.fixture_replacement :factory_girl, dir: 'spec/factories'
|
18
|
+
g.assets = false
|
19
|
+
g.helper = false
|
20
|
+
g.template_engine false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ElFinder2
|
2
|
+
module HashUtils
|
3
|
+
def from_base64url(hash)
|
4
|
+
padding = ['', '', '==', '='][hash.length % 4] # ensure input is padded
|
5
|
+
Base64.urlsafe_decode64(hash + padding)
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_base64url(string)
|
9
|
+
Base64.urlsafe_encode64(string).tr("=\n", '')
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_path(hash, default = nil)
|
13
|
+
volume_id, target = hash.split('_')
|
14
|
+
|
15
|
+
valid = volume_id == ElFinder2::VOLUME_ID && target
|
16
|
+
|
17
|
+
valid && from_base64url(target) || default
|
18
|
+
rescue ArgumentError
|
19
|
+
default
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/el_finder2.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'active_model_serializers'
|
2
|
+
require 'closure_tree'
|
3
|
+
require 'paperclip'
|
4
|
+
require 'el_finder2/engine'
|
5
|
+
|
6
|
+
module ElFinder2
|
7
|
+
API_VERSION = '2.1'
|
8
|
+
VOLUME_ID = 'v0'
|
9
|
+
IMAGE_MIME_REGEX = /\A(image|(x-)?application)\/(bmp|gif|p?jpeg|jpg|(x-)?png)\Z/
|
10
|
+
end
|
metadata
ADDED
@@ -0,0 +1,267 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: el_finder2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- QuintEvents
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: active_model_serializers
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: closure_tree
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jquery-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: jquery-ui-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: paperclip
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 4.2.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 4.2.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: awesome_print
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: aws-sdk-v1
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: factory_girl_rails
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: pg
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: pry-rails
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec-rails
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rubocop
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
description: ElFinder 2, Rails 4, and Paperclip
|
196
|
+
email:
|
197
|
+
- dev@quintevents.com
|
198
|
+
executables: []
|
199
|
+
extensions: []
|
200
|
+
extra_rdoc_files: []
|
201
|
+
files:
|
202
|
+
- MIT-LICENSE
|
203
|
+
- Rakefile
|
204
|
+
- app/assets/javascripts/el_finder2/application.js
|
205
|
+
- app/assets/stylesheets/el_finder2/application.css
|
206
|
+
- app/controllers/el_finder2/application_controller.rb
|
207
|
+
- app/controllers/el_finder2/el_finder_controller.rb
|
208
|
+
- app/models/el_finder2/document.rb
|
209
|
+
- app/models/el_finder2/file.rb
|
210
|
+
- app/models/el_finder2/folder.rb
|
211
|
+
- app/models/el_finder2/image.rb
|
212
|
+
- app/serializers/el_finder2/document_serializer.rb
|
213
|
+
- app/serializers/el_finder2/file_serializer.rb
|
214
|
+
- app/serializers/el_finder2/folder_serializer.rb
|
215
|
+
- app/serializers/el_finder2/image_serializer.rb
|
216
|
+
- config/routes.rb
|
217
|
+
- db/migrate.old/20151124151257_create_el_finder2_folders.rb
|
218
|
+
- db/migrate.old/20151124160017_create_el_finder2_files.rb
|
219
|
+
- db/migrate.old/20151124170526_create_el_finder2_folder_hierarchies.rb
|
220
|
+
- db/migrate/20151130180935_create_files.rb
|
221
|
+
- db/migrate/20151130191903_create_el_finder2_file_hierarchies.rb
|
222
|
+
- lib/el_finder2.rb
|
223
|
+
- lib/el_finder2/command.rb
|
224
|
+
- lib/el_finder2/command/base.rb
|
225
|
+
- lib/el_finder2/command/dim.rb
|
226
|
+
- lib/el_finder2/command/duplicate.rb
|
227
|
+
- lib/el_finder2/command/file.rb
|
228
|
+
- lib/el_finder2/command/mkdir.rb
|
229
|
+
- lib/el_finder2/command/open.rb
|
230
|
+
- lib/el_finder2/command/parents.rb
|
231
|
+
- lib/el_finder2/command/rename.rb
|
232
|
+
- lib/el_finder2/command/resize.rb
|
233
|
+
- lib/el_finder2/command/rm.rb
|
234
|
+
- lib/el_finder2/command/size.rb
|
235
|
+
- lib/el_finder2/command/tmb.rb
|
236
|
+
- lib/el_finder2/command/tree.rb
|
237
|
+
- lib/el_finder2/command/upload.rb
|
238
|
+
- lib/el_finder2/engine.rb
|
239
|
+
- lib/el_finder2/error.rb
|
240
|
+
- lib/el_finder2/hash_utils.rb
|
241
|
+
- lib/el_finder2/version.rb
|
242
|
+
- lib/tasks/el_finder2_tasks.rake
|
243
|
+
homepage: https://bitbucket.org/quintevents/camaleon_media_paperclip
|
244
|
+
licenses:
|
245
|
+
- MIT
|
246
|
+
metadata: {}
|
247
|
+
post_install_message:
|
248
|
+
rdoc_options: []
|
249
|
+
require_paths:
|
250
|
+
- lib
|
251
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
252
|
+
requirements:
|
253
|
+
- - ">="
|
254
|
+
- !ruby/object:Gem::Version
|
255
|
+
version: '0'
|
256
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
|
+
requirements:
|
258
|
+
- - ">="
|
259
|
+
- !ruby/object:Gem::Version
|
260
|
+
version: '0'
|
261
|
+
requirements: []
|
262
|
+
rubyforge_project:
|
263
|
+
rubygems_version: 2.4.8
|
264
|
+
signing_key:
|
265
|
+
specification_version: 4
|
266
|
+
summary: ElFinder 2, Rails 4, and Paperclip
|
267
|
+
test_files: []
|