mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 09:15:33 +00:00
New Font, Refactor of Layout, Expanded <link> Tags on search
This commit is contained in:
@@ -32,7 +32,7 @@ public class SucheController : Controller {
|
|||||||
if (String.IsNullOrWhiteSpace(search))
|
if (String.IsNullOrWhiteSpace(search))
|
||||||
return _paginateSendLetters(lib, page, search, SearchResultType.InvalidSearchTerm, null, null);
|
return _paginateSendLetters(lib, page, search, SearchResultType.InvalidSearchTerm, null, null);
|
||||||
search = search.Trim();
|
search = search.Trim();
|
||||||
var res = _xmlService.SearchCollection("letters", search, _readerService);
|
var res = _xmlService.SearchCollection("letters", search, _readerService, null);
|
||||||
if (res == null || !res.Any())
|
if (res == null || !res.Any())
|
||||||
return _paginateSendLetters(lib, page, search, SearchResultType.NotFound, null, null);
|
return _paginateSendLetters(lib, page, search, SearchResultType.NotFound, null, null);
|
||||||
var ret = res.ToDictionary(
|
var ret = res.ToDictionary(
|
||||||
@@ -52,9 +52,9 @@ public class SucheController : Controller {
|
|||||||
|
|
||||||
List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? res = null;
|
List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? res = null;
|
||||||
if (page == 0)
|
if (page == 0)
|
||||||
res = _xmlService.SearchCollection("register-comments", search, _readerService);
|
res = _xmlService.SearchCollection("register-comments", search, _readerService, lib);
|
||||||
if (page == 1)
|
if (page == 1)
|
||||||
res = _xmlService.SearchCollection("forschung-comments", search, _readerService);
|
res = _xmlService.SearchCollection("forschung-comments", search, _readerService, lib);
|
||||||
if (res == null || !res.Any())
|
if (res == null || !res.Any())
|
||||||
return _paginateSendRegister(lib, page, search, SearchResultType.NotFound, null);
|
return _paginateSendRegister(lib, page, search, SearchResultType.NotFound, null);
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ public class SucheController : Controller {
|
|||||||
string activeSearch,
|
string activeSearch,
|
||||||
SearchResultType SRT,
|
SearchResultType SRT,
|
||||||
List<CommentModel> comments) {
|
List<CommentModel> comments) {
|
||||||
var model = new SucheViewModel("register", SRT, page, new List<string>() { "Allgmeines Register", "Forschungsbibliographie" }, activeSearch, null, null, comments);
|
var model = new SucheViewModel("register", SRT, page, new List<string>() { "Allgemeines Register", "Forschungsbibliographie" }, activeSearch, null, null, comments);
|
||||||
return View("~/Views/HKB/Dynamic/Suche.cshtml", model);
|
return View("~/Views/HKB/Dynamic/Suche.cshtml", model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class LinkHelper {
|
|||||||
_sb.Append(HTMLHelpers.TagHelpers.CreateElement("a", REFLINKCLASS, "/HKB/Register/Bibelstellen/" + linkloc[0] + linkloc[1] + "#" + comment.Index));
|
_sb.Append(HTMLHelpers.TagHelpers.CreateElement("a", REFLINKCLASS, "/HKB/Register/Bibelstellen/" + linkloc[0] + linkloc[1] + "#" + comment.Index));
|
||||||
else if (comment.Type == "forschung")
|
else if (comment.Type == "forschung")
|
||||||
_sb.Append(HTMLHelpers.TagHelpers.CreateElement("a", REFLINKCLASS, "/HKB/Register/Forschung/" + linkloc[0] + "#" + comment.Index));
|
_sb.Append(HTMLHelpers.TagHelpers.CreateElement("a", REFLINKCLASS, "/HKB/Register/Forschung/" + linkloc[0] + "#" + comment.Index));
|
||||||
_sb.Append(GetLemmaString(tag, comment));
|
_sb.Append(GetLemmaString(tag, comment, _lib, _followlinksinchildren));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tag.IsEmpty && _followlinksinthis) _sb.Append(HTMLHelpers.TagHelpers.CreateEndElement("a"));
|
if (tag.IsEmpty && _followlinksinthis) _sb.Append(HTMLHelpers.TagHelpers.CreateEndElement("a"));
|
||||||
@@ -93,12 +93,12 @@ public class LinkHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetLemmaString(Tag tag, Comment comment) {
|
public static string GetLemmaString(Tag tag, Comment comment, ILibrary lib, bool followlinksinchildren) {
|
||||||
if (!tag.Values.ContainsKey("linktext") || tag.Values["linktext"] == "true") {
|
if (!tag.Values.ContainsKey("linktext") || tag["linktext"] == "true") {
|
||||||
var linkState = new LinkState();
|
var linkState = new LinkState();
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
var subreader = new UTF8StringReader(comment.Lemma);
|
var subreader = new UTF8StringReader(comment.Lemma);
|
||||||
new LinkHelper(_lib, subreader, sb, _followlinksinchildren, _followlinksinchildren);
|
new LinkHelper(lib, subreader, sb, followlinksinchildren, followlinksinchildren);
|
||||||
new HTMLParser.XMLHelper<LinkState>(linkState, subreader, sb, LinkRules.OTagRules, null, LinkRules.CTagRules, LinkRules.TextRules, null);
|
new HTMLParser.XMLHelper<LinkState>(linkState, subreader, sb, LinkRules.OTagRules, null, LinkRules.CTagRules, LinkRules.TextRules, null);
|
||||||
subreader.Read();
|
subreader.Read();
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
|
|||||||
@@ -71,14 +71,15 @@ TODO High Contrast Mode manchmal komisch
|
|||||||
TODO Kein High Contrast Mode für den Upload
|
TODO Kein High Contrast Mode für den Upload
|
||||||
TODO High Contrast Mode: Kursiv und ausgegraut (Herausgeberanmerkungen) schwer sichtbar
|
TODO High Contrast Mode: Kursiv und ausgegraut (Herausgeberanmerkungen) schwer sichtbar
|
||||||
TODO 400: Traditions nicht genug Abstand
|
TODO 400: Traditions nicht genug Abstand
|
||||||
|
TODO Word-wrap before align, tabs
|
||||||
|
|
||||||
Technische Details:
|
Technische Details:
|
||||||
TODO Move ILibrary -> neuer Parser
|
TODO Move ILibrary -> neuer Parser
|
||||||
TODO Word-wrap before align, tabs
|
|
||||||
TODO Hochstellungen nach mediaevalziffern
|
TODO Hochstellungen nach mediaevalziffern
|
||||||
TODO Syntax-Check
|
TODO Syntax-Check
|
||||||
TODO Datum im Footer Edierdatum der Hamann-Datei
|
TODO Datum im Footer Edierdatum der Hamann-Datei
|
||||||
TODO Fußnoten in Editionsgeschichte als Marginalkommentare
|
TODO Fußnoten in Editionsgeschichte als Marginalkommentare
|
||||||
|
TODO Navigation auf die Startseite / von Kontakt
|
||||||
|
|
||||||
Vor dem internen release:
|
Vor dem internen release:
|
||||||
TODO Jahreszahlen auf der Startseite
|
TODO Jahreszahlen auf der Startseite
|
||||||
@@ -95,5 +96,7 @@ tabellen ok, ausser 939, 806 falsch geschachtelt: dort sind htabs geschachtelt
|
|||||||
Fehlende Seiten auf HKW
|
Fehlende Seiten auf HKW
|
||||||
vmtl bei sendern und empfängern
|
vmtl bei sendern und empfängern
|
||||||
|
|
||||||
|
theophrast-abschilderungen: Link mit linktext
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
namespace HaWeb.SearchHelpers;
|
namespace HaWeb.SearchHelpers;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
using HaDocument.Models;
|
||||||
|
using HaDocument.Interfaces;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.LineXMLHelper<SearchState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.LineXMLHelper<SearchState>>)>;
|
using TagFuncList = List<(Func<HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.LineXMLHelper<SearchState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Tag, HaWeb.HTMLParser.LineXMLHelper<SearchState>>)>;
|
||||||
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.LineXMLHelper<SearchState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.LineXMLHelper<SearchState>>)>;
|
using TextFuncList = List<(Func<HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.LineXMLHelper<SearchState>, bool>, Action<System.Text.StringBuilder, HaXMLReader.EvArgs.Text, HaWeb.HTMLParser.LineXMLHelper<SearchState>>)>;
|
||||||
@@ -10,6 +13,42 @@ using WhitespaceFuncList = List<(Func<HaXMLReader.EvArgs.Whitespace, HaWeb.HTMLP
|
|||||||
public class SearchRules {
|
public class SearchRules {
|
||||||
public static readonly TagFuncList OTagRules = new TagFuncList() {
|
public static readonly TagFuncList OTagRules = new TagFuncList() {
|
||||||
( (x, _) => x.Name.ToLower() == "kommentar" || x.Name.ToLower() == "subsection", (_, tag, reader) => reader.State.CurrentIdentifier = tag["id"]),
|
( (x, _) => x.Name.ToLower() == "kommentar" || x.Name.ToLower() == "subsection", (_, tag, reader) => reader.State.CurrentIdentifier = tag["id"]),
|
||||||
|
( (x, reader) => (x.Name.ToLower() == "link" && reader.State.Lib != null), (sb, tag, reader) => {
|
||||||
|
// LINKTEXT NEVER GETS TO TRUE
|
||||||
|
Comment? comment = null;
|
||||||
|
if (tag.Values.ContainsKey("subref") && reader.State.Lib.SubCommentsByID.ContainsKey(tag["subref"]))
|
||||||
|
comment = reader.State.Lib.SubCommentsByID[tag["subref"]];
|
||||||
|
else if (tag.Values.ContainsKey("ref"))
|
||||||
|
if (reader.State.Lib.Comments.ContainsKey(tag["ref"]))
|
||||||
|
comment = reader.State.Lib.Comments[tag["ref"]];
|
||||||
|
else if (reader.State.Lib.SubCommentsByID.ContainsKey(tag["ref"]))
|
||||||
|
comment = reader.State.Lib.SubCommentsByID[tag["ref"]];
|
||||||
|
if (comment != null) {
|
||||||
|
var t = String.Empty;
|
||||||
|
var sw = reader.State.SearchWord;
|
||||||
|
if (!String.IsNullOrWhiteSpace(comment.Lemma))
|
||||||
|
t = XElement.Parse(comment.Lemma).Value;
|
||||||
|
if (reader.State.Normalize)
|
||||||
|
t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t);
|
||||||
|
if (tag["linktext"] != "false") {
|
||||||
|
sb.Append(t.ToUpperInvariant());
|
||||||
|
if (sb.Length >= sw.Length) {
|
||||||
|
if (sb.ToString().Contains(sw)) {
|
||||||
|
if (reader.State.Results == null)
|
||||||
|
reader.State.Results = new List<(string Page, string Line, string Identifier)>();
|
||||||
|
reader.State.Results.Add((reader.CurrentPage, reader.CurrentLine, reader.State.CurrentIdentifier));
|
||||||
|
}
|
||||||
|
sb.Remove(0, sb.Length - sw.Length);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (t.ToUpperInvariant().Contains(sw)) {
|
||||||
|
if (reader.State.Results == null)
|
||||||
|
reader.State.Results = new List<(string Page, string Line, string Identifier)>();
|
||||||
|
reader.State.Results.Add((reader.CurrentPage, reader.CurrentLine, reader.State.CurrentIdentifier));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
public static readonly TextFuncList TextRules = new TextFuncList() {
|
public static readonly TextFuncList TextRules = new TextFuncList() {
|
||||||
@@ -17,10 +56,10 @@ public class SearchRules {
|
|||||||
var t = text.Value;
|
var t = text.Value;
|
||||||
if (reader.State.Normalize)
|
if (reader.State.Normalize)
|
||||||
t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t);
|
t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t);
|
||||||
sb.Append(t);
|
sb.Append(t.ToUpperInvariant());
|
||||||
var sw = reader.State.SearchWord;
|
var sw = reader.State.SearchWord;
|
||||||
if (sb.Length >= sw.Length) {
|
if (sb.Length >= sw.Length) {
|
||||||
if (sb.ToString().ToUpperInvariant().Contains(sw)) {
|
if (sb.ToString().Contains(sw)) {
|
||||||
if (reader.State.Results == null)
|
if (reader.State.Results == null)
|
||||||
reader.State.Results = new List<(string Page, string Line, string Identifier)>();
|
reader.State.Results = new List<(string Page, string Line, string Identifier)>();
|
||||||
reader.State.Results.Add((reader.CurrentPage, reader.CurrentLine, reader.State.CurrentIdentifier));
|
reader.State.Results.Add((reader.CurrentPage, reader.CurrentLine, reader.State.CurrentIdentifier));
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
namespace HaWeb.SearchHelpers;
|
namespace HaWeb.SearchHelpers;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using HaDocument.Interfaces;
|
||||||
|
|
||||||
public class SearchState : HaWeb.HTMLParser.IState {
|
public class SearchState : HaWeb.HTMLParser.IState {
|
||||||
internal string SearchWord;
|
internal string SearchWord;
|
||||||
internal string? CurrentIdentifier;
|
internal string? CurrentIdentifier;
|
||||||
|
internal ILibrary? Lib;
|
||||||
internal bool Normalize;
|
internal bool Normalize;
|
||||||
internal List<(string Page, string Line, string Identifier)>? Results;
|
internal List<(string Page, string Line, string Identifier)>? Results;
|
||||||
|
|
||||||
public SearchState(string searchword, bool normalize = false) {
|
public SearchState(string searchword, bool normalize = false, ILibrary? lib = null) {
|
||||||
|
Lib = lib;
|
||||||
Normalize = normalize;
|
Normalize = normalize;
|
||||||
SearchWord = searchword;
|
SearchWord = searchword;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,14 +15,19 @@
|
|||||||
@if (Model.ActiveSearch != null) {
|
@if (Model.ActiveSearch != null) {
|
||||||
<div class="ha-activefilterinfo">
|
<div class="ha-activefilterinfo">
|
||||||
@if (Model.SearchType == "letters") {
|
@if (Model.SearchType == "letters") {
|
||||||
<span>Biefe, die »@Model.ActiveSearch« enthalten. </span><br>
|
<span><span class="">Briefe</span>, die »@Model.ActiveSearch« enthalten. </span><br>
|
||||||
}
|
}
|
||||||
@if (Model.SearchType == "register") {
|
@if (Model.SearchType == "register") {
|
||||||
<span>Registereinträge, die »@Model.ActiveSearch« enthalten. </span><br>
|
@if (Model.ActivePage == 0) {
|
||||||
<a class="ha-reversefilter" asp-controller="Register" asp-action="Allgemein">← Registerübersicht</a><span> / </span>
|
<span><span class="">Registereinträge</span>, die »@Model.ActiveSearch« enthalten. </span><br>
|
||||||
|
<a class="ha-reversefilter" asp-controller="Register" asp-action="Allgemein">← Registerübersicht</a><span> / </span>
|
||||||
|
} else {
|
||||||
|
<span><span class="">Bibliografische Einträge</span>, die »@Model.ActiveSearch« enthalten. </span><br>
|
||||||
|
<a class="ha-reversefilter" asp-controller="Register" asp-action="Forschung">← Forschungsbibliographie</a><span> / </span>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@if (Model.SearchType == "marginals") {
|
@if (Model.SearchType == "marginals") {
|
||||||
<span>Stellenkommentare, die »@Model.ActiveSearch« enthalten. </span><br>
|
<span><span class="">Stellenkommentare</span>, die »@Model.ActiveSearch« enthalten. </span><br>
|
||||||
}
|
}
|
||||||
<a class="ha-reversefilter" asp-controller="Index" asp-action="Index">← Briefübersicht</a>
|
<a class="ha-reversefilter" asp-controller="Index" asp-action="Index">← Briefübersicht</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -130,5 +135,16 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@if (Model.SearchResultType == SearchResultType.NotFound) {
|
||||||
|
<div class="ha-commentlist">
|
||||||
|
Keine Treffer für »@Model.ActiveSearch«.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (Model.SearchResultType == SearchResultType.InvalidSearchTerm) {
|
||||||
|
<div class="ha-commentlist">
|
||||||
|
»@Model.ActiveSearch« ist ein ungültiger Suchbegriff. Die Suche darf nicht leer sein und nicht ausschließlich aus Spatien bestehen.
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -49,6 +49,7 @@
|
|||||||
}
|
}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
@section JavaScript {
|
||||||
<script>
|
<script>
|
||||||
const USESubmit = async function (oFormElement, file = null) {
|
const USESubmit = async function (oFormElement, file = null) {
|
||||||
let fd = new FormData(oFormElement);
|
let fd = new FormData(oFormElement);
|
||||||
@@ -80,4 +81,5 @@
|
|||||||
document.getElementById("ha-filelistoutput").textContent = e;
|
document.getElementById("ha-filelistoutput").textContent = e;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
}
|
||||||
@@ -2,28 +2,7 @@
|
|||||||
<html lang="de" id="top">
|
<html lang="de" id="top">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
@await Html.PartialAsync("/Views/Shared/_Head.cshtml")
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta name="description" content="@ViewData["SEODescription"]">
|
|
||||||
|
|
||||||
<title>@ViewData["Title"]</title>
|
|
||||||
|
|
||||||
<!-- crossorigin is a workaround to prevent double downloading bugs in chrome -->
|
|
||||||
<!-- also, the graphite versions of the font are available for use:
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_R_G.ttf" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinBiolinum_R_G.ttf" as="font" crossorigin/>
|
|
||||||
-->
|
|
||||||
<link rel="preload" href="/css/output.css" as="style" asp-append-version="true"/>
|
|
||||||
<link rel="preload" href="/img/subtlenet2.png" as="image" />
|
|
||||||
<link rel="preload" href="/fonts/LinBiolinum_R.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_R.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_RI.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_RB.woff" as="font" crossorigin/>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/css/output.css" asp-append-version="true" />
|
|
||||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="w-full ">
|
<body class="w-full ">
|
||||||
@@ -38,17 +17,8 @@
|
|||||||
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="ha-scrollbutton" id="ha-scrollbutton">
|
@await Html.PartialAsync("/Views/Shared/_ScrollButton.cshtml")
|
||||||
<svg class="ha-scrollbuttonarrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path strokeLinecap="round" strokeLinejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
@await RenderSectionAsync("JavaScript", false)
|
||||||
@RenderSection("Scripts", required: false)
|
|
||||||
<environment exclude="Development">
|
|
||||||
@await Html.PartialAsync("/Views/Shared/_Javascript.cshtml")
|
|
||||||
</environment>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
@{
|
@{
|
||||||
var showCredits = ViewData["showCredits"] == "true" ? true : false;
|
var showCredits = ViewData["showCredits"] == "true" ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
<header class="sticky w-100 font-serif mb-6">
|
<header class="sticky w-100 font-serif mb-6">
|
||||||
<nav class="flex flex-row w-100 bg-slate-50 border-t-[5px] border-gray-300 dark:shadow-xl dark:border-gray-900 py-3 px-3 desktop:px-8 flex-wrap">
|
<nav class="flex flex-row w-100 bg-slate-50 border-t-[5px] border-gray-300 dark:shadow-xl dark:border-gray-900 py-3 px-3 desktop:px-8 flex-wrap">
|
||||||
<a asp-controller="Index" asp-action="Index" class="text-xl xl:text-3xl grow-0 shrink-0 text-black hover:text-black">
|
<a asp-controller="Index" asp-action="Index" class="text-xl xl:text-3xl grow-0 shrink-0 text-black hover:text-black">
|
||||||
@@ -30,7 +31,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="ha-topnav " id="ha-topnav">
|
<div class="ha-topnav " id="ha-topnav">
|
||||||
<a asp-controller="Index" asp-action="Index">
|
<a class="ha-active-default" asp-controller="Index" asp-action="Index">
|
||||||
Suche & Briefauswahl
|
Suche & Briefauswahl
|
||||||
</a>
|
</a>
|
||||||
<a asp-controller="Briefe" asp-action="Index">
|
<a asp-controller="Briefe" asp-action="Index">
|
||||||
@@ -60,10 +61,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@if(showCredits)
|
@* @if(showCredits)
|
||||||
{
|
{
|
||||||
<div class="desktop:block hidden w-100 bg-slate-50 dark:pt-2 dark:pb-2 dark:bg-slate-800 pb-3 px-3 desktop:px-8 overflow-hidden whitespace-nowrap text-ellipsis">
|
<div class="desktop:block hidden w-100 bg-slate-50 dark:pt-2 dark:pb-2 dark:bg-slate-800 pb-3 px-3 desktop:px-8 overflow-hidden whitespace-nowrap text-ellipsis">
|
||||||
<a href="/Edition/Mitwirkende">Hg. v. Leonard Keidel und Janina Reibold, auf Grundlage der Vorarbeiten Arthur Henkels, unter Mitarbeit von G. Babelotzky, K. Bucher, Ch. Großmann, C.F. Haak, L. Klopfer, J. Knüchel, I. Langkabel und S. Martens (Heidelberg 2020ff.)</a>
|
<a href="/Edition/Mitwirkende">Hg. v. Leonard Keidel und Janina Reibold, auf Grundlage der Vorarbeiten Arthur Henkels, unter Mitarbeit von G. Babelotzky, K. Bucher, Ch. Großmann, C.F. Haak, L. Klopfer, J. Knüchel, I. Langkabel und S. Martens (Heidelberg 2020ff.)</a>
|
||||||
</div>
|
</div>
|
||||||
}
|
} *@
|
||||||
</header>
|
</header>
|
||||||
@@ -2,28 +2,7 @@
|
|||||||
<html lang="de" id="top">
|
<html lang="de" id="top">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
@await Html.PartialAsync("/Views/Shared/_Head.cshtml")
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta name="description" content="@ViewData["SEODescription"]">
|
|
||||||
|
|
||||||
<title>@ViewData["Title"]</title>
|
|
||||||
|
|
||||||
<!-- crossorigin is a workaround to prevent double downloading bugs in chrome -->
|
|
||||||
<!-- also, the graphite versions of the font are available for use:
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_R_G.ttf" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinBiolinum_R_G.ttf" as="font" crossorigin/>
|
|
||||||
-->
|
|
||||||
<link rel="preload" href="/css/output.css" as="style" asp-append-version="true"/>
|
|
||||||
<link rel="preload" href="/img/subtlenet2.png" as="image" />
|
|
||||||
<link rel="preload" href="/fonts/LinBiolinum_R.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_R.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_RI.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_RB.woff" as="font" crossorigin/>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/css/output.css" asp-append-version="true" />
|
|
||||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="w-full ">
|
<body class="w-full ">
|
||||||
@@ -38,17 +17,8 @@
|
|||||||
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="ha-scrollbutton" id="ha-scrollbutton">
|
@await Html.PartialAsync("/Views/Shared/_ScrollButton.cshtml")
|
||||||
<svg class="ha-scrollbuttonarrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path strokeLinecap="round" strokeLinejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
@await RenderSectionAsync("JavaScript", false)
|
||||||
@RenderSection("Scripts", required: false)
|
|
||||||
<environment exclude="Development">
|
|
||||||
@await Html.PartialAsync("/Views/Shared/_Javascript.cshtml")
|
|
||||||
</environment>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
26
HaWeb/Views/Shared/_Head.cshtml
Normal file
26
HaWeb/Views/Shared/_Head.cshtml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="description" content="@ViewData["SEODescription"]">
|
||||||
|
|
||||||
|
<title>@ViewData["Title"]</title>
|
||||||
|
|
||||||
|
<!-- crossorigin is a workaround to prevent double downloading bugs in chrome -->
|
||||||
|
<!-- also, the graphite versions of the font are available for use:
|
||||||
|
<link rel="preload" href="/fonts/LinLibertine_R_G.ttf" as="font" crossorigin/>
|
||||||
|
<link rel="preload" href="/fonts/LinBiolinum_R_G.ttf" as="font" crossorigin/>
|
||||||
|
-->
|
||||||
|
<link rel="preload" href="/css/output.css" as="style" asp-append-version="true"/>
|
||||||
|
<link rel="preload" href="/img/subtlenet2.png" as="image" />
|
||||||
|
<link rel="preload" href="/fonts/LinBiolinum_Rah.ttf" as="font" crossorigin/>
|
||||||
|
<link rel="preload" href="/fonts/LinLibertine_Rah.ttf" as="font" crossorigin/>
|
||||||
|
<link rel="preload" href="/fonts/LinLibertine_RIah.ttf" as="font" crossorigin/>
|
||||||
|
<link rel="preload" href="/fonts/LinLibertine_RBah.ttf" as="font" crossorigin/>
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/css/output.css" asp-append-version="true" />
|
||||||
|
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<environment exclude="Development">
|
||||||
|
@await Html.PartialAsync("/Views/Shared/_Javascript.cshtml")
|
||||||
|
</environment>
|
||||||
@@ -1,29 +1,8 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="de" id="top">
|
<html lang="de" id="top">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
@await Html.PartialAsync("/Views/Shared/_Head.cshtml")
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
@* TODO: Description für die Startseite *@
|
|
||||||
<meta name="description" content="">
|
|
||||||
|
|
||||||
<title>@ViewData["Title"]</title>
|
|
||||||
|
|
||||||
<!-- crossorigin is a workaround to prevent double downloading bugs in chrome -->
|
|
||||||
<!-- also, the graphite versions of the font are available for use:
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_R_G.ttf" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinBiolinum_R_G.ttf" as="font" crossorigin/>
|
|
||||||
-->
|
|
||||||
<link rel="preload" href="/css/output.css" as="style" asp-append-version="true"/>
|
|
||||||
<link rel="preload" href="/img/subtlenet2.png" as="image" />
|
|
||||||
<link rel="preload" href="/fonts/LinBiolinum_R.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_R.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_RI.woff" as="font" crossorigin/>
|
|
||||||
<link rel="preload" href="/fonts/LinLibertine_RB.woff" as="font" crossorigin/>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="/css/output.css" asp-append-version="true" />
|
|
||||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="w-full ">
|
<body class="w-full ">
|
||||||
@@ -50,17 +29,8 @@
|
|||||||
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
@await Html.PartialAsync("/Views/Shared/_Footer.cshtml")
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="ha-scrollbutton" id="ha-scrollbutton">
|
@await Html.PartialAsync("/Views/Shared/_ScrollButton.cshtml")
|
||||||
<svg class="ha-scrollbuttonarrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path strokeLinecap="round" strokeLinejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
@await RenderSectionAsync("JavaScript", false)
|
||||||
@RenderSection("Scripts", required: false)
|
|
||||||
<environment exclude="Development">
|
|
||||||
@await Html.PartialAsync("/Views/Shared/_Javascript.cshtml")
|
|
||||||
</environment>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
5
HaWeb/Views/Shared/_ScrollButton.cshtml
Normal file
5
HaWeb/Views/Shared/_ScrollButton.cshtml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<a class="ha-scrollbutton" id="ha-scrollbutton">
|
||||||
|
<svg class="ha-scrollbuttonarrow" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
@@ -2,6 +2,7 @@ namespace HaWeb.XMLParser;
|
|||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||||
using HaWeb.Models;
|
using HaWeb.Models;
|
||||||
|
using HaDocument.Interfaces;
|
||||||
using HaXMLReader.Interfaces;
|
using HaXMLReader.Interfaces;
|
||||||
|
|
||||||
public interface IXMLService {
|
public interface IXMLService {
|
||||||
@@ -19,5 +20,5 @@ public interface IXMLService {
|
|||||||
public void UnUseProduction();
|
public void UnUseProduction();
|
||||||
public void SetInProduction();
|
public void SetInProduction();
|
||||||
public void SetInProduction(XDocument document);
|
public void SetInProduction(XDocument document);
|
||||||
public List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? SearchCollection(string collection, string searchword, IReaderService reader);
|
public List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? SearchCollection(string collection, string searchword, IReaderService reader, ILibrary? lib);
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ using System.Collections.Concurrent;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using HaXMLReader.Interfaces;
|
using HaXMLReader.Interfaces;
|
||||||
|
using HaDocument.Interfaces;
|
||||||
|
|
||||||
public class XMLService : IXMLService {
|
public class XMLService : IXMLService {
|
||||||
private Dictionary<string, FileList?>? _Used;
|
private Dictionary<string, FileList?>? _Used;
|
||||||
@@ -112,16 +113,41 @@ public class XMLService : IXMLService {
|
|||||||
_collectedProduction = ret.ToDictionary(x => x.Key, y => y.Value);
|
_collectedProduction = ret.ToDictionary(x => x.Key, y => y.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? SearchCollection(string collection, string searchword, IReaderService reader) {
|
public List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? SearchCollection(string collection, string searchword, IReaderService reader, ILibrary? lib = null) {
|
||||||
if (!_collectedProduction.ContainsKey(collection)) return null;
|
if (!_collectedProduction.ContainsKey(collection)) return null;
|
||||||
var searchableObjects = _collectedProduction[collection].Items;
|
var searchableObjects = _collectedProduction[collection].Items;
|
||||||
var res = new ConcurrentBag<(string Index, List<(string Page, string Line, string preview, string identifier)> Results)>();
|
var res = new ConcurrentBag<(string Index, List<(string Page, string Line, string preview, string identifier)> Results)>();
|
||||||
var sw = StringHelpers.NormalizeWhiteSpace(searchword.Trim());
|
var sw = StringHelpers.NormalizeWhiteSpace(searchword.Trim());
|
||||||
|
|
||||||
|
// Non Parallel:
|
||||||
|
// foreach (var obj in searchableObjects) {
|
||||||
|
// if (obj.Value.SearchText != null) {
|
||||||
|
// var state = new SearchState(sw, false, lib);
|
||||||
|
// var rd = reader.RequestStringReader(obj.Value.SearchText);
|
||||||
|
// var parser = new HaWeb.HTMLParser.LineXMLHelper<SearchState>(state, rd, new StringBuilder(), SearchRules.OTagRules, null, null, SearchRules.TextRules, SearchRules.WhitespaceRules);
|
||||||
|
// rd.Read();
|
||||||
|
// if (state.Results != null)
|
||||||
|
// res.Add((
|
||||||
|
// obj.Value.Index,
|
||||||
|
// state.Results.Select(x => (
|
||||||
|
// x.Page,
|
||||||
|
// x.Line,
|
||||||
|
// parser.Lines != null ?
|
||||||
|
// parser.Lines
|
||||||
|
// .Where(y => y.Page == x.Page && y.Line == x.Line)
|
||||||
|
// .Select(x => x.Text)
|
||||||
|
// .FirstOrDefault(string.Empty)
|
||||||
|
// : "",
|
||||||
|
// x.Identifier
|
||||||
|
// )).ToList()));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
Parallel.ForEach(searchableObjects, (obj) => {
|
Parallel.ForEach(searchableObjects, (obj) => {
|
||||||
if (obj.Value.SearchText != null) {
|
if (obj.Value.SearchText != null) {
|
||||||
var state = new SearchState(sw);
|
var state = new SearchState(sw, false, lib);
|
||||||
var rd = reader.RequestStringReader(obj.Value.SearchText);
|
var rd = reader.RequestStringReader(obj.Value.SearchText);
|
||||||
var parser = new HaWeb.HTMLParser.LineXMLHelper<SearchState>(state, rd, new StringBuilder(), SearchRules.OTagRules, null, null, SearchRules.TextRules, SearchRules.WhitespaceRules);
|
var parser = new HaWeb.HTMLParser.LineXMLHelper<SearchState>(state, rd, new StringBuilder(), SearchRules.OTagRules, SearchRules.OTagRules, null, SearchRules.TextRules, SearchRules.WhitespaceRules);
|
||||||
rd.Read();
|
rd.Read();
|
||||||
if (state.Results != null)
|
if (state.Results != null)
|
||||||
res.Add((
|
res.Add((
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ module.exports = {
|
|||||||
mono: ['ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace', 'mono']
|
mono: ['ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace', 'mono']
|
||||||
},
|
},
|
||||||
fontSize: {
|
fontSize: {
|
||||||
xs: ['0.75rem', { lineHeight: '1rem' }],
|
xs: ['0.7rem', { lineHeight: '1rem' }],
|
||||||
sm: ['0.875rem', { lineHeight: '1.25rem' }],
|
sm: ['0.85rem', { lineHeight: '1.25rem' }],
|
||||||
base: ['1rem', { lineHeight: '1.5rem' }],
|
base: ['1rem', { lineHeight: '1.5rem' }],
|
||||||
lg: ['1.125rem', { lineHeight: '1.75rem' }],
|
lg: ['1.15rem', { lineHeight: '1.75rem' }],
|
||||||
xl: ['1.25rem', { lineHeight: '1.75rem' }],
|
xl: ['1.25rem', { lineHeight: '1.75rem' }],
|
||||||
'2xl': ['1.5rem', { lineHeight: '2rem' }],
|
'2xl': ['1.5rem', { lineHeight: '2rem' }],
|
||||||
'3xl': ['1.875rem', { lineHeight: '2.25rem' }],
|
'3xl': ['1.875rem', { lineHeight: '2.25rem' }],
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Biolinum";
|
font-family: "Biolinum";
|
||||||
src: url("../fonts/LinBiolinum_R.woff") format("woff");
|
src: url("../fonts/LinBiolinum_Rah.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Libertine";
|
font-family: "Libertine";
|
||||||
src: url("../fonts/LinLibertine_R.woff") format("woff");
|
src: url("../fonts/LinLibertine_Rah.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Biolinum";
|
font-family: "Biolinum";
|
||||||
src: url("../fonts/LinBiolinum_RI.woff") format("woff");
|
src: url("../fonts/LinBiolinum_RIah.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Biolinum";
|
font-family: "Biolinum";
|
||||||
src: url("../fonts/LinBiolinum_RB.woff") format("woff");
|
src: url("../fonts/LinBiolinum_RBah.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Libertine";
|
font-family: "Libertine";
|
||||||
src: url("../fonts/LinLibertine_RI.woff") format("woff");
|
src: url("../fonts/LinLibertine_RIah.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Libertine";
|
font-family: "Libertine";
|
||||||
src: url("../fonts/LinLibertine_RB.woff") format("woff");
|
src: url("../fonts/LinLibertine_RZah.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -123,7 +123,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ha-search .ha-searchbody {
|
.ha-search .ha-searchbody {
|
||||||
@apply pt-4 md:pr-[29rem] pb-9 md:pb-12 rounded-b-sm
|
@apply pt-4 md:pr-[24rem] pb-9 md:pb-12 rounded-b-sm
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-search .ha-searchbody .ha-letterlist {
|
.ha-search .ha-searchbody .ha-letterlist {
|
||||||
|
|||||||
@@ -53,10 +53,6 @@
|
|||||||
@apply text-base desktop:text-lg w-full h-full;
|
@apply text-base desktop:text-lg w-full h-full;
|
||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
|
||||||
@apply pointer-events-none
|
|
||||||
}
|
|
||||||
|
|
||||||
.hide {
|
.hide {
|
||||||
@apply !hidden
|
@apply !hidden
|
||||||
}
|
}
|
||||||
@@ -123,19 +119,16 @@
|
|||||||
@apply italic
|
@apply italic
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-sup,
|
.ha-sup:not(.ha-linecount *, .ha-linecount, .ha-marginalbox *, .ha-marginalbox, .ha-marginal, .ha-marginal *, .ha-btn-collapsed-box) {
|
||||||
.ha-sup *:not(.ha-linecount *, .ha-linecount, .ha-marginalbox *, .ha-marginalbox, .ha-marginal, .ha-marginal *, .ha-btn-collapsed-box) {
|
|
||||||
@apply relative -top-[0.3em] text-[80%]
|
@apply relative -top-[0.3em] text-[80%]
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: Something dooesnt work here */
|
/* TODO: Something dooesnt work here */
|
||||||
.ha-super,
|
.ha-super:not(.ha-linecount *, .ha-linecount, .ha-marginalbox *, .ha-marginalbox, .ha-marginal, .ha-marginal *, .ha-btn-collapsed-box) {
|
||||||
.ha-super *:not(.ha-linecount *, .ha-linecount, .ha-marginalbox *, .ha-marginalbox, .ha-marginal, .ha-marginal *, .ha-btn-collapsed-box) {
|
@apply numeric-normal relative text-xs leading-none align-baseline -top-[0.3em] inline-block
|
||||||
@apply numeric-normal relative text-xs leading-none align-baseline -top-[0.3em]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ha-sub,
|
.ha-sub:not(.ha-linecount *, .ha-linecount, .ha-marginalbox *, .ha-marginalbox, .ha-marginal, .ha-marginal *, .ha-btn-collapsed-box) {
|
||||||
.ha-sub *:not(.ha-linecount *, .ha-linecount, .ha-marginalbox *, .ha-marginalbox, .ha-marginal, .ha-marginal *, .ha-btn-collapsed-box) {
|
|
||||||
@apply relative text-xs leading-none align-baseline -bottom-[0.25em]
|
@apply relative text-xs leading-none align-baseline -bottom-[0.25em]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
HaWeb/wwwroot/fonts/LinBiolinum_Kah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinBiolinum_Kah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinBiolinum_RBah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinBiolinum_RBah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinBiolinum_RIah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinBiolinum_RIah.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinBiolinum_Rah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinBiolinum_Rah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_DRah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_DRah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_I.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_I.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_Mah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_Mah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_RBIah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_RBIah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_RBah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_RBah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_RIah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_RIah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_RZIah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_RZIah.ttf
Normal file
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_RZah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_RZah.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
HaWeb/wwwroot/fonts/LinLibertine_Rah.ttf
Normal file
BIN
HaWeb/wwwroot/fonts/LinLibertine_Rah.ttf
Normal file
Binary file not shown.
@@ -51,16 +51,28 @@ const markactive_menu = function (element) {
|
|||||||
var all_links = element.getElementsByTagName("a"),
|
var all_links = element.getElementsByTagName("a"),
|
||||||
i = 0,
|
i = 0,
|
||||||
len = all_links.length,
|
len = all_links.length,
|
||||||
|
marked = false,
|
||||||
full_path = location.href.split("#")[0].toLowerCase(); //Ignore hashes
|
full_path = location.href.split("#")[0].toLowerCase(); //Ignore hashes
|
||||||
full_path = full_path.split("?")[0];
|
full_path = full_path.split("?")[0];
|
||||||
|
|
||||||
for (; i < len; i++) {
|
for (; i < len; i++) {
|
||||||
if (all_links[i].parentNode.classList.contains("ha-topnav-dropdown")) {
|
if (all_links[i].parentNode.classList.contains("ha-topnav-dropdown")) {
|
||||||
if (full_path.startsWith(all_links[i].href.toLowerCase())) {
|
if (full_path.startsWith(all_links[i].href.toLowerCase())) {
|
||||||
all_links[i].className += " active";
|
all_links[i].className += " active pointer-events-none";
|
||||||
|
marked = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (full_path == all_links[i].href.toLowerCase() || full_path == all_links[i].href.toLowerCase() + "/") {
|
if (full_path == all_links[i].href.toLowerCase() || full_path == all_links[i].href.toLowerCase() + "/") {
|
||||||
|
all_links[i].className += " active pointer-events-none";
|
||||||
|
marked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
if (marked === false) {
|
||||||
|
for (; i < len; i++) {
|
||||||
|
if (all_links[i].classList.contains("ha-active-default")) {
|
||||||
all_links[i].className += " active";
|
all_links[i].className += " active";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user