/** * Für die Bedienung der Freifelder-Konfigurations-Oberfläche */ var ResubmissionTextFieldConfig = (function ($) { 'use strict'; var me = { isInitialized: false, storage: { $table: null, $editDialog: null, dataTableApi: null }, /** * @return void */ init: function () { if (me.isInitialized === true) { return; } me.storage.$table = $('#resubmission_textfield_datatable'); me.storage.$editDialog = $('#resubmission_textfield_edit'); if (me.storage.$table.length === 0 || me.storage.$editDialog.length === 0) { throw 'Could not initialize ResubmissionTextFieldConfig. Required elements are missing.'; } me.initDialog(); me.registerEvents(); me.isInitialized = true; }, /** * @return {void} */ initDialog: function () { me.storage.$editDialog.dialog({ modal: true, bgiframe: true, closeOnEscape: false, minWidth: 550, maxHeight: 400, autoOpen: false, buttons: [{ text: 'ABBRECHEN', click: function () { me.resetEditDialog(); me.closeEditDialog(); } }, { text: 'SPEICHERN', click: function () { me.saveItem(); } }], close: function () { me.resetEditDialog(); } }); }, /** * @return {void} */ registerEvents: function () { // Eintrag bearbeiten $(document).on('click', '.resubmissiontextfield-edit-button', function (e) { e.preventDefault(); var textfieldConfigId = $(this).data('textfieldConfigId'); me.editItem(textfieldConfigId); }); // Eintrag löschen $(document).on('click', '.resubmissiontextfield-delete-button', function (e) { e.preventDefault(); var textfieldConfigId = $(this).data('textfieldConfigId'); me.deleteItem(textfieldConfigId); }); // Neuen Eintrag anlegen $('#resubmissiontextfield-create-button').on('click', function (e) { e.preventDefault(); me.createItem(); }) }, /** * @return {void} */ createItem: function () { if (me.isInitialized === false) { me.init(); } me.resetEditDialog(); me.openEditDialog(); }, /** * @param {number} textfieldConfigId * * @return {void} */ editItem: function (textfieldConfigId) { $.ajax({ url: 'index.php?module=wiedervorlage&action=settings&cmd=textfields-detail', data: { id: textfieldConfigId }, method: 'post', dataType: 'json', success: function (result) { me.storage.$editDialog.find('#resubmissiontextfield-id').val(result.data.id); me.storage.$editDialog.find('#resubmissiontextfield-title').val(result.data.title); me.storage.$editDialog.find('#resubmissiontextfield-availablestage').val(result.data.available_from_stage_id); me.storage.$editDialog.find('#resubmissiontextfield-requiredstage').val(result.data.required_from_stage_id); me.storage.$editDialog.find('#resubmissiontextfield-showinpipeline').prop('checked', result.data.show_in_pipeline); me.storage.$editDialog.find('#resubmissiontextfield-showintables').prop('checked', result.data.show_in_tables); me.storage.$editDialog.dialog('open'); }, error: function (jqXhr) { alert('Fehler: ' + jqXhr.responseJSON.error); } }); }, /** * @return {void} */ saveItem: function () { $.ajax({ url: 'index.php?module=wiedervorlage&action=settings&cmd=textfields-save', data: { id: $('#resubmissiontextfield-id').val(), title: $('#resubmissiontextfield-title').val(), available_from_stage_id: $('#resubmissiontextfield-availablestage').val(), required_from_stage_id: $('#resubmissiontextfield-requiredstage').val(), show_in_pipeline: $('#resubmissiontextfield-showinpipeline').prop('checked'), show_in_tables: $('#resubmissiontextfield-showintables').prop('checked') }, method: 'post', dataType: 'json', success: function (data) { if (data.success === true) { me.resetEditDialog(); me.reloadDataTable(); me.closeEditDialog(); } if (data.success === false) { alert(data.error); } }, error: function (jqXhr) { alert('Fehler: ' + jqXhr.responseJSON.error); } }); }, /** * @param {number} textfieldConfigId * * @return {void} */ deleteItem: function (textfieldConfigId) { var confirmValue = confirm('Möchten Sie das Freitextfeld wirklich löschen?'); if (confirmValue === false) { return; } $.ajax({ url: 'index.php?module=wiedervorlage&action=settings&cmd=textfields-delete', data: { id: textfieldConfigId }, method: 'post', dataType: 'json', success: function (data) { if (data.success === true) { me.reloadDataTable(); } if (data.success === false) { alert('Unbekannter Fehler beim Löschen.'); } }, error: function (jqXhr) { alert('Fehler: ' + jqXhr.responseJSON.error); } }); }, /** * @return void */ openEditDialog: function () { me.storage.$editDialog.dialog('open'); }, /** * @return void */ closeEditDialog: function () { me.storage.$editDialog.dialog('close'); }, /** * @return void */ resetEditDialog: function () { me.storage.$editDialog.find('#resubmissiontextfield-id').val(''); me.storage.$editDialog.find('#resubmissiontextfield-title').val(''); me.storage.$editDialog.find('#resubmissiontextfield-availablestage').val('0'); me.storage.$editDialog.find('#resubmissiontextfield-requiredstage').val('0'); me.storage.$editDialog.find('#resubmissiontextfield-showinpipeline').prop('checked', false); me.storage.$editDialog.find('#resubmissiontextfield-showintables').prop('checked', false); }, /** * Lädt die DataTable-Inhalte neu; per AJAX * * @return {void} */ reloadDataTable: function () { if (!$.fn.DataTable.isDataTable(me.storage.$table)) { return; // DataTable ist noch nicht initalisiert } var dataTableApi = $(me.storage.$table).dataTable().api(); dataTableApi.ajax.reload(); } }; return { init: me.init }; })(jQuery); $(document).ready(function () { if ($('#resubmission_textfield_datatable').length > 0) { ResubmissionTextFieldConfig.init(); } });