[!!!][TASK] Merge EXT:aboutmodules in EXT:about 60/45860/6
authorBenni Mack <benni@typo3.org>
Wed, 13 Jan 2016 08:14:22 +0000 (09:14 +0100)
committerBenni Mack <benni@typo3.org>
Fri, 22 Jan 2016 16:39:34 +0000 (17:39 +0100)
Resolves: #72671
Releases: master
Change-Id: I57b4b6b74e8d4b6839755f064b46084b8ae114be
Reviewed-on: https://review.typo3.org/45860
Reviewed-by: Frank Nägler <frank.naegler@typo3.org>
Tested-by: Frank Nägler <frank.naegler@typo3.org>
Reviewed-by: Markus Sommer <markussom@posteo.de>
Tested-by: Markus Sommer <markussom@posteo.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
26 files changed:
composer.json
typo3/sysext/about/Classes/Controller/ModulesController.php [new file with mode: 0644]
typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf [new file with mode: 0644]
typo3/sysext/about/Resources/Private/Less/styles.less
typo3/sysext/about/Resources/Private/Templates/Modules/Index.html [new file with mode: 0644]
typo3/sysext/about/Resources/Public/Css/styles.css
typo3/sysext/about/Resources/Public/Icons/module-aboutmodules.svg [new file with mode: 0644]
typo3/sysext/about/composer.json
typo3/sysext/about/ext_emconf.php
typo3/sysext/about/ext_tables.php
typo3/sysext/aboutmodules/Classes/Controller/ModulesController.php [deleted file]
typo3/sysext/aboutmodules/Resources/Private/.htaccess [deleted file]
typo3/sysext/aboutmodules/Resources/Private/Language/locallang_mod.xlf [deleted file]
typo3/sysext/aboutmodules/Resources/Private/Layouts/Default.html [deleted file]
typo3/sysext/aboutmodules/Resources/Private/Less/styles.less [deleted file]
typo3/sysext/aboutmodules/Resources/Private/Templates/Modules/Index.html [deleted file]
typo3/sysext/aboutmodules/Resources/Public/Css/styles.css [deleted file]
typo3/sysext/aboutmodules/Resources/Public/Icons/module-aboutmodules.svg [deleted file]
typo3/sysext/aboutmodules/composer.json [deleted file]
typo3/sysext/aboutmodules/ext_emconf.php [deleted file]
typo3/sysext/aboutmodules/ext_icon.png [deleted file]
typo3/sysext/aboutmodules/ext_tables.php [deleted file]
typo3/sysext/core/Classes/Authentication/BackendUserAuthentication.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-72671-ExtensionAboutmodulesRemoved.rst [new file with mode: 0644]
typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdateAboutModule.php [new file with mode: 0644]
typo3/sysext/install/ext_localconf.php

