Compare commits

...

415 commits

Author SHA1 Message Date
Benjamin Renard 151b229c3d
LSformElement_postaladdress: update OSM nominatim search URL 2024-04-24 11:22:39 +02:00
Benjamin Renard 118b784a5d
API: allow to execute LSobject's custom actions 2024-04-04 16:11:06 +02:00
Benjamin Renard 2db4d0fbae
Add possibily to make global search using API 2024-03-28 12:44:18 +01:00
Benjamin Renard bd98a8b8ef
LSldapObject: add force_generation_if_empty parameter 2024-03-04 11:36:05 +01:00
Benjamin Renard 1a88707f87
LSldapObject: defaulty set attribute default value on creation even if is not present in form
Could be configured using the new set_default_value_on_creation_if_empty 
parameter.
2024-03-04 11:34:41 +01:00
Benjamin Renard 4ce95e54b8
LSattr_html_gpg_pub_key: improve CSS 2024-02-28 19:10:48 +01:00
Benjamin Renard 2ccf579125
LSattr_html_gpg_pub_key & LSformRule_gpg_pub_key: fix setting GnuPG home dir in PHP 7.3 2024-02-28 18:47:09 +01:00
Benjamin Renard 171161ae18
Add LSattr_html_gpg_pub_key & LSformRule_gpg_pub_key 2024-02-28 18:18:57 +01:00
Benjamin Renard d26c52400e
LSaddon::mail: fix handling CC/BCC headers if not provided as array 2024-02-22 19:13:35 +01:00
Benjamin Renard 62759330a8
LSaddon::mail: remove useless label 2024-02-22 18:52:11 +01:00
Benjamin Renard 5e9773a015
LSaddon::mail: improve CSS of templates editor view 2024-02-22 18:10:28 +01:00
Benjamin Renard 557db5d456
Fix Gitlab CI tests 2024-02-22 17:03:29 +01:00
Benjamin Renard 15f67ef00d
Improve docker image to make it smaller 2024-02-22 16:57:18 +01:00
Benjamin Renard 753f47fa97
Move mail template in LSaddon::mail and add editor view and docs 2024-02-22 16:15:00 +01:00
Benjamin Renard 89c363bd80
Fix handling mime type on serving libs's static files 2024-02-22 15:10:33 +01:00
Benjamin Renard e59ab4a94c
Add common LStabs CSS classes to handle tabs content
Based on stuff provided by LSaccessRightsMatrixView.
2024-02-22 15:09:20 +01:00
Benjamin Renard 87e58e6425
LSmail: add possibility to send email using template 2024-02-19 20:19:52 +01:00
Benjamin Renard e9c49c242f
LSaddon::phpldapadmin: fix default config to avoid PHP warning in CLI mode 2024-02-19 19:58:51 +01:00
Benjamin Renard e8781ab779
LScli::unquote_word: Fix PHP warning 2024-02-19 19:58:04 +01:00
Benjamin Renard 15e3ffe6ef
LSaddon::mail: Fix handling multiple recipients 2024-02-19 19:46:27 +01:00
Benjamin Renard 34396a5fe1
Improve test_send_mail CLI command 2024-02-19 19:46:26 +01:00
Benjamin Renard dc8e08b5d1 Fix PHP 8.2 error on sorting values 2024-02-10 18:35:54 +01:00
Benjamin Renard bf1a3affe4
Add selection boxes feature on objects list page (for LSsearch customActions) 2024-02-01 14:25:59 +01:00
Benjamin Renard 2104187b14
LSaddon::ppolicy: fix registering exportPpolicyInfo API method 2023-12-05 13:02:45 +01:00
Benjamin Renard 78af62d428
LSaddon::ppolicy: improve password expiration extra displayed column
Add LStip to show password last changed date and password max age.
2023-12-05 12:51:54 +01:00
Benjamin Renard 2d08374a53
build-deb.sh: exclude docker & build-deb.sh related commits in generated changelog 2023-10-26 18:22:21 +02:00
Benjamin Renard 129cfa537b
Docker: add build-and-push-all.sh 2023-10-26 18:19:20 +02:00
Benjamin Renard f176b626d5
Release 4.2.0-1 2023-10-26 17:52:39 +02:00
Benjamin Renard f9bf3a7597
CI: fully specified image names 2023-10-26 17:44:02 +02:00
Benjamin Renard 06654969d0
CI: publish a new release in Gitlab on new tag 2023-10-26 17:44:02 +02:00
Benjamin Renard e985f50d8a
CI: add build & publish step for debian stable package 2023-10-26 17:44:01 +02:00
Benjamin Renard 59436c9fe4
CI: add tests step on Bookworm 2023-10-26 11:44:47 +02:00
Benjamin Renard 1c42aa3a47
Remove old docbook doc related stuff 2023-10-13 19:28:14 +02:00
Benjamin Renard 96d99f5b06
Update translation 2023-10-13 19:28:13 +02:00
Benjamin Renard 5998983315
LSaddon::posix: Add deleteHomeDirectoryByFTP function 2023-10-13 19:28:13 +02:00
Benjamin Renard 5e8d625a34
debian: update build doc dependencies 2023-10-13 19:28:12 +02:00
Benjamin Renard 7a4f0fac69
LSaddon::ftp: Remove PEAR Net_FTP dependency 2023-10-13 19:28:12 +02:00
Benjamin Renard 9384d2e312
LSconfig: add escape_key, explode_keys and implode_keys helper methods
Allow escaping dot in config variable key
2023-10-12 19:00:29 +02:00
Benjamin Renard e77a96066d
CI: clean debian sid build step artifacts 2023-10-08 23:53:37 +02:00
Benjamin Renard c0e388f09b
doc: clean all-in-one HTML file 2023-10-08 23:34:13 +02:00
Benjamin Renard cfa2ff1e6d
doc: use mike to keep old released doc 2023-10-08 21:49:14 +02:00
Benjamin Renard 1639001a3c
LSaddon::accesslog: Fix infinity loop problem handling entry renaming event with the same DN 2023-10-05 12:29:02 +02:00
Benjamin Renard 2de8c720b5
CI: build debian Sid package and publish it on project APT repository 2023-09-28 16:44:54 +02:00
Benjamin Renard 0a98056be9
debian: fix building doc 2023-09-28 16:43:07 +02:00
Benjamin Renard c60730f25c
Remove useless old docbook doc scripts 2023-09-28 14:54:36 +02:00
Benjamin Renard aa197983a1
CI: handle building & deploying ldapsaisie-snapshot.tar.gz file 2023-09-28 14:28:04 +02:00
Benjamin Renard 1b672f59e7
Switch doc format to Markdown / Mkdocs 2023-09-28 14:05:35 +02:00
Benjamin Renard 11a8448b0a
Improve LSldapObject::getDisplayValue() method to match with getValue() method's parameters 2023-09-18 16:59:33 +02:00
Benjamin Renard 95f60a534a
Fix LSattribute::getDisplayValue() when called on updated attribute 2023-09-18 16:58:46 +02:00
Benjamin Renard 961740c855
Fix some french translated messages 2023-08-18 15:51:28 +02:00
Benjamin Renard 0c171789d3
LSauth add filter_function parameter 2023-08-18 15:51:27 +02:00
Benjamin Renard 05519c5432
LSattr_ldap:📅 replace unique format parameter by a list 2023-08-18 12:26:26 +02:00
Benjamin Renard fde66b2335
LSauthMethod::CAS: fix support of phpCAS >= 1.6.0 and patched Debian Buster 1.3.6-1+deb10u1 version 2023-08-18 11:46:06 +02:00
Benjamin Renard 5376435d8b
SUPANN: Add supannCMSIdEtiquette attribute support 2023-08-18 11:00:38 +02:00
Benjamin Renard fa5b5ceb6d
LSaddon::accesslog: improve displaying changes attributes values 2023-08-17 19:55:59 +02:00
Benjamin Renard 3a862ce93e Release 4.1.0-1 2023-07-22 13:41:15 +02:00
Benjamin Renard fea76e7af2
lsexample: make restore_lsexample compatible with OpenLDAP 2.5 (and Debian Bookworm) 2023-07-19 12:45:24 +02:00
Benjamin Renard 6ff53b412e
ioFormat: add update_only mode 2023-07-19 12:25:14 +02:00
Benjamin Renard a4319237f2
Fix PHP8 compatibility 2023-07-19 10:26:28 +02:00
Benjamin Renard a6d0f7d126
import: Check generated field value and stop import in case of error 2023-07-03 12:34:14 +02:00
Benjamin Renard 33e0687d1e
import: fix displaying attribute errors two times 2023-07-03 12:02:02 +02:00
Benjamin Renard b1ee3460b1
LSldapObject::validateAttrsData(): fix handling attribute generation of empty required attributes even if their new value have been provided 2023-06-28 11:29:55 +02:00
Benjamin Renard 0eb0143921
LSaddons: Code cleaning 2023-06-20 19:42:12 +02:00
Benjamin Renard 425df3da3a
Fix historical typo lenght vs length 2023-06-20 11:30:08 +02:00
Benjamin Renard 1a2fe50ba2
LSaddon::orgchart: add parameter to control access to the orchart 2023-06-15 11:26:42 +02:00
Benjamin Renard 7c48b8062b
LSio: trace errors and messages during import to map them with objects and hooks. 2023-05-26 11:31:19 +02:00
Benjamin Renard bc171e6092
generate_ldapsaisie_pot: Add -I/--internal paramater to use internal message extractor for PHP files instead of xgettext
Note: just for tests, not recommended.
2023-05-26 11:31:18 +02:00
Benjamin Renard b3cd453918
LSlang: fix handling backslash in export POT file 2023-05-26 11:31:18 +02:00
Benjamin Renard 1c900320db
LSlang: improve internal message extrators from PHP files
- add support of multiple lines messages
- detect and ignore commented code block
- improving code tracing

Note: still no support of advanced gettext functions (ngettext,
dcgettext, ...).
2023-05-26 11:31:17 +02:00
Benjamin Renard 65d1d50c3a
Templating tr function: provided message could now be formated as LSformat string using extra provided parameters
Example: {tr msg="Hello %(who)!" who="World"}
2023-05-26 10:26:56 +02:00
Benjamin Renard 087b7e3065
LSerror::getErrors(): add $reset parameter 2023-05-26 09:40:28 +02:00
Benjamin Renard c98e31b7c6
LSsearch: fix/improve handling session data
- avoid PHP warning about unset key
- make purge methods accepting more specific object type/context
- store cache in dedicated sub-array to avoid purging params when 
purging cache
- fix strange problem about not preserved params due to too large purges 
in some contexts
2023-05-24 20:13:02 +02:00
Benjamin Renard cc9942019f
light-blue.css: Fix LSobject-list links color on line hover 2023-05-24 19:07:01 +02:00
Benjamin Renard 513ed9a024
Fix default ASC & DESC images color to fit with clear themes 2023-05-24 19:05:46 +02:00
Benjamin Renard 6ca8427d5d
CI: add a test job for doc 2023-05-24 18:30:41 +02:00
Benjamin Renard 548315b248
CI: fix PHP tests jobs rules 2023-05-24 18:30:02 +02:00
Benjamin Renard 4003fdfcfc
globalSearch: defaulty display extraDisplayedColumns
The new globalSearch_extraDisplayedColumns parameter permit to control 
it for each LSobject types.
2023-05-24 18:18:23 +02:00
Benjamin Renard 341f555e0c
LSformElement::jsonCompositeAttribute: fix checking non-multiple components value 2023-05-24 13:28:32 +02:00
Benjamin Renard 27ad049ac7
LSio: improve handling time & memory limits and allow before_import hook to set them 2023-05-24 13:28:31 +02:00
Benjamin Renard 99f83f326d
LSformElement::supannCompositeAttribute: fix checking components value
LSformRule :: validate_values() expected an array of values and not a 
unique value
2023-05-24 12:00:51 +02:00
Benjamin Renard c97d47ac00
LSformElement::supannEtuInscription: fix cursusann component regex 2023-05-24 11:58:13 +02:00
Benjamin Renard 823006937a
generate_lang_file: ignore LSformat string with simple string substitution 2023-05-17 17:59:58 +02:00
Benjamin Renard 7b7ff7e629
getFData() & getFieldInFormat(): code cleaning 2023-05-17 17:11:50 +02:00
Benjamin Renard 2d108c8b08
Allow translation of LSioFormat labels 2023-05-17 16:26:35 +02:00
Benjamin Renard fa60f54b15
LSioFormat: add before/after import triggers feature 2023-05-17 11:38:01 +02:00
Benjamin Renard 89ee2f1ec3
LSioFormat: allow to generate attribute value using a custom callable 2023-05-12 11:50:11 +02:00
Benjamin Renard 069dac2afe
LSsession: fix saving context info method to keep existing other info 2023-04-20 17:45:41 +02:00
Benjamin Renard db491f51e7
LSaddon::accesslog: add show/hide LdapSaisie modifications button 2023-03-28 12:30:34 +02:00
Benjamin Renard 2b52e863e6
LScli: Fix typo 2023-03-28 12:29:44 +02:00
Benjamin Renard 3bbf770e33
LSaddon::accesslog: fix hashing SSHA512 password (in hashPasswordForLogs()) 2023-03-28 12:28:45 +02:00
Benjamin Renard 48e5d45d32
LScli / LSlang: starting CLI commands messages translation 2023-03-21 12:59:55 +01:00
Benjamin Renard e103bee065
LSlang / generate_lang_file: add possibility to translate message in a text editor 2023-03-21 11:33:42 +01:00
Benjamin Renard 13d83dbf75
LSaddon accesslog: global improvments and add self logging feature 2023-03-21 10:37:13 +01:00
Benjamin Renard 80a50f98f1
LSdefault / copyable helper: Fix translating messages 2023-03-21 10:31:52 +01:00
Benjamin Renard 140b000877
LSdefault / copyable helper: add copyable-no-btn helper class 2023-03-21 10:31:21 +01:00
Benjamin Renard d387052068
Add getRdn() and parentDn() helper functions 2023-03-20 19:46:27 +01:00
Benjamin Renard 1825ce429e
LSldap: add formatDate() method 2023-03-20 19:46:27 +01:00
Benjamin Renard 4ec5769276
Add generate_uuid() helper function 2023-03-20 19:46:26 +01:00
Benjamin Renard f3d6b10a9e
LSldap: add possibility to configure hooks 2023-03-20 19:46:25 +01:00
Benjamin Renard 58dbdcb7fe
LSldap :: getAttr(): be sure to return on array when $multiple is true 2023-03-20 15:32:25 +01:00
Benjamin Renard f3e7557421
LSaddon::orgchart: improve logging 2023-02-17 13:39:37 +01:00
Benjamin Renard 85d6a87fcf
supann: fix typo in generate_supannRessourceEtat 2023-02-10 13:35:16 +01:00
Benjamin Renard 29bfca1792
LSform / dataEntryForm: Add forceGeneration parameter 2023-02-10 11:59:55 +01:00
Benjamin Renard f8c38dd3b6
Add pre-commit xmlint hook on doc change 2023-02-10 11:59:18 +01:00
Benjamin Renard 796e3287e9
supann: rename supannCheckEduPersonPrimaryAffiliation as validate_eduPersonPrimaryAffiliation 2023-02-10 11:21:59 +01:00
Benjamin Renard 2239120912
supann: rename supannCheckEduPersonAffiliation as validate_eduPersonAffiliation 2023-02-10 11:21:32 +01:00
Benjamin Renard a529b8ce2b
supann: add validate_supannEntiteAffectationPrincipale 2023-02-10 11:20:40 +01:00
Benjamin Renard aae4751a41
supann: add generate_supannRessourceEtat 2023-02-10 11:19:45 +01:00
Benjamin Renard 1534a40c7b
supann: add generate_supannEntiteAffectationPrincipale 2023-02-10 11:19:24 +01:00
Benjamin Renard 85592f94fd Configure pre-commit to run PHPstan before commiting 2023-01-16 16:54:04 +01:00
Benjamin Renard f113c87a15 LSaddon::mail: fix catch all message suffix in HTML mode 2023-01-11 19:45:25 +01:00
Benjamin Renard 68fcb6f81a LSaddon::mail: make optional parameter of sendMail() defaulty null 2023-01-11 19:34:25 +01:00
Benjamin Renard e303706779 CI: fix local execution problems 2023-01-11 19:09:23 +01:00
Benjamin Renard cbf1ff1769 LSaddon::mail: add MAIL_CATCH_ALL parameter 2023-01-11 19:08:04 +01:00
Benjamin Renard a717f051b9 LSaddon::showSupportInfo: fix default right proposed in doc 2023-01-11 18:57:06 +01:00
Benjamin Renard 82b29e6abc LSsession::canExecuteCustomAction(): fix handling self LSprofile 2023-01-09 19:53:41 +01:00
Benjamin Renard 98a5e6c1b3 LSaddon::impersonate: fix default icon proposed in doc 2023-01-09 19:45:42 +01:00
Benjamin Renard 4f69036f2f Add LSaddon::showSupportInfo 2023-01-09 19:32:06 +01:00
Benjamin Renard 43cb6c3f93 Add LSaddon::impersonate 2023-01-09 18:07:15 +01:00
Benjamin Renard 1b38957235 LSsession::loadLSprofiles(): reset current LSprofiles on each call
Be sure to reset current LSprofiles before (re)loading it.
2023-01-09 17:38:41 +01:00
Benjamin Renard f4f39d967e CI: configure tests for all supported Debian versions 2023-01-03 15:37:19 +01:00
Benjamin Renard 89a13d86c6 Docker: Add stuff to build old Debian versions images 2023-01-03 15:35:56 +01:00
Benjamin Renard d80c15acc1 LStemplate: rollback from array class constant to class variables to restore PHP < 7 2023-01-03 15:32:03 +01:00
Benjamin Renard a3fc7bacfa LSexample: restore compatibility with Debian stretch 2023-01-03 15:24:06 +01:00
Benjamin Renard d7ba794839 Rollback class properties typing to restore PHP < 7.4 support 2023-01-03 12:51:45 +01:00
Benjamin Renard 56e17a40f6 phpstan: Be sure Mail & Mail_mime classes are loaded during analyse 2023-01-02 01:56:57 +01:00
Benjamin Renard f53d868640 Update .gitlab-ci.yml file 2023-01-02 00:45:20 +00:00
Benjamin Renard 8e1aa74e12 Update .gitlab-ci.yml file 2023-01-02 00:38:47 +00:00
Benjamin Renard ecaf2aeb13 Docker: add missing vimrc.local file 2023-01-02 01:20:19 +01:00
Benjamin Renard 20432adb14 Clean errors detected by PHPstan (level 3) 2023-01-02 01:17:46 +01:00
Benjamin Renard bbde10bbf0 Add some class properties type & coments and clean errors detected by PHPstan (level 2) 2023-01-01 19:38:03 +01:00
Benjamin Renard 8a02680114 Clean/normalize comments format about parameters & returned value of functions/methods 2022-12-31 05:52:31 +01:00
Benjamin Renard e71823b644 Clean errors detected by PHPstan (level 1) 2022-12-31 04:09:56 +01:00
Benjamin Renard 38fa02619d Clean PHP8 compatibility errors detected by PHPstan 2022-12-31 02:31:21 +01:00
Benjamin Renard 7f862c9765 Clean errors detected by PHPstan (level 0) and configure CI to run it on each commit 2022-12-31 02:02:28 +01:00
Benjamin Renard a8e0707e7a select_list/select_box: force sub-options at the end when sorting 2022-12-07 17:11:17 +01:00
Benjamin Renard a9d00cd3c1 select list/box: display values respecting possible values order 2022-12-05 11:37:17 +01:00
Benjamin Renard fd17f87a57 LSformElement::jsonCompositeAttribute: fix handling empty value & $onlyIfPresent parameter 2022-10-17 17:29:36 +02:00
Benjamin Renard a0ceb1dbdc search: handle translation of LSformat, alternativeLSformats and formaterLSformat 2022-09-30 10:37:55 +02:00
Benjamin Renard 466dec4a64 doc: fix syntax error in previous commit 2022-09-28 17:24:54 +02:00
Benjamin Renard dcf68a2330 LSprofiles by LSobject: add possibility to compute basedn using LSformat on authenticated user 2022-09-28 16:50:24 +02:00
Benjamin Renard a56b20728a LSform: fix handling default values of dataEntryForm 2022-08-01 11:27:28 +02:00
Benjamin Renard e23ee2f209 LSaddon::accesslog: show events author 2022-07-20 14:56:16 +02:00
Benjamin Renard 75258d9744 LSaddon::accesslog: Fix PHP < 7.3 compatibility 2022-07-20 14:53:28 +02:00
Benjamin Renard c0d8f9f81a LSldap::update(): fix object creation with required userPassword attribute 2022-06-23 10:17:44 +02:00
Benjamin Renard 1aa4dd8113 Improve tools in docker image 2022-06-17 12:40:08 +02:00
Benjamin Renard 913a340ed4 doc: fix programlisting opacity 2022-06-16 14:30:06 +02:00
Benjamin Renard 1da20e7dcf LSexample: remove showObjectAccessLogs custom action on LSpeople 2022-06-16 14:17:06 +02:00
Emmanuel Saracco 2adbdb62c7 Add LSaddon accesslog 2022-06-16 13:15:28 +02:00
Emmanuel Saracco 855bcc8564 LSselect : code cleaning 2022-06-16 12:59:14 +02:00
Emmanuel Saracco 3eba1e24d6 LSselect : fix ajax input 2022-06-16 11:50:42 +02:00
Benjamin Renard fd81cb496f Restore location paths in ldapsaisie.pot file but make it relative 2022-06-14 17:05:53 +02:00
Emmanuel Saracco 4ae9e304ad Translation: fix typo 2022-06-14 16:22:17 +02:00
Emmanuel Saracco c657e318dd LSlang: add "--no-location" to xgettext 2022-06-14 16:10:02 +02:00
Emmanuel Saracco 38d5fd5094 LSldap: add LDAP password policy 2022-06-14 16:06:55 +02:00
Benjamin Renard c4e9a33d2d Add docker image 2022-06-08 14:24:35 +02:00
Benjamin Renard 23d185c171 LSexample: defaulty enable LSpeople API access 2022-06-08 14:21:51 +02:00
Benjamin Renard 7eee7e32b9 restore_lsexample: fix exit code on success 2022-06-08 12:01:27 +02:00
Benjamin Renard 457995bc22 Add argon2 passwords support 2022-04-19 11:53:39 +02:00
Benjamin Renard f5d21ec93c LSaddon ppolicy: fix badges color of password_expiration extraDisplayedColumn 2022-04-11 19:09:45 +02:00
Benjamin Renard 728be381a6 LSaddon ppolicy: Improve style of password_expiration extraDisplayedColumn in doc 2022-04-11 18:44:11 +02:00
Benjamin Renard 064d0f720b Add ppolicy LSaddon 2022-04-11 18:24:41 +02:00
Benjamin Renard faad922f03 LSldap: translate comments 2022-03-07 16:06:39 +01:00
Benjamin Renard 9d3e69c86d LSldap: fix updating internal attributes
LSldap::getEntry method now list expected attributes when using
the LSldap::getLdapEntry method. This method now also accept a
new $attrs attribute to specify expected attributes list.
2022-03-07 16:02:50 +01:00
Benjamin Renard 9c53608fa2 LSformElement::pre: Fix long lines diplay 2022-03-02 20:34:30 +01:00
Benjamin Renard ad38812859 Add LSaddon orgchart
A first implementation of this addon which deserves some improvements.
2022-02-22 18:24:37 +01:00
Benjamin Renard bbf40090a9 LSformRule::inarray: add reverse parameter 2022-02-17 10:38:41 +01:00
Benjamin Renard fe1181b531 AJAX routes: ensure to enable AJAX mode even if an error occured handling request 2022-02-01 21:47:50 +01:00
Benjamin Renard 2375f95063 SUPANN: Add UAI code of ENSAD 2022-01-19 11:33:48 +01:00
Benjamin Renard 3ac8557e59 Release 4.0.0-1 2021-12-20 14:23:31 +01:00
Benjamin Renard 5d51114b8d Revert zxcvbn usage in LSexample to keep PHP5 support
Also add note about LSformRule_zxcvbn requirement of PHP >= 7.
2021-12-16 19:14:20 +01:00
Benjamin Renard db287937b7 Add LSformRule_zxcvbn 2021-12-16 18:58:29 +01:00
Benjamin Renard dfe3f7d27a LSaddon_mailquota: improve error reporting 2021-12-15 15:37:52 +01:00
Benjamin Renard 29966b75ae LSattribute::addToForm(): fix freezing 2021-11-29 12:46:58 +01:00
Benjamin Renard 25f2ccd32e LSformElement::getEmptyField(): do not set value to null (already set by fetchTemplate()) 2021-11-29 12:34:39 +01:00
Benjamin Renard b42093cf45 Improve handling Ajax mode
- LSurlRequest: add ajax property to check if Ajax mode is enabled
- LSurl: handle_request() now handle Ajax mode detection
- LSsession :: setApiMode now trigger LSsession :: setAjaxDisplay()
- Fix LStemplate::fatal_error() to correctly handle Ajax mode
- LSform: fix reporting failure on Ajax submit
2021-11-16 13:59:17 +01:00
Benjamin Renard d15fdc5d8e LSformElement::password: fix multiple sent email in some cases 2021-11-15 18:38:40 +01:00
Benjamin Renard 2d27a7049f LStemplate: fix & improve handling loop detection displaying fatal error 2021-10-25 19:05:10 +02:00
Benjamin Renard 74df3d2f61 LStemplate: improve handling loop detection displaying fatal error 2021-10-25 18:55:00 +02:00
Benjamin Renard 06071f2f5f LStemplate: detect and stop template displaying loop 2021-10-25 17:48:58 +02:00
Benjamin Renard c9b2341dbf LSformElement::password: fix sendind email in create form 2021-10-21 20:25:58 +02:00
Benjamin Renard 7cb8620cb5 Disable unidecode lib loading if mb_ord() not available (PHP>=7.2 required) 2021-10-21 20:19:45 +02:00
Benjamin Renard 27f06b7b66 generate_lang_file CLI command: add -F/--fix-utf8 parameter
Add an option to allow to try to load and fix existing translation files
with broken UTF-8 characters.
2021-10-08 17:20:31 +02:00
Benjamin Renard c0d874c68d generate_lang_file CLI command: add -K/--keep-unused parameter 2021-10-08 17:17:17 +02:00
Benjamin Renard 91b2b4e1ab preprod.css: fixed background in center of the screen (instead of the page) 2021-10-08 16:23:23 +02:00
Benjamin Renard 6770babe14 LSldapObject::getValue(): ensure return is array in case of attribute 2021-10-08 14:32:56 +02:00
Benjamin Renard 5e500d5cde LSurl: expose current request as static class variable 2021-10-08 12:31:48 +02:00
Benjamin Renard 5f06ec8d28 Improve getCallableName() helper function 2021-10-08 12:31:12 +02:00
Benjamin Renard d89d75f72b Fix handling disableOnSuccessMsg parameter on LSobject customActions 2021-10-08 12:17:51 +02:00
Benjamin Renard 28d08aaae8 ligth-blue: fix tables style 2021-10-08 11:52:48 +02:00
Benjamin Renard 17b9701061 LSaddon::supann Fix PHP5 support 2021-10-08 11:52:23 +02:00
Benjamin Renard 872a15af94 Fix handling noRedirect parameter of LSobject's customAction 2021-09-15 17:59:37 +02:00
Benjamin Renard 59ecc0d7fa Add authz proxy authorization support
Add useAuthzProxyControl parameter to combine with useUserCredentials to 
also using authz proxy authorization.
2021-08-26 20:16:22 +02:00
Benjamin Renard 9907e08f18 Code cleaning 2021-08-25 18:02:37 +02:00
Benjamin Renard a3aa857c78 Improve/fix LSdefaut / LSsession / LSerror / LSdebug / LSinfosBox 2021-08-25 16:50:29 +02:00
Benjamin Renard 26c0026cfc LSformRule_compare: code cleaning 2021-08-25 09:41:05 +02:00
Benjamin Renard fed9acfedd LSauthMethod_HTTP: fix logging HTTP_AUTHORIZATION parsing error 2021-08-25 09:39:25 +02:00
Benjamin Renard b5c5123bbb LSformElement_password: code cleaning 2021-08-25 09:37:44 +02:00
Benjamin Renard 2b71bba8db LSurl::add_handler: fix handling all params in case of multiple patterns 2021-08-18 12:29:50 +02:00
Benjamin Renard 2fa20316bc LSattr_html: add $singleValue class variable to handle this common case
Also unify the usage of the class variable $LSformElement_type.
2021-08-18 12:28:56 +02:00
Benjamin Renard 99f5cc3728 Fix restore_lsexample compatibility with cron env 2021-07-23 09:55:05 +02:00
Benjamin Renard 1ece486cd8 LSdyngroup: remove inexisting hooks 2021-07-22 11:52:27 +02:00
Benjamin Renard e67e087853 Fix debian package compilation (about recent changes on docs) 2021-07-22 11:32:12 +02:00
Benjamin Renard 43b3a15191 Fix & improve restore_lsexample script 2021-07-22 10:58:57 +02:00
Benjamin Renard bb4611d609 Add missing file in previous commit 2021-07-21 19:46:31 +02:00
Benjamin Renard e099a27533 Add dynamic groups support (with cache members attributes)
Add LSaddon dyngroup with feature to handle update static cache members
attributes on users or dyngroup URI changes. The update process could
also be runned using CLI update_dyngroups_members_cache command
(allowing cron task configuration).

