Merge pull request #26 from iridos/admindienste-enddatum-durch-js-und-korrekturen

Admindienste enddatum durch js und korrekturen
This commit is contained in:
Florian Pesth 2024-02-04 16:18:26 +01:00 committed by GitHub
commit 9a93f26da6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 92 additions and 63 deletions

View File

@ -16,6 +16,8 @@ define('TAGE_DAUER', 4);
date_default_timezone_set('Europe/Berlin');
setlocale(LC_TIME, "de_DE.UTF-8");
$start_date = new DateTimeImmutable("2023-05-18");
// das hier setzen, um mehr als eine Instanz der des Bengelsystems mit separaten Accounts laufen zu lassen
//session_save_path("/var/lib/php/sessions");
// Geheimer Schlüssel für die Verschlüsselung von Tokens

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
@ -19,10 +19,10 @@ if ($AdminStatus != 1) {
<link rel="stylesheet" href="css/style_desktop.css" media="screen and (min-width:781px)"/>
<link rel="stylesheet" href="css/style_mobile.css" media="screen and (max-width:780px)"/>
<script src="js/helferdb.js" type="text/javascript"></script>
<meta name="viewport" content="width=480" />
</head>
<body>
<body onload="setEndDate();">
<div style="width: 100%;">
<?php
@ -114,7 +114,7 @@ if (isset($_POST['NewSchicht'])) {
$Temp = $Temp->add($Temp2);
$Bis = $Temp->format('Y-m-d H:i:s');
}
NewSchicht($db_link, $DienstID, $Von, $Bis, $Soll, $Dauer);
NewSchicht($db_link, $DienstID, $Von, $Bis, $Soll, $Dauer, $HelferName);
$SchichtID = LastInsertId($db_link);
//echo "+".$SchichtID."+";
}
@ -195,6 +195,10 @@ echo "<p><noscript><button name='ShowSchichten' value='1'>Schichten Anzeigen</bu
// Aktueller Dienst und dessen Schichten Anzeigen
////////////////////////////////////////////////////////
if (!isset($DienstID)) {
echo "<img src='Bilder/Attention_Sign.svg' width='20px'> Bitte erst Dienst Auswählen </body></html>";
exit;
}
?>
@ -267,8 +271,11 @@ echo "<p><noscript><button name='ShowSchichten' value='1'>Schichten Anzeigen</bu
</td></tr>
</table>
<p><button name="ChangeDienst" value="1">Ändern</button><button name="NewDienst" value="1">Neue</button><button name='DeleteDienst' value='1'>Löschen</button></p>
<p>
<button name="NewDienst" value="1">Dienst anlegen</button>
<button name="ChangeDienst" value="1">Ändern</button>
<button name='DeleteDienst' value='1'>Löschen</button>
</p>
</form>
@ -319,45 +326,45 @@ echo "<p><noscript><button name='ShowSchicht' value='1'>Schicht Anzeigen</button
<table border="0" class='commontable'">
<tr>
<td style="border: 0px solid black;">Von</td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Von" type="datetime-local" value="<?php echo htmlspecialchars($Von ?? '')?>" required>
<input id="Schicht-Von" name="Schicht-Von" type="datetime-local" onKeyUp="setEndDate()" value="<?php echo htmlspecialchars($Von ?? '')?>" required>
</td>
<tr>
<tr>
<td style="border: 0px solid black;">Dauer</td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Dauer" type="time" value="<?php echo htmlspecialchars($Dauer ?? '')?>" required>
<input id="Schicht-Dauer" name="Schicht-Dauer" type="time" onChange="setEndDate()" value="<?php echo htmlspecialchars($Dauer ?? '01:00')?>" required>
</td>
<tr>
</tr>
<tr>
</tr>
<td style="border: 0px solid black;">Bis </td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Bis" type="datetime-local" value="<?php echo htmlspecialchars($Bis ?? '')?>" required>
<input id="Schicht-Bis" name="Schicht-Bis" type="datetime-local" value="<?php echo htmlspecialchars($Bis ?? '')?>" required>
</td>
<tr>
</tr>
<td style="border: 0px solid black;">Soll</td></tr><tr><td style="border: 0px solid black;">
<td style="border: 0px solid black;">Anzahl Helfer (Soll)</td></tr><tr><td style="border: 0px solid black;">
<input name="Schicht-Soll" type="number" min=1 value="<?php echo htmlspecialchars((int)$Soll ?? '')?>" required>
</td>
<tr>
</tr>
</table>
<?php if ($AutomaticBis) { ?>
<input style="width:unset" width = 20 name="Schicht-Automatic-Bis" type="checkbox" checked > Endzeit von Dauer<br>
<?php } else { ?>
<input style="width:unset" width = 20 name="Schicht-Automatic-Bis" type="checkbox" > Endzeit von Dauer<br>
<?php }?>
<?php if ($Anschlussschicht) { ?>
<input style="width:unset" width = 20 name="Schicht-Anschlussschicht" type="checkbox" checked > Anschlussschicht vorbereiten<br>
<?php } else { ?>
<input style="width:unset" width = 20 name="Schicht-Anschlussschicht" type="checkbox" > Anschlussschicht vorbereiten<br>
<?php }?>
<p><button name="NewSchicht" value="1">Neue</button><br>
<button name="ChangeSchicht" value="1">Ändern</button><button name='DeleteSchicht' value='1'>Löschen</button></p>
<input style="width:unset" width=20 id="Schicht-Automatic-Bis" name="Schicht-Automatic-Bis" type="checkbox" onclick="setEndDate()" <?php
if ($AutomaticBis) {
echo "checked";
}
?> > Endzeit von Dauer<br>
<input style="width:unset" width=20 id="Schicht-Anschlussschicht" name="Schicht-Anschlussschicht" type="checkbox" <?php
if ($Anschlussschicht) {
echo "checked";
}
?> > Anschlussschicht vorbereiten<br>
<p>
<button name="NewSchicht" value="1">Schicht anlegen</button>
<button name="ChangeSchicht" value="1">Ändern</button>
<button name='DeleteSchicht' value='1'>Löschen</button>
</p>
</form>
<button class=back name="BackHelferdaten" value="1" onclick="window.location.href = 'Admin.php';"><b><b>&larrhk;</b></b></button>

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
@ -68,7 +68,7 @@ if (isset($_POST['DienstSearch'])) {
echo "<br><br><table class='commontable' style='page-break-before:always'>";
?>
<tr class="header">
<th><button name="BackHelferdaten" value="1" onclick="window.location.href = 'Admin.php';"><b>&larrhk;</b></button> &nbsp; <b>&Uuml;bersicht Helfer und Ihre Schichten (Helfer ohne Schichten werden momentan noch nicht angezeigt)</b></th>
<th><button name="BackHelferdaten" value="1" onclick="window.location.href = 'Admin.php';"><b>&larrhk;</b></button> &nbsp; <b>&Uuml;bersicht Helfer und Ihre Schichten</b></th>
</tr>
</table>
<table class="commontable collapsible">

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,10 +1,9 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
?>
<!doctype html>
@ -95,7 +94,7 @@ if (isset($_POST['sent'])) {
?>
<p>Hier k&ouml;nnen Sie sich selbst einen Account als Helfer anlegen.</p>
<p>Hier k&ouml;nnen Sie sich selbst einen Account als Helfer anlegen. Danach zum <a href="index.php">Login</a></p>
<form method="post">
<table class="commontable">

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
?>
<!doctype html>

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
?>
<!doctype html>

View File

@ -1,6 +1,6 @@
<?php
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
@ -145,15 +145,16 @@ function colorize (e){ //KS
});
scheduler.config.full_day=false;
scheduler.config.readonly_form = true;
scheduler.config.xml_date="%Y-%m-%d %H:%i"; // deprecated but needed for database format
scheduler.config.first_hour = 0; // only show from this hour on
scheduler.config.first_hour = 7; // only show from this hour on
scheduler.config.last_hour = 24; // last hour
scheduler.setLoadMode("day"); // dynamic loading loads only current day if needed
scheduler.config.details_on_create=true; // ???
scheduler.config.details_on_dblclick=true;
scheduler.i18n.setLocale("de"); // german
scheduler.config.default_date="%l, %d %F"; // %l long day eg Montag,
//scheduler.config.readonly = true; // doesnt show lightbox if true so disabled
scheduler.config.readonly = true; // doesnt show lightbox if true so disabled
scheduler.locale.labels.con_tab = "4-Tage" // for custom time ranges
scheduler.locale.labels.prep_tab = "2-Tage"
@ -185,7 +186,7 @@ function colorize (e){ //KS
scheduler.config.lightbox.sections=[
{name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
{name:"Dienstbeschreibung", height:90, type:"textarea", map_to:"Info" },
{name:"Konakt", height:200, type:"textarea", map_to:"Kontakt" },
{name:"Kontakt", height:200, type:"textarea", map_to:"Kontakt" },
{name:"time", height:72, type:"time", map_to:"auto"}
];

View File

@ -1,6 +1,6 @@
<?php
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
@ -145,15 +145,16 @@ function colorize (e){ //KS
});
scheduler.config.full_day=false;
scheduler.config.readonly_form = true;
scheduler.config.xml_date="%Y-%m-%d %H:%i"; // deprecated but needed for database format
scheduler.config.first_hour = 0; // only show from this hour on
scheduler.config.first_hour = 7; // only show from this hour on
scheduler.config.last_hour = 24; // last hour
scheduler.setLoadMode("day"); // dynamic loading loads only current day if needed
scheduler.config.details_on_create=true; // ???
scheduler.config.details_on_dblclick=true;
scheduler.i18n.setLocale("de"); // german
scheduler.config.default_date="%l, %d %F"; // %l long day eg Montag,
//scheduler.config.readonly = true; // doesnt show lightbox if true so disabled
scheduler.config.readonly = true; // doesnt show lightbox if true so disabled
scheduler.locale.labels.con_tab = "4-Tage" // for custom time ranges
scheduler.locale.labels.prep_tab = "2-Tage"
@ -185,7 +186,7 @@ function colorize (e){ //KS
scheduler.config.lightbox.sections=[
{name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
{name:"Dienstbeschreibung", height:90, type:"textarea", map_to:"Info" },
{name:"Konakt", height:200, type:"textarea", map_to:"Kontakt" },
{name:"Kontakt", height:200, type:"textarea", map_to:"Kontakt" },
{name:"time", height:72, type:"time", map_to:"auto"}
];

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,8 +1,8 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
require 'SQL.php';
SESSION_START();
require_once 'SQL.php';
$db_link = ConnectDB();
require '_login.php';
@ -28,7 +28,6 @@ require '_login.php';
//check for admin status
$HelferID = $_SESSION["HelferID"];
$AdminID = $_SESSION["AdminID"];
require 'SQL.php';
$db_link = mysqli_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK);
DatenbankAufDeutsch($db_link);

View File

@ -129,7 +129,7 @@ function HelferdatenAendern($db_link, $HelferName, $HelferEmail, $HelferHandy, $
} else {
$sql = "UPDATE Helfer SET Name='$HelferName',Email='$HelferEmail',Handy='$HelferHandy',Admin=$HelferIsAdmin,HelferLevel='$HelferLevel' Where HelferId=" . $HelferID;
}
echo $sql;
//echo $sql;
$db_erg = mysqli_query($db_link, $sql);
echo "<li>Helferdaten geändert</li>";
if ($AdminID != 0) {
@ -554,8 +554,7 @@ function ChangeDienst($db_link, $DienstID, $Was, $Wo, $Info, $Leiter, $Gruppe, $
$Gruppe = mysqli_real_escape_string($db_link, $Gruppe);
$HelferLevel = mysqli_real_escape_string($db_link, $HelferLevel); // int (1,2) Teilnehmer oder Dauerhelfer
$sql = "UPDATE Dienst SET Was='" . $Was . "', Wo='" . $Wo . "', Info='" . $Info . "', Leiter=" . $Leiter . ", ElternDienstID=" . $Gruppe . " where DienstID=" . $DienstID;
$sql = "UPDATE Dienst SET Was='{$Was}', Wo='{$Wo}', Info='{$Info}', Leiter={$Leiter}, ElternDienstID={$Gruppe} where DienstID={$DienstID}";
$db_erg = mysqli_query($db_link, $sql);
if (! $db_erg) {
echo "Fehler Change Dienst";
@ -687,7 +686,7 @@ function ChangeSchicht($db_link, $SchichtID, $Von, $Bis, $Soll, $Dauer)
}
}
function NewSchicht($db_link, $DienstID, $Von, $Bis, $Soll, $Dauer)
function NewSchicht($db_link, $DienstID, $Von, $Bis, $Soll, $Dauer, $HelferName)
{
$DienstID = mysqli_real_escape_string($db_link, $DienstID);

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,8 +1,7 @@
<?php
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
require '_crypt.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -1,7 +1,7 @@
<?php
// Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden
SESSION_START();
require_once 'konfiguration.php';
SESSION_START();
require 'SQL.php';
$db_link = ConnectDB();
require '_login.php';

View File

@ -8,6 +8,28 @@ function showPassword(id)
}
}
function setEndDate()
{
// js Date .toISOString automatically converts to UTC marking the string by "Z" at the end
// This is not understood by the browser when setting the value of the string
// UTC is 1h off resulting in a 1h wrong time if the Z is removed
// so we add the "Z" here, then remove it in the end
// this works for my local firefox. There should be a check if there already is a Z
// because maybe browsers also convert to UTC for the internal value
// but I guess in the worst case we have ZZ at the end and the js autofill fails
var checkBox = document.getElementById("Schicht-Automatic-Bis");
if (checkBox.checked == true) {
var start = new Date(document.getElementById("Schicht-Von").value + 'Z');
var delta = new Date("0000-01-01T" + document.getElementById("Schicht-Dauer").value);
var end = new Date(start);
var endHours = start.getHours() + delta.getHours();
end.setHours(endHours);
console.log("Schicht-Von: " + document.getElementById("Schicht-Von").value + 'Z' + " Schicht-Dauer: " + "0000-01-01T" + document.getElementById("Schicht-Dauer").value + "Schicht-Bis: " + end.toISOString().replace(/.000Z/,""));
end.setMinutes(start.getMinutes() + delta.getMinutes());
document.getElementById("Schicht-Bis").value = end.toISOString().replace(/.000Z/,"");
}
}
//// https://www.w3schools.com/howto/howto_js_collapsible.asp
//var coll = document.getElementsByClassName("collapsible");
//var i;