Vorbereitung Webseitenstruktur HKB & HKW. Ordnerstruktur unt unrterschiedliche Layouts angelegt. Alle Views werden manuell in den Controllern angegeben.

This commit is contained in:
schnulller
2022-07-15 14:08:04 +02:00
parent fbd5a94ca1
commit 410d67ca08
30 changed files with 193774 additions and 298 deletions

View File

@@ -75,7 +75,7 @@ public class Briefecontroller : Controller {
}
// Return
return View(model);
return View("~/Views/HKB/Dynamic/Briefe.cshtml", model);
}
private IActionResult error404() {

View File

@@ -11,26 +11,22 @@ public class EditionController : Controller {
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
public IActionResult Kontakt() {
return View();
return View("~/Views/HKB/Static/Kontakt.cshtml");
}
public IActionResult Mitwirkende() {
return View();
return View("~/Views/HKB/Static/Mitwirkende.cshtml");
}
public IActionResult Richtlinien() {
return View();
return View("~/Views/HKB/Static/Richtlinien.cshtml");
}
public IActionResult Werkausgabe() {
return View();
return View("~/Views/HKB/Static/Werkausgabe.cshtml");
}
public IActionResult Editionsgeschichte() {
return View();
}
public IActionResult Datenschutzerklaerung() {
return View();
return View("~/Views/HKB/Static/Editionsgeschichte.cshtml");
}
}

View File

@@ -68,7 +68,7 @@ public class RegisterController : Controller {
};
// Return
return View("Index", model);
return View("~/Views/HKB/Dynamic/Register.cshtml", model);
}
[HttpGet]
@@ -101,7 +101,7 @@ public class RegisterController : Controller {
};
// Return
return View("Index", model);
return View("~/Views/HKB/Dynamic/Register.cshtml", model);
}
[HttpGet]
@@ -143,7 +143,7 @@ public class RegisterController : Controller {
};
// Return
return View("Index", model);
return View("~/Views/HKB/Dynamic/Register.cshtml", model);
}
[HttpPost]

View File

@@ -175,7 +175,7 @@ public class SucheController : Controller {
zhvolume = zhvolume == null ? "1" : zhvolume;
var model = new SucheViewModel(letters, page, pages, _getAvailablePersons(lib), availablePages.OrderBy(x => x.Volume).ToList(), zhvolume, zhpage, activeSearch, searchResults);
if (person != null) model.ActivePerson = person;
return View("Index", model);
return View("~/Views/HKB/Dynamic/Suche.cshtml", model);
}
private IActionResult _error404() {

View File

@@ -87,13 +87,13 @@ public class UploadController : Controller {
model.HamannFiles = hamannFiles;
model.AvailableFiles = XMLFileHelpers.ToFileModel(_xmlProvider.GetFiles(id), pF, uF);
return View("../Admin/Upload/Index", model);
return View("~/Views/Admin/Dynamic/Upload.cshtml", model);
} else {
var model = new UploadViewModel("Upload & Veröffentlichen", id, roots, usedFiles);
model.ProductionFiles = productionFiles;
model.HamannFiles = hamannFiles;
return View("../Admin/Upload/Index", model);
return View("~/Views/Admin/Dynamic/Upload.cshtml", model);
}
}

View File

@@ -45,6 +45,7 @@ Veränderungenen in der Funktionalität für den Benutzer
- Bibellinks in Bibelkommentaren
- Verbesserte Ladezeiten
- Startseite für die Briefausgebe / Werkausgabe. Unterschiedliche Menüs für die Ausgaben
- URL für die Register hat sich geändert, bleibt aber weiter unter `/Supplementa/` zugängig.
- Anzeige Briefe beim Namen (?)
- GeoCities und Personen-Verweise (?)

View File

