logo Alfresco
Version Enterprise 3.4.2

Le besoin est de pouvoir effectuer une recherche avancée à partir d’un site uniquement sur les documents du site en question.

Problème

Par défaut la recherche avancée se base sur tous les documents de l’entrepôt, il n’est pas possible de spécifier que la recherche avancée se fasse sur le site courant uniquement (contrairement à la recherche simple).

Recherche avancée depuis un site
Recherche avancée depuis un site qui retourne des fichiers provenant de tout l’entrepôt

Solution

Lorsqu’on se trouve sur un site il va falloir forcer la recherche à ne pas travailler sur l’entrepôt (repository).

A la fin du fichier components\search\search.js forcer la variable site et définir le paramètre repo en fonction de la valeur de site :

_buildSearchParams: function Search__buildSearchParams(searchRepository, searchAllSites, searchTerm, searchTag, searchSort)
{
  var site = /*searchAllSites ? "" :*/ this.options.siteId;
  var params = YAHOO.lang.substitute("site={site}&term={term}&tag={tag}&maxResults={maxResults}&sort={sort}&query={query}&repo={repo}",
  { 
    site: encodeURIComponent(site), 
    repo: /*(searchRepository || this.options.searchQuery.length !== 0)*/ (site === "").toString(), // always search entire repo with advanced query 
    term: encodeURIComponent(searchTerm), 
    tag: encodeURIComponent(searchTag),
    sort: encodeURIComponent(searchSort),
    query: encodeURIComponent(this.options.searchQuery),
    maxResults: this.options.maxSearchResults + 1 // to calculate whether more results were available
  });
  return params;
},

Recherche avancée depuis un site après modification
Recherche avancée retourne maintenant des documents du site courant uniquement

note: il est possible de modifier les données que l’on souhaite afficher dans le résultat de la recherche, je ferai peut être un article plus tard à ce sujet.

A vous de jouer!

Publicités