diff --git a/typo3/sysext/workspaces/Classes/Service/HistoryService.php b/typo3/sysext/workspaces/Classes/Service/HistoryService.php index 6e7cfa881af756f84d55687d6063e5ebb512c1b9..f7ae7c952e96b657090f71ccc49f5968eedbb54c 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 17336407f61fe6800d871c949ccc5793e4c34709..e6a6f00758b62de7988f4de5915ba51abf7ee323 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); + } + } + } ] }) }