Commit 7b74ab90 authored by chauveau's avatar chauveau
Browse files

nouvelle version de la recherche (performance, prise en compte pagination pour...

nouvelle version de la recherche (performance, prise en compte pagination pour le retour au texte) ajouts des logos
parent de75a582
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -44,11 +44,9 @@ MaX permet la consultation de fichiers XML stockés dans une base de données XM
```shell
sudo npm install bower -g
sudo npm install gulp -g
##un jour ...
#wget http://www.unicaen.fr/pddn/max/max.last.zip 
#unzip max.last.zip
#aujourd'hui
svn co --username <username> https://subversion.certic.unicaen.fr/svn/biblissima/trunk/RXQ_viewer max
# décompresser ensuite l'archive à la racine de votre webapp
# basex (située dans le répertoire webapps de Tomcat)
unzip max.last.zip
cd max
npm update
bower install
@@ -213,7 +211,7 @@ La configuration de ces plugins est détaillée [ici](#configuration_des_plugins
   [...]
</xsl:template>
```
Les options de lecture permettent de gérer l'affichage (afficher/masquer) de certaines balises du texte consulté. Un mécanisme natif de MaX permet par simple déclaration dans la configuration, d'ajouter un champ aux options de l'interface de lecture utilisateur.
Les options de lecture permettent de gérer l'affichage (afficher/masquer) de certaines balises du texte consulté. Un mécanisme natif de MaX permet par simple déclaration dans la configuration, d'ajouter un champ aux options de l'interface de lecture utilisateur. Les options de lecture ne s'affichent que dans un contexte de consultation de texte (présence obligatoire d'un élément HTML portant l'identifiant *texte*).
<aside class="notice">La/les feuille(s) de transformation doivent prendre en compte la balise cible afin de générer la classe HTML correspondante.</aside>

La capture d'écran ci-dessous illustre les options de lecture disponibles d'une édition: affichage des rupture de pages. Les plugins de corrections et d'affichage des équations modernisées sont également actifs.
@@ -455,7 +453,7 @@ La configuration d'une édition/d'un projet (noeud &lt;edition/&gt;) permet de d
```

Le menu d'une édition **E** se configure dans un fichier **editions/E/menu.xml** décrivant deux niveaux au maximum (**toujours vrai ?**). Pour une entrée de menu (**&lt;entry&gt;**), il est nécessaire de renseigner son identifiant(**&lt;id&gt;**) ainsi que sa cible (**&lt;target&gt;**).
Dans l'exemple ci-contre, le menu généré contiendra  deux entrées principales (attribut type='main'): **home** et **parcours**. L'entrée **home** pointera vers l'adresse **http://{...}/editions/E/accueil** et contiendra deux sous-entrées **presentation** et **contacts** pointants respectivement vers **http://{...}/editions/E/preentation** et **http://{...}/editions/E/contact**. 
Dans l'exemple ci-contre, le menu généré contiendra  deux entrées principales (attribut type='main'): **home** et **parcours**. L'entrée **home** pointera vers l'adresse **http://{...}/editions/E/accueil** et contiendra deux sous-entrées **presentation** et **contacts** pointants respectivement vers **http://{...}/editions/E/presentation** et **http://{...}/editions/E/contact**. 

<aside type="notice">Les &lt;id/&gt; sont par défaut utilisés comme libellés dans l'interface de lecture. Ils sont modifiables à l'aide du système d'internationalisation.</aside>

+33 −18
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@ import module namespace max.html = 'pddn/max/html' at 'rxq/html.xqm';
import module namespace max.route = 'pddn/max/route' at 'rxq/route.xqm';
import module namespace max.cons = 'pddn/max/cons' at 'rxq/cons.xqm';
import module namespace max.api = 'pddn/max/max_api' at 'rxq/max_api.xqm';

import module namespace max.plugin.pager = 'pddn/max/plugin/pager' at 'plugins/pager/pager.xqm';
import module namespace request = "http://exquery.org/ns/request";

(:
@@ -118,7 +118,12 @@ function max:page($project, $page){
     return
     try{
       let $content := max.html:getHTMLFragment($project,$page)
       return max.html:wrapInHTML($project, $page, $content)
       let $contentWithFooter := 
         <div>
           {$content}
           {max.html:getMaXFooter()} 
         </div>
       return max.html:wrapInHTML($project, $page, $contentWithFooter)
       }
      catch *{
        admin:write-log('Page/fragment "'||$page ||'" introuvable ou mal formé', 'INFO'),
@@ -163,6 +168,14 @@ declare
function max:htmlFragmentWithNavigationBar($project, $routeDoc, $id){

    let $dbPath := max.config:getProjectDBPath($project)
    
    return 
    if(max.config:isWithPager($project))
      then
        let $redirect := max.plugin.pager:getBackToTxtURL($project, $routeDoc, $id)
        return web:redirect($redirect)
    else
    
      let $xml := <div id="wrap-{$id}">{max.api:getXMLByID($dbPath, $id)}</div>
      let $xsltDoc := max.util:buildXSLTDoc(
                                       max.config:getDefaultTextXSL($project),
@@ -402,3 +415,5 @@ declare




+1 −1
Original line number Diff line number Diff line
{
  "name": "RXQ_viewer",
  "name": "MaX",
  "version": "0.0.0",
  "description": "",
  "main": "gulpfile.js",
+1 −1
Original line number Diff line number Diff line
@@ -150,5 +150,5 @@ declare function max.plugin.index:generateIndex($project){

declare %private function max.plugin.index:generateIndexToDonwload($project){
  
  
  ()
};
 No newline at end of file
+36 −1
Original line number Diff line number Diff line
@@ -116,6 +116,19 @@ function max.plugin.pager:paginate($project as xs:string, $route as xs:string, $
   
};

declare
%rest:GET
%output:method("html")
%rest:path("/editions/{$project}/{$route=.*\.xml}/page/{$n}/{$id}")
function max.plugin.pager:paginateWithTarget($project as xs:string, $route as xs:string, $n as xs:integer, $id){
  let $html := max.plugin.pager:paginate($project, $route, $n)
  return copy $c := $html
    modify (
      replace value of node $c/descendant-or-self::*[@*:id=$id]/@*:id with "scrollfocus"
    )
    return $c
};

declare function max.plugin.pager:paginateNodes(
   $project as xs:string,
   $routeDoc as xs:string,
@@ -187,6 +200,28 @@ declare function max.plugin.pager:getPageForID($project, $id){
:)


(:Returns page number for a specified fragment ID:)  
declare
%rest:GET
%output:method("html")
%rest:path("editions/{$project}/{$routeDoc=.*\.xml}/{$id}/page")
function max.plugin.pager:getFragmentPage($project,$routeDoc,$id){
   let $context := max.config:getProjectDBPath($project)
   (:gets plugin's parameters from config file:)     
   let $plugin := max.config:getPluginByName($project, $max.plugin.pager:PLUGIN_ID)
   let $nbPerPage := $plugin//parameter[@key=$max.plugin.pager:NB_BLOCKS]/@value
   let $itemsPath := $plugin//parameter[@key=$max.plugin.pager:ITEMS_PATH]/@value
   let $dbName := db:name(doc($context || "/" ||$routeDoc))
   let $items := xquery:eval("doc('"|| $context || "/" ||$routeDoc ||"')"||$itemsPath||"/@*:id" ,map{'' : db:open($dbName)})
   let $index:=index-of($items,$id)
   return ceiling($index div $nbPerPage)
};


declare function max.plugin.pager:getBackToTxtURL($project,$routeDoc,$id){
 let $page := max.plugin.pager:getFragmentPage($project,$routeDoc,$id)
 return "/editions/" || $project || "/" || $routeDoc || "/page/"||$page ||"/"||$id
};

declare
%rest:GET
Loading