]> git.mxchange.org Git - friendica-addons.git/commitdiff
Merge pull request #281 from tobiasd/20150711-curweather
authorMichael Vogel <icarus@dabo.de>
Sat, 18 Jul 2015 13:47:33 +0000 (15:47 +0200)
committerMichael Vogel <icarus@dabo.de>
Sat, 18 Jul 2015 13:47:33 +0000 (15:47 +0200)
Curweather Widget

curweather/README.md [new file with mode: 0644]
curweather/curweather.css
curweather/curweather.php
curweather/getweather.php [deleted file]
curweather/lang/C/messages.po
curweather/templates/admin.tpl [new file with mode: 0644]
curweather/templates/settings.tpl [new file with mode: 0644]
curweather/templates/widget-error.tpl [new file with mode: 0644]
curweather/templates/widget.tpl [new file with mode: 0644]
curweather/test.php [deleted file]

diff --git a/curweather/README.md b/curweather/README.md
new file mode 100644 (file)
index 0000000..ff43f24
--- /dev/null
@@ -0,0 +1,29 @@
+Current Weather
+===============
+
+If activated by your user this addon adds a widget to the users network tab
+sidebar showing current weather informations (temperature, relative humidity,
+wind conditions and preassure) from [OpenWeatherMap](http://openweathermap.org).
+The user can configure the location as e.g. *Berlin,DE* or the zip code "14476,DE".
+
+The language for the request at OpenWeatherMap is set to the UI language of
+friendica. If the string for the description of the current weather conditions
+is available in this language depends on OpenWeatherMap, fallback is english.
+
+**You should get an APPID from OpenWeatherMap if you want to use this widget.**
+You can register [here](http://openweathermap.org/register).
+
+Credits
+-------
+
+* Tony Baldwin wrote the original addon for Friendica
+* Fabio Comuni
+* Tobias Diekershoff switched the sources to OpenWeatherMap after the original
+  provider turned off support for locations outside of the USA.
+
+Known Issues
+------------
+
+* Localization does not work (Jul 15) data requested via XML are EN only but
+  have moew information available compared to data requested via JSON which is
+  available in other languages as well. Right now we use the XML dataset
index 6c1279634daf400b1ad6beb2f311017adb625140..69574ff0799b355898554b3db57def578debaed0 100644 (file)
@@ -1,10 +1,11 @@
-
-#curtemp-settings-label, #curtemp-location-label, #curtemp-enable-label {
-       float: left;
-       width: 200px;
-       margin-bottom: 25px;
+#curweather-network img {
+    float: left;
+    margin: 30px 10px;
+}
+ul.curweather-details li {
+    list-type: none;
 }
-#curtemp-network {
-       float: left;
+p.curweather-footer {
+    font-size: 0.8em;
 }
 
index 67d5939e785e205a2cbbb06cac33e569f4353d2d..59d7e37886118caad7ea1f7d430f390225d53872 100644 (file)
@@ -1,29 +1,78 @@
-       <?php
+<?php
 /**
  * Name: Current Weather 
- * Description: Shows current weather conditions for user's location on their network page.<br />Find the location code for the station or airport nearest you <a href="http://en.wikipedia.org/wiki/International_Air_Transport_Association_airport_code" target="_blank">here</a>.
- * Version: 1.0
+ * Description: Shows current weather conditions for user's location on their network page.
+ * Version: 1.1
  * Author: Tony Baldwin <http://friendica.tonybaldwin.info/u/t0ny>
  * Author: Fabio Comuni <http://kirkgroup.com/u/fabrixxm>
+ * Author: Tobias Diekershoff <https://f.diekershoff.de/u/tobias>
  *
  */
-require_once('addon/curweather/getweather.php');
+
+require_once('include/network.php');
+require_once("mod/proxy.php");
+require_once('include/text.php');
+
+//  get the weather data from OpenWeatherMap
+function getWeather( $loc, $units='metric', $lang='en', $appid='', $cachetime=0) {
+    $url = "http://api.openweathermap.org/data/2.5/weather?q=".$loc."&appid=".$appid."&lang=".$lang."&units=".$units."&mode=xml";
+    $cached = Cache::get('curweather'.md5($url));
+    $now = new DateTime();
+    if (!is_null($cached)) {
+       $cdate = get_pconfig(local_user(), 'curweather', 'last');
+       $cached = unserialize($cached);
+       if ($cdate + $cachetime > $now->getTimestamp()) {
+           return $cached;
+       }
+    }
+    try {
+       $res = new SimpleXMLElement(fetch_url($url));
+    } catch (Exception $e) {
+       info(t('Error fetching weather data.\nError was: '.$e->getMessage()));
+       return false;
+    }
+    if ((string)$res->temperature['unit']==='metric') {
+       $tunit = '°C';
+       $wunit = 'm/s';
+    } else {
+       $tunit = '°F';
+       $wunit = 'mph';
+    }
+    if ( trim((string)$res->weather['value']) == trim((string)$res->clouds['name']) ) {
+       $desc = (string)$res->clouds['name'];
+    } else {
+       $desc = (string)$res->weather['value'].', '.(string)$res->clouds['name'];
+    }
+    $r = array(
+       'city'=> (string) $res->city['name'][0],
+       'country' => (string) $res->city->country[0],
+       'lat' => (string) $res->city->coord['lat'],
+       'lon' => (string) $res->city->coord['lon'],
+       'temperature' => (string) $res->temperature['value'][0].$tunit,
+       'pressure' => (string) $res->pressure['value'].(string)$res->pressure['unit'],
+       'humidity' => (string) $res->humidity['value'].(string)$res->humidity['unit'],
+       'descripion' => $desc,
+       'wind' => (string)$res->wind->speed['name'].' ('.(string)$res->wind->speed['value'].$wunit.')',
+       'update' => (string)$res->lastupdate['value'],
+       'icon' => (string)$res->weather['icon']
+    );
+    set_pconfig(local_user(), 'curweather', 'last', $now->getTimestamp());
+    Cache::set('curweather'.md5($url), serialize($r));
+    return $r;
+}
 
 function curweather_install() {
        register_hook('network_mod_init', 'addon/curweather/curweather.php', 'curweather_network_mod_init');
        register_hook('plugin_settings', 'addon/curweather/curweather.php', 'curweather_plugin_settings');
        register_hook('plugin_settings_post', 'addon/curweather/curweather.php', 'curweather_plugin_settings_post');
-
 }
 
 function curweather_uninstall() {
        unregister_hook('network_mod_init', 'addon/curweather/curweather.php', 'curweather_network_mod_init');
        unregister_hook('plugin_settings', 'addon/curweather/curweather.php', 'curweather_plugin_settings');
        unregister_hook('plugin_settings_post', 'addon/curweather/curweather.php', 'curweather_plugin_settings_post');
-
 }
 
-
 function curweather_network_mod_init(&$fk_app,&$b) {
 
     if(! intval(get_pconfig(local_user(),'curweather','curweather_enable')))
@@ -31,27 +80,56 @@ function curweather_network_mod_init(&$fk_app,&$b) {
 
     $fk_app->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $fk_app->get_baseurl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
 
-    // the getweather file does all the work here
-    // the $rpt value is needed for location
-    // which getweather uses to fetch the weather data for weather and temp
+    // $rpt value is needed for location
+    // $lang will be taken from the browser session to honour user settings
+    // TODO $lang does not work if the default settings are used
+    //      and not all response strings are translated
+    // $units can be set in the settings by the user
+    // $appid is configured by the admin in the admin panel
+    // those parameters will be used to get: cloud status, temperature, preassure
+    // and relative humidity for display, also the relevent area of the map is
+    // linked from lat/log of the reply of OWMp
     $rpt = get_pconfig(local_user(), 'curweather', 'curweather_loc');
-    $wxdata = GetWeather::get($rpt);
-    $temp = $wxdata['TEMPERATURE_STRING'];
-    $weather = $wxdata['WEATHER'];
-    $rhumid = $wxdata['RELATIVE_HUMIDITY'];
-    $pressure = $wxdata['PRESSURE_STRING'];
-    $wind = $wxdata['WIND_STRING'];
-    $curweather = '<div id="curweather-network" class="widget">
-                <div class="title tool">
-                <h4>'.t("Current Weather").'</h4></div>';
-
-    $curweather .= "Weather: $weather<br />
-                 Temperature: $temp<br />
-                Relative Humidity: $rhumid<br />
-                Pressure: $pressure<br />
-                Wind: $wind";
-
-    $curweather .= '</div><div class="clear"></div>';
+
+
+    //  set the language to the browsers language and use metric units
+    $lang = $_SESSION['language'];
+    $units = get_pconfig( local_user(), 'curweather', 'curweather_units');
+    $appid = get_config('curweather','appid');
+    $cachetime = intval(get_config('curweather','cachetime'));
+    if ($units==="")
+       $units = 'metric';
+    $ok = true;
+
+    $res = getWeather($rpt, $units, $lang, $appid, $cachetime);
+    if ($res===false)
+       $ok = false;
+
+    if ($ok) {
+       $t = get_markup_template("widget.tpl", "addon/curweather/" );
+       $curweather = replace_macros ($t, array(
+           '$title' => t("Current Weather"),
+           '$icon' => proxy_url('http://openweathermap.org/img/w/'.$res['icon'].'.png'),
+           '$city' => $res['city'],
+           '$lon' => $res['lon'],
+           '$lat' => $res['lat'],
+           '$description' => $res['descripion'],
+           '$temp' => $res['temperature'],
+           '$relhumidity' => array('caption'=>t('Relative Humidity'), 'val'=>$res['humidity']),
+           '$pressure' => array('caption'=>t('Pressure'), 'val'=>$res['pressure']),
+           '$wind' => array('caption'=>t('Wind'), 'val'=> $res['wind']),
+           '$lastupdate' => t('Last Updated').': '.$res['update'].'UTC',
+           '$databy' =>  t('Data by'),
+           '$showonmap' => t('Show on map')
+       ));
+    } else {
+       $t = get_markup_template('widget-error.tpl', 'addon/curweather/');
+       $curweather = replace_macros( $t, array(
+           '$problem' => t('There was a problem accessing the weather data. But have a look'),
+           '$rpt' => $rpt,
+           '$atOWM' => t('at OpenWeatherMap')
+       ));
+    }
 
     $fk_app->page['aside'] = $curweather.$fk_app->page['aside'];
 
@@ -63,6 +141,7 @@ function curweather_plugin_settings_post($a,$post) {
                return;
        set_pconfig(local_user(),'curweather','curweather_loc',trim($_POST['curweather_loc']));
        set_pconfig(local_user(),'curweather','curweather_enable',intval($_POST['curweather_enable']));
+       set_pconfig(local_user(),'curweather','curweather_units',trim($_POST['curweather_units']));
 
        info( t('Current Weather settings updated.') . EOL);
 }
@@ -73,36 +152,53 @@ function curweather_plugin_settings(&$a,&$s) {
        if(! local_user())
                return;
 
-       /* Add our stylesheet to the curweather so we can make our settings look nice */
-
-       $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
-
        /* Get the current state of our config variable */
 
        $curweather_loc = get_pconfig(local_user(), 'curweather', 'curweather_loc');
+       $curweather_units = get_pconfig(local_user(), 'curweather', 'curweather_units');
+       $appid = get_config('curweather','appid');
+       if ($appid=="") { 
+               $noappidtext = t('No APPID found, please contact your admin to optain one.');
+       } else {
+           $noappidtext = '';
+       }
        $enable = intval(get_pconfig(local_user(),'curweather','curweather_enable'));
        $enable_checked = (($enable) ? ' checked="checked" ' : '');
        
-       
-       /* Add some HTML to the existing form */
-
-       $s .= '<div class="settings-block">';
-       $s .= '<h3>' . t('Current Weather') . '</h3>';
-       $s .= '<div id="curweather-settings-wrapper">';
-       $s .= '<p>Find the location code for the airport/weather station nearest you <a href="http://en.wikipedia.org/wiki/International_Air_Transport_Association_airport_code" target="_blank">here</a>.</p>';
-       $s .= '<label id="curweather-location-label" for="curweather_loc">' . t('Weather Location: ') . '</label>';
-       $s .= '<input id="curweather-location" type="text" name="curweather_loc" value="' . $curweather_loc . '"/>';
-       $s .= '<div class="clear"></div>';
-       $s .= '<label id="curweather-enable-label" for="curweather_enable">' . t('Enable Current Weather') . '</label>';
-       $s .= '<input id="curweather-enable" type="checkbox" name="curweather_enable" value="1" ' . $enable_checked . '/>';
-       $s .= '<div class="clear"></div>';
-
-       $s .= '</div>';
-
-       /* provide a submit button */
-
-       $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="curweather-settings-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div></div>';
+       // load template and replace the macros
+       $t = get_markup_template("settings.tpl", "addon/curweather/" );
+       $s = replace_macros ($t, array(
+               '$submit' => t('Save Settings'),            
+               '$header' => t('Current Weather').' '.t('Settings'),
+               '$noappidtext' => $noappidtext,
+               '$info' => t('Enter either the name of your location or the zip code.'),
+               '$curweather_loc' => array( 'curweather_loc', t('Your Location'), $curweather_loc, t('Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or <em>14476,DE</em>.') ),
+               '$curweather_units' => array( 'curweather_units', t('Units'), $curweather_units, t('select if the temperatur should be displayed in °C or °F'), array('metric'=>'°C', 'imperial'=>'°F')),
+               '$enabled' => array( 'curweather_enable', t('Show weather data'), $enable, '')
+           ));
+       return;
 
 }
-
-
+// Config stuff for the admin panel to let the admin of the node set a APPID
+// for accessing the API of openweathermap
+function curweather_plugin_admin_post (&$a) {
+       if(! is_site_admin())
+           return;
+       if ($_POST['curweather-submit']) {
+           set_config('curweather','appid',trim($_POST['appid']));
+           set_config('curweather','cachetime',trim($_POST['cachetime']));
+           info( t('Curweather settings saved.'.EOL));
+       }
+}
+function curweather_plugin_admin (&$a, &$o) {
+    if(! is_site_admin())
+           return;
+    $appid = get_config('curweather','appid');
+    $cachetime = get_config('curweather','cachetime');
+    $t = get_markup_template("admin.tpl", "addon/curweather/" );
+    $o = replace_macros ($t, array(
+       '$submit' => t('Save Settings'),
+       '$cachetime' => array('cachetime', t('Caching Interval'), $cachetime, t('For how long should the weather data be cached? Choose according your OpenWeatherMap account type.'), array('0'=>t('no cache'), '300'=>'5 '.t('minutes'), '900'=>'15 '.t('minutes'), '1800'=>'30 '.t('minutes'), '3600'=>'60 '.t('minutes'))),
+       '$appid' => array('appid', t('Your APPID'), $appid, t('Your API key provided by OpenWeatherMap'))
+    ));
+}
diff --git a/curweather/getweather.php b/curweather/getweather.php
deleted file mode 100644 (file)
index b4660b9..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-/*
-File Name: getweather.php
-Author: Gary White
-Original version: May 12, 2005
-Last modified: August 7, 2008
-
-Copyright (C) 2004-2008 Gary White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License in the included gpl.txt file for
-details.
-
-See http://apptools.com/phptools/xml/weather/ for usage information
-
-See http://weather.gov/data/current_obs/
-Also see 
-       http://weather.gov/alerts/
-       http://weather.gov/forecasts/xml/
-
-Complete list of Weather stations available at 
-       http://weather.gov/data/current_obs/index.xml
-
-*/
-class GetWeather {
-
-    // Initialize some variables
-    static $itemdata;
-    static $itemname;
-    static $wxdata;
-
-
-    function get($rpt) {
-        
-        // URL for the XML file
-        $xmlurl="http://www.weather.gov/data/current_obs/$rpt.xml";
-
-        // Base url for the icons
-        $imgpath="http://weather.gov/weather/images/fcicons";
-
-        
-        self::$itemdata="";
-        self::$itemname="";
-        self::$wxdata=array();
-  
-        $icons=self::defineIcons();
-        $icon="";
-        $data="";
-        $report="";
-        
-        // create a new CURL resource
-        if($ch = curl_init()) {
-
-            // set URL and other appropriate options
-            curl_setopt($ch, CURLOPT_URL, $xmlurl);
-            curl_setopt($ch, CURLOPT_HEADER, trus);
-            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
-            
-            // grab URL and pass it to the browser
-            $data=curl_exec($ch);
-
-            $r=curl_getinfo($ch); //,CURLINFO_HTTP_CODE);
-
-            // close CURL resource, and free up system resources
-            curl_close($ch);
-
-            // Create an XML parser
-            $xml_parser = xml_parser_create();
-            
-            // Use case-folding so we are sure to find the tag in $map_array
-            // This will force all tags to upper case so we don't have to worry
-            // about matching the case of the original in our tests.
-            xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
-            
-            // Assign the element starting and ending event handlers
-            xml_set_element_handler($xml_parser, array(self,"startElement"), array(self,"endElement"));
-            
-            // Assign a function to handle character data
-            xml_set_character_data_handler($xml_parser, array(self,"characterData"));
-            
-            // Parse the file. This will place the data into an associative
-            // array assigned to the self::$wxdata variable
-            xml_parse($xml_parser,$data,true);
-            
-            // Free the parser object
-            xml_parser_free($xml_parser);
-            
-            // The OBSERVATION_TIME field of the returned XML will be in the
-            // format "Last Updated on May 18, 8:53 am CDT"
-            // We're going to change the format a bit.
-
-            // Strip out the "Last Updated on " portion of the date/time
-            // so we can display that separately in our tabular output
-            $datetime=str_replace("Last Updated on ","",self::$wxdata['OBSERVATION_TIME']);
-            
-            // We now have the format as "May 18, 8:53 am CDT"
-            // Now, get the time zone. It will be everything from
-            // the last space character to the end of the string.
-            $z=strrchr($datetime," ");
-
-            // Get the current year
-            $year=date("Y");
-
-            // Now, we stuff the year into the string, following the comma.
-            $datetime=str_replace(",",", $year",$datetime);
-
-            // This does leave a small potential issue where, if you get a 
-            // report between midnight and 1 a.m. on January 1, or the server
-            // is in a significantly different time zone than the report it 
-            // could be as late as 4 a.m. the year will be wrong because the 
-            // report will be from the previous year. I suppose it would be 
-            // possible to correct for that, but for that little bit, I'm 
-            // not going to worry about it.
-
-            // Now, strip out the time zone
-            $datetime=str_replace($z,"",$datetime);
-
-            // Format the date and time the way we want it and add
-            // back the time zone
-            $datetime=date("l F j, Y g:i A",strtotime($datetime)).$z;
-            self::$wxdata['OBSERVATION_TIME']=$datetime;
-            
-            // Get the WEATHER element
-            $wx=trim(self::$wxdata['WEATHER']);
-
-            // Now, get the icon to match the weather
-            foreach($icons as $k=>$i){
-                $a=explode(" | ",$i);
-                if(is_numeric(array_search($wx,$a))){
-                    self::$wxdata['ICON']="$imgpath/$k.jpg";
-                    break;
-                }
-            }
-
-            // Replace any null elements with "Not available"
-            foreach(array_keys(self::$wxdata) as $key){
-                self::$wxdata[$key]=self::$wxdata[$key]=="NULL"?"Not available":self::$wxdata[$key];
-            }
-
-            // If we got humidity
-            if(is_numeric(self::$wxdata['RELATIVE_HUMIDITY']))
-                // Append a percent sign
-                self::$wxdata['RELATIVE_HUMIDITY'].="%";
-
-            // Do some formatting to make the output a little friendlier
-            if(self::$wxdata['VISIBILITY_MI']=="NA")
-                self::$wxdata['VISIBILITY']="Not available";
-            if(self::$wxdata['VISIBILITY']!="Not available")
-                self::$wxdata['VISIBILITY']=(1*self::$wxdata['VISIBILITY_MI'])." miles";
-
-            // If we got wind data
-            if(is_numeric(self::$wxdata['WIND_MPH'])){
-                // We're going to output wind data as both MPH from a cardinal direction
-                // and as Knots from a direction in degrees
-
-                // Calculate the value for Knots
-                self::$wxdata['WIND_KNOTS']=self::$wxdata['WIND_MPH']/1.15;
-
-                // Format the output
-                $wind=sprintf("From the %s at %d mph (%03.0f&deg; at %d knots)",self::$wxdata['WIND_DIR'],self::$wxdata['WIND_MPH'],self::$wxdata['WIND_DEGREES'],self::$wxdata['WIND_KNOTS']);
-
-                // If we got a value for wind gusts
-                if(is_numeric(self::$wxdata['WIND_GUST_MPH']) && self::$wxdata['WIND_GUST_MPH']>0){
-                    // add it into the wind string
-                    $wind=str_replace("mph","gusting to ".self::$wxdata['WIND_GUST_MPH']." mph<br>", $wind);
-                    $knots=sprintf("%d",self::$wxdata['WIND_GUST_MPH']/1.15);
-                    $wind=str_replace("knots","gusting to $knots knots",$wind);
-                }
-            } else {
-                // Otherwise, if wind is zero, we'll show "Calm"
-                $wind=self::$wxdata['WIND_MPH']=="Not available"?"Not available":"Calm";
-            } // Done with wind
-            self::$wxdata['WIND_STRING']=$wind;
-
-        } // Done getting and formatting the data
-        return self::$wxdata;
-    }
-    
-    function startElement($parser, $name, $attrs) {
-        self::$itemname=$name;
-        self::$itemdata="";
-    }
-
-    function endElement($parser, $name) {
-        self::$wxdata[self::$itemname]=self::$itemdata;
-        self::$itemdata="";
-    }
-
-    function characterData($parser, $data) {
-        self::$itemdata.=$data;
-    }
-
-    function defineIcons(){
-        // See http://weather.gov/data/current_obs/weather.php for source data for this function
-        $retVal['bkn']="Mostly Cloudy | Mostly Cloudy with Haze | Mostly Cloudy and Breezy";
-        $retVal['skc']="Fair | Clear | Fair with Haze | Clear with Haze | Fair and Breezy | Clear and Breezy";
-        $retVal['few']="A Few Clouds | A Few Clouds with Haze | A Few Clouds and Breezy";
-        $retVal['sct']="Partly Cloudy | Party Cloudy with Haze | Partly Cloudy and Breezy";
-        $retVal['ovc']="Overcast | Overcast with Haze | Overcast and Breezy";
-        $retVal['nfg']="Fog/Mist | Fog | Freezing Fog | Shallow Fog | Partial Fog | Patches of Fog | Fog in Vicinity | Freezing Fog in Vicinity | Shallow Fog in Vicinity | Partial Fog in Vicinity | Patches of Fog in Vicinity | Showers in Vicinity Fog | Light Freezing Fog | Heavy Freezing Fog";
-        $retVal['smoke']="Smoke";
-        $retVal['fzra']="Freezing Rain | Freezing Drizzle | Light Freezing Rain | Light Freezing Drizzle | Heavy Freezing Rain | Heavy Freezing Drizzle | Freezing Rain in Vicinity | Freezing Drizzle in Vicinity";
-        $retVal['ip']="Ice Pellets | Light Ice Pellets | Heavy Ice Pellets | Ice Pellets in Vicinity | Showers Ice Pellets | Thunderstorm Ice Pellets | Ice Crystals | Hail | Small Hail/Snow Pellets | Light Small Hail/Snow Pellets | Heavy Small Hail/Snow Pellets | Showers Hail | Hail Showers";
-        $retVal['mix']="Freezing Rain Snow | Light Freezing Rain Snow | Heavy Freezing Rain Snow | Freezing Drizzle Snow | Light Freezing Drizzle Snow | Heavy Freezing Drizzle Snow | Snow Freezing Rain| Light Snow Freezing Rain | Heavy Snow Freezing Rain | Snow Freezing Drizzle | Light Snow Freezing Drizzle | Heavy Snow Freezing Drizzle";
-        $retVal['raip']="Rain Ice Pellets | Light Rain Ice Pellets | Heavy Rain Ice Pellets | Drizzle Ice Pellets | Light Drizzle Ice Pellets | Heavy Drizzle Ice Pellets | Ice Pellets Rain | Light Ice Pellets Rain | Heavy Ice Pellets Rain | Ice Pellets Drizzle | Light Ice Pellets Drizzle | Heavy Ice Pellets Drizzle";
-        $retVal['rasn']="Rain Snow | Light Rain Snow | Heavy Rain Snow | Snow Rain | Light Snow Rain | Heavy Snow Rain | Drizzle Snow | Light Drizzle Snow | Heavy Drizzle Snow | Snow Drizzle | Light Snow Drizzle | Heavy Snow Drizzle";
-        $retVal['shra']="Rain Showers | Light Rain Showers | Heavy Rain Showers | Rain Showers in Vicinity | Light Showers Rain | Heavy Showers Rain | Showers Rain | Showers Rain in Vicinity | Rain Showers Fog/Mist | Light Rain Showers Fog/Mist | Heavy Rain Showers Fog/Mist | Rain Showers in Vicinity Fog/Mist | Light Showers Rain Fog/Mist | Heavy Showers Rain Fog/Mist | Showers Rain Fog/Mist | Showers Rain in Vicinity Fog/Mist";
-        $retVal['tsra']="Thunderstorm | Light Thunderstorm Rain | Heavy Thunderstorm Rain | Thunderstorm Rain Fog/Mist | Light Thunderstorm Rain Fog/Mist | Heavy Thunderstorm Rain Fog/Mist | Thunderstorm Showers in Vicinity | | Light Thunderstorm Rain Haze | Heavy Thunderstorm Rain Haze | Thunderstorm Fog | Light Thunderstorm Rain Fog | Heavy Thunderstorm Rain Fog | Thunderstorm Light Rain | Thunderstorm Heavy Rain | Thunderstorm Rain Fog/Mist | Thunderstorm Light Rain Fog/Mist | Thunderstorm Heavy Rain Fog/Mist | Thunderstorm in Vicinity Fog/Mist | Thunderstorm Showers in Vicinity | Thunderstorm in Vicinity | Thunderstorm in Vicinity Haze | Thunderstorm Haze in Vicinity | Thunderstorm Light Rain Haze | Thunderstorm Heavy Rain Haze | Thunderstorm Fog | Thunderstorm Light Rain Fog | Thunderstorm Heavy Rain Fog | Thunderstorm Hail | Light Thunderstorm Rain Hail | Heavy Thunderstorm Rain Hail | Thunderstorm Rain Hail Fog/Mist | Light Thunderstorm Rain Hail Fog/Mist | Heavy Thunderstorm Rain Hail Fog/Mist | Thunderstorm Showers in Vicinity Hail | | Light Thunderstorm Rain Hail Haze | Heavy Thunderstorm Rain Hail Haze | Thunderstorm Hail Fog | Light Thunderstorm Rain Hail Fog | Heavy Thunderstorm Rain Hail Fog | Thunderstorm Light Rain Hail | Thunderstorm Heavy Rain Hail | Thunderstorm Rain Hail Fog/Mist | Thunderstorm Light Rain Hail Fog/Mist | Thunderstorm Heavy Rain Hail Fog/Mist | Thunderstorm in Vicinity Hail Fog/Mist | Thunderstorm Showers in Vicinity Hail | Thunderstorm in Vicinity Hail | Thunderstorm in Vicinity Hail Haze | Thunderstorm Haze in Vicinity Hail | Thunderstorm Light Rain Hail Haze | Thunderstorm Heavy Rain Hail Haze | Thunderstorm Hail Fog | Thunderstorm Light Rain Hail Fog | Thunderstorm Heavy Rain Hail Fog | Thunderstorm Small Hail/Snow Pellets | Thunderstorm Rain Small Hail/Snow Pellets | Light Thunderstorm Rain Small Hail/Snow Pellets | Heavy Thunderstorm Rain Small Hail/Snow Pellets";
-        $retVal['sn']="Snow | Light Snow | Heavy Snow | Snow Showers | Light Snow Showers | Heavy Snow Showers | Showers Snow | Light Showers Snow | Heavy Showers Snow | Snow Fog/Mist | Light Snow Fog/Mist | Heavy Snow Fog/Mist | Snow Showers Fog/Mist | Light Snow Showers Fog/Mist | Heavy Snow Showers Fog/Mist | Showers Snow Fog/Mist | Light Showers Snow Fog/Mist | Heavy Showers Snow Fog/Mist | Snow Fog | Light Snow Fog | Heavy Snow Fog | Snow Showers Fog | Light Snow Showers Fog | Heavy Snow Showers Fog | Showers Snow Fog | Light Showers Snow Fog | Heavy Showers Snow Fog | Showers in Vicinity Snow | Snow Showers in Vicinity | Snow Showers in Vicinity Fog/Mist | Snow Showers in Vicinity Fog | Low Drifting Snow | Blowing Snow | Snow Low Drifting Snow | Snow Blowing Snow | Light Snow Low Drifting Snow | Light Snow Blowing Snow | Heavy Snow Low Drifting Snow | Heavy Snow Blowing Snow | Thunderstorm Snow | Light Thunderstorm Snow | Heavy Thunderstorm Snow | Snow Grains | Light Snow Grains | Heavy Snow Grains | Heavy Blowing Snow | Blowing Snow in Vicinity";
-        $retVal['wind']="Windy | Fair and Windy | A Few Clouds and Windy | Partly Cloudy and Windy | Mostly Cloudy and Windy | Overcast and Windy";
-        $retVal['hi_shwrs']="Showers in Vicinity | Showers in Vicinity Fog/Mist | Showers in Vicinity Fog | Showers in Vicinity Haze";
-        $retVal['fzrara']="Freezing Rain Rain | Light Freezing Rain Rain | Heavy Freezing Rain Rain | Rain Freezing Rain | Light Rain Freezing Rain | Heavy Rain Freezing Rain | Freezing Drizzle Rain | Light Freezing Drizzle Rain | Heavy Freezing Drizzle Rain | Rain Freezing Drizzle | Light Rain Freezing Drizzle | Heavy Rain Freezing Drizzle";
-        $retVal['hi_tsra']="Thunderstorm in Vicinity | Thunderstorm in Vicinity Fog/Mist | Thunderstorm in Vicinity Fog | Thunderstorm Haze in Vicinity | Thunderstorm in Vicinity Haze";
-        $retVal['ra1']="Light Rain | Drizzle | Light Drizzle | Heavy Drizzle | Light Rain Fog/Mist | Drizzle Fog/Mist | Light Drizzle Fog/Mist | Heavy Drizzle Fog/Mist | Light Rain Fog | Drizzle Fog | Light Drizzle Fog | Heavy Drizzle Fog";
-        $retVal['ra']="Rain | Heavy Rain | Rain Fog/Mist | Heavy Rain Fog/Mist | Rain Fog | Heavy Rain Fog";
-        $retVal['nsvrtsra']="Funnel Cloud | Funnel Cloud in Vicinity | Tornado/Water Spout";
-        $retVal['dust']="Dust | Low Drifting Dust | Blowing Dust | Sand | Blowing Sand | Low Drifting Sand | Dust/Sand Whirls | Dust/Sand Whirls in Vicinity | Dust Storm | Heavy Dust Storm | Dust Storm in Vicinity | Sand Storm | Heavy Sand Storm | Sand Storm in Vicinity";
-        $retVal['mist']="Haze";
-        return $retVal;
-    }
-// end CLASS
-}
-?>
index b462719c86410dbf4c6ece2c3797efc08e4b0859..b2ed6e5e2b4e749b4f4d2f2947c4958100edb2dd 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-02-27 05:01-0500\n"
+"POT-Creation-Date: 2015-07-13 18:46+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,26 +17,114 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: curweather.php:46
+#: curweather.php:30
+msgid "Error fetching weather data.\\nError was: "
+msgstr ""
+
+#: curweather.php:103 curweather.php:163
 msgid "Current Weather"
 msgstr ""
 
-#: curweather.php:67
+#: curweather.php:109
+msgid "Relative Humidity"
+msgstr ""
+
+#: curweather.php:110
+msgid "Pressure"
+msgstr ""
+
+#: curweather.php:111
+msgid "Wind"
+msgstr ""
+
+#: curweather.php:112
+msgid "Last Updated"
+msgstr ""
+
+#: curweather.php:113
+msgid "Data by"
+msgstr ""
+
+#: curweather.php:114
+msgid "Show on map"
+msgstr ""
+
+#: curweather.php:119
+msgid "There was a problem accessing the weather data. But have a look"
+msgstr ""
+
+#: curweather.php:121
+msgid "at OpenWeatherMap"
+msgstr ""
+
+#: curweather.php:137
 msgid "Current Weather settings updated."
 msgstr ""
 
-#: curweather.php:90
-msgid "Current Weather Settings"
+#: curweather.php:152
+msgid "No APPID found, please contact your admin to optain one."
+msgstr ""
+
+#: curweather.php:162 curweather.php:191
+msgid "Save Settings"
+msgstr ""
+
+#: curweather.php:163
+msgid "Settings"
+msgstr ""
+
+#: curweather.php:165
+msgid "Enter either the name of your location or the zip code."
+msgstr ""
+
+#: curweather.php:166
+msgid "Your Location"
+msgstr ""
+
+#: curweather.php:166
+msgid ""
+"Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or "
+"<em>14476,DE</em>."
+msgstr ""
+
+#: curweather.php:167
+msgid "Units"
+msgstr ""
+
+#: curweather.php:167
+msgid "select if the temperatur should be displayed in °C or °F"
+msgstr ""
+
+#: curweather.php:168
+msgid "Show weather data"
+msgstr ""
+
+#: curweather.php:181
+msgid "Curweather settings saved."
+msgstr ""
+
+#: curweather.php:192
+msgid "Caching Interval"
+msgstr ""
+
+#: curweather.php:192
+msgid ""
+"For how long should the weather data be cached? Choose according your "
+"OpenWeatherMap account type."
+msgstr ""
+
+#: curweather.php:192
+msgid "no cache"
 msgstr ""
 
-#: curweather.php:93
-msgid "Weather Location: "
+#: curweather.php:192
+msgid "minutes"
 msgstr ""
 
-#: curweather.php:96
-msgid "Enable Current Weather"
+#: curweather.php:193
+msgid "Your APPID"
 msgstr ""
 
-#: curweather.php:104
-msgid "Submit"
+#: curweather.php:193
+msgid "Your API key provided by OpenWeatherMap"
 msgstr ""
diff --git a/curweather/templates/admin.tpl b/curweather/templates/admin.tpl
new file mode 100644 (file)
index 0000000..0d43ae5
--- /dev/null
@@ -0,0 +1,3 @@
+{{include file="field_input.tpl" field=$appid}}
+{{include file="field_select.tpl" field=$cachetime}}
+<div class="submit"><input type="submit" name="curweather-submit" value="{{$submit}}" /></div>
diff --git a/curweather/templates/settings.tpl b/curweather/templates/settings.tpl
new file mode 100644 (file)
index 0000000..09f6f50
--- /dev/null
@@ -0,0 +1,15 @@
+<span id="settings_curweather_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose('settings_curweather_expanded'); openClose('settings_curweather_inflated');">
+       <h3>{{$header}}</h3>
+</span>
+<div id="settings_curweather_expanded" class="settings-block" style="display: none;">
+       <span class="fakelink" onclick="openClose('settings_curweather_expanded'); openClose('settings_curweather_inflated');">
+               <h3>{{$header}}</h3>
+       </span>
+       <div style="color: red; font-weight: bold;">{{$noappidtext}}</div>
+       {{include file="field_input.tpl" field=$curweather_loc}}
+       {{include file="field_select.tpl" field=$curweather_units}}
+       {{include file="field_checkbox.tpl" field=$enabled}}
+       <div class="settings-submit-wrapper" >
+               <input type="submit" id="curweather-settings-submit" name="curweather-settings-submit" class="settings-submit" value="{{$submit}}" />
+       </div>
+</div>
diff --git a/curweather/templates/widget-error.tpl b/curweather/templates/widget-error.tpl
new file mode 100644 (file)
index 0000000..c576240
--- /dev/null
@@ -0,0 +1 @@
+<div>{{$problem}} <a href="http://openweathermap.org/find?q={{$rpt}}">{{$atOWM}}</a>.</div>
diff --git a/curweather/templates/widget.tpl b/curweather/templates/widget.tpl
new file mode 100644 (file)
index 0000000..b893eef
--- /dev/null
@@ -0,0 +1,17 @@
+<div id="curweather-network" class="widget">
+       <div class="title tool">
+               <h4 title="{{$lastupdate}}">{{$title}}: {{$city}}</h4>
+       </div>
+       <p>
+       <img src="{{$icon}}" title="{{$description}}">
+       <ul class="curweather-details">
+           <li><strong>{{$temp}}</strong></li>
+           <li>{{$relhumidity['caption']}}: {{$relhumidity['val']}}</li>
+           <li>{{$pressure['caption']}}: {{$pressure['val']}}</li>
+           <li>{{$wind['caption']}}: {{$wind['val']}}</li>
+       </ul></p>
+       <p class="curweather-footer">
+               {{$databy}}: <a href="http://openweathermap.org">OpenWeatherMap</a>. <a href="http://openweathermap.org/Maps?zoom=7&lat={{$lat}}&lon={{$lon}}&layers=B0FTTFF">{{$showonmap}}</a>
+       </p>
+</div>
+<div class="clear"></div>
diff --git a/curweather/test.php b/curweather/test.php
deleted file mode 100644 (file)
index cd51c23..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
- <?php \r
-require_once  'getweather.php';\r
-$rpt = "KHVN";\r
-$wxdata = GetWeather::get($rpt);\r
-var_dump($rpt, $wxdata);
\ No newline at end of file