@@ -22,6 +22,7 @@ public static class StringHelpers {
bool skipped = false;
foreach (char c in input) {
// TODO: punctuation
if (char.IsWhiteSpace(c)) {
if (!skipped) {
output.Append(normalizeTo);

View File

@@ -0,0 +1,3 @@
@{
Layout = "_LettersLayout";
}

View File

@@ -1,220 +1,220 @@
@model SucheViewModel;
@{
ViewData["Title"] = "Briefauswahl & Suche";
ViewData["SEODescription"] = "Johann Georg Hamann: Kommentierte Briefausgabe, Hg. v. Leonard Keidel und Janina Reibold. Durchsuchbare Online-Ausgabe der Briefe von und an Johann Georg Hamann.";
ViewData["showCredits"] = "true";
}
<div class="ha-search">
@if (Model.Letters != null) {
<div class="ha-searchhead">
<h1>Briefauswahl</h1>
<div class="ha-searchnav">
@if (Model.AvailableYears != null && Model.AvailableYears.Any() && Model.AvailableYears.Count > 1) {
@for(var i = 0; i < Model.AvailableYears.Count; i++) {
<a class="@(Model.ActiveYear == i ? "active" : "")" asp-route-person="@Model.ActivePerson" asp-route-search="@Model.ActiveSearch" asp-controller="Suche" asp-route-page="@i">
@if (Model.AvailableYears[i].StartYear != Model.AvailableYears[i].EndYear) {
<span>
@Model.AvailableYears[i].StartYear-@Model.AvailableYears[i].EndYear
</span>
}
else {
<span>
@Model.AvailableYears[i].StartYear
</span>
}
</a>
}
}
</div>
</div>
<div class="ha-searchbody">
<div class="ha-letterlist">
@* Letter Loop *@
@foreach (var year in Model.Letters) {
foreach (var letter in year.LetterList) {
<div class="ha-letterlistentry">
<a asp-controller="Briefe" asp-action="Index" asp-route-id="@letter.Meta.Autopsic">
<div class="ha-letterlistentryheader">
<div class="ha-letterlistautopsic">@letter.Meta.Autopsic</div>
<div class="ha-letterlistpills">@await Html.PartialAsync("/Views/Shared/_Pills.cshtml", (letter, true))</div>
</div>
<div class="ha-letterlistletterdata">
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (letter, true, true))
</div>
</a>
@if (Model.SearchResults != null && Model.SearchResults.ContainsKey(letter.Meta.Index)) {
<div class="ha-letterlistsearchresults">
@foreach (var sr in Model.SearchResults[letter.Meta.Index])
{
<div class="ha-letterlistsearchresult">
<div class="ha-searchresultlocation">
@sr.Page/@sr.Line
</div>
<div class="ha-searchresultpreview">
@sr.Preview
</div>
</div>
}
</div>
}
</div>
}
}
</div>
<div class="ha-filterlist">
@* Go To Letter *@
<div class="ha-gotofilter">
<div class="ha-filtertitle">H&hairsp;K&hairsp;B</div>
<form class="ha-gotoform" id="ha-gotoform">
<div class="ha-gototext">
Briefnummer
</div>
<input type="text" id="ha-gotoletternumber" class="ha-gotoletternumber" />
<button type="submit" id="ha-gotoformsubmit">Nachschlagen</button>
</form>
</div>
<script>
const ACTIVATEGOTOFILTER = function(filter, button) {
let f = filter.value;
if (f === "") {
button.disabled = true;
return;
}
button.disabled = false;
}
const SUBMITGOTO = function(filter) {
let f = filter.value;
window.location.href = "/Suche/" + f;
}
window.addEventListener("load", () => {
let gotofilter = document.getElementById("ha-gotoletternumber");
let gotosubmitbtn = document.getElementById("ha-gotoformsubmit");
let gotoform = document.getElementById("ha-gotoform");
ACTIVATEGOTOFILTER(gotofilter, gotosubmitbtn);
gotofilter.addEventListener("input", () => ACTIVATEGOTOFILTER(gotofilter, gotosubmitbtn));
gotoform.addEventListener("submit", (ev) => {
ev.preventDefault();
SUBMITGOTO(gotofilter);
});
});
</script>
@* ZH Loopkup *@
@if (Model.AvailablePages != null) {
<div class="ha-zhsearchfilter">
<div class="ha-filtertitle">
Suche in Z&hairsp;H
@if (Model.ActivePage != null) {
<a class="ha-reversefilter" asp-controller="Suche" asp-action="index">← Auswahl aufheben</a>
}
</div>
<form class="ha-zhform" id="ha-zhform">
<span>Z&hairsp;H Band</span>
<select id="ha-zhformvolume">
@foreach (var volume in Model.AvailablePages) {
<option>@volume.Volume</option>
}
</select>
<span>, Seite</span>
<input id="ha-zhformpage" type="text" value="@Model.ActivePage"/>
<button id="ha-zhformsubmit" type="submit">Nachschlagen</button>
</form>
</div>
<script>
const ACTIVATEZHSEARCH = function(volume, page, button) {
let vol = volume.options[volume.selectedIndex].value;
let pg = page.value;
if (pg === "") {
button.disabled = true;
return;
}
button.disabled = false;
}
const SUBMITZHSEARCH = function(volume, page) {
let vol = volume.options[volume.selectedIndex].value;
let pg = page.value;
window.location.href = "/Suche/" + vol + "/" + pg;
}
window.addEventListener("load", () => {
let vol = document.getElementById("ha-zhformvolume");
let pg = document.getElementById("ha-zhformpage");
let zhsubmitbtn = document.getElementById("ha-zhformsubmit");
let zhsearchform = document.getElementById("ha-zhform");
ACTIVATEZHSEARCH(vol, pg, zhsubmitbtn);
vol.addEventListener("change", () => ACTIVATEZHSEARCH(vol, pg, zhsubmitbtn));
pg.addEventListener("input", () => ACTIVATEZHSEARCH(vol, pg, zhsubmitbtn));
zhsearchform.addEventListener("submit", (ev) => {
ev.preventDefault();
SUBMITZHSEARCH(vol, pg);
});
});
</script>
}
@* Full-Text-Search *@
<div class="ha-searchfilter">
<div class="ha-filtertitle">
Volltextsuche
@if (Model.ActiveSearch != null) {
<a class="ha-reversefilter" asp-controller="Suche" asp-action="index">← Auswahl aufheben</a>
}
</div>
<form class="ha-searchform" id="ha-searchform" asp-controller="Suche" asp-action="Index" method="get">
<input id="ha-searchformtext" name="search" type="text" placeholder="Suchbegriff" value="@Model.ActiveSearch"/>
<button id="ha-searchformsubmit" type="submit">Suchen</button>
</form>
</div>
<script>
const ACTIVATESEARCHFILTER = function(filter, button) {
let f = filter.value;
if (f === "") {
button.disabled = true;
return;
}
button.disabled = false;
}
window.addEventListener("load", () => {
let searchfilter = document.getElementById("ha-searchformtext");
let searchsubmitbtn = document.getElementById("ha-searchformsubmit");
let searchform = document.getElementById("ha-searchform");
ACTIVATESEARCHFILTER(searchfilter, searchsubmitbtn);
searchfilter.addEventListener("input", () => ACTIVATESEARCHFILTER(searchfilter, searchsubmitbtn));
});
</script>
@* Person Filter *@
@if(Model.AvailablePersons != null) {
<div class="ha-personfilter">
<div class="ha-filtertitle">
Korrespondenzpartner:innen
@if (Model.ActivePerson != null) {
<a class="ha-reversefilter" asp-controller="Suche" asp-action="index">← Auswahl aufheben</a>
}
</div>
<div class="ha-personlist">
<a class="ha-personlistperson @(Model.ActivePerson == null ? "active" : "")" asp-controller="Suche" asp-action="Index">Alle</a>
@foreach (var person in Model.AvailablePersons) {
<a class="ha-personlistperson @(Model.ActivePerson == person.Key ? "active" : "")" asp-controller="Suche" asp-action="Person" asp-route-person="@person.Key" asp-route-page="@null">
@person.Name
</a>
}
</div>
</div>
}
</div>
</div>
}
@model SucheViewModel;
@{
ViewData["Title"] = "Briefauswahl & Suche";
ViewData["SEODescription"] = "Johann Georg Hamann: Kommentierte Briefausgabe, Hg. v. Leonard Keidel und Janina Reibold. Durchsuchbare Online-Ausgabe der Briefe von und an Johann Georg Hamann.";
ViewData["showCredits"] = "true";
}
<div class="ha-search">
@if (Model.Letters != null) {
<div class="ha-searchhead">
<h1>Briefauswahl</h1>
<div class="ha-searchnav">
@if (Model.AvailableYears != null && Model.AvailableYears.Any() && Model.AvailableYears.Count > 1) {
@for(var i = 0; i < Model.AvailableYears.Count; i++) {
<a class="@(Model.ActiveYear == i ? "active" : "")" asp-route-person="@Model.ActivePerson" asp-route-search="@Model.ActiveSearch" asp-controller="Suche" asp-route-page="@i">
@if (Model.AvailableYears[i].StartYear != Model.AvailableYears[i].EndYear) {
<span>
@Model.AvailableYears[i].StartYear-@Model.AvailableYears[i].EndYear
</span>
}
else {
<span>
@Model.AvailableYears[i].StartYear
</span>
}
</a>
}
}
</div>
</div>
<div class="ha-searchbody">
<div class="ha-letterlist">
@* Letter Loop *@
@foreach (var year in Model.Letters) {
foreach (var letter in year.LetterList) {
<div class="ha-letterlistentry">
<a asp-controller="Briefe" asp-action="Index" asp-route-id="@letter.Meta.Autopsic">
<div class="ha-letterlistentryheader">
<div class="ha-letterlistautopsic">@letter.Meta.Autopsic</div>
<div class="ha-letterlistpills">@await Html.PartialAsync("/Views/Shared/_Pills.cshtml", (letter, true))</div>
</div>
<div class="ha-letterlistletterdata">
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (letter, true, true))
</div>
</a>
@if (Model.SearchResults != null && Model.SearchResults.ContainsKey(letter.Meta.Index)) {
<div class="ha-letterlistsearchresults">
@foreach (var sr in Model.SearchResults[letter.Meta.Index])
{
<div class="ha-letterlistsearchresult">
<div class="ha-searchresultlocation">
@sr.Page/@sr.Line
</div>
<div class="ha-searchresultpreview">
@sr.Preview
</div>
</div>
}
</div>
}
</div>
}
}
</div>
<div class="ha-filterlist">
@* Go To Letter *@
<div class="ha-gotofilter">
<div class="ha-filtertitle">H&hairsp;K&hairsp;B</div>
<form class="ha-gotoform" id="ha-gotoform">
<div class="ha-gototext">
Briefnummer
</div>
<input type="text" id="ha-gotoletternumber" class="ha-gotoletternumber" />
<button type="submit" id="ha-gotoformsubmit">Nachschlagen</button>
</form>
</div>
<script>
const ACTIVATEGOTOFILTER = function(filter, button) {
let f = filter.value;
if (f === "") {
button.disabled = true;
return;
}
button.disabled = false;
}
const SUBMITGOTO = function(filter) {
let f = filter.value;
window.location.href = "/Suche/" + f;
}
window.addEventListener("load", () => {
let gotofilter = document.getElementById("ha-gotoletternumber");
let gotosubmitbtn = document.getElementById("ha-gotoformsubmit");
let gotoform = document.getElementById("ha-gotoform");
ACTIVATEGOTOFILTER(gotofilter, gotosubmitbtn);
gotofilter.addEventListener("input", () => ACTIVATEGOTOFILTER(gotofilter, gotosubmitbtn));
gotoform.addEventListener("submit", (ev) => {
ev.preventDefault();
SUBMITGOTO(gotofilter);
});
});
</script>
@* ZH Loopkup *@
@if (Model.AvailablePages != null) {
<div class="ha-zhsearchfilter">
<div class="ha-filtertitle">
Suche in Z&hairsp;H
@if (Model.ActivePage != null) {
<a class="ha-reversefilter" asp-controller="Suche" asp-action="index">← Auswahl aufheben</a>
}
</div>
<form class="ha-zhform" id="ha-zhform">
<span>Z&hairsp;H Band</span>
<select id="ha-zhformvolume">
@foreach (var volume in Model.AvailablePages) {
<option>@volume.Volume</option>
}
</select>
<span>, Seite</span>
<input id="ha-zhformpage" type="text" value="@Model.ActivePage"/>
<button id="ha-zhformsubmit" type="submit">Nachschlagen</button>
</form>
</div>
<script>
const ACTIVATEZHSEARCH = function(volume, page, button) {
let vol = volume.options[volume.selectedIndex].value;
let pg = page.value;
if (pg === "") {
button.disabled = true;
return;
}
button.disabled = false;
}
const SUBMITZHSEARCH = function(volume, page) {
let vol = volume.options[volume.selectedIndex].value;
let pg = page.value;
window.location.href = "/Suche/" + vol + "/" + pg;
}
window.addEventListener("load", () => {
let vol = document.getElementById("ha-zhformvolume");
let pg = document.getElementById("ha-zhformpage");
let zhsubmitbtn = document.getElementById("ha-zhformsubmit");
let zhsearchform = document.getElementById("ha-zhform");
ACTIVATEZHSEARCH(vol, pg, zhsubmitbtn);
vol.addEventListener("change", () => ACTIVATEZHSEARCH(vol, pg, zhsubmitbtn));
pg.addEventListener("input", () => ACTIVATEZHSEARCH(vol, pg, zhsubmitbtn));
zhsearchform.addEventListener("submit", (ev) => {
ev.preventDefault();
SUBMITZHSEARCH(vol, pg);
});
});
</script>
}
@* Full-Text-Search *@
<div class="ha-searchfilter">
<div class="ha-filtertitle">
Volltextsuche
@if (Model.ActiveSearch != null) {
<a class="ha-reversefilter" asp-controller="Suche" asp-action="index">← Auswahl aufheben</a>
}
</div>
<form class="ha-searchform" id="ha-searchform" asp-controller="Suche" asp-action="Index" method="get">
<input id="ha-searchformtext" name="search" type="text" placeholder="Suchbegriff" value="@Model.ActiveSearch"/>
<button id="ha-searchformsubmit" type="submit">Suchen</button>
</form>
</div>
<script>
const ACTIVATESEARCHFILTER = function(filter, button) {
let f = filter.value;
if (f === "") {
button.disabled = true;
return;
}
button.disabled = false;
}
window.addEventListener("load", () => {
let searchfilter = document.getElementById("ha-searchformtext");
let searchsubmitbtn = document.getElementById("ha-searchformsubmit");
let searchform = document.getElementById("ha-searchform");
ACTIVATESEARCHFILTER(searchfilter, searchsubmitbtn);
searchfilter.addEventListener("input", () => ACTIVATESEARCHFILTER(searchfilter, searchsubmitbtn));
});
</script>
@* Person Filter *@
@if(Model.AvailablePersons != null) {
<div class="ha-personfilter">
<div class="ha-filtertitle">
Korrespondenzpartner:innen
@if (Model.ActivePerson != null) {
<a class="ha-reversefilter" asp-controller="Suche" asp-action="index">← Auswahl aufheben</a>
}
</div>
<div class="ha-personlist">
<a class="ha-personlistperson @(Model.ActivePerson == null ? "active" : "")" asp-controller="Suche" asp-action="Index">Alle</a>
@foreach (var person in Model.AvailablePersons) {
<a class="ha-personlistperson @(Model.ActivePerson == person.Key ? "active" : "")" asp-controller="Suche" asp-action="Person" asp-route-person="@person.Key" asp-route-page="@null">
@person.Name
</a>
}
</div>
</div>
}
</div>
</div>
}
</div>

View File

@@ -0,0 +1,3 @@
@{
Layout = "_LettersLayout";
}

View File

@@ -0,0 +1,3 @@
@{
Layout = "_HKWLayout";
}

View File

@@ -1,59 +1,59 @@
<!DOCTYPE html>
<html lang="de" id="top">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="@ViewData["SEODescription"]">
<title>HKB: @ViewData["Title"]</title>
<!-- crossorigin is a workaround to prevent double downloading bugs in chrome -->
<!-- also, the graphite versions of the font are available for use:
<link rel="preload" href="/fonts/LinLibertine_R_G.ttf" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinBiolinum_R_G.ttf" as="font" crossorigin/>
-->
<link rel="preload" href="/css/output.css" as="style" asp-append-version="true"/>
<link rel="preload" href="/img/subtlenet2.png" as="image" />
<link rel="preload" href="/fonts/LinBiolinum_R.woff" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinLibertine_R.woff" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinLibertine_RI.woff" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinLibertine_RB.woff" as="font" crossorigin/>
<link rel="stylesheet" href="/css/output.css" asp-append-version="true" />
<environment include="Development">
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
</head>
<body class="w-full ">
<div class="relative min-h-screen">
<div class="pb-24">
@await Html.PartialAsync("/Views/Shared/_Menu.cshtml")
<main role="main" class="pb-3 w-full desktop:max-w-screen-desktop mx-auto h-full">
@RenderBody()
</main>
</div>
<div class="absolute bottom-0 w-full">
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
</div>
</div>
<environment exclude="Development">
@await Html.PartialAsync("/Views/Shared/_Javascript.cshtml")
</environment>
<a class="ha-scrollbutton" id="ha-scrollbutton">
<svg class="ha-scrollbuttonarrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path strokeLinecap="round" strokeLinejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
</svg>
</div>
@RenderSection("Scripts", required: false)
</body>
</html>
<!DOCTYPE html>
<html lang="de" id="top">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="@ViewData["SEODescription"]">
<title>HKB: @ViewData["Title"]</title>
<!-- crossorigin is a workaround to prevent double downloading bugs in chrome -->
<!-- also, the graphite versions of the font are available for use:
<link rel="preload" href="/fonts/LinLibertine_R_G.ttf" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinBiolinum_R_G.ttf" as="font" crossorigin/>
-->
<link rel="preload" href="/css/output.css" as="style" asp-append-version="true"/>
<link rel="preload" href="/img/subtlenet2.png" as="image" />
<link rel="preload" href="/fonts/LinBiolinum_R.woff" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinLibertine_R.woff" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinLibertine_RI.woff" as="font" crossorigin/>
<link rel="preload" href="/fonts/LinLibertine_RB.woff" as="font" crossorigin/>
<link rel="stylesheet" href="/css/output.css" asp-append-version="true" />
<environment include="Development">
<script src="~/js/site.js" asp-append-version="true"></script>
</environment>
</head>
<body class="w-full ">
<div class="relative min-h-screen">
<div class="pb-24">
@await Html.PartialAsync("/Views/Shared/_Menu.cshtml")
<main role="main" class="pb-3 w-full desktop:max-w-screen-desktop mx-auto h-full">
@RenderBody()
</main>
</div>
<div class="absolute bottom-0 w-full">
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
</div>
</div>
<environment exclude="Development">
@await Html.PartialAsync("/Views/Shared/_Javascript.cshtml")
</environment>
<a class="ha-scrollbutton" id="ha-scrollbutton">
<svg class="ha-scrollbuttonarrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path strokeLinecap="round" strokeLinejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
</svg>
</div>
@RenderSection("Scripts", required: false)
</body>
</html>

View File

@@ -1,3 +1 @@
@{
Layout = "_Layout";
}


File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="utf-8"?>
<opus>
<data>
<definitions>
<structureDefs>
<structureDef index="1" level="1" type="volume" friendlyName="Band {1}" />
<structureDef index="2" level="2" type="letter" friendlyName="Brief {2}" />
<structureDef index="3" level="3" type="letterSection" friendlyName="Abschnitt {3}" />
</structureDefs>
<personDefs>
<personDef index="-1" name="Unbekannt" />
<personDef index="1" name="Johann Georg Hamann" vorname="Johann Georg" nachname="Hamann" />
<personDef index="2" name="Gottlob Jacob Sahme" vorname="Gottlob Jacob" nachname="Sahme" />
<personDef index="3" name="Philipp Belger" vorname="Philipp" nachname="Belger" />
<personDef index="4" name="Ein Studienfreund" nachname="Studienfreund"/>
<personDef index="5" name="Johann Christoph Hamann (Vater)" vorname="Johann Christoph" nachname="Hamann" />
<personDef index="6" name="Maria Magdalena Hamann (Mutter)" vorname="Maria Magdalena" nachname="Hamann" />
<personDef index="7" name="Johann Gottlieb Kreutzfeld" vorname="Johann Gottlieb" nachname="Kreutzfeld" />
<personDef index="8" name="Johann Gotthelf Lindner" vorname="Johann Gotthelf" nachname="Lindner" />
<personDef index="9" name="Daniel Pegelow" vorname="Daniel" nachname="Pegelow" />
<personDef index="10" name="Johann Christoph Hamann (Bruder)" vorname="Johann Christoph" nachname="Hamann" />
<personDef index="11" name="Barbara Helena von Budberg, geb. von Zimmermann" vorname="Barbara Helena von" nachname="Budberg" />
<personDef index="12" name="Marianne Lindner, geb. Courtan" vorname="Marianne" nachname="Lindner" />
<personDef index="13" name="Arnold Corman" vorname="Arnold" nachname="Corman" />
<personDef index="14" name="George Bassa" vorname="George" nachname="Bassa" />
<personDef index="15" name="Johann Ehregott Friedrich Lindner" vorname="Johann Ehregott Friedrich" nachname="Lindner" />
<personDef index="16" name="Johann Christoph Berens" vorname="Johann Christoph" nachname="Berens" />
<personDef index="17" name="Arend Berens" vorname="Arend" nachname="Berens" />
<personDef index="18" name="Johann Christoph Ruprecht" vorname="Johann Christoph" nachname="Ruprecht" />
<personDef index="19" name="Senel" vorname="[unbek. Vorname]" nachname="Senel"/>
<personDef index="20" name="" />
<personDef index="21" name="Gottlob Immanuel Lindner" vorname="Gottlob Immanuel" nachname="Lindner" />
<personDef index="22" name="Peter Christoph Baron von Witten" vorname="Peter Christoph Baron von" nachname="Witten"/>
<personDef index="23" name="Joseph Johann Baron von Witten" vorname="Joseph Johann Baron von" nachname="Witten" />
<personDef index="24" name="" />
<personDef index="25" name="" />
<personDef index="26" name="" />
<personDef index="27" name="" />
<personDef index="28" name="" />
<personDef index="29" name="" />
<personDef index="30" name="" />
<personDef index="31" name="Immanuel Kant" vorname="Immanuel" nachname="Kant" />
<personDef index="32" name="" />
<personDef index="33" name="Georg David Kypke" vorname="Georg David" nachname="Kypke" />
<personDef index="34" name="" />
<personDef index="35" name="Christ Anton Tottien" vorname="Christ Anton" nachname="Tottien" />
<personDef index="36" name="Moses Mendelssohn" vorname="Moses" nachname="Mendelssohn" />
<personDef index="37" name="Friedrich Nicolai" vorname="Friedrich" nachname="Nicolai" />
<personDef index="38" name="Sebastian Friedrich Trescho" vorname="Sebastian Friedrich" nachname="Trescho" />
<personDef index="39" name="Friedrich Carl von Moser" vorname="Friedrich Carl von" nachname="Moser" />
<personDef index="40" name="Die Königlich Preußische Kriegs- und Domänen-Kammer zu Königsberg i. Pr." nachname="Kriegs- und Domänenkammer"/>
<personDef index="41" name="Johann Gottfried Herder" vorname="Johann Gottfried" nachname="Herder" />
<personDef index="42" name="Die Königlich Preußische Regierung zu Königsberg in Preußen" nachname="Regierung" />
<personDef index="43" name="" />
<personDef index="44" name="Christian Gottlieb Arndt" vorname="Christian Gottlieb" nachname="Arndt" />
<personDef index="45" name="Johann Christian Buchholtz" vorname="Johann Christian" nachname="Buchholtz" />
<personDef index="46" name="Das Königliche Pupillen-Kollegium" nachname="Pupillen-Kollegium" />
<personDef index="47" name="Friedrich II. (Preußen)" nachname="Friedrich II."/>
<personDef index="48" name="Kriegsrat Hindersin" nachname="Hindersin"/>
<personDef index="49" name="Johann Friedrich Hartknoch" vorname="Johann Friedrich" nachname="Hartknoch" />
<personDef index="50" name="Johann August Eberhard" vorname="Johann August" nachname="Eberhard" />
<personDef index="51" name="Johann Jakob Kanter" vorname="Johann Jakob" nachname="Kanter"/>
<personDef index="52" name="Der Geheime Ausschuß der G. v. V. Frey Mäurer Loge zu Königsberg in Preußen" nachname="Frey Mäurer Loge"/>
<personDef index="53" name="Jacob Friedrich Hinz" vorname="Jacob Friedrich" nachname="Hinz" />
<personDef index="54" name="Carl Theophilus Guichard" vorname="Carl Theophilus" nachname="Guichard" />
<personDef index="55" name="Johann Joachim Christoph Bode" vorname="Johann Joachim Christoph" nachname="Bode" />
<personDef index="56" name="Accise und Zoll-Direktor Stockmar" nachname="Stockmar"/>
<personDef index="57" name="" />
<personDef index="58" name="" />
<personDef index="59" name="Albertine Hartknoch, geb. Toussaint" vorname="Albertine" nachname="Hartknoch" />
<personDef index="60" name="Johann Friedrich Reichardt" vorname="Johann Friedrich" nachname="Reichardt" />
<personDef index="61" name="Matthias Claudius" vorname="Matthias" nachname="Claudius" />
<personDef index="62" name="Johann August Starck" vorname="Johann August" nachname="Starck" />
<personDef index="63" name="Catharina Dorothea Güldenhorn, geb. Herder" vorname="Catharina Dorothea" nachname="Güldenhorn"/>
<personDef index="64" name="Rebecca Claudius" vorname="Rebecca" nachname="Claudius"/>
<personDef index="65" name="" />
<personDef index="66" name="" />
<personDef index="67" name="Sophie Marianne Courtan, geb. Toussaint" vorname="Sophie Marianne" nachname="Courtan"/>
<personDef index="68" name="Die General-Administration" nachname="General-Administration" />
<personDef index="69" name="Witwe Blom" nachname="Blom" />
<personDef index="70" name="" />
<personDef index="71" name="Dr. Laubmeyer" nachname="Laubmeyer"/>
<personDef index="72" name="Christoph Kaufmann" vorname="Christoph" nachname="Kaufmann" />
<personDef index="73" name="Johann Ehrmann" vorname="Johann" nachname="Ehrmann" />
<personDef index="74" name="" />
<personDef index="75" name="vmtl. Samuel Lippmann Löwen" vorname="Samuel Lippmann" nachname="Löwen" />
<personDef index="76" name="Johann Caspar Lavater" vorname="Johann Caspar" nachname="Lavater" />
<personDef index="77" name="Elise Kaufmann, geb. Ziegler" vorname="Elise" nachname="Kaufmann"/>
<personDef index="78" name="Caroline Charlotte Amalie Reichsgräfin von Keyserling, geb. von Truchseß-Waldburg" vorname="Caroline Charlotte Amalie Reichsgräfin von" nachname="Keyserling"/>
<personDef index="79" name="" />
<personDef index="80" name="" />
<personDef index="81" name="" />
<personDef index="82" name="" />
<personDef index="83" name="Hans Jacob von Auerswald" vorname="Hans Jacob von" nachname="Auerswald"/>
<personDef index="84" name="" />
<personDef index="85" name="Caroline Stoltz" vorname="Caroline" nachname="Stoltz"/>
<personDef index="86" name="Johann Caspar Häfeli" vorname="Johann Caspar" nachname="Häfeli"/>
<personDef index="87" name="Christian Jakob Kraus" vorname="Christian Jakob" nachname="Kraus" />
<personDef index="88" name="Friedrich Gottlieb Klopstock" vorname="Friedrich Gottlieb" nachname="Klopstock" />
<personDef index="89" name="Caroline Herder, geb. Flachsland" vorname="Caroline" nachname="Herder"/>
<personDef index="90" name="Johann Friedrich Kleuker" vorname="Johann Friedrich" nachname="Kleuker" />
<personDef index="91" name="Heinrich Christian Reichsgraf von Keyserling" vorname="Heinrich Christian Reichsgraf von" nachname="Keyserling"/>
<personDef index="92" name="Johann Heinrich Voß" vorname="Johann Heinrich" nachname="Voß"/>
<personDef index="93" name="August Herder" vorname="August" nachname="Herder"/>
<personDef index="94" name="Johann Georg Müller" vorname="Johann Georg" nachname="Müller" />
<personDef index="95" name="Friedrich Heinrich Jacobi" vorname="Friedrich Heinrich" nachname="Jacobi" />
<personDef index="96" name="" />
<personDef index="97" name="Johann George Scheffner" vorname="Johann George" nachname="Scheffner" />
<personDef index="98" name="Johann Michael Hamann (Sohn)" vorname="Johann Michael" nachname="Hamann" />
<personDef index="99" name="" />
<personDef index="100" name="Dirk Graf van Hogendorp" vorname="Hogendorp" nachname="Dirk Graf van" />
<personDef index="101" name="Samuel Wolff Friedländer" vorname="Samuel Wolff" nachname="Friedländer" />
<personDef index="102" name="" />
<personDef index="103" name="Susanne Elisabeth Scheffner" vorname="Susanne Elisabeth" nachname="Scheffner" />
<personDef index="104" name="Eberhard Gaupp" vorname="Eberhard" nachname="Gaupp" />
<personDef index="105" name="Christian Hill" vorname="Christian" nachname="Hill" />
<personDef index="106" name="Franz Kaspar Bucholtz" vorname="Franz Kaspar" nachname="Bucholtz" />
<personDef index="107" name="Elisabeth Regina Hamann (Tochter)" vorname="Elisabeth Regina" nachname="Hamann" />
<personDef index="108" name="Die Provinzial-Direktion" nachname="Provinzial-Direktion" />
<personDef index="109" name="" />
<personDef index="110" name="Elisa von der Recke" vorname="Elisa von der" nachname="Recke"/>
<personDef index="111" name="Die Königliche General-Accise- und Zoll-Administration" nachname="General-Accise- und Zoll-Administration"/>
<personDef index="112" name="Heinrich Schenk" vorname="Heinrich" nachname="Schenk"/>
<personDef index="113" name="" />
<personDef index="114" name="Thomas Wizenmann" vorname="Thomas" nachname="Wizenmann"/>
<personDef index="115" name="" />
<personDef index="116" name="Gottfried Leberecht Masius" vorname="Gottfried Leberecht" nachname="Masius" />
<personDef index="117" name="" />
<personDef index="118" name="Finanzrat von Köpke" nachname="Köpke" />
<personDef index="119" name="Minister von Werder" nachname="Werder"/>
<personDef index="120" name="Johann Ernst von Druffel" vorname="Johann Ernst von" nachname="Druffel" />
<personDef index="121" name="Finanzbeamter Gomm" nachname="Gomm"/>
<personDef index="122" name="Fürstin Amalia von Gallitzin" vorname="Fürstin Amalia von" nachname="Gallitzin"/>
<personDef index="123" name="" />
<personDef index="124" name="" />
<personDef index="125" name="Johann Gottlieb Steudel" vorname="Johann Gottlieb" nachname="Steudel" />
<personDef index="126" name="" />
<personDef index="127" name="Abraham Jakob Penzel" vorname="Abraham Jakob" nachname="Penzel"/>
<personDef index="129" name="Martinus Maletius" vorname="Martinus" nachname="Maletius"/>
</personDefs>
<handDefs>
<handDef index="-1" name="Unbekannt" />
<handDef index="1" name="Johann Christoph Hamann (Bruder)" />
<handDef index="2" name="Johann Christoph Hamann (Vater)" />
<handDef index="3" name="Gottlob Immanuel Lindner" />
<handDef index="4" name="Johann Christoph Berens" />
<handDef index="5" name="Georg David Kypke" />
<handDef index="6" name="Moses Mendelssohn" />
<handDef index="7" name="Johann Friedrich Hartknoch" />
<handDef index="8" name="Johann Georg Hamann" />
<handDef index="9" name="Johann Jakob Kanter" />
<handDef index="10" name="Johann Gottlieb Kreutzfeld" />
<handDef index="11" name="Johann Caspar Lavater" />
<handDef index="12" name="Christoph Kaufmann" />
<handDef index="13" name="Elise Kaufmann, geb. Ziegler" />
<handDef index="14" name="Johann Gottfried Herder" />
<handDef index="15" name="Caroline Herder" />
<handDef index="16" name="Johann Ehrmann" />
<handDef index="17" name="Matthias Claudius" />
<handDef index="18" name="Johann Friedrich Kleuker" />
<handDef index="19" name="Friedrich Heinrich Jacobi" />
<handDef index="20" name="Friedrich Nicolai" />
<handDef index="21" name="Daniel Pegelow" />
<handDef index="22" name="Johann Ehrmann oder eine Schreibhilfe Johann Caspar Lavaters" />
<handDef index="23" name="Johann Michael Hamann (Sohn)" />
<handDef index="24" name="Arnold Corman" />
<handDef index="25" name="Franz Kaspar Bucholtz" />
<handDef index="26" name="vermutlich George Bassa" />
<handDef index="27" name="Sophie Marianne Courtan" />
<handDef index="28" name="Christian Jakob Kraus" />
<handDef index="29" name="Helene Jacobi" />
<handDef index="30" name="David Friedländer" />
<handDef index="31" name="August Herder" />
<handDef index="32" name="Heinrich Schenk" />
<handDef index="33" name="Johann Konrad Pfenninger" />
</handDefs>
<locationDefs>
<locationDef index="-1" name="unbekannt" />
<locationDef index="1" name="Berlin" />
<locationDef index="2" name="Königsberg" />
<locationDef index="3" name="Memel" />
<locationDef index="4" name="Mitau" />
<locationDef index="5" name="Kegeln" />
<locationDef index="6" name="Riga" />
<locationDef index="7" name="Grünhof" />
<locationDef index="8" name="Meyhof" />
<locationDef index="9" name="Berlin" />
<locationDef index="10" name="London" />
<locationDef index="11" name="Berenshof" />
<locationDef index="12" name="Trutenau" />
<locationDef index="13" name="Elbing" />
<locationDef index="14" name="Frankfurt am Main" />
<locationDef index="15" name="Lübeck" />
<locationDef index="16" name="Warschau" />
<locationDef index="17" name="St. Petersburg" />
<locationDef index="18" name="Nantes" />
<locationDef index="19" name="Zürich" />
<locationDef index="20" name="Mohrungen" />
<locationDef index="21" name="Schloß Hegi bei Winterthur" />
<locationDef index="22" name="Weimar" />
<locationDef index="23" name="Bückeburg" />
<locationDef index="24" name="Potsdam" />
<locationDef index="25" name="Hamburg" />
<locationDef index="26" name="Darmstadt" />
<locationDef index="27" name="Narva" />
<locationDef index="28" name="Dessau" />
<locationDef index="29" name="Wandsbeck" />
<locationDef index="30" name="Krappitz" />
<locationDef index="31" name="Leipzig" />
<locationDef index="32" name="Drubenalken" />
<locationDef index="33" name="Eutin" />
<locationDef index="34" name="Pempelfort" />
<locationDef index="35" name="Kapstadt" />
<locationDef index="36" name="Richterswil" />
<locationDef index="37" name="Düsseldorf" />
<locationDef index="38" name="Schaffhausen" />
<locationDef index="39" name="Münster" />
<locationDef index="40" name="Osnabrück" />
<locationDef index="41" name="Richmont" />
<locationDef index="42" name="Magdeburg" />
<locationDef index="43" name="Welbergen" />
</locationDefs>
<sourceDefs>
<!-- Quelle für den gesetzten Text bei Emmendationen.
Wird referenziert durch ref="" in <recte>
Nächstes Mal mit ausgeben! -->
<sourceDef index="1" name="Ohne Beleg emendiert" />
<sourceDef index="2" name="BdI, 1940" />
<sourceDef index="3" name="nur BdI Aufl. 1 (1955): Berichtigungen [abgekürzt: BdI1]" /> <!-- Zum Zeitpunkt des Anlegens der Korrekturverzeichnisse zum 1. Band waren bis auf Brief 111 alle autographen Briefe verschollen. -->
<sourceDef index="4" name="nur BdI Aufl. 2 (1988): Berichtigungen [abgekürzt: BdI2]" />
<sourceDef index="5" name="beide: BdI1 und BdI2 Berichtigungen" />
<sourceDef index="6" name="Autograph" />
<sourceDef index="7" name="Apograph" />
<sourceDef index="8" name="BdII, 1940" />
<sourceDef index="9" name="nur BdII Aufl. 1: Berichtigungen [abgekürzt: BdII1]" />
<sourceDef index="10" name="nur BdII Aufl. 2: Berichtigungen [abgekürzt: BdII2]" />
<sourceDef index="11" name="beide: BdII1 und BdII2 Berichtigungen" />
<sourceDef index="12" name="BdIII: Nachtrag zu BdII [aus einer Abschrift Lavaters] betrifft nur BdII 221f" />
</sourceDefs>
</definitions>
</data>
</opus>

128112
XML/XML/2022-07-12briefe.xml Normal file

File diff suppressed because it is too large Load Diff

22243
XML/XML/2022-07-12edits.xml Normal file

File diff suppressed because it is too large Load Diff

23906
XML/XML/2022-07-12meta.xml Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff