Lemonldap-NG-Manager
view release on metacpan or search on metacpan
scripts/llng-build-manager-files view on Meta::CPAN
Output path for portal Constants.pm file.
=item B<--handler-status-constants-file>=I<path>
Output path for StatusConstants.pm file.
=item B<--lang-dir>=I<path>
Directory containing language JSON files (e.g., en.json, fr.json).
Translations from extensions will be merged into these files.
=item B<--verbose>, B<-v>
Show detailed progress information.
=item B<--help>, B<-h>
Show help message.
=back
=head1 EXTENSION FILE FORMAT
=head2 Perl Format (.pm)
package MyPlugin::Extension;
sub attributes {
return {
myPluginEnabled => {
type => 'bool',
default => 0,
documentation => 'Enable my plugin',
help => 'myplugin.html',
},
myPluginOption => {
type => 'text',
default => 'default_value',
},
};
}
sub tree {
return {
insert_into => 'generalParameters/plugins',
nodes => [
{
title => 'myPluginNode',
help => 'myplugin.html',
form => 'simpleInputContainer',
nodes => ['myPluginEnabled', 'myPluginOption'],
}
],
};
}
sub ctrees {
return {
# Extend oidcRPMetaDataNode with additional options
oidcRPMetaDataNode => {
insert_after => 'oidcRPMetaDataMacros',
nodes => [
{
title => 'myPluginOidcOptions',
form => 'simpleInputContainer',
nodes => ['myPluginOidcAttr'],
}
],
},
};
}
sub constants {
return {
PE_MYPLUGIN_ERROR => 200,
};
}
sub lang {
return {
myPluginEnabled => {
en => 'Enable my plugin',
fr => 'Activer mon plugin',
},
myPluginOption => {
en => 'My plugin option',
fr => 'Option de mon plugin',
},
};
}
1;
=head2 JSON Format (.json)
{
"attributes": {
"myPluginEnabled": {
"type": "bool",
"default": 0,
"documentation": "Enable my plugin"
}
},
"tree": {
"insert_into": "generalParameters/plugins",
"nodes": [
{
"title": "myPluginNode",
"form": "simpleInputContainer",
"nodes": ["myPluginEnabled"]
}
]
},
"ctrees": {},
"constants": {
"PE_MYPLUGIN_ERROR": 200
},
"lang": {
"myPluginEnabled": {
"en": "Enable my plugin",
"fr": "Activer mon plugin"
( run in 0.433 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )