Fixed #15344 - make select2 for countries freeform-ish

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2024-08-22 10:13:22 +01:00
parent 47d8e2f8b9
commit 3ac0702094
2 changed files with 17 additions and 5 deletions

View file

@ -135,6 +135,7 @@ return [
'EC'=>'Ecuador', 'EC'=>'Ecuador',
'EE'=>'Estonia', 'EE'=>'Estonia',
'EG'=>'Egypt', 'EG'=>'Egypt',
'GB-ENG'=>'England',
'ER'=>'Eritrea', 'ER'=>'Eritrea',
'ES'=>'Spain', 'ES'=>'Spain',
'ET'=>'Ethiopia', 'ET'=>'Ethiopia',
@ -233,6 +234,7 @@ return [
'NG'=>'Nigeria', 'NG'=>'Nigeria',
'NI'=>'Nicaragua', 'NI'=>'Nicaragua',
'NL'=>'Netherlands', 'NL'=>'Netherlands',
'GB-NIR' => 'Northern Ireland',
'NO'=>'Norway', 'NO'=>'Norway',
'NP'=>'Nepal', 'NP'=>'Nepal',
'NR'=>'Nauru', 'NR'=>'Nauru',
@ -260,7 +262,7 @@ return [
'RU'=>'Russian Federation', 'RU'=>'Russian Federation',
'RW'=>'Rwanda', 'RW'=>'Rwanda',
'SA'=>'Saudi Arabia', 'SA'=>'Saudi Arabia',
'UK'=>'Scotland', 'GB-SCT'=>'Scotland',
'SB'=>'Solomon Islands', 'SB'=>'Solomon Islands',
'SC'=>'Seychelles', 'SC'=>'Seychelles',
'SS'=>'South Sudan', 'SS'=>'South Sudan',
@ -312,6 +314,7 @@ return [
'VI'=>'Virgin Islands (U.S.)', 'VI'=>'Virgin Islands (U.S.)',
'VN'=>'Viet Nam', 'VN'=>'Viet Nam',
'VU'=>'Vanuatu', 'VU'=>'Vanuatu',
'GB-WLS' =>'Wales',
'WF'=>'Wallis And Futuna Islands', 'WF'=>'Wallis And Futuna Islands',
'WS'=>'Samoa', 'WS'=>'Samoa',
'YE'=>'Yemen', 'YE'=>'Yemen',

View file

@ -32,18 +32,27 @@ Form::macro('countries', function ($name = 'country', $selected = null, $class =
$idclause = (!is_null($id)) ? $id : ''; $idclause = (!is_null($id)) ? $id : '';
$select = '<select name="'.$name.'" class="'.$class.'" style="width:100%" '.$idclause.' aria-label="'.$name.'" data-placeholder="'.trans('localizations.select_country').'">'; // Pull the autoglossonym array from the localizations translation file
$countries_array = trans('localizations.countries');
$select = '<select name="'.$name.'" class="'.$class.'" style="width:100%" '.$idclause.' aria-label="'.$name.'" data-placeholder="'.trans('localizations.select_country').'" data-tags="true">';
$select .= '<option value="" role="option">'.trans('localizations.select_country').'</option>'; $select .= '<option value="" role="option">'.trans('localizations.select_country').'</option>';
// Pull the autoglossonym array from the localizations translation file foreach ($countries_array as $abbr => $country) {
foreach (trans('localizations.countries') as $abbr => $country) {
// We have to handle it this way to handle deprecication warnings since you can't strtoupper on null // We have to handle it this way to handle deprecication warnings since you can't strtoupper on null
if ($abbr!='') { if ($abbr!='') {
$abbr = strtoupper($abbr); $abbr = strtoupper($abbr);
} }
$select .= '<option value="'.$abbr.'"'.(($selected == $abbr) ? ' selected="selected" role="option" aria-selected="true"' : ' aria-selected="false"').'>'.$country.'</option> '; // Loop through the countries configured in the localization file
$select .= '<option value="'.$selected.'" selected="selected" role="option" aria-selected="true" aria-selected="false">'.$country.'</option> ';
}
// If the country value doesn't exist in the array, add it as a new option and select it so we don't drop that data
if (!in_array($selected, $countries_array)) {
$select .= '<option value="' . $selected . '" selected="selected" role="option" aria-selected="true">' . $selected .' '. trans('general.new') .'</option> ';
} }
$select .= '</select>'; $select .= '</select>';