LSexample also evoluate to add example of dynamic groups implementation.
On this occasion, the restore_lsexample script was completely rewrited.
2021-07-21 19:42:22 +02:00
Benjamin Renard a7356f5e67 LSformRules: configure CLI parameters autocompleters 2021-07-21 16:35:02 +02:00
Benjamin Renard f635ad609a Add test_form_rule CLI command
You have to manually load LSformRule class to use this command, for 
instance :

ldapsaisie -L LSformRule test_form_rule integer 12
2021-07-21 16:03:33 +02:00
Benjamin Renard 8cb36c7aa9 doc: fix typos 2021-07-19 16:54:41 +02:00
Benjamin Renard 18cc960755 Add LSformRule_numberOfValues 2021-07-19 16:54:41 +02:00
Benjamin Renard 531991a1e5 LSform/LSformRule: Handle rule without options or message 2021-07-19 16:54:41 +02:00
Benjamin Renard 3298320b3d LSform / LSformRule: only show default error message if rule does not trigger itself an error 2021-07-19 16:54:41 +02:00
Benjamin Renard 2a0981a21e Fix displaying toggle-menu button in responsive view 2021-07-19 16:54:41 +02:00
Benjamin Renard 12cfb6aa23 doc: improve contrib / LSformRules section 2021-07-12 23:56:54 +02:00
Benjamin Renard f07e10c40e Update french translation 2021-07-12 19:00:08 +02:00
Benjamin Renard 096b1d3301 LSform: display fields errors in same order as triggered 2021-07-12 18:59:47 +02:00
Benjamin Renard 0af81bf0a3 Improve LSformRules to throw LSformRuleException with error details 2021-07-12 18:59:34 +02:00
Benjamin Renard 9315acc545 Remove miss commited file 2021-07-12 18:29:44 +02:00
Benjamin Renard ba8b78706a jsonCompositeValue & supannCompositeValue: fix checking value method
Use LSformRule::validate_values() to check value instead of 
reimplementing incomplete checking method.
2021-07-12 17:57:07 +02:00
Benjamin Renard 988d744836 LSformRule: add possibility to throw custom exception to provide error details 2021-07-12 17:54:08 +02:00
Benjamin Renard 16c6d9fa6e Add preprod CSS & SVG image to easily add a watermark 2021-07-09 18:13:46 +02:00
Benjamin Renard 9469103f0e Add footer with LdapSaisie version 2021-07-08 10:39:09 +02:00
Benjamin Renard cc07f293ab LSformElement_supannCompositeAttribute: fix handling field JS reinitialization for date components 2021-07-07 18:32:15 +02:00
Benjamin Renard a0fc721776 LSformElement_supannCompositeAttribute: fix some PHP warnings in template 2021-07-07 17:53:12 +02:00
Benjamin Renard 3161ace3b7 LSformElement_supannCompositeAttribute::getPostData(): fix handing empty form value 2021-07-07 17:50:56 +02:00
Benjamin Renard e8b8dd1730 supannRessourceEtat & supannRessourceEtatDate: fix parsing & formating optional components value 2021-07-07 17:48:45 +02:00
Benjamin Renard 3c6ce596d9 LSsession::getLSuserObject(): improve errors logging 2021-07-07 16:27:35 +02:00
Benjamin Renard 3c02b94085 supannCompositeAttribute: fix clearing value 2021-07-07 16:26:55 +02:00
Benjamin Renard 6e98cfef20 supannRessourceEtat & supannRessourceEtatDate: fix parsing optional components value 2021-07-07 16:20:00 +02:00
Benjamin Renard 25162f406d supannRessourceEtat & supannRessourceEtatDate: add empty possible value to required components to allow empty value 2021-07-07 13:45:00 +02:00
Benjamin Renard 3c7ec2890a API / Show an object: make API return all accessible attribute
The method now return all accessible attributes and not only thow who 
are configured to be displayed in view
2021-06-30 18:11:26 +02:00
Benjamin Renard 6bc1e46afb Fix tmp files access 2021-06-29 17:00:37 +02:00
Benjamin Renard 0b850e8acb LSlang: fix handling locales that only existing in local directory 2021-06-29 16:50:25 +02:00
Benjamin Renard 516cc12d1b LSlang: fix loading alternative lang files in local directory 2021-06-29 16:46:50 +02:00
Benjamin Renard b936decf89 withoutAccents(): use unidecode lib if available 2021-06-28 16:22:26 +02:00
Benjamin Renard afb67b02e9 LSurl: add request HTTP method check that must match with one of supported by handler (default: GET or POST) 2021-06-24 10:21:50 +02:00
Benjamin Renard b37a2b321f Doc/LSrelation: Make canEdit_attribute parameter more visible in case of simple relation 2021-06-21 12:32:38 +02:00
Benjamin Renard c45f884aa1 LSrelation: add display_name_format parameter 2021-06-21 12:31:49 +02:00
Benjamin Renard 78de233321 API: add search parameters in return on LSobject search 2021-06-14 11:48:07 +02:00
Benjamin Renard 0360ab7951 API: add keepParamsBetweenSearches on LSobject search 2021-06-14 11:46:44 +02:00
Benjamin Renard 36eae85bc3 LSexample / personalTitle: remove Ms deprecated possible value 2021-06-11 18:29:52 +02:00
Benjamin Renard df57967669 LSattr_html::select_box: add inline parameter 2021-06-11 18:26:25 +02:00
Benjamin Renard bc652f81f8 Improve SUPANN attributes CSS 2021-06-11 17:58:31 +02:00
Benjamin Renard 107d8ba0af LSformElement supannRessourceEtat & supannRessourceEtatDate: do not check etat value on parsing attribute value 2021-06-11 16:43:59 +02:00
Benjamin Renard c87f609610 LSformElement_supannLabeledValue: improve API mode 2021-06-11 16:36:19 +02:00
Benjamin Renard c533aecc34 LSformElement_supannCompositeAttribute: handle API/CLI mode 2021-06-11 16:33:42 +02:00
Benjamin Renard 7c45c4bb8c LSformElement_supannCompositeAttribute: fix PHP syntax error 2021-06-11 16:22:32 +02:00
Benjamin Renard 9879dd3eda LSaddon SUPANN::supannParseCompositeValue(): check global value integrity 2021-06-11 16:21:57 +02:00
Benjamin Renard 72933c9408 Update french translation according to recent changes on LSaddon::supann 2021-06-11 14:37:19 +02:00
Benjamin Renard ef2271e7eb Add support of supannRessourceEtat & supannRessourceEtatDate attributes 2021-06-11 14:28:08 +02:00
Benjamin Renard 88bb4eef49 LSformElement_supannCompositeAttribute: add flexibility
- Add possibility to override parse/format value methods to handle
  different composite value formats
- Add possibility to configure date components LDAP format
2021-06-11 14:25:52 +02:00
Benjamin Renard 441b5d0af9 LSformElement_supannLabeledValue: Add validation of POST values from configured nomenclatures 2021-06-11 14:19:03 +02:00
Benjamin Renard 7e68b42b4c Add support of some SUPANN attributes
Add support of following SUPANN attributes:
- supannEtuDiplome
- supannEtuElementPedagogique
- supannEtuEtape
- supannEtuRegimeInscription
- supannEtuSecteurDisciplinaire
- supannEtuTypeDiplome

For each, a new specific LSattr_html & LSformElement class was added,
and a function is provided to generate then from supannEtuInscription
attribute values.
2021-06-11 14:17:42 +02:00
Benjamin Renard 11f32dea04 LSaddon::SUPANN: fix nomenclatures sorting problem 2021-06-11 11:28:15 +02:00
Benjamin Renard 83e795044f LSattr_ldap_sambaAcctFlagsparse_flags(): fix handling null|empty value 2021-06-10 19:02:19 +02:00
Benjamin Renard 8dbbda801a LSattr_ldap::naiveDate: Add format option 2021-06-10 19:01:22 +02:00
Benjamin Renard eccb234210 LSaddon::supann: Fix typo in previous commit 2021-06-10 18:50:29 +02:00
Benjamin Renard 159b3fbe7e Fix PHP warning 2021-06-10 18:45:39 +02:00
Benjamin Renard 40fdc92451 Code cleaning: fix tabs 2021-06-10 18:45:00 +02:00
Benjamin Renard febb83e39d Update french translation according to recent changes on LSaddon::supann 2021-06-10 18:06:19 +02:00
Benjamin Renard 1683cadd73 LSaddon::supann: add new components of supannEtuInscription attribute (SUPANN 2021) 2021-06-10 17:58:03 +02:00
Benjamin Renard bf28a6ea94 LSaddon::supann: rework on nomenclatures loading & add support of supannCodePopulation, supannEmpProfil & supannExtProfil 2021-06-10 17:56:34 +02:00
Benjamin Renard cab8c2e66d LSform: fix typo 2021-06-09 18:52:26 +02:00
Benjamin Renard 1aed362863 LSformElement::supannLabeledValue: Fix typo 2021-06-09 18:51:52 +02:00
Benjamin Renard ade6a031dc Add some missing SUPANN label images 2021-06-09 18:38:29 +02:00
Benjamin Renard 0f791ee3cc LSaddon::supann: add support for supannOIDCGenre attribute 2021-06-09 15:52:23 +02:00
Benjamin Renard 6dcae071b5 LSaddon::supann: Normalize affiliations & civilites nomenclatures 2021-06-09 15:50:27 +02:00
Benjamin Renard 0ac0a7e068 Add support for supannMailPrive, supannAdressePostalePrivee and supannTelephonePrive attributes 2021-06-09 15:48:46 +02:00
Benjamin Renard 077a44fdf9 LSform: fix displaying multiple errors on same field (on Ajax submit) 2021-06-09 14:48:35 +02:00
Benjamin Renard b104454603 LSaddon::supann: add eduPersonUniqueId() 2021-06-03 18:16:58 +02:00
Benjamin Renard fdbb9842df Improve doc about attribute values validation 2021-06-03 17:35:16 +02:00
Benjamin Renard 2a1d079717 LSformElement::supannLabeledValue: fix unparsable value display 2021-06-03 17:17:09 +02:00
Benjamin Renard 60532145e3 doc: add some details about filter parameter of search LSobject API method 2021-05-25 10:37:30 +02:00
Benjamin Renard 631502d9c2 LSsearch::setParamsFromRequest(): fix error handling filter parameter 2021-05-25 10:19:16 +02:00
Benjamin Renard 09d1aeb020 routes.php: fix error calling LSsession::addErrorCode() vs LSerror::addErrorCode() 2021-05-25 10:15:37 +02:00
Benjamin Renard 4b634e408d LSldapObject: fix triggering after_modify event on create 2021-05-21 11:29:57 +02:00
Benjamin Renard 59d6d0865d LSformElement::password: fix using LSldapobject getDisplayFData method instead of getFData 2021-05-21 11:29:57 +02:00
Florent Angebault d94f96498a doc: fix some typos 2021-05-04 18:56:24 +02:00
Benjamin Renard 7005100ac4 LSioFormat: handle multiple formats for generated fields 2021-04-27 12:13:32 +02:00
Benjamin Renard 6d95f9bfd5 LSauthMethod: fix PHP warning 2021-04-14 16:09:03 +02:00
Benjamin Renard c81e2d0ee3 LSformElement::mail: fix duplicated email JS button 2021-04-14 15:55:38 +02:00
Benjamin Renard 639f46d8a4 Add LSdefaut copyable feature and use it in showTechInfo 2021-04-14 15:46:36 +02:00
Benjamin Renard aa48cd3980 typo 2021-04-13 19:29:14 +02:00
Benjamin Renard f81ac1e31e Some other fixes/improvements in README file 2021-04-13 19:28:15 +02:00
Benjamin Renard 0a0f2d7730 Some improvements in README file 2021-04-13 19:22:03 +02:00
Benjamin Renard 342e575e9f Add README file 2021-04-13 19:12:48 +02:00
Benjamin Renard d6aad3acc8 doc: add sections missing IDs 2021-04-13 18:45:47 +02:00
Benjamin Renard 2c64eb8e97 doc: add IDs to install sections 2021-04-13 18:23:01 +02:00
Benjamin Renard 2b6b8ce270 Fix project URLs and list emails addresses 2021-04-13 18:04:19 +02:00
Benjamin Renard 20c1148f69 doc: Remove PEAR File_CSV_DataSource deprecated dependency 2021-04-13 17:49:04 +02:00
Benjamin Renard d637a570f1 LSattr_html::valueWithUnit: fix handling zero value 2021-03-25 15:52:51 +01:00
Benjamin Renard dff2aa8b46 light-blue.css: fix handling LSformElement_valueWithUnit width 2021-03-25 15:36:07 +01:00
Benjamin Renard 6cce15ddf5 pwdPolicy: improve duration attributes 2021-03-25 15:35:38 +01:00
Benjamin Renard 573737adfd LSio::import/export: set timeout according to the number of objects 2021-03-23 16:40:03 +01:00
Benjamin Renard 0ffbf3274a API::search method: set timeout according to the number of objects in response 2021-03-23 16:34:21 +01:00
Benjamin Renard 15823ad677 API::search method: add attributesDetails parameter 2021-03-23 14:44:01 +01:00
Benjamin Renard 84c3cd0d9b API::search method: fix handling custom attributes 2021-03-23 14:28:40 +01:00
Benjamin Renard d0397ec41e LSattribute & LSattr_html: fix handling current/provided data 2021-03-23 14:27:27 +01:00
Benjamin Renard 3ddc51004f LSformElement::image: fix bug deleting current image 2021-03-23 14:23:33 +01:00
Benjamin Renard 0e2911dfe5 LSformElement::image: fix getApiValue() method on multiple values 2021-03-23 12:38:36 +01:00
Benjamin Renard f960b2d394 API: search method now return true attributes value as handle by LdapSaisie (instead of raw attributes's values) 2021-03-23 12:37:45 +01:00
Benjamin Renard 60d67f3123 pwdFailureTime: fix/improve no_value_label 2021-03-19 16:31:30 +01:00
Benjamin Renard 640c0c1d70 LSattr_ldap::pwdHistory: change timezone to local before displaying 2021-03-19 14:11:52 +01:00
Benjamin Renard 96c7e33034 API objects list method: add as_list parameter 2021-03-17 18:37:19 +01:00
Benjamin Renard 78fedd79b2 LSaccessRightsMatrixView: handle inherited rights from user LSprofiles 2021-03-16 17:52:08 +01:00
Benjamin Renard 3703d0330e LSaccessRightsMatrixView: handle LSform layout to ordering attributes 2021-03-16 17:48:49 +01:00
Benjamin Renard 3d9b3c2947 LSsession::displayAjaxReturn(): Adjust HTTP returned code on unsuccessfull request 2021-03-11 17:29:20 +01:00
Benjamin Renard 825b5eb52f Ppolicy : fix french translation (again) 2021-03-03 19:24:26 +01:00
Benjamin Renard 67774a6832 LSformElement :: mail: Move autocomplete feature in text parent class 2021-03-03 14:34:06 +01:00
Benjamin Renard b26e21fb51 Ppolicy : fix french translation (again) 2021-03-02 16:28:37 +01:00
Benjamin Renard 7578b76737 Ppolicy : fix french translation 2021-03-02 09:57:55 +01:00
Benjamin Renard d23c84a87d ligth-blue.css: fix handling ul.LSselect_selectable_object_types 2021-02-25 15:49:15 +01:00
Benjamin Renard 465d88a609 Fix Debian package building 2021-02-25 10:59:41 +01:00
Benjamin Renard 935060987b restore_lsexample: fix source directory path auto-detection 2021-02-24 20:20:11 +01:00
Benjamin Renard bf82051249 Add restore_lsexample script 2021-02-24 20:12:03 +01:00
Benjamin Renard 44ab0ecab5 LSexample: add sysaccounts pwdPolicy 2021-02-24 20:11:50 +01:00
Benjamin Renard 009cb34122 LSexample: rename LDIF schema file 2021-02-24 19:38:48 +01:00
Benjamin Renard f3b16bc4f2 LSexample: update LDIF schema file 2021-02-24 19:37:24 +01:00
Benjamin Renard ba2de0f9ec LSexample: Add Ppolicy support 2021-02-24 19:15:42 +01:00
Benjamin Renard c9f63fa5e9 Fix some PHP warnings 2021-02-23 20:03:04 +01:00
Benjamin Renard 3151721838 Fix/improve LSobject & LSsearch customActions code 2021-02-23 20:02:45 +01:00
Benjamin Renard 5b7b22dde1 Fix/improve/factorize search pagination
First page of a search is now one instead of zero. The pagination.tpl 
template file contain factorized code to display pages list HTML code.
2021-02-22 17:31:57 +01:00
Benjamin Renard 8c317e127c LSattribute::addToForm(): fix checking user rights before adding/freezing it 2021-02-22 15:50:43 +01:00
Benjamin Renard a217e42a19 LSioFormat: Don't warn about non-added export attribute, just debug it 2021-02-18 16:02:46 +01:00
Benjamin Renard 4c4983b634 LSioFormat: Add some checks/logs during export process 2021-02-18 15:51:46 +01:00
Benjamin Renard 6098f3bc5f LSioFormatCSV: remove unused require on 'File/CSV/DataSource.php' 2021-02-18 15:49:51 +01:00
Benjamin Renard 91af444d0a Make logrotate handling all log file in /var/log/ldapsaisie 2021-02-17 18:32:39 +01:00
Benjamin Renard 6b4bc036e3 LSaddon::supann: add generate_supann_codeEtablissement_uai_nomenclature CLI command 2021-02-17 17:20:52 +01:00
Benjamin Renard 60eca6967c LSaddon::supann: Update/clean UAI nomenclatures 2021-02-17 17:17:51 +01:00
Benjamin Renard 68b1c182db LSaddon::supann: Update/clean nomenclatures 2021-02-17 11:58:55 +01:00
Benjamin Renard fb62ce2eed Fix reconnectAs() calls 2021-02-17 11:45:39 +01:00
Benjamin Renard d27a59f807 Add LSobject import/export API methods 2021-02-08 12:42:00 +01:00
Benjamin Renard 82a236a67c LSattr_ldap_password: fix verify method for Salted SHA2 passwords 2021-02-08 11:11:23 +01:00
Benjamin Renard f47e40a5ac LSio: fix isSubmit() method to handle GET or POST forms 2021-02-05 18:39:24 +01:00
Benjamin Renard 1e284f098a Regroup LSimport & LSexport classes in one common LSio class 2021-02-05 18:37:07 +01:00
Benjamin Renard f36c989136 Add import & export CLI commands 2021-02-05 18:12:44 +01:00
Benjamin Renard b8040e3d8b LSformElement::select: fix typo in last commit 2021-02-05 16:41:10 +01:00
Benjamin Renard 19dd343106 LSformElement::getApiValue(): add $details parameter
This parameter permit to control if the returned value contain or not 
details. By default (no details), the value used the format as accept by 
create/modify method. The details mode is more efficient to display the 
value.
2021-02-05 12:22:44 +01:00
Benjamin Renard 36a1719b26 LSexample/LSpeople: improve pagination config 2021-02-05 12:18:58 +01:00
Benjamin Renard 5f4798a5a1 Add export feature using existing LSioFormats 2021-02-05 12:18:26 +01:00
Benjamin Renard 7ecfa33afc import: fix some PHP warnings and update comments 2021-02-04 12:35:14 +01:00
Benjamin Renard 7af066f4c2 LSimport: code cleaning and reload form options after submiting 2021-02-04 11:52:26 +01:00
Benjamin Renard a25b1e8c10 LSldapObject: clean updata/validate form data code to fix handling just check mode 2021-02-04 11:49:35 +01:00
Benjamin Renard e05f0df20d Fix PHP warning 2021-02-04 10:33:13 +01:00
Benjamin Renard 16373e6904 Fix content-type on Ajax return 2021-02-04 10:22:10 +01:00
Benjamin Renard 5c10277861 Doc: Add anchors for API sections 2021-02-03 15:09:25 +01:00
Benjamin Renard 638bb83eed Doc / API relation method: use group objects from LSexample 2021-02-03 15:01:35 +01:00
Benjamin Renard ff57a12b0e Fix typo in API doc 2021-02-03 15:00:45 +01:00
Benjamin Renard 724e9acedd Fix PHP5 error compatibility in last commit 2021-02-03 14:46:06 +01:00
Benjamin Renard 0ec390e1fe Add API feature
Some major changes have been made to handle this new feature :
- LSsession now have a flag about API mode. The displayTemplate() and
  displayAjaxReturn() methods have been adjust to correctly handle this
  mode.
- LSauth system have been adjust to handle a custom API mode :
  - LSauthMethod can support or not this mode : the $api_mode_supported
    permit to defined if supported (default, false). Currently, only
    HTTP (default in API mode) and annonymous mode support it.
  - An api_access parameter permit to configure witch type of user
    LSobject types could use the API. This flag must be set to True to
    allow a type of LSobject (default: False). In a same way, a
    web_access parameter now permit to disable Web access for some
    types of users (but this parameter is optional and its default value
    is True).
  - The HTTP method is the privileged first method for API mode. In this
    mode, if auth data aren't present in environment, it will request it
    by triggered a 403 HTTP error. Realm can be configured with new
    LSAUTHMETHOD_HTTP_API_REALM constant.
- The LStemplate system handle API mode to correctly react on errors: it
  return a JSON answer instead of HTML page. Error pages also now return
  adjusted HTTP code (404 or 500).
- The LSurl system have been adjust to handle API mode :
  - On declaring handlers, we could now specify if it's an API view with
    new $api_mode paremeter of add_handler() method
  - The LSurlRequest object have a new attribute to check if it's an API
    request
  - The error_404() method handle the API mode to return JSON answer.
    Furthermore, if no handlers matched with the requested URL, API mode
    is automatically enabled if the requested URL starts with 'api/'.
- LSform implement it own API mode flag and a new submited flag that
  be toggle via the new setSubmited() method. Some major changes also
  occured on LSformElement classes to specifically handle API
  input/output for each types of attributes:
  - a new getApiValue() method permit to retrieve the API value of the
    attribute (on show API view)
  - the getPostData() method now have to correctly handle API input for
    the attribute (on create/modify API views). A programmatic way have
    been adopted for each types of attributes.
- The LSimport and LScli create/modify commands also evolved to enable
  API mode of the LSform. This permit to take advantage of the new
  capability of LSform/LSformElement to handle input values with a
  programmatic way.
- New routes have been add to handle API views. All this new routes
  start with 'api/1.0/' and use the same URL schema as the web UI. The
  API currently permit to search/show/add/modify/remove LSobjects and
  manages their relations.
2021-02-03 14:40:28 +01:00
Benjamin Renard e92bc10c8b LSldapObject: fix default $attrValues handling for updateObjectsInRelation/deleteOneObjectInRelation methods 2021-02-03 14:19:37 +01:00
Benjamin Renard 305d7447ff LSsession: Fix relationCanAccess() method and add debuging infos 2021-02-03 12:44:38 +01:00
Benjamin Renard 841b3d0bcf LSsearch::setParamsFromRequest(): add check on parameters load from request data 2021-02-02 20:42:02 +01:00
Benjamin Renard eb8cfbf66a LSsearch: rename method setParamsFormPostData() to setParamsFromRequest() 2021-02-02 20:30:08 +01:00
Benjamin Renard 2544687b27 LSsession::checkAccess(): fix checking read right 2021-02-02 20:28:02 +01:00
Benjamin Renard cb0106fda9 LSurlRequest: fix fatal error on logging 2021-01-29 17:12:29 +01:00
Benjamin Renard ac7e042c2a LSattribute: add default LDAP & HTML type (ascii / text) 2021-01-29 15:59:13 +01:00
Benjamin Renard 40a17c3524 LSlang: improve generate_lang_file command
Improve detection in PHP files, add detection in LSaddons/LSauthMethod 
config files and includes PHP files. Add -I/--include-upstream parameter 
(and use it for generate_ldapsaisie_pot command)
2021-01-29 15:23:22 +01:00
Benjamin Renard bc9cc77cde LSattr_ldap::shadowExpire: fix to rounding method to avoid date change 2021-01-29 12:30:59 +01:00
Benjamin Renard d48a3c2dc0 LSexample/LSpeople: fix sambaPwdCanChange as single-value 2021-01-29 12:00:03 +01:00
Benjamin Renard 29e499e1d6 LSldapObject::submitChange(): fix error renaming LSobject
Old RDN value was keep and block the update ot the other changed 
attributes.
2021-01-28 16:59:42 +01:00
Benjamin Renard fadfe2d2ba LSldapObject::validateAttrData(): fix fatal errors on missing formated log messages 2021-01-28 16:57:51 +01:00
Benjamin Renard 2fec564d91 LSexample/LSgroup: upgrade generate_gidNumber_withSambaDomainObject to generate_samba_gidNumber 2021-01-28 16:43:48 +01:00
Benjamin Renard 9680f8a18e LSform: fix displaying error in form in case of global error 2021-01-18 15:04:14 +01:00
Benjamin Renard 957777d44f LSldapObject::validateAttrData(): fix checking LDAP validation result 2021-01-18 15:03:26 +01:00
Benjamin Renard 7ef6e57c49 LSldapObject::submitChange(): code cleaning 2020-12-22 19:46:57 +01:00
Benjamin Renard a353ca5c37 LSldapObject::submitChange(): Add security check about isNew() return 2020-12-22 19:45:35 +01:00
Benjamin Renard 06b8fddc51 LSldapObject::validateAttrData(): check return type of LSldap::getNumberResult() 2020-12-22 19:44:51 +01:00
Benjamin Renard 89ecbb8a5c LSldap: fix search & getNumberResult methods to use basedn from configuration instead of empty one. 2020-12-22 19:43:50 +01:00
Benjamin Renard 14352da6bd LSformElement::jsonCompositeAttribute: Fix PHP warning 2020-12-22 19:32:14 +01:00
Benjamin Renard 514a2eb0fd Code cleaning 2020-12-22 18:42:56 +01:00
Benjamin Renard 7535530416 LSformRule: do not defined validate_one_by_one constant visibility
To keep compatibility with PHP < 7.1.
2020-12-22 18:05:28 +01:00
Benjamin Renard 43d2620f8e CLI search: add JSON output (with -j|--json parameters)
Futhermore, --pretty parameter also permit to prettify the JSON 
output.
2020-12-22 11:01:38 +01:00
Benjamin Renard 1c13aa7cdd CLI search: add --all parameter to permit to disable pagination 2020-12-22 11:00:49 +01:00
Benjamin Renard f6f2e352bc CLI show: add JSON output (with -j|--json parameters)
Futhermore, -p|--pretty parameter also permit to prettify the JSON 
output.
2020-12-22 10:31:23 +01:00
Benjamin Renard d39bba45fb CLI show: fix handling --raw-values parameter 2020-12-22 10:27:22 +01:00
Benjamin Renard 1428b5df62 LSattr_ldap::pwdHistory: fix fatal error on time encoding. 2020-12-21 14:54:37 +01:00
Benjamin Renard 114e3c48ac LSformRule: add validate_values() method and use it to value rules
Also add validate_one_by_one class constant to allow to handle 
validation on all values together instead of one-by-one.
2020-12-21 14:53:36 +01:00
Benjamin Renard 089693ea0e Fix/improve LSsession_13 errors (unconfigured/unknown custom action function) 2020-12-16 17:42:55 +01:00
Benjamin Renard d59f8c52bb HTML buttons are now handle by default CSS (and light-blue one) 2020-12-16 17:22:39 +01:00
Benjamin Renard 443d51865f Add LStable CSS class to make easier to create customized table 2020-12-16 17:21:47 +01:00
Benjamin Renard 28ac541c3c Fix possibility to scroll the menu on responsive view 2020-12-16 14:51:26 +01:00
Benjamin Renard 0f0bff5a77 LSldapObject::submitChange(): on new object, check if generated DN is not already affected 2020-12-14 19:42:19 +01:00
Benjamin Renard ab922356c0 LSsession :: loadLSprofilesLSobjects(): fix a PHP warning 2020-12-14 19:37:13 +01:00
Benjamin Renard a49cf4ba0c LSldapObject: fix/improve validateAttrData() 2020-12-14 19:36:21 +01:00
Benjamin Renard 8b292f538d LSconfig :: get(): add array casting (using ensureIsArray()) 2020-12-14 19:35:03 +01:00
Benjamin Renard 2abc369c73 LSformElement::labeledValue: fix label translation on freeze view 2020-12-10 17:21:21 +01:00
Benjamin Renard e2ff1503ab LSattr_ldap:📅 add note about date & time with micro-seconds 2020-12-09 18:58:43 +01:00
Benjamin Renard 3a946a47e3 Doc: Add note about the default_value LSattribute parameter 2020-12-02 20:20:05 +01:00
Benjamin Renard f2a78f3d5c LSattr_html::sambaAcctFlags: Add note about how setting default_value 2020-12-02 20:19:20 +01:00
Benjamin Renard f6a6c226f4 LSattribute: fix handling default_value in generateValue() 2020-12-02 20:17:18 +01:00
Benjamin Renard 852b375964 LSattribute: fix canBeGenerated() when default_value isn't a string 2020-12-02 19:53:29 +01:00
Benjamin Renard 1da0693138 LSaddon::samba: fix PHP warning about LS_SAMBA_UNIX_ID_POOL_DN contant 2020-12-02 19:49:37 +01:00
Benjamin Renard a7ab192274 Add LSldap_attr::pwdHistory 2020-12-02 18:12:00 +01:00
Benjamin Renard c6501d479b LSattr_html::jsonCompositeAttribute: Add fullWidth parameter and improve responsive display 2020-12-02 17:43:55 +01:00
Benjamin Renard 2161cc701a LSattr_ldap::compositeValueToJSON: use static instead of self keyword
Use static instead of self keyword to use static method. This permit to 
easily override this class.
2020-12-02 16:37:41 +01:00
Benjamin Renard bc462c07b6 Add some debugging/trace messages 2020-12-01 16:48:07 +01:00
Benjamin Renard 597054acad LSattr_ldap::shadowExpire: fix getUpdateData()
Fix to return a correctly rounded value as string.
2020-12-01 16:43:31 +01:00
Benjamin Renard 42dd0aa728 LSformElement :: date: fix getPostData() method 2020-12-01 16:42:20 +01:00
Benjamin Renard 3c75ef482e Remove historic read right on all attributes of the hard-coded "admin" LSprofile 2020-12-01 16:40:21 +01:00
Benjamin Renard 4e8a6db06b LSaddon::posix: fix generate_shadowLastChange()
Just return a timestamp because its designed to be used with 
LSattr_ldap_shadowExpire that will handled the division by 86400.
2020-12-01 16:37:01 +01:00
Benjamin Renard 0addf22c2e LSldapObject :: _updateData(): make method protected instead of private
This change allow this method usage from children classes to allow 
custom relation implementations.
2020-12-01 15:04:20 +01:00
Benjamin Renard b4a5824ee8 Code cleaning 2020-11-30 19:44:14 +01:00
Benjamin Renard 106a2d9f04 Use ensureIsArray() helper to make code more readable 2020-11-30 19:43:52 +01:00
Benjamin Renard 770533b7ec Ensure attributes values are always an array in LSattribute & LSattr_ldap 2020-11-30 19:37:44 +01:00
Benjamin Renard f7231229f5 LSsession: fix errors in changeAuthUser() and add logging messages 2020-11-30 16:13:36 +01:00
Benjamin Renard 335d6a4efa Default config files: add ending-line commas to avoid problem on editing 2020-11-25 15:59:36 +01:00
Benjamin Renard b93187f208 LSformElement::labeledValue: add translate_labels parameter and fix translating it 2020-11-25 15:46:25 +01:00
Benjamin Renard b00f59af2e light-blue.css: improve custom select display 2020-11-25 15:37:56 +01:00
Benjamin Renard 88248506cf LSformElement::labeledValue: fix/improve display 2020-11-25 15:20:25 +01:00
Benjamin Renard ef9470bf31 LSexample: fix value_attribute ('dn' vs '%{dn}') 2020-11-24 19:50:44 +01:00
Benjamin Renard 8b996885d1 LSsession: improve loadLSaddons() method 2020-11-17 17:56:04 +01:00
Benjamin Renard 56ffbd7a71 Fix bug in last commit 2020-11-17 17:47:50 +01:00
Benjamin Renard d5bfddf124 LSaddon::mail: Add test_send_mail CLI command 2020-11-17 11:26:06 +01:00
Benjamin Renard 6c35af3109 Fix PHP warning about undefined constant SELF (routes.php) 2020-10-08 18:08:35 +02:00
692 changed files with 93180 additions and 25128 deletions

7
.gitignore vendored
View file

@ -1,3 +1,10 @@
upgrade.log
*.sav
*~
vendor
/src/local.*
tests-report*.xml
.phplint-cache
/ldapsaisie-snapshot.tar.gz
/dist
/.env

351
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,351 @@
stages:
- tests
- build
- publish
- release
variables:
DOC_BRANCH: doc
DOC_REMOTE: https://gitlab-ci-token:${ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}"
tests:bookworm:
image:
name: docker.io/brenard/ldapsaisie:bookworm
entrypoint: [""]
stage: tests
rules:
- changes:
- src/**/*.php
script:
- rm -fr vendor
- composer install
- service slapd start
- >
if [ "$GITLAB_CI" == "true" ]; then
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-bookworm.xml
else
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon
fi
artifacts:
when: always
paths:
- tests-report-bookworm.xml
reports:
junit: tests-report-bookworm.xml
tests:bullseye:
image:
name: docker.io/brenard/ldapsaisie:bullseye
entrypoint: [""]
stage: tests
rules:
- changes:
- src/**/*.php
script:
- rm -fr vendor
- composer install
- service slapd start
- >
if [ "$GITLAB_CI" == "true" ]; then
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-bullseye.xml
else
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon
fi
artifacts:
when: always
paths:
- tests-report-bullseye.xml
reports:
junit: tests-report-bullseye.xml
tests:buster:
image:
name: docker.io/brenard/ldapsaisie:buster
entrypoint: [""]
stage: tests
rules:
- changes:
- src/**/*.php
script:
- rm -fr vendor
- composer install
- service slapd start
- ./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-buster.xml
- >
if [ "$GITLAB_CI" == "true" ]; then
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon --error-format=junit > tests-report-buster.xml
else
./vendor/bin/phpstan analyse --no-interaction --configuration=.phpstan/config.neon
fi
artifacts:
when: always
paths:
- tests-report-buster.xml
reports:
junit: tests-report-buster.xml
tests:stretch:
image:
name: docker.io/brenard/ldapsaisie:stretch
entrypoint: [""]
stage: tests
rules:
- changes:
- src/*
script:
- cd /tmp/
- composer require overtrue/phplint --dev
- cd -
- rm -f .phplint-cache
- /tmp/vendor/bin/phplint src
tests:jessie:
image:
name: docker.io/brenard/ldapsaisie:jessie
entrypoint: [""]
stage: tests
rules:
- changes:
- src/**/*.php
script:
- cd /tmp/
- composer require overtrue/phplint --dev
- cd -
- rm -f .phplint-cache
- /tmp/vendor/bin/phplint src
build:debian-stable:
image: docker.io/brenard/debian-python-deb:debian11
stage: build
cache:
paths:
- .cache/pip
only:
- tags
script:
- ./build-deb.sh --install-build-deps
- rm -fr dist/ldapsaisie-*
- dpkg-parsechangelog --format dpkg|awk '/ ldapsaisie /,0'|tail -n +3 > dist/release-notes.md
artifacts:
paths:
- dist/*
build:debian-sid:
image: docker.io/brenard/debian-python-deb:debian11
stage: build
cache:
paths:
- .cache/pip
only:
- master
script:
- ./build-deb.sh --install-build-deps --sid
- rm -fr dist/ldapsaisie-*
artifacts:
paths:
- dist/*
build:snapshot:
stage: build
image: docker.io/alpine
only:
- master
script:
- tar -czf ldapsaisie-snapshot.tar.gz --exclude=ldapsaisie-snapshot.tar.gz ./
artifacts:
paths:
- ldapsaisie-snapshot.tar.gz
build:doc:html:
stage: build
image: docker.io/python:alpine
cache:
paths:
- .cache/pip
- doc/venv
only:
- master
before_script:
- apk add make git
- git config user.name $GITLAB_USER_NAME
- git config user.email $GITLAB_USER_EMAIL
- VERSION=`git describe --tags`
- cd doc
- git fetch origin $DOC_BRANCH
- git rev-parse --verify $DOC_BRANCH && git branch -D $DOC_BRANCH || echo "No existing local git $DOC_BRANCH branch"
- git checkout -b $DOC_BRANCH origin/$DOC_BRANCH
- git checkout $CI_COMMIT_SHA
- make clean && make venv
script:
- make LdapSaisie.html
- test -n "$CI_COMMIT_TAG" && DOC_TAG=stable || DOC_TAG=dev
- source venv/bin/activate # We must have to activate the venv to use mike (direct call not supported)
- mike deploy --branch $DOC_BRANCH --remote $DOC_REMOTE --push --update-aliases $VERSION $DOC_TAG
- mike set-default --branch $DOC_BRANCH --remote $DOC_REMOTE --push $DOC_TAG
artifacts:
paths:
- doc/LdapSaisie.html
build:doc:pdf:
stage: build
image:
name: docker.io/pink33n/html-to-pdf
entrypoint: ["/bin/sh", "-c"]
only:
- master
needs:
- build:doc:html
script:
- rm -f doc/LdapSaisie.pdf
- /usr/local/bin/entrypoint --url file://$(pwd)/doc/LdapSaisie.html --pdf doc/LdapSaisie.pdf || test -f doc/LdapSaisie.pdf
artifacts:
paths:
- doc/LdapSaisie.pdf
build:doc:epub:
stage: build
image:
name: docker.io/pandoc/core
entrypoint: ["/bin/sh", "-c"]
only:
- master
needs:
- build:doc:html
before_script:
- apk add make
script:
- cd doc
- test ! -d venv && mkdir venv && touch public_html LdapSaisie.html
- make LdapSaisie.epub
artifacts:
paths:
- doc/LdapSaisie.epub
build:doc:append_additional_versions:
stage: build
image: docker.io/python:alpine
only:
- master
needs:
- build:doc:html
- build:doc:pdf
- build:doc:epub
before_script:
- apk add git
- git config user.name $GITLAB_USER_NAME
- git config user.email $GITLAB_USER_EMAIL
- VERSION=`git describe --tags`
- cd doc
- git fetch origin $DOC_BRANCH
- git rev-parse --verify $DOC_BRANCH && git branch -D $DOC_BRANCH || echo "No existing local git $DOC_BRANCH branch"
- git checkout -b $DOC_BRANCH origin/$DOC_BRANCH
- git pull origin $DOC_BRANCH
script:
- cp LdapSaisie.html LdapSaisie.pdf LdapSaisie.epub dist/$VERSION/
- git add dist/$VERSION/
- git commit --amend --no-edit
- git push --force $DOC_REMOTE $DOC_BRANCH
publish:doc:
stage: publish
image: docker.io/alpine:latest
only:
- master
needs:
- build:doc:append_additional_versions
before_script:
- apk update && apk add git openssh-client rsync
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
- mkdir ~/.ssh
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
- git fetch origin $DOC_BRANCH
- git rev-parse --verify $DOC_BRANCH && git branch -D $DOC_BRANCH || echo "No existing local git $DOC_BRANCH branch"
- git checkout -b $DOC_BRANCH origin/$DOC_BRANCH
- git pull origin $DOC_BRANCH
script:
- rsync -atv --exclude '.git*' --delete --progress ./doc/dist/ $SSH_USER@$SSH_HOST:doc/
publish:snapshot:
stage: publish
image: docker.io/alpine:latest
only:
- master
needs:
- build:snapshot
before_script:
- apk update && apk add openssh-client rsync
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
- mkdir ~/.ssh
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
script:
- rsync -atv ldapsaisie-snapshot.tar.gz $SSH_USER@$SSH_HOST:download/ldapsaisie-snapshot.tar.gz
publish:debian-stable:
stage: publish
image: docker.io/debian:stable-slim
needs:
- build:debian-stable
only:
- tags
before_script:
- apt-get update
- apt-get install -y --no-install-recommends rsync openssh-client dupload
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
- mkdir ~/.ssh
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
- echo "$DUPLOAD_CONFIG" | base64 -d > ~/.dupload.conf
script:
- echo "Publish stable debian packages on APT repository..."
- dupload --to debian-stable dist/ldapsaisie*changes
publish:gitlab:
stage: publish
image:
name: docker.io/alpine/httpie
entrypoint: ["/bin/sh", "-c"]
needs:
- build:debian-stable
only:
- tags
script:
- ./.gitlab/publish.sh
artifacts:
paths:
- dist/release-notes.md
- dist/release-files.txt
publish:debian-sid:
stage: publish
image: docker.io/debian:stable-slim
only:
- master
needs:
- build:debian-sid
before_script:
- apt-get update
- apt-get install -y --no-install-recommends rsync openssh-client dupload
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | base64 -d | ssh-add -
- mkdir ~/.ssh
- echo "$SSH_HOST_KEY" | base64 -d > ~/.ssh/known_hosts
- echo "$DUPLOAD_CONFIG" | base64 -d > ~/.dupload.conf
script:
- echo "Publish Sid debian packages on APT repository..."
- dupload --to debian-sid dist/ldapsaisie*changes
release:
stage: release
image:
name: registry.gitlab.com/gitlab-org/release-cli:latest
entrypoint: ["/bin/sh", "-c"]
needs:
- publish:gitlab
only:
- tags
script:
- ./.gitlab/release.sh

14
.gitlab/publish.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
cd `dirname $0`/../dist
rm -f release-files.txt
touch release-files.txt
for file in *.deb
do
# The filename can contain only lowercase letters (a-z), uppercase letter (A-Z), numbers (0-9), dots (.),
# hyphens (-), or underscores (_).
filename=`echo $file|tr '~' '_'|tr '+' '_'|sed s/[^a-zA-Z0-9\.\_\-]//g`
https --ignore-stdin --check-status PUT "${PACKAGE_REGISTRY_URL}/${filename}" "JOB-TOKEN: $CI_JOB_TOKEN" "@$file"
echo $filename >> release-files.txt
done

14
.gitlab/release.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/sh
echo "Creating a release for $CI_COMMIT_TAG"
cd `dirname $0`/../dist
CMD="release-cli create --name $CI_COMMIT_TAG --description release-notes.md --tag-name $CI_COMMIT_TAG"
for file in `cat release-files.txt`
do
CMD="$CMD --assets-link {\"name\":\"$file\",\"url\":\"${PACKAGE_REGISTRY_URL}/$file\"}"
done
$CMD

9
.phpstan/compat.php Normal file
View file

@ -0,0 +1,9 @@
<?php
$config = [];
if (PHP_VERSION_ID < 80100) {
$config['parameters']['typeAliases']['FTP\Connection'] = 'resource';
}
return $config;

18
.phpstan/config.neon Normal file
View file

@ -0,0 +1,18 @@
includes:
- compat.php
parameters:
level: 3
paths:
- ../src
excludePaths:
- ../src/local
- ../src/tmp
bootstrapFiles:
- ../src/includes/core.php
- init.php
typeAliases:
LSformat: 'string'
universalObjectCratesClasses:
- LSsearchEntry
- LSurlRequest

13
.phpstan/init.php Normal file
View file

@ -0,0 +1,13 @@
<?php
require 'Net/LDAP2.php';
require 'Console/Table.php';
require 'Zxcvbn/autoload.php';
require '/usr/share/php/phpseclib/autoload.php';
require 'CAS.php';
require 'Mail.php';
require 'Mail/mime.php';
require 'Html2Text.php';
spl_autoload_register(array('LSsession', 'loadLSclass'));
LSsession :: initialize();

9
.pre-commit-config.yaml Normal file
View file

@ -0,0 +1,9 @@
# Pre-commit hooks to run tests and ensure code is cleaned.
# See https://pre-commit.com for more information
repos:
- repo: https://github.com/digitalpulp/pre-commit-php.git
rev: 1.4.0
hooks:
- id: php-stan
files: ^src\/.*\.(php)$
args: ['--configuration=.phpstan/config.neon']

22
INSTALL
View file

@ -23,8 +23,8 @@
* La librairie File_CSV_DataSource (paquet php-file-csv-datasource dans Debian)
* La librairie Console_Table (nécessaire pour le fonctionnement de l'outil CLI, paquet php-console-table dans Debian)
* Les librairies Mail et Mail_Mime (nécessaire pour l'envoi de courriels, paquets php-mail et php-mail-mime dans Debian)
* La librairie Net_FTP (nécessaire pour le fonctionnement du LSaddon FTP, paquet php-console-table dans Debian)
* La librairie PhpSecLib (nécessaire pour le fonctionnement du LSaddon SSH, paquet php-console-table dans Debian)
* L'extension PHP ftp (nécessaire pour le fonctionnement du LSaddon FTP, paquet php-ftp dans Debian)
* La librairie PhpSecLib (nécessaire pour le fonctionnement du LSaddon SSH, paquet php-phpseclib dans Debian)
#################
# Avertissement #
@ -44,7 +44,7 @@
L'installation à partir du paquet Debian peut être réalisée soit en téléchargeant manuellement le paquet, soit en
déclarant le dépôt APT suivant dans votre fichier /etc/apt/sources.list :
deb http://ldapsaisie.easter-eggs.org/debian stable main
deb http://ldapsaisie.org/debian stable main
Il ne vous restera ensuite plus qu'a installer le paquet ldapsaisie avec la commande suivante :
@ -60,7 +60,7 @@ logiciel ce fera ensuite dans le dossier /etc/ldapsaisie/local/.
Le dépôt Git peut être récupéré anonymement en utilisant la commande suivante :
git clone git://git.labs.libre-entreprise.org/ldapsaisie.git
git clone https://gitlab.easter-eggs.com/ee/ldapsaisie.git
La racine web de l'application se trouvera alors dans le dossier /ldapsaisie/src/public_html/.
@ -70,7 +70,7 @@ La racine web de l'application se trouvera alors dans le dossier /ldapsaisie/src
Toutes les nuits, un snapshot de l'arbre Git est réalisé et est téléchargeable au format tar.gz à l'adresse suivante :
http://ldapsaisie.easter-eggs.org/download/ldapsaisie-snapshoot.tar.gz
http://ldapsaisie.org/download/ldapsaisie-snapshoot.tar.gz
3. Arborescence du projet
=========================
@ -78,7 +78,7 @@ Toutes les nuits, un snapshot de l'arbre Git est réalisé et est téléchargeab
Racine
doc/
Les fichiers sources de la documentation (docbook).
Les fichiers sources de la documentation (Markdown).
lsexample/
Les fichiers relatifs à l'annuaire d'exemple.
src/
@ -186,17 +186,11 @@ présente dans les sources du projet dans le dossier lsexample.
Nom du fichier de log des mises à jour.
THEME
Le nom du theme à installer (facultatif et non traité dans ce tutoriel).
BUILD_DOC
Variable booléene définissant si la documentation doit être compiler en utilisant le script buildDocExports.sh.
Ceci ne sera pas expliqué dans ce tutoriel et nous partirons donc du principe que cette variable est à 0.
########
# Note #
########
#
# * D'autres variables sont présentes dans ce fichier et concerne uniquement la compilation de la documentation.
# Elle peuvent être ignorée à partir du moment ou la variable BUILD_DOC vaut 0.
#
# * Il est possible d'utiliser dans ce fichier de configuration la variable bash $ROOT_DIR correspondant au chemin
# du dossier d'installation, c'est à dire dans notre exemple /var/www/ldapsaisie.
#
@ -266,8 +260,8 @@ types d'LSobjects : Pour plus de détails, consulter la documentation du projet.
4. La dernière étape à ce niveau consiste à lancer le script upgradeFromGit.sh pour qu'il installe les fichiers que
vous venez de créer. Ce script est conçu pour dire tout ce qu'il fait donc en cas de problème vous devriez
rapidement comprendre où cela coince. Dans tout les cas, n'hésitez pas à poser vos questions à la communauté sur la
liste <ldapsaisie-users@lists.labs.libre-entreprise.org>.
liste <ldapsaisie-users@lists.ldapsaisie.org>.
Liens
=====
1. Documentation du projet : http://ldapsaisie.easter-eggs.org/doc
1. Documentation du projet : http://ldapsaisie.org/doc

119
README.md Normal file
View file

@ -0,0 +1,119 @@
[![LdapSaisie](src/images/default/logo.png)](https://ldapsaisie.org)
LdapSaisie is a Web application developed to manage LDAP directory. It has been written in PHP / JavaScript and is published under the GNU GPL license. This application is designed to abstract the complexity of the directory through a simple and intuitive administration interface. It was designed with the objective of maximal modularity and easy extension or adaptation: you can use modules, extensions and plugins. LdapSaisie allows any system administrator to manage data stored inside a LDAP server, and thus administrate its information system in a simple manner. It's also possible to let users access their own data, with read-only or read-write access.
__[Project website](https://ldapsaisie.org)__ | __[Documentation](https://ldapsaisie.org/doc/full)__ | __[Demonstration](https://ldapsaisie.org/demo)__
## Key features
* Management of one or several directories;
* Management of simple and multi-branch directories;
* Able to manage unlimited objects types;
* Allow unlimited users to connect to the interface;
* A smooth rights management allows to manage each object and attributes access rights, and allows to delegate rights;
* Able to manage a lot of attribute type. Each attribute is given specific features which ease application navigation (Automatic password generation, field auto-completion);
* Able to manage high rate of attributes verification rules;
* Easy management of objects relationships;
* Easy modification of application design using templates;
* Management of personalized triggers, which allows to execute you own scripts, functions or methods at any action. The triggers scope is set to able a whole modification of application behavior;
* Smooth attributes visualization management, allowing to auto-modify attributes according to others;
* Possibility to manage hidden attributes.
* Customizable responsive web interface
## Screenshots
Please see [project website](https://ldapsaisie.org/en:screenshot) for some screenshots of the web interface. Keep in mind that the web interface could be personalized to feet with your needs.
## Demonstration
A demonstration version is available at :
http://ldapsaisie.org/demo
This demonstration interface is connected to a sample LDAP directory such that the schema and the imported LDIF file are provided with the sources of the application (in the `lsexample` directory).
Several demonstration accounts exist and have more or less extensive rights. These different accounts are presented on the login page.
## Installation
### Requirements
* PHP (>= 5.6)
* PEAR [NetLDAP2](http://pear.php.net/package/Net_LDAP2) package
* [Smarty](http://www.smarty.net/)
Some others dependencies exists for specific features, please see [documentation](https://ldapsaisie.org/doc/all-in-one/LdapSaisie.html#install-requirements) for details (french).
### Download
#### Using Debian packages
You can easily install LdapSaisie using Debian packages by using the following command to configure the project's repository :
```
echo "deb http://ldapsaisie.org/debian buster main" | tee /etc/apt/sources.list.d/ldapsaisie.list
wget -O - http://ldapsaisie.org/debian/ldapsaisie.gpg.key | apt-key add -
apt-get update
apt-get install ldapsaisie ldapsaisie-archive-keyring
```
__Note:__ Hourly generated Debian packages from _master_ branch are also provided in the _sid_ Debian repository of the project. To use these packages, use the following command to configure the project's _sid_ repository:
```
echo "deb http://ldapsaisie.org/debian sid main" | tee /etc/apt/sources.list.d/ldapsaisie.list
```
#### Using Git
The Git repos can be cloned anonymously with the command :
```
git clone https://gitlab.easter-eggs.com/ee/ldapsaisie.git
```
#### Snapshot
Every 15 minutes, a snapshot of the Git repository is built and available for download here:
http://ldapsaisie.org/download/ldapsaisie-snapshoot.tar.gz
### Configuration
It's the main step of the installation process and the most complicated. Firstly, you have to configure the global configuration mostly contain in the file `conf/config.inc.php`. Second, you will have to configure your object types and their relationships. You could refer to example files provided with the application and to the [official documentation](https://ldapsaisie.org/doc/all-in-one/LdapSaisie.html#config-LSobject) (in french).
__Note:__ A more details [tutorial](https://ldapsaisie.org/doc/all-in-one/LdapSaisie.html#install-tutorial) (in french) is also provided in official documentation.
## Upgrade
### Using Debian packages
When using Debian packages, the upgrading process to pretty simple: just upgrade the package:
```
apt-get update
apt-get install ldapsaisie
```
Once the application has been updated, paid attention to new features and points of vigilance described in [official documentation](https://ldapsaisie.org/doc/all-in-one/LdapSaisie.html#upgrade) (in french).
### Using Git
When using git, you could use the `upgradeFromGit.sh` which automates the update if you have followed the installation procedure for it.
This script will then take care of:
* Clean the working-tree Git from the symbolic links of the local files (and possibly the theme) set up during a previous execution;
* Empty the template cache;
* Update the Git working-tree via a `git pull`;
* Install symbolic links for local files. In case of locally modified files, the script will notify you and will allow you to simply update your local file (via a `vim -d`);
* Detect changes in the MO files (translation) and in this case trigger a reload of the web server to be taken into account;
* Option: to compile an up-to-date local version of the documentation;
Once the application has been updated, paid attention to new features and points of vigilance described in [official documentation](https://ldapsaisie.org/doc/all-in-one/LdapSaisie.html#upgrade) (in french).
## License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
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 (see `LICENSE` file); if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

133
build-deb.sh Executable file
View file

@ -0,0 +1,133 @@
#!/bin/bash
INSTALL_BUILD_DEPS=0
SID=0
function usage() {
[ -n "$@" ] && echo -e "$@\n" > /dev/stderr
echo "Usage: $0 [--install-build-deps] [--sid]"
[ -n "$@" ] && exit 1
}
idx=1
while [ $idx -le $# ]
do
OPT=${!idx}
case $OPT in
--install-build-deps)
INSTALL_BUILD_DEPS=1
;;
--sid)
SID=1
;;
-x)
set -x
;;
*)
usage "Unkown parameter '$OPT'"
esac
let idx=idx+1
done
# Enter source directory
cd $( dirname $0 )
# Install build dependencies
if [ $INSTALL_BUILD_DEPS -eq 1 ]
then
apt-get update
apt-get install --no-install-recommends --yes devscripts equivs sed rsync git lsb-release wget ca-certificates
mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
fi
DEBIAN_RELEASE=$( lsb_release -r -s|sed 's/\..*$//' )
# Install build dependencies based on Debian release
if [ $INSTALL_BUILD_DEPS -eq 1 ]
then
# On Debian Stretch, install GitPython using pip because strect version of python3-git have bugs
if [ $DEBIAN_RELEASE -eq 9 ]
then
apt-get install --no-install-recommends --yes python3-pip
python3 -m pip install GitPython
else
apt-get install --no-install-recommends --yes python3-git
fi
fi
# Install GPG key (if provided)
if [ -n "$GPG_KEY" ]
then
[ $INSTALL_BUILD_DEPS -eq 1 ] && apt-get install --no-install-recommends --yes gnupg2
echo "$GPG_KEY"|base64 -d|gpg --import
fi
# Retreive source package name
SOURCE_PACKAGE_NAME=$( grep -E ^Source: debian/control|sed 's/^Source: //' )
[ $SID -eq 1 ] && DEBIAN_CODENAME=sid || DEBIAN_CODENAME=$( lsb_release -c -s )
# Clean previous build
rm -fr $SOURCE_PACKAGE_NAME-build-deps* dist
# Compute version using git describe
VERSION="$( git describe --tags 2> /dev/null )"
# If no tag exist, git describe will fail: in this case, compute a 0.0 version with same format
# as git describe
[ $? -ne 0 ] && VERSION="0.0-$( git log --oneline|wc -l )-$( git describe --tags --always )"
# Create dist directory
mkdir dist
DIST_DIR=dist/$SOURCE_PACKAGE_NAME-$VERSION
rsync -av --exclude 'dist' --exclude '.git*' --exclude 'build.sh' --exclude 'docker-builds.sh' ./ $DIST_DIR/
# Check gitdch is installed
GITDCH=$(which gitdch)
set -e
if [ -z "$GITDCH" ]
then
TMP_GITDCH=$(mktemp -d)
echo "Temporary install gitdch in $TMP_GITDCH"
wget -O $TMP_GITDCH/gitdch https://gitea.zionetrix.net/bn8/gitdch/raw/master/gitdch
chmod +x $TMP_GITDCH/gitdch
GITDCH=$TMP_GITDCH/gitdch
else
TMP_GITDCH=""
fi
# Compute gitdch extra args
GITDCH_EXTRA_ARGS=()
[ -n "$DEBFULLNAME" ] && GITDCH_EXTRA_ARGS+=( "--maintainer-name" "$DEBFULLNAME" )
[ -n "$DEBEMAIL" ] && GITDCH_EXTRA_ARGS+=( "--maintainer-email" "$DEBEMAIL" )
if [ -e debian/changelog ]
then
LAST_MANUAL_COMMIT_ID=$( git log --oneline -n1 -- debian/changelog|awk '{print $1}' )
GITDCH_EXTRA_ARGS+=( "--append" "--revision" "${LAST_MANUAL_COMMIT_ID}..HEAD" )
fi
# Generate debian changelog using generate_debian_changelog.py
$GITDCH \
--package-name $SOURCE_PACKAGE_NAME \
--version="${VERSION}" \
--code-name $DEBIAN_CODENAME \
--output $DIST_DIR/debian/changelog \
--release-notes ../release-notes.md \
--exclude "^Docker: " \
--exclude "^CI: " \
--exclude "^debian: " \
--exclude "\.gitlab-ci\.yml" \
--exclude "build-deb\.sh" \
--exclude "README\.md" \
--exclude "^Merge branch " \
--verbose "${GITDCH_EXTRA_ARGS[@]}"
# Clean temporary gitdch installation
[ -n "$TMP_GITDCH" ] && rm -fr $TMP_GITDCH
# Build debian package
BUILD_ARGS=""
[ -z "$GPG_KEY" ] && BUILD_ARGS="--no-sign" || echo "GPG key provide, enable package signing."
cd $DIST_DIR/
dpkg-buildpackage $BUILD_ARGS

View file

@ -1,40 +0,0 @@
#!/bin/bash
ROOT_DIR=$( cd `dirname $0`; pwd )
LOCAL_CFG_DIR=$ROOT_DIR/config.local
# Import config
if [ ! -f $LOCAL_CFG_DIR/local.sh ]
then
echo "Error : You don't have create your own local.sh file in config.local directory. You could rely on the local.sh.example file to create your version."
exit 1
fi
source $LOCAL_CFG_DIR/local.sh
cd $ROOT_DIR/doc
make clean >> $LOG_FILE 2>&1
make >> $LOG_FILE 2>&1 &
export P=$!
trap exitwhell INT
function exitwhell() {
kill -9 $P 2> /dev/null
echo " -- INT -- "
}
while [ -d /proc/$P ]
do
echo -n .
sleep 1
done
echo done.
if [ -n "$EXPORT_DOC_DIR" ]
then
$ROOT_DIR/buildDocExports.sh
fi

View file

@ -1,167 +0,0 @@
#!/bin/bash
ROOT_DIR=$( cd `dirname $0`; pwd )
LOCAL_CFG_DIR=$ROOT_DIR/config.local
# Import config
if [ ! -f $LOCAL_CFG_DIR/local.sh ]
then
echo "Error : You don't have create your own local.sh file in config.local directory. You could rely on the local.sh.example file to create your version."
exit 1
fi
source $LOCAL_CFG_DIR/local.sh
if [ ! -n "$EXPORT_DOC_DIR" ]
then
echo "The EXPORT_DOC_DIR variable is not define. Export doc is disabled."
exit 0
fi
if [ ! -d "$EXPORT_DOC_DIR" ]
then
echo "Error : Export directory $EXPORT_DOC_DIR does not exist !"
exit 2
fi
DOC_DIR=$ROOT_DIR/doc
TMP_DIR=`mktemp -d`
ERROR=0
echo "-> Export documentation in $EXPORT_DOC_DIR :"
# PDF
if [ -n "$PDF" ]
then
echo -en "\t- PDF : "
# PDF
cp -f $DOC_DIR/exports/pdf/LdapSaisie.pdf $EXPORT_DOC_DIR/LdapSaisie.pdf
if [ $? -ne 0 ]
then
echo -e "\n-> Error"
ERROR=1
else
echo Ok
fi
fi
# EPUB
if [ -n "$EPUB" ]
then
echo -en "\t- EPUB : "
# EPUB
cp -f $DOC_DIR/exports/epub/LdapSaisie.epub $EXPORT_DOC_DIR/LdapSaisie.epub
if [ $? -ne 0 ]
then
echo -e "\n-> Error"
ERROR=1
else
echo Ok
fi
fi
# ALL-IN-ONE
if [ -n "$ALL_IN_ONE" ]
then
echo -en "\t- All-In-One : "
rm -fr $TMP_DIR/$ALL_IN_ONE
mkdir $TMP_DIR/$ALL_IN_ONE
cp $DOC_DIR/exports/html/all-in-one/LdapSaisie.html $TMP_DIR/$ALL_IN_ONE/
sed -i 's/\.\.\/\.\.\/\.\.\///g' $TMP_DIR/$ALL_IN_ONE/LdapSaisie.html
# IMAGES
cp -fr $IMAGES $TMP_DIR/$ALL_IN_ONE/images
mkdir $TMP_DIR/$ALL_IN_ONE/styles
cp $CSS $TMP_DIR/$ALL_IN_ONE/styles/
echo "done. Build archive and move it later ..."
fi
# ONLINE
if [ -n "$ONLINE" ]
then
echo -en "\t- On-line : "
rm -fr $TMP_DIR/$ONLINE
mkdir $TMP_DIR/$ONLINE
cp -fr $DOC_DIR/exports/html/online/*.html $TMP_DIR/$ONLINE
sed -i 's/\.\.\/\.\.\/\.\.\///g' $TMP_DIR/$ONLINE/*
# IMAGES
cp -fr $IMAGES $TMP_DIR/$ONLINE/images
mkdir $TMP_DIR/$ONLINE/styles
cp $CSS $TMP_DIR/$ONLINE/styles/
echo "done. Build archive and move it later ..."
fi
# DOCBOOK
if [ -n "$DOCBOOK" ]
then
echo -en "\t- Docbook : "
rm -fr $TMP_DIR/$DOCBOOK
mkdir $TMP_DIR/$DOCBOOK
cd $DOC_DIR
for i in `find -type d|grep -v 'export'`
do
mkdir -p $TMP_DIR/$DOCBOOK/$i
done
for i in `find -type f|egrep -v '(Makefile|^./export)'`
do
cp $i $TMP_DIR/$DOCBOOK/$i
done
echo "done. Build archive and move it later ..."
fi
echo "-> Build archives and move all in export directory :"
cd $TMP_DIR/
for i in $ALL_IN_ONE $ONLINE $DOCBOOK
do
echo -e "\t$i : "
echo -en "\t\t+ Archive : "
tar -cjf LdapSaisie--Doc--$i.tar.bz2 $i && mv LdapSaisie--Doc--$i.tar.bz2 $EXPORT_DOC_DIR/
if [ $? -eq 0 ]
then
echo Ok
else
echo -e "\n-> Error"
ERROR=1
fi
echo -en "\t\t+ Web dir : "
[ ! -d "$EXPORT_DOC_DIR/$i" ] && echo "you must create export $i directory manualy before run this script. (path : $EXPORT_DOC_DIR/$i)" && continue
rm -fr $EXPORT_DOC_DIR/$i/* && cp -fr $i/* $EXPORT_DOC_DIR/$i/ && rm -fr $i
if [ $? -eq 0 ]
then
echo Ok
else
echo -e "\n-> Error"
ERROR=1
fi
done
if [ -n "$LAST_UPDATE_FILE" ]
then
echo -n "-> Create last-update file : "
echo "Last update :" > $LAST_UPDATE_FILE
date >> $LAST_UPDATE_FILE
cd $ROOT_DIR
git log|head -n 1 >> $LAST_UPDATE_FILE
echo >> $LAST_UPDATE_FILE
echo done.
fi
rm -fr $TMP_DIR
exit $ERROR

View file

@ -1,42 +0,0 @@
#!/bin/bash
ROOT_DIR=$( cd `dirname $0`; pwd )
LOCAL_CFG_DIR=$ROOT_DIR/config.local
# Import config
if [ ! -f $LOCAL_CFG_DIR/local.sh ]
then
echo "Error : You don't have create your own local.sh file in config.local directory. You could rely on the local.sh.example file to create your version."
exit 1
fi
source $LOCAL_CFG_DIR/local.sh
if [ ! -n "$EXPORT_DOC_DIR" ]
then
echo "The EXPORT_DOC_DIR variable is not define. Export doc is disabled."
exit 0
fi
if [ ! -d "$EXPORT_DOC_DIR" ]
then
echo "Error : Export directory $EXPORT_DOC_DIR does not exist !"
exit 2
fi
if [ ! -n "$LAST_UPDATE_FILE" ]
then
echo "Error : The LAST_UPDATE_FILE is necessary for update detection !"
exit 3
fi
cd $ROOT_DIR
CURRENT=`grep ^commit $LAST_UPDATE_FILE | cut -d ' ' -f 2`
if [ "`git diff $CURRENT -- doc`" != "" ]
then
echo "Export documentation is necessary"
echo "================================="
echo "Current doc exports was generated from the commit $CURRENT."
echo "Changes have been made since."
fi

5
composer.json Normal file
View file

@ -0,0 +1,5 @@
{
"require-dev": {
"phpstan/phpstan": "^1.9"
}
}

78
composer.lock generated Normal file
View file

@ -0,0 +1,78 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "37f736b754e8e0455f279bf0da013262",
"packages": [],
"packages-dev": [
{
"name": "phpstan/phpstan",
"version": "1.9.4",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2",
"reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0"
},
"conflict": {
"phpstan/phpstan-shim": "*"
},
"bin": [
"phpstan",
"phpstan.phar"
],
"type": "library",
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPStan - PHP Static Analysis Tool",
"keywords": [
"dev",
"static analysis"
],
"support": {
"issues": "https://github.com/phpstan/phpstan/issues",
"source": "https://github.com/phpstan/phpstan/tree/1.9.4"
},
"funding": [
{
"url": "https://github.com/ondrejmirtes",
"type": "github"
},
{
"url": "https://github.com/phpstan",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
"type": "tidelift"
}
],
"time": "2022-12-17T13:33:52+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.3.0"
}

View file

@ -16,39 +16,3 @@ THEME_IMG_REF="default"
# Webserver service reload command to run on gettext MO files changed
#WEBSERVER_RELOAD_CMD='sudo service apache2 force-reload'
# Do doc export ?
BUILD_DOC=1
# The export dir
# If EXPORT_DIR is a zero length string, will not export doc
EXPORT_DOC_DIR=/var/www/ldapsaisie-doc
# PDF export name file
# If PDF is a zero length string, pdf doc export will not build
PDF=LdapSaisie.pdf
# EPUB export name file
# If EPUB is a zero length string, epub doc export will not build
EPUB=LdapSaisie.epub
# ALL_IN_ONE export name
# If ALL_IN_ONE is a zero length string, all-in-one doc export will not build
ALL_IN_ONE=all-in-one
# On-line export name
# If ONLINE is a zero length string, on-line doc export will not build
ONLINE=online
# Docbook export name
# If DOCBOOK is a zero length string, docbook doc export will not buil
DOCBOOK=docbook
# The CSS file to use in export
CSS=$ROOT_DIR/doc/styles/LS.css
# The image doc directory
IMAGES=$ROOT_DIR/doc/images
# The name of last update file
LAST_UPDATE_FILE=$EXPORT_DOC_DIR/last_update.txt

328
debian/changelog vendored
View file

@ -1,3 +1,329 @@
ldapsaisie (4.2.0-1) stable; urgency=medium
* PHP 8.2 support
* LSconfig: add escape_key, explode_keys and implode_keys helper methods
* Improve LSldapObject::getDisplayValue() method to match with getValue() method's parameters
* Fix LSattribute::getDisplayValue() when called on updated attribute
* LSattr_ldap::date: replace unique format parameter by a list
* Fix some french translated messages
* Auth:
* LSauth: add filter_function parameter
* LSauthMethod::CAS: fix support of phpCAS >= 1.6.0 and patched Debian Buster 1.3.6-1+deb10u1 version
* Addons
* accesslog:
* Improve displaying changes attributes values
* Fix infinity loop problem handling entry renaming event with the same DN
* ftp: Remove PEAR Net_FTP dependency
* posix: Add deleteHomeDirectoryByFTP function
* supann: Add supannCMSIdEtiquette attribute support
* doc: switch format to Markdown & Mkdocs
-- LdapSaisie project <support+ldapsaisie@easter-eggs.com> Thu, 26 Oct 2023 11:55:52 +0200
ldapsaisie (4.1.0-1) unstable; urgency=medium
* PHP8 compatibility
* Import/export:
* Allow translation of labels
* Add before/after import triggers feature
* Allow to generate attribute value using a custom callable
* Add update_only mode
* Trace errors and messages during import to map them with objects and hooks.
* Improve handling time & memory limits and allow before_import hook to set them
* import: Check generated field value and stop import in case of error
* import: Fix displaying attribute errors two times
* Translation:
* Fix handling backslash in export POT file
* Improve internal message extrators from PHP files
* CLI commands messages translation
* generate_lang_file: add possibility to translate message in a text editor
* generate_lang_file: ignore LSformat string with simple string substitution
* Make location paths in ldapsaisie.pot file relative
* generate_ldapsaisie_pot: Add -I/--internal paramater to use internal message extractor for PHP files instead of xgettext
* Templating tr function: provided message could now be formated as LSformat string using extra provided parameters
* Search:
* handle translation of LSformat, alternativeLSformats and formaterLSformat
* Fix/improve handling data keep in session
* globalSearch: defaulty display extraDisplayedColumns
* LSsession:
* fix saving context info method to keep existing other info
* canExecuteCustomAction(): fix handling self LSprofile
* loadLSprofiles(): reset current LSprofiles on each call
* LSprofiles by LSobject: add possibility to compute basedn using LSformat on authenticated user
* LSldap:
* add formatDate() method
* add possibility to configure hooks
* getAttr(): be sure to return on array when $multiple is true
* add LDAP password policy support
* update(): fix object creation with required userPassword attribute
* translate code comments
* fix updating internal attributes
* LSform:
* fix handling default values of dataEntryForm
* dataEntryForm: Add forceGeneration parameter
* LSformElements
* inarray: add reverse parameter
* jsonCompositeAttribute:
* fix checking non-multiple components value
* fix handling empty value & $onlyIfPresent parameter
* pre: Fix long lines diplay
* select_list/select_box: display values respecting possible values order and force sub-options at the end when sorting
* Themes:
* light-blue.css: Fix LSobject-list links color on line hover
* Fix default ASC & DESC images color to fit with clear themes
* Addons:
* Some news addons: accesslog, impersonate, orgchart, ppolicy, showSupportInfo
* Code cleaning
* Mail:
* fix catch all message suffix in HTML mode
* make optional parameter of sendMail() defaulty null
* add MAIL_CATCH_ALL parameter
* SUPANN:
* Rename some functions:
* supannCheckEduPersonPrimaryAffiliation => validate_eduPersonPrimaryAffiliation
* supannCheckEduPersonAffiliation => validate_eduPersonAffiliation
* Add some new functions:
* generate_supannRessourceEtat
* generate_supannEntiteAffectationPrincipale & validate_supannEntiteAffectationPrincipale
* Add UAI code of ENSAD
* LSformElements:
* supannCompositeAttribute: fix checking components value
* supannEtuInscription: fix cursusann component regex
* LSexample:
* Make restore_lsexample compatible with OpenLDAP 2.5 (and Debian Bookworm)
* LSexample: restore compatibility with Debian stretch
* Remove showObjectAccessLogs custom action on LSpeople
* Defaulty enable LSpeople API access
* Other changes:
* LSerror::getErrors(): add $reset parameter
* LSselect: fix ajax input
* AJAX routes: ensure to enable AJAX mode even if an error occured handling request
* LSldapObject::validateAttrsData(): fix handling attribute generation of empty required attributes even if their new value have been provided
* Add argon2 passwords support
* LSdefault / copyable helper: add copyable-no-btn helper class and fix translating messages
* Add some helper functions: generate_uuid(), getRdn() and parentDn()
* Code cleaning and quality improvement using PHPstan and pre-commit & CI to maintain it
* Fix typos
-- Benjamin Renard <brenard@easter-eggs.com> Sat, 22 Jul 2023 13:38:40 +0200
ldapsaisie (4.0.0-1) unstable; urgency=medium
* Add API feature
* Add full import / export objets feature (see LSio & LSioFormat)
* Global improvements on SUPANN support:
* nomenclatures:
* Update/clean nomenclatures
* Normalize affiliations & civilites nomenclatures
* rework on nomenclatures loading
* Add support for new attributes :
* supannMailPrive
* supannAdressePostalePrivee
* supannTelephonePrive
* supannOIDCGenre
* supannCodePopulation
* supannEmpProfil
* supannExtProfil
* supannEtuDiplome
* supannEtuElementPedagogique
* supannEtuEtape
* supannEtuRegimeInscription
* supannEtuSecteurDisciplinaire
* supannEtuTypeDiplome
* supannRessourceEtat
* supannRessourceEtatDate
* add new components of supannEtuInscription attribute (SUPANN 2021)
* add generate_supann_codeEtablissement_uai_nomenclature CLI command
* add eduPersonUniqueId()
* supannParseCompositeValue(): check global value integrity
* Improve SUPANN attributes CSS
* Add dynamic groups support (with cache members attributes)
* Ensure attributes values are always an array in LSattribute & LSattr_ldap
* Remove historic read right on all attributes of the hard-coded "admin" LSprofile
* LSsession:
* improve loadLSaddons() method
* fix errors in changeAuthUser() and add logging messages
* Fix/improve LSsession_13 errors (unconfigured/unknown custom action function)
* checkAccess(): fix checking read right
* Fix relationCanAccess() method and add debuging infos
* displayAjaxReturn(): Adjust HTTP returned code on unsuccessfull request
* getLSuserObject(): improve errors logging
* setApiMode now trigger LSsession :: setAjaxDisplay()
* LSldap: fix search & getNumberResult methods to use basedn from configuration instead of empty
one.
* LSldapObject:
* make method _updateData() protected instead of private
* fix/improve validateAttrData()
* submitChange():
* on new object, check if generated DN is not already affected
* Add security check about isNew() return
* fix error renaming LSobject
* fix default $attrValues handling for updateObjectsInRelation/deleteOneObjectInRelation methods
* clean update/validate form data code to fix handling just check mode
* fix triggering after_modify event on create
* getValue(): ensure return is array in case of attribute
* LSrelation: add display_name_format parameter
* LSattribute:
* fix canBeGenerated() when default_value isn't a string
* fix handling default_value in generateValue()
* add default LDAP & HTML type (ascii / text)
* addToForm(): fix checking user rights before adding/freezing it
* fix handling current/provided data
* addToForm(): fix freezing
* LSattr_ldap:
* shadowExpire:
* fix getUpdateData()
* fix to rounding method to avoid date change
* compositeValueToJSON: use static instead of self keyword (to allow override)
* Add pwdHistory
* date: add note about date & time with micro-seconds
* naiveDate: Add format option
* password: fix verify method for Salted SHA2 passwords
* sambaAcctFlagsparse_flags(): fix handling null|empty value
* LSattr_html:
* jsonCompositeAttribute: Add fullWidth parameter and improve responsive display
* sambaAcctFlags: Add note about how setting default_value
* valueWithUnit: fix handling zero value
* select_box: add inline parameter
* fix handling current/provided data
* add $singleValue class variable to handle this common case
* LSform:
* fix displaying error in form in case of global error
* fix displaying multiple errors on same field (on Ajax submit)
* display fields errors in same order as triggered
* fix reporting failure on Ajax submit
* LSformElement:
* getApiValue(): add $details parameter
* getEmptyField(): do not set value to null (already set by fetchTemplate())
* labeledValue:
* fix/improve display
* add translate_labels parameter and fix translating it
* fix label translation on freeze view
* date: fix getPostData() method
* mail:
* Move autocomplete feature in text parent class
* fix duplicated email JS button
* supannLabeledValue: Add validation of POST values from configured nomenclatures
* image: fix bug deleting current image
* password:
* fix using LSldapobject getDisplayFData method instead of getFData
* fix sendind email in create form
* fix multiple sent email in some cases
* supannLabeledValue:
* fix unparsable value display
* improve API mode
* supannCompositeAttribute:
* Add possibility to override parse/format value methods to handledifferent composite value
formats
* Add possibility to configure date components LDAP format
* handle API/CLI mode
* LSformRule:
* add validate_values() method and use it to value rules
* do not defined validate_one_by_one constant visibility
* add possibility to throw custom exception to provide error details
* Improve LSformRules to throw LSformRuleException with error details and only show default
error message if rule does not trigger itself an error
* Handle rule without options or message
* Add numberOfValues rule
* configure CLI parameters autocompleters
* compare: code cleaning
* add zxcvbn rule for password security check
* LSsearch:
* rename method setParamsFormPostData() to setParamsFromRequest()
* setParamsFromRequest(): add check on parameters load from request data
* setParamsFromRequest(): fix error handling filter parameter
* LSaddons:
* mail: Add test_send_mail CLI command
* mailquota: improve error reporting
* posix: fix generate_shadowLastChange()
* samba: fix PHP warning about LS_SAMBA_UNIX_ID_POOL_DN contant
* LSaccessRightsMatrixView:
* handle LSform layout to ordering attributes
* handle inherited rights from user LSprofiles
* LSurl:
* add request HTTP method check that must match with one of supported by handler
(default: GET or POST)
* add_handler: fix handling all params in case of multiple patterns
* expose current request as static class variable
* handle_request() now handle Ajax mode detection
* LSurlRequest: fix fatal error on logging
* LSconfig :: get(): add array casting (using ensureIsArray())
* LSlang:
* fix loading alternative lang files in local directory
* fix handling locales that only existing in local directory
* Authentication:
* Add authz proxy authorization support
* LSauthMethod_HTTP: fix logging HTTP_AUTHORIZATION parsing error
* Interface:
* Fix/improve/factorize search pagination
* Fix/improve LSobject & LSsearch customActions code
* Add LSdefaut copyable feature and use it in showTechInfo
* routes.php: fix error calling LSsession::addErrorCode() vs LSerror::addErrorCode()
* Add footer with LdapSaisie version
* Add preprod CSS & SVG image to easily add a watermark
* Improve/fix LSdefaut / LSsession / LSerror / LSdebug / LSinfosBox
* Fix handling noRedirect parameter of LSobject's customAction
* Fix handling disableOnSuccessMsg parameter on LSobject customActions
* LStemplate:
* detect and stop template displaying loop (trigger a fatal error)
* fatal_error(): correctly handle Ajax mode
* CSS:
* Fix possibility to scroll the menu on responsive view
* light-blue.css:
* improve custom select display
* fix handling ul.LSselect_selectable_object_types
* fix handling LSformElement_valueWithUnit width
* Fix displaying toggle-menu button in responsive view
* fix tables style
* Add LStable CSS class to make easier to create customized table
* HTML buttons are now handle by default CSS (and light-blue one)
* CLI:
* show:
* fix handling --raw-values parameter
* add JSON output (with -j|--json parameters)
* search:
* add --all parameter to permit to disable pagination
* add JSON output (with -j|--json parameters)
* generate_lang_file: some improvements
* add -F/--fix-utf8 parameter
* add -K/--keep-unused parameter
* Add import & export commands
* Add test_form_rule command
* Default config files:
* add ending-line commas to avoid problem on editing
* fix value_attribute ('dn' vs '%{dn}')
* Debian packaging:
* Make logrotate handling all log file in /var/log/ldapsaisie
* remove deprecated php-file-csv-datasource dependency
* add recommend on php-unidecode (for withoutAccents() improvements)
* helpers:
* Add ensureIsArray() helper and use it to make code more readable
* withoutAccents(): use unidecode lib if available
* Improve getCallableName()
* Code cleaning and fix some PHP warnings
* Add some debugging/trace messages
* Doc:
* Add note about how setting default_value
* API relation method: use group objects from LSexample
* Add anchors for API sections
* Remove PEAR File_CSV_DataSource deprecated dependency
* add IDs to sections
* Add README file
* Improve doc about attribute values validation
* LSrelation: Make canEdit_attribute parameter more visible in case of simple relation
* improve contrib / LSformRules section
* Fix project URLs and list emails addresses
* LSexample:
* LSpeople:
* fix sambaPwdCanChange as single-value
* improve pagination config
* personalTitle: remove Ms deprecated possible value
* LSgroup: upgrade generate_gidNumber_withSambaDomainObject to generate_samba_gidNumber
* Add Ppolicy support
* Add restore_lsexample script
-- Benjamin Renard <brenard@easter-eggs.com> Mon, 20 Dec 2021 14:11:51 +0100
ldapsaisie (3.0.2-1) unstable; urgency=medium
* LSsession:
@ -344,7 +670,7 @@ ldapsaisie (1.8-4) unstable; urgency=medium
* Add LSattr_html :: wysiwyg
* Add LSaddon exportSearchResultAsCSV
* Fix default LSpeople configuration
* LSauthMethod::HTTP : support multiple methods to retreive user and
* LSauthMethod::HTTP : support multiple methods to retrieve user and
password from HTTP server
* Documentation :
+ Improve doc on LSattr_html::pre

6
debian/control vendored
View file

@ -1,13 +1,13 @@
Source: ldapsaisie
Section: admin
Priority: extra
Build-Depends: debhelper, xsltproc, docbook-xsl, bash-completion
Build-Depends: debhelper, bash-completion, python3, python3-venv, python3-pip
Maintainer: Benjamin Renard <brenard@easter-eggs.com>
Package: ldapsaisie
Architecture: all
Depends: apache2 | httpd, php-ldap | php5-ldap, php-fpm | libapache2-mod-php5 | libapache2-mod-php | php5-cli | php-cli, smarty | smarty3, php-net-ldap2, php-net-ftp, php-mail, php-mail-mime, php-file-csv-datasource, php-console-table
Recommends: php-mbstring, php-phpseclib
Depends: apache2 | httpd, php-ldap | php5-ldap, php-fpm | libapache2-mod-php5 | libapache2-mod-php | php5-cli | php-cli, smarty | smarty3, php-net-ldap2, php-console-table
Recommends: php-mbstring, php-phpseclib, php-unidecode, php-zxcvbn, php-ftp, php-mail, php-mail-mime, php-html2text, php-gnupg
Description: web based interface for managing LDAP servers content
LdapSaisie is a Web application developed to manage LDAP directory.
It has been written in PHP / JavaScript and is published under the

View file

@ -1,3 +1,19 @@
ldapsaisie (4.0.0-1) unstable; urgency=medium
This major release was built around three main goals :
* Add an API feature that allow to provide the same features of the web interface in progammatic
way
* Add full import and export objets feature
* Improve the SUPANN support to handle support new attributes provided in 2020 v2 release ot the
recommendations.
Around these main goals, a lot of small fixes and improvements have been done.
Please also note that an historic read right on all attributes of the hard-coded "admin"
LSprofile have been removed.
-- Benjamin Renard <brenard@easter-eggs.com> Mon, 20 Dec 2021 14:11:51 +0100
ldapsaisie (3.0.2-1) unstable; urgency=medium
This release include a lot of small fixes and improvements, especially in logging.

View file

@ -5,7 +5,7 @@ _ldapsaisie()
local cur words cword
_get_comp_words_by_ref -n "=" cur words cword
# Retreive COMPREPLY using bash_autocomplete ldapsaisie CLI command
# Retrieve COMPREPLY using bash_autocomplete ldapsaisie CLI command
COMPREPLY=( $(ldapsaisie bash_autocomplete ${cword} -- ${words[@]}) )
# If current word to complete contain '=' and if it's a word-break char

2
debian/ldapsaisie.docs vendored Normal file
View file

@ -0,0 +1,2 @@
lsexample
doc/LdapSaisie.html

View file

@ -1,4 +1,2 @@
debian/conf/apache.conf etc/ldapsaisie/
lsexample/schema/lsexample.schema etc/ldap/schema/
lsexample/schema/lsexample.ldif etc/ldap/schema/
src/* usr/share/ldapsaisie/

View file

@ -1,4 +1,4 @@
/var/log/ldapsaisie/ldapsaisie.log {
/var/log/ldapsaisie/*.log {
daily
missingok
rotate 7

4
debian/rules vendored
View file

@ -4,7 +4,7 @@
dh $@ --with bash-completion
override_dh_auto_build:
make -C $(CURDIR)/doc/exports/html -f Makefile debian
make -C $(CURDIR)/doc -f Makefile debian
override_dh_clean:
dh_clean
@ -23,6 +23,8 @@ override_dh_install:
sed -i 's/tmp\/LS.log/\/var\/log\/ldapsaisie\/ldapsaisie.log/' $(CURDIR)/debian/ldapsaisie/usr/share/ldapsaisie/conf/config.inc.php
# Change default public_root_url
sed -i "s/^\(\s*'public_root_url' => \).*/\1'\/ldapsaisie\/',/" $(CURDIR)/debian/ldapsaisie/usr/share/ldapsaisie/conf/config.inc.php
# Change LS_VERSION
sed -i "s/^define('LS_VERSION',.*/define('LS_VERSION', '$(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')');/" $(CURDIR)/debian/ldapsaisie/usr/share/ldapsaisie/includes/core.php
# Make a copy of default config.inc.php to /usr/local/share/ldapsaisie/conf/config.inc.example.php (=/etc/ldapsaisie/local/conf/config.inc.php)
cp $(CURDIR)/debian/ldapsaisie/usr/share/ldapsaisie/conf/config.inc.php $(CURDIR)/debian/ldapsaisie/usr/local/share/ldapsaisie/conf/config.inc.example.php

6
doc/.gitignore vendored Normal file
View file

@ -0,0 +1,6 @@
public_html
LdapSaisie.html
LdapSaisie.pdf
LdapSaisie.epub
venv
dist

View file

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY LdapSaisie "<application>LdapSaisie</application>">
<!ENTITY netldap "<application><ulink url='http://pear.php.net/package/Net_LDAP2'>Net_LDAP2</ulink></application>">
<!ENTITY smarty "<application><ulink url='http://www.smarty.net/'>Smarty</ulink></application>">
<!ENTITY php "<application><ulink url='http://www.php.net/'>PHP</ulink></application>">
<!ENTITY PEAR "<application><ulink url='http://pear.php.net/'>PEAR</ulink></application>">
<!ENTITY PEAR_PearFile_CSV_DataSource "<application><ulink url='https://pear.php.net/package/File_CSV_DataSource'>File_CSV_DataSource</ulink></application>">
<!ENTITY PEAR_Console_Table "<application><ulink url='https://pear.php.net/package/Console_Table'>Console_Table</ulink></application>">
<!ENTITY PEAR_Net_FTP "<application><ulink url='https://pear.php.net/package/Net_FTP'>Net_FTP</ulink></application>">
<!ENTITY PEAR_Mail "<application><ulink url='https://pear.php.net/package/Mail'>Mail</ulink></application>">
<!ENTITY PEAR_Mail_Mime "<application><ulink url='https://pear.php.net/package/Mail_Mime'>Mail_Mime</ulink></application>">
<!ENTITY PhpSecLib "<application><ulink url='https://github.com/phpseclib/phpseclib'>PhpSecLib</ulink></application>">
<!ENTITY openldap "<application><ulink url='http://www.openldap.org/'>OpenLDAP</ulink></application>">
<!ENTITY courier "<application><ulink url='http://www.courier-mta.org/'>Courier</ulink></application>">
<!ENTITY CAS "<application><ulink url='http://www.jasig.org/cas'>CAS</ulink></application>">
<!ENTITY phpCAS "<application><ulink url='http://www.ja-sig.org/wiki/display/CASC/phpCAS'>phpCAS</ulink></application>">
<!ENTITY PhpLdapAdmin "<application><ulink url='http://phpldapadmin.sourceforge.net'>PhpLdapAdmin</ulink></application>">
<!ENTITY TinyMCE "<application><ulink url='https://www.tinymce.com'>TinyMCE</ulink></application>">
<!ENTITY subDn "<link linkend='config-subDn'>subDn</link>">
<!ENTITY LSprofile "<link linkend='config-LSprofile'>LSprofile</link>">
<!ENTITY LSprofiles "<link linkend='config-LSprofile'>LSprofiles</link>">
<!ENTITY LSobject "<link linkend='config-LSobject'>LSobject</link>">
<!ENTITY LSobjects "<link linkend='config-LSobject'>LSobjects</link>">
<!ENTITY LSattribute "<link linkend='config-LSattribute'>LSattribute</link>">
<!ENTITY LSattributes "<link linkend='config-LSattribute'>LSattributes</link>">
<!ENTITY customActions "<link linkend='config-LSobject-customActions'>customActions</link>">
<!ENTITY customSearchActions "<link linkend='config-LSobject-customSearchActions'>customActions</link>">
<!ENTITY LSrelation "<link linkend='config-LSobject-LSrelation'>LSrelation</link>">
<!ENTITY LSrelations "<link linkend='config-LSobject-LSrelation'>LSrelations</link>">
<!ENTITY LSform "<link linkend='config-LSobject-LSform'>LSform</link>">
<!ENTITY LSforms "<link linkend='config-LSobject-LSform'>LSforms</link>">
<!ENTITY LSformat "<link linkend='config-LSformat'>LSformat</link>">
<!ENTITY LSformats "<link linkend='config-LSformat'>LSformats</link>">
<!ENTITY LSaddon "<link linkend='config-LSaddon'>LSaddon</link>">
<!ENTITY LSaddons "<link linkend='config-LSaddon'>LSaddons</link>">
<!ENTITY LSauthMethod "<link linkend='config-LSauthMethod'>LSauthMethod</link>">
<!ENTITY LSselect "<emphasis>LSselect</emphasis>">
<!ENTITY LSsearch "<link linkend='config-LSobject-LSsearch'>LSsearch</link>">
<!ENTITY LSformElement "<link linkend='contrib-LSformElements'>LSformElement</link>">
<!ENTITY LSformElements "<link linkend='contrib-LSformElements'>LSformElements</link>">
<!ENTITY LSformRule "<link linkend='contrib-LSformRules'>LSformRule</link>">
<!ENTITY LSformRules "<link linkend='contrib-LSformRules'>LSformRules</link>">
<!ENTITY GIT_RAW_ROOT_URL "https://gitlab.easter-eggs.com/ee/ldapsaisie/-/raw/master">

View file

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE
book SYSTEM "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[
<!ENTITY % LS-entities SYSTEM "LS.entities.xml">
%LS-entities;
<!ENTITY % conf-entities SYSTEM "conf/conf.entities.xml">
%conf-entities;
<!ENTITY % conf-LSattribute-LSattr_html-entities SYSTEM "conf/LSattribute/LSattr_html/LSattr_html.entities.xml">
%conf-LSattribute-LSattr_html-entities;
<!ENTITY % conf-LSattribute-LSattr_ldap-entities SYSTEM "conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml">
%conf-LSattribute-LSattr_ldap-entities;
<!ENTITY % conf-LSattribute-check_data-entities SYSTEM "conf/LSattribute/check_data/LSattribute-check_data.entities.xml">
%conf-LSattribute-check_data-entities;
<!ENTITY % conf-LSaddon-entities SYSTEM "conf/LSaddon/LSaddon.entities.xml">
%conf-LSaddon-entities;
<!ENTITY % conf-LSauthMethod-entities SYSTEM "conf/LSauthMethod/LSauthMethod.entities.xml">
%conf-LSauthMethod-entities;
<!ENTITY intro SYSTEM "intro/intro.docbook">
<!ENTITY install SYSTEM "install/install.docbook">
<!ENTITY install-arbo SYSTEM "install/arbo.docbook">
<!ENTITY upgrade SYSTEM "upgrade/upgrade.docbook">
<!ENTITY contrib SYSTEM "contrib/contrib.docbook">
]>
<book lang="fr">
<bookinfo lang="fr">
<title>LdapSaisie</title>
<authorgroup>
<author>
<firstname>Benjamin</firstname>
<surname>Renard</surname>
<affiliation>
<address>
<email>brenard@easter-eggs.com</email>
<email>benjamin.renard@zionetrix.net</email>
</address>
</affiliation>
</author>
</authorgroup>
<productname>LdapSaisie</productname>
<releaseinfo>Version 0.3</releaseinfo>
</bookinfo>
&intro;
&install;
&upgrade;
&conf;
&contrib;
</book>

