📄 Viewing: general.js

var abj404_whichButtonClicked = null;

jQuery(document).ready(function($) {
	var adminOptionsPage = document.getElementById("admin-options-page");
	if (adminOptionsPage) {
		adminOptionsPage.addEventListener('submit', submitOptions);
	}
	
	var deleteDebugFileButton = document.querySelector('#deleteDebugFile');
	if (deleteDebugFileButton) {
		deleteDebugFileButton.addEventListener('click', function(e) {
			abj404_whichButtonClicked = 'deleteDebugFile';
			submitOptions(e);
		});
	}
})

function striphtml(html) {
    var tmp = document.createElement("DIV");
    tmp.innerHTML = html;
    return tmp.textContent || tmp.innerText || "";
}

function submitOptions(e) {
    e.preventDefault();
    
	// gather form data.
	var form = document.getElementById("admin-options-page");
	var formElements = form.elements;
	var formData = {};
	for (var i = 0; i < formElements.length; i++) {
		var field = formElements[i];
		var currentValue = field.value;
		if (field.type == 'checkbox') {
			currentValue = field.checked ? 1 : 0;
		}
		
		if (!(field.name in formData)) {
			formData[field.name] = currentValue;
		} else {
			if (!Array.isArray(formData[field.name])) {
				formData[field.name] = new Array(formData[field.name]);
			}
			formData[field.name].push(currentValue);
		}
	}

    // if we should just delete the log file.
    if (abj404_whichButtonClicked == 'deleteDebugFile') {
    	// set the action to 'updateOptions' and set deleteDebugFile to true
    	formData['action'] = 'updateOptions';
    	formData['deleteDebugFile'] = true;
    } else {
    	formData['deleteDebugFile'] = false;
    }

	// fix checkboxes.
    var formDataAsJson = JSON.stringify(formData);
    var encodedData = encodeURI(formDataAsJson);

    // save / send the data via an ajax request.
    var saveOptionsURL = form.getAttribute('data-url')
    
    jQuery.ajax({
        url: saveOptionsURL,
        type: 'POST',
        data: {
            'encodedData': encodedData
        },
        dataType :'json',
        success: function (data) {
            var message = striphtml(JSON.stringify(data, null, 2));
            console.log("saved options: " + message);
            
            // redirect and post a message
            var form = jQuery('<form action="' + data['newURL'] + '" method="post">' +
            		  '<input type="text" name="display-this-message" value="' + data['message'] + '" />' +
            		  '</form>');
            jQuery('body').append(form);
            form.submit();            
        },
        error: function (request, error) {
            var errMsg = "Error saving options. Request: " + 
            	JSON.stringify(request, null, 2) + "  /// Error: " + JSON.stringify(error, null, 2);
        	alert(errMsg);
        }
    });    

    // don't submit the form.
    return false;
}

🌑 DarkStealth — WP Plugin Edition

Directory: /home/httpd/html/matrixmodels.com/public_html/wp-content/plugins/404-solution/includes/js