index dd1a50c..091a221 100644 (file)
@@ -66,7 +66,6 @@
        },
        "replace": {
                "typo3/cms-about": "self.version",
-               "typo3/cms-aboutmodules": "self.version",
                "typo3/cms-adodb": "self.version",
                "typo3/cms-backend": "self.version",
                "typo3/cms-belog": "self.version",
        "autoload": {
                "psr-4": {
                        "TYPO3\\CMS\\About\\": "typo3/sysext/about/Classes/",
-                       "TYPO3\\CMS\\Aboutmodules\\": "typo3/sysext/aboutmodules/Classes/",
                        "TYPO3\\CMS\\Backend\\": "typo3/sysext/backend/Classes/",
                        "TYPO3\\CMS\\Belog\\": "typo3/sysext/belog/Classes/",
                        "TYPO3\\CMS\\Beuser\\": "typo3/sysext/beuser/Classes/",
diff --git a/typo3/sysext/about/Classes/Controller/ModulesController.php b/typo3/sysext/about/Classes/Controller/ModulesController.php
new file mode 100644 (file)
index 0000000..8768ca5
--- /dev/null
@@ -0,0 +1,155 @@
+<?php
+namespace TYPO3\CMS\About\Controller;
+
+/*
+ * 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\Backend\Module\ModuleLoader;
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Backend\View\BackendTemplateView;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Core\Utility\PathUtility;
+use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
+use TYPO3\CMS\Extbase\Mvc\View\ViewInterface;
+use TYPO3\CMS\Lang\LanguageService;
+
+/**
+ * 'About modules' script - the default start-up module.
+ * Will display the list of main- and sub-modules available to the user.
+ * Each module will be show with description and a link to the module.
+ */
+class ModulesController extends ActionController
+{
+    /**
+     * Language Service property. Used to access localized labels
+     *
+     * @var LanguageService
+     */
+    protected $languageService;
+
+    /**
+     * BackendTemplateView Container
+     *
+     * @var BackendTemplateView
+     */
+    protected $defaultViewObjectName = BackendTemplateView::class;
+
+    /**
+     * @param LanguageService $languageService Language Service to inject
+     */
+    public function __construct(LanguageService $languageService = null)
+    {
+        parent::__construct();
+        $this->languageService = $languageService ?: $GLOBALS['LANG'];
+    }
+
+    /**
+     * Set up the doc header properly here
+     *
+     * @param ViewInterface $view
+     */
+    protected function initializeView(ViewInterface $view)
+    {
+        /** @var BackendTemplateView $view */
+        parent::initializeView($view);
+        // Disable Path
+        $view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation([]);
+    }
+
+    /**
+     * Show general information and the installed modules
+     *
+     * @return void
+     */
+    public function indexAction()
+    {
+        $warnings = array();
+        $securityWarnings = '';
+        // Hook for additional warnings
+        if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['displayWarningMessages'])) {
+            foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['displayWarningMessages'] as $classRef) {
+                $hookObj = GeneralUtility::getUserObj($classRef);
+                if (method_exists($hookObj, 'displayWarningMessages_postProcess')) {
+                    $hookObj->displayWarningMessages_postProcess($warnings);
+                }
+            }
+        }
+        if (!empty($warnings)) {
+            if (count($warnings) > 1) {
+                $securityWarnings = '<ul><li>' . implode('</li><li>', $warnings) . '</li></ul>';
+            } else {
+                $securityWarnings = '<p>' . implode('', $warnings) . '</p>';
+            }
+            unset($warnings);
+        }
+
+        $this->view->assignMultiple(
+            array(
+                'TYPO3Version' => TYPO3_version,
+                'copyRightNotice' => BackendUtility::TYPO3_copyRightNotice(),
+                'warningMessages' => $securityWarnings,
+                'warningTitle' => $this->languageService->sL('LLL:EXT:lang/locallang_core.xlf:warning.header'),
+                'modules' => $this->getModulesData()
+            )
+        );
+    }
+
+    /**
+     * Create array with data of all main modules (Web, File, ...)
+     * and its nested sub modules
+     *
+     * @return array
+     */
+    protected function getModulesData()
+    {
+        /** @var $loadedModules ModuleLoader */
+        $loadedModules = GeneralUtility::makeInstance(ModuleLoader::class);
+        $loadedModules->observeWorkspaces = true;
+        $loadedModules->load($GLOBALS['TBE_MODULES']);
+        $mainModulesData = array();
+        foreach ($loadedModules->modules as $moduleName => $moduleInfo) {
+            $mainModuleData = array();
+            $moduleKey = $moduleName . '_tab';
+            $mainModuleData['name'] = $moduleName;
+            $mainModuleData['label'] = $this->languageService->moduleLabels['tabs'][$moduleKey];
+            if (is_array($moduleInfo['sub']) && !empty($moduleInfo['sub'])) {
+                $mainModuleData['subModules'] = $this->getSubModuleData($moduleName, $moduleInfo['sub']);
+            }
+            $mainModulesData[] = $mainModuleData;
+        }
+        return $mainModulesData;
+    }
+
+    /**
+     * Create array with data of all subModules of a specific main module
+     *
+     * @param string $moduleName Name of the main module
+     * @param array $subModulesInfo Sub module information
+     * @return array
+     */
+    protected function getSubModuleData($moduleName, array $subModulesInfo = array())
+    {
+        $subModulesData = array();
+        foreach ($subModulesInfo as $subModuleName => $subModuleInfo) {
+            $subModuleKey = $moduleName . '_' . $subModuleName . '_tab';
+            $subModuleData = array();
+            $subModuleData['name'] = $subModuleName;
+            $subModuleData['icon'] = PathUtility::stripPathSitePrefix($this->languageService->moduleLabels['tabs_images'][$subModuleKey]);
+            $subModuleData['label'] = $this->languageService->moduleLabels['tabs'][$subModuleKey];
+            $subModuleData['shortDescription'] = $this->languageService->moduleLabels['labels'][$subModuleKey . 'label'];
+            $subModuleData['longDescription'] = $this->languageService->moduleLabels['labels'][$subModuleKey . 'descr'];
+            $subModulesData[] = $subModuleData;
+        }
+        return $subModulesData;
+    }
+}
diff --git a/typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf b/typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf
new file mode 100644 (file)
index 0000000..4361250
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
+       <file t3:id="1415814780" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:32Z" product-name="aboutmodules">
+               <header/>
+               <body>
+                       <trans-unit id="mlang_labels_tablabel">
+                               <source>Information about modules</source>
+                       </trans-unit>
+                       <trans-unit id="mlang_labels_tabdescr">
+                               <source>Shows this page about available modules.</source>
+                       </trans-unit>
+                       <trans-unit id="mlang_tabs_tab">
+                               <source>About Modules</source>
+                       </trans-unit>
+               </body>
+       </file>
+</xliff>
index 67f2ab1..13b6ef3 100644 (file)
@@ -41,4 +41,30 @@ Help > About
                color: black;
                text-decoration: underline;
        }
