diff --git a/t3lib/js/extjs/components/pagetree/javascript/actions.js b/t3lib/js/extjs/components/pagetree/javascript/actions.js index 33f18ae..5e60403 100644 --- a/t3lib/js/extjs/components/pagetree/javascript/actions.js +++ b/t3lib/js/extjs/components/pagetree/javascript/actions.js @@ -695,6 +695,42 @@ TYPO3.Components.PageTree.Actions = { }, /** + * Shows a page in menu + * + * @param {Ext.tree.TreeNode} node + * @return {void} + */ + showPageInMenu: function(node) { + TYPO3.Components.PageTree.Commands.showNode( + node.attributes.nodeData, + function(response) { + if (this.evaluateResponse(response)) { + this.updateNode(node, node.isExpanded(), response); + } + }, + this + ); + }, + + /** + * Hides a page in menu + * + * @param {Ext.tree.TreeNode} node + * @return {void} + */ + hidePageInMenu: function(node) { + TYPO3.Components.PageTree.Commands.hideNode( + node.attributes.nodeData, + function(response) { + if (this.evaluateResponse(response)) { + this.updateNode(node, node.isExpanded(), response); + } + }, + this + ); + }, + + /** * Reloads the content frame with the current module and node id * * @param {Ext.tree.TreeNode} node diff --git a/t3lib/stddb/DefaultConfiguration.php b/t3lib/stddb/DefaultConfiguration.php index 9c83541..fc56df4 100644 --- a/t3lib/stddb/DefaultConfiguration.php +++ b/t3lib/stddb/DefaultConfiguration.php @@ -485,6 +485,24 @@ return array( displayCondition = canBeRemoved != 0 && isMountPoint != 1 callbackAction = removeNode } + + 1100 = ITEM + 1100 { + name = hide + label = LLL:EXT:lang/locallang_common.xml:hide + spriteIcon = apps-pagetree-page-not-in-menu + displayCondition = getRecord|nav_hide = 0 && canBeHidedAndUnhided != 0 + callbackAction = hidePageInMenu + } + + 1200 = ITEM + 1200 { + name = show + label = LLL:EXT:lang/locallang_common.xml:show + spriteIcon = apps-pagetree-page-default + displayCondition = getRecord|nav_hide = 1 && canBeHidedAndUnhided != 0 + callbackAction = showPageInMenu + } } 1000 = SUBMENU diff --git a/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php b/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php index 9de8ad3..7a2fd5c 100644 --- a/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php +++ b/typo3/sysext/backend/Classes/Tree/Pagetree/Commands.php @@ -83,6 +83,28 @@ class Commands { } /** + * Shows the page in menu + * + * @param \TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode $node + * @return void + */ + static public function showNode(\TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode $node) { + $data['pages'][$node->getWorkspaceId()]['nav_hide'] = 0; + self::processTceCmdAndDataMap(array(), $data); + } + + /** + * Hides the page in menu + * + * @param \TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode $node + * @return void + */ + static public function hideNode(\TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode $node) { + $data['pages'][$node->getWorkspaceId()]['nav_hide'] = 1; + self::processTceCmdAndDataMap(array(), $data); + } + + /** * Delete the page * * @param \TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode $node diff --git a/typo3/sysext/backend/Classes/Tree/Pagetree/ExtdirectTreeCommands.php b/typo3/sysext/backend/Classes/Tree/Pagetree/ExtdirectTreeCommands.php index 51ed75b..0938ce1 100644 --- a/typo3/sysext/backend/Classes/Tree/Pagetree/ExtdirectTreeCommands.php +++ b/typo3/sysext/backend/Classes/Tree/Pagetree/ExtdirectTreeCommands.php @@ -82,6 +82,52 @@ class ExtdirectTreeCommands { } /** + * Shows the page in menu + * + * @param stdClass $nodeData + * @return array + */ + public function showNode($nodeData) { + /** @var $node \TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode */ + $node = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Tree\\Pagetree\\PagetreeNode', (array) $nodeData); + try { + \TYPO3\CMS\Backend\Tree\Pagetree\Commands::showNode($node); + $newNode = \TYPO3\CMS\Backend\Tree\Pagetree\Commands::getNode($node->getId()); + $newNode->setLeaf($node->isLeafNode()); + $returnValue = $newNode->toArray(); + } catch (\Exception $exception) { + $returnValue = array( + 'success' => FALSE, + 'error' => $exception->getMessage() + ); + } + return $returnValue; + } + + /** + * Hides the page in menu + * + * @param stdClass $nodeData + * @return array + */ + public function hideNode($nodeData) { + /** @var $node \TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode */ + $node = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Tree\\Pagetree\\PagetreeNode', (array) $nodeData); + try { + \TYPO3\CMS\Backend\Tree\Pagetree\Commands::hideNode($node); + $newNode = \TYPO3\CMS\Backend\Tree\Pagetree\Commands::getNode($node->getId()); + $newNode->setLeaf($node->isLeafNode()); + $returnValue = $newNode->toArray(); + } catch (\Exception $exception) { + $returnValue = array( + 'success' => FALSE, + 'message' => $exception->getMessage() + ); + } + return $returnValue; + } + + /** * Delete the page * * @param stdClass $nodeData diff --git a/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php b/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php index 890bc05..6dc9302 100644 --- a/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php +++ b/typo3/sysext/backend/Classes/Tree/Pagetree/PagetreeNode.php @@ -221,6 +221,15 @@ class PagetreeNode extends \TYPO3\CMS\Backend\Tree\ExtDirectNode { } /** + * Checks if the page can be hided + * + * @return boolean + */ + public function canBeHidedAndUnhided() { + return $this->canEdit($this->record); + } + + /** * Checks if the page is allowed to can be cut * * @return boolean diff --git a/typo3/sysext/lang/locallang_common.xlf b/typo3/sysext/lang/locallang_common.xlf index f822f56..a4da7e1 100644 --- a/typo3/sysext/lang/locallang_common.xlf +++ b/typo3/sysext/lang/locallang_common.xlf @@ -42,6 +42,9 @@ Disabled + + Hide in menu + Down @@ -63,6 +66,9 @@ Enabled + + Show in menu + File