From dda293ecc546b1ddba8713627589f8207afd9e8b Mon Sep 17 00:00:00 2001 From: Benni Mack <benni@typo3.org> Date: Wed, 22 Feb 2017 08:38:47 +0100 Subject: [PATCH] [CLEANUP] Streamline EXT:about 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> --- .../Classes/Controller/AboutController.php | 21 ++-- .../Classes/Controller/ModulesController.php | 5 +- .../about/Classes/Domain/Model/Extension.php | 41 ++----- .../Domain/Repository/ExtensionRepository.php | 25 ++-- .../Private/Language/Modules/about.xlf} | 20 +-- .../Private/Language/Modules/aboutmodules.xlf | 2 +- .../Resources/Private/Layouts/Default.html | 5 +- .../Resources/Private/Partials/About.html | 6 +- .../Resources/Private/Partials/CoreTeam.html | 4 +- .../Resources/Private/Partials/Credits.html | 4 +- .../Resources/Private/Partials/Donation.html | 8 +- .../Private/Partials/Extensions.html | 30 +++-- .../Private/Partials/ExternalLibraries.html | 114 ++++++++++++++++-- .../Resources/Private/Partials/Logo.html | 4 +- .../Private/Templates/About/Index.html | 5 +- .../Private/Templates/Modules/Index.html | 5 - .../Public/JavaScript/EqualHeight.js | 2 +- typo3/sysext/about/ext_tables.php | 6 +- .../Localization/LocalizationFactory.php | 2 +- .../core/Classes/Package/PackageManager.php | 1 + 20 files changed, 196 insertions(+), 114 deletions(-) rename typo3/sysext/{lang/Resources/Private/Language/locallang_mod_help_about.xlf => about/Resources/Private/Language/Modules/about.xlf} (99%) rename typo3/sysext/{backend => about}/Resources/Public/JavaScript/EqualHeight.js (93%) diff --git a/typo3/sysext/about/Classes/Controller/AboutController.php b/typo3/sysext/about/Classes/Controller/AboutController.php index 1732c6b51c84..8525af808b0e 100644 --- a/typo3/sysext/about/Classes/Controller/AboutController.php +++ b/typo3/sysext/about/Classes/Controller/AboutController.php @@ -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()); } } diff --git a/typo3/sysext/about/Classes/Controller/ModulesController.php b/typo3/sysext/about/Classes/Controller/ModulesController.php index 63fe527c657f..94853b5bfbfb 100644 --- a/typo3/sysext/about/Classes/Controller/ModulesController.php +++ b/typo3/sysext/about/Classes/Controller/ModulesController.php @@ -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'), diff --git a/typo3/sysext/about/Classes/Domain/Model/Extension.php b/typo3/sysext/about/Classes/Domain/Model/Extension.php index 7703bcb452e7..8ee86fad1655 100644 --- a/typo3/sysext/about/Classes/Domain/Model/Extension.php +++ b/typo3/sysext/about/Classes/Domain/Model/Extension.php @@ -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; } /** diff --git a/typo3/sysext/about/Classes/Domain/Repository/ExtensionRepository.php b/typo3/sysext/about/Classes/Domain/Repository/ExtensionRepository.php index 8d7ee75b89b1..78f074fcbcc8 100644 --- a/typo3/sysext/about/Classes/Domain/Repository/ExtensionRepository.php +++ b/typo3/sysext/about/Classes/Domain/Repository/ExtensionRepository.php @@ -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/lang/Resources/Private/Language/locallang_mod_help_about.xlf b/typo3/sysext/about/Resources/Private/Language/Modules/about.xlf similarity index 99% rename from typo3/sysext/lang/Resources/Private/Language/locallang_mod_help_about.xlf rename to typo3/sysext/about/Resources/Private/Language/Modules/about.xlf index 48bdcd967510..d90418fc26c6 100644 --- a/typo3/sysext/lang/Resources/Private/Language/locallang_mod_help_about.xlf +++ b/typo3/sysext/about/Resources/Private/Language/Modules/about.xlf @@ -1,8 +1,17 @@ <?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"> + <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> @@ -45,15 +54,6 @@ <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> diff --git a/typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf b/typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf index 436125058b08..5381a6fbf44a 100644 --- a/typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf +++ b/typo3/sysext/about/Resources/Private/Language/Modules/aboutmodules.xlf @@ -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"> diff --git a/typo3/sysext/about/Resources/Private/Layouts/Default.html b/typo3/sysext/about/Resources/Private/Layouts/Default.html index 24f730cfebcc..e7071e60d72c 100644 --- a/typo3/sysext/about/Resources/Private/Layouts/Default.html +++ b/typo3/sysext/about/Resources/Private/Layouts/Default.html @@ -1 +1,4 @@ -<f:render section="Content" /> +<div class="container-small"> + <f:render partial="Logo" arguments="{_all}" /> + <f:render section="Content" /> +</div> diff --git a/typo3/sysext/about/Resources/Private/Partials/About.html b/typo3/sysext/about/Resources/Private/Partials/About.html index f8b250ca3167..11eae02f9cef 100644 --- a/typo3/sysext/about/Resources/Private/Partials/About.html +++ b/typo3/sysext/about/Resources/Private/Partials/About.html @@ -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: "© {TYPO3CopyrightYear}", + 0: currentVersion, + 1: "© {copyrightYear}", 2: "Kasper Skårhøj" }') -> f:format.raw()} </p> diff --git a/typo3/sysext/about/Resources/Private/Partials/CoreTeam.html b/typo3/sysext/about/Resources/Private/Partials/CoreTeam.html index da4ca7c1ebf0..5deef90482f3 100644 --- a/typo3/sysext/about/Resources/Private/Partials/CoreTeam.html +++ b/typo3/sysext/about/Resources/Private/Partials/CoreTeam.html @@ -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> diff --git a/typo3/sysext/about/Resources/Private/Partials/Credits.html b/typo3/sysext/about/Resources/Private/Partials/Credits.html index 046720382a33..b10298b84053 100644 --- a/typo3/sysext/about/Resources/Private/Partials/Credits.html +++ b/typo3/sysext/about/Resources/Private/Partials/Credits.html @@ -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> diff --git a/typo3/sysext/about/Resources/Private/Partials/Donation.html b/typo3/sysext/about/Resources/Private/Partials/Donation.html index 820dc66a91ed..27516ee2c099 100644 --- a/typo3/sysext/about/Resources/Private/Partials/Donation.html +++ b/typo3/sysext/about/Resources/Private/Partials/Donation.html @@ -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> diff --git a/typo3/sysext/about/Resources/Private/Partials/Extensions.html b/typo3/sysext/about/Resources/Private/Partials/Extensions.html index 99368b660524..9282ffb35f72 100644 --- a/typo3/sysext/about/Resources/Private/Partials/Extensions.html +++ b/typo3/sysext/about/Resources/Private/Partials/Extensions.html @@ -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> @@ -22,11 +22,23 @@ {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> diff --git a/typo3/sysext/about/Resources/Private/Partials/ExternalLibraries.html b/typo3/sysext/about/Resources/Private/Partials/ExternalLibraries.html index 65048bb761ac..c94950f9b104 100644 --- a/typo3/sysext/about/Resources/Private/Partials/ExternalLibraries.html +++ b/typo3/sysext/about/Resources/Private/Partials/ExternalLibraries.html @@ -1,28 +1,124 @@ <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> diff --git a/typo3/sysext/about/Resources/Private/Partials/Logo.html b/typo3/sysext/about/Resources/Private/Partials/Logo.html index 619b44a0496b..e893bbe515c8 100644 --- a/typo3/sysext/about/Resources/Private/Partials/Logo.html +++ b/typo3/sysext/about/Resources/Private/Partials/Logo.html @@ -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> diff --git a/typo3/sysext/about/Resources/Private/Templates/About/Index.html b/typo3/sysext/about/Resources/Private/Templates/About/Index.html index 226e61ebd635..99db92990d67 100644 --- a/typo3/sysext/about/Resources/Private/Templates/About/Index.html +++ b/typo3/sysext/about/Resources/Private/Templates/About/Index.html @@ -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> diff --git a/typo3/sysext/about/Resources/Private/Templates/Modules/Index.html b/typo3/sysext/about/Resources/Private/Templates/Modules/Index.html index 4e86b35383a3..68b19d8131cc 100644 --- a/typo3/sysext/about/Resources/Private/Templates/Modules/Index.html +++ b/typo3/sysext/about/Resources/Private/Templates/Modules/Index.html @@ -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/backend/Resources/Public/JavaScript/EqualHeight.js b/typo3/sysext/about/Resources/Public/JavaScript/EqualHeight.js similarity index 93% rename from typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js rename to typo3/sysext/about/Resources/Public/JavaScript/EqualHeight.js index 039747e2e967..947da137e4e2 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js +++ b/typo3/sysext/about/Resources/Public/JavaScript/EqualHeight.js @@ -12,7 +12,7 @@ */ /** - * Module: TYPO3/CMS/Backend/EqualHeight + * Module: TYPO3/CMS/About/EqualHeight * matchHeight makes the height of all selected elements exactly equal. */ define(['jquery', 'matchheight'], function($) { diff --git a/typo3/sysext/about/ext_tables.php b/typo3/sysext/about/ext_tables.php index 8db305f1c8f5..bc4c76f13ce9 100644 --- a/typo3/sysext/about/ext_tables.php +++ b/typo3/sysext/about/ext_tables.php @@ -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/core/Classes/Localization/LocalizationFactory.php b/typo3/sysext/core/Classes/Localization/LocalizationFactory.php index 323c73ec7369..03b908f6183f 100644 --- a/typo3/sysext/core/Classes/Localization/LocalizationFactory.php +++ b/typo3/sysext/core/Classes/Localization/LocalizationFactory.php @@ -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', diff --git a/typo3/sysext/core/Classes/Package/PackageManager.php b/typo3/sysext/core/Classes/Package/PackageManager.php index 4bae3daeed1c..067d574d8a18 100644 --- a/typo3/sysext/core/Classes/Package/PackageManager.php +++ b/typo3/sysext/core/Classes/Package/PackageManager.php @@ -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(); -- GitLab