HEX
Server: Apache
System: Linux srv13.cpanelhost.cl 3.10.0-962.3.2.lve1.5.38.el7.x86_64 #1 SMP Thu Jun 18 05:28:41 EDT 2020 x86_64
User: cca63905 (4205)
PHP: 7.3.20
Disabled: NONE
Upload Files
File: //proc/self/cwd/nueva/modules/roja45quotationsprofree/views/js/roja45moduleadmin.js
/**
 * roja45moduleadmin.js.
 *
 * @author    Roja45
 * @copyright 2016 Roja45
 * @license   license.txt
 *
 * 2016 ROJA45 - All rights reserved.
 *
 * DISCLAIMER
 * Changing this file will render any support provided by us null and void.
 */

$(document).ready(function() {

    $( '.sortable' ).sortable({
        connectWith: '.sortable',
        placeholder: 'ui-state-highlight',
        forcePlaceholderSize: true,
        dropOnEmpty: true,
        opacity: 0.8,
        tolerance: 'pointer'
    }).disableSelection();

    $('.roja45quotations_submitConfiguration').click(function (e) {
        roja45quotationsprofree.saveConfiguration($(this));
    });

    $('.roja45quotations_submitFormDesign').click(function (e) {
        roja45quotationsprofree.saveForm($(this));
    });

    $( ".sortable" ).on( "dragend.h5s", function( event ) {
        $('#'+event.target.id);
    });

    $('.cancelAdd').on( 'click', function(e) {
        var form_name = '#'+$(this).closest('form').attr('id');
        $(form_name).fadeOut( 'fast', function(e) {
            $('#form_element_buttons').empty();
            $( 'select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
            $( 'select[name=form_element_required]').val('0');
            $( 'select[name=form_element_validation]').val('none');
            $(form_name)[0].reset();
        });
        $(this).closest('form').find("input[type=text], textarea").val("");
        $(this).closest('form').find('.form-ok').removeClass('form-ok');
        $(this).closest('form').find('.form-error').removeClass('form-error');
        $('body').scrollTo('#QUOTATION_FORM_ELEMENTS', 500);
    });

    $('input[name=ROJA45_QUOTATIONSPRO_DISPLAY_LABEL]').on('change', function() {
        if ($("input[name='ROJA45_QUOTATIONSPRO_DISPLAY_LABEL']:checked").val() == '1') {
            $('.label_position_hidden').fadeIn();
        } else {
            $('.label_position_hidden').fadeOut();
        }
    }).trigger('change');

    var num_col_prev = $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
    $("#ROJA45_QUOTATIONSPRO_NUM_COL").change( function(e) {
        e.preventDefault();
        var cols = $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
        var error_flag = false;
        // TODO - if required cols less than # cols
        // if cols = 2
        var i=0;
        for (i=(parseInt(cols)+1); i <= 3; i++ ) {
            if ($('*[data-column="'+i+'"] li').length > 0) {
                // SHOW WARNING
                error_flag = true;
                $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL]").val(num_col_prev);
                $( "#fields_warning_dialog" ).dialog({
                    modal: true,
                    buttons: {
                        Ok: function() {
                            $( this ).dialog( "close" );
                        }
                    }
                });
            }
        }

        if (!error_flag) {
            num_col_prev = cols;
            $('input[name=ROJA45_QUOTATIONSPRO_NUM_COL]').val(cols);
            var count = 1;
            var col_width = 12;

            for (i=count; i <= cols; i++ ) {
                if (!$('*[data-column="'+count+'"]').length > 0) {
                    // create column
                    $('#form_design_columns').append('' +
                        '<section id="sortable'+i+'" data-column="'+i+'" class="form-column col-lg-' + col_width + '">' +
                        '<section id="form_design_column_'+i+'" class="filter_panel">' +
                        '<header class="clearfix"><div class="panel-heading-icon"><i class="icon-list-ul"></i></div><div class="panel-heading-name">' +
                        '<input type="text" class="form-column-title" name="form_element_column_title_'+i+'" value="Column '+i+'" data-validate="isText" onfocus="if(this.value == \'Column '+i+'\') { this.value = \'\'; }" onblur="if(this.value == \'\') { this.value = \'Column 1\'; }"></div></header>' +
                        '<section class="filter_list"><ul class="list-unstyled droppable sortable connectedSortable"></ul></section>' +
                        '</section>' +
                        '</section>');
                } else {
                    //$('*[data-column="'+count+'"]').removeClass('col-lg-12 col-lg-6 col-lg-4');
                    //$('*[data-column="'+count+'"]').addClass('col-lg-'+col_width);
                }
                count++;
            }

            for (i=count; i <= 3; i++ ) {
                if ($('*[data-column="'+count+'"]').length > 0) {
                    // delete it
                    $('*[data-column="'+count+'"]').remove();
                }
                count++;
            }
            $( ".sortable" ).sortable( "destroy" );
            $( '.sortable' ).sortable({
                connectWith: '.sortable',
                placeholder: 'ui-state-highlight',
                forcePlaceholderSize: true,
                dropOnEmpty: true,
                opacity: 0.8,
                tolerance: 'pointer'
            }).disableSelection();

            $('#text_field_form').fadeOut( 'fast', function(e) {
                $('#form_element_buttons').empty();
                $( "select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]").val('DEFAULT');
            });
        }
    });

    $('#ROJA45_QUOTATIONSPRO_FORM_ELEMENT').change( function (e) {
        e.preventDefault();
        var element = $( "select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT] option:selected").val();
        var cols = $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();

        $('.field_elements_form').fadeOut( 'fast', function(e) {
            $('#form_element_buttons').empty();
            $( 'select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
            $( 'select[name=form_element_required]').val('0');
            $( 'select[name=form_element_validation]').val('none');
            $(this)[0].reset();
        });
        switch (element) {
            case 'DEFAULT':
                $('#text_field_form').fadeOut( 'fast', function(e) {
                    $('.form_element_buttons').empty();
                });
                break;
            case 'TEXT':
                roja45quotationsprofree.selectElement('#text_field_form', element);
                break;
            case 'TEXTAREA':
                roja45quotationsprofree.selectElement('#textarea_field_form', element);
                break;
        }
    });

    $('.form_element_contents').on('change', function(e) {
        e.preventDefault();
        var val = $(this).val();
        $('.field-dropdown-custom').hide();
        if (val == "0") {
            // clear options
            $('.field-dropdown-custom textarea').val('');
        } else if (val == "1") {
            $('.field-dropdown-custom').show();
        } else if (val == "2") {
            // countries
        }
    });

    roja45quotationsprofree.initFormDesignerEvents();
});

var roja45quotationsprofree = {
    initFormDesignerEvents : function () {
        $('.edit-configuration').off('click').on('click', function(e) {
            e.preventDefault();
            roja45quotationsprofree.editConfiguration($(this));
        });
        $('.delete-configuration').off('click').on('click', function(e) {
            e.preventDefault();
            roja45quotationsprofree.deleteElement($(this));
        });
    },
    selectElement : function( form, element ) {
        var cols = $("select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
        $(form + ' #form_element_buttons').empty();
        var i = 0;
        for (i = 1; i <= cols; i++) {
            var width = (12 / cols);
            $(form + ' #form_element_buttons').append('<a href="#" data-col="' + i + '" class="addFieldToColumn btn btn-default btn btn-default" style="margin-right: 10px;"><i class="process-icon-edit"></i>Add To Column ' + i + '</a>');
        }

        $('.addFieldToColumn').on('click', function (e) {
            e.preventDefault();
            var col = $(this).data('col');
            var form_name = '#' + $(this).closest('form').attr('id');

            $(form_name + ' .alert.alert-danger').fadeOut('fast', function () {
                $(form_name + ' .alert.alert-danger').empty();
                if (roja45quotationsprofree.validateElementForm(form_name)) {
                    var fields = $(form_name).serialize();
                    roja45quotationsprofree.addElementToColumn(col, element, $(form_name + ' input[name=form_element_name]').val(), fields);
                    $(form_name).fadeOut('fast', function (e) {
                        $(form_name + ' #form_element_buttons').empty();
                        $(form_name + ' select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
                        $(form_name + ' select[name=form_element_required]').val('NO');
                        $(form_name + ' select[name=form_element_validation]').val('none');
                        $(form_name)[0].reset();
                    });
                    $(this).closest('form').find("input[type=text], textarea").val("");
                    $(this).closest('form').find('.form-ok').removeClass('form-ok');
                    $(this).closest('form').find('.form-error').removeClass('form-error');
                    $('body').scrollTo('#QUOTATION_FORM_ELEMENTS', 500);
                }
            });
        });

        $(form).fadeIn('fast', function (e) {

        });
    },

    addElementToColumn : function (column, type, name, config) {
        // TODO - Check whether name already exists, add a number to it.
        var id = '';
        if ( $('#form_design_columns #' +name+'_'+column).length > 0 ) {
            id = name+'_'+column+'_' + $('#form_design_columns #'+ name+'_'+column).length +1;
        } else {
            id = name+'_'+column;
        }

        id = id.toLowerCase().replace(/\s+/g, '');

        $('#form_design_column_' + column + ' .sortable' ).append('<li id="' + id + '" class="filter_list_item" draggable="true" data-id="' + id + '" data-type="' + type + '" data-name="' + name + '"data-column="'+column+'"> \
            <input type="hidden" name="configuration" value="' + config + '"/> \
            <input type="hidden" name="id" value="' + id + '"/> \
            <input type="hidden" name="name" value="' + name + '"/> \
            <input type="hidden" name="type" value="' + type + '"/> \
            <div class="col-lg-1 drag-icon"><h4><i class="icon-bars"></i></h4></div> \
            <div class="col-lg-5"><h4><span class="panel-heading-name">'+name+'</span></div>\
            <div class="col-lg-4"><h4><span class="panel-heading-type">['+ type +']</span></h4></div>\
            <div class="col-lg-2"><span class="panel-heading-action pull-right">\
            <a class="list-toolbar-btn edit-configuration" href="#" title="Configure"><i class="process-icon-configure"></i></a> \
            <a class="list-toolbar-btn delete-configuration" href="#" title="Delete"><i class="process-icon-delete"></i></a></span></div></li>');

        $( ".sortable" ).sortable( "destroy" );
        $( '.sortable' ).sortable({
            connectWith: '.sortable',
            placeholder: 'ui-state-highlight',
            forcePlaceholderSize: true,
            dropOnEmpty: true,
            opacity: 0.8,
            tolerance: 'pointer'
        }).disableSelection();

        roja45quotationsprofree.initFormDesignerEvents();
    },

    editConfiguration : function ( ele ) {
        $('.field_elements_form').hide();
        var type = ele.closest('.filter_list_item').attr('data-type');
        var id = ele.closest('.filter_list_item').attr('data-id');
        var serialized = $('#'+id+' input[name=configuration]').val();
        var form = '#' + $('*[data-form-type="'+type+'"]').attr('id');
        $.each(serialized.split('&'), function (index, elem) {
            var vals = elem.split('=');
            $(form + " [name='" + vals[0] + "']").val(decodeURIComponent( vals[1].replace(/\+/g , " ") ));

            if ($(form + " [name='" + vals[0] + "']").is('select')) {
                $(form + " [name='" + vals[0] + "']").trigger('change');
            };
        });

        $(form+' #form_element_buttons').empty();
        $(form+' #form_element_buttons').append('<a href="#" data-field="'+ id + '" class="updateField btn btn-default btn btn-default" style="margin-right: 10px;"><i class="process-icon-edit"></i>Apply</a>');
        $(form+' #form_element_buttons').append('<a href="#" class="cancelEdit btn btn-default btn btn-default" style="margin-right: 10px;"><i class="process-icon-edit"></i>Cancel</a>');
        $('.updateField').on('click', function(e) {
            e.preventDefault();
            var field = $(this).data('field');
            var form_name = '#'+$(this).closest('form').attr('id');
            $(form_name+' .alert.alert-danger').fadeOut('fast', function() {
                $(form_name+' .alert.alert-danger').empty();

                if (roja45quotationsprofree.validateElementForm( form_name )) {
                    var fields = $(form_name).serialize();
                    $('#'+id+' input[name=configuration]').val(fields);

                    $('#'+id+' .panel-heading-name').html($(form_name+' input[name=form_element_name]').val());
                    $('#'+id+' input[name=name]').val($(form_name+' input[name=form_element_name]').val());

                    $(form_name).fadeOut( 'fast', function(e) {
                        $(form+' #form_element_buttons').empty();
                        $(form+' select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
                        $(form+' select[name=form_element_required]').val('NO');
                        $(form+' select[name=form_element_validation]').val('none');
                    });
                    $(this).closest('form').find("input[type=text], textarea").val("");
                    $(this).closest('form').find('.form-ok').removeClass('form-ok');
                    $(this).closest('form').find('.form-error').removeClass('form-error');
                }
            });
        });

        $('.cancelEdit').on( 'click', function(e) {
            var form_name = '#'+$(this).closest('form').attr('id');
            $(form_name).fadeOut( 'fast', function(e) {
                $('#form_element_buttons').empty();
                $( 'select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
                $( 'select[name=form_element_required]').val('NO');
                $( 'select[name=form_element_validation]').val('none');
                $(form_name)[0].reset();
            });
            $(this).closest('form').find("input[type=text], textarea").val("");
            $(this).closest('form').find('.form-ok').removeClass('form-ok');
            $(this).closest('form').find('.form-error').removeClass('form-error');
            $('body').scrollTo('#QUOTATION_FORM_ELEMENTS', 500);
        });

        $('*[data-form-type="'+type+'"]').fadeIn( 'fast', function(e) {

        });
    },

    deleteElement : function (ele) {
        var column = ele.closest('.filter_list_item').attr('data-column');
        var id = ele.closest('.filter_list_item').attr('data-id');
        $('#form_design_column_' + column + ' #'+id).fadeOut('fast', function(e) {
            $(this).remove();
        });
    },


    saveConfiguration : function (ele) {
        roja45global.toggleModal();
    },

    saveForm : function (ele) {
        roja45global.toggleModal();
        var config = {};
        config['num_columns'] = $('input[name=ROJA45_QUOTATIONSPRO_NUM_COL]').val();
        config['form_id'] = $('input[name=ROJA45_QUOTATIONSPRO_FORM_ID]').val();
        config.columns = [];
        var column_titles = '';

        $('.form-column-title').each( function (i) {
            var val = $(this).val();
            var id = $(this).attr('name');
            if ( val != ('Column ' + (i+1)) ) {
                column_titles += id + '=' + val + '&';
            } else {
                column_titles += id + '=&';
            }
        });

        config['titles'] = column_titles.substring(0, column_titles.length-1);
        $('.form-column').each( function() {
            var column = {};
            var col = $(this).data('column');
            column.num = col;
            // if column not default value, set name
            var col_name = $('input[name=form_element_column_title_'+col+']').val();
            if (col_name != 'Column '+col) {
                column.name = col_name;
            }

            column.fields = [];
            $(this).find('.filter_list_item').each( function(i) {
                var field = {};
                field.pos = i;

                $(this).find('input').each(function() {
                    field[$(this).attr('name')] = $(this).val();
                });
                column.fields[i] = field;
            });
            config.columns[col] = column;
        });

        if (config) {
            var json = JSON.stringify(config);
            $('input[name=ROJA45_QUOTATIONSPRO_FORM]').val(json);
        }
    },

    validateElementForm : function (form) {
        var validate_fields = $(form+ ' .is_required');

        if (validate_fields.length > 0) {
            $(form+ ' .alert.alert-danger').append('<ol></ol>');
            var error_count = 0;

            validate_fields.each(function( index ) {
                var function_name = 'validate_' + $(this).data('validate');
                var string_to_test = $(this).val();

                if (typeof window[function_name] == 'function') {
                    var res = window[function_name](string_to_test);
                    if (!res) {
                        error_count++;
                        var field_name = $(this).closest('.form-group').find('label span').text();

                        if ($(this).attr('data-iso-code')) {
                            field_name = field_name + ' ('+$(this).attr('data-iso-code')+')';
                        }
                        $(form+ ' .alert.alert-danger ol').append('<li><b>'+field_name+'</b></li>');
                    };
                }
            });

            if (validate_fields.length == 1)
                $(form+ ' .alert.alert-danger').prepend('<p>There is 1 error</p>');
            else
                $(form+ ' .alert.alert-danger').prepend('<p>There are ' + error_count + ' errors</p>');
        }

        if (error_count == 0) {
            return true;
        } else {
            $(form+ ' .alert.alert-danger').fadeIn();
            return false;
        }
    },
};