From 3523dfb92cd304d0097e3b7b414d832ea8d10b40 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Tue, 22 Nov 2022 12:34:55 +0100 Subject: [PATCH] Line Numbers on --- HaWeb/Controllers/BriefeContoller.cs | 4 +- HaWeb/Models/BriefeMetaViewModel.cs | 22 ++ HaWeb/README.md | 47 +-- HaWeb/Settings/ParsingRules/LetterRules.cs | 4 +- HaWeb/Settings/ParsingState/LetterState.cs | 20 +- HaWeb/Views/HKB/Dynamic/Briefe.cshtml | 24 +- HaWeb/Views/HKB/Dynamic/Register.cshtml | 2 +- HaWeb/Views/HKB/Dynamic/Suche.cshtml | 2 +- HaWeb/Views/Home/Datenschutzerklaerung.cshtml | 362 +++++++++++++++++- HaWeb/Views/Home/Kontakt.cshtml | 2 + HaWeb/Views/Shared/_FileListForm.cshtml | 2 +- HaWeb/Views/Shared/_HKBHKWChooser.cshtml | 18 + HaWeb/Views/Shared/_Javascript.cshtml | 2 +- HaWeb/Views/Shared/_PublishForm.cshtml | 2 +- HaWeb/Views/Shared/_UploadForm.cshtml | 2 +- HaWeb/wwwroot/css/output.css | 2 +- 16 files changed, 457 insertions(+), 60 deletions(-) create mode 100644 HaWeb/Views/Shared/_HKBHKWChooser.cshtml diff --git a/HaWeb/Controllers/BriefeContoller.cs b/HaWeb/Controllers/BriefeContoller.cs index ae12d7d..c0f6710 100644 --- a/HaWeb/Controllers/BriefeContoller.cs +++ b/HaWeb/Controllers/BriefeContoller.cs @@ -71,8 +71,8 @@ public class Briefecontroller : Controller { (model.ParsedText, model.MinWidth) = (parsedLetter.sb_lettertext.ToString(), parsedLetter.minwidth); if (model.ParsedMarginals != null && parsedLetter.ParsedMarginals != null) model.ParsedMarginals.AddRange(parsedLetter.ParsedMarginals); else model.ParsedMarginals = parsedLetter.ParsedMarginals; - if (parsedLetter.Startline != "-1" && parsedLetter.Startline != "1" && model.MetaData.ParsedZHString != null) - model.MetaData.ParsedZHString += " / " + parsedLetter.Startline; + model.MetaData.Startline = parsedLetter.Startline; + model.MetaData.Startpage = parsedLetter.Startpage; if (String.IsNullOrWhiteSpace(model.ParsedText)) model.MetaData.HasText = false; } diff --git a/HaWeb/Models/BriefeMetaViewModel.cs b/HaWeb/Models/BriefeMetaViewModel.cs index ec4883c..43a11c7 100644 --- a/HaWeb/Models/BriefeMetaViewModel.cs +++ b/HaWeb/Models/BriefeMetaViewModel.cs @@ -9,6 +9,8 @@ public class BriefeMetaViewModel { private string? _ParsedSenders; private string? _ParsedReceivers; private string? _ParsedZHString; + private string? _Startline; + private string? _Startpage; public string? ParsedSenders { get => _ParsedSenders; @@ -42,6 +44,26 @@ public class BriefeMetaViewModel { } } + public string? Startline { + get => _Startline; + set { + if (value != null) + _Startline = HttpUtility.HtmlEncode(value); + else + _Startline = value; + } + } + + public string? Startpage { + get => _Startpage; + set { + if (value != null) + _Startpage = HttpUtility.HtmlEncode(value); + else + _Startpage = value; + } + } + public (BriefeMetaViewModel, string)? Next { get; set; } public (BriefeMetaViewModel, string)? Prev { get; set; } diff --git a/HaWeb/README.md b/HaWeb/README.md index 88d02ee..3460a13 100644 --- a/HaWeb/README.md +++ b/HaWeb/README.md @@ -66,38 +66,27 @@ Veränderungen im Code - Code wird open source zugänglich Ästhetisch unzufriedenstellend, aber funktional: -TODO pills are not mobile friendly (hover / click), Pills allgemein Ästhetik -TODO High Contrast Mode manchmal komisch -TODO Kein High Contrast Mode für den Upload -TODO High Contrast Mode: Kursiv und ausgegraut (Herausgeberanmerkungen) schwer sichtbar -TODO 400: Traditions nicht genug Abstand -TODO Word-wrap before align, tabs +B TODO pills are not mobile friendly (hover / click), Pills allgemein Ästhetik +D TODO High Contrast Mode manchmal komisch +D TODO Kein High Contrast Mode für den Upload +D TODO High Contrast Mode: Kursiv und ausgegraut (Herausgeberanmerkungen) schwer sichtbar +D TODO 400: Traditions nicht genug Abstand Technische Details: -TODO Move ILibrary -> neuer Parser -TODO Hochstellungen nach mediaevalziffern -TODO Syntax-Check -TODO Datum im Footer Edierdatum der Hamann-Datei -TODO Fußnoten in Editionsgeschichte als Marginalkommentare -TODO Navigation auf die Startseite / von Kontakt +D TODO Move ILibrary -> neuer Parser +C TODO Syntax-Check +B TODO Datum im Footer Edierdatum der Hamann-Datei +A TODO Fußnoten in Editionsgeschichte als Marginalkommentare Vor dem internen release: -TODO Jahreszahlen auf der Startseite -TODO Suchergebnisse beschränken -TODO Mobile Menüs bei der Seitennavigation (Jahrszahlen, Buchstabenindex usw) -TODO Fehlerseiten bei nicht gefundenen Seiten -TODO Traditions durchsuchen -TODO Briefe, in welchen Sender / Empfänger jeweils doppelt / getauscht sind 876 -TODO SEO Description & Titel +A TODO Jahreszahlen auf der Startseite +B TODO Suchergebnisse beschränken +B TODO Mobile Menüs bei der Seitennavigation (Jahrszahlen, Buchstabenindex usw) +A TODO Fehlerseiten bei nicht gefundenen Seiten +C TODO Traditions durchsuchen +A TODO Briefe, in welchen Sender / Empfänger jeweils doppelt / getauscht sind 876 +A TODO SEO Description & Titel +A TODO fixed width briefe kommentar bisschen nach links 306, 309 Liste für Janina/Luca: -KEIN brief für Bassa -Editionsgeschichte erste Fußnote -tabellen ok, ausser 939, 806 falsch geschachtelt: dort sind htabs geschachtelt -Fehlende Seiten auf HKW -vmtl bei sendern und empfängern - -theophrast-abschilderungen: Link mit linktext - - - +tabellen ok, ausser 939 \ No newline at end of file diff --git a/HaWeb/Settings/ParsingRules/LetterRules.cs b/HaWeb/Settings/ParsingRules/LetterRules.cs index f27b2f5..1414528 100644 --- a/HaWeb/Settings/ParsingRules/LetterRules.cs +++ b/HaWeb/Settings/ParsingRules/LetterRules.cs @@ -161,7 +161,8 @@ public class LetterRules { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline)); // Fall 1: Neue Seite - if (reader.State.currline == "1") { + if (reader.State.pagebreak == true) { + reader.State.pagebreak = false; sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHPAGECLASS, "")); sb.Append("S. " + reader.State.currpage); } @@ -184,6 +185,7 @@ public class LetterRules { } else if (reader.State.currline == "-1" && !String.IsNullOrWhiteSpace(tag["index"])) { reader.State.Startline = tag["index"]; reader.State.currline = tag["index"]; + reader.State.pagebreak = false; } // Marginalien, only for lines with a linenumber diff --git a/HaWeb/Settings/ParsingState/LetterState.cs b/HaWeb/Settings/ParsingState/LetterState.cs index 91698d1..c2b0792 100644 --- a/HaWeb/Settings/ParsingState/LetterState.cs +++ b/HaWeb/Settings/ParsingState/LetterState.cs @@ -26,14 +26,25 @@ public class LetterState : HaWeb.HTMLParser.IState { // What's the current line? internal string currline; // What's the current page? - internal string currpage; - // Does the container need a min-widt, so percentages are useful (tables) + private string? _currpage; + internal string? currpage { + get => _currpage; + set { + if (Startpage == null) + Startpage = value; + _currpage = value; + pagebreak = true; + }} + // Does the container need a min-width, so percentages are useful (tables) internal bool minwidth; + // Did a pagebreak just occur? + internal bool pagebreak = false; // Results internal StringBuilder sb_lettertext; internal List<(string, string, string)>? ParsedMarginals; - internal string Startline; + internal string? Startline; + internal string? Startpage = null; public LetterState(ILibrary lib, IReaderService readerService, Meta meta, IEnumerable? marginals, IEnumerable? hands, IEnumerable? edits) { Lib = lib; @@ -50,12 +61,11 @@ public class LetterState : HaWeb.HTMLParser.IState { sb_lettertext = new StringBuilder(); active_skipwhitespace = true; currline = "-1"; - currpage = string.Empty; mustwrap = (false, false); minwidth = false; // Initialize State - if (Meta.ZH != null) { + if (Meta.ZH != null && !String.IsNullOrWhiteSpace(Meta.ZH.Page)) { currpage = Meta.ZH.Page; } } diff --git a/HaWeb/Views/HKB/Dynamic/Briefe.cshtml b/HaWeb/Views/HKB/Dynamic/Briefe.cshtml index 78fcd3e..8994a15 100644 --- a/HaWeb/Views/HKB/Dynamic/Briefe.cshtml +++ b/HaWeb/Views/HKB/Dynamic/Briefe.cshtml @@ -11,7 +11,7 @@
- @await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (Model.MetaData, false, false)) + @await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (Model.MetaData, true, false))
@if (!String.IsNullOrWhiteSpace(Model.ParsedText)) @@ -54,11 +54,13 @@
- @if (Model.MetaData.ParsedZHString != null) { -
- @Html.Raw(Model.MetaData.ParsedZHString) +
+ @if (Model.MetaData.Startline == "1") { +
S. @Html.Raw(Model.MetaData.Startpage)
+ } else { +
@Html.Raw(Model.MetaData.Startpage)/@Html.Raw(Model.MetaData.Startline)
+ }
- } @Html.Raw(@Model.ParsedText) @* It's not beautiful but it's a hack to keep the last comment within parent element boundaries: *@
@@ -99,11 +101,7 @@ @* Not beautiful, but here's whitespace in between otherwise *@ -
@hand.Item1
@if (!String.IsNullOrEmpty(hand.Item2)) - { -
–@hand.Item2
- } +
@hand.Item1
@if(!String.IsNullOrEmpty(hand.Item2)){
–@hand.Item2
} @Html.Raw(@hand.Item3) @@ -128,11 +126,7 @@ { -
@edit.Item1
@if (!String.IsNullOrEmpty(edit.Item2)) - { -
–@edit.Item2
- } +
@edit.Item1
@if(!String.IsNullOrEmpty(edit.Item2)){
–@edit.Item2
} @if (!String.IsNullOrWhiteSpace(edit.Item3)) diff --git a/HaWeb/Views/HKB/Dynamic/Register.cshtml b/HaWeb/Views/HKB/Dynamic/Register.cshtml index 98d76c2..b4ad5cc 100644 --- a/HaWeb/Views/HKB/Dynamic/Register.cshtml +++ b/HaWeb/Views/HKB/Dynamic/Register.cshtml @@ -24,7 +24,7 @@ : "ha-bibel"; } - +
diff --git a/HaWeb/Views/HKB/Dynamic/Suche.cshtml b/HaWeb/Views/HKB/Dynamic/Suche.cshtml index 2d7c86f..105e7f6 100644 --- a/HaWeb/Views/HKB/Dynamic/Suche.cshtml +++ b/HaWeb/Views/HKB/Dynamic/Suche.cshtml @@ -5,7 +5,7 @@ ViewData["showCredits"] = "false"; ViewData["Mark"] = Model.ActiveSearch; } - +