diff --git a/HaWeb/Controllers/SucheController.cs b/HaWeb/Controllers/SucheController.cs index c2b38ee..4632a48 100644 --- a/HaWeb/Controllers/SucheController.cs +++ b/HaWeb/Controllers/SucheController.cs @@ -40,7 +40,7 @@ public class SucheController : Controller { var metas = lib.Metas.Where(x => letters.Contains(x.Key)).Select(x => x.Value); if (metas == null) return _error404(); var metasbyyear = metas.ToLookup(x => x.Sort.Year).OrderBy(x => x.Key).ToList(); - return _paginateSend(lib, 0, metasbyyear); + return _paginateSend(lib, 0, metasbyyear, null, zhvolume, zhpage); } return _error404(); } @@ -106,7 +106,7 @@ public class SucheController : Controller { return res; } - private IActionResult _paginateSend(ILibrary lib, int page, List>? metasbyyear, string? person = null) { + private IActionResult _paginateSend(ILibrary lib, int page, List>? metasbyyear, string? person = null, string? zhvolume = null, string? zhpage = null) { var pages = _paginate(metasbyyear); if (pages != null && page >= pages.Count) return _error404(); if (pages == null && page > 0) return _error404(); @@ -120,7 +120,10 @@ public class SucheController : Controller { .ThenBy(x => x.Meta.Order) .ToList())) .ToList(); - var model = new SucheViewModel(letters, page, pages, _getAvailablePersons(lib)); + List<(string Volume, List Pages)>? availablePages = null; + availablePages = lib.Structure.Select(x => (x.Key, x.Value.Select(x => x.Key).ToList())).ToList(); + zhvolume = zhvolume == null ? "1" : zhvolume; + var model = new SucheViewModel(letters, page, pages, _getAvailablePersons(lib), availablePages.OrderBy(x => x.Volume).ToList(), zhvolume, zhpage); if (person != null) model.ActivePerson = person; return View("Index", model); } diff --git a/HaWeb/FileHelpers/HaDocumentWrapper.cs b/HaWeb/FileHelpers/HaDocumentWrapper.cs index 406709a..387043f 100644 --- a/HaWeb/FileHelpers/HaDocumentWrapper.cs +++ b/HaWeb/FileHelpers/HaDocumentWrapper.cs @@ -34,15 +34,13 @@ public class HaDocumentWrapper : IHaDocumentWrappper { } public ILibrary? SetLibrary(string filepath, ModelStateDictionary? ModelState = null) { - try - { + try { Library = HaDocument.Document.Create(new HaWeb.Settings.HaDocumentOptions() { HamannXMLFilePath = filepath, AvailableYearRange = (StartYear, EndYear) }); - } - catch (Exception ex) { + } catch (Exception ex) { if (ModelState != null) ModelState.AddModelError("Error", "Das Dokument konnte nicht geparst werden: " + ex.Message); return null; } - + return Library; } @@ -52,7 +50,7 @@ public class HaDocumentWrapper : IHaDocumentWrappper { private void _AutoLoad(List files) { var orderdlist = files.OrderByDescending(x => x.LastModified); - foreach(var item in orderdlist) { + foreach (var item in orderdlist) { if (SetLibrary(item.PhysicalPath) != null) { _xmlProvider.SetInProduction(item); return; diff --git a/HaWeb/Models/SucheViewModel.cs b/HaWeb/Models/SucheViewModel.cs index fd8ff29..fcd443c 100644 --- a/HaWeb/Models/SucheViewModel.cs +++ b/HaWeb/Models/SucheViewModel.cs @@ -7,8 +7,20 @@ public class SucheViewModel { public List<(int StartYear, int EndYear)>? AvailableYears { get; private set; } public string? ActivePerson {get; set; } public List<(string Key, string Name)>? AvailablePersons { get; private set; } + public List<(string Volume, List Pages)>? AvailablePages { get; private set; } + public string? ActiveVolume { get; private set; } + public string? ActivePage { get; private set; } + public string? ActiveSearch { get; private set; } - public SucheViewModel(List<(int Year, List LetterList)>? letters, int activeYear, List<(int StartYear, int EndYear)>? availableYears, List<(string Key, string Name)>? availablePersons) { + public SucheViewModel( + List<(int Year, List LetterList)>? letters, + int activeYear, + List<(int StartYear, int EndYear)>? availableYears, + List<(string Key, string Name)>? availablePersons, + List<(string Volume, List Pages)>? availablePages, + string? activeVolume, + string? activePage + ) { Letters = letters; if (letters != null) Count = letters.Select(x => x.LetterList.Count).Aggregate(0, (x, y) => { x += y; return x; }); @@ -17,5 +29,8 @@ public class SucheViewModel { ActiveYear = activeYear; AvailableYears = availableYears; AvailablePersons = availablePersons; + AvailablePages = availablePages; + ActiveVolume = activeVolume; + ActivePage = activePage; } } \ No newline at end of file diff --git a/HaWeb/README.md b/HaWeb/README.md index e0b9e0f..37b1f8e 100644 --- a/HaWeb/README.md +++ b/HaWeb/README.md @@ -48,16 +48,16 @@ Veränderungenen in der Funktionalität für den Benutzer - Anzeige Briefe beim Namen (?) - GeoCities und Personen-Verweise (?) -Veränderungen in der Funktionalität für die Forscher +Veränderungen in der Funktionalität für die Redakteure - Online-Syntaxcheck für XML-Dateien - Online-Cross-Dateien-Check (bsp. verweist jede Marginalie auf eine existierende Zeile) - Erstellung einer HAMANN.xml-Datei - Hochladen der HAMANN.xml-Datei auf die Plattform Veränderungen im Code -- Anpassung des Codes an .NET 6 (Kopieren / Einfügen) +- Anpassung des Codes an .NET 6 - Umzug nach CSS Framework Tailwind -- Code wird aufgeräumt und sortiert +- Code ist aufgeräumt und sortiert - Leichtere Anpassungen an zukünftige Bedürfnisse (Wartungszeiten minimieren) - Auslagerungen einzelner Einstellungen in Einstellungsdateien - Code open source zugänglich machen? diff --git a/HaWeb/Views/Shared/_LetterHead.cshtml b/HaWeb/Views/Shared/_LetterHead.cshtml index b1de7f5..1cdcc24 100644 --- a/HaWeb/Views/Shared/_LetterHead.cshtml +++ b/HaWeb/Views/Shared/_LetterHead.cshtml @@ -7,7 +7,6 @@