HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/apklausos/assets/scripts/admin/surveysettings.js
/**
 * Save row to table
 *
 * @return void
 */
function saveParameter() {
    var sParamname = $.trim($('#paramname').val());
    if (sParamname == '' || !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(sParamname) || sParamname == 'sid' || sParamname == 'newtest' || sParamname == 'token' || sParamname == 'lang') {
        LS.ajaxAlerts(window.sEnterValidParam, 'danger', {inline: '#parameterError'});
        return;
    }
    var modal = bootstrap.Modal.getInstance($('#dlgEditParameter'))
    modal.hide();
    try {
        var rowData = JSON.parse($('#dlgEditParameter').data('rawdata'));
    } catch (e) {
        rowData = {};
    }

    var URLParam = {};
    var postUrl = $('#dlgEditParameter').data('save-url');

    if ($('#dlgEditParameter').data('action') == 'add') {
        URLParam.parameter = sParamname;
        URLParam.targetqid = $('#targetquestion').val().split('-').shift() || '';
        URLParam.targetsqid = $('#targetquestion').val().split('-').pop() || '';
    } else {
        URLParam.id = rowData.id;
        URLParam.parameter = sParamname;
        URLParam.targetqid = $('#targetquestion').val().split('-').shift() || '';
        URLParam.targetsqid = $('#targetquestion').val().split('-').pop();
    }

    var postDatas = {
        surveyId: window.PanelIntegrationData.surveyid,
        URLParam: URLParam
    };

    sendPostAndUpdate(postUrl, postDatas);
}

function newParameter(data) {
    $('#parameterError').html('');
    $('#targetquestion').val('');
    $('#paramname').val('');
    $('#dlgEditParameter').data('action', 'add');
    $('#dlgEditParameter .modal-title').text(window.PanelIntegrationData.i10n['Add URL parameter']);
}

function editParameter(event, aRowData) {
    $('#parameterError').html('');
    $('#targetquestion').val((aRowData.qid || '') + '-' + (aRowData.sqid || ''));
    $('#paramname').val(aRowData.parameter);
    $('#dlgEditParameter').data('action', 'edit');
    $('#dlgEditParameter').data('rawdata', JSON.stringify(aRowData));
    $('#dlgEditParameter .modal-title').text(window.PanelIntegrationData.i10n['Edit URL parameter']);
    const modal = new bootstrap.Modal(document.getElementById('dlgEditParameter'));
    modal.show();
}

function in_array(needle, haystack, argStrict) {

    var key = '',
        strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }

    return false;
}

function guidGenerator() {
    var S4 = function () {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    };
    return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4());
}

/**
 * Validate settings form depending on form name
 */
function validateSettingsForm($form) {
    switch ($form.attr('id')) {
        case 'publication':
            return LS.validateEndDateHigherThanStart(
                $('#startdate_datetimepicker').data('DateTimePicker'),
                $('#expires_datetimepicker').data('DateTimePicker'),
                () => {
                    LS.createAlert(expirationLowerThanStartError, 'danger', {'showCloseButton': true})
                }
            );
        default:
            return true;
    }
}

/**
 * Validates that an end date is not lower than a start date
 */
function validateEndDateHigherThanStart(startDatePicker, endDatePicker, errorMessage) {
    if (!startDatePicker || !startDatePicker.date()) {
        return true;
    }
    if (!endDatePicker || !endDatePicker.date()) {
        return true;
    }
    const difference = endDatePicker.date().diff(startDatePicker.date());
    if (difference >= 0) {
        return true;
    }
    LS.LsGlobalNotifier.createAlert(errorMessage, 'danger');
    return false;
}

function sendPostAndUpdate(url, data) {
    var postDatas = data || {};
    postDatas[LS.data.csrfTokenName] = LS.data.csrfToken;

    // Ajax request
    $.ajax({
        url: url,
        type: 'POST',
        data: postDatas,

        success : function(result) {
            if (!result.success) {
                var errorMsg = result.message || '';
                if (!errorMsg) errorMsg = "Unexpected error";
                LS.LsGlobalNotifier.createAlert(errorMsg, 'danger');
                return;
            }

            LS.LsGlobalNotifier.createAlert(result.message, 'success');

            try {
                $.fn.yiiGridView.update('urlparams');
            } catch (e){
                if (e) {
                    console.ls.error(e);
                }
            }
        },
        error :  function(result){
            LS.LsGlobalNotifier.createAlert(result.statusText ?? "Unexpected error", 'danger');
        }
    });
}

function searchParameters() {
    var data = {
        search_query: $('#search_query').val()
    };
    $.fn.yiiGridView.update('urlparams', {data: data});
}

$(document).on('click', '#addParameterButton', function(e){
    e.preventDefault();
    newParameter(e);
});
$(document).on('click', '.surveysettings_edit_intparameter', function(e){
    e.preventDefault();
    editParameter(e,$(this).data());
});

$(document).on('click', '#btnSaveParams', saveParameter);

$(document).on('click', '#searchParameterButton', searchParameters);
$(document).on('change', '#integrationPanelPager #pageSize', function(){
    $.fn.yiiGridView.update('urlparams',{ data:{ pageSize: $(this).val() }});
});