Use grouped select field for timezone selection
This commit is contained in:
parent
ef94747e5e
commit
686b6ee118
@ -14,25 +14,17 @@ function timezone_cmp($a, $b) {
|
|||||||
return ( t($a) < t($b)) ? -1 : 1;
|
return ( t($a) < t($b)) ? -1 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// emit a timezone selector grouped (primarily) by continent
|
// Return timezones grouped (primarily) by continent
|
||||||
|
function get_timezones( ){
|
||||||
function select_timezone($current = 'America/Los_Angeles') {
|
|
||||||
|
|
||||||
$timezone_identifiers = DateTimeZone::listIdentifiers();
|
$timezone_identifiers = DateTimeZone::listIdentifiers();
|
||||||
|
|
||||||
$o ='<select id="timezone_select" name="timezone">';
|
|
||||||
|
|
||||||
usort($timezone_identifiers, 'timezone_cmp');
|
usort($timezone_identifiers, 'timezone_cmp');
|
||||||
$continent = '';
|
$continent = '';
|
||||||
|
$continents = array();
|
||||||
foreach($timezone_identifiers as $value) {
|
foreach($timezone_identifiers as $value) {
|
||||||
$ex = explode("/", $value);
|
$ex = explode("/", $value);
|
||||||
if(count($ex) > 1) {
|
if(count($ex) > 1) {
|
||||||
if($ex[0] != $continent) {
|
$continent = t($ex[0]);
|
||||||
if($continent != '')
|
|
||||||
$o .= '</optgroup>';
|
|
||||||
$continent = $ex[0];
|
|
||||||
$o .= '<optgroup label="' . t($continent) . '">';
|
|
||||||
}
|
|
||||||
if(count($ex) > 2)
|
if(count($ex) > 2)
|
||||||
$city = substr($value,strpos($value,'/')+1);
|
$city = substr($value,strpos($value,'/')+1);
|
||||||
else
|
else
|
||||||
@ -40,35 +32,14 @@ function select_timezone($current = 'America/Los_Angeles') {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$city = $ex[0];
|
$city = $ex[0];
|
||||||
if($continent != t('Miscellaneous')) {
|
$continent = t('Miscellaneous');
|
||||||
$o .= '</optgroup>';
|
|
||||||
$continent = t('Miscellaneous');
|
|
||||||
$o .= '<optgroup label="' . t($continent) . '">';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$city = str_replace('_', ' ', t($city));
|
$city = str_replace('_', ' ', t($city));
|
||||||
$selected = (($value == $current) ? " selected=\"selected\" " : "");
|
|
||||||
$o .= "<option value=\"$value\" $selected >$city</option>";
|
|
||||||
}
|
|
||||||
$o .= '</optgroup></select>';
|
|
||||||
return $o;
|
|
||||||
}
|
|
||||||
|
|
||||||
// return a select using 'field_select_raw' template, with timezones
|
if(!x($continents,$ex[0])) $continents[$ex[0]] = array();
|
||||||
// groupped (primarily) by continent
|
$continents[$continent][$value] = $city;
|
||||||
// arguments follow convetion as other field_* template array:
|
}
|
||||||
// 'name', 'label', $value, 'help'
|
return $continents;
|
||||||
|
|
||||||
function field_timezone($name='timezone', $label='', $current = 'America/Los_Angeles', $help){
|
|
||||||
$options = select_timezone($current);
|
|
||||||
$options = str_replace('<select id="timezone_select" name="timezone">','', $options);
|
|
||||||
$options = str_replace('</select>','', $options);
|
|
||||||
|
|
||||||
$tpl = get_markup_template('field_select_raw.tpl');
|
|
||||||
return replace_macros($tpl, array(
|
|
||||||
'$field' => array($name, $label, $current, $help, $options),
|
|
||||||
));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// General purpose date parse/convert function.
|
// General purpose date parse/convert function.
|
||||||
|
@ -1010,12 +1010,10 @@ function settings_content(&$a) {
|
|||||||
'$uid' => local_user(),
|
'$uid' => local_user(),
|
||||||
'$form_security_token' => get_form_security_token("settings"),
|
'$form_security_token' => get_form_security_token("settings"),
|
||||||
'$nickname_block' => $prof_addr,
|
'$nickname_block' => $prof_addr,
|
||||||
|
|
||||||
|
|
||||||
'$h_basic' => t('Basic Settings'),
|
'$h_basic' => t('Basic Settings'),
|
||||||
'$username' => array('username', t('Full Name:'), $username,''),
|
'$username' => array('username', t('Full Name:'), $username,''),
|
||||||
'$email' => array('email', t('Email Address:'), $email, ''),
|
'$email' => array('email', t('Email Address:'), $email, ''),
|
||||||
'$timezone' => array('timezone_select' , t('Your Timezone:'), select_timezone($timezone), ''),
|
'$timezone' => array('timezone_select' , t('Your Timezone:'), $timezone, '', get_timezones()),
|
||||||
'$defloc' => array('defloc', t('Default Post Location:'), $defloc, t('Geographical location to display on your posts')),
|
'$defloc' => array('defloc', t('Default Post Location:'), $defloc, t('Geographical location to display on your posts')),
|
||||||
'$allowloc' => array('allow_location', t('Use Browser Location:'), ((get_pconfig(local_user(),'system','use_browser_location')) ? 1 : ''), ''),
|
'$allowloc' => array('allow_location', t('Use Browser Location:'), ((get_pconfig(local_user(),'system','use_browser_location')) ? 1 : ''), ''),
|
||||||
|
|
||||||
|
@ -349,7 +349,7 @@ function setup_content(&$a) {
|
|||||||
'$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')),
|
'$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')),
|
||||||
|
|
||||||
|
|
||||||
'$timezone' => field_timezone('timezone', t('Please select a default timezone for your website'), $timezone, ''),
|
'$timezone' => array('timezone', t('Please select a default timezone for your website'), $timezone, '', get_timezones()),
|
||||||
|
|
||||||
'$baseurl' => $a->get_baseurl(),
|
'$baseurl' => $a->get_baseurl(),
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
{{include file="field_input.tpl" field=$adminmail}}
|
{{include file="field_input.tpl" field=$adminmail}}
|
||||||
{{include file="field_input.tpl" field=$siteurl}}
|
{{include file="field_input.tpl" field=$siteurl}}
|
||||||
|
|
||||||
{{$timezone}}
|
{{include file="field_select_grouped.tpl" field=$timezone}}
|
||||||
|
|
||||||
<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
|
<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<h3 class="settings-heading">{{$h_basic}}</h3>
|
<h3 class="settings-heading">{{$h_basic}}</h3>
|
||||||
|
|
||||||
{{include file="field_input.tpl" field=$username}}
|
{{include file="field_input.tpl" field=$username}}
|
||||||
{{include file="field_custom.tpl" field=$timezone}}
|
{{include file="field_select_grouped.tpl" field=$timezone}}
|
||||||
{{include file="field_input.tpl" field=$defloc}}
|
{{include file="field_input.tpl" field=$defloc}}
|
||||||
{{include file="field_checkbox.tpl" field=$allowloc}}
|
{{include file="field_checkbox.tpl" field=$allowloc}}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user