View file

@ -1,16 +1,40 @@
DOCBOOK_FILE=LdapSaisie.docbook
build: venv public_html LdapSaisie.html LdapSaisie.pdf LdapSaisie.epub
all: validate export
public_html: venv
venv/bin/mkdocs build -s
# Validation
validate:
xmllint --valid --noout $(DOCBOOK_FILE)
LdapSaisie.html: venv public_html
venv/bin/htmlark public_html/print_page/index.html -o LdapSaisie.tmp.html
venv/bin/python clean-all-in-one-html-file.py LdapSaisie.tmp.html LdapSaisie.html
rm -f LdapSaisie.tmp.html
export:
cd exports; make all
LdapSaisie.pdf: LdapSaisie.html
docker run -v $(CURDIR):/workspace pink33n/html-to-pdf --url file:///workspace/LdapSaisie.html --pdf LdapSaisie.pdf
html:
cd exports/html; make all-in-one/LdapSaisie.html
LdapSaisie.epub: LdapSaisie.html
pandoc LdapSaisie.html \
-f html \
--toc \
--standalone \
--top-level-division=chapter \
--highlight-style style/pygments.theme \
--css style/epub.css \
--metadata=title:"Documentation LdapSaisie" \
--metadata=author:"Benjamin Renard" \
--metadata=lang:"fr-FR" \
--metadata=cover-image:"../logos/ldapsaisie-logo.png" \
--pdf-engine=weasyprint \
-o LdapSaisie.epub
venv:
python3 -m venv venv
venv/bin/python -m pip install --upgrade pip setuptools
venv/bin/python -m pip install -r requirements.txt
clean:
cd exports; make clean
rm -fr venv public_html LdapSaisie.html LdapSaisie.pdf LdapSaisie.epub
serve: venv
venv/bin/mkdocs serve
debian: LdapSaisie.html

