AnkietyGO/profile-builder/assets/js/jquery-epf-rf.js

166 lines
7.2 KiB
JavaScript
Raw Normal View History

function wppb_epf_rf_disable_live_select ( selector ){
jQuery( selector ).attr( 'disabled', true );
}
function wppb_rf_epf_change_id( field, container_name, fieldObj ) {
var buttonInContainer = jQuery( '.button-primary', fieldObj.parent().parent().parent() );
buttonInContainer.attr('disabled',true);
buttonInContainer.attr('tempclick', buttonInContainer.attr("onclick") );
buttonInContainer.removeAttr('onclick');
jQuery.post( ajaxurl , { action:"wppb_handle_rf_epf_id_change", field:field }, function(response) {
/**
* since version 2.0.2 we have the id directly on the option in the select so this ajax function is a little
redundant but can't be sure of the impact on other features so we will just add this
*/
id = fieldObj.find(":selected").attr( 'data-id' );
if( !id ){
id = response;
}
jQuery( '#id', fieldObj.parent().parent().parent() ).val( id );
buttonInContainer.attr('onclick', buttonInContainer.attr("tempclick") );
buttonInContainer.removeAttr('tempclick');
if( ( fieldObj.parents('.update_container_wppb_rf_fields').length || fieldObj.parents('.update_container_wppb_epf_fields').length ) && buttonInContainer.attr('disabled') ) {
buttonInContainer.text('Save Changes');
}
buttonInContainer.removeAttr('disabled');
});
}
jQuery(function(){
wppb_disable_delete_on_default_mandatory_fields();
wppb_disable_select_field_options();
jQuery(document).on( 'change', '#wppb_rf_fields .mb-list-entry-fields #field', function () {
wppb_rf_epf_change_id( jQuery(this).val(), '#wppb_rf_fields', jQuery(this) );
});
jQuery(document).on( 'change', '.update_container_wppb_rf_fields .mb-list-entry-fields #field', function () {
wppb_rf_epf_change_id( jQuery(this).val(), '.update_container_wppb_rf_fields', jQuery(this) );
});
jQuery(document).on( 'change', '#wppb_epf_fields .mb-list-entry-fields #field', function () {
wppb_rf_epf_change_id( jQuery(this).val(), '#wppb_epf_fields', jQuery(this) );
});
jQuery(document).on( 'change', '.update_container_wppb_epf_fields .mb-list-entry-fields #field', function () {
wppb_rf_epf_change_id( jQuery(this).val(), '.update_container_wppb_epf_fields', jQuery(this) );
});
});
/* function that removes the delete button and disables changing the field type on edit for username,password and email default fields */
function wppb_disable_delete_on_default_mandatory_fields(){
jQuery( '#container_wppb_rf_fields [class$="default-username added_fields_list"] .mbdelete, #container_wppb_rf_fields [class$="default-e-mail added_fields_list"] .mbdelete, #container_wppb_rf_fields [class$="default-password added_fields_list"] .mbdelete' ).hide(); // PB specific line
jQuery( '[class$="default-username"] #field, [class$="default-e-mail"] #field, [class$="default-password"] #field' ).attr( 'disabled', true ); // PB specific line
}
/* Disables the options in the field select drop-down that are also present in the table below */
function wppb_disable_select_field_options() {
jQuery('#field option').each( function() {
$optionField = jQuery(this);
$optionField.removeAttr('disabled');
var optionFieldId = jQuery(this).attr('data-id');
jQuery('#container_wppb_rf_fields .row-id pre, #container_wppb_epf_fields .row-id pre').each( function() {
if( jQuery(this).text() == optionFieldId ) {
$optionField.attr('disabled', true);
}
});
});
wppb_check_options_disabled_add_field();
}
/*
* Check to see if the selected field in the add new field to the list select drop-down is disabled
* We don't want this to happen, so select the first option instead
*/
function wppb_check_options_disabled_add_field() {
if( jQuery('#wppb_rf_fields #field option:selected, #wppb_epf_fields #field option:selected').is(':disabled') ) {
jQuery('#wppb_rf_fields #field option, #wppb_epf_fields #field option').first().attr('selected', true);
}
}
/*
* Run through all the field drop-downs, in edit mode, and check if the selected option is disabled
* If it is, disable the save button and if the date-id of the selected option matches the id of the field
* change the text of the button
*/
function wppb_check_options_disabled_edit_field() {
jQuery('.update_container_wppb_rf_fields #field, .update_container_wppb_epf_fields #field').each( function() {
$selectedOption = jQuery(this).children('option:selected');
$primaryButton = jQuery(this).parents('.mb-list-entry-fields').find('.button-primary');
if( $selectedOption.is(':disabled') ) {
$rowId = parseInt( jQuery(this).parents('tr').prev().find('.row-id pre').text() );
$primaryButton.attr('disabled', true);
$primaryButton[0].onclick = null;
if( $rowId != parseInt( $selectedOption.attr('data-id') ) ) {
$primaryButton.text('This field has already been added to the form');
}
} else {
$primaryButton.attr('disabled', false);
var tempBtnOnClick = $primaryButton.attr('onclick');
$primaryButton.text('Save Changes').removeAttr('onclick').attr('onclick', tempBtnOnClick);
}
});
}
/*
* Check to see if the selected field in the edit field select drop-down is disabled
* If it is we want to disable saving, because no changes have been made
*/
function wppb_check_update_field_options_disabled() {
jQuery('.update_container_wppb_rf_fields #field, .update_container_wppb_epf_fields #field').each( function() {
if( jQuery(this).find('option:selected').is(':disabled') ) {
jQuery(this).parents('.mb-list-entry-fields').find('.button-primary').attr('disabled', true);
jQuery(this).parents('.mb-list-entry-fields').find('.button-primary')[0].onclick = null;
}
});
}
/*
* Function that sends an ajax request to delete all items(fields) from a form
*
*/
function wppb_rf_epf_delete_all_fields(event, delete_all_button_id, nonce) {
event.preventDefault();
$deleteButton = jQuery('#' + delete_all_button_id);
var response = confirm( "Are you sure you want to delete all items ?" );
if( response == true ) {
$tableParent = $deleteButton.parents('table');
var meta = $tableParent.attr('id').replace('container_', '');
var post_id = parseInt( $tableParent.attr('post') );
$tableParent.parent().css({'opacity':'0.4', 'position':'relative'}).append('<div id="mb-ajax-loading"></div>');
jQuery.post( ajaxurl, { action: "wppb_rf_epf_delete_all_fields", meta: meta, id: post_id, _ajax_nonce: nonce }, function(response) {
/* refresh the list */
jQuery.post( wppbWckAjaxurl, { action: "wck_refresh_list"+meta, meta: meta, id: post_id}, function(response) {
jQuery('#container_'+meta).replaceWith(response);
$tableParent = jQuery('#container_'+meta);
$tableParent.find('tbody td').css('width', function(){ return jQuery(this).width() });
mb_sortable_elements();
$tableParent.parent().css('opacity','1');
jQuery('#mb-ajax-loading').remove();
});
});
}
}