253 lines
10 KiB
PHP
253 lines
10 KiB
PHP
<?php
|
|
/** *****************************
|
|
* Ideenmelder
|
|
* Autor: Walter Hupfeld, Hamm
|
|
* E-Mail: info@hupfeld-software.de
|
|
* Version: 1.0
|
|
* Datum: 18.05.2021
|
|
******************************** */
|
|
|
|
session_start();
|
|
|
|
if (!isset($_SESSION['district'])) { header("Location: start.php");}
|
|
$strDistrict=$_SESSION['district'];
|
|
require("config.php");
|
|
if ($strDistrict=="unkown") { header("Location: start.php");}
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="author" content="Walter Hupfeld, info@hupfeld-software.de">
|
|
<meta name="description" content="Georeferenzieter Ideenmelder">
|
|
|
|
<link rel="stylesheet" href="css/bootstrap.min.css" />
|
|
<link rel="stylesheet" href="css/style.css" />
|
|
<link rel="stylesheet" href="css/leaflet.css" />
|
|
<link rel="stylesheet" href="css/leaflet.awesome-markers.css" />
|
|
<link rel="stylesheet" href="css/font-awesome.min.css">
|
|
<link rel="stylesheet" href="vendor/DataTables/DataTables-2.0.2/css/dataTables.dataTables.min.css">
|
|
<link rel="stylesheet" href="vendor/DataTables/DataTables-2.0.2/css/dataTables.bootstrap4.min.css">
|
|
<link rel="stylesheet" href="css/jquery.fancybox.min.css" />
|
|
|
|
<title>Eintragsliste</title>
|
|
|
|
<script src="js/jquery.min.js"></script>
|
|
<script src="js/leaflet.js"></script>
|
|
<script src="js/leaflet.ajax.js"></script>
|
|
<script src="js/leaflet.awesome-markers.js"></script>
|
|
<script src="vendor/DataTables/DataTables-2.0.2/js/dataTables.min.js"></script>
|
|
<script src="vendor/DataTables/DataTables-2.0.2/js/dataTables.bootstrap4.min.js"></script>
|
|
<script src="js/jquery.fancybox.min.js"></script>
|
|
<script src="js/jquery.slim.min.js"></script>
|
|
<script src="js/popper.min.js"></script>
|
|
<script src="js/bootstrap.min.js"></script>
|
|
|
|
|
|
<style>
|
|
#whmap { display:none; position:absolute; top:150px; left:400px; }
|
|
#detailmap { height:450px; width:400px;}
|
|
.comment { border-top: 1px solid darkgrey; padding: 3px 0 3px 0; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<!-- Navbar -->
|
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
|
|
<?php if (!$boolSidebar): ?>
|
|
<a href="start.php"><img class="logo_navbar" src="<?=$strLogo?>" alt="Logo"></a>
|
|
<?php endif; ?>
|
|
<a class="navbar-brand" href="#"><?= $strTitle ?> » <?=$strDistrictTitle?></a>
|
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbars" aria-controls="navbars" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbars">
|
|
<ul class="navbar-nav mr-auto">
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="index.php?ref=1">Karte</a>
|
|
</li>
|
|
<li class="nav-item active">
|
|
<a class="nav-link" href="liste.php">Liste <span class="sr-only">(current)</span></a>
|
|
</li>
|
|
<!-- District -->
|
|
<?php if ($boolDistrictSelection): ?>
|
|
<form method="GET" action="index.php">
|
|
<select name="d" style="float:left;margin-top:0.5em;margin-right:0.5em;" onchange="this.form.submit()">
|
|
<?php foreach ($arrDistrict as $key => $strMTitle):
|
|
$strActive = ($strDistrict==$key) ? "selected=\"selected\"" : ""; ?>
|
|
<option value="<?=$key?>" <?=$strActive?>><?=$strMTitle?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</form>
|
|
<?php endif; ?>
|
|
</ul>
|
|
</ul>
|
|
|
|
<div>
|
|
<ul class="navbar-nav mr-auto right">
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="impressum.php">Impressum</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="datenschutz.php">Datenschutzerklärung</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="login.php">Login</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
<!-- Ende Navbar -->
|
|
|
|
<div class="container-fluid main" style="max-width:1360px;">
|
|
<p> </p>
|
|
<h2>Liste der Einträge für <?=$strDistrictTitle?></h2>
|
|
|
|
<table id="list" class="display">
|
|
<thead>
|
|
<tr><th>Nr.</th><th>Name</th>
|
|
<?= ($boolUserinfo) ? "<th>Alter</th><th>Verkehrsmittel</th>" : ""; ?>
|
|
<th>Topic</th>
|
|
<th>Beschreibung</th>
|
|
<?= ($boolComment) ? "<th>Kommentare</th>" : "" ?>
|
|
<?= ($boolDefect) ? "<th>Mängelkategorie</th>" : ""; ?>
|
|
<?= ($boolRating) ? "<th><i class=\"fa fa-thumbs-up\"></i></th><th><i class=\"fa fa-thumbs-down\"></i></th>" : "" ?>
|
|
<th>Datum</th>
|
|
<?= ($boolUpload) ? "<th>Bild</th>": "" ?>
|
|
<th>Ort</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<?php
|
|
|
|
$strSQL="SELECT loc.*,f.filename
|
|
FROM location loc LEFT JOIN files f ON loc.id=f.loc_id
|
|
WHERE district='$strDistrict'
|
|
ORDER BY created_at DESC";
|
|
$result = $db->query($strSQL);
|
|
$numCounter=1;
|
|
$arrPoint = array();
|
|
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
|
|
$numDatum= strtotime($row['created_at']);
|
|
$id=$row['id'];
|
|
$datum= date("d.m.Y",$numDatum);
|
|
$arrPoint[]= array ('id'=>$id,'lat'=>$row['lat'],'lng'=>$row['lng'],$row['description']);
|
|
$boolShow=((!$boolApprove) || ($boolApprove && $row['approval']));
|
|
echo "<tr>";
|
|
//echo "<td>".$numCounter." <a href='mailto:".$contactEmail."?subject=Ideenmelder Eintrag ".$id."'><i class='fa fa-envelope-o'></i>"."</td>";
|
|
echo "<td>".$id."</td>";
|
|
echo "<td>". stripslashes($row['username']) ."</td>";
|
|
if ($boolUserinfo) {
|
|
echo "<td>".$row['age']."</td>";
|
|
echo "<td>".$row['transport']."</td>";
|
|
}
|
|
echo "<td>".$arrIcon[$row['topic']]." ".$arrTopic[$row['topic']]."</td>";
|
|
if ($boolShow) {
|
|
echo "<td>" . nl2br(stripslashes($row['description']))."</td>";
|
|
} else {
|
|
echo "<td class='not_approved'>Freigabe erfolgt in Kürze.</td>";
|
|
}
|
|
if ($boolComment) {
|
|
echo "<td>";
|
|
$strSQL = "SELECT username,comment,created_at FROM comment WHERE loc_id=".$id;
|
|
$comments = $db->query($strSQL);
|
|
while ($comment = $comments->fetch(PDO::FETCH_ASSOC)) {
|
|
echo "<div class='comment'>";
|
|
echo "<em>".$comment['username']." schrieb am ";
|
|
$numDatum = strtotime($comment['created_at']);
|
|
$strDatum = date("d.m.Y",$numDatum);
|
|
echo $strDatum."</em><br>";
|
|
|
|
echo nl2br(stripslashes($comment['comment']));
|
|
echo "</div>";
|
|
}
|
|
echo "</td>";
|
|
}
|
|
if ($boolDefect) {
|
|
$strDefect = (isset($row['defect']) && $row['defect']>=0) ? $arrDefect[$row['defect']] : "";
|
|
// Hindenismelder - default Poller - keine leere Eingabe
|
|
echo "<td>".$strDefect."</td>";
|
|
}
|
|
if ($boolRating) {
|
|
echo "<td>".$row['thumb_ups']."</td>";
|
|
echo "<td>".$row['thumb_downs']."</td>";
|
|
}
|
|
echo "<td>".$datum."</td>";
|
|
if ($boolUpload) {
|
|
if ($boolShow) {
|
|
echo "<td>";
|
|
if (isset($row['filename'])) {
|
|
echo "<a href='images/".$row['filename']."' data-fancybox data-caption='".$strDefect."'>";
|
|
echo "<img style='width:120px' src='images/".$row['filename']."'></a>";
|
|
}
|
|
echo "</td>";
|
|
} else {echo "<td></td>";}
|
|
}
|
|
echo "<td><a class='maplink' name='".$id."' href='#'>Karte</a><!--".round($row['lat'],4)." / ".round($row['lng'],4)."--></td>";
|
|
echo "</tr>\n";
|
|
$numCounter++;
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
<a class="btn btn-primary" href="index.php?ref=1">zurück</a>
|
|
</div>
|
|
|
|
<div id="whmap">
|
|
<div id="whmap-header"> <span id="close" type="button" class="close right text-danger">
|
|
<i class="fa fa-window-close"></i>
|
|
</span>
|
|
</div>
|
|
<div id="detailmap"></div>
|
|
</div>
|
|
|
|
</body>
|
|
<script>
|
|
jQuery(document).ready(function(){
|
|
|
|
|
|
let dataTable = new DataTable(
|
|
"#list",
|
|
{ language: {url: 'vendor/DataTables/de_DE.json'},
|
|
lengthMenu: [ [10, 25, 50, -1], [10, 25, 50, 'Alle'] ]
|
|
});
|
|
|
|
|
|
<?php
|
|
echo " var points = [];\n";
|
|
foreach ($arrPoint as $point) {
|
|
echo " points[".$point['id']."]= {lat: ".$point['lat'].",lng: ".$point['lng']." }\n";
|
|
}
|
|
?>
|
|
var mymap = L.map('detailmap').setView([51.66, 7.82], 17);
|
|
|
|
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=<?=$mapbox_key?>', {
|
|
maxZoom: 18,
|
|
minZoom:12,
|
|
attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
|
|
'<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
|
|
'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
|
|
id: 'mapbox/streets-v11',
|
|
tileSize: 512,
|
|
zoomOffset: -1
|
|
}).addTo(mymap);
|
|
|
|
$('.maplink').click(function(e){
|
|
$('#whmap').hide();
|
|
$('#whmap').css({'top':e.pageY-90,'left':e.pageX-420});
|
|
$('#whmap').show();
|
|
id = $(this)[0].name;
|
|
console.log(points[id].lat+" "+points[id].lng)
|
|
mymap.setView([points[id].lat,points[id].lng],16);
|
|
L.marker([points[id].lat, points[id].lng], ).addTo(mymap);
|
|
mymap.invalidateSize();
|
|
e.preventDefault();
|
|
});
|
|
$('#close').click(function(e){
|
|
$('#whmap').hide();
|
|
});
|
|
});
|
|
|
|
</script>
|
|
</html>
|