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 @@
+
+
+
@@ -63,6 +66,9 @@
+
+
+