Commit 6f6e2b2e authored by Mathias Goebel's avatar Mathias Goebel 🎠
Browse files

Merge branch 'release/2.3.0'

parents 7cd7106a 56aef919
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://expath.org/ns/pkg" name="http://textgrid.de/ns/SADE" abbrev="SADE" version="2.2.4" spec="1.0">
<package xmlns="http://expath.org/ns/pkg" name="http://textgrid.de/ns/SADE" abbrev="SADE" version="2.3.0" 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"/>
......
......@@ -5,6 +5,7 @@ import module namespace config="http://textgrid.de/ns/SADE/config" at "../config
import module namespace console="http://exist-db.org/xquery/console";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare namespace tgmd="http://textgrid.info/namespaces/metadata/core/2010";
declare namespace xhtml="http://www.w3.org/1999/xhtml";
declare function f-misc:cite($node as node(), $model as map(*)) {
......@@ -209,7 +210,7 @@ declare function f-misc:list($datadir, $param, $num as xs:integer) {
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&amp;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>
onclick="goldenState('code')"><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>
<li>Kommentare und Register
<ul>
<li><a href="ueberblickskommentar.html?id=/xml/data/{$uri[last()]}.xml">Überblickskommentar</a></li>
......@@ -388,9 +389,12 @@ switch ( config:get('sade.develop') )
};
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 <iframe src="https://fontane-nb.dariah.eu/public/mirador/{replace(lower-case($n), '0(\d)', '$1')}.html" height="100%" width="100%"/>
else "Die Digitalisate zum gesuchten Notizbuch sind noch nicht verfügbar oder die Anfrage ist ungültig."
let $sandbox := doc( "/db/sade-projects/textgrid/data/xml" || "/sandbox-iiif.xml" )
let $url := "https://textgridlab.org/1.0/iiif/mirador/?uri="
let $book := if(string-length($n) = 2) then substring($n, 1, 1) || "0" || substring($n, 2, 1) else $n
let $uri := string($sandbox//tgmd:title[matches(., "Notizbuch_" || $book || "-IIIF")]/ancestor::tgmd:generic//tgmd:textgridUri)
return
<iframe src="{$url || $uri}" height="100%" width="100%"/>
};
declare function f-misc:debug( $node as node(), $model as map(*) ){
......@@ -407,6 +411,7 @@ switch ($develop)
<button class="btn btn-default{ if(not(request:get-cookie-names() = 'del') or contains(request:get-cookie-value('del'), 'inactive')) then ' inactive' else ()}" id="delBtn">del</button>
<button class="btn btn-default{ if(not(request:get-cookie-names() = 'add') or contains(request:get-cookie-value('add'), 'inactive')) then ' inactive' else ()}" id="addBtn">add</button>
<button class="btn btn-default{ if(not(request:get-cookie-names() = 'mod') or contains(request:get-cookie-value('mod'), 'inactive')) then ' inactive' else ()}" id="modBtn">mod</button>
<button class="btn btn-default{ if(not(request:get-cookie-names() = 'seq') or contains(request:get-cookie-value('seq'), 'inactive')) then ' inactive' else ()}" id="seqBtn">seq</button>
<button class="btn btn-default{ if(not(request:get-cookie-names() = 'latn') or contains(request:get-cookie-value('latn'), 'inactive')) then ' inactive' else ()}" id="latnBtn">Latn</button>
<button class="btn btn-default{ if(not(request:get-cookie-names() = 'script') or contains(request:get-cookie-value('script'), 'inactive')) then ' inactive' else ()}" id="scriptBtn">script
<div class="BtnExt">
......@@ -430,7 +435,7 @@ declare function f-misc:textgridStatus($node as node(), $model as map(*)) {
let $path := $col || "/" || $res
let $doc := doc( $path )
let $active := not( exists( $doc//ok ) )
let $needUpdate := not(doc-available($path)) or $lastMod < (current-dateTime() - xs:dayTimeDuration("PT12H"))
let $needUpdate := not(doc-available($path)) or $lastMod < (current-dateTime() - xs:dayTimeDuration("PT6H"))
let $getStatus :=
if( $needUpdate )
then
......
......@@ -179,12 +179,12 @@ return
return
(: test if we process for a specific notebook :)
if (not(
(: if (not(
($pers//tei:link/contains(@target, request:get-parameter('nb', 'textgrid')) = true() )
)
) then () else
if(not(local:pointerTest(string(string($pers//tei:note/tei:ptr/@target)), request:get-parameter('nb', 'textgrid')))) then () else
<li id="{$pers/@xml:id}" class="registerEintrag reg-{$pers/local-name()} {if($pers/@xml:id = request:get-parameter('e', '')) then 'fhighlighted' else ()}">
:) <li id="{$pers/@xml:id}" class="registerEintrag reg-{$pers/local-name()} {if($pers/@xml:id = request:get-parameter('e', '')) then 'fhighlighted' else ()}">
{$pers/tei:persName[1]/text()}
{
if( not( exists($pers/@xml:id)) ) then local:pointer($pers//tei:ptr, $persList/ancestor::*//*[@xml:id = substring-after($pers//tei:ptr/@target, '#')])
......
......@@ -22,11 +22,14 @@ declare variable $f-render:notebook := substring-after($f-render:doc//tei:source
declare function f-render:initView($node as node(), $model as map()) {
let $nodes := for $n in $node/node() return templates:process($n, $model)
return
if( doc-available( config:get("data-dir") || request:get-parameter("id", "0")) )
then
element {$node/name()} {
attribute id {$f-render:notebook},
$node/@*[not(local-name() => starts-with("data-") )],
$nodes
}
else <div>The requested document is not available.</div>
};
declare function f-render:facs($node as node(), $model as map()) {
......
......@@ -14,31 +14,36 @@ import module namespace console="http://exist-db.org/xquery/console";
declare variable $fontaneTransfo:tooltipReplacementPattern := '\s$|,$|\.|\($|\)$|;|&#x2003;';
declare variable $fontaneTransfo:bracket_left.svg := <svg xmlns="http://www.w3.org/2000/svg" width="auto" height="100%" style="transform:scaleX(0.5)" viewBox="0 20 40 250">
{element svg:path {
attribute id {"bracket"},
attribute stroke-width {"1"},
attribute d {"M 30.87,261.00" ||
" C 30.87,261.00 30.00,220.00 30.00,220.00" ||
" 30.00,220.00 30.00,179.00 30.00,179.00" ||
" 29.99,173.57 29.22,165.11 27.53,160.00" ||
" 25.78,154.70 23.34,153.50 23.18,149.91" ||
" 22.98,145.60 26.14,143.08 27.78,138.00" ||
" 29.18,133.65 29.99,123.73 30.00,119.00" ||
" 30.00,119.00 30.00,72.00 30.00,72.00" ||
" 30.00,60.01 29.29,47.86 31.28,36.00" ||
" 32.35,29.70 33.52,24.34 40.00,22.00" ||
" 40.00,22.00 35.93,36.00 35.93,36.00" ||
" 35.93,36.00 34.00,53.00 34.00,53.00" ||
" 34.00,53.00 34.00,125.00 34.00,125.00" ||
" 34.00,125.00 31.45,141.00 31.45,141.00" ||
" 31.45,141.00 28.13,150.00 28.13,150.00" ||
" 28.13,150.00 31.09,159.00 31.09,159.00" ||
" 31.09,159.00 34.00,179.00 34.00,179.00" ||
" 34.00,179.00 34.00,244.00 34.00,244.00" ||
" 34.00,244.00 36.16,263.00 36.16,263.00" ||
" 36.16,263.00 40.00,276.00 40.00,276.00" ||
" 32.45,274.30 31.81,267.69 30.87,261.00" }}}
declare variable $fontaneTransfo:bracket_left.svg := declare variable $fontaneTransfo:bracket_left.svg := <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg3383"
viewBox="20 20 40 250"
style="transform: scaleX(0.5);"
height="100%"
width="1cm">
<metadata
id="metadata3390">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3388" />
<path
stroke-width="1"
d="M 30.87,261.00 C 30.87,261.00 30.00,220.00 30.00,220.00 30.00,220.00 30.00,179.00 30.00,179.00 29.99,173.57 29.22,165.11 27.53,160.00 25.78,154.70 23.34,153.50 23.18,149.91 22.98,145.60 26.14,143.08 27.78,138.00 29.18,133.65 29.99,123.73 30.00,119.00 30.00,119.00 30.00,72.00 30.00,72.00 30.00,60.01 29.29,47.86 31.28,36.00 32.35,29.70 33.52,24.34 40.00,22.00 40.00,22.00 35.93,36.00 35.93,36.00 35.93,36.00 34.00,53.00 34.00,53.00 34.00,53.00 34.00,125.00 34.00,125.00 34.00,125.00 31.45,141.00 31.45,141.00 31.45,141.00 28.13,150.00 28.13,150.00 28.13,150.00 31.09,159.00 31.09,159.00 31.09,159.00 34.00,179.00 34.00,179.00 34.00,179.00 34.00,244.00 34.00,244.00 34.00,244.00 36.16,263.00 36.16,263.00 36.16,263.00 40.00,276.00 40.00,276.00 32.45,274.30 31.81,267.69 30.87,261.00"
id="bracket" />
</svg>;
declare function fontaneTransfo:magic($nodes as node()*) {
......@@ -127,11 +132,15 @@ typeswitch($node)
if(contains($node//tei:figDesc/tei:ref/text(), "einfache Absatzlinie (hin und her)"))
then
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 46">
<path id="Unnamed" fill="none" stroke="darkslategrey" stroke-width="1" />
{attribute d {"M 440.67,14.67 " ||
{element svg:path {
attribute id {"ahihe"},
attribute fill {"none"},
attribute stroke {"darkslategrey"},
attribute stroke-width {"1"},
attribute d {"M 440.67,14.67 " ||
"C 440.67,14.67 25.33,2.00 7.33,21.33 " ||
"11.33,28.00 422.00,11.33 414.67,20.00 " ||
"392.67,8.67 32.00,36.67 32.00,36.67" }}
"392.67,8.67 32.00,36.67 32.00,36.67" }}}
</svg>
else
if(contains($node//tei:figDesc/tei:ref/text(), "horizontale Halbschleife von links nach rechts unten"))
......@@ -151,20 +160,29 @@ typeswitch($node)
if(contains($node//tei:figDesc/tei:ref/text(),"horizontale Schleife von links oben nach rechts unten"))
then
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="auto" viewBox="0 0 220 29">
<path id="Unnamed" fill="none" stroke="darkslategrey" stroke-width="1.5" />
{attribute d {"M 14.00,18.18 " ||
{element svg:path {
attribute id {"sl2r1"},
attribute fill {"none"},
attribute stroke {"darkslategrey"},
attribute stroke-width {"1.5"},
attribute d {"M 14.00,18.18 " ||
" C 4.55,19.82 -2.73,27.09 5.27,26.55 " ||
" 65.64,20.91 197.64,-20.00 218.18,16.36 " ||
" 213.64,19.82 203.45,13.64 203.45,13.64" }}
" 213.64,19.82 203.45,13.64 203.45,13.64" }}}
</svg>
else
if(contains($node//tei:figDesc/tei:ref/text(),"horizontale Halbschleife von links unten nach rechts"))
then
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="auto" viewBox="0 0 59 16">
<path id="Unnamed" fill="none" stroke="black" stroke-width="1" />
{ attribute d {"M 20.55,10.82" ||
{element svg:path {
attribute id {"hsl2r"},
attribute fill {"none"},
attribute stroke {"black"},
attribute stroke-width {"1"},
attribute d {"M 20.55,10.82" ||
" C 20.55,10.82 -8.18,5.55 6.91,5.09 " ||
" 35.18,4.00 57.00,3.91 57.00,3.91"} }
}
</svg>
else
if(contains($node//tei:figDesc/tei:ref/text(), 'Absatzlinie')) then
......@@ -193,10 +211,15 @@ typeswitch($node)
if(contains($node//tei:figDesc/tei:ref/text(), "horizontale Halbschliefe von links oben nach rechts"))
then
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="auto" viewBox="0 0 418 40">
<path id="Unnamed" fill="none" stroke="darkslategrey" stroke-width="1" />
{ attribute d {"M 408.00,13.50" ||
{element svg:path {
attribute fill {"none"},
attribute stroke {"darkslategrey"},
attribute stroke-width {"1"},
attribute d {"M 408.00,13.50" ||
" C -6.50,51.50 -4.50,22.50 17.00,16.00" ||
" 17.00,16.00 35.50,12.50 35.50,12.50"}}
" 17.00,16.00 35.50,12.50 35.50,12.50"}
}
}
</svg>
else
element xhtml:hr {
......@@ -253,7 +276,7 @@ typeswitch($node)
}
case element(tei:fw)
return
if ($node/preceding::tei:handShift[@new != '#Fontane'])
if ($node/preceding::tei:handShift[@new][@new != '#Fontane'] or not( exists( $node/preceding::tei:handShift[@new] ) ))
then
(element xhtml:div { attribute class {'fwWrapper'},
element xhtml:span {
......@@ -499,7 +522,7 @@ declare function fontaneTransfo:surfaceDiv($node as node(), $inital as xs:string
fontaneTransfo:facs($node),
(: if($node/string(@type) = ("clipping", "additional")):)
element xhtml:div {
fontaneTransfo:surface($node),
fontaneTransfo:surface($node, $inital),
fontaneTransfo:magic($node/node())
},
element xhtml:div {
......@@ -523,7 +546,7 @@ declare function fontaneTransfo:surfaceDiv($node as node(), $inital as xs:string
else
(
element xhtml:div {
fontaneTransfo:surface($node),
fontaneTransfo:surface($node, $inital),
if($node/@type = ('clipping', 'additional'))
then
fontaneTransfo:magic($node/node())
......@@ -548,62 +571,28 @@ declare function fontaneTransfo:surfaceDiv($node as node(), $inital as xs:string
else ()
)};
declare function fontaneTransfo:surface($n) {
declare function fontaneTransfo:surface($n, $inital) {
attribute class {
'surface',
(if($n/@type) then (' tei'||$n/@type) else ''),
string($n/@subtype),
(if($n/@type) then (' tei'||$n/@type) else ()),
(if($n/@subtype) then string($n/@subtype) else ()),
if( string($n/@subtype)="Kalenderblatt") then if(ends-with($n/@n, 'v')) then 'verso' else 'recto' else (),
if( $n/parent::tei:surface ) then "nested" else ()
},
(: dont call it a label (bootstrap) :)
(if($n/@n) then attribute id {$n/@n} else()),
(if($n/@n) then attribute id {"s"||$n/@n} else()),
attribute style {
distinct-values((
(: TODO: performance
if ($n/@n = 'outer_front_cover') then
let $serverPort:= request:get-server-port()
return switch($serverPort)
case (8080)
return
let $test := console:log('outer front cover')
let $coverImage:= doc('/db/sade-projects/textgrid/data/xml/data/217qs.xml')
let $coverTble := doc('/db/sade-projects/textgrid/data/xml/tile/218r2.xml')
let $test := console:log('got documents')
let $shape := $coverTble//tei:link[
ends-with( @targets,
$coverImage//digilib:image[@name = ( string($n/tei:graphic/@n) || '.jpg')]/concat('#',@xml:id) )]
/substring-after(substring-before(@targets, ' '), '#')
let $test := console:log('found shape')
let $x:= $coverTble//svg:rect[@id = $shape]/number(substring-before(@x, '%')) div 100,
$y := $coverTble//svg:rect[@id = $shape]/number(substring-before(@y, '%')) div 100,
$w := $coverTble//svg:rect[@id = $shape]/number(substring-before(@width, '%')) div 100,
$h := $coverTble//svg:rect[@id = $shape]/number(substring-before(@height, '%')) div 100
let $test := console:log('start return')
return
"background-image: url('digilib/"||( string($n/tei:graphic/@n) || '.jpg')||"?dh=500&amp;wx="||$x||"&amp;wy="||$y||"&amp;ww="||$w||"&amp;wh="||$h||"&amp;mo=png');background-size:cover;"
default return ()
else ()
,:)
(:
: removed
: if ( ($n/parent::tei:sourceDoc and :)
(: $n/@n != 'spine' and:)
(: sum($n//text()[preceding::tei:handShift[@new][1]/@new='#Fontane'][matches(., '.[a-zA-Z0-9]')]/string-length() ) lt 1 ):)
(: and not( max($n//tei:*/@uly) gt 2.1 ):)
(: if you like to edit here, please edit the facs height the same way and dont forget the TOC! :)
(: ) then 'max-height: 3cm;' else(),:)
let $values := distinct-values((
if ($n/(@ulx or @uly)) then ('position:absolute;', 'top:'|| $n/@uly ||'cm;', 'left:'|| $n/@ulx ||'cm;') else (),
if ($n/(@ulx and @lrx)) then ('position:absolute;' ,'left:'|| $n/@ulx ||'cm;' , 'width:'||$n/@lrx - $n/@ulx||'cm;') else (),
if ($n/(@uly and @lry)) then ('position:absolute;', 'top:'|| $n/@uly ||'cm;' , 'height:'||$n/@lry - $n/@uly||'cm;') else (),
if ($n/@subtype = 'Kalenderblatt') then ( ('top:'|| $n/@uly ||'cm;', 'left:'|| $n/@ulx ||'cm;', 'width:'||$n/@lrx - $n/@ulx||'cm;', 'height:'||$n/@lry - $n/@uly||'cm;', "position:relative;") ) else ()
(: , if(count($n/tei:zone) = 1 and $n/tei:zone/@rotate) then ('transform:rotate('|| $n/tei:zone/@rotate ||'deg);', '-webkit-transform:rotate('|| $n/tei:zone/@rotate ||'deg);' :)
(: hier wurde früher $n//tei:zone/rotate in die Auswertung geschrieben ! :)
(: ) else():)
)) (: distinct values :)
return
(: omit top, left and position in case of a nested surface :)
if( string($n/@n) = $inital )
then $values[not( contains(., "absolute") ) and not( starts-with(., "top:") ) and not( starts-with(., "left:") )]
else $values
}
};
......@@ -613,6 +602,11 @@ attribute class {
string($n/@type),
string($n/@subtype),
if (exists($n/preceding-sibling::tei:addSpan) and $n/preceding-sibling::tei:addSpan/substring-after(@spanTo, '#') = $n/following-sibling::tei:anchor/@xml:id ) then 'addSpan' else(),
if (exists($n/preceding-sibling::tei:mod[@seq])
and
$n/preceding-sibling::tei:mod[@seq]/substring-after(@spanTo, '#') = $n/following-sibling::tei:anchor/@xml:id
)
then 'mod-seq-'|| string($n/preceding-sibling::tei:mod[@seq][substring-after(@spanTo, '#') = $n/following-sibling::tei:anchor/@xml:id]/@seq) else(),
if ($n/tei:figure) then 'figure' else(),
fontaneTransfo:segStyle($n),
if( $n/@type="illustration" and $n/parent::tei:line) then "verticalMiddel" else (),
......@@ -1081,19 +1075,14 @@ declare function fontaneTransfo:digilib($node){
(: TILE object available :)
if($node/tei:graphic/@xml:id)
then
let $test := console:log( ($node) )
let $test := console:log( (($node/tei:graphic/string(@xml:id))[1]) )
then
let $id := ($node/tei:graphic/string(@xml:id))[1]
let $uri := $node/ancestor::tei:TEI//tei:publicationStmt//tei:idno[@type="TextGrid"]/string(.)
let $link := collection('/db/sade-projects/textgrid/data/xml/tile/')//tei:link[contains(@targets, $uri)][ends-with(@targets, $id)][last()]
let $facs := $link/parent::tei:linkGrp/substring-after(@facs, '#')
let $tei := $link/ancestor::tei:TEI
let $shape := $link/parent::tei:linkGrp/tei:link[contains(@targets, 'shape')]//substring-before(substring-after(@targets, '#'), ' ')
let $shape := $link/parent::tei:linkGrp/tei:link[contains(@targets, 'shape')][ends-with(@targets, $id)]/substring-before(substring-after(@targets, '#'), ' ')
let $svgg := $tei//svg:g[@id = $facs]
let $image := string($svgg/svg:image/@xlink:href)
......@@ -1275,8 +1264,9 @@ let $lineHeight := fontaneTransfo:lineHeight( ($node/ancestor::tei:zone)[1] ),
$lineHeight := number(replace($lineHeight, '[^\d.\d]', '')),
$lineHeight := if(string(number($lineHeight)) = 'NaN') then 1 else $lineHeight,
$caretType:= tokenize( $node/string(@rend), '\(' )[starts-with(., 'caret')],
$caretType:= if($node/local-name() != "metamark")
then tokenize( $node/string(@rend), '\(' )[starts-with(., 'caret')]
else "caret:" || tokenize($node/string(@rend), "\(")[1],
$caret := switch($caretType)
case 'caret:V'
return
......@@ -1292,7 +1282,7 @@ let $lineHeight := fontaneTransfo:lineHeight( ($node/ancestor::tei:zone)[1] ),
(: $test := console:log($viewbox ) , :)
$style := $node/string(@style),
(: Unabhängig von margin-left in style, muss bei einem V der margin-left wert gleich dem 1. Wert aus der Funktion sein. :)
$style := $style || ';margin-left:-'||$parameter[1]||'mm;'
$style := $style || ';margin-left:-'||$parameter[1]||'cm;'
return
<svg xmlns="http://www.w3.org/2000/svg" class="caretV" style="{$style}" width="{string(($l + $r) div 100)}cm" height="0.6cm" viewbox="{$viewbox}">
<polyline points="0,0 {string($l)},{$height} {string($l + $r)},0" fill="none" stroke-width="3"/>
......@@ -1707,7 +1697,7 @@ element xhtml:span {
if ($node/@function="integrate") then
<xhtml:div class="metamarkHover"> Klammer zusammenfassende Funktion </xhtml:div>
else (),
(if(starts-with(string($node/@rend), 'caret:'))then
(if($node/@function = "caret")then
(<xhtml:span class="smallspace"/>,
fontaneTransfo:caret($node),
<xhtml:span class="smallspace"/>)
......
......@@ -30,6 +30,7 @@ let $doc :=
$result := <div>{local:dokuwikiparser( $result/*[not(@id='dw__toc')] )}</div>,
$login := xmldb:login( '/sade-projects/textgrid/data/xml/doku/', config:get('sade.user') , config:get("sade.password")),
$store := xmldb:store( '/sade-projects/textgrid/data/xml/doku/', $id || '.rev' || $revisionInWiki || '.xml' , $result )
$imageReload := local:dokuwikiImageReload($id, $model)
return
$result
return
......@@ -222,8 +223,8 @@ for $node in $nodes return
$node/@width,
$node/@title,
attribute class {'imgLazy'},
attribute data-original { '/public/doku/' || $node/substring-after(@data-original, 'fontane:') },
attribute src {"/public/img/loader.svg"}
attribute data-original { 'public/doku/' || $node/substring-after(@data-original, 'fontane:') },
attribute src {"public/img/loader.svg"}
}, () )
case text() return
(: Circa 1,2 Mio mal wird hier replace() aufgerufen. :)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment