mirror of
				https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
				synced 2025-10-31 02:05:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			356 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			356 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| @page
 | |
| @inject ILibrary lib
 | |
| @using System.Collections.Generic
 | |
| @using System.Linq;
 | |
| @using HaDocument.Comparers
 | |
| @model IndexModel
 | |
| 
 | |
| @functions{
 | |
|     string setAct(string s) {
 | |
|         if (Model.person == s)
 | |
|             return "is-active";
 | |
|         else
 | |
|             return "";
 | |
|     }
 | |
| 
 | |
|     string setActPg(string s) {
 | |
|         if (Model.selpage == s)
 | |
|             return "is-active";
 | |
|         else
 | |
|             return "";
 | |
|     }
 | |
| 
 | |
|     string Position() {
 | |
|         string ret = "";
 | |
|         if (Model.cleanpage != 0)
 | |
|             ret += " hasAncestors";
 | |
|         if (Model.cleanpage == Model.Result.Count()-1)
 | |
|             ret += " isLast";
 | |
|         return ret;
 | |
|     }
 | |
| 
 | |
|     string generateTTMsg(Meta m) {
 | |
|          if (m.isProofread == OptionalBool.False && m.hasOriginal == OptionalBool.False) {
 | |
|              return "Original verschollen. Der Brieftext wurde noch nicht textkritisch geprüft.";
 | |
|          }
 | |
|          if (m.isProofread == OptionalBool.False && m.hasOriginal != OptionalBool.False) {
 | |
|              return "Original vorhanden. Der Brieftext wurde noch nicht textkritisch geprüft.";
 | |
|          }
 | |
|          if (m.isProofread != OptionalBool.False && m.hasOriginal == OptionalBool.False ) {
 | |
|              return "Original verschollen. Der Brieftext wurde anhand der vorhandenen Quellen kritisch geprüft.";
 | |
|          }
 | |
|          return "Der Brieftext wurde anhand des Originals kritisch geprüft.";
 | |
|      }
 | |
| }
 | |
| 
 | |
| @{
 | |
|     ViewData["Title"] = "Suche";
 | |
|     var pg = 0;
 | |
| }
 | |
| 
 | |
| 
 | |
| <div class="mainhead row no-gutters">
 | |
|         <div class="col">
 | |
|             <div class="widehead searchbar d-none d-lg-block">
 | |
|                 <div class="alphabet">
 | |
|                     <div class="row">
 | |
|                         <div class="col-7">
 | |
|                                 <h1>
 | |
|                                     Volltextsuche
 | |
|                                     <span class="searchheading">
 | |
|                                     (Beta)
 | |
|                                 </span>
 | |
|                                 </h1>
 | |
|                             <form>
 | |
|                                 <div class="form-inline hformbox">
 | |
|                                     <input type="search" class="form-control hform"  asp-for="search" placeholder="Suchbegriff" />
 | |
|                                     <input type="submit" class="form-control hform" value="Suchen"  />
 | |
|                                 </div>
 | |
|                             </form>
 | |
|                         </div>
 | |
|                         @if (String.IsNullOrWhiteSpace(Model.search))
 | |
|                         {
 | |
|                         <div class="col-5 align-self-end">
 | |
|                             <div class="zhselector">
 | |
|                                 <form style="margin-left: 105px;"> 
 | |
|                                     <div class="form-inline hformbox textform">
 | |
|                                         Briefnummer  
 | |
|                                         <input type="search" class="form-control small-form hform" asp-for="fdletter" />
 | |
|                                         <input type="submit" class="form-control hform" value="Nachschlagen" />
 | |
|                                     </div>
 | |
|                                     </form>
 | |
|                                <form> 
 | |
|                                    <div class="form-inline hformbox textform">
 | |
|                                        <span class="autopsic">
 | |
|                                            <a class="hlink invlink autopsic" href="/Supplementa/Forschung/editionen/#1955" style="font-variant: small-caps;">
 | |
|                                                <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-book" viewBox="0 0 16 20">
 | |
|                                                 <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.828zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z"/>
 | |
|                                                 </svg> Z H
 | |
|                                            </a>
 | |
|                                        </span>  
 | |
|                                        Band 
 | |
|                                         
 | |
|                                        <select class="form-control hform" asp-for="havolume">
 | |
|                                            @foreach (var y in lib.Structure.Keys.OrderBy(x => Int32.Parse(x)).Where(x => lib.Structure[x].Count > 100))
 | |
|                                            {
 | |
|                                                <option>@y</option>
 | |
|                                            }
 | |
|                                        </select>
 | |
|                                         , Seite  
 | |
|                                        <input type="search" class="form-control small-form hform" value="1" asp-for="hapage" />
 | |
|                                        <input type="submit" class="form-control hform" value="Nachschlagen" />
 | |
|                                    </div>
 | |
|                                 </form>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                         }
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div></div></div>
 | |
