module RedmineExtensions
module HTMLFormatting
module Helper
def wikitoolbar_for(field_id, options={})
heads_for_wiki_formatter
custom_settings = options.delete(:custom)
options[:toolbar] ||= EasySetting.value('ckeditor_toolbar_config') || 'Basic'
options[:lang] ||= User.current.language
options[:lang] = Setting.default_language if options[:lang].blank?
options[:language] = options[:lang] if options[:lang].present?
# Syntax higlight
if EasySetting.value('ckeditor_syntax_highlight_enabled')
options[:codeSnippet_theme] ||= EasyCKEditor.syntaxt_higlight_template
else
if options[:removePlugins]
options[:removePlugins] << ','
else
options[:removePlugins] = ''
end
options[:removePlugins] << 'codesnippet'
end
hook_settings = call_hook(:helper_ckeditor_wikitoolbar_for_add_option, {:field_id => field_id, :options => options})
ck_options = options.collect{|k,v| "#{k}:'#{v}'"}
ck_options << custom_settings unless custom_settings.blank?
ck_options << hook_settings unless hook_settings.to_s.blank?
reminder_confirm = options[:attachment_reminder_message] ? options[:attachment_reminder_message] : l(:text_easy_attachment_reminder_confirm)
reminderjs = options[:attachment_reminder] ? "$('##{field_id}').addClass('set_attachment_reminder').data('ck', true).data('reminder_words', \"#{j(Attachment.attachment_reminder_words)}\").data('reminder_confirm', '#{j(reminder_confirm)}'); " : ''
js = "var ta_editor = CKEDITOR.instances['#{field_id}']; if (ta_editor) {CKEDITOR.remove(ta_editor);} CKEDITOR.replace('#{field_id}',{#{ck_options.join(',')}});"
js << "window.enableWarnLeavingUnsaved = '#{User.current.pref.warn_on_leaving_unsaved}';"
javascript_tag(reminderjs + js)
end
def initial_page_content(page)
end
def heads_for_wiki_formatter
unless @heads_for_wiki_formatter_included
header = javascript_include_tag('redmine_extensions/ckeditor/ckeditor')
# Syntax higlight
if EasySetting.value('ckeditor_syntax_highlight_enabled')
header << stylesheet_link_tag(EasyCKEditor.syntaxt_higlight_css)
header << javascript_include_tag(EasyCKEditor.syntaxt_higlight_js)
# Pre block have custom css attributes
# .pre-hljs will set them to default
header << javascript_tag(%{
$(document).ready(function() {
$('pre code').each(function(i, block) {
hljs.highlightBlock(block);
$(block).parent().addClass('pre-default');
});
});
})
end
content_for(:header_tags, header)
@heads_for_wiki_formatter_included = true
end
end
end
end
end