[TASK] Streamline about modules and about 68/47668/3
authorBenjamin Kott <benjamin.kott@wfp2.com>
Thu, 14 Apr 2016 15:05:26 +0000 (17:05 +0200)
committerBenni Mack <benni@typo3.org>
Thu, 14 Apr 2016 15:42:48 +0000 (17:42 +0200)
Releases: master
Resolves: #75619
Change-Id: I36e2bdba2baf931726797cbe89a0f10e0519eaba
Reviewed-on: https://review.typo3.org/47668
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
23 files changed:
Build/Gruntfile.js
Build/Resources/Public/Less/Component/module.less
Build/Resources/Public/Less/Component/panel.less
Build/bower.json
typo3/sysext/about/Classes/Controller/ModulesController.php
typo3/sysext/about/Resources/Private/Layouts/Default.html
typo3/sysext/about/Resources/Private/Less/styles.less [deleted file]
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/Css/styles.css [deleted file]
typo3/sysext/about/Resources/Public/Images/donate_teaser.png [deleted file]
typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js [new file with mode: 0644]
typo3/sysext/core/Classes/Page/PageRenderer.php
typo3/sysext/core/Resources/Public/JavaScript/Contrib/jquery.matchHeight-min.js [new file with mode: 0644]
typo3/sysext/install/Resources/Public/Css/InstallTool.css
typo3/sysext/t3skin/Resources/Public/Css/backend.css

index 12d737d..50d20c3 100644 (file)
@@ -144,6 +144,7 @@ module.exports = function(grunt) {
                                },
                                files: {
                                        'nprogress.js': 'nprogress/nprogress.js',
+                                       'jquery.matchHeight-min.js': 'matchHeight/jquery.matchHeight-min.js',
                                        'jquery.dataTables.js': 'datatables/media/js/jquery.dataTables.min.js',
                                        'require.js': 'requirejs/require.js',
                                        'moment.js': 'moment/moment.js',
index 1bc7e04..ce64d25 100644 (file)
        > .callout:first-child {
                margin-top: 0;
        }
+       > .container {
+               padding-left: 0;
+               padding-right: 0;
+       }
+       .container-small {
+               max-width: 768px;
+       }
 }
 .module-docheader + .module-body {
        padding-top: @module-docheader-height + @module-body-padding-vertical;
index 9145c4a..3e4f340 100644 (file)
 @panel-active-heading-bg:    #666;
 
 //
+// Panel
+//
+.panel {
+       display: block;
+       &:hover,
+       &:focus {
+               text-decoration: none;
+       }
+}
+
+//
 // Heading
 //
 .panel-heading {
 // Body
 //
 .panel-body {
+       > *:first-child {
+               margin-top: 0;
+       }
        > *:last-child {
                margin-bottom: 0;
        }
 }
+// @TODO workaround to make links visible
+.panel-body-highlightlinks {
+       > p > a {
+               text-decoration: underline;
+       }
+}
+
+//
+// Table
+//
+.panel-table {
+       th:first-child,
+       td:first-child {
+               padding-left: @panel-body-padding;
+       }
+       th:last-child,
+       td:last-child {
+               padding-right: @panel-body-padding;
+       }
+}
 
 //
 // Additional Variations
index fe67ebf..2cb60e8 100644 (file)
     "nprogress": "0.2.0",
     "datatables": "1.10.11",
     "autosize": "3.0.15",
-       "cropper": "2.3.0",
+    "cropper": "2.3.0",
     "imagesloaded": "4.1.0",
     "taboverride": "4.0.3",
     "seiyria-bootstrap-slider": "6.1.2",
     "devbridge-autocomplete": "1.2.24",
     "region-flags": "*",
-    "wmdbsystems-typo3-icons": "0.0.10"
+    "wmdbsystems-typo3-icons": "0.0.10",
+    "matchHeight": "matchheight#^0.7.0"
   }
 }
index 6ca2295..f82e988 100644 (file)
@@ -63,6 +63,7 @@ class ModulesController extends ActionController
         parent::initializeView($view);
         // Disable Path
         $view->getModuleTemplate()->getDocHeaderComponent()->setMetaInformation([]);
