Compare commits
21 Commits
v0.4.3-alp
...
master
Author | SHA1 | Date | |
---|---|---|---|
004d7798e2 | |||
3f66b8bf86 | |||
59791b49ec | |||
4491d5e0a3 | |||
364cec91fc | |||
96feb27b76 | |||
e3f74fd45e | |||
b4f979e596 | |||
39b54af4b5 | |||
de940d95fe | |||
268facd3e7 | |||
fd78ef1284 | |||
d1b5046a42 | |||
d99e13849e | |||
f2432e310e | |||
6a64ede3f6 | |||
b5a652344c | |||
e409ff190a | |||
8225f8eae2 | |||
b368e65bd9 | |||
f4dc85e434 |
5
.dockerignore
Normal file
@ -0,0 +1,5 @@
|
||||
nginx.Dockerfile
|
||||
php.Dockerfile
|
||||
.dockerignore
|
||||
.gitignore
|
||||
LICENSE
|
@ -1,3 +1,5 @@
|
||||
# athena.fb-infra.uk
|
||||
|
||||
The web-app at athena.fb-infra.uk
|
||||
**Athena has been superceded by OwlBoard - [git](https://git.fjla.uk/OwlBoard) - [web](https://owlboard.info)**
|
||||
|
||||
**This repository is archived**
|
Before Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 302 B |
BIN
assets/nre/nre-powered.xcf
Normal file
BIN
assets/nre/nre-powered_1200w.jxl
Normal file
BIN
assets/nre/nre-powered_1200w.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
assets/nre/nre-powered_1200w.webp
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
assets/nre/nre-powered_1900w.jxl
Normal file
BIN
assets/nre/nre-powered_1900w.png
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
assets/nre/nre-powered_1900w.webp
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
assets/nre/nre-powered_200w.jxl
Normal file
BIN
assets/nre/nre-powered_200w.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
assets/nre/nre-powered_200w.webp
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
assets/nre/nre-powered_400w.jxl
Normal file
BIN
assets/nre/nre-powered_400w.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
assets/nre/nre-powered_400w.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
assets/nre/nre-powered_800w.jxl
Normal file
BIN
assets/nre/nre-powered_800w.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
assets/nre/nre-powered_800w.webp
Normal file
After Width: | Height: | Size: 19 KiB |
13
basic-test.php
Normal file
@ -0,0 +1,13 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>TEST_ONLY</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php
|
||||
require './php/submitIssue.php';
|
||||
|
||||
echo cleanInput($_SERVER['QUERY_STRING']);
|
||||
?>
|
||||
</body>
|
||||
</html>
|
40
conf/deploy.sh
Normal file
@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
ROOTIN="/data/in"
|
||||
ROOTOUT="/data/out"
|
||||
|
||||
echo "Running UglifyJS on /data/in folder"
|
||||
uglifyjs-folder "$ROOTIN" -x ".js" -eo "$ROOTOUT"
|
||||
|
||||
echo "Running UglifyCSS"
|
||||
CSSIN="/data/in/styles/"
|
||||
CSSOUT="/data/out/styles"
|
||||
|
||||
cd $CSSIN
|
||||
echo "Changed directory"
|
||||
for f in *
|
||||
do
|
||||
if [ -f "$f" ]; then
|
||||
uglifycss "$f" --output "$f";
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Moving 'styles' to 'out'"
|
||||
cp -r $CSSIN $CSSOUT
|
||||
|
||||
echo "Running html-minifier-terser on /folder"
|
||||
HTMLIN="/data/in/"
|
||||
HTMLOUT="/data/out"
|
||||
html-minifier-terser --collapse-whitespace --remove-comments --file-ext html --input-dir /data/in/ --output-dir /data/out/
|
||||
|
||||
echo "Moving JSON Manifest file from root to output"
|
||||
cat /data/in/manifest.json | jq -c > /data/out/manifest.json
|
||||
|
||||
echo "Moving other files folder from in/ to out/"
|
||||
cp -r /data/in/assets /data/out/assets
|
||||
cp -r /data/in/error-pages /data/out/error-pages
|
||||
cp -r /data/in/page-blocks /data/out/page-blocks
|
||||
cp -r /data/in/*.php /data/out
|
||||
|
||||
echo "Running GZIP & Brotli on all HTML, JS, CSS, JSON, SVG, TTF, VCF, PUB files"
|
||||
find /data/out -type f -name \*.html -or -name \*.vcf -or -name \*.pub -or -name \*.js -or -name \*.css -or -name \*.json -or -name \*.svg -or -name \*.ttf | while read file; do gzip -k -9 $file; brotli -k -q 11 $file; done
|
57
conf/nginx.conf
Normal file
@ -0,0 +1,57 @@
|
||||
user nginx;
|
||||
worker_processes 1;
|
||||
|
||||
error_log /var/log/nginx/error.log notice;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
|
||||
events {
|
||||
worker_connections 128;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
access_log /var/log/nginx/access.log main;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
gzip_static on;
|
||||
brotli_static on;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
root /site;
|
||||
|
||||
location ~ /(.git|php|page-blocks) {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location / {
|
||||
index index.php;
|
||||
try_files $uri $uri/ $uri/index.php &uri/index.html =404;
|
||||
break;
|
||||
expires 7d;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
try_files $uri =404;
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass localhost:9000;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
}
|
||||
|
||||
error_page 403 /error-pages/403.php;
|
||||
error_page 404 /error-pages/404.php;
|
||||
error_page 500 501 502 503 504 /error-pages/50x.php;
|
||||
|
||||
}
|
||||
}
|
@ -27,8 +27,9 @@
|
||||
<br>
|
||||
|
||||
<h2 hidden>Server Maintenance</h2>
|
||||
<p hidden>Athena may be completely or partially unavailable between 1900-2300 on 07/10/2022,
|
||||
apologies for any inconvinience caused to you.</p>
|
||||
<p hidden>Athena may become unavailable for several hours on 07/03/2023
|
||||
during a server migration. Every effort will be made to prevend downtime.
|
||||
</p>
|
||||
|
||||
<h2>Quick Links</h2>
|
||||
<button class="actionbutton" onclick="gotoInfoBoard('bathspa')">BTH</button>
|
||||
@ -44,8 +45,8 @@
|
||||
<br>
|
||||
<br>
|
||||
<div class="text-description">
|
||||
<p>This is an Alpha release and is under testing.</p>
|
||||
<p>Some features may not work and some stations may not be available.</p>
|
||||
<p>Athena has been replaced with <a href="https://owlboard.info">OwlBoard</a>.</p>
|
||||
<p>Athena will remain available for use as OwlBoard does not yet offer staff versions of boards.</p>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
|
26
issue.php
@ -41,29 +41,13 @@
|
||||
<!-- Main Content Begins -->
|
||||
<?php require "./page-blocks/title-image.php";?>
|
||||
|
||||
<h1>Please help us fix your issue</h1>
|
||||
<h1>Athena is retiring</h1>
|
||||
|
||||
<p>Give as much detail as possible so we can try to fix the problem.</p>
|
||||
|
||||
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
|
||||
<span class="form-info">Subject:</span>
|
||||
<br>
|
||||
<input class="form-text-small" type="text" name="subject" placeholder="Subject" value="<?php echo $title;?>">
|
||||
<br>
|
||||
<br>
|
||||
<span class="form-info">Details:</span>
|
||||
<br>
|
||||
<textarea class="form-text-large" placeholder="Please give as much detail here as possible" name="detail"><?php echo $detail;?></textarea>
|
||||
<br>
|
||||
<br>
|
||||
<input class="actionbutton" type="submit">
|
||||
<br>
|
||||
<div class="text-description">
|
||||
<p>It has been replaced with <a href="https://owlboard.info">OwlBoard</a>.</p>
|
||||
<p>
|
||||
On submission of this form, your browsers User Agent string will be
|
||||
collected alongside the information you provide above and will be
|
||||
posted to the <a class="inlinelink" href="https://git.fjla.uk/fred.boniface/athena.fb-infra.uk/issues?q=&state=open">
|
||||
issue tracker</a>.
|
||||
Currently, OwlBoard does not offer staff versions of departure boards.
|
||||
Because of this, Athena will not have any further issues fixed but will remain
|
||||
available until OwlBoard offers this feature.
|
||||
</p>
|
||||
<br>
|
||||
<br>
|
||||
|
26
js/nav.js
@ -1,19 +1,11 @@
|
||||
/* When the user clicks on the button,
|
||||
toggle between hiding and showing the dropdown content */
|
||||
function myFunction() {
|
||||
document.getElementById("myDropdown").classList.toggle("show");
|
||||
function sidebarOpen() {
|
||||
document.getElementById("sidebar").style.width = "50%";
|
||||
document.getElementById("sidebar_open_short").style.display = "none";
|
||||
document.getElementById("sidebar_close_short").style.display = "block";
|
||||
}
|
||||
|
||||
// Close the dropdown menu if the user clicks outside of it
|
||||
window.onclick = function(event) {
|
||||
if (!event.target.matches('.dropbtn')) {
|
||||
var dropdowns = document.getElementsByClassName("dropdown-content");
|
||||
var i;
|
||||
for (i = 0; i < dropdowns.length; i++) {
|
||||
var openDropdown = dropdowns[i];
|
||||
if (openDropdown.classList.contains('show')) {
|
||||
openDropdown.classList.remove('show');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function sidebarClose() {
|
||||
document.getElementById("sidebar").style.width = "0%"
|
||||
document.getElementById("sidebar_open_short").style.display = "block";
|
||||
document.getElementById("sidebar_close_short").style.display = "none";
|
||||
}
|
12
nginx.Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
FROM fedora:latest as compressor
|
||||
RUN dnf install brotli nodejs npm jq -y
|
||||
RUN npm i uglifyjs-folder uglifycss html-minifier-terser -g
|
||||
COPY . /data/in
|
||||
RUN bash /data/in/conf/deploy.sh
|
||||
|
||||
FROM fholzer/nginx-brotli:latest
|
||||
RUN rm /etc/nginx/nginx.conf
|
||||
RUN apk update
|
||||
RUN apk add --upgrade libxml2 libxslt
|
||||
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
|
||||
COPY --from=compressor /data/out/ /site/
|
@ -1,10 +1,9 @@
|
||||
<?php
|
||||
|
||||
echo '<div class="dropdown">';
|
||||
echo ' <button onclick="myFunction()" class="dropbtn">Menu</button>';
|
||||
echo ' <div id="myDropdown" class="dropdown-content">';
|
||||
echo ' <a class="dropdown-first" href="/">Home</a>';
|
||||
echo ' <a href="/issue.php">Report Issue</a>';
|
||||
echo ' <a href="/help.php">Help</a>';
|
||||
echo ' </div>';
|
||||
echo '</div>';
|
||||
<div id="menubar_hamburger" class="hide_micro">
|
||||
<button class="sidebar_control" id="sidebar_open_short" onclick="sidebarOpen()">☰</button>
|
||||
<button class="sidebar_control" id="sidebar_close_short" onclick="sidebarClose()">×</button>
|
||||
</div>
|
||||
<div id="sidebar">
|
||||
<a href="/">Home</a>
|
||||
<a href="/help.php">Help</a>
|
||||
<a href="/issue.php">Report Issue</a>
|
||||
</div>
|
||||
|
@ -1,10 +1,9 @@
|
||||
<?php
|
||||
echo '<picture>';
|
||||
echo '<source media="(max-width:1000px)" srcset="/assets/title/title_355.jxl" type="image/jxl">';
|
||||
echo '<source media="(max-width:1000px)" srcset="/assets/title/title_355.webp" type="image/webp">';
|
||||
echo '<source media="(max-width:1000px)" srcset="/assets/title/title_355.png" type="image/png">';
|
||||
echo '<source srcset="/assets/title/title_600.jxl" type="image/jxl">';
|
||||
echo '<source srcset="/assets/title/title_600.webp" type="image/webp">';
|
||||
echo '<source srcset="/assets/title/title_600.png" type="image/png">';
|
||||
echo '<img class="titleimg" src="/assets/title/title_600.png" alt="Athena Owl Logo">';
|
||||
echo '</picture>';
|
||||
<picture>
|
||||
<source media="(max-width:1000px)" srcset="/assets/title/title_355.jxl" type="image/jxl">
|
||||
<source media="(max-width:1000px)" srcset="/assets/title/title_355.webp" type="image/webp">
|
||||
<source media="(max-width:1000px)" srcset="/assets/title/title_355.png" type="image/png">
|
||||
<source srcset="/assets/title/title_600.jxl" type="image/jxl">
|
||||
<source srcset="/assets/title/title_600.webp" type="image/webp">
|
||||
<source srcset="/assets/title/title_600.png" type="image/png">
|
||||
<img class="titleimg" src="/assets/title/title_600.png" alt="Athena Owl Logo">
|
||||
</picture>
|
3
php.Dockerfile
Normal file
@ -0,0 +1,3 @@
|
||||
FROM php:8.2.1-fpm-alpine
|
||||
|
||||
COPY . /site
|
@ -1,7 +1,8 @@
|
||||
<?php
|
||||
require("./php/openLDBSVWS.php");
|
||||
require './php/openLDBSVWS.php';
|
||||
require '/srv/php-keys/athena/gitea.php';
|
||||
date_default_timezone_set("Europe/London");
|
||||
$OpenLDBSVWS = new OpenLDBSVWS("ACCESS TOKEN");
|
||||
$OpenLDBSVWS = new OpenLDBSVWS($ldbKey);
|
||||
$response = $OpenLDBSVWS->GetDepartureBoardByCRS(10,"BRI",date("H:i:s",time()),120,"","","","","True");
|
||||
header("Content-Type: text/plain");
|
||||
print_r($response);
|
||||
|
56
php/LDB-Tests/example_output.php
Normal file
@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>TESTING</title>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
require("OpenLDBWS.php");
|
||||
$OpenLDBWS = new OpenLDBWS("YOUR_ACCESS_TOKEN");
|
||||
$response = $OpenLDBWS->GetDepartureBoard(10,"GTW");
|
||||
$template["header"] = "
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Time</th>
|
||||
<th>Destination</th>
|
||||
<th>Platform</th>
|
||||
<th>Expected</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
";
|
||||
$template["row"] = "
|
||||
<tr>
|
||||
<td>{std}</td>
|
||||
<td>{destination}</td>
|
||||
<td>{platform}</td>
|
||||
<td>{etd}</td>
|
||||
</tr>
|
||||
";
|
||||
$template["footer"] = "
|
||||
</tbody>
|
||||
</table>
|
||||
";
|
||||
if (isset($response->GetStationBoardResult->trainServices->service))
|
||||
{
|
||||
print $template["header"];
|
||||
foreach($response->GetStationBoardResult->trainServices->service as $service)
|
||||
{
|
||||
$row = $template["row"];
|
||||
$destinations = array();
|
||||
foreach($service->destination->location as $location)
|
||||
{
|
||||
$destinations[] = $location->locationName;
|
||||
}
|
||||
$row = str_replace("{std}",$service->std,$row);
|
||||
$row = str_replace("{destination}",implode(" and ",$destinations),$row);
|
||||
$row = str_replace("{platform}",(isset($service->platform)?$service->platform:" "),$row);
|
||||
$row = str_replace("{etd}",$service->etd,$row);
|
||||
print $row;
|
||||
}
|
||||
print $template["footer"];
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
</html>
|
65
php/LDB-Tests/example_output_SV.php
Normal file
@ -0,0 +1,65 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>TESTING</title>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
require './php/openLDBSVWS.php';
|
||||
require './php/submitIssue.php';
|
||||
require '/srv/php-keys/athena/gitea.php';
|
||||
|
||||
echo cleanInput($_SERVER['QUERY_STRING']);
|
||||
|
||||
date_default_timezone_set("Europe/London");
|
||||
$OpenLDBSVWS = new OpenLDBSVWS($ldbKey);
|
||||
$response = $OpenLDBSVWS->GetDepartureBoardByCRS(10,"BRI",date("H:i:s",time()),120,"","","","","True");
|
||||
$template["header"] = "
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Org.</th>
|
||||
<th>Dest.</th>
|
||||
<th>Plat.</th>
|
||||
<th>Sch</th>
|
||||
<th>Exp</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
";
|
||||
$template["row"] = "
|
||||
<tr>
|
||||
<td>{id}</td>
|
||||
<td>{org}</td>
|
||||
<td>{dest}</td>
|
||||
<td>{plat}</td>
|
||||
<td>{sch}</td>
|
||||
<td>{act}</td>
|
||||
</tr>
|
||||
";
|
||||
$template["footer"] = "
|
||||
</tbody>
|
||||
</table>
|
||||
";
|
||||
if (isset($response->GetBoardResult->trainServices->service))
|
||||
{
|
||||
print $template["header"];
|
||||
foreach($response->GetBoardResult->trainServices->service as $service)
|
||||
{
|
||||
$row = $template["row"];
|
||||
$destinations = array();
|
||||
|
||||
$row = str_replace("{id}",$service->trainid,$row);
|
||||
$row = str_replace("{org}",$service->origin->location->tiploc,$row);
|
||||
$row = str_replace("{dest}",$service->destination->location->tiploc,$row);
|
||||
$row = str_replace("{plat}",$service->platform,$row);
|
||||
$row = str_replace("{sch}",$servoce->std,$row);
|
||||
$row = str_replace("{act}",$service->etd,$row);
|
||||
print $row;
|
||||
}
|
||||
print $template["footer"];
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
</html>
|
500
php/LDB-Tests/example_return.php
Normal file
@ -0,0 +1,500 @@
|
||||
stdClass Object
|
||||
(
|
||||
[GetBoardResult] => stdClass Object
|
||||
(
|
||||
[generatedAt] => 2022-11-05T21:47:01.9993579+00:00
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[stationManager] => Network Rail
|
||||
[stationManagerCode] => RT
|
||||
[isTruncated] => 1
|
||||
[trainServices] => stdClass Object
|
||||
(
|
||||
[service] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057051479
|
||||
[uid] => F51479
|
||||
[trainid] => 9U02
|
||||
[rsid] => XR134200
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Elizabeth Line
|
||||
[operatorCode] => XR
|
||||
[std] => 2022-11-05T21:48:00
|
||||
[etd] => 2022-11-05T21:48:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => A
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTLL
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Abbey Wood
|
||||
[crs] => ABW
|
||||
[tiploc] => ABWDXR
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[1] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057919346
|
||||
[uid] => O19346
|
||||
[trainid] => 1T91
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Great Western Railway
|
||||
[operatorCode] => GW
|
||||
[std] => 2022-11-05T21:55:00
|
||||
[etd] => 2022-11-05T21:55:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => TD
|
||||
[platform] => 7
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTON
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Heathrow Airport T5
|
||||
[crs] => HWV
|
||||
[tiploc] => HTRWTM5
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[2] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057051484
|
||||
[uid] => F51484
|
||||
[trainid] => 9U04
|
||||
[rsid] => XR134700
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Elizabeth Line
|
||||
[operatorCode] => XR
|
||||
[std] => 2022-11-05T21:58:00
|
||||
[etd] => 2022-11-05T21:58:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => A
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTLL
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Abbey Wood
|
||||
[crs] => ABW
|
||||
[tiploc] => ABWDXR
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[3] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057051488
|
||||
[uid] => F51488
|
||||
[trainid] => 9U06
|
||||
[rsid] => XR135100
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Elizabeth Line
|
||||
[operatorCode] => XR
|
||||
[std] => 2022-11-05T22:08:00
|
||||
[etd] => 2022-11-05T22:08:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => A
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTLL
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Abbey Wood
|
||||
[crs] => ABW
|
||||
[tiploc] => ABWDXR
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[4] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057919347
|
||||
[uid] => O19347
|
||||
[trainid] => 1T92
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Great Western Railway
|
||||
[operatorCode] => GW
|
||||
[std] => 2022-11-05T22:10:00
|
||||
[etd] => 2022-11-05T22:10:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => TD
|
||||
[platform] => 6
|
||||
[platformIsHidden] => 1
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTON
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Heathrow Airport T5
|
||||
[crs] => HWV
|
||||
[tiploc] => HTRWTM5
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[5] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057051492
|
||||
[uid] => F51492
|
||||
[trainid] => 9U08
|
||||
[rsid] => XR135500
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Elizabeth Line
|
||||
[operatorCode] => XR
|
||||
[std] => 2022-11-05T22:18:00
|
||||
[etd] => 2022-11-05T22:18:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => A
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTLL
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Abbey Wood
|
||||
[crs] => ABW
|
||||
[tiploc] => ABWDXR
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[6] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057919350
|
||||
[uid] => O19350
|
||||
[trainid] => 1T93
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Great Western Railway
|
||||
[operatorCode] => GW
|
||||
[std] => 2022-11-05T22:25:00
|
||||
[etd] => 2022-11-05T22:25:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => 7
|
||||
[platformIsHidden] => 1
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTON
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Heathrow Airport T5
|
||||
[crs] => HWV
|
||||
[tiploc] => HTRWTM5
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[7] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057051497
|
||||
[uid] => F51497
|
||||
[trainid] => 9U10
|
||||
[rsid] => XR136000
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Elizabeth Line
|
||||
[operatorCode] => XR
|
||||
[std] => 2022-11-05T22:28:00
|
||||
[etd] => 2022-11-05T22:28:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => A
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTLL
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Abbey Wood
|
||||
[crs] => ABW
|
||||
[tiploc] => ABWDXR
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[8] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057051502
|
||||
[uid] => F51502
|
||||
[trainid] => 9U12
|
||||
[rsid] => XR136500
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Elizabeth Line
|
||||
[operatorCode] => XR
|
||||
[std] => 2022-11-05T22:38:00
|
||||
[etd] => 2022-11-05T22:38:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => A
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTLL
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Abbey Wood
|
||||
[crs] => ABW
|
||||
[tiploc] => ABWDXR
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
[9] => stdClass Object
|
||||
(
|
||||
[rid] => 202211057919351
|
||||
[uid] => O19351
|
||||
[trainid] => 1T94
|
||||
[sdd] => 2022-11-05
|
||||
[operator] => Great Western Railway
|
||||
[operatorCode] => GW
|
||||
[std] => 2022-11-05T22:40:00
|
||||
[etd] => 2022-11-05T22:40:00
|
||||
[departureType] => Forecast
|
||||
[departureSource] => Darwin
|
||||
[platform] => 6
|
||||
[platformIsHidden] => 1
|
||||
[origin] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => London Paddington
|
||||
[crs] => PAD
|
||||
[tiploc] => PADTON
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[destination] => stdClass Object
|
||||
(
|
||||
[location] => Array
|
||||
(
|
||||
[0] => stdClass Object
|
||||
(
|
||||
[locationName] => Heathrow Airport T5
|
||||
[crs] => HWV
|
||||
[tiploc] => HTRWTM5
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
[category] => OO
|
||||
[activities] => TB
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
@ -3,7 +3,7 @@
|
||||
function sendInput($title,$body) {
|
||||
|
||||
// Get API Key for git.fjla.uk
|
||||
require '/srv/php-keys/athena/gitea.php';
|
||||
require '/srv/keys/athena/apiKeys.php';
|
||||
|
||||
// Set httpHeaders
|
||||
$httpHeaders = array(
|
||||
|
@ -1,2 +1,2 @@
|
||||
<?php
|
||||
$athenaVersion = '0.4.3-alpha';
|
||||
$athenaVersion = '0.4.4-alpha';
|
||||
|
157
styles/style.css
@ -1,11 +1,19 @@
|
||||
/* COLOR VARS */
|
||||
:root {
|
||||
--main-bg-color: #aac4ee;
|
||||
--accent-color: #7fa7e6;
|
||||
--overlay-color: #7fa6e6de;
|
||||
--main-text-color: #016ec7;
|
||||
--link-color: azure;
|
||||
--link-visited-color: azure;
|
||||
}
|
||||
body {
|
||||
background-color: #aac4ee;
|
||||
color: #0280e5;
|
||||
background-color: var(--main-bg-color);
|
||||
color: var(--main-text-color);
|
||||
font-family: sans-serif;
|
||||
text-align: center;
|
||||
padding-bottom: 60px; /*Footer height*/
|
||||
}
|
||||
|
||||
.titleimg {
|
||||
width: 80%;
|
||||
padding-top: 50px;
|
||||
@ -13,7 +21,6 @@ body {
|
||||
max-width: 500px;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
.lookup-box {
|
||||
text-align: center;
|
||||
border: black;
|
||||
@ -25,7 +32,6 @@ body {
|
||||
text-transform: uppercase;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
.form-text-small {
|
||||
text-align: center;
|
||||
border: black;
|
||||
@ -35,13 +41,7 @@ body {
|
||||
font-size: 18px;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {
|
||||
.form-text-small {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {.form-text-small{width: 50%}}
|
||||
.form-text-large {
|
||||
text-align: left;
|
||||
border: black;
|
||||
@ -52,40 +52,27 @@ body {
|
||||
font-size: 16px;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {
|
||||
.form-text-large {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {.form-text-large{width: 50%}}
|
||||
.form-info {
|
||||
color: #0280e5;
|
||||
color: var(--main-text-color);
|
||||
font-size: 17px;
|
||||
font-weight: bolder;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.text-description {
|
||||
display: inline-block;
|
||||
width: 80%;
|
||||
color: #0280e5;
|
||||
color: var(--main-text-color);
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {
|
||||
.text-description{
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 600px) {.text-description{width: 50%}}
|
||||
.lookup-button {
|
||||
background-color: #3c78d8;
|
||||
color: #f6f5f4;
|
||||
color: var(--link-color);
|
||||
border: none;
|
||||
border-radius: 18px;
|
||||
font-size: 16px;
|
||||
@ -96,7 +83,6 @@ body {
|
||||
margin-bottom: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.actionbutton {
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
@ -104,101 +90,78 @@ body {
|
||||
background-color: #3c78d8;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
color: #f6f5f4;
|
||||
color: var(--link-color);
|
||||
padding: 7px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.inlinelink {
|
||||
text-decoration: underline;
|
||||
color: #3c78d8;
|
||||
color: var(--link-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* START MENU STYLE */
|
||||
|
||||
/* Menu Button */
|
||||
.dropbtn {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background-color: #7fa7e6;
|
||||
color: white;
|
||||
padding: 12px;
|
||||
font-size: 12px;
|
||||
box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
|
||||
border: none;
|
||||
border-bottom-left-radius: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dropbtn:hover, .dropbtn:focus {
|
||||
background-color: #0280e5;
|
||||
}
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
#menubar_hamburger {
|
||||
position: absolute;
|
||||
top: -80px;
|
||||
/*right: -190px;*/
|
||||
left: 150px;
|
||||
background-color: #7fa7e6;
|
||||
min-width: 160px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 1;
|
||||
top: 2px;
|
||||
right: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* Links inside the dropdown */
|
||||
.dropdown-content a {
|
||||
color: white;
|
||||
padding: 12px 16px;
|
||||
text-decoration: none;
|
||||
.sidebar_control {
|
||||
background-color: transparent;
|
||||
color: var(--link-color);
|
||||
border: none;
|
||||
font-family: sans-serif;
|
||||
font-size: larger;
|
||||
}
|
||||
#sidebar_open_short {display: block;}
|
||||
#sidebar_close_short {
|
||||
display: none;
|
||||
font-size: x-large;
|
||||
}
|
||||
#sidebar {
|
||||
position: fixed;
|
||||
top: 40px;
|
||||
right: 0;
|
||||
margin: auto;
|
||||
display: block;
|
||||
border-bottom: 1px solid black;
|
||||
max-width: 250px;
|
||||
width: 0;
|
||||
border-top-left-radius: 45px;
|
||||
border-bottom-left-radius: 45px;
|
||||
background-color: var(--overlay-color);
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
/*Final item of the dropdown has bottom border*/
|
||||
.dropdown-first {
|
||||
border-top: 1px solid black;
|
||||
#sidebar a {
|
||||
padding: 8px 8px 8px 8px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
font-family: indie-flower, sans-serif;
|
||||
font-weight: 300;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
font-size: 25px;
|
||||
color: var(--link-color);
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
/* Change color of dropdown links on hover */
|
||||
.dropdown-content a:hover {background-color: #ddd;}
|
||||
|
||||
/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */
|
||||
.show {display:block;}
|
||||
|
||||
/* END MENU STYLE */
|
||||
|
||||
/* Footer Styles */
|
||||
|
||||
/* Footer Styles */
|
||||
footer {
|
||||
background-color: #7fa7e6;
|
||||
background-color: var(--accent-color);
|
||||
color: white;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
footer a {
|
||||
text-decoration: underline;
|
||||
color: white;
|
||||
}
|
||||
|
||||
footer a:visited {
|
||||
color: white;
|
||||
}
|
||||
|
||||
footer a:hover {
|
||||
color: beige;
|
||||
}
|