init(); } /** * Wrapping icon in browse tree * * @param string $thePageIcon Icon IMG code * @param array $row Data row for element. * @return string Page icon */ public function wrapIcon($thePageIcon, $row) { /** @var IconFactory $iconFactory */ $iconFactory = GeneralUtility::makeInstance(IconFactory::class); // If the record is locked, present a warning sign. if ($lockInfo = BackendUtility::isRecordLocked('pages', $row['uid'])) { $aOnClick = 'alert(' . GeneralUtility::quoteJSvalue($lockInfo['msg']) . ');return false;'; $lockIcon = '' . '' . $iconFactory->getIcon('warning-in-use', Icon::SIZE_SMALL)->render() . ''; } else { $lockIcon = ''; } // Wrap icon in click-menu link. if (!$this->ext_IconMode) { $thePageIcon = BackendUtility::wrapClickMenuOnIcon($thePageIcon, 'pages', $row['uid'], 'tree'); } elseif ($this->ext_IconMode === 'titlelink') { $aOnClick = 'return jumpTo(' . GeneralUtility::quoteJSvalue($this->getJumpToParam($row)) . ',this,' . GeneralUtility::quoteJSvalue($this->treeName) . ');'; $thePageIcon = '' . $thePageIcon . ''; } // Wrap icon in a drag/drop span. $dragDropIcon = '' . $thePageIcon . ' '; // Add Page ID: $pageIdStr = ''; if ($this->ext_showPageId) { $pageIdStr = '[' . $row['uid'] . '] '; } // Call stats information hook $stat = ''; $_params = ['pages', $row['uid']]; foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['recStatInfoHooks'] ?? [] as $_funcRef) { $stat .= GeneralUtility::callUserFunction($_funcRef, $_params, $this); } return $dragDropIcon . $lockIcon . $pageIdStr . $stat; } /** * Wrapping $title in a-tags. * * @param string $title Title string * @param string $row Item record * @param int $bank Bank pointer (which mount point number) * @return string * @internal */ public function wrapTitle($title, $row, $bank = 0) { // Hook for overriding the page title $_params = ['title' => &$title, 'row' => &$row]; foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.webpagetree.php']['pageTitleOverlay'] ?? [] as $_funcRef) { GeneralUtility::callUserFunction($_funcRef, $_params, $this); } $aOnClick = 'return jumpTo(' . GeneralUtility::quoteJSvalue($this->getJumpToParam($row)) . ',this,' . GeneralUtility::quoteJSvalue($this->domIdPrefix . $this->getId($row)) . ',' . $bank . ');'; /** @var array $clickMenuParts */ $clickMenuParts = BackendUtility::wrapClickMenuOnIcon('', 'pages', $row['uid'], 'tree', '', '', true); $thePageTitle = '' . $title . ''; // Wrap title in a drag/drop span. return '' . $thePageTitle . ''; } /** * Compiles the HTML code for displaying the structure found inside the ->tree array * * @param array|string $treeArr "tree-array" - if blank string, the internal ->tree array is used. * @return string The HTML code for the tree */ public function printTree($treeArr = '') { $titleLen = (int)$this->BE_USER->uc['titleLen']; if (!is_array($treeArr)) { $treeArr = $this->tree; } $out = '