mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 09:15:33 +00:00
Started integrating letter view; overhauled marginals completely
This commit is contained in:
@@ -59,8 +59,7 @@ public class Briefecontroller : Controller
|
||||
if (hands != null && hands.Any()) model.ParsedHands = HaWeb.HTMLHelpers.BriefeHelpers.CreateHands(_lib, hands);
|
||||
if (editreasons != null && editreasons.Any()) model.ParsedEdits = HaWeb.HTMLHelpers.BriefeHelpers.CreateEdits(_lib, _readerService, editreasons);
|
||||
if (tradition != null && !String.IsNullOrWhiteSpace(tradition.Element)) model.ParsedTradition = HaWeb.HTMLHelpers.BriefeHelpers.CreateTraditions(_lib, _readerService, marginals, tradition);
|
||||
if (text != null && !String.IsNullOrWhiteSpace(text.Element))
|
||||
(model.ParsedLineCount, model.ParsedText, model.ParsedMarginals) = HaWeb.HTMLHelpers.BriefeHelpers.CreateLetter(_lib, _readerService, meta, text, marginals);
|
||||
if (text != null && !String.IsNullOrWhiteSpace(text.Element)) model.ParsedText = HaWeb.HTMLHelpers.BriefeHelpers.CreateLetter(_lib, _readerService, meta, text, marginals);
|
||||
|
||||
// Return
|
||||
return View(model);
|
||||
|
||||
@@ -54,14 +54,14 @@ public class RegisterController : Controller
|
||||
var res = new List<CommentModel>();
|
||||
foreach (var comm in comments)
|
||||
{
|
||||
var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, comm);
|
||||
var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, comm, category, Settings.ParsingState.CommentType.Comment);
|
||||
List<string>? parsedSubComments = null;
|
||||
if (comm.Kommentare != null)
|
||||
{
|
||||
parsedSubComments = new List<string>();
|
||||
foreach (var subcomm in comm.Kommentare.OrderBy(x => x.Value.Order))
|
||||
{
|
||||
parsedSubComments.Add(HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, subcomm.Value));
|
||||
parsedSubComments.Add(HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, subcomm.Value, category, Settings.ParsingState.CommentType.Subcomment));
|
||||
}
|
||||
}
|
||||
res.Add(new CommentModel(parsedComment, parsedSubComments));
|
||||
@@ -101,14 +101,14 @@ public class RegisterController : Controller
|
||||
var res = new List<CommentModel>();
|
||||
foreach (var comm in comments)
|
||||
{
|
||||
var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, comm);
|
||||
var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, comm, category, Settings.ParsingState.CommentType.Comment);
|
||||
List<string>? parsedSubComments = null;
|
||||
if (comm.Kommentare != null)
|
||||
{
|
||||
parsedSubComments = new List<string>();
|
||||
foreach (var subcomm in comm.Kommentare.OrderBy(x => x.Value.Lemma.Length).ThenBy(x => x.Value.Lemma))
|
||||
{
|
||||
parsedSubComments.Add(HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, subcomm.Value));
|
||||
parsedSubComments.Add(HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, subcomm.Value, category, Settings.ParsingState.CommentType.Subcomment));
|
||||
}
|
||||
}
|
||||
res.Add(new CommentModel(parsedComment, parsedSubComments));
|
||||
@@ -156,14 +156,14 @@ public class RegisterController : Controller
|
||||
var res = new List<CommentModel>();
|
||||
foreach (var comm in comments)
|
||||
{
|
||||
var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, comm);
|
||||
var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, comm, category, Settings.ParsingState.CommentType.Comment);
|
||||
List<string>? parsedSubComments = null;
|
||||
if (comm.Kommentare != null)
|
||||
{
|
||||
parsedSubComments = new List<string>();
|
||||
foreach (var subcomm in comm.Kommentare.OrderBy(x => x.Value.Order))
|
||||
{
|
||||
parsedSubComments.Add(HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, subcomm.Value));
|
||||
parsedSubComments.Add(HTMLHelpers.CommentHelpers.CreateHTML(_lib, _readerService, subcomm.Value, category, Settings.ParsingState.CommentType.Subcomment));
|
||||
}
|
||||
}
|
||||
res.Add(new CommentModel(parsedComment, parsedSubComments));
|
||||
|
||||
@@ -13,20 +13,20 @@ using HaWeb.Settings.ParsingRules;
|
||||
|
||||
public static class BriefeHelpers
|
||||
{
|
||||
public static (string, string, string) CreateLetter(ILibrary lib, IReaderService readerService, Meta meta, Letter letter, IEnumerable<Marginal>? marginals)
|
||||
public static string CreateLetter(ILibrary lib, IReaderService readerService, Meta meta, Letter letter, IEnumerable<Marginal>? marginals)
|
||||
{
|
||||
var rd = readerService.RequestStringReader(letter.Element);
|
||||
var letterState = new LetterState(lib, readerService, meta, marginals);
|
||||
new HaWeb.HTMLParser.XMLHelper<LetterState>(letterState, rd, letterState.sb_lettertext, LetterRules.OTagRules, LetterRules.STagRules, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules);
|
||||
new HaWeb.HTMLParser.XMLHelper<LetterState>(letterState, rd, letterState.sb_linecount, null, LetterRules.STagRulesLineCount);
|
||||
// new HaWeb.HTMLParser.XMLHelper<LetterState>(letterState, rd, letterState.sb_lettertext, null, LetterRules.STagRulesLineCount);
|
||||
|
||||
if (marginals != null && marginals.Any())
|
||||
{
|
||||
new HaWeb.HTMLParser.XMLHelper<LetterState>(letterState, rd, letterState.sb_marginals, null, LetterRules.STagRulesMarginals);
|
||||
}
|
||||
// if (marginals != null && marginals.Any())
|
||||
// {
|
||||
// new HaWeb.HTMLParser.XMLHelper<LetterState>(letterState, rd, letterState.sb_lettertext, null, LetterRules.STagRulesMarginals);
|
||||
// }
|
||||
rd.Read();
|
||||
|
||||
return (letterState.sb_linecount.ToString(), letterState.sb_lettertext.ToString(), letterState.sb_marginals.ToString());
|
||||
return letterState.sb_lettertext.ToString();
|
||||
}
|
||||
|
||||
public static string CreateTraditions(ILibrary lib, IReaderService readerService, IEnumerable<Marginal>? marginals, Tradition tradition)
|
||||
|
||||
@@ -15,11 +15,11 @@ public static class CommentHelpers
|
||||
private static readonly string COMMENTHEADCLASS = HaWeb.Settings.CSSClasses.COMMENTHEADCLASS;
|
||||
private static readonly string BACKLINKSHKBCLASS = HaWeb.Settings.CSSClasses.BACKLINKSHKBCLASS;
|
||||
|
||||
public static string CreateHTML(ILibrary lib, IReaderService readerService, Comment comment)
|
||||
public static string CreateHTML(ILibrary lib, IReaderService readerService, Comment comment, string category, CommentType type)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
var rd = readerService.RequestStringReader(comment.Lemma);
|
||||
var commentState = new CommentState();
|
||||
var commentState = new CommentState(category, type);
|
||||
new HTMLParser.XMLHelper<CommentState>(commentState, rd, sb, CommentRules.OTagRules, CommentRules.STagRules, CommentRules.CTagRules, CommentRules.TextRules, CommentRules.WhitespaceRules);
|
||||
sb.Append(HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTHEADCLASS, comment.Index));
|
||||
new HTMLHelpers.LinkHelper(lib, rd, sb);
|
||||
|
||||
26
HaWeb/README.md
Normal file
26
HaWeb/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Redesign der Hamann-Vebseite, drittes Major Upadte
|
||||
Veränderungenen in der Funktionalität für den Benutzer
|
||||
- Behutsames Redesign der Webseite:
|
||||
- Schrift wird minimal größer auf großen Bildschirmen
|
||||
- Redesign der Marginalspalte, sodass keine Überschneidungen vorkommen
|
||||
- Leichtes Redesign der Zusatzinformationen für einen Brief (Tradition, Edits) an etwas prominenterer Stelle
|
||||
- Anpassung der Webseite an Mobilgeräte und Tablets
|
||||
|
||||
- Suche im Brieftext wird gefixt
|
||||
- Seite wird zugänglich für Menschen mit eingeschränktem Sehvermögen / Screenreadern
|
||||
|
||||
Veränderungen in der Funktionalität für die Forscher
|
||||
- Online-Syntaxcheck für XML-Dateien
|
||||
- Online-Cross-Dateien-Check (bsp. verweist jede Marginalie auf eine existierende Zeile)?
|
||||
- Erstellung einer HAMANN.xml-Datei
|
||||
- Hochladen der HAMANN.xml-Datei auf die Plattform
|
||||
|
||||
Veränderungen im Code
|
||||
- Anpassung des Codes an .NET 6 (Kopieren / Einfügen)
|
||||
- Umzug nach CSS Framework Tailwind
|
||||
- Code wird aufgeräumt und sortiert
|
||||
- Leichtere Anpassungen an zukünftige Bedütfnisse (Wartungszeiten minimieren)
|
||||
- Auslagerungen einzelner Einstellungen in Einstellungsdateien
|
||||
- Code open source zugänglich machen?
|
||||
|
||||
Für diese Anpassungen sind in etwa 3-4 Monate eingeplant.
|
||||
@@ -55,17 +55,20 @@ public static class CSSClasses {
|
||||
public const string EMPHCLASS = "ha-emph";
|
||||
public const string APPCLASS = "ha-app";
|
||||
public const string MARGINGALBOXCLASS = "ha-marginalbox";
|
||||
|
||||
public const string TRADLINECOUNTCLASS = "ha-tradlinecount";
|
||||
public const string TRADCOMMENTCOLUMNCLASS = "ha-tradcommentcolumn";
|
||||
public const string TRADZHTEXTCLASS = "ha-tradzhtext";
|
||||
public const string TRADZHTEXTBOXCLASS = "ha-tradtextbox";
|
||||
|
||||
// Zeilen:
|
||||
public const string ZHLINECLASS = "ha-zhline";
|
||||
public const string FIRSTLINECLASS ="ha-firstline";
|
||||
public const string ZHBREAKCLASS = "ha-zhbreak";
|
||||
public const string LINELINECLASS = "ha-hr";
|
||||
public const string LINEINDENTCLASS = "ha-indent-"; // TODO: GEN
|
||||
public const string ZHPAGECLASS = "ha-zhpage";
|
||||
public const string ZHLINECOUNTCLASS = "ha-linecount";
|
||||
public const string HIDDENZHLINECOUNT = "ha-hiddenlinecount";
|
||||
public const string FIRSTPAGECLASS = "ha-firstpage";
|
||||
public const string EMPTYLINECLASS = "ha-emptyline";
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
namespace HaWeb.Settings.ParsingRules;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.CommentState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.CommentState>>)>;
|
||||
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.CommentState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.CommentState>>)>;
|
||||
@@ -30,8 +31,20 @@ public static class CommentRules {
|
||||
};
|
||||
|
||||
public static readonly TextFuncList TextRules = new TextFuncList() {
|
||||
( (x, _) => true, ( sb, txt, _) => sb.Append(txt.Value) )
|
||||
};
|
||||
( (x, _) => true, ( sb, txt, reader) => {
|
||||
sb.Append(txt.Value);
|
||||
if (reader.State.Category == "bibel" && reader.State.Type == HaWeb.Settings.ParsingState.CommentType.Subcomment &&
|
||||
reader.OpenTags.Any() && reader.OpenTags.Last().Name == "lemma" &&
|
||||
!txt.Value.Contains("Stücke zu") && !txt.Value.Contains("ZusDan")) {
|
||||
var lnkstring = Regex.Replace(txt.Value, @"\s+", "");
|
||||
sb.Append(HTMLHelpers.TagHelpers.CreateCustomElement("a",
|
||||
new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "href", Value = "https://www.bibleserver.com/LUT/" + lnkstring},
|
||||
new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "target", Value = "_blank"},
|
||||
new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "rel", Value = "noopener noreferrer"}));
|
||||
sb.Append("<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-external-link\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line></svg>");
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement("a"));
|
||||
}
|
||||
})};
|
||||
|
||||
public static readonly WhitespaceFuncList WhitespaceRules = new WhitespaceFuncList() {
|
||||
( (x, _) => true, ( sb, txt, _) => sb.Append(txt.Value) )
|
||||
|
||||
@@ -45,12 +45,16 @@ public class LetterRules
|
||||
private static readonly string MARGINGALBOXCLASS = HaWeb.Settings.CSSClasses.MARGINGALBOXCLASS;
|
||||
|
||||
// Zeilen:
|
||||
private static readonly string ZHLINECLASS = HaWeb.Settings.CSSClasses.ZHLINECLASS;
|
||||
private static readonly string FIRSTLINECLASS = HaWeb.Settings.CSSClasses.FIRSTLINECLASS;
|
||||
private static readonly string ZHBREAKCLASS = HaWeb.Settings.CSSClasses.ZHBREAKCLASS;
|
||||
private static readonly string LINELINECLASS = HaWeb.Settings.CSSClasses.LINELINECLASS;
|
||||
private static readonly string LINEINDENTCLASS = HaWeb.Settings.CSSClasses.LINEINDENTCLASS;
|
||||
private static readonly string ZHPAGECLASS = HaWeb.Settings.CSSClasses.ZHBREAKCLASS;
|
||||
private static readonly string ZHPAGECLASS = HaWeb.Settings.CSSClasses.ZHPAGECLASS;
|
||||
private static readonly string ZHLINECOUNTCLASS = HaWeb.Settings.CSSClasses.ZHLINECOUNTCLASS;
|
||||
private static readonly string FIRSTPAGECLASS = HaWeb.Settings.CSSClasses.FIRSTPAGECLASS;
|
||||
private static readonly string EMPTYLINECLASS = HaWeb.Settings.CSSClasses.EMPTYLINECLASS;
|
||||
private static readonly string HIDDENZHLINECOUNT = HaWeb.Settings.CSSClasses.HIDDENZHLINECOUNT;
|
||||
|
||||
// Root-Elemente
|
||||
private static readonly string COMMENTCLASS = HaWeb.Settings.CSSClasses.COMMENTCLASS;
|
||||
@@ -155,14 +159,90 @@ public class LetterRules
|
||||
})};
|
||||
|
||||
public static readonly TagFuncList STagRules = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1") sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS));
|
||||
( (x, _) => x.Name == "page", (sb, tag, reader) => reader.State.currpage = tag["index"] ),
|
||||
( (x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
// This is the beginning of the Text, so no <br> needed, just a special linecount
|
||||
if(reader.State.currline == "-1") {
|
||||
reader.State.currline = tag["index"];
|
||||
|
||||
// First Linecount
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS + " " + FIRSTLINECLASS, ""));
|
||||
if(reader.State.Meta.ZH != null) {
|
||||
sb.Append("ZH ");
|
||||
sb.Append(HaWeb.HTMLHelpers.ConversionHelpers.ToRoman(Int32.Parse(reader.State.Meta.ZH.Volume)));
|
||||
sb.Append(" ");
|
||||
}
|
||||
sb.Append("S." + " ");
|
||||
if (tag["index"] != "1")
|
||||
sb.Append(reader.State.currpage + " / " + tag["index"]);
|
||||
else
|
||||
sb.Append(reader.State.currpage);
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}
|
||||
|
||||
// This is NOT the beginning of the text, so we set a br, and then, linecount
|
||||
else {
|
||||
reader.State.currline = tag["index"];
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS));
|
||||
|
||||
// Linecount
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
||||
|
||||
// Fall 1: Neue Seite
|
||||
if (reader.State.currline == "1") {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS, ""));
|
||||
sb.Append("S. " + reader.State.currpage);
|
||||
}
|
||||
|
||||
// Fall 2: Neue Zeile, teilbar durch 5
|
||||
else if (Int32.TryParse(tag["index"], out var _) && Int32.Parse(tag["index"]) % 5 == 0) {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECLASS, ""));
|
||||
sb.Append(tag["index"]);
|
||||
}
|
||||
|
||||
// Fall 3: Neue Zeile, nicht teilbar durch 5, deswegen versteckt
|
||||
else {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECLASS + " " + HIDDENZHLINECOUNT, ""));
|
||||
sb.Append(tag["index"]);
|
||||
}
|
||||
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}
|
||||
|
||||
// Marginalien
|
||||
if(reader.State.Marginals != null) {
|
||||
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
|
||||
if (margs != null && margs.Any())
|
||||
{
|
||||
margs = margs.OrderBy(x => Int32.Parse(x.Index));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS));
|
||||
foreach (var marginal in margs)
|
||||
{
|
||||
// In Marginal, the Root-Element (<marginal>) is somehow parsed,
|
||||
// so we don't need to enclose it in a seperate div.
|
||||
var rd = reader.State.ReaderService.RequestStringReader(marginal.Element);
|
||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>(reader.State, rd, sb, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules);
|
||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false);
|
||||
rd.Read();
|
||||
}
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}
|
||||
}
|
||||
|
||||
// Line type=line
|
||||
if(tag["type"] == "line") sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINELINECLASS));
|
||||
} ),
|
||||
( ( x, _) => x.Name == "line" && !String.IsNullOrWhiteSpace(x["tab"]), (sb, tag, _) => {
|
||||
|
||||
// Line tab=
|
||||
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINEINDENTCLASS + tag["tab"]));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
})};
|
||||
}
|
||||
}
|
||||
)};
|
||||
|
||||
|
||||
public static readonly WhitespaceFuncList WhitespaceRules = new WhitespaceFuncList() {
|
||||
( ( _, _) => true, ( sb, txt, reader) => {
|
||||
@@ -171,64 +251,4 @@ public class LetterRules
|
||||
else
|
||||
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
||||
})};
|
||||
|
||||
// Rules for the left sidebar
|
||||
public static readonly TagFuncList STagRulesLineCount = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1") {
|
||||
if (reader.State.currpage == reader.State.oldpage)
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", "", reader.State.currpage + "-" + reader.State.currline));
|
||||
else {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", "", reader.State.oldpage + "-" + reader.State.currline));
|
||||
reader.State.oldpage = reader.State.currpage;
|
||||
}
|
||||
}
|
||||
else {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS + " " + FIRSTPAGECLASS, reader.State.currpage + "-" + tag["index"]));
|
||||
sb.Append("S." + " ");
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
if (tag["index"] != "1")
|
||||
sb.Append(reader.State.currpage + " / " + tag["index"]);
|
||||
else
|
||||
sb.Append(reader.State.currpage);
|
||||
reader.State.oldpage = reader.State.currpage;
|
||||
}
|
||||
}),
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1" && Int32.TryParse(tag["index"], out var _) && Int32.Parse(tag["index"]) % 5 == 0)
|
||||
sb.Append(tag["index"]);
|
||||
}),
|
||||
( ( x, reader) => x.Name == "line" && x["index"] == "1" && reader.State.currline != "-1", (sb, tag, reader) => {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS, ""));
|
||||
sb.Append("S. " + reader.State.currpage);
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}),
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => { reader.State.currline = tag["index"]; } ),
|
||||
( ( x, _) => x.Name == "page", (sb, tag, reader) => { reader.State.currpage = tag["index"]; } )
|
||||
};
|
||||
|
||||
// Rules for the right sidebar
|
||||
public static readonly TagFuncList STagRulesMarginals = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1" && reader.State.Marginals != null) {
|
||||
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
|
||||
if (margs != null && margs.Any())
|
||||
{
|
||||
margs = margs.OrderBy(x => Int32.Parse(x.Index));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS, reader.State.commid.ToString()));
|
||||
foreach (var marginal in margs)
|
||||
{
|
||||
var rd = reader.State.ReaderService.RequestStringReader(marginal.Element);
|
||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>(reader.State, rd, sb, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules);
|
||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false);
|
||||
rd.Read();
|
||||
}
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
|
||||
}
|
||||
else
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", EMPTYLINECLASS));
|
||||
}
|
||||
reader.State.commid++;
|
||||
})};
|
||||
}
|
||||
@@ -47,9 +47,11 @@ public static class TraditionRules
|
||||
private static readonly string ZHBREAKCLASS = HaWeb.Settings.CSSClasses.ZHBREAKCLASS;
|
||||
private static readonly string LINELINECLASS = HaWeb.Settings.CSSClasses.LINELINECLASS;
|
||||
private static readonly string LINEINDENTCLASS = HaWeb.Settings.CSSClasses.LINEINDENTCLASS;
|
||||
private static readonly string ZHPAGECLASS = HaWeb.Settings.CSSClasses.ZHBREAKCLASS;
|
||||
private static readonly string ZHPAGECLASS = HaWeb.Settings.CSSClasses.ZHPAGECLASS;
|
||||
private static readonly string ZHLINECOUNTCLASS = HaWeb.Settings.CSSClasses.ZHLINECOUNTCLASS;
|
||||
private static readonly string FIRSTPAGECLASS = HaWeb.Settings.CSSClasses.FIRSTPAGECLASS;
|
||||
private static readonly string EMPTYLINECLASS = HaWeb.Settings.CSSClasses.EMPTYLINECLASS;
|
||||
private static readonly string HIDDENZHLINECOUNT = HaWeb.Settings.CSSClasses.HIDDENZHLINECOUNT;
|
||||
|
||||
// Root-Elemente
|
||||
private static readonly string COMMENTCLASS = HaWeb.Settings.CSSClasses.COMMENTCLASS;
|
||||
@@ -160,14 +162,82 @@ public static class TraditionRules
|
||||
})};
|
||||
|
||||
public static readonly TagFuncList STagRules = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1") sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS));
|
||||
( (x, _) => x.Name == "page", (sb, tag, reader) => reader.State.currpage = tag["index"] ),
|
||||
( (x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
// This is the beginning of the Text, so no <br> needed, just a special linecount
|
||||
if(reader.State.currline == "-1") {
|
||||
reader.State.currline = tag["index"];
|
||||
|
||||
// First Linecount
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
||||
sb.Append("S." + " ");
|
||||
if (tag["index"] != "1")
|
||||
sb.Append(reader.State.currpage + " / " + tag["index"]);
|
||||
else
|
||||
sb.Append(reader.State.currpage);
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}
|
||||
|
||||
// This is NOT the beginning of the text, so we set a br, and then, linecount
|
||||
else {
|
||||
reader.State.currline = tag["index"];
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS));
|
||||
|
||||
// Linecount
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
||||
|
||||
// Fall 1: Neue Seite
|
||||
if (reader.State.currline == "1") {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS, ""));
|
||||
sb.Append("S. " + reader.State.currpage);
|
||||
}
|
||||
|
||||
// Fall 2: Neue Zeile, teilbar durch 5
|
||||
else if (Int32.TryParse(tag["index"], out var _) && Int32.Parse(tag["index"]) % 5 == 0) {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS, ""));
|
||||
sb.Append(tag["index"]);
|
||||
}
|
||||
|
||||
// Fall 3: Neue Zeile, nicht teilbar durch 5, deswegen versteckt
|
||||
else {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS + " " + HIDDENZHLINECOUNT, ""));
|
||||
sb.Append(tag["index"]);
|
||||
}
|
||||
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}
|
||||
|
||||
// Marginalien
|
||||
if(reader.State.Marginals != null) {
|
||||
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
|
||||
if (margs != null && margs.Any())
|
||||
{
|
||||
margs = margs.OrderBy(x => Int32.Parse(x.Index));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS));
|
||||
foreach (var marginal in margs)
|
||||
{
|
||||
// In Marginal, the Root-Element (<marginal>) is somehow parsed,
|
||||
// so we don't need to enclose it in a seperate div.
|
||||
var rd = reader.State.ReaderService.RequestStringReader(marginal.Element);
|
||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>(reader.State, rd, sb, TraditionRules.OTagRules, null, TraditionRules.CTagRules, TraditionRules.TextRules, TraditionRules.WhitespaceRules);
|
||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false);
|
||||
rd.Read();
|
||||
}
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}
|
||||
}
|
||||
|
||||
// Line type=line
|
||||
if(tag["type"] == "line") sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINELINECLASS));
|
||||
} ),
|
||||
( ( x, _) => x.Name == "line" && !String.IsNullOrWhiteSpace(x["tab"]), (sb, tag, _) => {
|
||||
|
||||
// Line tab=
|
||||
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINEINDENTCLASS + tag["tab"]));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
})};
|
||||
}
|
||||
}
|
||||
)};
|
||||
|
||||
public static readonly WhitespaceFuncList WhitespaceRules = new WhitespaceFuncList() {
|
||||
( ( _, _) => true, ( sb, txt, reader) => {
|
||||
@@ -178,67 +248,8 @@ public static class TraditionRules
|
||||
})};
|
||||
|
||||
|
||||
// Rules for the left sidebar
|
||||
public static readonly TagFuncList STagRulesLineCount = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1") {
|
||||
if (reader.State.currpage == reader.State.oldpage)
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", "", reader.State.currpage + "-" + reader.State.currline));
|
||||
else {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", "", reader.State.oldpage + "-" + reader.State.currline));
|
||||
reader.State.oldpage = reader.State.currpage;
|
||||
}
|
||||
}
|
||||
else {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS + " " + FIRSTPAGECLASS, reader.State.currpage + "-" + tag["index"]));
|
||||
sb.Append("S." + " ");
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
if (tag["index"] != "1")
|
||||
sb.Append(reader.State.currpage + " / " + tag["index"]);
|
||||
else
|
||||
sb.Append(reader.State.currpage);
|
||||
reader.State.oldpage = reader.State.currpage;
|
||||
}
|
||||
}),
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1" && Int32.TryParse(tag["index"], out var _) && Int32.Parse(tag["index"]) % 5 == 0)
|
||||
sb.Append(tag["index"]);
|
||||
}),
|
||||
( ( x, reader) => x.Name == "line" && x["index"] == "1" && reader.State.currline != "-1", (sb, tag, reader) => {
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS, ""));
|
||||
sb.Append("S. " + reader.State.currpage);
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
}),
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => { reader.State.currline = tag["index"]; } ),
|
||||
( ( x, _) => x.Name == "page", (sb, tag, reader) => { reader.State.currpage = tag["index"]; } )
|
||||
};
|
||||
|
||||
|
||||
// Rules for the right sidebar
|
||||
public static readonly TagFuncList STagRulesMarginals = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||
if(reader.State.currline != "-1" && reader.State.Marginals != null) {
|
||||
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
|
||||
if (margs != null && margs.Any())
|
||||
{
|
||||
margs = margs.OrderBy(x => Int32.Parse(x.Index));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS, reader.State.commid.ToString()));
|
||||
foreach (var marginal in margs)
|
||||
{
|
||||
var rd = reader.State.ReaderService.RequestStringReader(marginal.Element);
|
||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>(reader.State, rd, sb, TraditionRules.OTagRules, null, TraditionRules.CTagRules, TraditionRules.TextRules, TraditionRules.WhitespaceRules);
|
||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false);
|
||||
rd.Read();
|
||||
}
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
|
||||
}
|
||||
else
|
||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", EMPTYLINECLASS));
|
||||
}
|
||||
reader.State.commid++;
|
||||
})};
|
||||
|
||||
public static readonly TagFuncList OTagRulesInitial = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "app", (sb, tag, reader) => {
|
||||
if (!reader.State.active_firstedit)
|
||||
@@ -247,29 +258,14 @@ public static class TraditionRules
|
||||
reader.State.active_firstedit = false;
|
||||
}),
|
||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, "row zhtext"));
|
||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, "trad-text col order-2 letterbox"));
|
||||
reader.State.sb_trad_left = new StringBuilder();
|
||||
reader.State.sb_trad_right = new StringBuilder();
|
||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TRADZHTEXTCLASS));
|
||||
reader.State.currline = "-1";
|
||||
reader.State.currpage = "";
|
||||
reader.State.active_trad = true;
|
||||
reader.State.sb_trad_left.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, "trad-linecount countbox nnumber d-none d-lg-block order-1"));
|
||||
reader.State.sb_trad_right.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, "commentColumn trad-comm col-4 d-none d-lg-block order-3"));
|
||||
reader.State.sb_trad_right.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", EMPTYLINECLASS));
|
||||
if (reader.State.rd_tradition != null) {
|
||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>(reader.State, reader.State.rd_tradition, reader.State.sb_trad_left, null, TraditionRules.STagRulesLineCount);
|
||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>(reader.State, reader.State.rd_tradition, reader.State.sb_trad_right, null, TraditionRules.STagRulesMarginals);
|
||||
}
|
||||
})};
|
||||
|
||||
public static readonly TagFuncList CTagRulesInitial = new TagFuncList() {
|
||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
reader.State.sb_trad_left.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
reader.State.sb_trad_right.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
reader.State.sb_tradition.Append(reader.State.sb_trad_left.ToString());
|
||||
reader.State.sb_tradition.Append(reader.State.sb_trad_right.ToString());
|
||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||
reader.State.active_trad = false;
|
||||
})};
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
namespace HaWeb.Settings.ParsingState;
|
||||
using System.Text;
|
||||
|
||||
public enum CommentType {
|
||||
Comment,
|
||||
Subcomment
|
||||
}
|
||||
|
||||
public class CommentState : HaWeb.HTMLParser.IState {
|
||||
internal string Category;
|
||||
internal CommentType Type;
|
||||
|
||||
public CommentState(string category, CommentType type) {
|
||||
this.Category = category;
|
||||
this.Type = type;
|
||||
}
|
||||
|
||||
public void SetupState() { }
|
||||
}
|
||||
@@ -22,13 +22,9 @@ public class LetterState : HaWeb.HTMLParser.IState {
|
||||
internal bool active_skipwhitespace;
|
||||
internal string currline;
|
||||
internal string currpage;
|
||||
internal string oldpage;
|
||||
internal int commid;
|
||||
|
||||
// Parsing-Combinations
|
||||
internal StringBuilder sb_lettertext; // Hauptext
|
||||
internal StringBuilder sb_linecount; // Linke Spalte (Zeilenzählung)
|
||||
internal StringBuilder sb_marginals; // Rechte Spalte (Kommentare)
|
||||
internal StringBuilder sb_lettertext;
|
||||
|
||||
|
||||
public LetterState(ILibrary lib, IReaderService readerService, Meta meta, IEnumerable<Marginal>? marginals) {
|
||||
@@ -43,14 +39,9 @@ public class LetterState : HaWeb.HTMLParser.IState {
|
||||
|
||||
public void SetupState() {
|
||||
sb_lettertext = new StringBuilder();
|
||||
sb_linecount = new StringBuilder();
|
||||
sb_marginals = new StringBuilder();
|
||||
|
||||
active_skipwhitespace = true;
|
||||
currline = "-1";
|
||||
currpage = "";
|
||||
oldpage = "";
|
||||
commid = 1;
|
||||
|
||||
// Initialize State
|
||||
if (Meta.ZH != null) {
|
||||
|
||||
@@ -17,14 +17,10 @@ public class TraditionState : HaWeb.HTMLParser.IState {
|
||||
internal bool active_firstedit;
|
||||
internal string currline;
|
||||
internal string currpage;
|
||||
internal string oldpage;
|
||||
internal int commid;
|
||||
internal bool active_trad;
|
||||
|
||||
internal StringBuilder sb_tradition; // Überlieferung
|
||||
internal StringBuilder sb_trad_zhtext; // Überlieferung, ZHText
|
||||
internal StringBuilder sb_trad_left; // Überlieferung ZHText linke Spalte (zeilenzählung)
|
||||
internal StringBuilder sb_trad_right; // Überlieferung ZHText rechte Spalte (Kommentare)
|
||||
|
||||
internal IReader rd_tradition;
|
||||
|
||||
@@ -39,8 +35,6 @@ public class TraditionState : HaWeb.HTMLParser.IState {
|
||||
public void SetupState() {
|
||||
sb_tradition = new StringBuilder();
|
||||
sb_trad_zhtext = new StringBuilder();
|
||||
sb_trad_left = new StringBuilder();
|
||||
sb_trad_right = new StringBuilder();
|
||||
|
||||
active_trad = false;
|
||||
active_del = false;
|
||||
@@ -48,7 +42,5 @@ public class TraditionState : HaWeb.HTMLParser.IState {
|
||||
active_firstedit = true;
|
||||
currline = "-1";
|
||||
currpage = "";
|
||||
oldpage = "";
|
||||
commid = 1;
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,39 @@
|
||||
|
||||
<div class="ha-letterheader">
|
||||
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", Model.MetaData)
|
||||
<div class="ha-letterheadernav">
|
||||
<div class="ha-lettertabs">
|
||||
<a class="active">Brieftext</a>
|
||||
<a class="">Überlieferung & Textkritik</a>
|
||||
<a class="">PDF</a>
|
||||
</div>
|
||||
|
||||
@if (Model.MetaData.Next != null || Model.MetaData.Prev != null) {
|
||||
<div class="ha-lettermetalinks">
|
||||
@if (Model.MetaData.Prev != null) {
|
||||
<a href="@Model.MetaData.Prev.Value.Item2">
|
||||
@Model.MetaData.Prev.Value.Item1.Meta.Autopsic ◀
|
||||
</a>
|
||||
}
|
||||
<div class="ha-hkb">
|
||||
HKB
|
||||
</div>
|
||||
@if (Model.MetaData.Next != null) {
|
||||
<a href="@Model.MetaData.Next.Value.Item2">
|
||||
▶ @Model.MetaData.Next.Value.Item1.Meta.Autopsic
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.ParsedText != null) {
|
||||
<div class="ha-letterbody">
|
||||
<div class="ha-lettertext">
|
||||
@if (Model.ParsedText != null) {
|
||||
@Html.Raw(@Model.ParsedText)
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.ParsedLineCount != null) {
|
||||
@Html.Raw(@Model.ParsedLineCount)
|
||||
}
|
||||
|
||||
@if (Model.ParsedMarginals != null) {
|
||||
@Html.Raw(@Model.ParsedMarginals)
|
||||
}
|
||||
|
||||
@@ -60,3 +60,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var ga = document.createElement('script');
|
||||
ga.src = 'https://www.bibleserver.com/api/parser.js?key=262ea61e694b0d300608a52ef3f4585a10b47ff4&lang=de';
|
||||
ga.setAttribute('async', 'true');
|
||||
document.documentElement.firstChild.appendChild(ga);
|
||||
})();
|
||||
|
||||
var bsQuery = '.ha-lemma'; // CSS-Selektor für Wrapper der Suche (optional)
|
||||
var bsTrl = 'LUT'; // Verlinkte Übersetzung (optional)
|
||||
</script>
|
||||
|
||||
@@ -2,19 +2,18 @@
|
||||
|
||||
<div class="ha-letterhead">
|
||||
<div class="ha-letternumber">
|
||||
<div class="ha-letternumberinline">
|
||||
@Model.Meta.Autopsic
|
||||
</div>
|
||||
</div>
|
||||
<div class="ha-metadata">
|
||||
<div class="ha-metadatarows">
|
||||
<div class="ha-metadatatop">
|
||||
<div class="ha-metadatadate">
|
||||
@Model.Meta.Date
|
||||
</div>
|
||||
<div class="metadatabottom">
|
||||
@Model.ParsedSenders -> @Model.ParsedReceivers
|
||||
<div class="ha-metadatapersons">
|
||||
@Model.ParsedSenders → @Model.ParsedReceivers
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ha-lettermetalinks">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -2,7 +2,7 @@ module.exports = {
|
||||
content: [
|
||||
"./wwwroot/**/*.{html,js}",
|
||||
"./Views/**/*.{cshtml,html,js}",
|
||||
"./Settings/CSSClasses.cs"
|
||||
"./Settings/CSSClassesSettings.cs"
|
||||
],
|
||||
theme: {
|
||||
fontFamily: {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -173,4 +173,5 @@ window.addEventListener("load", function () {
|
||||
markactive_exact(document.getElementById("ha-register-nav"));
|
||||
overlappingcollapsebox(".ha-neuzeit .ha-letlinks", true);
|
||||
overlappingcollapsebox(".ha-forschung .ha-letlinks", true);
|
||||
overlappingcollapsebox(".ha-lettertext .ha-marginalbox", true);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user