1 // https://civicrm.org/licensing
4 /* jshint validthis: true */
6 var configRowTpl
= _
.template($('#config-row-tpl').html()),
9 // Weird conflict with drupal styles
10 $('body').removeClass('toolbar');
12 function format(item
) {
13 var icon
= '<span class="ui-icon ui-icon-gear"></span>';
15 icon
= '<img src="' + CRM
.config
.resourceBase
+ item
.icon
+ '" />';
17 return icon
+ ' ' + item
.text
;
20 function initOptions(data
) {
21 options
= _
.filter(data
, function(n
) {
22 return $.inArray(n
.id
, CRM
.vars
.ckConfig
.blacklist
) < 0;
25 $.each(CRM
.vars
.ckConfig
.settings
, function(key
, val
) {
26 if ($.inArray(key
, CRM
.vars
.ckConfig
.blacklist
) < 0) {
27 var $opt
= $('.crm-config-option-row:last input.crm-config-option-name');
28 $opt
.val(key
).change();
29 $opt
.siblings('span').find(':input').val(val
);
34 function changeOptionName() {
37 $el
.next('span').remove();
39 if (($('input.crm-config-option-name').filter(function() {return !this.value
;})).length
< 1) {
42 var type
= $el
.select2('data').type
;
43 if (type
=== 'Boolean') {
44 $el
.after('<span> = <select class="crm-form-select" name="config_' + name
+ '"><option value="false">false</option><option value="true">true</option></select></span>');
47 $el
.after('<span> = <input class="crm-form-text ' + (type
==='Number' ? 'eight" type="number"' : 'huge" type="text"') + ' name="config_' + name
+ '"/></span>');
50 $el
.closest('div').remove();
54 function addOption() {
55 $('#crm-custom-config-options').append($(configRowTpl({})));
56 $('div:last input.crm-config-option-name', '#crm-custom-config-options').crmSelect2({
57 data
: {results
: options
, text
: 'id'},
58 formatSelection: function(field
) {
59 return '<strong>' + field
.id
+ '</strong> (' + field
.type
+ ')';
61 formatResult: function(field
) {
62 return '<strong>' + field
.id
+ '</strong> (' + field
.type
+ ')' +
63 '<div class="api-field-desc">' + field
.description
+ '</div>';
68 $('#extraPlugins').crmSelect2({
71 data
: CRM
.vars
.ckConfig
.plugins
,
72 escapeMarkup
: _
.identity
,
74 formatSelection
: format
77 var toolbarModifier
= new ToolbarConfigurator
.ToolbarModifier( 'editor-basic' );
79 toolbarModifier
.init(_
.noop
);
81 CKEDITOR
.document
.getById( 'toolbarModifierWrapper' ).append( toolbarModifier
.mainContainer
);
84 var selectorOpen
= false,
85 changedWhileOpen
= false;
87 $('#toolbarModifierForm')
88 .on('submit', function(e
) {
89 $('.toolbar button:last', '#toolbarModifierWrapper')[0].click();
90 $('.configContainer textarea', '#toolbarModifierWrapper').attr('name', 'config');
92 .on('change', '.config-param', function(e
) {
93 changedWhileOpen
= true;
95 $('#toolbarModifierForm').submit().block();
98 .on('change', 'input.crm-config-option-name', changeOptionName
)
99 // Debounce the change event so it only fires after the multiselect is closed
100 .on('select2-open', 'input.config-param', function(e
) {
102 changedWhileOpen
= false;
104 .on('select2-close', 'input.config-param', function(e
) {
105 selectorOpen
= false;
106 if (changedWhileOpen
) {
111 $.getJSON(CRM
.config
.resourceBase
+ 'js/wysiwyg/ck-options.json', null, initOptions
);