Fix double slash jQm click handler bug
--- a/aws/awsStartup.sh
+++ b/aws/awsStartup.sh
@@ -5,6 +5,7 @@
#http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12
cp /root/aws.php /tmp/
+mkdir /var/www/lib/staticmaplite/cache
chcon -h system_u:object_r:httpd_sys_content_t /var/www
chcon -R -h root:object_r:httpd_sys_content_t /var/www/*
chcon -R -t httpd_sys_content_rw_t /var/www/lib/staticmaplite/cache
--- a/feedback.php
+++ b/feedback.php
@@ -55,10 +55,13 @@
<textarea id="extrainfo">
<?php
echo "Referrer URL: ".$_SERVER["HTTP_REFERER"];
+ echo "\nCurrent page URL: ".curPageURL();
echo "\nUser Agent: ".$_SERVER["HTTP_USER_AGENT"];
echo "\nUser host/IP: ".$_SERVER["HTTP_X_FORWARDED_FOR"]." ".$_SERVER["REMOTE_ADDR"];
echo "\nServer host/IP: ".php_uname("n");
echo "\nCurrent date/time: ". date("c");
+ echo "\nCurrent code revision: ".exec("git rev-parse --short HEAD");
+ echo "\nCurrent timetables version: ".@filemtime('cbrfeed.zip');
echo "\nDump of session: ".print_r($_SESSION,true);
?>
</textarea>
--- a/include/common-geo.inc.php
+++ b/include/common-geo.inc.php
@@ -47,7 +47,7 @@
}
$output = "";
if ($collapsible) $output.= '<div data-role="collapsible" data-collapsed="true"><h3>Open Map...</h3>';
- $output.= '<center><img src="' . curPageURL() . 'lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&maptype=mapnik&markers=' .
+ $output.= '<center><img src="' . curPageURL() . 'lib/staticmaplite/staticmap.php?center=' . $center . '&zoom=' . $zoom . '&size=' . $width . 'x' . $height . '&markers=' .
$markers . '" width=' . $width . ' height=' . $height . '></center>';
if ($collapsible) $output.= '</div>';
return $output;
--- a/include/common-net.inc.php
+++ b/include/common-net.inc.php
@@ -24,7 +24,8 @@
$isHTTPS = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on");
$port = (isset($_SERVER["SERVER_PORT"]) && ((!$isHTTPS && $_SERVER["SERVER_PORT"] != "80") || ($isHTTPS && $_SERVER["SERVER_PORT"] != "443")));
$port = ($port) ? ':' . $_SERVER["SERVER_PORT"] : '';
- $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']) , ENT_QUOTES) . "/";
+ $url = ($isHTTPS ? 'https://' : 'http://') . $_SERVER["SERVER_NAME"] . $port . htmlentities(dirname($_SERVER['PHP_SELF']) , ENT_QUOTES);
return $url;
}
?>
+
--- a/include/common-template.inc.php
+++ b/include/common-template.inc.php
@@ -121,18 +121,19 @@
echo "<script>
function success(position) {
+$('#error').val('Location now detected. Please wait for data to load.');
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude);
$.ajax({ url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude });
location.reload(true);
}
function error(msg) {
- console.log(msg);
+$('#error').val('Error: '+msg);
}
function geolocate() {
if (navigator.geolocation) {
var options = {
- enableHighAccuracy: false,
+ enableHighAccuracy: true,
timeout: 60000,
maximumAge: 10000
}
@@ -168,7 +169,8 @@
document.title = "' . $pageTitle . '";
});
</script>
- <div data-role="header">
+ <div data-role="header" data-position="inline">
+ <a href="'.$_SERVER["HTTP_REFERER"].'" data-icon="arrow-l" data-rel="back">Back</a>
<h1>' . $pageTitle . '</h1>
</div><!-- /header -->
<a name="maincontent" id="maincontent"></a>
@@ -200,7 +202,7 @@
$geoerror = !isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "";
}
if ($geoerror) {
- echo '<div class="error">Sorry, but your location could not currently be detected.
+ echo '<div id="error">Sorry, but your location could not currently be detected.
Please allow location permission, wait for your location to be detected,
or enter an address/co-ordinates in the box below.</div>';
}
@@ -215,7 +217,7 @@
<div data-role="fieldcontain">
<label for="time"> Time: </label>
<input type="time" name="time" id="time" value="' . (isset($_SESSION['time']) ? $_SESSION['time'] : date("H:i")) . '"/>
- <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();'. "$('#time').val(d.getHours() +':'+ d.getMinutes());".'">Current Time?</a>
+ <a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();'. "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length = 1 ? '0'+ d.getMinutes(): d.getMinutes()));".'">Current Time?</a>
</div>
<div data-role="fieldcontain">
<label for="service_period"> Service Period: </label>
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -5,10 +5,10 @@
"session",
"json",
"phperror",
- "awsgtfs",
+ //"awsgtfs",
"awsotp",
- "squallotp",
- "vanilleotp",
+ //"squallotp",
+ //"vanilleotp",
"other"
);
if (isDebug("awsgtfs")) {
--- a/lib/staticmaplite/staticmap.php
+++ b/lib/staticmaplite/staticmap.php
@@ -32,11 +32,9 @@
protected $tileSize = 256;
protected $tileSrcUrl = array( 'mapnik' => 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png',
- 'osmarenderer' => 'http://c.tah.openstreetmap.org/Tiles/tile/{Z}/{X}/{Y}.png',
- 'cycle' => 'http://c.andy.sandbox.cloudmade.com/tiles/cycle/{Z}/{X}/{Y}.png'
- );
-
- protected $tileDefaultSrc = 'mapnik';
+ 'cloudmade' => 'http://b.tile.cloudmade.com/daa03470bb8740298d4b10e3f03d63e6/1/256/{Z}/{X}/{Y}.png',);
+
+ protected $tileDefaultSrc = 'cloudmade';
protected $markerBaseDir = 'images/markers';
protected $osmLogo = 'images/osm_logo.png';
@@ -258,8 +256,10 @@
} else {
// no cache, make map, send headers and deliver png
$this->makeMap();
- $this->sendHeader();
- return imagepng($this->image);
+ // $this->sendHeader();
+ // do some extra compression
+ imagetruecolortopalette($this->image, false, 256);
+ return imagepng($this->image, 9, PNG_ALL_FILTERS);
}
}
--- a/routeList.php
+++ b/routeList.php
@@ -36,16 +36,16 @@
$suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING);
$url = $APIurl . "/json/stopzonesearch?q=" . $suburb;
include_header("Routes by Suburb", "routeList");
- trackEvent("Route Lists","Routes By Suburb", $suburb);
+ trackEvent("Route Lists", "Routes By Suburb", $suburb);
}
if ($_REQUEST['nearby']) {
$url = $APIurl . "/json/neareststops?lat={$_SESSION['lat']}&lon={$_SESSION['lon']}&limit=15";
include_header("Routes Nearby", "routeList", true, true);
- timePlaceSettings(true);
- if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") {
- include_footer();
- die();
- }
+ timePlaceSettings(true);
+ if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") {
+ include_footer();
+ die();
+ }
}
$stops = json_decode(getPage($url));
$routes = Array();
@@ -63,7 +63,7 @@
echo '<li>' . $row[1] . ' <a href="trip.php?routeid=' . $row[0] . '">' . $row[2] . " (" . ucwords($row[4]) . ")</a></li>\n";
}
}
-else if ($_REQUEST['bynumber']) {
+else if ($_REQUEST['bynumber'] || $_REQUEST['numberSeries']) {
include_header("Routes by Number", "routeList");
navbar();
echo ' <ul data-role="listview" data-inset="true">';
@@ -87,25 +87,20 @@
$routeSeries[$seriesNum][$seriesNum . "-" . $row[1] . "-" . $row[0]] = $row;
}
}
- ksort($routeSeries);
- ksort($seriesRange);
- echo '<div class="noscriptnav"> Go to route numbers: ';
- foreach ($seriesRange as $series => $range) {
- if ($range['min'] == $range['max']) echo "<a href=\"#$series\">$series</a> ";
- else echo "<a href=\"#$series\">{$range['min']}-{$range['max']}</a> ";
+ if ($_REQUEST['bynumber']) {
+ ksort($routeSeries);
+ ksort($seriesRange);
+ foreach ($routeSeries as $series => $routes) {
+ echo '<li><a href="' . curPageURL() . 'routeList.php?numberSeries=' . $series . '">';
+ if ($series <= 9) echo $series;
+ else echo "{$seriesRange[$series]['min']}-{$seriesRange[$series]['max']}";
+ echo "</a></li>\n";
+ }
}
- echo "</div>
- <script>
- $('.noscriptnav').hide();
- </script>";
- foreach ($routeSeries as $series => $routes) {
- echo '<a name="' . $series . '"></a>';
- if ($series <= 9) echo '<li>' . $series . "<ul>\n";
- else echo "<li>{$seriesRange[$series]['min']}-{$seriesRange[$series]['max']}<ul>\n";
- foreach ($routes as $row) {
+ else if ($_REQUEST['numberSeries']) {
+ foreach ($routeSeries[$_REQUEST['numberSeries']] as $row) {
echo '<li>' . $row[1] . ' <a href="trip.php?routeid=' . $row[0] . '">' . $row[2] . " (" . ucwords($row[3]) . ")</a></li>\n";
}
- echo "</ul></li>\n";
}
}
else {
@@ -115,24 +110,18 @@
$url = $APIurl . "/json/routes";
$contents = json_decode(getPage($url));
// by destination!
- foreach ($contents as $key => $row) {
+ foreach ($contents as $row) {
$routeDestinations[$row[2]][] = $row;
}
- echo '<div class="noscriptnav"> Go to Destination: ';
- foreach (ksort($routeDestinations) as $destination => $routes) {
- echo "<a href=\"#$destination\">$destination</a> ";
- }
- echo "</div>
- <script>
- $('.noscriptnav').hide();
- </script>";
- foreach ($routeDestinations as $destination => $routes) {
- echo '<a name="' . $destination . '"></a>';
- echo '<li>' . $destination . "... <ul>\n";
- foreach ($routes as $row) {
+ if ($_REQUEST['routeDestination']) {
+ foreach ($routeDestinations[urldecode($_REQUEST['routeDestination'])] as $row) {
echo '<li>' . $row[1] . ' <a href="trip.php?routeid=' . $row[0] . '">' . $row[2] . " (" . ucwords($row[3]) . ")</a></li>\n";
}
- echo "</ul></li>\n";
+ }
+ else {
+ foreach ($routeDestinations as $destination => $routes) {
+ echo '<li><a href="' . curPageURL() . 'routeList.php?routeDestination=' . urlencode($destination) . '">' . $destination . "... </a></li>\n";
+ }
}
}
echo "</ul>\n";
--- a/schedule_viewer.py
+++ b/schedule_viewer.py
@@ -316,8 +316,19 @@
except:
print "Error for GetStartTime of trip #" + t.trip_id + sys.exc_info()[0]
else:
- result.append ( (starttime, t.trip_id) )
- return sorted(result, key=lambda trip: trip[0])
+ cursor = t._schedule._connection.cursor()
+ cursor.execute(
+ 'SELECT arrival_secs,departure_secs FROM stop_times WHERE '
+ 'trip_id=? ORDER BY stop_sequence DESC LIMIT 1', (t.trip_id,))
+ (arrival_secs, departure_secs) = cursor.fetchone()
+ if arrival_secs != None:
+ endtime = arrival_secs
+ elif departure_secs != None:
+ endtime = departure_secs
+ else:
+ endtime =0
+ result.append ( (starttime, t.trip_id, endtime) )
+ return sorted(result, key=lambda trip: trip[2])
def handle_json_GET_triprows(self, params):
"""Return a list of rows from the feed file that are related to this
--- a/trip.php
+++ b/trip.php
@@ -9,7 +9,7 @@
$url = $APIurl . "/json/routetrips?route_id=" . $routeid;
$routetrips = json_decode(getPage($url));
foreach ($routetrips as $trip) {
- if ($trip[0] > midnight_seconds()) {
+ if ($trip[2] > midnight_seconds()) {
$tripid = $trip[1];
break;
}