[TASK] Hide func menu with only one entry 72/20772/4
authorGeorg Ringer <georg.ringer@gmail.com>
Sun, 19 May 2013 17:40:12 +0000 (19:40 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Mon, 20 May 2013 13:19:26 +0000 (15:19 +0200)
The func menu in a module is used to switch between different views in
the same module.

However if only one item is available, there is no reason to show the
function menu at all.
Also the onchange handler does not work as nothing is changeable.

Count the number of elements and suppress the selector if there is only
one item.

Change-Id: I6bbce41af19c8755c67c7ce5085f94930f4f87f6
Resolves: #48175
Releases: 6.2
Reviewed-on: https://review.typo3.org/20772
Reviewed-by: Philipp Gampe
Tested-by: Philipp Gampe
Reviewed-by: Dmitry Dulepov
Tested-by: Dmitry Dulepov
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
typo3/sysext/backend/Classes/Utility/BackendUtility.php

index c43066c..cd83c08 100644 (file)
@@ -2618,30 +2618,32 @@ class BackendUtility {
         * @return string HTML code for selector box
         */
        static public function getFuncMenu($mainParams, $elementName, $currentValue, $menuItems, $script = '', $addparams = '') {
-               if (is_array($menuItems)) {
-                       if (!is_array($mainParams)) {
-                               $mainParams = array('id' => $mainParams);
-                       }
-                       $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
-                       if (!$script) {
-                               $script = basename(PATH_thisScript);
-                               $mainParams .= GeneralUtility::_GET('M') ? '&M=' . rawurlencode(GeneralUtility::_GET('M')) : '';
-                       }
-                       $options = array();
-                       foreach ($menuItems as $value => $label) {
-                               $options[] = '<option value="' . htmlspecialchars($value) . '"' . (!strcmp($currentValue, $value) ? ' selected="selected"' : '') . '>' . GeneralUtility::deHSCentities(htmlspecialchars($label)) . '</option>';
-                       }
-                       if (count($options)) {
-                               $onChange = 'jumpToUrl(\'' . $script . '?' . $mainParams . $addparams . '&' . $elementName . '=\'+this.options[this.selectedIndex].value,this);';
-                               return '
-
-                                       <!-- Function Menu of module -->
-                                       <select name="' . $elementName . '" onchange="' . htmlspecialchars($onChange) . '">
-                                               ' . implode('
-                                               ', $options) . '
-                                       </select>
-                                                       ';
-                       }
+               if (!is_array($menuItems) || count($menuItems) <= 1) {
+                       return '';
+               }
+
+               if (!is_array($mainParams)) {
+                       $mainParams = array('id' => $mainParams);
+               }
+               $mainParams = GeneralUtility::implodeArrayForUrl('', $mainParams);
+               if (!$script) {
+                       $script = basename(PATH_thisScript);
+                       $mainParams .= GeneralUtility::_GET('M') ? '&M=' . rawurlencode(GeneralUtility::_GET('M')) : '';
+               }
+               $options = array();
+               foreach ($menuItems as $value => $label) {
+                       $options[] = '<option value="' . htmlspecialchars($value) . '"' . (!strcmp($currentValue, $value) ? ' selected="selected"' : '') . '>' . GeneralUtility::deHSCentities(htmlspecialchars($label)) . '</option>';
+               }
+               if (count($options)) {
+                       $onChange = 'jumpToUrl(\'' . $script . '?' . $mainParams . $addparams . '&' . $elementName . '=\'+this.options[this.selectedIndex].value,this);';
+                       return '
+
+                               <!-- Function Menu of module -->
+                               <select name="' . $elementName . '" onchange="' . htmlspecialchars($onChange) . '">
+                                       ' . implode('
+                                       ', $options) . '
+                               </select>
+                                               ';
                }
        }