Seditio Source
Root |
./othercms/b2evolution_7.2.3/rsc/js/src/evo_init_regional.js
/**
 * This file initialize plugin regional JS
 *
 * This file is part of the evoCore framework - {@link http://evocore.net/}
 * See also {@link https://github.com/b2evolution/b2evolution}.
 *
 * @license GNU GPL v2 - {@link http://b2evolution.net/about/gnu-gpl-license}
 *
 * @copyright (c)2003-2020 by Francois PLANQUE - {@link http://fplanque.com/}
 *
 * Depends on: jQuery
 */
jQuery( document ).ready( function()
{
if( typeof( evo_regional_config ) == 'undefined' )
{ // Don't execute code below because no config var is found:
return;
}

/**
* Disable HTML attribute "required" if the regional selector has no locations for given parent location:
*/
window.check_regional_required_fields = function check_regional_required_fields( prefix )
{
jQuery( '#' + prefix + '_rgn_ID, #' + prefix + '_subrg_ID, #' + prefix + '_city_ID' ).each( function()
{
if( typeof( jQuery( this ).attr( 'required' ) ) != 'undefined' || jQuery( this ).data( 'required' ) === true )
{ // If this regional field should be required:
if( jQuery( this ).find( 'option' ).length > 1 )
{ // Require if parent regional location has at least one child location:
jQuery( this ).attr( 'required', 'required' );
}
else
{ // Don't require if there are no child regional locations:
jQuery( this ).removeAttr( 'required' );
}
// Store original state of attribute "required":
jQuery( this ).data( 'required', true );
}
else
{ // Store original state of attribute "required":
jQuery( this ).data( 'required', false );
}
} );
};

window.load_regions = function load_regions( country_ID, region_ID, prefix )
{ // Load option list with regions for seleted country
jQuery( '#' + prefix + '_rgn_ID' ).next().find( 'button' ).hide().next().show();
jQuery.ajax( {
type: 'POST',
url: htsrv_url + 'anon_async.php',
data: 'action=get_regions_option_list&page=edit&mode=load_all&ctry_id=' + country_ID + '&rgn_id=' + region_ID,
success: function( result )
{
jQuery( '#' + prefix + '_rgn_ID' ).next().find( 'button' ).show().next().hide();

result = ajax_debug_clear( result );
var options = result.split( '-##-' );

jQuery( '#' + prefix + '_rgn_ID' ).html( options[0] );
jQuery( '#' + prefix + '_subrg_ID' ).html( options[1] );
jQuery( '#' + prefix + '_city_ID' ).html( options[2] );
window.check_regional_required_fields( prefix );
}
} );
};

window.load_subregions = function load_subregions( country_ID, region_ID, prefix )
{ // Load option list with sub-regions for seleted region
jQuery( '#' + prefix + '_subrg_ID' ).next().find( 'button' ).hide().next().show();
jQuery.ajax( {
type: 'POST',
url: htsrv_url + 'anon_async.php',
data: 'action=get_subregions_option_list&page=edit&mode=load_all&ctry_id=' + country_ID + '&rgn_id=' + region_ID,
success: function( result )
{
jQuery( '#' + prefix + '_subrg_ID' ).next().find( 'button' ).show().next().hide();

result = ajax_debug_clear( result );
var options = result.split( '-##-' );

jQuery( '#' + prefix + '_subrg_ID' ).html( options[0] );
jQuery( '#' + prefix + '_city_ID' ).html( options[1] );
window.check_regional_required_fields( prefix );
}
} );
};

window.load_cities = function load_cities( country_ID, region_ID, subregion_ID, prefix )
{ // Load option list with cities for seleted region or sub-region
jQuery( '#' + prefix + '_city_ID' ).next().find( 'button' ).hide().next().show();
jQuery.ajax( {
type: 'POST',
url: htsrv_url + 'anon_async.php',
data: 'action=get_cities_option_list&page=edit&ctry_id=' + country_ID + '&rgn_id=' + region_ID + '&subrg_id=' + subregion_ID,
success: function( result )
{
jQuery( '#' + prefix + '_city_ID' ).html( ajax_debug_clear( result ) );
jQuery( '#' + prefix + '_city_ID' ).next().find( 'button' ).show().next().hide();
window.check_regional_required_fields();
}
} );
};

var evo_regional_configs = Object.values( evo_regional_config );
for( var i = 0; i < evo_regional_configs.length; i++ )
{
( function() {
var config = evo_regional_configs[i];

window.check_regional_required_fields( config.prefix );

jQuery( '#' + config.prefix + '_ctry_ID' ).change( function ()
{ // Load option list with regions for seleted country
window.load_regions( jQuery( this ).val(), 0, config.prefix );
} );

jQuery( '#' + config.prefix + '_rgn_ID' ).change( function ()
{ // Change option list with sub-regions
window.load_subregions( jQuery( '#' + config.prefix + '_ctry_ID' ).val(), jQuery( this ).val(), config.prefix );
} );

jQuery( '#' + config.prefix + '_subrg_ID' ).change( function ()
{ // Change option list with cities
window.load_cities( jQuery( '#' + config.prefix + '_ctry_ID' ).val(), jQuery( '#' + config.prefix + '_rgn_ID' ).val(), jQuery( this ).val(), config.prefix );
} );

jQuery( '#button_refresh_region' ).click( function ()
{ // Button - Refresh regions
window.load_regions( jQuery( '#' + config.prefix + '_ctry_ID' ).val(), 0, config.prefix );
return false;
} );

jQuery( '#button_refresh_subregion' ).click( function ()
{ // Button - Refresh sub-regions
window.load_subregions( jQuery( '#' + config.prefix + '_ctry_ID' ).val(), jQuery( '#' + config.prefix + '_rgn_ID' ).val(), config.prefix );
return false;
} );

jQuery( '#button_refresh_city' ).click( function ()
{ // Button - Refresh cities
window.load_cities( jQuery( '#' + config.prefix + '_ctry_ID' ).val(), jQuery( '#' + config.prefix + '_rgn_ID' ).val(),
jQuery( '#' + config.prefix + '_subrg_ID' ).val(), config.prefix );
return false;
} );
} )();
}
} );