From 2fe4e927ff070717163e1363522dd63f9d840cba Mon Sep 17 00:00:00 2001
From: aschwarz <a.schwarz@polizei.bwl.de>
Date: Mon, 3 Apr 2023 16:35:38 +0200
Subject: [PATCH] Member erfassen

---
 controller/admin_create_member.php            | 279 ++++++++++++++++++
 dashboard/create_member.php                   |  72 +++++
 js/components/admin_create_member.js          | 169 +++++++++++
 templates/modern/dashboard/create_member.html | 229 ++++++++++++++
 templates/modern/dashboard/notenupload.html   |  10 +-
 5 files changed, 754 insertions(+), 5 deletions(-)
 create mode 100644 controller/admin_create_member.php
 create mode 100644 dashboard/create_member.php
 create mode 100644 js/components/admin_create_member.js
 create mode 100644 templates/modern/dashboard/create_member.html

diff --git a/controller/admin_create_member.php b/controller/admin_create_member.php
new file mode 100644
index 0000000..13690cd
--- /dev/null
+++ b/controller/admin_create_member.php
@@ -0,0 +1,279 @@
+<?php
+require_once("../config.inc.php");
+$function = $_POST['function'];
+
+if ($function == 'checkuser') {
+    $mail = $_POST['mail'];
+    
+    if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
+        $mail   = $_POST['mail'];
+        $result = $db->query("SELECT count(*) Anz FROM jumi_chor_saenger WHERE mail = '$mail'");
+        $row    = $result->fetch_array();
+        
+        if ($row['Anz'] == "0") {
+            echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Mailadresse ist noch nicht vorhanden!</div>';
+        } else {
+            echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Mailadresse ist im System bereits vorhanden!</div>';
+        }
+        #}else{
+        # echo ""
+    }
+}
+
+#echo "Funktion: $function";
+if ($function == 'membersave') {
+    $vorname  = trim($_POST['vorname']);
+    $nachname = trim($_POST['nachname']);
+    $mail     = trim($_POST['mail']);
+    $singstimme   = $_POST['singstimme'];
+    $bemerkung   = $db->real_escape_string(stripslashes( $_POST['bemerkung'] ));
+    
+    
+ 
+    
+    $result = $db->query("SELECT count(*) Anz FROM jumi_chor_saenger WHERE mail = '$mail'");
+    $row    = $result->fetch_array();
+    
+    #Fehlercheck
+    if ($row['Anz'] != "0") {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> User ist im System bereits vorhanden!</div>|***|error';
+    }
+    if ($singstimme == '' or $vorname == '' or $nachname == '' or $mail == '') {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es müssen alle Felder ausgefüllt werden!</div>|***|error';
+        exit;
+    }
+    if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Geben Sie eine gültige Mailadresse ein!</div>|***|error';
+        exit;
+    }
+    
+   
+    $sql1 = $db->query("INSERT INTO jumi_chor_saenger ( vorname
+                                                , nachname
+                                                , mail
+                                                , singstimme
+                                                , bemerkung
+                                                )
+                              VALUES
+                                                ( '$vorname'
+                                                , '$nachname'
+                                                , '$mail'
+                                                , '$singstimme'
+                                                , '$bemerkung'
+                                                )
+                            ");
+    $csid  = $db->insert_id;
+    if (!$sql1) {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Insert Member</div>|***|error';
+        exit;
+    }else{
+        echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> S&auml;ngerIn wurde erfasst.</div>|***|success';
+        exit;
+    }
+
+}
+
+/*
+if ($function == 'userupdate') {
+    
+    $vorname  = trim($_POST['vorname']);
+    $nachname = trim($_POST['nachname']);
+    $mail     = trim($_POST['mail']);
+    $rollen   = $_POST['rollen'];
+    $pwdback  = $_POST['pwdback'];
+    $uid      = $_POST['uid'];
+    
+    
+    if (isset($pwdback)) {
+        if ($pwdback == '1') {
+            $pwdback = '1';
+        } else {
+            $pwdback = '0';
+        }
+    } else {
+        $pwdback = '0';
+    }
+    
+    
+    
+    
+    if ($uid == '') {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Die BenutzerID wurde nicht übertragen</div>|***|error';
+        exit;
+    }
+    if ($rollen == '' or $vorname == '' or $nachname == '' or $mail == '') {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es müssen alle Felder ausgefüllt werden!</div>|***|error';
+        exit;
+    }
+    if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Geben Sie eine gültige Mailadresse ein!</div>|***|error';
+        exit;
+    }
+    
+    $error        = 0;
+    
+    if($pwdback == 1){
+      require_once("func_genPwd.php");
+      $password     = generateStrongPassword();
+      $password_md5 = md5($password);
+    }else{
+        $result_pwd = $db->query("SELECT passwort FROM jumi_admin WHERE uid = $uid");
+        $row_pwd    = $result_pwd->fetch_array();
+        $password_md5 = $row_pwd['passwort'];
+    }
+    $sql1 = $db->query("UPDATE jumi_admin 
+                           SET vorname = '$vorname'
+                              ,nachname = '$nachname'
+                              ,mail =  '$mail'
+                              ,passwort = '$password_md5'
+                          WHERE uid = $uid");
+        if (!$sql1) {
+          echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Update User</div>|***|error';
+          exit;
+          $error++;
+        }
+    
+    $sql2 = $db->query("DELETE FROM jumi_admin_rollen_user_zuord WHERE uid = $uid");
+    for ($i = 0; $i < sizeof($rollen); $i++) {
+        $sql2 = $db->query("INSERT INTO jumi_admin_rollen_user_zuord ( rid
+                                                                 , uid
+                                                                 )
+                                VALUES
+                                                                 ( '$rollen[$i]'
+                                                                 , '$uid'
+                                                                 )
+                              ");
+    }
+    if (!$sql2) {
+        echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Insert Rollenzuordnung</div>|***|error';
+        exit;
+        $error++;
+    }
+    
+    
+    if($pwdback == 1){
+        $empfaenger      = "$mail";
+        $betreff         = "Update JU & MI Portal";
+        $text            = "
+               <html>
+               <head>
+               <title>Update JU & MI Portal</title>
+               </head>
+               <body>
+               <font face='Arial' size='2'>
+               Guten Tag $vorname $nachname!<br><br>
+               Sie wurden im JU & MI Portal geändert!<br>
+               Nachfolgend finden Sie Ihre Zugangsdaten:
+               <br>
+               <br>
+               <table>
+               <tr>
+                  <td valign='top'>
+                    <font face='Arial' size='2'>
+                      <b>Benutzerkennung:</b>
+                    </font>
+                  </td>
+                  <td valign='top'>
+                    <font face='Arial' size='2'>
+                      $mail
+                    </font>
+                  </td>
+               </tr>
+               <tr>
+                  <td valign='top'>
+                    <font face='Arial' size='2'>
+                      <b>Passwort:</b>
+                    </font>
+                  </td>
+                  <td valign='top'>
+                    <font face='Arial' size='2'>
+                      $password
+                    </font>
+                  </td>
+               </tr>
+               <tr>
+                  <td valign='top'>
+                    <font face='Arial' size='2'>
+                      <b>Login:</b>
+                    </font>
+                  </td>
+                  <td valign='top'>
+                    <font face='Arial' size='2'>
+                      <a href='http://admin.ju-and-mi.de'>http://admin.ju-and-mi.de</a>
+                    </font>
+                  </td>
+               </tr>
+               </table>
+               <br>
+               Bitte beachten Sie, dass das Passwort zwischen Gro&szlig;- und<br>
+               Kleinschreibung unterscheidet.
+               <p>
+               &Auml;ndern Sie bitte zu Ihrer eigenen Sicherheit das<br>
+               Passwort nach dem ersten Login unter dem Benutzericon in der Kopfleiste.
+               <p>
+               Vielen Dank
+               </body>
+               </html>";
+        $result_absender = $db->query("SELECT wert FROM jumi_parameter WHERE pid = 1");
+        $row_absender    = $result_absender->fetch_array();
+        if ($row_absender['wert'] == '') {
+            $absender = 'info@ju-and-mi.de';
+        } else {
+            $absender = $row_absender['wert'];
+        }
+        $headers = "MIME-Version: 1.0\n";
+        $headers .= "Content-type: text/html; charset=utf-8\n";
+        $headers .= "From: Info JU & MI <$absender>\n";
+        
+        $return = @mail($empfaenger, $betreff, $text, $headers);
+        
+        if (!$return) { // Abfrage ob Mailversand funktioniert hat
+            echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> BenutzerIn wurde aktualisiert. Es konnte allerdings <b>keine Mail</b> verschickt werden!</div>|***|success';
+            exit;
+        } else {
+            echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> BenutzerIn wurde aktualisiert. Eine Mail mit den Zugangsdaten wurde zugestellt.</div>|***|success';
+            exit;
+        }
+    }else{
+      if ($error == 0) {
+            echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> BenutzerIn wurde aktualisiert.</div>|***|success';
+            exit;
+      }else{
+            echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> BenutzerIn wurde  nicht aktualisiert.</div>|***|success';
+            exit;
+      }
+    }
+}
+
+
+if ($function == 'disableuser') {
+    $uid      = $_POST['uid'];
+    
+    $sql1 = $db->query("UPDATE jumi_admin 
+                           SET aktiv = '0'
+                         WHERE uid = $uid");
+    if (!$sql1) {
+          echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Disable User</div>|***|error';
+          exit;
+    }else{
+          echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> BenutzerIn wurde gesperrt.</div>|***|success';
+          exit;
+    }
+}
+
+if ($function == 'enableuser') {
+    $uid      = $_POST['uid'];
+    
+    $sql1 = $db->query("UPDATE jumi_admin 
+                           SET aktiv = '1'
+                         WHERE uid = $uid");
+    if (!$sql1) {
+          echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Enable User</div>|***|error';
+          exit;
+    }else{
+          echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> BenutzerIn wurde aktiviert.</div>|***|success';
+          exit;
+    }
+}
+*/
+?>
\ No newline at end of file
diff --git a/dashboard/create_member.php b/dashboard/create_member.php
new file mode 100644
index 0000000..3a25ddd
--- /dev/null
+++ b/dashboard/create_member.php
@@ -0,0 +1,72 @@
+<?php
+if (!isset($_SESSION)) {
+    session_start();
+}
+/*
+# Fuer debugging
+error_reporting(E_ALL);
+ini_set('display_errors', 1);
+#echo __LINE__."<br>";
+*/
+
+
+include_once '../classes/TestProjektSmarty.class_subdir.php';
+$_SESSION['cur_page'] = $_SERVER['PHP_SELF']; // Fals man Seite direkt aufruft und Autologin funktioniert
+require_once("../config.inc.php");
+$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
+$smarty       = new SmartyAdmin();
+if(!rechte(basename(__FILE__), $uid)){
+ echo "<meta http-equiv=\"refresh\" content=\"0; URL=error.php\">";
+ exit;
+}
+require_once "../language/german.inc.php";
+
+
+
+
+if(isset($_GET['action'])){
+  $action = $_GET['action'];
+}else{
+  $action = '';
+}
+
+if($action == ''){
+/*
+  # Daten aufbereiten für Zurückbutton
+    if(isset($_SESSION["anlegen_vorname"])){
+      $smarty->assign('user_anlegen_vorname', $_SESSION["anlegen_vorname"]);
+    }
+
+    if(isset($_SESSION["anlegen_nachname"])){
+      $smarty->assign('user_anlegen_nachname', $_SESSION["anlegen_nachname"]);
+    }
+
+    if(isset($_SESSION["anlegen_mail"])){
+      $smarty->assign('user_anlegen_mail', $_SESSION["anlegen_mail"]);
+    }
+  # Daten aufbereiten für Zurückbutton ENDE
+*/
+#       if(isset($_GET['edituid']) and $_GET['edituid'] != ''){
+#         # Aus externer Seite edit_user.php
+#         #echo "<br><br><br><br><br><br><br><br>-----------------------------------------------hier";
+#         $uid = $_GET['edituid'];
+#         $smarty->assign('create_edit', $uid);
+#         
+#         $result0 = $db->query("SELECT vorname, nachname, mail
+#                                  FROM jumi_admin
+#                                 WHERE uid = $uid;");
+#         $row0    = $result0->fetch_array();
+#         $smarty->assign('member_anlegen_vorname', $row0['vorname']);
+#         $smarty->assign('member_anlegen_nachname', $row0['nachname']);
+#         $smarty->assign('member_anlegen_mail', $row0['mail']);
+#       }
+#       
+
+
+}
+
+
+
+$smarty->assign('action', "$action");
+$smarty->display("$template/dashboard/$templatename");
+?>
diff --git a/js/components/admin_create_member.js b/js/components/admin_create_member.js
new file mode 100644
index 0000000..1a2b73a
--- /dev/null
+++ b/js/components/admin_create_member.js
@@ -0,0 +1,169 @@
+function checkUser(){
+  var mail = document.getElementById("mail").value;
+        $.ajax({
+            type: 'POST',
+            url: '../controller/admin_create_member.php',
+            data: {
+                'function': 'checkuser',
+                'mail': mail
+            },
+            success: function(result) { //we got the response
+              if(result!=''){
+				$('#msg').show().delay(5000).fadeOut(500);
+                $('#msg').html(result);
+		      }
+            },
+            error: function(xhr, status, exception) {
+                console.log(xhr);
+            }
+        });
+
+}
+
+
+function membersave(){
+  var vorname = document.getElementById("vorname").value;
+  var nachname = document.getElementById("nachname").value;
+  var mail = document.getElementById("mail").value;
+  var bemerkung =tinyMCE.get('bemerkung').getContent()
+
+
+  //var my_data = $("form").serialize();
+
+  //komma getrennte Werte bei Mehrfachauswahl
+  var singstimme = $("#singstimme").val();
+        $.ajax({
+            type: 'POST',
+            url: '../controller/admin_create_member.php',
+            data: {
+                'function': 'membersave',
+                'vorname': vorname,
+                'nachname': nachname,
+                'mail': mail,
+                'singstimme': singstimme,
+                'bemerkung': bemerkung
+            },
+            success: function(result) { //we got the response
+              if(result!=''){
+                var a = result.split('|***|');
+                if(a[1]=="success"){
+                  document.getElementById("vorname").value ="";
+                  document.getElementById("nachname").value ="";
+                  document.getElementById("mail").value ="";
+                  tinymce.get("bemerkung").setContent("");
+                  var elements = document.getElementById("singstimme").options;
+                  for(var i = 0; i < elements.length; i++){
+                    elements[i].selected = false;
+                  }
+                }
+                $('#msg1').show().delay(10000).fadeOut(500);
+                $('#msg1').html(a[0]);
+              }
+            },
+            error: function(xhr, status, exception) {
+                console.log(xhr);
+            }
+        });
+}
+
+/*
+
+function userupdate(uid){
+  var vorname = document.getElementById("vorname").value;
+  var nachname = document.getElementById("nachname").value;
+  var mail = document.getElementById("mail").value;
+  var pwdback = document.getElementById("pwdback");
+
+  if(pwdback.checked == true){
+   var var_pwdback = 1;
+  }else{
+   var var_pwdback = 0;
+  }
+  //var my_data = $("form").serialize();
+
+  //komma getrennte Werte bei Mehrfachauswahl
+  var rollen = $("#rollen").val();
+        $.ajax({
+            type: 'POST',
+            url: '../controller/admin_create_member.php',
+            data: {
+                'function': 'userupdate',
+                'vorname': vorname,
+                'nachname': nachname,
+                'mail': mail,
+                'rollen': rollen,
+                'pwdback': var_pwdback,
+                'uid': uid
+            },
+            success: function(result) { //we got the response
+              if(result!=''){
+                var a = result.split('|***|');
+                if(a[1]=="success"){
+                  $(document).ajaxStop(function(){
+				      setTimeout(() => {  window.location = "edit_user.php"; }, 1000);
+                  });
+                }
+                $('#msg1').show().delay(10000).fadeOut(500);
+                $('#msg1').html(a[0]);
+              }
+            },
+            error: function(xhr, status, exception) {
+                console.log(xhr);
+            }
+        });
+}
+
+function disableuser(uid){
+
+        $.ajax({
+            type: 'POST',
+            url: '../controller/admin_create_member.php',
+            data: {
+                'function': 'disableuser',
+                'uid': uid
+            },
+            success: function(result) { //we got the response
+              if(result!=''){
+                var a = result.split('|***|');
+                if(a[1]=="success"){
+                  $(document).ajaxStop(function(){
+				      setTimeout(() => {  window.location = "edit_user.php"; }, 1000);
+                  });
+                }
+                $('#msg').show().delay(10000).fadeOut(500);
+                $('#msg').html(a[0]);
+              }
+            },
+            error: function(xhr, status, exception) {
+                console.log(xhr);
+            }
+        });
+}
+
+function enableuser(uid){
+
+        $.ajax({
+            type: 'POST',
+            url: '../controller/admin_create_member.php',
+            data: {
+                'function': 'enableuser',
+                'uid': uid
+            },
+            success: function(result) { //we got the response
+              if(result!=''){
+                var a = result.split('|***|');
+                if(a[1]=="success"){
+                  $(document).ajaxStop(function(){
+				      setTimeout(() => {  window.location = "edit_user.php"; }, 1000);
+                  });
+                }
+                $('#msg').show().delay(10000).fadeOut(500);
+                $('#msg').html(a[0]);
+              }
+            },
+            error: function(xhr, status, exception) {
+                console.log(xhr);
+            }
+        });
+}
+*/
\ No newline at end of file
diff --git a/templates/modern/dashboard/create_member.html b/templates/modern/dashboard/create_member.html
new file mode 100644
index 0000000..bb4e85a
--- /dev/null
+++ b/templates/modern/dashboard/create_member.html
@@ -0,0 +1,229 @@
+{if $action == ''}
+<!DOCTYPE html>
+<html lang="de">
+   <head>
+     <title>JU & MI Benutzer erstellen</title>
+      <link rel="stylesheet" href="../jquery/jquery-ui.css">
+      <link rel="stylesheet" href="../jquery/jquery.timepicker.min.css">
+      <meta name="viewport" content="width=device-width, initial-scale=1">
+      <link href="../bootstrap/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
+      <script src="../bootstrap/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
+      <!-- nochmals bootstrap.css mit Erweiterungen vom Dashboard -->
+      <link href="css/styles.css" rel="stylesheet" />
+      <!-- icons in nav-->
+      <script src="js/all.js" crossorigin="anonymous"></script>
+      <script src="../jquery/jquery-3.4.1.min.js"></script>
+      <link rel="stylesheet" href="../bootstrap/node_modules/bootstrap-icons/font/bootstrap-icons.css">
+<style>
+.multiselect-container {
+  position: absolute;
+  list-style-type: none;
+  margin: 5px 0 0 0;
+  width: 100%;
+  padding: 10px 0;
+  border: none;
+  -webkit-box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+  -moz-box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+  box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14); }
+
+.multiselect-container .input-group {
+  margin: 5px; }
+
+.multiselect-container > li {
+  padding: 0;
+  font-size: 14px; }
+
+.multiselect-container > li > a.multiselect-all label {
+  font-weight: 700;
+  color: gray; }
+
+.multiselect-container > li.multiselect-group label {
+  margin: 0;
+  padding: 3px 20px 3px 20px;
+  height: 100%;
+  font-weight: 700; }
+
+.multiselect-container > li.multiselect-group-clickable label {
+  cursor: pointer; }
+
+.multiselect-container > li > a {
+  padding: 5px 0;
+  color: #000;
+  display: block; }
+
+.multiselect-container > li > a > label {
+  display: block;
+  position: relative;
+  padding-left: 20px;
+  margin-bottom: 12px;
+  cursor: pointer;
+  font-size: 16px;
+  font-weight: 500;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none; }
+  .multiselect-container > li > a > label:before {
+    content: "";
+    display: inline-block;
+    position: relative;
+    height: 20px;
+    width: 20px;
+    border: 2px solid rgba(0, 0, 0, 0.2);
+    border-radius: 4px;
+    background-color: transparent;
+    margin-right: 15px;
+    vertical-align: middle; }
+
+.multiselect-container > li.active > a > label:before {
+  font-family: 'fontAwesome';
+  content: "\f00c";
+  color: #fff;
+  background-color: #52de97;
+  border: 0;
+  display: inline-block;
+  padding: 0;
+  line-height: 1.2;
+  padding-left: 2px; }
+
+.multiselect-container > li > a > label.radio, .multiselect-container > li > a > label.checkbox {
+  margin: 0; }
+
+.multiselect-container > li > a > label > input[type=checkbox] {
+  position: absolute;
+  opacity: 0;
+  cursor: pointer;
+  height: 0;
+  width: 0; }
+
+.btn-group > .btn-group:nth-child(2) > .multiselect.btn {
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px; }
+
+.form-inline .multiselect-container label.checkbox, .form-inline .multiselect-container label.radio {
+  padding: 3px 20px 3px 40px; }
+
+.form-inline .multiselect-container li a label.checkbox input[type=checkbox],
+.form-inline .multiselect-container li a label.radio input[type=radio] {
+  margin-left: -20px;
+  margin-right: 0; }
+
+.btn-group {
+  height: 52px;
+  width: calc(100% - 150px); }
+  .btn-group button {
+    border-radius: 4px;
+    background: #fff;
+    -webkit-box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+    -moz-box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+    box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+    padding: 0 10px;
+    text-align: left;
+    position: relative; }
+    .btn-group button:after {
+      position: absolute;
+      top: 50%;
+      right: 20px;
+      -webkit-transform: translateY(-50%);
+      -ms-transform: translateY(-50%);
+      transform: translateY(-50%);
+      color: #999999; }
+    .btn-group button:focus {
+      -webkit-box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+      -moz-box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+      box-shadow: 0px 10px 23px -16px rgba(0, 0, 0, 0.14);
+      padding: 0 10px; }
+
+.sl {
+  color: gray;
+  width: 150px; }
+
+</style>
+   </head>
+   <body class="sb-nav-fixed">
+      <div id="navtop"></div>
+      {literal}
+      <script>
+         $(function(){
+           // im Navbar muss der toggle in der Callbackfunktion definiert werden. Sonst findet jquery getelementbyID nicht
+           $("#navtop").load('navtop.php', null, function(){$.getScript('js/scripts.js');});
+           $("#navleft").load("nav.php");
+           $("#footer").load("footer.php");
+         });
+      </script>
+      {/literal}
+      <div id="layoutSidenav">
+         <!-- Navigation left -->
+         <div id="navleft"></div>
+         <div id="layoutSidenav_content">
+            <main>
+            <!--Anwendung-->
+            <script src="../js/components/admin_create_member.js"></script>
+
+            <div class="container-fluid">
+               <div class="card">
+                  <div class="card-header">
+                     <i class="fas fa-edit me-1"></i>
+                     S&auml;ngerIn erfassen
+                  </div>
+                  <div class="card-body">
+                     <div class="row">
+                        <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
+                           <div class="col-12 col-md-4">Vorname:</div>
+                           <div class="col-12 col-md-8"><input type="text" class="form-control" name="vorname" id="vorname" value="{$member_anlegen_vorname}"></div>
+                        </div>
+                        <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
+                           <div class="col-12 col-md-4">Nachname:</div>
+                           <div class="col-12 col-md-8"><input type="text" class="form-control" name="nachname" id="nachname" value="{$member_anlegen_nachname}"></div>
+                        </div>
+                        <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
+                           <div class="col-12 col-md-4">Mailadresse:</div>
+                           <div class="col-12 col-md-8"><input type="email" class="form-control" name="mail" id="mail" value="{$member_anlegen_mail}" onkeyup="checkUser()"></div>
+                        </div>
+                        <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
+                           <div class="col-12 col-md-4">Singstimme:</div>
+                           <div class="col-12 col-md-8">
+                             <select name="singstimme"class="form-control" id="singstimme">
+                               <option value="1">Sopran</option>
+                               <option value="2">Alt</option>
+                               <option value="3">Tenor</option>
+                               <option value="4">Ba&szlig;</option>
+                             </select>
+                        </div>
+                        <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
+                           <div class="col-12 col-md-4">Bemerkung:</div>
+                           <div class="col-12 col-md-8">
+                <div class="form-group">
+                    <textarea id="bemerkung"></textarea>
+                </div>
+                           </div>
+                        </div>
+                      </div>
+                      <p align='center'>
+                          <button class="col-6 btn btn-primary btn-sm mt-3" id="save" onclick="membersave();">Speichern</button>
+                      </p>
+                  </div>
+               </div>
+            </div>
+            <div id="msg"></div>
+            <div id="msg1"></div>
+            </main>
+<script src="https://cdn.tiny.cloud/1/1rbpdpgs5ibxxotsljroj6rzz4t6v4akerjkdj7tuzdzlic6/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>
+
+<script>
+  tinymce.init({
+    selector: 'textarea#bemerkung',
+    height: 200,
+    skin: 'bootstrap',
+    plugins: 'lists, link',
+    toolbar: 'h1 h2 bold italic strikethrough blockquote bullist numlist backcolor | link | removeformat help',
+    menubar: false,
+  });
+</script>
+            <!-- footer -->
+            <div id="footer"></div>
+         </div>
+      </div>
+   </body>
+</html>
+{/if}
diff --git a/templates/modern/dashboard/notenupload.html b/templates/modern/dashboard/notenupload.html
index 7c3b1af..2eda42f 100644
--- a/templates/modern/dashboard/notenupload.html
+++ b/templates/modern/dashboard/notenupload.html
@@ -70,31 +70,31 @@
                         </div>
                         <div class="card-body">
                            <div class="row">
-                              <div class="row mt-0 mt-sm-4 mb-0 mb-sm-4">
+                              <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
                                  <div class="col-12 col-md-4">Titel:</div>
                                  <div class="col-12 col-md-8">
                                     <input type="text" id="titel" class="form-control rounded-right" required>
                                  </div>
                               </div>
-                              <div class="row mt-0 mt-sm-4 mb-0 mb-sm-4">
+                              <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
                                  <div class="col-12 col-md-4">Verlag:</div>
                                  <div class="col-12 col-md-8">
                                     <input type="text" id="verlag"  class="form-control rounded-right" required">
                                  </div>
                               </div>
-                              <div class="row mt-0 mt-sm-4 mb-0 mb-sm-4">
+                              <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
                                  <div class="col-12 col-md-4">Anzahl Lizenzen:</div>
                                  <div class="col-12 col-md-8">
                                     <input type="text" id="anz_lizenzen"  class="form-control rounded-right" required">
                                  </div>
                               </div>
-                              <div class="row mt-0 mt-sm-4 mb-0 mb-sm-4">
+                              <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
                                  <div class="col-8 col-md-4">Streamlizenz vorhanden:</div>
                                  <div class="col-4 col-md-8">
                                     <input class="form-check-input" type="checkbox" name="streamlizenz" id="streamlizenz" value="1">
                                  </div>
                               </div>
-                              <div class="row mt-0 mt-sm-4 mb-0 mb-sm-4">
+                              <div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
                                  <label for="formFile" class="form-label">
                                     <div class="col-12 col-md-4">PDF:</div>
                                     <div class="col-12col-md-8">