ckeditor_wave 2.0.7 → 2.0.8
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 +4 -4
- data/README.md +2 -12
- data/app/assets/javascripts/ckeditor_wave.js +1 -1
- data/app/assets/javascripts/ckeditor_wave_src.js +60 -58
- data/app/controllers/ckeditor_wave/ck_images_controller.rb +4 -12
- data/app/models/ckeditor_wave/ck_image.rb +1 -0
- data/app/uploaders/ckeditor_wave/ck_image_uploader.rb +2 -2
- data/config/routes.rb +2 -4
- data/lib/ckeditor_wave/version.rb +1 -1
- data/lib/ckeditor_wave.rb +0 -2
- metadata +14 -20
- data/.gitignore +0 -9
- data/Gemfile +0 -6
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/ckeditor_wave.gemspec +0 -31
- data/db/migrate/migration.rb +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ff96ab447af708dd508293df7242e11e754661a30f0e4fff9d8376d9974c2f2e
|
|
4
|
+
data.tar.gz: b521b5454254fe3ac9ef66d147396ca9838723a5f07ce68113ad16a93dca7c49
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6269a1e18c2192c993a88d16c1b1a24a3b13292876efabf44ddfc49a3c13d886a258701dba5a1454eed26b4c8b547caddad40ac7c989208a7eb7803cf9207eab
|
|
7
|
+
data.tar.gz: 225bd23f48ff0809ef141c97dac765945cfcd97f3801f40d4c21edade51aed23ff9e8be374a35fbfb0732c32b2dece901069916d28dbb34e39c3a3badcab7996
|
data/README.md
CHANGED
|
@@ -7,17 +7,13 @@ This gem integrates [CKEditor 5](https://docs.ckeditor.com/ckeditor5/) with [Car
|
|
|
7
7
|
Add this line to your application's Gemfile:
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
gem 'ckeditor_wave', '~> 2.
|
|
10
|
+
gem 'ckeditor_wave', '~> 2.1'
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
And then execute:
|
|
14
14
|
|
|
15
15
|
$ bundle
|
|
16
16
|
|
|
17
|
-
Or install it yourself as:
|
|
18
|
-
|
|
19
|
-
$ gem install ckeditor_wave
|
|
20
|
-
|
|
21
17
|
To generate and execute the migration, run:
|
|
22
18
|
|
|
23
19
|
$ rails g ckeditor_wave
|
|
@@ -29,12 +25,6 @@ Add the following at the bottom of your application.js:
|
|
|
29
25
|
//= require ckeditor_wave
|
|
30
26
|
```
|
|
31
27
|
|
|
32
|
-
Add the following to your routes.rb file:
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
mount CkeditorWave::Engine => 'ckeditor_wave'
|
|
36
|
-
```
|
|
37
|
-
|
|
38
28
|
|
|
39
29
|
To attach [CKEditor 5](https://docs.ckeditor.com/ckeditor5/) to HTML forms, call the initiateCkeditor() function inside your application.js by wrapping in in a DOMContentLoaded EventListener and giving it one or more CSS selectors as arguments. For example:
|
|
40
30
|
|
|
@@ -45,7 +35,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
45
35
|
```
|
|
46
36
|
|
|
47
37
|
## Dependencies
|
|
48
|
-
* [CKEditor 5](https://docs.ckeditor.com/ckeditor5/) - classic editor build
|
|
38
|
+
* [CKEditor 5](https://docs.ckeditor.com/ckeditor5/) - classic editor build 12.1.0
|
|
49
39
|
* [CarrierWave](https://github.com/carrierwaveuploader/carrierwave) - version ~> 1.2
|
|
50
40
|
|
|
51
41
|
To install [CKEditor 5](https://docs.ckeditor.com/ckeditor5/), download the 'classic editor build 10.0.1' ZIP package from [this link](https://ckeditor.com/ckeditor-5/download/) and insert the ckeditor.js file inside you app/assets/javascripts folder. Alternatively, you can use the CDN also available from the [same link](https://ckeditor.com/ckeditor-5/download/).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";function _instanceof(e,n){return null!=n&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?n[Symbol.hasInstance](e):e instanceof n}function _classCallCheck(e,n){if(!_instanceof(e,n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,n,t){return n&&_defineProperties(e.prototype,n),t&&_defineProperties(e,t),e}var initiateCkeditor=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];Array.from(n).forEach(function(e){newEditor(e)})},newEditor=function(e){var n=document.querySelector(e);if(null===n)return!1;try{ClassicEditor.create(n).then(function(e){e.plugins.get("FileRepository").createUploadAdapter=function(e){return new UploadAdapter(e)}}).catch(function(e){console.error(e)})}catch(e){console.log(e),console.log("Is ckeditor.js included?","https://ckeditor.com/ckeditor-5/download/")}},UploadAdapter=function(){function e(n){_classCallCheck(this,e),this.loader=n}return _createClass(e,[{key:"upload",value:function(){var e=this;return this.loader.file.then(function(n){return new Promise(function(t,r){e._initRequest(),e._initListeners(t,r,n),e._sendRequest(n)})})}},{key:"abort",value:function(){this.xhr&&this.xhr.abort()}},{key:"_initRequest",value:function(){var e=this.xhr=new XMLHttpRequest;e.open("POST","/ckeditor_wave/ck_images",!0),e.responseType="json"}},{key:"_initListeners",value:function(e,n,t){var r=this.xhr,o=this.loader,a="Couldn't upload file: ".concat(t.name,".");r.addEventListener("error",function(){return n(a)}),r.addEventListener("abort",function(){return n()}),r.addEventListener("load",function(){var t=r.response;if(!t||t.error)return n(t&&t.error?t.error.message:a);e({default:t.url})}),r.upload&&r.upload.addEventListener("progress",function(e){e.lengthComputable&&(o.uploadTotal=e.total,o.uploaded=e.loaded)})}},{key:"_sendRequest",value:function(e){var n=new FormData;n.append("ck_image",e),this.xhr.send(n)}}]),e}();
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
const initiateCkeditor = (...args) => {
|
|
2
|
+
const editor_ids = Array.from(args);
|
|
3
|
+
|
|
4
|
+
editor_ids.forEach(function(editor_id){
|
|
5
|
+
newEditor(editor_id);
|
|
6
|
+
});
|
|
6
7
|
}
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const newEditor = (editor_id) => {
|
|
10
|
+
const ck_editor = document.querySelector(editor_id);
|
|
11
|
+
|
|
12
|
+
if (ck_editor === null)
|
|
13
|
+
return false;
|
|
10
14
|
|
|
11
|
-
if (ck_editor === null) return false;
|
|
12
15
|
try{
|
|
13
16
|
ClassicEditor
|
|
14
17
|
.create(ck_editor)
|
|
@@ -16,14 +19,6 @@ function newEditor(ck_editor) {
|
|
|
16
19
|
editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {
|
|
17
20
|
return new UploadAdapter(loader);
|
|
18
21
|
};
|
|
19
|
-
|
|
20
|
-
ck_editor.nextSibling.querySelector('.ck-content').addEventListener(
|
|
21
|
-
'DOMNodeRemoved', (event) => {
|
|
22
|
-
var element = event.target;
|
|
23
|
-
var classes = element.className.split(' ');
|
|
24
|
-
if (classes.includes('image'))
|
|
25
|
-
server.destroy(id(element.children[0]));
|
|
26
|
-
});
|
|
27
22
|
})
|
|
28
23
|
.catch(error => {
|
|
29
24
|
console.error(error);
|
|
@@ -35,54 +30,61 @@ function newEditor(ck_editor) {
|
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
class UploadAdapter {
|
|
38
|
-
constructor(loader) {
|
|
33
|
+
constructor( loader ) {
|
|
39
34
|
this.loader = loader;
|
|
40
35
|
}
|
|
36
|
+
|
|
41
37
|
upload() {
|
|
42
|
-
return
|
|
38
|
+
return this.loader.file
|
|
39
|
+
.then(file => new Promise((resolve, reject) => {
|
|
40
|
+
this._initRequest();
|
|
41
|
+
this._initListeners(resolve, reject, file);
|
|
42
|
+
this._sendRequest(file);
|
|
43
|
+
}));
|
|
43
44
|
}
|
|
44
|
-
}
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
46
|
+
abort() {
|
|
47
|
+
if (this.xhr)
|
|
48
|
+
this.xhr.abort();
|
|
49
|
+
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (xhr.readyState === 4 && xhr.status !== 200)
|
|
57
|
-
reject('Image upload failed');
|
|
58
|
-
if (xhr.readyState === 4 && xhr.status === 200) {
|
|
59
|
-
resolve({
|
|
60
|
-
default: xhr.responseText
|
|
61
|
-
});
|
|
62
|
-
console.log('Image upload successful');
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
formData.set('ck_image', file);
|
|
66
|
-
xhr.open('POST', '/ckeditor_wave/ck_images');
|
|
67
|
-
xhr.send(formData);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
51
|
+
_initRequest() {
|
|
52
|
+
const xhr = this.xhr = new XMLHttpRequest();
|
|
53
|
+
xhr.open('POST', '/ckeditor_wave/ck_images', true);
|
|
54
|
+
xhr.responseType = 'json';
|
|
55
|
+
}
|
|
70
56
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
57
|
+
_initListeners(resolve, reject, file) {
|
|
58
|
+
const xhr = this.xhr;
|
|
59
|
+
const loader = this.loader;
|
|
60
|
+
const genericErrorText = `Couldn't upload file: ${file.name}.`;
|
|
61
|
+
|
|
62
|
+
xhr.addEventListener('error', () => reject(genericErrorText));
|
|
63
|
+
xhr.addEventListener('abort', () => reject());
|
|
64
|
+
xhr.addEventListener('load', () => {
|
|
65
|
+
const response = xhr.response;
|
|
66
|
+
|
|
67
|
+
if (!response || response.error)
|
|
68
|
+
return reject(response && response.error ? response.error.message : genericErrorText);
|
|
69
|
+
|
|
70
|
+
resolve({default: response.url});
|
|
71
|
+
});
|
|
84
72
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
73
|
+
// progress not being displayed currently
|
|
74
|
+
if (xhr.upload) {
|
|
75
|
+
xhr.upload.addEventListener('progress', evt => {
|
|
76
|
+
if (evt.lengthComputable) {
|
|
77
|
+
loader.uploadTotal = evt.total;
|
|
78
|
+
loader.uploaded = evt.loaded;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
_sendRequest(file) {
|
|
85
|
+
const data = new FormData();
|
|
86
|
+
|
|
87
|
+
data.append('ck_image', file);
|
|
88
|
+
this.xhr.send(data);
|
|
89
|
+
}
|
|
88
90
|
}
|
|
@@ -4,20 +4,12 @@ module CkeditorWave
|
|
|
4
4
|
|
|
5
5
|
def create
|
|
6
6
|
ck_image = CkImage.new(ck_image: params[:ck_image], uuid: SecureRandom.uuid)
|
|
7
|
-
if ck_image.save
|
|
8
|
-
render plain: ck_image.url
|
|
9
|
-
else
|
|
10
|
-
render plain: 'Image upload failed'
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
7
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if ck_image.destroy
|
|
17
|
-
render plain: 'Image deletion successful'
|
|
8
|
+
if ck_image.save
|
|
9
|
+
render json: { url: ck_image.url }
|
|
18
10
|
else
|
|
19
|
-
render
|
|
11
|
+
render head(500)
|
|
20
12
|
end
|
|
21
13
|
end
|
|
22
14
|
end
|
|
23
|
-
end
|
|
15
|
+
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module CkeditorWave
|
|
2
|
-
class CkImageUploader < CarrierWave::Uploader::Base
|
|
2
|
+
class CkImageUploader < ::CarrierWave::Uploader::Base
|
|
3
3
|
def store_dir
|
|
4
4
|
"uploads/#{model.class.to_s.pluralize.underscore}"
|
|
5
5
|
end
|
|
@@ -7,4 +7,4 @@ module CkeditorWave
|
|
|
7
7
|
"#{model.uuid}.jpg"
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
|
-
end
|
|
10
|
+
end
|
data/config/routes.rb
CHANGED
data/lib/ckeditor_wave.rb
CHANGED
metadata
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ckeditor_wave
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Evgeni Radev
|
|
8
8
|
autorequire:
|
|
9
|
-
bindir:
|
|
9
|
+
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-06-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: carrierwave
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.
|
|
20
|
-
type: :
|
|
19
|
+
version: '1.2'
|
|
20
|
+
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.
|
|
26
|
+
version: '1.2'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: bundler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '1.16'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '1.16'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '10.0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '10.0'
|
|
55
55
|
description:
|
|
56
56
|
email:
|
|
57
57
|
- evgeniradev@gmail.com
|
|
@@ -59,8 +59,6 @@ executables: []
|
|
|
59
59
|
extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
|
61
61
|
files:
|
|
62
|
-
- ".gitignore"
|
|
63
|
-
- Gemfile
|
|
64
62
|
- LICENSE
|
|
65
63
|
- README.md
|
|
66
64
|
- Rakefile
|
|
@@ -69,11 +67,7 @@ files:
|
|
|
69
67
|
- app/controllers/ckeditor_wave/ck_images_controller.rb
|
|
70
68
|
- app/models/ckeditor_wave/ck_image.rb
|
|
71
69
|
- app/uploaders/ckeditor_wave/ck_image_uploader.rb
|
|
72
|
-
- bin/console
|
|
73
|
-
- bin/setup
|
|
74
|
-
- ckeditor_wave.gemspec
|
|
75
70
|
- config/routes.rb
|
|
76
|
-
- db/migrate/migration.rb
|
|
77
71
|
- lib/ckeditor_wave.rb
|
|
78
72
|
- lib/ckeditor_wave/version.rb
|
|
79
73
|
- lib/generators/ckeditor_wave_generator.rb
|
|
@@ -98,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
98
92
|
version: '0'
|
|
99
93
|
requirements: []
|
|
100
94
|
rubyforge_project:
|
|
101
|
-
rubygems_version: 2.7.
|
|
95
|
+
rubygems_version: 2.7.9
|
|
102
96
|
signing_key:
|
|
103
97
|
specification_version: 4
|
|
104
98
|
summary: This gem integrates CKEditor 5 with CarrierWave to allow image upload.
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/bin/console
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "ckeditor_wave"
|
|
5
|
-
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
-
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
-
# require "pry"
|
|
11
|
-
# Pry.start
|
|
12
|
-
|
|
13
|
-
require "irb"
|
|
14
|
-
IRB.start(__FILE__)
|
data/bin/setup
DELETED
data/ckeditor_wave.gemspec
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require 'ckeditor_wave/version'
|
|
4
|
-
|
|
5
|
-
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name = 'ckeditor_wave'
|
|
7
|
-
spec.version = CkeditorWave::VERSION
|
|
8
|
-
spec.authors = ['Evgeni Radev']
|
|
9
|
-
spec.email = ['evgeniradev@gmail.com']
|
|
10
|
-
spec.summary = %q{This gem integrates CKEditor 5 with CarrierWave to allow image upload.}
|
|
11
|
-
spec.homepage = 'https://github.com/evgeniradev/ckeditor_wave'
|
|
12
|
-
spec.license = 'GPL-3.0+'
|
|
13
|
-
|
|
14
|
-
if spec.respond_to?(:metadata)
|
|
15
|
-
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
|
16
|
-
else
|
|
17
|
-
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
|
18
|
-
'public gem pushes.'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
22
|
-
f.match(%r{^(test|spec|features)/})
|
|
23
|
-
end
|
|
24
|
-
spec.bindir = 'exe'
|
|
25
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
26
|
-
spec.require_paths = ['lib']
|
|
27
|
-
|
|
28
|
-
spec.add_development_dependency 'bundler', '~> 1.16'
|
|
29
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
|
30
|
-
spec.add_development_dependency 'carrierwave', '~> 1.2'
|
|
31
|
-
end
|