Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
SADE
SADE
Commits
8cb2adbf
Commit
8cb2adbf
authored
Jul 05, 2017
by
Mathias Goebel
🎠
Browse files
Merge branch 'release/2.2'
parents
1c673277
c74a868a
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
controller.xql
View file @
8cb2adbf
...
...
@@ -2,6 +2,10 @@ xquery version "3.1";
import module namespace config="http://textgrid.de/ns/SADE/config" at "modules/config/config.xqm";
import module namespace digilib="http://textgrid.info/namespaces/xquery/digilib" at "../textgrid-connect/digilibProxy.xqm";
import module namespace fontaneTransfo="http://fontane-nb.dariah.eu/Transfo" at "modules/fontane/transform.xqm";
import module namespace console="http://exist-db.org/xquery/console";
declare namespace xhtml="http://www.w3.org/1999/xhtml";
declare variable $exist:path external;
declare variable $exist:resource external;
...
...
@@ -45,6 +49,36 @@ else if (tokenize($exist:path, '/') = "digilib") then
return
digilib:proxy($project, $id, $if-modified-since)
(: REST interface of the interface! :)
else if (tokenize($exist:path, '/') = "get") then
let $reqid := request:get-parameter("id", "/xml/data/16b00.xml"),
$id := $reqid => substring-after("/xml/data/") => substring-before(".xml"),
$pagereq := request:get-parameter("page", "1r"),
$page := if( $pagereq = "" ) then "outer_front_cover" else $pagereq,
$docCollection := $config:projects-dir || $project ||"/data/xml/xhtml/"|| $id ||"/",
$docpath := $docCollection || $page ||".xml",
$doc := doc( $docpath ),
$content :=
switch ($exist:resource)
case "code.html" return
replace(serialize($doc//xhtml:div[@class="teixml"]), "xhtml:", "")
case "trans.html" return
replace(serialize($doc/xhtml:body/xhtml:div/xhtml:div[not(@class="teixml")][not(@class="facs")]), "xhtml:", "")
case "facs.html" return
replace(serialize($doc//xhtml:div[@class="facs"]), "xhtml:", "")
case "toc.html" return
replace(serialize(doc( $docCollection || "toc.xml" )), "xhtml:", "")
case "comm.html" return
replace(serialize($doc//xhtml:div[@class="notes"]), "xhtml:", "")
default return "supported requests are: facs, trans, code"
return
response:stream($content, "method=text media-type=text/plain")
(: the important stuff :)
else if (ends-with($exist:resource, ".html")) then
let $doc-path := $config:projects-dir || $project || config:get("template") || $exist:resource
...
...
expath-pkg.xml
View file @
8cb2adbf
<?xml version="1.0" encoding="UTF-8"?>
<package
xmlns=
"http://expath.org/ns/pkg"
name=
"http://textgrid.de/ns/SADE"
abbrev=
"SADE"
version=
"2.
1
"
spec=
"1.0"
>
<package
xmlns=
"http://expath.org/ns/pkg"
name=
"http://textgrid.de/ns/SADE"
abbrev=
"SADE"
version=
"2.
2
"
spec=
"1.0"
>
<title>
Scalable Architecture for Digital Editions powered by TextGrid
</title>
<dependency
package=
"http://exist-db.org/apps/markdown"
/>
<dependency
package=
"http://exist-db.org/apps/monex"
/>
...
...
modules/fontane/misc.xqm
View file @
8cb2adbf
...
...
@@ -2,6 +2,7 @@ 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";
...
...
@@ -176,6 +177,7 @@ declare function f-misc:list($datadir, $param, $num as xs:integer) {
: 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
<div class="panel panel-dark">
<div class="panel-heading" role="tab" id="heading{$param||$pos}">
...
...
@@ -185,7 +187,7 @@ declare function f-misc:list($datadir, $param, $num as xs:integer) {
</a>
</h3>
</div>
<div id="collapse{$param||$pos}" class="panel-collapse collapse
{if ($
param||$pos = $param||$num
) then ' in' else ()}" role="tabpanel" aria-labelledby="heading{$param||$pos}">
<div id="collapse{$param||$pos}" class="panel-collapse collapse{if ($
thisIn
) then ' in' else ()}" role="tabpanel" aria-labelledby="heading{$param||$pos}">
<div class="panel-body">
<div class="row">
<div class="col-md-9">
...
...
@@ -204,7 +206,7 @@ declare function f-misc:list($datadir, $param, $num as xs:integer) {
<ul>
<li><a href="mirador.html?n={$param||$pos}">Digitalisate</a></li>
<li><a href="edition.html?id=/xml/data/{$uri[last()]}.xml&page="
onclick="
createCookie('facs', 'inactive' , 180); createCookie('xml', 'inactive', 180); createCookie('trans', 'true', 180
)">Transkriptionsansicht</a></li>
onclick="
goldenState('trans'
)">Transkriptionsansicht</a></li>
<li>Edierter Text/Textkritischer Apparat</li>
<li>TEI/XML-Ansicht: <a href="edition.html?id=/xml/data/{$uri[last()]}.xml&page="
onclick="createCookie('facs', 'inactive' , 180); createCookie('xml', 'true', 180); createCookie('trans', 'inactive', 180)"><i title="seitenweise" class="fa fa-file-o"></i></a> | <a href="xml.html?id=/xml/data/{$uri[last()]}.xml"><i title="gesamtes XML auf der Webseite betrachten" class="fa fa-file-code-o"></i></a> |<a target="_blank" href="/rest/data/{$uri[last()]}.xml">REST</a></li>
...
...
@@ -229,28 +231,19 @@ declare function f-misc:list($datadir, $param, $num as xs:integer) {
</ul>
</div>
<div class="col-md-3">
<div id="thumb">
{if ($param||$pos = 'C7') then
(<a href="#" data-toggle="modal" data-target="#modal"><img src="/public/img/loader.svg" data-original="digilib/{substring-after($item, ' ')}_001.jpg?dh=350&mo=jpg"/></a>,
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="citationrecommendation" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times"></i></button>
<h4 class="modal-title">{ if (matches($item, '0\d')) then replace($item, '0', '') else $item }</h4>
<div class="clearfix"></div>
</div>
<div class="modal-body">
{doc('/db/sade-projects/textgrid/data/xml/xhtml/16b00/outer_front_cover.xml')//xhtml:div[@id="outer_front_cover"][@class="surface "]}
</div>
</div>
</div>
</div>
)
else <img class="imgLazy" src="/public/img/loader.svg" data-original="digilib/{substring-after($item, ' ')}_001.jpg?dh=350&mo=jpg"/>
<div id="thumb">{
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 ()
}
}
</div>
</div>
</div>
...
...
@@ -260,7 +253,7 @@ declare function f-misc:list($datadir, $param, $num as xs:integer) {
};
declare function f-misc:content($node as node(), $model as map(*), $id, $page){
<div id="nb-title" class="col-xs-3 col-md-2">
<div id="nb-title" class="col-xs-3 col-md-2"
title="reset layout"
>
<h1 class="animated slideInLeft">
<span>{f-misc:nbTitle(request:get-parameter('id', ''), $model)}
{if(matches($page, '\d+(r|v)')) then ': '||$page else ()}</span>
...
...
@@ -432,34 +425,37 @@ switch ($develop)
declare function f-misc:textgridStatus($node as node(), $model as map(*)) {
let $col := "/db/sade-projects/textgrid"
let $res := "tgstatus.xml"
let $url := "https://dariah-de.github.io/status/textgrid/repstatus.html"
let $lastMod := xmldb:last-modified($col, $res)
let $doc := doc( $col || "/" || $res )
let $active := not( exists( $doc//ok ) )
let $getStatus :=
if( not( $active ) and $lastMod < (current-dateTime() - xs:dayTimeDuration("PT12H")) )
then
let $status := httpclient:get(xs:anyURI(
"https://raw.githubusercontent.com/DARIAH-DE/textgridrep-status/master/repstatus.html"
), false(), ())//xhtml:div[contains(@class, 'repstatus')][not( contains(@class, 'ok') )]
let $status := httpclient:get(xs:anyURI(
$url
), false(), ())//xhtml:div[contains(@class, 'repstatus')][not( contains(@class, 'ok') )]
let $status := if( exists( $status ) ) then $status else <ok/>
return
xmldb:store($col, $res, $status)
else if($active and $lastMod < (current-dateTime() - xs:dayTimeDuration("PT2H")))
then
let $status := httpclient:get(xs:anyURI(
"https://raw.githubusercontent.com/DARIAH-DE/textgridrep-status/master/repstatus.html"
), false(), ())//xhtml:div[contains(@class, 'repstatus')][not( contains(@class, 'ok') )]
let $status := httpclient:get(xs:anyURI(
$url
), false(), ())//xhtml:div[contains(@class, 'repstatus')][not( contains(@class, 'ok') )]
let $status := if( exists( $status ) ) then $status else <ok/>
return
xmldb:store($col, $res, $status)
else ()
let $doc := doc( $col || "/" || $res )
return
let $status := $doc/xhtml:div[@class]/tokenize(@class, '\s+')[last()]
return
if( $doc//ok ) then () else
<div class="alert alert-
danger
">
<div class="alert alert-
{$status}
">
<h4>TextGrid-Statusmeldung</h4>
<p>Es liegt eine aktuelle Meldung zum TextGrid Repository vor. Einige
Funktionen, z.Bsp die Darstellung der Faksimiles, sind vom TextGrid
Repository abhängig und daher evtl. davon betroffen. Hier folgt die
Meldung von TextGrid.</p>
<h5>Status: {$
doc/xhtml:div[@class]/tokenize(@class, '\s+')[last()]
}</h5>
{$doc/xhtml:div//xhtml:p[@lang="de"]}
<h5>Status: {$
status
}</h5>
{
for $i at $pos in
$doc/xhtml:div//xhtml:p[@lang="de"]
return (if($pos gt 1) then <hr/> else (),$i)
}
</div>
};
...
...
modules/fontane/render.xqm
0 → 100644
View file @
8cb2adbf
xquery version "3.1";
module namespace f-render="http://fontane-nb.dariah.eu/ns/SADE/render";
import module namespace config="http://textgrid.de/ns/SADE/config" at "../config/config.xqm";
import module namespace f-transform="http://fontane-nb.dariah.eu/Transfo" at "transform.xqm";
import module namespace templates="http://exist-db.org/xquery/templates" ;
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare namespace xhtml="http://www.w3.org/1999/xhtml";
declare variable $f-render:id := request:get-parameter("id", "/xml/data/16b00.xml");
declare variable $f-render:page :=
let $para := request:get-parameter("page", "outer_front_cover")
return
if($para = "") then "outer_front_cover" else $para
;
declare variable $f-render:doc := doc( config:get("data-dir") || $f-render:id );
declare variable $f-render:surface := $f-render:doc//tei:surface[@n = $f-render:page];
declare variable $f-render:xhtml := doc( config:get("data-dir") || "/xml/xhtml/" ||tokenize($f-render:id, "/|\.xml")[4] || "/" || $f-render:page || ".xml" );
declare variable $f-render:notebook := substring-after($f-render:doc//tei:sourceDoc/@n, 'er_');
declare function f-render:initView($node as node(), $model as map()) {
let $nodes := for $n in $node/node() return templates:process($n, $model)
return
element {$node/name()} {
attribute id {$f-render:notebook},
$node/@*[not(local-name() => starts-with("data-") )],
$nodes
}
};
declare function f-render:facs($node as node(), $model as map()) {
<xhtml:div>
{$node/@*[not(local-name() => starts-with("data-") )]}
{f-transform:facs($f-render:surface)}
</xhtml:div>
};
declare function f-render:tran($node as node(), $model as map()) {
<xhtml:div>
{$node/@*[not(local-name() => starts-with("data-") )]}
{($f-render:xhtml//xhtml:div[contains(@class, "surface")])[1]}
</xhtml:div>
};
declare function f-render:code($node as node(), $model as map()) {
<xhtml:div>
{$node/@*[not(local-name() => starts-with("data-") )]}
{$f-render:xhtml//xhtml:div[@class = "teixml"]}
</xhtml:div>
};
\ No newline at end of file
modules/fontane/transform.xqm
View file @
8cb2adbf
This diff is collapsed.
Click to expand it.
modules/view.xql
View file @
8cb2adbf
...
...
@@ -9,6 +9,7 @@ import module namespace templates="http://exist-db.org/xquery/templates" ;
import module namespace mviewer="http://sade/multiviewer" at "multiviewer/multiviewer.xqm" ;
import module namespace console="http://exist-db.org/xquery/console" at "java:org.exist.console.xquery.ConsoleModule";
import module namespace f-misc="http://fontane-nb.dariah.eu/ns/SADE/misc" at "fontane/misc.xqm";
import module namespace f-render="http://fontane-nb.dariah.eu/ns/SADE/render" at "fontane/render.xqm";
import module namespace config="http://textgrid.de/ns/SADE/config" at "config/config.xqm";
import module namespace fsearch = "http://sade/faceted-search" at "faceted-search/faceted-search.xqm";
import module namespace nav="http://sade/tmpl-nav" at "tmpl-nav/tmpl-nav.xqm";
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment