From 84edee6b1c40971d0f68fc9579ddae6f7927d8fe Mon Sep 17 00:00:00 2001
From: Andreas Fernandez <a.fernandez@scripting-base.de>
Date: Thu, 1 Oct 2015 16:07:22 +0200
Subject: [PATCH] [BUGFIX] Cleanup in SelectTreeElement

* Remove unnecessary $treeData variable
* Fix broken JS in onChange handler
* Enforce int casting of $width

Resolves: #70272
Releases: master
Change-Id: I76b2233a30f6c033839f53404340485f7302f9ca
Reviewed-on: http://review.typo3.org/43697
Reviewed-by: Helmut Hummel <helmut.hummel@typo3.org>
Tested-by: Andreas Bouche <andreas.bouche@flagbit.de>
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
---
 .../backend/Classes/Form/Element/SelectTreeElement.php     | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php b/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php
index 8cbce6be5236..5b5f26dcf4be 100644
--- a/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php
+++ b/typo3/sysext/backend/Classes/Form/Element/SelectTreeElement.php
@@ -98,7 +98,6 @@ class SelectTreeElement extends AbstractFormElement {
 		*/
 
 		$itemArray[] = $treeData;
-		$treeData = json_encode($itemArray);
 		$id = md5($parameterArray['itemFormElName']);
 		if (isset($config['size']) && (int)$config['size'] > 0) {
 			$height = (int)$config['size'] * 20;
@@ -166,13 +165,13 @@ class SelectTreeElement extends AbstractFormElement {
 		$resultArray = $this->initializeResultArray();
 		$resultArray['extJSCODE'] .= LF .
 			'Ext.onReady(function() {
-			TYPO3.Components.Tree.StandardTreeItemData["' . $id . '"] = ' . $treeData . ';
+			TYPO3.Components.Tree.StandardTreeItemData["' . $id . '"] = ' . json_encode($itemArray) . ';
 			var tree' . $id . ' = new TYPO3.Components.Tree.StandardTree({
 				id: "' . $id . '",
 				showHeader: ' . (int)$header . ',
-				onChange: "' . $onChange . '",
+				onChange: ' . GeneralUtility::quoteJSvalue($onChange) . ',
 				countSelectedNodes: ' . count($selectedNodes) . ',
-				width: ' . $width . ',
+				width: ' . (int)$width . ',
 				listeners: {
 					click: function(node, event) {
 						if (typeof(node.attributes.checked) == "boolean") {
-- 
GitLab