From f7254551bdefb51624b4a26940543235e07db48f Mon Sep 17 00:00:00 2001 From: ulrich@undisclosed <ulrich@ulrich-vaio> Date: Sun, 17 May 2020 11:56:42 +0000 Subject: [PATCH] Nutzer loeschen und Dialog zur Bestaetigung --- web/ui2/data/tpl/dlg-del-conf.tpl | 10 +++++ web/ui2/js/app.js | 56 +++++++++++++++------------- web/ui2/data/tpl/nutzer-rollen-dlg.tpl | 5 ++ web/ui2/stile.css | 16 ++++++- 4 files changed, 57 insertions(+), 30 deletions(-) diff --git a/web/ui2/data/tpl/dlg-del-conf.tpl b/web/ui2/data/tpl/dlg-del-conf.tpl new file mode 100644 index 0000000..e96713c --- /dev/null +++ b/web/ui2/data/tpl/dlg-del-conf.tpl @@ -0,0 +1,10 @@ +<div class="dlg-nutzer-neu"> + <span class="close-btn pointer-cursor">✖</span> + <div class="dlg-behaelter"> + <div class="dlg-info-app-titel">Löschen bestätigen</div> + <div class="dlg-info-app-info">Soll der Nutzer {{nutzername}} wirklich gelöscht werden?</div> + <div class="form-button-footer"> + <button type="button" class="danger-btn" id="nutzer-loeschen-btn">Löschen</button> + </div> + </div> +</div> \ No newline at end of file diff --git a/web/ui2/data/tpl/nutzer-rollen-dlg.tpl b/web/ui2/data/tpl/nutzer-rollen-dlg.tpl index 2eee6c4..9fe57b5 100644 --- a/web/ui2/data/tpl/nutzer-rollen-dlg.tpl +++ b/web/ui2/data/tpl/nutzer-rollen-dlg.tpl @@ -1,4 +1,7 @@ -<p class="rollen-ansicht-titel">Rollen des Nutzers <span id="nutzer-id"></span></p> +<p class="rollen-ansicht-titel">Rollen von + <span id="nutzer-id"></span> + <button type="button" class="del-user-btn danger-btn" id="del-user-btn">Löschen</button> +</p> <h6 class="rollen-ueberschrift">Rollen des Benutzers</h6> <div class="rollen-behaelter"> {{#List}} diff --git a/web/ui2/js/app.js b/web/ui2/js/app.js index 36c9fcf..d6a208d 100644 --- a/web/ui2/js/app.js +++ b/web/ui2/js/app.js @@ -83,10 +83,28 @@ document.querySelector("#nutzer").innerHTML = html; document.querySelector("#nutzer-id").textContent = nutzerId; self.addEvtListener('.granted-role-btn', 'click', self.revoke_role_klick); + document.querySelector("#del-user-btn").addEventListener( + 'click', self.nutzer_loeschen_bestaetigen); self.alle_rollen_zeigen(); }); }); document.querySelector('.zurueck-btn').style.color = 'black'; + }; + + this.nutzer_loeschen_bestaetigen = function() { + var nutzerId = document.querySelector("#nutzer-id").textContent; + self.dialog_zeigen( + 'data/tpl/dlg-del-conf.tpl', + JSON.parse('{"nutzername": "' + nutzerId + '"}'), + function(){ + var btn = document.getElementById('nutzer-loeschen-btn'); + if(btn !== null) { + btn.addEventListener('click', function() { + var user = new User(nutzerId, '', '', ''); + self.nutzer_loeschen(user); + }); + } + }); }; this.alle_rollen_zeigen = function() { @@ -275,6 +293,17 @@ }); }; + this.nutzer_loeschen = function(u) { + var url = '../svc/deleteUser'; + var data = "p=" + self.serialisieren(u); + self.http_post(url, data, function (antwort) { + self.get_user_list(); + document.getElementById('nutzer-loeschen-btn').removeEventListener( + 'click', self.nutzer_loeschen); + self.dialog_schliessen(); + }); + }; + this.alter_role_call = function(method, nutzerId, roleId, updateCallback) { var u = '../svc/' + method; var data = "p=" + self.serialisieren(new UserRole(nutzerId, roleId)); @@ -356,24 +385,8 @@ function Vorlagen() { var self = this; - this.cache = {}; // mustache templates + this.cache = {}; // mustache template cache - /* - Das HTML erzeugen, das entsteht, wenn eine Vorlage mit Inhalt - gefüllt wird - - Das Füllen erfolgt asynchron, d.h. der Programmlauf geht nach dem - Aufruf weiter ohne auf das Laden und Füllen der Vorlage zu warten. - Das fertige HTML wird der Callback-Funktion übergeben - sobald die Vorlage geladen und gefüllt ist, unabhängig davon, wo der - Programmlauf zu diesem Zeitpunkt mittlerweile ist. - - vurl - URL zur Vorlagendatei - inhalt - die JSON-Struktur, deren Inhalt in die - Vorlage gefüllt werden soll - cb - Callback-Funktion, die gerufen wird, wenn die Vorlage gefüllt ist. - Dieser Callback-Funktion wird das fertige HTML übergeben - */ this.html_erzeugen = function(vurl, inhalt, cb) { var vorlage = self.cache[vurl]; if(vorlage === undefined) { @@ -387,14 +400,6 @@ cb(Mustache.render(self.cache[vurl], inhalt)); }; - /* - Eine Vorlage vom Server in den lokalen Speicher laden - vurl - der URL unter dem die Vorlage zu finden ist - inhalt - die JSON-Struktur, deren Inhalt in die - Vorlage gefüllt werden soll - cb - callback: Diese Funktion wird gerufen, wenn die Vorlage mit dem - Inhalt gefüllt ist - */ this.vorlage_laden_und_fuellen = function(vurl, inhalt, cb) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { @@ -406,7 +411,6 @@ xmlhttp.open("GET", vurl, true); xmlhttp.send(); }; - } diff --git a/web/ui2/stile.css b/web/ui2/stile.css index d6a9276..ec9221c 100644 --- a/web/ui2/stile.css +++ b/web/ui2/stile.css @@ -108,11 +108,21 @@ .top-btn { margin: 0 1em 0 1em; - height: 28px; line-height: 24px; text-align: center; font-size: large; +} + +.del-user-btn { + margin: 0 1.5em 0 1em; + height: 28px; + line-height: 24px; + text-align: center; +} + +.danger-btn { + background-color: lightcoral; } /* Nutzerliste */ @@ -218,8 +228,8 @@ height: 2.5em; padding: 0 0.5em; margin: 0.2em; - background-color: lightcoral; text-transform: none; + background-color: #fff8c4; font-size: medium; } @@ -227,7 +237,7 @@ height: 2.5em; padding: 0 0.5em; margin: 0.2em; - background-color: darkseagreen; + background-color: #fff8c4; text-transform: none; font-size: medium; } -- Gitblit v1.9.3