Pour qu’un plugin soit reconnu et puisse être affiché dans votre Intranet, vous devez créer un GrailsPlugin qui implémente TaackPlugin.

Voir un exemple ici : CrewGrailsPlugin.groovy

Dans ce fichier, nous avons configuré les éléments suivants :

Rôles et accès

static final List<TaackPluginConfiguration.PluginRole> crewPluginRoles = [
    new TaackPluginConfiguration.PluginRole("ROLE_CREW_ADMIN", TaackPluginConfiguration.PluginRole.RoleRanking.DIRECTOR),
    new TaackPluginConfiguration.PluginRole("ROLE_CREW_MANAGER", TaackPluginConfiguration.PluginRole.RoleRanking.MANAGER),
    new TaackPluginConfiguration.PluginRole("ROLE_CREW_USER", TaackPluginConfiguration.PluginRole.RoleRanking.USER),
]

crewPluginRoles contient une liste de PluginRole qui associe un Role géré par springSecurityService à un RoleRanking, allant du plus petit accès (USER) au plus grand accès (DIRECTOR).

Classes liées

static final List<TaackPluginConfiguration.TaackLinkClass> linkClasses = [
    new TaackPluginConfiguration.TaackLinkClass(Attachment.class,
            'publicName', AttachmentController.&showAttachment as MC)
]

linkClasses contient une liste de TaackLinkClass, qui définit les classes qui seront liées à partir d’autres objets et leur comportement par défaut (attribut affiché comme nom et action du contrôleur vers laquelle rediriger). Dans cet exemple, nous voulons que Attachment puisse être affiché dans d’autres classes sous son publicName et nous voulons qu’il redirige vers showAttachment.

Configuration du plugin

static final TaackPluginConfiguration crewPluginConfiguration = new TaackPluginConfiguration("Crew",
    "/crew/crew.svg", "crew", Language.values() as List,
    new TaackPluginConfiguration.IPluginRole() {
        @Override
        List<TaackPluginConfiguration.PluginRole> getPluginRoles() {
            crewPluginRoles
        }
    })

C’est ici que nous définissons le nom de l’application, son icône, son package et la langue dans laquelle il est disponible. C’est également ici que nous indiquons que le plugin utilise la liste des PluginRole et des LinkClasses créée précédemment (dans ce cas, nous ne remplissons que la PluginRoleList).