Ajouter un index Titre de revue

Ajouter un index Titre de revue

Cet ajout d'index 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 aux revues.

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

Catalogue public (OPAC)


Info
Code à ajouter dans la préférence OPACUserJS

Ajouter l'index dans la recherche simple seulement

Quote
//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


Quote
//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 


Quote
//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

Info
Code à ajouter dans la préférence système IntranetUserJS.
Il n'est pas possible d'ajouter l'index dans la barre de recherche simple ou dans le formulaire de recherche avancée seulement. S'il y a des index à gauche de la barre de recherche simple, il y aura l'index Titre de revue dans le menu déroulant. Il faudra utiliser le code dans la section Ajouter l'index dans la recherche simple et la recherche avancée de l'Intranet.

Par contre, s'il n'y a pas de menu déroulant d'index à gauche de la barre de recherche simple, utiliser le code simplifié 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

Warning
Utiliser ce code dans l'Intranet s'il y a un menu déroulant d'index à gauche de la barre de recherche simple

Quote
//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)

Warning
Ne pas utiliser ce code s'il y a un menu déroulant d'index. Se réréfer à la section précédente. Autrement, l'index Titre de revue apparaîtra en recherche simple, mais ne fonctionnera pas.

Quote
//rajouter index titre de revue recherche simple
const typesTitreRevue = ['CODE_TYPE_DOC'];
  function ajouterOptionTitreRevue() {
    $("select[name='idx']").each(function () {
      if ($(this).find(".option-titre-revue").length === 0) {
        $(this).find("option[value='ti']").after(
          `<option class="option-titre-revue" value="ti">Titre de revue</option>`
        );
      }
    });
  }

  ajouterOptionTitreRevue();
  $(document).on('click', '.addsearchline', function () {
    setTimeout(ajouterOptionTitreRevue, 200);
  });
  $('form').on('submit', function () {
    $('.titre_revue_limit').remove();
    $("select[name='idx']").each(function () {
      if ($(this).find('option:selected').hasClass('option-titre-revue')) {
        let champ = $(this).closest('tr').find("input[name='q']");
        let valeur = champ.val();
        if (valeur && !valeur.startsWith('"')) {
          champ.val(`"${valeur}"`);
        }
        typesTitreRevue.forEach(function (type) {
          $('<input>')
            .attr('type','hidden')
            .attr('name','limit')
            .attr('value',`mc-itemtype:${type}`)
            .addClass('titre_revue_limit')
            .appendTo('form');
        });
      }
    });
});

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

Si du code 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 l'index est caché à l'OPAC seulement, ajoutez le code à la préférence OPACUserJS. 
Si l'index est caché à l'Intranet seulement, ajoutez le code à la préférence IntranetUserJS. 
Si l'index est caché dans les deux interfaces, ajouter le code dans les deux préférences, toujours en s'assurant de le placer plus bas que le code pour cacher l'index Titre (expression).

Par exemple : 


Article révisé dans la version 25.05.