Compare commits

..
7 changed files with 80 additions and 18 deletions

No files matched your search

+5 -6
View File
@@ -29,17 +29,16 @@ div.mapItem>div.title>p.title {
div.mapItem>div.imgContainer { div.mapItem>div.imgContainer {
width: 100%; width: 100%;
padding-top: 50%; padding-top: 50%;
background: #cccccc; background-color: #cccccc;
} background-position: center;
background-repeat: no-repeat;
div.mapItem>div.imgContainer>img { background-size: cover;
width: 100%;
margin-top: -50%
} }
div.mapItem>div.inner { div.mapItem>div.inner {
background-color: #eeeeee; background-color: #eeeeee;
padding: 10px 8px; padding: 10px 8px;
box-sizing: border-box;
} }
div.mapItem>div.inner>div.info { div.mapItem>div.inner>div.info {
+2 -2
View File
@@ -65,8 +65,8 @@ class Mail
$mailer->Mailer = 'mail'; $mailer->Mailer = 'mail';
} }
$mailer->setFrom($_ENV['MAIL_FROM'], 'MapGuesser'); $mailer->setFrom($_ENV['MAIL_FROM'], $_ENV['APP_NAME']);
$mailer->addReplyTo($_ENV['MAIL_FROM'], 'MapGuesser'); $mailer->addReplyTo($_ENV['MAIL_FROM'], $_ENV['APP_NAME']);
$mailer->Sender = !empty($_ENV['MAIL_BOUNCE']) ? $_ENV['MAIL_BOUNCE'] : $_ENV['MAIL_FROM']; $mailer->Sender = !empty($_ENV['MAIL_BOUNCE']) ? $_ENV['MAIL_BOUNCE'] : $_ENV['MAIL_FROM'];
$mailer->Subject = $this->subject; $mailer->Subject = $this->subject;
+5
View File
@@ -45,6 +45,11 @@ class RouteCollection
{ {
$groupNumber = count($uri); $groupNumber = count($uri);
// response to HEAD request with the GET content
if ($method === 'head') {
$method = 'get';
}
if (!isset($this->searchTable[$method][$groupNumber])) { if (!isset($this->searchTable[$method][$groupNumber])) {
return null; return null;
} }
+1 -1
View File
@@ -15,7 +15,7 @@ $jsFiles = [
<?php require ROOT . '/views/templates/main_header.php'; ?> <?php require ROOT . '/views/templates/main_header.php'; ?>
<header class="small"> <header class="small">
<h1> <h1>
<a href="/maps" title="Back to playable maps"> <a href="/" title="<?= $_ENV['APP_NAME'] ?>">
<img class="inline" width="1em" height="1em" src="<?= $_ENV['STATIC_ROOT'] ?>/img/icon.svg?rev=<?= REVISION ?>"><!-- <img class="inline" width="1em" height="1em" src="<?= $_ENV['STATIC_ROOT'] ?>/img/icon.svg?rev=<?= REVISION ?>"><!--
--><span><?= $_ENV['APP_NAME'] ?></span> --><span><?= $_ENV['APP_NAME'] ?></span>
</a> </a>
+1 -1
View File
@@ -10,7 +10,7 @@ $jsFiles = [
<?php require ROOT . '/views/templates/main_header.php'; ?> <?php require ROOT . '/views/templates/main_header.php'; ?>
<header class="small"> <header class="small">
<h1> <h1>
<a href="/maps" title="Back to playable maps"> <a href="/" title="<?= $_ENV['APP_NAME'] ?>">
<img class="inline" width="1em" height="1em" src="<?= $_ENV['STATIC_ROOT'] ?>/img/icon.svg?rev=<?= REVISION ?>"><!-- <img class="inline" width="1em" height="1em" src="<?= $_ENV['STATIC_ROOT'] ?>/img/icon.svg?rev=<?= REVISION ?>"><!--
--><span><?= $_ENV['APP_NAME'] ?></span> --><span><?= $_ENV['APP_NAME'] ?></span>
</a> </a>
+64 -6
View File
@@ -5,7 +5,6 @@ $cssFiles = [
?> ?>
<?php require ROOT . '/views/templates/main_header.php'; ?> <?php require ROOT . '/views/templates/main_header.php'; ?>
<?php require ROOT . '/views/templates/header.php'; ?> <?php require ROOT . '/views/templates/header.php'; ?>
<h2>Playable maps</h2>
<div id="mapContainer"> <div id="mapContainer">
<?php foreach ($maps as $map): ?> <?php foreach ($maps as $map): ?>
<div class="mapItem"> <div class="mapItem">
@@ -64,21 +63,80 @@ $cssFiles = [
(function () { (function () {
const GOOGLE_MAPS_JS_API_KEY = '<?= $_ENV['GOOGLE_MAPS_JS_API_KEY'] ?>'; const GOOGLE_MAPS_JS_API_KEY = '<?= $_ENV['GOOGLE_MAPS_JS_API_KEY'] ?>';
var Maps = {
innerDivs: null,
addStaticMaps: function () {
var imgContainers = document.getElementById('mapContainer').getElementsByClassName('imgContainer'); var imgContainers = document.getElementById('mapContainer').getElementsByClassName('imgContainer');
for (var i = 0; i < imgContainers.length; i++) { for (var i = 0; i < imgContainers.length; i++) {
var imgContainer = imgContainers[i]; var imgContainer = imgContainers[i];
var img = document.createElement('img'); var imgSrc = 'https://maps.googleapis.com/maps/api/staticmap?size=350x175&' +
img.src = 'https://maps.googleapis.com/maps/api/staticmap?size=350x175&' +
'scale=' + (window.devicePixelRatio >= 2 ? 2 : 1) + '&' + 'scale=' + (window.devicePixelRatio >= 2 ? 2 : 1) + '&' +
'visible=' + imgContainer.dataset.boundSouthLat + ',' + imgContainer.dataset.boundWestLng + '|' + 'visible=' + imgContainer.dataset.boundSouthLat + ',' + imgContainer.dataset.boundWestLng + '|' +
imgContainer.dataset.boundNorthLat + ',' + imgContainer.dataset.boundEastLng + imgContainer.dataset.boundNorthLat + ',' + imgContainer.dataset.boundEastLng +
'&key=' + GOOGLE_MAPS_JS_API_KEY; '&key=' + GOOGLE_MAPS_JS_API_KEY;
img.alt = 'Map area';
imgContainer.appendChild(img); imgContainer.style.backgroundImage = 'url("' + imgSrc + '")';
} }
},
initializeInnerDivs: function () {
Maps.innerDivs = document.getElementById('mapContainer').getElementsByClassName('inner');
for (var i = 0; i < Maps.innerDivs.length; i++) {
var inner = Maps.innerDivs[i];
var boundingClientRect = inner.getBoundingClientRect();
inner.defaultHeight = boundingClientRect.height;
}
},
calculateInnerDivHeights: function () {
var currentY;
var rows = [];
for (var i = 0; i < Maps.innerDivs.length; i++) {
var inner = Maps.innerDivs[i];
var boundingClientRect = inner.getBoundingClientRect();
if (currentY !== boundingClientRect.y) {
rows.push([]);
}
rows[rows.length - 1].push(inner);
currentY = boundingClientRect.y;
}
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var maxHeight = 0;
for (var j = 0; j < row.length; j++) {
var inner = row[j];
if (inner.defaultHeight > maxHeight) {
maxHeight = inner.defaultHeight;
}
}
for (var j = 0; j < row.length; j++) {
var inner = row[j];
inner.style.height = maxHeight + 'px';
}
}
}
};
Maps.addStaticMaps();
Maps.initializeInnerDivs();
Maps.calculateInnerDivHeights();
window.onresize = function () {
Maps.calculateInnerDivHeights();
};
})(); })();
</script> </script>
<?php if ($isAdmin): ?> <?php if ($isAdmin): ?>
+2 -2
View File
@@ -12,7 +12,7 @@ if (!empty($_ENV['DEV'])) {
Container::$routeCollection = new MapGuesser\Routing\RouteCollection(); Container::$routeCollection = new MapGuesser\Routing\RouteCollection();
Container::$routeCollection->get('index', '', [MapGuesser\Controller\HomeController::class, 'getIndex']); Container::$routeCollection->get('index', '', [MapGuesser\Controller\MapsController::class, 'getMaps']);
Container::$routeCollection->group('login', function (MapGuesser\Routing\RouteCollection $routeCollection) { Container::$routeCollection->group('login', function (MapGuesser\Routing\RouteCollection $routeCollection) {
$routeCollection->get('login', '', [MapGuesser\Controller\LoginController::class, 'getLoginForm']); $routeCollection->get('login', '', [MapGuesser\Controller\LoginController::class, 'getLoginForm']);
$routeCollection->post('login-action', '', [MapGuesser\Controller\LoginController::class, 'login']); $routeCollection->post('login-action', '', [MapGuesser\Controller\LoginController::class, 'login']);
@@ -35,7 +35,7 @@ Container::$routeCollection->group('profile', function (MapGuesser\Routing\Route
$routeCollection->get('profile', '', [MapGuesser\Controller\UserController::class, 'getProfile']); $routeCollection->get('profile', '', [MapGuesser\Controller\UserController::class, 'getProfile']);
$routeCollection->post('profile-action', '', [MapGuesser\Controller\UserController::class, 'saveProfile']); $routeCollection->post('profile-action', '', [MapGuesser\Controller\UserController::class, 'saveProfile']);
}); });
Container::$routeCollection->get('maps', 'maps', [MapGuesser\Controller\MapsController::class, 'getMaps']); //Container::$routeCollection->get('maps', 'maps', [MapGuesser\Controller\MapsController::class, 'getMaps']);
Container::$routeCollection->group('game', function (MapGuesser\Routing\RouteCollection $routeCollection) { Container::$routeCollection->group('game', function (MapGuesser\Routing\RouteCollection $routeCollection) {
$routeCollection->get('game', '{mapId}', [MapGuesser\Controller\GameController::class, 'getGame']); $routeCollection->get('game', '{mapId}', [MapGuesser\Controller\GameController::class, 'getGame']);
$routeCollection->get('game-json', '{mapId}/json', [MapGuesser\Controller\GameController::class, 'getGameJson']); $routeCollection->get('game-json', '{mapId}/json', [MapGuesser\Controller\GameController::class, 'getGameJson']);