/**
*/
protected function _content()
{
global $injector, $language, $page_output, $prefs, $registry;
// Set the requested units.
$this->_weather->units = $this->_params['units'];
$view = $injector->getInstance('Horde_View');
if (!empty($this->_refreshParams) && !empty($this->_refreshParams->location)) {
$location = $this->_refreshParams->location;
$view->instance = '';
} else {
$view->instance = hash('md5', mt_rand());
$injector->getInstance('Horde_Core_Factory_Imple')->create('WeatherLocationAutoCompleter_Weather', array('id' => 'location' . $view->instance, 'instance' => $view->instance));
$view->requested_location = $this->_params['location'];
$location = $this->_params['location'];
}
$view->units = $this->_weather->getUnits($this->_weather->units);
$view->params = $this->_params;
$view->link = $this->_weather->link;
$view->title = $this->_weather->title;
if ($this->_weather->logo) {
$view->logo = $this->_weather->logo;
}
// Test location
try {
$view->location = $this->_weather->searchLocations($location);
} catch (Horde_Service_Weather_Exception $e) {
return $e->getMessage();
} catch (Horde_Exception_NotFound $e) {
return _(sprintf("Location %s not found."), $location);
}
try {
$view->forecast = $this->_weather->getForecast($view->location->code, $this->_params['days']);
$view->station = $this->_weather->getStation();
$view->current = $this->_weather->getCurrentConditions($view->location->code);
// @todo: Add link to put alert text in redbox.
$view->timezone = $prefs->getValue('timezone');
$view->dateFormat = $prefs->getValue('date_format');
$view->timeFormat = $prefs->getValue('time_format');
$view->alerts = $this->_weather->getAlerts($view->location->code);
$view->radar = $this->_weather->getRadarImageUrl($location);
} catch (Horde_Service_Weather_Exception $e) {
return $e->getMessage();
}
$view->languageFilter = '/^' . $registry->nlsconfig->languages[$language] . ': /i';
if (!empty($this->_params['showMap']) && !empty($view->instance)) {
$view->map = true;
$page_output->addScriptFile('weatherblockmap.js', 'horde');
Horde_Core_HordeMap::init(array('providers' => array('owm', 'osm')));
$page_output->addInlineScript(array('WeatherBlockMap.initializeMap("' . $view->instance . '", { lat: "' . $view->location->lat . '", lon: "' . $view->location->lon . '"});$("weathermaplayer_' . $view->instance . '").show();'), true);
}
if (!empty($view->instance)) {
return $view->render('block/weather');
} else {
return $view->render('block/weather_content');
}
}