View file

@ -1,35 +0,0 @@
Makefile :
##########
The root Makefile permit currently 3 actions :
* Validation : For the xml validation of docbook files
make validate
* Export : For build the documentation exports in all available formats
make export
* Clean : Delete non-sources files
make clean
Dependencies :
##############
For validation :
================
* xmllint command (in debian package libxml2-utils)
For exports :
=============
* in HTML :
~~~~~~~~~~~
+ xsltproc command (in debian package xsltproc)
+ XSL stylesheets by N.Walsh (html/docbook.xsl, htmlhelp/htmlhelp.xsl
and xhtml/chunk.xsl) (in debian package docbook-xsl)
* in PDF :
~~~~~~~~~~
+ jw command (in debian package docbook-utils)
* in EPUB :
~~~~~~~~~~~
+ dbtoepub command ((in debian package dbtoepub)

View file

@ -0,0 +1,40 @@
import sys
import os.path
from bs4 import BeautifulSoup
# Check & handle arguments
if len(sys.argv) < 2:
print(f'Usage: {sys.argv[0]} [/path/to/input.html] [/path/to/output.html]')
sys.exit(1)
input_path = sys.argv[1]
if not os.path.exists(input_path):
print(f'{input_path} not found')
sys.exit(1)
output_path = sys.argv[2] if len(sys.argv) > 2 else input_path
# Open & parse HTML input file
with open(input_path, 'r') as fp:
soup = BeautifulSoup(fp, 'html.parser')
# Delete some useless elements
to_delete = [
(['div'], {'class': 'md-sidebar'}),
(['div'], {'class': 'md-search'}),
(['label'], {'for': '__search'}),
(['div'], {'id': 'print-site-banner'}),
(['div'], {'class': 'md-header__source'}),
]
for args, kwargs in to_delete:
for el in soup.find_all(*args, **kwargs):
el.decompose()
# Change LdapSaisie logo header link to JS scroll top action
soup.find('a', attrs={'class': 'md-logo'})['href'] = 'javascript:window.scrollTo(0,0)'
# Store resulting HTML document in output file
with open(output_path, 'w') as fp:
fp.write(str(soup))

View file

@ -1,57 +0,0 @@
<sect2 id='config-search-params'>
<title>Paramètres étendus des recherches dans l'annuaire</title>
<para>Les paramètres des recherches sont ceux supportés par &netldap;. Ces
paramètres sont passés sous la forme d'un tableau associatif. Les paramètres
supportés sont détaillés ci-dessous :
<informaltable>
<tgroup cols="3"> <!-- on décrit le nombre de colonnes -->
<thead> <!-- on passe au "header" du tableau -->
<row>
<entry>Nom</entry>
<entry>Description</entry>
<entry>Valeur par défaut</entry>
</row>
</thead>
<tbody> <!-- et on remplit les lignes -->
<row>
<entry><parameter>scope</parameter></entry>
<entry>
<simpara>Définition de l'étendue de la recherche :</simpara>
<itemizedlist>
<listitem><simpara><literal>base</literal> - Sur une entrée seulement</simpara></listitem>
<listitem><simpara><literal>one</literal> - Sur les entrées imédiatement contenu par le <parameter>basedn</parameter> de la recherche</simpara></listitem>
<listitem><simpara><literal>sub</literal> - Sur l'arbre entier</simpara></listitem>
</itemizedlist>
</entry>
<entry><literal>sub</literal></entry>
</row>
<row>
<entry><parameter>sizelimit</parameter></entry>
<entry>Le nombre maximum d'entrées retournées par la recherche.</entry>
<entry><literal>0</literal> (illimité)</entry>
</row>
<row>
<entry><parameter>timelimit</parameter></entry>
<entry>Le délai d'attente maximum de la réponse du serveur en secondes.</entry>
<entry><literal>0</literal> (illimité)</entry>
</row>
<row>
<entry><parameter>attrsonly</parameter></entry>
<entry>Si <emphasis>vrai</emphasis>, seuls les noms des atttributs seront
retournés.</entry>
<entry><literal>false</literal></entry>
</row>
<row>
<entry><parameter>attributes</parameter></entry>
<entry>Tableau contenant les noms des attributs que les entrées retournées
peuvent contenir et que l'on souhaite récupérer.</entry>
<entry><literal>array()</literal>(tous)</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<remark>Pour plus d'information sur le sujet, vous pouvez consulter la
documentation officiel du projet &netldap;.</remark>
</para>
</sect2>

View file

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<sect1 id='config-LSaddon'>
<title>Configuration des LSaddons</title>
<para>
Cette partie décrit la manière de configurer les différents &LSaddons;
actuellement supportés par &LdapSaisie;. Ces addons peuvent avoir un
fichier de configuration et il sera alors stocké dans le dossier
<literal>conf/LSaddons/</literal> et potera le nom
<literal>config.LSaddons.[addon name].php</literal>.
</para>
&conf-LSaddon_asterisk;
&conf-LSaddon_exportSearchResultAsCSV;
&conf-LSaddon_LSaccessRightsMatrixView;
&conf-LSaddon_mail;
&conf-LSaddon_maildir;
&conf-LSaddon_mailquota;
&conf-LSaddon_phpldapadmin;
&conf-LSaddon_showTechInfo;
</sect1>

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY conf-LSaddon_asterisk SYSTEM "LSaddon_asterisk.docbook">
<!ENTITY conf-LSaddon_exportSearchResultAsCSV SYSTEM "LSaddon_exportSearchResultAsCSV.docbook">
<!ENTITY conf-LSaddon_LSaccessRightsMatrixView SYSTEM "LSaddon_LSaccessRightsMatrixView.docbook">
<!ENTITY conf-LSaddon_mail SYSTEM "LSaddon_mail.docbook">
<!ENTITY conf-LSaddon_maildir SYSTEM "LSaddon_maildir.docbook">
<!ENTITY conf-LSaddon_mailquota SYSTEM "LSaddon_mailquota.docbook">
<!ENTITY conf-LSaddon_phpldapadmin SYSTEM "LSaddon_phpldapadmin.docbook">
<!ENTITY conf-LSaddon_showTechInfo SYSTEM "LSaddon_showTechInfo.docbook">

View file

@ -1,11 +0,0 @@
<sect2 id="config-LSaddon_LSaccessRightsMatrixView">
<title>LSaddon_LSaccessRightsMatrixView</title>
<para>Cet &LSaddon; offre une interface de visualisation des droits d'accès
des différents &LSprofiles; configurés. Pour chaque type d'objet, la matrice
des droits d'accès par attribut et par profil est affiché sous la forme d'un
tableau.</para>
<para>Le fichier de configuration permet de définir au travers la variable
<literal>$GLOBALS['LSaccessRightsMatrixView_allowed_LSprofiles']</literal>
la liste des &LSprofiles; autorisés à accéder à cette interface.</para>
</sect2>

View file

@ -1,7 +0,0 @@
<sect2 id="config-LSaddon_asterisk">
<title>LSaddon_asterisk</title>
<para>Cet &LSaddon; est utilisé pour gérer les fonctionnalités spécifiques au serveur de téléphonie Asterisk.
Cet &LSaddon; donne accès à une fonction permettant l'encodage d'un mot de passe au format spécifique attendu
par Asterisk. Ce format est un hash MD5 d'une chaine de caractère composée du nom d'utilisateur, d'une chaine
fixe spécifiée dans la configuration d'Asterisk et du mot de passe en clair.</para>
</sect2>

View file

@ -1,50 +0,0 @@
<sect2 id="config-LSaddon_exportSearchResultAsCSV">
<title>LSaddon_exportSearchResultAsCSV</title>
<para>Cet &LSaddon; fournie une fonction du même nom pouvant être utilisée
comme &customSearchActions; et permettant de télécharger le résultat d'une
recherche au format CSV. L'export généré reprend exactement le contenu des
colonnes du tableau du résultat de la recherche. Le DN de l'objet LDAP
correspondant est également fournis dans une colonne.</para>
<para>Des paramètres de configuration sont disponibles dans le fichier de
configuration <literal>config.LSaddons.exportSearchResultAsCSV.php</literal>.
Ils permettent notamment de contrôller le format du fichier CSV généré.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure du fichier</citetitle>
<![CDATA[// CSV file delimiter
define('LS_EXPORTSEARCHRESULTASCSV_DELIMITER',',');
// CSV file enclosure
define('LS_EXPORTSEARCHRESULTASCSV_ENCLOSURE','"');
// CSV file escape character (available since PHP 5.5.4)
define('LS_EXPORTSEARCHRESULTASCSV_ESCAPE_CHAR','\\');]]>
</programlisting>
<para>Ci-dessous, vous trouverez un exemple de configuration de la fonction
<literal>exportSearchResultAsCSV()</literal> comme &customSearchActions; :</para>
<programlisting linenumbering="unnumbered">
<citetitle>Exemple d'utilisation</citetitle><![CDATA[$GLOBALS['LSobjects']['LSpeople']['LSsearch'] = array (
[...]
'customActions' => array (
'exportSearchResultAsCSV' => array (
'label' => 'Export result as CSV',
'icon' => 'export_csv',
'function' => 'exportSearchResultAsCSV',
'noConfirmation' => true,
'disableOnSuccessMsg' => true,
'rights' => array (
'admin'
)
),
),
[...]
);]]>
</programlisting>
<note><simpara>Le label et l'icône fournis dans cet exemple sont traduits
et délivrés avec &LdapSaisie;.</simpara></note>
</sect2>

View file

@ -1,88 +0,0 @@
<sect2 id="config-LSaddon_mail">
<title>LSaddon_mail</title>
<para>Cet &LSaddon; est utilisé pour gérer l'envoie de mail. Il utilise
pour cela les librairies &PEAR; <emphasis>Mail</emphasis> et <emphasis>
Mail_Mime</emphasis> qui doivent être installés. Cet &LSaddon; doit être
configuré en éditant son fichier de configuration
<literal>config.LSaddons.mail.php</literal>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure du fichier</citetitle>/*
***********************************************
* Configuration du support de l'envoi de mail *
***********************************************
*/
// Pear :: Mail
define('PEAR_MAIL','/usr/share/php/Mail.php');
// Pear :: Mail_mime
define('PEAR_MAIL_MIME','/usr/share/php/Mail/mime.php');
/*
* Méthode d'envoie :
* - mail : envoie avec la méthode PHP mail()
* - sendmail : envoie la commande sendmail du système
* - smtp : envoie en utilisant un serveur SMTP
*/
define('MAIL_SEND_METHOD','smtp');
/*
* Paramètres d'envoie :
* Ces paramètres dépende de la méthode utilisé. Repporté vous à la documentation
* de PEAR :: Mail pour plus d'information.
* Lien : http://pear.php.net/manual/en/package.mail.mail.factory.php
* Infos :
* List of parameter for the backends
* mail
* o If safe mode is disabled, $params will be passed as the fifth
* argument to the PHP mail() function. If $params is an array,
* its elements will be joined as a space-delimited string.
* sendmail
* o $params["sendmail_path"] - The location of the sendmail program
* on the filesystem. Default is /usr/bin/sendmail.
* o $params["sendmail_args"] - Additional parameters to pass to the
* sendmail. Default is -i.
* smtp
* o $params["host"] - The server to connect. Default is localhost.
* o $params["port"] - The port to connect. Default is 25.
* o $params["auth"] - Whether or not to use SMTP authentication.
* Default is FALSE.
* o $params["username"] - The username to use for SMTP authentication.
* o $params["password"] - The password to use for SMTP authentication.
* o $params["localhost"] - The value to give when sending EHLO or HELO.
* Default is localhost
* o $params["timeout"] - The SMTP connection timeout.
* Default is NULL (no timeout).
* o $params["verp"] - Whether to use VERP or not. Default is FALSE.
* o $params["debug"] - Whether to enable SMTP debug mode or not.
* Default is FALSE.
* o $params["persist"] - Indicates whether or not the SMTP connection
* should persist over multiple calls to the send() method.
*/
$MAIL_SEND_PARAMS = NULL;
/*
* Headers :
*/
$MAIL_HEARDERS = array(
);
</programlisting>
<para>Cet &LSaddon; offre la possibilité d'utilisé la fonction &php;
<function>sendMail()</function>.
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>sendMail</function></funcdef>
<paramdef>string <parameter>$to</parameter></paramdef>
<paramdef>string <parameter>$subject</parameter></paramdef>
<paramdef>string <parameter>$msg</parameter></paramdef>
<paramdef>array <parameter>$headers</parameter></paramdef>
<paramdef>array <parameter>$attachments</parameter></paramdef>
<paramdef>string <parameter>$eol</parameter></paramdef>
<paramdef>string <parameter>$encoding</parameter></paramdef>
<paramdef>boolean <parameter>$html</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</para>
</sect2>

View file

@ -1,5 +0,0 @@
<sect2 id="config-LSaddon_maildir">
<title>LSaddon_maildir</title>
<para>Cet &LSaddon; est utilisé pour gérer la manipulation distante de maildir.
FIXME</para>
</sect2>

View file

@ -1,60 +0,0 @@
<sect2 id="config-LSaddon_mailquota">
<title>LSaddon_mailquota</title>
<para>Cet &LSaddon; fournie une fonction <literal>mailquota_get_usage</literal>
pouvant être utilisée pour récupérer l'utilisation du quota d'une boîte mail
IMAP. Pour cela, &LdapSaisie; se connecte au serveur IMAP en utilisant un
compte maître.</para>
<para>Cet &LSaddon; fournie une également une fonction
<literal>mailquota_show_usage</literal> pouvant être utilisée comme
&customActions; et permettant d'afficher l'utilisation du quota de la
boîte mail correspondante via une message dynamique (<literal>LSinfo</literal>).
</para>
<para>Des paramètres de configuration sont disponibles dans le fichier de
configuration <literal>config.LSaddons.mailquota.php</literal>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure du fichier</citetitle>
<![CDATA[// IMAP Mailbox connection string LSformat (composed with LSldapObject attributes)
// See : https://php.net/imap_open (parameter $mailbox)
define('MAILQUOTA_IMAP_MAILBOX','{localhost}');
// IMAP Master user
define('MAILQUOTA_IMAP_MASTER_USER', 'ldapsaisie');
// IMAP Master user's password
define('MAILQUOTA_IMAP_MASTER_USER_PWD', 'secret');
// IMAP Master user LSformat composed with :
// * masteruser = master username (MAILQUOTA_IMAP_MASTER_USER)
// * LSldapObject attributes
define('MAILQUOTA_IMAP_MASTER_USER_FORMAT', '%{mail}*%{masteruser}');
// IMAP quota root mailbox
define('MAILQUOTA_IMAP_QUOTA_ROOT_MAILBOX', 'INBOX');]]>
</programlisting>
<para>Ci-dessous, vous trouverez un exemple de configuration de la fonction
<literal>mailquota_show_usage()</literal> comme &customActions;</para>
<programlisting linenumbering="unnumbered">
<citetitle>Exemple d'utilisation</citetitle><![CDATA[$GLOBALS['LSobjects']['LSpeople'] = array (
[...]
'customActions' => array (
'showmailquotausage' => array (
'function' => 'mailquota_show_usage',
'label' => 'Show mail quota usage',
'noConfirmation' => true,
'disableOnSuccessMsg' => true,
'icon' => 'mail',
'rights' => array (
'admin'
)
),
[...]
),
[...]
);]]>
</programlisting>
</sect2>

View file

@ -1,44 +0,0 @@
<sect2 id="config-LSaddon_phpldapadmin">
<title>LSaddon_phpldapadmin</title>
<para>Cet &LSaddon; est utilisé pour permettre un lien facile entre le logiciel
&PhpLdapAdmin; et LdapSaisie. Il sera possible ainsi à partir d'un objet dans
LdapSaisie de voir ce même objet dans &PhpLdapAdmin;.</para>
<para>Il est necessaire de configurer l'URL de votre installation de &PhpLdapAdmin; dans
le fichier de configuration <literal>config.LSaddons.phpldapadmin.php</literal>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure du fichier</citetitle>
<![CDATA[// PhpLdapAdmin View Object URL format
define('LS_PHPLDAPADMIN_VIEW_OBJECT_URL_FORMAT','//'.$_SERVER['SERVER_NAME'].'/phpldapadmin/cmd.php?cmd=template_engine&server_id=0&dn=%{dn}');]]>
</programlisting>
<para>Cet &LSaddon; offre la possibilité d'utilisé la fonction &php;
<function>redirectToPhpLdapAdmin()</function> comme &customActions;.
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>redirectToPhpLdapAdmin</function></funcdef>
<paramdef>LSldapObject <parameter>$ldapObject</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</para>
<programlisting linenumbering="unnumbered">
<citetitle>Exemple d'utilisation</citetitle><![CDATA[$GLOBALS['LSobjects']['LSpeople'] = array (
[...]
'customActions' => array (
'redirectPhpLdapAdmin' => array (
'function' => 'redirectToPhpLdapAdmin',
'label' => 'See in PhpLdapAdmin',
'hideLabel' => True,
'noConfirmation' => true,
'disableOnSuccessMsg' => true,
'icon' => 'phpldapadmin',
'rights' => array (
'admin'
)
),
),
[...]
);]]>
</programlisting>
</sect2>

View file

@ -1,33 +0,0 @@
<sect2 id="config-LSaddon_showTechInfo">
<title>LSaddon_showTechInfo</title>
<para>Cet &LSaddon; fournie une fonction du même nom pouvant être utilisée
comme &customActions; et permettant d'afficher les informations techniques
d'un objet de l'annuaire.</para>
<para>Ci-dessous, vous trouverez un exemple de configuration de la fonction
<literal>showTechInfo()</literal> comme &customActions; :</para>
<programlisting linenumbering="unnumbered">
<citetitle>Exemple d'utilisation</citetitle><![CDATA[$GLOBALS['LSobjects']['LSpeople'] = array (
[...]
'customActions' => array (
'showTechInfo' => array (
'function' => 'showTechInfo',
'label' => 'Show technical information',
'hideLabel' => True,
'noConfirmation' => true,
'disableOnSuccessMsg' => true,
'icon' => 'tech_info',
'rights' => array (
'admin'
),
),
),
[...]
);]]>
</programlisting>
<note><simpara>Le label et l'icône fournis dans cet exemple sont traduits et
délivrés avec &LdapSaisie;.</simpara></note>
</sect2>

View file

@ -1,292 +0,0 @@
<sect2 id="config-LSattribute">
<title>Configuration des attributs</title>
<para>Cette section décrit les options de configuration des attributs des
&LSobjects;. Les attributs sont définis dans le tableau associatif
<varname>attrs</varname> de la configuration des &LSobjects;. Dans ce tableau,
les clé les noms des attributs et les valeurs liés sont la configuration des
attributs.</para>
<warning><simpara>Contrairement à ce qui existe dans le standard LDAP, les
noms des attributs sont sensibles à la casse. Il faut que le nom des attributs
dans &LdapSaisie; soient scrupuleusement les mêmes que ceux retourné par
&netldap;</simpara></warning>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['attrs' => array (
/* ----------- start -----------*/
'attr1' => array (
'label' => '[label de l'attr1',
'displayAttrName' => '[booleen]',
'help_info' => '[Message d'aide sur l'attribut attr1]',
'help_info_in_view' => '[booleen]',
'ldap_type' => 'ldaptype1',
'ldap_options' => array(
// Options LDAP liées au type LDAP de l'attribut
),
'html_type' => 'htmltype1',
'html_options' => array(
// Options HTML liées au type HTML de l'attribut
),
'no_value_label' => '[No set value label]',
'multiple' => 0,
'required' => 1,
'generate_function' => 'fonction1',
'generate_value_format' => '[LSformat]',
'default_value' => 'valeur1',
'check_data' => array (
// Régle de vérification syntaxique des données saisies
),
'validation' => array (
// Règle de vérification d'intégrité des données saisies
),
'rights' => array(
'LSprofile1' => 'droit1',
'LSprofile2' => 'droit2',
...
),
'view' => 1,
'form' => array (
'create' => 1,
'modify' => 0,
...
),
'dependAttrs' => array(
// Attributs en dépendance
),
'onDisplay' => 'fonction2'
'before_modify' => 'function1',
'after_modify' => 'function2'
),
/* ----------- end -----------*/
...
);]]>
...
</programlisting>
<!-- Début Paramètres Configuration -->
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>label</term>
<listitem>
<simpara>Le label de l'attribut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>displayAttrName</term>
<listitem>
<simpara>Booléen définissant si le nom de l'attribut doit être affiché en
préfixe du message d'aide (paramètre <parameter>help_info</parameter>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>help_info</term>
<listitem>
<simpara>Message d'aide qui sera affiché dans une bulle d'aide à côté du
nom de l'attribut dans les formulaires.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>help_info_in_view</term>
<listitem>
<simpara>Booléen définissant si le message d'aide doit être affiché sur la vue
de visualisation de l'objet.</simpara>
<simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
<simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>ldap_type</term>
<listitem>
<simpara>Le type LDAP de l'attribut.
<link linkend='config-LSattr_ldap'>Voir la section concernée.</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>ldap_options</term>
<listitem>
<simpara>Tableau associatif contenant les paramètres de configuration du
type LDAP de l'attribut.
<link linkend='config-LSattr_ldap'>Voir la section concernée.</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>html_type</term>
<listitem>
<simpara>Le type HTML de l'attribut.
<link linkend='config-LSattr_html'>Voir la section concernée.</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>html_options</term>
<listitem>
<simpara>Tableau associatif contenant les paramètres de configuration du
type HTML de l'attribut.
<link linkend='config-LSattr_html'>Voir la section concernée.</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>no_value_label</term>
<listitem>
<simpara>Label affiché lorsque l'attribut n'a pas de valeur (facultatif).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>multiple</term>
<listitem>
<simpara>Booléen définissant si cet attribut peut stocker plusieurs valeurs.</simpara>
<simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
<simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>required</term>
<listitem>
<simpara>Booléen définissant si cet attribut doit obligatoirement être
défini.</simpara>
<simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
<simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>generate_function</term>
<listitem>
<simpara>Nom de la fonction permettant de générer la valeur de l'attribut.
Cette fonction sera éxecutée, en passant en premier paramètre, l'objet
&LSobject; courant.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>generate_value_format</term>
<listitem>
<simpara>&LSformat; permettant la génération de l'attribut.</simpara>
<note><simpara>Cette méthode de génération est utilisée uniquement si aucune fonction de génération
de la valeur n'est définie (paramètre <parameter>generate_function</parameter>).</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>default_value</term>
<listitem>
<simpara>Valeur par défaut de l'attribut.</simpara>
<simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
<note><simpara>Cette valeur est également utilisée dans le cadre de la génération automatique
de la valeur de l'attribut si aucune autre méthode n'est disponible (via une fonction ou un &LSformat;).</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>check_data</term>
<listitem>
<simpara>Tableau associatif contenant les règles de vérification syntaxique
des données de l'attribut.<link linkend='config-LSattribute-check-data'>Voir
la section concernée.</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>validation</term>
<listitem>
<simpara>Tableau associatif contenant les règles de vérification d'intégrité
des données de l'attribut.<link linkend='config-LSattribute-validation'>Voir
la section concernée.</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>rights</term>
<listitem>
<simpara>Tableau associatif dont les clés sont les noms des &LSprofiles; ayant
des droits sur cet attribut et les valeurs associées sont les droits
correspondants. La valeur des droits d'un &LSprofile; peut être
<literal>r</literal> pour le droit de lecture ou <literal>w</literal> pour
le droit de lecture-écriture. Par défaut, un &LSprofile; n'a aucun droit.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>view</term>
<listitem>
<simpara>Booléen définissant si l'attribut est, ou non, affiché lors de la
visualisation des objets du type courant.</simpara>
<simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
<simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>form</term>
<listitem>
<simpara>Tableau associatif dont les clés sont les noms des &LSforms; et les
valeurs associées la définition de l'affichage dans ce &LSform;. Si cette
valeur vaut <emphasis>0</emphasis>, alors l'attribut sera lecture-seule et si
cette valeur vaut <emphasis>1</emphasis>, cet attribut sera affiché en
lecture-écriture.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>dependAttrs</term>
<listitem>
<simpara>Tableau associatif listant les attributs dépendants de celui-ci.
Les attributs listés ici seront regénérés lors de chaque modification
de l'attribut courant. Cette génération sera effectué avec la fonction
définie dans le paramètre <varname>generate_function</varname> de
l'attribut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>onDisplay</term>
<listitem>
<simpara>Nom ou liste de nom des fonctions retournant les valeurs d'affichages
de l'attribut. Si c'est une liste, chacune des fonctions seront executée les
unes après les autres. Ces fonctions seront éxecutées, en passant en premier
paramètre, le tableau des valeurs de l'objet.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>before_modify</term>
<listitem>
<simpara>Chaîne de caractères (ou tableau de chaine de caractères) correspondant
au nom d'une ou plusieurs fonctions qui seront exécutées avant toutes modifications de
la valeur de l'attribut.<link linkend="config-LSattribute-triggers">Voir la
section concernée</link></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>after_modify</term>
<listitem>
<simpara>Chaîne de caractères (ou tableau de chaine de caractères) correspondant
au nom d'une ou plusieurs fonctions qui seront exécutées après toutes modifications de
la valeur de l'attribut.<link linkend="config-LSattribute-triggers">Voir la
section concernée</link></simpara>
</listitem>
</varlistentry>
</variablelist>
&conf-LSattribute-LSattr_ldap;
&conf-LSattribute-LSattr_html;
&conf-LSattribute-check-data;
&conf-LSattribute-validation;
&conf-LSattribute-triggers;
</sect2>

