From: Tyrell Cook Date: Sat, 25 Apr 2015 23:37:37 +0000 (-0400) Subject: CRM-16354 update ckeditor X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=b608cfb12c86ecd92f2457d6fb9abf708f94a162;p=civicrm-core.git CRM-16354 update ckeditor --- diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index a5d2550283..01a7029658 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -271,6 +271,14 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $type, $name, $label = '', $attributes = '', $required = FALSE, $extra = NULL ) { + if ($type == 'wysiwyg') { + if ($attributes === '') { + $attributes = array(); + } + $attributes = ((array) $attributes) + array('class' => ''); + $attributes['class'] .= ' crm-wysiwyg'; + $type = "textarea"; + } if ($type == 'select' && is_array($extra)) { // Normalize this property if (!empty($extra['multiple'])) { diff --git a/CRM/Core/Resources.php b/CRM/Core/Resources.php index a7f2d3561c..513207b44c 100644 --- a/CRM/Core/Resources.php +++ b/CRM/Core/Resources.php @@ -715,6 +715,17 @@ class CRM_Core_Resources { "js/Common.js", "js/crm.ajax.js", ); + $editorID = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, + 'editor_id' + ); + $editor = CRM_Utils_Array::value($editorID, + CRM_Core_OptionGroup::values('wysiwyg_editor') + ); + $items[] = "js/wysiwyg/crm.textarea.js"; + if ($editor == "CKEditor") { + $items[] = "bower_components/ckeditor/ckeditor.js"; + $items[] = "js/wysiwyg/crm.ckeditor.js"; + } // These scripts are only needed by back-office users if (CRM_Core_Permission::check('access CiviCRM')) { diff --git a/js/Common.js b/js/Common.js index 8d96d7d716..c783544633 100644 --- a/js/Common.js +++ b/js/Common.js @@ -832,6 +832,9 @@ CRM.strings = CRM.strings || {}; $('form[data-warn-changes] :input', e.target).each(function() { $(this).data('crm-initial-value', $(this).is(':checkbox, :radio') ? $(this).prop('checked') : $(this).val()); }); + $('textarea.crm-wysiwyg', e.target).each(function() { + CRM.wysiwyg.create(this); + }) }) .on('dialogopen', function(e) { var $el = $(e.target); diff --git a/js/wysiwyg/crm.ckeditor.js b/js/wysiwyg/crm.ckeditor.js new file mode 100644 index 0000000000..11b7dcc9aa --- /dev/null +++ b/js/wysiwyg/crm.ckeditor.js @@ -0,0 +1,44 @@ +// https://civicrm.org/licensing +(function($, _) { + function getInstance(item) { + var name = $(item).attr("name"); + return CKEDITOR.instances[name]; + } + + CRM.wysiwyg = { + supportsFileUploads: true, + create: function(item) { + var browseUrl = CRM.config.userFrameworkResourceUrl + "packages/kcfinder/browse.php"; + var uploadUrl = CRM.config.userFrameworkResourceUrl + "packages/kcfinder/upload.php"; + var editor = CKEDITOR.replace($(item)[0]); + if (editor) { + editor.config.filebrowserBrowseUrl = browseUrl+'?cms=civicrm&type=files'; + editor.config.filebrowserImageBrowseUrl = browseUrl+'?cms=civicrm&type=images'; + editor.config.filebrowserFlashBrowseUrl = browseUrl+'?cms=civicrm&type=flash'; + editor.config.filebrowserUploadUrl = uploadUrl+'?cms=civicrm&type=files'; + editor.config.filebrowserImageUploadUrl = uploadUrl+'?cms=civicrm&type=images'; + editor.config.filebrowserFlashUploadUrl = uploadUrl+'?cms=civicrm&type=flash'; + } + }, + destroy: function(item) { + var editor = getInstance(item); + if (editor) { + editor.destroy(); + } + }, + updateElement: function(item) { + var editor = getInstance(item); + if (editor) { + editor.updateElement(); + } + }, + val: function(item) { + var editor = getInstance(item); + if (editor) { + return editor.getData(); + } else { + return $(item).val(); + } + }, + }; +})(CRM.$, CRM._); diff --git a/js/wysiwyg/crm.textarea.js b/js/wysiwyg/crm.textarea.js new file mode 100644 index 0000000000..ac84b84f82 --- /dev/null +++ b/js/wysiwyg/crm.textarea.js @@ -0,0 +1,12 @@ +// https://civicrm.org/licensing +(function($, _) { + CRM.wysiwyg = { + supportsFileUploads: false, + create: _.noop, + destroy: _.noop, + updateElement: _.noop, + val: function(item) { + return $(item).val(); + }, + }; +})(CRM.$, CRM._); diff --git a/templates/CRM/common/l10n.js.tpl b/templates/CRM/common/l10n.js.tpl index c239bc79e5..c024019123 100644 --- a/templates/CRM/common/l10n.js.tpl +++ b/templates/CRM/common/l10n.js.tpl @@ -33,6 +33,7 @@ $.datepicker._defaults.dateFormat = CRM.config.dateInputFormat = {$config->dateInputFormat|@json_encode}; CRM.config.timeIs24Hr = {if $config->timeInputFormat eq 2}true{else}false{/if}; CRM.config.ajaxPopupsEnabled = {$ajaxPopupsEnabled|@json_encode}; + CRM.config.userFrameworkResourceUrl = {$config->userFrameworkResourceUrl|@json_encode}; // Merge entityRef settings CRM.config.entityRef = $.extend({ldelim}{rdelim}, {$entityRef|@json_encode}, CRM.config.entityRef || {ldelim}{rdelim}); diff --git a/templates/CRM/common/wysiwyg.tpl b/templates/CRM/common/wysiwyg.tpl index 50189b6c9a..ec43a22f0a 100644 --- a/templates/CRM/common/wysiwyg.tpl +++ b/templates/CRM/common/wysiwyg.tpl @@ -26,6 +26,8 @@ {* include wysiysg editor files *} {if $includeWysiwygEditor} + + {if $defaultWysiwygEditor eq 1} {elseif $defaultWysiwygEditor eq 2} - + {/if} {/if}