-}
\ No newline at end of file
+}
+
+
+/* - - - - - - - - - - - - - - - - - - - - -
+Help > About modules
+- - - - - - - - - - - - - - - - - - - - - */
+
+.typo3-aboutmodules-inner-docbody {
+
+       a {
+               text-decoration: underline;
+       }
+
+       .end-text {
+               padding-top: 3em;
+       }
+
+       h2 {
+               margin-bottom: 1em;
+       }
+
+       .submodule {
+               padding-bottom: 3em;
+       }
+}
+
+
diff --git a/typo3/sysext/about/Resources/Private/Templates/Modules/Index.html b/typo3/sysext/about/Resources/Private/Templates/Modules/Index.html
new file mode 100644 (file)
index 0000000..a2385d4
--- /dev/null
@@ -0,0 +1,82 @@
+<f:layout name="Default" />
+
+<f:section name="Content">
+       <div class="typo3-aboutmodules-inner-docbody">
+               <h1>TYPO3 CMS {TYPO3Version}<br />
+                       <f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:introtext" />
+               </h1>
+
+               <p class="lead">
+                       <f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:introtext2" />
+               </p>
+
+               <f:if condition="{warningMessages}">
+                       <f:be.infobox title="{warningTitle}" state="2">{warningMessages -> f:format.raw()}</f:be.infobox>
+               </f:if>
+
+               <f:for each="{modules}" as="mainModule">
+                       <f:if condition="{mainModule.subModules}">
+                               <h2>{mainModule.label}</h2>
+                               <div class="container-fuid">
+                                       <div class="row">
+                                               <f:for each="{mainModule.subModules}" as="subModule" iteration="subModuleIterator">
+                                                       <div class="col-xs-12 col-sm-6">
+                                                               <div class="submodule media clearfix">
+                                                                       <a
+                                                                               href="#"
+                                                                               onclick="top.goToModule('{mainModule.name}_{subModule.name}'); return false;"
+                                                                               title="{subModule.shortDescription}"
+                                                                               class="pull-left"
+                                                                       >
+                                                                               <span class="typo3-app-icon">
+                                                                                       <span>
+                                                                                               <span>
+                                                                                                       <img src="../{subModule.icon}" alt="{subModule.label}" class="media-object" />
+                                                                                               </span>
+                                                                                       </span>
+                                                                               </span>
+                                                                       </a>
+
+                                                                       <div class="media-body">
+                                                                               <strong>
+                                                                                       <a
+                                                                                               href="#"
+                                                                                               onclick="top.goToModule('{mainModule.name}_{subModule.name}'); return false;"
+                                                                                               title="{subModule.shortDescription}"
+                                                                                               >{subModule.label}</a>
+                                                                               </strong><br>
+
+                                                                               <f:if condition="{subModule.shortDescription}">
+                                                                                       <small class="text-muted">{subModule.shortDescription}</small><br>
+                                                                               </f:if>
+
+                                                                               {subModule.longDescription -> f:format.raw()}
+                                                                       </div>
+                                                               </div>
+                                                       </div>
+
+                                                       <f:if condition="{subModuleIterator.isEven}">
+                                                               <f:if condition="{subModuleIterator.isLast} == 0">
+                                                                       </div><div class="row">
+                                                               </f:if>
+                                                       </f:if>
+                                               </f:for>
+                                       </div>
+                               </div>
+                       </f:if>
+               </f:for>
+
+               <p class="end-text text-info">
+                       <em>
+                               (<f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:endText" />)
+                       </em>
+               </p>
+
+               <p>
+                       <small>
+                               {copyRightNotice -> f:format.raw()}
+                       </small>
+               </p>
+
+       </div>
+</f:section>
index 2778745..fc677b3 100644 (file)
@@ -36,3 +36,18 @@ Help > About
   color: black;
   text-decoration: underline;
 }
