Compare commits

...

832 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
Benjamin Renard e0bf5a73f5 Release 3.0.2-1 Debian package 2020-09-30 11:35:51 +02:00
Benjamin Renard 3598e48c6e LSaddon::LSaccessRightsMatrixView: handle customActions & customSearchActions 2020-09-23 14:10:50 +02:00
Benjamin Renard 85b74feb86 LSaddon SUPANN: add supannCheckEntityCouldBeDeleted() function 2020-09-22 20:47:03 +02:00
Benjamin Renard 43cf5ccd7a LSaddon SUPANN: add support for some attributes
Add support of following attributes:
- supannCivilite:
  add supannGetCivilitePossibleValues()
- eduPersonAffiliation:
  add supannGetAffiliationPossibleValues() and
  supannCheckEduPersonAffiliation()
- supannCheckEduPersonAffiliation:
  add supannGetAffiliationPossibleValues() and
  supannCheckEduPersonPrimaryAffiliation()
- supannCheckEduPersonPrimaryAffiliation:
  add generate_eduPersonPrincipalName()
2020-09-22 18:10:05 +02:00
Benjamin Renard de62999fea LSattr_html::select_list: add get_possible_values parameter 2020-09-22 15:04:31 +02:00
Benjamin Renard 8f407e9345 Add LSaddon::showTechInfo 2020-09-21 15:47:07 +02:00
Benjamin Renard 5315005382 LSldapObject::loadData(): explicitly list need attributes in LDAP request 2020-09-21 12:45:39 +02:00
Benjamin Renard 9edfa2b92e LSldap::getAttrs(): add $attrs and $include_internal optional parameters 2020-09-21 12:45:33 +02:00
Benjamin Renard d6c9e358f3 LSaddon::mail: add possibility to send HTML email 2020-09-16 10:35:47 +02:00
Benjamin Renard 255817d7aa Improve POSIX support and add examples to handle this type of attributes 2020-09-11 13:54:08 +02:00
Benjamin Renard a848888894 Add doc about LSattr_ldap::shadowExpire 2020-09-11 13:51:50 +02:00
Benjamin Renard bf482c648f LSattr_ldap::shadowExpire: fix getUpdateData() method to return string values 2020-09-11 13:40:48 +02:00
Benjamin Renard 41d816c025 LSformElement:📅 add clear btn 2020-09-11 13:38:07 +02:00
Benjamin Renard e4ca5bbf71 LSformElement:📅 Make today btn working even if input is empty 2020-09-11 13:35:35 +02:00
Benjamin Renard 052882eb49 Fix handling "0" (zero string) value 2020-09-11 13:34:42 +02:00
Benjamin Renard 822d777dfd LSaddon::samba: fix home and profile path formats 2020-09-11 12:12:43 +02:00
Benjamin Renard 1169772c4a LSattr_html::select_list: clean code of getPossibleValues() method 2020-09-10 15:53:19 +02:00
Benjamin Renard b8c00a8708 LSattr_html::select_box: fix double translation of labels on unfreeze field 2020-09-10 15:52:29 +02:00
Benjamin Renard e62ddbdc19 LSformElement::image: fix error on non-AJAX form when no file is submited 2020-09-10 15:46:10 +02:00
Benjamin Renard aeea76ab2a LSform: fix/improve handling config
Permit to fix handling ajaxSubmit form.
2020-09-10 15:45:26 +02:00
Benjamin Renard 00132e32ad LSform: fix non-AJAX form submission (or form with input[type=file]) 2020-09-10 15:43:52 +02:00
Benjamin Renard 060ebf1bff Allow conversion of LSattr_ldap to string 2020-09-10 12:26:48 +02:00
Benjamin Renard 00d92d1c37 generate_lang_file CLI command: improve logging 2020-09-10 12:26:25 +02:00
Benjamin Renard 4e87ddb898 generate_lang_file CLI command: factor handling possible_values of select list&box 2020-09-10 12:09:26 +02:00
Benjamin Renard d344c56f45 generate_lang_file CLI command: fix PHP warning 2020-09-10 12:07:04 +02:00
Benjamin Renard be04b6becf Add warning on unknown key requested using __get methods 2020-09-10 10:38:35 +02:00
Benjamin Renard d0d3e944ed Extend LSlog_handler using LSlog_staticLoggerClass 2020-09-10 10:26:49 +02:00
Benjamin Renard 988054bfc5 LSlog handlers: fix log TRACE enabled error (even if disabled) 2020-09-10 10:17:19 +02:00
Benjamin Renard 1e6fa6fe8e Improve samba config in LSexample 2020-09-09 20:20:03 +02:00
Benjamin Renard fd4bf4f38a Fix some PHP5 syntax errors 2020-09-09 20:11:03 +02:00
Benjamin Renard 02ad9ded1e generate_lang_file CLI command: add Q choice in interactive mode to quit 2020-09-09 20:06:43 +02:00
Benjamin Renard b3210c0108 Update french translation 2020-09-09 19:05:01 +02:00
Benjamin Renard 63f57cfd77 LSldap: fix/improve update() and getEntry() methods 2020-09-09 19:02:32 +02:00
Benjamin Renard a4183a88fc Improve Samba support using LSaddon::samba 2020-09-09 19:00:55 +02:00
Benjamin Renard 15941ac678 Add LSattr LDAP & HTML sambaAcctFlags type 2020-09-09 18:45:34 +02:00
Benjamin Renard 7e74853021 LSattr_html::date & LSformRule:📅 add special_values parameter 2020-09-09 18:40:44 +02:00
Benjamin Renard cccce6edb5 LSldapObject::submitChange(): improve logging 2020-09-09 18:36:46 +02:00
Benjamin Renard 6a3fd60d3e LSformElement::getEmptyField() / LSformElement.tpl: Provide value index as $value_idx template variable 2020-09-08 18:42:54 +02:00
Benjamin Renard df1c46eab6 Add __toString() method to all common extendable PHP classes
This permit to make context logging easier.
2020-09-08 17:29:10 +02:00
Benjamin Renard e89d13d002 LSsearch: fix PHP warning 2020-09-08 16:36:54 +02:00
Benjamin Renard 14bccc1e17 LSrelation: check relation is correctly configured before using it
To avoid some unreal warnings in case of misconfigured relation
2020-09-03 18:59:13 +02:00
Benjamin Renard 88d8d7f026 LSrelation: fix error codes prefix 2020-09-03 18:38:08 +02:00
Benjamin Renard 9db67eb2ba LSsession: improve error messages 2020-09-03 18:31:53 +02:00
Benjamin Renard 1d1e813edf Fix typo in french translation 2020-09-03 18:07:45 +02:00
Benjamin Renard bbaa0a99df Auto declare simple PHP class for simple LSObject type
On LSsession::loadLSobject(), if PHP class file is not found, a simple 
one will be declare.
2020-09-03 16:00:51 +02:00
Benjamin Renard 406b017023 Add method LSldapObject::isValidTypeName() and use it in LSsession::loadLSobject() 2020-09-03 15:40:59 +02:00
Benjamin Renard 4c427b26d6 Improve logging on LSobject & LSattribute triggers executions 2020-08-26 18:08:14 +02:00
Benjamin Renard 0de62c218d doc: fix info about LSobject and LSattribute event triggers configuration 2020-08-26 17:06:24 +02:00
Benjamin Renard 8be45249cb LSformRule :: imagesize: use self :: log_debug() instead of LSdebug() 2020-08-26 16:11:21 +02:00
Benjamin Renard 5b9e6409f4 LSform: fix call of LSformRules validate method to provide LSformElement by ref 2020-08-26 16:10:50 +02:00
Benjamin Renard 4c1c7b2fae LSldapObject->getValue(): add $first and $default parameters 2020-08-26 12:56:58 +02:00
Benjamin Renard 6ed225be8f doc: fix typo 2020-08-26 12:20:27 +02:00
Benjamin Renard be497226ae doc / contrib: Some fixes and adjustments 2020-08-26 12:15:16 +02:00
Benjamin Renard 7711b3c00a Doc / contrib: add section about LSformRules 2020-08-26 11:49:21 +02:00
Benjamin Renard 699631b63c LsformRule: provide reference to LSformElement instead of copied value 2020-08-26 11:45:59 +02:00
Benjamin Renard 5975d36a1c Doc / contrib: add section about LSformElements 2020-08-26 11:25:56 +02:00
Benjamin Renard c5b378abe4 doc: reorganize contrib sub-sections 2020-08-25 20:39:20 +02:00
Benjamin Renard 592288bfaa doc: fix typo 2020-08-25 20:34:55 +02:00
Benjamin Renard f0ef642cf0 LScli::add_command(): fix typo in comment 2020-08-25 20:33:08 +02:00
Benjamin Renard 0c9a077399 doc: fix typo 2020-08-25 20:32:35 +02:00
Benjamin Renard 74468584c1 Publish and complete contrib section of the documentation about LSaddons 2020-08-25 20:32:17 +02:00
Benjamin Renard a8e2ecc343 Translate LSerror message at formating/diplaying time
It's permit to be sure to translate message in the right user language, 
even if its context isn't loaded at error emission time.
2020-08-25 17:31:50 +02:00
Benjamin Renard 827cf2ca7f Handle redirections of old-style URL even if user not authenticated
It's avoid to display error only after login form success.
2020-08-25 17:14:34 +02:00
Benjamin Renard 3d49092262 LSlang: fix warning about return not True 2020-08-25 11:01:28 +02:00
Benjamin Renard 75cbea9459 modify page: fix URL encode object DN in redirection URL 2020-08-25 10:55:28 +02:00
Benjamin Renard a7d202e5ff LScli: add --trace parameter 2020-08-24 18:03:50 +02:00
Benjamin Renard 8a1eefc5e3 LSsession::loadLSprofiles(): restructuring code and improve comments and logging 2020-08-24 17:56:42 +02:00
Benjamin Renard c4dc2a0441 LSsearch::getHash(): fix handling onlyAccessible parameter 2020-08-24 16:55:24 +02:00
Benjamin Renard 11c2e3c9d4 LSsearch: remove buggy _hash cache parameter and replace it by an hash accessible key 2020-08-24 16:54:43 +02:00
Benjamin Renard 7c8fb87c99 LSsearchEntry: remove useless $hash private property 2020-08-24 16:14:16 +02:00
Benjamin Renard 70370f99f9 LSsearch: fix/improve logging 2020-08-24 16:04:23 +02:00
Benjamin Renard e8768d94ce LStemplate::getImagePath(): handle SVG image type/ext as prefered format 2020-08-20 18:29:19 +02:00
Benjamin Renard ada72f3604 light-blue.css: fix objet link color in list when table row is hover 2020-08-20 18:25:04 +02:00
Benjamin Renard b13ff9b832 LSurl::redirect: fix handling absolute URL without protocol
For instance "//localhost/phpldapadmin/")
2020-08-20 18:11:48 +02:00
Benjamin Renard 34d7e10f9a Log referer URL in case of old-style URL redirection 2020-08-19 15:35:18 +02:00
Benjamin Renard 845fdbb4d8 LSauthMethod :: authenticate(): fix PHP warning 2020-08-19 15:11:49 +02:00
Benjamin Renard f223827157 LSsession::includeFile(): improve logging 2020-08-17 20:04:21 +02:00
Benjamin Renard ee74eed4b8 Release 3.0.1-1 Debian package 2020-08-13 17:29:54 +02:00
Benjamin Renard cdd6189e91 dumpFile(): add $force_download and $filename parameters 2020-08-13 16:20:34 +02:00
Benjamin Renard 8d48716e7b LSaccessRightsMatrixView: fix th.rotate-45 borders 2020-08-12 17:25:04 +02:00
Benjamin Renard 848d85589b LSauthMethod_basic::authenticate(): add debug/trace messages 2020-08-07 18:27:54 +02:00
Benjamin Renard 5fcf3bbf9c LSsession: add trace messages in whoami() and canAccess methods 2020-08-07 18:19:24 +02:00
Benjamin Renard 1f1a4e16fa LSsession: add log_exception() method 2020-08-07 18:17:02 +02:00
Benjamin Renard f234709722 LSlog: add TRACE log level 2020-08-07 18:05:50 +02:00
Benjamin Renard 42e6437966 LSsession: fix usage of self :: $topDn instead of self :: getTopDn() 2020-08-07 17:40:40 +02:00
Benjamin Renard 3ce495c2c3 LSerror: format error message at adding time
Format error message at adding time to make sure to be able to format 
it, even if the component triggered it is not loaded.
2020-08-07 16:11:32 +02:00
Benjamin Renard b0b50c51e4 light-blue.css: globally improve style and use dark-grey for text 2020-08-07 16:07:54 +02:00
Benjamin Renard 82198c26a9 LSmail: fix select mail style 2020-08-07 11:39:08 +02:00
Benjamin Renard 6eee099bd2 LScli: fix --sub-dn autocompletion even if LDAP server not selected 2020-08-07 11:09:20 +02:00
Benjamin Renard 3dc0d7f637 LScli :: search: remove buggy --subDn parameter 2020-08-07 10:55:18 +02:00
Benjamin Renard 5bbe076e23 LScli: fix handling LDAP servers with configured subDn
In case of LDAP server with configured subDn, always select a subDn, 
even if user didn't make it with --sub-dn parameter. Futhermore, in BASH 
autocompletion, autocomplete LSobject types with only available ones in 
current subDn.
2020-08-07 10:39:41 +02:00
Benjamin Renard 5e3071d24c light-blue.css: improve handling loginform/recoverpasswordform style 2020-08-06 17:34:38 +02:00
Benjamin Renard 00bb46f6f1 login / recoverPassword forms: fix logo style when is too large 2020-08-06 17:18:00 +02:00
Benjamin Renard 82d6583ad9 light-blue.css: fix loginform/recoverpasswordform style 2020-08-06 17:02:44 +02:00
Benjamin Renard d5d88d2601 LSsession : fix handling subDn in recoverPassword feature 2020-08-06 17:01:51 +02:00
Benjamin Renard ba85e5c2fc LSerror: fix PHP error 2020-08-06 16:44:18 +02:00
Benjamin Renard 14f28a1ec0 LScli: add global --sub-dn parameter 2020-08-06 16:43:50 +02:00
Benjamin Renard 3dbfe18afb LSsession: add setSubDn() method 2020-08-06 16:43:35 +02:00
Benjamin Renard 1420439403 LScli: fix autocomplete_LSobject_types() in case of configured subDn 2020-08-06 15:11:41 +02:00
Benjamin Renard 712d18b09f LSsession: fix/improve methods & doc about global preference parameters 2020-08-06 13:48:43 +02:00
Benjamin Renard 626e0d854c Fix subDn form style 2020-08-06 13:20:49 +02:00
Benjamin Renard 634e2e18f5 LSaccessRightsMatrixView: fix tab links URL 2020-08-04 10:45:20 +02:00
Benjamin Renard 36ecea5174 Typo 2020-08-04 10:31:02 +02:00
Benjamin Renard 669d679464 LSformElement :: boolean: fix translation of default labels 2020-08-04 10:30:49 +02:00
Benjamin Renard f9ebf06a63 LSview: Fix validated URL generation 2020-07-28 12:40:46 +02:00
Benjamin Renard 7eac609bd9 LSformElement JS : fire change event on input field cleared 2020-07-24 11:16:22 +02:00
Benjamin Renard 6c0324bcc4 Release 3.0.0-1 Debian package 2020-07-21 14:21:54 +02:00
Benjamin Renard f45074e228 Update next release changelog and news 2020-07-21 14:11:00 +02:00
Benjamin Renard 5b6bb28b4d LSformElement :: password: fix/improve send new password feature 2020-07-07 16:04:32 +02:00
Benjamin Renard bf054a839d LSformElement :: password: fix PHP warning 2020-07-07 15:41:16 +02:00
Benjamin Renard f8f24df2dd LSformElement :: password: fix confirmInput feature on CLI mode 2020-07-07 14:28:55 +02:00
Benjamin Renard 69fc42a299 LScli create command: add autocompletion 2020-07-07 14:28:04 +02:00
Benjamin Renard 05e0cd56b4 LSldapObject: replace LSlog :: debug() usage by self :: log_debug() 2020-07-07 14:16:13 +02:00
Benjamin Renard 0a8ed10695 LSsearch: replace $logger property by using LSlog_staticLoggerClass 2020-07-07 14:15:30 +02:00
Benjamin Renard 0b180e63b0 LSformElement :: password: fix typo 2020-07-07 12:44:18 +02:00
Benjamin Renard f0bb4f585c LScli modify command: add autocompletion
Autocompletion feature also add on LSform and LSformElement for 
attribute values
2020-07-07 12:43:55 +02:00
Benjamin Renard 312b3dfb11 Wording 2020-07-07 12:38:28 +02:00
Benjamin Renard a21b40d706 LScli autocompleter: fix handling quoted arguments 2020-07-06 17:53:54 +02:00
Benjamin Renard f277528400 LScli relation command: improve -r/--remove autocompletion 2020-07-06 10:22:27 +02:00
Benjamin Renard c232a9899d LSlog_console: fix stderr switching on message other than INFO / DEBUG 2020-07-06 10:21:44 +02:00
Benjamin Renard 5696eb99c4 LSformElement::password: fix changeInput feature
Fix error in modify form when object's attribute is not already set.
2020-06-30 15:55:21 +02:00
Benjamin Renard 5872430863 LSlog handlers: add enabled parameter 2020-06-30 11:03:48 +02:00
Benjamin Renard b898b0a9b7 LSexample: enable changeInput feature on LSpeople userPassword field 2020-06-30 10:27:43 +02:00
Benjamin Renard e58999bbaf LSformElement::password: Improve UX with confirmInput and confirmChange features enabled 2020-06-30 10:19:51 +02:00
Benjamin Renard 7ed325bac7 Update next release changelog 2020-06-30 10:05:46 +02:00
Benjamin Renard 12e4b45cf6 Update french translation 2020-06-30 10:01:06 +02:00
Benjamin Renard d456240fde LSform::validate(): fix checking elements's errors after getPostData() 2020-06-30 10:00:22 +02:00
Benjamin Renard e44be00ebd LSformElement::password: fix confirmChangeQuestion translation 2020-06-30 09:59:25 +02:00
Benjamin Renard f66b7186e8 LSformElement::password: fix some jshint errors 2020-06-30 09:58:57 +02:00
Benjamin Renard dde982f42c generate_ldapsaisie_pot CLI command: fix handling ___() keyword 2020-06-30 09:58:22 +02:00
Benjamin Renard 2c6b95b3d6 LSformElement::password: Add confirmInput feature 2020-06-30 09:57:16 +02:00
Benjamin Renard 47d97a00ce Fix LSurl :: get_rewrite_base() method (again) 2020-06-29 16:59:23 +02:00
Benjamin Renard d0beb86b3d Fix LSurl :: get_rewrite_base() method (again) 2020-06-25 16:17:38 +02:00
Benjamin Renard c36b385e0f Fix LSurl :: get_rewrite_base() method 2020-06-25 16:08:49 +02:00
Benjamin Renard f0f2ce48ad LSurl: fix translation of all fatal error messages 2020-06-25 16:03:49 +02:00
Benjamin Renard 06852080a8 LSurl: Remove REQUESTED_URL parameter and always detecting URL from REQUEST_URI
This permit to correctly handle object's DN with slashes (with 
AllowEncodedSlashes NoDecode).
2020-06-25 16:00:20 +02:00
Benjamin Renard 0ce63f3d1e Add route to handle default browser favicon.ico request 2020-06-25 11:55:20 +02:00
Benjamin Renard 3c27fa92ca bash-completion: do not specify bin absolute path to call bash_autocomplete CLI command 2020-06-23 18:24:44 +02:00
Benjamin Renard da2c90a337 bash-completion: fix DN completion if "=" is included in COMP_WORDBREAKS 2020-06-23 18:20:28 +02:00
Benjamin Renard 458ca79418 LSsearch: Fix PHP < 7 syntax error 2020-06-23 16:17:19 +02:00
Benjamin Renard 173ef8603d Update next release changelog and news 2020-06-23 16:11:42 +02:00
Benjamin Renard 4a72388c60 Fix handling positional args on CLI command search autocompletion 2020-06-23 16:00:25 +02:00
Benjamin Renard 1eced8f47a Add autocompleter for CLI command relation 2020-06-23 15:59:29 +02:00
Benjamin Renard daac4db329 Improve LScli :: autocomplete_LSobject_dn() to provide RDN attribute on empty compword 2020-06-23 15:58:37 +02:00
Benjamin Renard 9de22502ef Add autocompleter for CLI command remove 2020-06-15 11:32:24 +02:00
Benjamin Renard 4ba584e8c6 Add autocompleter for CLI command show 2020-06-15 11:26:57 +02:00
Benjamin Renard 559f9d9475 Add autocompleter for CLI command search 2020-06-15 10:40:48 +02:00
Benjamin Renard a65322335e LScli::bash_autocomplete(): run command autocompleter with command args instead of complete command args 2020-06-15 08:55:00 +02:00
Benjamin Renard c8820ff841 Add autocompleter for CLI command LSlang :: generate_lang_file 2020-06-15 08:30:50 +02:00
Benjamin Renard 3494cc55c8 LScli: add BASH autocompletion support 2020-06-15 08:22:55 +02:00
Benjamin Renard 6c9ad1884a light-blue.css: fix dt.LSform-errors color 2020-06-13 10:27:22 +02:00
Benjamin Renard e9cc1a35b5 light-blue.css: fix dd.LSform-errors width 2020-06-13 10:24:42 +02:00
Benjamin Renard 9cd76faeed LSexample: fix LSpeople userPassword error message 2020-06-13 10:24:14 +02:00
Benjamin Renard 079f39ab4b LSformElement::password: Add confirmChangeQuestion parameter 2020-06-13 10:14:16 +02:00
Benjamin Renard c0f0a0645c LSform: make opacity change progressive on form submission 2020-06-11 20:41:12 +02:00
Benjamin Renard a5814afefc LSform: add CSS class on submitting form to permit visual adaptation 2020-06-11 20:35:55 +02:00
Benjamin Renard 6e02cbe2d5 Fix typo 2020-06-11 20:31:21 +02:00
Benjamin Renard 38ed2ca08c LSformElement::password: Add confirmChange parameter 2020-06-11 20:14:16 +02:00
Benjamin Renard 9c11a81220 LSform JS events: Add possibility to callback to confirm/cancel event 2020-06-11 20:05:28 +02:00
Benjamin Renard 6e14916bae Fix Internet Explorer deprecation warning on IE11 2020-06-04 19:35:49 +02:00
Benjamin Renard ac1626fe22 LSsession: fix some error messages 2020-06-04 19:05:23 +02:00
Benjamin Renard 1b98dbfe80 Fix helpInfo feature by LSsession::addHelpInfos to LStemplate
LSsession :: addHelpInfos() is now deprecated in favor of LStemplate :: 
addHelpInfo().
2020-06-04 19:04:48 +02:00
Benjamin Renard e86b20bec0 LSinfosBox: make CSS responsive 2020-06-04 18:38:02 +02:00
Benjamin Renard 84b14c0e5b login / recover password forms: make CSS responsive 2020-06-04 18:37:43 +02:00
Benjamin Renard 030b1c45f9 LSaccessRightsMatrixView: make CSS responsive 2020-06-04 18:00:25 +02:00
Benjamin Renard 61f492faf7 LSformElement :: pre: make CSS responsive 2020-06-04 17:59:52 +02:00
Benjamin Renard f16dd52aaa LSformElement :: ssh_key: make CSS responsive 2020-06-04 17:59:38 +02:00
Benjamin Renard 5708630abb Improve responsive view 2020-06-04 17:52:10 +02:00
Benjamin Renard 8add94d54f base.css: Improve responsive view of LSobject list footer 2020-06-04 17:12:37 +02:00
Benjamin Renard c6dcc95b51 LSview/LSform: fix loading view dependencies 2020-06-04 17:12:28 +02:00
Benjamin Renard 62b0eb36ab LSrelation: use LSview_actions.tpl 2020-06-04 16:46:00 +02:00
Benjamin Renard 6f3edba986 Object custom action question view: add some LSview actions links 2020-06-04 16:35:54 +02:00
Benjamin Renard 6f612199a0 Remove question view: add some LSview actions links 2020-06-04 16:35:19 +02:00
Benjamin Renard 9848e3d30e LSview actions: factorize templates in LSview_actions.tpl and improve responsive view 2020-06-04 16:34:40 +02:00
Benjamin Renard c221bbffdb js.tpl: fix comments 2020-06-04 16:21:12 +02:00
Benjamin Renard 6e9266b3c5 light-blue.css: fix handling LSformElement :: jsonCompositeAttribute 2020-06-04 12:42:49 +02:00
Benjamin Renard 08c23d67a8 LSformElement :: jsonCompositeAttribute: make CSS responsive 2020-06-04 12:42:09 +02:00
Benjamin Renard 78b18a5729 LSform: fix/improve responsive view 2020-06-04 12:41:16 +02:00
Benjamin Renard f0729a991b light-blue.css: fix LSform select border color 2020-06-04 11:49:16 +02:00
Benjamin Renard 61d34557b5 Debian packaging: purge Smarty templates cache on upgrade 2020-06-04 11:49:09 +02:00
Benjamin Renard 62a08bfbf9 Update next release changelog and news 2020-06-04 11:17:37 +02:00
Benjamin Renard cbaa1eadfd Fix toggle_menu undefined error 2020-06-04 10:02:29 +02:00
Benjamin Renard 31f6189f4a LSform: Avoid page scrolling on tab change 2020-06-03 12:58:37 +02:00
Benjamin Renard bfd60b28c6 LSform: fix preserving current tab on actions links click 2020-06-03 12:58:05 +02:00
Benjamin Renard 49656cd6f6 function.js: fix compatibility with Safari 2020-06-03 11:53:37 +02:00
Benjamin Renard ff3ca35bed Fix LSview-actions-dropdown first li border top color 2020-06-02 21:20:21 +02:00
Benjamin Renard c29240d771 Make LSview-actions respons 2020-06-02 21:10:59 +02:00
Benjamin Renard 506c0fb622 Update news, changelog and upgrade doc about interface responsive 2020-06-02 20:06:13 +02:00
Benjamin Renard 62ec0a2b1e Fix typo toogle/toggle 2020-06-02 19:57:19 +02:00
Benjamin Renard ba41b527c0 Make interface responsive
Adapt components size to view-port size and allow to show/hide menu
2020-06-02 19:56:40 +02:00
Benjamin Renard 78fefb6c8f function.js: Fix global variable B64keyStr declaration 2020-05-29 18:28:15 +02:00
Benjamin Renard 0469d0723f Add alert about no longer support of Internet Explorer 2020-05-29 18:27:31 +02:00
Benjamin Renard 2adbd4cb38 light-blue.css: Fix LSsmoothbox / LSconfirmBox closeBtn CSS
The cross UTF8 character used was not supported by all browsers. Use "x" 
character.
2020-05-29 12:29:13 +02:00
Benjamin Renard c989126f9a Fix historical typo in variable $GLOBALS['defaultJSscripts'] name (missing "R") 2020-05-28 20:32:18 +02:00
Benjamin Renard 47d5ce021d Move some hard-coded messages to template files 2020-05-28 20:24:37 +02:00
Benjamin Renard 4f2afc318f Doc / upgrade: add note about $GLOBALS['defaultJSscipts'] changes 2020-05-28 20:06:45 +02:00
Benjamin Renard f07d15e2eb Update french translation 2020-05-28 19:48:27 +02:00
Benjamin Renard a09841422d Update next release changelog and news 2020-05-28 19:46:37 +02:00
Benjamin Renard 7b14412516 Update upgrade doc 2020-05-28 19:39:58 +02:00
Benjamin Renard 873c12d722 LSmail: fix default & light blue CSS 2020-05-28 18:23:04 +02:00
Benjamin Renard bfe7e18e58 LStemplate :: fatal_error(): use LStemplate method to display error
This permit to correctly handling custom JS/CSS files
2020-05-28 17:01:41 +02:00
Benjamin Renard 88c995ac5c LSerror: do not automatically close LSerror 2020-05-28 17:00:01 +02:00
Benjamin Renard 81c8a486d9 Move "Connect as" label translation to template 2020-05-28 16:59:28 +02:00
Benjamin Renard 69addc15ea LSlog :: get_debug_backtrace_context(): fix/improve method 2020-05-28 16:58:28 +02:00
Benjamin Renard c6526a4e9a light-blue.css: fix LSerror background color 2020-05-28 16:57:41 +02:00
Benjamin Renard de5a4366a9 base.css: fix word wrapping in error template 2020-05-28 16:57:13 +02:00
Benjamin Renard 3fbd9e8073 Move custom JS & CSS handling methods from LSsession to LStemplates
The following method are now offer by LStemplate:
 - addJSscript()
 - addLibJSscript()
 - addJSconfigParam()
 - addCssFile()
 - addLibCssFile()
