Cette partie détaille les interactions possibles avec le widget appelé ComponentAttacher
permettant d’attacher un composant à un dossier.
Ce type de popup ne peut pas être créé manuellement, mais il est possible de s’abonner à son ouverture de la façon suivante :
JSAPI.get().getPopupAPI().registerForComponentAttacherOpen(function(popup){
popup.setTitle("Mon nouveau titre");
popup.setRapidSearchVisible(false);
popup.getActions().get("advancedSearch").setEnabled(false);
});
Les propriétés modifiables sur les autres types de popup le sont également sur celle-ci. Les fonctions suivantes sont spécifiques à ce type de popup :
Propriété | Description |
---|---|
setRapidSearchVisible(boolean visible) | Visibilité de la recherche rapide |
setSearchTemplate(String searchTemplate) | Définir le formulaire de recherche utilisé pour la recherche avancée |
attach(Folder folder) | Attache le composant courant à un dossier |
getActions() | Permet de récupérer l’ActionSetAPI correspondant, pour manipuler les différentes actions présentes. |
Les actions disponibles via la méthode getActions()
sont :
browseFolder
: Parcourir l’arborescence de dossieradvancedSearch
: Recherche avancéenewFolder
: Création d’un nouveau dossier
La popup affichée lors du clic sur l’action browseFolder
va afficher une arborescence de dossier. Il est possible que pour certains besoins l’arborescence complète ne corresponde pas à vos besoins et qu’une certaine partie de celle-ci
soit autorisée pour un attachement
. Dans ce cas-là, il est possible de restreindre l’affichage des différents dossiers dans cette arborescence de la façon suivante :
folderAttacher = JSAPI.get().getPopupAPI().getFolderAttacher();
folderAttacher.register(function(folder,toAttach, callback){
if(folder.getName() == "2014"){
console.error("Remove item " + folder.getName() + " from browse tree");
callback.onSuccess(null);
}
else if(folder.getName() == "Arondor"){
console.log("Force disable selection for "+ folder.getName());
callback.onSuccess(new SelectableTreeItem(folder.getName(),false));
}
else{
console.log("Use applicative selection for "+ folder.getName());
callback.onSuccess(new SelectableTreeItem(folder.getName()));
}
});
Dans l’exemple ci-dessus, le composant ayant pour nom Arondor sera affiché, mais non sélectionnable. Celui avec le nom 2014 ne sera pas affiché et les autres seront affichés.
Dans ce dernier cas, la sélection utilisée est celle calculée par l’application, c’est-à-dire qu’elle est affichée uniquement si la classe du composant courant est dans la liste des enfants autorisés du dossier.