[FEATURE] Group task list in scheduler by extension
authorPhilipp Gampe <forge.typo3.org@philippgampe.info>
Mon, 19 Mar 2012 19:22:01 +0000 (20:22 +0100)
committerTolleiv Nietsch <info@tolleiv.de>
Wed, 21 Mar 2012 18:54:35 +0000 (19:54 +0100)
To make the long drowdown more readable, group the task list in
schedular (Add Task) by extension and add the description as title
to the corresponding option tag.

Change-Id: Ida7d85298df776c1f604c931aee49bf4f65cd796
Resolves: #35020
Releases: 4.8
Reviewed-on: http://review.typo3.org/9755
Reviewed-by: Felix Kopp
Tested-by: Felix Kopp
Reviewed-by: Tolleiv Nietsch
Tested-by: Tolleiv Nietsch
typo3/sysext/scheduler/class.tx_scheduler_module.php

index 5d5c899..1dfe350 100644 (file)
@@ -757,10 +757,23 @@ class tx_scheduler_Module extends t3lib_SCbase {
                        $cell .= '<input type="hidden" name="tx_scheduler[class]" id="task_class" value="' . $taskInfo['class'] . '" />';
                } else {
                        $cell = '<select name="tx_scheduler[class]" id="task_class" class="wide" onchange="actOnChangedTaskClass(this)">';
-                               // Loop on all registered classes to display a selector
+
+                               // Group registered classes by classname
+                       $groupedClasses = array();
                        foreach ($registeredClasses as $class => $classInfo) {
-                               $selected = ($class == $taskInfo['class']) ? ' selected="selected"' : '';
-                               $cell .= '<option value="' . $class . '"' . $selected . '>' . $classInfo['title'] . ' (' . $classInfo['extension'] . ')' . '</option>';
+                               $groupedClasses[$classInfo['extension']][$class] = $classInfo;
+                       }
+                       ksort($groupedClasses);
+                               // Loop on all grouped classes to display a selector
+                       foreach ($groupedClasses as $extension => $class) {
+                               $cell .= '<optgroup label="' . $extension .'">';
+                               foreach ($groupedClasses[$extension] as $class => $classInfo) {
+                                       $selected = ($class == $taskInfo['class']) ? ' selected="selected"' : '';
+                                       $cell .= '<option value="' . $class . '"'
+                                                       . 'title="' . $classInfo['description'] . '"'
+                                                       .  $selected . '>' . $classInfo['title'] . '</option>';
+                               }
+                               $cell .= '</optgroup>';
                        }
                        $cell .= '</select>';
                }