Old methods are always provided by LSsession, but an deprecated error 
message wil be displayed to alert on it.
2020-05-28 16:56:36 +02:00
Benjamin Renard 0b4e6d4104 LSerror: permit to control message escape method
Globally rework on this class to allow control escape method. Also 
change escape method for logs to use addslashes() instead of 
htmlentities().
2020-05-28 15:48:25 +02:00
Benjamin Renard cb9babd825 light-blue.css: handle errors page 2020-05-27 16:37:15 +02:00
Benjamin Renard f4f1e66434 light-blue.css: handle LSformElement_jsonCompositeAttribute
label color
2020-05-27 16:19:55 +02:00
Benjamin Renard 3ecf6018dd light-blue.css: fix menu bullet 2020-05-27 16:19:20 +02:00
Benjamin Renard 04dc6c910a ligth-blue.css: fix handling LSaccessRightsMatrixView layout 2020-05-27 16:10:23 +02:00
Benjamin Renard 861aa7a340 ligth-blue.css: make it more responsive 2020-05-27 15:57:18 +02:00
Benjamin Renard 90879dc582 LSformElement_wysiwyg: adjust width 2020-05-27 15:56:59 +02:00
Benjamin Renard 49a34fa8e3 light-blue.css: fix submit form size 2020-05-27 15:19:54 +02:00
Benjamin Renard cb54a1785d Rework on CSS and specialy on ligth-blue.css to make it easily customizable 2020-05-27 15:16:02 +02:00
Benjamin Renard 346e36a765 LSformElement :: jsonCompositeAttribute: fix select alignment 2020-05-27 10:08:25 +02:00
Benjamin Renard e868744ea9 LSaccessRightsMatrixView: Fix translation of relation rigths labels 2020-05-25 15:24:45 +02:00
Benjamin Renard aba5a131c2 LSformElement::select_object: fix selection via LSselect on create form 2020-05-25 14:46:41 +02:00
Benjamin Renard 4feec44639 Fix some PHP 7.0 syntax errors 2020-05-25 12:18:06 +02:00
Benjamin Renard 534295d4f3 Update next release changelog and news 2020-05-25 11:52:27 +02:00
Benjamin Renard 47d9b907af LSaccessRigthsMatrixView fix handling subDn LDAP servers configuration 2020-05-25 11:10:16 +02:00
Benjamin Renard d68b15bac3 Add default LSprofiles with the name of authenticable object types
Consquently adjust LSaccessRigthsMatrixView addon and make some 
representative change in LSexample for demo
2020-05-25 11:09:32 +02:00
Benjamin Renard cf1a98e4b3 LSselect: fix number objects of by page 2020-05-20 18:49:08 +02:00
Benjamin Renard a9860f83de LSformElement :: wysiwyg: Fix loading TinyMCE JS 2020-05-20 18:21:05 +02:00
Benjamin Renard fc3912b48b LSexample: put admin user as globally admin of the first LDAP server 2020-05-19 18:59:30 +02:00
Benjamin Renard c8b32f90b9 LSexample: update french translation 2020-05-19 18:52:26 +02:00
Benjamin Renard 6d21aa8b72 LSgroup: allow only one godfather
For demo of object selection for a non-multiple value attribute.
2020-05-19 18:44:57 +02:00
Benjamin Renard 9aec383694 LSgroup: allow possibility to select sysaccounts 2020-05-19 18:43:08 +02:00
Benjamin Renard e53331c0ec LSreletation: fix object type selection 2020-05-19 18:36:16 +02:00
Benjamin Renard c4db08d265 Fix typo 2020-05-19 18:31:55 +02:00
Benjamin Renard bde0f1f234 Update french translation 2020-05-19 18:26:41 +02:00
Benjamin Renard 2c1d03ac7a LSattr_html :: select_object: Fix typo in error message format 2020-05-19 18:26:27 +02:00
Benjamin Renard fc92305bf3 Doc: fix typo 2020-05-19 18:13:02 +02:00
Benjamin Renard a6e9aeaa8b Update doc about new possibility of LSattr_html :: select_object to select multiple type of objects 2020-05-19 18:12:28 +02:00
Benjamin Renard e8095636b5 Allow multiple type of objects in LSselect & LSattr_html :: select_object and globally rework and improve LSrelation consequently 2020-05-19 17:55:55 +02:00
Benjamin Renard 3cf053cf26 Fix PHP warning in base.tpl template file 2020-05-19 17:10:36 +02:00
Benjamin Renard cb83311bd0 LSsearch: Add option to disable cache on customInfos 2020-05-19 17:07:55 +02:00
Benjamin Renard 2ed985324e LSsearchEntry :: __get(): fix attributes value access 2020-05-19 17:07:08 +02:00
Benjamin Renard 69eaf31598 LSaddon::ssh: Add doc about $mode parameter of function createDirsBySFTP
This parameter must be an octal number, with a leading zero (ex: 0640 or 
02755).
2020-05-19 11:21:06 +02:00
Benjamin Renard c120e76822 LSlog_staticLoggerClass: fix log_exception() method 2020-05-18 20:14:10 +02:00
Benjamin Renard 76577c058b Fix some PHP warnings 2020-05-18 20:10:18 +02:00
Benjamin Renard e1cce4e696 LSldapObject :: getLabel(): fix method to be really static 2020-05-18 20:08:03 +02:00
Benjamin Renard 510f3d4bdc LSldapObject: specify object type filter on loading data 2020-05-14 11:07:18 +02:00
Benjamin Renard f7c4050b70 LSldapObject: fix getObjectFilter method 2020-05-14 11:06:09 +02:00
Benjamin Renard 252095b32b LSldap :: getAttrs: add possibility to specify to custom LDAP filter 2020-05-14 11:05:08 +02:00
Benjamin Renard 9bb52296b7 LSsession :: loadLSaddon: keep trace of already loaded addon to avoid loading more than once 2020-05-14 10:53:41 +02:00
Benjamin Renard 8b4b227327 LScli: fix console logging to always log at least errors (excepted in quiet mode) 2020-05-14 10:51:18 +02:00
Benjamin Renard a1a23d1600 checkEmail(): add debug using dedicated LSlog_logger 2020-05-13 16:04:14 +02:00
Benjamin Renard da9c0e344b LSformRule :: email: fix handling domain parameter if its an array 2020-05-13 16:02:17 +02:00
Benjamin Renard 42f4e8a860 LSdebug: check class LSlog exists before using it 2020-05-13 15:54:52 +02:00
Benjamin Renard 8e2c521d18 LSrelation: fix new button opening in LSsmoothbox 2020-05-13 15:41:28 +02:00
Benjamin Renard 351b18827d customAction & customSearchAction: do not show question template if no confirmation need and action executed 2020-05-13 15:31:50 +02:00
Benjamin Renard 50c06500e6 doc / upgrade: fix customAction/customSearchAction new URLs 2020-05-13 15:04:08 +02:00
Benjamin Renard 4ef0a8fb30 LSauthMethod_HTTP: add debug 2020-05-12 21:01:07 +02:00
Benjamin Renard b2ef404da5 LSauthMethod: fix default authenticate() method 2020-05-12 20:59:21 +02:00
Benjamin Renard d2761a29ae Fix typo in default config.inc.php file 2020-05-12 20:20:33 +02:00
Benjamin Renard db710efb87 LSsession: Fix PHP < 7 syntax error 2020-05-12 20:20:11 +02:00
Benjamin Renard f1ce6380b9 LSexample: now handle LSsysaccount and and allow it to connect 2020-05-12 20:12:57 +02:00
Benjamin Renard 047d6f51c8 LSsearch: fix PHP warning 2020-05-12 20:11:45 +02:00
Benjamin Renard e6e5f1c2b8 LSauth :: getAuthObjectTypes(): fix handling simple LSobject type 2020-05-12 19:58:12 +02:00
Benjamin Renard 8a98a6cf30 Add changelog and news note about LSauth support of multiple user object types 2020-05-12 19:45:05 +02:00
Benjamin Renard 80cdd7a789 doc: add upgrade note about replacement of authObjectType, authObjectFilter and authObjectTypeAttrPwd parameters 2020-05-12 19:41:42 +02:00
Benjamin Renard c014e235e8 doc / LSauthMethod_HTTP: remove note about old authObjectFilter
Replace in previous commit by a global note on this topic.
2020-05-12 19:40:49 +02:00
Benjamin Renard 90944dd541 LSformRule_integer: fix handle min/max parameters and add debug 2020-05-12 19:26:07 +02:00
Benjamin Renard 694391e1e7 LSformRule_password: fix handle min/max length parameters and add debug 2020-05-12 19:25:44 +02:00
Benjamin Renard 23bb4aac0e Update french translation 2020-05-12 19:24:53 +02:00
Benjamin Renard 4a3e4e3fbb LSlang :: generate_lang_file: fix handling smarty escape modifier 2020-05-12 19:24:38 +02:00
Benjamin Renard a6f07faca0 LSauth: Add possibility to configure more than one LSobject type as user 2020-05-12 19:23:24 +02:00
Benjamin Renard 5660804ef7 LSauth: replace LSdebug by LSlog logger 2020-05-12 16:37:46 +02:00
Benjamin Renard e75abab737 doc: fix some xmlint errors 2020-05-11 17:38:27 +02:00
Benjamin Renard 58956d2ece Update changelog and ldapsaisie.NEWS file about next major release 2020-05-11 17:31:14 +02:00
Benjamin Renard 838a1781b7 Fix typo in old select.php URL handler 2020-05-11 17:30:34 +02:00
Benjamin Renard 6f3ad49abf Add doc about upgrade 2020-05-11 17:29:51 +02:00
Benjamin Renard b388656724 LSaddon :: LSaccessRightsMatrixView: replace LSdebug by LSlog logger 2020-05-11 11:41:15 +02:00
Benjamin Renard 898e312d7e LSaddon :: mailquota: replace LSdebug by LSlog logger 2020-05-11 11:39:17 +02:00
Benjamin Renard 5f17c45cf4 LSaddon :: ssh: Add debug using LSlog logger 2020-05-11 11:33:53 +02:00
Benjamin Renard 499ff808f4 LSimport: fix data removing on LSobject import
This bug affect import with modify enabled and when some attributes are 
present in modify form, but not in the ioFormat used for import.
2020-05-11 10:38:07 +02:00
Benjamin Renard f61a8b7c71 LSpeople: fix uid validation (blocking CSV import) 2020-05-11 10:34:45 +02:00
Benjamin Renard 85786bc33c LScli : add create command 2020-05-09 12:05:52 +02:00
Benjamin Renard 0feb8e16ea LSldapObject :: validateAttrsData: fix typo 2020-05-09 11:37:09 +02:00
Benjamin Renard 2b535c4640 CLI remove : fix confirm 2020-05-09 11:36:26 +02:00
Benjamin Renard 25877a488b LScli : add modify command 2020-05-08 21:02:28 +02:00
Benjamin Renard 72f38d0612 LSformElement :: password: fix syntax error in getPostData method 2020-05-08 20:48:53 +02:00
Benjamin Renard a356555e0a LSform :: validate: add $onlyIfPresent parameter
This parameter permit to handle only data of present element in POST 
data. Other element are not considered in the form.
2020-05-08 20:48:13 +02:00
Benjamin Renard 3d9c11e12f LSldapObject :: _cli_remove : use LScli :: confirm 2020-05-08 20:38:02 +02:00
Benjamin Renard 1de6d1d25e LScli : add confirm helper method 2020-05-08 20:33:42 +02:00
Benjamin Renard 0d916d3d0d Update doc about LSlog new features 2020-05-08 16:47:27 +02:00
Benjamin Renard 258b712d52 LSlog_handler: fix message format info 2020-05-08 16:18:29 +02:00
Benjamin Renard ca7a6e821e LSsession : use LSlog_logger 2020-05-08 15:51:21 +02:00
Benjamin Renard 108b14560d LSsearchEntry : use LSlog_logger 2020-05-08 15:50:32 +02:00
Benjamin Renard 24cf73cf91 LSformRule : use LSlog_logger 2020-05-08 15:50:07 +02:00
Benjamin Renard 65a5825ce7 LSformElement : use LSlog_logger 2020-05-08 15:49:55 +02:00
Benjamin Renard cc288cc391 LSauthMethods : use LSlog_logger 2020-05-08 15:49:36 +02:00
Benjamin Renard 77144a21d0 LSattribute : use LSlog_logger 2020-05-08 15:49:05 +02:00
Benjamin Renard ed61cacd8b LSattr_ldap : use LSlog_logger 2020-05-08 15:48:38 +02:00
Benjamin Renard 1a26fdafff LSattr_html : use LSlog_logger 2020-05-08 15:48:26 +02:00
Benjamin Renard 3e0829ba31 LScli : use LSlog_logger 2020-05-08 15:20:29 +02:00
Benjamin Renard fb7efd9a14 LSattr_html :: image : fix PHP warning 2020-05-08 15:16:42 +02:00
Benjamin Renard 5674a99a7c LSldap : use LSlog_logger 2020-05-08 15:16:24 +02:00
Benjamin Renard 6abf194807 LSlog : fix handler default logger filtering 2020-05-08 15:04:37 +02:00
Benjamin Renard 5dedbc7d08 LSlog_staticLoggerClass : add log_[level]() helper methods 2020-05-08 15:04:04 +02:00
Benjamin Renard 22b4a7f712 LSlog_staticLoggerClass : Fix self :: $logger inheritance problem 2020-05-08 14:57:24 +02:00
Benjamin Renard 2f8d644af0 LSldapObject : use LSlog_logger 2020-05-08 14:33:20 +02:00
Benjamin Renard 0cac3631c6 LSsearch : use LSlog_logger 2020-05-08 13:51:13 +02:00
Benjamin Renard e0a44cb8aa LStemplate : use LSlog_logger 2020-05-08 13:28:47 +02:00
Benjamin Renard 7425555b3d LSlang : use LSlog_logger 2020-05-08 13:23:45 +02:00
Benjamin Renard 6db3543ec0 LSlog_handler : fix undefined index errors on CLI context 2020-05-08 13:21:28 +02:00
Benjamin Renard b574300ab3 LSlog_handler : add excluded_loggers configuration parameter 2020-05-08 13:18:17 +02:00
Benjamin Renard aebdb4a111 Add LSlog_staticLoggerClass and use it for LSurl 2020-05-08 12:48:06 +02:00
Benjamin Renard 27938eefb9 config.inc.php : fix ident 2020-05-08 12:36:45 +02:00
Benjamin Renard 7c43439224 getFData : fix PHP warning 2020-05-08 12:32:46 +02:00
Benjamin Renard d069df4d6c LSlog : add loggers, filters and format message by handlers 2020-05-08 12:32:21 +02:00
Benjamin Renard de73ffdd60 Rework on template files to use blocks 2020-05-07 12:16:12 +02:00
Benjamin Renard cd8908391d Improve login and recover password templates 2020-05-07 11:36:25 +02:00
Benjamin Renard b9477a8503 LSurl : add get_public_absolute_url() method 2020-05-07 11:35:38 +02:00
Benjamin Renard b0d56ef387 Add index URL to access homepage 2020-05-07 11:35:23 +02:00
Benjamin Renard 1dabe6d6aa LSlang :: setLocale(): don't warn if lang file not found 2020-05-07 11:35:06 +02:00
Benjamin Renard 3c613b7ab4 LSauthMethod: don't warn if config file not found 2020-05-07 11:34:44 +02:00
Benjamin Renard e87270112e LSsession :: loadLSaddon(): don't if config file is not found 2020-05-07 11:34:30 +02:00
Benjamin Renard 7153356a24 LSsession :: loadLSclass(): respect $warn parameter on includeFile() call 2020-05-07 11:19:36 +02:00
Benjamin Renard 16aa789b21 LSsession :: includeFile: add $warn parameter to control warning if file not found 2020-05-07 11:16:09 +02:00
Benjamin Renard 91ea37f841 Remove references to old index.php page 2020-05-07 09:56:28 +02:00
Benjamin Renard 4bd18a14e4 Remove RewriteCond to always redirect request via LSurl 2020-05-07 09:52:29 +02:00
Benjamin Renard 1dd07fd523 Fix global search refresh link URL 2020-05-07 09:51:22 +02:00
Benjamin Renard 66d437cb8d Fix old URL patterns 2020-05-07 09:50:10 +02:00
Benjamin Renard 6ba8f2732c LSsession : fix getTmpFileURL when tmp directory is a symbolic link 2020-05-06 21:23:07 +02:00
Benjamin Renard 041e38e131 Add missing local symbolic link in includes/js directory 2020-05-06 20:40:34 +02:00
Benjamin Renard 3fbe53d4c6 Replace generate_ldapsaisie.pot.sh script by a LScli command 2020-05-06 19:58:57 +02:00
Benjamin Renard 1cb2c47bfb LSlang :: generate_lang_file : return boolean instead of exit 2020-05-06 19:57:14 +02:00
Benjamin Renard 03255e41f4 LScli : add run_external_command() helper method 2020-05-06 19:56:37 +02:00
Benjamin Renard eb2b939dfe LScli : fix comment on run_command method 2020-05-06 19:48:13 +02:00
Benjamin Renard 6dcbddf84c LSlang :: generate_lang_file : does not need LDAP connection 2020-05-06 18:37:02 +02:00
Benjamin Renard dfc3f8e8a8 LSlang :: generate_lang_file : fix detection of all messages 2020-05-06 18:35:39 +02:00
Benjamin Renard 4828ac6b30 LScli : fix warnings about run_command CLI 2020-05-06 18:34:27 +02:00
Benjamin Renard fbba445106 LScli : add possibility to run command without LDAP connection 2020-05-06 18:33:31 +02:00
Benjamin Renard 9028414568 LScli :: handle_args() : check CLI context 2020-05-06 18:01:16 +02:00
Benjamin Renard 4bed3e6c17 LScli ; Move command execution in a dedicated run_command() method 2020-05-06 18:00:47 +02:00
Benjamin Renard 68a2105900 Replace generate_lang_file.php by LScli command generate_lang_file 2020-05-06 17:48:49 +02:00
Benjamin Renard fe4ef419fd LScli :: usage() : only show current executed command message (if already specified) 2020-05-06 17:46:08 +02:00
Benjamin Renard 83b64aac87 ldapsaisie CLI tool : fix core.php inclusion 2020-05-06 16:49:52 +02:00
Benjamin Renard 52f7c3a205 Move LSsession lang stuff to dedicated LSlang class 2020-05-06 16:06:05 +02:00
Benjamin Renard 1f24bdb531 Fix default configuration delivered with the application 2020-05-06 14:54:10 +02:00
Benjamin Renard dea00a25d9 Fix some typo in upgradeFromGit.sh 2020-05-06 12:52:13 +02:00
Benjamin Renard eb93969186 Improve upgradeFromGit.sh script 2020-05-06 12:49:11 +02:00
Benjamin Renard 2183149097 Update doc 2020-05-06 12:31:24 +02:00
Benjamin Renard 7098b3ee79 Massive change of files organisation to move all files outside web-root
The web-root directory now contains URL rewrite stuff. All PHP & static files are
in root src directory and are served via LSurl routes.
2020-05-06 12:17:35 +02:00
Benjamin Renard 4593a94c7f Fix path to default CSS file included (light-blue.css) 2020-05-05 14:53:34 +02:00
Benjamin Renard cf40eb999a Replace fatal_error.tpl and error_404.tpl by an unique error.tpl file 2020-05-05 13:02:54 +02:00
Benjamin Renard edc625b85f Add var_dump template function 2020-05-05 12:49:59 +02:00
Benjamin Renard 92f3d0be8e Fix favicon URL 2020-05-05 12:49:39 +02:00
Benjamin Renard 2a39fb7661 Handle static files access via LSurl routes 2020-05-05 12:48:52 +02:00
Benjamin Renard 4c344aa570 Fix images URL in CSS files 2020-05-05 11:42:32 +02:00
Benjamin Renard a7fea52c92 Deprecate LSsession :: redirect() method in favor of LSurl :: redirect(). 2020-05-04 18:28:20 +02:00
Benjamin Renard 55d78db99f Fix some PHP warnings 2020-05-04 18:03:23 +02:00
Benjamin Renard 71972ea90c LSformElement :: image : Fix/improve file upload error handling & reporting 2020-05-04 18:03:08 +02:00
Benjamin Renard 4097eaed38 Add ___() function to allow declaration of messages that will be translated at display time 2020-05-04 18:02:39 +02:00
Benjamin Renard 07cdad29a4 LSformRule :: filesize : improve by avoiding to create a temporary file 2020-05-04 18:01:13 +02:00
Benjamin Renard 958c5b16a8 Use LSurl route to handle tmp file access 2020-05-04 17:55:46 +02:00
Benjamin Renard add68ec132 Replace index_ajax.php by a LSurl route 2020-05-04 16:12:03 +02:00
Benjamin Renard 86b5e8fece Fix recover password form display 2020-05-04 16:03:15 +02:00
Benjamin Renard 03485bd486 Replace select.php by a LSurl route 2020-05-04 15:25:09 +02:00
Benjamin Renard d6848a3d71 Replace global_search.php by a LSurl route 2020-05-04 15:24:24 +02:00
Benjamin Renard 07e7c3031f Fix search customActions JS validation 2020-05-04 14:25:11 +02:00
Benjamin Renard 2766237481 Replace custom_search_action.php by a LSurl route 2020-05-04 12:55:21 +02:00
Benjamin Renard 119ce68a35 LSurl handlers : fix always display template after adding error 2020-05-04 12:28:11 +02:00
Benjamin Renard feb346acef Replace custom_action.php by a LSurl route 2020-05-04 12:27:11 +02:00
Benjamin Renard 338c61838f Fix templates PHP warning 2020-05-04 11:53:12 +02:00
Benjamin Renard 43da89992a Replace import.php by a LSurl route 2020-05-04 11:13:59 +02:00
Benjamin Renard 9bbd41468b Replace remove.php by a LSurl route 2020-05-04 10:49:11 +02:00
Benjamin Renard ed3d2cda59 Replace modify.php by a LSurl route 2020-05-03 19:44:37 +02:00
Benjamin Renard c29c0dbe08 Replace create.php by a LSurl route 2020-05-03 19:26:39 +02:00
Benjamin Renard 06455db4f3 Replace view.php by LSurl routes 2020-05-03 18:48:33 +02:00
Benjamin Renard 5c372cdb44 LSurlRequest :: add __isset method 2020-05-03 18:08:16 +02:00
Benjamin Renard ac2416a967 LSurl :: redirect() : fix logging error 2020-05-03 18:07:54 +02:00
Benjamin Renard aba1d18b95 Improve doc about public_root_url parameter 2020-05-02 18:46:15 +02:00
Benjamin Renard f8fa2e3d69 LSsession :: includeFile : fix using LSlog when is not already load
Only log errors and use error_log() if LSlog is not loaded.
2020-05-02 18:35:19 +02:00
Benjamin Renard 5474cd2315 Handle LSaddon views by using LSurl 2020-05-02 18:32:31 +02:00
Benjamin Renard 23d5161bfe Define base URL in page templates by using public_root_url parameter 2020-05-02 18:12:43 +02:00
Benjamin Renard 50ea12a81c Handle images URL via LSurl 2020-05-02 17:49:15 +02:00
Benjamin Renard 8c2e5e604b Introduce LSurl, a new URL routing manager for LdapSaisie 2020-05-02 17:48:34 +02:00
Benjamin Renard a3649706cc Fix local files inclusion 2020-05-02 17:45:23 +02:00
Benjamin Renard 8c417b6bc1 LSlog : fix setLevel error 2020-05-01 20:23:10 +02:00
Benjamin Renard d07fb3915c core.php : fix LS_LOCAL_DIR constant definition 2020-05-01 20:22:39 +02:00
Benjamin Renard 336b5307b3 LSrelation : fix constructor method name 2020-05-01 15:56:47 +02:00
Benjamin Renard b500b7821e LScli : add relation command 2020-05-01 15:49:21 +02:00
Benjamin Renard 1ad7f9e462 LSsession : always granted access to attribute/relation/customAction/customSearchAction in CLI mode 2020-05-01 15:46:07 +02:00
Benjamin Renard 53b15e89f8 LScli :: add remove command 2020-05-01 13:41:42 +02:00
Benjamin Renard ddd6b265e3 LScli :: show : show LSrelation 2020-05-01 13:25:23 +02:00
Benjamin Renard ff2ede7c36 LScli :: show : show attribute label and name 2020-05-01 13:25:00 +02:00
Benjamin Renard fa3742c609 LScli :: show : handle form layout (if defined) 2020-05-01 13:05:30 +02:00
Benjamin Renard 448d977f14 LScli : load some classes by default 2020-04-29 19:33:32 +02:00
Benjamin Renard 164a8fab48 LSsearch :: cli_search : remove debug print 2020-04-29 19:32:52 +02:00
Benjamin Renard 6597a630cf LSsearch : add CLI search command 2020-04-29 19:20:59 +02:00
Benjamin Renard c1bcad362d LSsearch : fix sorting by extraDisplayedColumns (on one setParams() call) 2020-04-29 19:19:40 +02:00
Benjamin Renard 58fba457f5 LSsession :: includeFile : allow inclusion of external file with include path search support 2020-04-29 19:18:23 +02:00
Benjamin Renard 35a67dca92 Add some comments on LSldapObject CLI command methods 2020-04-29 17:35:34 +02:00
Benjamin Renard 7879ddf699 LSldapObject : add CLI show command 2020-04-29 17:15:49 +02:00
Benjamin Renard 09e051a1e7 LSsession :: initialize() : always load LScli to allow to add commands 2020-04-29 17:15:27 +02:00
Benjamin Renard 1ebdc91d30 LScli : add parameter to select LDAP server and connect to it 2020-04-29 17:14:04 +02:00
Benjamin Renard 72b4c27651 LScli : add parameters to load class/addon and their CLI commands 2020-04-29 17:13:23 +02:00
Benjamin Renard f52f81c1d4 LScli : fix command handler call 2020-04-29 17:05:05 +02:00
Benjamin Renard 2a5ef1bb4e Code cleaning 2020-04-29 15:54:21 +02:00
Benjamin Renard 1ee61bfaeb Update french translation 2020-04-29 15:38:41 +02:00
Benjamin Renard 6ea6b78fd4 LSsearch : fix possibility to specify a filter and a pattern (in the same time) 2020-04-29 15:31:30 +02:00
Benjamin Renard c63040203d LSaddon :: mail: Improve mail forging method by using PEAR Mail_mime lib 2020-04-29 15:26:15 +02:00
Benjamin Renard de3adbbffb LSformRile :: imagesize : fix parameters handling problem 2020-04-29 15:16:32 +02:00
Benjamin Renard 43d0df60cd Add CLI commands manager 2020-04-29 15:15:41 +02:00
Benjamin Renard ffdb8d4cf7 LSattr_html :: mail : add autocomplete feature 2020-04-23 19:53:56 +02:00
Benjamin Renard 103689d6ad LSsearch : Fix handling approx parameter 2020-02-18 12:35:08 +01:00
Benjamin Renard 9059629846 LSattr_html :: select_object : Fix 'Undefined index' PHP notice 2020-02-18 12:35:02 +01:00
Benjamin Renard 69b7ce3f4f LSldapObject : change getDisplayName $spe parameter default value from empty string to null 2020-02-18 12:32:25 +01:00
Benjamin Renard c4687bdfdb LSformRules : clean code by using LSconfig :: get() helper 2020-02-18 12:31:13 +01:00
Benjamin Renard f32fb31d6e LSlog : fix handling non-string message 2020-02-18 10:38:36 +01:00
Benjamin Renard 7f1fa41e3a LdapObject : add __toString() method
Fix password recovery bug report by Adrien Malgoyre <adrien.malgoyre@osupytheas.fr>
on Ldapsaisie-devel mailing list.
2020-02-18 10:36:47 +01:00
Benjamin Renard 05d4414a41 generate_lang_file.php : fix warning about missing arg in usage() 2020-02-17 17:12:59 +01:00
Benjamin Renard 36adcf0f5f LSauthMethod::CAS : Remove deprecated LSAUTH_CAS_SERVER_SSL_CERT parameter (since corresponding bogus setCasServerCert() method has been remove in phpCAS) 2020-01-22 17:36:35 +01:00
1151 changed files with 121773 additions and 41398 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']

