From 7a93d097b8a6017869ebf84744808e76cee0ab05 Mon Sep 17 00:00:00 2001
From: Andreas Fernandez <andreas.fernandez@aspedia.de>
Date: Fri, 21 Nov 2014 11:27:57 +0100
Subject: [PATCH] [BUGFIX] EXT:lang: Hide useless UI if no language is selected

In EXT:lang, the update button is displayed if no language is selected.
Clicking on that button will display several FlashMessages and PHP
throws an exception due to missing arguments.

This patch takes care of it and simply hides the button if no
language is selected.
Furthermore it hides the righthand side of the table too.

Resolves: #63124
Releases: master
Change-Id: Ica69a257ff5f36eda789051b194ef33c47e699fc
Reviewed-on: http://review.typo3.org/34436
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Felix Kopp <felix-source@phorax.com>
Reviewed-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
Tested-by: Tymoteusz Motylewski <t.motylewski@gmail.com>
---
 .../Classes/Controller/LanguageController.php     |  4 +++-
 .../Domain/Model/LanguageSelectionForm.php        |  2 +-
 .../Private/Templates/Language/Index.html         | 15 +++++++++------
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/typo3/sysext/lang/Classes/Controller/LanguageController.php b/typo3/sysext/lang/Classes/Controller/LanguageController.php
index b0a12dd29c46..172cc77bec57 100644
--- a/typo3/sysext/lang/Classes/Controller/LanguageController.php
+++ b/typo3/sysext/lang/Classes/Controller/LanguageController.php
@@ -78,10 +78,12 @@ class LanguageController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionControl
 			$languageSelectionForm->setSelectedLanguages($this->languageRepository->findSelected());
 		}
 
-		if (empty($extensions)) {
+		$hasSelectedLanguages = !empty($languageSelectionForm->getSelectedLanguages());
+		if ($hasSelectedLanguages && empty($extensions)) {
 			$extensions = $this->extensionRepository->findAll();
 		}
 
+		$this->view->assign('hasSelectedLanguages', $hasSelectedLanguages);
 		$this->view->assign('languageSelectionForm', $languageSelectionForm);
 		$this->view->assign('extensions', $extensions);
 	}
diff --git a/typo3/sysext/lang/Classes/Domain/Model/LanguageSelectionForm.php b/typo3/sysext/lang/Classes/Domain/Model/LanguageSelectionForm.php
index ccea98d73d2b..a7f752c187ec 100644
--- a/typo3/sysext/lang/Classes/Domain/Model/LanguageSelectionForm.php
+++ b/typo3/sysext/lang/Classes/Domain/Model/LanguageSelectionForm.php
@@ -52,7 +52,7 @@ class LanguageSelectionForm extends \TYPO3\CMS\Extbase\DomainObject\AbstractEnti
 	/**
 	 * Setter for the selected languages
 	 *
-	 * @param array $locale Selected languages
+	 * @param array $selectedLanguages Selected languages
 	 * @return void
 	 */
 	public function setSelectedLanguages(array $selectedLanguages) {
diff --git a/typo3/sysext/lang/Resources/Private/Templates/Language/Index.html b/typo3/sysext/lang/Resources/Private/Templates/Language/Index.html
index 4bcd4191839b..f332826e57d2 100644
--- a/typo3/sysext/lang/Resources/Private/Templates/Language/Index.html
+++ b/typo3/sysext/lang/Resources/Private/Templates/Language/Index.html
@@ -3,9 +3,11 @@
 <f:layout name="Default"/>
 
 <f:section name="iconButtons">
-	<span class="menuItem updateItem"><lang:be.spriteIcon icon="actions-system-extension-download" title="{f:translate(key:'button.update')}" /><f:translate key="button.update"/></span>
-	&nbsp;
-	<span class="menuItem cancelItem"><lang:be.spriteIcon icon="status-status-permission-denied" title="{f:translate(key:'button.cancel')}" /><f:translate key="button.cancel"/></span>
+	<f:if condition="{hasSelectedLanguages}">
+		<span class="menuItem updateItem"><lang:be.spriteIcon icon="actions-system-extension-download" title="{f:translate(key:'button.update')}" /><f:translate key="button.update"/></span>
+		&nbsp;
+		<span class="menuItem cancelItem"><lang:be.spriteIcon icon="status-status-permission-denied" title="{f:translate(key:'button.cancel')}" /><f:translate key="button.cancel"/></span>
+	</f:if>
 </f:section>
 
 
@@ -13,7 +15,6 @@
 	<h1><f:translate key="header.module" /></h1>
 
 	<f:flashMessages renderMode="div" />
-
 	<table border="0" cellpadding="0" cellspacing="0">
 		<tr>
 			<td class="languageSelectionListContainer">
@@ -21,8 +22,10 @@
 				<f:render partial="LanguageSelectionList" arguments="{_all}" />
 			</td>
 			<td class="translationUpdateListContainer">
-				<h3><f:translate key="header.translationUpdateList" /></h3>
-				<f:render partial="TranslationUpdateList" arguments="{_all}" />
+				<f:if condition="{hasSelectedLanguages}">
+					<h3><f:translate key="header.translationUpdateList" /></h3>
+					<f:render partial="TranslationUpdateList" arguments="{_all}" />
+				</f:if>
 			</td>
 		</tr>
 	</table>
-- 
GitLab