+        $view->getModuleTemplate()->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/EqualHeight');
     }
 
     /**
index 15f21e6..24f730c 100644 (file)
@@ -1,2 +1 @@
-<f:be.pageRenderer includeCssFiles="{0: '{f:uri.resource(path:\'Css/styles.css\')}'}" />
 <f:render section="Content" />
diff --git a/typo3/sysext/about/Resources/Private/Less/styles.less b/typo3/sysext/about/Resources/Private/Less/styles.less
deleted file mode 100644 (file)
index 13b6ef3..0000000
+++ /dev/null
@@ -1,70 +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
-- - - - - - - - - - - - - - - - - - - - - */
-
-#typo3-mod-help-about-index-php-outer {
-       padding: 15px;
-       margin: 0 auto;
-       max-width: 600px;
-
-       > div {
-               margin: 10px auto 20px;
-               padding: 1em;
-               border: 1px solid #adadad;
-
-               h2 {
-                       margin-top: 0;
-               }
-       }
-
-       #donation-description {
-               background-image: url("../Images/donate_teaser.png");
-               background-repeat: no-repeat;
-               padding-left: 60px;
-               margin: 10px 0;
-       }
-
-       a {
-               color: black;
-               text-decoration: underline;
-       }
-}
-
-
-/* - - - - - - - - - - - - - - - - - - - - -
-Help > About modules
-- - - - - - - - - - - - - - - - - - - - - */
-
-.typo3-aboutmodules-inner-docbody {
-
-       a {
-               text-decoration: underline;
-       }
-
-       .end-text {
-               padding-top: 3em;
-       }
-
-       h2 {
-               margin-bottom: 1em;
-       }
-
-       .submodule {
-               padding-bottom: 3em;
-       }
-}
-
-
index 6b38380..919ff95 100644 (file)
@@ -1,16 +1,13 @@
-<div>
-       <h1>
-               <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:welcome" />
-       </h1>
-       <p>
-               <f:translate
-                       key="LLL:EXT:lang/locallang_mod_help_about.xlf:cms_description"
-                       arguments="{
-                               0: '{TYPO3Version}',
-                               1: '&copy; {TYPO3CopyrightYear}',
-                               2: 'Kasper Sk&aring;rh&oslash;j'
-                       }"
-                       htmlEscape="0"
-               />
-       </p>
-</div>
\ No newline at end of file
+<p>
+       <f:translate
+               key="LLL:EXT:lang/locallang_mod_help_about.xlf:cms_description"
+               arguments="{
+                       0: '{TYPO3Version}',
+                       1: '&copy; {TYPO3CopyrightYear}',
+                       2: 'Kasper Sk&aring;rh&oslash;j'
+               }"
+               htmlEscape="0"
+       />
+</p>
+<br>
+<br>
index 370d71e..5802a9e 100644 (file)
@@ -1,11 +1,13 @@
-<div>
-       <h2>
-               <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:coredevs" />
-       </h2>
-       <p>
-               <f:translate
-                       key="LLL:EXT:lang/locallang_mod_help_about.xlf:coredevs_detail"
-                       htmlEscape="0"
-               />
-       </p>
+<div class="panel panel-default">
+       <div class="panel-body panel-body-highlightlinks">
+               <h2 class="h4">
+                       <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:coredevs" />
+               </h2>
+               <p>
+                       <f:translate
+                               key="LLL:EXT:lang/locallang_mod_help_about.xlf:coredevs_detail"
+                               htmlEscape="0"
+                       />
+               </p>
+       </div>
 </div>
index b3eca2d..ead989d 100644 (file)
@@ -1,14 +1,16 @@
-<div>
-       <h2>
-               <f:translate
-                       key="LLL:EXT:lang/locallang_mod_help_about.xlf:community_credits"
-                       htmlEscape="0"
-               />
-       </h2>
-       <p>
-               <f:translate
-                       key="LLL:EXT:lang/locallang_mod_help_about.xlf:information_detail"
-                       htmlEscape="0"
-               />
-       </p>
+<div class="panel panel-default">
+       <div class="panel-body panel-body-highlightlinks">
+               <h2 class="h4">
+                       <f:translate
+                               key="LLL:EXT:lang/locallang_mod_help_about.xlf:community_credits"
+                               htmlEscape="0"
+                       />
+               </h2>
+               <p>
+                       <f:translate
+                               key="LLL:EXT:lang/locallang_mod_help_about.xlf:information_detail"
+                               htmlEscape="0"
+                       />
+               </p>
+       </div>
 </div>
