rails_admin_tinymce 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.
- checksums.yaml +7 -0
- data/README.md +75 -0
- data/Rakefile +3 -0
- data/app/assets/javascripts/tinymce.rails_admin.js.erb +45 -0
- data/app/views/rails_admin/main/_form_tinymce.html.erb +8 -0
- data/lib/rails_admin_tinymce/engine.rb +7 -0
- data/lib/rails_admin_tinymce/version.rb +3 -0
- data/lib/rails_admin_tinymce.rb +47 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cedeeebac43b6f1eda386c61daf29c77da7d33792d3adbed2e7c8faffbbd6722
|
4
|
+
data.tar.gz: 54c02a14c7b1470d5beaf41eec8d0eab756f502c821aeecce1356334ce2da02d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5292d6114ba5cd034a5d5d210484eee4c718050ecc05a40915bdd181242a470d238cc062309eaa07720f98e9f137b88f696673c9c673ad4be4301348ce4c3d4c
|
7
|
+
data.tar.gz: a1e93c814d958cd97314fa4a752d43bc73ed305ef803975540031825aff8d5b9fb2a9e9ae173042aa007e6d276652e82257f562556c959146fd581182fe2d41d
|
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# TinyMCE plugin for `rails_admin`
|
2
|
+
|
3
|
+
[](https://badge.fury.io/rb/rails_admin_tinymce)
|
4
|
+
|
5
|
+
[RailsAdmin](https://github.com/sferik/rails_admin) extension for enabling the [TinyMCE](https://www.tiny.cloud/) editor.
|
6
|
+
|
7
|
+
- Does not yet support ActiveStorage for image/files.
|
8
|
+
- Tested with [tinymce-rails](https://github.com/spohlenz/tinymce-rails) 6.7.2.
|
9
|
+
- Turbo Drive is supported (even though tinymce-rails doesn't support it yet).
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
To enable **rails_admin_tinymce**, add the following to your `Gemfile`:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'rails_admin'
|
17
|
+
gem 'rails_admin_tinymce'
|
18
|
+
```
|
19
|
+
|
20
|
+
Then create `config/tinymce.yml` according to step 2 of [tinymce-rails' instructions](https://github.com/spohlenz/tinymce-rails#instructions).
|
21
|
+
|
22
|
+
Finally make sure the TinyMCE Javascript is loaded. That may differ depending on how you're using Javascript in Ruby on Rails.
|
23
|
+
|
24
|
+
### Importmap
|
25
|
+
|
26
|
+
Add to `importmap.rails_admin.rb`:
|
27
|
+
|
28
|
+
```rb
|
29
|
+
pin 'tinymce'
|
30
|
+
pin 'tinymce.rails_admin'
|
31
|
+
```
|
32
|
+
|
33
|
+
Add to `rails_admin.js`:
|
34
|
+
|
35
|
+
```javascript
|
36
|
+
import 'tinymce';
|
37
|
+
import 'tinymce.rails_admin';
|
38
|
+
```
|
39
|
+
|
40
|
+
### Bundler
|
41
|
+
|
42
|
+
TODO
|
43
|
+
|
44
|
+
## Configuration
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
RailsAdmin.config do |config|
|
48
|
+
config.model Team do
|
49
|
+
edit do
|
50
|
+
field :description, :tinymce
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
Or, you can provide more options to customize:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
RailsAdmin.config do |config|
|
60
|
+
config.model Team do
|
61
|
+
edit do
|
62
|
+
field :description, :tinymce do
|
63
|
+
# choose another configuration set from tinymce.yml
|
64
|
+
config 'alternate'
|
65
|
+
# or override specific options, see https://www.tiny.cloud/docs/tinymce/6/basic-setup/
|
66
|
+
options ({ plugins: [:image, :link] })
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
```
|
72
|
+
|
73
|
+
## License
|
74
|
+
|
75
|
+
The gem is available as open source under the terms of the [MIT License](LICENSE).
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
// assumes we are loaded after TinyMCERails
|
2
|
+
<% TinyMCE::Rails.each_configuration do |name, config| %>
|
3
|
+
TinyMCERails.configuration.<%= name %> = <%= config.to_javascript %>;
|
4
|
+
<% end %>
|
5
|
+
|
6
|
+
(function() {
|
7
|
+
function initTinyMCERails() {
|
8
|
+
// get config and options from data attributes
|
9
|
+
document.querySelectorAll('[data-tinymce-config]').forEach(function (el) {
|
10
|
+
var config = el.getAttribute('data-tinymce-config');
|
11
|
+
var options = JSON.parse(el.getAttribute('data-tinymce-options') || '{}');
|
12
|
+
// override selector, we already have the element
|
13
|
+
options.selector = null;
|
14
|
+
options.target = el;
|
15
|
+
TinyMCERails.initialize(config, options);
|
16
|
+
});
|
17
|
+
}
|
18
|
+
|
19
|
+
// Setup TinyMCE after first page load
|
20
|
+
document.addEventListener('DOMContentLoaded', function() {
|
21
|
+
initTinyMCERails();
|
22
|
+
});
|
23
|
+
// Make Turbo work
|
24
|
+
if (typeof Turbo != 'undefined' && Turbo.session.enabled) {
|
25
|
+
// Remove all TinyMCE instances before moving away
|
26
|
+
document.addEventListener('turbo:before-fetch-response', function() {
|
27
|
+
tinymce.remove();
|
28
|
+
});
|
29
|
+
// Reload TinyMCE after new content is loaded
|
30
|
+
document.addEventListener('turbo:load', function() {
|
31
|
+
initTinyMCERails();
|
32
|
+
});
|
33
|
+
}
|
34
|
+
// Make Turbolinks work
|
35
|
+
if (typeof Turbolinks != 'undefined' && Turbolinks.supported) {
|
36
|
+
// Remove all TinyMCE instances before initializing again
|
37
|
+
document.addEventListener('turbolinks:before-render', function() {
|
38
|
+
tinymce.remove();
|
39
|
+
});
|
40
|
+
// Reload TinyMCE after new content is loaded
|
41
|
+
document.addEventListener('turbolinks:load', function() {
|
42
|
+
initTinyMCERails();
|
43
|
+
});
|
44
|
+
}
|
45
|
+
})();
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%
|
2
|
+
data_attrs = field.html_attributes.fetch('data', {})
|
3
|
+
html_attrs = field.html_attributes.reverse_merge(data: data_attrs.reverse_merge({
|
4
|
+
'tinymce-config' => field.config,
|
5
|
+
'tinymce-options' => field.options.to_json
|
6
|
+
}))
|
7
|
+
%>
|
8
|
+
<%= form.text_area field.method_name, html_attrs.reverse_merge({ value: field.form_value }) %>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "rails_admin_tinymce/version"
|
2
|
+
require "rails_admin_tinymce/engine"
|
3
|
+
require "tinymce-rails"
|
4
|
+
|
5
|
+
module RailsAdminTinymce
|
6
|
+
# Your code goes here...
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rails_admin/config/fields'
|
10
|
+
require 'rails_admin/config/fields/base'
|
11
|
+
|
12
|
+
module RailsAdmin
|
13
|
+
module Config
|
14
|
+
module Fields
|
15
|
+
module Types
|
16
|
+
class Tinymce < Text
|
17
|
+
# Register field type for the type loader
|
18
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
19
|
+
|
20
|
+
register_instance_option :config do
|
21
|
+
:default
|
22
|
+
end
|
23
|
+
|
24
|
+
register_instance_option :options do
|
25
|
+
{}
|
26
|
+
end
|
27
|
+
|
28
|
+
register_instance_option :partial do
|
29
|
+
:form_tinymce
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
39
|
+
if properties.name == :tinymce
|
40
|
+
fields << RailsAdmin::Config::Fields::Types::Tinymce.new(parent, properties.name, properties)
|
41
|
+
true
|
42
|
+
else
|
43
|
+
false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails_admin_tinymce
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- wvengen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-11-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 5.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: 5.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rails_admin
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: tinymce-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
|
+
description: ''
|
56
|
+
email:
|
57
|
+
- dev-rails@willem.engen.nl
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- README.md
|
63
|
+
- Rakefile
|
64
|
+
- app/assets/javascripts/tinymce.rails_admin.js.erb
|
65
|
+
- app/views/rails_admin/main/_form_tinymce.html.erb
|
66
|
+
- lib/rails_admin_tinymce.rb
|
67
|
+
- lib/rails_admin_tinymce/engine.rb
|
68
|
+
- lib/rails_admin_tinymce/version.rb
|
69
|
+
homepage: https://github.com/wvengen/rails_admin_tinymce
|
70
|
+
licenses: []
|
71
|
+
metadata:
|
72
|
+
homepage_uri: https://github.com/wvengen/rails_admin_tinymce
|
73
|
+
source_code_uri: https://github.com/wvengen/rails_admin_tinymce
|
74
|
+
changelog_uri: https://github.com/wvengen/rails_admin_tinymce/releases
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options: []
|
77
|
+
require_paths:
|
78
|
+
- lib
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
requirements: []
|
90
|
+
rubygems_version: 3.4.21
|
91
|
+
signing_key:
|
92
|
+
specification_version: 4
|
93
|
+
summary: TinyMCE editor for rails_admin
|
94
|
+
test_files: []
|