mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 17:25:32 +00:00
Mergess TraditionRules with TextRules. Added tabs for other Text. Some bugs persist see readme
This commit is contained in:
@@ -5,6 +5,7 @@ using HaWeb.FileHelpers;
|
|||||||
using HaDocument.Interfaces;
|
using HaDocument.Interfaces;
|
||||||
using HaXMLReader.Interfaces;
|
using HaXMLReader.Interfaces;
|
||||||
using HaDocument.Models;
|
using HaDocument.Models;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace HaWeb.Controllers;
|
namespace HaWeb.Controllers;
|
||||||
|
|
||||||
@@ -62,20 +63,52 @@ public class Briefecontroller : Controller {
|
|||||||
if (prevmeta != null) model.MetaData.Prev = (generateMetaViewModel(lib, prevmeta, false), url + prevmeta.Autopsic);
|
if (prevmeta != null) model.MetaData.Prev = (generateMetaViewModel(lib, prevmeta, false), url + prevmeta.Autopsic);
|
||||||
if (hands != null && hands.Any()) model.ParsedHands = HaWeb.HTMLHelpers.LetterHelpers.CreateHands(lib, hands);
|
if (hands != null && hands.Any()) model.ParsedHands = HaWeb.HTMLHelpers.LetterHelpers.CreateHands(lib, hands);
|
||||||
if (editreasons != null && editreasons.Any()) model.ParsedEdits = HaWeb.HTMLHelpers.LetterHelpers.CreateEdits(lib, _readerService, editreasons);
|
if (editreasons != null && editreasons.Any()) model.ParsedEdits = HaWeb.HTMLHelpers.LetterHelpers.CreateEdits(lib, _readerService, editreasons);
|
||||||
if (tradition != null && !String.IsNullOrWhiteSpace(tradition.Element)) {
|
model.DefaultCategory = lib.Apps.ContainsKey("-1") ? lib.Apps["-1"].Category : null;
|
||||||
var parsedTraditions = HaWeb.HTMLHelpers.LetterHelpers.CreateTraditions(lib, _readerService, marginals, tradition, hands, editreasons);
|
|
||||||
(model.ParsedTradition, model.ParsedMarginals, model.MinWidthTrad) = (parsedTraditions.sb_tradition.ToString(), parsedTraditions.ParsedMarginals, parsedTraditions.minwidth);
|
List<(string Category, List<Text>)>? texts = null;
|
||||||
}
|
|
||||||
if (text != null && !String.IsNullOrWhiteSpace(text.Element)) {
|
if (text != null && !String.IsNullOrWhiteSpace(text.Element)) {
|
||||||
var parsedLetter = HaWeb.HTMLHelpers.LetterHelpers.CreateLetter(lib, _readerService, meta, text, marginals, hands, editreasons);
|
var state = HaWeb.HTMLHelpers.LetterHelpers.ParseText(lib, _readerService, text.Element, meta, marginals, hands, editreasons);
|
||||||
(model.ParsedText, model.MinWidth) = (parsedLetter.sb_lettertext.ToString(), parsedLetter.minwidth);
|
// TODO: it is still hardcoded that <letterText> means <app id="0">
|
||||||
if (model.ParsedMarginals != null && parsedLetter.ParsedMarginals != null) model.ParsedMarginals.AddRange(parsedLetter.ParsedMarginals);
|
var textid = "0";
|
||||||
else model.ParsedMarginals = parsedLetter.ParsedMarginals;
|
var category = lib.Apps[textid].Category;
|
||||||
model.MetaData.Startline = parsedLetter.Startline;
|
var name = lib.Apps[textid].Name;
|
||||||
model.MetaData.Startpage = parsedLetter.Startpage;
|
var t = new Text(id, textid, category, state.minwidth);
|
||||||
if (String.IsNullOrWhiteSpace(model.ParsedText))
|
t.ParsedMarginals = state.ParsedMarginals;
|
||||||
|
t.ParsedText = state.sb.ToString();
|
||||||
|
t.Title = name;
|
||||||
|
if (!String.IsNullOrWhiteSpace(t.ParsedText)) {
|
||||||
|
if (texts == null) texts = new List<(string, List<Text>)>();
|
||||||
|
if(!texts.Where(x => x.Category == category).Any())
|
||||||
|
texts.Add((category, new List<Text>() { t }));
|
||||||
|
else
|
||||||
|
texts.Where(x => x.Category == category).First().Item2.Add(t);
|
||||||
|
} else {
|
||||||
model.MetaData.HasText = false;
|
model.MetaData.HasText = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tradition != null && !String.IsNullOrWhiteSpace(tradition.Element)) {
|
||||||
|
var additions = XElement.Parse(tradition.Element, LoadOptions.PreserveWhitespace).Descendants("app");
|
||||||
|
foreach (var a in additions) {
|
||||||
|
var app = a.HasAttributes && a.Attribute("ref") != null && lib.Apps.ContainsKey(a.Attribute("ref").Value) ?
|
||||||
|
lib.Apps[a.Attribute("ref").Value] :
|
||||||
|
null;
|
||||||
|
if (app != null && !a.IsEmpty) {
|
||||||
|
var state = HaWeb.HTMLHelpers.LetterHelpers.ParseText(lib, _readerService, a, meta, marginals, hands, editreasons);
|
||||||
|
var t = new Text(id, app.Index, app.Category, state.minwidth);
|
||||||
|
t.Title = app.Name;
|
||||||
|
t.ParsedMarginals = state.ParsedMarginals;
|
||||||
|
t.ParsedText = state.sb.ToString();
|
||||||
|
if (texts == null) texts = new List<(string, List<Text>)>();
|
||||||
|
if(!texts.Where(x => x.Category == app.Category).Any())
|
||||||
|
texts.Add((app.Category, new List<Text>() { t }));
|
||||||
|
else
|
||||||
|
texts.Where(x => x.Category == app.Category).First().Item2.Add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
model.Texts = texts;
|
||||||
|
|
||||||
// Return
|
// Return
|
||||||
return View("~/Views/HKB/Dynamic/Briefe.cshtml", model);
|
return View("~/Views/HKB/Dynamic/Briefe.cshtml", model);
|
||||||
|
|||||||
@@ -185,8 +185,8 @@ public class SucheController : Controller {
|
|||||||
foreach (var c in l) {
|
foreach (var c in l) {
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
var rd = _readerService.RequestStringReader(c.Element);
|
var rd = _readerService.RequestStringReader(c.Element);
|
||||||
var st = new LetterState(lib, _readerService, lib.Metas[c.Letter], null, null, null);
|
var st = new TextState(lib, _readerService, lib.Metas[c.Letter], null, null, null);
|
||||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>(st, rd, sb, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules);
|
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>(st, rd, sb, TextRules.OTagRules, null, TextRules.CTagRules, TextRules.TRules, TextRules.WhitespaceRules);
|
||||||
new HaWeb.HTMLHelpers.LinkHelper(st.Lib, rd, sb, false);
|
new HaWeb.HTMLHelpers.LinkHelper(st.Lib, rd, sb, false);
|
||||||
rd.Read();
|
rd.Read();
|
||||||
list.Add((c, sb.ToString()));
|
list.Add((c, sb.ToString()));
|
||||||
|
|||||||
@@ -12,22 +12,17 @@ using HaWeb.Settings.ParsingState;
|
|||||||
using HaWeb.Settings.ParsingRules;
|
using HaWeb.Settings.ParsingRules;
|
||||||
|
|
||||||
public static class LetterHelpers {
|
public static class LetterHelpers {
|
||||||
public static LetterState CreateLetter(ILibrary lib, IReaderService readerService, Meta meta, Letter letter, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits) {
|
|
||||||
var rd = readerService.RequestStringReader(letter.Element);
|
|
||||||
var letterState = new LetterState(lib, readerService, meta, marginals, hands, edits);
|
|
||||||
new HaWeb.HTMLParser.XMLHelper<LetterState>(letterState, rd, letterState.sb_lettertext, LetterRules.OTagRules, LetterRules.STagRules, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules);
|
|
||||||
rd.Read();
|
|
||||||
|
|
||||||
return letterState;
|
public static TextState ParseText(ILibrary lib, IReaderService readerService, string text, Meta meta, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits)
|
||||||
}
|
=> ParseText(lib, readerService, XElement.Parse(text, LoadOptions.PreserveWhitespace), meta, marginals, hands, edits);
|
||||||
|
|
||||||
public static TraditionState CreateTraditions(ILibrary lib, IReaderService readerService, IEnumerable<Marginal>? marginals, Tradition tradition, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits) {
|
public static TextState ParseText(ILibrary lib, IReaderService readerService, XElement text, Meta meta, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits) {
|
||||||
var rd = readerService.RequestStringReader(tradition.Element);
|
var rd = readerService.RequestReader(text);
|
||||||
var traditionState = new TraditionState(lib, rd, readerService, marginals, hands, edits);
|
var state = new TextState(lib, readerService, meta, marginals, hands, edits);
|
||||||
new HaWeb.HTMLParser.XMLHelper<TraditionState>(traditionState, rd, traditionState.sb_tradition, TraditionRules.OTagRules, TraditionRules.STagRules, TraditionRules.CTagRules, TraditionRules.TextRules, TraditionRules.WhitespaceRules);
|
new HaWeb.HTMLParser.XMLHelper<TextState>(state, rd, state.sb, TextRules.OTagRules, TextRules.STagRules, TextRules.CTagRules, TextRules.TRules, TextRules.WhitespaceRules);
|
||||||
new HaWeb.HTMLHelpers.LinkHelper(lib, rd, traditionState.sb_tradition);
|
new HaWeb.HTMLHelpers.LinkHelper(lib, rd, state.sb);
|
||||||
rd.Read();
|
rd.Read();
|
||||||
return traditionState;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<(string, string, string, string, string, string)> CreateEdits(ILibrary lib, IReaderService readerService, IEnumerable<Editreason> editreasons) {
|
public static List<(string, string, string, string, string, string)> CreateEdits(ILibrary lib, IReaderService readerService, IEnumerable<Editreason> editreasons) {
|
||||||
|
|||||||
@@ -44131,7 +44131,6 @@
|
|||||||
<line index="23" autopsic="24" />sehr. Hans ist wohl u. wird von Tag zu Tage beßer. Leben Sie wohl mit Ihrer
|
<line index="23" autopsic="24" />sehr. Hans ist wohl u. wird von Tag zu Tage beßer. Leben Sie wohl mit Ihrer
|
||||||
<line index="24" autopsic="25" />Hausmutter u. kleinem Dreiblatt.
|
<line index="24" autopsic="25" />Hausmutter u. kleinem Dreiblatt.
|
||||||
<line index="25" autopsic="26" /><align pos="right"><sig>H.</sig></align>
|
<line index="25" autopsic="26" /><align pos="right"><sig>H.</sig></align>
|
||||||
</letterText><letterText index="458">
|
|
||||||
</letterText><letterText index="459">
|
</letterText><letterText index="459">
|
||||||
<page index="210" autopsic="210" />
|
<page index="210" autopsic="210" />
|
||||||
<line index="31" autopsic="31" /><align pos="right"><datum>Mohrungen den 9ten Januar 1776</datum></align>
|
<line index="31" autopsic="31" /><align pos="right"><datum>Mohrungen den 9ten Januar 1776</datum></align>
|
||||||
@@ -97891,7 +97890,6 @@
|
|||||||
<line index="12" autopsic="10" /><edit ref="4057">HErrn / HErrn <ul>Franz Buchholz</ul> / Herrn von Welbergen / zu / <ul>Münster</ul>.
|
<line index="12" autopsic="10" /><edit ref="4057">HErrn / HErrn <ul>Franz Buchholz</ul> / Herrn von Welbergen / zu / <ul>Münster</ul>.
|
||||||
<line type="empty" />
|
<line type="empty" />
|
||||||
<line index="13" autopsic="10" />den 5. Febr. 86.</edit>
|
<line index="13" autopsic="10" />den 5. Febr. 86.</edit>
|
||||||
</letterText><letterText index="935">
|
|
||||||
</letterText><letterText index="936">
|
</letterText><letterText index="936">
|
||||||
<page index="263" autopsic="263" />
|
<page index="263" autopsic="263" />
|
||||||
<line index="17" autopsic="14" /><align pos="right"><datum>Kgb. den 6 <aq>Febr.</aq> 86.</datum></align>
|
<line index="17" autopsic="14" /><align pos="right"><datum>Kgb. den 6 <aq>Febr.</aq> 86.</datum></align>
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ public class BriefeMetaViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public (BriefeMetaViewModel, string)? Next { get; set; }
|
public (BriefeMetaViewModel Model, string)? Next { get; set; }
|
||||||
public (BriefeMetaViewModel, string)? Prev { get; set; }
|
public (BriefeMetaViewModel Model, string)? Prev { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public BriefeMetaViewModel(Meta meta, bool hasMarginals) {
|
public BriefeMetaViewModel(Meta meta, bool hasMarginals) {
|
||||||
|
|||||||
@@ -5,18 +5,26 @@ public class BriefeViewModel {
|
|||||||
public string Id { get; private set; }
|
public string Id { get; private set; }
|
||||||
public string Index { get; private set; }
|
public string Index { get; private set; }
|
||||||
public BriefeMetaViewModel MetaData { get; private set; }
|
public BriefeMetaViewModel MetaData { get; private set; }
|
||||||
|
public string? DefaultCategory { get; set; }
|
||||||
|
|
||||||
private List<(string, string, string)>? _ParsedMarginals;
|
|
||||||
private List<(string, string, string, string, string, string)>? _ParsedEdits;
|
private List<(string, string, string, string, string, string)>? _ParsedEdits;
|
||||||
public List<(string, string, string, string, string)>? _ParsedHands;
|
private List<(string, string, string, string, string)>? _ParsedHands;
|
||||||
|
private List<(string Category, List<Text>)>? _Texts;
|
||||||
public string? ParsedText { get; set; }
|
|
||||||
public string? ParsedTradition { get; set; }
|
public List<(string Category, List<Text>)>? Texts {
|
||||||
public bool MinWidth { get; set; } = false;
|
get => _Texts;
|
||||||
public bool MinWidthTrad { get; set; } = false;
|
set {
|
||||||
|
if (value != null)
|
||||||
|
_Texts = value.Select(x => (
|
||||||
|
x.Item1,
|
||||||
|
x.Item2
|
||||||
|
)).ToList();
|
||||||
|
else _Texts = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// From, Until, Reference, Edit, sartpage, startline
|
// From, Until, Reference, Edit, sartpage, startline
|
||||||
public List<(string, string, string, string, string, string)>? ParsedEdits {
|
public List<(string ParsedStart, string ParsedEnd, string Preview, string Text, string Page, string Line)>? ParsedEdits {
|
||||||
get => _ParsedEdits;
|
get => _ParsedEdits;
|
||||||
set {
|
set {
|
||||||
if (value != null)
|
if (value != null)
|
||||||
@@ -28,13 +36,12 @@ public class BriefeViewModel {
|
|||||||
HttpUtility.HtmlAttributeEncode(x.Item5),
|
HttpUtility.HtmlAttributeEncode(x.Item5),
|
||||||
HttpUtility.HtmlAttributeEncode(x.Item6)
|
HttpUtility.HtmlAttributeEncode(x.Item6)
|
||||||
)).ToList();
|
)).ToList();
|
||||||
else
|
else _ParsedEdits = null;
|
||||||
_ParsedEdits = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// From, Until, Person, startpage, startline
|
// From, Until, Person, startpage, startline
|
||||||
public List<(string, string, string, string, string)>? ParsedHands {
|
public List<(string ParsedStart, string ParsedEnd, string Person, string Page, string Line)>? ParsedHands {
|
||||||
get => _ParsedHands;
|
get => _ParsedHands;
|
||||||
set {
|
set {
|
||||||
if (value != null)
|
if (value != null)
|
||||||
@@ -45,23 +52,7 @@ public class BriefeViewModel {
|
|||||||
HttpUtility.HtmlAttributeEncode(x.Item4),
|
HttpUtility.HtmlAttributeEncode(x.Item4),
|
||||||
HttpUtility.HtmlAttributeEncode(x.Item5)
|
HttpUtility.HtmlAttributeEncode(x.Item5)
|
||||||
)).ToList();
|
)).ToList();
|
||||||
else
|
else _ParsedHands = null;
|
||||||
_ParsedHands = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Page, Line, Element
|
|
||||||
public List<(string, string, string)>? ParsedMarginals {
|
|
||||||
get => _ParsedMarginals;
|
|
||||||
set {
|
|
||||||
if (value != null)
|
|
||||||
_ParsedMarginals = value.Select(x => (
|
|
||||||
HttpUtility.HtmlEncode(x.Item1),
|
|
||||||
HttpUtility.HtmlEncode(x.Item2),
|
|
||||||
x.Item3
|
|
||||||
)).ToList();
|
|
||||||
else
|
|
||||||
_ParsedMarginals = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
43
HaWeb/Models/Text.cs
Normal file
43
HaWeb/Models/Text.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
namespace HaWeb.Models;
|
||||||
|
using System.Web;
|
||||||
|
|
||||||
|
public class Text {
|
||||||
|
public string Id { get; private set; }
|
||||||
|
public string Number { get; private set; }
|
||||||
|
public bool MinWidth { get; private set; }
|
||||||
|
public string Category { get; private set; }
|
||||||
|
public string? ParsedText { get; set; }
|
||||||
|
|
||||||
|
private string? _Title;
|
||||||
|
private List<(string, string, string)>? _ParsedMarginals;
|
||||||
|
|
||||||
|
public List<(string Page, string Line, string Text)>? ParsedMarginals {
|
||||||
|
get => _ParsedMarginals;
|
||||||
|
set {
|
||||||
|
if (value != null)
|
||||||
|
_ParsedMarginals = value.Select(x => (
|
||||||
|
HttpUtility.HtmlEncode(x.Item1),
|
||||||
|
HttpUtility.HtmlEncode(x.Item2),
|
||||||
|
x.Item3
|
||||||
|
)).ToList();
|
||||||
|
else
|
||||||
|
_ParsedMarginals = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? Title {
|
||||||
|
get => _Title;
|
||||||
|
set {
|
||||||
|
if (!String.IsNullOrWhiteSpace(value)) {
|
||||||
|
_Title = value;
|
||||||
|
} else _Title = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Text(string id, string number, string category, bool minwidth) {
|
||||||
|
Id = id;
|
||||||
|
Number = number;
|
||||||
|
Category = category;
|
||||||
|
MinWidth = minwidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -89,4 +89,12 @@ A TODO SEO Description & Titel
|
|||||||
A TODO fixed width briefe kommentar bisschen nach links 306, 309
|
A TODO fixed width briefe kommentar bisschen nach links 306, 309
|
||||||
|
|
||||||
Liste für Janina/Luca:
|
Liste für Janina/Luca:
|
||||||
tabellen ok, ausser 939
|
tabellen ok, ausser 939
|
||||||
|
|
||||||
|
KOmmentare verschobem 202 Anhang
|
||||||
|
458 leeren lettertext löschen
|
||||||
|
935 leeren lettertext löschen
|
||||||
|
|
||||||
|
min-width 673 1150
|
||||||
|
doppel- empfänder sender 876
|
||||||
|
1075 zwischentitel
|
||||||
@@ -9,7 +9,8 @@ public static class CSSClasses {
|
|||||||
public const string SUBSECTIONCLASS = "ha-subsection"; // XML: <subsection>
|
public const string SUBSECTIONCLASS = "ha-subsection"; // XML: <subsection>
|
||||||
public const string TRADITIONCLASS = "ha-tradition"; // XML: <tradition>
|
public const string TRADITIONCLASS = "ha-tradition"; // XML: <tradition>
|
||||||
public const string MARGINALCLASS = "ha-marginal"; // XML: <marginal>
|
public const string MARGINALCLASS = "ha-marginal"; // XML: <marginal>
|
||||||
public const string LETTERCLASS = "ha-lettertext"; // XML: <lemma>
|
public const string INDEXEDTEXTCONTAINERCLASS = "ha-textcontainer";
|
||||||
|
public const string INDEXEDTEXTCLASS = "ha-text";
|
||||||
|
|
||||||
// Comments:
|
// Comments:
|
||||||
public const string LEMMACLASS = "ha-lemma"; // XML: <lemma>
|
public const string LEMMACLASS = "ha-lemma"; // XML: <lemma>
|
||||||
@@ -50,7 +51,7 @@ public static class CSSClasses {
|
|||||||
public const string TABLECLASS = "ha-table";
|
public const string TABLECLASS = "ha-table";
|
||||||
public const string TABCLASS = "ha-hatab-"; // TODO: GEN
|
public const string TABCLASS = "ha-hatab-"; // TODO: GEN
|
||||||
public const string CROSSEDDASHCLASS = "ha-diagdel";
|
public const string CROSSEDDASHCLASS = "ha-diagdel";
|
||||||
public const string TEXTCLASS = "ha-text";
|
public const string TEXTCLASS = "ha-literal";
|
||||||
|
|
||||||
public const string BZGCLASS = "ha-bzg";
|
public const string BZGCLASS = "ha-bzg";
|
||||||
public const string ZHCLASS = "ha-zh";
|
public const string ZHCLASS = "ha-zh";
|
||||||
@@ -60,7 +61,6 @@ public static class CSSClasses {
|
|||||||
public const string MARGINALLISTCLASS = "ha-marginallist";
|
public const string MARGINALLISTCLASS = "ha-marginallist";
|
||||||
public const string TRADLINECOUNTCLASS = "ha-tradlinecount";
|
public const string TRADLINECOUNTCLASS = "ha-tradlinecount";
|
||||||
public const string TRADCOMMENTCOLUMNCLASS = "ha-tradcommentcolumn";
|
public const string TRADCOMMENTCOLUMNCLASS = "ha-tradcommentcolumn";
|
||||||
public const string TRADZHTEXTCLASS = "ha-tradzhtext";
|
|
||||||
public const string TRADZHTEXTBOXCLASS = "ha-tradtextbox";
|
public const string TRADZHTEXTBOXCLASS = "ha-tradtextbox";
|
||||||
|
|
||||||
// Zeilen:
|
// Zeilen:
|
||||||
|
|||||||
@@ -40,11 +40,7 @@ public static class EditRules {
|
|||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHCLASS)) ),
|
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHCLASS)) ),
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EMPHCLASS)); } ),
|
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EMPHCLASS)); } ),
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS)); } ),
|
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS)); } ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SUBSECTIONCLASS, tag["id"])) ),
|
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTCLASS, tag["id"])) ),
|
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITREASONCLASS)) ),
|
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITREASONCLASS)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LETTERCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADITIONCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALCLASS));
|
||||||
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
||||||
@@ -83,11 +79,7 @@ public static class EditRules {
|
|||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "emph", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "app", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "marginal", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "tab", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "tab", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ using System.Text;
|
|||||||
using System.Web;
|
using System.Web;
|
||||||
using HaWeb.Settings;
|
using HaWeb.Settings;
|
||||||
|
|
||||||
using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>>)>;
|
using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>>)>;
|
||||||
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>>)>;
|
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>>)>;
|
||||||
using WhitespaceFuncList = List<(Func<HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>>)>;
|
using WhitespaceFuncList = List<(Func<HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>>)>;
|
||||||
|
|
||||||
// TODO: stringbuilder als Rückgabeparameter des XMHelpers ist eigentlich auch Part vom State
|
// TODO: stringbuilder als Rückgabeparameter des XMHelpers ist eigentlich auch Part vom State
|
||||||
public class LetterRules {
|
public class TextRules {
|
||||||
private static readonly string DEFAULTELEMENT = HaWeb.Settings.HTML.DEFAULTELEMENT;
|
private static readonly string DEFAULTELEMENT = HaWeb.Settings.HTML.DEFAULTELEMENT;
|
||||||
|
|
||||||
// Parsing Rules for Letters
|
// Parsing Rules for Letters
|
||||||
@@ -51,11 +51,14 @@ public class LetterRules {
|
|||||||
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.BZGCLASS)) ),
|
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.BZGCLASS)) ),
|
||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHCLASS)) ),
|
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHCLASS)) ),
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EMPHCLASS)); } ),
|
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EMPHCLASS)); } ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SUBSECTIONCLASS, tag["id"])) ),
|
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTCLASS, tag["id"])) ),
|
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITREASONCLASS)) ),
|
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITREASONCLASS)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LETTERCLASS)) ),
|
( ( x, _) => x.Name == "letterText", (sb, tag, _) => {
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADITIONCLASS)) ),
|
|
||||||
|
// TODO Workaround, instead of <app ref="0"><ZHText>
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS + " " + CSSClasses.APPCLASS + "-0"));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.INDEXEDTEXTCONTAINERCLASS));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.INDEXEDTEXTCLASS));
|
||||||
|
} ),
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALCLASS, "m-" + tag["index"]));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALCLASS, "m-" + tag["index"]));
|
||||||
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
||||||
@@ -80,12 +83,15 @@ public class LetterRules {
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
// Tradition specific:
|
// Tradition specific:
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "app", (sb, tag, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS));
|
if (!String.IsNullOrWhiteSpace(tag["ref"]))
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS + " " + CSSClasses.APPCLASS + "-" + tag["ref"]));
|
||||||
|
else sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS));
|
||||||
reader.State.activelinecount = false;
|
reader.State.activelinecount = false;
|
||||||
} ),
|
} ),
|
||||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADZHTEXTCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.INDEXEDTEXTCONTAINERCLASS));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.INDEXEDTEXTCLASS));
|
||||||
reader.State.activelinecount = true;
|
reader.State.activelinecount = true;
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
@@ -124,11 +130,14 @@ public class LetterRules {
|
|||||||
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "emph", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "letterText", (sb, tag, _) => {
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
// Hacky, to clear floats and absolute positioned elements:
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
} ),
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "marginal", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( x, _) => x.Name == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "tab", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "tab", (sb, tag, reader) => {
|
||||||
@@ -143,12 +152,15 @@ public class LetterRules {
|
|||||||
reader.State.activelinecount = true;
|
reader.State.activelinecount = true;
|
||||||
} ),
|
} ),
|
||||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
reader.State.currline = "-1";
|
||||||
|
reader.State.currpage = "-1";
|
||||||
reader.State.activelinecount = false;
|
reader.State.activelinecount = false;
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
public static readonly TextFuncList TextRules = new TextFuncList() {
|
public static readonly TextFuncList TRules = new TextFuncList() {
|
||||||
( ( x, _) => true, (sb, txt, reader) => {
|
( ( x, _) => true, (sb, txt, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TEXTCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TEXTCLASS));
|
||||||
if (reader.OpenTags.Where(x => x.Name == "del").Any())
|
if (reader.OpenTags.Where(x => x.Name == "del").Any())
|
||||||
@@ -159,7 +171,7 @@ public class LetterRules {
|
|||||||
})};
|
})};
|
||||||
|
|
||||||
public static readonly TagFuncList STagRules = new TagFuncList() {
|
public static readonly TagFuncList STagRules = new TagFuncList() {
|
||||||
( (x, _) => x.Name == "page", (sb, tag, reader) => reader.State.currpage = tag["index"] ),
|
( (x, _) => x.Name == "page", (sb, tag, reader) => reader.State.currpage = tag["index"] ),
|
||||||
( (x, _) => x.Name == "line", (sb, tag, reader) => {
|
( (x, _) => x.Name == "line", (sb, tag, reader) => {
|
||||||
if(!String.IsNullOrWhiteSpace(tag["tab"]) || !String.IsNullOrWhiteSpace(tag["type"])) {
|
if(!String.IsNullOrWhiteSpace(tag["tab"]) || !String.IsNullOrWhiteSpace(tag["type"])) {
|
||||||
reader.State.mustwrap = (false, true);
|
reader.State.mustwrap = (false, true);
|
||||||
@@ -205,6 +217,12 @@ public class LetterRules {
|
|||||||
} else if (reader.State.currline == "-1" && !String.IsNullOrWhiteSpace(tag["index"])) {
|
} else if (reader.State.currline == "-1" && !String.IsNullOrWhiteSpace(tag["index"])) {
|
||||||
reader.State.Startline = tag["index"];
|
reader.State.Startline = tag["index"];
|
||||||
reader.State.currline = tag["index"];
|
reader.State.currline = tag["index"];
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHPAGECLASS + " " + CSSClasses.FIRSTPAGECLASS));
|
||||||
|
if (reader.State.currline == "1") sb.Append("S. " + reader.State.currpage);
|
||||||
|
else sb.Append(reader.State.currpage + "/" + reader.State.currline);
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
reader.State.pagebreak = false;
|
reader.State.pagebreak = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,9 +243,9 @@ public class LetterRules {
|
|||||||
// In Marginal, the Root-Element (<marginal>) is somehow parsed,
|
// In Marginal, the Root-Element (<marginal>) is somehow parsed,
|
||||||
// so we don't need to enclose it in a seperate div.
|
// so we don't need to enclose it in a seperate div.
|
||||||
var rd = reader.State.ReaderService.RequestStringReader(marginal.Element);
|
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.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>(reader.State, rd, sb, ParsingRules.TextRules.OTagRules, null, ParsingRules.TextRules.CTagRules, ParsingRules.TextRules.TRules, ParsingRules.TextRules.WhitespaceRules);
|
||||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false);
|
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb, false);
|
||||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>(reader.State, rd, sb2, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules);
|
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TextState>(reader.State, rd, sb2, ParsingRules.TextRules.OTagRules, null, ParsingRules.TextRules.CTagRules, ParsingRules.TextRules.TRules, ParsingRules.TextRules.WhitespaceRules);
|
||||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb2, false);
|
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb2, false);
|
||||||
rd.Read();
|
rd.Read();
|
||||||
}
|
}
|
||||||
@@ -1,269 +0,0 @@
|
|||||||
using System.ComponentModel;
|
|
||||||
namespace HaWeb.Settings.ParsingRules;
|
|
||||||
using System.Text;
|
|
||||||
using System.Web;
|
|
||||||
using HaWeb.Settings;
|
|
||||||
|
|
||||||
using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>>)>;
|
|
||||||
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>>)>;
|
|
||||||
using WhitespaceFuncList = List<(Func<HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>>)>;
|
|
||||||
|
|
||||||
public static class TraditionRules {
|
|
||||||
private static readonly string DEFAULTELEMENT = HaWeb.Settings.HTML.DEFAULTELEMENT;
|
|
||||||
|
|
||||||
|
|
||||||
// Parsing Rules for Letters
|
|
||||||
// General rules (for the lettertext column, also for parsing the marginals, awa tradtions and editreasons)
|
|
||||||
public static readonly TagFuncList OTagRules = new TagFuncList() {
|
|
||||||
( ( x, _) => x.Name == "align" && x["pos"] == "center", (sb, tag, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ALIGNCENTERCLASS));
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
} ),
|
|
||||||
( ( x, _) => x.Name == "align" && x["pos"] == "right", (sb, tag, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ALIGNRIGHTCLASS));
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "added", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ADDEDCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "sal", (sb, tag, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SALCLASS));
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "aq", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.AQCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "super", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SUPERCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "del", (sb, tag, reader) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.DELCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "nr", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.NRCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "note", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.NOTECLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "ul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ULCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "anchor" && !String.IsNullOrWhiteSpace(x["ref"]), (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ANCHORCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "fn" && !String.IsNullOrWhiteSpace(x["index"]), (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.FNCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "dul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.DULCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "ful", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.FULCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "up", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.UPCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "sub", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SUBCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "tul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TULCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "insertion", (sb, tag,_) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.INSERTIONCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "header", (sb, tag, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.HEADERCLASS));
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "lemma", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LEMMACLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "eintrag", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ENTRYCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "titel", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TITLECLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.BZGCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EMPHCLASS)); } ),
|
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS)); } ),
|
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.SUBSECTIONCLASS, tag["id"])) ),
|
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTCLASS, tag["id"])) ),
|
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITREASONCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LETTERCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADITIONCLASS)) ),
|
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALCLASS, "m-" + tag["index"]));
|
|
||||||
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "tabs", (sb, tag, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TABLECLASS));
|
|
||||||
// Tabs work with percentages, so we need a static width of the conttainer:
|
|
||||||
reader.State.minwidth = true;
|
|
||||||
} ),
|
|
||||||
( ( x, _) => x.Name == "tab" && !String.IsNullOrWhiteSpace(x["value"]), (sb, tag, reader) => {
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TABCLASS + tag["value"]));
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "edit" && !String.IsNullOrWhiteSpace(x["ref"]), (sb, tag, _) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.EDITMARKERCLASS, "ea-" + tag["ref"]));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "hand", (sb, tag, _) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.HANDMARKERCLASS, "ha-" + tag["ref"]));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.HANDCLASS));
|
|
||||||
}),
|
|
||||||
|
|
||||||
// Tradition specific:
|
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.APPCLASS)); } ),
|
|
||||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
|
||||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TRADZHTEXTCLASS));
|
|
||||||
reader.State.active_trad = true;
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
public static readonly TagFuncList CTagRules = new TagFuncList() {
|
|
||||||
( ( x, _) => x.Name == "align", (sb, tag, reader) => {
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "added", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "sal", (sb, tag, reader) => {
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "aq", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "super", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "del", (sb, tag, reader) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "nr", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "note", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "ul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "anchor", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "fn", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "dul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "up", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "ful", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "sub", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "tul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "insertion", (sb, tag,_) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "header", (sb, tag, reader) => {
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "lemma", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "eintrag", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "titel", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "tab", (sb, tag, reader) => {
|
|
||||||
reader.State.mustwrap = (true, true);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "hand", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
|
|
||||||
// Tradition specifics
|
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
|
||||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
|
||||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
reader.State.active_trad = false;
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
public static readonly TextFuncList TextRules = new TextFuncList() {
|
|
||||||
( ( x, _) => true, (sb, txt, reader) => {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.TEXTCLASS));
|
|
||||||
if (reader.OpenTags.Where(x => x.Name == "del").Any())
|
|
||||||
sb.Append(HttpUtility.HtmlEncode(txt.Value).Replace("–", "<" + DEFAULTELEMENT + " class=\"" + CSSClasses.CROSSEDDASHCLASS + "\">–</" + DEFAULTELEMENT + ">"));
|
|
||||||
else
|
|
||||||
sb.Append(HttpUtility.HtmlEncode(txt.Value));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
})};
|
|
||||||
|
|
||||||
public static readonly TagFuncList STagRules = new TagFuncList() {
|
|
||||||
( (x, _) => x.Name == "page", (sb, tag, reader) => reader.State.currpage = tag["index"] ),
|
|
||||||
( (x, _) => x.Name == "line", (sb, tag, reader) => {
|
|
||||||
if(!String.IsNullOrWhiteSpace(tag["tab"]) || !String.IsNullOrWhiteSpace(tag["type"])) {
|
|
||||||
reader.State.mustwrap = (false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tradition specific: only if in zhtext
|
|
||||||
if (reader.State.active_trad) {
|
|
||||||
// This is NOT the beginning of the text, so we set a br, and then, linecount
|
|
||||||
if(reader.State.currline != "-1") {
|
|
||||||
if (!reader.State.mustwrap.Item2)
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", CSSClasses.ZHBREAKCLASS));
|
|
||||||
else
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
|
|
||||||
reader.State.mustwrap = (false, false);
|
|
||||||
|
|
||||||
// Linecount
|
|
||||||
if(!String.IsNullOrWhiteSpace(tag["index"])) {
|
|
||||||
reader.State.currline = tag["index"];
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
|
||||||
|
|
||||||
// Fall 1: Neue Seite
|
|
||||||
if (reader.State.currline == "1") {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.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, CSSClasses.ZHLINECLASS, ""));
|
|
||||||
sb.Append(tag["index"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fall 3: Neue Zeile, nicht teilbar durch 5, deswegen versteckt
|
|
||||||
else {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECLASS + " " + CSSClasses.HIDDENZHLINECOUNT, ""));
|
|
||||||
sb.Append(tag["index"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}
|
|
||||||
} else if (reader.State.currline == "-1" && !String.IsNullOrWhiteSpace(tag["index"])) {
|
|
||||||
reader.State.Startline = tag["index"];
|
|
||||||
reader.State.currline = tag["index"];
|
|
||||||
|
|
||||||
// Tradition specifics: the first linecount must be shown
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.ZHLINECOUNTCLASS + " " + CSSClasses.FIRSTLINECLASS, reader.State.currpage + "-" + reader.State.currline));
|
|
||||||
sb.Append("S. " + reader.State.currpage + " / " + reader.State.currline);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Marginalien, only for lines with a linenumber
|
|
||||||
if(reader.State.Marginals != null && !String.IsNullOrWhiteSpace(tag["index"])) {
|
|
||||||
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
|
|
||||||
if (margs != null && margs.Any())
|
|
||||||
{
|
|
||||||
if(reader.State.ParsedMarginals == null) reader.State.ParsedMarginals = new List<(string, string, string)>();
|
|
||||||
var sb2 = new StringBuilder();
|
|
||||||
margs = margs.OrderBy(x => Int32.Parse(x.Index));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINGALBOXCLASS));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.MARGINALLISTCLASS));
|
|
||||||
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);
|
|
||||||
new HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.TraditionState>(reader.State, rd, sb2, TraditionRules.OTagRules, null, TraditionRules.CTagRules, TraditionRules.TextRules, TraditionRules.WhitespaceRules);
|
|
||||||
new HaWeb.HTMLHelpers.LinkHelper(reader.State.Lib, rd, sb2, false);
|
|
||||||
rd.Read();
|
|
||||||
}
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
reader.State.ParsedMarginals.Add((reader.State.currpage, reader.State.currline, sb2.ToString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Line type=line
|
|
||||||
if(tag["type"] == "line") {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LINELINECLASS));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
reader.State.mustwrap = (false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Line tab=
|
|
||||||
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, CSSClasses.LINEINDENTCLASS + tag["tab"]));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
if (tag["tab"] != "1") reader.State.mustwrap = (false, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tradition specific: only do this if not in ZHText
|
|
||||||
if (!reader.State.active_trad) {
|
|
||||||
sb.Append("<br>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)};
|
|
||||||
|
|
||||||
public static readonly WhitespaceFuncList WhitespaceRules = new WhitespaceFuncList() {
|
|
||||||
( ( _, _) => true, ( sb, txt, reader) => {
|
|
||||||
if (reader.State.active_skipwhitespace)
|
|
||||||
sb.Append(txt.Value);
|
|
||||||
else
|
|
||||||
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
|
||||||
})};
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,7 @@ using System.Collections.Immutable;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
public class LetterState : HaWeb.HTMLParser.IState {
|
public class TextState : HaWeb.HTMLParser.IState {
|
||||||
// Input
|
// Input
|
||||||
internal ILibrary Lib;
|
internal ILibrary Lib;
|
||||||
internal IReaderService ReaderService;
|
internal IReaderService ReaderService;
|
||||||
@@ -43,12 +43,12 @@ public class LetterState : HaWeb.HTMLParser.IState {
|
|||||||
internal bool activelinecount;
|
internal bool activelinecount;
|
||||||
|
|
||||||
// Results
|
// Results
|
||||||
internal StringBuilder sb_lettertext;
|
internal StringBuilder sb;
|
||||||
internal List<(string, string, string)>? ParsedMarginals;
|
internal List<(string, string, string)>? ParsedMarginals;
|
||||||
internal string? Startline;
|
internal string? Startline;
|
||||||
internal string? Startpage = null;
|
internal string? Startpage = null;
|
||||||
|
|
||||||
public LetterState(ILibrary lib, IReaderService readerService, Meta meta, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits) {
|
public TextState(ILibrary lib, IReaderService readerService, Meta meta, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits) {
|
||||||
Lib = lib;
|
Lib = lib;
|
||||||
ReaderService = readerService;
|
ReaderService = readerService;
|
||||||
Meta = meta;
|
Meta = meta;
|
||||||
@@ -60,7 +60,7 @@ public class LetterState : HaWeb.HTMLParser.IState {
|
|||||||
|
|
||||||
|
|
||||||
public void SetupState() {
|
public void SetupState() {
|
||||||
sb_lettertext = new StringBuilder();
|
sb = new StringBuilder();
|
||||||
active_skipwhitespace = true;
|
active_skipwhitespace = true;
|
||||||
currline = "-1";
|
currline = "-1";
|
||||||
mustwrap = (false, false);
|
mustwrap = (false, false);
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
namespace HaWeb.Settings.ParsingState;
|
|
||||||
using System.Text;
|
|
||||||
using HaXMLReader.Interfaces;
|
|
||||||
using HaDocument.Models;
|
|
||||||
using HaDocument.Interfaces;
|
|
||||||
using System.Collections.Immutable;
|
|
||||||
|
|
||||||
public class TraditionState : HaWeb.HTMLParser.IState {
|
|
||||||
|
|
||||||
internal ILibrary Lib;
|
|
||||||
internal IReaderService ReaderService;
|
|
||||||
|
|
||||||
internal IEnumerable<Marginal>? Marginals;
|
|
||||||
internal IEnumerable<Hand>? Hands;
|
|
||||||
internal IEnumerable<Editreason>? Edits;
|
|
||||||
|
|
||||||
// State
|
|
||||||
// Must we skip all of the upcoming whitespace?
|
|
||||||
internal bool active_skipwhitespace;
|
|
||||||
// Is there a semantically important line break, left or right of the current line?
|
|
||||||
internal (bool, bool) mustwrap;
|
|
||||||
// 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)
|
|
||||||
internal bool minwidth;
|
|
||||||
// Is there an active_zhtext
|
|
||||||
internal bool active_trad;
|
|
||||||
|
|
||||||
internal StringBuilder sb_tradition; // Überlieferung
|
|
||||||
internal List<(string, string, string)>? ParsedMarginals;
|
|
||||||
internal string Startline;
|
|
||||||
|
|
||||||
internal IReader rd_tradition;
|
|
||||||
|
|
||||||
public TraditionState(ILibrary lib, IReader reader, IReaderService readerService, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits) {
|
|
||||||
Lib = lib;
|
|
||||||
rd_tradition = reader;
|
|
||||||
Marginals = marginals;
|
|
||||||
ReaderService = readerService;
|
|
||||||
Hands = hands;
|
|
||||||
Edits = edits;
|
|
||||||
SetupState();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetupState() {
|
|
||||||
sb_tradition = new StringBuilder();
|
|
||||||
|
|
||||||
active_trad = false;
|
|
||||||
active_skipwhitespace = true;
|
|
||||||
currline = "-1";
|
|
||||||
currpage = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
@model BriefeViewModel;
|
@model BriefeViewModel;
|
||||||
@{
|
@{
|
||||||
var minwidth = "";
|
@* var minwidth = "";
|
||||||
if (Model.MinWidth)
|
if (Model.MinWidth)
|
||||||
minwidth = "ha-minwidth";
|
minwidth = "ha-minwidth";
|
||||||
var minwidthtrads = "";
|
var minwidthtrads = "";
|
||||||
if (Model.MinWidthTrad)
|
if (Model.MinWidthTrad)
|
||||||
minwidthtrads = "ha-minwidth";
|
minwidthtrads = "ha-minwidth"; *@
|
||||||
}
|
}
|
||||||
|
|
||||||
<script defer src="/js/briefe.js" asp-append-version="true"></script>
|
<script defer src="/js/briefe.js" asp-append-version="true"></script>
|
||||||
|
|
||||||
@@ -14,16 +14,14 @@
|
|||||||
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (Model.MetaData, true, false))
|
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", (Model.MetaData, true, false))
|
||||||
<div class="ha-letterheadernav">
|
<div class="ha-letterheadernav">
|
||||||
<div class="ha-lettertabs">
|
<div class="ha-lettertabs">
|
||||||
@if (!String.IsNullOrWhiteSpace(Model.ParsedText))
|
@foreach (var app in Model.Texts)
|
||||||
{
|
{
|
||||||
<a class="" id="ha-lettertextbtn">Brieftext</a>
|
@if (app.Category != Model.DefaultCategory) { <a class="ha-tabbtn">@app.Category</a> }
|
||||||
@if (Model.ParsedMarginals != null)
|
|
||||||
{
|
|
||||||
<a class="ha-marginalsbtn " id="ha-marginalsbtn">Stellenkommentar</a>
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
<a class="" id="ha-additionsbtn">Überlieferung & Textkritik</a>
|
@if (Model.Texts != null && Model.Texts.Where(x => x.Category == Model.DefaultCategory).Any()) {
|
||||||
<a class="">PDF</a>
|
<a class="ha-tabbtn">@Model.DefaultCategory</a>
|
||||||
|
}
|
||||||
|
<a >PDF</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if (Model.MetaData.Next != null || Model.MetaData.Prev != null)
|
@if (Model.MetaData.Next != null || Model.MetaData.Prev != null)
|
||||||
@@ -32,7 +30,7 @@
|
|||||||
@if (Model.MetaData.Prev != null)
|
@if (Model.MetaData.Prev != null)
|
||||||
{
|
{
|
||||||
<a href="@Model.MetaData.Prev.Value.Item2">
|
<a href="@Model.MetaData.Prev.Value.Item2">
|
||||||
@Model.MetaData.Prev.Value.Item1.Meta.Autopsic ◀
|
@Model.MetaData.Prev.Value.Model.Meta.Autopsic ◀
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +41,7 @@
|
|||||||
@if (Model.MetaData.Next != null)
|
@if (Model.MetaData.Next != null)
|
||||||
{
|
{
|
||||||
<a href="@Model.MetaData.Next.Value.Item2">
|
<a href="@Model.MetaData.Next.Value.Item2">
|
||||||
▶ @Model.MetaData.Next.Value.Item1.Meta.Autopsic
|
▶ @Model.MetaData.Next.Value.Model.Meta.Autopsic
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@@ -51,99 +49,94 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="ha-letterbody" id="ha-letterbody">
|
||||||
<div class="ha-letterbody " id="ha-letterbody">
|
@foreach (var app in Model.Texts)
|
||||||
<div class="ha-lettertext @minwidth" id="ha-lettertext">
|
|
||||||
<div class="ha-linecount">
|
|
||||||
@if (Model.MetaData.Startline == "1") {
|
|
||||||
<div id="@Model.MetaData.Startpage-@Model.MetaData.Startline" class="ha-zhpage">S. @Html.Raw(Model.MetaData.Startpage)</div>
|
|
||||||
} else {
|
|
||||||
<div id="@Model.MetaData.Startpage-@Model.MetaData.Startline" class="ha-zhpage">@Html.Raw(Model.MetaData.Startpage)/@Html.Raw(Model.MetaData.Startline)</div>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
@Html.Raw(@Model.ParsedText)
|
|
||||||
@* It's not beautiful but it's a hack to keep the last comment within parent element boundaries: *@
|
|
||||||
<br>
|
|
||||||
<div class="ha-marginalbox"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@if (Model.ParsedMarginals != null)
|
|
||||||
{
|
{
|
||||||
<div class="ha-marginals " id="ha-marginals">
|
@if (app.Category != Model.DefaultCategory) {
|
||||||
<table>
|
<div class="ha-tab">
|
||||||
@foreach (var marginal in Model.ParsedMarginals)
|
@foreach (var text in app.Item2)
|
||||||
{
|
{
|
||||||
<tr>
|
<div class="ha-appcontainer">
|
||||||
<td class="ha-marginalfromto">@marginal.Item1/@marginal.Item2</td>
|
@if (app.Item2.Count > 1 && !String.IsNullOrWhiteSpace(text.ParsedText) && !String.IsNullOrWhiteSpace(text.Title) ) {
|
||||||
<td class="ha-marginaltext">@Html.Raw(@marginal.Item3)</td>
|
<h3>@text.Title</h3>
|
||||||
</tr>
|
|
||||||
}
|
}
|
||||||
</table>
|
@if (!String.IsNullOrWhiteSpace(text.ParsedText)) { @Html.Raw(text.ParsedText) }
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="ha-additions" id="ha-additions">
|
@if (Model.Texts != null && Model.Texts.Where(x => x.Category == Model.DefaultCategory).Any()) {
|
||||||
<div class="@minwidthtrads">
|
<div class="ha-tab ha-defaulttab">
|
||||||
@if (Model.ParsedTradition != null)
|
@foreach (var text in Model.Texts.Where(x => x.Category == Model.DefaultCategory).First().Item2)
|
||||||
{
|
{
|
||||||
@Html.Raw(Model.ParsedTradition)
|
<div class="ha-appcontainer">
|
||||||
}
|
@if (!String.IsNullOrWhiteSpace(text.ParsedText) && !String.IsNullOrWhiteSpace(text.Title) ) {
|
||||||
</div>
|
<h3>@text.Title</h3>
|
||||||
|
}
|
||||||
@if (Model.ParsedHands != null && Model.ParsedHands.Any())
|
@if (!String.IsNullOrWhiteSpace(text.ParsedText)) { @Html.Raw(text.ParsedText) }
|
||||||
{
|
|
||||||
<div class="ha-hands">
|
|
||||||
<div class="ha-handstitle">Zusätze fremder Hand</div>
|
|
||||||
<div class="ha-handentries">
|
|
||||||
<table>
|
|
||||||
@foreach (var hand in Model.ParsedHands)
|
|
||||||
{
|
|
||||||
<tr class="ha-handentry">
|
|
||||||
<td>
|
|
||||||
@* Not beautiful, but here's whitespace in between otherwise *@
|
|
||||||
<div class="ha-handfrom">@hand.Item1</div>@if(!String.IsNullOrEmpty(hand.Item2)){<div class="ha-handto">–@hand.Item2</div>}
|
|
||||||
</td>
|
|
||||||
<td class="ha-handperson">@Html.Raw(@hand.Item3)</td>
|
|
||||||
</tr>
|
|
||||||
}
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@if (Model.ParsedEdits != null)
|
@if (Model.ParsedHands != null && Model.ParsedHands.Any())
|
||||||
{
|
{
|
||||||
<div class="ha-edits">
|
<div class="ha-hands ha-appcontainer">
|
||||||
<div class="ha-editstitle">Textkritische Anmerkungen</div>
|
<h3>Zusätze fremder Hand</h3>
|
||||||
<div class="ha-editsinfo">Der Brieftext wurde anhand der überlieferten Quellen (vgl. Provenienz) kritisch
|
<div class="ha-app">
|
||||||
geprüft. Notwendige Korrekturen gegenüber dem in ZH gedruckten Text wurden vorgenommen und sind
|
<div class="ha-handentries">
|
||||||
vollständig annotiert. Die in den beiden Auflagen von ZH angehängten Korrekturvorschläge werden
|
<table>
|
||||||
vollständig aufgelistet, werden aber nur dann im Text realisiert, sofern diese anhand überlieferter
|
@foreach (var hand in Model.ParsedHands)
|
||||||
Quellen verifiziert werden konnten.</div>
|
{
|
||||||
<div class="ha-editentries">
|
<tr class="ha-handentry">
|
||||||
<table>
|
<td>
|
||||||
@foreach (var edit in Model.ParsedEdits)
|
<div class="ha-handfrom">@hand.ParsedStart</div>@if(!String.IsNullOrEmpty(hand.ParsedEnd)){<div class="ha-handto">–@hand.ParsedEnd</div>}
|
||||||
{
|
</td>
|
||||||
<tr>
|
<td class="ha-handperson">@Html.Raw(@hand.Person)</td>
|
||||||
<td class="ha-editfromto">
|
</tr>
|
||||||
<div class="ha-editfrom">@edit.Item1</div>@if(!String.IsNullOrEmpty(edit.Item2)){<div class="ha-editto">–@edit.Item2</div>}
|
}
|
||||||
</td>
|
</table>
|
||||||
<td class="ha-editreference">
|
</div>
|
||||||
@if (!String.IsNullOrWhiteSpace(edit.Item3))
|
</div>
|
||||||
{
|
|
||||||
<span>
|
|
||||||
@Html.Raw(@edit.Item3)]
|
|
||||||
</span>
|
|
||||||
}
|
|
||||||
</td>
|
|
||||||
<td class="ha-editreas">
|
|
||||||
@Html.Raw(@edit.Item4)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
}
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (Model.ParsedEdits != null)
|
||||||
|
{
|
||||||
|
<div class="ha-edits ha-appcontainer">
|
||||||
|
<h3>Textkritische Anmerkungen</h3>
|
||||||
|
<div class="ha-editsinfo">Der Brieftext wurde anhand der überlieferten Quellen (vgl. Provenienz) kritisch
|
||||||
|
geprüft. Notwendige Korrekturen gegenüber dem in ZH gedruckten Text wurden vorgenommen und sind
|
||||||
|
vollständig annotiert. Die in den beiden Auflagen von ZH angehängten Korrekturvorschläge werden
|
||||||
|
vollständig aufgelistet, werden aber nur dann im Text realisiert, sofern diese anhand überlieferter
|
||||||
|
Quellen verifiziert werden konnten.</div>
|
||||||
|
<div class="ha-app">
|
||||||
|
<div class="ha-editentries">
|
||||||
|
<table>
|
||||||
|
@foreach (var edit in Model.ParsedEdits)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td class="ha-editfromto">
|
||||||
|
<div class="ha-editfrom">@edit.ParsedStart</div>@if(!String.IsNullOrEmpty(edit.ParsedEnd)){<div class="ha-editto">–@edit.ParsedEnd</div>}
|
||||||
|
</td>
|
||||||
|
<td class="ha-editreference">
|
||||||
|
@if (!String.IsNullOrWhiteSpace(edit.Text))
|
||||||
|
{
|
||||||
|
<span>
|
||||||
|
@Html.Raw(@edit.Preview)]
|
||||||
|
</span>
|
||||||
|
}
|
||||||
|
</td>
|
||||||
|
<td class="ha-editreas">
|
||||||
|
@Html.Raw(@edit.Text)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@@ -1,24 +1,21 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="de" id="top">
|
<html class="h-full w-full" lang="de" id="top">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
@await Html.PartialAsync("/Views/Shared/_Head.cshtml")
|
@await Html.PartialAsync("/Views/Shared/_Head.cshtml")
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="w-full ">
|
<body class="h-full w-full">
|
||||||
<div class="relative min-h-screen">
|
<div class="flex flex-col h-full">
|
||||||
<div class="pb-24">
|
@await Html.PartialAsync("/Views/Shared/_HKBMenu.cshtml")
|
||||||
@await Html.PartialAsync("/Views/Shared/_HKBMenu.cshtml")
|
<main role="main" class="mb-6 w-full desktop:max-w-screen-desktop mx-auto grow">
|
||||||
<main role="main" class="pb-3 w-full desktop:max-w-screen-desktop mx-auto h-full">
|
@RenderBody()
|
||||||
@RenderBody()
|
</main>
|
||||||
</main>
|
<div class="w-full">
|
||||||
</div>
|
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
||||||
<div class="absolute bottom-0 w-full">
|
|
||||||
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@await Html.PartialAsync("/Views/Shared/_ScrollButton.cshtml")
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
@await Html.PartialAsync("/Views/Shared/_ScrollButton.cshtml")
|
||||||
@await RenderSectionAsync("JavaScript", false)
|
@await RenderSectionAsync("JavaScript", false)
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -24,19 +24,19 @@
|
|||||||
@apply bg-slate-50 dark:bg-slate-900 dark:shadow-xl
|
@apply bg-slate-50 dark:bg-slate-900 dark:shadow-xl
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext {
|
.ha-text {
|
||||||
@apply bg-slate-50 dark:bg-slate-900 border-slate-200 sm:border-l-2 sm:dark:border-none
|
@apply bg-slate-50 dark:bg-slate-900 border-slate-200 sm:border-l-2 sm:dark:border-none
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-marginals {
|
.ha-marginals {
|
||||||
@apply bg-slate-50 dark:bg-slate-900
|
@apply bg-slate-50 dark:bg-slate-900
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions {
|
.ha-defaulttab {
|
||||||
@apply bg-slate-50 dark:bg-slate-900
|
@apply bg-slate-50 dark:bg-slate-900
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries table tr:nth-child(even) {
|
.ha-defaulttab .ha-edits .ha-editentries table tr:nth-child(even) {
|
||||||
@apply bg-slate-100 dark:bg-slate-900
|
@apply bg-slate-100 dark:bg-slate-900
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,23 +49,19 @@
|
|||||||
@apply sm:bg-slate-50 sm:dark:bg-slate-900
|
@apply sm:bg-slate-50 sm:dark:bg-slate-900
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginal::before,
|
.ha-text .ha-marginal::before {
|
||||||
.ha-lettertext .ha-marginal:before {
|
|
||||||
@apply bg-hamannSlate-500 dark:bg-slate-500
|
@apply bg-hamannSlate-500 dark:bg-slate-500
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox,
|
.ha-text .ha-marginalbox {
|
||||||
.ha-lettertext .ha-marginalbox {
|
|
||||||
@apply bg-slate-50 dark:bg-slate-900
|
@apply bg-slate-50 dark:bg-slate-900
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox.ha-expanded-box .ha-marginallist,
|
.ha-text .ha-marginalbox.ha-expanded-box .ha-marginallist {
|
||||||
.ha-lettertext .ha-marginalbox.ha-expanded-box .ha-marginallist {
|
|
||||||
@apply shadow-md dark:shadow-lg pb-1 bg-slate-100 dark:bg-slate-600
|
@apply shadow-md dark:shadow-lg pb-1 bg-slate-100 dark:bg-slate-600
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-btn-collapsed-box,
|
.ha-text .ha-btn-collapsed-box {
|
||||||
.ha-lettertext .ha-btn-collapsed-box {
|
|
||||||
@apply text-slate-700 hover:text-slate-900 dark:text-white dark:hover:text-gray-200
|
@apply text-slate-700 hover:text-slate-900 dark:text-white dark:hover:text-gray-200
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,149 +106,35 @@
|
|||||||
@apply inline-block caps-allpetite
|
@apply inline-block caps-allpetite
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-letterbody {
|
.ha-tab {
|
||||||
@apply flex flex-row flex-nowrap rounded-b-sm
|
@apply max-w-[52rem] pt-2
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext {
|
.ha-tab .ha-appcontainer {
|
||||||
@apply max-w-[38rem] desktop:max-w-[52rem] sm:shrink-0 ml-4 sm:ml-12 px-4 pt-4 pb-8 relative flow-root font-serif leading-[1.48] numeric-mediaeval
|
@apply ml-6 md:ml-16 mb-4 pb-3 font-serif numeric-mediaeval
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-marginals {
|
.ha-app {
|
||||||
@apply hidden max-w-3xl ml-4 md:ml-12 px-4 py-4 relative leading-[1.48] numeric-mediaeval
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-marginals table td {
|
.ha-appcontainer h3 {
|
||||||
@apply align-text-top
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-marginals .ha-marginalfromto {
|
|
||||||
@apply whitespace-nowrap text-sm font-semibold pr-4
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-marginals .ha-marginaltext .ha-bzg {
|
|
||||||
@apply inline
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-marginals .ha-marginaltext a {
|
|
||||||
@apply underline decoration-dotted hover:decoration-solid
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition div {
|
|
||||||
@apply inline
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition {
|
|
||||||
@apply max-w-4xl
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions {
|
|
||||||
@apply ml-4 md:ml-12 px-4 pt-4 pb-4 relative font-serif leading-[1.48] numeric-mediaeval
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-app {
|
|
||||||
@apply !block font-bold pt-6
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-app + br {
|
|
||||||
@apply hidden
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-app:first-child {
|
|
||||||
@apply pt-0
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition {
|
|
||||||
@apply hyphenate
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext {
|
|
||||||
@apply !flow-root font-serif relative w-fit -ml-4 pl-4 unhyphenate
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition a {
|
|
||||||
@apply !underline decoration-dotted hover:decoration-solid
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-hands {
|
|
||||||
@apply pt-6
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-hands .ha-handstitle {
|
|
||||||
@apply font-bold
|
@apply font-bold
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-hands .ha-handentries .ha-handfrom,
|
.ha-appcontainer a {
|
||||||
.ha-additions .ha-hands .ha-handentries .ha-handto {
|
@apply underline decoration-dotted decoration-slate-800 hover:decoration-solid hover:decoration-slate-900
|
||||||
@apply inline text-sm font-semibold whitespace-nowrap
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-hands .ha-handentries .ha-handperson {
|
.ha-textcontainer {
|
||||||
@apply inline pl-4 whitespace-nowrap
|
@apply flex -ml-6 -mt-2 -mb-3 md:-ml-16
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editstitle {
|
.ha-text {
|
||||||
@apply font-bold
|
@apply pt-2 pb-3 max-w-[38rem] desktop:max-w-[52rem] sm:shrink-0 ml-4 sm:ml-12 px-4 relative flow-root font-serif leading-[1.48] numeric-mediaeval
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editfromto {
|
.ha-text div {
|
||||||
@apply whitespace-nowrap
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editfrom,
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editto {
|
|
||||||
@apply inline text-sm font-semibold whitespace-nowrap
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreference {
|
|
||||||
@apply whitespace-nowrap
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreference div {
|
|
||||||
@apply inline
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits {
|
|
||||||
@apply pt-6 max-w-4xl
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editstitle {
|
|
||||||
@apply font-bold
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editsinfo {
|
|
||||||
@apply pb-4 hyphenate
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries tr td {
|
|
||||||
@apply align-text-top
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreas div {
|
|
||||||
@apply inline font-sans
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editfromto {
|
|
||||||
@apply pr-1 pl-1
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreference {
|
|
||||||
@apply border-r-2 pl-1 pr-3 text-sm
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreference br {
|
|
||||||
@apply hidden
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreas {
|
|
||||||
@apply pl-3 w-full
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-edits .ha-editentries .ha-editreas .ha-zh * {
|
|
||||||
@apply !font-serif
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-lettertext div {
|
|
||||||
@apply inline
|
@apply inline
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,7 +143,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ha-linecount {
|
.ha-linecount {
|
||||||
@apply sm:absolute sm:right-full sm:mr-2 sm:text-right text-xs sm:mt-1 font-sans select-none whitespace-nowrap
|
@apply sm:absolute sm:right-full sm:mr-2 sm:text-right text-xs sm:mt-[.35rem] font-sans select-none whitespace-nowrap
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-linecount .ha-zhline {
|
.ha-linecount .ha-zhline {
|
||||||
@@ -281,43 +163,117 @@
|
|||||||
@apply !hidden
|
@apply !hidden
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginal::before,
|
.ha-text .ha-marginal::before {
|
||||||
.ha-lettertext .ha-marginal::before {
|
|
||||||
@apply absolute top-[0.2rem] bottom-[0.1rem] left-[0.1rem] w-0.5 content-['']
|
@apply absolute top-[0.2rem] bottom-[0.1rem] left-[0.1rem] w-0.5 content-['']
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox,
|
.ha-text .ha-marginalbox {
|
||||||
.ha-lettertext .ha-marginalbox {
|
|
||||||
@apply hidden select-none hover:select-auto hyphenate pl-1 md:inline-block absolute left-full ml-6 desktop:ml-16 mt-1 w-[16rem] desktop:w-[28rem] text-sm leading-tight rounded-sm font-sans
|
@apply hidden select-none hover:select-auto hyphenate pl-1 md:inline-block absolute left-full ml-6 desktop:ml-16 mt-1 w-[16rem] desktop:w-[28rem] text-sm leading-tight rounded-sm font-sans
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox .ha-marginallist,
|
.ha-text .ha-marginalbox .ha-marginallist {
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginallist {
|
|
||||||
@apply text-sm leading-tight flex flex-wrap gap-x-6 pr-1
|
@apply text-sm leading-tight flex flex-wrap gap-x-6 pr-1
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal,
|
.ha-text .ha-marginalbox .ha-marginallist .ha-marginal {
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal {
|
|
||||||
@apply pl-2 inline relative
|
@apply pl-2 inline relative
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal a,
|
.ha-text .ha-marginalbox .ha-marginallist .ha-marginal a {
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal a {
|
|
||||||
@apply !underline decoration-dotted hover:decoration-solid
|
@apply !underline decoration-dotted hover:decoration-solid
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal,
|
.ha-text .ha-marginalbox .ha-marginallist .ha-marginal,
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal,
|
.ha-text .ha-marginalbox .ha-marginallist .ha-marginal * {
|
||||||
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal *,
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal * {
|
|
||||||
@apply min-h-0 min-w-0 overflow-ellipsis overflow-hidden
|
@apply min-h-0 min-w-0 overflow-ellipsis overflow-hidden
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-tradzhtext .ha-btn-collapsed-box,
|
.ha-text .ha-btn-collapsed-box {
|
||||||
.ha-lettertext .ha-btn-collapsed-box {
|
|
||||||
@apply absolute left-full ml-4 desktop:ml-[3.4rem] hidden md:inline-block cursor-pointer leading-none mt-0.5
|
@apply absolute left-full ml-4 desktop:ml-[3.4rem] hidden md:inline-block cursor-pointer leading-none mt-0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-hands {
|
||||||
|
@apply ml-6 md:ml-16
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-hands .ha-handstitle {
|
||||||
|
@apply font-bold
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-hands .ha-handentries .ha-handfrom,
|
||||||
|
.ha-defaulttab .ha-hands .ha-handentries .ha-handto {
|
||||||
|
@apply inline text-sm font-semibold whitespace-nowrap
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-hands .ha-handentries .ha-handperson {
|
||||||
|
@apply inline pl-4 whitespace-nowrap
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editstitle {
|
||||||
|
@apply font-bold
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editfromto {
|
||||||
|
@apply whitespace-nowrap
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editfrom,
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editto {
|
||||||
|
@apply inline text-sm font-semibold whitespace-nowrap
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreference {
|
||||||
|
@apply whitespace-nowrap
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreference div {
|
||||||
|
@apply inline
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits {
|
||||||
|
@apply max-w-4xl ml-6 md:ml-16
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries {
|
||||||
|
@apply md:-mr-36
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editstitle {
|
||||||
|
@apply font-bold
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editsinfo {
|
||||||
|
@apply pb-4 hyphenate
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries tr td {
|
||||||
|
@apply align-text-top
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreas div {
|
||||||
|
@apply inline font-sans
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editfromto {
|
||||||
|
@apply pr-1 pl-1
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreference {
|
||||||
|
@apply border-r-2 pl-1 pr-3 text-sm
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreference br {
|
||||||
|
@apply hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreas {
|
||||||
|
@apply pl-3 w-full
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-defaulttab .ha-edits .ha-editentries .ha-editreas .ha-zh * {
|
||||||
|
@apply !font-serif
|
||||||
|
}
|
||||||
|
/*
|
||||||
.ha-minwidth .ha-tradzhtext,
|
.ha-minwidth .ha-tradzhtext,
|
||||||
.ha-lettertext.ha-minwidth {
|
.ha-lettertext.ha-minwidth {
|
||||||
@apply min-w-[44rem] desktop:min-w-[52rem]
|
@apply min-w-[44rem] desktop:min-w-[52rem]
|
||||||
@@ -330,7 +286,7 @@
|
|||||||
|
|
||||||
.ha-lettertext.ha-minwidth .ha-aligncenter {
|
.ha-lettertext.ha-minwidth .ha-aligncenter {
|
||||||
@apply absolute left-1/3 whitespace-nowrap -translate-x-1/2
|
@apply absolute left-1/3 whitespace-nowrap -translate-x-1/2
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox:before {
|
.ha-lettertext .ha-marginalbox:before {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -78,7 +78,7 @@
|
|||||||
@apply !font-serif !text-xs !font-semibold
|
@apply !font-serif !text-xs !font-semibold
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-text {
|
.ha-literal {
|
||||||
@apply inline
|
@apply inline
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,92 +1,23 @@
|
|||||||
// Code specifically for the letter view
|
// // Code specifically for the letter view
|
||||||
const showhidebutton = function (
|
let activetab = null;
|
||||||
buttonid,
|
let activetabbtn = null;
|
||||||
divid,
|
let tabbtnlist = document.querySelectorAll(".ha-tabbtn");
|
||||||
buttonlist,
|
let tablist = document.querySelectorAll(".ha-tab");
|
||||||
divlist,
|
|
||||||
starthidden
|
|
||||||
) {
|
|
||||||
let button = document.getElementById(buttonid);
|
|
||||||
let div = document.getElementById(divid);
|
|
||||||
|
|
||||||
if (starthidden && div !== null) {
|
for (let i = 0; i < tabbtnlist.length; i++) {
|
||||||
div.classList.add("hide");
|
tablist[i].classList.add("hidden");
|
||||||
}
|
tabbtnlist[i].addEventListener("click", () => {
|
||||||
|
if (activetab != null)
|
||||||
|
activetab.classList.add("hidden");
|
||||||
|
if (activetabbtn != null)
|
||||||
|
activetabbtn.classList.remove("active");
|
||||||
|
|
||||||
if (!starthidden && button !== null) {
|
tablist[i].classList.remove("hidden");
|
||||||
button.classList.add("active");
|
tabbtnlist[i].classList.add("active");
|
||||||
}
|
activetab = tablist[i];
|
||||||
|
activetabbtn = tabbtnlist[i];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (button !== null) {
|
if (tabbtnlist.length > 0)
|
||||||
button.addEventListener("click", function () {
|
tabbtnlist[0].click();
|
||||||
for (let btn of buttonlist) {
|
|
||||||
let inactivebutton = document.getElementById(btn);
|
|
||||||
if (inactivebutton !== null) inactivebutton.classList.remove("active");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let element of divlist) {
|
|
||||||
let hiddenelement = document.getElementById(element);
|
|
||||||
if (hiddenelement !== null) {
|
|
||||||
hiddenelement.classList.add("hide")
|
|
||||||
hiddenelement.classList.remove("flow-root");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (button !== null) button.classList.add("active");
|
|
||||||
if (div !== null) {
|
|
||||||
div.classList.add("flow-root");
|
|
||||||
div.classList.remove("hide");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Letter View: Show / Hide Tabs
|
|
||||||
let buttonlist = ["ha-lettertextbtn", "ha-additionsbtn", "ha-marginalsbtn"];
|
|
||||||
let divlist = ["ha-lettertext", "ha-additions", "ha-marginals"];
|
|
||||||
|
|
||||||
if (this.document.getElementById("ha-lettertextbtn") !== null) {
|
|
||||||
showhidebutton(
|
|
||||||
"ha-lettertextbtn",
|
|
||||||
"ha-lettertext",
|
|
||||||
buttonlist,
|
|
||||||
divlist,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
showhidebutton(
|
|
||||||
"ha-additionsbtn",
|
|
||||||
"ha-additions",
|
|
||||||
buttonlist,
|
|
||||||
divlist,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
showhidebutton(
|
|
||||||
"ha-marginalsbtn",
|
|
||||||
"ha-marginals",
|
|
||||||
buttonlist,
|
|
||||||
divlist,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
showhidebutton(
|
|
||||||
"ha-lettertextbtn",
|
|
||||||
"ha-lettertext",
|
|
||||||
buttonlist,
|
|
||||||
divlist,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
showhidebutton(
|
|
||||||
"ha-additionsbtn",
|
|
||||||
"ha-additions",
|
|
||||||
buttonlist,
|
|
||||||
divlist,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
showhidebutton(
|
|
||||||
"ha-marginalsbtn",
|
|
||||||
"ha-marginals",
|
|
||||||
buttonlist,
|
|
||||||
divlist,
|
|
||||||
true
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -133,11 +133,11 @@ const overlappingcollapsebox = function (selector, hoverfunction) {
|
|||||||
const marginalboxwidthset = function () {
|
const marginalboxwidthset = function () {
|
||||||
let lt = document.getElementById("ha-letterbody");
|
let lt = document.getElementById("ha-letterbody");
|
||||||
if (lt !== null) {
|
if (lt !== null) {
|
||||||
let mg = lt.querySelectorAll(".ha-lettertext .ha-marginalbox");
|
let mg = lt.querySelectorAll(".ha-text .ha-marginalbox");
|
||||||
if (mg.length > 0) {
|
if (mg.length > 0) {
|
||||||
let ltbcr = lt.getBoundingClientRect();
|
let ltbcr = lt.getBoundingClientRect();
|
||||||
let mgbcr = mg[0].getBoundingClientRect();
|
let mgbcr = mg[0].getBoundingClientRect();
|
||||||
let nw = ltbcr.right - mgbcr.left - 18;
|
let nw = ltbcr.right - mgbcr.left - 20;
|
||||||
|
|
||||||
for (let element of mg) {
|
for (let element of mg) {
|
||||||
element.style.width = nw + "px";
|
element.style.width = nw + "px";
|
||||||
@@ -152,14 +152,14 @@ const collapseboxes = function () {
|
|||||||
overlappingcollapsebox(".ha-neuzeit .ha-letlinks", true);
|
overlappingcollapsebox(".ha-neuzeit .ha-letlinks", true);
|
||||||
overlappingcollapsebox(".ha-forschung .ha-letlinks", true);
|
overlappingcollapsebox(".ha-forschung .ha-letlinks", true);
|
||||||
overlappingcollapsebox(".ha-commentlist .ha-letlinks", true);
|
overlappingcollapsebox(".ha-commentlist .ha-letlinks", true);
|
||||||
overlappingcollapsebox(".ha-lettertext .ha-marginalbox", true);
|
overlappingcollapsebox(".ha-text .ha-marginalbox", true);
|
||||||
};
|
};
|
||||||
|
|
||||||
marginalboxwidthset();
|
marginalboxwidthset();
|
||||||
collapseboxes();
|
collapseboxes();
|
||||||
var doit;
|
// var doit;
|
||||||
this.window.addEventListener("resize", function () {
|
// this.window.addEventListener("resize", function () {
|
||||||
this.clearTimeout(doit);
|
// this.clearTimeout(doit);
|
||||||
marginalboxwidthset();
|
// marginalboxwidthset();
|
||||||
doit = this.setTimeout(collapseboxes, 250);
|
// doit = this.setTimeout(collapseboxes, 250);
|
||||||
});
|
// });
|
||||||
|
|||||||
Reference in New Issue
Block a user