[CLEANUP] Streamline EXT:about 90/51790/3
authorBenni Mack <benni@typo3.org>
Wed, 22 Feb 2017 07:38:47 +0000 (08:38 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Wed, 22 Feb 2017 16:50:37 +0000 (17:50 +0100)
Streamlined EXT:about extension as a first step to clean up the whole
TYPO3 Core base:

- Moved locallang file to EXT:about, as it is only used in this extension
- Removed usage of TYPO3_LOADED_EXT/ext_emconf.php in favor of PackageManager
(needed to add the authors into each Package)
- Fully added all external libraries in use (not including -dev requirements)
- Moved EqualHeight.js to EXT:about as it is only used in this extension
- Proper usage of Fluid layouts
- Streamlined code, variables, imports and comments
- Reviewed comments in PHP

Resolves: #79948
Releases: master
Change-Id: Ia6c2d6b519bc34847131f06908c2c441b9248a8b
Reviewed-on: https://review.typo3.org/51790
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Frans Saris <franssaris@gmail.com>
Tested-by: Mona Muzaffar <mona.muzaffar@gmx.de>
Reviewed-by: Mona Muzaffar <mona.muzaffar@gmx.de>
Tested-by: Josef Glatz <josef.glatz@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
22 files changed:
typo3/sysext/about/Classes/Controller/AboutController.php
typo3/sysext/about/Classes/Controller/ModulesController.php
typo3/sysext/about/Classes/Domain/Model/Extension.php
typo3/sysext/about/Classes/Domain/Repository/ExtensionRepository.php
typo3/sysext/about/Resources/Private/Language/Modules/about.xlf [new file with mode: 0644]
typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf
typo3/sysext/about/Resources/Private/Layouts/Default.html
typo3/sysext/about/Resources/Private/Partials/About.html
typo3/sysext/about/Resources/Private/Partials/CoreTeam.html
typo3/sysext/about/Resources/Private/Partials/Credits.html
typo3/sysext/about/Resources/Private/Partials/Donation.html
typo3/sysext/about/Resources/Private/Partials/Extensions.html
typo3/sysext/about/Resources/Private/Partials/ExternalLibraries.html
typo3/sysext/about/Resources/Private/Partials/Logo.html
typo3/sysext/about/Resources/Private/Templates/About/Index.html
typo3/sysext/about/Resources/Private/Templates/Modules/Index.html
typo3/sysext/about/Resources/Public/JavaScript/EqualHeight.js [new file with mode: 0644]
typo3/sysext/about/ext_tables.php
typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js [deleted file]
typo3/sysext/core/Classes/Localization/LocalizationFactory.php
typo3/sysext/core/Classes/Package/PackageManager.php
typo3/sysext/lang/Resources/Private/Language/locallang_mod_help_about.xlf [deleted file]

index 1732c6b..8525af8 100644 (file)
@@ -14,28 +14,30 @@ namespace TYPO3\CMS\About\Controller;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\About\Domain\Repository\ExtensionRepository;
 use TYPO3\CMS\Backend\View\BackendTemplateView;
+use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use TYPO3\CMS\Extbase\Mvc\View\ViewInterface;
 
 /**
  * Module 'about' shows some standard information for TYPO3 CMS: About-text, version number and so on.
  */
-class AboutController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
+class AboutController extends ActionController
 {
     /**
-     * @var
+     * @var ViewInterface
      */
     protected $defaultViewObjectName = BackendTemplateView::class;
 
     /**
-     * @var \TYPO3\CMS\About\Domain\Repository\ExtensionRepository
+     * @var ExtensionRepository
      */
     protected $extensionRepository;
 
     /**
-     * @param \TYPO3\CMS\About\Domain\Repository\ExtensionRepository $extensionRepository
+     * @param ExtensionRepository $extensionRepository
      */
-    public function injectExtensionRepository(\TYPO3\CMS\About\Domain\Repository\ExtensionRepository $extensionRepository)
+    public function injectExtensionRepository(ExtensionRepository $extensionRepository)
     {
         $this->extensionRepository = $extensionRepository;
     }
@@ -60,11 +62,10 @@ class AboutController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
      */
     public function indexAction()
     {
-        $extensions = $this->extensionRepository->findAllLoaded();
         $this->view
-            ->assign('TYPO3Version', TYPO3_version)
-            ->assign('TYPO3CopyrightYear', TYPO3_copyright_year)
-            ->assign('TYPO3UrlDonate', TYPO3_URL_DONATE)
-            ->assign('loadedExtensions', $extensions);
+            ->assign('currentVersion', TYPO3_version)
+            ->assign('copyrightYear', TYPO3_copyright_year)
+            ->assign('donationUrl', TYPO3_URL_DONATE)
+            ->assign('loadedExtensions', $this->extensionRepository->findAllLoaded());
     }
 }
index 63fe527..94853b5 100644 (file)
@@ -63,7 +63,7 @@ class ModulesController extends ActionController
         parent::initializeView($view);
         // Disable Path
         $view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation([]);
-        $view->getModuleTemplate()->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/EqualHeight');
+        $view->getModuleTemplate()->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/About/EqualHeight');
     }
 
     /**
@@ -90,12 +90,11 @@ class ModulesController extends ActionController
             } else {
                 $securityWarnings = '<p>' . implode('', $warnings) . '</p>';
             }
-            unset($warnings);
         }
 
         $this->view->assignMultiple(
             [
-                'TYPO3Version' => TYPO3_version,
+                'currentVersion' => TYPO3_version,
                 'copyRightNotice' => BackendUtility::TYPO3_copyRightNotice(),
                 'warningMessages' => $securityWarnings,
                 'warningTitle' => $this->languageService->sL('LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:warning.header'),
index 7703bcb..8ee86fa 100644 (file)
@@ -14,22 +14,19 @@ namespace TYPO3\CMS\About\Domain\Model;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
+
 /**
  * An extension helper model to be used in ext:about context
  *
  * @entity
  */