index f65b66d..475abaf 100644 (file)
@@ -1,20 +1,16 @@
-<div>
-       <h2>
-               <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:donation_header" />
-       </h2>
-
-       <p id="donation-description">
-               <f:translate
-                       key="LLL:EXT:lang/locallang_mod_help_about.xlf:donation_message"
-                       htmlEscape="0"
-               />
-       </p>
-
-       <p class="text-right">
-               <button
-                       class="btn btn-large"
-                       onclick="window.open('{TYPO3UrlDonate}');"
-               ><f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:donation_button" /></button>
-       </p>
-
-</div>
\ No newline at end of file
+<div class="panel panel-default">
+       <div class="panel-body panel-body-highlightlinks">
+               <h2 class="h4">
+                       <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:donation_header" />
+               </h2>
+               <p>
+                       <f:translate
+                               key="LLL:EXT:lang/locallang_mod_help_about.xlf:donation_message"
+                               htmlEscape="0"
+                       />
+               </p>
+               <a href="{TYPO3UrlDonate}" class="btn btn-default" title="{f:translate(key:'LLL:EXT:lang/locallang_mod_help_about.xlf:donation_button')}" target="_blank">
+                       <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:donation_button" />
+               </a>
+       </div>
+</div>
index fadcf31..21dee19 100644 (file)
@@ -1,32 +1,36 @@
 <f:if condition="{loadedExtensions}">
-       <div>
-               <h2>
-                       <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension_authors" />
-               </h2>
-               <p>
-                       <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension_list_info" />
-               </p>
-               <br/>
-               <table border="0" cellspacing="2" cellpadding="1">
-                       <tr>
-                               <th><f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension" /></th>
-                               <th><f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension_author" /></th>
-                       </tr>
-
-                       <f:for each="{loadedExtensions}" as="loadedExtension">
+       <div class="panel panel-default">
+               <div class="panel-body panel-body-highlightlinks">
+                       <h2 class="h3">
+                               <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension_authors" />
+                       </h2>
+                       <p>
+                               <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension_list_info" />
+                       </p>
+               </div>
+               <table class="table panel-table">
+                       <thead>
                                <tr>
