[BUGFIX][FOLLOWUP] Make ClickMenu calls use new API 22/34022/4
authorBenjamin Mack <benni@typo3.org>
Wed, 12 Nov 2014 16:47:34 +0000 (17:47 +0100)
committerStefan Froemken <froemken@gmail.com>
Wed, 12 Nov 2014 18:06:13 +0000 (19:06 +0100)
Special use cases where inline
onclick handlers were used are now
replaced by the proper handling of the new API.

This removes sideeffects by the previous
patch with #62709.

Resolves: #62889
Releases: master
Change-Id: If4d534873c9d97736a81bd800cbc66c7019206bb
Reviewed-on: http://review.typo3.org/34022
Reviewed-by: Frank Nägler <typo3@naegler.net>
Tested-by: Frank Nägler <typo3@naegler.net>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Stefan Froemken <froemken@gmail.com>
Tested-by: Stefan Froemken <froemken@gmail.com>
typo3/sysext/backend/Classes/Tree/View/FolderTreeView.php
typo3/sysext/backend/Classes/View/PageLayoutView.php
typo3/sysext/backend/Classes/View/PageTreeView.php
typo3/sysext/backend/Resources/Public/JavaScript/ClickMenu.js

index 6a9298e..6f4a402 100644 (file)
@@ -160,9 +160,9 @@ class FolderTreeView extends \TYPO3\CMS\Backend\Tree\View\AbstractTreeView {
                        return $title;
                }
                $aOnClick = 'return jumpTo(\'' . $this->getJumpToParam($folderObject) . '\', this, \'' . $this->domIdPrefix . $this->getId($folderObject) . '\', ' . $bank . ');';
-               $CSM = ' oncontextmenu="' . htmlspecialchars($GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon('', $folderObject->getCombinedIdentifier(), '', 0, ('&bank=' . $this->bank), '', TRUE)) . '"';
+               $clickMenuParts = $GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon('', $folderObject->getCombinedIdentifier(), '', 0, ('&bank=' . $this->bank), '', TRUE);
 
-               return '<a href="#" title="' . htmlspecialchars($title) . '" onclick="' . htmlspecialchars($aOnClick) . '"' . $CSM . '>' . $title . '</a>';
+               return '<a href="#" title="' . htmlspecialchars($title) . '" onclick="' . htmlspecialchars($aOnClick) . '" ' . GeneralUtility::implodeAttributes($clickMenuParts) . '>' . $title . '</a>';
        }
 
        /**
index 18bcf57..0a30e08 100644 (file)
@@ -1524,9 +1524,9 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
                                                        $shortcutRecord = BackendUtility::getRecord($tableName, $split[1]);
                                                        if (is_array($shortcutRecord)) {
                                                                $icon = IconUtility::getSpriteIconForRecord($tableName, $shortcutRecord);
-                                                               $onClick = $this->getPageLayoutController()->doc->wrapClickMenuOnIcon($icon, $tableName,
-                                                                       $shortcutRecord['uid'], 1, '', '+copy,info,edit,view', TRUE);
-                                                               $shortcutContent[] = '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $icon . '</a>'
+                                                               $icon = $this->getPageLayoutController()->doc->wrapClickMenuOnIcon($icon, $tableName,
+                                                                       $shortcutRecord['uid'], 1, '', '+copy,info,edit,view');
+                                                               $shortcutContent[] = $icon
                                                                        . htmlspecialchars(BackendUtility::getRecordTitle($tableName, $shortcutRecord));
                                                        }
                                                }
index c485db7..767558f 100644 (file)
@@ -133,8 +133,9 @@ class PageTreeView extends \TYPO3\CMS\Backend\Tree\View\BrowseTreeView {
                        unset($_params);
                }
                $aOnClick = 'return jumpTo(\'' . $this->getJumpToParam($row) . '\',this,\'' . $this->domIdPrefix . $this->getId($row) . '\',' . $bank . ');';
-               $CSM = ' oncontextmenu="' . htmlspecialchars($GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon('', 'pages', $row['uid'], 0, ('&bank=' . $this->bank), '', TRUE)) . ';"';
-               $thePageTitle = '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '"' . $CSM . '>' . $title . '</a>';
+               $clickMenuParts = $GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon('', 'pages', $row['uid'], 0, ('&bank=' . $this->bank), '', TRUE);
+
+               $thePageTitle = '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '"' . GeneralUtility::implodeAttributes($clickMenuParts) . '>' . $title . '</a>';
                // Wrap title in a drag/drop span.
                return '<span class="dragTitle" id="dragTitleID_' . $row['uid'] . '">' . $thePageTitle . '</span>';
        }
index bc92419..29bfa70 100644 (file)
@@ -27,6 +27,11 @@ define('TYPO3/CMS/Backend/ClickMenu', ['jquery'], function($) {
 
        ClickMenu.initializeEvents = function() {
                $(document).on('click contextmenu', '.t3-js-clickmenutrigger', function(event) {
+                       // if there is an other "inline" onclick setting, clickmenu is not triggered
+                       // usually this is the case for the foldertree
+                       if ($(this).prop('onclick') && event.type === 'click') {
+                               return;
+                       }
                        event.preventDefault();
                        ClickMenu.show(
                                $(this).data('table'),