From 7a7cf8cec0a43dbc49821de69b3c5041ead7b097 Mon Sep 17 00:00:00 2001
From: Benni Mack <benni@typo3.org>
Date: Thu, 21 Sep 2023 19:09:53 +0200
Subject: [PATCH] [BUGFIX] Enable "hide_in_menu" toggle in ContextMenu for
 custom doktypes

Since TYPO3 v10 it is possible to use any number of
doktype with "pages.doktype" and the limitation of custom
doktypes "less than 200" was lifted.

One part is still missing - the ContextMenu still
has the limitation of only showing up for doktypes
less than 200.

This patch changes this behavior.

Resolves: #101999
Releases: main, 12.4
Change-Id: I6971c9856297bc669d32cdf778be1883a1be54ed
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81161
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Nikita Hovratov <nikita.h@live.de>
Tested-by: Nikita Hovratov <nikita.h@live.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: core-ci <typo3@b13.com>
---
 .../Classes/ContextMenu/ItemProviders/PageProvider.php     | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php
index 9161c269e733..88bb32cf4b21 100644
--- a/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php
+++ b/typo3/sysext/backend/Classes/ContextMenu/ItemProviders/PageProvider.php
@@ -532,9 +532,8 @@ class PageProvider extends RecordProvider
     }
 
     /**
-     * Checks if user has access to this column
-     * and the page doktype is lower than 200 (exclude sys_folder, ...)
-     * and it contains given value
+     * Checks if user has access to this column, the doktype
+     * is not excluded and that it contains the given value.
      */
     protected function canBeToggled(string $fieldName, int $value): bool
     {
@@ -542,7 +541,7 @@ class PageProvider extends RecordProvider
             return false;
         }
         if (!empty($GLOBALS['TCA'][$this->table]['columns'][$fieldName]['exclude'])
-            && $this->record['doktype'] <= PageRepository::DOKTYPE_SPACER
+            && !$this->isExcludedDoktype()
             && $this->backendUser->check('non_exclude_fields', $this->table . ':' . $fieldName)
             && $this->backendUser->check('tables_modify', $this->table)
         ) {
-- 
GitLab