[TASK] Simplify fetching section labels in global settings 76/56876/5
authorHelmut Hummel <typo3@helhum.io>
Sun, 6 May 2018 18:16:50 +0000 (20:16 +0200)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 7 May 2018 06:49:31 +0000 (08:49 +0200)
Put labels into the configuration description file
to have everything in one place.

With that in place, we can put the description directly
into the configuration data that is prepared for the edit view.

If we do so, we can get rid of the view helper
and one method in the configuration service which only
returned the labels.

Resolves: #84938
Releases: master
Change-Id: I12e5cf1ce3873d41789a52e41e6bac87da86cf9e
Reviewed-on: https://review.typo3.org/56876
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml
typo3/sysext/install/Classes/Controller/SettingsController.php
typo3/sysext/install/Classes/Service/LocalConfigurationValueService.php
typo3/sysext/install/Classes/ViewHelpers/Object/ArrayValueByKeyViewHelper.php [deleted file]
typo3/sysext/install/Resources/Private/Partials/Settings/LocalConfiguration/SubSection.html
typo3/sysext/install/Resources/Private/Templates/Settings/LocalConfigurationGetContent.html

index b22a1c9..a0b2005 100644 (file)
@@ -1,5 +1,6 @@
 GFX:
     type: container
+    description: 'Image Processing'
     items:
         thumbnails:
             type: bool
@@ -63,6 +64,7 @@ GFX:
             description: 'Integer: Default JPEG generation quality'
 SYS:
     type: container
+    description: 'System'
     items:
         fileCreateMask:
             type: text
@@ -211,6 +213,7 @@ SYS:
                 description: 'If activated, TCA configuration for pages_language_overlay will never be loaded, and the database table "pages_language_overlay" will not be created.'
 EXT:
     type: container
+    description: 'Extension Installation'
     items:
         allowGlobalInstall:
             type: bool
@@ -223,6 +226,7 @@ EXT:
             description: 'List of directories and files which will not be packaged into extensions nor taken into account otherwise by the Extension Manager. Perl regular expression syntax!'
 BE:
     type: container
+    description: 'Backend'
     items:
         languageDebug:
             type: bool
@@ -338,6 +342,7 @@ BE:
             description: 'If enabled, the loginrefresh is disabled and pageRenderer is set to debug mode. Furthermore the fieldname is prepended to the label of fields. Use this to debug the backend only!'
 FE:
     type: container
+    description: 'Frontend'
     items:
         addAllowedPaths:
             type: list
@@ -464,6 +469,7 @@ FE:
               <strong>IMPORTANT</strong>: ''embed'' requires extra <code>.htaccess</code> rules to work (please refer to the <code>_.htaccess</code> file shipped with TYPO3)'
 MAIL:
     type: container
+    description: 'Mail'
     items:
         transport:
             type: text
@@ -506,6 +512,7 @@ MAIL:
             description: 'This default name is used when no other "reply-to" name is set for a TYPO3-generated email.'
 HTTP:
     type: container
+    description: 'Connection'
     items:
         cert:
             type: mixed
