From a1d21836ce7bbeffb29c43dbef36a1a6592b1a99 Mon Sep 17 00:00:00 2001 From: atm-etienne <163015166+atm-etienne@users.noreply.github.com> Date: Fri, 10 May 2024 13:12:09 +0200 Subject: [PATCH] Add new conf and update dolGetButtonAction function to display action buttons inline instead of into a dropdown (#29629) --- htdocs/commande/card.php | 8 ++++++-- htdocs/core/lib/functions.lib.php | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 7fece7acedd..53812891f11 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -3037,10 +3037,14 @@ if ($action == 'create' && $usercancreate) { } }*/ + $actionButtonsParameters = [ + "areDropdownButtons" => !getDolGlobalInt("MAIN_REMOVE_DROPDOWN_CREATE_BUTTONS_ON_ORDER") + ]; + if ($numlines > 0) { - print dolGetButtonAction('', $langs->trans("Create"), 'default', $arrayforbutaction, $object->id, 1); + print dolGetButtonAction('', $langs->trans("Create"), 'default', $arrayforbutaction, $object->id, 1, $actionButtonsParameters); } else { - print dolGetButtonAction($langs->trans("ErrorObjectMustHaveLinesToBeValidated", $object->ref), $langs->trans("Create"), 'default', $arrayforbutaction, $object->id, 0); + print dolGetButtonAction($langs->trans("ErrorObjectMustHaveLinesToBeValidated", $object->ref), $langs->trans("Create"), 'default', $arrayforbutaction, $object->id, 0, $actionButtonsParameters); } // Set to shipped diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 0cf74c88415..2e820825ce6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -12095,7 +12095,7 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = { global $hookmanager, $action, $object, $langs; - // If $url is an array, we must build a dropdown button + // If $url is an array, we must build a dropdown button or recursively iterate over each value if (is_array($url)) { // Loop on $url array to remove entries of disabled modules foreach ($url as $key => $subbutton) { @@ -12106,6 +12106,24 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = $out = ''; + if (isset($params["areDropdownButtons"]) && $params["areDropdownButtons"] === false) { + foreach ($url as $button) { + if (!empty($button['lang'])) { + $langs->load($button['lang']); + } + $label = $langs->trans($button['label']); + $text = $button['text'] ?? ''; + $actionType = $button['actionType'] ?? ''; + $tmpUrl = DOL_URL_ROOT.$button['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + $id = $button['$id'] ?? ''; + $userRight = $button['perm'] ?? 1; + $params = $button['$params'] ?? []; + + $out .= dolGetButtonAction($label, $text, $actionType, $tmpUrl, $id, $userRight, $params); + } + return $out; + } + if (count($url) > 1) { $out .= '