Lemonldap::NG::Manager::Build is only used to build javascript files and Lemonldap::NG constants Perl
files. It must be launched after each change.
DEVELOPERCORNER
To add a new parameter, you have to:
declare it in Manager/Build/Attributes.pm;
declare its position in the tree in Manager/Build/Tree.pm (or Manager/Build/CTrees.pm for complex nodes);
refresh files by using this (or launch any build makefile target at the root of the Lemonldap::NG project
sources).
See below for details.
Filesgenerated
`scripts/jsongenerator.pl` file uses Lemonldap::NG::Manager::Build::Attributes,
Lemonldap::NG::Manager::Build::Tree and Lemonldap::NG::Manager::Build::CTrees to generate
`site/htdocs/static/struct.json`:
Main file containing the tree view;
`site/htdocs/static/js/conftree.js`:
generates Virtualhosts, SAML and OpenID-Connect partners sub-trees;
`site/htdocs/static/reverseTree.json`:
map used by manager diff to find attribute position in the tree;
`Lemonldap::NG::Manager::Constants`:
constants used by all Perl manager components;
`Lemonldap::NG::Common::Conf::DefaultValues`:
constants used to read configuration;
`Lemonldap::NG::Manager::Attributes`:
parameters attributes used by the manager during configuration upload;
lmConf-1.json:
first configuration in file format;
Attributedeclaration
set your new attribute as a key of attributes() function that points to a hash ref containing:
type (required):
content type must be declared in sub types() in the same file (except if attribute embeds its own
tests) and must match to a form stored in static/forms/ directory;
help (optional):
Relative HTML path to help page (relative to /doc/pages/documentation/<version>/);
default (recommended):
default value to set if not defined;
select (optional):
required only if type is `select`. In this case, it must contain an array of { k => <keyName>, v =>
<display name> } hashref
documentation (recommended):
some words for other developers
test (optional):
if test is not defined for this type or if test must be more restrictive, set here a regular
expression or a subroutine. Arguments passed to subroutine are (keyValue, newConf, currentKey). It
returns 2 arguments: a boolean result and a message (if non empty message will be displayed as
warning or error depending of result);
msgFail (optional):
for regexp based tests, message to display in case of error. Words to translate have to be written as
so: __toTranslate__;
keyTest (optional):
for keys/values attributes, test to be applied on key;
keyMsgFail (optional):
for regexp based key tests, same as msgFail for keys test;
If you want to declare a new type, you have to declare following properties:
test, msgFail, keyTest, keyMsgFail as shown above,
form: form to use if it doesn't have the same name.
Treelocation
The tree is now very simple: it contains nodes and leaves. Leaves are designed only by their attribute
name. All description must be done in the file described above. Nodes are array member designed as this:
{
title => 'titleToTranslate',
help => 'helpUrl',
form => 'relativeUrl',
nodes => [
... nodes or leaf ...
]
}
Explanations:
title (required):
it must contain an entry of static/languages/lang.json
help (recommended):
as above, the relative HTML path to the help page (relative to /doc/pages/documentation/<version>/);
form (optional):
the name of a static/forms/<name>.html file
nodes:
array of sub nodes and leaf attached to this node
group:
must never be used in conjunction with nodes. Array of leaves only to be displayed in the same form
nodes_cond:
array of sub nodes that will be displayed with a filter. Not yet documented here, see the source code
of site/htdocs/static/js/filterFunctions.js.
nodes_filter:
filter entry in site/htdocs/static/js/filterFunctions.js for the same feature.