‪TYPO3CMS  10.4
PagePositionMap.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
32 
39 {
40  // EXTERNAL, static:
44  public ‪$moveOrCopy = 'move';
45 
50 
51  // How deep the position page tree will go.
55  public ‪$depth = 2;
56 
57  // Can be set to the sys_language uid to select content elements for.
61  public ‪$cur_sys_language;
62 
63  // INTERNAL, dynamic:
64  // Request uri
68  public ‪$R_URI = '';
69 
70  // Element id.
74  public ‪$elUid = '';
75 
76  // tt_content element uid to move.
80  public ‪$moveUid = '';
81 
85  public ‪$checkNewPageCache = [];
86 
87  // Label keys:
91  public ‪$l_insertNewPageHere = 'insertNewPageHere';
92 
96  public ‪$l_insertNewRecordHere = 'insertNewRecordHere';
97 
103  protected ‪$pageTreeClassName = ElementBrowserPageTreeView::class;
104 
108  protected ‪$iconFactory;
109 
113  protected ‪$clientContext;
114 
121  public function ‪__construct(string ‪$pageTreeClassName = null, string ‪$clientContext = 'window')
122  {
123  if (‪$pageTreeClassName !== null) {
124  $this->pageTreeClassName = ‪$pageTreeClassName;
125  }
126  $this->clientContext = ‪$clientContext;
127  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
128  }
129 
130  /*************************************
131  *
132  * Page position map:
133  *
134  **************************************/
144  public function ‪positionTree($id, $pageinfo, $perms_clause, ‪$R_URI)
145  {
146  // Make page tree object
147  if ($this->pageTreeClassName === NewRecordPageTreeView::class) {
148  $pageTree = GeneralUtility::makeInstance($this->pageTreeClassName, (int)$id);
149  } else {
150  $pageTree = GeneralUtility::makeInstance($this->pageTreeClassName);
151  }
153  $pageTree->init(' AND ' . $perms_clause);
154  $pageTree->addField('pid');
155  // Initialize variables:
156  $this->R_URI = ‪$R_URI;
157  $this->elUid = $id;
158  // Create page tree, in $this->depth levels.
159  $pageTree->getTree($pageinfo['pid'], $this->depth);
160  // Initialize variables:
161  $saveLatestUid = [];
162  $latestInvDepth = ‪$this->depth;
163  // Traverse the tree:
164  $lines = [];
165  foreach ($pageTree->tree as $cc => $dat) {
166  if ($latestInvDepth > $dat['invertedDepth']) {
167  $margin = 'style="margin-left: ' . ($dat['invertedDepth'] * 16 + 9) . 'px;"';
168  $lines[] = '<ul class="list-tree" ' . $margin . '>';
169  }
170  // Make link + parameters.
171  $latestInvDepth = $dat['invertedDepth'];
172  $saveLatestUid[$latestInvDepth] = $dat;
173  if (isset($pageTree->tree[$cc - 1])) {
174  $prev_dat = $pageTree->tree[$cc - 1];
175  // If current page, subpage?
176  if ($prev_dat['row']['uid'] == $id) {
177  // 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...
178  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($id) && !($prev_dat['invertedDepth'] > $pageTree->tree[$cc]['invertedDepth'])) {
179  end($lines);
180  $margin = 'style="margin-left: ' . (($dat['invertedDepth'] - 1) * 16 + 9) . 'px;"';
181  $lines[] = '<ul class="list-tree" ' . $margin . '><li><span class="text-nowrap"><a href="' . htmlspecialchars($this->‪getActionLink($id, $id)) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span></li></ul>';
182  }
183  }
184  // If going down
185  if ($prev_dat['invertedDepth'] > $pageTree->tree[$cc]['invertedDepth']) {
186  $prevPid = $pageTree->tree[$cc]['row']['pid'];
187  } elseif ($prev_dat['invertedDepth'] < $pageTree->tree[$cc]['invertedDepth']) {
188  // If going up
189  // First of all the previous level should have an icon:
190  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($prev_dat['row']['pid'])) {
191  $prevPid = -$prev_dat['row']['uid'];
192  end($lines);
193  $lines[] = '<li><span class="text-nowrap"><a href="' . htmlspecialchars($this->‪getActionLink((int)$prevPid, $prev_dat['row']['pid'])) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span></li>';
194  }
195  // Then set the current prevPid
196  $prevPid = -$prev_dat['row']['pid'];
197  if ($prevPid !== $dat['row']['pid']) {
198  $lines[] = '</ul>';
199  }
200  } else {
201  // In on the same level
202  $prevPid = -$prev_dat['row']['uid'];
203  }
204  } else {
205  // First in the tree
206  $prevPid = $dat['row']['pid'];
207  }
208  // print arrow on the same level
209  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($dat['row']['pid'])) {
210  $lines[] = '<span class="text-nowrap"><a href="' . htmlspecialchars($this->‪getActionLink($prevPid, $dat['row']['pid'])) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span>';
211  }
212  // The line with the icon and title:
213  $toolTip = ‪BackendUtility::getRecordToolTip($dat['row'], 'pages');
214  $icon = '<span ' . $toolTip . '>' . $this->iconFactory->getIconForRecord('pages', $dat['row'], ‪Icon::SIZE_SMALL)->render() . '</span>';
215 
216  $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>';
217  }
218  // If the current page was the last in the tree:
219  $prev_dat = end($pageTree->tree);
220  if ($prev_dat['row']['uid'] == $id) {
221  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($id)) {
222  $lines[] = '<ul class="list-tree" style="margin-left: 25px"><li><span class="text-nowrap"><a href="' . htmlspecialchars($this->‪getActionLink($id, $id)) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span></li></ul>';
223  }
224  }
225  for ($a = $latestInvDepth; $a <= ‪$this->depth; $a++) {
226  $dat = $saveLatestUid[$a];
227  $prevPid = -$dat['row']['uid'];
228  if (!$this->dontPrintPageInsertIcons && $this->‪checkNewPageInPid($dat['row']['pid'])) {
229  if ($latestInvDepth < $dat['invertedDepth']) {
230  $lines[] = '</ul>';
231  }
232  $lines[] = '<span class="text-nowrap"><a href="' . htmlspecialchars($this->‪getActionLink((int)$prevPid, $dat['row']['pid'])) . '"><i class="t3-icon fa fa-long-arrow-left" title="' . $this->‪insertlabel() . '"></i></a></span>';
233  }
234  }
235 
236  $code = '<ul class="list-tree">';
237 
238  foreach ($lines as $line) {
239  if ((strpos($line, '<ul') === 0) || (strpos($line, '</ul') === 0)) {
240  $code .= $line;
241  } else {
242  $code .= '<li>' . $line . '</li>';
243  }
244  }
245 
246  $code .= '</ul>';
247  return $code;
248  }
249 
258  public function ‪boldTitle($t_code, $dat, $id)
259  {
260  if ($dat['row']['uid'] == $id) {
261  $t_code = '<strong>' . $t_code . '</strong>';
262  }
263  return $t_code;
264  }
265 
276  public function ‪getActionLink($pid, $newPagePID): string
277  {
278  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
279  $TSconfig = ‪BackendUtility::getPagesTSconfig($newPagePID)['mod.']['newPageWizard.'] ?? [];
280  if (isset($TSconfig['override']) && !empty($TSconfig['override'])) {
281  $url = $uriBuilder->buildUriFromRoute(
282  $TSconfig['override'],
283  [
284  'positionPid' => $pid,
285  'newPageId' => $newPagePID,
286  'cmd' => 'crPage',
287  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
288  ]
289  );
290  return (string)$url;
291  }
292 
293  return (string)$uriBuilder->buildUriFromRoute('record_edit', [
294  'edit' => [
295  'pages' => [
296  $pid => 'new',
297  ],
298  ],
299  'returnNewPageId' => '1',
300  'returnUrl' => $this->R_URI
301  ]);
302  }
303 
309  public function ‪insertlabel()
310  {
311  return htmlspecialchars($this->‪getLanguageService()->getLL($this->l_insertNewPageHere));
312  }
313 
321  public function ‪linkPageTitle($str, $rec)
322  {
323  return $str;
324  }
325 
333  public function ‪checkNewPageInPid($pid)
334  {
335  if (!isset($this->checkNewPageCache[$pid])) {
336  $pidInfo = ‪BackendUtility::getRecord('pages', $pid);
337  $this->checkNewPageCache[$pid] = $this->‪getBackendUser()->‪isAdmin() || $this->‪getBackendUser()->‪doesUserHaveAccess($pidInfo, 8);
338  }
339  return $this->checkNewPageCache[$pid];
340  }
341 
342  /*************************************
343  *
344  * Content element positioning:
345  *
346  **************************************/
357  public function ‪printContentElementColumns($pid, ‪$moveUid, $colPosList, $showHidden, ‪$R_URI)
358  {
359  $this->R_URI = ‪$R_URI;
360  $this->moveUid = ‪$moveUid;
361  $colPosArray = ‪GeneralUtility::trimExplode(',', $colPosList, true);
362  $lines = [];
363  foreach ($colPosArray as $kk => $vv) {
364  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
365  $queryBuilder->getRestrictions()->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, (int)$this->‪getBackendUser()->workspace));
366  if ($showHidden) {
367  $queryBuilder->getRestrictions()
368  ->removeByType(HiddenRestriction::class)
369  ->removeByType(StartTimeRestriction::class)
370  ->removeByType(EndTimeRestriction::class);
371  }
372  $queryBuilder
373  ->select('*')
374  ->from('tt_content')
375  ->where(
376  $queryBuilder->expr()->eq('pid', $queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)),
377  $queryBuilder->expr()->eq('colPos', $queryBuilder->createNamedParameter($vv, \PDO::PARAM_INT))
378  )
379  ->orderBy('sorting');
380 
381  if ((string)$this->cur_sys_language !== '') {
382  $queryBuilder->andWhere(
383  $queryBuilder->expr()->eq(
384  'sys_language_uid',
385  $queryBuilder->createNamedParameter($this->cur_sys_language, \PDO::PARAM_INT)
386  )
387  );
388  }
389 
390  $res = $queryBuilder->execute();
391  $lines[$vv] = [];
392  $lines[$vv][] = $this->‪insertPositionIcon('', $vv, $kk, ‪$moveUid, $pid);
393 
394  while ($row = $res->fetch()) {
395  ‪BackendUtility::workspaceOL('tt_content', $row);
396  if (is_array($row)) {
397  $lines[$vv][] = $this->‪getRecordHeader($row);
398  $lines[$vv][] = $this->‪insertPositionIcon($row, $vv, $kk, ‪$moveUid, $pid);
399  }
400  }
401  }
402  return $this->‪printRecordMap($lines, $colPosArray, $pid);
403  }
404 
413  public function ‪printRecordMap($lines, $colPosArray, $pid = 0)
414  {
415  $count = ‪MathUtility::forceIntegerInRange(count($colPosArray), 1);
416  $backendLayoutProvider = GeneralUtility::makeInstance(BackendLayoutView::class);
417  $backendLayout = $backendLayoutProvider->getSelectedBackendLayout($pid);
418  if (isset($backendLayout['__config']['backend_layout.'])) {
419  $this->‪getLanguageService()->‪includeLLFile('EXT:backend/Resources/Private/Language/locallang_layout.xlf');
420  $table = '<div class="table-fit"><table class="table table-condensed table-bordered table-vertical-top">';
421  $colCount = (int)$backendLayout['__config']['backend_layout.']['colCount'];
422  $rowCount = (int)$backendLayout['__config']['backend_layout.']['rowCount'];
423  $table .= '<colgroup>';
424  for ($i = 0; $i < $colCount; $i++) {
425  $table .= '<col style="width:' . 100 / $colCount . '%"></col>';
426  }
427  $table .= '</colgroup>';
428  $table .= '<tbody>';
429  $tcaItems = $backendLayoutProvider->getColPosListItemsParsed($pid);
430  // Cycle through rows
431  for ($row = 1; $row <= $rowCount; $row++) {
432  $rowConfig = $backendLayout['__config']['backend_layout.']['rows.'][$row . '.'];
433  if (!isset($rowConfig)) {
434  continue;
435  }
436  $table .= '<tr>';
437  for ($col = 1; $col <= $colCount; $col++) {
438  $columnConfig = $rowConfig['columns.'][$col . '.'];
439  if (!isset($columnConfig)) {
440  continue;
441  }
442  // Which tt_content colPos should be displayed inside this cell
443  $columnKey = (int)$columnConfig['colPos'];
444  $head = '';
445  foreach ($tcaItems as $item) {
446  if ($item[1] == $columnKey) {
447  $head = htmlspecialchars($this->‪getLanguageService()->sL($item[0]));
448  }
449  }
450  // Render the grid cell
451  $table .= '<td'
452  . (isset($columnConfig['colspan']) ? ' colspan="' . $columnConfig['colspan'] . '"' : '')
453  . (isset($columnConfig['rowspan']) ? ' rowspan="' . $columnConfig['rowspan'] . '"' : '')
454  . ' class="col-nowrap col-min'
455  . (!isset($columnConfig['colPos']) ? ' warning' : '')
456  . (isset($columnConfig['colPos']) && !$head ? ' danger' : '') . '">';
457  // Render header
458  $table .= '<p>';
459  if (isset($columnConfig['colPos']) && $head) {
460  $table .= '<strong>' . $head . '</strong>';
461  } elseif ($columnConfig['colPos']) {
462  $table .= '<em>' . $this->‪getLanguageService()->‪getLL('noAccess') . '</em>';
463  } else {
464  $table .= '<em>' . ($this->‪getLanguageService()->‪sL($columnConfig['name']) ?: '') . ' (' . $this->‪getLanguageService()->‪getLL('notAssigned') . ')' . '</em>';
465  }
466  $table .= '</p>';
467  // Render lines
468  if (isset($columnConfig['colPos']) && $head && !empty($lines[$columnKey])) {
469  $table .= '<ul class="list-unstyled">';
470  foreach ($lines[$columnKey] as $line) {
471  $table .= '<li>' . $line . '</li>';
472  }
473  $table .= '</ul>';
474  }
475  $table .= '</td>';
476  }
477  $table .= '</tr>';
478  }
479  $table .= '</tbody>';
480  $table .= '</table></div>';
481  } else {
482  // Traverse the columns here:
483  $row = '';
484  foreach ($colPosArray as $kk => $vv) {
485  $row .= '<td class="col-nowrap col-min" width="' . round(100 / $count) . '%">';
486  $row .= '<p><strong>' . htmlspecialchars($this->‪getLanguageService()->sL(‪BackendUtility::getLabelFromItemlist('tt_content', 'colPos', $vv))) . '</strong></p>';
487  if (!empty($lines[$vv])) {
488  $row .= '<ul class="list-unstyled">';
489  foreach ($lines[$vv] as $line) {
490  $row .= '<li>' . $line . '</li>';
491  }
492  $row .= '</ul>';
493  }
494  $row .= '</td>';
495  }
496  $table = '
497 
498  <!--
499  Map of records in columns:
500  -->
501  <div class="table-fit">
502  <table class="table table-condensed table-bordered table-vertical-top">
503  <tr>' . $row . '</tr>
504  </table>
505  </div>
506 
507  ';
508  }
509  return $table;
510  }
511 
523  public function ‪insertPositionIcon($row, $vv, $kk, ‪$moveUid, $pid)
524  {
525  if (is_array($row) && !empty($row['uid'])) {
526  // Use record uid for the hash when inserting after this content element
527  $uid = $row['uid'];
528  } else {
529  // No uid means insert at first position in the column
530  $uid = '';
531  }
532  $cc = hexdec(substr(md5($uid . '-' . $vv . '-' . $kk), 0, 4));
533  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>';
534  }
535 
547  public function ‪onClickInsertRecord($row, $vv, ‪$moveUid, $pid, $sys_lang = 0)
548  {
549  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
550  if (is_array($row)) {
551  $location = $uriBuilder->buildUriFromRoute('tce_db', [
552  'cmd[tt_content][' . ‪$moveUid . '][' . $this->moveOrCopy . ']' => '-' . $row['uid'],
553  'redirect' => $this->R_URI,
554  ]);
555  } else {
556  $location = $uriBuilder->buildUriFromRoute('tce_db', [
557  'cmd[tt_content][' . ‪$moveUid . '][' . $this->moveOrCopy . ']' => $pid,
558  'data[tt_content][' . ‪$moveUid . '][colPos]' => $vv,
559  'redirect' => $this->R_URI,
560  ]);
561  }
562  // returns to prev. page
563  return $this->clientContext . '.location.href=' . GeneralUtility::quoteJSvalue((string)$location) . ';return false;';
564  }
565 
572  public function ‪getRecordHeader($row)
573  {
574  ‪$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
575  $toolTip = ‪BackendUtility::getRecordToolTip($row, 'tt_content');
576  $line = '<span ' . $toolTip . ' title="' . ‪BackendUtility::getRecordIconAltText($row, 'tt_content') . '">' . ‪$iconFactory->‪getIconForRecord('tt_content', $row, ‪Icon::SIZE_SMALL)->‪render() . '</span>';
577  $line .= ‪BackendUtility::getRecordTitle('tt_content', $row, true);
578  return $this->‪wrapRecordTitle($line, $row);
579  }
580 
588  public function ‪wrapRecordTitle($str, $row)
589  {
590  return '<a href="' . htmlspecialchars(GeneralUtility::linkThisScript(['uid' => (int)$row['uid'], 'moveUid' => ''])) . '">' . $str . '</a>';
591  }
592 
598  protected function ‪getBackendUser()
599  {
600  return ‪$GLOBALS['BE_USER'];
601  }
602 
608  protected function ‪getLanguageService()
609  {
610  return ‪$GLOBALS['LANG'];
611  }
612 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\linkPageTitle
‪string linkPageTitle($str, $rec)
Definition: PagePositionMap.php:308
‪TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction
Definition: HiddenRestriction.php:27
‪TYPO3\CMS\Core\Localization\LanguageService\includeLLFile
‪array includeLLFile($fileRef, $setGlobal=null, $mergeLocalOntoDefault=null)
Definition: LanguageService.php:297
‪TYPO3\CMS\Core\Database\Query\Restriction\EndTimeRestriction
Definition: EndTimeRestriction.php:27
‪TYPO3\CMS\Core\Database\Query\Restriction\StartTimeRestriction
Definition: StartTimeRestriction.php:27
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Core\Imaging\Icon\render
‪string render($alternativeMarkupIdentifier=null)
Definition: Icon.php:232
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$pageTreeClassName
‪string $pageTreeClassName
Definition: PagePositionMap.php:92
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$R_URI
‪string $R_URI
Definition: PagePositionMap.php:63
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\wrapRecordTitle
‪string wrapRecordTitle($str, $row)
Definition: PagePositionMap.php:575
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$l_insertNewPageHere
‪string $l_insertNewPageHere
Definition: PagePositionMap.php:82
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\isAdmin
‪bool isAdmin()
Definition: BackendUserAuthentication.php:292
‪TYPO3\CMS\Core\Utility\MathUtility\forceIntegerInRange
‪static int forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
Definition: MathUtility.php:32
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$elUid
‪string $elUid
Definition: PagePositionMap.php:68
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordIconAltText
‪static string getRecordIconAltText($row, $table='pages')
Definition: BackendUtility.php:1357
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:33
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$clientContext
‪string $clientContext
Definition: PagePositionMap.php:100
‪TYPO3\CMS\Core\Localization\LanguageService\sL
‪string sL($input)
Definition: LanguageService.php:194
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$checkNewPageCache
‪array $checkNewPageCache
Definition: PagePositionMap.php:77
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\positionTree
‪string positionTree($id, $pageinfo, $perms_clause, $R_URI)
Definition: PagePositionMap.php:131
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\insertlabel
‪string insertlabel()
Definition: PagePositionMap.php:296
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getActionLink
‪string getActionLink($pid, $newPagePID)
Definition: PagePositionMap.php:263
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getRecordHeader
‪string getRecordHeader($row)
Definition: PagePositionMap.php:559
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: PagePositionMap.php:585
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\checkNewPageInPid
‪bool checkNewPageInPid($pid)
Definition: PagePositionMap.php:320
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\getLanguageService
‪LanguageService getLanguageService()
Definition: PagePositionMap.php:595
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap
Definition: PagePositionMap.php:39
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\doesUserHaveAccess
‪bool doesUserHaveAccess($row, $perms)
Definition: BackendUserAuthentication.php:330
‪TYPO3\CMS\Backend\Utility\BackendUtility\getPagesTSconfig
‪static array getPagesTSconfig($id)
Definition: BackendUtility.php:698
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordToolTip
‪static string getRecordToolTip(array $row, $table='pages')
Definition: BackendUtility.php:1339
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordTitle
‪static string getRecordTitle($table, $row, $prep=false, $forceResult=true)
Definition: BackendUtility.php:1541
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\boldTitle
‪string boldTitle($t_code, $dat, $id)
Definition: PagePositionMap.php:245
‪TYPO3\CMS\Core\Imaging\IconFactory\getIconForRecord
‪Icon getIconForRecord($table, array $row, $size=Icon::SIZE_DEFAULT)
Definition: IconFactory.php:117
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\printContentElementColumns
‪string printContentElementColumns($pid, $moveUid, $colPosList, $showHidden, $R_URI)
Definition: PagePositionMap.php:344
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\printRecordMap
‪string printRecordMap($lines, $colPosArray, $pid=0)
Definition: PagePositionMap.php:400
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$iconFactory
‪IconFactory $iconFactory
Definition: PagePositionMap.php:96
‪TYPO3\CMS\Backend\Tree\View
Definition: AbstractTreeView.php:16
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$moveUid
‪string $moveUid
Definition: PagePositionMap.php:73
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecord
‪static array null getRecord($table, $uid, $fields=' *', $where='', $useDeleteClause=true)
Definition: BackendUtility.php:95
‪TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode
‪static string[] trimExplode($delim, $string, $removeEmptyValues=false, $limit=0)
Definition: GeneralUtility.php:1059
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$depth
‪int $depth
Definition: PagePositionMap.php:52
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$dontPrintPageInsertIcons
‪int $dontPrintPageInsertIcons
Definition: PagePositionMap.php:47
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\onClickInsertRecord
‪string onClickInsertRecord($row, $vv, $moveUid, $pid, $sys_lang=0)
Definition: PagePositionMap.php:534
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$moveOrCopy
‪string $moveOrCopy
Definition: PagePositionMap.php:43
‪TYPO3\CMS\Backend\View\BackendLayoutView
Definition: BackendLayoutView.php:36
‪$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:3586
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$cur_sys_language
‪int $cur_sys_language
Definition: PagePositionMap.php:57
‪TYPO3\CMS\Backend\Utility\BackendUtility\getLabelFromItemlist
‪static string getLabelFromItemlist($table, $col, $key)
Definition: BackendUtility.php:1410
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\__construct
‪__construct(string $pageTreeClassName=null, string $clientContext='window')
Definition: PagePositionMap.php:108
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\$l_insertNewRecordHere
‪string $l_insertNewRecordHere
Definition: PagePositionMap.php:86
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Localization\LanguageService\getLL
‪string getLL($index)
Definition: LanguageService.php:154
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Backend\Tree\View\PagePositionMap\insertPositionIcon
‪string insertPositionIcon($row, $vv, $kk, $moveUid, $pid)
Definition: PagePositionMap.php:510
‪TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction
Definition: WorkspaceRestriction.php:39