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/ideasforum.kaunokolegija.lt/wp-content/plugins/quiz-master-next/js/qsm-admin-contact.js
/**
 * QSM - Contact Form
 */

var QSMContact;
(function ($) {
  QSMContact = {
    load : function() {
        if($.isArray(qsmContactObject.contactForm) && qsmContactObject.contactForm.length > 0){
            $.each( qsmContactObject.contactForm, function( i, val ) {
              QSMContact.addField( val );
            });
        }
    },
    addField : function( fieldArray ) {
      var new_label =  fieldArray.label.replace(/"/g, "'");      
      var contactField = $( '<div class="contact-form-field new">' +
		  '<div class="contact-form-group">' +
		  	'<label class="contact-form-label">Field Type</label>' +
            '<select class="contact-form-control wide type-control">' +
              '<option value="none">Select a type...</option>' +
              '<option value="text">Small Open Answer</option>' +
              '<option value="email">Email</option>' +
              '<option value="checkbox">Checkbox</option>' +
            '</select>' +
          '</div>' +
          '<div class="contact-form-group">' +
            '<label class="contact-form-label">Label</label>' +
            '<input type="text" class="contact-form-control label-control" value="' + new_label + '">' +
          '</div>' +
          '<div class="contact-form-group">' +
            '<label class="contact-form-label">Used For</label>' +
            '<select class="contact-form-control use-control">' +
              '<option value="none"></option>' +
              '<option value="name">Name</option>' +
              '<option value="email">Email</option>' +
              '<option value="comp">Business</option>' +
              '<option value="phone">Phone</option>' +
            '</select>' +
          '</div>' +
          '<div class="contact-form-group">' +
            '<label class="contact-form-label">Required?</label>' +
            '<input type="checkbox" class="required-control">' +
          '</div>' +
          '<div class="contact-form-group">' +
            '<a href="#" class="delete-field">Delete</a> | ' +
            '<a href="#" class="copy-field">Duplicate</a>' +
          '</div>' +
        '</div>'
      );
      if ( true === fieldArray.required || "true" === fieldArray.required ) {
        contactField.find( '.required-control' ).prop( 'checked', true );
      }
      switch ( fieldArray.type ) {
        case 'text':
          contactField.find( '.type-control option[value="text"]').prop( 'selected', true );
          break;
        case 'email':
          contactField.find( '.type-control option[value="email"]').prop( 'selected', true );
          break;
        case 'checkbox':
          contactField.find( '.type-control option[value="checkbox"]').prop( 'selected', true );
          break;
        default:

      }
      switch ( fieldArray.use ) {
        case 'name':
          contactField.find( '.use-control option[value="name"]').prop( 'selected', true );
          break;
        case 'email':
          contactField.find( '.use-control option[value="email"]').prop( 'selected', true );
          break;
        case 'comp':
          contactField.find( '.use-control option[value="comp"]').prop( 'selected', true );
          break;
        case 'phone':
          contactField.find( '.use-control option[value="phone"]').prop( 'selected', true );
          break;
        default:

      }
      $( '.contact-form' ).append( contactField );
      setTimeout( QSMContact.removeNew, 250 );
    },
    removeNew: function() {
      $( '.contact-form-field' ).removeClass( 'new' );
    },
    duplicateField: function( linkClicked ) {
      var field = linkClicked.parents( '.contact-form-field' );
      var fieldArray = {
        label: field.find( '.label-control' ).val(),
        type: field.find( '.type-control' ).val(),
        required: field.find( '.required-control' ).prop( 'checked' ),
        use: field.find( '.use-control' ).val()
      };
      QSMContact.addField( fieldArray );
    },
    deleteField: function( field ) {
      var parent = field.parents( '.contact-form-field' );
      parent.addClass( 'deleting' );
      setTimeout( function() {
        parent.remove();
      }, 250 );
    },
    newField : function() {
      var fieldArray = {
        label : '',
        type : 'text',
        answers : [],
        required : false,
        use: ''
      };
      QSMContact.addField( fieldArray );
    },
    save : function() {
      QSMContact.displayAlert( 'Saving contact fields...', 'info' );
      var contactFields = $( '.contact-form-field' );
      var contactForm = [];
      var contactEach;
      $.each( contactFields, function( i, val ) {
        contactEach = {
          label: $( this ).find( '.label-control' ).val(),
          type: $( this ).find( '.type-control' ).val(),
          required: $( this ).find( '.required-control' ).prop( 'checked' ),
          use: $( this ).find( '.use-control' ).val()
        };
        contactForm.push( contactEach );
      });
      var data = {
    		action: 'qsm_save_contact',
    		contact_form: contactForm,
                quiz_id : qsmContactObject.quizID,
                nonce : qsmContactObject.saveNonce,
    	};

    	jQuery.post( ajaxurl, data, function( response ) {
    		QSMContact.saved( JSON.parse( response ) );
    	});
    },
    saved : function( response ) {
      if ( response.status ) {
        QSMContact.displayAlert( '<strong>Success</strong> Your contact fields have been saved!', 'success' );
      } else {
        QSMContact.displayAlert( '<strong>Error</strong> There was an error encountered when saving your contact fields. Please try again.', 'error' );
      }
    },
    displayAlert: function( message, type ) {
      QSMContact.clearAlerts();
      $( '.contact-message' ).addClass( 'notice' );
      switch ( type ) {
        case 'info':
          $( '.contact-message' ).addClass( 'notice-info' );
          break;
        case 'error':
          $( '.contact-message' ).addClass( 'notice-error' );
          break;
        case 'success':
          $( '.contact-message' ).addClass( 'notice-success' );
          break;
        default:
      }
      $( '.contact-message' ).append( '<p>' + message + '</p>' );
    },
    clearAlerts: function() {
      $( '.contact-message' ).empty().removeClass().addClass( 'contact-message' );
    }
  };
  $(function() {
    QSMContact.load();
    if( $('.contact-form > .contact-form-field').length === 0 ){
        $('.save-contact').hide();
    }
    $( '.add-contact-field' ).on( 'click', function() {
      QSMContact.newField();
        if( $('.contact-form > .contact-form-field').length === 0 ){
            $('.save-contact').hide();
        }else{
            $('.save-contact').show();
        }
    });
    $( '.save-contact' ).on( 'click', function() {
      QSMContact.save();
    });
    $( '.contact-form' ).on( 'click', '.delete-field', function( event ) {
      event.preventDefault();
      QSMContact.deleteField( $( this ) );
    });
    $( '.contact-form' ).on( 'click', '.copy-field', function( event ) {
      event.preventDefault();
      QSMContact.duplicateField( $( this ) );
    });
    $( '.contact-form' ).sortable({
      cursor: 'move',
	  opacity: 60,
	  placeholder: "ui-state-highlight"
    });
  });
}(jQuery));