Plugin folder organization
The directories in a FusionDirectory plugin look like this:
management: management dir, used to store all management class files and related sub-classes. (Column, filter …).
plugin_name
configuration: configuration dir, used if the plugin need to store option in ldap, also refered as backend configuration.
core : configuration files related to FusionDirectory core only.
backend: configuration files are included within the backend folder for all plugins.
plugin_name
dashboard: dir containing classes related to dashboard logic, pannels, information states.
plugin_name
workflow: dir containing classes related to a workflow logic, mainly combined with Orchestrator
plugin_name
contrib: used to put all the contributed files like schema, docs, manpages etc..
openldap: Schemas for the openldap server
docs: Documentation how to use the plugin
screenshots: Images used to integrate with FusionDirectory marketplace.
etc: Files and information required by the plugin, such as autoloading specific data.
yaml: A yaml file describing plugins information, allowing the plugin to be automatically install via fusiondirectory-plugin-manager.
html: used to put all the images or other public files
plugins
plugin_name
images: images which are not icons
themes
breezy
icons: icons to add to default breezy theme
48: sorted by size, for instance 48x48
apps: then by category, use apps for application icons
myapp.png: format should be png. This example file would be used as geticon.php?context=applications&icon=myapp
ihtml: used to put all the smarty template files
themes
breezy: smarty templates
locale: used for localization of the plugin
en: language iso code
fusiondirectory.po: message file
personal: used when plugin is to be used to manage user properties
includes: used for files available for inclusion for other plugins
Management, configuration/backend, workflow, personal, dashboard
These directories should contain a subdirectory named as the plugin, or as an other plugin which we extend. For instance, argonaut plugin contains management/systems/argonaut/class_argonautClient.inc
Installation of a plugin
For management, configuration/backend, and personal folders, the content should go into <fd_dir>/plugins/<dir>/
For html, ihtml, include, the content should go into <fd_dir>/<dir>/
For contrib/openldap, the content should go into <ldap_schemas_dir>/fusiondirectory/
For contrib/etc, the content should go into /etc/fusiondirectory/<plugin_name>.
For contrib/doc, the content may go into <doc_dir>/fusiondirectory-plugin-<plugin_name>.
Special cases:
in html/themes/<theme_name>, svg folder may be ignored
content of locale goes into <fd_dir>/locale/plugins/<plugin_name>/locale/