From 7abd8f46c440f3b4aa15eb98e3b0afa724750123 Mon Sep 17 00:00:00 2001 From: Karsten Siegmund Date: Mon, 22 Jan 2024 21:04:20 +0100 Subject: [PATCH 1/7] javascript, berechnet Schicht-Enddatum via Checkbox --- html/AdminDienste.php | 21 +++++++++++++-------- html/CreateHelfer.php | 1 - html/SQL.php | 5 ++--- html/js/helferdb.js | 22 ++++++++++++++++++++++ 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/html/AdminDienste.php b/html/AdminDienste.php index c70c6c3..33dd098 100644 --- a/html/AdminDienste.php +++ b/html/AdminDienste.php @@ -19,7 +19,7 @@ if ($AdminStatus != 1) { - + @@ -195,6 +195,11 @@ echo "

+

@@ -319,23 +324,23 @@ echo "

  • Helferdaten geändert
  • "; 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"; diff --git a/html/js/helferdb.js b/html/js/helferdb.js index a943637..7d1de4e 100644 --- a/html/js/helferdb.js +++ b/html/js/helferdb.js @@ -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); + 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; From 4f8364d6957802ed5ba081d2e2ce9f74c1966b99 Mon Sep 17 00:00:00 2001 From: Karsten Siegmund Date: Tue, 23 Jan 2024 01:02:50 +0100 Subject: [PATCH 2/7] bug fixes --- html/AdminDienste.php | 41 ++++++++++++++++++++--------------------- html/SQL.php | 2 +- html/js/helferdb.js | 3 ++- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/html/AdminDienste.php b/html/AdminDienste.php index 33dd098..63da178 100644 --- a/html/AdminDienste.php +++ b/html/AdminDienste.php @@ -22,7 +22,7 @@ if ($AdminStatus != 1) { - +
    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."+"; } @@ -272,8 +272,11 @@ if( !isset($DienstID)) -

    - +

    + + + +

    @@ -324,12 +327,12 @@ echo "


    -

    - + > Endzeit von Dauer
    + > Anschlussschicht vorbereiten
    +

    + + + +

    diff --git a/html/SQL.php b/html/SQL.php index f0d36f3..b8014fa 100644 --- a/html/SQL.php +++ b/html/SQL.php @@ -686,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); diff --git a/html/js/helferdb.js b/html/js/helferdb.js index 7d1de4e..ad0f0a3 100644 --- a/html/js/helferdb.js +++ b/html/js/helferdb.js @@ -25,8 +25,9 @@ function setEndDate() 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/,"");; + document.getElementById("Schicht-Bis").value=end.toISOString().replace(/.000Z/,""); } } From 293c30cfaf53d0fcfa0933d6ec9c8ed9cb5dc6fa Mon Sep 17 00:00:00 2001 From: Karsten Siegmund Date: Wed, 24 Jan 2024 16:34:04 +0100 Subject: [PATCH 3/7] konfiguration vor php sessionstart, damit savepath gesetzt werden kann --- html/Admin.php | 2 +- html/AdminAlleSchichten.php | 2 +- html/AdminDienste.php | 2 +- html/AdminHelferUebersicht.php | 2 +- html/AdminMeineSchichten.php | 2 +- html/AdminUserdaten.php | 2 +- html/AlleSchichten.php | 2 +- html/Ausdrucke-alles.php | 2 +- html/Ausdrucke.php | 2 +- html/CreateHelfer.php | 2 +- html/DecodeToken.php | 2 +- html/DetailsSchichten.php | 2 +- html/EmailZuToken.php | 2 +- html/Info.php | 2 +- html/Kalender-all.php | 2 +- html/Kalender.php | 2 +- html/MeineSchichten.php | 2 +- html/ReadLog.php | 2 +- html/TeilnehmerSchichtenAusdruck.php | 2 +- html/TeilnehmerSchichtenAusdruck2.php | 2 +- html/UrlLogin.php | 3 +-- html/Userdaten.php | 2 +- html/index.php | 2 +- 23 files changed, 23 insertions(+), 24 deletions(-) diff --git a/html/Admin.php b/html/Admin.php index a0d729c..57e627d 100644 --- a/html/Admin.php +++ b/html/Admin.php @@ -1,7 +1,7 @@ diff --git a/html/DetailsSchichten.php b/html/DetailsSchichten.php index 92b5665..f653ecf 100644 --- a/html/DetailsSchichten.php +++ b/html/DetailsSchichten.php @@ -1,7 +1,7 @@ diff --git a/html/Kalender-all.php b/html/Kalender-all.php index cdbe680..05d0ded 100644 --- a/html/Kalender-all.php +++ b/html/Kalender-all.php @@ -1,6 +1,6 @@ Date: Fri, 26 Jan 2024 02:27:09 +0100 Subject: [PATCH 4/7] typo --- html/Kalender-all.php | 7 ++++--- html/Kalender.php | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/html/Kalender-all.php b/html/Kalender-all.php index 05d0ded..a20a0e3 100644 --- a/html/Kalender-all.php +++ b/html/Kalender-all.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"} ]; diff --git a/html/Kalender.php b/html/Kalender.php index 2e6cd9b..dc6e0a6 100644 --- a/html/Kalender.php +++ b/html/Kalender.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"} ]; From fc5c15a2c82febc11d139f63fe5337356b6831dd Mon Sep 17 00:00:00 2001 From: Karsten Siegmund Date: Fri, 26 Jan 2024 08:21:59 +0100 Subject: [PATCH 5/7] bugfix double-require --- html/ReadLog.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/html/ReadLog.php b/html/ReadLog.php index cba78f0..baa48a6 100644 --- a/html/ReadLog.php +++ b/html/ReadLog.php @@ -2,7 +2,7 @@ // Login und Admin Status testen. Wenn kein Admin-Status, Weiterleiten auf index.php und beenden require_once 'konfiguration.php'; SESSION_START(); -require 'SQL.php'; +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); From ae656679b0471c4bc593ef794d535510c4129ca9 Mon Sep 17 00:00:00 2001 From: Karsten Siegmund Date: Fri, 26 Jan 2024 11:07:56 +0100 Subject: [PATCH 6/7] auto format-fix --- html/AdminDienste.php | 19 +++++++++++-------- html/js/helferdb.js | 17 ++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/html/AdminDienste.php b/html/AdminDienste.php index 27e75d3..d917fd3 100644 --- a/html/AdminDienste.php +++ b/html/AdminDienste.php @@ -195,9 +195,8 @@ echo "

    diff --git a/html/js/helferdb.js b/html/js/helferdb.js index ad0f0a3..3e011ee 100644 --- a/html/js/helferdb.js +++ b/html/js/helferdb.js @@ -18,17 +18,16 @@ function setEndDate() // 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); + 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(); + 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/,""); - } + 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 From 2e81fe7c4760719fa48926279e7e7d7eb26186ff Mon Sep 17 00:00:00 2001 From: Karsten Siegmund Date: Wed, 31 Jan 2024 19:47:24 +0100 Subject: [PATCH 7/7] multi-installs/php-sessions; nach Helfererstellung zum Login; Kommentar zu fehlender Implementierung weg, die ist inz. da --- bengelsystem_konfiguration.php.template | 2 ++ html/AdminHelferUebersicht.php | 2 +- html/CreateHelfer.php | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bengelsystem_konfiguration.php.template b/bengelsystem_konfiguration.php.template index 796c80a..1492318 100644 --- a/bengelsystem_konfiguration.php.template +++ b/bengelsystem_konfiguration.php.template @@ -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 diff --git a/html/AdminHelferUebersicht.php b/html/AdminHelferUebersicht.php index d097b58..ca40d0a 100644 --- a/html/AdminHelferUebersicht.php +++ b/html/AdminHelferUebersicht.php @@ -68,7 +68,7 @@ if (isset($_POST['DienstSearch'])) { echo "

    "; ?> - +
      Übersicht Helfer und Ihre Schichten (Helfer ohne Schichten werden momentan noch nicht angezeigt)   Übersicht Helfer und Ihre Schichten
    diff --git a/html/CreateHelfer.php b/html/CreateHelfer.php index 3a4b664..fd7241a 100644 --- a/html/CreateHelfer.php +++ b/html/CreateHelfer.php @@ -94,7 +94,7 @@ if (isset($_POST['sent'])) { ?> -

    Hier können Sie sich selbst einen Account als Helfer anlegen.

    +

    Hier können Sie sich selbst einen Account als Helfer anlegen. Danach zum Login