mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 17:25:32 +00:00
Added a lot of stuff
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
})};
|
})};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)};
|
)};
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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">
|
||||||
<a class="" id="ha-lettertextbtn">Brieftext</a>
|
@if (Model.ParsedText != null && !String.IsNullOrWhiteSpace(Model.ParsedText))
|
||||||
<a class="ha-marginalsbtn" id="ha-marginalsbtn">Stellenkommentar</a>
|
{
|
||||||
|
<a class="" id="ha-lettertextbtn">Brieftext</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,31 +47,33 @@
|
|||||||
</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-pill">
|
<div class="ha-tooltip">
|
||||||
<span>Neu</span>
|
<div class="ha-pill">
|
||||||
</div>
|
<span>Neu</span>
|
||||||
</div>
|
</div>
|
||||||
}
|
</div>
|
||||||
</div>
|
}
|
||||||
@Html.Raw(@Model.ParsedText)
|
</div>
|
||||||
}
|
@Html.Raw(@Model.ParsedText)
|
||||||
|
@* It's not beautiful but it's a hack to keep the last comment within parent element boundaries: *@
|
||||||
|
<br>
|
||||||
|
<div class="ha-marginalbox"></div>
|
||||||
</div>
|
</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)
|
||||||
@@ -90,8 +101,11 @@
|
|||||||
{
|
{
|
||||||
<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">
|
||||||
|
|||||||
@@ -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,22 +91,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="ha-metadatapersons">
|
<div class="ha-metadatapersons">
|
||||||
@if (Model.Meta.isDraft == HaDocument.Models.OptionalBool.True) {
|
@if (!String.IsNullOrWhiteSpace(Model.ParsedReceivers)) {
|
||||||
<span>@Model.ParsedSenders</span>
|
@if (Model.Meta.isDraft == HaDocument.Models.OptionalBool.True) {
|
||||||
<div class="ha-tooltip">
|
<span>@Model.ParsedSenders</span>
|
||||||
↛
|
<div class="ha-tooltip">
|
||||||
<div class="ha-tooltiptext" style="bottom: 100%;">
|
↛
|
||||||
Entwurf
|
<div class="ha-tooltiptext" style="bottom: 100%;">
|
||||||
|
Entwurf
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<span>@Model.ParsedReceivers</span>
|
||||||
<span>@Model.ParsedReceivers</span>
|
}
|
||||||
}
|
else {
|
||||||
else {
|
<span>@Model.ParsedSenders → @Model.ParsedReceivers</span>
|
||||||
<span>@Model.ParsedSenders → @Model.ParsedReceivers</span>
|
}
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
showhidebutton("ha-additionsbtn", "ha-additions", buttonlist, divlist, true);
|
||||||
divlist,
|
showhidebutton("ha-marginalsbtn", "ha-marginals", buttonlist, divlist, true);
|
||||||
false
|
} else {
|
||||||
);
|
showhidebutton("ha-lettertextbtn", "ha-lettertext", buttonlist, divlist, true);
|
||||||
showhidebutton("ha-additionsbtn", "ha-additions", buttonlist, divlist, true);
|
showhidebutton("ha-additionsbtn", "ha-additions", buttonlist, divlist, false);
|
||||||
showhidebutton("ha-marginalsbtn", "ha-marginals", buttonlist, divlist, true);
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user