Nuevo plugin Redmine CKEditor 1.1.5
This commit is contained in:
parent
64924a6376
commit
698e4e7c3c
635 changed files with 24046 additions and 0 deletions
143
plugins/redmine_ckeditor/lib/redmine_ckeditor.rb
Normal file
143
plugins/redmine_ckeditor/lib/redmine_ckeditor.rb
Normal file
|
@ -0,0 +1,143 @@
|
|||
module RedmineCkeditor
|
||||
extend ActionView::Helpers
|
||||
|
||||
class << self
|
||||
def root
|
||||
@root ||= Pathname(File.expand_path(File.dirname(File.dirname(__FILE__))))
|
||||
end
|
||||
|
||||
def assets_root
|
||||
@assets_root ||= "#{Redmine::Utils.relative_url_root}/plugin_assets/redmine_ckeditor"
|
||||
end
|
||||
|
||||
def allowed_protocols
|
||||
@allowed_protocols ||= ckeditor_config[:allowedProtocols] || %w[
|
||||
afs aim callto ed2k feed ftp gopher http https irc mailto news
|
||||
nntp rsync rtsp sftp ssh tag telnet urn webcal xmpp
|
||||
]
|
||||
end
|
||||
|
||||
def allowed_tags
|
||||
@allowed_tags ||= ckeditor_config[:allowedTags] || %w[
|
||||
a abbr acronym address blockquote b big br caption cite code dd del dfn
|
||||
div dt em h1 h2 h3 h4 h5 h6 hr i img ins kbd li ol p pre samp small span
|
||||
strike s strong sub sup table tbody td tfoot th thead tr tt u ul var iframe
|
||||
]
|
||||
end
|
||||
|
||||
def allowed_attributes
|
||||
@allowed_attributes ||= ckeditor_config[:allowedAttributes] || %w[
|
||||
href src width height alt cite datetime title class name xml:lang abbr dir
|
||||
style align valign border cellpadding cellspacing colspan rowspan nowrap
|
||||
start reversed
|
||||
]
|
||||
end
|
||||
|
||||
def default_toolbar
|
||||
@default_toolbar ||= %w[
|
||||
Source ShowBlocks -- Undo Redo - Find Replace --
|
||||
Bold Italic Underline Strike - Subscript Superscript -
|
||||
NumberedList BulletedList - Outdent Indent Blockquote -
|
||||
JustifyLeft JustifyCenter JustifyRight JustifyBlock -
|
||||
Link Unlink - richImage Table HorizontalRule
|
||||
/
|
||||
Styles Format Font FontSize - TextColor BGColor
|
||||
].join(",")
|
||||
end
|
||||
|
||||
def config
|
||||
ActionController::Base.config
|
||||
end
|
||||
|
||||
def plugins
|
||||
@plugins ||= Dir.glob(root.join("assets/ckeditor-contrib/plugins/*")).map {
|
||||
|path| File.basename(path)
|
||||
}
|
||||
end
|
||||
|
||||
def skins
|
||||
@skins ||= Dir.glob(root.join("assets/ckeditor-contrib/skins/*")).map {
|
||||
|path| File.basename(path)
|
||||
}
|
||||
end
|
||||
|
||||
def skin_options
|
||||
options_for_select(["moono-lisa"] + skins, :selected => RedmineCkeditorSetting.skin)
|
||||
end
|
||||
|
||||
def enter_mode_options
|
||||
options_for_select({:p => 1, :br => 2, :div => 3},
|
||||
:selected => RedmineCkeditorSetting.enter_mode)
|
||||
end
|
||||
|
||||
def toolbar_location_options
|
||||
options_for_select(["top", "bottom"],
|
||||
:selected => RedmineCkeditorSetting.toolbar_location)
|
||||
end
|
||||
|
||||
def ckeditor_config
|
||||
@ckeditor_config ||= begin
|
||||
conf = {
|
||||
:extraPlugins => plugins.join(","),
|
||||
:allowedContent => true,
|
||||
:bodyClass => "wiki",
|
||||
:removePlugins => 'div,flash,forms,iframe',
|
||||
:forcePasteAsPlainText => false
|
||||
}
|
||||
file = Rails.root.join("config/ckeditor.yml")
|
||||
conf.merge!(YAML.load_file(file).symbolize_keys) if file.exist?
|
||||
conf
|
||||
end
|
||||
end
|
||||
|
||||
def options(scope_object = nil)
|
||||
scope_type = scope_object && scope_object.class.model_name.name
|
||||
scope_id = scope_object && scope_object.id
|
||||
|
||||
skin = RedmineCkeditorSetting.skin
|
||||
skin += ",#{assets_root}/ckeditor-contrib/skins/#{skin}/" if skin != "moono-lisa"
|
||||
|
||||
rich_options = Rich.options({
|
||||
:contentsCss => [stylesheet_path("application"), "#{assets_root}/stylesheets/editor.css"],
|
||||
:scoped => scope_object ? true : false,
|
||||
:allow_document_uploads => true,
|
||||
:allow_embeds => true,
|
||||
:default_style => :original,
|
||||
:richBrowserUrl => "#{Redmine::Utils.relative_url_root}/rich/files/"
|
||||
}, scope_type, scope_id)
|
||||
rich_options.delete(:removeDialogTabs)
|
||||
rich_options.delete(:format_tags)
|
||||
rich_options.delete(:stylesSet)
|
||||
rich_options.merge(ckeditor_config.merge({
|
||||
:skin => skin,
|
||||
:uiColor => RedmineCkeditorSetting.ui_color,
|
||||
:enterMode => RedmineCkeditorSetting.enter_mode,
|
||||
:shiftEnterMode => RedmineCkeditorSetting.shift_enter_mode,
|
||||
:startupOutlineBlocks => RedmineCkeditorSetting.show_blocks,
|
||||
:toolbarCanCollapse => RedmineCkeditorSetting.toolbar_can_collapse,
|
||||
:toolbarStartupExpanded => !RedmineCkeditorSetting.toolbar_can_collapse,
|
||||
:toolbarLocation => RedmineCkeditorSetting.toolbar_location,
|
||||
:toolbar => RedmineCkeditorSetting.toolbar,
|
||||
:width => RedmineCkeditorSetting.width,
|
||||
:height => RedmineCkeditorSetting.height
|
||||
}))
|
||||
end
|
||||
|
||||
def enabled?
|
||||
Setting.text_formatting == "CKEditor"
|
||||
end
|
||||
|
||||
def apply_patch
|
||||
require 'redmine_ckeditor/application_helper_patch'
|
||||
require 'redmine_ckeditor/queries_helper_patch'
|
||||
require 'redmine_ckeditor/rich_files_helper_patch'
|
||||
require 'redmine_ckeditor/journals_controller_patch'
|
||||
require 'redmine_ckeditor/messages_controller_patch'
|
||||
require 'redmine_ckeditor/mail_handler_patch'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
require 'redmine_ckeditor/hooks/journal_listener'
|
||||
require 'redmine_ckeditor/pdf_patch'
|
||||
require 'redmine_ckeditor/tempfile_patch'
|
Loading…
Add table
Add a link
Reference in a new issue