|             <div class="row no-gutters mainhead sticky" style="top: 110px !important; z-index: 1000 !important;">
 | |
|             <div class="widehead yearsidebar">
 | |
|                             @if (Model.State != IndexModel.IndexState.Initial)
 | |
|                             {<div class="backbutton"><a class="hlink" href="/">
 | |
|                                 <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-arrow-left" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
 | |
|                                 <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z"/>
 | |
|                                 </svg> alle Briefe anzeigen
 | |
|                             </a></div>}
 | |
|                             @if (Model.FailState == IndexModel.IndexFailState.LetterNotFound)
 | |
|                             {<span class="searchwarning">Brief mit der Nummer @Model.fdletter nicht gefunden.</span>}
 | |
|                             @if (Model.FailState == IndexModel.IndexFailState.SearchNoResult)
 | |
|                             {<span class="searchwarning">Keine Briefe gefunden, die die »@Model.search« enthalten.</span>}
 | |
|                             @if (Model.FailState == IndexModel.IndexFailState.SearchTooManyResults)
 | |
|                             {<span class="searchwarning">Mehr als 1000 Treffer für »@Model.search«. Bitte grenzen Sie Ihre Suche ein.</span>}
 | |
|                             @if (Model.FailState == IndexModel.IndexFailState.ZHNotFound)
 | |
|                             {<span class="searchwarning">Keine Briefe auf <span class="letterselection aq nnumber"><a class="hlink invlink searchwarning" href="/Supplementa/Forschung/editionen/#1955" style="font-variant: small-caps;">
 | |
|                                             Z H
 | |
|                                         </a> @HTMLHelpers.ToRoman(Int32.Parse(Model.havolume)), @Model.hapage</span> gefunden.</span>}
 | |
|                             @if (Model.FailState == IndexModel.IndexFailState.None)
 | |
|                             {
 | |
|                                 <h1>Briefauswahl
 | |
|                                 @if (Model.State == IndexModel.IndexState.Initial)
 | |
|                                 {<span class="letterselection">alle Briefe; chronologische Anzeige.</span>}
 | |
|                                 @if (Model.State == IndexModel.IndexState.Search)
 | |
|                                 {<span class="letterselection">Briefe, die »@Model.search« enthalten.</span>}
 | |
|                                 @if (Model.State == IndexModel.IndexState.ZHLookup)
 | |
|                                 {<span class="letterselection aq nnumber">
 | |
|                                     Briefe auf
 | |
|                                     <a class="hlink invlink" href="/Supplementa/Forschung/editionen/#1955" style="font-variant: small-caps;">
 | |
|                                             Z H
 | |
|                                         </a> @HTMLHelpers.ToRoman(Int32.Parse(Model.havolume)), @Model.hapage</span>}
 | |
|                                 @if (Model.State == IndexModel.IndexState.PersonLookup)
 | |
|                                 {<span class="letterselection">Briefe von und an @lib.Persons[Model.person].Name.</span>}
 | |
|                                 </h1>
 | |
|                             }
 | |
|                         @if (Model.Result.Count() > 1 && Model.FailState == IndexModel.IndexFailState.None)
 | |
|                         {
 | |
|                             @foreach (var pag in Model.Result) 
 | |
|                             {
 | |
|                                 pg = Model.Result.IndexOf(pag)+1;
 | |
|                                 <span class="navigation-page">
 | |
|                                 <a class="invlink @setActPg(pg.ToString())" href="/?selpage=@pg&person=@Model.person&search=@Model.search">
 | |
|                                     @if (pag.First().First().MetaData.Sort.Year != pag.Last().Last().MetaData.Sort.Year)
 | |
|                                     { 
 | |
|                                         <span>
 | |
|                                             @pag.First().First().MetaData.Sort.Year–@pag.Last().Last().MetaData.Sort.Year
 | |
|                                         </span>
 | |
|                                     }
 | |
|                                     @if (pag.First().First().MetaData.Sort.Year == pag.Last().Last().MetaData.Sort.Year) 
 | |
|                                     {
 | |
|                                         <span>
 | |
|                                             @pag.First().First().MetaData.Sort.Year
 | |
|                                         </span>
 | |
|                                     }
 | |
|                                 </a> @if(pag != Model.Result.Last())
 | |
|                                 {
 | |
|                                     <span class="muted"> </span>
 | |
|                                 }
 | |
|                                 </span>
 | |
|                             }
 | |
|                         }
 | |
|                     
 | |
|             </div> 
 | |
| </div>
 | |
| 
 | |
| @if (Model.FailState == IndexModel.IndexFailState.None)
 | |
