From 7c5236617e67623666f2344d3669415c4d792062 Mon Sep 17 00:00:00 2001 From: Tyrell Cook Date: Sun, 26 Apr 2015 16:28:43 -0400 Subject: [PATCH] CRM-16354 add base wyswyig interface --- CRM/Core/Resources.php | 3 +- js/Common.js | 6 ++- js/wysiwyg/crm.ckeditor.js | 84 +++++++++++++++++++------------- js/wysiwyg/crm.textarea.js | 12 ----- js/wysiwyg/crm.wysiwyg.js | 34 +++++++++++++ templates/CRM/common/l10n.js.tpl | 2 +- templates/CRM/common/wysiwyg.tpl | 4 -- 7 files changed, 91 insertions(+), 54 deletions(-) delete mode 100644 js/wysiwyg/crm.textarea.js create mode 100644 js/wysiwyg/crm.wysiwyg.js diff --git a/CRM/Core/Resources.php b/CRM/Core/Resources.php index 513207b44c..7af9603017 100644 --- a/CRM/Core/Resources.php +++ b/CRM/Core/Resources.php @@ -715,13 +715,14 @@ class CRM_Core_Resources { "js/Common.js", "js/crm.ajax.js", ); + // add wysiwyg editor $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"; + $items[] = "js/wysiwyg/crm.wysiwyg.js"; if ($editor == "CKEditor") { $items[] = "bower_components/ckeditor/ckeditor.js"; $items[] = "js/wysiwyg/crm.ckeditor.js"; diff --git a/js/Common.js b/js/Common.js index c783544633..a8595fee49 100644 --- a/js/Common.js +++ b/js/Common.js @@ -833,7 +833,11 @@ CRM.strings = CRM.strings || {}; $(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); + if ($(this).hasClass("collapsed")) { + CRM.wysiwyg.createPlain(this); + } else { + CRM.wysiwyg.create(this); + } }) }) .on('dialogopen', function(e) { diff --git a/js/wysiwyg/crm.ckeditor.js b/js/wysiwyg/crm.ckeditor.js index 11b7dcc9aa..f7f86ad431 100644 --- a/js/wysiwyg/crm.ckeditor.js +++ b/js/wysiwyg/crm.ckeditor.js @@ -5,40 +5,54 @@ 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.wysiwyg['supportsFileUploads'] = true; + CRM.wysiwyg.create = function(item) { + //var browseUrl = CRM.config.userFrameworkResourceUrl + "packages/kcfinder/browse.php"; + 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'; + editor.on('blur', function(){ + $(item).trigger("blur"); + }); + } + }; + CRM.wysiwyg.destroy = function(item) { + var editor = getInstance(item); + if (editor) { + editor.destroy(); + } + }; + CRM.wysiwyg.updateElement = function(item) { + var editor = getInstance(item); + if (editor) { + editor.updateElement(); + } + }; + CRM.wysiwyg.val = function(item) { + var editor = getInstance(item); + if (editor) { + return editor.getData(); + } else { + return $(item).val(); + } + }; + CRM.wysiwyg.insertText = function(item, text) { + var editor = getInstance(item); + if (editor) { + editor.insertText(text); + } + }; + CRM.wysiwyg.insertHTML = function(item, html) { + var editor = getInstance(item); + if (editor) { + editor.insertText(html); + } }; })(CRM.$, CRM._); diff --git a/js/wysiwyg/crm.textarea.js b/js/wysiwyg/crm.textarea.js deleted file mode 100644 index ac84b84f82..0000000000 --- a/js/wysiwyg/crm.textarea.js +++ /dev/null @@ -1,12 +0,0 @@ -// 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/js/wysiwyg/crm.wysiwyg.js b/js/wysiwyg/crm.wysiwyg.js new file mode 100644 index 0000000000..b729e44356 --- /dev/null +++ b/js/wysiwyg/crm.wysiwyg.js @@ -0,0 +1,34 @@ +// https://civicrm.org/licensing +(function($, _) { + function openWysiwyg(item) { + $(item).show(); + $(item).next('.replace-plain').hide(); + CRM.wysiwyg.create(item); + $(item).on( 'blur', function( e ) { + CRM.wysiwyg.updateElement(item); + CRM.wysiwyg.destroy(item); + $(item).hide().next('.replace-plain').show().html($(item).val()); + }); + }; + CRM.wysiwyg = {}; + CRM.wysiwyg['supportsFileUploads'] = false; + CRM.wysiwyg.create = _.noop; + CRM.wysiwyg.destroy = _.noop; + CRM.wysiwyg.updateElement = _.noop; + CRM.wysiwyg.val = function(item) { + return $(item).val(); + }; + CRM.wysiwyg.insertText = _.noop; + CRM.wysiwyg.insertHTML = _.noop; + CRM.wysiwyg.createPlain = function(item) { + $(item) + .hide() + .after('
'); + $(item).next('.replace-plain').click(function(){ + openWysiwyg(item); + }); + $(item).next('.replace-plain').keypress(function(){ + openWysiwyg(item); + }); + }; +})(CRM.$, CRM._); diff --git a/templates/CRM/common/l10n.js.tpl b/templates/CRM/common/l10n.js.tpl index c024019123..2e94e58227 100644 --- a/templates/CRM/common/l10n.js.tpl +++ b/templates/CRM/common/l10n.js.tpl @@ -33,7 +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}; + 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 ec43a22f0a..51d32368f7 100644 --- a/templates/CRM/common/wysiwyg.tpl +++ b/templates/CRM/common/wysiwyg.tpl @@ -26,8 +26,6 @@ {* include wysiysg editor files *} {if $includeWysiwygEditor} - - {if $defaultWysiwygEditor eq 1} - {elseif $defaultWysiwygEditor eq 2} - {/if} {/if} -- 2.25.1