Added a lot of stuff

This commit is contained in:
schnulller
2022-05-29 20:27:34 +02:00
parent 9504b89f30
commit 7929a34f5a
14 changed files with 308 additions and 143 deletions

View File

@@ -63,9 +63,11 @@ public class Briefecontroller : Controller
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)) model.ParsedTradition = HaWeb.HTMLHelpers.LetterHelpers.CreateTraditions(_lib, _readerService, marginals, tradition).sb_tradition.ToString();
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) = (parsedLetter.sb_lettertext.ToString(), parsedLetter.ParsedMarginals); (model.ParsedText, model.ParsedMarginals, model.MinWidth) = (parsedLetter.sb_lettertext.ToString(), parsedLetter.ParsedMarginals, parsedLetter.minwidth);
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))
model.MetaData.HasText = false;
} }
// Return // Return

View File

@@ -1,3 +1,5 @@
using System.Web;
namespace HaWeb.HTMLHelpers; namespace HaWeb.HTMLHelpers;
public static class StringHelpers { public static class StringHelpers {
public static string GetEnumerationString(IEnumerable<string> strlist) public static string GetEnumerationString(IEnumerable<string> strlist)

View File

@@ -1,15 +1,54 @@
namespace HaWeb.Models; namespace HaWeb.Models;
using HaDocument.Models; using HaDocument.Models;
using System.Web;
public class BriefeMetaViewModel public class BriefeMetaViewModel
{ {
public Meta Meta { get; private set; } public Meta Meta { get; private set; }
public bool HasMarginals { get; private set; } public bool HasMarginals { get; private set; }
public bool ShowZHData { get; private set; } public bool ShowZHData { get; private set; }
public bool HasText { get; set; } = true;
public string? ParsedSenders { get; set; } private string? _ParsedSenders;
public string? ParsedReceivers { get; set; } private string? _ParsedReceivers;
public string? ParsedZHString { get; set; } private string? _ParsedZHString;
public string? ParsedSenders
{
get => _ParsedSenders;
set
{
if (value != null)
_ParsedSenders = HttpUtility.HtmlEncode(value);
else
_ParsedSenders = value;
}
}
public string? ParsedReceivers
{
get => _ParsedReceivers;
set
{
if (value != null)
_ParsedReceivers = HttpUtility.HtmlEncode(value);
else
_ParsedReceivers = value;
}
}
public string? ParsedZHString
{
get => _ParsedZHString;
set
{
if (value != null)
_ParsedZHString = HttpUtility.HtmlEncode(value);
else
_ParsedZHString = value;
}
}
public (BriefeMetaViewModel, string)? Next { get; set; } public (BriefeMetaViewModel, string)? Next { get; set; }
public (BriefeMetaViewModel, string)? Prev { get; set; } public (BriefeMetaViewModel, string)? Prev { get; set; }

View File

@@ -1,4 +1,5 @@
namespace HaWeb.Models; namespace HaWeb.Models;
using System.Web;
public class BriefeViewModel public class BriefeViewModel
{ {
@@ -6,13 +7,69 @@ public class BriefeViewModel
public string Index { get; private set; } public string Index { get; private set; }
public BriefeMetaViewModel MetaData { get; private set; } public BriefeMetaViewModel MetaData { get; private set; }
private List<(string, string, string)>? _ParsedMarginals;
private List<(string, string, string, string, string, string)>? _ParsedEdits;
public List<(string, string, string, string, string)>? _ParsedHands;
public string? ParsedText { get; set; } public string? ParsedText { get; set; }
public List<(string, string, string)>? ParsedMarginals { get; set; }
public string? ParsedTradition { get; set; } public string? ParsedTradition { get; set; }
public bool MinWidth { get; set; } = false;
// From, Until, Reference, Edit, sartpage, startline // From, Until, Reference, Edit, sartpage, startline
public List<(string, string, string, string, string, string)>? ParsedEdits { get; set; } public List<(string, string, string, string, string, string)>? ParsedEdits
{
get => _ParsedEdits;
set
{
if (value != null)
_ParsedEdits = value.Select(x => (
HttpUtility.HtmlEncode(x.Item1),
HttpUtility.HtmlEncode(x.Item2),
x.Item3,
x.Item4,
HttpUtility.HtmlAttributeEncode(x.Item5),
HttpUtility.HtmlAttributeEncode(x.Item6)
)).ToList();
else
_ParsedEdits = null;
}
}
// From, Until, Person, startpage, startline // From, Until, Person, startpage, startline
public List<(string, string, string, string, string)>? ParsedHands { get; set; } public List<(string, string, string, string, string)>? ParsedHands
{
get => _ParsedHands;
set
{
if (value != null)
_ParsedHands = value.Select(x => (
HttpUtility.HtmlEncode(x.Item1),
HttpUtility.HtmlEncode(x.Item2),
HttpUtility.HtmlEncode(x.Item3),
HttpUtility.HtmlAttributeEncode(x.Item4),
HttpUtility.HtmlAttributeEncode(x.Item5)
)).ToList();
else
_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;
}
}
public BriefeViewModel(string id, string index, BriefeMetaViewModel meta) public BriefeViewModel(string id, string index, BriefeMetaViewModel meta)
{ {

View File

@@ -1,20 +1,56 @@
namespace HaWeb.Models; namespace HaWeb.Models;
using System.Web;
public class RegisterViewModel { public class RegisterViewModel
{
public string Category { get; private set; } public string Category { get; private set; }
public string Id { get; private set; } public string Id { get; private set; }
public string Title { get; private set; } public string Title { get; private set; }
private List<(string, string)>? _AvailableCategories;
private List<(string, string)>? _AvailableSideCategories;
public string? Search { get; set; } = null; public string? Search { get; set; } = null;
public bool? MaxSearch { get; set; } = null; public bool? MaxSearch { get; set; } = null;
public List<CommentModel> ParsedComments { get; private set; } public List<CommentModel> ParsedComments { get; private set; }
public List<(string, string)>? AvailableCategories { get; set; } = null;
public List<(string, string)>? AvailableSideCategories { get; set; } = null;
public RegisterViewModel(string category, string id, List<CommentModel> parsedComments, string title) { // Title, URL
this.Category = category; public List<(string, string)>? AvailableCategories
this.Id = id; {
get => _AvailableCategories;
set
{
if (value != null)
_AvailableCategories = value.Select(x => (
HttpUtility.HtmlEncode(x.Item1),
HttpUtility.HtmlAttributeEncode(x.Item2))
).ToList();
else
_AvailableCategories = null;
}
}
// Title, URL
public List<(string, string)>? AvailableSideCategories
{
get => _AvailableSideCategories;
set
{
if (value != null)
_AvailableSideCategories = value.Select(x => (
HttpUtility.HtmlEncode(x.Item1),
HttpUtility.HtmlAttributeEncode(x.Item2))
).ToList();
else
_AvailableSideCategories = null;
}
}
public RegisterViewModel(string category, string id, List<CommentModel> parsedComments, string title)
{
this.Category = HttpUtility.HtmlAttributeEncode(category);
this.Id = HttpUtility.HtmlAttributeEncode(id);
this.ParsedComments = parsedComments; this.ParsedComments = parsedComments;
this.Title = title; this.Title = HttpUtility.HtmlEncode(title);
} }
} }

View File

@@ -35,12 +35,10 @@ Briefe beim Namen
- GND Normdaten der Namen - GND Normdaten der Namen
- Esther falsch abgekürzt
- Marginalien in dne Traditions an die falsche Zeile gesetzt
- Lessing-Registereitrag
- 224 erse beidenkomm vertauscht
TODO Letter 41 2x Zeile 25, also auch zwei Mal der Kommentar TODO 367 684 708 tabellen, min-size für ha-lettertext
TODO 148 153 letzter kommentar TODO 682 kein word-wrap, max-size für ha-lettertext
TODO 332 TODO Regeln nach tradition übertragen, mit min-width
TODO 367 TODO Word-wrap before align, tabs
TODO blinken before js

View File

@@ -1,6 +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.EditState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>>)>; using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>>)>;
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>>)>; using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>>)>;
using WhitespaceFuncList = List<(Func<HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>>)>; using WhitespaceFuncList = List<(Func<HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.EditState>>)>;
@@ -144,9 +144,9 @@ public static class EditRules {
( ( 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.State.active_del)
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));
})}; })};

