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 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
+ [![Gem Version](https://badge.fury.io/rb/rails_admin_tinymce.svg)](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,3 @@
1
+ require "bundler/setup"
2
+
3
+ require "bundler/gem_tasks"
@@ -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,7 @@
1
+ module RailsAdminTinymce
2
+ class Railtie < ::Rails::Engine
3
+ initializer "RailsAdminTinyMCE precompile hook", group: :all do |app|
4
+ app.config.assets.precompile += ['tinymce.rails_admin.js']
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module RailsAdminTinymce
2
+ VERSION = "0.1.0"
3
+ end
@@ -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: []