netoneko / ckeditor

MIT License
0 stars 0 forks source link

= Ckeditor

CKEditor is a text editor to be used inside web pages. It's a WYSIWYG editor, which means that the text being edited on it looks as similar as possible to the results users have when publishing it. It brings to the web common editing features found on desktop editing applications like Microsoft Word and OpenOffice.

== Features

== Install

Rails 3.1:

gem "ckeditor", "3.7.0.rc1"

Rails <= 3.0:

gem "ckeditor", "3.6.3"

=== Now generate models for store uploading files

==== ActiveRecord + paperclip

For active_record orm is used paperclip gem (it's by default).

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

==== 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

Available orms:

Autoload ckeditor models folder (application.rb):

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

== Usage

Include ckeditor javascripts rails 3.1:

//= require ckeditor/ckeditor

Rails <= 3.0:

<%= javascript_include_tag :ckeditor %>

Form helpers:

cktext_area_tag("test_area", "Ckeditor is the best")

cktext_area_tag("content", "Ckeditor", :input_html => {:cols => 10, :rows => 20}, :toolbar => 'Easy')

For configure ckeditor default options check:

public/javascripts/ckeditor/config.js

This stylesheet use editor for displaying edit area:

public/javascripts/ckeditor/contents.css

FormBuilder helper for more usefully:

<%= form_for @page do |form| -%> ... <%= form.cktext_area :notes, :toolbar => 'Full', :width => 800, :height => 400 %> ... <%= form.cktext_area :content, :input_html => { :value => "Default value" } %> ... <%= cktext_area :page, :info %> <% end -%>

=== AJAX

Jquery sample:

=== Formtastic integration

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

=== SimpleForm integration

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

=== Default scope

For example, you need split assets collection for each user.

class ApplicationController < ActionController::Base

protected

  def ckeditor_filebrowser_scope(options = {})
    super({ :assetable_id => current_user.id, :assetable_type => 'User' }.merge(options))
  end

end

If your wont filter only pictures or attachment_files - redefine methods "ckeditor_pictures_scope" or "ckeditor_attachment_files_scope" respectively. By default, both these methods call "ckeditor_filebrowser_scope" method:

class ApplicationController < ActionController::Base

protected

  def ckeditor_pictures_scope(options = {})
    ckeditor_filebrowser_scope(options)
  end

  def ckeditor_attachment_files_scope(options = {})
    ckeditor_filebrowser_scope(options)
  end

end

=== Callbacks

class ApplicationController < ActionController::Base

protected

  # Cancan example
  def ckeditor_authenticate
    authorize! action_name, @asset
  end

  # Set current_user as assetable
  def ckeditor_before_create_asset(asset)
    asset.assetable = current_user
    return true
  end

end

== I18n

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

== 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 MIT-LICENSE.