Files
BeWoPlaner/BeWoPlanerMobil/Views/Shared/_Layout.cshtml

880 lines
36 KiB
Plaintext
Raw Normal View History

@using BeWoPlanerMobil.Controllers
@using BeWoPlanerMobil.Models
@using BeWoPlanerMobil.Service
@using BeWoPlanerMobil.Util
2019-07-25 14:56:11 +02:00
<!DOCTYPE html>
2016-06-27 01:45:38 +02:00
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" id="viewport" />
2016-06-27 01:45:38 +02:00
<title>@ViewBag.Title</title>
<script defer src="~/Content/fontawesome/all.min.js"></script>
@*
Einbindereihenfolge der Skripte für Bootstrap:
1. jQuery
2. Popper
3. Bootstrap
Oder
1. jQuery
2. Bootstrap-Bundle
*@
<script type="text/javascript" src="@Scripts.Url("~/Scripts/jquery/jquery-3.7.1.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/jquery/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/jquery/jquery.unobtrusive-ajax.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/knockout-3.5.1.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/bootstrap/bootstrap.bundle.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/cldr/cldr.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/cldr/event.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/cldr/supplemental.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/globalize/globalize.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/globalize/number.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/globalize/currency.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/globalize/date.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/globalize/message.min.js")"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/ace/ace.min.js")"></script>
<link rel="stylesheet" href="@Url.Content("~/Content/style.css")" />
<link rel="stylesheet" href="@Url.Content("~/Content/tempusdominus-bootstrap-4.min.css")" />
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/dateUtils.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/moment/moment.min.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/moment/locale/de.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/tempusdominus-boostrap-4.min.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/mobileUtils.js")" type="text/javascript"></script>
2023-04-24 19:22:09 +02:00
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/group-booking.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/view-scripts/main.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/signature.js")" type="text/javascript"></script>
<link rel="stylesheet" href="@Url.Content("~/Scripts/bootstrap/bootstrap4-modal-fullscreen.min.css")" />
2023-04-24 19:22:09 +02:00
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/support-concept-statistics.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/view-scripts/customer.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/view-scripts/scheduler.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/ownSoft-Scripts/view-scripts/report.js")"></script>
<script src="@Scripts.Url("~/Scripts/signature-pad.min.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/trimCanvas.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/resources-list-utils.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/list-utils.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/service-record-time-calc.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/js-helper.js")" type="text/javascript"></script>
<script src="@Scripts.Url("~/Scripts/ownSoft-Scripts/utils/logging.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Scripts.Url("~/Scripts/devexpress-dependencies/devextreme/dx.all.js")"></script>
<link rel="stylesheet" href="@Url.Content("~/Content/dx.common.css")" />
<link rel="stylesheet" href="@Url.Content("~/Content/dx.light.css")" />
@Html.DevExpress().GetStyleSheets(
ASPxWebClientUIControl.ColorSchemeLight,
new StyleSheet { ExtensionSuite = ExtensionSuite.NavigationAndLayout, Theme = "Default" },
new StyleSheet { ExtensionSuite = ExtensionSuite.Report },
new StyleSheet { ExtensionType = ExtensionType.WebDocumentViewer }
)
@Html.DevExpress().GetScripts(
new Script { ExtensionSuite = ExtensionSuite.NavigationAndLayout },
new Script { ExtensionSuite = ExtensionSuite.Icons },
new Script { ExtensionType = ExtensionType.WebDocumentViewer }
)
<script type="text/javascript">
class PasswordSecurity {
numbers = "0123456789";
lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
uppercaseLetters = "ABDEFGHIJKLMNOPQRSTUVWXYZ";
lowercaseUmlauts = "äöüß";
uppercaseUmlauts = "ÄÖÜ";
specialChars1 = "\\\"\'µ@@€!";
specialChars2 = "&/()=?+*";
specialChars3 = ",.-;:_><|";
specialChars4 = "§$%'{[]}´";
specialChars5 = "`^°~²³";
isPartial = false;
partialPassword = "";
passwordLengthDifference = 0;
score = 0;
previousValue = 0;
schalter = false;
previousValues = [];
passwordLabelId = "";
constructor(pwLabelId) {
this.passwordLabelId = pwLabelId;
}
validatePassword(password) {
if(false === isUndefinedOrNull(password) && password.length > 0) {
var sx = "";
var passwordStrength = -1;
for(var i = 0; i < password.length; i++) {
sx += password[i];
if(sx.length < this.partialPassword.length) {
this.isPartial = true;
this.passwordLengthDifference = this.partialPassword.length - sx.length;
}
if(this.partialPassword !== sx) {
this.partialPassword = sx;
}
passwordStrength = this.calculatePasswordStrength(sx);
}
this.displayPasswordStrength(passwordStrength);
return;
}
this.score = 0;
this.previousValue = 0;
this.displayPasswordStrength(-1);
}
getIntegerFromArray(arr, index) {
if(arr === undefined || arr === null || arr.length < index) {
return 0;
}
var intValue = $.parseInt(arr[index], 10);
return $.isNumeric(intValue) ? intValue : 0;
}
getLastValue() {
if(this.previousValues === undefined || this.previousValues === null || this.previousValues.length === 0) {
return 0;
}
return this.previousValues[this.previousValues.length - 1];
}
calculatePasswordStrength(passwordToValidate) {
var passwordStrength = 0;
this.previousValue = 0;
if(this.isPartial === true) {
if(this.passwordLengthDifference === 1) {
this.score -= this.getLastValue();
this.previousValues.pop();
} else {
for(var i = 0; i < this.passwordLengthDifference; i++) {
this.score -= this.getLastValue();
this.previousValues.pop();
}
}
this.isPartial = false;
} else {
var passwordLength = passwordToValidate.length;
if(passwordLength >= 6 && passwordLength < 9) {
this.score += 1;
this.previousValue = 1;
this.schalter = true;
}
if(passwordLength >= 9 && passwordLength < 12) {
this.score += 2;
this.previousValue = 2;
this.schalter = true;
}
if(passwordLength >= 12 && passwordLength < 18) {
this.score += 3;
this.previousValue = 3;
this.schalter = true;
}
if(passwordLength >= 18) {
this.score += 4;
this.previousValue = 4;
this.schalter = true;
}
var passwordAsArray = Array.from(passwordToValidate);
// Zahlen
var containsNumbers = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.numbers.includes(passwordAsArray[i])) {
containsNumbers = true;
break;
}
}
// Kleinbuchstaben
var containsLowercaseLetters = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.lowercaseLetters.includes(passwordAsArray[i])) {
containsLowercaseLetters = true;
break;
}
}
// Großbuchstaben
var containsUppercaseLetters = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.uppercaseLetters.includes(passwordAsArray[i])) {
containsUppercaseLetters = true;
break;
}
}
// Kleinumlaute
var containsLowercaseUmlauts = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.lowercaseUmlauts.includes(passwordAsArray[i])) {
containsLowercaseUmlauts = true;
break;
}
}
// Großumlaute
var containsUppercaseUmlauts = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.uppercaseUmlauts.includes(passwordAsArray[i])) {
containsUppercaseUmlauts = true;
break;
}
}
// Sonderzeichen 1
var containsSpecialCharacters1 = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.specialChars1.includes(passwordAsArray[i])) {
containsSpecialCharacters1 = true;
break;
}
}
var containsSpecialCharacters2 = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.specialChars2.includes(passwordAsArray[i])) {
containsSpecialCharacters2 = true;
break;
}
}
var containsSpecialCharacters3 = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.specialChars3.includes(passwordAsArray[i])) {
containsSpecialCharacters3 = true;
break;
}
}
var containsSpecialCharacters4 = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.specialChars4.includes(passwordAsArray[i])) {
containsSpecialCharacters4 = true;
break;
}
}
var containsSpecialCharacters5 = false;
for(var i = 0; i < passwordAsArray.length; i++) {
if(this.specialChars5.includes(passwordAsArray[i])) {
containsSpecialCharacters5 = true;
break;
}
}
if(containsNumbers === true) {
this.addScoreValue(3);
}
if(containsLowercaseLetters === true) {
this.addScoreValue(2);
}
if(containsUppercaseLetters === true) {
this.addScoreValue(3);
}
if(containsLowercaseUmlauts === true) {
this.addScoreValue(2);
}
if(containsUppercaseUmlauts === true) {
this.addScoreValue(2);
}
if(containsSpecialCharacters1 === true) {
this.addScoreValue(4);
}
if(containsSpecialCharacters2 === true) {
this.addScoreValue(4);
}
if(containsSpecialCharacters3 === true) {
this.addScoreValue(4);
}
if(containsSpecialCharacters4 === true) {
this.addScoreValue(4);
}
if(containsSpecialCharacters5 === true) {
this.addScoreValue(4);
}
this.previousValues.push(this.previousValue);
}
if(this.score <= 15) {
passwordStrength = 0;
}
if(this.score > 15 && this.score <= 55) {
passwordStrength = 1;
}
if(this.score > 55 && this.score <= 115) {
passwordStrength = 2;
}
if(this.score > 115 && this.score <= 155) {
passwordStrength = 3;
}
if(this.score > 155) {
passwordStrength = 4;
}
return passwordStrength;
}
addScoreValue(defaultValue) {
if(defaultValue === undefined || defaultValue === null || false === $.isNumeric(defaultValue)) {
return;
}
this.score += defaultValue;
if(this.schalter === true) {
this.previousValue += defaultValue;
} else {
this.previousValue = defaultValue;
}
}
displayPasswordStrength(passwordStrength) {
var passwordLabel = $("#" + this.passwordLabelId);
if(passwordStrength === undefined || !$.isNumeric(passwordStrength) || !passwordLabel.length) {
return;
}
passwordLabel.removeClass("text-success text-danger text-warning");
switch(passwordStrength) {
case -1:
passwordLabel.addClass("d-none");
passwordLabel.html("");
break;
case 0:
passwordLabel.removeClass("d-none");
passwordLabel.html("Passwortstärke: Sehr schwach");
passwordLabel.addClass("text-danger");
break;
case 1:
passwordLabel.removeClass("d-none");
passwordLabel.html("Passwortstärke: Schwach");
passwordLabel.addClass("text-danger");
break;
case 2:
passwordLabel.removeClass("d-none");
passwordLabel.html("Passwortstärke: Mittel");
passwordLabel.addClass("text-warning");
break;
case 3:
passwordLabel.removeClass("d-none");
passwordLabel.html("Passwortstärke: Stark");
passwordLabel.addClass("text-success");
break;
case 4:
passwordLabel.removeClass("d-none");
passwordLabel.html("Passwortstärke: Sehr stark");
passwordLabel.addClass("text-success");
break;
}
}
}
</script>
<script type="text/javascript">
window.addEventListener("error", (event) => {
hideSpinner();
var textToShow = `Message: ${event.message}\r\nFile name: ${event.filename}\r\nLine: ${event.lineno}\r\nColumn: ${event.colno}\r\nStack: ${event.error.stack}`;
if(event.message === "Uncaught TypeError: this._contentReadyAction is not a function") {
logInfo("contentReadyAction-Fehler ist aufgetregen. Kann ignoriert werden.");
return;
}
configureErrorPopup(textToShow);
});
function showChangePasswordPopup() {
$("#password-changing-popup").modal("show");
calcChPwPrepend();
}
var initialPwPrependWidth = 0;
function calcChPwPrepend() {
try {
if (initialPwPrependWidth <= 0 && $.isNumeric(getMaxWidth("pw-prepend"))) {
initialPwPrependWidth = getMaxWidth("pw-prepend");
}
if (initialPwPrependWidth <= 0) {
return;
}
$(".pw-prepend").width(getMaxWidth("pw-prepend"));
} catch(error) {
showErrorPopup(error);
}
}
function copyErrorToClipboard() {
var element = document.querySelector("#fehlerdetail-textarea");
element.select();
element.setSelectionRange(0, 99999);
document.execCommand("copy");
}
function showErrorPopup(error, htmlMessage) {
hideSpinner();
var textToShow = "name: " + error.name + ";\r\nmessage: " + error.message + ";\r\nstack: " + error.stack;
configureErrorPopup(textToShow, htmlMessage);
}
function showErrorMessagePopup(text, htmlMessage) {
hideSpinner();
configureErrorPopup(text, htmlMessage);
}
function configureErrorPopup(textToShow, htmlMessage) {
try {
$("#fehlerdetail-textarea").text(textToShow);
$("#error-message-popup").modal("show");
if (htmlMessage !== undefined && htmlMessage !== null && (typeof htmlMessage === 'string' || htmlMessage instanceof String) && htmlMessage.length > 0) {
$("#html-error-container").html(htmlMessage);
} else {
$("#html-error-container").empty();
}
} catch (error) {
console.logError(error);
}
}
$(document).ready(function() {
try {
$("textarea").each(function () {
var id = this.getAttribute("id");
// Die textarea des Fehlerpopups soll scrollbar sein!
if (id === "fehlerdetail-textarea") {
return;
}
//this.setAttribute("style", "height:" + (this.scrollHeight) + "px;overflow-y:hidden;");
this.setAttribute("style", "height:"+(this.scrollHeight) + "px;overflow-y:scroll;");
}).on("input", function () {
this.style.height = 0;
this.style.height = (this.scrollHeight) + "px";
});
var timeoutInMilliseconds = parseInt("@AbstractBaseController.TimeoutLimit", 10) * 60 * 1000;
var timeOfLogin = "@AbstractModel.TimeOfLastAction";
if(timeOfLogin.length > 0) {
2020-12-05 15:47:00 +01:00
var countDownDate = new Date().getTime() + timeoutInMilliseconds;
var interval = setInterval(function() {
var now = new Date().getTime();
var distance = countDownDate - now;
if (distance <= 0) {
clearInterval(interval);
$("#countdown").html("00:00");
$("#logout-form").submit();
return;
}
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
var m = minutes.toString();
var s = seconds.toString();
if (minutes < 10) {
m = "0" + m;
}
if (seconds < 10) {
s = "0" + s;
}
$("#countdown").html("Abmeldung in " + m + ":" + s + '<span class="fas fa-unlock-alt pl-1"></span>');
}, 1000);
}
calcPrependWidth();
} catch (error) {
showErrorPopup(error);
}
});
2020-11-09 17:55:01 +01:00
$(window).resize(function() {
logSize();
calcPrependWidth();
});
previousWidth = "";
function logSize() {
var width = $(document).width();
var val = widthToBootstrapVal(width);
if(previousWidth !== val) {
2023-02-10 16:18:18 +01:00
console.log("%c" + val, "font-size: 16px; font-weight: bold; color: #00F2FF;");
}
previousWidth = val;
$("#size-info-span").text(val);
}
function widthToBootstrapVal(width) {
try {
/*
Extra small <576px
Small ≥576px
Medium ≥768px
Large ≥992px
Extra large ≥1200px
*/
var result = "xs";
if(width < 567) {
result = "xs";
}
if(width >= 576) {
result = "sm";
}
if(width >= 768) {
result = "md";
}
if(width >= 992) {
result = "lg";
}
if(width >= 1200) {
result = "xl";
}
return result;
} catch(error) {
showErrorPopup(error);
}
}
2020-11-09 17:55:01 +01:00
function countdownClick() {
$("#countdown-tooltip").tooltip('show');
setTimeout(function() {
$("#countdown-tooltip").tooltip('hide');
}, 1500);
}
2023-01-05 16:22:04 +01:00
var initialVonWidth = 0;
function calcPrependWidth() {
try {
2023-01-05 16:22:04 +01:00
// Prepend-Elemente
if(initialVonWidth === 0 && $.isNumeric(getMaxWidth("sm-prepend-input-group-text"))) {
initialVonWidth = getMaxWidth("sm-prepend-input-group-text");
}
var smallPrependInputGroupTextWidth = getMaxWidth("sm-prepend-input-group-text");
var documentWidth = $(document).width();
$(".prepend-input-group-text").width(getMaxWidth("prepend-input-group-text"));
2023-01-05 16:22:04 +01:00
if(documentWidth < 768 && $.isNumeric(smallPrependInputGroupTextWidth)) {
$(".sm-prepend-input-group-text").width(getMaxWidth("prepend-input-group-text"));
} else if($.isNumeric(smallPrependInputGroupTextWidth)) {
$(".sm-prepend-input-group-text").width(initialVonWidth);
}
} catch(error) {
showErrorPopup(error);
}
}
function getMaxWidth(elementClassName) {
try {
return Math.max.apply(Math, $('.' + elementClassName).map(function () { return $(this).width(); }).get());
} catch (error) {
showErrorPopup(error);
}
}
function getMaxElementHeight(elementClassName) {
try {
return Math.max.apply(Math, $('.' + elementClassName).map(function () { return $(this).height(); }).get());
} catch (error) {
showErrorPopup(error);
}
}
</script>
2016-06-27 01:45:38 +02:00
</head>
2019-07-25 14:56:11 +02:00
<body>
@if(MobileSessionFacade.IsUserLoggedIn())
{
using(Html.BeginForm("LogOutAfterSessionTimeout", "Main", FormMethod.Post, new { id = "logout-form", css = "display:none;" }))
{
}
}
@if(Model != null)
{
<nav class="navbar navbar-expand-lg navbar-dark bg-dark sticky-top justify-content-end">
<div class="container-fluid">
<a href="#" class="navbar-brand">
@Model.LoggedInEmplyeeFirstNameLastName
</a>
2020-11-09 17:55:01 +01:00
<span class="d-inline-block" data-toggle="tooltip" title="Zeit bis zur automatischen Abmeldung" id="countdown-tooltip">
<span class="navbar-text" id="countdown" onclick="countdownClick()"></span>
2020-08-04 12:45:46 +02:00
</span>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive">
<span class="navbar-toggler-icon"></span>
</button>
2020-08-04 12:45:46 +02:00
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
@*
@if(Html.IsInDebugMode())
{
using(Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-hand-middle-finger"></i>
Scheduler
</button>
</li>
}
}
*@
2020-08-04 12:45:46 +02:00
@if(AbstractModel.IsAllowedToSeeCustomers)
{
2020-08-04 12:45:46 +02:00
using(Html.BeginForm("RedirectToCustomer", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-user text-bewo-customers"></i>
Klienten
</button>
</li>
}
}
2019-07-25 14:56:11 +02:00
2020-08-04 12:45:46 +02:00
@using(Html.BeginForm("RedirectToMain", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-clock text-bewo-service-records"></i>
Zeiterfassung
</button>
</li>
}
2020-08-04 12:45:46 +02:00
@if(AbstractModel.IsAllowedToSeeScheduler)
{
2020-08-04 12:45:46 +02:00
using(Html.BeginForm("RedirectToScheduler", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-calendar-alt text-bewo-calendar"></i>
Kalender
</button>
</li>
}
}
2020-11-09 17:55:01 +01:00
@if(AbstractModel.HasRightToViewQuittierungsbelege)
2020-08-17 16:52:25 +02:00
{
using(Html.BeginForm("RedirectToReportView", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-chart-bar text-bewo-report">
2020-08-17 16:52:25 +02:00
</i>
Quittierungsbelege
2020-08-17 16:52:25 +02:00
</button>
</li>
}
}
@if(AbstractModel.HasRightToViewReports && AbstractModel.HasRightToViewMitarbeiterstundenkonto)
{
using(Html.BeginForm("RedirectToReportViewer", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-chart-bar text-bewo-report"></i>
Auswertungen
</button>
</li>
}
}
2020-11-09 17:55:01 +01:00
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showAboutPopup()">
<i class="fas fa-balance-scale text-primary"></i>
&Uuml;ber
2020-11-09 17:55:01 +01:00
</button>
</li>
2023-07-13 13:41:07 +02:00
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showChangePasswordPopup()">
<i class="fas fa-lock text-danger"></i>
Passwort &auml;ndern
</button>
</li>
<li class="nav-item">
2020-08-04 12:45:46 +02:00
@using(Html.BeginForm("Logout", "Main", FormMethod.Post))
{
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-sign-out-alt text-primary"></i>
Abmelden
</button>
}
</li>
</ul>
</div>
</div>
</nav>
}
<div class="modal" role="dialog" tabindex="-1" id="mySpinner">
<div class="modal-dialog modal-dialog-centered text-center" role="document">
<div class="modal-content bg-transparent border-0">
<div class="d-flex justify-content-center">
<div class="spinner-border text-primary" role="status" style="width: 5rem; height: 5rem;">
<span class="sr-only"></span>
</div>
</div>
<p id="loading-info-p" class="text-white mt-4">Lade ...</p>
</div>
</div>
</div>
2019-07-25 14:56:11 +02:00
<div class="modal" tabindex="-1" role="dialog" id="messagePopup">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="popupTitle"></h5>
<button class="close" type="button" data-dismiss="modal" aria-label="close" id="message-popup-esc-btn">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" id="modal-body">
<p id="popupMessage"></p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" data-dismiss="modal" id="message-popup-ok-btn">OK</button>
<button class="btn btn-secondary" type="button" data-dismiss="modal" id="message-popup-close-btn">Schlie&szlig;en</button>
</div>
</div>
</div>
</div>
<div class="modal" tabindex="-1" role="dialog" id="error-message-popup">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title text-danger">Es ist ein Fehler aufgetreten</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>
Es ist leider ein unbekannter Fehler aufgetreten. Pr&uuml;fen Sie Ihre Internetverbindung oder versuchen Sie es sp&auml;ter erneut. Wir sind stets bem&uuml;ht, das Programm zu verbessern, daher freuen wir uns auch, wenn Sie die Fehlerdetails unten in einer Mail an <a href="mailto:support@bewoplaner.de" id="error-popup-mailto">support@bewoplaner.de</a> senden.
</p>
<hr/>
<div class="form-group">
<label for="fehlerdetail-textarea">Fehlerdetails:</label>
<textarea class="form-control font-italic text-monospace" style="height: 20em !important; max-height: 20em !important; scroll-behavior: auto !important;" id="fehlerdetail-textarea"></textarea>
<div id="html-error-container"></div>
</div>
</div>
<div class="modal-footer">
<div class="clearfix w-100">
<button class="btn btn-primary float-left" type="button" onclick="copyErrorToClipboard()">Text kopieren</button>
<button class="btn btn-primary float-right" type="button" data-dismiss="modal">OK</button>
</div>
</div>
</div>
</div>
</div>
2023-05-17 19:36:53 +02:00
2023-05-22 14:05:32 +02:00
@if(!(TempData[TempDataConstants.ErrorMessageKey] is null))
2023-05-17 19:36:53 +02:00
{
2023-05-22 14:05:32 +02:00
<div class="container-fluid mt-3">
<div class="row d-flex justify-content-center">
<div class="col-md-3 col-lg-4">
<div class="alert alert-danger" role="alert">
@TempData[TempDataConstants.ErrorMessageKey]
2023-05-22 14:05:32 +02:00
</div>
</div>
</div>
2023-05-17 19:36:53 +02:00
</div>
}
@RenderBody()
2019-07-25 14:56:11 +02:00
</body>
2016-06-27 01:45:38 +02:00
</html>