Rechercher « discussion » dans Alfresco Share 3.4d : on peut mieux faire !

On continue la série de billets sur l’amélioration d’Alfresco Share 3.4d.
L’objectif est toujours d’améliorer la vie de l’utilisateur en enlevant toutes les petites aspérités.

Le problème du jour concerne les résultats de recherche de Share lorsque le terme saisi est « discussion ».
Les résultats de recherche présentent comme dossier les discussions sur les documents :

Et lorsque l’on clique sur ce résultat, on observe un message peu sexy :

Ceci est dû au fait qu’il n’est pas prévu de pouvoir afficher les discussions d’un document en dehors du document lui-même. Il n’est en outre pas nécessairement utile de retourner la liste des discussions associées à un document sans voir le document lui-même.
Ma solution rapide pour traiter ce problème consiste donc à éviter que les discussions liées aux documents soient remontées par la recherche.

Afin de bien identifier les types utilisés par Alfresco pour la gestion des forums, j’ai créé des commentaires sur un document puis des forums dans un site. Avec le navigateur de noeud (disponible dans Alfresco Explorer), j’ai ensuite identifiés les types d’objets utilisés pour chaque objet :

  • forum : objet fm:topic
  • commentaire : objet fm:post
  • discussion de document : objet fm:forum

Pour les forums de site, les forum sont stockés dans un dossier classique (cm:folder).
Pour les forums de documents, ils sont stockés dans une discussion (fm:forum).

On observe donc différentes organisations qui vont nous permettre de modifier simplement le principe de recherche pour ne pas retourner les objets de type fm:forum.
La recherche des documents est réalisée par un appel au WebScript Alfresco search.get (/alfresco/templates/webscripts/org/alfresco/slingshot/search/). La logique du WebScript est apportée par search.get.js commence par inclure search.lib.js, qui contient toutes les fonctions utiles pour la recherche et le traitement des résultats, avant d’appeler la méthode getSearchResults(parameters) :
<import resource="classpath:/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js">
[...]
model.data = getSearchResults(params);

Cette méthode va construire la requête, l’exécuter et traiter les résultats pour une exploitation ultérieure.
A la ligne 754, en pleine construction de la requête, on observe qu’un filtre est positionné pour éviter que les miniatures (thumbnails) ne soient remontées par la recherche :
ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail";
On va donc avoir la possibilité d’étendre un peu ce fonctionnement en ajoutant le filtre sur les forums :
ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail" AND -TYPE:"fm:forum"';

Il ne nous reste plus qu’à rendre disponible cette modification en surchargeant le WebScript :

  1. Créer l’arborescence : /classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/search
  2. Y déposer notre fichier search.lib.js
  3. Référencer ce fichier dans un nouveau search.get.js : il faut modifier l’import indiqué plus haut par

Un rechargement d’Alfresco plus tard, ça y est ! Les discussions sur les documents ne sont plus affichées lorsque l’on recherche « discussion ».

Cette entrée a été publiée dans Alfresco, avec comme mot(s)-clef(s) , , , , . Vous pouvez la mettre en favoris avec ce permalien.

3 réponses à Rechercher « discussion » dans Alfresco Share 3.4d : on peut mieux faire !

  1. Ping : Rechercher « discussion » dans Alfresco Share 3.4d : on peut mieux ... | ECM et GED libres, des solutions pour les entreprises | Scoop.it

  2. amine bouhamidi dit :

    hello,

    i want perform search only by name not by content. In my case search in alfresco share performed also on content of docs.

    can u help me to activate notifications by mail to send to administrator after every comment on any document?

    thank u a lot.

    best regards.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam