NAME
Lemonldap::NG::Manager::Build - Static files generator of Lemonldap::NG Web-SSO system.
SYNOPSIS
use Lemonldap::NG::Manager::Build;
Lemonldap::NG::Manager::Build->run(
  structFile            => "site/htdocs/static/struct.json",
  confTreeFile          => "site/htdocs/static/js/conftree.js",
  managerConstantsFile  => "lib/Lemonldap/NG/Common/Conf/ReConstants.pm",
  managerAttributesFile => 'lib/Lemonldap/NG/Manager/Attributes.pm',
  defaultValuesFile     => "lib/Lemonldap/NG/Common/Conf/DefaultValues.pm",
  firstLmConfFile       => "_example/conf/lmConf-1.json",
  reverseTreeFile       => "site/htdocs/static/reverseTree.json",
);
DESCRIPTION
Lemonldap::NG::Manager::Build is only used to build javascript files and Lemonldap::NG constants Perl files. It must be launched after each change.
DEVELOPER CORNER
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.
Files generated
`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;
 
Attribute declaration
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.
 
Tree location
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.
 
SEE ALSO
AUTHORS
- LemonLDAP::NG team http://lemonldap-ng.org/team
 
BUG REPORT
Use OW2 system to report bug or ask for features: https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/issues
Note that if you want to post a ticket for a conf upload problem, please see Lemonldap::NG::Manager::Conf::Parser before.
DOWNLOAD
Lemonldap::NG is available at https://lemonldap-ng.org/download
COPYRIGHT AND LICENSE
See COPYING file for details.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.