‪TYPO3CMS  9.5
PagePositionMap.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
30 
37 {
39 
45  protected ‪$deprecatedPublicProperties = [
46  'getModConfigCache' => 'Using $getModConfigCache of class PagePositionMap is discouraged. This property will be removed in TYPO3 v10.0.',
47  'modConfigStr' => 'Using $$modConfigStr of class PagePositionMap is discouraged. This property will be removed in TYPO3 v10.0.',
48  ];
49 
50  // EXTERNAL, static:
54  public ‪$moveOrCopy = 'move';
55 
60 
61  // How deep the position page tree will go.
65  public ‪$depth = 2;
66 
67  // Can be set to the sys_language uid to select content elements for.
72 
73  // INTERNAL, dynamic:
74  // Request uri
78  public ‪$R_URI = '';
79 
80  // Element id.
84  public ‪$elUid = '';
85 
86  // tt_content element uid to move.
90  public ‪$moveUid = '';
91 
92  // Caching arrays:
96  protected ‪$getModConfigCache = [];
97 
101  public ‪$checkNewPageCache = [];
102 
103  // Label keys:
107  public ‪$l_insertNewPageHere = 'insertNewPageHere';
108 
112  public ‪$l_insertNewRecordHere = 'insertNewRecordHere';
113 
117  protected ‪$modConfigStr = 'mod.web_list.newPageWiz';
118 
124  protected ‪$pageTreeClassName = ElementBrowserPageTreeView::class;
125 
129  protected ‪$iconFactory;
130 
134  protected ‪$clientContext;
135 
142  public function ‪__construct(string ‪$pageTreeClassName = null, string ‪$clientContext = 'window')
143  {
144  if (‪$pageTreeClassName !== null) {
145  $this->pageTreeClassName = ‪$pageTreeClassName;
146  }
147  $this->clientContext = ‪$clientContext;
148  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
149  }
150 
151  /*************************************
152  *
153  * Page position map:
154  *
155  **************************************/
165  public function ‪positionTree($id, $pageinfo, $perms_clause, ‪$R_URI)
166  {
167  // Make page tree object:
169  $pageTree = GeneralUtility::makeInstance($this->pageTreeClassName);
170  $pageTree->init(' AND ' . $perms_clause);
171  $pageTree->addField('pid');
172  // Initialize variables:
173  $this->R_URI = ‪$R_URI;
174  $this->elUid = $id;
175  // Create page tree, in $this->depth levels.
176  $pageTree->getTree($pageinfo['pid'], $this->depth);
177  // Initialize variables:
178  $saveLatestUid = [];
179  $latestInvDepth = ‪$this->depth;
180  // Traverse the tree:
181  $lines = [];
182  foreach ($pageTree->tree as $cc => $dat) {
183  if ($latestInvDepth > $dat['invertedDepth']) {
184  $margin = 'style="margin-left: ' . ($dat['invertedDepth'] * 16 + 9) . 'px;"';
185  $lines[] = '<ul class="list-tree" ' . $margin . '>';
186  }
187  // Make link + parameters.
188  $latestInvDepth = $dat['invertedDepth'];
189  $saveLatestUid[$latestInvDepth] = $dat;
190  if (isset($pageTree->tree[$cc - 1])) {
191  $prev_dat = $pageTree->tree[$cc - 1];
192  // If current page, subpage?
193  if ($prev_dat['row']['uid'] == $id) {
194  // 1) It must be allowed to create a new page and 2) If there are subpages there is no need to render a subpage icon here - it'll be done over the subpages...
195  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($id) && !($prev_dat['invertedDepth'] > $pageTree->tree[$cc]['invertedDepth'])) {
196  end($lines);
197  $margin = 'style="margin-left: ' . (($dat['invertedDepth'] - 1) * 16 + 9) . 'px;"';
198  $lines[] = '<ul class="list-tree" ' . $margin . '><li><span class="text-nowrap"><a href="#" onclick="' . htmlspecialchars($this->‪onClickEvent($id, $id)) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span></li></ul>';
199  }
200  }
201  // If going down
202  if ($prev_dat['invertedDepth'] > $pageTree->tree[$cc]['invertedDepth']) {
203  $prevPid = $pageTree->tree[$cc]['row']['pid'];
204  } elseif ($prev_dat['invertedDepth'] < $pageTree->tree[$cc]['invertedDepth']) {
205  // If going up
206  // First of all the previous level should have an icon:
207  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($prev_dat['row']['pid'])) {
208  $prevPid = -$prev_dat['row']['uid'];
209  end($lines);
210  $lines[] = '<li><span class="text-nowrap"><a href="#" onclick="' . htmlspecialchars($this->‪onClickEvent($prevPid, $prev_dat['row']['pid'])) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span></li>';
211  }
212  // Then set the current prevPid
213  $prevPid = -$prev_dat['row']['pid'];
214  if ($prevPid !== $dat['row']['pid']) {
215  $lines[] = '</ul>';
216  }
217  } else {
218  // In on the same level
219  $prevPid = -$prev_dat['row']['uid'];
220  }
221  } else {
222  // First in the tree
223  $prevPid = $dat['row']['pid'];
224  }
225  // print arrow on the same level
226  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($dat['row']['pid'])) {
227  $lines[] = '<span class="text-nowrap"><a href="#" onclick="' . htmlspecialchars($this->‪onClickEvent($prevPid, $dat['row']['pid'])) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span>';
228  }
229  // The line with the icon and title:
230  $toolTip = ‪BackendUtility::getRecordToolTip($dat['row'], 'pages');
231  $icon = '<span ' . $toolTip . '>' . $this->iconFactory->getIconForRecord('pages', $dat['row'], ‪Icon::SIZE_SMALL)->render() . '</span>';
232 
233  $lines[] = '<span class="text-nowrap">' . $icon . $this->‪linkPageTitle($this->‪boldTitle(htmlspecialchars(GeneralUtility::fixed_lgd_cs($dat['row']['title'], $this->‪getBackendUser()->uc['titleLen'])), $dat, $id), $dat['row']) . '</span>';
234  }
235  // If the current page was the last in the tree:
236  $prev_dat = end($pageTree->tree);
237  if ($prev_dat['row']['uid'] == $id) {
238  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($id)) {
239  $lines[] = '<ul class="list-tree" style="margin-left: 25px"><li><span class="text-nowrap"><a href="#" onclick="' . htmlspecialchars($this->‪onClickEvent($id, $id)) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span></li></ul>';
240  }
241  }
242  for ($a = $latestInvDepth; $a <= ‪$this->depth; $a++) {
243  $dat = $saveLatestUid[$a];
244  $prevPid = -$dat['row']['uid'];
245  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($dat['row']['pid'])) {
246  if ($latestInvDepth < $dat['invertedDepth']) {
247  $lines[] = '</ul>';
248  }
249  $lines[] = '<span class="text-nowrap"><a href="#" onclick="' . htmlspecialchars($this->‪onClickEvent($prevPid, $dat['row']['pid'])) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span>';
250  }
251  }
252 
253  $code = '<ul class="list-tree">';
254 
255  foreach ($lines as $line) {
256  if ((strpos($line, '<ul') === 0) || (strpos($line, '</ul') === 0)) {
257  $code .= $line;
258  } else {
259  $code .= '<li>' . $line . '</li>';
260  }
261  }
262 
263  $code .= '</ul>';
264  return $code;
265  }
266 
275  public function ‪boldTitle($t_code, $dat, $id)
276  {
277  if ($dat['row']['uid'] == $id) {
278  $t_code = '<strong>' . $t_code . '</strong>';
279  }
280  return $t_code;
281  }
282 
293  public function ‪onClickEvent($pid, $newPagePID)
294  {
295  $TSconfig = ‪BackendUtility::getPagesTSconfig($newPagePID)['mod.']['newPageWizard.'] ?? [];
296  if (isset($TSconfig['override']) && !empty($TSconfig['override'])) {
297  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
298  $url = $uriBuilder->buildUriFromRoute(
299  $TSconfig['override'],
300  [
301  'positionPid' => $pid,
302  'newPageId' => $newPagePID,
303  'cmd' => 'crPage',
304  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
305  ]
306  );
307  return $this->clientContext . '.location.href=' . GeneralUtility::quoteJSvalue((string)$url) . ';';
308  }
309  $params = '&edit[pages][' . $pid . ']=new&returnNewPageId=1';
310  return ‪BackendUtility::editOnClick($params, '', $this->R_URI);
311  }
312 
318  public function ‪insertlabel()
319  {
320  return htmlspecialchars($this->‪getLanguageService()->getLL($this->l_insertNewPageHere));
321  }
322 
330  public function ‪linkPageTitle($str, $rec)
331  {
332  return $str;
333  }
334 
342  public function ‪checkNewPageInPid($pid)
343  {
344  if (!isset($this->checkNewPageCache[$pid])) {
345  $pidInfo = ‪BackendUtility::getRecord('pages', $pid);
346  $this->checkNewPageCache[$pid] = $this->‪getBackendUser()->‪isAdmin() || $this->‪getBackendUser()->‪doesUserHaveAccess($pidInfo, 8);
347  }
348  return $this->checkNewPageCache[$pid];
349  }
350 
359  public function ‪getModConfig($pid)
360  {
361  trigger_error('PagePositionMap->getModConfig() will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
362  if (!isset($this->getModConfigCache[$pid])) {
363  // Acquiring TSconfig for this PID:
364  $this->getModConfigCache[$pid]['properties'] = ‪BackendUtility::getPagesTSconfig($pid)['mod.']['web_list.']['newPageWiz.'] ?? [];
365  }
366  return $this->getModConfigCache[$pid]['properties'];
367  }
368 
369  /*************************************
370  *
371  * Content element positioning:
372  *
373  **************************************/
384  public function ‪printContentElementColumns($pid, ‪$moveUid, $colPosList, $showHidden, ‪$R_URI)
385  {
386  $this->R_URI = ‪$R_URI;
387  $this->moveUid = ‪$moveUid;
388  $colPosArray = GeneralUtility::trimExplode(',', $colPosList, true);
389  $lines = [];
390  foreach ($colPosArray as $kk => $vv) {
391  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
392  $queryBuilder->getRestrictions()->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));
393  if ($showHidden) {
394  $queryBuilder->getRestrictions()
395  ->removeByType(HiddenRestriction::class)
396  ->removeByType(StartTimeRestriction::class)
397  ->removeByType(EndTimeRestriction::class);
398  }
399  $queryBuilder
400  ->select('*')
401  ->from('tt_content')
402  ->where(
403  $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)),
404  $queryBuilder->expr()->eq('colPos', $queryBuilder->createNamedParameter($vv, \PDO::PARAM_INT))
405  )
406  ->orderBy('sorting');
407 
408  if ((string)$this->cur_sys_language !== '') {
409  $queryBuilder->andWhere(
410  $queryBuilder->expr()->eq(
411  'sys_language_uid',
412  $queryBuilder->createNamedParameter($this->cur_sys_language, \PDO::PARAM_INT)
413  )
414  );
415  }
416 
417  $res = $queryBuilder->execute();
418  $lines[$vv] = [];
419  $lines[$vv][] = $this->‪insertPositionIcon('', $vv, $kk, ‪$moveUid, $pid);
420 
421  while ($row = $res->fetch()) {
422  ‪BackendUtility::workspaceOL('tt_content', $row);
423  if (is_array($row)) {
424  $lines[$vv][] = $this->‪wrapRecordHeader($this->‪getRecordHeader($row), $row);
425  $lines[$vv][] = $this->‪insertPositionIcon($row, $vv, $kk, ‪$moveUid, $pid);
426  }
427  }
428  }
429  return $this->‪printRecordMap($lines, $colPosArray, $pid);
430  }
431 
440  public function ‪printRecordMap($lines, $colPosArray, $pid = 0)
441  {
442  $count = ‪\TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange(count($colPosArray), 1);
443  $backendLayout = GeneralUtility::callUserFunction(\‪TYPO3\CMS\Backend\View\BackendLayoutView::class . '->getSelectedBackendLayout', $pid, $this);
444  if (isset($backendLayout['__config']['backend_layout.'])) {
445  $this->‪getLanguageService()->‪includeLLFile('EXT:backend/Resources/Private/Language/locallang_layout.xlf');
446  $table = '<div class="table-fit"><table class="table table-condensed table-bordered table-vertical-top">';
447  $colCount = (int)$backendLayout['__config']['backend_layout.']['colCount'];
448  $rowCount = (int)$backendLayout['__config']['backend_layout.']['rowCount'];
449  $table .= '<colgroup>';
450  for ($i = 0; $i < $colCount; $i++) {
451  $table .= '<col style="width:' . 100 / $colCount . '%"></col>';
452  }
453  $table .= '</colgroup>';
454  $table .= '<tbody>';
455  $tcaItems = GeneralUtility::callUserFunction(\‪TYPO3\CMS\Backend\View\BackendLayoutView::class . '->getColPosListItemsParsed', $pid, $this);
456  // Cycle through rows
457  for ($row = 1; $row <= $rowCount; $row++) {
458  $rowConfig = $backendLayout['__config']['backend_layout.']['rows.'][$row . '.'];
459  if (!isset($rowConfig)) {
460  continue;
461  }
462  $table .= '<tr>';
463  for ($col = 1; $col <= $colCount; $col++) {
464  $columnConfig = $rowConfig['columns.'][$col . '.'];
465  if (!isset($columnConfig)) {
466  continue;
467  }
468  // Which tt_content colPos should be displayed inside this cell
469  $columnKey = (int)$columnConfig['colPos'];
470  $head = '';
471  foreach ($tcaItems as $item) {
472  if ($item[1] == $columnKey) {
473  $head = htmlspecialchars($this->‪getLanguageService()->sL($item[0]));
474  }
475  }
476  // Render the grid cell
477  $table .= '<td'
478  . (isset($columnConfig['colspan']) ? ' colspan="' . $columnConfig['colspan'] . '"' : '')
479  . (isset($columnConfig['rowspan']) ? ' rowspan="' . $columnConfig['rowspan'] . '"' : '')
480  . ' class="col-nowrap col-min'
481  . (!isset($columnConfig['colPos']) ? ' warning' : '')
482  . (isset($columnConfig['colPos']) && !$head ? ' danger' : '') . '">';
483  // Render header
484  $table .= '<p>';
485  if (isset($columnConfig['colPos']) && $head) {
486  $table .= '<strong>' . $this->‪wrapColumnHeader($head, '') . '</strong>';
487  } elseif ($columnConfig['colPos']) {
488  $table .= '<em>' . $this->‪wrapColumnHeader($this->‪getLanguageService()->getLL('noAccess'), '') . '</em>';
489  } else {
490  $table .= '<em>' . $this->‪wrapColumnHeader(($this->‪getLanguageService()->sL($columnConfig['name']) ?: '') . ' (' . $this->‪getLanguageService()->getLL('notAssigned') . ')', '') . '</em>';
491  }
492  $table .= '</p>';
493  // Render lines
494  if (isset($columnConfig['colPos']) && $head && !empty($lines[$columnKey])) {
495  $table .= '<ul class="list-unstyled">';
496  foreach ($lines[$columnKey] as $line) {
497  $table .= '<li>' . $line . '</li>';
498  }
499  $table .= '</ul>';
500  }
501  $table .= '</td>';
502  }
503  $table .= '</tr>';
504  }
505  $table .= '</tbody>';
506  $table .= '</table></div>';
507  } else {
508  // Traverse the columns here:
509  $row = '';
510  foreach ($colPosArray as $kk => $vv) {
511  $row .= '<td class="col-nowrap col-min" width="' . round(100 / $count) . '%">';
512  $row .= '<p><strong>' . $this->‪wrapColumnHeader(htmlspecialchars($this->‪getLanguageService()->sL(‪BackendUtility::getLabelFromItemlist('tt_content', 'colPos', $vv))), $vv) . '</strong></p>';
513  if (!empty($lines[$vv])) {
514  $row .= '<ul class="list-unstyled">';
515  foreach ($lines[$vv] as $line) {
516  $row .= '<li>' . $line . '</li>';
517  }
518  $row .= '</ul>';
519  }
520  $row .= '</td>';
521  }
522  $table = '
523 
524  <!--
525  Map of records in columns:
526  -->
527  <div class="table-fit">
528  <table class="table table-condensed table-bordered table-vertical-top">
529  <tr>' . $row . '</tr>
530  </table>
531  </div>
532 
533  ';
534  }
535  return $table;
536  }
537 
546  public function ‪wrapColumnHeader($str, $vv)
547  {
548  return $str;
549  }
550 
562  public function ‪insertPositionIcon($row, $vv, $kk, ‪$moveUid, $pid)
563  {
564  if (is_array($row) && !empty($row['uid'])) {
565  // Use record uid for the hash when inserting after this content element
566  $uid = $row['uid'];
567  } else {
568  // No uid means insert at first position in the column
569  $uid = '';
570  }
571  $cc = hexdec(substr(md5($uid . '-' . $vv . '-' . $kk), 0, 4));
572  return '<a href="#" onclick="' . htmlspecialchars($this->‪onClickInsertRecord($row, $vv, ‪$moveUid, $pid, $this->cur_sys_language)) . '" data-dismiss="modal">' . '<i class="t3-icon fa fa-long-arrow-left" name="mImgEnd' . $cc . '" title="' . htmlspecialchars($this->‪getLanguageService()->getLL($this->l_insertNewRecordHere)) . '"></i></a>';
573  }
574 
586  public function ‪onClickInsertRecord($row, $vv, ‪$moveUid, $pid, $sys_lang = 0)
587  {
588  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
589  if (is_array($row)) {
590  $location = $uriBuilder->buildUriFromRoute('tce_db', [
591  'cmd[tt_content][' . ‪$moveUid . '][' . $this->moveOrCopy . ']' => '-' . $row['uid'],
592  'redirect' => $this->R_URI,
593  ]);
594  } else {
595  $location = $uriBuilder->buildUriFromRoute('tce_db', [
596  'cmd[tt_content][' . ‪$moveUid . '][' . $this->moveOrCopy . ']' => $pid,
597  'data[tt_content][' . ‪$moveUid . '][colPos]' => $vv,
598  'redirect' => $this->R_URI,
599  ]);
600  }
601  // returns to prev. page
602  return $this->clientContext . '.location.href=' . GeneralUtility::quoteJSvalue((string)$location) . ';return false;';
603  }
604 
612  public function ‪wrapRecordHeader($str, $row)
613  {
614  return $str;
615  }
616 
623  public function ‪getRecordHeader($row)
624  {
625  ‪$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
626  $toolTip = ‪BackendUtility::getRecordToolTip($row, 'tt_content');
627  $line = '<span ' . $toolTip . ' title="' . ‪BackendUtility::getRecordIconAltText($row, 'tt_content') . '">' . ‪$iconFactory->‪getIconForRecord('tt_content', $row, ‪Icon::SIZE_SMALL)->‪render() . '</span>';
628  $line .= ‪BackendUtility::getRecordTitle('tt_content', $row, true);
629  return $this->‪wrapRecordTitle($line, $row);
630  }
631 
639  public function ‪wrapRecordTitle($str, $row)
640  {
641  return '<a href="' . htmlspecialchars(GeneralUtility::linkThisScript(['uid' => (int)$row['uid'], 'moveUid' => ''])) . '">' . $str . '</a>';
642  }
643 
649  protected function ‪getBackendUser()
650  {
651  return ‪$GLOBALS['BE_USER'];
652  }
653 
659  protected function ‪getLanguageService()
660  {
661  return ‪$GLOBALS['LANG'];
662  }
663 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:29
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\linkPageTitle
‪string linkPageTitle($str, $rec)
Definition: PagePositionMap.php:315
‪TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction
Definition: HiddenRestriction.php:25
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\onClickEvent
‪string onClickEvent($pid, $newPagePID)
Definition: PagePositionMap.php:278
‪TYPO3\CMS\Core\Localization\LanguageService\includeLLFile
‪mixed includeLLFile($fileRef, $setGlobal=true, $mergeLocalOntoDefault=false)
Definition: LanguageService.php:260
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getModConfig
‪array getModConfig($pid)
Definition: PagePositionMap.php:344
‪TYPO3\CMS\Core\Database\Query\Restriction\EndTimeRestriction
Definition: EndTimeRestriction.php:25
‪TYPO3\CMS\Core\Database\Query\Restriction\StartTimeRestriction
Definition: StartTimeRestriction.php:25
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:25
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$cur_sys_language
‪string $cur_sys_language
Definition: PagePositionMap.php:65
‪TYPO3\CMS\Core\Imaging\Icon\render
‪string render($alternativeMarkupIdentifier=null)
Definition: Icon.php:231
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$pageTreeClassName
‪string $pageTreeClassName
Definition: PagePositionMap.php:111
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$R_URI
‪string $R_URI
Definition: PagePositionMap.php:71
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\wrapRecordTitle
‪string wrapRecordTitle($str, $row)
Definition: PagePositionMap.php:624
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$l_insertNewPageHere
‪string $l_insertNewPageHere
Definition: PagePositionMap.php:96
‪TYPO3
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\isAdmin
‪bool isAdmin()
Definition: BackendUserAuthentication.php:294
‪TYPO3\CMS\Core\Utility\MathUtility\forceIntegerInRange
‪static int forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
Definition: MathUtility.php:31
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$deprecatedPublicProperties
‪array $deprecatedPublicProperties
Definition: PagePositionMap.php:43
‪TYPO3\CMS\Core\Database\Query\Restriction\BackendWorkspaceRestriction
Definition: BackendWorkspaceRestriction.php:28
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$elUid
‪string $elUid
Definition: PagePositionMap.php:76
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordIconAltText
‪static string getRecordIconAltText($row, $table='pages')
Definition: BackendUtility.php:1621
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:31
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$clientContext
‪string $clientContext
Definition: PagePositionMap.php:119
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\wrapColumnHeader
‪string wrapColumnHeader($str, $vv)
Definition: PagePositionMap.php:531
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$checkNewPageCache
‪array $checkNewPageCache
Definition: PagePositionMap.php:91
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\positionTree
‪string positionTree($id, $pageinfo, $perms_clause, $R_URI)
Definition: PagePositionMap.php:150
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\insertlabel
‪string insertlabel()
Definition: PagePositionMap.php:303
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getRecordHeader
‪string getRecordHeader($row)
Definition: PagePositionMap.php:608
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: PagePositionMap.php:634
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\checkNewPageInPid
‪bool checkNewPageInPid($pid)
Definition: PagePositionMap.php:327
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getLanguageService
‪LanguageService getLanguageService()
Definition: PagePositionMap.php:644
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:35
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap
Definition: PagePositionMap.php:37
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\doesUserHaveAccess
‪bool doesUserHaveAccess($row, $perms)
Definition: BackendUserAuthentication.php:331
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordToolTip
‪static string getRecordToolTip(array $row, $table='pages')
Definition: BackendUtility.php:1603
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordTitle
‪static string getRecordTitle($table, $row, $prep=false, $forceResult=true)
Definition: BackendUtility.php:1811
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\boldTitle
‪string boldTitle($t_code, $dat, $id)
Definition: PagePositionMap.php:260
‪TYPO3\CMS\Core\Imaging\IconFactory\getIconForRecord
‪Icon getIconForRecord($table, array $row, $size=Icon::SIZE_DEFAULT)
Definition: IconFactory.php:109
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$getModConfigCache
‪$getModConfigCache
Definition: PagePositionMap.php:87
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\wrapRecordHeader
‪string wrapRecordHeader($str, $row)
Definition: PagePositionMap.php:597
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\printContentElementColumns
‪string printContentElementColumns($pid, $moveUid, $colPosList, $showHidden, $R_URI)
Definition: PagePositionMap.php:369
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\printRecordMap
‪string printRecordMap($lines, $colPosArray, $pid=0)
Definition: PagePositionMap.php:425
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:45
‪TYPO3\CMS\Backend\Utility\BackendUtility\editOnClick
‪static string editOnClick($params, $_='', $requestUri='')
Definition: BackendUtility.php:2592
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$iconFactory
‪IconFactory $iconFactory
Definition: PagePositionMap.php:115
‪TYPO3\CMS\Backend\Tree\View
Definition: AbstractTreeView.php:2
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:72
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$modConfigStr
‪$modConfigStr
Definition: PagePositionMap.php:105
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$moveUid
‪string $moveUid
Definition: PagePositionMap.php:81
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecord
‪static array null getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
Definition: BackendUtility.php:130
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$depth
‪int $depth
Definition: PagePositionMap.php:60
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$dontPrintPageInsertIcons
‪int $dontPrintPageInsertIcons
Definition: PagePositionMap.php:55
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\onClickInsertRecord
‪string onClickInsertRecord($row, $vv, $moveUid, $pid, $sys_lang=0)
Definition: PagePositionMap.php:571
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$moveOrCopy
‪string $moveOrCopy
Definition: PagePositionMap.php:51
‪TYPO3\CMS\Backend\Utility\BackendUtility\getPagesTSconfig
‪static array getPagesTSconfig($id, $rootLine=null, $returnPartArray=false)
Definition: BackendUtility.php:864
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Backend\Utility\BackendUtility\workspaceOL
‪static workspaceOL($table, &$row, $wsid=-99, $unsetMovePointers=false)
Definition: BackendUtility.php:4048
‪TYPO3\CMS\Backend\Utility\BackendUtility\getLabelFromItemlist
‪static string getLabelFromItemlist($table, $col, $key)
Definition: BackendUtility.php:1680
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\__construct
‪__construct(string $pageTreeClassName=null, string $clientContext='window')
Definition: PagePositionMap.php:127
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$l_insertNewRecordHere
‪string $l_insertNewRecordHere
Definition: PagePositionMap.php:100
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:29
‪TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait
Definition: PublicPropertyDeprecationTrait.php:66
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:44
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\insertPositionIcon
‪string insertPositionIcon($row, $vv, $kk, $moveUid, $pid)
Definition: PagePositionMap.php:547