View file

@ -1,31 +0,0 @@
<sect3 id="config-LSattr_html">
<title>Configuration des attributs HTML</title>
<para>Cette section décrit les options propres à chacun des types d'attributs HTML
supportés par &LdapSaisie;.</para>
&conf-LSattr_html_boolean;
&conf-LSattr_html_date;
&conf-LSattr_html_image;
&conf-LSattr_html_jsonCompositeAttribute;
&conf-LSattr_html_labeledValue;
&conf-LSattr_html_mail;
&conf-LSattr_html_maildir;
&conf-LSattr_html_mailQuota;
&conf-LSattr_html_password;
&conf-LSattr_html_postaladdress;
&conf-LSattr_html_pre;
&conf-LSattr_html_rss;
&conf-LSattr_html_sambaAcctFlags;
&conf-LSattr_html_select_box;
&conf-LSattr_html_select_list;
&conf-LSattr_html_select_object;
&conf-LSattr_html_ssh_key;
&conf-LSattr_html_tel;
&conf-LSattr_html_text;
&conf-LSattr_html_textarea;
&conf-LSattr_html_url;
&conf-LSattr_html_valueWithUnit;
&conf-LSattr_html_wywiwyg;
&conf-LSattr_html_xmpp;
</sect3>

View file

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY conf-LSattr_html_boolean SYSTEM "LSattr_html_boolean.docbook">
<!ENTITY conf-LSattr_html_date SYSTEM "LSattr_html_date.docbook">
<!ENTITY conf-LSattr_html_image SYSTEM "LSattr_html_image.docbook">
<!ENTITY conf-LSattr_html_jsonCompositeAttribute SYSTEM "LSattr_html_jsonCompositeAttribute.docbook">
<!ENTITY conf-LSattr_html_labeledValue SYSTEM "LSattr_html_labeledValue.docbook">
<!ENTITY conf-LSattr_html_mail SYSTEM "LSattr_html_mail.docbook">
<!ENTITY conf-LSattr_html_maildir SYSTEM "LSattr_html_maildir.docbook">
<!ENTITY conf-LSattr_html_mailQuota SYSTEM "LSattr_html_mailQuota.docbook">
<!ENTITY conf-LSattr_html_password SYSTEM "LSattr_html_password.docbook">
<!ENTITY conf-LSattr_html_postaladdress SYSTEM "LSattr_html_postaladdress.docbook">
<!ENTITY conf-LSattr_html_pre SYSTEM "LSattr_html_pre.docbook">
<!ENTITY conf-LSattr_html_rss SYSTEM "LSattr_html_rss.docbook">
<!ENTITY conf-LSattr_html_sambaAcctFlags SYSTEM "LSattr_html_sambaAcctFlags.docbook">
<!ENTITY conf-LSattr_html_select_box SYSTEM "LSattr_html_select_box.docbook">
<!ENTITY conf-LSattr_html_select_list SYSTEM "LSattr_html_select_list.docbook">
<!ENTITY conf-LSattr_html_select_object SYSTEM "LSattr_html_select_object.docbook">
<!ENTITY conf-LSattr_html_ssh_key SYSTEM "LSattr_html_ssh_key.docbook">
<!ENTITY conf-LSattr_html_tel SYSTEM "LSattr_html_tel.docbook">
<!ENTITY conf-LSattr_html_text SYSTEM "LSattr_html_text.docbook">
<!ENTITY conf-LSattr_html_textarea SYSTEM "LSattr_html_textarea.docbook">
<!ENTITY conf-LSattr_html_url SYSTEM "LSattr_html_url.docbook">
<!ENTITY conf-LSattr_html_valueWithUnit SYSTEM "LSattr_html_valueWithUnit.docbook">
<!ENTITY conf-LSattr_html_wywiwyg SYSTEM "LSattr_html_wywiwyg.docbook">
<!ENTITY conf-LSattr_html_xmpp SYSTEM "LSattr_html_xmpp.docbook">
<!ENTITY LSattr_html_date "<link linkend='config-LSattr_html_jsonCompositeAttribute'>LSattr_html_date</link>">
<!ENTITY LSattr_html_jsonCompositeAttribute "<link linkend='config-LSattr_html_jsonCompositeAttribute'>LSattr_html_jsonCompositeAttribute</link>">
<!ENTITY LSattr_html_sambaAcctFlags "<link linkend='config-LSattr_html_sambaAcctFlags'>LSattr_html_sambaAcctFlags</link>">
<!ENTITY LSattr_html_select_list "<link linkend='config-LSattr_html_select_list'>LSattr_html_select_list</link>">
<!ENTITY LSattr_html_textarea "<link linkend='config-LSattr_html_textarea'>LSattr_html_textarea</link>">

View file

@ -1,53 +0,0 @@
<sect4 id="config-LSattr_html_boolean">
<title>LSattr_html_boolean</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
un booléen.</para>
<para>La valeur retournée est l'une des chaînes de caractères suivantes :
<itemizedlist>
<listitem><simpara><literal>yes</literal> pour <emphasis>Vrai</emphasis></simpara></listitem>
<listitem><simpara><literal>no</literal> pour <emphasis>Faux</emphasis></simpara></listitem>
</itemizedlist>
</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
'true_label' => '[label]',
'false_label' => '[label]',
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>true_label</term>
<listitem>
<simpara>Label affiché pour désigner la valeur <literal>Vrai</literal>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>false_label</term>
<listitem>
<simpara>Label affiché pour désigner la valeur <literal>Faux</literal>.</simpara>
</listitem>
</varlistentry>
</variablelist>
<note><simpara>Pour le moment, les attributs à valeurs multiples ne sont pas gérés.
</simpara></note>
<note><simpara>Pour maîtriser les valeurs stockées dans l'annuaire, il faut
coupler ce type d'attribut HTML avec le type d'attribut LDAP
<link linkend='config-LSattr_ldap_boolean'>boolean</link></simpara></note>
<important><simpara>La définition de la valeur par défaut d'un attribut utilisant
ce type HTML (paramètre <literal>default_value</literal>), doit se faire à l'aide
des valeurs <literal>yes</literal> ou <literal>no</literal>.</simpara></important>
</sect4>

View file

