Update 20260319

This commit is contained in:
Stefan Hutter
2026-03-19 21:38:36 +01:00
parent 88c3f82472
commit 4460f36891
335 changed files with 165393 additions and 37640 deletions
+9
View File
@@ -267,6 +267,13 @@
<Compile Include="Controllers\ValuesController.cs" />
<Compile Include="Controllers\AntwortAdressController.cs" />
<Compile Include="Controllers\VersandstrasseController.cs" />
<Compile Include="OnDocAPIHome.aspx.cs">
<DependentUpon>OnDocAPIHome.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="OnDocAPIHome.aspx.designer.cs">
<DependentUpon>OnDocAPIHome.aspx</DependentUpon>
</Compile>
<Compile Include="DocGenerators\CreateCLM.cs" />
<Compile Include="dt.aspx.cs">
<DependentUpon>dt.aspx</DependentUpon>
@@ -318,6 +325,7 @@
<Content Include="Content\bootstrap.min.css" />
<Content Include="Content\bootstrap.rtl.css" />
<Content Include="Content\bootstrap.rtl.min.css" />
<Content Include="OnDocAPIHome.aspx" />
<Content Include="dt.aspx" />
<Content Include="favicon.ico" />
<Content Include="Global.asax" />
@@ -347,6 +355,7 @@
<Content Include="Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroup.cshtml" />
<Content Include="Areas\HelpPage\Views\Help\Api.cshtml" />
<Content Include="App_Data\TableConfig.json" />
<Content Include="App_Data\users.json" />
<None Include="Scripts\jquery-3.7.1.intellisense.js" />
<Content Include="Scripts\jquery-3.7.1.js" />
<Content Include="Scripts\jquery-3.7.1.min.js" />
+10
View File
@@ -0,0 +1,10 @@
[
{
"UserID": "admin",
"Password": "1234"
},
{
"UserID": "user1",
"Password": "pass1"
}
]
+188 -110
View File
@@ -21,7 +21,7 @@
padding: 0;
height: 100%;
font-family: Arial;
background: #f4f6f8;
background: #d9d8d4;
}
.page-header {
@@ -54,13 +54,15 @@
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
@@ -129,14 +131,15 @@
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #0d6efd;
padding-top:20px;
padding-bottom:20px;
background-color: #c4c4bc;
padding-top: 10px;
padding-bottom: 10px;
}
.navbar-custom .navbar-brand {
color: white;
color: black;
font-weight: 600;
}
@@ -149,6 +152,35 @@
background: white;
color: #0d6efd;
}
.content {
padding: 30px;
}
/* Cards */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
gap: 10px;
margin-bottom: 10px;
}
.card {
background: white;
padding: 10px;
border-radius: 12px;
box-shadow: 0 10px 20px rgba(0,0,0,0.08);
animation: fadeInUp 0.6s ease;
}
.card h3 {
margin-top: 0;
}
.card:hover {
transform: translateY(-4px);
transition: 0.2s;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
@@ -156,18 +188,19 @@
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand"><h1>CLM</h1>
</span>
<span class="navbar-brand">
<h2>OnDoc-API - CLM-Dokumente</h2>
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-outline-light" onclick="generateFromJson()">
<button class="btn btn-primary" onclick="generateFromJson()">
Generieren
</button>
</div>
@@ -175,13 +208,47 @@
</div>
</nav>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform" >
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<div class="content">
<!-- Dashboard Cards -->
<div class="cards">
<div class="card">
<h3>Selektion</h3>
<p>
Tabelle
<asp:DropDownList
Width="200"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
</div>
</div>
<!-- Schnellzugriff Buttons -->
</div>
<%-- <asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
@@ -195,109 +262,120 @@
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />--%>
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
var jsonText = editor.getValue();
alert("Hallo");
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
<script type="text/javascript">
window.onload = function () {
var isLoggedIn = <%= (Session["LoggedIn"] != null && (bool)Session["LoggedIn"])
? "true"
: "false" %>;
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
if (!isLoggedIn) {
window.location.href = "/OnDocAPIHome.aspx";
}
};
</script>
</body>
</html>
@@ -342,7 +342,7 @@ namespace API_NetFramework.Controllers
apireturn.message = CheckResult;
apireturn.traceid = "";
apireturn.field = "";
paket = null;
//paket = null;
try
{
//return BadRequest(Newtonsoft.Json.JsonConvert.SerializeObject(apireturn));
@@ -360,6 +360,7 @@ namespace API_NetFramework.Controllers
m0.Herkunftsapplikation = paket.Herkunftsapplikation;
Send_Confirmation(ref m0);
paket = null;
//Send_Confirmation(paket.ConfirmationMail, "", "OnDocAPI-Fehler: - CreateDoks - OnDoc-Err-Verify - GUID: " + guid, mailbody+"<br>Fehler: "+CheckResult, false);
return Content(HttpStatusCode.BadRequest, apireturn);
}
@@ -378,6 +379,7 @@ namespace API_NetFramework.Controllers
m1.forceadminmail = true;
m1.Herkunftsapplikation = paket.Herkunftsapplikation;
Send_Confirmation(ref m1);
paket = null;
return Content(HttpStatusCode.BadRequest, apireturn);
}
finally { apireturn = null; apiok = null; };
@@ -934,13 +936,14 @@ namespace API_NetFramework.Controllers
vp.send_onbase_doc = true;
vp.verified = true;
send_vs(ref vp, dokdata.Ersteller, doccreate.VersandDirekt == "true", OwnHost, key.ToString(), dokumentid, doccreate.PartnerNr, null, ref apireturn, doccreate);
if (apireturn.status != "")
if (apireturn.status != "200")
{
vp = null;
vdoc = null;
doccreate = null;
dokdata = null;
//return BadRequest(Newtonsoft.Json.JsonConvert.SerializeObject(apireturn));
return Content(HttpStatusCode.BadRequest, apireturn);
}
}
@@ -965,6 +968,7 @@ namespace API_NetFramework.Controllers
apireturn.message = "Dokument generiert";
apireturn.traceid = "";
apireturn.field = "GUID=" + guid;
mailInhalt m = new mailInhalt();
m.typ = 0;
@@ -979,8 +983,12 @@ namespace API_NetFramework.Controllers
m.forceadminmail = false;
m.Herkunftsapplikation = doccreate.Herkunftsapplikation;
Send_Confirmation(ref m);
return Ok((apireturn));
apiok.code = "200";
apiok.status = "200";
apiok.message = "Dokumentpaket vorbereitet";
apiok.documentid = "";
apiok.file = "";
return Ok((apiok));
}
catch (Exception ex)
{
@@ -2177,6 +2185,7 @@ namespace API_NetFramework.Controllers
Logging.DocLog.Info("Versandpaket vorbereitet", "OnDoc-API", dokumentid, partnernr, "");
if (!direktversenden)
{
apireturn.status = "200";
return;
}
@@ -2215,7 +2224,7 @@ namespace API_NetFramework.Controllers
}
Logging.DocLog.Info("Versandpaket versendet", "OnDoc-API", dokumentid, partnernr, "");
apireturn.status = "200";
return;
}
catch (Exception ex)
@@ -10,8 +10,8 @@ namespace API_NetFramework.Controllers
{
public ActionResult Index()
{
ViewBag.Title = "Home Page";
ViewBag.Title = "OnDocAPI";
return Redirect("/OnDocAPIHome.aspx");
return View();
}
}
+20 -5
View File
@@ -10,11 +10,11 @@
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>
<link href="/Content/bootstrap.min.css" ref="stylesheet" />
<link href="/Scripts/bootstrap532.min.js" rel="stylesheet" />
<%--<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />--%>
<%--<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>--%>
<%--<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>--%>
<style>
html, body {
@@ -225,7 +225,17 @@ padding-bottom:20px;
</div>
<script type="text/javascript">
window.onload = function () {
var isLoggedIn = <%= (Session["LoggedIn"] != null && (bool)Session["LoggedIn"])
? "true"
: "false" %>;
if (!isLoggedIn) {
window.location.href = "/OnDocAPIHome.aspx";
}
};
</script>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
@@ -235,6 +245,8 @@ padding-bottom:20px;
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
@@ -302,6 +314,9 @@ padding-bottom:20px;
id,
function (result) {
editor.setValue(result, -1);
var o = JSON.parse(result) // may throw if json is malformed
result = JSON.stringify(o, null, 4) // 4 is the indent size
editor.session.setValue(result)
},
function (err) {
+261
View File
@@ -0,0 +1,261 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OnDocAPIHome.aspx.cs" Inherits="OnDocAPI_NetFramework.DemoSeite" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Application Dashboard</title>
<style>
body {
margin: 0;
font-family: 'Segoe UI', Arial;
background: #f4f6fb;
}
/* Layout */
.wrapper {
display: flex;
height: 100vh;
}
/* Sidebar */
.sidebar {
width: 240px;
background: #1e293b;
color: white;
padding-top: 30px;
}
.sidebar h2 {
text-align: center;
margin-bottom: 20px;
}
/* Login Box */
.login-box {
padding: 15px 20px;
}
.login-box input {
width: 100%;
padding: 8px;
margin-bottom: 10px;
border-radius: 6px;
border: 1px solid #d1d5db;
box-sizing: border-box;
}
.login-box button {
width: 100%;
padding: 8px;
border: none;
border-radius: 6px;
background: #2563eb;
color: white;
cursor: pointer;
}
.login-box button:hover {
background: #1d4ed8;
}
/* Sidebar Links */
.sidebar a {
display: block;
padding: 14px 30px;
color: #cbd5f5;
text-decoration: none;
}
.sidebar a:hover {
background: #334155;
}
/* Main */
.main {
flex: 1;
display: flex;
flex-direction: column;
}
/* Topbar */
.topbar {
background: white;
padding: 16px 30px;
box-shadow: 0 2px 10px rgba(0,0,0,0.08);
font-size: 18px;
}
/* Content */
.content {
padding: 30px;
}
/* Cards */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
gap: 20px;
margin-bottom: 40px;
}
.card {
background: white;
padding: 25px;
border-radius: 12px;
box-shadow: 0 10px 20px rgba(0,0,0,0.08);
animation: fadeInUp 0.6s ease;
}
.card h3 {
margin-top: 0;
}
.card:hover {
transform: translateY(-4px);
transition: 0.2s;
}
/* Buttons */
.button-area {
background:white;
padding:30px;
border-radius:12px;
box-shadow:0 10px 20px rgba(0,0,0,0.08);
}
.btn {
padding:14px 20px;
border:none;
border-radius:8px;
font-size:15px;
cursor:pointer;
color:white;
margin-top:10px;
width:220px;
}
.btn1 {
background:#6366f1;
}
.btn1:hover {
background:#4f46e5;
}
.btn2 {
background:#10b981;
}
.btn2:hover {
background:#059669;
}
/* Animation */
@keyframes fadeInUp {
from {
opacity:0;
transform:translateY(20px);
}
to {
opacity:1;
transform:translateY(0);
}
}
small {
color: #64748b;
}
/* Login error */
#<%= lblLoginError.ClientID %> {
color: red;
display:block;
margin-bottom:8px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="wrapper">
<!-- Sidebar -->
<div class="sidebar">
<h2>OnDoc-API</h2>
<div class="login-box">
<asp:Label ID="lblLoginError" runat="server"></asp:Label>
<asp:TextBox ID="txtUserID" runat="server" Placeholder="Benutzer-ID"></asp:TextBox>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" Placeholder="Passwort"></asp:TextBox>
<asp:Button ID="btnLogin" runat="server" Text="Anmelden" OnClick="btnLogin_Click"/>
</div>
<%--<a href="#">Dashboard</a>
<a href="#">Statistiken</a>
<a href="#">Benutzer</a>
<a href="#">Einstellungen</a>--%>
</div>
<!-- Main -->
<div class="main">
<div class="topbar">OnDoc-API-Übersicht</div>
<div class="content">
<!-- Dashboard Cards -->
<div class="cards">
<div class="card">
<h3>Aktuelle Zeit</h3>
<p>
<span id="liveClock"></span><br/>
<small id="timezone"></small>
</p>
</div>
<div class="card">
<h3>Version</h3>
<p>
<asp:Label ID="lblVersion" runat="server"></asp:Label>
</p>
</div>
<div class="card">
<h3>API Uptime</h3>
<p>
<asp:Label ID="lblUptime" runat="server"></asp:Label>
</p>
</div>
</div>
<!-- Schnellzugriff Buttons -->
<div class="button-area">
<h2>Schnellzugriff</h2>
<asp:Button ID="Button1" runat="server" Text="CLM-Dokumente" CssClass="btn btn1" OnClick="OpenPage1" Visible="false"/><br/>
<asp:Button ID="Button2" runat="server" Text="Json-Viewer" CssClass="btn btn2" OnClick="OpenPage2" Visible="false"/>
</div>
</div>
</div>
</div>
</form>
<!-- Live Clock Script -->
<script>
function updateClock() {
const now = new Date();
const day = String(now.getDate()).padStart(2, '0');
const month = String(now.getMonth() + 1).padStart(2, '0');
const year = now.getFullYear();
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
const timeString = day + "." + month + "." + year + " " + hours + ":" + minutes + ":" + seconds;
document.getElementById("liveClock").innerText = timeString;
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
document.getElementById("timezone").innerText = tz;
}
setInterval(updateClock, 1000);
updateClock();
</script>
<!-- Server-side Code -->
<script runat="server">
</script>
</body>
</html>
+75
View File
@@ -0,0 +1,75 @@
using Newtonsoft.Json.Linq;
using Swashbuckle.Swagger;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace OnDocAPI_NetFramework
{
public partial class DemoSeite : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblVersion.Text = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
var process = Process.GetCurrentProcess();
TimeSpan uptime = DateTime.Now - process.StartTime;
lblUptime.Text = uptime.Days + "d " + uptime.Hours + "h " + uptime.Minutes + "m " + uptime.Seconds + "s";
}
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string filePath = Server.MapPath("~/App_Data/users.json");
if (!File.Exists(filePath))
{
lblLoginError.Text = "Benutzerdaten nicht gefunden!";
return;
}
string json = File.ReadAllText(filePath);
var serializer = new JavaScriptSerializer();
var users = serializer.Deserialize<List<User>>(json);
string userId = txtUserID.Text.Trim();
string password = txtPassword.Text.Trim();
var user = users.Find(u => u.UserID == userId && u.Password == password);
if (user != null)
{
lblLoginError.Text = "";
Button1.Visible = true;
Button2.Visible = true;
HttpContext.Current.Session["LoggedIn"] = true;
}
else
{
HttpContext.Current.Session["LoggedIn"] = false;
//lblLoginError.Text = "Ungültige Benutzer-ID oder Passwort!";
Button1.Visible = false;
Button2.Visible = false;
}
}
protected void OpenPage1(object sender, EventArgs e) => Response.Redirect("/clm.aspx");
protected void OpenPage2(object sender, EventArgs e) => Response.Redirect("/jsonviewer.aspx");
public class User
{
public string UserID { get; set; }
public string Password { get; set; }
}
}
}
+98
View File
@@ -0,0 +1,98 @@
//------------------------------------------------------------------------------
// <automatisch generiert>
// Dieser Code wurde von einem Tool generiert.
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </automatisch generiert>
//------------------------------------------------------------------------------
namespace OnDocAPI_NetFramework
{
public partial class DemoSeite
{
/// <summary>
/// form1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// lblLoginError-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblLoginError;
/// <summary>
/// txtUserID-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtUserID;
/// <summary>
/// txtPassword-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtPassword;
/// <summary>
/// btnLogin-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button btnLogin;
/// <summary>
/// lblVersion-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblVersion;
/// <summary>
/// lblUptime-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblUptime;
/// <summary>
/// Button1-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button Button1;
/// <summary>
/// Button2-Steuerelement.
/// </summary>
/// <remarks>
/// Automatisch generiertes Feld.
/// Zum Ändern Felddeklaration aus der Designerdatei in eine Code-Behind-Datei verschieben.
/// </remarks>
protected global::System.Web.UI.WebControls.Button Button2;
}
}
+1 -1
View File
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// Sie können alle Werte angeben oder die standardmäßigen Revisions- und Buildnummern
// übernehmen, indem Sie "*" wie folgt verwenden:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.8.2.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -5,13 +5,16 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>E:\Software-Projekte\OnDoc\PubServices\OnDoc</_PublishTargetUrl>
<History>True|2026-03-11T17:28:35.8258686Z||;True|2026-03-11T18:28:14.0116992+01:00||;True|2026-03-11T18:19:41.2917598+01:00||;True|2026-03-11T18:16:14.3982080+01:00||;True|2026-03-11T17:58:30.8611742+01:00||;True|2026-03-09T15:02:39.2942135+01:00||;True|2026-03-09T13:40:46.3543575+01:00||;True|2026-03-09T10:31:33.7382200+01:00||;True|2026-03-08T08:13:35.2118387+01:00||;True|2026-03-07T21:30:15.7021682+01:00||;True|2026-03-07T16:04:27.6676302+01:00||;True|2026-03-03T07:42:58.6695248+01:00||;True|2026-03-02T18:56:44.9083635+01:00||;True|2026-03-02T15:22:04.7632771+01:00||;True|2026-03-02T15:17:19.5888051+01:00||;True|2026-03-02T14:44:15.1850254+01:00||;False|2026-03-02T14:43:43.8750165+01:00||;True|2026-03-02T13:00:06.4813259+01:00||;True|2026-03-02T09:00:14.6639978+01:00||;True|2026-02-26T14:00:46.9137562+01:00||;True|2026-02-26T10:52:44.7996454+01:00||;True|2026-02-26T10:20:38.9297393+01:00||;True|2026-02-26T08:17:22.1709972+01:00||;True|2026-02-26T08:01:54.5490566+01:00||;True|2026-02-26T07:56:47.9173498+01:00||;True|2026-02-26T05:50:34.4180646+01:00||;True|2026-02-25T16:00:31.8051644+01:00||;True|2026-02-25T15:40:22.6200444+01:00||;True|2026-02-25T15:32:39.6209326+01:00||;True|2026-02-25T15:03:49.5202958+01:00||;True|2026-02-25T14:49:40.4560899+01:00||;True|2026-02-25T10:41:35.9042956+01:00||;True|2026-02-25T10:33:42.2485129+01:00||;True|2026-02-25T10:05:23.9864404+01:00||;True|2026-02-24T20:45:52.7533529+01:00||;True|2026-02-24T17:49:48.6739610+01:00||;True|2026-02-24T14:30:47.0663499+01:00||;True|2026-02-24T09:28:30.5328425+01:00||;True|2026-02-24T08:40:15.6054714+01:00||;True|2026-02-24T07:59:34.6469067+01:00||;True|2026-02-24T07:30:03.4506392+01:00||;True|2026-02-23T08:26:05.4681353+01:00||;True|2026-02-22T10:44:29.6270572+01:00||;True|2026-02-22T10:41:26.3016875+01:00||;True|2026-02-22T10:30:20.0395713+01:00||;True|2026-02-22T10:06:09.3728289+01:00||;True|2026-02-20T11:11:41.2906293+01:00||;True|2026-02-20T10:46:35.4015642+01:00||;True|2026-02-20T09:45:14.8833885+01:00||;True|2026-02-20T07:32:39.1940489+01:00||;True|2026-02-18T09:12:43.1434580+01:00||;True|2026-02-17T15:15:14.8805757+01:00||;True|2026-02-17T11:09:40.4786451+01:00||;True|2026-02-17T10:45:37.3358353+01:00||;True|2026-02-17T10:33:30.6184470+01:00||;True|2026-02-16T18:55:30.1424518+01:00||;True|2026-02-16T18:01:46.0478978+01:00||;True|2026-02-16T14:51:53.3273467+01:00||;True|2026-02-16T14:12:09.6130777+01:00||;True|2026-02-16T11:21:18.5769808+01:00||;True|2026-02-16T10:08:08.4277947+01:00||;True|2026-02-16T09:52:01.8749049+01:00||;True|2026-02-16T08:13:22.5356518+01:00||;True|2026-02-13T12:36:18.0536988+01:00||;True|2026-02-13T07:29:34.9460520+01:00||;True|2026-02-13T07:27:07.4597689+01:00||;True|2026-02-13T07:23:53.8686289+01:00||;True|2026-02-13T07:21:55.2559788+01:00||;True|2026-02-13T07:19:52.5556550+01:00||;True|2026-02-13T07:18:16.9005327+01:00||;False|2026-02-13T07:17:55.2943268+01:00||;True|2026-02-13T07:16:44.2373881+01:00||;True|2026-02-13T07:14:10.2117483+01:00||;True|2026-02-13T07:06:07.9920856+01:00||;True|2026-02-13T06:48:45.3887087+01:00||;True|2026-02-12T09:21:36.9475377+01:00||;True|2026-02-11T09:09:26.3046534+01:00||;True|2026-02-09T12:16:03.1919757+01:00||;True|2026-02-09T10:52:16.6031577+01:00||;True|2026-02-09T10:43:50.3235884+01:00||;True|2026-02-09T10:32:56.5607905+01:00||;True|2026-02-09T09:28:25.4932552+01:00||;True|2026-02-09T09:11:35.2661821+01:00||;True|2026-02-09T09:09:05.8813514+01:00||;True|2026-02-09T08:54:25.9191904+01:00||;True|2026-02-09T08:41:16.2561697+01:00||;True|2026-02-09T08:22:16.8766070+01:00||;True|2026-02-09T08:09:42.8971751+01:00||;True|2026-02-08T11:04:49.3984275+01:00||;True|2026-02-08T11:00:30.1676134+01:00||;True|2026-02-08T10:02:58.9814683+01:00||;True|2026-02-08T09:53:57.1672910+01:00||;True|2026-02-08T09:50:45.8178289+01:00||;True|2026-02-08T09:47:06.6864472+01:00||;True|2026-02-08T09:44:42.9541012+01:00||;True|2026-02-08T09:44:34.5282303+01:00||;True|2026-02-08T09:42:53.1642218+01:00||;True|2026-02-07T20:47:10.6440687+01:00||;True|2026-02-07T20:45:09.1431081+01:00||;True|2026-02-07T20:43:29.6280085+01:00||;</History>
<History>True|2026-03-19T20:38:10.9526034Z||;True|2026-03-18T17:41:36.3493613+01:00||;True|2026-03-18T14:58:36.6641588+01:00||;True|2026-03-18T13:36:39.6754082+01:00||;True|2026-03-18T13:28:13.3767791+01:00||;True|2026-03-18T12:39:58.8696214+01:00||;True|2026-03-18T10:12:19.4421254+01:00||;True|2026-03-18T09:23:32.7324650+01:00||;True|2026-03-18T08:30:31.0127326+01:00||;True|2026-03-17T16:29:03.7106180+01:00||;True|2026-03-17T16:11:10.6005495+01:00||;True|2026-03-17T15:59:13.2348406+01:00||;True|2026-03-17T15:31:12.0317447+01:00||;True|2026-03-17T14:48:40.3877203+01:00||;True|2026-03-17T14:11:25.3562261+01:00||;True|2026-03-17T13:47:11.1326741+01:00||;True|2026-03-16T15:31:10.2555705+01:00||;True|2026-03-16T14:12:19.6773991+01:00||;True|2026-03-16T13:55:53.2937690+01:00||;True|2026-03-16T13:49:40.9223505+01:00||;True|2026-03-16T13:45:46.5476155+01:00||;True|2026-03-16T10:05:17.8849739+01:00||;True|2026-03-16T09:50:03.0002779+01:00||;True|2026-03-15T17:59:21.9961152+01:00||;True|2026-03-15T17:55:23.9254472+01:00||;False|2026-03-15T17:55:17.4934783+01:00||;True|2026-03-15T17:30:56.4581787+01:00||;True|2026-03-15T17:27:23.6999475+01:00||;True|2026-03-15T17:06:43.4082140+01:00||;True|2026-03-15T16:47:00.3514115+01:00||;True|2026-03-15T15:08:09.6821523+01:00||;True|2026-03-12T16:06:53.7395894+01:00||;True|2026-03-11T18:52:45.1428118+01:00||;True|2026-03-11T18:28:35.8258686+01:00||;True|2026-03-11T18:28:14.0116992+01:00||;True|2026-03-11T18:19:41.2917598+01:00||;True|2026-03-11T18:16:14.3982080+01:00||;True|2026-03-11T17:58:30.8611742+01:00||;True|2026-03-09T15:02:39.2942135+01:00||;True|2026-03-09T13:40:46.3543575+01:00||;True|2026-03-09T10:31:33.7382200+01:00||;True|2026-03-08T08:13:35.2118387+01:00||;True|2026-03-07T21:30:15.7021682+01:00||;True|2026-03-07T16:04:27.6676302+01:00||;True|2026-03-03T07:42:58.6695248+01:00||;True|2026-03-02T18:56:44.9083635+01:00||;True|2026-03-02T15:22:04.7632771+01:00||;True|2026-03-02T15:17:19.5888051+01:00||;True|2026-03-02T14:44:15.1850254+01:00||;False|2026-03-02T14:43:43.8750165+01:00||;True|2026-03-02T13:00:06.4813259+01:00||;True|2026-03-02T09:00:14.6639978+01:00||;True|2026-02-26T14:00:46.9137562+01:00||;True|2026-02-26T10:52:44.7996454+01:00||;True|2026-02-26T10:20:38.9297393+01:00||;True|2026-02-26T08:17:22.1709972+01:00||;True|2026-02-26T08:01:54.5490566+01:00||;True|2026-02-26T07:56:47.9173498+01:00||;True|2026-02-26T05:50:34.4180646+01:00||;True|2026-02-25T16:00:31.8051644+01:00||;True|2026-02-25T15:40:22.6200444+01:00||;True|2026-02-25T15:32:39.6209326+01:00||;True|2026-02-25T15:03:49.5202958+01:00||;True|2026-02-25T14:49:40.4560899+01:00||;True|2026-02-25T10:41:35.9042956+01:00||;True|2026-02-25T10:33:42.2485129+01:00||;True|2026-02-25T10:05:23.9864404+01:00||;True|2026-02-24T20:45:52.7533529+01:00||;True|2026-02-24T17:49:48.6739610+01:00||;True|2026-02-24T14:30:47.0663499+01:00||;True|2026-02-24T09:28:30.5328425+01:00||;True|2026-02-24T08:40:15.6054714+01:00||;True|2026-02-24T07:59:34.6469067+01:00||;True|2026-02-24T07:30:03.4506392+01:00||;True|2026-02-23T08:26:05.4681353+01:00||;True|2026-02-22T10:44:29.6270572+01:00||;True|2026-02-22T10:41:26.3016875+01:00||;True|2026-02-22T10:30:20.0395713+01:00||;True|2026-02-22T10:06:09.3728289+01:00||;True|2026-02-20T11:11:41.2906293+01:00||;True|2026-02-20T10:46:35.4015642+01:00||;True|2026-02-20T09:45:14.8833885+01:00||;True|2026-02-20T07:32:39.1940489+01:00||;True|2026-02-18T09:12:43.1434580+01:00||;True|2026-02-17T15:15:14.8805757+01:00||;True|2026-02-17T11:09:40.4786451+01:00||;True|2026-02-17T10:45:37.3358353+01:00||;True|2026-02-17T10:33:30.6184470+01:00||;True|2026-02-16T18:55:30.1424518+01:00||;True|2026-02-16T18:01:46.0478978+01:00||;True|2026-02-16T14:51:53.3273467+01:00||;True|2026-02-16T14:12:09.6130777+01:00||;True|2026-02-16T11:21:18.5769808+01:00||;True|2026-02-16T10:08:08.4277947+01:00||;True|2026-02-16T09:52:01.8749049+01:00||;True|2026-02-16T08:13:22.5356518+01:00||;True|2026-02-13T12:36:18.0536988+01:00||;True|2026-02-13T07:29:34.9460520+01:00||;True|2026-02-13T07:27:07.4597689+01:00||;True|2026-02-13T07:23:53.8686289+01:00||;</History>
<LastFailureDetails />
</PropertyGroup>
<ItemGroup>
<File Include="App_Data/TableConfig.json">
<publishTime>03/07/2026 13:31:30</publishTime>
</File>
<File Include="App_Data/users.json">
<publishTime>03/12/2026 17:43:43</publishTime>
</File>
<File Include="Areas/HelpPage/HelpPage.css">
<publishTime>03/06/2024 09:20:46</publishTime>
</File>
@@ -85,10 +88,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>06/02/2026 17:20:00</publishTime>
</File>
<File Include="bin/BarcodeLib.dll">
<publishTime>03/11/2026 18:09:30</publishTime>
<publishTime>03/18/2026 17:57:14</publishTime>
</File>
<File Include="bin/BarcodeLib.pdb">
<publishTime>03/11/2026 18:09:30</publishTime>
<publishTime>03/18/2026 17:57:14</publishTime>
</File>
<File Include="bin/CSVNET.dll">
<publishTime>02/03/2026 12:58:54</publishTime>
@@ -97,13 +100,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/03/2026 12:58:54</publishTime>
</File>
<File Include="bin/Database.dll">
<publishTime>03/11/2026 18:27:46</publishTime>
<publishTime>03/18/2026 17:51:04</publishTime>
</File>
<File Include="bin/Database.dll.config">
<publishTime>09/18/2025 08:15:15</publishTime>
</File>
<File Include="bin/Database.pdb">
<publishTime>03/11/2026 18:27:46</publishTime>
<publishTime>03/18/2026 17:51:04</publishTime>
</File>
<File Include="bin/DataMatrix.net.dll">
<publishTime>02/03/2026 12:58:54</publishTime>
@@ -142,13 +145,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>10/20/2023 22:35:04</publishTime>
</File>
<File Include="bin/DOCGEN.dll">
<publishTime>03/11/2026 18:28:12</publishTime>
<publishTime>03/19/2026 21:38:09</publishTime>
</File>
<File Include="bin/DOCGEN.dll.config">
<publishTime>03/11/2026 15:59:42</publishTime>
</File>
<File Include="bin/DOCGEN.pdb">
<publishTime>03/11/2026 18:28:12</publishTime>
<publishTime>03/19/2026 21:38:09</publishTime>
</File>
<File Include="bin/FastReport.Bars.dll">
<publishTime>11/27/2023 09:49:58</publishTime>
@@ -166,22 +169,22 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>11/27/2023 09:50:04</publishTime>
</File>
<File Include="bin/Helper.dll">
<publishTime>03/11/2026 18:27:45</publishTime>
<publishTime>03/18/2026 10:12:08</publishTime>
</File>
<File Include="bin/Helper.pdb">
<publishTime>03/11/2026 18:27:45</publishTime>
<publishTime>03/18/2026 10:12:08</publishTime>
</File>
<File Include="bin/libSkiaSharp.dylib">
<publishTime>06/02/2026 09:22:08</publishTime>
</File>
<File Include="bin/Logging.dll">
<publishTime>03/11/2026 18:24:26</publishTime>
<publishTime>03/18/2026 10:12:08</publishTime>
</File>
<File Include="bin/Logging.dll.config">
<publishTime>09/17/2025 15:09:13</publishTime>
</File>
<File Include="bin/Logging.pdb">
<publishTime>03/11/2026 18:24:26</publishTime>
<publishTime>03/18/2026 10:12:08</publishTime>
</File>
<File Include="bin/Microsoft.AspNetCore.Http.Abstractions.dll">
<publishTime>12/11/2018 18:29:00</publishTime>
@@ -229,10 +232,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>11/04/2022 19:09:46</publishTime>
</File>
<File Include="bin/Model.dll">
<publishTime>03/11/2026 18:27:45</publishTime>
<publishTime>03/18/2026 17:50:58</publishTime>
</File>
<File Include="bin/Model.pdb">
<publishTime>03/11/2026 18:27:45</publishTime>
<publishTime>03/18/2026 17:50:58</publishTime>
</File>
<File Include="bin/MW6.SDK.dll">
<publishTime>08/19/2014 21:33:57</publishTime>
@@ -253,10 +256,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/28/2026 16:23:58</publishTime>
</File>
<File Include="bin/OfficePrinter.dll">
<publishTime>03/11/2026 18:12:25</publishTime>
<publishTime>03/18/2026 12:53:27</publishTime>
</File>
<File Include="bin/OfficePrinter.pdb">
<publishTime>03/11/2026 18:12:25</publishTime>
<publishTime>03/18/2026 12:53:27</publishTime>
</File>
<File Include="bin/OfficeToPDFConverter.dll">
<publishTime>02/03/2026 12:58:53</publishTime>
@@ -265,16 +268,16 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>02/03/2026 12:58:53</publishTime>
</File>
<File Include="bin/OnDocOffice.dll">
<publishTime>03/11/2026 18:28:11</publishTime>
<publishTime>03/19/2026 21:38:09</publishTime>
</File>
<File Include="bin/OnDocOffice.pdb">
<publishTime>03/11/2026 18:28:11</publishTime>
<publishTime>03/19/2026 21:38:09</publishTime>
</File>
<File Include="bin/OnDoc_NetFramework.dll">
<publishTime>03/11/2026 18:28:12</publishTime>
<publishTime>03/19/2026 21:38:09</publishTime>
</File>
<File Include="bin/OnDoc_NetFramework.pdb">
<publishTime>03/11/2026 18:28:12</publishTime>
<publishTime>03/19/2026 21:38:09</publishTime>
</File>
<File Include="bin/Owin.dll">
<publishTime>11/13/2012 13:19:34</publishTime>
@@ -379,31 +382,34 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>08/07/2017 03:30:56</publishTime>
</File>
<File Include="bin/Syncfusion.Compression.Base.dll">
<publishTime>08/01/2025 12:18:28</publishTime>
<publishTime>02/02/2026 08:57:48</publishTime>
</File>
<File Include="bin/Syncfusion.DocIO.Base.dll">
<publishTime>08/01/2025 12:21:18</publishTime>
</File>
<File Include="bin/Syncfusion.DocToPDFConverter.Base.dll">
<publishTime>08/01/2025 12:24:08</publishTime>
<publishTime>02/02/2026 09:05:36</publishTime>
</File>
<File Include="bin/Syncfusion.ExcelToPDFConverter.Base.dll">
<publishTime>08/01/2025 12:29:16</publishTime>
<publishTime>02/02/2026 09:12:50</publishTime>
</File>
<File Include="bin/Syncfusion.Licensing.dll">
<publishTime>08/01/2025 12:14:22</publishTime>
<publishTime>02/02/2026 08:52:48</publishTime>
</File>
<File Include="bin/Syncfusion.Markdown.dll">
<publishTime>02/02/2026 09:00:38</publishTime>
</File>
<File Include="bin/Syncfusion.OfficeChart.Base.dll">
<publishTime>08/01/2025 12:19:40</publishTime>
<publishTime>02/02/2026 08:59:18</publishTime>
</File>
<File Include="bin/Syncfusion.Pdf.Base.dll">
<publishTime>08/01/2025 12:23:02</publishTime>
<publishTime>02/02/2026 09:03:38</publishTime>
</File>
<File Include="bin/Syncfusion.Presentation.Base.dll">
<publishTime>08/01/2025 12:28:16</publishTime>
<publishTime>02/02/2026 09:11:40</publishTime>
</File>
<File Include="bin/Syncfusion.XlsIO.Base.dll">
<publishTime>08/01/2025 12:25:24</publishTime>
<publishTime>02/02/2026 09:07:00</publishTime>
</File>
<File Include="bin/System.Buffers.dll">
<publishTime>02/19/2020 11:05:18</publishTime>
@@ -490,10 +496,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>03/04/2026 16:33:51</publishTime>
</File>
<File Include="bin/Versandstrasse.dll">
<publishTime>03/11/2026 18:19:04</publishTime>
<publishTime>03/15/2026 16:40:15</publishTime>
</File>
<File Include="bin/Versandstrasse.pdb">
<publishTime>03/11/2026 18:19:04</publishTime>
<publishTime>03/15/2026 16:40:15</publishTime>
</File>
<File Include="bin/WebActivatorEx.dll">
<publishTime>05/10/2016 15:11:52</publishTime>
@@ -508,7 +514,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>06/02/2026 17:20:00</publishTime>
</File>
<File Include="CLM.aspx">
<publishTime>03/08/2026 08:49:56</publishTime>
<publishTime>03/17/2026 13:46:05</publishTime>
</File>
<File Include="Content/bootstrap-grid.css">
<publishTime>03/06/2024 09:16:17</publishTime>
@@ -622,7 +628,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>07/19/2024 12:25:43</publishTime>
</File>
<File Include="JSONViewer.aspx">
<publishTime>03/07/2026 19:26:47</publishTime>
<publishTime>03/17/2026 13:41:56</publishTime>
</File>
<File Include="OnDocAPIHome.aspx">
<publishTime>01/01/0001 00:00:00</publishTime>
</File>
<File Include="Scripts/bootstrap.bundle.js">
<publishTime>03/06/2024 09:16:14</publishTime>
@@ -688,7 +697,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>01/10/2024 20:21:44</publishTime>
</File>
<File Include="Views/Home/Index.cshtml">
<publishTime>03/07/2026 12:46:11</publishTime>
<publishTime>03/13/2026 09:58:47</publishTime>
</File>
<File Include="Views/Shared/Error.cshtml">
<publishTime>03/06/2024 08:11:55</publishTime>
@@ -697,13 +706,13 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<publishTime>04/14/2025 18:11:03</publishTime>
</File>
<File Include="Views/Web.config">
<publishTime>07/19/2024 12:25:43</publishTime>
<publishTime>03/13/2026 10:00:16</publishTime>
</File>
<File Include="Views/_ViewStart.cshtml">
<publishTime>03/06/2024 08:11:55</publishTime>
</File>
<File Include="Web.config">
<publishTime>03/11/2026 18:16:13</publishTime>
<publishTime>03/18/2026 10:12:18</publishTime>
</File>
</ItemGroup>
</Project>
+1
View File
@@ -31,6 +31,7 @@
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
<system.web>
Binary file not shown.
Binary file not shown.
+20
View File
@@ -4,6 +4,26 @@
<name>DOCGEN</name>
</assembly>
<members>
<member name="M:DOCGEN.Klassen.SyncFWord.ReplaceLineBreakWithPara(Syncfusion.DocIO.DLS.WordDocument)">
<summary>
Replace the line breaks with paragraph marks in the Word document.
</summary>
</member>
<member name="M:DOCGEN.Klassen.SyncFWord.IterateTextBody(Syncfusion.DocIO.DLS.WTextBody)">
<summary>
Iterate text body child elements.
</summary>
</member>
<member name="M:DOCGEN.Klassen.SyncFWord.IterateTable1(Syncfusion.DocIO.DLS.WTable)">
<summary>
Iterate table child elements.
</summary>
</member>
<member name="M:DOCGEN.Klassen.SyncFWord.IterateParagraphItems(Syncfusion.DocIO.DLS.ParagraphItemCollection)">
<summary>
Iterate paragraph child elements.
</summary>
</member>
<member name="M:DOCGEN.Klassen.SyncFWord.DocToPDF(System.String)">
<summary>Word to PDF-Konverter</summary>
<remarks>Das sind die Remarks</remarks>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -1 +1 @@
03f618b2dfc5f393b66a9ae6511309a83729393b6f45a1f633a74efbbfb6c43b
0358c1c86ae90780049baadd92e8b1a6c37002f6fdab06531303b154229e8122
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,54 @@
{
"tables": [
{
"key": "Ondoc_Versandstrasse_Paket",
"displayName": "Ondoc_Versandstrasse_Paket",
"sqlList": "SELECT ID, erstellt_am as Name from Ondoc_Versandstrasse_Paket order by Id desc",
"sqlById": "SELECT paket as JsonData from Ondoc_Versandstrasse_Paket where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData",
"Buttons": "Öffnen",
"AnzeigeDokument": "",
"FilterColumns": ""
},
{
"key": "NLOGApiDoc",
"displayName": "APIDoc",
"sqlList": "SELECT ID, CreatedOn, GUID from edoka_journale.dbo.nlogapidoc where message='Input JSON' and isnull(div,'')<>'' order by Id desc",
"sqlById": "SELECT div as JsonData from edoka_journale.dbo.nlogapidoc where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData",
"Buttons": "Öffnen",
"AnzeigeDokument": "",
"FilterColumns": "GUID"
},
{
"key": "CLMDokumente",
"displayName": "CLM-Dokumente",
"sqlList": "SELECT ID, clmdokumentid as CLM_ID, GUID, Erstellt_Am, Aktiv, Archivstatus, Archiviert from ondoc_clm_dokumente [FILTER] order by Id desc",
"sqlById": "SELECT jsondata as JsonData from ondoc_clm_dokumente where id= @id ",
"idField": "ID",
"displayField": "ID",
"jsonField": "JsonData",
"Buttons": "Öffnen;Anzeigen",
"AnzeigeDokument": "SELECT dbo.BinaryToBase64(dokument) FROM dbo.OnDoc_CLM_Dokumente INNER JOIN dbo.Doks ON dbo.OnDoc_CLM_Dokumente.dokumentid = dbo.Doks.DokumentID where dbo.ondoc_clm_dokumente.id=@id",
"FilterColumns": "clmdokumentid;archivstatus"
},
{
"key": "CLMJournal",
"displayName": "CLM-Journal",
"sqlList": "SELECT ID, clmdokumentid as CLM_ID, Dokumentid, GUID, Erstellt_Am, Aktiv, Archivstatus, Archiviert, Archiviert_am from ondoc_clm_dokumente [FILTER] order by Id desc",
"sqlById": " ",
"idField": "ID",
"displayField": "ID",
"jsonField": "",
"Buttons": "Anzeigen",
"AnzeigeDokument": "SELECT dbo.BinaryToBase64(dokument) FROM dbo.OnDoc_CLM_Dokumente INNER JOIN dbo.Doks ON dbo.OnDoc_CLM_Dokumente.dokumentid = dbo.Doks.DokumentID where dbo.ondoc_clm_dokumente.id=@id",
"FilterColumns": "clmdokumentid;archivstatus;dokumentid"
}
]
}
@@ -0,0 +1,10 @@
[
{
"UserID": "admin",
"Password": "1234"
},
{
"UserID": "user1",
"Password": "pass1"
}
]
@@ -0,0 +1,134 @@
.help-page h1,
.help-page .h1,
.help-page h2,
.help-page .h2,
.help-page h3,
.help-page .h3,
#body.help-page,
.help-page-table th,
.help-page-table pre,
.help-page-table p {
font-family: "Segoe UI Light", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif;
}
.help-page pre.wrapped {
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
white-space: pre-wrap;
}
.help-page .warning-message-container {
margin-top: 20px;
padding: 0 10px;
color: #525252;
background: #EFDCA9;
border: 1px solid #CCCCCC;
}
.help-page-table {
width: 100%;
border-collapse: collapse;
text-align: left;
margin: 0px 0px 20px 0px;
border-top: 1px solid #D4D4D4;
}
.help-page-table th {
text-align: left;
font-weight: bold;
border-bottom: 1px solid #D4D4D4;
padding: 5px 6px 5px 6px;
}
.help-page-table td {
border-bottom: 1px solid #D4D4D4;
padding: 10px 8px 10px 8px;
vertical-align: top;
}
.help-page-table pre,
.help-page-table p {
margin: 0px;
padding: 0px;
font-family: inherit;
font-size: 100%;
}
.help-page-table tbody tr:hover td {
background-color: #F3F3F3;
}
.help-page a:hover {
background-color: transparent;
}
.help-page .sample-header {
border: 2px solid #D4D4D4;
background: #00497E;
color: #FFFFFF;
padding: 8px 15px;
border-bottom: none;
display: inline-block;
margin: 10px 0px 0px 0px;
}
.help-page .sample-content {
display: block;
border-width: 0;
padding: 15px 20px;
background: #FFFFFF;
border: 2px solid #D4D4D4;
margin: 0px 0px 10px 0px;
}
.help-page .api-name {
width: 40%;
}
.help-page .api-documentation {
width: 60%;
}
.help-page .parameter-name {
width: 20%;
}
.help-page .parameter-documentation {
width: 40%;
}
.help-page .parameter-type {
width: 20%;
}
.help-page .parameter-annotations {
width: 20%;
}
.help-page h1,
.help-page .h1 {
font-size: 36px;
line-height: normal;
}
.help-page h2,
.help-page .h2 {
font-size: 24px;
}
.help-page h3,
.help-page .h3 {
font-size: 20px;
}
#body.help-page {
font-size: 14px;
line-height: 143%;
color: #333;
}
.help-page a {
color: #0000EE;
text-decoration: none;
}
@@ -0,0 +1,22 @@
@using System.Web.Http
@using API_NetFramework.Areas.HelpPage.Models
@model HelpPageApiModel
@{
var description = Model.ApiDescription;
ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath;
}
<link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
<div id="body" class="help-page">
<section class="featured">
<div class="content-wrapper">
<p>
@Html.ActionLink("Help Page Home", "Index")
</p>
</div>
</section>
<section class="content-wrapper main-content clear-fix">
@Html.DisplayForModel()
</section>
</div>
@@ -0,0 +1,41 @@
@using System.Web.Http
@using System.Web.Http.Controllers
@using System.Web.Http.Description
@using API_NetFramework.Areas.HelpPage
@using API_NetFramework.Areas.HelpPage.Models
@model IGrouping<HttpControllerDescriptor, ApiDescription>
@{
var controllerDocumentation = ViewBag.DocumentationProvider != null ?
ViewBag.DocumentationProvider.GetDocumentation(Model.Key) :
null;
}
<h2 id="@Model.Key.ControllerName">@Model.Key.ControllerName</h2>
@if (!String.IsNullOrEmpty(controllerDocumentation))
{
<p>@controllerDocumentation</p>
}
<table class="help-page-table">
<thead>
<tr><th>API</th><th>Description</th></tr>
</thead>
<tbody>
@foreach (var api in Model)
{
<tr>
<td class="api-name"><a href="@Url.Action("Api", "Help", new { apiId = api.GetFriendlyId() })">@api.HttpMethod.Method @api.RelativePath</a></td>
<td class="api-documentation">
@if (api.Documentation != null)
{
<p>@api.Documentation</p>
}
else
{
<p>No documentation available.</p>
}
</td>
</tr>
}
</tbody>
</table>
@@ -0,0 +1,6 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model CollectionModelDescription
@if (Model.ElementDescription is ComplexTypeModelDescription)
{
@Html.DisplayFor(m => m.ElementDescription)
}
@@ -0,0 +1,3 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model ComplexTypeModelDescription
@Html.DisplayFor(m => m.Properties, "Parameters")
@@ -0,0 +1,4 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model DictionaryModelDescription
Dictionary of @Html.DisplayFor(m => Model.KeyModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.KeyModelDescription }) [key]
and @Html.DisplayFor(m => Model.ValueModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ValueModelDescription }) [value]
@@ -0,0 +1,24 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model EnumTypeModelDescription
<p>Possible enumeration values:</p>
<table class="help-page-table">
<thead>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
</thead>
<tbody>
@foreach (EnumValueDescription value in Model.Values)
{
<tr>
<td class="enum-name"><b>@value.Name</b></td>
<td class="enum-value">
<p>@value.Value</p>
</td>
<td class="enum-description">
<p>@value.Documentation</p>
</td>
</tr>
}
</tbody>
</table>
@@ -0,0 +1,67 @@
@using System.Web.Http
@using System.Web.Http.Description
@using API_NetFramework.Areas.HelpPage.Models
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model HelpPageApiModel
@{
ApiDescription description = Model.ApiDescription;
}
<h1>@description.HttpMethod.Method @description.RelativePath</h1>
<div>
<p>@description.Documentation</p>
<h2>Request Information</h2>
<h3>URI Parameters</h3>
@Html.DisplayFor(m => m.UriParameters, "Parameters")
<h3>Body Parameters</h3>
<p>@Model.RequestDocumentation</p>
@if (Model.RequestModelDescription != null)
{
@Html.DisplayFor(m => m.RequestModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.RequestModelDescription })
if (Model.RequestBodyParameters != null)
{
@Html.DisplayFor(m => m.RequestBodyParameters, "Parameters")
}
}
else
{
<p>None.</p>
}
@if (Model.SampleRequests.Count > 0)
{
<h3>Request Formats</h3>
@Html.DisplayFor(m => m.SampleRequests, "Samples")
}
<h2>Response Information</h2>
<h3>Resource Description</h3>
<p>@description.ResponseDescription.Documentation</p>
@if (Model.ResourceDescription != null)
{
@Html.DisplayFor(m => m.ResourceDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ResourceDescription })
if (Model.ResourceProperties != null)
{
@Html.DisplayFor(m => m.ResourceProperties, "Parameters")
}
}
else
{
<p>None.</p>
}
@if (Model.SampleResponses.Count > 0)
{
<h3>Response Formats</h3>
@Html.DisplayFor(m => m.SampleResponses, "Samples")
}
</div>
@@ -0,0 +1,4 @@
@using API_NetFramework.Areas.HelpPage
@model ImageSample
<img src="@Model.Src" />
@@ -0,0 +1,13 @@
@using API_NetFramework.Areas.HelpPage
@model InvalidSample
@if (HttpContext.Current.IsDebuggingEnabled)
{
<div class="warning-message-container">
<p>@Model.ErrorMessage</p>
</div>
}
else
{
<p>Sample not available.</p>
}
@@ -0,0 +1,4 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model KeyValuePairModelDescription
Pair of @Html.DisplayFor(m => Model.KeyModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.KeyModelDescription }) [key]
and @Html.DisplayFor(m => Model.ValueModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ValueModelDescription }) [value]
@@ -0,0 +1,26 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model Type
@{
ModelDescription modelDescription = ViewBag.modelDescription;
if (modelDescription is ComplexTypeModelDescription || modelDescription is EnumTypeModelDescription)
{
if (Model == typeof(Object))
{
@:Object
}
else
{
@Html.ActionLink(modelDescription.Name, "ResourceModel", "Help", new { modelName = modelDescription.Name }, null)
}
}
else if (modelDescription is CollectionModelDescription)
{
var collectionDescription = modelDescription as CollectionModelDescription;
var elementDescription = collectionDescription.ElementDescription;
@:Collection of @Html.DisplayFor(m => elementDescription.ModelType, "ModelDescriptionLink", new { modelDescription = elementDescription })
}
else
{
@Html.DisplayFor(m => modelDescription)
}
}
@@ -0,0 +1,48 @@
@using System.Collections.Generic
@using System.Collections.ObjectModel
@using System.Web.Http.Description
@using System.Threading
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model IList<ParameterDescription>
@if (Model.Count > 0)
{
<table class="help-page-table">
<thead>
<tr><th>Name</th><th>Description</th><th>Type</th><th>Additional information</th></tr>
</thead>
<tbody>
@foreach (ParameterDescription parameter in Model)
{
ModelDescription modelDescription = parameter.TypeDescription;
<tr>
<td class="parameter-name">@parameter.Name</td>
<td class="parameter-documentation">
<p>@parameter.Documentation</p>
</td>
<td class="parameter-type">
@Html.DisplayFor(m => modelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = modelDescription })
</td>
<td class="parameter-annotations">
@if (parameter.Annotations.Count > 0)
{
foreach (var annotation in parameter.Annotations)
{
<p>@annotation.Documentation</p>
}
}
else
{
<p>None.</p>
}
</td>
</tr>
}
</tbody>
</table>
}
else
{
<p>None.</p>
}
@@ -0,0 +1,30 @@
@using System.Net.Http.Headers
@model Dictionary<MediaTypeHeaderValue, object>
@{
// Group the samples into a single tab if they are the same.
Dictionary<string, object> samples = Model.GroupBy(pair => pair.Value).ToDictionary(
pair => String.Join(", ", pair.Select(m => m.Key.ToString()).ToArray()),
pair => pair.Key);
var mediaTypes = samples.Keys;
}
<div>
@foreach (var mediaType in mediaTypes)
{
<h4 class="sample-header">@mediaType</h4>
<div class="sample-content">
<span><b>Sample:</b></span>
@{
var sample = samples[mediaType];
if (sample == null)
{
<p>Sample not available.</p>
}
else
{
@Html.DisplayFor(s => sample);
}
}
</div>
}
</div>
@@ -0,0 +1,3 @@
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model SimpleTypeModelDescription
@Model.Documentation
@@ -0,0 +1,6 @@
@using API_NetFramework.Areas.HelpPage
@model TextSample
<pre class="wrapped">
@Model.Text
</pre>
@@ -0,0 +1,38 @@
@using System.Web.Http
@using System.Web.Http.Controllers
@using System.Web.Http.Description
@using System.Collections.ObjectModel
@using API_NetFramework.Areas.HelpPage.Models
@model Collection<ApiDescription>
@{
ViewBag.Title = "ASP.NET Web API Help Page";
// Group APIs by controller
ILookup<HttpControllerDescriptor, ApiDescription> apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor);
}
<link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
<header class="help-page">
<div class="content-wrapper">
<div class="float-left">
<h1>@ViewBag.Title</h1>
</div>
</div>
</header>
<div id="body" class="help-page">
<section class="featured">
<div class="content-wrapper">
<h2>Introduction</h2>
<p>
Provide a general description of your APIs here.
</p>
</div>
</section>
<section class="content-wrapper main-content clear-fix">
@foreach (var group in apiGroups)
{
@Html.DisplayFor(m => group, "ApiGroup")
}
</section>
</div>
@@ -0,0 +1,19 @@
@using System.Web.Http
@using API_NetFramework.Areas.HelpPage.ModelDescriptions
@model ModelDescription
<link type="text/css" href="~/Areas/HelpPage/HelpPage.css" rel="stylesheet" />
<div id="body" class="help-page">
<section class="featured">
<div class="content-wrapper">
<p>
@Html.ActionLink("Help Page Home", "Index")
</p>
</div>
</section>
<h1>@Model.Name</h1>
<p>@Model.Documentation</p>
<section class="content-wrapper main-content clear-fix">
@Html.DisplayFor(m => Model)
</section>
</div>
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@RenderSection("scripts", required: false)
</head>
<body>
@RenderBody()
</body>
</html>
@@ -0,0 +1,41 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
</system.web>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
@@ -0,0 +1,4 @@
@{
// Change the Layout path below to blend the look and feel of the help page with your existing web pages.
Layout = "~/Areas/HelpPage/Views/Shared/_Layout.cshtml";
}
@@ -0,0 +1,381 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CLM.aspx.cs" Inherits="WebApp.CLM" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<link href="/Content/bootstrap.css" rel="stylesheet" />
<%--<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>--%>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
font-family: Arial;
background: #d9d8d4;
}
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin: 0;
font-size: 1.8rem;
}
.page-header p {
margin: 4px 0 0 0;
font-size: 0.95rem;
color: #dbeafe;
}
.layout {
display: flex;
height: calc(100% - 70px);
}
/* 70px für header */
.left {
width: 45%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
height: 100%;
display: flex;
flex-direction: column;
}
#editor {
flex: 1;
width: 100%;
}
select {
width: 100%;
padding: 8px;
margin-bottom: 12px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
th, td {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
}
tr:hover {
background: #f9fafb;
}
.pager a, .pager span {
padding: 5px 9px;
border: 1px solid #ddd;
border-radius: 5px;
margin-left: 4px;
text-decoration: none;
font-size: 13px;
}
.pager span {
background: #2563eb;
color: #fff;
border-color: #2563eb;
}
a.open {
color: #2563eb;
cursor: pointer;
text-decoration: none;
}
a.open:hover {
text-decoration: underline;
}
#pdfFrame {
width: 100%;
height: 500px;
}
.leftpanel {
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #c4c4bc;
padding-top: 10px;
padding-bottom: 10px;
}
.navbar-custom .navbar-brand {
color: black;
font-weight: 600;
}
.navbar-custom .btn {
border-color: white;
color: white;
}
.navbar-custom .btn:hover {
background: white;
color: #0d6efd;
}
.content {
padding: 30px;
}
/* Cards */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
gap: 10px;
margin-bottom: 10px;
}
.card {
background: white;
padding: 10px;
border-radius: 12px;
box-shadow: 0 10px 20px rgba(0,0,0,0.08);
animation: fadeInUp 0.6s ease;
}
.card h3 {
margin-top: 0;
}
.card:hover {
transform: translateY(-4px);
transition: 0.2s;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand">
<h2>OnDoc-API - CLM-Dokumente</h2>
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-primary" onclick="generateFromJson()">
Generieren
</button>
</div>
</div>
</nav>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<div class="content">
<!-- Dashboard Cards -->
<div class="cards">
<div class="card">
<h3>Selektion</h3>
<p>
Tabelle
<asp:DropDownList
Width="200"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
</div>
</div>
<!-- Schnellzugriff Buttons -->
</div>
<%-- <asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />--%>
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
alert("Hallo");
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
<script type="text/javascript">
window.onload = function () {
var isLoggedIn = <%= (Session["LoggedIn"] != null && (bool)Session["LoggedIn"])
? "true"
: "false" %>;
if (!isLoggedIn) {
window.location.href = "/OnDocAPIHome.aspx";
}
};
</script>
</body>
</html>
@@ -0,0 +1,13 @@
/* Set padding to keep content from hitting the edges */
.body-content {
margin-top: 15px;
padding-left: 15px;
padding-right: 15px;
}
/* Set width on the form input elements since they're 100% wide by default */
input,
select,
textarea {
max-width: 280px;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,597 @@
/*!
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,594 @@
/*!
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
<%@ Application Codebehind="Global.asax.cs" Inherits="API_NetFramework.WebApiApplication" Language="C#" %>
@@ -0,0 +1,329 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JSONViewer.aspx.cs" Inherits="WebApp.JSONViewer" %>
<!DOCTYPE html>
<html>
<head runat="server">
<%--<title>Daten & JSON Editor</title>--%>
<script src="/Scripts/ace/ace.js"></script>
<script src="/Scripts/ace/mode-json.min.js"></script>
<script src="/Scripts/ace/theme-tomorrow.min.js"></script>
<script src="/Scripts/ace/worker-json.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/ace/ext-searchbox.js"></script>
<link href="/Content/bootstrap.min.css" ref="stylesheet" />
<link href="/Scripts/bootstrap532.min.js" rel="stylesheet" />
<%--<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" />--%>
<%--<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>--%>
<%--<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.23.4/ace.js"></script>--%>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
font-family: Arial;
background: #f4f6f8;
}
.page-header {
background-color: #2563eb;
color: #fff;
padding: 15px 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.page-header h1 {
margin: 0;
font-size: 1.8rem;
}
.page-header p {
margin: 4px 0 0 0;
font-size: 0.95rem;
color: #dbeafe;
}
.layout {
display: flex;
height: calc(100% - 70px);
}
/* 70px für header */
.left {
width: 45%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.leftfull {
width: 100%;
padding: 20px;
background: #fff;
border-right: 1px solid #ddd;
overflow: auto;
}
.right {
width: 55%;
padding: 0;
height: 100%;
display: flex;
flex-direction: column;
}
#editor {
flex: 1;
width: 100%;
}
select {
width: 100%;
padding: 8px;
margin-bottom: 12px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
}
th, td {
padding: 8px;
border-bottom: 1px solid #e5e7eb;
}
tr:hover {
background: #f9fafb;
}
.pager a, .pager span {
padding: 5px 9px;
border: 1px solid #ddd;
border-radius: 5px;
margin-left: 4px;
text-decoration: none;
font-size: 13px;
}
.pager span {
background: #2563eb;
color: #fff;
border-color: #2563eb;
}
a.open {
color: #2563eb;
cursor: pointer;
text-decoration: none;
}
a.open:hover {
text-decoration: underline;
}
#pdfFrame {
width: 100%;
height: 500px;
}
.leftpanel {
border-right: 1px solid #ccc;
height: 100%;
}
.navbar-custom {
background-color: #0d6efd;
padding-top:20px;
padding-bottom:20px;
}
.navbar-custom .navbar-brand {
color: white;
font-weight: 600;
}
.navbar-custom .btn {
border-color: white;
color: white;
}
.navbar-custom .btn:hover {
background: white;
color: #0d6efd;
}
</style>
</head>
<nav class="navbar navbar-expand-lg navbar-custom">
<div class="container-fluid">
<!-- TITEL LINKS -->
<span class="navbar-brand">OnDoc-JSON-Viewer
</span>
<div class="ms-auto d-flex gap-2">
<!-- BUTTON -->
<button class="btn btn-outline-light" onclick="generateFromJson()">
Generieren
</button>
</div>
</div>
</nav>
<%--<div class="page-header">
<h1>OnDoc-Json-Viewer</h1>
<p>Tabellen auswählen, Datensätze ansehen und JSON anzeigen</p>
</div>--%>
<!-- LAYOUT -->
<div class="layout">
<form runat="server" class="left" id="masterform">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<h2>Tabellen & Datensätze</h2>
<asp:DropDownList
Width="300"
ID="ddlTables"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlTables_SelectedIndexChanged" />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Label ID="lblFilter" runat="server" Text="Filter:"></asp:Label>
<asp:TextBox ID="txtfilter" runat="server" Width="207px"></asp:TextBox>
<asp:Button ID="btnRefresh" runat="server" Text="Aktualisieren" OnClick="ddlTables_SelectedIndexChanged" />
<asp:Button ID="Button1" runat="server" Text="Filter löschen" OnClick="ddlTables_clearfilter" />
<asp:GridView
ID="gvData"
runat="server"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="15"
PagerStyle-CssClass="pager"
OnPageIndexChanging="gvData_PageIndexChanging"
OnRowCreated="gvData_RowCreated"
OnRowDataBound="gvData_RowDataBound" />
</form>
<div id="editor"></div>
</div>
<script type="text/javascript">
window.onload = function () {
var isLoggedIn = <%= (Session["LoggedIn"] != null && (bool)Session["LoggedIn"])
? "true"
: "false" %>;
if (!isLoggedIn) {
window.location.href = "/OnDocAPIHome.aspx";
}
};
</script>
<script>
const editor = ace.edit("editor");
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/json");
editor.setShowPrintMargin(false);
editor.session.setTabSize(2);
editor.session.setUseSoftTabs(true);
editor.session.doc
//let editor;
//$(function () {
// editor = ace.edit("editor");
// editor.setTheme("ace/theme/tomorrow");
// editor.session.setMode("ace/mode/json");
// editor.setShowPrintMargin(false);
// editor.session.setTabSize(2);
// editor.session.setUseSoftTabs(true);
// editor.commands.addCommand({
// name: "find",
// bindKey: { win: "Ctrl-F", mac: "Command-F" },
// exec: function (ed) {
// ace.require("ace/ext/searchbox").Search(ed);
// }
// });
//});
function generateFromJson() {
var jsonText = editor.getValue();
$.ajax({
type: "POST",
url: "/API/DokumentGenerator",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
headers: {
"Authorization": "Bearer " + "pZkuG6l6ORCEckqQimPK58PO1A9EnkMtL5oCgRX9WiWnD4xeH7ikGzhWnTBy/vk8J4Iiz8gCSx9uFHA4+DvITG0roO97sk82d/0BCjVlwLWINpXlJfGYEF3X96AdoCQvb3ruwv/tVqEHsSU5aNfyxBAe+EhLTHQ8t7ysgJZWh98="
},
success: function (response) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + response.file + "'></iframe>");
//alert("Server Response: " + response.file);
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
function showDoc(tableKey, id) {
PageMethods.GetDoc(
tableKey,
id,
function (result) {
var pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64," + result + "'></iframe>");
},
function (err) {
alert(err.get_message())
}
);
}
function loadJson(tableKey, id) {
editor.setValue("// lade JSON ...", -1);
PageMethods.GetJson(
tableKey,
id,
function (result) {
editor.setValue(result, -1);
var o = JSON.parse(result) // may throw if json is malformed
result = JSON.stringify(o, null, 4) // 4 is the indent size
editor.session.setValue(result)
},
function (err) {
editor.setValue(JSON.stringify({ error: err.get_message() }, null, 2), -1);
}
);
}
</script>
</body>
</html>
@@ -0,0 +1,261 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OnDocAPIHome.aspx.cs" Inherits="OnDocAPI_NetFramework.DemoSeite" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Application Dashboard</title>
<style>
body {
margin: 0;
font-family: 'Segoe UI', Arial;
background: #f4f6fb;
}
/* Layout */
.wrapper {
display: flex;
height: 100vh;
}
/* Sidebar */
.sidebar {
width: 240px;
background: #1e293b;
color: white;
padding-top: 30px;
}
.sidebar h2 {
text-align: center;
margin-bottom: 20px;
}
/* Login Box */
.login-box {
padding: 15px 20px;
}
.login-box input {
width: 100%;
padding: 8px;
margin-bottom: 10px;
border-radius: 6px;
border: 1px solid #d1d5db;
box-sizing: border-box;
}
.login-box button {
width: 100%;
padding: 8px;
border: none;
border-radius: 6px;
background: #2563eb;
color: white;
cursor: pointer;
}
.login-box button:hover {
background: #1d4ed8;
}
/* Sidebar Links */
.sidebar a {
display: block;
padding: 14px 30px;
color: #cbd5f5;
text-decoration: none;
}
.sidebar a:hover {
background: #334155;
}
/* Main */
.main {
flex: 1;
display: flex;
flex-direction: column;
}
/* Topbar */
.topbar {
background: white;
padding: 16px 30px;
box-shadow: 0 2px 10px rgba(0,0,0,0.08);
font-size: 18px;
}
/* Content */
.content {
padding: 30px;
}
/* Cards */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
gap: 20px;
margin-bottom: 40px;
}
.card {
background: white;
padding: 25px;
border-radius: 12px;
box-shadow: 0 10px 20px rgba(0,0,0,0.08);
animation: fadeInUp 0.6s ease;
}
.card h3 {
margin-top: 0;
}
.card:hover {
transform: translateY(-4px);
transition: 0.2s;
}
/* Buttons */
.button-area {
background:white;
padding:30px;
border-radius:12px;
box-shadow:0 10px 20px rgba(0,0,0,0.08);
}
.btn {
padding:14px 20px;
border:none;
border-radius:8px;
font-size:15px;
cursor:pointer;
color:white;
margin-top:10px;
width:220px;
}
.btn1 {
background:#6366f1;
}
.btn1:hover {
background:#4f46e5;
}
.btn2 {
background:#10b981;
}
.btn2:hover {
background:#059669;
}
/* Animation */
@keyframes fadeInUp {
from {
opacity:0;
transform:translateY(20px);
}
to {
opacity:1;
transform:translateY(0);
}
}
small {
color: #64748b;
}
/* Login error */
#<%= lblLoginError.ClientID %> {
color: red;
display:block;
margin-bottom:8px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div class="wrapper">
<!-- Sidebar -->
<div class="sidebar">
<h2>OnDoc-API</h2>
<div class="login-box">
<asp:Label ID="lblLoginError" runat="server"></asp:Label>
<asp:TextBox ID="txtUserID" runat="server" Placeholder="Benutzer-ID"></asp:TextBox>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" Placeholder="Passwort"></asp:TextBox>
<asp:Button ID="btnLogin" runat="server" Text="Anmelden" OnClick="btnLogin_Click"/>
</div>
<%--<a href="#">Dashboard</a>
<a href="#">Statistiken</a>
<a href="#">Benutzer</a>
<a href="#">Einstellungen</a>--%>
</div>
<!-- Main -->
<div class="main">
<div class="topbar">OnDoc-API-Übersicht</div>
<div class="content">
<!-- Dashboard Cards -->
<div class="cards">
<div class="card">
<h3>Aktuelle Zeit</h3>
<p>
<span id="liveClock"></span><br/>
<small id="timezone"></small>
</p>
</div>
<div class="card">
<h3>Version</h3>
<p>
<asp:Label ID="lblVersion" runat="server"></asp:Label>
</p>
</div>
<div class="card">
<h3>API Uptime</h3>
<p>
<asp:Label ID="lblUptime" runat="server"></asp:Label>
</p>
</div>
</div>
<!-- Schnellzugriff Buttons -->
<div class="button-area">
<h2>Schnellzugriff</h2>
<asp:Button ID="Button1" runat="server" Text="CLM-Dokumente" CssClass="btn btn1" OnClick="OpenPage1" Visible="false"/><br/>
<asp:Button ID="Button2" runat="server" Text="Json-Viewer" CssClass="btn btn2" OnClick="OpenPage2" Visible="false"/>
</div>
</div>
</div>
</div>
</form>
<!-- Live Clock Script -->
<script>
function updateClock() {
const now = new Date();
const day = String(now.getDate()).padStart(2, '0');
const month = String(now.getMonth() + 1).padStart(2, '0');
const year = now.getFullYear();
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
const timeString = day + "." + month + "." + year + " " + hours + ":" + minutes + ":" + seconds;
document.getElementById("liveClock").innerText = timeString;
const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
document.getElementById("timezone").innerText = tz;
}
setInterval(updateClock, 1000);
updateClock();
</script>
<!-- Server-side Code -->
<script runat="server">
</script>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More