rails_admin_tinymce 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []