X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fwysiwyg%2Fcrm.wysiwyg.js;h=41adc35d4e74bf73899113780554858ed807951d;hb=9be4e9c5626a66612a33f63d60c5973fc7d0d881;hp=54c86e81454c1e0a633413fcf5931f8ac6ba7278;hpb=c219b4c822b7539da67f5eb9fdcde48b562720ed;p=civicrm-core.git diff --git a/js/wysiwyg/crm.wysiwyg.js b/js/wysiwyg/crm.wysiwyg.js index 54c86e8145..41adc35d4e 100644 --- a/js/wysiwyg/crm.wysiwyg.js +++ b/js/wysiwyg/crm.wysiwyg.js @@ -3,9 +3,20 @@ // This defines an interface which by default only handles plain textareas // A wysiwyg implementation can extend this by overriding as many of these functions as needed CRM.wysiwyg = { - supportsFileUploads: false, - create: function() { - return $.Deferred().resolve(); + supportsFileUploads: !!CRM.config.wysisygScriptLocation, + create: function(item) { + var ret = $.Deferred(); + // Lazy-load the wysiwyg js + if (CRM.config.wysisygScriptLocation) { + CRM.loadScript(CRM.config.wysisygScriptLocation).done(function() { + CRM.wysiwyg._create(item).done(function() { + ret.resolve(); + }); + }); + } else { + ret.resolve(); + } + return ret; }, destroy: _.noop, updateElement: _.noop, @@ -23,14 +34,16 @@ }, // Fallback function to use when a wysiwyg has not been initialized _insertIntoTextarea: function(item, text) { - var origVal = $(item).val(); - var origPos = item[0].selectionStart; - var newVal = origVal + text; - $(item).val(newVal); - var newPos = (origPos + text.length); - item[0].selectionStart = newPos; - item[0].selectionEnd = newPos; - $(item).triggerHandler('change'); + var itemObj = $(item); + var origVal = itemObj.val(); + var origStart = itemObj[0].selectionStart; + var origEnd = itemObj[0].selectionEnd; + var newVal = origVal.substring(0, origStart) + text + origVal.substring(origEnd); + itemObj.val(newVal); + var newPos = (origStart + text.length); + itemObj[0].selectionStart = newPos; + itemObj[0].selectionEnd = newPos; + itemObj.triggerHandler('change'); CRM.wysiwyg.focus(item); }, // Create a "collapsed" textarea that expands into a wysiwyg when clicked @@ -41,6 +54,9 @@ CRM.wysiwyg.destroy(item); $(item).hide().next('.replace-plain').show().html($(item).val()); }) + .on('change', function() { + $(this).next('.replace-plain').html($(this).val()); + }) .after('
'); $(item).next('.replace-plain') .attr('title', ts('Click to edit'))