A community-driven module management extension for Jahia, providing GraphQL endpoints and UI integrations for managing Jahia modules.
- GraphQL API for module management
- UI extension for Jahia administration (TODO)
- Integration with Maven for module metadata resolution
- Java
- Maven
- Java 11+
- Node.js (v18+)
- Yarn
- Maven
Build the project using Maven:
mvn clean installDeploy the built bundle to your Jahia instance via the module management UI.
Deploy the built bundle to your Jahia instance with Docker:
mvn clean install jahia:deploy -Djahia.deploy.targetContainerName="jahia"- Deploy the built module to your Jahia instance.
- Access the GraphQL API for module management operations.
- Use the UI extension in Jahia's administration interface. (TODO)
The module provides a GraphQL API for managing Jahia modules. You can query and mutate module data using the provided endpoints.
mutation {
admin {
modulesManagement {
updateModules
}
}
}-
availableUpdates(filters: [String]): [String]
- Return a list of modules that have updates available
-
bundle(name: String) : GqlBundle
- Return different information about a bundle
-
clustered: Boolean
- Return true if the Jahia instance is clustered
-
installedModules: [String]
- Return a list of installed modules in the Jahia community edition
-
lastUpdateTime: String
- Return the last time the module updates were checked
query bundleInformation {
admin {
modulesManagement {
bundle(name: "augmented-search") {
symbolicName
bundleId
state
version
dependencies
dependenciesGraph
manifest {
key
value
}
moduleDependencies
moduleDependenciesGraph
services
servicesInUse
sitesDeployment {
siteKey
deployed
}
clusterState
clusterDeployment {
nodeId
bundles {
key
state
}
}
clusterState
}
}
}
}
query listModules {
admin {
modulesManagement {
installedModules
}
}
}moduleDependenciesGraph and dependenciesGraph fields return a JSON string representing the graph of dependencies as a MermaidJS.
updateModules: Update the modules in the Jahia instance.
mutation {
admin {
modulesManagement {
updateModules(jahiaOnly: false, dryRun: true,
filters:["jcontent", ".*dashboard.*"])
}
}
}Arguments:
jahiaOnly: If true, only updates Jahia modules.dryRun: If true, performs a dry run without applying changes.filters: An array of regex patterns to filter modules by name.
Contributions are welcome! Please open issues or submit pull requests.
