diff --git a/modules/extravar/models/Value.php b/modules/extravar/models/Value.php index 1bf05e5b4..7bfcdde61 100644 --- a/modules/extravar/models/Value.php +++ b/modules/extravar/models/Value.php @@ -247,9 +247,20 @@ class Value return is_array($value) ? implode('-', $value) : $value; case 'tel_intl': case 'tel_intl_v2': - $country_code = $value[0] ?? ''; - $phone_number = implode('-', array_slice((array)$value, 1)); - return $value ? "(+{$country_code}) {$phone_number}": ''; + if (is_array($value) && count($value)) + { + $country_code = $value[0]; + $phone_number = array_slice((array)$value, 1); + if (count($phone_number) && ctype_alpha(end($phone_number))) + { + array_pop($phone_number); + } + return sprintf('(+%d) %s', $country_code, implode('-', $phone_number)); + } + else + { + return ''; + } case 'homepage': case 'url': $display = mb_strlen($value, 'UTF-8') > 60 ? mb_substr($value, 0, 40, 'UTF-8') . '...' . mb_substr($value, -10, 10, 'UTF-8') : $value; diff --git a/modules/extravar/skins/default/form_types/tel.blade.php b/modules/extravar/skins/default/form_types/tel.blade.php index eec05c332..301272141 100644 --- a/modules/extravar/skins/default/form_types/tel.blade.php +++ b/modules/extravar/skins/default/form_types/tel.blade.php @@ -9,15 +9,32 @@ $lang_type = Context::getLangType(); $lang_sort = $lang_type === 'ko' ? Rhymix\Framework\i18n::SORT_NAME_KOREAN : Rhymix\Framework\i18n::SORT_NAME_ENGLISH; $countries = Rhymix\Framework\i18n::listCountries($lang_sort); + $tempid = $definition->getNextTempID(); + if (is_array($value) && count($value) && ctype_alpha(end($value))) { + $selected_iso_code = end($value); + } else { + $selected_iso_code = null; + } @endphp - @foreach ($countries as $country) @php $country_name = $lang_type === 'ko' ? $country->name_korean : $country->name_english; - $is_selected = strval($value[0] ?? '') !== '' && $value[0] === $country->calling_code; + if ($selected_iso_code) { + $is_selected = $selected_iso_code === $country->iso_3166_1_alpha3; + } else { + $is_selected = strval($value[0] ?? '') !== '' && $value[0] === $country->calling_code; + if ($is_selected) { + $selected_iso_code = $country->iso_3166_1_alpha3; + } + } @endphp - + @endforeach @if ($type === 'tel_intl') @@ -27,4 +44,5 @@ @else @endif + @endif