$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'])) {
"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')) {
$('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);
--- /dev/null
+// 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._);
--- /dev/null
+// https://civicrm.org/licensing
+(function($, _) {
+ CRM.wysiwyg = {
+ supportsFileUploads: false,
+ create: _.noop,
+ destroy: _.noop,
+ updateElement: _.noop,
+ val: function(item) {
+ return $(item).val();
+ },
+ };
+})(CRM.$, CRM._);
$.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});
{* include wysiysg editor files *}
{if $includeWysiwygEditor}
+
+
{if $defaultWysiwygEditor eq 1}
<script>
{* this version of tinymce requires jquery *}
<script type="text/javascript" src="{$config->resourceBase}packages/tinymce/jscripts/tiny_mce/jquery.tinymce.js"></script>
<script type="text/javascript" src="{$config->resourceBase}packages/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
{elseif $defaultWysiwygEditor eq 2}
- <script type="text/javascript" src="{$config->resourceBase}bower_components/ckeditor/ckeditor.js"></script>
+
{/if}
{/if}