Commit ec9e0393 authored by Jerome Chauveau's avatar Jerome Chauveau
Browse files

v0 plugin tei2pdf

parent cbfb579d
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
# Plugins

MaX propose un ensemble de plugins placés dans le répertoire *plugins-enabled/default*.
MaX propose un ensemble de plugins placés dans le répertoire *plugins-available/default*.
Tout autre plugin devra être placé dans *plugins-enabled/custom*.

Le script *tool/max.sh* permet l'activation/désactivation de ces plugins.
@@ -17,8 +17,9 @@ $ ./tools/max.sh --list-plugins

````

Une fois activé, un plugin doit être déclaré (et configuré si nécessaire) dans les fichiers de configuration des éditions l'utilisant.
Déclaration et configuration se font au sein d'un élément `<plugin/>` de la section `<plugins/>` du fichier de configuration d'une édition.
Une fois activé, un plugin doit être configuré si nécessaire dans les fichiers de configuration des différentes éditions.
Cette configuration se fait au sein d'un élément `<plugin/>` de la section `<plugins/>` du fichier de configuration d'une édition.


## Les plugins disponibles

@@ -113,6 +114,8 @@ plugins déclarés dans la configuration de l'édition.

Doit être déclaré dans une édition EAD.

### TEI to PDF
 
## Plugins et dépendances Javascript
 
Certains plugins ont des dépendances vers des librairies js (ex : *img_viewer* requiert *OpenSeadragon*).
+7 −5
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ function max:fragmentToHTMLPage($project, $routeDoc, $id){
        let $xsltDoc := max.util:buildXSLTDoc(
                max.util:getDefaultTextXSL($project),
                max.config:getXSLTAddons($project, $routeDoc))
        let $xsltParams := max.config:getXSLTParams($project, $routeDoc)
        let $xsltParams := max.config:getXSLTParams($project, $routeDoc, $id)
        return
            try {
                let $html := xslt:transform($xml, $xsltDoc, $xsltParams)
@@ -151,6 +151,8 @@ function max:fragmentToHTMLPage($project, $routeDoc, $id){
            }
};



(:
Highlights $search in a subfragment ($targetId) in a parent fragment ($id)
:)
@@ -182,7 +184,7 @@ declare
%output:encoding("UTF-8")
%rest:path("/{$project}/checkplugins.html")
function max:checkPlugin($project){
    let $plugins := max.config:getPluginNameList($project)
    let $plugins := max.config:getEnabledPluginNames()
    return
        if (not($plugins))
        then <div id='pluginsReport'>Aucun plugin pour {$project}.</div>
@@ -242,7 +244,7 @@ function max:getHTMLByID($project, $id, $xsl, $xslparams as xs:string *, $wrap a
    let $paramValue := substring-after($param, ':')
    return map:entry($paramName, $paramValue)
    (:Merge all xsl parameters: from url + project:)
    let $xsltParams := map:merge((max.config:getXSLTParams($project, ()), $xslrURLParams))
    let $xsltParams := map:merge((max.config:getXSLTParams($project, (), $id), $xslrURLParams))

    let $html := <div class='standalone-html' id="wrap-{$id}">
        {xslt:transform($xml, $xsltDoc, $xsltParams)}
@@ -275,7 +277,7 @@ declare function max:transformEditionFragment($project, $xml, $route){
    let $xsltDoc := max.util:buildXSLTDoc(
            max.util:getDefaultTextXSL($project),
            max.config:getXSLTAddons($project, $route))
    let $xsltParams := max.config:getXSLTParams($project, $route)
    let $xsltParams := max.config:getXSLTParams($project, $route, ())
    return xslt:transform($xml, $xsltDoc, $xsltParams)
};

@@ -326,7 +328,7 @@ function max:buildSitemap($project){
declare %private function max:invokePluginXQueries($project, $routeDoc, $id){
    let $dbPath := max.config:getProjectDBPath($project)
    let $pluginsHTML :=
        for $pluginName in max.config:getPluginNameList($project)
        for $pluginName in max.config:getEnabledPluginNames()
        let $pluginXQ := file:parent(static-base-uri())||'/plugins-enabled/' || $pluginName || '/'|| $pluginName ||'.xq'
            return if(file:exists($pluginXQ))
            then
+30 −0
Original line number Diff line number Diff line
(: For conditions of distribution and use, see the accompanying legal.txt file. :)

module namespace max.plugins.tei2pdf = 'pddn/max/plugins/tei2pdf.xqm';

import module namespace max.config = 'pddn/max/config' at '../../rxq/config.xqm';
import module namespace max.api = 'pddn/max/max_api' at '../../rxq/max_api.xqm';
import module namespace max.util = 'pddn/max/util' at '../../rxq/util.xqm';


declare
%rest:GET
%rest:produces("application/pdf")
%rest:path("/{$project}/{$routeDoc=.*\.xml}/{$id}.pdf")
function max.plugins.tei2pdf:fragmentToPDF($project, $routeDoc, $id){
    let $dbPath := max.config:getProjectDBPath($project)
    let $content:=
        <TEI xmlns="http://www.tei-c.org/ns/1.0">
            <teiHeader></teiHeader>
            <text>{max.api:getXMLByID($dbPath, $id)}</text>
        </TEI>

    let $pdf := max.util:xml2pdf($content, max.util:getProjectFoXsl($project))
    return
        (<rest:response>
            <http:response status="200">
                <http:header name="content-type" value="application/pdf"/>
            </http:response>
        </rest:response>,
        $pdf)
};
 No newline at end of file
+9 −0
Original line number Diff line number Diff line

declare variable $id external;

<div class="tei2pdf">
    <a role="button" title="Export pdf" target="_blank" href="./{$id}.pdf">
        &#8682;
    </a>
</div>
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ function max.alignment:alignedHTML($project, $doc, $id1, $id2){
                                     max.util:getDefaultTextXSL($project),
                                     max.config:getXSLTAddons($project, $doc))                               
                                     
   let $xsltParams := max.config:getXSLTParams($project, $doc)
   let $xsltParams := max.config:getXSLTParams($project, $doc,())
   let $xml := max.alignment:runAlignmentQuery($project, $doc, $id1, $id2)
   
   let $html:= <div>{xslt:transform($xml, $xsltDoc, $xsltParams)}</div>
Loading