| {
 | |
| <div class="row no-gutters">
 | |
|     <div class="col entriescolumn">
 | |
|             <div id="timeline">
 | |
|                 <div class="@Position()">
 | |
|                     
 | |
|                         @foreach (var l in Model.Result.ElementAt(Model.cleanpage))
 | |
|                         {
 | |
|                             var filename = "HKB_" + l.Key + ".pdf";
 | |
|                             <section>
 | |
|                                 <div class="year" style="top: 240px; z-index: 900;">
 | |
|                                     @l.Key 
 | |
|                                     @if (System.IO.File.Exists("./wwwroot/pdf/" + filename))
 | |
|                                     {
 | |
|                                     <span class="printbutton">
 | |
|                                         <span class="label">
 | |
|                                             <a class="hlink" href="./pdf/@filename">PDF
 | |
|                                             <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="currentColor" class="bi bi-arrow-down-circle" viewBox="0 0 14 18">
 | |
|                                                 <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8zm15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v5.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V4.5z"/>
 | |
|                                             </svg>
 | |
|                                             </a>
 | |
|                                         </span>
 | |
|                                     </span>
 | |
|                                     }
 | |
|                                   <hr></div>
 | |
|                                 @foreach (var entry in l)
 | |
|                                 {
 | |
|                                     <section>
 | |
|                                             <div class="lettercard flexrow">
 | |
|                                                 <a href="/Briefe/@entry.MetaData.Autopsic" class="hlink invlink">
 | |
|                                                     <div class="nnumber letcount flexcol">@entry.MetaData.Autopsic</div>
 | |
|                                                     <div class="letdesc flexcol">
 | |
|                                                     @if(entry.MetaData.Senders.Any() || entry.MetaData.Receivers.Any())
 | |
|                                                     {
 | |
|                                                         <span class="date">
 | |
|                                                             @entry.MetaData.Date</span><span> </span>
 | |
|                                                             @if (entry.MetaData.ZH != null) 
 | |
|                                                             {
 | |
|                                                             <span>
 | |
|                                                             <span class="nnumber autopsic"> 
 | |
|                                                                 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="currentColor" class="bi bi-book" viewBox="0 0 16 18">
 | |
|                                                                 <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.828zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z"/>
 | |
|                                                                 </svg> 
 | |
|                                                                 ZH @HTMLHelpers.ToRoman(Int32.Parse(entry.MetaData.ZH.Volume)) @entry.MetaData.ZH.Page
 | |
|                                                             </span> 
 | |
|                                                             </span>
 | |
|                                                         } 
 | |
|                                                         else 
 | |
|                                                         {
 | |
|                                                             <span>
 | |
|                                                             <span class="nnumber autopsic-new">
 | |
|                                                                 <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="currentColor" class="bi bi-asterisk" viewBox="0 0 16 20">
 | |
|                                                                 <path d="M8 0a1 1 0 0 1 1 1v5.268l4.562-2.634a1 1 0 1 1 1 1.732L10 8l4.562 2.634a1 1 0 1 1-1 1.732L9 9.732V15a1 1 0 1 1-2 0V9.732l-4.562 2.634a1 1 0 1 1-1-1.732L6 8 1.438 5.366a1 1 0 0 1 1-1.732L7 6.268V1a1 1 0 0 1 1-1z"/>
 | |
|                                                                 </svg>
 | |
|                                                                 Neu
 | |
|                                                             </span> 
 | |
|                                                             </span>
 | |
|                                                         }
 | |
|                                                             @if(entry.MetaData.hasOriginal == OptionalBool.True)
 | |
|                                                             {
 | |
|                                                                 <span>
 | |
|                                                                     <span class="nnumber autopsic hv" data-bs-toggle="tooltip" data-bs-placement="top" title="Original vorhanden">
 | |
|                                                                          Orig
 | |
|                                                                     </span> 
 | |
|                                                                 </span>
 | |
|                                                             }
 | |
|                                                             else 
 | |
|                                                             {
 | |
|                                                                 <span>
 | |
|                                                                     <span class="nnumber autopsic hv" data-bs-toggle="tooltip" data-bs-placement="top" title="Original verschollen">
 | |
|                                                                          <span class="cross">Orig</span>
 | |
|                                                                     </span> 
 | |
|                                                                 </span>
 | |
|                                                             }
 | |
|                                                             @if (entry.MetaData.ZH != null && entry.MetaData.ZH.dateChanged)
 | |
|                                                             {
 | |
|                                                                 <span>
 | |
|                                                                     <span class="nnumber autopsic hv" data-bs-toggle="tooltip" data-bs-placement="top" title="Der Brief wurde gegenüber der Ausgabe ZH neu datiert">
 | |
|                                                                          neu datiert
 | |
|                                                                     </span> 
 | |
|                                                                 </span>
 | |
|                                                             }
 | |
|                                                             @if(entry.MetaData.isProofread == OptionalBool.True)
 | |
|                                                             {
 | |
|                                                                 <span>
 | |
|                                                                     <span class="nnumber autopsic hv" data-bs-toggle="tooltip" data-bs-placement="top" title="Textkritisch geprüft">
 | |
|                                                                          geprüft
 | |
|                                                                     </span> 
 | |
|                                                                 </span>
 | |
|                                                             }
 | |
|                                                             else 
 | |
|                                                             {
 | |
|                                                                 <span>
 | |
|                                                                     <span class="nnumber autopsic hv" data-bs-toggle="tooltip" data-bs-placement="top" title="Nicht textkritisch geprüft">
 | |
|                                                                          <span class="cross">geprüft</span>
 | |
|                                                                     </span> 
 | |
|                                                                 </span>
 | |
|                                                             }
 | |
|                                                             @if (lib.MarginalsByLetter.Contains(entry.MetaData.Index)) 
 | |
|                                                             {
 | |
|                                                                 <span>
 | |
|                                                                     <span class="nnumber autopsic hv" data-bs-toggle="tooltip" data-bs-placement="top" title="Mit Stellenkommentar">
 | |
|                                                                          Komm
 | |
|                                                                     </span> 
 | |
|                                                                 </span>
 | |
|                                                             }
 | |
|                                                         
 | |
|                                                         <br>
 | |
|                                                         <span class="title">
 | |
|                                                             <span class="senders">
 | |
|                                                             @HTMLHelpers.GetEnumerationString(entry.MetaData.Senders.Select(x => lib.Persons[x].Name).ToList())
 | |
|                                                             </span>
 | |
|                                                             <span class="arrow">
 | |
|                                                             @if(entry.MetaData.isDraft == OptionalBool.True) {
 | |
|                                                                 <span data-bs-toggle="tooltip" data-bs-placement="bottom" title="Entwurf"> ↛ </span>
 | |
|                                                             }
 | |
|                                                             else
 | |
|                                                             {
 | |
|                                                                 <span> → </span>
 | |
|                                                             }
 | |
|                                                             </span>
 | |
|                                                             <span class="receivers">
 | |
|                                                             @HTMLHelpers.GetEnumerationString(entry.MetaData.Receivers.Select(x => lib.Persons[x].Name).ToList())
 | |
|                                                             </span>
 | |
|                                                             </span>
 | |
|                                                         }
 | |
|                                                         else
 | |
|                                                         {
 | |
|                                                             <span> </span>
 | |
|                                                         }
 | |
|                                                         
 | |
|                                                 </a>
 | |
|                                                 @if (entry.Results != null && entry.Results.Count() > 0)
 | |
|                                                 {
 | |
|                                                     <div class="sresults">
 | |
|                                                     @foreach (var result in entry.Results)
 | |
|                                                     {
 | |
|                                                         <div class="sresult">
 | |
|                                                             <a href="/Briefe/@entry.MetaData.Index#@result.Page-@result.Line" class="hlink invlink">
 | |
|                                                                 <span class="pgln">@result.Page/@result.Line:</span> <span class="sprev">@result.PreviewString</span>
 | |
|                                                             </a>
 | |
|                                                         </div>
 | |
|                                                         
 | |
|                                                     }
 | |
|                                                     </div>
 | |
|                                                 }
 | |
|                                             </div>
 | |
|                                     </section>
 | |
|                                 }
 | |
|                             </section>
 | |
|                         }
 | |
|                     
 | |
|                 </div>
 | |
|             </div>
 | |
|     </div>
 | |
|     @if(String.IsNullOrWhiteSpace(Model.search) &&
 | |
|         String.IsNullOrWhiteSpace(Model.hapage))
 | |
|     {
 | |
|         <div class="col-4 namesidebar d-none d-lg-block">
 | |
|             <h4>Korrespondenzpartner:innen</h4>
 | |
|             <a class="hlink person invlink @setAct("")" href="/">Alle</a>
 | |
|             @foreach (var p in Model.SelectedPersons.Where(x => x.Index != "1")) {
 | |
|                 <a class="hlink invlink person @setAct(p.Index)" href="/?person=@p.Index">@p.Name</a>
 | |
|             }
 | |
|             </div>
 | |
|         <div>
 | |
|         </div>
 | |
|     }
 | |
| </div>
 | |
| }
 | |
| 
 | |
| 
 | |
| @section Scripts {
 | |
|         <script>
 | |
|         var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
 | |
|         var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
 | |
|             return new bootstrap.Tooltip(tooltipTriggerEl)
 | |
|         })
 | |
| 
 | |
|     </script>
 | |
| } | 
