[BUGFIX] feedit: Double encoding of labels 02/46802/2
authorChristian Weiske <weiske@mogic.com>
Tue, 26 Jan 2016 15:08:20 +0000 (16:08 +0100)
committerBenni Mack <benni@typo3.org>
Mon, 22 Feb 2016 15:33:19 +0000 (16:33 +0100)
Translated labels containing UTF-8 characters were double-encoded
in frontend editing.

extGetLL() already runs htmlspecialchars() on labels, so we do not have
to do that again in FrontendEditPanel.
This fixes the titles of the admin panel buttons.

Also, since we can expect all pages to be UTF-8 now, we can drop the forced
conversion of UTF-8 characters to XML entities.
This fixes the confirmation popup texts.

Resolves: #63131
Releases: master, 7.6
Change-Id: I49faff20ff4da8434868534d566c0d3da85e30c6
Reviewed-on: https://review.typo3.org/46802
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Marco Huber <mail@marco-huber.de>
Tested-by: Marco Huber <mail@marco-huber.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/backend/Classes/FrontendBackendUserAuthentication.php
typo3/sysext/feedit/Classes/FrontendEditPanel.php

index 0212133..89af1ee 100755 (executable)
@@ -290,11 +290,8 @@ class FrontendBackendUserAuthentication extends \TYPO3\CMS\Core\Authentication\B
                 $GLOBALS['LOCAL_LANG'] = array();
             }
         }
-        // Label string in the default backend output charset.
-        $labelStr = htmlspecialchars($this->getLanguageService()->getLL($key));
-        $labelStr = $this->getLanguageService()->csConvObj->utf8_to_entities($labelStr);
-        // Return the result:
-        return $labelStr;
+        // Return the label string in the default backend output charset.
+        return htmlspecialchars($this->getLanguageService()->getLL($key));
     }
 
     /**
index b1afca9..7968218 100644 (file)
@@ -111,14 +111,14 @@ class FrontendEditPanel
             $panel .= $this->backendUser->adminPanel->ext_makeToolBar();
         }
         if (isset($allow['edit'])) {
-            $icon = '<span title="' . htmlspecialchars($this->backendUser->extGetLL('p_editRecord')) . '">' . $this->iconFactory->getIcon('actions-document-open', Icon::SIZE_SMALL)->render() . '</span>';
+            $icon = '<span title="' . $this->backendUser->extGetLL('p_editRecord') . '">' . $this->iconFactory->getIcon('actions-document-open', Icon::SIZE_SMALL)->render() . '</span>';
             $panel .= $this->editPanelLinkWrap($icon, $formName, 'edit', $dataArr['_LOCALIZED_UID'] ? $table . ':' . $dataArr['_LOCALIZED_UID'] : $currentRecord);
         }
         // Hiding in workspaces because implementation is incomplete
         if (isset($allow['move']) && $sortField && $this->backendUser->workspace === 0) {
-            $icon = '<span title="' . htmlspecialchars($this->backendUser->extGetLL('p_moveUp')) . '">' . $this->iconFactory->getIcon('actions-move-up', Icon::SIZE_SMALL)->render() . '</span>';
+            $icon = '<span title="' . $this->backendUser->extGetLL('p_moveUp') . '">' . $this->iconFactory->getIcon('actions-move-up', Icon::SIZE_SMALL)->render() . '</span>';
             $panel .= $this->editPanelLinkWrap($icon, $formName, 'up');
-            $icon = '<span title="' . htmlspecialchars($this->backendUser->extGetLL('p_moveDown')) . '">' . $this->iconFactory->getIcon('actions-move-down', Icon::SIZE_SMALL)->render() . '</span>';
+            $icon = '<span title="' . $this->backendUser->extGetLL('p_moveDown') . '">' . $this->iconFactory->getIcon('actions-move-down', Icon::SIZE_SMALL)->render() . '</span>';
             $panel .= $this->editPanelLinkWrap($icon, $formName, 'down');
         }
         // Hiding in workspaces because implementation is incomplete
@@ -134,12 +134,12 @@ class FrontendEditPanel
         }
         if (isset($allow['new'])) {
             if ($table === 'pages') {
-                $icon = '<span title="' . htmlspecialchars($this->backendUser->extGetLL('p_newSubpage')) . '">'
+                $icon = '<span title="' . $this->backendUser->extGetLL('p_newSubpage') . '">'
                     . $this->iconFactory->getIcon('actions-page-new', Icon::SIZE_SMALL)->render()
                     . '</span>';
                 $panel .= $this->editPanelLinkWrap($icon, $formName, 'new', $currentRecord, '');
             } else {
-                $icon = '<span title="' . htmlspecialchars($this->backendUser->extGetLL('p_newRecordAfter')) . '">'
+                $icon = '<span title="' . $this->backendUser->extGetLL('p_newRecordAfter') . '">'
                     . $this->iconFactory->getIcon('actions-document-new', Icon::SIZE_SMALL)->render()
                     . '</span>';
                 $panel .= $this->editPanelLinkWrap($icon, $formName, 'new', $currentRecord, '', $newUID);
@@ -148,7 +148,7 @@ class FrontendEditPanel
         // Hiding in workspaces because implementation is incomplete
         // Hiding for localizations because it is unknown what should be the function in that case
         if (isset($allow['delete']) && $this->backendUser->workspace === 0 && !$dataArr['_LOCALIZED_UID']) {
-            $icon = '<span title="' . htmlspecialchars($this->backendUser->extGetLL('p_delete')) . '">'
+            $icon = '<span title="' . $this->backendUser->extGetLL('p_delete') . '">'
                 . $this->iconFactory->getIcon('actions-edit-delete', Icon::SIZE_SMALL)->render()
                 . '</span>';
             $panel .= $this->editPanelLinkWrap($icon, $formName, 'delete', '', $this->backendUser->extGetLL('p_deleteConfirm'));