267
INSTALL Normal file
View file

@ -0,0 +1,267 @@
/========================\
| INSTALLATION |
\========================/
1. Pré-requis
=============
* Le service Apache HTTP avec le module mod_rewrite d'activé. Les règles de réécriture d'URL sont définies
dans le fichier .htaccess fourni avec l'application et il est donc nécessaire d'autoriser une telle configuration
à ce niveau via la directive AllowOverride devant inclure à minima FileInfo.
* L'utisateur exécutant le serveur web doit avoir les droits d'écriture sur le dossier 'tmp'. En cas d'installation
à partir du paquet Debian, ce dossier est remplacé par un lien symbolique vers le dossier /var/cache/ldapsaisie/.
* PHP 5.6 (ou supérieur) avec magic_quotes_gpc et register_globals à off.L'outil CLI de PHP est par ailleurs
nécessaire pour l'utilisation des outils CLI fournis avec l'application (fourni par le paquet php-cli dans Debian).
* Le support LDAP dans PHP (paquet php-ldap dans Debian)
* Le support mhash dans PHP (paquet php5-mhash dans Debian Lenny, intégré à php-common dans les versions supérieurs)
* Le support json dans PHP (pear install pecl/json sur RedHat, intégré au paquet php5-common précédement)
* Net_LDAP2 (paquet php-net-ldap2 dans Debian ou pear install net_ldap2)
* Le support mbstring dans PHP (paquet php-mbstring depuis Debian Stretch, intégré au paquet php-common dans Debian)
* Smarty (paquet smarty3 dans Debian)
* 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)
* 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 #
#################
#
# La librairie Net_LDAP2 oblige le fait que la racine DSE de l'annuaire soit lisible en anonyme sinon la connexion à
# l'annuaire échouera systématiquement.
#
2. Téléchargement
=================
2.1. A partir du paquet Debian
------------------------------
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.org/debian stable main
Il ne vous restera ensuite plus qu'a installer le paquet ldapsaisie avec la commande suivante :
apt-get install ldapsaisie
Le fichier /etc/ldapsaisie/apache.conf est un example de configuration du serveur web Apache. La configuration du
logiciel ce fera ensuite dans le dossier /etc/ldapsaisie/local/.
2.2. A partir de Git
--------------------
Le dépôt Git peut être récupéré anonymement en utilisant la commande suivante :
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/.
2.3. A partir des snapshot
--------------------------
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.org/download/ldapsaisie-snapshoot.tar.gz
3. Arborescence du projet
=========================
Racine
doc/
Les fichiers sources de la documentation (Markdown).
lsexample/
Les fichiers relatifs à l'annuaire d'exemple.
src/
Les sources de l'application.
public_html/
La racine web de l'application : celle-ci ne contient que les fichiers .htaccess et index.php qui configure et déclenche la réécriture d'URL.
conf/
Contient les fichiers de configuration.
LSobjects/
Configuration des LSobjects.
LSaddons/
Configuration des LSaddons.
LSauth/
Configuration des LSauthMethod.
includes/
Contient les fichiers des ressources.
addons/
Les addons au projet.
class/
Les fichiers de définition des classes PHP.
js/
Les fichiers Javascript.
libs/
Les librairies utilisées.
lang/
Les fichiers d'internationalisation.
templates/
Les fichiers template de l'interface. Il y a un sous-dossier par template.
css/
Les fichiers css de l'interface. Il y a un sous-dossier par template CSS.
images/
Les images de l'interface. Il y a un sous-dossier par template d'image.
local/
Les fichiers personnalisés de l'installation.
tmp/
Les fichiers temporaires (y compris le cache des templates).
4. Tutoriel d'installation
==========================
Cette section décrit les différentes étapes de l'installation de LdapSaisie. Deux méthodes d'installation sont présentées
ici, l'une à partir des sources du projet et l'autre à partir du paquet Debian.
Dans ce tutoriel, nous partirons du principe que vous avez pleinement la main sur votre serveur (installation de nouveau
paquet et configuration de votre serveur web). Nous partons également du principe que votre annuaire LDAP est déjà en
place. Nous utiliserons pour cette exemple de mise ne oeuvre l'annuaire correspondant au schéma et à la configuration
présente dans les sources du projet dans le dossier lsexample.
1. La première étape consiste à installer le locigiel en tant que tel. Pour cela, référez vous au chapitre
Téléchargement.
En cas d'installation à à partir du paquet Debian, la configuration du logiciel se fera dans le dossier
/etc/ldapsaisie/local/. Les fichiers placés dans ce dossier prévaleront toujours aux fichiers fournis par le paquet
Debian, vous permettant facilement de modifier un composant existant ou dans écrire de nouveaux. Ainsi, pour modifier
un fichier CSS par exemple, il vous suffira de le placer dans le dossier /etc/ldapsaisie/local/css/.
Pour une installation à partir du code source, il vous faut cloner le dépôt Git du projet dans le dossier
/var/www/ldapsaisie. Pour cela il vous faut avoir installés les outils de Git contenu, dans Debian, dans le paquet
git-core. Le dépôt Git doit ensuite être récupéré anonymement en utilisant la commande suivante :
git clone https://gitlab.easter-eggs.com/ee/ldapsaisie.git /var/www/ldapsaisie
########
# Note #
########
#
# Pour que cette commande se déroule correctement, vous devez avoir accès au port TCP 443 du serveur
# gitlab.easter-eggs.com. En cas de problème vérifiez votre parefeu.
#
La suite des opérations se déroulera donc maintenant dans le dossier /var/www/ldapsaisie. Pour avoir plus de détails
sur les élements qu'on retrouve dans ce dossier, vous pouvez consulter la section concernée. Nous allons nous
instérésser plus particulièrement :
* au script upgradeFromGit.sh permettant la mise à jour de votre repos tout en concervant les adaptations que nous
ferons pour l'usage d'LdapSaisie adapté à notre annuaire ;
* au dossier config.local dans lequel seront stockés vos fichiers et vos adaptations de l'application ;
* au dossier src/public_html qui correspond à la futur racine du site web de l'application.
Le principe de l'adaptation est ici de mettre vos fichiers personnalisés dans le dossier config.local, de les déclarer
dans votre fichier config.local/local.sh contenant la liste des fichiers devant être installés. Le fichier local.sh est
la source de configuration du script upgradeFromGit.sh. Il faut donc dans un premier temps créer votre fichier local.sh
en copiant le fichier d'example local.sh.example. Ce fichier est un script bash déclarant les variables de
configurations suivantes :
LOCAL_FILES
La liste des chemins des fichiers à installer dans l'arboressence du site. Cette élément doivent être séparés par
des espaces ou des retour à la liste. Exemple :
public_html/conf/config.inc.php
public_html/lang/fr_FR.UTF8/lang.php
LOG_FILE
Nom du fichier de log des mises à jour.
THEME
Le nom du theme à installer (facultatif et non traité dans ce tutoriel).
########
# Note #
########
#
# * 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.
#
2. La deuxième étape concerne la configuration globale de l'application : Cette partie est principalement contenue dans
le fichier conf/config.inc.php (ou /etc/ldapsaisie/local/conf/config.inc.php en cas d'installation à partir du paquet
Debian). Il faut donc dans un premier temps copier ce fichier dans le dossier config.local et le déclarer dans la liste
des fichiers à déployer lors des mises à jour (variable LOCAL_FILES dans le fichier local.sh). Il s'agit en particulier
dans ce fichier de configurer la connexion à votre annuaire. Vous pouvez vous inspirer du fichier d'exemple fourni et
pour plus de détails, consulter la documentation du projet. [1]
########
# Note #
########
#
# Notez qu'il est possible de passer l'application en mode debug ce qui peut être utile par la suite.
#
3. La troisième étape concerne la configuration des types de LSobjects : Chaque type d'objet manipulé par LdapSaisie
doit correspondre avec un type de LSobject.
a. Création du fichier de classe :
Ce fichier contient la déclaration de la classe PHP correspondant au type de LSobject. Cette classe étend la classe
LSldapObject qui contient pour ainsi dire toute les méthodes et proprités nécessaires pour les types de LSobject simples
(sans LSrelation). Les fichiers des classes sont contenus dans le dossier /includes/class/ et portent les noms composés
de la manière suivante :
class.LSobjects.[nom du type d'LSobject].php
Le plus simple pour cette étape est de copier un des fichiers d'exemple dans le dossier config.local et de l'adapter en
changeant le nom du type d'objet dans l'ensemble du fichier. Pour cela, le fichier de classe du type LSpeople est le
plus simple car il ne contient que le strict minimum. Pour un fichier de classe ayant des LSrelations à gérer, le
fichier de classe LSgroup contient déjà les méthodes nécéssaires pour gérer ces cas.
b. Configurer vos LSobject :
Cette partie est certainement la plus longue et consiste à déclarer l'ensemble des informations relatives aux types des
objets LDAP manipulés. Les fichiers d'exemples fournis vous seront alors d'une aide précieuse. basé vous sur l'un de
pour créer le votre. Pour cela le fichier de configuration du type d'LSobjet LSpeople est le plus complet et est un bon
point de départ. Pour plus de détails sur les élements de configuration de ce fichier, consulter la documentation du
projet. [1]
c. Configurer si nécessaire les relations entre les objets appelés LSrelations :
Cette opération consiste dans un premier temps à écrire les méthodes PHP nécessaires pour gérer ces relations : pour
cela regardez le fichier de classe du type LSgroup. Il faudra ensuite déclarer ces relations dans la configuration des
types d'LSobjects : Pour plus de détails, consulter la documentation du projet. [1]
#############
# Important #
#############
#
# Pensez à déclarer les fichiers que vous venez de créer dans la variable LOCAL_FILES du fichier local.sh. Exemple
# pour le type d'LSobjet portant comme nom LSexample :
#
# src/conf/LSobjects/config.LSobjects.LSexample.php
# src/includes/class/class.LSobjects.LSexample.php
#
########
# Note #
########
#
# Vous pouvez également personnaliser l'interface : Il est possible de personnaliser à votre goût l'interface en
# écrivant votre template ou en modifiant simplement
# les fichiers CSS. Une partie de cette documentation concernera bientôt cette problématique. Patience...
#
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.ldapsaisie.org>.
Liens
=====
1. Documentation du projet : http://ldapsaisie.org/doc

View file

@ -275,4 +275,3 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

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

537
debian/changelog vendored
View file

@ -1,3 +1,536 @@
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:
* includeFile(): improve logging
* loadLSprofiles(): restructuring code and improve comments and logging
* loadLSobject(): auto declare simple PHP class for simple LSObject type if
PHP class file not found
* Improve error messages
* LSauthMethod :: authenticate(): fix PHP warning
* LSurl::redirect: fix handling absolute URL without protocol
For instance "//localhost/phpldapadmin/")
* light-blue.css: fix objet link color in list when table row is hover
* LStemplate::getImagePath(): handle SVG image type/ext as preferred format
* LSsearch:
* Fix/improve logging
* Remove buggy _hash cache parameter and replace it by an hash accessible key
* getHash(): fix handling onlyAccessible parameter
* LSsearchEntry: remove useless $hash private property
* LScli: add --trace parameter
* modify page: fix URL encode object DN in redirection URL
* LSlang:
* Fix warning about return not True
* generate_lang_file CLI command:
* Add Q choice in interactive mode to quit
* Factor handling possible_values of select list&box
* Improve logging
* Handle redirections of old-style URL even if user not authenticated
* Translate LSerror message at formating/diplaying time
* Attribute types:
* image: fix error on non-AJAX form when no file is submitted
* date:
* Add special_values parameter (also add for LSformRule::date)
* Make today button working even if input is empty
* Add clear button
* select_box: fix double translation of labels on unfreeze field
* select_list:
* clean code of getPossibleValues() method
* add get_possible_values parameter
* shadowExpire: fix getUpdateData() method to return string values and
add doc about this undocumented LDAP attribute type
* LSformRule:
* provide reference to LSformElement instead of copied value
* imagesize: use self :: log_debug() instead of LSdebug()
* date: add special_values parameter
* LSldapObject:
* getValue(): add $first and $default parameters
* submitChange(): improve logging
* add isValidTypeName() method and use it in LSsession::loadLSobject().
LSobject type name must now only contains letter, digits, dash or underscore.
* loadData(): explicitly list need attributes in LDAP request
* LSrelation:
* fix error codes prefix
* check relation is correctly configured before using it to avoid some unreal warnings
in case of misconfigured relation
* LSformElement::getEmptyField() / LSformElement.tpl: Provide value index as $value_idx
template variable
* Improve POSIX and Samba support:
* Improve LSaddons samba & posix
* Add LSattr LDAP & HTML sambaAcctFlags type
* Fix home and profile path formats in default configuration
* Improve POSIX & Samba config in LSexample
* LSaddons:
* Add showTechInfo LSaddon
* Improve LSaddons samba & posix
* LSmail: add possibility to send HTML email
* SUPPAN: add support for some attributes
* LSaccessRightsMatrixView: handle customActions & customSearchActions
* LSldap: fix/improve update() and getEntry() methods
* Logging:
* Improve logging on LSobject & LSattribute triggers executions
* Extend LSlog_handler using LSlog_staticLoggerClass
* Add warning on unknown key requested using __get methods
* Add __toString() method to all common extendable PHP classes to make context logging
easier
* Log referrer URL in case of old-style URL redirection
* LSform:
* fix non-AJAX form submission (or form with input[type=file])
* fix/improve handling config (especially, fix handling ajaxSubmit configuration parameter)
* Fix handling "0" (zero string) value
* Doc:
* some fixes and improvements
* Publish and complete contrib section about LSaddons, LSformElements and LSformRules
-- Benjamin Renard <brenard@easter-eggs.com> Wed, 30 Sep 2020 11:35:29 +0200
ldapsaisie (3.0.1-1) unstable; urgency=medium
* LSformElement JS: fire change event on input field cleared
* LSview: Fix validated URL generation
* LSformElement :: boolean: fix translation of default labels
* LSaccessRightsMatrixView: fix tab links URL
* Fix subDn form style
* LSsession:
* fix/improve methods & doc about global preference parameters
* fix handling subDn in recoverPassword feature
* fix usage of self :: $topDn instead of self :: getTopDn()
* add setSubDn() and log_exception() methods
* LScli:
* fix/improve handling LDAP servers with configured subDn
* search command: remove buggy --subDn parameter
* LSerror: fix PHP error
* light-blue.css: globally improve style and use dark-grey for text
* login / recoverPassword forms: fix logo style when is too large
* LSmail: fix select mail style
* LSerror: format error message at adding time to fix formatting error in
specific cases.
* LSlog: add TRACE log level
* Add some debug/trace messages
* dumpFile(): add $force_download and $filename parameters
-- Benjamin Renard <brenard@easter-eggs.com> Thu, 13 Aug 2020 17:28:45 +0200
ldapsaisie (3.0.0-1) unstable; urgency=medium
* A lot of code cleaning and PHP notices fixes
* Introduce LSurl, a new URL routing manager for LdapSaisie: all pages
and files served by the application is now outside the web root directory.
* Define base URL in page templates by using public_root_url parameter
* Add a CLI commands manager and the ldapsaisie CLI tool that currently
permit to:
* search/list, show, create, modify and remove LSobject
* run procedure implemented in LdapSaisie (useful to run it as cron for
instance).
* Provide BASH autocompletion mechanisms for ldapsaisie CLI tool
* Replace generate_lang_file.php and generate_ldapsaisie.pot.sh script by
CLI commands generate_lang_file and generate_ldapsaisie_pot
* LSsession:
* includeFile(): allow inclusion of external file with include path search
support (see $external parameter).
* deprecate redirect() method in favor of LSurl :: redirect()
* move lang stuff to a dedicated LSlang class
* keep trace of already loaded addon to avoid loading it more than once
* add default LSprofiles with the name of authenticable object types
* Move custom JS & CSS handling methods from LSsession to LStemplate
* LSsearch:
* fix handling approx parameter
* fix possibility to specify a filter and a pattern (in the same time)
* fix sorting by extraDisplayedColumns (on one setParams() call)
* fix search customActions JS validation
* add option to disable cache on customInfos
* LdapObject:
* add __toString() method to fix password recovery bug
(report by Adrien Malgoyre <adrien.malgoyre@osupytheas.fr>)
* change getDisplayName $spe parameter default value from empty string to
null
* specify object type filter on loading data
* LSrelation: globally rework and improve it
* LSlog:
- fix handling non-string message
- console handler: fix stderr switching on message other than INFO / DEBUG
- add loggers, filters and format message by handlers
- some fixes and improvements on get_debug_backtrace_context() method
- add enabled parameter for handlers
* LSerror:
- permit to control message escape method by adding a $escape parameter to all
accessible methods
- do not automatically close, wait user click on cross button
* LSauth:
- Add possibility to configure more than one LSobject type as user
- Add possibility to handle duplicated identifier
* LSauthMethod::CAS: Remove deprecated LSAUTH_CAS_SERVER_SSL_CERT parameter
(since corresponding bogus setCasServerCert() method has been remove in
phpCAS)
* LSaddon:
- mail: Improve mail forging method by using PEAR Mail_mime lib
- LSaccessRigthsMatrixView: fix handling subDn LDAP servers configuration
* LSattr_html:
- mail: add autocomplete feature
- select_object: Allow multiple type of objects selection
- wysiwyg: adjust width
- password: add confirmInput and confirmChange features and fix/improve send
new password feature
* LSform:
- Avoid page scrolling on tab change
- Add possibility to set callback to confirm/cancel event
- Add CSS class on submitting form to permit visual adaptation
- validate(): fix checking elements's errors after getPostData()
* LSformRule:
- imagesize: fix parameters handling problem
- filesize: improve by avoiding to create a temporary file
- email: fix handling domain parameter if its an array
* Add ___() function to allow declaration of messages that will be translated
at display time
* LSimport: fix data removing on LSobject import
* LSselect: Allow multiple type of objects selection
* LStemplate:
- Now offer some new methods moved from LSsession to handle custom JS & CSS:
addJSscript(), addLibJSscript(), addJSconfigParam(), addHelpInfos() (renamed as
addHelpInfo()), addCssFile() and addLibCssFile()
- fatal_error() method now use LStemplate methods to assign variables and display
template instead of directly use Smarty methods.
* Interface is now responsive
* Templates:
* Globally rework on templates files to use blocks. Common basic templates
files are now deprecated in favor to base.tpl and base_connected.tpl:
accueil.tpl, blank.tpl, empty.tpl, top.tpl, bottom.tpl
* Add var_dump template function helper
* Rework on CSS and specially on light-blue.css to make it easily customizable,
make handling more LdapSaisie components and make it more responsive.
All other light-*.css file now only override some CSS variables to change base
colors.
* LSmail: fix/improve CSS
* Fix historical typo in configuration variable name defaultJSscipts vs defaultJSscripts
* Fix compatibility with Safari and add error popup on Internet Explorer
-- Benjamin Renard <brenard@easter-eggs.com> Tue, 21 Jul 2020 14:13:30 +0200
ldapsaisie (2.4.1-0) unstable; urgency=medium
* generate_lang_file.php : handle LSprofiles's label
@ -137,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
@ -241,7 +774,7 @@ ldapsaisie (1.5-1) unstable; urgency=medium
ldapsaisie (1.4-2) unstable; urgency=medium
* Add new type of HTML attribut : jsonCompositeAttribute
* LSrelation :
* LSrelation :
+ improve and make it easy to configure simple relation
+ add possibilty to handle relation with multiple key values
* Fix some PHP 7 compatibility errors

