AnkietyGO/profile-builder/assets/js/jquery-manage-fields-live-change.js

741 lines
33 KiB
JavaScript

var fields = {
'Default - Name (Heading)': { 'show_rows' : [
'.row-field-title',
'.row-description',
],
'properties': {
'meta_name_value' : ''
}
},
'Default - Contact Info (Heading)': { 'show_rows' : [
'.row-field-title',
'.row-description',
],
'properties': {
'meta_name_value' : ''
}
},
'Default - About Yourself (Heading)': { 'show_rows' : [
'.row-field-title',
'.row-description',
],
'properties': {
'meta_name_value' : ''
}
},
'Default - Username': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : ''
},
'required' : [
true
]
},
'Default - First Name': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : 'first_name'
}
},
'Default - Last Name': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : 'last_name'
}
},
'Default - Nickname': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : 'nickname'
},
'required' : [
true
]
},
'Default - E-mail': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : ''
},
'required' : [
true
]
},
'Default - Website': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : ''
}
},
'Default - AIM': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : 'aim'
}
},
'Default - Yahoo IM': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : 'yim'
}
},
'Default - Jabber / Google Talk': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : 'jabber'
}
},
'Default - Password': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-required'
],
'properties': {
'meta_name_value' : ''
},
'required' : [
true
]
},
'Default - Repeat Password': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-required'
],
'properties': {
'meta_name_value' : ''
},
'required' : [
true
]
},
'Default - Biographical Info': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-row-count',
'.row-default-content',
'.row-required'
],
'properties': {
'meta_name_value' : 'description'
}
},
'Default - Display name publicly as': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-default-value',
'.row-required'
],
'properties': {
'meta_name_value' : ''
}
},
'Default - Blog Details': { 'show_rows' : [
'.row-field-title',
'.row-description'
],
'properties': {
'meta_name_value' : ''
}
},
'Heading': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-heading-tag'
],
'properties': {
'meta_name_value' : ''
}
},
'Input': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required',
'.row-overwrite-existing'
]
},
'Number': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-min-number-value',
'.row-max-number-value',
'.row-number-step-value',
'.row-required',
'.row-overwrite-existing'
]
},
'Input (Hidden)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-overwrite-existing'
]
},
'Textarea': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-content',
'.row-required',
'.row-row-count',
'.row-overwrite-existing'
]
},
'WYSIWYG': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-content',
'.row-required',
'.row-overwrite-existing'
]
},
'Phone': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-phone-format',
'.row-required',
'.row-overwrite-existing'
]
},
'Select': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-option',
'.row-required',
'.row-overwrite-existing',
'.row-options',
'.row-labels'
]
},
'Select (Multiple)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-options',
'.row-required',
'.row-overwrite-existing',
'.row-options',
'.row-labels'
]
},
'Select (Country)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-option-country',
'.row-required',
'.row-overwrite-existing'
]
},
'Select (Currency)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-show-currency-symbol',
'.row-default-option-currency',
'.row-required',
'.row-overwrite-existing'
]
},
'Select (Timezone)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-option-timezone',
'.row-required',
'.row-overwrite-existing'
]
},
'Select (CPT)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-option',
'.row-cpt',
'.row-required',
'.row-overwrite-existing'
]
},
'Checkbox': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-options',
'.row-required',
'.row-overwrite-existing',
'.row-options',
'.row-labels'
]
},
'Checkbox (Terms and Conditions)': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-required',
'.row-overwrite-existing'
],
'required' : [
true
]
},
'Radio': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-option',
'.row-required',
'.row-overwrite-existing',
'.row-options',
'.row-labels'
]
},
'Upload': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-allowed-extensions',
'.row-required',
'.row-allowed-upload-extensions'
]
},
'Avatar': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-allowed-image-extensions',
'.row-avatar-size',
'.row-required',
'.row-overwrite-existing'
]
},
'Datepicker': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-default-value',
'.row-required',
'.row-date-format',
'.row-overwrite-existing'
]
},
'Timepicker': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-required',
'.row-time-format',
'.row-overwrite-existing'
]
},
'Colorpicker': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-required',
'.row-overwrite-existing'
]
},
'Validation': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-validation-possible-values',
'.row-custom-error-message',
'.row-required'
],
'required' : [
true
]
},
'reCAPTCHA': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-public-key',
'.row-private-key',
'.row-captcha-pb-forms',
'.row-captcha-wp-forms',
'.row-required'
],
'required' : [
true
],
'properties': {
'meta_name_value' : ''
}
},
'Select (User Role)': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-user-roles',
'.row-required'
],
'properties': {
'meta_name_value' : ''
}
},
'Map': { 'show_rows' : [
'.row-field-title',
'.row-meta-name',
'.row-description',
'.row-map-api-key',
'.row-map-default-lat',
'.row-map-default-lng',
'.row-map-default-zoom',
'.row-map-height',
'.row-required'
]
},
'HTML': { 'show_rows' : [
'.row-field-title',
'.row-description',
'.row-html-content'
],
'properties': {
'meta_name_value' : ''
}
}
}
var fields_to_show = [
'.row-field-title',
'.row-field',
'.row-meta-name',
'.row-required'
]
function wppb_hide_properties_for_already_added_fields( container_name ){
jQuery( container_name + ' tr:not(.update_container_wppb_manage_fields)' ).each(function() {
field = jQuery('.row-field pre', this).text();
jQuery( 'li', this ).each(function() {
var class_name = '';
class_name = jQuery(this).attr('class');
jQuery(this).hide();
if ( ( field in fields ) ){
var to_show = fields[field]['show_rows'];
for (var key in to_show) {
if ('.'+class_name == fields_to_show[key]){
jQuery(this).show();
}
}
}
});
});
/* hide the delete button for username,password and email fields */
jQuery( container_name + ' ' + '.element_type_default-e-mail .mbdelete,' + ' ' + container_name + ' ' + '.element_type_default-password .mbdelete,' + ' ' + container_name + ' ' + '.element_type_default-username .mbdelete' ).hide(); // PB specific line
}
function wppb_hide_all ( container_name ){
jQuery( container_name + ' ' + '.mb-list-entry-fields > li' ).each(function() {
if ( !( ( jQuery(this).hasClass('row-field') ) || ( jQuery(this).children().hasClass('button-primary') ) ) ){
jQuery(this).hide();
}
});
jQuery( container_name + ' ' + '.mb-list-entry-fields .button-primary' ).attr( 'disabled', true );
jQuery( container_name + ' ' + '.element_type_default-e-mail .mbdelete,' + ' ' + container_name + ' ' + '.element_type_default-password .mbdelete,' + ' ' + container_name + ' ' + '.element_type_default-username .mbdelete' ).hide(); // PB specific line
jQuery( container_name + ' ' + '.element_type_default-e-mail #field' + ', ' + container_name + ' ' + '.element_type_default-password #field' + ', ' + container_name + ' ' + '.element_type_default-username #field' + ', ' + container_name + ' ' + '.element_type_default-e-mail #required' + ', ' + container_name + ' ' + '.element_type_default-password #required,' + container_name + ' ' + '.element_type_default-username #required,' + container_name + ' ' + '.element_type_checkbox-terms-and-conditions #required,' + container_name + ' ' + '.element_type_recaptcha #required,' + container_name + ' ' + '.element_type_woocommerce-customer-billing-address #field, ' + container_name + ' ' + '.element_type_woocommerce-customer-shipping-address #field').attr( 'disabled', true ); // PB specific line
}
function wppb_disable_add_entry_button( container_name ){
jQuery( container_name + ' ' + '.mb-list-entry-fields .button-primary' ).each( function(){
//jQuery(this).data('myclick', this.onclick );
this.onclick = function(event) {
if ( jQuery(this).attr( 'disabled' ) ) {
return false;
}
/* changed this in version 2.5.0 because the commented line generated stack exceeded error when multiple fields were opened with edit */
if ( typeof( event.currentTarget ) == 'undefined' ){
// Repeater field triggered the click event of the "Add Field" / "Save changes" buttons, so the onclick attribute is in the target, not currentTarget
eval(event.target.getAttribute('onclick'));
}else {
// normal Manage Fields Add Field button press
eval(event.currentTarget.getAttribute('onclick'));
}
//jQuery(this).data('myclick').call(this, event || window.event);
};
});
}
function wppb_edit_form_properties( container_name, element_id ){
wppb_hide_all ( container_name );
wppb_disable_add_entry_button ( container_name );
field = jQuery( container_name + ' #' + element_id + ' ' + '#field' ).val();
if ( ( field in fields ) ){
var to_show = fields[jQuery.trim(field)]['show_rows'];
for (var key in to_show)
jQuery( container_name + ' #' + element_id + ' ' + to_show[key] ).show();
var properties = fields[ jQuery.trim(field) ]['properties'];
if( typeof properties !== 'undefined' && properties ) {
for( var key in properties ) {
if( typeof properties['meta_name_value'] !== 'undefined' ) {
jQuery( container_name + ' ' + '#meta-name').attr( 'readonly', true );
}
}
}
jQuery( container_name + ' ' + '.mb-list-entry-fields .button-primary' ).removeAttr( 'disabled' );
//Handle user role sorting
wppb_handle_user_role_field( container_name );
}
}
function wppb_display_needed_fields( index, container_name, current_field_select ){
var show_rows = fields[jQuery.trim(index)]['show_rows'];
for (var key in show_rows) {
jQuery( show_rows[key], jQuery( current_field_select ).parents( '.mb-list-entry-fields' ) ).show();
}
var properties = fields[jQuery.trim(index)]['properties'];
if ( ( ( typeof properties !== 'undefined' ) && ( properties ) ) ) { //the extra (second) condition is a particular case since only the username is defined in our global array that has no meta-name
for (var key in properties) {
if ( ( typeof properties['meta_name_value'] !== 'undefined' ) ){
jQuery( container_name + ' ' + '#meta-name' ).val( properties['meta_name_value'] );
jQuery( container_name + ' ' + '#meta-name' ).attr( 'readonly', true );
}
}
}else{
/* meta value when editing a field shouldn't change so we take it from the current entered value which is displayed above the edit form */
if( jQuery( current_field_select).parents('.update_container_wppb_manage_fields').length != 0 ){
meta_value = jQuery( '.row-meta-name pre', jQuery( current_field_select).parents( '.update_container_wppb_manage_fields' ).prev() ).text();
}
/* for the add form it should change */
else{
// Repeater fields have different meta name prefixes, stored in the GET parameter 'wppb_field_metaname_prefix'.
var get_parameter_prefix = wppb_get_parameter_by_name( 'wppb_field_metaname_prefix' );
var field_metaname_prefix = ( get_parameter_prefix == null ) ? 'custom_field' : get_parameter_prefix;
numbers = new Array();
jQuery( '#container_wppb_manage_fields .row-meta-name pre').each(function(){
meta_name = jQuery(this).text();
if( meta_name.indexOf( field_metaname_prefix ) !== -1 ){
var meta_name = meta_name.replace(field_metaname_prefix, '' );
/* we should have an underscore present in custom_field_# so remove it */
meta_name = meta_name.replace('_', '' );
if( isNaN( meta_name ) ){
meta_name = Math.floor((Math.random() * 200) + 100);
}
numbers.push( parseInt(meta_name) );
}
});
if( numbers.length > 0 ){
numbers.sort( function(a, b){return a-b} );
numbers.reverse();
meta_number = parseInt(numbers[0])+1;
}
else
meta_number = 1;
meta_value = field_metaname_prefix + '_' + meta_number;
}
jQuery( container_name + ' ' + '#meta-name' ).val( meta_value );
jQuery( container_name + ' ' + '#meta-name' ).attr( 'readonly', false );
}
//Handle user role sorting
wppb_handle_user_role_field( container_name );
var set_required = fields[jQuery.trim(index)]['required'];
if ( ( typeof set_required !== 'undefined' ) && ( set_required ) ){
jQuery( container_name + ' ' + '#required' ).val( 'Yes' );
jQuery( container_name + ' ' + '#required' ).attr( 'disabled', true );
}else{
jQuery( container_name + ' ' + '#required' ).val( 'No' );
jQuery( container_name + ' ' + '#required' ).attr( 'disabled', false );
}
jQuery( container_name + ' ' + '.mb-list-entry-fields .button-primary' ).removeAttr( 'disabled' );
}
function wppb_get_parameter_by_name(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return null;
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
/*
* Function that handles the sorting of the user roles from the Select (User Role)
* extra field
*
*/
function wppb_handle_user_role_field( container_name ) {
jQuery( container_name + ' ' + '.row-user-roles .wck-checkboxes').sortable({
//Assign a custom handle for the drag and drop
handle: '.sortable-handle',
create: function( event, ui ) {
//Add the custom handle for drag and drop
jQuery(this).find('div').each( function() {
jQuery(this).prepend('<span class="sortable-handle"></span>');
});
$sortOrderInput = jQuery(this).parents('.row-user-roles').siblings('.row-user-roles-sort-order').find('input[type=text]');
if( $sortOrderInput.val() == '' ) {
jQuery(this).find('input[type=checkbox]').each( function() {
$sortOrderInput.val( $sortOrderInput.val() + ', ' + jQuery(this).val() );
});
} else {
sortOrderElements = $sortOrderInput.val().split(', ');
sortOrderElements.shift();
for( var i=0; i < sortOrderElements.length; i++ ) {
jQuery( container_name + ' ' + '.row-user-roles .wck-checkboxes').append( jQuery( container_name + ' ' + '.row-user-roles .wck-checkboxes input[value="' + sortOrderElements[i] + '"]').parent().parent().get(0) );
}
}
},
update: function( event, ui ) {
$sortOrderInput = ui.item.parents('.row-user-roles').siblings('.row-user-roles-sort-order').find('input[type=text]');
$sortOrderInput.val('');
ui.item.parent().find('input[type=checkbox]').each( function() {
$sortOrderInput.val( $sortOrderInput.val() + ', ' + jQuery(this).val() );
});
}
});
}
function wppb_initialize_live_select( container_name ){
wppb_hide_all( container_name );
jQuery(document).on( 'change', container_name + ' ' + '.mb-list-entry-fields #field', function () {
field = jQuery(this).val();
if ( field != ''){
wppb_hide_all( container_name );
wppb_display_needed_fields( field, container_name, this );
}else{
wppb_hide_all( container_name );
}
});
}
jQuery(function(){
wppb_initialize_live_select ( '#wppb_manage_fields' );
wppb_initialize_live_select ( '#container_wppb_manage_fields' );
wppb_hide_properties_for_already_added_fields( '#container_wppb_manage_fields' );
wppb_disable_add_entry_button ( '#wppb_manage_fields' );
});