<script type="text/javascript">
(function (window, document, $, undefined) {
window.editorActionHandler = function (action, clickCallback) {
var $frm = $('#frm' + action),
$btnwrap = $('#btnwrap' + action),
$data = $('#{{ dataForm.vars.id }}');
if (typeof clickCallback !== 'function') {
clickCallback = (function (action) {
return function (e) {
var $modal = $('#modal' + action),
$frm = $('#frm' + action);
if ($modal.length > 0) {
$modal.modal({});
} else {
$frm.submit();
}
e.preventDefault();
}
})(action);
}
$btnwrap.on('click', 'a', clickCallback);
$frm.submit(function() {
var data = $data.serializeObject();
// HACK: handle ace editors
$data.find('.ace_editor').each(function (index, elem) {
var $elem = $(elem),
editor = ace.edit(elem),
val = editor.getValue(),
name = $elem.parent().find('> input').attr('name');
data[name] = val;
});
// HACK: handle CKEditors
$data.find('.cke').each(function (index, elem) {
var $elem = $(elem);
data[$elem.prev('textarea').attr('name')] = CKEDITOR.instances[$elem.attr('id').replace('cke_', '')].getData();
});
for (var key in data) {
if (data.hasOwnProperty(key)) {
if (data[key] instanceof Array) {
for (var value in data[key]) {
if (data[key].hasOwnProperty(value)) {
$frm.append('<input type="hidden" name="' + key + '" value="' + htmlEscape(data[key][value]) + '" />');
}
}
} else {
$frm.append('<input type="hidden" name="' + key + '" value="' + htmlEscape(data[key]) + '" />');
}
}
}
return true;
});
};
})(window, document, jQuery);
</script>