67 lines
3.5 KiB
JavaScript
67 lines
3.5 KiB
JavaScript
'use strict';
|
||
|
||
CKEDITOR.dialog.add( 'variables', function(editor) {
|
||
let validNameRegex = /^\$\{[a-zA-z0-9_.]+\}/;
|
||
|
||
return {
|
||
title: "Переменная",
|
||
minHeight: 60,
|
||
minWidth: 280,
|
||
contents: [
|
||
{
|
||
id: 'info',
|
||
label: "Вставить переменную",
|
||
title: "Вставить переменную",
|
||
elements: [
|
||
{
|
||
id: 'name',
|
||
type: 'select',
|
||
style: 'width: 100%;',
|
||
className: 'fastselect',
|
||
label: "Выберите переменную:",
|
||
items: editor.config.customValues.variablesList,
|
||
'default': '',
|
||
required: true,
|
||
validate: CKEDITOR.dialog.validate.regex(validNameRegex, "Неверный формат переменной"),
|
||
setup: function(widget) {
|
||
|
||
this.setValue("${" + widget.data.name + "}");
|
||
},
|
||
onLoad: function(elem) {
|
||
let select_id = '#' + this._.inputId;
|
||
let select = $(select_id).clone();
|
||
select.find('option').first().before('<option value="0">Не выбрано</option>');
|
||
$(select_id).closest('.cke_dialog_ui_labeled_content').html(select);
|
||
$(select_id).closest('.cke_dialog_container').removeClass('cke_reset_all');
|
||
$(select_id).closest('.cke_dialog_container').find('label[for="'+this._.inputId+'"]').remove();
|
||
$(select_id).fastselect({
|
||
placeholder: "Выберите переменную"
|
||
});
|
||
$(select_id).closest(".fstElement").find(".fstControls input.hidenClass").attr('type', "text");
|
||
$(select_id).closest(".fstElement").find(".fstControls input.hidenClass").removeClass('hidenClass');
|
||
},
|
||
onShow: function(widget) {
|
||
let select_id = '#' + this._.inputId;
|
||
let select = $(select_id).clone();
|
||
$(select_id).closest('.cke_dialog_ui_labeled_content').html(select);
|
||
$(select_id).closest('.cke_dialog_container').removeClass('cke_reset_all');
|
||
$(select_id).closest('.cke_dialog_container').find('label[for="'+this._.inputId+'"]').remove();
|
||
$(select_id).fastselect({
|
||
placeholder: "Выберите переменную"
|
||
});
|
||
$(select_id).closest(".fstElement").find(".fstControls input.hidenClass").attr('type', "text");
|
||
$(select_id).closest(".fstElement").find(".fstControls input.hidenClass").removeClass('hidenClass');
|
||
},
|
||
commit: function(widget) {
|
||
let variable = this.getValue();
|
||
variable = variable.replace("${", "");
|
||
variable = variable.replace("}", "");
|
||
widget.setData('name', variable);
|
||
}
|
||
},
|
||
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}); |