88 lines
5.2 KiB
Plaintext
88 lines
5.2 KiB
Plaintext
@{
|
|
var nonce = _accessor.HttpContext?.Items["csp-nonce"] as string;
|
|
}
|
|
@using DigitalData.Core.DTO;
|
|
@using EnvelopeGenerator.Application.DTOs;
|
|
@model EnvelopeReceiverDto;
|
|
@{
|
|
ViewData["Title"] = "Dokument unterschreiben";
|
|
}
|
|
<partial name="_CookieConsentPartial" />
|
|
@{
|
|
var envelope = Model.Envelope;
|
|
var document = Model.Envelope?.Documents?.FirstOrDefault();
|
|
var sender = Model.Envelope?.User;
|
|
var pages = document?.Elements?.Select(e => e.Page) ?? Array.Empty<int>();
|
|
var stPageIndexes = string.Join(pages.Count() > 1 ? ", " : "", pages.Take(pages.Count() - 1))
|
|
+ (pages.Count() > 1 ? " und " : "") + pages.LastOrDefault();
|
|
}
|
|
<div class="d-flex flex-column min-vh-100">
|
|
<nav class="navbar navbar-light bg-light">
|
|
<div class="container-fluid">
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="navbar-brand me-auto ms-5 envelope-message">@($"Hallo {Model.Name.TrySanitize(_sanitizer)}, {@envelope?.Message.TrySanitize(_sanitizer)}")</div>
|
|
<div class="col-1 p-0 m-0 me-3 d-flex">
|
|
<img src="~/img/digital_data.svg" alt="...">
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div class="collapse show" id="navbarToggleExternalContent" data-bs-theme="light">
|
|
<div class="bg-light p-1">
|
|
<div class="card sender-card mb-3">
|
|
<div class="row g-0">
|
|
<div class="col p-0 m-0">
|
|
<div class="card-body p-0 m-0 ms-4">
|
|
<h5 class="card-title p-0 m-0">@($"{envelope?.Title.TrySanitize(_sanitizer)}")</h5>
|
|
<p class="card-text p-0 m-0">@($"Sie müssen {(pages.Count())} Vorgang unterzeichen. Bitte prüfen Sie die Seite {stPageIndexes.TrySanitize(_sanitizer)}.")</p>
|
|
<p class="card-text p-0 m-0"><small class="text-body-secondary">Erstellt am @envelope?.AddedWhen von @sender?.Prename.TrySanitize(_sanitizer) @sender?.Name.TrySanitize(_sanitizer). Sie können den Absender über <a href="mailto:@(sender?.Email.TryEncode(_encoder))?subject=@(envelope?.Title.TryEncode(_encoder))&body=Sehr%20geehrter%20@(sender?.Prename.TryEncode(_encoder))%20@(sender?.Name.TryEncode(_encoder)),%0A%0A%0A">@sender?.Email.TryEncode(_encoder)</a> kontaktieren.</small></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="btn-group btn_group position-fixed bottom-0 end-0 d-flex align-items-center" role="group" aria-label="Basic mixed styles example">
|
|
<button class="btn_complete btn btn-primary" type="button">
|
|
<svg class="icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 16">
|
|
<path d="m10.036 8.278 9.258-7.79A1.979 1.979 0 0 0 18 0H2A1.987 1.987 0 0 0 .641.541l9.395 7.737Z" />
|
|
<path d="M11.241 9.817c-.36.275-.801.425-1.255.427-.428 0-.845-.138-1.187-.395L0 2.6V14a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V2.5l-8.759 7.317Z" />
|
|
</svg>
|
|
<span>Abschließen</span>
|
|
</button>
|
|
<button class="btn_refresh btn btn-outline-secondary" type="button">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-arrow-counterclockwise" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2v1z" />
|
|
<path d="M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466z" />
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div id='app' class="flex-grow-1"></div>
|
|
</div>
|
|
<script nonce="@nonce">
|
|
const collapseNav = () => {
|
|
document.addEventListener('click', function (event) {
|
|
var navbarToggle = document.getElementById('navbarToggleExternalContent');
|
|
var navbarButton = document.querySelector('[data-bs-target="#navbarToggleExternalContent"]');
|
|
var isCollapsed = new bootstrap.Collapse(navbarToggle)._isTransitioning;
|
|
|
|
if (!navbarToggle.contains(event.target) && !navbarButton.contains(event.target) && !isCollapsed) {
|
|
new bootstrap.Collapse(navbarToggle).hide();
|
|
}
|
|
});
|
|
}
|
|
@if (ViewData["DocumentBytes"] is byte[] documentBytes)
|
|
{
|
|
var settings = new Newtonsoft.Json.JsonSerializerSettings
|
|
{
|
|
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
|
|
};
|
|
var envelopeReceiverJson = Newtonsoft.Json.JsonConvert.SerializeObject(Model, settings);
|
|
var documentBase64String = Convert.ToBase64String(documentBytes);
|
|
|
|
var envelopeKey = ViewData["EnvelopeKey"] as string;
|
|
|
|
@:document.addEventListener("DOMContentLoaded", async () => await new App("@envelopeKey.TrySanitize(_sanitizer)", @Html.Raw(envelopeReceiverJson.TrySanitize(_sanitizer)), B64ToBuff("@Html.Raw(documentBase64String.TrySanitize(_sanitizer))"), "@ViewData["PSPDFKitLicenseKey"]").init())
|
|
}
|
|
</script> |