View file

@ -1,9 +1,13 @@
Alias /ldapsaisie /usr/share/ldapsaisie
Alias /ldapsaisie /usr/share/ldapsaisie/public_html
<Directory /usr/share/ldapsaisie>
<IfModule mod_php5.c>
php_flag magic_quotes_gpc Off
php_flag register_globals Off
</IfModule>
Options -Indexes +FollowSymLinks
Options -Indexes +FollowSymLinks
AllowOverride FileInfo
</Directory>
# Uncomment if you have LDAP object DN with slashes
#AllowEncodedSlashes NoDecode

6
debian/control vendored
View file

@ -1,13 +1,13 @@
Source: ldapsaisie
Section: admin
Priority: extra
Build-Depends: debhelper, xsltproc, docbook-xsl
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-file-csv-datasource
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

108
debian/ldapsaisie.NEWS vendored
View file

@ -1,3 +1,110 @@
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.
It also include some noteworthy improvements :
- Empty LSldapObject PHP classes for your custom object types is now useless: they
will be self-generated if they don't exists.
- SVG images are now supported as preferred format.
- Possible values list of select attributes could now be generated using a custom
configurable function (see doc for details).
- Date attribute now support configurable special values
- LSldapObject :: getValue() method now accept $first and $default parameters that
could be useful to simplify your custom code.
- LSldapObject :: loadData() explicitly list need attributes in LDAP request. More
than permit to be more efficient, this permit to handle special LDAP attributes
which must be explicitly requested to be return by LDAP server.
- LSformElement::getEmptyField() / LSformElement.tpl now provide value index as
$value_idx template variable. This could be useful to handle composite attribute.
- Improve POSIX, Samba and Supann support: handle some new attributes
- Add showTechInfo LSaddon that could be useful for admin to see technical information
of LDAP object.
- "0" (zero string) value are finally properly managed.
Please see /usr/share/doc/ldapsaisie/changelog.Debian.gz for complete list of
changes.
-- Benjamin Renard <brenard@easter-eggs.com> Wed, 30 Sep 2020 11:35:29 +0200
ldapsaisie (3.0.0-1) unstable; urgency=medium
This release introduce important modifications and especially :
- All pages and files served by the application is now using LSurl,
an URL routing engine. This new mechanisms require you enable Apache
HTTP mod_rewrite and allow RewriteRule defined in .htaccess file
provided with the application. The web-root directory also changed
to /usr/share/ldapsaisie/public_html : make sure to consequently adapt
your configuration.
You also have to adapt the public_root_url to your environment in
/etc/ldapsaisie/conf/config.inc.php (default: /ldapsaisie/). This URL
is now specify as base URL in all templates file. Consequently, a miss
configured URL will cause problems to load any resources files (images,
CSS, Javascript, ...).
We try to keep compatibility to old-style URL but we display a warning to
invite you to update your custom code. Please note, this compatibility only
handle redirect to new URL, but POST data are not keep during this
redirection. Moreover, Ajax calls on old index_ajax.php URL is not handled
and only show the warning message.
Furthermore, the LSsession :: redirect() method helper is now deprecated in
favor of LSurl :: redirect(). A warning message is also displayed if you
have custom code that keep using it.
Necessarily, a lot of small change have been made in templates and CSS files.
If you customize your web interface, please refer to default files delivered
with the application to correctly reintroduce your changes.
- Interface is now responsive. To take advantage of this, however, you may need
to update your graphic adaptations as well as your custom code.
- Templates files of the application evolve to use blocks. Blocks permit to
extends templates from another and just add/replace some blocks of the extended
template. This permit to avoid template code duplication and make easier to
create custom theme. Common basic templates files are now deprecated in favor
to base.tpl and base_connected.tpl : accueil.tpl, blank.tpl, empty.tpl, top.tpl
and bottom.tpl.
- The default loaded CSS file light-blue.css evolve to defined color used as CSS
variables. All other light-*.css files now have to be used in addition of the
file light-blue.css (to load first). This files now only overide defined colors
variables.
- A CLI tool is now provided with the application : its currently permit
to search/list, show, create, modify and delete LSobject as its possible in web
interface. You also could run procedure implemented in LdapSaisie (useful to run
it as cron for instance). BASH autocompletion is also provided.
Furthermore, the generate_lang_file.php and generate_ldapsaisie.pot.sh scripts
are replaced by LScli commands generate_lang_file and generate_ldapsaisie_pot.
- LSlog, the logging manager, have also gain flexibility: it's now possible to
configure log level by component, filter log by components in log handlers
configuration and configure log format by handler. To make LdapSaisie components
using this new flexibility, a lot of small changes have been make, especially in
class files. The old-LSdebug function is now in way to be deprecated, or at least
deprioritized in favor of using LSlog :: debug().
- It's now possible to configure more than one LSobject type that can connect on
application as user. Consequently, if your LDAP directory contains more than one
type of users, LdapSaisie can now handle it. Furthermore, a new default LSprofile
is added for each authenticable object type to easily allow all users of one type
to do something.
- LSselect and select_object attributes permit to selection of multiple object types.
Consequently and for instance, its now possible to have group of multiple object
types (group of users & groups, group of multiple user object types, ...).
- LSsession methods to manage custom JS & CSS are now handle and expose by LStemplate
- Internet Explorer is now officially unsupported and an error popup is now displayed
when users try to access LdapSaisie with this browser.
Please see /usr/share/doc/ldapsaisie/changelog.Debian.gz for complete list of
changes.
-- Benjamin Renard <brenard@easter-eggs.com> Wed, 06 May 2020 14:30:03 +0200
ldapsaisie (1.7-1) unstable; urgency=medium
This release introduce some modifications for PHP7 and Debian Strech
@ -13,4 +120,3 @@ ldapsaisie (1.7-1) unstable; urgency=medium
+ helper function loadDir() ($regexpr parameter)
-- Benjamin Renard <brenard@easter-eggs.com> Mon, 08 Jan 2018 20:27:15 +0100

