Ajouter un index Titre de revue

Ajouter un index Titre de revue

Cet ajout permet de rechercher rapidement un Titre de revue en cherchant dans l'index Titre et en ajoutant un filtre sur le ou les types de documents correspondant à vos revues.

Le code fonctionnel avec ElasticSearch est beaucoup plus complexe que ce qu'il était avant et il certaines adaptations peuvent être nécessaires selon les catalogues. Voici donc un article présentant les différents cas de figures et le code approprié.

L'information CODE_TYPE_DOC, surligné en jaune, doit être changé par le code du ou des type.s de document sur lesquels vous voulez filtrer la recherche (l'opérateur OR est appliqué). Si vous avez plus d'un code à inscrire, veuillez les mettre entre apostrophes et séparés par des virgules comme ceci : ['PER','PERNUM']

OPAC


Code à ajouter dans la préférence OPACUserJS

Ajouter l'index dans la recherche simple seulement

//rajouter index titre de revue recherche simple
  $("#masthead_search option[value='ti']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  
  const typesTitreRevue = ['CODE_TYPE_DOC'];
  
  $('#masthead_search').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#searchform').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itemtype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });
  
  const valeursURL = new URLSearchParams(window.location.search);
  const limiteActuelle = valeursURL.getAll('limit');
  let typesChoisis = [];
  
  if(limiteActuelle && limiteActuelle.length) {
  typesChoisis = limiteActuelle.filter(limiteCourante => limiteCourante.indexOf('mc-itemtype:') >= 0).map(limiteCourante => limiteCourante.split(':')[1]);

    if(typesChoisis.sort().toString() == typesTitreRevue.sort().toString()) {
      $("option.option-titre-revue").prop('selected', true).change();
    }
  }


Ajouter l'index dans la recherche avancée seulement


//rajouter index titre de revue recherche avancée 
  $("#search-field_0 option[value='ti,phr']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  $("#search-field_1 option[value='ti,phr']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  $("#search-field_2 option[value='ti,phr']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  
  const typesTitreRevue = ['CODE_TYPE_DOC'];
  
  $('#booleansearch').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#booleansearch').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });
  
  const valeursURL = new URLSearchParams(window.location.search);
  const limiteActuelle = valeursURL.getAll('limit');
  let typesChoisis = [];
  
  if(limiteActuelle && limiteActuelle.length) {
  typesChoisis = limiteActuelle.filter(limiteCourante => limiteCourante.indexOf('mc-itemtype:') >= 0).map(limiteCourante => limiteCourante.split(':')[1]);

    if(typesChoisis.sort().toString() == typesTitreRevue.sort().toString()) {
      $("option.option-titre-revue").prop('selected', true).change();
    }
  }

Ajouter l'index dans les deux formulaires 


//Ajout l'index dans recherche avancée ET recherche simple
 const typesTitreRevue = ['CODE_TYPE_DOC'];
  const valeursURL = new URLSearchParams(window.location.search);
  const limiteActuelle = valeursURL.getAll('limit');
  let typesChoisis = [];
  
//rajouter index titre de revue recherche simple
  $("#masthead_search option[value='ti']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  
  $('#masthead_search').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#searchform').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itemtype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });

  
  if(limiteActuelle && limiteActuelle.length) {
  typesChoisis = limiteActuelle.filter(limiteCourante => limiteCourante.indexOf('mc-itemtype:') >= 0).map(limiteCourante => limiteCourante.split(':')[1]);

    if(typesChoisis.sort().toString() == typesTitreRevue.sort().toString()) {
      $("option.option-titre-revue").prop('selected', true).change();
    }
  }
//rajouter index titre de revue recherche avancée 
    $("#search-field_0 option[value='ti,phr']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  $("#search-field_1 option[value='ti,phr']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  $("#search-field_2 option[value='ti,phr']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
  

  $('#booleansearch').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#booleansearch').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itemtype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });

if(limiteActuelle && limiteActuelle.length) {
  typesChoisis = limiteActuelle.filter(limiteCourante => limiteCourante.indexOf('mc-itemtype:') >= 0).map(limiteCourante => limiteCourante.split(':')[1]);

    if(typesChoisis.sort().toString() == typesTitreRevue.sort().toString()) {
      $("option.option-titre-revue").prop('selected', true).change();
    }
  }

INTRANET

Code à ajouter dans la préférence système IntranetUserJS.
Ce n'est pas possible d'ajouter l'index dans la barre de recherche simple ou dans le formulaire de recherche avancée seulement. Si vous avez des index à gauche de votre barre de recherche simple, vous aurez l'index Titre de revue dans le menu déroulant. Il vous faudra utiliser le code dans la section Ajouter l'index dans la recherche simple et la recherche avancée de l'Intranet.

Par contre, si vous n'avez pas de menu déroulant d'index à gauche de votre barre de recherche simple, vous pouvez utiliser le code simplifier dans la section Ajouter l'index dans la recherche avancée de l'Intranet (aucun menu d'index en recherche simple). 


Ajouter l'index dans la recherche simple et la recherche avancée

Utilisez ce code dans l'Intranet si vous avez un menu déroulant d'index à gauche de votre barre de recherche simple

//rajouter index titre de revue recherche simple
  $("#idx.advsearch option[value='ti']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
const typesTitreRevue = ['CODE_TYPE_DOC'];
  const valeursURL = new URLSearchParams(window.location.search);
  const limiteActuelle = valeursURL.getAll('limit');

  
  $('#idx.advsearch').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#search-form').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itemtype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });

  
  if(limiteActuelle && limiteActuelle.length) {
  typesChoisis = limiteActuelle.filter(limiteCourante => limiteCourante.indexOf('mc-itemtype:') >= 0).map(limiteCourante => limiteCourante.split(':')[1]);

    if(typesChoisis.sort().toString() == typesTitreRevue.sort().toString()) {
      $("option.option-titre-revue").prop('selected', true).change();
    }
  }
  

  $('#searchterms').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#searchterms').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itemtype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });

if(limiteActuelle && limiteActuelle.length) {
  typesChoisis = limiteActuelle.filter(limiteCourante => limiteCourante.indexOf('mc-itemtype:') >= 0).map(limiteCourante => limiteCourante.split(':')[1]);

    if(typesChoisis.sort().toString() == typesTitreRevue.sort().toString()) {
      $("option.option-titre-revue").prop('selected', true).change();
    }
  }

Ajouter l'index dans la recherche avancée (aucun menu d'index en recherche simple)

Ne pas utiliser ce code si vous avez un menu déroulant d'index. Référez vous à la section précédente. Autrement, l'index Titre de revue apparaîtra en recherche simple, mais ne fonctionnera pas.

//rajouter index titre de revue recherche simple
  $("#idx.advsearch option[value='ti']").after(`<option class="option-titre-revue" value="ti,phr">Titre de revue</option>`);
const typesTitreRevue = ['CODE_TYPE_DOC'];
  const valeursURL = new URLSearchParams(window.location.search);
  const limiteActuelle = valeursURL.getAll('limit');

 $('#searchterms').on('change', function() {
    if($(this).find('option:selected').hasClass('option-titre-revue')) {
      typesTitreRevue.forEach(typeDocumentCourant =>
        $('#searchterms').append(`<input type="hidden" class="type_document_titre_revue" id="type_document_${typeDocumentCourant}" name="limit" value="mc-itemtype:${typeDocumentCourant}">`)
      );
    } else {
      $('.type_document_titre_revue').remove();
    }
  });

Code à ajouter si vous caché l'index Titre (expression)

Si vous avez du code qui cache l'index Titre (expression) dans le formulaire de recherche avancée, il faut ajouter ce code en-dessous : 
$("#booleansearch option[class='option-titre-revue']").show();//ne pas enlever ou déplacer, nécessaire au bon fonctionnement de l'index titre de revue

Si vous cachez l'index à l'OPAC seulement, ajoutez le code à la préférence OPACUserJS. 
Si vous cachez l'index à l'Intranet seulement, ajoutez le code à la préférence IntranetUserJS. 
Si vous cachez l'index dans les deux interfaces, ajouter le code dans les deux préférences, toujours en vous assurant de le placer plus bas que le code pour cacher l'index Titre (expression).

Par exemple : 


    • Related Articles

    • Code javascript pour l’opac

      0. Configuration La préférence système opacuserjs peut être utilisée pour activer du code java à l’opac. Les codes qui sont listés ci-dessous doivent être inscrits entre ces deux balises en rouge. $(document).ready(function(){ CODE }); Voici les ...
    • Dupliquer les informations d’un produit

      Dans cette capsule, nous aborderons la possibilité de dupliquer des informations d'une fiche de produit. Lorsque l'on consulte la fiche d'un produit dans le module de l'inventaire, nous avons deux options pour copier l’information déjà enregistrée. ...
    • Code javascript pour l’intranet

      0. Configuration La préférence système intranetuserjs peut être utilisé pour activer du code java à l’intranet. Les codes qui sont listés ci-dessous doivent être inscrit entre ces deux balises en rouge (les balises ne doivent apparaître qu’une fois ...
    • Ajouter un accordéon à l'opac dans la colonne centrale

      Documentation élaborée à partir du site https://www.freecodecamp.org/news/build-an-accordion-menu-using-html-css-and-javascript/ Pour obtenir un menu en accordéon de ce type 1. Ajouter du contenu dans l'outil Nouvelles Dans l'outil Nouvelles, ajouter ...
    • Index de recherche pour les notices bibliographiques (Zebra)

      1. Zones recherchées Pour connaitre dans quelles zones la recherche est faite dans les notices, voici un tableau résumant les index disponible. Recherche simple Tous les mots Toutes les zones Titre 130$a, 210$a, 240$a, 245$a, 245$b, 245$c, 245$p, ...