631 lines
29 KiB
Plaintext
631 lines
29 KiB
Plaintext
@using BeWoPlanerMobil.Models
|
|
@using BeWoPlanerMobil.Util
|
|
@using BS.Shared
|
|
@model MainModel
|
|
|
|
@{
|
|
if(TempData[TempDataConstants.DoLogoutKey] is bool doLogout && doLogout)
|
|
{
|
|
<text>
|
|
<script type="text/javascript">
|
|
$("#second-logout-form").submit();
|
|
</script>
|
|
</text>
|
|
}
|
|
}
|
|
|
|
<script type="text/javascript">
|
|
function generateExternalLink(serviceRecordOid) {
|
|
$("#external-signature-link-container").load("@Url.Action("GenerateOneTimeLinkForSignature", "Main")", {serviceRecordOid: serviceRecordOid}, function() {
|
|
hideSpinner();
|
|
|
|
$("#external-signature-link-popup").modal("show");
|
|
});
|
|
}
|
|
|
|
function cancelExternalLink() {
|
|
showSpinner();
|
|
$("#external-signature-link-container").load("@Url.Action("CancelLinkCreation")", function () {
|
|
hideSpinner();
|
|
$("#external-signature-link-popup").modal("hide");
|
|
});
|
|
}
|
|
|
|
function goToFirstServiceRecordListPage() {
|
|
window.updateCurrentPage(1);
|
|
|
|
showSpinner();
|
|
$("#service-record-list-container").load("@Url.Action("GoToFirstPage")", function () {
|
|
hideSpinner();
|
|
});
|
|
}
|
|
|
|
function goToLastServiceRecordListPage() {
|
|
window.updateCurrentPage($("#page-count").val());
|
|
|
|
showSpinner();
|
|
$("#service-record-list-container").load("@Url.Action("GoToLastPage")", function () {
|
|
hideSpinner();
|
|
});
|
|
}
|
|
|
|
function goToServiceRecordListPage(selectedPage) {
|
|
window.updateCurrentPage(selectedPage);
|
|
|
|
showSpinner();
|
|
$("#service-record-list-container").load("@Url.Action("LoadServiceRecordPage")", { selectedPage: selectedPage }, function() {
|
|
hideSpinner();
|
|
});
|
|
}
|
|
|
|
function submitServiceRecordEditForm(serviceRecordOid) {
|
|
const form = document.getElementById(`select-record-to-edit-form-${serviceRecordOid}`);
|
|
|
|
if(hasEmptyRequiredFields($(form))) {
|
|
return;
|
|
}
|
|
|
|
showSpinner();
|
|
form.submit();
|
|
}
|
|
</script>
|
|
|
|
@{
|
|
if(Model.ServiceRecordPageCount > 1)
|
|
{
|
|
var previousPage1 = Model.CurrentPage - 1 <= 0 ? 1 : Model.CurrentPage - 1;
|
|
var nextPage1 = Model.CurrentPage + 1 > Model.ServiceRecordPageCount ? Model.ServiceRecordPageCount : Model.CurrentPage + 1;
|
|
|
|
var page1 = 1;
|
|
|
|
if(Model.CurrentPage > 3 && Model.ServiceRecordPageCount > 5)
|
|
{
|
|
page1 = Model.CurrentPage - 2;
|
|
|
|
if(page1 > Model.ServiceRecordPageCount - 4)
|
|
{
|
|
page1 = Model.ServiceRecordPageCount - 4;
|
|
}
|
|
|
|
if(page1 < 1)
|
|
{
|
|
page1 = 1;
|
|
}
|
|
}
|
|
|
|
var lastPage1 = page1 + 4;
|
|
|
|
if(lastPage1 > Model.ServiceRecordPageCount)
|
|
{
|
|
lastPage1 = Model.ServiceRecordPageCount;
|
|
}
|
|
<input type="hidden" id="page-count" value="@Model.ServiceRecordPageCount" />
|
|
<nav>
|
|
<ul class="pagination justify-content-center">
|
|
@{
|
|
var previousButtonsClass = Model.CurrentPage == 1 ? "disabled" : string.Empty;
|
|
}
|
|
|
|
<li class="page-item @previousButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToFirstServiceRecordListPage()">
|
|
<span class="fas fa-angle-double-left"></span>
|
|
</button>
|
|
</li>
|
|
<li class="page-item @previousButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToServiceRecordListPage(@previousPage1)">
|
|
<span class="fas fa-angle-left"></span>
|
|
</button>
|
|
</li>
|
|
|
|
@for(; page1 <= lastPage1; page1++)
|
|
{
|
|
var isActive = Model.CurrentPage == page1;
|
|
var activeClass = isActive ? "active" : string.Empty;
|
|
|
|
<li class="page-item @activeClass">
|
|
@if(isActive)
|
|
{
|
|
<span class="page-link" onclick="goToServiceRecordListPage(@page1)">
|
|
@page1
|
|
<span class="sr-only">(current)</span>
|
|
</span>
|
|
}
|
|
else
|
|
{
|
|
<button type="button" class="page-link" onclick="goToServiceRecordListPage(@page1)">@page1</button>
|
|
}
|
|
</li>
|
|
}
|
|
@{
|
|
var nextButtonsClass = Model.CurrentPage == Model.ServiceRecordPageCount ? "disabled" : string.Empty;
|
|
}
|
|
<li class="page-item @nextButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToServiceRecordListPage(@nextPage1)">
|
|
<span class="fas fa-angle-right"></span>
|
|
</button>
|
|
</li>
|
|
<li class="page-item @nextButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToLastServiceRecordListPage()">
|
|
<span class="fas fa-angle-double-right"></span>
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
}
|
|
|
|
foreach(var serviceRecord in Model.ServiceRecords)
|
|
{
|
|
if(serviceRecord.Start is null || serviceRecord.End is null)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var start = serviceRecord.Start.Value;
|
|
var end = serviceRecord.End.Value;
|
|
var hasSignatureStr = serviceRecord.SignatureOid.HasValue ? "JA" : "NEIN";
|
|
|
|
var duration = (end - start).TotalMinutes;
|
|
|
|
var roundedDuration = MobileUtils.GetDecimalValueWithMaxDecimal(serviceRecord.RoundedDuration, 2);
|
|
|
|
if(serviceRecord.ServiceDescription.Category.Percentage > 0 && serviceRecord.ServiceDescription.Category.Percentage < 100)
|
|
{
|
|
roundedDuration = roundedDuration * serviceRecord.ServiceDescription.Category.Percentage / 100;
|
|
}
|
|
|
|
var durationStr = serviceRecord.GroupOid.HasValue ? string.Format("{0:###0.#} ({0:###0.#})", roundedDuration) : $"{duration:###0.#} ({roundedDuration:###0.#})";
|
|
|
|
var massnahmenString = string.Empty;
|
|
var zieleString = string.Empty;
|
|
|
|
if(serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
|
{
|
|
foreach(var goal in serviceRecord.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptGoalType || g.Type == ValueListEntryType.SupportConceptIndividualGoalType))
|
|
{
|
|
if(goal.Abbreviation != null && goal.TypeDescription != null)
|
|
{
|
|
massnahmenString += $"{goal.Abbreviation}: {goal.TypeDescription}";
|
|
}
|
|
else if(goal.Abbreviation is null && goal.TypeDescription != null)
|
|
{
|
|
massnahmenString += goal.TypeDescription;
|
|
}
|
|
else if(goal.Abbreviation != null && goal.TypeDescription is null)
|
|
{
|
|
massnahmenString += goal.Abbreviation;
|
|
}
|
|
|
|
#if DEBUG
|
|
if(goal.RatingTypeOid.HasValue)
|
|
{
|
|
var goalRating = Model.GoalRatingTypes.FirstOrDefault(g => g.RatingTypeOid.HasValue && g.RatingTypeOid.Equals(goal.RatingTypeOid.Value));
|
|
|
|
if(goalRating?.DisplayName != null && goalRating.DisplayName.Length > 0)
|
|
{
|
|
massnahmenString += $" <strong style='color: blue;'>({goalRating.DisplayName})</strong>";
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if(serviceRecord.Goals.IndexOf(goal) < serviceRecord.Goals.Count - 1)
|
|
{
|
|
massnahmenString += ", ";
|
|
}
|
|
}
|
|
|
|
if(serviceRecord.ServiceRecordOid.HasValue && Model.ServiceRecordOids2GoalHeader.ContainsKey(serviceRecord.ServiceRecordOid.Value))
|
|
{
|
|
var ziele = serviceRecord.Goals.Where(g => g.Type == ValueListEntryType.SupportConceptIndividualGoalCategoryType || g.Type == ValueListEntryType.SupportConceptGoalCategoryType).ToList();
|
|
|
|
foreach(var ziel in ziele)
|
|
{
|
|
if(ziel.Abbreviation != null && ziel.TypeDescription != null)
|
|
{
|
|
zieleString += $"{ziel.Abbreviation}: {ziel.TypeDescription} ";
|
|
}
|
|
else if(ziel.Abbreviation is null && ziel.TypeDescription != null)
|
|
{
|
|
zieleString += ziel.TypeDescription;
|
|
}
|
|
else if(ziel.Abbreviation != null && ziel.TypeDescription is null)
|
|
{
|
|
zieleString += ziel.Abbreviation;
|
|
}
|
|
|
|
#if DEBUG
|
|
if(ziel.RatingTypeOid.HasValue)
|
|
{
|
|
var zielbewertung = Model.GoalRatingTypes.FirstOrDefault(goalRatingType => goalRatingType.RatingTypeOid.HasValue && goalRatingType.RatingTypeOid.Equals(ziel.RatingTypeOid.Value));
|
|
|
|
if(zielbewertung?.DisplayName != null && zielbewertung.DisplayName.Length > 0)
|
|
{
|
|
zieleString += $" <strong style='color: blue;'>({zielbewertung.DisplayName})</strong>";
|
|
}
|
|
}
|
|
#endif
|
|
|
|
zieleString += ", ";
|
|
}
|
|
}
|
|
|
|
zieleString = zieleString.TrimEnd(' ').TrimEnd(',');
|
|
}
|
|
|
|
var cardBackground = serviceRecord.ServiceRecordType == ServiceRecordTypeId.Content ? "bg-service-record-marked" : serviceRecord.GroupOid.HasValue ? "bg-bewo-group-booking" : string.Empty;
|
|
|
|
<div class="row mb-3">
|
|
<div class="card w-100 @cardBackground">
|
|
<div class="card-header" onclick="cardHeaderClick2(this)">
|
|
<div class="d-inline-flex">
|
|
<i class="fas @Html.GetCollapsibleChevron(Model, $"collapse-service-record-{serviceRecord.ServiceRecordOid}") h-100 text-primary" id="chevron-@serviceRecord.ServiceRecordOid"></i>
|
|
</div>
|
|
<div class="d-inline-flex text-primary h-100">
|
|
<button type="button" class="btn btn-link">
|
|
@MainModel.GetServiceRecordTimeHeader(serviceRecord, true)
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="collapse @Html.GetCollapsibleClass(Model.Collapsibles2IsShown, $"collapse-service-record-{serviceRecord.ServiceRecordOid}")" id="collapse-service-record-@serviceRecord.ServiceRecordOid">
|
|
<div class="card-body p-1">
|
|
<div class="container p-0">
|
|
<div class="row m-1 mb-2">
|
|
@if(Model.HasRightToEditServiceRecord(serviceRecord))
|
|
{
|
|
using(Html.BeginForm("SelectRecordToEdit", "Main", FormMethod.Post, new { id = "select-record-to-edit-form-" + serviceRecord.ServiceRecordOid.Value }))
|
|
{
|
|
<input type="hidden" name="service-record-oid-holder" value="@serviceRecord.ServiceRecordOid" />
|
|
}
|
|
}
|
|
|
|
@if(Model.ShowSignature && !serviceRecord.SignatureOid.HasValue && serviceRecord.Customer != null)
|
|
{
|
|
using(Html.BeginForm("SaveSignature", "Main", FormMethod.Post, new { id = $"save-signature-form-{serviceRecord.ServiceRecordOid.Value}" }))
|
|
{
|
|
<input type="hidden" name="@FormCollectionConstants.ServiceRecordSignatureBlobKey" id="sr-sig-blob-@serviceRecord.ServiceRecordOid.Value" />
|
|
<input type="hidden" name="@FormCollectionConstants.ServiceRecordSignatureDateKey" id="sr-sig-date-@serviceRecord.ServiceRecordOid.Value" />
|
|
<input type="hidden" name="@FormCollectionConstants.ServiceRecordSignatureRecordOidKey" id="sr-sig-sr-oid-@serviceRecord.ServiceRecordOid.Value" value="@serviceRecord.ServiceRecordOid.Value" />
|
|
}
|
|
}
|
|
|
|
<div class="btn-group" role="group">
|
|
@* Edit-Button *@
|
|
@if(Model.HasRightToEditServiceRecord(serviceRecord))
|
|
{
|
|
<button type="button" onclick="submitServiceRecordEditForm(@serviceRecord.ServiceRecordOid)" class="btn btn-outline-primary">
|
|
<span class="fas fa-edit"></span>
|
|
</button>
|
|
}
|
|
|
|
@* Löschen-Button *@
|
|
@if(Model.IsAllowedToDeleteServiceRecord(serviceRecord))
|
|
{
|
|
<button type="button" class="btn btn-outline-danger" onclick="deleteServiceRecord(@serviceRecord.ServiceRecordOid)">
|
|
<span class="fas fa-trash-alt"></span>
|
|
</button>
|
|
}
|
|
|
|
@* Unterschrift-Anlegen-Button *@
|
|
@if(Model.ShowSignature && !serviceRecord.SignatureOid.HasValue && serviceRecord.Customer != null)
|
|
{
|
|
<button type="button" class="btn btn-outline-primary" onclick="initializeSignature(@serviceRecord.ServiceRecordOid)">
|
|
<span class="fas fa-signature"></span>
|
|
</button>
|
|
|
|
if(Html.IsInDebugMode())
|
|
{
|
|
<button class="btn btn-outline-primary" type="button" onclick="generateExternalLink(@serviceRecord.ServiceRecordOid)">
|
|
<span class="fas fa-external-link-alt"></span>
|
|
</button>
|
|
}
|
|
}@* Unterschrift-Anzeigen-Button *@
|
|
else if(Model.ShowSignature && serviceRecord.SignatureOid.HasValue)
|
|
{
|
|
<button type="button" data-toggle="modal" class="btn btn-outline-primary" onclick="getSignatureImage(@serviceRecord.ServiceRecordOid.Value, @serviceRecord.SignatureOid.Value)">
|
|
<span class="fas fa-file-contract"></span>
|
|
</button>
|
|
if(Model.HasRightToDeleteReceiptSignatures)
|
|
{
|
|
<button type="button" class="btn btn-outline-danger" onclick="deleteSigntarue(@serviceRecord.SignatureOid.Value, @serviceRecord.ServiceRecordOid.Value, '@serviceRecord.Customer', '@MainModel.GetServiceRecordTimeHeader(serviceRecord, false)')">
|
|
<i class="fas fa-file-contract"></i>
|
|
<i class="fas fa-arrow-right"></i>
|
|
<i class="fas fa-trash-alt"></i>
|
|
</button>
|
|
}
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<table class="table table-sm table-striped service-record-table m-1">
|
|
@* Dauer *@
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Minuten (gerundet):
|
|
</td>
|
|
<td class="text-info">
|
|
@durationStr
|
|
</td>
|
|
</tr>
|
|
|
|
@* Gefahrene Kilometer *@
|
|
@if(Model.ShowDistanceField && serviceRecord.DistanceInMeterDecimal != null && serviceRecord.DistanceInMeterDecimal.Value > 0)
|
|
{
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Gefahrene Kilometer:
|
|
</td>
|
|
<td>
|
|
@($"{serviceRecord.DistanceInMeterDecimal:0.##}")
|
|
</td>
|
|
</tr>
|
|
}
|
|
|
|
@* Ziele & Maßnahmen *@
|
|
@if(serviceRecord.Goals != null && serviceRecord.Goals.Count > 0)
|
|
{
|
|
if(!string.IsNullOrEmpty(zieleString))
|
|
{
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Ziele:
|
|
</td>
|
|
<td>
|
|
@(new HtmlString(zieleString))
|
|
</td>
|
|
</tr>
|
|
}
|
|
|
|
if(serviceRecord.Goals.Any(goal => goal.Type == ValueListEntryType.SupportConceptGoalType || goal.Type == ValueListEntryType.SupportConceptIndividualGoalType))
|
|
{
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Maßnahmen:
|
|
</td>
|
|
<td>
|
|
@(new HtmlString(massnahmenString))
|
|
</td>
|
|
</tr>
|
|
}
|
|
}
|
|
|
|
@* Leistungskategorie *@
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Leistungskategorie:
|
|
</td>
|
|
<td>
|
|
@serviceRecord.ServiceDescription.CategoryName
|
|
</td>
|
|
</tr>
|
|
|
|
@* Leistung *@
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Leistung:
|
|
</td>
|
|
<td>
|
|
@serviceRecord.ServiceDescription.Name
|
|
</td>
|
|
</tr>
|
|
|
|
@* Angelegt für *@
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Angelegt für:
|
|
</td>
|
|
<td>
|
|
@serviceRecord.Employee.FirstNameLastName
|
|
</td>
|
|
</tr>
|
|
|
|
@* Angelegt von & angelegt am *@
|
|
@if(Model.ShowServiceRecordInsertedOn)
|
|
{
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Angelegt von:
|
|
</td>
|
|
<td>
|
|
@serviceRecord.InsUser
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Angelegt am:
|
|
</td>
|
|
<td>
|
|
@serviceRecord.InsertedOn
|
|
</td>
|
|
</tr>
|
|
}
|
|
|
|
@* Betrag *@
|
|
@if(Model.ShowBetrag && serviceRecord.Betrag.HasValue && serviceRecord.Betrag.Value > 0)
|
|
{
|
|
var betrag = serviceRecord.Betrag.Value.ToString("#.00") + " €";
|
|
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Betrag:
|
|
</td>
|
|
<td>
|
|
@betrag
|
|
</td>
|
|
</tr>
|
|
}
|
|
|
|
@* Doku *@
|
|
@{
|
|
var header1 = "Dokumentation";
|
|
if(Model.NumberOfDokuTypes >= 1)
|
|
{
|
|
header1 = Model.Dokutypes[0].TypeDescription;
|
|
}
|
|
|
|
<tr>
|
|
<td class="text-secondary">
|
|
@header1:
|
|
</td>
|
|
<td>
|
|
@Html.Raw(MobileUtils.ToHtml(serviceRecord.Notice, false))
|
|
</td>
|
|
</tr>
|
|
|
|
for(var i = 1; i < serviceRecord.NoticeList.Count; i++)
|
|
{
|
|
var notice = serviceRecord.NoticeList[i];
|
|
|
|
if(string.IsNullOrWhiteSpace(notice) || Model.NumberOfDokuTypes <= i)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var header = $"Dokumentation {i + 1}";
|
|
|
|
if(Model.NumberOfDokuTypes >= 2)
|
|
{
|
|
if(Model.NumberOfDokuTypes <= i)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
header = Model.Dokutypes[i].TypeDescription;
|
|
}
|
|
<tr>
|
|
<td class="text-secondary">
|
|
@header:
|
|
</td>
|
|
<td>
|
|
@Html.Raw(MobileUtils.ToHtml(notice, false))
|
|
</td>
|
|
</tr>
|
|
}
|
|
}
|
|
|
|
@* Unterschrieben *@
|
|
<tr>
|
|
<td class="text-secondary">
|
|
Unterschrieben:
|
|
</td>
|
|
<td>
|
|
@hasSignatureStr
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
if(Model.ServiceRecordPageCount > 1)
|
|
{
|
|
var previousPage = Model.CurrentPage - 1 <= 0 ? 1 : Model.CurrentPage - 1;
|
|
var nextPage = Model.CurrentPage + 1 > Model.ServiceRecordPageCount ? Model.ServiceRecordPageCount : Model.CurrentPage + 1;
|
|
|
|
var page = 1;
|
|
|
|
|
|
if(Model.CurrentPage > 3 && Model.ServiceRecordPageCount > 5)
|
|
{
|
|
page = Model.CurrentPage - 2;
|
|
|
|
if(page > Model.ServiceRecordPageCount - 4)
|
|
{
|
|
page = Model.ServiceRecordPageCount - 4;
|
|
}
|
|
|
|
if(page < 1)
|
|
{
|
|
page = 1;
|
|
}
|
|
}
|
|
|
|
var lastPage = page + 4;
|
|
|
|
if(lastPage > Model.ServiceRecordPageCount)
|
|
{
|
|
lastPage = Model.ServiceRecordPageCount;
|
|
}
|
|
|
|
<nav>
|
|
<ul class="pagination justify-content-center">
|
|
@{
|
|
var previousButtonsClass = Model.CurrentPage == 1 ? "disabled" : string.Empty;
|
|
}
|
|
|
|
<li class="page-item @previousButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToFirstServiceRecordListPage()">
|
|
<span class="fas fa-angle-double-left"></span>
|
|
</button>
|
|
</li>
|
|
<li class="page-item @previousButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToServiceRecordListPage(@previousPage)">
|
|
<span class="fas fa-angle-left"></span>
|
|
</button>
|
|
</li>
|
|
|
|
@for(; page <= lastPage; page++)
|
|
{
|
|
var isActive = Model.CurrentPage == page;
|
|
var activeClass = isActive ? "active" : string.Empty;
|
|
|
|
<li class="page-item @activeClass">
|
|
@if(isActive)
|
|
{
|
|
<span class="page-link" onclick="goToServiceRecordListPage(@page)">
|
|
@page
|
|
<span class="sr-only">(current)</span>
|
|
</span>
|
|
}
|
|
else
|
|
{
|
|
<button type="button" class="page-link" onclick="goToServiceRecordListPage(@page)">@page</button>
|
|
}
|
|
</li>
|
|
}
|
|
@{
|
|
//var nextButtonsClass = Model.CurrentPage == Model.ServiceRecordPageCount || Model.ServiceRecordPageCount < 6 ? "disabled" : string.Empty;
|
|
var nextButtonsClass = Model.CurrentPage == Model.ServiceRecordPageCount ? "disabled" : string.Empty;
|
|
}
|
|
<li class="page-item @nextButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToServiceRecordListPage(@nextPage)">
|
|
<span class="fas fa-angle-right"></span>
|
|
</button>
|
|
</li>
|
|
<li class="page-item @nextButtonsClass">
|
|
<button type="button" class="page-link" tabindex="-1" onclick="goToLastServiceRecordListPage()">
|
|
<span class="fas fa-angle-double-right"></span>
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
}
|
|
}
|
|
|
|
@* Die externe Unterschrift *@
|
|
<div id="external-signature-link-popup" class="modal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog modal-dialog-scrollable" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h6 class="modal-title font-weight-bold">Einmal-Unterschrift</h6>
|
|
<button type="button" class="close" data-dismiss="modal">
|
|
<span>×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="container">
|
|
<div id="external-signature-link-container">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer justify-content-between">
|
|
<a tabindex="0" class="btn btn-primary text-white float-left" role="button" data-placement="top" data-toggle="popover" data-trigger="focus" data-content="Link kopiert!" onclick="copyExternalLinkToClipboard()">
|
|
<i class="fas fa-copy"></i>
|
|
</a>
|
|
<button type="button" class="btn btn-secondary float-right" data-dismiss="modal" onclick="cancelExternalLink()">Abbrechen</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div> |