26
debian/ldapsaisie.bash-completion vendored Normal file
View file

@ -0,0 +1,26 @@
_ldapsaisie()
{
# Retrieve cur, words and cword variables by using _get_comp_words_by_ref helper
# and excluding "=" char as break-word
local cur words cword
_get_comp_words_by_ref -n "=" cur words cword
# 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
# Note: This method was inspired by __ltrim_colon_completions helper.
if [[ $cur == *=* && $COMP_WORDBREAKS == *=* ]]; then
# Remove equal_word prefix from COMPREPLY items
local equal_word=${cur%"${cur##*=}"}
local i=${#COMPREPLY[*]}
while ((i-- > 0)); do
COMPREPLY[i]=${COMPREPLY[i]#"$equal_word"}
done
fi
# If only one answer and it ending by "=", do not add space
if [[ ${#COMPREPLY[@]} -eq 1 ]] && [[ ${COMPREPLY[0]} == *= || ${COMPREPLY[0]} == *=\' || ${COMPREPLY[0]} == *=\" ]]; then
compopt -o nospace
fi
}
complete -o default -F _ldapsaisie ldapsaisie

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/
public_html/* usr/share/ldapsaisie/
src/* usr/share/ldapsaisie/

View file

@ -1,4 +1,4 @@
var/cache/ldapsaisie usr/share/ldapsaisie/tmp
usr/local/share/ldapsaisie usr/share/ldapsaisie/local
usr/local/share/ldapsaisie etc/ldapsaisie/local
usr/share/ldapsaisie/lang/generate_lang_file.php usr/bin/ldapsaisie-generate-lang-file
usr/share/ldapsaisie/bin/ldapsaisie.php usr/sbin/ldapsaisie

View file

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

View file

@ -13,5 +13,8 @@ case "$1" in
then
mv /usr/local/share/ldapsaisie/conf/config.inc.php.dpkg-move /usr/local/share/ldapsaisie/conf/config.inc.php
fi
# Purge Smarty templates cache
rm -f /var/cache/ldapsaisie/*.php
;;
esac

15
debian/rules vendored
View file

@ -1,10 +1,10 @@
#!/usr/bin/make -f
%:
dh $@
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
@ -13,9 +13,20 @@ override_dh_clean:
override_dh_install:
dh_install -X .gitignore -X .placefolder -X tmp
# Move local directory as /usr/local/share/ldapsaisie
# Note: a symbolic link will be install by dh_link
mv $(CURDIR)/debian/ldapsaisie/usr/share/ldapsaisie/local $(CURDIR)/debian/ldapsaisie/usr/local/share/ldapsaisie
# Remove all files in local directory
find $(CURDIR)/debian/ldapsaisie/usr/local/share/ldapsaisie -type f -exec rm -f \{\} \;
# Change default log file path
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
override_dh_usrlocal:

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,33 +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 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>">

View file

@ -1,51 +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">
]>
<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;
&conf;
</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,20 +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;
</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">

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,82 +0,0 @@
<sect2 id="config-LSaddon_mail">
<title>LSaddon_mail</title>
<para>Cet &LSaddon; est utilisé pour gérer l'envoie de mail. Le module
&PEAR; Mail doit être installé. Il 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');
/*
* 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(
"Content-Type" => "text/plain",
"charset" => "UTF-8",
"format" => "flowed"
);
</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>
</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
&customSearchActions; 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,290 +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>Nom de la fonction qui sera exécutée 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>Nom de la fonction qui sera exécutée 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,30 +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_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,28 +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_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_jsonCompositeAttribute "<link linkend='config-LSattr_html_jsonCompositeAttribute'>LSattr_html_jsonCompositeAttribute</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,218 +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]'
),]]>
...
</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>
</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,34 +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 propose directement dans l'interface, la possibilité
d'envoyer des mails à l'adresse saisie.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array(
'disableMailSending' => [booléen]
),]]>
...
</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>
</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,254 +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é
'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
)
),]]>
...
</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>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>
</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,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,203 +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 (
...
)
)
)
),
'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éfault).</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>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,111 +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 (
'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 associatif obligatoire contenant en valeur clé le nom des
paramètres de configuration et dont les valeurs attachées sont les valeurs
des paramètres.</simpara>
<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>filter</term>
<listitem>
<simpara>Filtre de recherche (facultatif) qui sera ajouter au filtre par défaut
lors de la sélection des objets.</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éfault).</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 (Faux par défaut). 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 (Vrai par défaut). 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,15 +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;
</sect3>

View file

@ -1,12 +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 LSattr_ldap_date "<link linkend='config-LSattr_ldap_date'>LSattr_ldap_date</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,63 +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>
<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,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,21 +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>
</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é.</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>

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