@ -1,235 +0,0 @@
<sect4 id="config-LSattr_html_date">
<title>LSattr_html_date</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une date. L'outil de sélection de date <application>
<ulink url='http://mootools.net/forge/p/mootools_datepicker'>
MooTools-DatePicker</ulink></application> est utilisé pour la sélection
graphique de la date et de l'heure.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
'format' => '[Format d'affichage de la date]',
'time' => '[Booleen pour le choix ou non de l heure]',
'manual' => '[Booleen pour l edition manuelle ou non]',
'showNowButton' => '[Booleen]',
'showTodayButton' => '[Booleen]',
'style' => '[Nom du style utilise]',
'special_values' => array (
'[value]' => '[label]',
[...]
),
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>format</term>
<listitem>
<para>Format d'affichage de la date dans le champ de saisie. Ce format
est composé à partir des motifs clés suivants :
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>Mot clé</entry>
<entry>Valeur de substitution</entry>
<entry>Exemple de valeur</entry>
</row>
</thead>
<tbody>
<row>
<entry><literal>%a</literal></entry>
<entry><simpara>Nom abrégé du jour de la semaine</simpara></entry>
<entry><simpara>De Sun à Sat</simpara></entry>
</row>
<row>
<entry><literal>%A</literal></entry>
<entry><simpara>Nom complet du jour de la semaine</simpara></entry>
<entry><simpara>De Sunday à Saturday</simpara></entry>
</row>
<row>
<entry><literal>%b</literal></entry>
<entry><simpara>Nom du mois, abrégé, suivant la locale</simpara></entry>
<entry><simpara>De Jan à Dec</simpara></entry>
</row>
<row>
<entry><literal>%B</literal></entry>
<entry><simpara>Nom complet du mois, suivant la locale</simpara></entry>
<entry><simpara>De January à December</simpara></entry>
</row>
<row>
<entry><literal>%c</literal></entry>
<entry><simpara>Date et heure préférées, basées sur la locale</simpara></entry>
<entry><simpara>Exemple : Tue Feb 5 00:45:10 2009 pour le 5 Février 2009 à 12:45:10 AM</simpara></entry>
</row>
<row>
<entry><literal>%d</literal></entry>
<entry><simpara>Jour du mois en numérique, sur 2 chiffres (avec le zéro initial)</simpara></entry>
<entry><simpara>De 01 à 31</simpara></entry>
</row>
<row>
<entry><literal>%e</literal></entry>
<entry><simpara>Jour du mois, avec un espace précédant le premier chiffre. L'implémentation Windows est différente, voyez après pour plus d'informations.</simpara></entry>
<entry><simpara>De 1 à 31</simpara></entry>
</row>
<row>
<entry><literal>%H</literal></entry>
<entry><simpara>L'heure, sur 2 chiffres, au format 24 heures</simpara></entry>
<entry><simpara>De 00 à 23</simpara></entry>
</row>
<row>
<entry><literal>%I</literal></entry>
<entry><simpara>Heure, sur 2 chiffres, au format 12 heures</simpara></entry>
<entry><simpara>De 01 à 12</simpara></entry>
</row>
<row>
<entry><literal>%j</literal></entry>
<entry><simpara>Jour de l'année, sur 3 chiffres avec un zéro initial</simpara></entry>
<entry><simpara>001 à 366</simpara></entry>
</row>
<row>
<entry><literal>%m</literal></entry>
<entry><simpara>Mois, sur 2 chiffres</simpara></entry>
<entry><simpara>De 01 (pour Janvier) à 12 (pour Décembre)</simpara></entry>
</row>
<row>
<entry><literal>%M</literal></entry>
<entry><simpara>Minute, sur 2 chiffres</simpara></entry>
<entry><simpara>De 00 à 59</simpara></entry>
</row>
<row>
<entry><literal>%p</literal></entry>
<entry><simpara>'AM' ou 'PM', en majuscule, basé sur l'heure fournie</simpara></entry>
<entry><simpara>Exemple : AM pour 00:31, PM pour 22:23</simpara></entry>
</row>
<row>
<entry><literal>%s</literal></entry>
<entry><simpara>Timestamp de l'époque Unix (identique à la fonction time())</simpara></entry>
<entry><simpara>Exemple : 305815200 pour le 10 Septembre 1979 08:40:00 AM</simpara></entry>
</row>
<row>
<entry><literal>%S</literal></entry>
<entry><simpara>Seconde, sur 2 chiffres</simpara></entry>
<entry><simpara>De 00 à 59</simpara></entry>
</row>
<row>
<entry><literal>%T</literal></entry>
<entry><simpara>Identique à "%H:%M:%S" Exemple : 21:34:17 pour 09:34:17 PM</simpara></entry>
<entry><simpara></simpara></entry>
</row>
<row>
<entry><literal>%U</literal></entry>
<entry><simpara>Numéro de la semaine de l'année donnée, en commençant par le premier Lundi comme première semaine</simpara></entry>
<entry><simpara>13 (pour la 13ème semaine pleine de l'année)</simpara></entry>
</row>
<row>
<entry><literal>%w</literal></entry>
<entry><simpara>Représentation numérique du jour de la semaine</simpara></entry>
<entry><simpara>De 0 (pour Dimanche) à 6 (pour Samedi)</simpara></entry>
</row>
<row>
<entry><literal>%y</literal></entry>
<entry><simpara>L'année, sur 2 chiffres</simpara></entry>
<entry><simpara>Exemple : 09 pour 2009, 79 pour 1979</simpara></entry>
</row>
<row>
<entry><literal>%Y</literal></entry>
<entry><simpara>L'année, sur 4 chiffres</simpara></entry>
<entry><simpara>Exemple : 2038</simpara></entry>
</row>
<row>
<entry><literal>%z</literal></entry>
<entry><simpara> Soit le décalage horaire depuis UTC, ou son abréviation (suivant le système d'exploitation)</simpara></entry>
<entry><simpara> Exemple : -0500 ou EST pour l'heure de l'Est</simpara></entry>
</row>
<row>
<entry><literal>%Z</literal></entry>
<entry><simpara> Le décalage horaire ou son abréviation NON fournie par %z (suivant le système d'exploitation)</simpara></entry>
<entry><simpara> Exemple : -0500 ou EST pour l'heure de l'Est</simpara></entry>
</row>
<row>
<entry><literal>%%</literal></entry>
<entry><simpara>Le caractère de pourcentage ("%")</simpara></entry>
<entry><simpara>---</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
<note><simpara>La valeur par défaut est <emphasis>%d/%m/%Y, %T</emphasis>.
Exemple : <emphasis>23/04/2009, 23:03:04</emphasis></simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>time</term>
<listitem>
<simpara>Booléen définissant si l'outil de sélection permetra ou non le choix
de l'heure en plus de la date</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>manual</term>
<listitem>
<simpara>Booléen autorisant ou non l'édition manuelle du champs. Si ce paramètre
vaut <literal>False</literal>, la sélection se fera uniquement à l'aide de l'outil
graphique</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>showNowButton</term>
<listitem>
<simpara>Booléen définissant si le bouton <emphasis>Maintenant</emphasis> est
affiché ou non. Par défaut, il est affiché.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>showTodayButton</term>
<listitem>
<simpara>Booléen définissant si le bouton <emphasis>Aujourd'hui</emphasis> est
affiché ou non. Par défaut, il est affiché.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>style</term>
<listitem>
<para>Nom du style d'affichage de l'outil de sélection. Les valeurs possibles
sont par défaut :
<itemizedlist>
<listitem><simpara>default</simpara></listitem>
<listitem><simpara>dashboard</simpara></listitem>
<listitem><simpara>vista</simpara></listitem>
<listitem><simpara>jqui</simpara></listitem>
</itemizedlist>
<note><simpara>La création de nouveau thème est possible. Pour plus d'information,
consulter <ulink url='http://mootools.net/forge/p/mootools_datepicker'>l'aide de
l'outil de sélection de date</ulink>.</simpara></note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>special_values</term>
<listitem>
<para>Tableau listant les valeurs spéciales que peut prendre l'attribut. Dans ce tableau
associatif, la clé doit correspondre à la valeur de l'attribut (telle que fournie par
<link linkend='config-LSattr_ldap_date'>l'attribut LDAP</link>) et la valeur associée au
label associé.</para>
<para>Ces valeurs spéciales seront proposées à l'utilisateur sous la forme de cases à cocher
dans le formulaire. Elles peuvent permettre par exemple de données une signification
particulière au zéro pour un attribut LDAP stockant un <emphasis>timestamp</emphasis>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,6 +0,0 @@
<sect4 id="config-LSattr_html_image">
<title>LSattr_html_image</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une image. Pour le moment, les attributs à valeurs multiples ne sont pas gérés.
</para>
</sect4>

View file

@ -1,122 +0,0 @@
<sect4 id="config-LSattr_html_jsonCompositeAttribute">
<title>LSattr_html_jsonCompositeAttribute</title>
<para>Ce type est utilisé pour la gestion des attributs dont les valeurs sont
des dictionnaires de valeurs encodées aux formats <emphasis>JSON</emphasis>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Exemple de valeur gérée</citetitle>
<![CDATA[{"component1": "value1", "component2": "value2", "component3": "value3"}]]>
</programlisting>
<para>Le principe est que ces dictionnaires contienent plusieurs composants référencés
par leur clé et stockant une valeur dont le type peut être un texte libre ou
bien être issue d'une liste déroulante configurable selon le même principe que
le type d'attribut &LSattr_html_select_list;.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
'components' => array (
'[clé composant 1]' => array (
'label' => '[Label du composant]',
'help_info' => '[Message d'aide sur le composant]',
'type' => '[Type de la valeur stocké]',
'required' => [Booléen],
'multiple' => [Booléen],
'check_data' => => array (
// Régle de vérification syntaxique des données saisies
),
),
'[clé composant 2]' => array (
'label' => '[Label du composant 2]',
'type' => 'select_list',
'required' => [Booléen],
'options' => array (
[Configuration équivalente à un attribut LSattr_html_select_list]
)
),
[...]
),
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>components</term>
<listitem>
<para>Tableau associatif obligatoire contenant en valeur clé, l'identifiant des
composants, correspondant à la clé dans le dictionnaire <emphasis>JSON</emphasis>,
et en valeurs associés, la configuration du composant.</para>
<variablelist>
<varlistentry>
<term>label</term>
<listitem>
<simpara>Le label du composant.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>help_info</term>
<listitem>
<simpara>Message d'aide sur le composant (affiché uniquement en mode édition).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>type</term>
<listitem>
<simpara>Le type de valeur du composant. Les types possibles sont
<literal>text</literal> ou <literal>select_list</literal> pour respectivement
soit une valeur saisie librement, soit une valeur sélectionnée parmis une liste
déroulante.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>options</term>
<listitem>
<simpara>Dans le cadre d'un composant de type <literal>select_list</literal>, cela
correspond à la configuration de la liste déroulante. Cette configuration utilise la
même syntaxe de configuration que celle du type d'attribut &LSattr_html_select_list;
et son paramètre <literal>html_options</literal>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>multiple</term>
<listitem>
<simpara>Booléen définissant si ce composant peut stocker plusieurs valeurs (Défaut :
<emphasis>Faux</emphasis>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>required</term>
<listitem>
<simpara>Booléen définissant si ce composant doit obligatoirement être défini (Défaut :
<emphasis>Faux</emphasis>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>check_data</term>
<listitem>
<simpara>Tableau associatif contenant les règles de vérification syntaxique
des données du composant. Ces règles sont configurables de la même manière
que les celles des valeurs attributs.
<link linkend='config-LSattribute-check-data'>Voir la section concernée.</link>
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,33 +0,0 @@
<sect4 id="config-LSattr_html_labeledValue">
<title>LSattr_html_labeledValue</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
prefixé d'un <literal>label</literal> et qui respecte le format suivant :
<literal>[label]valeur</literal>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'labels' => array ( // Liste des labels possible
'label1' => 'Libellé label1',
'label2' => 'Libellé label2',
[...]
),
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>labels</term>
<listitem>
<simpara>Tableau associatif obligatoire contenant en valeur clé, le
<literal>label</literal> utilisé dans la valeur stockée et en valeur
associée, le valeur d'affichage du <literal>label</literal>.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,152 +0,0 @@
<sect4 id="config-LSattr_html_mail">
<title>LSattr_html_mail</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une adresse e-mail. Il offre les fonctionnalités suivantes :
<itemizedlist>
<listitem><simpara>la possibilité d'envoyer des mails directement depuis l'interface
de l'application ;</simpara></listitem>
<listitem><simpara>l'autocomplétion lors de la saisie d'une adresse.</simpara></listitem>
</itemizedlist>
</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'disableMailSending' => [booléen],
// Autocomplétion pour un type d'LSobject donné
'autocomplete' => array (
'object_type' => '[Type d'LSobject]',
'mail_attributes' => array (
'mail',
'mailAlternateAddress',
[...]
),
'filter' => '[filtre LDAP]',
'basedn' => '[base DN spécifique]',
'scope' => '[scope de recherche]',
'displayFormat' => '[LSformat]',
'onlyAccessible' => [booléen],
),
// Autocomplétion sur la base d'une recherche LDAP brute
'autocomplete' => array (
'mail_attributes' => array (
'mail',
'mailAlternateAddress',
[...]
),
'filter' => '[filtre LDAP]',
'basedn' => '[base DN spécifique]',
'scope' => '[scope de recherche]',
'displayFormat' => '[LSformat]',
'onlyAccessible' => [booléen],
),
// Autocomplétion (par défaut)
'autocomplete' => true,
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>disableMailSending</term>
<listitem>
<simpara>Désactive l'envoi de mail depuis l'interface pour cet attribut.</simpara>
<note><simpara>Ceci ne désactive pas pour autant le lien HTML de type
<emphasis>mailto:</emphasis>. Pour cela, utilisez plutôt le type d'attribut HTML
<link linkend='config-LSattr_html_text'>text</link>.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>autocomplete</term>
<listitem>
<para>Paramètrage de l'autocomplétion des adresses mails saisies : Il peut s'agir
d'un tableau configurant les paramètres de l'autocomplétion ou simplement
<literal>true</literal> pour activer l'autocomplétion par défaut, c'est à dire la recherche brute
dans l'annuaire de n'importe quel objet ayant l'attribut <literal>mail</literal>.</para>
<para>En cas de configuration avancée, il est possible de faire une recherche :
<itemizedlist>
<listitem><simpara>Sur la base d'un type d'&LSobject; donné : l'autocomplétion se fera
alors comme n'importe quelle recherche d'un type d'objet donné.</simpara></listitem>
<listitem><simpara>Sur la base d'une recherche brute dans l'annuaire : l'autocomplétion se
fera alors sur la valeur de l'adresse mail recherchée et au travers une recherche brute dans
l'annuaire sur n'importe quels objets ayant une adresse email correspondant.</simpara></listitem>
</itemizedlist>
</para>
<para>Les paramètres associés à ces deux cas de figure sont décrits ci-dessous :
<variablelist>
<varlistentry>
<term>object_type</term>
<listitem>
<simpara>Le type d'&LSobject; recherché.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>mail_attributes</term>
<listitem>
<simpara>Le(s) nom de l'attribut stockant les adresses emails recherchées. Il peut s'agir d'une chaîne
de caractères ou d'un tableau s'il y a plusieurs attributs.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>filter</term>
<listitem>
<simpara>Un filtre de recherche falcultatif venant en plus de celui calculé automatiquement à partir
du mot clé de recherche.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>basedn</term>
<listitem>
<simpara>Le <emphasis>basedn</emphasis> de la recherche. <emphasis>Paramètre
facultatif.</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>scope</term>
<listitem>
<simpara>Le <emphasis>scope</emphasis> de la recherche. <emphasis>Paramètre
facultatif, par défaut : <literal>sub</literal>.</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>displayFormat</term>
<listitem>
<simpara>Le &LSformat; d'affichage des objets trouvés. Ce paramètre est facultatif et par défaut,
il s'agira du format d'affichage propre au type d'&LSobject; (si défini) et à défaut, l'adresse
mail trouvée sera affichée.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>onlyAccessible</term>
<listitem>
<simpara>Booléen falcultatif définissant si seul les &LSobjects; auxquels l'utilisateur connecté à accès
doivent être considérés comme sélectionnables (Faux par défaut). Ce paramètre n'est appliqué que dans
le cas d'une recherche pour un type d'&LSobject; donné.</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<important><simpara>Ce type d'attribut HTML est dérivé du type
<link linkend='config-LSattr_html_text'>text</link>. Il profite donc de toutes
les fonctionnalités d'un champ de ce type (autogénération, ...).</simpara>
</important>
</sect4>

View file

@ -1,29 +0,0 @@
<sect4 id="config-LSattr_html_mailQuota">
<title>LSattr_html_mailQuota</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
le quota d'une boite mail. Le format de la valeur générée correspondant au format
attendu par le serveur de mail &courier; par défaut. Exemple : <emphasis>50000000S</emphasis>
correspond à un quota de 50Mio.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'suffix' => '[suffix]',
)
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>suffix</term>
<listitem>
<simpara>Chaine de caractères suffixant la valeur du quota (Par défaut : <literal>S</literal>).</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,82 +0,0 @@
<sect4 id="config-LSattr_html_maildir">
<title>LSattr_html_maildir</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
le chemin d'une maildir. Typiquement, ce type attribut HTML est utile dans
le cas de l'attribut <emphasis>mailbox</emphasis> utilisé par maildrop pour
stocker le chemin des boites mails. Ce type d'attribut offre la possibilité de
gérér un niveau de l'attribut et à travers les déclencheurs gérés par &LdapSaisie;
la création, la modification et ou la suppression de la boite mails. Le &LSaddon;
<link linkend='config-LSaddon_maildir'>boolean</link> est utilisé pour manipuler
la boite mail à distance.
</para>
<note><simpara>Actuellement, cet &LSaddon; ne gérant que l'accès via FTP au
serveur distant, l'API d'accès via FTP est attaquée directement.</simpara></note>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
'LSform' => array (
'[LSform1]' => [booléen],
'[LSform2]' => [booléen],
...
),
'remoteRootPathRegex' => "[Expression régulière pour matcher le dossier à créer]",
'archiveNameFormat' => "[LSformat du chemin/nom du fichier une fois archiver]"
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>LSform</term>
<listitem>
<simpara>Tableau associatif obligatoire contenant en valeur clé le nom des
&LSforms; dans lesquels la fonctionnalité de modification de la boite mail
sera présente. Les valeurs attachées sont des booléens définissant si la
modification est active par défaut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>remoteRootPathRegex</term>
<listitem>
<simpara>Expression régulière (compatible Perl) facultative dont le but est de
<emphasis>matcher</emphasis> dans la valeur complète du chemin distant de la
<emphasis>maildir</emphasis>, le chemin de la <emphasis>maildir</emphasis>
à créer une fois connecté sur le serveur.</simpara>
<para>Exemple : Si le chemin complet de la <emphasis>maildir</emphasis> est
<emphasis>/home/vmail/user</emphasis>, mais que l'utilisateur FTP lorsqu'il
se connecte arrive directement dans <emphasis>/home/vmail</emphasis>, et faut
définir le paramètre <parameter>remoteRootPathRegex</parameter> de la manière
suivante :
<programlisting linenumbering="unnumbered">/^\/home\/vmail\/([^\/]*)\/+$/</programlisting>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>archiveNameFormat</term>
<listitem>
<simpara>&LSformat; du nom du dossier de la <emphasis>maildir</emphasis> une
fois archivée. Si ce format est défini, le dossier ne sera pas supprimé mais
déplacé ou rénommé. Le format sera construit avec pour seul mot clé, le nom
de l'ancien dossier. Exemple : Si le dossier de la maildir est
<emphasis>/home/vmail/user</emphasis> et le paramètre
<parameter>archiveNameFormat</parameter> vaut <emphasis>%{old}.bckp</emphasis>,
le dossier sera renommé en <emphasis>/home/vmail/user.bckp</emphasis>.</simpara>
<important><simpara>Ce format est interprété après application de la routine
liée au paramètre <parameter>remoteRootPathRegex</parameter>. Ainsi, dans
l'exemple précédent, si le paramètre <parameter>remoteRootPathRegex</parameter>
tronquait uniquement le nom du dossier final, c'est à dire <emphasis>user</emphasis>,
le format une fois interprété donnerai <emphasis>user.bckp</emphasis>.
</simpara></important>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,315 +0,0 @@
<sect4 id="config-LSattr_html_password">
<title>LSattr_html_password</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
un mot de passe.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'isLoginPassword' => [booleen],
'generationTool' => [booleen],
'autoGenerate' => [booleen],
'lenght' => [nombre de caractères],
'chars' => array ( // Caractères que peut contenir le mot de passe
array( // Liste caractère avec un nombre mininum d'apparition supérieur à 1
'nb' => [nb caractères],
'chars' => '[liste de caractères possibles]'
),
'[autre liste de caractères possibles]', // Liste caractère avec un nombre
// d'apparitions égal à 1
...
),
'use_pwgen' => [booléen], // Utiliser pwgen pour la génération du mot de passe
'pwgen_path' => "/path/to/pwgen",
'pwgen_opts' => "[options à passer à pwgen]",
'verify' => [booléen], // Activation de l'outil de vérification du mot de passe
'viewHash' => [booléen], // Activation de l'outil de visualisation du mot de passe haché
'confirmChange' => [booléen], // Activation de la confirmation en cas de changement du mot de passe
'confirmChangeQuestion' => "[LSformat]", // LSformat de la question de confirmation du changement du mot de passe
'mail' => array( // Configuration de l'envoi du mot de passe par mail
'subject' => "[LSformat du sujet du mail]",
'msg' => "[LSformat du message du mail]",
'mail_attr' => 'mail', // Attribut mail de l'objet
'get_mail_attr_function' => '[function]', // Fonction retournant l'attribut mail de l'objet
'send' => 1, // Activation par défaut de l'envoi du mot de passe
'ask' => 1, // Laisser le choix à l'utilisateur
'canEdit' => 1, // Activation de l'édition du LSformat du message par l'utilisateur
'checkDomain' => false, // Désactivation de la vérification du domaine de l'adresse email
'domain' => '[nom de domaine]', // Nom de domaine obligatoire lors de la validation de l'adresse email
)
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>isLoginPassword</term>
<listitem>
<simpara>Booléen définissant si le mot de passe est celui utilisé par l'utilisateur
pour se logguer à l'annuaire LDAP. Si c'est le cas, pour vérifier si le mot de passe
correspond avec un autre, une tentative de connexion de l'utilisateur à l'annuaire
sera faite. (Par défaut : <literal>Faux</literal>)</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>generationTool</term>
<listitem>
<simpara>Booléen définissant si l'outil de génération de mot de passe est
activé.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>autoGenerate</term>
<listitem>
<simpara>Active la génération automatique du mot de passe lorsque l'attribut
n'a encore aucune valeur de définie. Il faut également que l'outil de
génération soit activé (<parameter>generationTool</parameter>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>lenght</term>
<listitem>
<simpara>Nombre de caractères que devront contenir les mots de passe générés.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>chars</term>
<listitem>
<para>Tableau contenant une liste de listes de caractères possibles pour
composer le mot de passe. Dans chacune de ces listes, au moins un caractère
sera utilisé dans le nouveau mot de passe. Il est possible de définir un
nombre supérieur de caractères d'une liste devant apparaître dans les mots de
passe générés en spécifiant un tableau associatif dont la clé <emphasis>nb
</emphasis> associra le nombre entier de caractères et la clé <emphasis>chars
</emphasis> la liste de caractères. Une liste de caractères est un chaîne.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>use_pwgen</term>
<listitem>
<para>Booléen définissant si la commande <literal>pwgen</literal> doit être
utilisé pour générer le mot de passe.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>pwgen_path</term>
<listitem>
<para>Chemin d'accès au binaire <literal>pwgen</literal>.
(Par défaut : <literal>pwgen</literal>).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>pwgen_opts</term>
<listitem>
<para>Options à passer à la commande <literal>pwgen</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>verify</term>
<listitem>
<simpara>Booléen définissant si l'outil de vérification du mot de passe est
activé. Si celui-ci est activé, l'utilisateur pourra entrer un mot de passe
dans le champ et cliquer sur un bouton qui lancera une procédure de
vérification du mot de passe via un test de connexion à l'annuaire.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>viewHash</term>
<listitem>
<simpara>Booléen définissant si l'utilisateur aura accès à la fonctionnalité
de visualisation du mot de passe haché.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>confirmInput</term>
<listitem>
<simpara>Booléen définissant si un second champ mot de passe sera affiché dans
le formulaire pour que l'utilisateur confirme la saisie du nouveau mot de passe.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>confirmInputError</term>
<listitem>
<simpara>&LSformat; du message d'erreur affiché à l'utilisateur si le mot de
passe saisie dans le champs de confirmation ne correspond pas au nouveau mot
de passe. <emphasis>Paramètre facultatif.</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>confirmChange</term>
<listitem>
<simpara>Booléen définissant si l'utilisateur devra confirmer le changement de
ce mot de passe. Lorsque cette fonctionnalité est activée, l'utilisateur verra
apparaître une popup de confirmation à la validation du formulaire s'il a saisi
un nouveau mot de passe.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>confirmChangeQuestion</term>
<listitem>
<simpara>&LSformat; de la question posée à l'utilisateur en cas de changement
du mot de passe et si la fonctionnalité est activée. Il sera composé à l'aide
du <emphasis>label</emphasis> de l'attribut. <emphasis>Paramètre facultatif.
</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>clearView</term>
<listitem>
<simpara>Booléen définissant si l'utilisateur pourra voir le mot de passe en
clair par défaut (y comris en mode visualisation uniquement).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>clearEdit</term>
<listitem>
<simpara>Booléen définissant si l'utilisateur éditera le mot de passe au travers
un champs HTML de type <emphasis>text</emphasis> et donc lisible ou au travers un
champs HTML de type <emphasis>password</emphasis>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>mail</term>
<listitem>
<para>Paramètres de configuration de l'envoi par mail du mot de passe à
l'utilisateur. Lorsque cet outil est activé, lors de la modification/création
du mot de passe, l'utilisateur pourra recevoir un mail lui spécifiant son
nouveau mot de passe.
<variablelist>
<title>Paramêtres de configuration</title>
<varlistentry>
<term>send</term>
<listitem>
<simpara>Booléen définissant si l'envoi du mot de passe est activé par
défaut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>ask</term>
<listitem>
<simpara>Booléen définissant si on laisse le choix à l'utilisateur
d'activer ou non l'envoi du mot de passe par mail.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>canEdit</term>
<listitem>
<simpara>Booléen définissant si on laisse la possibilité à l'utilisateur
d'éditer le &LSformat; du message et du sujet.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>subject</term>
<listitem>
<simpara>&LSformat; du sujet du mail. Ce format sera composé avec la
valeur du nouveau mot de passe de l'utilisateur.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>msg</term>
<listitem>
<simpara>&LSformat; du message du mail. Ce format sera composé avec les
informations de l'object LDAP, y compris le mot clé <emphasis>%{password}</emphasis>
correspondant à la valeur du nouveau mot de passe de l'utilisateur.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>mail_attr</term>
<listitem>
<simpara>Le nom de l'attribut listant les mails possibles de
l'utilisateur. Par défaut, la première valeur de l'attribut sera
utilisée comme adresse mail destinatrice. Cet attribut peut également
être un tableau de plusieurs noms d'attributs. Dans ce cas, la première
valeur correcte sera retenue.
Si <parameter>canEdit</parameter> est activé, l'utilisateur pourra
choisir l'adresse mail destinatrice parmi la liste des valeurs de
l'attribut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>get_mail_attr_function</term>
<listitem>
<simpara>Nom de la fonction (ou <literal>callable</literal> au sens PHP)
qui sera utilisé pour récupérer le nom de l'attribut listant les mails
possibles de l'utilisateur. Cette fonction prendra en paramètre, l'objet
<literal>LSformElement</literal> courant et devra retourner une valeur
équivalente au paramètre de configuration <literal>mail_attr</literal>.
Si ce paramètre est défini, il prévalera toujours sur le paramètre
<literal>mail_attr</literal>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>bcc</term>
<listitem>
<simpara>Mettre en <emphasis>BCC</emphasis> un mail systématiquement
(ou plusieurs en les séparant par des virgules).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>headers</term>
<listitem>
<simpara>Un tableau de type clé/valeur ou la clé est le nom d'un header
à ajouter au mail et la valeur est la valeur de l'header en question.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>checkDomain</term>
<listitem>
<simpara>Booléen définissant si le domaine de l'adresse mail doit être
validée. <emphasis>Paramètre facultatif, par défaut: <literal>TRUE</literal>
</emphasis></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>domain</term>
<listitem>
<simpara>Nom de domaine obligatoire lors de la validation de l'adresse mail.
Ce paramètre peut être une simple chaine correspondant au domaine ou un
tableau listant plusieurs domaines valides. <emphasis>Paramètre facultatif,
par défaut tous les domaines sont acceptés.</emphasis></simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,68 +0,0 @@
<sect4 id="config-LSattr_html_postaladdress">
<title>LSattr_html_postaladdress</title>
<para>Ce type est utilisé pour la gestion des attributs du type de l'attribut
standard <emphasis>postalAddress</emphasis>. Ce type d'attribut permet d'afficher,
en plus de l'adresse, un lien composé à partir d'informations de l'objet permettant
par exemple d'afficher un lien vers une carte géocalisant l'adresse postale.</para>
<para>Par défaut, le lien ajouté sera un lien de recherche de l'adresse postale
générée à partir de la valeur de l'attribut (en remplaçant les retours à la ligne
(<literal>\n</literal>) par des espaces) via le service
<ulink url='http://nominatim.openstreetmap.org/'>Nominatim d'OpenStreetMap</ulink>.
</para>
<note><simpara>Dans le cadre du fonctionnement par défaut et pour maîtriser les
valeurs stockées dans l'annuaire, il faut coupler ce type d'attribut HTML avec le
type d'attribut LDAP
<link linkend='config-LSattr_ldap_postaladdress'>postaladdress</link></simpara></note>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'map_url_pattern_format' => '[LSformat]',
'map_url_pattern_generate_function' => '[callable]',
'map_url_format' => '[LSformat]',
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>map_url_pattern_format</term>
<listitem>
<simpara>Ce &LSformat; doit permettre de générer la valeur de l'adresse postale
qui sera insérée dans l'URL du lien ajouté dans l'interface.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>map_url_pattern_generate_function</term>
<listitem>
<simpara>Ce paramètre permet de définir une fonction qui sera utilisée à la place
du paramètre <literal>map_url_pattern_format</literal> pour générer la valeur de
l'adresse postale qui sera insérée dans l'URL du lien ajouté dans l'interface.
Cette fonction prendra en paramètre l'objet <emphasis>LSformElement</emphasis>
courant et devra retourner une chaîne de caractères correspondant à l'adresse
postale à insérer dans le lien de l'interface. Par défaut, la fonction
<literal>LSformElement_postaladdress__generate_pattern</literal> est utilisée.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>map_url_format</term>
<listitem>
<simpara>Ce &LSformat; doit permettre de générer l'URL du lien ajouté dans
l'interface. Il sera composé avec les informations de l'objet LDAP, y compris
le mot clé <emphasis>%{pattern}</emphasis> correspondant à la valeur de l'adresse
postale générée à l'aide des paramètres précédents. Par défaut, la format suivant
sera utilisé :
<literal>http://nominatim.openstreetmap.org/search.php?q=%{pattern}</literal></simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,8 +0,0 @@
<sect4 id="config-LSattr_html_pre">
<title>LSattr_html_pre</title>
<para>Ce type est dérivé du type &LSattr_html_textarea; et permet
simplement que lors de l'affichage de la valeur, celle-ci soit
affichée en respectant les retours à la ligne et en utilisant une
police de caractères <literal>monospace</literal>. Cela reproduit
l'affichage d'une balise HTML <literal>pre</literal>.</para>
</sect4>

View file

@ -1,10 +0,0 @@
<sect4 id="config-LSattr_html_rss">
<title>LSattr_html_rss</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
l'URL d'un flux RSS. Il propose directement dans l'interface, la possibilité
d'accèder au flux RSS.</para>
<important><simpara>Ce type d'attribut HTML est dérivé du type
<link linkend='config-LSattr_html_text'>text</link>. Il profite donc de toutes
les fonctionnalités d'un champ de ce type (autogénération, ...).</simpara>
</important>
</sect4>

View file

@ -1,13 +0,0 @@
<sect4 id="config-LSattr_html_sambaAcctFlags">
<title>LSattr_html_sambaAcctFlags</title>
<para>Ce type est prévu pour gérer l'attribut <emphasis>sambaAcctFlags</emphasis> du
schéma Samba, qui au travers d'une seule et unique valeur, respectant un format prévu,
liste l'ensemble des drapeaux actifs d'un compte Samba. Il est conçu pour être utilisé
conjointement avec le type d'attribut LDAP &LSattr_ldap_sambaAcctFlags;.</para>
<note><simpara>Ce type d'attribut est implémenté en dérivant le type
<emphasis>LSattr_html_select_box</emphasis> dont les valeurs possibles sont
pré-configurées (paramètre <literal>possible_values</literal>). Même si cela n'est pas
forcément utiles, les autres paramètres du type parent restent utilisables.</simpara>
</note>
</sect4>

View file

@ -1,9 +0,0 @@
<sect4 id="config-LSattr_html_select_box">
<title>LSattr_html_select_box</title>
<para>Ce type est identique au type <emphasis>LSattr_html_select_list</emphasis>
excepté qu'il utilise en lieu et place d'une balise HTML <literal>select</literal>,
plusieurs balises HTML <literal>input</literal> de type <literal>checkbox</literal>
en cas de valeurs multiples ou de type <literal>radio</literal> en cas de valeur
unique. Les paramètres de configuration sont entièrement hérités de la classe
<emphasis>LSattr_html_select_list</emphasis> et sont donc exactement les mêmes.</para>
</sect4>

View file

@ -1,256 +0,0 @@
<sect4 id="config-LSattr_html_select_list">
<title>LSattr_html_select_list</title>
<para>Ce type est utilisé pour la gestion des attributs dont les valeurs font
partie d'une liste statique ou dynamique. Il est possible de lister des valeurs
statiques et également des références à d'autres &LSobjects;. La référence à
un objet correspond à une valeur clé, référente à un objet précis, qui peut être
soit la valeur d'un de ses attributs, soit son <emphasis>DN</emphasis>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
'possible_values' => array (
'[LSformat de la valeur clé]' => '[LSformat du nom d'affichage]',
...
'OTHER_OBJECT' => array (
'object_type' => '[Type d'LSobject]',
'display_name_format' => '[LSformat du nom d'affichage des LSobjects]',
'value_attribute' => '[Nom de l'attribut clé]',
'values_attribute' => '[Nom de l'attribut clé multi-valeur]',
'filter' => '[Filtre de recherche des LSobject]',
'scope' => '[Scope de la recherche]',
'basedn' => '[Basedn de la recherche]',
'onlyAccessible' => '[Booléen]'
),
'OTHER_ATTRIBUTE' => '[attr]',
// Or :
'OTHER_ATTRIBUTE' => array(
'[attr1]' => '[label1]',
'[attr2]' => '[label2]',
[...]
),
// Or :
'OTHER_ATTRIBUTE' => array(
'attr' => [attr],
'json_component_key' => '[Composant JSON clé]',
'json_component_label' => '[Composant JSON label]',
),
array (
'label' => '[LSformat du nom du groupe de valeurs]',
'possible_values' => array (
'[LSformat de la valeur clé]' => '[LSformat du nom d'affichage]',
...
'OTHER_OBJECT' => array (
...
)
)
)
),
'get_possible_values' => [callable],
'translate_labels' => [booléen],
'sort' => [Booléen],
'sortDirection' => '[ASC|DESC]'
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>possible_values</term>
<listitem>
<para>Tableau associatif obligatoire contenant en valeur clé le &LSformat;
des valeurs clés prisent par l'attribut et en valeurs associées, le &LSformat;
des noms d'affichage de ces valeurs. Ces &LSformats; sont composés à partir des
valeurs de l'objet courant (attributs, dn, ...).</para>
<para>Si la valeur clé est égale à <literal>OTHER_OBJECT</literal>, une liste
d'&LSobject; sera insérée dans la liste des valeurs possibles. La valeur
associée est alors un tableau associatif dont les valeurs clés sont les noms
des paramètres de configuration de la recherche de ces &LSobjects; et les
valeurs associées, les valeurs des paramètres.</para>
<para>Il est possible de regrouper des valeurs de l'attribut en plaçant leur
déclaration dans un sous-tableau. Ce sous-tableau devra contenir la clé
<literal>label</literal> dont la valeur associé sera le &LSformat; du nom du groupe
de valeurs. Ce &LSformat; est composé à partir des valeurs de l'objet courant
(attributs, dn, ...). Une seconde clé <literal>possible_values</literal> regroupera
les valeurs possibles du groupe. Comme pour le tableau principal, la clé <literal>
OTHER_OBJECT</literal> permet d'imcorporer une liste d'&LSobject;.</para>
<variablelist>
<varlistentry>
<term>object_type</term>
<listitem>
<simpara>Nom du type d'&LSobject; en référence.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>display_name_format</term>
<listitem>
<simpara>&LSformat; du nom d'affichage des objets lors de leur sélection.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>value_attribute</term>
<listitem>
<simpara>Nom de l'attribut des &LSobjects; en référence servant de valeur
clé et permettant de les identifier (Exemple : <emphasis>dn</emphasis> ou
<emphasis>uid</emphasis>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>values_attribute</term>
<listitem>
<simpara>Nom de l'attribut des &LSobjects; en référence servant de catalogue de
valeurs. Dans ce mode, la valeur n'a pas de label et est affichée directement
dans l'interface. Ce paramètre peut-être utilisé en complément ou non du paramètre
<emphasis>value_attribute</emphasis>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>filter</term>
<listitem>
<simpara>Filtre falcultatif de la recherche des LSobjets. Il sera dans tous
les cas agrémenté des valeurs des <emphasis>objectclass</emphasis> du type
d'&LSobject;.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>scope</term>
<listitem>
<simpara>Scope falcultatif de la recherche des LSobjets.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>basedn</term>
<listitem>
<simpara>Basedn falcultatif de la recherche des LSobjets.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>onlyAccessible</term>
<listitem>
<simpara>Booléen falcultatif définissant si seul les LSobjets auxquels
l'utilisateur connecté à accès doivent être considérés comme sélectionnables
(Faux par défaut).</simpara>
</listitem>
</varlistentry>
</variablelist>
<para>Si la valeur clé est égale à <literal>OTHER_ATTRIBTE</literal>, une liste
de valeur possible sera composée à l'aide des valeurs d'un (ou plusieurs) autre
attribut de l'objet courant. La valeur associée peut être alors&nbsp;:
<itemizedlist>
<listitem>
<simpara>soit le nom d'un attribut dont les valeurs seront utilisées comme valeurs
possibles (la valeur affichée est égale à la valeur stockée).</simpara>
</listitem>
<listitem>
<simpara>soit un tableau associatif dont les valeurs clés sont les noms des attributs
dont les valeurs seront utilisés comme valeurs possibles et dont les valeurs associés
seront les labels sous lesquels ces valeurs seront regroupées (la valeur
affichée est égale à la valeur stockée).</simpara>
</listitem>
<listitem>
<simpara>soit un tableau associatif référençant un attribut sous la clé <emphasis>attr
</emphasis> dont les valeurs seront utilisées comme valeurs possibles. Cet attribut
peut-être du type &LSattr_html_jsonCompositeAttribute;. Il sera alors possible d'utiliser
les valeurs d'un composant en particulier en le référençant à l'aide de la clé <emphasis>
json_component_key</emphasis>. Il est également possible de référencer un autre composant
à l'aide de la clé <emphasis>json_component_label</emphasis> et dont les valeurs seront
utilisées comme valeurs affichées lors de la sélection. À défaut, les valeurs affichées
seront identiques à celles stockées.</simpara>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>get_possible_values</term>
<listitem>
<para>Paramètre permettant de spécifier un <emphasis>callable</emphasis> qui sera utilisé
pour lister les valeurs possibles de l'attribut. Il recevra en paramètres les informations
suivantes:
<variablelist>
<varlistentry>
<term>$options</term>
<listitem>
<simpara>Les options HTML de l'attribut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>$name</term>
<listitem>
<simpara>Le nom de l'attribut.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>&amp;$ldapObject</term>
<listitem>
<simpara>Une référence à l'objet <literal>LSldapObject</literal>.</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>La valeur de retour attendue est un tableau associatif des valeurs possibles
de l'attribut avec la valeur que prendra l'attribut en tant que clé et le label
correspondant en tant que valeur. Tout autre retour sera considéré comme un échec
et déclenchera une erreur.</para>
<para>Il est également possible de regrouper des valeurs possibles de l'attribut: pour
cela, le tableau retourné devra lui-même contenir un tableau associatif contenant la
label traduit du groupe sous la clé <literal>label</literal> et les valeurs possibles
du groupe sous la clé <literal>possible_values</literal>.</para>
<para>Les valeurs retournées pourront être combinées avec les autres valeurs possibles
configurées de l'attribut. La prise en charge du tri des valeurs possibles est assurée
par la fonction appelante sauf dans le cas des sous-groupes de valeurs possibles. Dans
ce cas, la méthode <literal>LSattr_html_select_list :: _sort()</literal> pourra être
utilisée pour trier les valeurs du sous-groupe: cette méthode accepte en paramètre une
référence du tableau des valeurs possibles ainsi que les options HTML de l'attribut.
</para>
<para>Si la traduction des labels des valeurs possibles de l'attribut est activées
(voir ci-dessous), celle-ci doit être prise en charge par la fonction configurée.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>translate_labels</term>
<listitem>
<simpara>Booléen permettant d'activer/désactiver la traduction des labels (Par defaut : <literal>Vrai</literal>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>sort</term>
<listitem>
<simpara>Booléen définissant si les valeurs possibles doivent être
triées ou non (Vrai par défaut). Le trie est effectué sur les libellés
des valeurs possibles.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>sortDirection</term>
<listitem>
<simpara>Mot clé déterminant le sens du trie des valeurs possibles.</simpara>
<simpara>Valeurs possibles : <literal>ASC</literal> ou <literal>DESC</literal> (<literal>ASC</literal> par défaut).</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,120 +0,0 @@
<sect4 id="config-LSattr_html_select_object">
<title>LSattr_html_select_object</title>
<para>Ce type est utilisé pour la gestion des attributs dont les valeurs sont
des références à d'autres &LSobjects;. Chaque référence à un objet correspond
à une valeur prise par l'attribut. Les valeurs clés référant à un &LSobject;
sont soit la valeur d'un de leurs attributs, soit leur <emphasis>DN</emphasis>.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
selectable_object => array (
array (
'object_type' => '[Type d'LSobject selectionnable]',
'display_name_format' => '[LSformat du nom d'affichage des LSobjects]',
'value_attribute' => '[Nom de l'attribut clé des LSobjects]',
'filter' => '[Filtre de recherche]',
'onlyAccessible' => '[Booléen]'
),
[...]
),
'ordered' => [Booléen],
'sort' => [Booléen],
'sortDirection' => '[ASC|DESC]'
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>selectable_object</term>
<listitem>
<simpara>Tableau dont chaque valeur correspond à un tableau associatif spécifiant
un type d'&LSobject; sélectionnable. Pour chaque type d'objet sélectionnable, les
paramètres suivants doivent être renseignés :</simpara>
<variablelist>
<varlistentry>
<term>object_type</term>
<listitem>
<simpara>Nom du type d'&LSobject; en référence
<emphasis>(Paramètre obligatoire)</emphasis>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>display_name_format</term>
<listitem>
<simpara>&LSformat; du nom d'affichage des objets lors de leur sélection
<emphasis>(Paramètre facultatif)</emphasis>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>value_attribute</term>
<listitem>
<simpara>Nom de l'attribut des &LSobjects; en référence servant de valeur
clé et permettant de les identifier <emphasis>(Paramètre obligatoire,
exemples : <literal>dn</literal> ou <literal>uid</literal>)</emphasis>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>filter</term>
<listitem>
<simpara>Filtre de recherche qui sera ajouter au filtre par défaut lors de la
sélection des objets <emphasis>(Paramètre facultatif)</emphasis>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>onlyAccessible</term>
<listitem>
<simpara>Booléen définissant si seul les LSobjets auxquels l'utilisateur connecté
à accès doivent être considérés comme sélectionnables <emphasis>(Paramètre facultatif,
par défaut: <literal>False</literal>)</emphasis>.</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>ordered</term>
<listitem>
<simpara>Booléen définissant si la liste des objets choisis doit être ordonnable ou
non <emphasis>(Paramètre facultatif, par défaut: <literal>False</literal>)</emphasis>.
Cela aura pour effet d'activer une fonctionnalité dynamique de l'interface permettant
de remonter ou descendre dans la liste les objets choisis.</simpara>
<note><simpara>Cette fonctionnalité désactive automatiquement le trie des
objets à l'affichage.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>sort</term>
<listitem>
<simpara>Booléen définissant si la liste des objets choisis doit être
triée ou non <emphasis>(Paramètre facultatif, par défaut:
<literal>True</literal>)</emphasis>. Le trie est effectué sur les libellés
des objets choisis.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>sortDirection</term>
<listitem>
<simpara>Mot clé déterminant le sens du trie des objets choisis.</simpara>
<simpara>Valeurs possibles : <literal>ASC</literal> ou <literal>DESC</literal> (<literal>ASC</literal> par défaut).</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,6 +0,0 @@
<sect4 id="config-LSattr_html_ssh_key">
<title>LSattr_html_ssh_key</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une clef publique SSH. Il permet dans l'interface, d'avoir un affichage adapté
à ce type de donnée.</para>
</sect4>

View file

@ -1,10 +0,0 @@
<sect4 id="config-LSattr_html_tel">
<title>LSattr_html_tel</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
un numéro de téléphone. Lors de l'affichage, un lien hypertexte avec une URI
de type <literal>tel:~~</literal> est affiché.</para>
<important><simpara>Ce type d'attribut HTML est dérivé du type
<link linkend='config-LSattr_html_text'>text</link>. Il profite donc de toutes
les fonctionnalités d'un champ de ce type (autogénération, ...).</simpara>
</important>
</sect4>

View file

@ -1,96 +0,0 @@
<sect4 id="config-LSattr_html_text">
<title>LSattr_html_text</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une chaîne de caractères devant être affichée dans un champ
<emphasis>input</emphasis> HTML de type <emphasis>text</emphasis>.
</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'generate_value_format' => '[LSformat pour la génération de la valeur]',
'autoGenerateOnCreate' => [booléen],
'autoGenerateOnModify' => [booléen],
'withoutAccent' => [booleen],
'replaceSpaces' => "[chaîne de remplacement]",
'upperCase' => [booleen],
'lowerCase' => [booleen]
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>generate_value_format</term>
<listitem>
<simpara>&LSformat; de la valeur utilisée pour la génération automatique de
celle-ci à partir des informations saisies dans le formulaire. Les valeurs
clefs du format sont les noms des attributs de l'objet. Seuls les attributs
affichés au moins en lecture seule dans le formulaire peuvent être utilisés
dans le format. Une seule valeur par attribut sera utilisée pour la
génération : celle du premier champ (dans l'ordre d'apparition dans le
formulaire).</simpara>
<important><simpara>Seuls les éléments du formulaire de type HTML
<emphasis>input</emphasis>, <emphasis>select</emphasis> ou
<emphasis>textarea</emphasis> peuvent être utilisés.</simpara></important>
</listitem>
</varlistentry>
<varlistentry>
<term>autoGenerateOnCreate</term>
<listitem>
<simpara>Activation de la génération automatique lorsque celui-ci est
vide au moment du chargement du formulaire.</simpara>
<note><simpara>La valeur par défaut est <emphasis>False</emphasis>.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>autoGenerateOnModify</term>
<listitem>
<simpara>Activation de la génération automatique lors de chaque
modification de la valeur des champs du formulaire lié.</simpara>
<note><simpara>La valeur par défaut est <emphasis>False</emphasis>.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>withoutAccent</term>
<listitem>
<simpara>Activation de la suppression des accents dans la chaîne de
caractères générée automatiquement.</simpara>
<note><simpara>La valeur par défaut est <emphasis>False</emphasis>.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>withoutAccent</term>
<listitem>
<simpara>Activation du remplacement des accents dans la chaîne de
caractères générée automatiquement. La valeur de remplacement est celle du
paramètre.</simpara>
<note><simpara>La valeur par défaut est <emphasis>False</emphasis>.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>upperCase</term>
<listitem>
<simpara>Activation de la mise en majuscule de la valeur générée
automatiquement.</simpara>
<note><simpara>La valeur par défaut est <emphasis>False</emphasis>.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>lowerCase</term>
<listitem>
<simpara>Activation de la mise en minuscule de la valeur générée
automatiquement.</simpara>
<note><simpara>La valeur par défaut est <emphasis>False</emphasis>.</simpara></note>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,7 +0,0 @@
<sect4 id="config-LSattr_html_textarea">
<title>LSattr_html_textarea</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est une
chaine de caractères trop longue pour être saisie dans un champs HTML
<emphasis>imput</emphasis> de type <emphasis>text</emphasis> et est plus adapté
à un champ HTML <emphasis>textarea</emphasis>.</para>
</sect4>

View file

@ -1,11 +0,0 @@
<sect4 id="config-LSattr_html_url">
<title>LSattr_html_url</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une URL. Il propose directement dans l'interface, la possibilité d'accèder au
site ou encore de l'ajouter dans ses favoris (lorsque le navigateur le
supporte).</para>
<important><simpara>Ce type d'attribut HTML est dérivé du type
<link linkend='config-LSattr_html_text'>text</link>. Il profite donc de toutes
les fonctionnalités d'un champ de ce type (autogénération, ...).</simpara>
</important>
</sect4>

View file

