From 6612dde13f8cd1008a7dc747abf98c3a90bee283 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Mon, 14 Oct 2024 17:07:15 +0200 Subject: [PATCH] #327 add parameters for manual scripts --- lam/HISTORY | 1 + lam/docs/manual-sources/chapter-modules.xml | 66 ++++++++++++++++++ .../manual-sources/images/customScripts4.png | Bin 0 -> 14123 bytes 3 files changed, 67 insertions(+) create mode 100644 lam/docs/manual-sources/images/customScripts4.png diff --git a/lam/HISTORY b/lam/HISTORY index 860c08b0f..7b05bc58c 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -5,6 +5,7 @@ December 2024 9.0 -> Request access: added comment field for owners/approvers (339) -> Custom scripts: support custom label for module (329) -> Custom scripts: support grouping of manual scripts (329) + -> Custom scripts: allow interactive parameters for manual scripts (327) - Fixed bugs: -> Windows: show more than 1000 LDAP entries when paged results is activated in server profile -> WebAuthn: support DNs larger than 64 bytes (358) diff --git a/lam/docs/manual-sources/chapter-modules.xml b/lam/docs/manual-sources/chapter-modules.xml index 77b2895c2..6bc2bcc40 100644 --- a/lam/docs/manual-sources/chapter-modules.xml +++ b/lam/docs/manual-sources/chapter-modules.xml @@ -6265,6 +6265,72 @@ user manual LAMLABEL="Some app" /bin/myscripts/syncWithSomeApp -u $uid$ + Interactive parameters for manual + scripts + + You can define parameters that are specified by the user on the + script execution page. E.g., this can be used to specify a target + environment (dev/qa/prod). + + Interactive parameters allow the user to select the right value + instead of having the need to duplicate script entries. + + Format: LAM_{TYPE}_{NAME}: {label}={value(s)} + + Possible input types: + + + + Selection + + + + Parameter name needs to start with "LAM_SELECTION_", e.g. + "LAM_SELECTION_ENV". + + + + Values must be separated by semicolons (e.g. + "dev;qa;prod") + + + + + + Text input + + + + Parameter name needs to start with "LAM_TEXT_", e.g. + "LAM_TEXT_COMMENT". + + + + Value is optional, will be used as default if + present. + + + + + + The parameters can then be used as wildcards in the commands similar + to attribute values. + + Example: + + LAM_SELECTION_ENV: Environment=dev;qa;prod +LAM_SELECTION_TENANT: Tenant=foo;bar +LAM_TEXT_COMMENT: Comment=no comment +LAM_TEXT_AMOUNT: Amount +user manual LAMLABEL="Clean" /bin/myscripts/cleanMailbox -u $uid$ -e $LAM_SELECTION_ENV$ +user manual LAMLABEL="Extend" /bin/myscripts/extendMailbox -u $uid$ -e $LAM_SELECTION_TENANT$ +user manual /bin/myscripts/syncWithCRM -u $uid$ -c $LAM_TEXT_COMMENT$ +user manual LAMLABEL="Some app" /bin/myscripts/syncWithSomeApp -u $uid$ -a $LAM_TEXT_AMOUNT$ + + + + + Output may contain HTML: If your scripts generate HTML output then activate this option. diff --git a/lam/docs/manual-sources/images/customScripts4.png b/lam/docs/manual-sources/images/customScripts4.png new file mode 100644 index 0000000000000000000000000000000000000000..ef57568336aa5c50ed1ed6b8f5423b22f28044d4 GIT binary patch literal 14123 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 literal 0 HcmV?d00001