[BUGFIX] Fix JS errors in context menu 51/51251/4
authorTymoteusz Motylewski <t.motylewski@gmail.com>
Tue, 10 Jan 2017 21:54:47 +0000 (22:54 +0100)
committerTymoteusz Motylewski <t.motylewski@gmail.com>
Wed, 11 Jan 2017 10:29:01 +0000 (11:29 +0100)
Fixes two issues: syntax error (missing semicolon),
and "Uncaught TypeError: Cannot read property 'refresh' of undefined"
when e.g. deleting a page or a file.

In file module, refresh is not needed as all actions are refreshing
the frames anyway.

Releases: master, 7.6
Resolves: #79091
Change-Id: Icfc9f786c24099c55d8e60cf30f72f035ae28231
Reviewed-on: https://review.typo3.org/51251
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: TYPO3com <no-reply@typo3.com>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/backend/Classes/ClickMenu/ClickMenu.php

index d665cfb..e7bb128 100644 (file)
@@ -810,10 +810,13 @@ class ClickMenu
             . $this->frameLocation($loc . '.document') . '.search)+'
             . GeneralUtility::quoteJSvalue(
                 '&cmd[' . $table . '][' . $uid . '][delete]=1&prErr=1&vC=' . $this->backendUser->veriCode()
-            );
+            )
+            . ';';
 
         if ($table === 'pages') {
-            $jsCode .= 'top.nav.refresh.defer(500, top.nav);';
+            $jsCode .= 'if (top && top.TYPO3.Backend && top.TYPO3.Backend.NavigationContainer.PageTree) {';
+            $jsCode .= '     top.TYPO3.Backend.NavigationContainer.PageTree.refreshTree.defer(500);';
+            $jsCode .= '}';
         }
 
         if ($this->backendUser->jsConfirmation(JsConfirmation::DELETE)) {
@@ -1093,7 +1096,7 @@ class ClickMenu
         return $this->linkItem(
             $this->label($type),
             $this->iconFactory->getIcon($iconName, Icon::SIZE_SMALL)->render(),
-            $editOnClick . 'top.nav.refresh();'
+            $editOnClick
         );
     }
 
@@ -1184,7 +1187,7 @@ class ClickMenu
         $jsCode = $loc . '.location.href='
             . GeneralUtility::quoteJSvalue($this->clipObj->pasteUrl('_FILE', $path, 0) . '&redirect=')
             . '+top.rawurlencode(' . $this->frameLocation($loc . '.document')
-            . '.pathname+' . $this->frameLocation($loc . '.document') . '.search); top.nav.refresh();';
+            . '.pathname+' . $this->frameLocation($loc . '.document') . '.search);';
 
         if ($this->backendUser->jsConfirmation(JsConfirmation::COPY_MOVE_PASTE)) {
             $title = $this->languageService->sL('LLL:EXT:lang/Resources/Private/Language/locallang_mod_web_list.xlf:clip_paste');
@@ -1295,7 +1298,7 @@ class ClickMenu
             GeneralUtility::quoteJSvalue(
                 '&cmd[pages][' . $srcUid . '][' . $action . ']=' . $negativeSign . $dstUid . '&prErr=1&vC=' .
                 $this->backendUser->veriCode()
-            ) . ';};top.nav.refresh();';
+            ) . ';};';
         return $this->linkItem(
             $this->label($action . 'Page_' . $into),
             $this->iconFactory->getIcon('actions-document-paste-' . $into, Icon::SIZE_SMALL)->render(),
@@ -1321,7 +1324,7 @@ class ClickMenu
             GeneralUtility::quoteJSvalue(
                 '&file[' . $action . '][0][data]=' . $srcPath . '&file[' . $action . '][0][target]=' . $dstPath . '&prErr=1&vC=' .
                 $this->backendUser->veriCode()
-            ) . ';};top.nav.refresh();';
+            ) . ';};';
         return $this->linkItem(
             $this->label($action . 'Folder_into'),
             $this->iconFactory->getIcon('apps-pagetree-drag-move-into', Icon::SIZE_SMALL)->render(),