-class Extension extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
+class Extension extends AbstractEntity
 {
     /**
-     * @var string
+     * @var array
      */
-    protected $author = '';
-
-    /**
-     * @var string
-     */
-    protected $authorEmail = '';
+    protected $authors = [];
 
     /**
      * @var string
@@ -42,35 +39,19 @@ class Extension extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
     protected $title = '';
 
     /**
-     * @param string $author
-     */
-    public function setAuthor($author)
-    {
-        $this->author = $author;
-    }
-
-    /**
-     * @return string
+     * @param array $authors
      */
-    public function getAuthor()
+    public function setAuthors($authors)
     {
-        return $this->author;
+        $this->authors = $authors;
     }
 
     /**
-     * @param string $authorEmail
-     */
-    public function setAuthorEmail($authorEmail)
-    {
-        $this->authorEmail = $authorEmail;
-    }
-
-    /**
-     * @return string
+     * @return array
      */
-    public function getAuthorEmail()
+    public function getAuthors()
     {
-        return $this->authorEmail;
+        return $this->authors;
     }
 
     /**
index 8d7ee75..78f074f 100644 (file)
@@ -14,7 +14,7 @@ namespace TYPO3\CMS\About\Domain\Repository;
  * The TYPO3 project - inspiring people to share!
  */
 use TYPO3\CMS\About\Domain\Model\Extension;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Core\Package\PackageManager;
 use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
 use TYPO3\CMS\Extbase\Persistence\Repository;
 
@@ -24,26 +24,21 @@ use TYPO3\CMS\Extbase\Persistence\Repository;
 class ExtensionRepository extends Repository
 {
     /**
-     * Finds all loaded extensions
+     * Finds all loaded third-party extensions (no system extensions)
      *
      * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\About\Domain\Model\Extension>
      */
     public function findAllLoaded()
     {
         $loadedExtensions = $this->objectManager->get(ObjectStorage::class);
-        $loadedExtensionsArray = $GLOBALS['TYPO3_LOADED_EXT'];
-        foreach ($loadedExtensionsArray as $extensionKey => $extension) {
-            if ((is_array($extension) || $extension instanceof \ArrayAccess) && $extension['type'] !== 'S') {
-                $emconfPath = GeneralUtility::getFileAbsFileName('EXT:' . $extensionKey . '/ext_emconf.php');
-                if (file_exists($emconfPath)) {
-                    include $emconfPath;
-                    $extension = $this->objectManager->get(Extension::class);
-                    $extension->setKey($extensionKey);
-                    $extension->setTitle($EM_CONF['']['title']);
-                    $extension->setAuthor($EM_CONF['']['author']);
-                    $extension->setAuthorEmail($EM_CONF['']['author_email']);
-                    $loadedExtensions->attach($extension);
-                }
+        $packageManager = $this->objectManager->get(PackageManager::class);
+        foreach ($packageManager->getActivePackages() as $package) {
+            if ($package->getValueFromComposerManifest('type') === 'typo3-cms-extension') {
+                $extension = $this->objectManager->get(Extension::class);
+                $extension->setKey($package->getPackageKey());
+                $extension->setTitle($package->getPackageMetaData()->getDescription());
+                $extension->setAuthors($package->getValueFromComposerManifest('authors'));
+                $loadedExtensions->attach($extension);
             }
         }
         return $loadedExtensions;
diff --git a/typo3/sysext/about/Resources/Private/Language/Modules/about.xlf b/typo3/sysext/about/Resources/Private/Language/Modules/about.xlf
new file mode 100644 (file)
index 0000000..d90418f
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
+       <file t3:id="1415814871" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:34Z" product-name="typo3-cms-about">
+               <header/>
+               <body>
+                       <trans-unit id="mlang_labels_tablabel">
+                               <source>About TYPO3 CMS</source>
+                       </trans-unit>
+                       <trans-unit id="mlang_labels_tabdescr">
+                               <source>Displays the basic facts about the TYPO3 application, version and licensing terms.</source>
+                       </trans-unit>
+                       <trans-unit id="mlang_tabs_tab">
+                               <source>About TYPO3 CMS</source>
+                       </trans-unit>
+                       <trans-unit id="title">
+                               <source>About TYPO3 CMS</source>
+                       </trans-unit>
+                       <trans-unit id="typo3_logo">
+                               <source>TYPO3 CMS logo</source>
+                       </trans-unit>
+                       <trans-unit id="information">
+                               <source>TYPO3 Information</source>
+                       </trans-unit>
+                       <trans-unit id="welcome">
+                               <source>TYPO3 CMS - Professional Web Content Management System</source>
+                       </trans-unit>
+                       <trans-unit id="minor">
+                               <source>TYPO3 CMS is an enterprise-class, Open Source Content Management System, used internationally to build and manage websites of all types, from small sites for non-profits to multilingual enterprise solutions for large corporations.&lt;br /&gt;&lt;br /&gt;For further information visit &lt;a href="https://typo3.org/typo3-cms/" target="_blank"&gt;typo3.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;TYPO3 CMS is &lt;b&gt;freely available&lt;/b&gt; under the &lt;a href="https://typo3.org/typo3-cms/overview/licenses/" target="_blank"&gt;TYPO3-license (GNU/GPL)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You are using %s %s</source>
+                       </trans-unit>
+                       <trans-unit id="cms_description">
+                               <source>TYPO3 CMS is an enterprise-class, Open Source Content Management System, used internationally to build and manage websites of all types, from small sites for non-profits to multilingual enterprise solutions for large corporations.&lt;br /&gt;&lt;br /&gt;For further information visit &lt;a href="https://typo3.org/typo3-cms/" target="_blank"&gt;typo3.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;TYPO3 CMS is &lt;b&gt;freely available&lt;/b&gt; under the &lt;a href="https://typo3.org/typo3-cms/overview/licenses/" target="_blank"&gt;TYPO3-license (GNU/GPL)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You are using version %s - Copyright %s %s</source>
+                       </trans-unit>
+                       <trans-unit id="community_credits">
+                               <source>Community Credits</source>
+                       </trans-unit>
+                       <trans-unit id="information_detail">
+                               <source>Visit &lt;a href="https://typo3.org/community/" target="_blank"&gt;typo3.org/community/&lt;/a&gt; if you want to know why TYPO3 rocks.</source>
+                       </trans-unit>
+                       <trans-unit id="coredevs">
+                               <source>Core Team</source>
+                       </trans-unit>
+                       <trans-unit id="coredevs_detail">
+                               <source>Visit &lt;a href="https://typo3.org/teams-committees/core-development/" target="_blank"&gt;typo3.org/teams-committees/core-development/&lt;/a&gt; for the complete member list.&lt;br /&gt;&lt;br /&gt;The Git Repository and the ChangeLog can be found &lt;a href="https://forge.typo3.org/projects/typo3cms-core/" target="_blank"&gt;here&lt;/a&gt;.</source>
+                       </trans-unit>
+                       <trans-unit id="extension_authors">
+                               <source>Extension Authors</source>
+                       </trans-unit>
+                       <trans-unit id="extension_list_info">
+                               <source>This is a list of the people who contributed to the extensions you're using in your installation.</source>
+                       </trans-unit>
+                       <trans-unit id="extension">
+                               <source>Extension</source>
+                       </trans-unit>
+                       <trans-unit id="extension_author">
+                               <source>Author</source>
+                       </trans-unit>
+                       <trans-unit id="donation_header">
+                               <source>TYPO3 Donation</source>
+                       </trans-unit>
+                       <trans-unit id="donation_message">
+                               <source>It would be great if you could donate. TYPO3 CMS is Open Source and relies heavily on donations from its users and supporters.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Thank you&lt;/b&gt; for making this great Content Management System even better with your support!</source>
+                       </trans-unit>
+                       <trans-unit id="donation_button">
+                               <source>Donate now</source>
+                       </trans-unit>
+                       <trans-unit id="external_libraries">
+                               <source>External Libraries</source>
+                       </trans-unit>
+                       <trans-unit id="external_thanks">
+                               <source>TYPO3 CMS core uses and thanks these external Open Source projects:</source>
+                       </trans-unit>
+               </body>
+       </file>
+</xliff>
index 4361250..5381a6f 100644 (file)
@@ -1,6 +1,6 @@
 <?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">
+       <file t3:id="1415814780" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:32Z" product-name="typo3-cms-about">
                <header/>
                <body>
                        <trans-unit id="mlang_labels_tablabel">
index 24f730c..e7071e6 100644 (file)
@@ -1 +1,4 @@
-<f:render section="Content" />
+<div class="container-small">
+       <f:render partial="Logo" arguments="{_all}" />
+       <f:render section="Content" />
+</div>
index f8b250c..11eae02 100644 (file)
@@ -1,8 +1,8 @@
 <p>
-       {f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:cms_description',
+       {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:cms_description',
                arguments: '{
-                       0: TYPO3Version,
-                       1: "&copy; {TYPO3CopyrightYear}",
+                       0: currentVersion,
+                       1: "&copy; {copyrightYear}",
                        2: "Kasper Sk&aring;rh&oslash;j"
        }') -> f:format.raw()}
 </p>
index da4ca7c..5deef90 100644 (file)
@@ -1,10 +1,10 @@
 <div class="panel panel-default">
        <div class="panel-body panel-body-highlightlinks">
                <h2 class="h4">
-                       <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:coredevs" />
+                       <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:coredevs" />
                </h2>
                <p>
-                       {f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:coredevs_detail') -> f:format.raw()}
+                       {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:coredevs_detail') -> f:format.raw()}
                </p>
        </div>
 </div>
index 0467203..b10298b 100644 (file)
@@ -1,10 +1,10 @@
 <div class="panel panel-default">
        <div class="panel-body panel-body-highlightlinks">
                <h2 class="h4">
-                       {f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:community_credits') -> f:format.raw()}
+                       {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:community_credits') -> f:format.raw()}
                </h2>
                <p>
-                       {f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:information_detail') -> f:format.raw()}
+                       {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:information_detail') -> f:format.raw()}
                </p>
        </div>
 </div>
index 820dc66..27516ee 100644 (file)
@@ -1,13 +1,13 @@
 <div class="panel panel-default">
        <div class="panel-body panel-body-highlightlinks">
                <h2 class="h4">
-                       <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:donation_header" />
+                       <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:donation_header" />
                </h2>
                <p>
-                       {f:translate(key: 'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:donation_message') -> f:format.raw()}
+                       {f:translate(key: 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:donation_message') -> f:format.raw()}
                </p>
-               <a href="{TYPO3UrlDonate}" class="btn btn-default" title="{f:translate(key:'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:donation_button')}" target="_blank">
-                       <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:donation_button" />
+               <a href="{donationUrl}" class="btn btn-default" title="{f:translate(key:'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:donation_button')}" target="_blank">
+                       <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:donation_button" />
                </a>
        </div>
 </div>
index 99368b6..9282ffb 100644 (file)
@@ -2,17 +2,17 @@
        <div class="panel panel-default">
                <div class="panel-body panel-body-highlightlinks">
                        <h2 class="h3">
-                               <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:extension_authors" />
+                               <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:extension_authors" />
                        </h2>
                        <p>
-                               <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:extension_list_info" />
+                               <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:extension_list_info" />
                        </p>
                </div>
                <table class="table panel-table">
                        <thead>
                                <tr>
-                                       <th width="35%"><f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:extension" /></th>
-                                       <th><f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:extension_author" /></th>
+                                       <th width="60%"><f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:extension" /></th>
+                                       <th><f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:extension_author" /></th>
                                </tr>
                        </thead>
                        <tbody>
                                                        {loadedExtension.title} ({loadedExtension.key})
                                                </td>
                                                <td>
-                                                       <f:link.email
-                                                               email="{loadedExtension.authorEmail}?subject={f:format.urlencode(value:'Thanks for your {loadedExtension.title} extension')}"
-                                                       >
-                                                               {loadedExtension.author}
-                                                       </f:link.email>
+                                                       <f:for each="{loadedExtension.authors}" as="extensionAuthor" iteration="i">
+                                                               <f:if condition="{extensionAuthor.email}">
+                                                                       <f:then>
+                                                                               <f:link.email
+                                                                                       email="{extensionAuthor.email}?subject={f:format.urlencode(value:'Thanks for your {loadedExtension.title} extension')}"
+                                                                               >
+                                                                                       {extensionAuthor.name}
+                                                                               </f:link.email>
+                                                                       </f:then>
+                                                                       <f:else>
+                                                                               {extensionAuthor.name}
+                                                                       </f:else>
+                                                               </f:if>
+                                                               <f:if condition="{i.isLast} == false">
+                                                                       <br>
+                                                               </f:if>
+                                                       </f:for>
                                                </td>
                                        </tr>
                                </f:for>
index 65048bb..c94950f 100644 (file)
 <div class="panel panel-default">
        <div class="panel-body panel-body-highlightlinks">
                <h2 class="h3">
-                       <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:external_libraries" />
+                       <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:external_libraries" />
                </h2>
                <p>
-                       <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:external_thanks" />
+                       <f:translate key="LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:external_thanks" />
                </p>
        </div>
        <table class="table panel-table">
                <tr>
-                       <td>CodeMirror</td>
-                       <td><a href="http://codemirror.net/" target="_blank">codemirror.net</a></td>
+                       <td>Composer</td>
+                       <td><a href="https://getcomposer.org" target="_blank" rel="noopener noreferrer">getcomposer.org</a></td>
                </tr>
                <tr>
-                       <td>ExtJS</td>
-                       <td><a href="http://www.sencha.com/" target="_blank">www.sencha.com</a></td>
+                       <td>jQuery</td>
+                       <td><a href="https://jquery.com" target="_blank" rel="noopener noreferrer">jquery.com</a></td>
                </tr>
                <tr>
-                       <td>jQuery</td>
-                       <td><a href="http://jquery.com" target="_blank">jquery.com</a></td>
+                       <td>Twitter Bootstrap</td>
+                       <td><a href="http://getbootstrap.com" target="_blank" rel="noopener noreferrer">getbootstrap.com</a></td>
                </tr>
                <tr>
                        <td>Swift Mailer</td>
-                       <td><a href="http://swiftmailer.org" target="_blank">swiftmailer.org</a></td>
+                       <td><a href="http://swiftmailer.org" target="_blank" rel="noopener noreferrer">swiftmailer.org</a></td>
+               </tr>
+               <tr>
+                       <td>Doctrine Project (DBAL Component and Instantiator)</td>
+                       <td><a href="http://www.doctrine-project.org/projects/dbal.html" target="_blank" rel="noopener noreferrer">doctrine-project.org</a></td>
+               </tr>
+               <tr>
+                       <td>Symfony Framework (YAML, Console and Finder Component)</td>
+                       <td><a href="https://symfony.com" target="_blank" rel="noopener noreferrer">symfony.com</a></td>
+               </tr>
+               <tr>
+                       <td>Guzzle PHP</td>
+                       <td><a href="http://guzzlephp.org" target="_blank" rel="noopener noreferrer">guzzlephp.org</a></td>
+               </tr>
+               <tr>
+                       <td>d3 Data Driven Documents</td>
+                       <td><a href="https://d3js.org" target="_blank" rel="noopener noreferrer">d3js.org</a></td>
+               </tr>
+               <tr>
+                       <td>CKEditor</td>
+                       <td><a href="http://ckeditor.com" target="_blank" rel="noopener noreferrer">ckeditor.com</a></td>
+               </tr>
+               <tr>
+                       <td>RequireJS</td>
+                       <td><a href="http://requirejs.org" target="_blank" rel="noopener noreferrer">requirejs.org</a></td>
+               </tr>
+               <tr>
+                       <td>moment.js</td>
+                       <td><a href="https://momentjs.com" target="_blank" rel="noopener noreferrer">momentjs.com</a></td>
+               </tr>
+               <tr>
+                       <td>NProgress</td>
+                       <td><a href="http://ricostacruz.com/nprogress/" target="_blank" rel="noopener noreferrer">ricostacruz.com</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery UI</td>
+                       <td><a href="https://jqueryui.com" target="_blank" rel="noopener noreferrer">jqueryui.com</a></td>
+               </tr>
+               <tr>
+                       <td>Twitter Bootstrap Plugin: DateTimePicker</td>
+                       <td><a href="https://eonasdan.github.io/bootstrap-datetimepicker/" target="_blank" rel="noopener noreferrer">eonasdan.github.io</a></td>
+               </tr>
+               <tr>
+                       <td>Twitter Bootstrap Plugin: Slider</td>
+                       <td><a href="http://seiyria.com/bootstrap-slider/" target="_blank" rel="noopener noreferrer">seiyria.com</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: Ajax AutoComplete</td>
+                       <td><a href="https://www.devbridge.com/sourcery/components/jquery-autocomplete/" target="_blank" rel="noopener noreferrer">devbridge.com</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: Autosize</td>
+                       <td><a href="http://www.jacklmoore.com/autosize/" target="_blank" rel="noopener noreferrer">jacklmoore.com</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: Cropper</td>
+                       <td><a href="https://fengyuanchen.github.io/cropper/" target="_blank" rel="noopener noreferrer">fengyuanchen.github.io</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: DataTables</td>
+                       <td><a href="https://datatables.net" target="_blank" rel="noopener noreferrer">datatables.net</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: ImagesLoaded</td>
+                       <td><a href="http://imagesloaded.desandro.com" target="_blank" rel="noopener noreferrer">imagesloaded.desandro.com</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: MatchHeight</td>
+                       <td><a href="http://brm.io/jquery-match-height/" target="_blank" rel="noopener noreferrer">brm.io</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: MiniColors</td>
+                       <td><a href="http://labs.abeautifulsite.net/jquery-minicolors/" target="_blank" rel="noopener noreferrer">labs.abeautifulsite.net</a></td>
+               </tr>
+               <tr>
+                       <td>jQuery Plugin: Tab Override</td>
+                       <td><a href="http://wjbryant.github.io/taboverride/" target="_blank" rel="noopener noreferrer">wjbryant.github.io</a></td>
+               </tr>
+               <tr>
+                       <td>Neos (Form component)</td>
+                       <td><a href="https://www.neos.io" target="_blank" rel="noopener noreferrer">neos.io</a></td>
+               </tr>
+               <tr>
+                       <td>FineDiff</td>
+                       <td><a href="https://github.com/cogpowered/FineDiff" target="_blank" rel="noopener noreferrer">github.com</a></td>
+               </tr>
+               <tr>
+                       <td>IDNA Convert</td>
+                       <td><a href="https://idnaconv.net" target="_blank" rel="noopener noreferrer">idnaconv.net</a></td>
+               </tr>
+               <tr>
+                       <td>CodeMirror</td>
+                       <td><a href="http://codemirror.net" target="_blank" rel="noopener noreferrer">codemirror.net</a></td>
+               </tr>
+               <tr>
+                       <td>ExtJS</td>
+                       <td><a href="http://www.sencha.com" target="_blank" rel="noopener noreferrer">www.sencha.com</a></td>
                </tr>
        </table>
 </div>
index 619b44a..e893bbe 100644 (file)
@@ -1,8 +1,8 @@
 <img src="{f:uri.resource(path: 'Images/typo3-transparent@2x.png', extensionName: 'backend')}" width="150"
-       alt="{f:translate(key:'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf:typo3_logo')}" />
+       alt="{f:translate(key:'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf:typo3_logo')}" />
 <br>
 <br>
 <h1>
-       TYPO3 CMS {TYPO3Version}<br>
+       TYPO3 CMS {currentVersion}<br>
        <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_alt_intro.xlf:introtext" />
 </h1>
index 226e61e..99db929 100644 (file)
@@ -1,13 +1,10 @@
 <f:layout name="Default" />
 
 <f:section name="Content">
-       <div class="container-small">
-               <f:render partial="Logo" arguments="{_all}" />
                <f:render partial="About" arguments="{_all}" />
                <f:render partial="Donation" arguments="{_all}" />
                <f:render partial="Credits" arguments="{_all}" />
                <f:render partial="CoreTeam" arguments="{_all}" />
                <f:render partial="ExternalLibraries" arguments="{_all}" />
                <f:render partial="Extensions" arguments="{_all}" />
-       </div>
-</f:section>
\ No newline at end of file
+</f:section>
index 4e86b35..68b19d8 100644 (file)
@@ -1,8 +1,5 @@
 <f:layout name="Default" />
 <f:section name="Content">
-
-       <div class="container-small">
-               <f:render partial="Logo" arguments="{_all}" />
                <p>
                        <f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_alt_intro.xlf:introtext2" />
                </p>
@@ -58,6 +55,4 @@
                </f:for>
                <p><em class="text-muted"><f:translate key="LLL:EXT:lang/Resources/Private/Language/locallang_alt_intro.xlf:endText" /></em></p>
                <p>{copyRightNotice -> f:format.raw()}</p>
-       </div>
-
 </f:section>
diff --git a/typo3/sysext/about/Resources/Public/JavaScript/EqualHeight.js b/typo3/sysext/about/Resources/Public/JavaScript/EqualHeight.js
new file mode 100644 (file)
index 0000000..947da13
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * 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!
+ */
+
+/**
+ * Module: TYPO3/CMS/About/EqualHeight
+ * matchHeight makes the height of all selected elements exactly equal.
+ */
+define(['jquery', 'matchheight'], function($) {
+       'use strict';
+
+       $('.t3js-equalheight').matchHeight();
+
+});
index 8db305f..bc4c76f 100644 (file)
@@ -8,11 +8,13 @@ if (TYPO3_MODE === 'BE' && !(TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_INSTALL)) {
         'help',
         'about',
         'top',
-        ['About' => 'index'],
+        [
+            'About' => 'index'
+        ],
         [
             'access' => 'user,group',
             'icon' => 'EXT:about/Resources/Public/Icons/module-about.svg',
-            'labels' => 'LLL:EXT:lang/Resources/Private/Language/locallang_mod_help_about.xlf'
+            'labels' => 'LLL:EXT:about/Resources/Private/Language/Modules/about.xlf'
         ]
     );
 
diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js b/typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js
deleted file mode 100644 (file)
index 039747e..0000000
+++ /dev/null
@@ -1,23 +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!
- */
-
-/**
- * Module: TYPO3/CMS/Backend/EqualHeight
- * matchHeight makes the height of all selected elements exactly equal.
- */
-define(['jquery', 'matchheight'], function($) {
-       'use strict';
-
-       $('.t3js-equalheight').matchHeight();
-
-});
index 323c73e..03b908f 100644 (file)
@@ -94,7 +94,7 @@ class LocalizationFactory implements \TYPO3\CMS\Core\SingletonInterface
                 'lang/locallang_mod_admintools.xlf' => 'lang/Resources/Private/Language/locallang_mod_admintools.xlf',
                 'lang/locallang_mod_file_list.xlf' => 'lang/Resources/Private/Language/locallang_mod_file_list.xlf',
                 'lang/locallang_mod_file.xlf' => 'lang/Resources/Private/Language/locallang_mod_file.xlf',
-                'lang/locallang_mod_help_about.xlf' => 'lang/Resources/Private/Language/locallang_mod_help_about.xlf',
+                'lang/locallang_mod_help_about.xlf' => 'about/Resources/Private/Language/Modules/about.xlf',
                 'lang/locallang_mod_help_cshmanual.xlf' => 'lang/Resources/Private/Language/locallang_mod_help_cshmanual.xlf',
                 'lang/locallang_mod_help.xlf' => 'lang/Resources/Private/Language/locallang_mod_help.xlf',
                 'lang/locallang_mod_system.xlf' => 'lang/Resources/Private/Language/locallang_mod_system.xlf',
index 4bae3da..067d574 100644 (file)
@@ -913,6 +913,7 @@ class PackageManager implements \TYPO3\CMS\Core\SingletonInterface
         $this->setComposerManifestValueIfEmpty($composerManifest, 'name', $packageKey);
         $this->setComposerManifestValueIfEmpty($composerManifest, 'type', 'typo3-cms-extension');
         $this->setComposerManifestValueIfEmpty($composerManifest, 'description', $extensionManagerConfiguration['title']);
+        $this->setComposerManifestValueIfEmpty($composerManifest, 'authors', [['name' => $extensionManagerConfiguration['author'], 'email' => $extensionManagerConfiguration['author_email']]]);
         $composerManifest->version = $extensionManagerConfiguration['version'];
         if (isset($extensionManagerConfiguration['constraints']['depends']) && is_array($extensionManagerConfiguration['constraints']['depends'])) {
             $composerManifest->require = new \stdClass();
diff --git a/typo3/sysext/lang/Resources/Private/Language/locallang_mod_help_about.xlf b/typo3/sysext/lang/Resources/Private/Language/locallang_mod_help_about.xlf
deleted file mode 100644 (file)
index 48bdcd9..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415814871" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:34Z" product-name="lang">
-               <header/>
-               <body>
-                       <trans-unit id="title">
-                               <source>About TYPO3 CMS</source>
-                       </trans-unit>
-                       <trans-unit id="typo3_logo">
-                               <source>TYPO3 CMS logo</source>
-                       </trans-unit>
-                       <trans-unit id="information">
-                               <source>TYPO3 Information</source>
-                       </trans-unit>
-                       <trans-unit id="welcome">
-                               <source>TYPO3 CMS - Professional Web Content Management System</source>
-                       </trans-unit>
-                       <trans-unit id="minor">
-                               <source>TYPO3 CMS is an enterprise-class, Open Source Content Management System, used internationally to build and manage websites of all types, from small sites for non-profits to multilingual enterprise solutions for large corporations.&lt;br /&gt;&lt;br /&gt;For further information visit &lt;a href="https://typo3.org/typo3-cms/" target="_blank"&gt;typo3.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;TYPO3 CMS is &lt;b&gt;freely available&lt;/b&gt; under the &lt;a href="https://typo3.org/typo3-cms/overview/licenses/" target="_blank"&gt;TYPO3-license (GNU/GPL)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You are using %s %s</source>
-                       </trans-unit>
-                       <trans-unit id="cms_description">
-                               <source>TYPO3 CMS is an enterprise-class, Open Source Content Management System, used internationally to build and manage websites of all types, from small sites for non-profits to multilingual enterprise solutions for large corporations.&lt;br /&gt;&lt;br /&gt;For further information visit &lt;a href="https://typo3.org/typo3-cms/" target="_blank"&gt;typo3.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;TYPO3 CMS is &lt;b&gt;freely available&lt;/b&gt; under the &lt;a href="https://typo3.org/typo3-cms/overview/licenses/" target="_blank"&gt;TYPO3-license (GNU/GPL)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You are using version %s - Copyright %s %s</source>
-                       </trans-unit>
-                       <trans-unit id="community_credits">
-                               <source>Community Credits</source>
-                       </trans-unit>
-                       <trans-unit id="information_detail">
-                               <source>Visit &lt;a href="https://typo3.org/community/" target="_blank"&gt;typo3.org/community/&lt;/a&gt; if you want to know why TYPO3 rocks.</source>
-                       </trans-unit>
-                       <trans-unit id="coredevs">
-                               <source>Core Team</source>
-                       </trans-unit>
-                       <trans-unit id="coredevs_detail">
-                               <source>Visit &lt;a href="https://typo3.org/teams-committees/core-development/" target="_blank"&gt;typo3.org/teams-committees/core-development/&lt;/a&gt; for the complete member list.&lt;br /&gt;&lt;br /&gt;The Git Repository and the ChangeLog can be found &lt;a href="https://forge.typo3.org/projects/typo3cms-core/" target="_blank"&gt;here&lt;/a&gt;.</source>
-                       </trans-unit>
-                       <trans-unit id="extension_authors">
-                               <source>Extension Authors</source>
-                       </trans-unit>
-                       <trans-unit id="extension_list_info">
-                               <source>This is a list of the people who contributed to the extensions you're using in your installation.</source>
-                       </trans-unit>
-                       <trans-unit id="extension">
-                               <source>Extension</source>
-                       </trans-unit>
-                       <trans-unit id="extension_author">
-                               <source>Author</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_labels_tablabel">
-                               <source>About TYPO3 CMS</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_labels_tabdescr">
-                               <source>Displays the basic facts about the TYPO3 application, version and licensing terms.</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_tabs_tab">
-                               <source>About TYPO3 CMS</source>
-                       </trans-unit>
-                       <trans-unit id="donation_header">
-                               <source>TYPO3 Donation</source>
-                       </trans-unit>
-                       <trans-unit id="donation_message">
-                               <source>It would be great if you could donate. TYPO3 CMS is Open Source and relies heavily on donations from its users and supporters.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Thank you&lt;/b&gt; for making this great Content Management System even better with your support!</source>
-                       </trans-unit>
-                       <trans-unit id="donation_button">
-                               <source>Donate now</source>
-                       </trans-unit>
-                       <trans-unit id="external_libraries">
-                               <source>External Libraries</source>
-                       </trans-unit>
-                       <trans-unit id="external_thanks">
-                               <source>TYPO3 CMS core uses and thanks these external Open Source projects:</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>