index 7750815..5c189f1 100644 (file)
@@ -245,7 +245,6 @@ class SettingsController extends AbstractController
         $view = $this->initializeStandaloneView($request, 'Settings/LocalConfigurationGetContent.html');
         $view->assignMultiple([
             'localConfigurationWriteToken' => $formProtection->generateToken('installTool', 'localConfigurationWrite'),
-            'localConfigurationSectionNames' => $localConfigurationValueService->getSpeakingSectionNames(),
             'localConfigurationData' => $localConfigurationValueService->getCurrentConfigurationData(),
         ]);
         return new JsonResponse([
index d5f441f..756ae0b 100644 (file)
@@ -45,7 +45,8 @@ class LocalConfigurationValueService
 
         foreach ($localConfiguration as $sectionName => $section) {
             if (isset($commentArray[$sectionName])) {
-                $data[$sectionName] = $this->recursiveConfigurationFetching(
+                $data[$sectionName]['description'] = $commentArray[$sectionName]['description'] ?? $sectionName;
+                $data[$sectionName]['items'] = $this->recursiveConfigurationFetching(
                     $section,
                     $GLOBALS['TYPO3_CONF_VARS'][$sectionName] ?? null,
                     $commentArray[$sectionName]
@@ -220,25 +221,6 @@ class LocalConfigurationValueService
     }
 
     /**
-     * Returns an array of available sections and their description
-     *
-     * @return string[]
-     */
-    public function getSpeakingSectionNames(): array
-    {
-        return [
-            'BE' => 'Backend',
-            'DB' => 'Database',
-            'EXT' => 'Extension Installation',
-            'FE' => 'Frontend',
-            'GFX' => 'Image Processing',
-            'HTTP' => 'Connection',
-            'MAIL' => 'Mail',
-            'SYS' => 'System'
-        ];
-    }
-
-    /**
      * Read descriptions from description file
      *
      * @return array
diff --git a/typo3/sysext/install/Classes/ViewHelpers/Object/ArrayValueByKeyViewHelper.php b/typo3/sysext/install/Classes/ViewHelpers/Object/ArrayValueByKeyViewHelper.php
deleted file mode 100644 (file)
index c063c37..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-namespace TYPO3\CMS\Install\ViewHelpers\Object;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Install\ViewHelpers\Exception;
-use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
-use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
-use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
-
-/**
- * View helper which allows you to access a key in an array.
- *
- * = Examples =
- *
- * <code title="Defaults">
- * <i:object.key array="{array}" key="{key}" />
- * </code>
- * <output>
- * The key in the array, if it exists, otherwise an empty string.
- * </output>
- *
- * @internal
- */
-class ArrayValueByKeyViewHelper extends AbstractViewHelper
-{
-    use CompileWithRenderStatic;
-
-    /**
-     * Initialize arguments
-     */
-    public function initializeArguments()
-    {
-        $this->registerArgument('array', 'array', 'The array being processed', true);
-        $this->registerArgument('key', 'mixed', 'The key being accessed', true);
-    }
-
-    /**
-     * Get the value of an key in an array.
-     *
-     * @param array $arguments
-     * @param \Closure $renderChildrenClosure
-     * @param RenderingContextInterface $renderingContext
-     *
-     * @return string
-     * @throws Exception
-     */
-    public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
-    {
-        $array = $arguments['array'];
-        $key = $arguments['key'];
-        $result = '';
-        if (isset($array[$key])) {
-            $result = $array[$key];
-        }
-        if (!is_scalar($result)) {
-            throw new Exception(
-                'Only scalar return values (string, int, float or double) are supported.',
-                1430852128
-            );
-        }
-        return (string)$result;
-    }
-}
index e8a475a..5350398 100644 (file)
@@ -6,14 +6,12 @@
                                aria-expanded="true" aria-controls="collapse{sectionName}" class="collapsed"
                        >
                                <span class="caret"></span>
-                               <strong>
-                                       <i:object.arrayValueByKey array="{localConfigurationSectionNames}" key="{sectionName}"/>
-                               </strong> [{sectionName}]
+                               <strong>{sectionData.description}</strong> [{sectionName}]
                        </a>
                </h3>
        </div>
        <div id="collapse{sectionName}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading{sectionName}">
-               <f:for each="{sectionData}" as="item">
+               <f:for each="{sectionData.items}" as="item">
                        <a id="{sectionName}-{item.key}"></a>
                        <div class="item">
                                <div class="item-heading">
index eea14df..eac35a5 100644 (file)
@@ -17,7 +17,7 @@
 
 <div class="panel-group" role="tablist" aria-multiselectable="true">
        <f:for each="{localConfigurationData}" as="sectionData" key="sectionName">
-               <f:if condition="{sectionData}">
+               <f:if condition="{sectionData.items}">
                        <f:render partial="Settings/LocalConfiguration/SubSection" arguments="{_all}"/>
                </f:if>
        </f:for>