From 22e9d09a0de10353c4bcc2914620b17f97854747 Mon Sep 17 00:00:00 2001
From: Oliver Hader <oliver@typo3.org>
Date: Fri, 13 Jun 2014 13:23:01 +0200
Subject: [PATCH] [BUGIFX] Field labels not shown in workspaces history

Field labels are not shown if opening the history of an
element in the workspace module.

Resolves: #59546
Releases: 6.2
Change-Id: I3f522957dad8e36046b508dde658496f1cec6008
Reviewed-on: https://review.typo3.org/30713
Reviewed-by: Wouter Wolters
Reviewed-by: Alexander Opitz
Tested-by: Alexander Opitz
Reviewed-by: Tymoteusz Motylewski
Tested-by: Tymoteusz Motylewski
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
---
 .../Classes/Service/HistoryService.php         | 16 ++++++++++++++--
 .../Resources/Public/JavaScript/helpers.js     | 18 +++++++++++++++++-
 2 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/typo3/sysext/workspaces/Classes/Service/HistoryService.php b/typo3/sysext/workspaces/Classes/Service/HistoryService.php
index 6e7cfa881af7..f7ae7c952e96 100644
--- a/typo3/sysext/workspaces/Classes/Service/HistoryService.php
+++ b/typo3/sysext/workspaces/Classes/Service/HistoryService.php
@@ -89,7 +89,7 @@ class HistoryService implements \TYPO3\CMS\Core\SingletonInterface {
 		if (!empty($entry['action'])) {
 			$differences = $entry['action'];
 		} else {
-			$differences = implode('<br/>', $this->getDifferences($entry));
+			$differences = $this->getDifferences($entry);
 		}
 		return array(
 			'datetime' => htmlspecialchars(BackendUtility::datetime($entry['tstamp'])),
@@ -117,7 +117,12 @@ class HistoryService implements \TYPO3\CMS\Core\SingletonInterface {
 						BackendUtility::getProcessedValue($tableName, $field, $entry['oldRecord'][$field], 0, TRUE),
 						BackendUtility::getProcessedValue($tableName, $field, $entry['newRecord'][$field], 0, TRUE)
 					);
-					$differences[] = nl2br($fieldDifferences);
+					if (!empty($fieldDifferences)) {
+						$differences[] = array(
+							'label' => $this->getLanguageService()->sl((string)BackendUtility::getItemLabel($tableName, $field)),
+							'html' => nl2br(trim($fieldDifferences)),
+						);
+					}
 				}
 			}
 		}
@@ -168,4 +173,11 @@ class HistoryService implements \TYPO3\CMS\Core\SingletonInterface {
 		return $this->differencesObject;
 	}
 
+	/**
+	 * @return \TYPO3\CMS\Lang\LanguageService
+	 */
+	protected function getLanguageService() {
+		return $GLOBALS['LANG'];
+	}
+
 }
diff --git a/typo3/sysext/workspaces/Resources/Public/JavaScript/helpers.js b/typo3/sysext/workspaces/Resources/Public/JavaScript/helpers.js
index 17336407f61f..e6a6f00758b6 100644
--- a/typo3/sysext/workspaces/Resources/Public/JavaScript/helpers.js
+++ b/typo3/sysext/workspaces/Resources/Public/JavaScript/helpers.js
@@ -172,7 +172,23 @@ TYPO3.Workspaces.Helpers = {
 						columns: [
 							{ width: 30, id: 'datetime', header: 'Date' },
 							{ width: 20, id: 'user', header: 'User', dataIndex: 'user' },
-							{ id: 'differences', header: 'Differences', dataIndex: 'differences' }
+							{
+								id: 'differences',
+								header: 'Differences',
+								dataIndex: 'differences',
+								renderer: function(value, metaData, record, rowIndex, colIndex, store) {
+									if (typeof value === 'string') {
+										return value;
+									} else {
+										var template = new Ext.XTemplate(
+											'<tpl for=".">',
+												'<div style="display: block; padding: 3px 0;"><strong>{label}</strong> {html}</div>',
+											'</tpl>'
+										);
+										return template.apply(value);
+									}
+								}
+							}
 						]
 					})
 				}
-- 
GitLab