Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - 3months/ckeditor: Ckeditor integration gem for rails · GitHub
Skip to content

Repository files navigation

Ckeditor

CKEditor is a WYSIWYG text editor designed to simplify web content creation. It brings common word processing features directly to your web pages. Enhance your website experience with our community maintained editor. ckeditor.com

Features

  • Ckeditor version 4.4.7 (full 27 Jan 2015)
  • Rails 4 integration
  • Files browser
  • HTML5 file uploader
  • Hooks for formtastic and simple_form forms generators
  • Integrated with authorization framework CanCan and Pundit

Installation

For basic usage just include the ckeditor gem:

gem 'ckeditor'

or if you'd like to use the latest version from Github:

gem 'ckeditor', github: 'galetahub/ckeditor'

Using with ruby 1.8.7

For usage with ruby 1.8.7 you need to specify the gem version:

gem 'ckeditor', '4.0.4'

For file upload support, you must generate the necessary file storage models. The currently supported backends are:

  • ActiveRecord (paperclip, carrierwave, dragonfly)
  • Mongoid (paperclip, carrierwave, dragonfly)

How to generate models to store uploaded files

ActiveRecord + paperclip

To use the active_record orm with paperclip (i.e. the default settings):

gem 'paperclip'
rails generate ckeditor:install --orm=active_record --backend=paperclip

ActiveRecord + carrierwave

gem 'carrierwave'
gem 'mini_magick'
rails generate ckeditor:install --orm=active_record --backend=carrierwave

ActiveRecord + dragonfly

Requires Dragonfly 1.0 or greater.

gem 'dragonfly'
rails generate ckeditor:install --orm=active_record --backend=dragonfly

Mongoid + paperclip

gem 'mongoid-paperclip', :require => 'mongoid_paperclip'
rails generate ckeditor:install --orm=mongoid --backend=paperclip

Mongoid + carrierwave

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick'
rails generate ckeditor:install --orm=mongoid --backend=carrierwave

Load generated models

All ckeditor models will be generated in the app/models/ckeditor directory. Models are autoloaded in Rails 4. For earlier Rails versions, you need to add them to the autoload path (in application.rb):

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mount the Ckeditor::Engine in your routes (config/routes.rb):

mountCkeditor::Engine=>'/ckeditor'

Usage

Include ckeditor javascripts in your app/assets/javascripts/application.js:

//= require ckeditor/init

Form helpers:

<%= form_for @page do |form| -%>
...
<%= form.cktext_area :notes, :class => 'someclass', :ckeditor => {:language => 'uk'} %>
...
<%= form.cktext_area :content, :value => 'Default value', :id => 'sometext' %>
...
<%= cktext_area :page, :info, :cols => 40, :ckeditor => {:uiColor => '#AADC6E', :toolbar => 'mini'} %>
...
<% end -%>

Customize ckeditor

All ckeditor options can be found here

In order to configure the ckeditor default options, create the following files:

app/assets/javascripts/ckeditor/config.js
app/assets/javascripts/ckeditor/contents.css

Custom toolbars example

Adding a custom toolbar:

# inapp/assets/javascripts/ckeditor/config.jsCKEDITOR.editorConfig=function(config){// ... other configuration ...config.toolbar_mini=[["Bold","Italic","Underline","Strike","-","Subscript","Superscript"],];config.toolbar="simple";// ... rest of the original config.js ...}

When overriding the default config.js file, you must set all configuration options yourself as the bundled config.js will not be loaded. To see the default configuration, run bundle open ckeditor, copy app/assets/javascripts/ckeditor/config.js into your project and customize it to your needs.

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

Rails.application.config.assets.precompile += %w(ckeditor/*)

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.assets_languages=['en','fr']config.assets_plugins=['image','smiley']end

Note that you have to list your plugins, including all their dependencies.

Include customized CKEDITOR_BASEPATH setting

Add your app/assets/javascripts/ckeditor/basepath.js.erb like

<%
base_path = ''
if ENV['PROJECT'] =~ /editor/i
base_path << "/#{Rails.root.basename.to_s}/"
end
base_path << Rails.application.config.assets.prefix
base_path << '/ckeditor/'
%>
var CKEDITOR_BASEPATH = '<%= base_path %>';

AJAX

jQuery sample:

<scripttype='text/javascript' charset='UTF-8'>$(document).ready(function(){$('form[data-remote]').bind('ajax:before',function(){for(instanceinCKEDITOR.instances){CKEDITOR.instances[instance].updateElement();}});});</script>

Formtastic integration

<%= form.input :content, :as => :ckeditor %><%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => { :height => 400 } } %>

SimpleForm integration

<%= form.input :content, :as => :ckeditor, :input_html => { :ckeditor => {:toolbar => 'Full'} } %>

CanCan integration

To use cancan with Ckeditor, add this to an initializer:

# in config/initializers/ckeditor.rbCkeditor.setupdo |config|
config.authorize_with:cancanend

At this point, all authorization will fail and no one will be able to access the filebrowser pages. To grant access, add this to Ability#initialize:

# Always performedcan:access,:ckeditor# needed to access Ckeditor filebrowser# Performed checks for actions:can[:read,:create,:destroy],Ckeditor::Picturecan[:read,:create,:destroy],Ckeditor::AttachmentFile

Pundit integration

Just like CanCan, you can write this code in your config/initializers/ckeditor.rb file:

Ckeditor.setupdo |config|
config.authorize_with:punditend

Then, generate the policy files for model Picture and AttachmentFile

$ rails g ckeditor:pundit_policy

By this command, you will got two files:

app/policies/ckeditor/picture_policy.rb app/policies/ckeditor/attachment_file_policy.rb

By default, only the user that logged in can access the models (with actions index and create) and only the owner of the asset can destroy the resource.

You can customize these two policy files as you like.

I18n

en:
ckeditor:
page_title: 'CKEditor Files Manager'confirm_delete: 'Delete file?'buttons:
cancel: 'Cancel'upload: 'Upload'delete: 'Delete'next: 'Next'

Tests

$> rake test
$> rake test CKEDITOR_ORM=mongoid
$> rake test CKEDITOR_BACKEND=carrierwave
$> rake test:controllers
$> rake test:generators
$> rake test:integration
$> rake test:models

This project rocks and uses the MIT-LICENSE.

About

Ckeditor integration gem for rails

Resources

Stars

0 stars

Watchers

21 watching

Forks

Releases

Packages

Contributors

Languages