X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fwysiwyg%2Fadmin.ckeditor-configurator.js;h=6c44806754b7628f144356f1aeac4fb869401c76;hb=071e5a4f43909e57c7c42b2e3eecddeb78c017ed;hp=17ac199703dd30e823507c46ac1b6bc67717b8c5;hpb=24992c9fa74d182b7a600a9e38f995bd492b6e99;p=civicrm-core.git diff --git a/js/wysiwyg/admin.ckeditor-configurator.js b/js/wysiwyg/admin.ckeditor-configurator.js index 17ac199703..6c44806754 100644 --- a/js/wysiwyg/admin.ckeditor-configurator.js +++ b/js/wysiwyg/admin.ckeditor-configurator.js @@ -45,16 +45,41 @@ } else { $el.after('  =  '); + $el.next('span').find('input.crm-form-text[type=text]').change(validateJson); } } else { $el.closest('div').remove(); } } + function getOptionList() { + var list = []; + _.forEach(options, function(option) { + var opt = _.cloneDeep(option); + if ($('[name="config_' + opt.id + '"]').length) { + opt.disabled = true; + } + list.push(opt); + }); + return {results: list, text: 'id'}; + } + + function validateJson() { + var val = $(this).val(); + $(this).parent().removeClass('crm-error'); + if (val[0] === '[' || val[0] === '{') { + try { + JSON.parse(val); + } catch (e) { + $(this).parent().addClass('crm-error'); + } + } + } + function addOption() { $('#crm-custom-config-options').append($(configRowTpl({}))); - $('div:last input.crm-config-option-name', '#crm-custom-config-options').crmSelect2({ - data: {results: options, text: 'id'}, + $('.crm-config-option-row:last input.crm-config-option-name', '#crm-custom-config-options').crmSelect2({ + data: getOptionList, formatSelection: function(field) { return '' + field.id + ' (' + field.type + ')'; },