View File

@@ -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.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.LetterState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>>)>;
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.LetterState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.XMLHelper<HaWeb.Settings.ParsingState.LetterState>>)>;
@@ -74,23 +75,20 @@ public class LetterRules
public static readonly TagFuncList OTagRules = new TagFuncList() { public static readonly TagFuncList OTagRules = new TagFuncList() {
( ( x, _) => x.Name == "align" && x["pos"] == "center", (sb, tag, reader) => { ( ( x, _) => x.Name == "align" && x["pos"] == "center", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNCENTERCLASS)); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNCENTERCLASS));
reader.State.mustwrap = true; reader.State.mustwrap = (true, true);
} ), } ),
( ( x, _) => x.Name == "align" && x["pos"] == "right", (sb, tag, reader) => { ( ( x, _) => x.Name == "align" && x["pos"] == "right", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNRIGHTCLASS)); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, ALIGNRIGHTCLASS));
reader.State.mustwrap = true; 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, reader) => { ( ( x, _) => x.Name == "sal", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SALCLASS)); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, SALCLASS));
reader.State.mustwrap = true; 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)) ),
@@ -102,8 +100,8 @@ public class LetterRules
( ( 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, reader) => { ( ( x, _) => x.Name == "header", (sb, tag, reader) => {
reader.State.mustwrap = true;
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, HEADERCLASS)); 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)) ),
@@ -121,9 +119,13 @@ public class LetterRules
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, MARGINALCLASS, "m-" + tag["index"])); 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 == "tabs", (sb, tag, _) => sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TABLECLASS)) ), ( ( x, _) => x.Name == "tabs", (sb, tag, reader) => {
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, 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) => { ( ( x, _) => x.Name == "tab" && !String.IsNullOrWhiteSpace(x["value"]), (sb, tag, reader) => {
reader.State.mustwrap = true; reader.State.mustwrap = (true, true);
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TABCLASS + tag["value"])); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement(DEFAULTELEMENT, TABCLASS + tag["value"]));
}), }),
( ( x, _) => x.Name == "edit" && !String.IsNullOrWhiteSpace(x["ref"]), (sb, tag, _) => { ( ( x, _) => x.Name == "edit" && !String.IsNullOrWhiteSpace(x["ref"]), (sb, tag, _) => {
@@ -139,20 +141,17 @@ public class LetterRules
public static readonly TagFuncList CTagRules = new TagFuncList() { public static readonly TagFuncList CTagRules = new TagFuncList() {
( ( x, _) => x.Name == "align", (sb, tag, reader) => { ( ( x, _) => x.Name == "align", (sb, tag, reader) => {
reader.State.mustwrap = true; reader.State.mustwrap = (true, true);
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); 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, reader) => { ( ( x, _) => x.Name == "sal", (sb, tag, reader) => {
reader.State.mustwrap = true; reader.State.mustwrap = (true, true);
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); 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)) ),
@@ -164,7 +163,7 @@ public class LetterRules
( ( 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, reader) => { ( ( x, _) => x.Name == "header", (sb, tag, reader) => {
reader.State.mustwrap = true; reader.State.mustwrap = (true, true);
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); 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)) ),
@@ -182,7 +181,7 @@ public class LetterRules
( ( 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) => {
reader.State.mustwrap = true; reader.State.mustwrap = (true, true);
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateEndElement(DEFAULTELEMENT)); 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)) )
@@ -191,10 +190,10 @@ public class LetterRules
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));
})}; })};
@@ -202,16 +201,16 @@ public class LetterRules
( (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 = true; reader.State.mustwrap = (false, true);
} }
// This is NOT the beginning of the text, so we set a br, and then, linecount // This is NOT the beginning of the text, so we set a br, and then, linecount
if(reader.State.currline != "-1") { if(reader.State.currline != "-1") {
if (!reader.State.mustwrap) if (!reader.State.mustwrap.Item2)
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS)); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br", ZHBREAKCLASS));
else else
sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br")); sb.Append(HaWeb.HTMLHelpers.TagHelpers.CreateElement("br"));
reader.State.mustwrap = false; reader.State.mustwrap = (false, false);
// Linecount // Linecount
if(!String.IsNullOrWhiteSpace(tag["index"])) { if(!String.IsNullOrWhiteSpace(tag["index"])) {
@@ -244,7 +243,7 @@ public class LetterRules
reader.State.currline = tag["index"]; reader.State.currline = tag["index"];
} }
// Marginalien // Marginalien, only for lines with a linenumber
if(reader.State.Marginals != null && !String.IsNullOrWhiteSpace(tag["index"])) { 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())
@@ -275,14 +274,14 @@ public class LetterRules
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 = true; 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 = true; if (tag["tab"] != "1") reader.State.mustwrap = (false, true);
} }
} }
)}; )};

