mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 17:25:32 +00:00
Fixed marginals; fixed Tables
This commit is contained in:
@@ -60,10 +60,15 @@ public class Briefecontroller : Controller
|
|||||||
if (prevmeta != null) model.MetaData.Prev = (generateMetaViewModel(prevmeta, false), url + prevmeta.Autopsic);
|
if (prevmeta != null) model.MetaData.Prev = (generateMetaViewModel(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.ParsedTradition = HaWeb.HTMLHelpers.LetterHelpers.CreateTraditions(_lib, _readerService, marginals, tradition).sb_tradition.ToString();
|
if (tradition != null && !String.IsNullOrWhiteSpace(tradition.Element)) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
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 parsedLetter = HaWeb.HTMLHelpers.LetterHelpers.CreateLetter(_lib, _readerService, meta, text, marginals, hands, editreasons);
|
||||||
(model.ParsedText, model.ParsedMarginals, model.MinWidth) = (parsedLetter.sb_lettertext.ToString(), parsedLetter.ParsedMarginals, parsedLetter.minwidth);
|
(model.ParsedText, model.MinWidth) = (parsedLetter.sb_lettertext.ToString(), parsedLetter.minwidth);
|
||||||
|
if (model.ParsedMarginals != null && parsedLetter.ParsedMarginals != null) model.ParsedMarginals.AddRange(parsedLetter.ParsedMarginals);
|
||||||
|
else model.ParsedMarginals = parsedLetter.ParsedMarginals;
|
||||||
if (parsedLetter.Startline != "-1" && parsedLetter.Startline != "1" && model.MetaData.ParsedZHString != null)
|
if (parsedLetter.Startline != "-1" && parsedLetter.Startline != "1" && model.MetaData.ParsedZHString != null)
|
||||||
model.MetaData.ParsedZHString += " / " + parsedLetter.Startline;
|
model.MetaData.ParsedZHString += " / " + parsedLetter.Startline;
|
||||||
if (model.ParsedText == null || String.IsNullOrWhiteSpace(model.ParsedText))
|
if (model.ParsedText == null || String.IsNullOrWhiteSpace(model.ParsedText))
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ public static class LetterHelpers
|
|||||||
return letterState;
|
return letterState;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TraditionState CreateTraditions(ILibrary lib, IReaderService readerService, IEnumerable<Marginal>? marginals, Tradition tradition)
|
public static TraditionState CreateTraditions(ILibrary lib, IReaderService readerService, IEnumerable<Marginal>? marginals, Tradition tradition, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits)
|
||||||
{
|
{
|
||||||
var rd = readerService.RequestStringReader(tradition.Element);
|
var rd = readerService.RequestStringReader(tradition.Element);
|
||||||
var traditionState = new TraditionState(lib, rd, readerService, marginals);
|
var traditionState = new TraditionState(lib, rd, readerService, 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<TraditionState>(traditionState, rd, traditionState.sb_tradition, TraditionRules.OTagRules, TraditionRules.STagRules, TraditionRules.CTagRules, TraditionRules.TextRules, TraditionRules.WhitespaceRules);
|
||||||
new HaWeb.HTMLHelpers.LinkHelper(lib, rd, traditionState.sb_tradition);
|
new HaWeb.HTMLHelpers.LinkHelper(lib, rd, traditionState.sb_tradition);
|
||||||
rd.Read();
|
rd.Read();
|
||||||
|
|||||||
5281
HaWeb/Hamann.xml
5281
HaWeb/Hamann.xml
File diff suppressed because it is too large
Load Diff
@@ -14,6 +14,7 @@ public class BriefeViewModel
|
|||||||
public string? ParsedText { get; set; }
|
public string? ParsedText { get; set; }
|
||||||
public string? ParsedTradition { get; set; }
|
public string? ParsedTradition { get; set; }
|
||||||
public bool MinWidth { get; set; } = false;
|
public bool MinWidth { get; set; } = false;
|
||||||
|
public bool MinWidthTrad { get; set; } = false;
|
||||||
|
|
||||||
// From, Until, Reference, Edit, sartpage, startline
|
// From, Until, Reference, Edit, sartpage, startline
|
||||||
public List<(string, string, string, string, string, string)>? ParsedEdits
|
public List<(string, string, string, string, string, string)>? ParsedEdits
|
||||||
|
|||||||
@@ -36,9 +36,7 @@ Briefe beim Namen
|
|||||||
- GND Normdaten der Namen
|
- GND Normdaten der Namen
|
||||||
|
|
||||||
|
|
||||||
TODO 367 684 708 tabellen, min-size für ha-lettertext
|
TODO tabellen ok, ausser 939: dort sind htabs geschachtelt
|
||||||
TODO 682 kein word-wrap, max-size für ha-lettertext
|
|
||||||
TODO Regeln nach tradition übertragen, mit min-width
|
|
||||||
TODO Word-wrap before align, tabs
|
TODO Word-wrap before align, tabs
|
||||||
TODO blinken before js
|
TODO blinken before js
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public static class CSSClasses {
|
|||||||
public const string EMPHCLASS = "ha-emph";
|
public const string EMPHCLASS = "ha-emph";
|
||||||
public const string APPCLASS = "ha-app";
|
public const string APPCLASS = "ha-app";
|
||||||
public const string MARGINGALBOXCLASS = "ha-marginalbox";
|
public const string MARGINGALBOXCLASS = "ha-marginalbox";
|
||||||
|
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 TRADZHTEXTCLASS = "ha-tradzhtext";
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public class LetterRules
|
|||||||
private static readonly string EMPHCLASS = HaWeb.Settings.CSSClasses.EMPHCLASS;
|
private static readonly string EMPHCLASS = HaWeb.Settings.CSSClasses.EMPHCLASS;
|
||||||
private static readonly string APPCLASS = HaWeb.Settings.CSSClasses.APPCLASS;
|
private static readonly string APPCLASS = HaWeb.Settings.CSSClasses.APPCLASS;
|
||||||
private static readonly string MARGINGALBOXCLASS = HaWeb.Settings.CSSClasses.MARGINGALBOXCLASS;
|
private static readonly string MARGINGALBOXCLASS = HaWeb.Settings.CSSClasses.MARGINGALBOXCLASS;
|
||||||
|
private static readonly string MARGINALLISTCLASS = HaWeb.Settings.CSSClasses.MARGINALLISTCLASS;
|
||||||
|
|
||||||
// Zeilen:
|
// Zeilen:
|
||||||
private static readonly string ZHLINECLASS = HaWeb.Settings.CSSClasses.ZHLINECLASS;
|
private static readonly string ZHLINECLASS = HaWeb.Settings.CSSClasses.ZHLINECLASS;
|
||||||
@@ -254,6 +255,7 @@ public class LetterRules
|
|||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline));
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINALLISTCLASS));
|
||||||
foreach (var marginal in margs)
|
foreach (var marginal in margs)
|
||||||
{
|
{
|
||||||
// In Marginal, the Root-Element (<marginal>) is somehow parsed,
|
// In Marginal, the Root-Element (<marginal>) is somehow parsed,
|
||||||
@@ -266,6 +268,7 @@ public class LetterRules
|
|||||||
rd.Read();
|
rd.Read();
|
||||||
}
|
}
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
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()));
|
reader.State.ParsedMarginals.Add((reader.State.currpage, reader.State.currline, sb2.ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
namespace HaWeb.Settings.ParsingRules;
|
namespace HaWeb.Settings.ParsingRules;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Web;
|
||||||
|
|
||||||
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 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 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>>)>;
|
||||||
@@ -61,6 +62,7 @@ public static class TraditionRules
|
|||||||
private static readonly string SUBSECTIONCLASS = HaWeb.Settings.CSSClasses.SUBSECTIONCLASS;
|
private static readonly string SUBSECTIONCLASS = HaWeb.Settings.CSSClasses.SUBSECTIONCLASS;
|
||||||
private static readonly string TRADITIONCLASS = HaWeb.Settings.CSSClasses.TRADITIONCLASS;
|
private static readonly string TRADITIONCLASS = HaWeb.Settings.CSSClasses.TRADITIONCLASS;
|
||||||
private static readonly string MARGINALCLASS = HaWeb.Settings.CSSClasses.MARGINALCLASS;
|
private static readonly string MARGINALCLASS = HaWeb.Settings.CSSClasses.MARGINALCLASS;
|
||||||
|
private static readonly string MARGINALLISTCLASS = HaWeb.Settings.CSSClasses.MARGINALLISTCLASS;
|
||||||
private static readonly string LETTERCLASS = HaWeb.Settings.CSSClasses.LETTERCLASS;
|
private static readonly string LETTERCLASS = HaWeb.Settings.CSSClasses.LETTERCLASS;
|
||||||
|
|
||||||
// Tradition-spezifische Elemente
|
// Tradition-spezifische Elemente
|
||||||
@@ -78,16 +80,22 @@ public static class TraditionRules
|
|||||||
// Parsing Rules for Letters
|
// Parsing Rules for Letters
|
||||||
// General rules (for the lettertext column, also for parsing the marginals, awa tradtions and editreasons)
|
// General rules (for the lettertext column, also for parsing the marginals, awa tradtions and editreasons)
|
||||||
public static readonly TagFuncList OTagRules = new TagFuncList() {
|
public static readonly TagFuncList OTagRules = new TagFuncList() {
|
||||||
( ( x, _) => x.Name == "align" && x["pos"] == "center", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNCENTERCLASS)) ),
|
( ( x, _) => x.Name == "align" && x["pos"] == "center", (sb, tag, reader) => {
|
||||||
( ( x, _) => x.Name == "align" && x["pos"] == "right", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNRIGHTCLASS)) ),
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNCENTERCLASS));
|
||||||
|
reader.State.mustwrap = (true, true);
|
||||||
|
} ),
|
||||||
|
( ( x, _) => x.Name == "align" && x["pos"] == "right", (sb, tag, reader) => {
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNRIGHTCLASS));
|
||||||
|
reader.State.mustwrap = (true, true);
|
||||||
|
}),
|
||||||
( ( x, _) => x.Name == "added", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ADDEDCLASS)) ),
|
( ( x, _) => x.Name == "added", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ADDEDCLASS)) ),
|
||||||
( ( x, _) => x.Name == "sal", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SALCLASS)) ),
|
( ( x, _) => x.Name == "sal", (sb, tag, reader) => {
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SALCLASS));
|
||||||
|
reader.State.mustwrap = (true, true);
|
||||||
|
}),
|
||||||
( ( x, _) => x.Name == "aq", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, AQCLASS)) ),
|
( ( x, _) => x.Name == "aq", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, AQCLASS)) ),
|
||||||
( ( x, _) => x.Name == "super", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SUPERCLASS)) ),
|
( ( x, _) => x.Name == "super", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SUPERCLASS)) ),
|
||||||
( ( x, _) => x.Name == "del", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "del", (sb, tag, reader) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, DELCLASS)) ),
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, DELCLASS));
|
|
||||||
reader.State.active_del = true;
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "nr", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, NRCLASS)) ),
|
( ( x, _) => x.Name == "nr", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, NRCLASS)) ),
|
||||||
( ( x, _) => x.Name == "note", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, NOTECLASS)) ),
|
( ( x, _) => x.Name == "note", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, NOTECLASS)) ),
|
||||||
( ( x, _) => x.Name == "ul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ULCLASS)) ),
|
( ( x, _) => x.Name == "ul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ULCLASS)) ),
|
||||||
@@ -98,44 +106,66 @@ public static class TraditionRules
|
|||||||
( ( x, _) => x.Name == "up", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, UPCLASS)) ),
|
( ( x, _) => x.Name == "up", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, UPCLASS)) ),
|
||||||
( ( x, _) => x.Name == "sub", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SUBCLASS)) ),
|
( ( x, _) => x.Name == "sub", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SUBCLASS)) ),
|
||||||
( ( x, _) => x.Name == "tul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TULCLASS)) ),
|
( ( x, _) => x.Name == "tul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TULCLASS)) ),
|
||||||
( ( x, _) => x.Name == "header", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, HEADERCLASS)) ),
|
( ( x, _) => x.Name == "header", (sb, tag, reader) => {
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, HEADERCLASS));
|
||||||
|
reader.State.mustwrap = (true, true);
|
||||||
|
}),
|
||||||
( ( x, _) => x.Name == "lemma", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LEMMACLASS)) ),
|
( ( x, _) => x.Name == "lemma", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LEMMACLASS)) ),
|
||||||
( ( x, _) => x.Name == "eintrag", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ENTRYCLASS)) ),
|
( ( x, _) => x.Name == "eintrag", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ENTRYCLASS)) ),
|
||||||
( ( x, _) => x.Name == "titel", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TITLECLASS)) ),
|
( ( x, _) => x.Name == "titel", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TITLECLASS)) ),
|
||||||
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, BZGCLASS)) ),
|
( ( x, _) => x.Name == "bzg", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, BZGCLASS)) ),
|
||||||
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHCLASS)) ),
|
( ( x, _) => x.Name == "zh", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHCLASS)) ),
|
||||||
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, EMPHCLASS)); } ),
|
( ( x, _) => x.Name == "emph", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, EMPHCLASS)); } ),
|
||||||
|
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, APPCLASS)); } ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SUBSECTIONCLASS, tag["id"])) ),
|
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SUBSECTIONCLASS, tag["id"])) ),
|
||||||
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTCLASS, tag["id"])) ),
|
( ( x, _) => x.Name == "kommentar", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTCLASS, tag["id"])) ),
|
||||||
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, EDITREASONCLASS)) ),
|
( ( x, _) => x.Name == "editreason", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, EDITREASONCLASS)) ),
|
||||||
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LETTERCLASS)) ),
|
( ( x, _) => x.Name == "subsection", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LETTERCLASS)) ),
|
||||||
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TRADITIONCLASS)) ),
|
( ( x, _) => x.Name == "letterTradition", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TRADITIONCLASS)) ),
|
||||||
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "marginal", (sb, tag, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINALCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINALCLASS, "m-" + tag["index"]));
|
||||||
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
reader.State.active_skipwhitespace = !reader.State.active_skipwhitespace;
|
||||||
}),
|
}),
|
||||||
( ( x, _) => x.Name == "hand", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, HANDCLASS)) ),
|
( ( x, _) => x.Name == "tabs", (sb, tag, reader) => {
|
||||||
( ( x, _) => x.Name == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TABLECLASS)) ),
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TABLECLASS));
|
||||||
( ( x, _) => x.Name == "tab" && !String.IsNullOrWhiteSpace(x["value"]), (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TABCLASS + tag["value"]))),
|
// 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, TABCLASS + tag["value"]));
|
||||||
|
}),
|
||||||
|
( ( x, _) => x.Name == "edit" && !String.IsNullOrWhiteSpace(x["ref"]), (sb, tag, _) => {
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, EDITMARKERCLASS, "ea-" + tag["ref"]));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
}),
|
||||||
|
( ( x, _) => x.Name == "hand", (sb, tag, _) => {
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, HANDMARKERCLASS, "ha-" + tag["ref"]));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, HANDCLASS));
|
||||||
|
}),
|
||||||
|
|
||||||
// Tradition specific:
|
// Tradition specific:
|
||||||
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, APPCLASS)); } ),
|
( ( x, _) => x.Name == "app", (sb, tag, _) => { sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, APPCLASS)); } ),
|
||||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
||||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TRADZHTEXTCLASS));
|
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TRADZHTEXTCLASS));
|
||||||
reader.State.active_trad = true;
|
reader.State.active_trad = true;
|
||||||
})};
|
})
|
||||||
|
};
|
||||||
|
|
||||||
public static readonly TagFuncList CTagRules = new TagFuncList() {
|
public static readonly TagFuncList CTagRules = new TagFuncList() {
|
||||||
( ( x, _) => x.Name == "align", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
( ( 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 == "added", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "sal", (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 == "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 == "super", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "del", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "del", (sb, tag, reader) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
reader.State.active_del = false; // TODO SMTH IS FISHY HERE!
|
|
||||||
}),
|
|
||||||
( ( x, _) => x.Name == "nr", (sb, tag, _) => 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 == "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 == "ul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
@@ -146,13 +176,17 @@ public static class TraditionRules
|
|||||||
( ( x, _) => x.Name == "ful", (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 == "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 == "tul", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
( ( x, _) => x.Name == "header", (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 == "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 == "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 == "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 == "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 == "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 == "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 == "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)) ),
|
||||||
@@ -160,7 +194,10 @@ public static class TraditionRules
|
|||||||
( ( x, _) => x.Name == "letterTradition", (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, 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)) ),
|
( ( x, _) => x.Name == "hand", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)) ),
|
||||||
|
|
||||||
// Tradition specifics
|
// Tradition specifics
|
||||||
@@ -168,46 +205,39 @@ public static class TraditionRules
|
|||||||
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
( ( x, _) => x.Name == "ZHText", (sb, tag, reader) => {
|
||||||
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
reader.State.sb_tradition.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
reader.State.active_trad = false;
|
reader.State.active_trad = false;
|
||||||
})};
|
})
|
||||||
|
};
|
||||||
|
|
||||||
public static readonly TextFuncList TextRules = new TextFuncList() {
|
public static readonly TextFuncList TextRules = new TextFuncList() {
|
||||||
( ( x, _) => true, (sb, txt, reader) => {
|
( ( x, _) => true, (sb, txt, reader) => {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TEXTCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TEXTCLASS));
|
||||||
if (reader.State.active_del)
|
if (reader.OpenTags.Where(x => x.Name == "del").Any())
|
||||||
sb.Append(txt.Value.Replace("–", "<" + DEFAULTELEMENT + " class=\"" + CROSSEDDASHCLASS + "\">–</" + DEFAULTELEMENT + ">"));
|
sb.Append(HttpUtility.HtmlEncode(txt.Value).Replace("–", "<" + DEFAULTELEMENT + " class=\"" + CROSSEDDASHCLASS + "\">–</" + DEFAULTELEMENT + ">"));
|
||||||
else
|
else
|
||||||
sb.Append(txt.Value);
|
sb.Append(HttpUtility.HtmlEncode(txt.Value));
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
})};
|
})};
|
||||||
|
|
||||||
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) => {
|
||||||
// This is the beginning of the Text, so no <br> needed, just a special linecount
|
if(!String.IsNullOrWhiteSpace(tag["tab"]) || !String.IsNullOrWhiteSpace(tag["type"])) {
|
||||||
// Tradition specific: only do this if in ZHText
|
reader.State.mustwrap = (false, true);
|
||||||
if (reader.State.active_trad) {
|
|
||||||
if(reader.State.currline == "-1") {
|
|
||||||
reader.State.currline = tag["index"];
|
|
||||||
|
|
||||||
// First Linecount
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHPAGECLASS + " " + FIRSTLINECLASS, ""));
|
|
||||||
|
|
||||||
sb.Append("S." + " ");
|
|
||||||
if (tag["index"] != "1")
|
|
||||||
sb.Append(reader.State.currpage + " / " + tag["index"]);
|
|
||||||
else
|
|
||||||
sb.Append(reader.State.currpage);
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This is NOT the beginning of the text, so we set a br, and then, linecount
|
// Tradition specific: only if in zhtext
|
||||||
else {
|
if (reader.State.active_trad) {
|
||||||
reader.State.currline = tag["index"];
|
// 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", ZHBREAKCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS));
|
||||||
|
else
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
|
||||||
|
reader.State.mustwrap = (false, false);
|
||||||
|
|
||||||
// Linecount
|
// Linecount
|
||||||
|
if(!String.IsNullOrWhiteSpace(tag["index"])) {
|
||||||
|
reader.State.currline = tag["index"];
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS, reader.State.currpage + "-" + reader.State.currline));
|
||||||
|
|
||||||
// Fall 1: Neue Seite
|
// Fall 1: Neue Seite
|
||||||
@@ -231,29 +261,42 @@ public static class TraditionRules
|
|||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
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"];
|
||||||
|
|
||||||
// Marginalien
|
// Tradition specifics: the first linecount must be shown
|
||||||
if(reader.State.Marginals != null) {
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ZHLINECOUNTCLASS + " " + 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);
|
var margs = reader.State.Marginals.Where(x => x.Page == reader.State.currpage && x.Line == reader.State.currline);
|
||||||
if (margs != null && margs.Any())
|
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));
|
margs = margs.OrderBy(x => Int32.Parse(x.Index));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTMARKERCLASS, "ma-" + reader.State.currpage + "-" + reader.State.currline));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINGALBOXCLASS));
|
||||||
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINALLISTCLASS));
|
||||||
foreach (var marginal in margs)
|
foreach (var marginal in margs)
|
||||||
{
|
{
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, COMMENTMARKERCLASS, marginal.Index));
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
|
||||||
|
|
||||||
// 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.
|
||||||
if (marginal.Element != null) {
|
|
||||||
var rd = reader.State.ReaderService.RequestStringReader(marginal.Element);
|
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.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.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();
|
rd.Read();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,12 +304,14 @@ public static class TraditionRules
|
|||||||
if(tag["type"] == "line") {
|
if(tag["type"] == "line") {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINELINECLASS));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINELINECLASS));
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
reader.State.mustwrap = (false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Line tab=
|
// Line tab=
|
||||||
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
|
if(!String.IsNullOrWhiteSpace(tag["tab"])) {
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINEINDENTCLASS + tag["tab"]));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, LINEINDENTCLASS + tag["tab"]));
|
||||||
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT));
|
||||||
|
if (tag["tab"] != "1") reader.State.mustwrap = (false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,36 +11,45 @@ public class TraditionState : HaWeb.HTMLParser.IState {
|
|||||||
internal IReaderService ReaderService;
|
internal IReaderService ReaderService;
|
||||||
|
|
||||||
internal IEnumerable<Marginal>? Marginals;
|
internal IEnumerable<Marginal>? Marginals;
|
||||||
|
internal IEnumerable<Hand>? Hands;
|
||||||
|
internal IEnumerable<Editreason>? Edits;
|
||||||
|
|
||||||
internal bool active_del;
|
// State
|
||||||
|
// Must we skip all of the upcoming whitespace?
|
||||||
internal bool active_skipwhitespace;
|
internal bool active_skipwhitespace;
|
||||||
internal bool active_firstedit;
|
// 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;
|
internal string currline;
|
||||||
|
// What's the current page?
|
||||||
internal string currpage;
|
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 bool active_trad;
|
||||||
|
|
||||||
internal StringBuilder sb_tradition; // Überlieferung
|
internal StringBuilder sb_tradition; // Überlieferung
|
||||||
internal StringBuilder sb_trad_zhtext; // Überlieferung, ZHText
|
internal List<(string, string, string)>? ParsedMarginals;
|
||||||
|
internal string Startline;
|
||||||
|
|
||||||
internal IReader rd_tradition;
|
internal IReader rd_tradition;
|
||||||
|
|
||||||
public TraditionState(ILibrary lib, IReader reader, IReaderService readerService, IEnumerable<Marginal>? marginals)
|
public TraditionState(ILibrary lib, IReader reader, IReaderService readerService, IEnumerable<Marginal>? marginals, IEnumerable<Hand>? hands, IEnumerable<Editreason>? edits)
|
||||||
{
|
{
|
||||||
Lib = lib;
|
Lib = lib;
|
||||||
rd_tradition = reader;
|
rd_tradition = reader;
|
||||||
Marginals = marginals;
|
Marginals = marginals;
|
||||||
ReaderService = readerService;
|
ReaderService = readerService;
|
||||||
|
Hands = hands;
|
||||||
|
Edits = edits;
|
||||||
SetupState();
|
SetupState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetupState() {
|
public void SetupState() {
|
||||||
sb_tradition = new StringBuilder();
|
sb_tradition = new StringBuilder();
|
||||||
sb_trad_zhtext = new StringBuilder();
|
|
||||||
|
|
||||||
active_trad = false;
|
active_trad = false;
|
||||||
active_del = false;
|
|
||||||
active_skipwhitespace = true;
|
active_skipwhitespace = true;
|
||||||
active_firstedit = true;
|
|
||||||
currline = "-1";
|
currline = "-1";
|
||||||
currpage = "";
|
currpage = "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
var minwidth = "";
|
var minwidth = "";
|
||||||
if (Model.MinWidth)
|
if (Model.MinWidth)
|
||||||
minwidth = "ha-minwidth";
|
minwidth = "ha-minwidth";
|
||||||
|
var minwidthtrads = "";
|
||||||
|
if (Model.MinWidthTrad)
|
||||||
|
minwidthtrads = "ha-minwidth";
|
||||||
}
|
}
|
||||||
<div class="ha-twilighttogglebar">
|
<div class="ha-twilighttogglebar">
|
||||||
<div class="ha-letterheader">
|
<div class="ha-letterheader">
|
||||||
@@ -86,10 +89,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<div class="ha-additions" id="ha-additions">
|
<div class="ha-additions" id="ha-additions">
|
||||||
|
<div class="@minwidthtrads">
|
||||||
@if (Model.ParsedTradition != null)
|
@if (Model.ParsedTradition != null)
|
||||||
{
|
{
|
||||||
@Html.Raw(Model.ParsedTradition)
|
@Html.Raw(Model.ParsedTradition)
|
||||||
}
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
@if (Model.ParsedHands != null && Model.ParsedHands.Any())
|
@if (Model.ParsedHands != null && Model.ParsedHands.Any())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -96,17 +96,17 @@
|
|||||||
<div class="ha-metadatapersons">
|
<div class="ha-metadatapersons">
|
||||||
@if (!String.IsNullOrWhiteSpace(Model.ParsedReceivers)) {
|
@if (!String.IsNullOrWhiteSpace(Model.ParsedReceivers)) {
|
||||||
@if (Model.Meta.isDraft == HaDocument.Models.OptionalBool.True) {
|
@if (Model.Meta.isDraft == HaDocument.Models.OptionalBool.True) {
|
||||||
<span>@Model.ParsedSenders</span>
|
<span>@Html.Raw(Model.ParsedSenders)</span>
|
||||||
<div class="ha-tooltip">
|
<div class="ha-tooltip">
|
||||||
↛
|
↛
|
||||||
<div class="ha-tooltiptext" style="bottom: 100%;">
|
<div class="ha-tooltiptext" style="bottom: 100%;">
|
||||||
Entwurf
|
Entwurf
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span>@Model.ParsedReceivers</span>
|
<span>@Html.Raw(Model.ParsedReceivers)</span>
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
<span>@Model.ParsedSenders → @Model.ParsedReceivers</span>
|
<span>@Html.Raw(Model.ParsedSenders) → @Html.Raw(Model.ParsedReceivers)</span>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1390,16 +1390,6 @@ body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext.ha-minwidth {
|
|
||||||
min-width: 38rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1190px) {
|
|
||||||
.ha-lettertext.ha-minwidth {
|
|
||||||
min-width: 45rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-marginals {
|
.ha-marginals {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
@@ -1510,51 +1500,6 @@ body {
|
|||||||
hyphens: none;
|
hyphens: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
|
|
||||||
position: absolute;
|
|
||||||
right: -20rem;
|
|
||||||
margin-top: 0.25rem;
|
|
||||||
display: none;
|
|
||||||
width: 19rem;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
border-radius: 0.125rem;
|
|
||||||
border-left-width: 2px;
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(203 213 225 / var(--tw-border-opacity));
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
padding-right: 0.25rem;
|
|
||||||
font-family: Biolinum, sans-serif;
|
|
||||||
font-size: 0.875rem;
|
|
||||||
line-height: 1.25rem;
|
|
||||||
line-height: 1.25;
|
|
||||||
-webkit-hyphens: auto;
|
|
||||||
-ms-hyphens: auto;
|
|
||||||
hyphens: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 960px) {
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1190px) {
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
|
|
||||||
right: -26rem;
|
|
||||||
width: 23rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox.ha-expanded-box {
|
|
||||||
padding-bottom: 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition a {
|
.ha-additions .ha-tradition a {
|
||||||
-webkit-text-decoration-line: underline !important;
|
-webkit-text-decoration-line: underline !important;
|
||||||
text-decoration-line: underline !important;
|
text-decoration-line: underline !important;
|
||||||
@@ -1567,50 +1512,6 @@ body {
|
|||||||
text-decoration-style: solid;
|
text-decoration-style: solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal {
|
|
||||||
padding-right: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal a {
|
|
||||||
-webkit-text-decoration-line: underline !important;
|
|
||||||
text-decoration-line: underline !important;
|
|
||||||
-webkit-text-decoration-style: dotted;
|
|
||||||
text-decoration-style: dotted;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal a:hover {
|
|
||||||
-webkit-text-decoration-style: solid;
|
|
||||||
text-decoration-style: solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-btn-collapsed-box {
|
|
||||||
position: absolute;
|
|
||||||
right: -0.5rem;
|
|
||||||
margin-top: 2px;
|
|
||||||
display: none;
|
|
||||||
cursor: pointer;
|
|
||||||
line-height: 1;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(71 85 105 / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-btn-collapsed-box:hover {
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(15 23 42 / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 960px) {
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-btn-collapsed-box {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1190px) {
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-btn-collapsed-box {
|
|
||||||
right: -2.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-hands {
|
.ha-additions .ha-hands {
|
||||||
padding-top: 1.5rem;
|
padding-top: 1.5rem;
|
||||||
}
|
}
|
||||||
@@ -1814,21 +1715,29 @@ body {
|
|||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox {
|
.ha-tradzhtext .ha-marginal::before, .ha-lettertext .ha-marginal:before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: -20rem;
|
top: 0.1rem;
|
||||||
|
bottom: 0.1rem;
|
||||||
|
left: 0px;
|
||||||
|
width: 0.125rem;
|
||||||
|
--tw-bg-opacity: 1;
|
||||||
|
background-color: rgb(148 163 184 / var(--tw-bg-opacity));
|
||||||
|
--tw-content: '';
|
||||||
|
content: var(--tw-content);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-tradzhtext .ha-marginalbox, .ha-lettertext .ha-marginalbox {
|
||||||
|
position: absolute;
|
||||||
|
left: 100%;
|
||||||
|
margin-left: 1.5rem;
|
||||||
margin-top: 0.25rem;
|
margin-top: 0.25rem;
|
||||||
display: none;
|
display: none;
|
||||||
width: 19rem;
|
width: 16rem;
|
||||||
flex-wrap: wrap;
|
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
border-left-width: 2px;
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(203 213 225 / var(--tw-border-opacity));
|
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
||||||
padding-left: 0.5rem;
|
padding-left: 0.5rem;
|
||||||
padding-right: 0.25rem;
|
|
||||||
font-family: Biolinum, sans-serif;
|
font-family: Biolinum, sans-serif;
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
line-height: 1.25rem;
|
line-height: 1.25rem;
|
||||||
@@ -1839,49 +1748,57 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 960px) {
|
@media (min-width: 960px) {
|
||||||
.ha-lettertext .ha-marginalbox {
|
.ha-tradzhtext .ha-marginalbox, .ha-lettertext .ha-marginalbox {
|
||||||
display: flex;
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 1190px) {
|
@media (min-width: 1190px) {
|
||||||
.ha-lettertext .ha-marginalbox {
|
.ha-tradzhtext .ha-marginalbox, .ha-lettertext .ha-marginalbox {
|
||||||
right: -26rem;
|
width: 24rem;
|
||||||
width: 23rem;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal {
|
.ha-tradzhtext .ha-marginalbox.ha-expanded-box .ha-marginallist, .ha-lettertext .ha-marginalbox.ha-expanded-box .ha-marginallist {
|
||||||
display: inline-block;
|
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||||
|
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
||||||
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox.ha-expanded-box {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist, .ha-lettertext .ha-marginalbox .ha-marginallist {
|
||||||
padding-bottom: 0.25rem;
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
-moz-column-gap: 1rem;
|
||||||
|
column-gap: 1rem;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
line-height: 1.25rem;
|
||||||
|
line-height: 1.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal, .ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal {
|
||||||
padding-right: 1.5rem;
|
position: relative;
|
||||||
|
display: inline;
|
||||||
|
flex-grow: 1;
|
||||||
|
padding-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal .ha-text {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal a, .ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal a {
|
||||||
}
|
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal a {
|
|
||||||
-webkit-text-decoration-line: underline !important;
|
-webkit-text-decoration-line: underline !important;
|
||||||
text-decoration-line: underline !important;
|
text-decoration-line: underline !important;
|
||||||
-webkit-text-decoration-style: dotted;
|
-webkit-text-decoration-style: dotted;
|
||||||
text-decoration-style: dotted;
|
text-decoration-style: dotted;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal a:hover {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal a:hover, .ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal a:hover {
|
||||||
-webkit-text-decoration-style: solid;
|
-webkit-text-decoration-style: solid;
|
||||||
text-decoration-style: solid;
|
text-decoration-style: solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-btn-collapsed-box {
|
.ha-tradzhtext .ha-btn-collapsed-box, .ha-lettertext .ha-btn-collapsed-box {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: -0.5rem;
|
left: 100%;
|
||||||
margin-top: 2px;
|
margin-left: 1rem;
|
||||||
|
margin-top: 0.125rem;
|
||||||
display: none;
|
display: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
@@ -1889,23 +1806,40 @@ body {
|
|||||||
color: rgb(51 65 85 / var(--tw-text-opacity));
|
color: rgb(51 65 85 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-btn-collapsed-box:hover {
|
.ha-tradzhtext .ha-btn-collapsed-box:hover, .ha-lettertext .ha-btn-collapsed-box:hover {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(15 23 42 / var(--tw-text-opacity));
|
color: rgb(15 23 42 / var(--tw-text-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 960px) {
|
@media (min-width: 960px) {
|
||||||
.ha-lettertext .ha-btn-collapsed-box {
|
.ha-tradzhtext .ha-btn-collapsed-box, .ha-lettertext .ha-btn-collapsed-box {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-minwidth .ha-tradzhtext, .ha-lettertext.ha-minwidth {
|
||||||
|
min-width: 38rem;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 1190px) {
|
@media (min-width: 1190px) {
|
||||||
.ha-lettertext .ha-btn-collapsed-box {
|
.ha-minwidth .ha-tradzhtext, .ha-lettertext.ha-minwidth {
|
||||||
right: -2.5rem;
|
min-width: 55rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-minwidth .ha-tradzhtext .ha-alignright, .ha-lettertext.ha-minwidth .ha-alignright {
|
||||||
|
float: right;
|
||||||
|
margin-right: 20%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-lettertext.ha-minwidth .ha-aligncenter {
|
||||||
|
position: absolute;
|
||||||
|
left: 33.333333%;
|
||||||
|
--tw-translate-x: -50%;
|
||||||
|
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
/* Classes from the General parser */
|
/* Classes from the General parser */
|
||||||
|
|
||||||
/* Classes from .NET */
|
/* Classes from .NET */
|
||||||
@@ -2301,16 +2235,16 @@ body {
|
|||||||
|
|
||||||
.ha-collapsed-box {
|
.ha-collapsed-box {
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
|
cursor: default;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-expanded-box {
|
.ha-expanded-box {
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
max-height: 100vh !important;
|
max-height: 100vh !important;
|
||||||
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
padding-bottom: 0.25rem;
|
||||||
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .ha-register .ha-neuzeit .ha-register-body .ha-commenthead .ha-collapsed-box:hover,
|
/* .ha-register .ha-neuzeit .ha-register-body .ha-commenthead .ha-collapsed-box:hover,
|
||||||
@@ -2644,6 +2578,10 @@ body {
|
|||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-lettertext .ha-marginalbox:before {
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal::after {
|
.ha-lettertext .ha-marginalbox .ha-marginal::after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -489,10 +489,6 @@
|
|||||||
@apply max-w-[38rem] desktop:max-w-[45rem] sm:shrink-0 sm:border-l-2 ml-4 sm:ml-12 px-4 pt-4 pb-8 relative font-serif leading-[1.48] bg-slate-50 numeric-mediaeval;
|
@apply max-w-[38rem] desktop:max-w-[45rem] sm:shrink-0 sm:border-l-2 ml-4 sm:ml-12 px-4 pt-4 pb-8 relative font-serif leading-[1.48] bg-slate-50 numeric-mediaeval;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext.ha-minwidth {
|
|
||||||
@apply min-w-[38rem] desktop:min-w-[45rem]
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-marginals {
|
.ha-marginals {
|
||||||
@apply max-w-3xl ml-4 md:ml-12 px-4 py-4 relative leading-[1.48] bg-slate-50 numeric-mediaeval;
|
@apply max-w-3xl ml-4 md:ml-12 px-4 py-4 relative leading-[1.48] bg-slate-50 numeric-mediaeval;
|
||||||
}
|
}
|
||||||
@@ -545,34 +541,10 @@
|
|||||||
@apply !block font-serif relative w-fit -ml-4 pl-4 unhyphenate;
|
@apply !block font-serif relative w-fit -ml-4 pl-4 unhyphenate;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
|
|
||||||
@apply absolute -right-[20rem] desktop:-right-[26rem] w-[19rem] desktop:w-[23rem] text-sm border-l-2 border-slate-300 leading-tight pl-2 bg-slate-50 pr-1 hyphenate mt-1 rounded-sm font-sans hidden md:flex flex-wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal {
|
|
||||||
@apply inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox.ha-expanded-box {
|
|
||||||
@apply pb-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition a {
|
.ha-additions .ha-tradition a {
|
||||||
@apply !underline decoration-dotted hover:decoration-solid
|
@apply !underline decoration-dotted hover:decoration-solid
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal {
|
|
||||||
@apply pr-6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal a {
|
|
||||||
@apply !underline decoration-dotted hover:decoration-solid
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-tradition .ha-tradzhtext .ha-btn-collapsed-box {
|
|
||||||
@apply hidden md:block absolute text-slate-600 hover:text-slate-900 cursor-pointer -right-[0.5rem] desktop:-right-[2.5rem] leading-none mt-[2px];
|
|
||||||
}
|
|
||||||
|
|
||||||
.ha-additions .ha-hands {
|
.ha-additions .ha-hands {
|
||||||
@apply pt-6;
|
@apply pt-6;
|
||||||
}
|
}
|
||||||
@@ -692,32 +664,53 @@
|
|||||||
@apply !hidden;
|
@apply !hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-tradzhtext .ha-marginal::before,
|
||||||
|
.ha-lettertext .ha-marginal:before {
|
||||||
|
@apply absolute top-[0.1rem] bottom-[0.1rem] left-0 w-0.5 bg-slate-400 content-['']
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-tradzhtext .ha-marginalbox,
|
||||||
.ha-lettertext .ha-marginalbox {
|
.ha-lettertext .ha-marginalbox {
|
||||||
@apply absolute -right-[20rem] desktop:-right-[26rem] w-[19rem] desktop:w-[23rem] text-sm border-l-2 border-slate-300 leading-tight pl-2 bg-slate-50 pr-1 hyphenate mt-1 rounded-sm font-sans hidden md:flex flex-wrap;
|
@apply hidden pl-2 md:block absolute left-full ml-6 mt-1 w-[16rem] desktop:w-[24rem] text-sm leading-tight bg-slate-50 hyphenate rounded-sm font-sans
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal {
|
.ha-tradzhtext .ha-marginalbox.ha-expanded-box .ha-marginallist,
|
||||||
@apply inline-block;
|
.ha-lettertext .ha-marginalbox.ha-expanded-box .ha-marginallist {
|
||||||
|
@apply shadow-md
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox.ha-expanded-box {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist,
|
||||||
@apply pb-1;
|
.ha-lettertext .ha-marginalbox .ha-marginallist {
|
||||||
|
@apply text-sm leading-tight flex flex-wrap gap-x-4
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal,
|
||||||
@apply pr-6;
|
.ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal {
|
||||||
|
@apply pl-2 inline grow relative
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal .ha-text {
|
.ha-tradzhtext .ha-marginalbox .ha-marginallist .ha-marginal a,
|
||||||
|
.ha-lettertext .ha-marginalbox .ha-marginallist .ha-marginal a {
|
||||||
}
|
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal a {
|
|
||||||
@apply !underline decoration-dotted hover:decoration-solid
|
@apply !underline decoration-dotted hover:decoration-solid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-tradzhtext .ha-btn-collapsed-box,
|
||||||
.ha-lettertext .ha-btn-collapsed-box {
|
.ha-lettertext .ha-btn-collapsed-box {
|
||||||
@apply hidden md:block absolute text-slate-700 hover:text-slate-900 cursor-pointer -right-[0.5rem] desktop:-right-[2.5rem] leading-none mt-[2px];
|
@apply absolute left-full ml-4 hidden md:block text-slate-700 hover:text-slate-900 cursor-pointer leading-none mt-0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-minwidth .ha-tradzhtext,
|
||||||
|
.ha-lettertext.ha-minwidth {
|
||||||
|
@apply min-w-[38rem] desktop:min-w-[55rem]
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-minwidth .ha-tradzhtext .ha-alignright,
|
||||||
|
.ha-lettertext.ha-minwidth .ha-alignright {
|
||||||
|
@apply float-right mr-[20%];
|
||||||
|
}
|
||||||
|
|
||||||
|
.ha-lettertext.ha-minwidth .ha-aligncenter {
|
||||||
|
@apply absolute left-1/3 whitespace-nowrap -translate-x-1/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Classes from the General parser */
|
/* Classes from the General parser */
|
||||||
@@ -926,11 +919,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ha-collapsed-box {
|
.ha-collapsed-box {
|
||||||
@apply z-0 overflow-hidden;
|
@apply z-0 overflow-hidden overflow-ellipsis cursor-default
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-expanded-box {
|
.ha-expanded-box {
|
||||||
@apply shadow-md z-[1000] !h-auto !max-h-screen;
|
@apply pb-1 z-[1000] !h-auto !max-h-screen;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .ha-register .ha-neuzeit .ha-register-body .ha-commenthead .ha-collapsed-box:hover,
|
/* .ha-register .ha-neuzeit .ha-register-body .ha-commenthead .ha-collapsed-box:hover,
|
||||||
@@ -939,6 +932,10 @@
|
|||||||
} */
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ha-lettertext .ha-marginalbox:before {
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
.ha-lettertext .ha-marginalbox .ha-marginal::after {
|
.ha-lettertext .ha-marginalbox .ha-marginal::after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,11 +48,9 @@ const getLineHeight = function (element) {
|
|||||||
ret;
|
ret;
|
||||||
temp.setAttribute("class", element.className);
|
temp.setAttribute("class", element.className);
|
||||||
temp.innerHTML = "Ü";
|
temp.innerHTML = "Ü";
|
||||||
|
|
||||||
element.parentNode.appendChild(temp);
|
element.parentNode.appendChild(temp);
|
||||||
ret = temp.clientHeight;
|
ret = temp.getBoundingClientRect().height;
|
||||||
temp.parentNode.removeChild(temp);
|
temp.parentNode.removeChild(temp);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -68,7 +66,7 @@ const uncollapsebox = function (element) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const addbuttoncaollapsebox = function (element, height, hoverfunction) {
|
const addbuttoncaollapsebox = function (element, height, hoverfunction) {
|
||||||
const btn = document.createElement("div");
|
let btn = document.createElement("div");
|
||||||
btn.classList.add("ha-btn-collapsed-box");
|
btn.classList.add("ha-btn-collapsed-box");
|
||||||
|
|
||||||
if (element.classList.contains("ha-collapsed-box")) {
|
if (element.classList.contains("ha-collapsed-box")) {
|
||||||
@@ -125,37 +123,26 @@ const addbuttoncaollapsebox = function (element, height, hoverfunction) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* TODO: need a resize watcher to undo and reapply the effect on breakpoint */
|
/* TODO: need a resize watcher to undo and reapply the effect on breakpoint */
|
||||||
const overlappingcollapsebox = function (selector, hoverfunction, parentbox) {
|
const overlappingcollapsebox = function (selector, hoverfunction) {
|
||||||
let boxes = document.querySelectorAll(selector);
|
let boxes = document.querySelectorAll(selector);
|
||||||
let clientrects = [];
|
|
||||||
let lineheight = 1;
|
let lineheight = 1;
|
||||||
|
|
||||||
if (boxes.length >= 1) {
|
if (boxes.length >= 1) {
|
||||||
lineheight = getLineHeight(boxes[0]);
|
lineheight = getLineHeight(boxes[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (element of boxes) {
|
for (var i = 0; i < boxes.length; i++) {
|
||||||
clientrects.push([element, element.getBoundingClientRect()]);
|
if (i < boxes.length - 1) {
|
||||||
}
|
let element = boxes[i];
|
||||||
|
let thisrect = element.getBoundingClientRect();
|
||||||
let boundigparent = null;
|
let nextrect = boxes[i+1].getBoundingClientRect();
|
||||||
let pb = null;
|
let overlap = thisrect.bottom - nextrect.top;
|
||||||
if (parentbox !== null) {
|
if (overlap >= 0 && !(window.getComputedStyle(element).display === "none")) {
|
||||||
pb = document.getElementById(parentbox);
|
let newlength = thisrect.height - overlap;
|
||||||
if (pb !== null) {
|
|
||||||
boundigparent = pb.getBoundingClientRect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < clientrects.length; i++) {
|
|
||||||
if (i < clientrects.length - 1) {
|
|
||||||
let overlap = clientrects[i][1].bottom - clientrects[i + 1][1].top;
|
|
||||||
if (overlap >= 0) {
|
|
||||||
let newlength = clientrects[i][1].height - overlap;
|
|
||||||
let remainder = newlength % lineheight;
|
let remainder = newlength % lineheight;
|
||||||
newlength = newlength - remainder - 1;
|
newlength = newlength - remainder - 1;
|
||||||
collapsebox(clientrects[i][0], newlength);
|
requestAnimationFrame(() => { collapsebox(element, newlength) });
|
||||||
addbuttoncaollapsebox(clientrects[i][0], newlength, hoverfunction);
|
requestAnimationFrame(() => { addbuttoncaollapsebox(element, newlength, hoverfunction) });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,26 +217,12 @@ const get_theme_settings = function(standard) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const collapseboxes = function() {
|
const collapseboxes = function() {
|
||||||
for (entry of this.document.getElementsByClassName("ha-letlinks")) {
|
|
||||||
entry.maxHeight = "auto";
|
|
||||||
let btns = entry.parentNode.getElementsByClassName("ha-btn-collapsed-box");
|
|
||||||
for (btn of btns) {
|
|
||||||
btn.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (entry of this.document.getElementsByClassName("ha-marginalbox")) {
|
|
||||||
entry.maxHeight = "auto";
|
|
||||||
let btns = entry.parentNode.getElementsByClassName("ha-btn-collapsed-box");
|
|
||||||
for (btn of btns) {
|
|
||||||
btn.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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-lettertext .ha-marginalbox", true, "ha-letterbody");
|
overlappingcollapsebox(".ha-lettertext .ha-marginalbox", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////// ONLOAD ////////////////////////////////////
|
//////////////////////////////// ONLOAD ////////////////////////////////////
|
||||||
window.addEventListener("load", function () {
|
window.addEventListener("load", function () {
|
||||||
// Menu: Show / Hide Buttons for mobile View
|
// Menu: Show / Hide Buttons for mobile View
|
||||||
@@ -271,9 +244,13 @@ window.addEventListener("load", function () {
|
|||||||
if (document.getElementById("ha-register-nav") != null)
|
if (document.getElementById("ha-register-nav") != null)
|
||||||
markactive_exact(document.getElementById("ha-register-nav"));
|
markactive_exact(document.getElementById("ha-register-nav"));
|
||||||
|
|
||||||
// Letter / Register View: Collapse all unfit boxes
|
// Letter / Register View: Collapse all unfit boxes + resize observer
|
||||||
collapseboxes();
|
collapseboxes();
|
||||||
//this.window.addEventListener('resize', collapseboxes);
|
var doit;
|
||||||
|
this.window.addEventListener('resize', function() {
|
||||||
|
this.clearTimeout(doit);
|
||||||
|
this.setTimeout(collapseboxes, 250);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Letter View: Show / Hide Tabs
|
// Letter View: Show / Hide Tabs
|
||||||
|
|||||||
Reference in New Issue
Block a user