/** * Adding various standard options to the context menu. * This includes both first and second level. * * @param object $backRef The calling object. Value by reference. * @param array $menuItems Array with the currently collected menu items to show. * @param string $table Table name of clicked item. * @param integer $uid UID of clicked item. * @return array Modified $menuItems array * @todo Define visibility */ public function main(&$backRef, $menuItems, $table, $uid) { // Accumulation of local items. $localItems = array(); $subname = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('subname'); // Detecting menu level // LEVEL: Primary menu. if (!in_array('moreoptions', $backRef->disabledItems) && !$backRef->cmLevel) { // Creating menu items here: if ($backRef->editOK) { $LL = $this->includeLL(); $localItems[] = 'spacer'; $localItems['moreoptions'] = $backRef->linkItem($GLOBALS['LANG']->makeEntities($GLOBALS['LANG']->getLLL('label', $LL)), $backRef->excludeIcon(''), 'top.loadTopMenu(\'' . \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript() . '&cmLevel=1&subname=moreoptions\');return false;', 0, 1); if (!in_array('hide', $backRef->disabledItems) && is_array($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']) && $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']) { $localItems['hide'] = $backRef->DB_hideUnhide($table, $backRef->rec, $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']); } if (!in_array('edit_access', $backRef->disabledItems) && is_array($GLOBALS['TCA'][$table]['ctrl']['enablecolumns'])) { $localItems['edit_access'] = $backRef->DB_editAccess($table, $uid); } if (!in_array('edit_pageproperties', $backRef->disabledItems) && $table == 'pages' && $backRef->editPageIconSet) { $localItems['edit_pageproperties'] = $backRef->DB_editPageProperties($uid); } } // Find delete element among the input menu items and insert the local items just before that: $c = 0; $deleteFound = FALSE; foreach ($menuItems as $k => $value) { $c++; if (!strcmp($k, 'delete')) { $deleteFound = TRUE; break; } } if ($deleteFound) { // .. subtract two... (delete item + its spacer element...) $c -= 2; // and insert the items just before the delete element. array_splice($menuItems, $c, 0, $localItems); } else { $menuItems = array_merge($menuItems, $localItems); } } elseif ($subname === 'moreoptions') { // If the page can be edited, then show this: if ($backRef->editOK) { if (!in_array('move_wizard', $backRef->disabledItems) && ($table == 'pages' || $table == 'tt_content')) { $localItems['move_wizard'] = $backRef->DB_moveWizard($table, $uid, $backRef->rec); } if (!in_array('new_wizard', $backRef->disabledItems) && ($table == 'pages' || $table == 'tt_content')) { $localItems['new_wizard'] = $backRef->DB_newWizard($table, $uid, $backRef->rec); } if (!in_array('perms', $backRef->disabledItems) && $table == 'pages' && $GLOBALS['BE_USER']->check('modules', 'web_perm')) { $localItems['perms'] = $backRef->DB_perms($table, $uid, $backRef->rec); } if (!in_array('db_list', $backRef->disabledItems) && $GLOBALS['BE_USER']->check('modules', 'web_list')) { $localItems['db_list'] = $backRef->DB_db_list($table, $uid, $backRef->rec); } } // Temporary mount point item: if ($table == 'pages') { $localItems['temp_mount_point'] = $backRef->DB_tempMountPoint($uid); } // Merge the locally made items into the current menu items passed to this function. $menuItems = array_merge($menuItems, $localItems); } return $menuItems; }
/** * Adding various standard options to the context menu. * This includes both first and second level. * * @param object $backRef The calling object. Value by reference. * @param array $menuItems Array with the currently collected menu items to show. * @param string $table Table name of clicked item. * @param integer $uid UID of clicked item. * @return array Modified $menuItems array */ public function main(&$backRef, $menuItems, $table, $uid) { // Accumulation of local items. $localItems = array(); $subname = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('subname'); // Detecting menu level // LEVEL: Primary menu. if (!in_array('moreoptions', $backRef->disabledItems) && !$backRef->cmLevel) { // Creating menu items here: if ($backRef->editOK) { $localLanguage = $GLOBALS['LANG']->includeLLFile('EXT:extra_page_cm_options/locallang.xlf', FALSE); $localItems[] = 'spacer'; $localItems['moreoptions'] = $backRef->linkItem($GLOBALS['LANG']->makeEntities($GLOBALS['LANG']->getLLL('label', $localLanguage)), $backRef->excludeIcon(''), 'top.loadTopMenu(\'' . \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript() . '&cmLevel=1&subname=moreoptions\');return false;', 0, 1); $menuItemHideUnhideAllowed = FALSE; $hiddenField = ''; // Check if column for disabled is defined if (isset($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']) && isset($GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'])) { $hiddenField = $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']; if ($hiddenField !== '' && !empty($GLOBALS['TCA'][$table]['columns'][$hiddenField]) && (!empty($GLOBALS['TCA'][$table]['columns'][$hiddenField]['exclude']) && $GLOBALS['BE_USER']->check('non_exclude_fields', $table . ':' . $hiddenField))) { $menuItemHideUnhideAllowed = TRUE; } } if ($menuItemHideUnhideAllowed && !in_array('hide', $backRef->disabledItems)) { $localItems['hide'] = $backRef->DB_hideUnhide($table, $backRef->rec, $hiddenField); } $anyEnableColumnsFieldAllowed = FALSE; // Check if columns are defined if (isset($GLOBALS['TCA'][$table]['ctrl']['enablecolumns'])) { $columnsToCheck = $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']; if ($table === 'pages' && !empty($columnsToCheck)) { $columnsToCheck[] = 'extendToSubpages'; } foreach ($columnsToCheck as $currentColumn) { if (isset($GLOBALS['TCA'][$table]['columns'][$currentColumn]) && (!empty($GLOBALS['TCA'][$table]['columns'][$currentColumn]['exclude']) && $GLOBALS['BE_USER']->check('non_exclude_fields', $table . ':' . $currentColumn))) { $anyEnableColumnsFieldAllowed = TRUE; } } } if ($anyEnableColumnsFieldAllowed && !in_array('edit_access', $backRef->disabledItems)) { $localItems['edit_access'] = $backRef->DB_editAccess($table, $uid); } if ($table === 'pages' && $backRef->editPageIconSet && !in_array('edit_pageproperties', $backRef->disabledItems)) { $localItems['edit_pageproperties'] = $backRef->DB_editPageProperties($uid); } } // Find delete element among the input menu items and insert the local items just before that: $c = 0; $deleteFound = FALSE; foreach ($menuItems as $key => $value) { $c++; if ($key === 'delete') { $deleteFound = TRUE; break; } } if ($deleteFound) { // .. subtract two... (delete item + its spacer element...) $c -= 2; // and insert the items just before the delete element. array_splice($menuItems, $c, 0, $localItems); } else { $menuItems = array_merge($menuItems, $localItems); } } elseif ($subname === 'moreoptions') { // If the page can be edited, then show this: if ($backRef->editOK) { if (($table === 'pages' || $table === 'tt_content') && !in_array('move_wizard', $backRef->disabledItems)) { $localItems['move_wizard'] = $backRef->DB_moveWizard($table, $uid, $backRef->rec); } if (($table === 'pages' || $table === 'tt_content') && !in_array('new_wizard', $backRef->disabledItems)) { $localItems['new_wizard'] = $backRef->DB_newWizard($table, $uid, $backRef->rec); } if ($table === 'pages' && !in_array('perms', $backRef->disabledItems) && $GLOBALS['BE_USER']->check('modules', 'web_perm')) { $localItems['perms'] = $backRef->DB_perms($table, $uid, $backRef->rec); } if (!in_array('db_list', $backRef->disabledItems) && $GLOBALS['BE_USER']->check('modules', 'web_list')) { $localItems['db_list'] = $backRef->DB_db_list($table, $uid, $backRef->rec); } } // Temporary mount point item: if ($table === 'pages') { $localItems['temp_mount_point'] = $backRef->DB_tempMountPoint($uid); } // Merge the locally made items into the current menu items passed to this function. $menuItems = array_merge($menuItems, $localItems); } return $menuItems; }