Gestion de la recherche anonyme de K-Sup
Description de la fonctionnalité
La fonctionnalité de recherche anonyme permet d'effectuer une recherche de fiches hors du périmètre de l'utilisateur. L'utilisateur ne doit pas pouvoir éditer la fiche mais doit pouvoir contribuer un lien vers la fiche par exemple à l'aide du tag de toolbox "lien".
Paramétrage
La recherche anonyme s'active pour chaque type de fiche avec la propriete fiche.NOM_OBJET.recherche_anonyme, les valeurs possibles sont les suivantes :
- recherche anonyme=0 pas de recherche anonyme autorisée
- recherche anonyme=1 recherche anonyme autorisée
Activation de la recherche anonyme
Le déclenchement de la recherche anonyme est piloté par le service OutscopedSearchService.
Ce service est initialisé avec une liste de beans qui permettent d'activer ou non la recherche anonyme en fonction d'un paramètre de contexte.
Chaque bean d'activation implémente l'interface OutscopedSearchActivator.
Dès qu'un des activators retourne "true", la recherche anonyme est activée pour le contexte.
Le service vérifie ensuite que la recherche anonyme est possible pour le type de fiche considéré. (par vérification d'une propriété fiche.OBJET.recherche_anonyme valorisée à 1)
Le contexte est porté par le composant lui même. Par exemple, un selecteur de fiche pour un lien vers une fiche sera associé à un UUID de contexte. Un selecteur multifiche sera associé à un autre UUID de contexte. Chaque composant de recherche de fiche (ou écran de recherche de fiche) possède son propre contexte.
La classe com.univ.utils.actiongenerator.ContextZoneAction resense les différents contextes connus.
La recherche anonyme intervient dans les différents datagrids des fiches :
graph
style E fill:#a02020,stroke:#333,stroke-width:1px
erA0(FicheUnivDatagrid) --> B(#traiterRechercheDepuisRequete)
A1(FicheToolboxDatagrid) --> B(#traiterRechercheDepuisRequete)
B --> C(#traiterRequeteAvecControlePerimetre)
C --> D(#initialiserControleBo)
D --> E(OutscopedSearchService#isOutscopedSearchActive)
graph
style F fill:#a02020,stroke:#333,stroke-width:1px
A0(MultiFicheDatagrid) --> B(#traiterRechercheDepuisRequete)
A1(MultiFicheToolboxDatagrid) --> B(#traiterRechercheDepuisRequete)
A2(SaisieFiche #ECRAN_LOGIQUE#=RECHERCHE) --> C(RechercheMultificheHelper#rechercherParmisToutesLesFiches)
B --> C
C --> D0(RechercheMultificheHelper#rechercheMetaParUrlFiche)
D0 --> E(#verifierDroitVisibiliteFiche)
E --> F
C --> D1(RechercheMultificheHelper#rechercherParCriteresMultiples)
D1 --> F(OutscopedSearchService#isOutscopedSearchActive)
Tests
Fonctionnalités à tester sur la recherche anonyme :
- Insertion d'une fiche en page d'accueil de rubrique
- Rattachement manuel d'une fiche à une rubrique (kmonoselect)
- Rattachement d'une fiche à une liste manuelle
- Lien interne vers une fiche dans une toolbox
- Rattachement manuel d'une fiche à une fiche (kmonoselect)
- Rattachement manuel de fiches à une fiche (kmultiselect)
- Selecteur de fiche (critère) dans un écran de recherche de fiche (taglink)