View File

@@ -19,11 +19,16 @@ public class LetterState : HaWeb.HTMLParser.IState {
internal IEnumerable<Editreason>? Edits; internal IEnumerable<Editreason>? Edits;
// State // State
internal bool active_del; // Must we skip all of the upcoming whitespace?
internal bool active_skipwhitespace; internal bool active_skipwhitespace;
internal bool mustwrap; // 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;
// Results // Results
internal StringBuilder sb_lettertext; internal StringBuilder sb_lettertext;
@@ -46,7 +51,8 @@ public class LetterState : HaWeb.HTMLParser.IState {
active_skipwhitespace = true; active_skipwhitespace = true;
currline = "-1"; currline = "-1";
currpage = ""; currpage = "";
mustwrap = false; mustwrap = (false, false);
minwidth = false;
// Initialize State // Initialize State
if (Meta.ZH != null) { if (Meta.ZH != null) {

View File

@@ -1,12 +1,22 @@
@model BriefeViewModel; @model BriefeViewModel;
@{
var minwidth = "";
if (Model.MinWidth)
minwidth = "ha-minwidth";
}
<div class="ha-twilighttogglebar"> <div class="ha-twilighttogglebar">
<div class="ha-letterheader"> <div class="ha-letterheader">
@await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", Model.MetaData) @await Html.PartialAsync("/Views/Shared/_LetterHead.cshtml", Model.MetaData)
<div class="ha-letterheadernav"> <div class="ha-letterheadernav">
<div class="ha-lettertabs"> <div class="ha-lettertabs">
@if (Model.ParsedText != null && !String.IsNullOrWhiteSpace(Model.ParsedText))
{
<a class="" id="ha-lettertextbtn">Brieftext</a> <a class="" id="ha-lettertextbtn">Brieftext</a>
<a class="ha-marginalsbtn" id="ha-marginalsbtn">Stellenkommentar</a> @if (Model.ParsedMarginals != null)
{
<a class="ha-marginalsbtn " id="ha-marginalsbtn">Stellenkommentar</a>
}
}
<a class="" id="ha-additionsbtn">Überlieferung & Textkritik</a> <a class="" id="ha-additionsbtn">Überlieferung & Textkritik</a>
<a class="">PDF</a> <a class="">PDF</a>
</div> </div>
@@ -37,15 +47,16 @@
</div> </div>
</div> </div>
<div class="ha-letterbody" id="ha-letterbody">
<div class="ha-lettertext" id="ha-lettertext"> <div class="ha-letterbody " id="ha-letterbody">
@if (Model.ParsedText != null) <div class="ha-lettertext @minwidth" id="ha-lettertext">
{
<div class="ha-linecount ha-firstline"> <div class="ha-linecount ha-firstline">
@if (Model.MetaData.ParsedZHString != null) { @if (Model.MetaData.ParsedZHString != null)
{
<span>@Html.Raw(Model.MetaData.ParsedZHString)</span> <span>@Html.Raw(Model.MetaData.ParsedZHString)</span>
} }
else { else
{
<div class="ha-tooltip"> <div class="ha-tooltip">
<div class="ha-pill"> <div class="ha-pill">
<span>Neu</span> <span>Neu</span>
@@ -54,14 +65,15 @@
} }
</div> </div>
@Html.Raw(@Model.ParsedText) @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> </div>
<div class="ha-marginals" id="ha-marginals">
@if (Model.ParsedMarginals != null) @if (Model.ParsedMarginals != null)
{ {
<div class="ha-marginals " id="ha-marginals">
<table> <table>
@foreach (var marginal in Model.ParsedMarginals) @foreach (var marginal in Model.ParsedMarginals)
{ {
<tr> <tr>
@@ -70,9 +82,8 @@
</tr> </tr>
} }
</table> </table>
}
</div> </div>
}
<div class="ha-additions" id="ha-additions"> <div class="ha-additions" id="ha-additions">
@if (Model.ParsedTradition != null) @if (Model.ParsedTradition != null)
@@ -91,7 +102,10 @@
<tr class="ha-handentry"> <tr class="ha-handentry">
<td> <td>
@* Not beautiful, but here's whitespace in between otherwise *@ @* 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> <div class="ha-handfrom">@hand.Item1</div>@if (!String.IsNullOrEmpty(hand.Item2))
{
<div
class="ha-handto">@hand.Item2</div>
} }
</td> </td>
<td class="ha-handperson">@hand.Item3</td> <td class="ha-handperson">@hand.Item3</td>
@@ -117,7 +131,10 @@
{ {
<tr> <tr>
<td class="ha-editfromto"> <td class="ha-editfromto">
<div class="ha-editfrom">@edit.Item1</div>@if (!String.IsNullOrEmpty(edit.Item2)) {<div class="ha-editto">@edit.Item2</div> <div class="ha-editfrom">@edit.Item1</div>@if (!String.IsNullOrEmpty(edit.Item2))
{
<div
class="ha-editto">@edit.Item2</div>
} }
</td> </td>
<td class="ha-editreference"> <td class="ha-editreference">

View File

@@ -12,6 +12,7 @@
<div class="ha-metadatadate"> <div class="ha-metadatadate">
@Model.Meta.Date @Model.Meta.Date
</div> </div>
@if (Model.HasText) {
@if (Model.ParsedZHString != null && Model.ShowZHData) { @if (Model.ParsedZHString != null && Model.ShowZHData) {
<div class="ha-tooltip"> <div class="ha-tooltip">
<div class="ha-pill"> <div class="ha-pill">
@@ -90,8 +91,10 @@
</div> </div>
</div> </div>
} }
}
</div> </div>
<div class="ha-metadatapersons"> <div class="ha-metadatapersons">
@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>@Model.ParsedSenders</span>
<div class="ha-tooltip"> <div class="ha-tooltip">
@@ -105,7 +108,9 @@
else { else {
<span>@Model.ParsedSenders → @Model.ParsedReceivers</span> <span>@Model.ParsedSenders → @Model.ParsedReceivers</span>
} }
}
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1364,6 +1364,7 @@ body {
.ha-lettertext { .ha-lettertext {
position: relative; position: relative;
margin-left: 1rem; margin-left: 1rem;
max-width: 38rem;
--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: 1rem; padding-left: 1rem;
@@ -1383,6 +1384,22 @@ body {
} }
} }
@media (min-width: 1190px) {
.ha-lettertext {
max-width: 45rem;
}
}
.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;
@@ -1495,8 +1512,7 @@ body {
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox { .ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
position: absolute; position: absolute;
right: -21rem; right: -20rem;
margin-right: 1rem;
margin-top: 0.25rem; margin-top: 0.25rem;
display: none; display: none;
width: 19rem; width: 19rem;
@@ -1526,8 +1542,8 @@ body {
@media (min-width: 1190px) { @media (min-width: 1190px) {
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox { .ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
right: -28rem; right: -26rem;
width: 24rem; width: 23rem;
} }
} }
@@ -1800,8 +1816,7 @@ body {
.ha-lettertext .ha-marginalbox { .ha-lettertext .ha-marginalbox {
position: absolute; position: absolute;
right: -21rem; right: -20rem;
margin-right: 1rem;
margin-top: 0.25rem; margin-top: 0.25rem;
display: none; display: none;
width: 19rem; width: 19rem;
@@ -1831,8 +1846,8 @@ body {
@media (min-width: 1190px) { @media (min-width: 1190px) {
.ha-lettertext .ha-marginalbox { .ha-lettertext .ha-marginalbox {
right: -28rem; right: -26rem;
width: 24rem; width: 23rem;
} }
} }

View File

@@ -486,7 +486,11 @@
} }
.ha-lettertext { .ha-lettertext {
@apply 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 {
@@ -542,7 +546,7 @@
} }
.ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox { .ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox {
@apply absolute -right-[21rem] desktop:-right-[28rem] w-[19rem] desktop:w-[24rem] text-sm border-l-2 border-slate-300 leading-tight pl-2 bg-slate-50 mr-4 pr-1 hyphenate mt-1 rounded-sm font-sans hidden md:flex flex-wrap; @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 { .ha-additions .ha-tradition .ha-tradzhtext .ha-marginalbox .ha-marginal {
@@ -689,7 +693,7 @@
} }
.ha-lettertext .ha-marginalbox { .ha-lettertext .ha-marginalbox {
@apply absolute -right-[21rem] desktop:-right-[28rem] w-[19rem] desktop:w-[24rem] text-sm border-l-2 border-slate-300 leading-tight pl-2 bg-slate-50 mr-4 pr-1 hyphenate mt-1 rounded-sm font-sans hidden md:flex flex-wrap; @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-lettertext .ha-marginalbox .ha-marginal { .ha-lettertext .ha-marginalbox .ha-marginal {

View File

@@ -157,22 +157,6 @@ const overlappingcollapsebox = function (selector, hoverfunction, parentbox) {
collapsebox(clientrects[i][0], newlength); collapsebox(clientrects[i][0], newlength);
addbuttoncaollapsebox(clientrects[i][0], newlength, hoverfunction); addbuttoncaollapsebox(clientrects[i][0], newlength, hoverfunction);
} }
} else {
if (boundigparent !== null) {
let overlap = clientrects[i][1].bottom - boundigparent.bottom;
console.log(clientrects[i][0]);
console.log(pb);
console.log(clientrects[i][1].bottom, boundigparent.bottom);
console.log(overlap);
if (overlap >= 0) {
let newlength = clientrects[i][1].height - overlap;
console.log(newlength);
let remainder = newlength % lineheight;
newlength = newlength - remainder;
collapsebox(clientrects[i][0], newlength);
addbuttoncaollapsebox(clientrects[i][0], newlength, hoverfunction);
}
}
} }
} }
}; };
@@ -295,15 +279,16 @@ window.addEventListener("load", function () {
// Letter View: Show / Hide Tabs // Letter View: Show / Hide Tabs
let buttonlist = ["ha-lettertextbtn", "ha-additionsbtn", "ha-marginalsbtn"]; let buttonlist = ["ha-lettertextbtn", "ha-additionsbtn", "ha-marginalsbtn"];
let divlist = ["ha-lettertext", "ha-additions", "ha-marginals"]; let divlist = ["ha-lettertext", "ha-additions", "ha-marginals"];
showhidebutton(
"ha-lettertextbtn", if (this.document.getElementById("ha-lettertextbtn") !== null) {
"ha-lettertext", showhidebutton("ha-lettertextbtn", "ha-lettertext", buttonlist, divlist, false);
buttonlist,
divlist,
false
);
showhidebutton("ha-additionsbtn", "ha-additions", buttonlist, divlist, true); showhidebutton("ha-additionsbtn", "ha-additions", buttonlist, divlist, true);
showhidebutton("ha-marginalsbtn", "ha-marginals", 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);
}
// Theme: Get saved theme from memory and check the box accordingly // Theme: Get saved theme from memory and check the box accordingly
// Register theme toggler // Register theme toggler