+/* - - - - - - - - - - - - - - - - - - - - -
+Help > About modules
+- - - - - - - - - - - - - - - - - - - - - */
+.typo3-aboutmodules-inner-docbody a {
+       text-decoration: underline;
+}
+.typo3-aboutmodules-inner-docbody .end-text {
+       padding-top: 3em;
+}
+.typo3-aboutmodules-inner-docbody h2 {
+       margin-bottom: 1em;
+}
+.typo3-aboutmodules-inner-docbody .submodule {
+       padding-bottom: 3em;
+}
diff --git a/typo3/sysext/about/Resources/Public/Icons/module-aboutmodules.svg b/typo3/sysext/about/Resources/Public/Icons/module-aboutmodules.svg
new file mode 100644 (file)
index 0000000..d5d339f
--- /dev/null
@@ -0,0 +1 @@
+<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><title>module-aboutmodules</title><g fill="none" fill-rule="evenodd"><path d="M0 0h64v64H0z" fill="#3A81B4"/><path d="M48 18v26H16V18h32zm-26 0v26h2V18h-2zm-4 18v2h2v-2h-2zm0 4v2h2v-2h-2zm0-8v2h2v-2h-2zm0-4v2h2v-2h-2zm0-4v2h2v-2h-2zm0-4v2h2v-2h-2zm10 4v2h10v-2H28zm0 8v2h10v-2H28zm0-4v2h14v-2H28z" fill="#FFF"/></g></svg>
\ No newline at end of file
index 34bc7e3..485fcaf 100644 (file)
@@ -9,7 +9,8 @@
                "typo3/cms-core": "*"
        },
        "replace": {
-               "about": "*"
+               "about": "*",
+               "aboutmodules": "*"
        },
        "extra": {
                "typo3/cms": {
index 2c8cde0..3faf535 100644 (file)
@@ -1,15 +1,14 @@
 <?php
 $EM_CONF[$_EXTKEY] = array(
     'title' => 'Help>About',
-    'description' => 'Shows info about TYPO3 and installed extensions.',
+    'description' => 'Shows info about TYPO3, installed extensions and a separate module for available modules.',
     'category' => 'module',
     'state' => 'stable',
     'uploadfolder' => 0,
     'createDirs' => '',
     'clearCacheOnLoad' => 0,
-    'author' => 'Kasper Skaarhoj',
-    'author_email' => 'kasperYYYY@typo3.com',
-    'author_company' => 'Curby Soft Multimedia',
+    'author' => 'TYPO3 Core Team',
+    'author_email' => 'typo3cms@typo3.org',
     'version' => '8.0.0',
     'constraints' => array(
         'depends' => array(
index 9383d60..1f58c32 100644 (file)
@@ -15,4 +15,19 @@ if (TYPO3_MODE === 'BE' && !(TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_INSTALL)) {
             'labels' => 'LLL:EXT:lang/locallang_mod_help_about.xlf'
         )
     );
+
+    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
+        'TYPO3.CMS.About',
+        'help',
+        'aboutmodules',
+        'after:about',
+        array(
+            'Modules' => 'index'
+        ),
+        array(
+            'access' => 'user,group',
+            'icon' => 'EXT:about/Resources/Public/Icons/module-aboutmodules.svg',
+            'labels' => 'LLL:EXT:about/Resources/Private/Language/Modules/aboutmodules.xlf'
+        )
+    );
 }
diff --git a/typo3/sysext/aboutmodules/Classes/Controller/ModulesController.php b/typo3/sysext/aboutmodules/Classes/Controller/ModulesController.php
deleted file mode 100644 (file)
index d9f322f..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-namespace TYPO3\CMS\Aboutmodules\Controller;
-
-/*
- * 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\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Backend\View\BackendTemplateView;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Core\Utility\PathUtility;
-use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
-use TYPO3\CMS\Extbase\Mvc\View\ViewInterface;
-use TYPO3\CMS\Lang\LanguageService;
-
-/**
- * 'About modules' script - the default start-up module.
- * Will display the list of main- and sub-modules available to the user.
- * Each module will be show with description and a link to the module.
- */
-class ModulesController extends ActionController
-{
-    /**
-     * Language Service property. Used to access localized labels
-     *
-     * @var LanguageService
-     */
-    protected $languageService;
-
-    /**
-     * BackendTemplateView Container
-     *
-     * @var BackendTemplateView
-     */
-    protected $defaultViewObjectName = BackendTemplateView::class;
-
-    /**
-     * @param LanguageService $languageService Language Service to inject
-     */
-    public function __construct(LanguageService $languageService = null)
-    {
-        parent::__construct();
-        $this->languageService = $languageService ?: $GLOBALS['LANG'];
-    }
-
-    /**
-     * Set up the doc header properly here
-     *
-     * @param ViewInterface $view
-     */
-    protected function initializeView(ViewInterface $view)
-    {
-        /** @var BackendTemplateView $view */
-        parent::initializeView($view);
-        // Disable Path
-        $view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation([]);
-    }
-
-    /**
-     * Show general information and the installed modules
-     *
-     * @return void
-     */
-    public function indexAction()
-    {
-        $warnings = array();
-        $securityWarnings = '';
-        // Hook for additional warnings
-        if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['displayWarningMessages'])) {
-            foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['displayWarningMessages'] as $classRef) {
-                $hookObj = GeneralUtility::getUserObj($classRef);
-                if (method_exists($hookObj, 'displayWarningMessages_postProcess')) {
-                    $hookObj->displayWarningMessages_postProcess($warnings);
-                }
-            }
-        }
-        if (!empty($warnings)) {
-            if (count($warnings) > 1) {
-                $securityWarnings = '<ul><li>' . implode('</li><li>', $warnings) . '</li></ul>';
-            } else {
-                $securityWarnings = '<p>' . implode('', $warnings) . '</p>';
-            }
-            unset($warnings);
-        }
-
-        $this->view->assignMultiple(
-            array(
-                'TYPO3Version' => TYPO3_version,
-                'copyRightNotice' => BackendUtility::TYPO3_copyRightNotice(),
-                'warningMessages' => $securityWarnings,
-                'warningTitle' => $this->languageService->sL('LLL:EXT:lang/locallang_core.xlf:warning.header'),
-                'modules' => $this->getModulesData()
-            )
-        );
-    }
-
-    /**
-     * Create array with data of all main modules (Web, File, ...)
-     * and its nested sub modules
-     *
-     * @return array
-     */
-    protected function getModulesData()
-    {
-        /** @var $loadedModules \TYPO3\CMS\Backend\Module\ModuleLoader */
-        $loadedModules = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Module\ModuleLoader::class);
-        $loadedModules->observeWorkspaces = true;
-        $loadedModules->load($GLOBALS['TBE_MODULES']);
-        $mainModulesData = array();
-        foreach ($loadedModules->modules as $moduleName => $moduleInfo) {
-            $mainModuleData = array();
-            $moduleKey = $moduleName . '_tab';
-            $mainModuleData['name'] = $moduleName;
-            $mainModuleData['label'] = $this->languageService->moduleLabels['tabs'][$moduleKey];
-            if (is_array($moduleInfo['sub']) && !empty($moduleInfo['sub'])) {
-                $mainModuleData['subModules'] = $this->getSubModuleData($moduleName, $moduleInfo['sub']);
-            }
-            $mainModulesData[] = $mainModuleData;
-        }
-        return $mainModulesData;
-    }
-
-    /**
-     * Create array with data of all subModules of a specific main module
-     *
-     * @param string $moduleName Name of the main module
-     * @param array $subModulesInfo Sub module information
-     * @return array
-     */
-    protected function getSubModuleData($moduleName, array $subModulesInfo = array())
-    {
-        $subModulesData = array();
-        foreach ($subModulesInfo as $subModuleName => $subModuleInfo) {
-            $subModuleKey = $moduleName . '_' . $subModuleName . '_tab';
-            $subModuleData = array();
-            $subModuleData['name'] = $subModuleName;
-            $subModuleData['icon'] = PathUtility::stripPathSitePrefix($this->languageService->moduleLabels['tabs_images'][$subModuleKey]);
-            $subModuleData['label'] = $this->languageService->moduleLabels['tabs'][$subModuleKey];
-            $subModuleData['shortDescription'] = $this->languageService->moduleLabels['labels'][$subModuleKey . 'label'];
-            $subModuleData['longDescription'] = $this->languageService->moduleLabels['labels'][$subModuleKey . 'descr'];
-            $subModulesData[] = $subModuleData;
-        }
-        return $subModulesData;
-    }
-}
diff --git a/typo3/sysext/aboutmodules/Resources/Private/.htaccess b/typo3/sysext/aboutmodules/Resources/Private/.htaccess
deleted file mode 100644 (file)
index 9a2aa5a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Apache < 2.3
-<IfModule !mod_authz_core.c>
-       Order allow,deny
-       Deny from all
-       Satisfy All
-</IfModule>
-
-# Apache ≥ 2.3
-<IfModule mod_authz_core.c>
-       Require all denied
-</IfModule>
diff --git a/typo3/sysext/aboutmodules/Resources/Private/Language/locallang_mod.xlf b/typo3/sysext/aboutmodules/Resources/Private/Language/locallang_mod.xlf
deleted file mode 100644 (file)
index 4361250..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415814780" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:32Z" product-name="aboutmodules">
-               <header/>
-               <body>
-                       <trans-unit id="mlang_labels_tablabel">
-                               <source>Information about modules</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_labels_tabdescr">
-                               <source>Shows this page about available modules.</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_tabs_tab">
-                               <source>About Modules</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/aboutmodules/Resources/Private/Layouts/Default.html b/typo3/sysext/aboutmodules/Resources/Private/Layouts/Default.html
deleted file mode 100644 (file)
index 615d84a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<f:be.pageRenderer includeCssFiles="{0: '{f:uri.resource(path:\'Css/styles.css\')}'}" />
-<f:render section="Content" />
\ No newline at end of file
diff --git a/typo3/sysext/aboutmodules/Resources/Private/Less/styles.less b/typo3/sysext/aboutmodules/Resources/Private/Less/styles.less
deleted file mode 100644 (file)
index 7ff3be6..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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!
- */
-
-/* - - - - - - - - - - - - - - - - - - - - -
-Help > About modules
-- - - - - - - - - - - - - - - - - - - - - */
-
-.typo3-aboutmodules-inner-docbody {
-
-       a {
-               text-decoration: underline;
-       }
-
-       .end-text {
-               padding-top: 3em;
-       }
-
-       h2 {
-               margin-bottom: 1em;
-       }
-
-       .submodule {
-               padding-bottom: 3em;
-       }
-}
-
-
diff --git a/typo3/sysext/aboutmodules/Resources/Private/Templates/Modules/Index.html b/typo3/sysext/aboutmodules/Resources/Private/Templates/Modules/Index.html
deleted file mode 100644 (file)
index a2385d4..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<f:layout name="Default" />
-
-<f:section name="Content">
-       <div class="typo3-aboutmodules-inner-docbody">
-               <h1>TYPO3 CMS {TYPO3Version}<br />
-                       <f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:introtext" />
-               </h1>
-
-               <p class="lead">
-                       <f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:introtext2" />
-               </p>
-
-               <f:if condition="{warningMessages}">
-                       <f:be.infobox title="{warningTitle}" state="2">{warningMessages -> f:format.raw()}</f:be.infobox>
-               </f:if>
-
-               <f:for each="{modules}" as="mainModule">
-                       <f:if condition="{mainModule.subModules}">
-                               <h2>{mainModule.label}</h2>
-                               <div class="container-fuid">
-                                       <div class="row">
-                                               <f:for each="{mainModule.subModules}" as="subModule" iteration="subModuleIterator">
-                                                       <div class="col-xs-12 col-sm-6">
-                                                               <div class="submodule media clearfix">
-                                                                       <a
-                                                                               href="#"
-                                                                               onclick="top.goToModule('{mainModule.name}_{subModule.name}'); return false;"
-                                                                               title="{subModule.shortDescription}"
-                                                                               class="pull-left"
-                                                                       >
-                                                                               <span class="typo3-app-icon">
-                                                                                       <span>
-                                                                                               <span>
-                                                                                                       <img src="../{subModule.icon}" alt="{subModule.label}" class="media-object" />
-                                                                                               </span>
-                                                                                       </span>
-                                                                               </span>
-                                                                       </a>
-
-                                                                       <div class="media-body">
-                                                                               <strong>
-                                                                                       <a
-                                                                                               href="#"
-                                                                                               onclick="top.goToModule('{mainModule.name}_{subModule.name}'); return false;"
-                                                                                               title="{subModule.shortDescription}"
-                                                                                               >{subModule.label}</a>
-                                                                               </strong><br>
-
-                                                                               <f:if condition="{subModule.shortDescription}">
-                                                                                       <small class="text-muted">{subModule.shortDescription}</small><br>
-                                                                               </f:if>
-
-                                                                               {subModule.longDescription -> f:format.raw()}
-                                                                       </div>
-                                                               </div>
-                                                       </div>
-
-                                                       <f:if condition="{subModuleIterator.isEven}">
-                                                               <f:if condition="{subModuleIterator.isLast} == 0">
-                                                                       </div><div class="row">
-                                                               </f:if>
-                                                       </f:if>
-                                               </f:for>
-                                       </div>
-                               </div>
-                       </f:if>
-               </f:for>
-
-               <p class="end-text text-info">
-                       <em>
-                               (<f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:endText" />)
-                       </em>
-               </p>
-
-               <p>
-                       <small>
-                               {copyRightNotice -> f:format.raw()}
-                       </small>
-               </p>
-
-       </div>
-</f:section>
diff --git a/typo3/sysext/aboutmodules/Resources/Public/Css/styles.css b/typo3/sysext/aboutmodules/Resources/Public/Css/styles.css
deleted file mode 100644 (file)
index ffe1162..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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!
- */
-/* - - - - - - - - - - - - - - - - - - - - -
-Help > About modules
-- - - - - - - - - - - - - - - - - - - - - */
-.typo3-aboutmodules-inner-docbody a {
-  text-decoration: underline;
-}
-.typo3-aboutmodules-inner-docbody .end-text {
-  padding-top: 3em;
-}
-.typo3-aboutmodules-inner-docbody h2 {
-  margin-bottom: 1em;
-}
-.typo3-aboutmodules-inner-docbody .submodule {
-  padding-bottom: 3em;
-}
diff --git a/typo3/sysext/aboutmodules/Resources/Public/Icons/module-aboutmodules.svg b/typo3/sysext/aboutmodules/Resources/Public/Icons/module-aboutmodules.svg
deleted file mode 100644 (file)
index d5d339f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><title>module-aboutmodules</title><g fill="none" fill-rule="evenodd"><path d="M0 0h64v64H0z" fill="#3A81B4"/><path d="M48 18v26H16V18h32zm-26 0v26h2V18h-2zm-4 18v2h2v-2h-2zm0 4v2h2v-2h-2zm0-8v2h2v-2h-2zm0-4v2h2v-2h-2zm0-4v2h2v-2h-2zm0-4v2h2v-2h-2zm10 4v2h10v-2H28zm0 8v2h10v-2H28zm0-4v2h14v-2H28z" fill="#FFF"/></g></svg>
\ No newline at end of file
diff --git a/typo3/sysext/aboutmodules/composer.json b/typo3/sysext/aboutmodules/composer.json
deleted file mode 100644 (file)
index 0e1f7cc..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "name": "typo3/cms-aboutmodules",
-       "type": "typo3-cms-framework",
-       "description": "TYPO3 Core",
-       "homepage": "https://typo3.org",
-       "license": ["GPL-2.0+"],
-
-       "require": {
-               "typo3/cms-core": "*"
-       },
-       "replace": {
-               "aboutmodules": "*"
-       },
-       "extra": {
-               "typo3/cms": {
-                       "Package": {
-                               "partOfFactoryDefault": true
-                       }
-               }
-       },
-       "autoload": {
-               "psr-4": {
-                       "TYPO3\\CMS\\Aboutmodules\\": "Classes/"
-               }
-       }
-}
diff --git a/typo3/sysext/aboutmodules/ext_emconf.php b/typo3/sysext/aboutmodules/ext_emconf.php
deleted file mode 100644 (file)
index e04f0ce..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$EM_CONF[$_EXTKEY] = array(
-    'title' => 'Help>About Modules',
-    'description' => 'Shows an overview of the installed and available modules including description and links.',
-    'category' => 'module',
-    'state' => 'stable',
-    'uploadfolder' => 0,
-    'createDirs' => '',
-    'clearCacheOnLoad' => 0,
-    'author' => 'Kasper Skaarhoj',
-    'author_email' => 'kasperYYYY@typo3.com',
-    'author_company' => 'Curby Soft Multimedia',
-    'version' => '8.0.0',
-    'constraints' => array(
-        'depends' => array(
-            'typo3' => '8.0.0-8.0.99',
-        ),
-        'conflicts' => array(),
-        'suggests' => array(),
-    ),
-);
diff --git a/typo3/sysext/aboutmodules/ext_icon.png b/typo3/sysext/aboutmodules/ext_icon.png
deleted file mode 100644 (file)
index 9576a21..0000000
Binary files a/typo3/sysext/aboutmodules/ext_icon.png and /dev/null differ
diff --git a/typo3/sysext/aboutmodules/ext_tables.php b/typo3/sysext/aboutmodules/ext_tables.php
deleted file mode 100644 (file)
index 8a2e5c6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-// Avoid that this block is loaded in frontend or within upgrade wizards
-if (TYPO3_MODE === 'BE' && !(TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_INSTALL)) {
-    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
-        'TYPO3.CMS.Aboutmodules',
-        'help',
-        'aboutmodules',
-        'after:about',
-        array(
-            'Modules' => 'index'
-        ),
-        array(
-            'access' => 'user,group',
-            'icon' => 'EXT:aboutmodules/Resources/Public/Icons/module-aboutmodules.svg',
-            'labels' => 'LLL:EXT:aboutmodules/Resources/Private/Language/locallang_mod.xlf'
-        )
-    );
-}
index 97a8ea3..b2b03c7 100644 (file)
@@ -280,7 +280,7 @@ class BackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\AbstractU
         // user-data for the modules
         'thumbnailsByDefault' => 1,
         'emailMeAtLogin' => 0,
