diff --git a/HaDocumentV6/Models/Marginal.cs b/HaDocumentV6/Models/Marginal.cs index 0ca6bc5..2d19736 100644 --- a/HaDocumentV6/Models/Marginal.cs +++ b/HaDocumentV6/Models/Marginal.cs @@ -11,13 +11,13 @@ namespace HaDocument.Models { string letter, string page, string line, - string elemnt + string element ) { Index = index; Letter = letter; Page = page; Line = line; - Element = elemnt; + Element = element; } } } \ No newline at end of file diff --git a/HaWeb/Controllers/APIController.cs b/HaWeb/Controllers/APIController.cs index 6e66c3e..2489a34 100644 --- a/HaWeb/Controllers/APIController.cs +++ b/HaWeb/Controllers/APIController.cs @@ -232,7 +232,7 @@ public class APIController : Controller { continue; } - var filename = ""; + var filename = string.Empty; if (hasContentDispositionHeader && contentDisposition != null) { if (!MultipartRequestHelper.HasFormDataContentDisposition(contentDisposition)) { ModelState.AddModelError("Error", $"Wrong Content-Dispostion Headers in Multipart Document"); diff --git a/HaWeb/Controllers/IndexController.cs b/HaWeb/Controllers/IndexController.cs index c17f3d3..6c72dd1 100644 --- a/HaWeb/Controllers/IndexController.cs +++ b/HaWeb/Controllers/IndexController.cs @@ -96,7 +96,7 @@ public class IndexController : Controller { .ToList(); } - private BriefeMetaViewModel _generateMetaViewModel(ILibrary lib, Meta meta) { + internal static BriefeMetaViewModel GenerateMetaViewModel(ILibrary lib, Meta meta) { var hasMarginals = lib.MarginalsByLetter.Contains(meta.Index) ? true : false; var senders = meta.Senders.Select(x => lib.Persons[x].Name) ?? new List(); var recivers = meta.Receivers.Select(x => lib.Persons[x].Name) ?? new List(); @@ -146,7 +146,7 @@ public class IndexController : Controller { letters = metasbyyear .Where(x => x.Key >= pages[page].StartYear && x.Key <= pages[page].EndYear) .Select(x => (x.Key, x - .Select(y => _generateMetaViewModel(lib, y)) + .Select(y => GenerateMetaViewModel(lib, y)) .OrderBy(x => x.Meta.Sort) .ThenBy(x => x.Meta.Order) .ToList())) diff --git a/HaWeb/Controllers/SucheController.cs b/HaWeb/Controllers/SucheController.cs index 99cdaf4..dbe4cc6 100644 --- a/HaWeb/Controllers/SucheController.cs +++ b/HaWeb/Controllers/SucheController.cs @@ -7,6 +7,11 @@ using HaDocument.Models; using HaXMLReader.Interfaces; using System.Collections.Specialized; using HaWeb.XMLParser; +using HaWeb.Settings.ParsingState; +using System.Text; +using HaWeb.Settings.ParsingRules; +using System.Linq;//AsParallel, ToList +using System.Collections.Generic;//Dictionary namespace HaWeb.Controllers; @@ -23,65 +28,188 @@ public class SucheController : Controller { _lettersForPage = config.GetValue("LettersOnPage"); } - [Route("/HKB/Suche")] - public IActionResult Index(string search, string category = "letters", int page = 0) { - if (search == null) return _error404(); + // Letter Search + [Route("/HKB/Suche/Briefe/")] + public IActionResult Briefe(string search, int page = 0, bool? comments = false) { var lib = _lib.GetLibrary(); - if (category == "letters") { - if (String.IsNullOrWhiteSpace(search)) - return _paginateSendLetters(lib, page, search, SearchResultType.InvalidSearchTerm, null, null); - search = search.Trim(); - var res = _xmlService.SearchCollection("letters", search, _readerService, null); - if (res == null || !res.Any()) - return _paginateSendLetters(lib, page, search, SearchResultType.NotFound, null, null); - var ret = res.ToDictionary( - x => x.Index, - x => x.Results - .Select(y => new SearchResult(search, x.Index) { Page = y.Page, Line = y.Line, Preview = y.Preview }) - .ToList() - ); - var keys = res.Select(x => x.Index).Where(x => lib.Metas.ContainsKey(x)).Select(x => lib.Metas[x]); - var letters = keys.ToLookup(x => x.Sort.Year).OrderBy(x => x.Key).ToList(); + // Error checking + if (search == null) return _error404(); + if (String.IsNullOrWhiteSpace(search)) + return View("~/Views/HKB/Dynamic/Suche.cshtml", new SucheViewModel(SearchType.Letters, SearchResultType.InvalidSearchTerm, comments, page, null, search, null, null, null, null)); + search = search.Trim(); - return _paginateSendLetters(lib, page, search, SearchResultType.Success, ret, letters); - } else if (category == "register") { - if (String.IsNullOrWhiteSpace(search)) - return _paginateSendRegister(lib, page, search, SearchResultType.InvalidSearchTerm, null); - search = search.Trim(); + // Letter & comment search and search result creation + var resletter = _xmlService.SearchCollection("letters", search, _readerService, null); + List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? rescomments = null; + if (comments == true) + rescomments = _xmlService.SearchCollection("marginals", search, _readerService, lib); + + // Error checking + if ((resletter == null || !resletter.Any()) && (rescomments == null || !rescomments.Any())) + return View("~/Views/HKB/Dynamic/Suche.cshtml", new SucheViewModel(SearchType.Letters, SearchResultType.NotFound, comments, page, null, search, null, null, null, null)); + + // Metadata aquisition & sorting + List? metas = new List(); + if (resletter != null) + metas.AddRange( + resletter + .Select(x => x.Index) + .Where(x => lib.Metas.ContainsKey(x)) + .Select(x => lib.Metas[x]) + ); + if (rescomments != null) + metas.AddRange( + rescomments + .Where(x => lib.Marginals.ContainsKey(x.Index)) + .Select(x => lib.Marginals[x.Index]) + .Where(x => lib.Metas.ContainsKey(x.Letter)) + .Select(x => lib.Metas[x.Letter]) + ); - List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? res = null; - if (page == 0) - res = _xmlService.SearchCollection("register-comments", search, _readerService, lib); - if (page == 1) - res = _xmlService.SearchCollection("forschung-comments", search, _readerService, lib); - if (res == null || !res.Any()) - return _paginateSendRegister(lib, page, search, SearchResultType.NotFound, null); - - return _paginateSendRegister(lib, page, search, SearchResultType.Success, _createComments("neuzeit", res.Select((x) => (x.Index, x.Results.Select((y) => y.Identifier).ToList())).OrderBy(x => x.Index).ToList())); + // Return + return _paginateSendLettersComments(lib, page, search, comments, SearchResultType.Success, metas.Distinct().ToList(), resletter, rescomments); + } + + // Register & Bibliography Search + [Route("/HKB/Suche/Register/")] + public IActionResult Register(string search) { + var lib = _lib.GetLibrary(); + + // Error checking + if (search == null) return _error404(); + if (String.IsNullOrWhiteSpace(search)) + return _paginateSendRegister(lib, search, SearchType.Register, SearchResultType.InvalidSearchTerm, null); + search = search.Trim(); + + // Search + List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? res = null; + + res = _xmlService.SearchCollection("register-comments", search, _readerService, lib); + if (res == null || !res.Any()) + return _paginateSendRegister(lib, search, SearchType.Register, SearchResultType.NotFound, null); + + // Return + return _paginateSendRegister(lib, search, SearchType.Register, SearchResultType.Success, _createComments("neuzeit", res.Select((x) => (x.Index, x.Results.Select((y) => y.Identifier).ToList())).OrderBy(x => x.Index).ToList())); + + } + + [Route("/HKB/Suche/Forschung/")] + public IActionResult Science(string search) { + var lib = _lib.GetLibrary(); + + // Error checking + if (search == null) return _error404(); + if (String.IsNullOrWhiteSpace(search)) + return _paginateSendRegister(lib, search, SearchType.Science, SearchResultType.InvalidSearchTerm, null); + search = search.Trim(); + + // Search + List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? res = null; + res = _xmlService.SearchCollection("forschung-comments", search, _readerService, lib); + if (res == null || !res.Any()) + return _paginateSendRegister(lib, search, SearchType.Science, SearchResultType.NotFound, null); + + // Return + return _paginateSendRegister(lib, search, SearchType.Science, SearchResultType.Success, _createComments("neuzeit", res.Select((x) => (x.Index, x.Results.Select((y) => y.Identifier).ToList())).OrderBy(x => x.Index).ToList())); + + } + + private IActionResult _paginateSendLettersComments( + ILibrary lib, + int page, + string search, + bool? comments, + SearchResultType SRT, + List? metas, + List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? resletters, + List<(string Index, List<(string Page, string Line, string Preview, string Identifier)> Results)>? rescomments + ) { + // Sorting, get Pages & Error Checking + var metasbyyear = metas!.Distinct().ToLookup(x => x.Sort.Year).OrderBy(x => x.Key).ToList(); + var pages = IndexController.Paginate(metasbyyear, _lettersForPage); + if (pages != null && page >= pages.Count) return _error404(); + if (pages == null && page > 0) return _error404(); + + List<(int Year, List LetterList)>? letters = null; + // Select & Parse Metadata for Letters to be shown on the selected Page + if (pages != null && metasbyyear != null) + letters = metasbyyear + .Where(x => x.Key >= pages[page].StartYear && x.Key <= pages[page].EndYear) + .Select(x => (x.Key, x + .Select(y => IndexController.GenerateMetaViewModel(lib, y)) + .OrderBy(x => x.Meta.Sort) + .ThenBy(x => x.Meta.Order) + .ToList())) + .ToList(); + + // Generate Search results & previews + Dictionary>? searchResults = new Dictionary>(); + Dictionary>? parsedMarginals = null; + if (resletters != null) + foreach (var res in resletters) { + if (!searchResults.ContainsKey(res.Index)) + searchResults.Add(res.Index, new List()); + foreach (var r in res.Results) { + if(!searchResults[res.Index].Where(x => x.Page == r.Page && x.Line == r.Line).Any()) + searchResults[res.Index].Add(new SearchResult(search, res.Index) { Page = r.Page, Line = r.Line, Preview = r.Preview }); + } + if (searchResults[res.Index].Any()) { + searchResults[res.Index] = searchResults[res.Index].OrderBy(x => HaWeb.HTMLHelpers.ConversionHelpers.RomanOrNumberToInt(x.Page)).ThenBy(x => HaWeb.HTMLHelpers.ConversionHelpers.RomanOrNumberToInt(x.Line)).ToList(); + } + } + if (rescomments != null) { + var marginals = rescomments.Where(x => lib.Marginals.ContainsKey(x.Index)).Select(x => lib.Marginals[x.Index]).ToLookup(x => x.Letter); + var shownletters = letters!.SelectMany(x => x.LetterList.Select(y => y.Meta.Index)).ToHashSet(); + var shownmarginals = marginals!.Where(x => shownletters.Contains(x.Key)).Select(x => (x.Key, x.ToList())).ToList(); + var previews = _xmlService != null ? _xmlService.GetPreviews(shownmarginals, _readerService ,lib) : null; + if (previews != null) + foreach (var p in previews) { + if (!searchResults.ContainsKey(p.Index)) + searchResults.Add(p.Index, new List()); + foreach (var res in p.Results) { + if (!searchResults[p.Index].Where(x => x.Page == res.Page && x.Line == res.Line).Any()) + searchResults[p.Index].Add(new SearchResult(search, p.Index) { Page = res.Page, Line = res.Line, Preview = res.Preview }); + } + if (searchResults[p.Index].Any()) { + searchResults[p.Index] = searchResults[p.Index].OrderBy(x => HaWeb.HTMLHelpers.ConversionHelpers.RomanOrNumberToInt(x.Page)).ThenBy(x => HaWeb.HTMLHelpers.ConversionHelpers.RomanOrNumberToInt(x.Line)).ToList(); + } + } + + // Parse Marginals + foreach (var l in marginals) { + if (parsedMarginals == null && l.Any()) + parsedMarginals = new Dictionary>(); + if (l.Any()) { + var list = new List<(Marginal, string)>(); + foreach (var c in l) { + var sb = new StringBuilder(); + var rd = _readerService.RequestStringReader(c.Element); + var st = new LetterState(lib, _readerService, lib.Metas[c.Letter], null, null, null); + new HaWeb.HTMLParser.XMLHelper(st, rd, sb, LetterRules.OTagRules, null, LetterRules.CTagRules, LetterRules.TextRules, LetterRules.WhitespaceRules); + new HaWeb.HTMLHelpers.LinkHelper(st.Lib, rd, sb, false); + rd.Read(); + list.Add((c, sb.ToString())); + } + parsedMarginals!.Add(l.Key, list); + } + } } - return _error404(); + // Model Init & Return + var model = new SucheViewModel(SearchType.Letters, SearchResultType.Success, comments, page, _paginate(pages), search, searchResults, letters, null, parsedMarginals); + return View("~/Views/HKB/Dynamic/Suche.cshtml", model); } - private List<(string Key, string Person)> _getAvailablePersons(ILibrary lib) { - return lib.Persons - .OrderBy(x => x.Value.Surname) - .ThenBy(x => x.Value.Prename) - .Select(x => (x.Key, x.Value.Name)) - .ToList(); - } - - private BriefeMetaViewModel _generateMetaViewModel(ILibrary lib, Meta meta) { - var hasMarginals = lib.MarginalsByLetter.Contains(meta.Index) ? true : false; - var senders = meta.Senders.Select(x => lib.Persons[x].Name) ?? new List(); - var recivers = meta.Receivers.Select(x => lib.Persons[x].Name) ?? new List(); - var zhstring = meta.ZH != null ? HaWeb.HTMLHelpers.LetterHelpers.CreateZHString(meta) : null; - return new BriefeMetaViewModel(meta, hasMarginals) { - ParsedZHString = zhstring, - ParsedSenders = HTMLHelpers.StringHelpers.GetEnumerationString(senders), - ParsedReceivers = HTMLHelpers.StringHelpers.GetEnumerationString(recivers) - }; + private IActionResult _paginateSendRegister( + ILibrary lib, + string activeSearch, + SearchType ST, + SearchResultType SRT, + List comments) { + // Model init & return + var model = new SucheViewModel(ST, SRT, null, 0, null, activeSearch, null, null, comments, null); + return View("~/Views/HKB/Dynamic/Suche.cshtml", model); } private List? _paginate(List<(int StartYear, int EndYear)>? pages) { @@ -93,46 +221,7 @@ public class SucheController : Controller { }).ToList() : null; } - private List? _paginate(List comments) { - return null; - } - - private IActionResult _paginateSendLetters( - ILibrary lib, - int page, - string activeSearch, - SearchResultType SRT, - Dictionary>? searchResults, - List>? metasbyyear - ) { - var pages = IndexController.Paginate(metasbyyear, _lettersForPage); - if (pages != null && page >= pages.Count) return _error404(); - if (pages == null && page > 0) return _error404(); - List<(int Year, List LetterList)>? letters = null; - if (pages != null && metasbyyear != null) - letters = metasbyyear - .Where(x => x.Key >= pages[page].StartYear && x.Key <= pages[page].EndYear) - .Select(x => (x.Key, x - .Select(y => _generateMetaViewModel(lib, y)) - .OrderBy(x => x.Meta.Sort) - .ThenBy(x => x.Meta.Order) - .ToList())) - .ToList(); - var model = new SucheViewModel("letters", SRT, page, _paginate(pages), activeSearch, searchResults, letters, null); - return View("~/Views/HKB/Dynamic/Suche.cshtml", model); - } - - private IActionResult _paginateSendRegister( - ILibrary lib, - int page, - string activeSearch, - SearchResultType SRT, - List comments) { - var model = new SucheViewModel("register", SRT, page, new List() { "Allgemeines Register", "Forschungsbibliographie" }, activeSearch, null, null, comments); - return View("~/Views/HKB/Dynamic/Suche.cshtml", model); - } - - + // Select and parse comments to be shown on a page private List _createComments(string category, List<(string, List)>? comments) { var lib = _lib.GetLibrary(); var res = new List(); diff --git a/HaWeb/HTMLHelpers/CommentHelper.cs b/HaWeb/HTMLHelpers/CommentHelper.cs index 7b4cdbe..0e43e4c 100644 --- a/HaWeb/HTMLHelpers/CommentHelper.cs +++ b/HaWeb/HTMLHelpers/CommentHelper.cs @@ -39,8 +39,8 @@ public static class CommentHelpers { arrow = true; } sb.Append(HTMLHelpers.TagHelpers.CreateElement("a", LETLINKCLASS, "/HKB/Briefe/" + let.Autopsic + "#" + blk.Page + "-" + blk.Line)); - var linkstring = ""; - var pglnstring = ""; + var linkstring = string.Empty; + var pglnstring = string.Empty; linkstring += let.Autopsic; pglnstring += " ( " + blk.Page + "/" + blk.Line + " )"; linkstring += pglnstring; diff --git a/HaWeb/HTMLHelpers/LetterHelpers.cs b/HaWeb/HTMLHelpers/LetterHelpers.cs index cd504e6..9b2cbc8 100644 --- a/HaWeb/HTMLHelpers/LetterHelpers.cs +++ b/HaWeb/HTMLHelpers/LetterHelpers.cs @@ -36,8 +36,8 @@ public static class LetterHelpers { var editsState = new EditState(); foreach (var edit in editreasons) { var currstring = edit.StartPage + "/" + edit.StartLine; - var endstring = ""; - var refstring = ""; + var endstring = string.Empty; + var refstring = string.Empty; if (edit.StartPage != edit.EndPage) endstring += edit.EndPage + "/" + edit.EndLine; else if (edit.StartLine != edit.EndLine) @@ -81,8 +81,8 @@ public static class LetterHelpers { var handstrings = new List<(string, string, string, string, string)>(); foreach (var hand in hands.OrderBy(x => x.StartPage.Length).ThenBy(x => x.StartPage).ThenBy(x => x.StartLine.Length).ThenBy(x => x.StartLine)) { var currstring = hand.StartPage + "/" + hand.StartLine; - var endstring = ""; - var personstring = ""; + var endstring = string.Empty; + var personstring = string.Empty; if (hand.StartPage != hand.EndPage) endstring += hand.EndPage + "/" + hand.EndLine; else diff --git a/HaWeb/HTMLHelpers/LinkHelper.cs b/HaWeb/HTMLHelpers/LinkHelper.cs index 7f7b93b..36fd396 100644 --- a/HaWeb/HTMLHelpers/LinkHelper.cs +++ b/HaWeb/HTMLHelpers/LinkHelper.cs @@ -48,9 +48,9 @@ public class LinkHelper { var letter = _lib.Metas[tag["letter"]]; _sb.Append(HTMLHelpers.TagHelpers.CreateElement("a", LETLINKCLASS, "/HKB/Briefe/" + letter.Autopsic + "#" + tag["page"] + "-" + tag["line"])); if (!tag.Values.ContainsKey("linktext") || tag.Values["linktext"] == "true") { - var linkstring = ""; - var ZHstring = ""; - var pglnstring = ""; + var linkstring = string.Empty; + var ZHstring = string.Empty; + var pglnstring = string.Empty; linkstring += "HKB " + letter.Autopsic; if (tag.Values.ContainsKey("page")) { pglnstring += tag["page"]; @@ -103,7 +103,7 @@ public class LinkHelper { subreader.Read(); return sb.ToString(); } - return ""; + return string.Empty; } public void Dispose() { diff --git a/HaWeb/HTMLHelpers/StringHelpers.cs b/HaWeb/HTMLHelpers/StringHelpers.cs index 723eba7..a01f1fe 100644 --- a/HaWeb/HTMLHelpers/StringHelpers.cs +++ b/HaWeb/HTMLHelpers/StringHelpers.cs @@ -3,7 +3,7 @@ using System.Web; namespace HaWeb.HTMLHelpers; public static class StringHelpers { public static string GetEnumerationString(IEnumerable strlist) { - var res = ""; + var res = string.Empty; foreach (var str in strlist) { if (str != strlist.First()) if (str == strlist.Last()) diff --git a/HaWeb/HTMLParser/LineXMLHelper.cs b/HaWeb/HTMLParser/LineXMLHelper.cs index d99196d..23b507a 100644 --- a/HaWeb/HTMLParser/LineXMLHelper.cs +++ b/HaWeb/HTMLParser/LineXMLHelper.cs @@ -68,16 +68,11 @@ public class LineXMLHelper { _newpage = false; _firstline = true; - if (_OTag_Funcs != null) - _in.OpenTag += OnOTag; - if (_STag_Funcs != null) - _in.SingleTag += OnSTag; - if (_CTag_Funcs != null) - _in.CloseTag += OnCTag; - if (_Text_Funcs != null) - _in.Text += OnText; - if (_WS_Funcs != null) - _in.Whitespace += OnWS; + _in.OpenTag += OnOTag; + _in.SingleTag += OnSTag; + _in.CloseTag += OnCTag; + _in.Text += OnText; + _in.Whitespace += OnWS; } private void _pushLine(object? _, EventArgs _empty) { @@ -104,22 +99,18 @@ public class LineXMLHelper { protected virtual void OnText(object? _, Text text) { LastText.Append(text.Value); + _currentText.Append(text.Value); if (_Text_Funcs != null) - if (CatchPageLine == null || (CurrentPage == CatchPageLine.Value.Page && CurrentLine == CatchPageLine.Value.Line)) { - _currentText.Append(text.Value); - foreach (var entry in _Text_Funcs) - if (entry.Item1(text, this)) entry.Item2(_target, text, this); - } + foreach (var entry in _Text_Funcs) + if (entry.Item1(text, this)) entry.Item2(_target, text, this); } protected virtual void OnWS(object? _, Whitespace ws) { LastText.Append(ws.Value); + _currentText.Append(ws.Value); if (_WS_Funcs != null) - if (CatchPageLine == null || (CurrentPage == CatchPageLine.Value.Page && CurrentLine == CatchPageLine.Value.Line)) { - _currentText.Append(ws.Value); - foreach (var entry in _WS_Funcs) - if (entry.Item1(ws, this)) entry.Item2(_target, ws, this); - } + foreach (var entry in _WS_Funcs) + if (entry.Item1(ws, this)) entry.Item2(_target, ws, this); } protected virtual void OnOTag(object? _, Tag tag) { diff --git a/HaWeb/Models/SucheViewModel.cs b/HaWeb/Models/SucheViewModel.cs index c0627cd..57f71c4 100644 --- a/HaWeb/Models/SucheViewModel.cs +++ b/HaWeb/Models/SucheViewModel.cs @@ -8,27 +8,37 @@ public enum SearchResultType { InvalidSearchTerm } +public enum SearchType { + Letters, + Register, + Science +} + public class SucheViewModel { public List<(int Year, List LetterList)>? Letters { get; private set; } public List? Comments { get; private set; } + public Dictionary>? Marginals { get; private set; } public int Count { get; private set; } public int ActivePage { get; private set; } - public List? AvailablePages { get; private set; } + public bool? IncludeComments { get; private set; } public string ActiveSearch { get; private set; } + public List? AvailablePages { get; private set; } public Dictionary>? SearchResults { get; private set; } public SearchResultType SearchResultType { get; private set; } - public string SearchType { get; private set; } + public SearchType SearchType { get; private set; } public SucheViewModel( - string searchType, + SearchType searchType, SearchResultType searchResultType, + bool? includeComments, int activePage, List? availablePages, string activeSearch, Dictionary>? searchResults, List<(int Year, List LetterList)>? letters, - List? comments + List? comments, + Dictionary>? marginals ) { Letters = letters; if (letters != null) @@ -43,5 +53,7 @@ public class SucheViewModel { ActiveSearch = activeSearch; SearchResults = searchResults; Comments = comments; + Marginals = marginals; + IncludeComments = includeComments; } } \ No newline at end of file diff --git a/HaWeb/Models/XMLRootDocument.cs b/HaWeb/Models/XMLRootDocument.cs index 640cb9e..37c404e 100644 --- a/HaWeb/Models/XMLRootDocument.cs +++ b/HaWeb/Models/XMLRootDocument.cs @@ -70,7 +70,7 @@ public class XMLRootDocument { } private string _removeInvalidChars(string? s) { - if (String.IsNullOrWhiteSpace(s)) return ""; + if (String.IsNullOrWhiteSpace(s)) return string.Empty; foreach (var c in Path.GetInvalidFileNameChars()) { s = s.Replace(c, '-'); } diff --git a/HaWeb/README.md b/HaWeb/README.md index 34c3ee3..4516006 100644 --- a/HaWeb/README.md +++ b/HaWeb/README.md @@ -83,11 +83,10 @@ TODO Navigation auf die Startseite / von Kontakt Vor dem internen release: TODO Jahreszahlen auf der Startseite - -Vor dem Release: TODO Suchergebnisse beschränken TODO Mobile Menüs bei der Seitennavigation (Jahrszahlen, Buchstabenindex usw) TODO Fehlerseiten bei nicht gefundenen Seiten +TODO Traditions durchsuchen Liste für Janina/Luca: KEIN brief für Bassa diff --git a/HaWeb/Settings/ParsingRules/CommentRules.cs b/HaWeb/Settings/ParsingRules/CommentRules.cs index bfd4138..ae69c49 100644 --- a/HaWeb/Settings/ParsingRules/CommentRules.cs +++ b/HaWeb/Settings/ParsingRules/CommentRules.cs @@ -36,7 +36,7 @@ public static class CommentRules { if (reader.State.Category == "bibel" && reader.State.Type == HaWeb.Settings.ParsingState.CommentType.Subcomment && reader.OpenTags.Any() && reader.OpenTags.Last().Name == "lemma" && !txt.Value.Contains("Stücke zu") && !txt.Value.Contains("ZusDan")) { - var lnkstring = Regex.Replace(txt.Value, @"\s+", ""); + var lnkstring = Regex.Replace(txt.Value, @"\s+", string.Empty); sb.Append(HTMLHelpers.TagHelpers.CreateCustomElement("a", new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "href", Value = "https://www.bibleserver.com/LUT/" + lnkstring}, new HaWeb.HTMLHelpers.TagHelpers.Attribute() { Name = "target", Value = "_blank"}, diff --git a/HaWeb/Settings/ParsingState/LetterState.cs b/HaWeb/Settings/ParsingState/LetterState.cs index 84f3db5..91698d1 100644 --- a/HaWeb/Settings/ParsingState/LetterState.cs +++ b/HaWeb/Settings/ParsingState/LetterState.cs @@ -50,7 +50,7 @@ public class LetterState : HaWeb.HTMLParser.IState { sb_lettertext = new StringBuilder(); active_skipwhitespace = true; currline = "-1"; - currpage = ""; + currpage = string.Empty; mustwrap = (false, false); minwidth = false; diff --git a/HaWeb/Settings/ParsingState/TraditionState.cs b/HaWeb/Settings/ParsingState/TraditionState.cs index 40a037e..04e4c83 100644 --- a/HaWeb/Settings/ParsingState/TraditionState.cs +++ b/HaWeb/Settings/ParsingState/TraditionState.cs @@ -50,6 +50,6 @@ public class TraditionState : HaWeb.HTMLParser.IState { active_trad = false; active_skipwhitespace = true; currline = "-1"; - currpage = ""; + currpage = string.Empty; } } \ No newline at end of file diff --git a/HaWeb/Views/Admin/Dynamic/Upload.cshtml b/HaWeb/Views/Admin/Dynamic/Upload.cshtml index c7e24d3..c17db4c 100644 --- a/HaWeb/Views/Admin/Dynamic/Upload.cshtml +++ b/HaWeb/Views/Admin/Dynamic/Upload.cshtml @@ -38,12 +38,10 @@ -

@Model.ActiveTitle

-
@* File Category Page File List *@ @if (Model.AvailableFiles != null && Model.AvailableFiles.Any()) { @@ -125,7 +123,5 @@ if (filesbutton !== null) filesbutton.addEventListener("click", () => hideshowfiles()); }); - - diff --git a/HaWeb/Views/HKB/Dynamic/Index.cshtml b/HaWeb/Views/HKB/Dynamic/Index.cshtml index d0508ae..0198a9e 100644 --- a/HaWeb/Views/HKB/Dynamic/Index.cshtml +++ b/HaWeb/Views/HKB/Dynamic/Index.cshtml @@ -147,7 +147,7 @@
Volltextsuche
-
+
diff --git a/HaWeb/Views/HKB/Dynamic/Register.cshtml b/HaWeb/Views/HKB/Dynamic/Register.cshtml index a561c8c..8d4f913 100644 --- a/HaWeb/Views/HKB/Dynamic/Register.cshtml +++ b/HaWeb/Views/HKB/Dynamic/Register.cshtml @@ -37,12 +37,19 @@
} @if (Model.AllowSearch) { -
- - - - -
+ @if (Model.Category == "neuzeit") { +
+ + + +
+ } else { +
+ + + +
+ }