-                                       <td width="280">
-                                               {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>
-                                       </td>
+                                       <th width="35%"><f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension" /></th>
+                                       <th><f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:extension_author" /></th>
                                </tr>
-                       </f:for>
+                       </thead>
+                       <tbody>
+                               <f:for each="{loadedExtensions}" as="loadedExtension">
+                                       <tr>
+                                               <td>
+                                                       {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>
+                                               </td>
+                                       </tr>
+                               </f:for>
+                       </tbody>
                </table>
        </div>
 </f:if>
index 355d8db..59de7bf 100644 (file)
@@ -1,17 +1,18 @@
-<div>
-       <h2>
-               <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:external_libraries" />
-       </h2>
-       <p>
-               <f:translate
-                       key="LLL:EXT:lang/locallang_mod_help_about.xlf:external_thanks"
-                       htmlEscape="0"
-               />
-       </p>
-       <br />
-       <table border="0" cellspacing="2" cellpadding="1">
+<div class="panel panel-default">
+       <div class="panel-body panel-body-highlightlinks">
+               <h2 class="h3">
+                       <f:translate key="LLL:EXT:lang/locallang_mod_help_about.xlf:external_libraries" />
+               </h2>
+               <p>
+                       <f:translate
+                               key="LLL:EXT:lang/locallang_mod_help_about.xlf:external_thanks"
+                               htmlEscape="0"
+                       />
+               </p>
+       </div>
+       <table class="table panel-table">
                <tr>
-                       <td width="280">Audio player Plugin</td>
+                       <td width="35%">Audio player Plugin</td>
                        <td><a href="http://www.1pixelout.net/code/audio-player-wordpress-plugin/" target="_blank">www.1pixelout.net</a></td>
                </tr>
                <tr>
index 45fc2c4..fb99937 100644 (file)
@@ -1,3 +1,8 @@
 <img src="{f:uri.resource(path: 'Images/typo3-transparent@2x.png', extensionName: 'backend')}" width="150"
        alt="{f:translate(key:'LLL:EXT:lang/locallang_mod_help_about.xlf:typo3_logo')}" />
-<br><br>
+<br>
+<br>
+<h1>
+       TYPO3 CMS {TYPO3Version}<br>
+       <f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:introtext" />
+</h1>
index 231e8c3..fa438b4 100644 (file)
@@ -1,7 +1,7 @@
 <f:layout name="Default" />
 
 <f:section name="Content">
-       <div id="typo3-mod-help-about-index-php-outer">
+       <div class="container container-small">
                <f:render partial="Logo" arguments="{_all}" />
                <f:render partial="About" arguments="{_all}" />
                <f:render partial="Donation" arguments="{_all}" />
index 8725142..5bbdd19 100644 (file)
@@ -1,90 +1,64 @@
 {namespace core = TYPO3\CMS\Core\ViewHelpers}
-
 <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">
+       <div class="container container-small">
+               <f:render partial="Logo" arguments="{_all}" />
+               <p>
                        <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}">
                                <f:if condition="{mainModule.label}">
                                        <h2>{f:translate(key: mainModule.label)}</h2>
                                </f:if>
-                               <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="{f:if(condition: subModule.shortDescription, then: '{f:translate(key: subModule.shortDescription)}')}"
-                                                                               class="pull-left"
-                                                                       >
-                                                                               <span class="typo3-app-icon media-object" title="{f:if(condition: subModule.label, then: '{f:translate(key: subModule.label)}')}">
-                                                                                       <span>
-                                                                                               <span>
-                                                                                                       <core:icon identifier="{subModule.iconIdentifier}" size="default" />
-                                                                                               </span>
+                               <div class="row">
+                                       <f:for each="{mainModule.subModules}" as="subModule" iteration="subModuleIterator">
+                                               <div class="col-xs-12 col-sm-6">
+                                                       <a
+                                                               href="#"
+                                                               onclick="top.goToModule('{mainModule.name}_{subModule.name}'); return false;"
+                                                               title="{f:if(condition: subModule.shortDescription, then: '{f:translate(key: subModule.shortDescription)}')}"
+                                                               class="panel panel-default t3js-equalheight"
+                                                       >
+                                                               <div class="panel-body">
+                                                                       <div class="media">
+                                                                               <div class="media-left">
+                                                                                       <span class="media-object" title="{f:if(condition: subModule.label, then: '{f:translate(key: subModule.label)}')}">
+                                                                                               <core:icon identifier="{subModule.iconIdentifier}" size="default" />
                                                                                        </span>
-                                                                               </span>
-                                                                       </a>
-
-                                                                       <div class="media-body">
-                                                                               <f:if condition="{subModule.label}">
-                                                                                       <strong>
-                                                                                               <a
-                                                                                                       href="#"
-                                                                                                       onclick="top.goToModule('{mainModule.name}_{subModule.name}'); return false;"
-                                                                                                       title="{f:if(condition: subModule.shortDescription, then: '{f:translate(key: subModule.shortDescription)}')}"
-                                                                                               >{f:translate(key: subModule.label)}</a>
-                                                                                       </strong><br>
-                                                                               </f:if>
-
-                                                                               <f:if condition="{subModule.shortDescription}">
-                                                                                       <small class="text-muted"><f:translate key="{subModule.shortDescription}" /></small><br>
-                                                                               </f:if>
-
-                                                                               <f:if condition="{subModule.longDescription}">
-                                                                                       {f:translate(key: subModule.longDescription) -> f:format.raw()}
-                                                                               </f:if>
+                                                                               </div>
+                                                                               <div class="media-body">
+                                                                                       <f:if condition="{subModule.label}">
+                                                                                               <h3 class="h4 media-heading">
+                                                                                                       {f:translate(key: subModule.label)}
+                                                                                                       <f:if condition="{subModule.shortDescription}">
+                                                                                                               <br><small class="text-muted"><f:translate key="{subModule.shortDescription}" /></small><br>
+                                                                                                       </f:if>
+                                                                                               </h3>
+                                                                                       </f:if>
+                                                                                       <f:if condition="{subModule.longDescription}">
+                                                                                               {f:translate(key: subModule.longDescription) -> f:format.raw()}
+                                                                                       </f:if>
+                                                                               </div>
                                                                        </div>
                                                                </div>
-                                                       </div>
-
-                                                       <f:if condition="{subModuleIterator.isEven}">
-                                                               <f:if condition="{subModuleIterator.isLast} == 0">
-                                                                       </div><div class="row">
-                                                               </f:if>
+                                                       </a>
+                                               </div>
+                                               <f:if condition="{subModuleIterator.isEven}">
+                                                       <f:if condition="{subModuleIterator.isLast} == 0">
+                                                               </div><div class="row">
                                                        </f:if>
-                                               </f:for>
-                                       </div>
+                                               </f:if>
+                                       </f:for>
                                </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>
-
+               <p><em class="text-muted"><f:translate key="LLL:EXT:lang/locallang_alt_intro.xlf:endText" /></em></p>
+               <p>{copyRightNotice -> f:format.raw()}</p>
        </div>
+
 </f:section>
diff --git a/typo3/sysext/about/Resources/Public/Css/styles.css b/typo3/sysext/about/Resources/Public/Css/styles.css
deleted file mode 100644 (file)
index fc677b3..0000000
+++ /dev/null
@@ -1,53 +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
-- - - - - - - - - - - - - - - - - - - - - */
-#typo3-mod-help-about-index-php-outer {
-  padding: 15px;
-  margin: 0 auto;
-  max-width: 600px;
-}
-#typo3-mod-help-about-index-php-outer > div {
-  margin: 10px auto 20px;
-  padding: 1em;
-  border: 1px solid #adadad;
-}
-#typo3-mod-help-about-index-php-outer > div h2 {
-  margin-top: 0;
-}
-#typo3-mod-help-about-index-php-outer #donation-description {
-  background-image: url("../Images/donate_teaser.png");
-  background-repeat: no-repeat;
-  padding-left: 60px;
-  margin: 10px 0;
-}
-#typo3-mod-help-about-index-php-outer a {
-  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/Images/donate_teaser.png b/typo3/sysext/about/Resources/Public/Images/donate_teaser.png
deleted file mode 100644 (file)
index e528d5b..0000000
Binary files a/typo3/sysext/about/Resources/Public/Images/donate_teaser.png and /dev/null differ
diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js b/typo3/sysext/backend/Resources/Public/JavaScript/EqualHeight.js
new file mode 100644 (file)
index 0000000..039747e
--- /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/Backend/EqualHeight
+ * matchHeight makes the height of all selected elements exactly equal.
+ */
+define(['jquery', 'matchheight'], function($) {
+       'use strict';
+
+       $('.t3js-equalheight').matchHeight();
+
+});
index ada7c1c..2f0373c 100644 (file)
@@ -1550,6 +1550,7 @@ class PageRenderer implements \TYPO3\CMS\Core\SingletonInterface
             $this->requireJsConfig['paths'] = array(
                 'jquery-ui' => $corePath . 'jquery-ui',
                 'datatables' => $corePath . 'jquery.dataTables',
+                'matchheight' => $corePath . 'jquery.matchHeight-min',
                 'nprogress' => $corePath . 'nprogress',
                 'moment' => $corePath . 'moment',
                 'cropper' => $corePath . 'cropper.min',
diff --git a/typo3/sysext/core/Resources/Public/JavaScript/Contrib/jquery.matchHeight-min.js b/typo3/sysext/core/Resources/Public/JavaScript/Contrib/jquery.matchHeight-min.js
new file mode 100644 (file)
index 0000000..9b18871
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+* jquery-match-height master by @liabru
+* http://brm.io/jquery-match-height/
+* License MIT
+*/
+!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){var e=-1,o=-1,a=function(t){return parseFloat(t)||0},i=function(e){var o=1,i=t(e),n=null,r=[];return i.each(function(){var e=t(this),i=e.offset().top-a(e.css("margin-top")),s=r.length>0?r[r.length-1]:null;null===s?r.push(e):Math.floor(Math.abs(n-i))<=o?r[r.length-1]=s.add(e):r.push(e),n=i}),r},n=function(e){var o={
+byRow:!0,property:"height",target:null,remove:!1};return"object"==typeof e?t.extend(o,e):("boolean"==typeof e?o.byRow=e:"remove"===e&&(o.remove=!0),o)},r=t.fn.matchHeight=function(e){var o=n(e);if(o.remove){var a=this;return this.css(o.property,""),t.each(r._groups,function(t,e){e.elements=e.elements.not(a)}),this}return this.length<=1&&!o.target?this:(r._groups.push({elements:this,options:o}),r._apply(this,o),this)};r.version="master",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null,
+r._afterUpdate=null,r._rows=i,r._parse=a,r._parseOptions=n,r._apply=function(e,o){var s=n(o),h=t(e),l=[h],c=t(window).scrollTop(),p=t("html").outerHeight(!0),d=h.parents().filter(":hidden");return d.each(function(){var e=t(this);e.data("style-cache",e.attr("style"))}),d.css("display","block"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),o=e.css("display");"inline-block"!==o&&"flex"!==o&&"inline-flex"!==o&&(o="block"),e.data("style-cache",e.attr("style")),e.css({display:o,"padding-top":"0",
+"padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),l=i(h),h.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||"")})),t.each(l,function(e,o){var i=t(o),n=0;if(s.target)n=s.target.outerHeight(!1);else{if(s.byRow&&i.length<=1)return void i.css(s.property,"");i.each(function(){var e=t(this),o=e.attr("style"),a=e.css("display");"inline-block"!==a&&"flex"!==a&&"inline-flex"!==a&&(a="block");var i={
+display:a};i[s.property]="",e.css(i),e.outerHeight(!1)>n&&(n=e.outerHeight(!1)),o?e.attr("style",o):e.css("display","")})}i.each(function(){var e=t(this),o=0;s.target&&e.is(s.target)||("border-box"!==e.css("box-sizing")&&(o+=a(e.css("border-top-width"))+a(e.css("border-bottom-width")),o+=a(e.css("padding-top"))+a(e.css("padding-bottom"))),e.css(s.property,n-o+"px"))})}),d.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||null)}),r._maintainScroll&&t(window).scrollTop(c/p*t("html").outerHeight(!0)),
+this},r._applyDataApi=function(){var e={};t("[data-match-height], [data-mh]").each(function(){var o=t(this),a=o.attr("data-mh")||o.attr("data-match-height");a in e?e[a]=e[a].add(o):e[a]=o}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(a,i){if(i&&"resize"===i.type){var n=t(window).width();if(n===e)return;e=n;
+}a?-1===o&&(o=setTimeout(function(){s(i),o=-1},r._throttle)):s(i)},t(r._applyDataApi),t(window).bind("load",function(t){r._update(!1,t)}),t(window).bind("resize orientationchange",function(t){r._update(!0,t)})});
\ No newline at end of file
index 8306db1..fe37ffe 100644 (file)
@@ -7519,9 +7519,23 @@ button.close {
 .module-body > .callout:first-child {
   margin-top: 0;
 }
+.module-body > .container {
+  padding-left: 0;
+  padding-right: 0;
+}
+.module-body .container-small {
+  max-width: 768px;
+}
 .module-docheader + .module-body {
   padding-top: 89px;
 }
+.panel {
+  display: block;
+}
+.panel:hover,
+.panel:focus {
+  text-decoration: none;
+}
 .panel-heading a,
 .panel-heading a:hover,
 .panel-heading a:focus a:active {
@@ -7542,9 +7556,23 @@ button.close {
   display: inline-block;
   vertical-align: middle;
 }
+.panel-body > *:first-child {
+  margin-top: 0;
+}
 .panel-body > *:last-child {
   margin-bottom: 0;
 }
+.panel-body-highlightlinks > p > a {
+  text-decoration: underline;
+}
+.panel-table th:first-child,
+.panel-table td:first-child {
+  padding-left: 15px;
+}
+.panel-table th:last-child,
+.panel-table td:last-child {
+  padding-right: 15px;
+}
 .panel-active {
   border-color: #444444;
 }
index 87b11d4..013dd39 100644 (file)
@@ -7528,9 +7528,23 @@ button.close {
 .module-body > .callout:first-child {
   margin-top: 0;
 }
+.module-body > .container {
+  padding-left: 0;
+  padding-right: 0;
+}
+.module-body .container-small {
+  max-width: 768px;
+}
 .module-docheader + .module-body {
   padding-top: 89px;
 }
+.panel {
+  display: block;
+}
+.panel:hover,
+.panel:focus {
+  text-decoration: none;
+}
 .panel-heading a,
 .panel-heading a:hover,
 .panel-heading a:focus a:active {
@@ -7551,9 +7565,23 @@ button.close {
   display: inline-block;
   vertical-align: middle;
 }
+.panel-body > *:first-child {
+  margin-top: 0;
+}
 .panel-body > *:last-child {
   margin-bottom: 0;
 }
+.panel-body-highlightlinks > p > a {
+  text-decoration: underline;
+}
+.panel-table th:first-child,
+.panel-table td:first-child {
+  padding-left: 15px;
+}
+.panel-table th:last-child,
+.panel-table td:last-child {
+  padding-right: 15px;
+}
 .panel-active {
   border-color: #444444;
 }