xquery version "3.1"; module namespace f-misc="http://fontane-nb.dariah.eu/ns/SADE/misc"; import module namespace config="http://textgrid.de/ns/SADE/config" at "../config/config.xqm"; import module namespace console="http://exist-db.org/xquery/console"; declare namespace tei="http://www.tei-c.org/ns/1.0"; declare namespace xhtml="http://www.w3.org/1999/xhtml"; declare function f-misc:cite($node as node(), $model as map(*)) { let $url := request:get-url(), $res := tokenize($url, '/')[last()], $id := request:get-parameter('id', ''), $page := request:get-parameter('page', 'outer_front_cover'), $page := if($page = '') then 'outer_front_cover' else $page, $page := switch ($page) case "outer_front_cover" return "vordere Einbanddecke außen" case "inner_front_cover" return "vordere Einbanddecke innen" case "inner_back_cover" return "hintere Einbanddecke außen" case "outer_back_cover" return "hintere Einbanddecke innen" case "spine" return "Buchrücken" default return 'Blatt '||$page, $doc := doc( config:get("data-dir")||$id), $title := $doc//tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title/string(), $version := string( ($doc//tei:TEI/tei:teiHeader/tei:revisionDesc/tei:change/text())[1] ), $date := current-date(), $date := day-from-date($date)||'.'||month-from-date($date)||'.'||year-from-date($date), $url := replace($url, 'localhost:8080/exist/apps/SADE/textgrid', 'fontane-nb.dariah.eu') ||(if (request:get-query-string()) then '?' || request:get-query-string() else '') return switch ($res) case 'edition.html' return Zitationsempfehlung case 'inhalt.html' return Zitationsempfehlung case 'doku.html' return Zitationsempfehlung default return Zitationsempfehlung }; declare function f-misc:kaesten($node as node(), $model as map(*)){ let $q := request:get-parameter('n', '') let $q := if(string-length($q) = 1) then $q||"0" else $q let $num := if(matches($q, "\d+$")) then number(substring($q, 2, 2)) else 0 let $q := substring($q, 1, 1) let $data-dir := config:get("data-dir") return (,
{ for $kasten in (('a', 'b', 'c', 'd', 'e')) return if ($q = $kasten) then
{f-misc:list( $data-dir || '/xml/meta', upper-case($kasten), $num)}
else
{f-misc:list($data-dir || '/xml/meta', upper-case($kasten), $num)}
}
) }; declare function f-misc:list($datadir, $param, $num as xs:integer) { let $tgnav:= doc('/db/sade-projects/textgrid/navigation-fontane.xml') for $item at $pos in distinct-values($tgnav//object[string(@type)="text/xml"][starts-with(string(@title), 'Notizbuch ' || $param)]/string(@title)) (: : use these lines, when more than on revision is in the database : let $maxRev:= max($tgnav//object[@title = $item]/number(substring-after(@uri, '.'))),:) (: $uri:= $tgnav//object[@title = $item][number(substring-after(@uri, '.')) = $maxRev]/substring-after(@uri, 'textgrid:'):) let $uri:= $tgnav//object[string(@title) = $item]/substring-before(substring-after(@uri, 'textgrid:'), '.') let $thisIn := $param||$pos = $param||$num return
Synoptische Ansicht

{ let $img := "digilib/"||substring-after($item, ' ')||"_001.jpg?dh=350&mo=jpg" return element xhtml:img { attribute class {"imgLazy"}, attribute src { if ($thisIn) then $img else "/public/img/loader.svg" }, if(not($thisIn)) then attribute data-original {$img} else () } }
}; declare function f-misc:content($node as node(), $model as map(*), $id, $page){

{f-misc:nbTitle(request:get-parameter('id', ''), $model)} {if(matches($page, '\d+(r|v)')) then ': '||$page else ()}

, , , }; declare function f-misc:buttons($node as node(), $model as map(*)){ let $cookies := request:get-cookie-names() let $pagenum := request:get-parameter('page', 'outer_front_cover') let $pagenum := if ($pagenum = '') then 'outer_front_cover' else $pagenum let $page := doc( config:get("data-dir") || request:get-parameter('id', '/xml/data/16b00.xml'))//tei:surface[@n = $pagenum] let $entities := distinct-values($page//tei:rs/substring-before(@ref, ':')) let $rslistItems := for $e in $entities order by $e return switch($e) case 'psn' return
  • Personen
  • case 'plc' return
  • Orte
  • case 'wrk' return
  • Werke
  • case 'eve' return
  • Ereignisse
  • case 'org' return
  • Institutionen
  • default return
  • Keine
  • let $datelistItems := if($page//tei:date) then for $item in distinct-values( $page//tei:date/string(@when-iso) ) return
  • {$item}
  • else
  • Keine
  • let $reflistItems := if($page//tei:ref[not(parent::tei:figDesc)]) then for $item in distinct-values( $page//tei:ref[not(parent::tei:figDesc)]/string-join(., ' ') ) return
  • {$item}
  • else
  • Keine
  • return switch ( config:get('sade.develop') ) case "true" return
    default return
    }; declare function f-misc:mirador($node as node(), $model as map(*), $n){ if((string-length($n) lt 4) and matches($n, "^[A-Ea-e]\d+")) then