-        'startModule' => 'help_AboutmodulesAboutmodules',
+        'startModule' => 'help_AboutAboutmodules',
         'titleLen' => 50,
         'edit_RTE' => '1',
         'edit_docModuleUpload' => '1',
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-72671-ExtensionAboutmodulesRemoved.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-72671-ExtensionAboutmodulesRemoved.rst
new file mode 100644 (file)
index 0000000..999b7ab
--- /dev/null
@@ -0,0 +1,14 @@
+===================================================
+Breaking: #72671 - Extension "aboutmodules" removed
+===================================================
+
+Description
+===========
+
+The system extension "aboutmodules" is removed, as all functionality has been moved to the system extension "about".
+
+
+Impact
+======
+
+It is not possible to have just "aboutmodules" or "about" installed without having the other module shown as well.
\ No newline at end of file
diff --git a/typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdateAboutModule.php b/typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdateAboutModule.php
new file mode 100644 (file)
index 0000000..934eb8c
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * 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!
+ */
+
+/**
+ * Update backend user setting startModule if set to "help_aboutmodules"
+ */
+class BackendUserStartModuleUpdateAboutModule extends AbstractUpdate
+{
+    /**
+     * @var string
+     */
+    protected $title = 'Update backend user setting "startModule"';
+
+    /**
+     * Checks if an update is needed
+     *
+     * @param string &$description The description for the update
+     * @return bool Whether an update is needed (TRUE) or not (FALSE)
+     */
+    public function checkForUpdate(&$description)
+    {
+        $backendUsersCount = $this->getDatabaseConnection()->exec_SELECTcountRows('uid', 'be_users');
+        if ($this->isWizardDone() || $backendUsersCount === 0) {
+            return false;
+        }
+
+        $description = 'The backend user setting startModule is changed for the extension aboutmodules. Update all '
+            . 'backend users that use ext:aboutmodules as startModule.';
+
+        return true;
+    }
+
+    /**
+     * Performs the database update if backend user's startmodule is help_aboutmodules
+     *
+     * @param array &$databaseQueries Queries done in this update
+     * @param mixed &$customMessages Custom messages
+     * @return bool
+     */
+    public function performUpdate(array &$databaseQueries, &$customMessages)
+    {
+        $db = $this->getDatabaseConnection();
+        $backendUsers = $db->exec_SELECTgetRows('uid,uc', 'be_users', '1=1');
+        if (!empty($backendUsers)) {
+            foreach ($backendUsers as $backendUser) {
+                if ($backendUser['uc'] !== null) {
+                    $userConfig = unserialize($backendUser['uc']);
+                    if ($userConfig['startModule'] === 'help_AboutmodulesAboutmodules') {
+                        $userConfig['startModule'] = 'help_AboutAboutmodules';
+                        $db->exec_UPDATEquery(
+                            'be_users',
+                            'uid=' . (int)$backendUser['uid'],
+                            array(
+                                'uc' => serialize($userConfig),
+                            )
+                        );
+                        $databaseQueries[] = $db->debug_lastBuiltQuery;
+                    }
+                }
+            }
+        }
+
+        $this->markWizardAsDone();
+        return true;
+    }
+}
index 735976b..96fbc2b 100644 (file)
@@ -14,3 +14,7 @@ $signalSlotDispatcher->connect(
     \TYPO3\CMS\Core\Category\CategoryRegistry::class,
     'addCategoryDatabaseSchemaToTablesDefinition'
 );
+
+
+$TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['update'][\TYPO3\CMS\Install\Updates\BackendUserStartModuleUpdateAboutModule::class]
+    = \TYPO3\CMS\Install\Updates\BackendUserStartModuleUpdateAboutModule::class;