Hi,
In our application, we let users select Timezones. To render a timezone list
we use the following view helper which works great:
class Ggv_View_Helper_TimezonesList extends Zend_View_Helper_Abstract
{
public function timezonesList($selectedzone, $label, $name = 'timezone',
$desc = '')
{
//$output = '<div class="label"><label for="' . $name .
'">'.$label.':</label></div>';
$output = '<div class="input"><select name="' . $name . '">';
$output .= $this->timezonechoice($selectedzone);
$output .= '</select>';
$output .= ' '.$desc.' </div>';
return $output;
}
protected function timezonechoice($selectedzone)
{
$all = timezone_identifiers_list();
$i = 0;
foreach($all as $zone)
{
$zone = explode('/', $zone);
$zones[$i]['continent'] = isset($zone[0]) ? $zone[0] : '';
$zones[$i]['city'] = isset($zone[1]) ? $zone[1] : '';
$zones[$i]['subcity'] = isset($zone[2]) ? $zone[2] : '';
$i++;
}
asort($zones);
$structure = '';
foreach($zones as $zone)
{
extract($zone);
if($continent == 'Africa' || $continent == 'America' ||
$continent == 'Antarctica' || $continent == 'Arctic' || $continent == 'Asia'
|| $continent == 'Atlantic' || $continent == 'Australia' || $continent ==
'Europe' || $continent == 'Indian' || $continent == 'Pacific')
{
if(!isset($selectcontinent))
{
$structure .= '<optgroup label="' . $continent . '">';
// continent
}
elseif($selectcontinent != $continent)
{
$structure .= '</optgroup><optgroup label="' .
$continent . '">'; // continent
}
if(isset($city) != '')
{
if (!empty($subcity) != '')
{
$city = $city . '/' . $subcity;
}
$structure .= "<option " . ((($continent . '/' . $city)
== $selectedzone) ? 'selected="selected "' : '')." value=\"" . ($continent .
'/' . $city) . "\">" . str_replace('_', ' ', $city) . "</option>"; //
timezone
}
else
{
if (!empty($subcity) != '')
{
$city = $city . '/'. $subcity;
}
$structure .= "<option " . (($continent ==
$selectedzone) ? 'selected="selected "' : '') . " value=\"" . $continent .
"\">" . $continent . "</option>"; // timezone
}
$selectcontinent = $continent;
}
}
$structure .= '</optgroup>';
return $structure;
}
}
In the phtml view script we use the following which also works nicely:
<dt><label for="user_join_communityTimeZone"><?= $this->translate('Community
Time Zone:') ?></label></dt>
In our controller, we set the user_join_communityTimezZone to:
date_default_timezone_get());
so the default is the system timezone.
Is there an (easy way) without figuring out myself from the offset header to
detect the most likely user timezone to avoid user error?
--
View this message in context:
http://www.nabble.com/Getting-the-timezone-from-the-browser%27s-offset-tp23269606p23269606.html
Sent from the Zend Framework mailing list archive at Nabble.com.