GithubHelp home page GithubHelp logo

spohlenz / tinymce-rails Goto Github PK

View Code? Open in Web Editor NEW
812.0 18.0 256.0 29.87 MB

Integration of TinyMCE with the Rails asset pipeline

License: Other

Ruby 5.34% JavaScript 94.37% HTML 0.28%
rails ruby tinymce

tinymce-rails's Introduction

Rails Integration for TinyMCE

The tinymce-rails gem integrates the TinyMCE editor with the Rails asset pipeline.

This gem is compatible with Rails 5.0 and higher.

This is the branch for TinyMCE 7.
Please see alternate branches for TinyMCE 6, TinyMCE 5, TinyMCE 4 & TinyMCE 3.5.x.

Important

Please note that as of version 7, TinyMCE (and therefore this project) is now licensed under the GPL.

Build Status

Instructions

1. Add tinymce-rails to your Gemfile

gem 'tinymce-rails'

Be sure to add to the global group, not the assets group. Then run bundle install.

2. Create a config/tinymce.yml file with your global configuration options:

toolbar:
  - styleselect | bold italic | undo redo
  - image | link
plugins:
  - image
  - link

The Rails server no longer needs to be restarted when this file is updated in development mode.

To define multiple configuration sets, follow this syntax (a default configuration must be specified):

default: &default
  plugins:
    - image
    - link

alternate:
  <<: *default
  toolbar: styleselect | bold italic | undo redo | table
  plugins:
    - table

See the TinyMCE 7 Documentation for a full list of configuration options.

3. Include the TinyMCE assets

Use one of the following options to include TinyMCE assets.

(1) Add to your application.js:

//= require tinymce

or (2) add the script tag to your layout using the tinymce_assets helper:

<%= tinymce_assets %>
#=> <script type="text/javascript" src="/assets/tinymce.js">

4. Initialize TinyMCE

For each textarea that you want to use with TinyMCE, add the "tinymce" class and ensure it has a unique ID:

<%= text_area_tag :content, "", class: "tinymce", rows: 40, cols: 120 %>

or if you are using Rails' form builders:

<%= f.text_area :content, class: "tinymce", rows: 40, cols: 120 %>

Then invoke the tinymce helper to initialize TinyMCE:

<%= tinymce %>

Custom options can be passed to tinymce to override the global options specified in config/tinymce.yml:

<%= tinymce theme: "simple", language: "de", plugins: ["wordcount", "paste"] %>

Alternate configurations defined in 'config/tinymce.yml' can be used with:

<%= tinymce :alternate %>

Language Packs

See the tinymce-rails-langs gem for additional language packs for TinyMCE.

Manual Initialization

Using the tinymce helper and global configuration file is entirely optional. The tinymce.init JS function can be invoked manually if desired.

<%= text_area_tag :editor, "", rows: 40, cols: 120 %>

<script type="text/javascript">
  tinymce.init({
    selector: 'textarea.editor'
  });
</script>

Asset Compilation

Since TinyMCE loads most of its files dynamically, some workarounds are required to ensure that the TinyMCE asset files are accessible using non-digested filenames.

As of tinymce-rails 3.5.11, 4.1.10 and 4.2.1, two alternative asset installation methods are available, which can be changed by setting config.tinymce.install within your config/application.rb file. These methods are called when you run rake asset:precompile (via Rake::Task#enhance) after the regular application assets are compiled.

The default method (as of 4.5.2), compile, adds the TinyMCE paths to the Sprockets precompilation paths and then creates symlinks from the non-digested filenames to their digested versions.

config.tinymce.install = :compile

If you experience issues with the compile method, you may wish to use the copy method instead, which copies the TinyMCE assets directly into public/assets and appends the file information into the asset manifest. The copy_no_preserve method is also available of you do not wish to or cannot preserve file modes on your filesystem.

config.tinymce.install = :copy

If you are including TinyMCE via application.js or using the tinymce_assets helper, you do not need to manually add the scripts to the Sprockets precompile paths.

Custom Plugins & Skins

To use custom plugins or skins, simply add the files to your asset load path so that they are locatable at a path beneath tinymce/plugins/ or tinymce/skins/.

For example, a plugin called mycustomplugin could have its main JS file at app/assets/javascripts/tinymce/plugins/mycustomplugin/plugin.js.

You should also ensure that your custom paths are added to the asset precompile paths.

Using tinymce-rails as an Engine Dependency

Ensure that you explicitly require tinymce-rails within your engine file. Including tinymce-rails as a dependency in your gemspec is not enough.

Updating

When new versions of TinyMCE are released, simply update the tinymce-rails gem to the latest version. There is no need to run any extra rake tasks (apart from rake assets:precompile).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.