@ -1,81 +0,0 @@
<sect4 id="config-LSattr_html_valueWithUnit">
<title>LSattr_html_valueWithUnit</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est un entier
auxquel un facteur peut s'appliquer (par exemple : <literal>Kilo, Méga, ...</literal>).</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'units' => array (
'[facteur1]' => '[label unit1]',
'[facteur2]' => '[label unit2]',
[...]
),
'translate_labels' => [booléen],
'nb_decimals' => [number of decimals],
'dec_point' => '[decimals point]',
'thousands_sep' => '[thousands separator]',
'store_integer' => [booléen],
'round_down' => [booléen],
)
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>units</term>
<listitem>
<simpara>Tableau associatif dont la clé est un entier correspondant au facteur et la valeur est le label de l'unité. (Par exemple : <literal>1 => Octet, 1024 => Kilo-octet, ...</literal>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>translate_labels</term>
<listitem>
<simpara>Booléen permettant d'activer/désactiver la traduction des labels (Par defaut : <literal>Vrai</literal>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>nb_decimals</term>
<listitem>
<simpara>Le nombre de décimals à afficher en cas de nombre non-entier (Par defaut : <literal>2</literal>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>dec_point</term>
<listitem>
<simpara>Le caractère à utiliser comme séparateur de décimal (Par defaut, une virgule).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>thousands_sep</term>
<listitem>
<simpara>Le caractère à utiliser comme séparateur de milliers (Par defaut, un espace).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>store_integer</term>
<listitem>
<simpara>Booléen permettant d'activer/désactiver le stockage de valeurs entières (Par defaut :
<literal>Vrai</literal>).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>round_down</term>
<listitem>
<simpara>Booléen permettant d'arrondir à l'entier inférieur (et non à l'entier supérieur
par défaut) en cas de stockage de valeurs entières.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,33 +0,0 @@
<sect4 id="config-LSattr_html_wysiwyg">
<title>LSattr_html_wysiwyg</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est du
code HTML et dont l'édition doit être fait à l'aide d'un éditeur <literal>WYSIWYG
</literal>. La librairie &TinyMCE; est utilisée pour cela.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'extra_options' => array (
[Options à passer à TinyMCE]
),
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>extra_options</term>
<listitem>
<simpara>Ce paramètre permet de passer des options à &TinyMCE; pour
personnaliser son comportement. Par exemple, il est possible d'utiliser
le paramètre <literal>valid_styles</literal> pour définir quels styles
CSS sont autorisés. Pour plus d'informations, consultez la documentation
de &TinyMCE;.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,14 +0,0 @@
<sect4 id="config-LSattr_html_xmpp">
<title>LSattr_html_xmpp</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une adresse XMPP. Il propose directement dans l'interface, la possibilité
de lancer une fenêtre de dialogue avec l'interlocuteur de son client XMPP
préféré .</para>
<note><simpara>Cette fonctionnalité n'est supporté uniquement par les
navigateurs web supportant les URI de type <emphasis>xmpp://~~</emphasis>.
</simpara></note>
<important><simpara>Ce type d'attribut HTML est dérivé du type
<link linkend='config-LSattr_html_text'>text</link>. Il profite donc de toutes
les fonctionnalités d'un champ de ce type (autogénération, ...).</simpara>
</important>
</sect4>

View file

@ -1,17 +0,0 @@
<sect3 id="config-LSattr_ldap">
<title>Configuration des attributs LDAP</title>
<para>Cette section décrit les options propres à chacun des types d'attributs LDAP
supportés par &LdapSaisie;.</para>
&conf-LSattr_ldap_ascii;
&conf-LSattr_ldap_boolean;
&conf-LSattr_ldap_compositeValueToJSON;
&conf-LSattr_ldap_date;
&conf-LSattr_ldap_image;
&conf-LSattr_ldap_naiveDate;
&conf-LSattr_ldap_numeric;
&conf-LSattr_ldap_password;
&conf-LSattr_ldap_postaladdress;
&conf-LSattr_ldap_sambaAcctFlags;
&conf-LSattr_ldap_shadowExpire;
</sect3>

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY conf-LSattr_ldap_ascii SYSTEM "LSattr_ldap_ascii.docbook">
<!ENTITY conf-LSattr_ldap_boolean SYSTEM "LSattr_ldap_boolean.docbook">
<!ENTITY conf-LSattr_ldap_compositeValueToJSON SYSTEM "LSattr_ldap_compositeValueToJSON.docbook">
<!ENTITY conf-LSattr_ldap_date SYSTEM "LSattr_ldap_date.docbook">
<!ENTITY conf-LSattr_ldap_image SYSTEM "LSattr_ldap_image.docbook">
<!ENTITY conf-LSattr_ldap_naiveDate SYSTEM "LSattr_ldap_naiveDate.docbook">
<!ENTITY conf-LSattr_ldap_numeric SYSTEM "LSattr_ldap_numeric.docbook">
<!ENTITY conf-LSattr_ldap_password SYSTEM "LSattr_ldap_password.docbook">
<!ENTITY conf-LSattr_ldap_postaladdress SYSTEM "LSattr_ldap_postaladdress.docbook">
<!ENTITY conf-LSattr_ldap_sambaAcctFlags SYSTEM "LSattr_ldap_sambaAcctFlags.docbook">
<!ENTITY conf-LSattr_ldap_shadowExpire SYSTEM "LSattr_ldap_shadowExpire.docbook">
<!ENTITY LSattr_ldap_date "<link linkend='config-LSattr_ldap_date'>LSattr_ldap_date</link>">
<!ENTITY LSattr_ldap_sambaAcctFlags "<link linkend='config-LSattr_ldap_sambaAcctFlags'>LSattr_ldap_sambaAcctFlags</link>">

View file

@ -1,6 +0,0 @@
<sect4 id="config-LSattr_ldap_ascii">
<title>LSattr_ldap_ascii</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une chaine de caractère. Ce type est le type par défaut.</para>
</sect4>

View file

@ -1,42 +0,0 @@
<sect4 id="config-LSattr_ldap_boolean">
<title>LSattr_ldap_boolean</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une booléen. On attend ici par booléen, tout attribut ne pouvant prendre que deux
valeurs pré-définies correspond pour l'un à <emphasis>Oui</emphasis> et l'autre
à <emphasis>Non</emphasis></para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['ldap_options' => array (
'true_value' => '[valeur correspondant à Vrai]',
'false_value' => '[valeur correspondant à Faux]'
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>true_value</term>
<listitem>
<simpara>La valeur de l'attribut correspondant à <emphasis>Vrai</emphasis>­.
(Par défaut : <literal>TRUE</literal>)</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>false_value</term>
<listitem>
<simpara>La valeur de l'attribut correspondant à <emphasis>Faux</emphasis>­.
(Par défaut : <literal>FALSE</literal>)</simpara>
</listitem>
</varlistentry>
</variablelist>
<important><simpara>Les valeurs possibles pour le paramètre <parameter>default_value</parameter>
sont <literal>yes</literal> et <literal>no</literal>.</simpara></important>
</sect4>

View file

@ -1,9 +0,0 @@
<sect4 id="config-LSattr_ldap_compositeValueToJSON">
<title>LSattr_ldap_compositeValueToJSON</title>
<para>Ce type est utilisé pour la gestion des attributs composites dont les
valeurs respectent le format suivant :
<literal>[key1=value1][key2=value2][...]</literal></para>
<para>Ce type d'attribut LDAP sera utilisé pour convertir la valeur en son
équivalent <literal>JSON</literal> pour pouvoir être traité à l'aide du type d'
attribut HTML &LSattr_html_jsonCompositeAttribute;.</para>
</sect4>

View file

@ -1,74 +0,0 @@
<sect4 id="config-LSattr_ldap_date">
<title>LSattr_ldap_date</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une date.</para>
<note>
<para>Au sein d'LdapSaisie, les dates manipulées au travers ce type
d'attribut LDAP, sont au format <emphasis>timestamp</emphasis>. Il s'agit
donc de nombres entiers correpondants au nombre de secondes depuis le 1 janvier
1970.</para>
<para>Le type d'attribut HTML utilisé conjointement avec ce type d'attribut LDAP
devra être prévu pour recevoir et fournir des dates au format <emphasis>timestamp
</emphasis>, comme c'est le cas pour le <link linkend='config-LSattr_html_date'>
type d'attribut HTML <emphasis>date</emphasis></link>.</para>
</note>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['ldap_options' => array (
'timestamp' => [Booléen], // Si la date est stockée au format timestamp
'format' => '[Format de stockage]', // Default : "YmdHisO"
'timezone' => '[Fuseau horaire]', // Default : "UTC"
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>timestamp</term>
<listitem>
<simpara>Booléen définissant si la date est stockée sous la forme d'un
timestamp Unix (nombre de secondes depuis le 1er janvier 1970 à 00:00:00
UTC)­.</simpara>
<remark>Si <parameter>timestamp</parameter> est vrai, &LdapSaisie; ne tient
pas compte du paramètre <parameter>format</parameter>.</remark>
</listitem>
</varlistentry>
<varlistentry>
<term>format</term>
<listitem>
<para>Format de stockage de la date dans l'annuaire. Ce format est composé à
partir des motifs clés gérés par la fonction <function>date()</function>
de &php;. Pour plus d'information, consulter
<ulink url='http://www.php.net/date'>la documentation officielle</ulink>.
<note><simpara>La valeur par défaut est <emphasis>YmdHisO</emphasis>,
correspondant à la syntaxe <literal>Generalized Time</literal> telle que
définie dans la <ulink url='https://tools.ietf.org/html/rfc4517'>RFC4517
</ulink>. Exemples : <literal>20091206230506Z</literal>
<emphasis>(=2009/12/06 23:05:66 UTC)</emphasis> ou
<literal>20190613143537+0200</literal>
<emphasis>(=2019/06/13 14:35:37 UTC+0200)</emphasis>.</simpara></note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>timezone</term>
<listitem>
<para>Fuseau horaire de stockage des dates dans l'annuaire LDAP. Les valeurs
possibles sont documentées dans <ulink url='https://www.php.net/timezones'>la
documentation officielle de PHP</ulink>. (Par défaut : <literal>UTC</literal>)
</para>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,7 +0,0 @@
<sect4 id="config-LSattr_ldap_image">
<title>LSattr_ldap_image</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une image. Pour le moment, aucun traitement particulier n'est appliqué pour le
stockage.</para>
</sect4>

View file

@ -1,9 +0,0 @@
<sect4 id="config-LSattr_ldap_naiveDate">
<title>LSattr_ldap_naiveDate</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
une date dont la <emphasis>timezone</emphasis> doit être ignorée. Côté LDAP,
les dates seront stockées au format UTC étant donnée que la syntaxe LDAP exige
une <emphasis>timezone</emphasis>, cependant celle-ci sera complètement ignorée.
Ce type peut-être utilisé à la place du type &LSattr_ldap_date;.</para>
</sect4>

View file

@ -1,7 +0,0 @@
<sect4 id="config-LSattr_ldap_numeric">
<title>LSattr_ldap_numeric</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
un nombre. Pour le moment, aucun traitement particulier est n'appliqué pour le
stockage.</para>
</sect4>

View file

@ -1,106 +0,0 @@
<sect4 id="config-LSattr_ldap_password">
<title>LSattr_ldap_password</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
un mot de passe.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['ldap_options' => array (
'encode' => '[Type d'encodage du mot de passe]',
'encode_function' => '[Nom de la fonction d'encodage]',
'verify_function' => '[Nom de la fonction de vérification]',
'no_random_crypt_salt' => '[Booléen]', // Désactivation de l'utilisation d'une salt aléatoire
'wildcardPassword' => '[mot de passe(s) en clair]',
'encodedWildcardPassword' => '[mot de passe(s) encodé(s)]'
),]]>
...
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>encode</term>
<listitem>
<para>Nom du type d'encodage du mot de passe utilisé. Les types d'encodages
supportés sont les suivants :
<itemizedlist>
<listitem><simpara><literal>md5crypt</literal></simpara></listitem>
<listitem><simpara><literal>crypt</literal></simpara></listitem>
<listitem><simpara><literal>ext_des</literal></simpara></listitem>
<listitem><simpara><literal>blowfish</literal></simpara></listitem>
<listitem><simpara><literal>sha</literal></simpara></listitem>
<listitem><simpara><literal>sha256</literal></simpara></listitem>
<listitem><simpara><literal>sha512</literal></simpara></listitem>
<listitem><simpara><literal>ssha</literal></simpara></listitem>
<listitem><simpara><literal>ssha256</literal></simpara></listitem>
<listitem><simpara><literal>ssha512</literal></simpara></listitem>
<listitem><simpara><literal>smd5</literal></simpara></listitem>
<listitem><simpara><literal>md5</literal></simpara></listitem>
<listitem><simpara><literal>clear</literal></simpara></listitem>
</itemizedlist>
<note><simpara>Valeur par défaut : <literal>md5crypt</literal></simpara></note>
<important><simpara>Si le type d'encodage est inconnu, ou qu'il n'est pas
supporté par le serveur web, un message d'erreur alertera l'utilisateur et le
mot de passe sera stocké en clair.</simpara></important>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>encode_function</term>
<listitem>
<para>Nom d'une function qui sera utilisée afin d'encoder le mot de passe.
Cette fonction recevra deux paramètres : le <literal>LSldapObject</literal>
et le mot de passe en clair.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>verify_function</term>
<listitem>
<para>Nom d'une function qui sera utilisée afin de valider un mot de passe
soumis par l'utilisateur par rapport à celui stocké dans l'annuaire. Cette
fonction recevra trois paramètres : le <literal>LSldapObject</literal>,le
mot de passe en clair et le mot de passe hashé. Si ce paramètre est omis
et que le paramètre <literal>encode_function</literal> est défini, le mot
de passe à tester sera encodé à nouveau à l'aide de la fonction
<literal>encode_function</literal> et le résultat sera comparé avec le mot
de passe stocké dans l'annuaire.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>no_random_crypt_salt</term>
<listitem>
<simpara>Désactivation de l'utilisation d'une salt générée aléatoirement au
profit de l'utilisation des deux premiers caractères du mot de passe.
Ce paramètre impacte uniquement le type de cryptage <literal>crypt</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>wildcardPassword</term>
<listitem>
<simpara>Mot de passe (ou tableau de mot de passe) qui sera ajouté systématiquement,
en plus du mot de passe choisi. Il sera encodé de la même manière que pour le mot de
passe choisi avant enregistrement.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>encodedWildcardPassword</term>
<listitem>
<simpara>Mot de passe (ou tableau de mot de passe) qui sera ajouté systématiquement,
en plus du mot de passe choisi. Contrairement à la directive
<parameter>wildcardPassword</parameter>, le mot de passe ne sera pas encodé avant
enregistrement.</simpara>
<note><simpara>Cette directive peut cohabiter avec sa cousine <parameter>wildcardPassword</parameter>. Les mot de passes contenus dans les deux directives seront alors ajoutés.</simpara></note>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,14 +0,0 @@
<sect4 id="config-LSattr_ldap_postaladdress">
<title>LSattr_ldap_postaladdress</title>
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est construite
sur le modèle de l'attribut standard <emphasis>postalAddress</emphasis>, c'est à dire
dont les lignes sont séparées à l'aide du caractère de délimiteur <literal>$</literal>.
</para>
<para>Lors de la lecture des valeurs de ce type d'attribut dans l'annuaire, les
caractères <literal>$</literal> seront remplacés par des caractères <literal>\n</literal>
et, à l'inverse, lors de l'écriture des valeurs de ce type d'attribut dans l'annuaire,
les caractères <literal>\n</literal> seront remplacés par des caractères
<literal>$</literal>.</para>
</sect4>

View file

@ -1,9 +0,0 @@
<sect4 id="config-LSattr_ldap_sambaAcctFlags">
<title>LSattr_ldap_sambaAcctFlags</title>
<para>Ce type est prévu pour gérer l'attribut <emphasis>sambaAcctFlags</emphasis> du
schéma Samba, qui au travers d'une seule et unique valeur, respectant un format prévu,
liste l'ensemble des drapeaux actifs d'un compte Samba. Il transforme l'unique valeur
de l'attribut LDAP en une liste de drapeaux actuellement activés sur le compte. Il est
conçu pour être utilisé conjointement avec le type d'attribut HTML
&LSattr_html_sambaAcctFlags;.</para>
</sect4>

View file

@ -1,11 +0,0 @@
<sect4 id="config-LSattr_ldap_shadowExpire">
<title>LSattr_ldap_shadowExpire</title>
<para>Ce type est prévu pour gérer l'attribut <emphasis>shadowExpire</emphasis> du
schéma POSIX, qui une stocke une date sous la forme d'un entier correspondant au
nombre de jours depuis le premier 1er 1970. Il est prévu pour être utilisé
conjointement avec le type d'attribut HTML &LSattr_html_date;.</para>
<note><simpara>Malgrés son nom, ce type d'attribut LDAP peux être utilisé pour d'autres
attributs stockant ce même format de date, tel-que l'attribut <emphasis>shadowLastChange
</emphasis>.</simpara></note>
</sect4>

View file

@ -1,71 +0,0 @@
<sect3 id="config-LSattribute-check-data">
<title>Configuration des règles de vérification syntaxique</title>
<para>Cette section décrit la manière de configuer des règles de vérification
syntaxique sur les données des attributs. Ces règles seront utilisées pour vérifier
que les valeurs saisies par un utilisateur dans un formulaire sont correctes.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['check_data' => array (
'[regle1]' => array(
'msg' => "[Message d'erreur]",
'params' => array(
// Paramètres de la règle
)
),
...
),]]>
...
</programlisting>
<para>Le paramètre <parameter>check_data</parameter> est un tableau associatif
dont les clés sont les noms des règles de vérification syntaxique actives et les
valeurs associées sont des tableaux associatifs contenant les paramètres des
règles.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>msg</term>
<listitem>
<simpara>Le message d'erreur à afficher lors que la règle n'est pas respectée.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>params</term>
<listitem>
<simpara>Tableau associatif contenant les paramètres de la règle. Les
paramètres possibles sont propres à chaque type de règle. Les clès sont les
noms des paramètres et les valeurs associés, les valeurs des paramètres.</simpara>
</listitem>
</varlistentry>
</variablelist>
&conf-LSattribute-check-data-alphanumeric;
&conf-LSattribute-check-data-callable;
&conf-LSattribute-check-data-date;
&conf-LSattribute-check-data-differentPassword;
&conf-LSattribute-check-data-email;
&conf-LSattribute-check-data-filesize;
&conf-LSattribute-check-data-imagefile;
&conf-LSattribute-check-data-imagesize;
&conf-LSattribute-check-data-inarray;
&conf-LSattribute-check-data-integer;
&conf-LSattribute-check-data-lettersonly;
&conf-LSattribute-check-data-maxlength;
&conf-LSattribute-check-data-minlength;
&conf-LSattribute-check-data-mimetype;
&conf-LSattribute-check-data-nonzero;
&conf-LSattribute-check-data-nopunctuation;
&conf-LSattribute-check-data-numeric;
&conf-LSattribute-check-data-password;
&conf-LSattribute-check-data-rangelength;
&conf-LSattribute-check-data-regex;
&conf-LSattribute-check-data-required;
&conf-LSattribute-check-data-ssh_pub_key;
&conf-LSattribute-check-data-telephonenumber;
</sect3>

View file

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!ENTITY conf-LSattribute-check-data-alphanumeric SYSTEM "alphanumeric.docbook">
<!ENTITY conf-LSattribute-check-data-callable SYSTEM "callable.docbook">
<!ENTITY conf-LSattribute-check-data-date SYSTEM "date.docbook">
<!ENTITY conf-LSattribute-check-data-differentPassword SYSTEM "differentPassword.docbook">
<!ENTITY conf-LSattribute-check-data-email SYSTEM "email.docbook">
<!ENTITY conf-LSattribute-check-data-filesize SYSTEM "filesize.docbook">
<!ENTITY conf-LSattribute-check-data-imagefile SYSTEM "imagefile.docbook">
<!ENTITY conf-LSattribute-check-data-imagesize SYSTEM "imagesize.docbook">
<!ENTITY conf-LSattribute-check-data-inarray SYSTEM "inarray.docbook">
<!ENTITY conf-LSattribute-check-data-integer SYSTEM "integer.docbook">
<!ENTITY conf-LSattribute-check-data-lettersonly SYSTEM "lettersonly.docbook">
<!ENTITY conf-LSattribute-check-data-maxlength SYSTEM "maxlength.docbook">
<!ENTITY conf-LSattribute-check-data-mimetype SYSTEM "mimetype.docbook">
<!ENTITY conf-LSattribute-check-data-minlength SYSTEM "minlength.docbook">
<!ENTITY conf-LSattribute-check-data-nonzero SYSTEM "nonzero.docbook">
<!ENTITY conf-LSattribute-check-data-nopunctuation SYSTEM "nopunctuation.docbook">
<!ENTITY conf-LSattribute-check-data-numeric SYSTEM "numeric.docbook">
<!ENTITY conf-LSattribute-check-data-password SYSTEM "password.docbook">
<!ENTITY conf-LSattribute-check-data-rangelength SYSTEM "rangelength.docbook">
<!ENTITY conf-LSattribute-check-data-regex SYSTEM "regex.docbook">
<!ENTITY conf-LSattribute-check-data-required SYSTEM "required.docbook">
<!ENTITY conf-LSattribute-check-data-ssh_pub_key SYSTEM "ssh_pub_key.docbook">
<!ENTITY conf-LSattribute-check-data-telephonenumber SYSTEM "telephonenumber.docbook">

View file

@ -1,20 +0,0 @@
<sect4 id="config-LSattribute-check-data-alphanumeric">
<title>alphanumeric</title>
<para>Cette règle vérifie que la valeur est une chaîne de caractères composée
uniquement de lettres non-accuentées, en minuscule ou en majuscule et/ou de
chiffres.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>withAccents</term>
<listitem>
<simpara>Si le paramètre est à <emphasis>true</emphasis>, les lettres accentuées seront acceptées.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,24 +0,0 @@
<sect4 id="config-LSattribute-check-data-callable">
<title>callable</title>
<para>Cette règle vérifie que la valeur saisie est correcte en utilisant une
fonction personnalisée. Cette fonction devra prendre en paramètres la valeur à
valider, le tableau des paramètres de la règle ainsi qu'un pointeur sur l'objet
<emphasis>LSformElement</emphasis>. Sur la base de ses informations, elle devra
valider la valeur et retourner <literal>True</literal> si la valeur est valide
et <literal>False</literal> sinon.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>callable</term>
<listitem>
<simpara>Le nom de la fonction (ou tout autre <literal>callable</literal> au sens PHP)
de validation.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,30 +0,0 @@
<sect4 id="config-LSattribute-check-data-date">
<title>date</title>
<para>Cette règle vérifie que la valeur saisie est bien une date et qu'elle
respecte un format précis.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>format</term>
<listitem>
<simpara>Format de la date à respecter. Ce format doit être compatible avec la
fonction <function>strftime()</function> de &php;.
<ulink url='http://www.php.net/strftime'>Voir la documentation de la
fonction</ulink></simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>special_values</term>
<listitem>
<para>Tableau listant les valeurs spéciales que peut prendre l'attribut. Dans ce tableau,
seules les valeurs sont utilisées et les clés n'ont pas d'importance. Ces valeurs spéciales
n'auront pas forcément besoin de respecter le format attendu.</para>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,24 +0,0 @@
<sect4 id="config-LSattribute-check-data-differentPassword">
<title>differentPassword</title>
<para>Cette règle vérifie que la valeur saisie ne correspond pas à
un des mots de passe stockés dans d'autres attributs du même objet.
</para>
<important><simpara>Les autres attributs doivent utiliser le type
d'attribut <emphasis>LDAP</emphasis>
<link linkend='config-LSattr_ldap_password'>LSattr_ldap_password
</link>.</simpara></important>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>otherPasswordAttributes</term>
<listitem>
<simpara>La liste des autres attributs dont les mots de passe doivent être différent.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,29 +0,0 @@
<sect4 id="config-LSattribute-check-data-email">
<title>email</title>
<para>Cette règle vérifie que la valeur saisie est bien une adresse e-mail. Il
est possible de vérifier si elle appartient bien à un domaine en particulier ou
encore de vérifier si le domaine existe et qu'il possède un serveur de mail(MX).</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>domain</term>
<listitem>
<simpara>Nom de domaine obligatoire. Ce paramètre peut être une simple chaine
correspondant au domaine ou un tableau listant plusieurs domaines
possibles.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>checkDomain</term>
<listitem>
<simpara>Booléen définissant si le domaine de l'adresse mail doit être
validée.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,25 +0,0 @@
<sect4 id="config-LSattribute-check-data-filesize">
<title>filesize</title>
<para>Cette règle vérifie que la valeur est un fichier dont la taille en octets
respecte les limites passées en paramètre.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>minSize</term>
<listitem>
<simpara>Taille minimum.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>maxSize</term>
<listitem>
<simpara>Taille maximum.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,12 +0,0 @@
<sect4 id="config-LSattribute-check-data-imagefile">
<title>imagefile</title>
<para>Cette règle vérifie que la valeur est bien un fichier et que le type mime
de celui-ci est bien une image. Cette règle utilise la règle mimetype en spécifiant
si l'utilisateur ne le fait pas que le type mime doit respecter la regex suivante :
<literal>/image\/.*/</literal></para>
<important><simpara>Cette règle est une simple interface à la règle mimetype,
il est donc possible de passer d'autres paramètres propres à ce type.</simpara>
</important>
</sect4>

View file

@ -1,39 +0,0 @@
<sect4 id="config-LSattribute-check-data-imagesize">
<title>imagesize</title>
<para>Cette règle vérifie que la valeur est une image dont la taille en pixels
respecte les limites passées en paramètre.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>minWidth</term>
<listitem>
<simpara>Largeur minimum.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>maxWitdh</term>
<listitem>
<simpara>Largeur maximum.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>minHeight</term>
<listitem>
<simpara>Hauteur minimum.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>maxHeight</term>
<listitem>
<simpara>Hauteur maximum.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,18 +0,0 @@
<sect4 id="config-LSattribute-check-data-inarray">
<title>inarray</title>
<para>Cette règle vérifie que la valeur saisie fait partie d'une liste de valeurs
autorisées.</para>
<variablelist>
<title>Paramêtres de configuration</title>
<varlistentry>
<term>possible_values</term>
<listitem>
<simpara>Tableau listant les valeurs autorisées.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,39 +0,0 @@
<sect4 id="config-LSattribute-check-data-integer">
<title>integer</title>
<para>Cette règle vérifie que la valeur saisie est un entier. Les paramètres
permettent de spécifier éventuellement si la valeur doit être positive ou négative
et également de borner les valeurs valides.</para>
<variablelist>
<title>Paramêtres de configuration</title>
<varlistentry>
<term>positive</term>
<listitem>
<simpara>Booléen définissant si la valeur doit être positive.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>negative</term>
<listitem>
<simpara>Booléen définissant si la valeur doit être negative.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>min</term>
<listitem>
<simpara>Valeur minimale (supérieur ou égale).</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>max</term>
<listitem>
<simpara>Valeur maximale (inférieur ou égale).</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,5 +0,0 @@
<sect4 id="config-LSattribute-check-data-lettersonly">
<title>lettersonly</title>
<para>Cette règle vérifie que la valeur est une chaîne de caractères composée
uniquement de lettres non-accuentées, en minuscule ou en majuscule.</para>
</sect4>

View file

@ -1,18 +0,0 @@
<sect4 id="config-LSattribute-check-data-maxlength">
<title>maxlength</title>
<para>Cette règle vérifie que la valeur saisie est une chaine de caractères
dont la longueur est inférieur ou égale à la valeur passées en paramètre.</para>
<variablelist>
<title>Paramêtres de configuration</title>
<varlistentry>
<term>limit</term>
<listitem>
<simpara>Limite supérieur (ou égale) de la longueur de la chaîne de caratères.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,27 +0,0 @@
<sect4 id="config-LSattribute-check-data-mimetype">
<title>mimetype</title>
<para>Cette règle vérifie que la valeur est bien un fichier et que le type mime
de celui-ci est correct. Il est possible de vérifier si le type mime fait partie
d'une liste ou encore s'il valide une expression régulière.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>mimeType</term>
<listitem>
<simpara>Type mime obligatoire. Ce paramètre peut être une simple chaine
correspondant au type mime ou un tableau listant plusieurs possibilités.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>mimeTypeRegEx</term>
<listitem>
<simpara>Expression régulière que doit respecter le type mime.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,18 +0,0 @@
<sect4 id="config-LSattribute-check-data-minlength">
<title>minlength</title>
<para>Cette règle vérifie que la valeur saisie est une chaine de caractères
dont la longueur est supérieur ou égale à la valeur passée en paramètre.</para>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>limit</term>
<listitem>
<simpara>Limite inférieure (ou égale) de la longueur de la chaîne de caratères.</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -1,4 +0,0 @@
<sect4 id="config-LSattribute-check-data-nonzero">
<title>nonzero</title>
<para>Cette régle vérifie que la valeur est une valeur numérique non nulle.</para>
</sect4>

View file

@ -1,6 +0,0 @@
<sect4 id="config-LSattribute-check-data-nopunctuation">
<title>nopunctuation</title>
<para>Cette régle vérifie que la valeur est une chaîne de caractères ne contenant
pas de signe de ponctuation. Les caractères suivants sont actuellement exclus :
<literal><![CDATA[( ) . \ / \ * \ ^ \ ? # ! @ $ % + = , " ' > < ~ [ ] { }]]></literal></para>
</sect4>

Some files were not shown because too many files have changed in this diff Show more