‪TYPO3CMS  9.5
TranslationStatusController.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 
34 
40 {
43 
48  'pObj' => 'Using TranslationStatusController::$pObj is deprecated and will not be possible anymore in TYPO3 v10.0.',
49  'function_key' => 'Using TranslationStatusController::function_key$ is deprecated, property will be removed in TYPO3 v10.0.',
50  'extClassConf' => 'Using TranslationStatusController::$extClassConf is deprecated, property will be removed in TYPO3 v10.0.',
51  'localLangFile' => 'Using TranslationStatusController::$localLangFile is deprecated, property will be removed in TYPO3 v10.0.',
52  'extObj' => 'Using TranslationStatusController::$extObj is deprecated, property will be removed in TYPO3 v10.0.',
53  ];
54 
58  private ‪$deprecatedPublicMethods = [
59  'getContentElementCount' => 'Using TranslationStatusController::getContentElementCount() is deprecated and will not be possible anymore in TYPO3 v10.0.',
60  'getLangStatus' => 'Using TranslationStatusController::getLangStatus() is deprecated and will not be possible anymore in TYPO3 v10.0.',
61  'renderL10nTable' => 'Using TranslationStatusController::renderL10nTable() is deprecated and will not be possible anymore in TYPO3 v10.0.',
62  'modMenu' => 'Using TranslationStatusController::modMenu() is deprecated and will not be possible anymore in TYPO3 v10.0.',
63  'extObjContent' => 'Using TranslationStatusController::extObjContent() is deprecated, method will be removed in TYPO3 v10.0.',
64  ];
65 
69  protected ‪$iconFactory;
70 
74  protected ‪$siteLanguages;
75 
79  protected ‪$pObj;
80 
84  protected ‪$id;
85 
89  protected ‪$extObj;
90 
94  protected ‪$localLangFile = '';
95 
99  protected ‪$extClassConf;
100 
104  protected ‪$function_key = '';
105 
111  public function ‪init(‪$pObj)
112  {
113  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
114  $this->id = (int)GeneralUtility::_GP('id');
116  $this->pObj = ‪$pObj;
117  // Local lang:
118  if (!empty($this->localLangFile)) {
119  // @deprecated since TYPO3 v9, will be removed in TYPO3 v10.0.
120  $this->‪getLanguageService()->‪includeLLFile($this->localLangFile);
121  }
122  // Setting MOD_MENU items as we need them for logging:
123  $this->pObj->MOD_MENU = array_merge($this->pObj->MOD_MENU, $this->modMenu());
124  }
125 
131  public function ‪main()
132  {
133  $theOutput = '<h1>' . htmlspecialchars($this->‪getLanguageService()->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_title')) . '</h1>';
134  if ($this->id) {
135  $this->‪getPageRenderer()->‪loadRequireJsModule('TYPO3/CMS/Info/TranslationStatus');
136 
137  // Depth selector:
138  $theOutput .= '<div class="form-inline form-inline-spaced">';
139  $h_func = ‪BackendUtility::getDropdownMenu($this->id, 'SET[depth]', $this->pObj->MOD_SETTINGS['depth'], $this->pObj->MOD_MENU['depth']);
140  $h_func .= ‪BackendUtility::getDropdownMenu($this->id, 'SET[lang]', $this->pObj->MOD_SETTINGS['lang'], $this->pObj->MOD_MENU['lang']);
141  $theOutput .= $h_func;
142  // Add CSH:
143  $theOutput .= ‪BackendUtility::cshItem('_MOD_web_info', 'lang', null, '<div class="form-group"><span class="btn btn-default btn-sm">|</span></div><br />');
144  $theOutput .= '</div>';
145  // Showing the tree:
146  // Initialize starting point of page tree:
147  $treeStartingPoint = (int)$this->id;
148  $treeStartingRecord = ‪BackendUtility::getRecordWSOL('pages', $treeStartingPoint);
149  $depth = $this->pObj->MOD_SETTINGS['depth'];
150  // Initialize tree object:
151  $tree = GeneralUtility::makeInstance(PageTreeView::class);
152  $tree->init('AND ' . $this->‪getBackendUser()->getPagePermsClause(‪Permission::PAGE_SHOW));
153  $tree->addField('l18n_cfg');
154  // Creating top icon; the current page
155  $HTML = $this->iconFactory->getIconForRecord('pages', $treeStartingRecord, ‪Icon::SIZE_SMALL)->render();
156  $tree->tree[] = [
157  'row' => $treeStartingRecord,
158  'HTML' => $HTML
159  ];
160  // Create the tree from starting point:
161  if ($depth) {
162  $tree->getTree($treeStartingPoint, $depth, '');
163  }
164  // Render information table:
165  $theOutput .= $this->‪renderL10nTable($tree);
166  }
167  return $theOutput;
168  }
169 
175  protected function ‪modMenu()
176  {
177  $lang = $this->‪getLanguageService();
178  $menuArray = [
179  'depth' => [
180  0 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'),
181  1 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_1'),
182  2 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_2'),
183  3 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_3'),
184  4 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_4'),
185  999 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_infi')
186  ]
187  ];
188  // Languages:
189  $menuArray['lang'] = [];
190  foreach ($this->siteLanguages as $language) {
191  if ($language->getLanguageId() === 0) {
192  $menuArray['lang'][0] = '[All]';
193  } else {
194  $menuArray['lang'][$language->getLanguageId()] = $language->getTitle();
195  }
196  }
197  return $menuArray;
198  }
199 
206  protected function ‪renderL10nTable(&$tree)
207  {
208  $lang = $this->‪getLanguageService();
209  // Title length:
210  $titleLen = $this->‪getBackendUser()->uc['titleLen'];
211  // Put together the TREE:
212  ‪$output = '';
213  $newOL_js = [];
214  $langRecUids = [];
215  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
216 
217  $userTsConfig = $this->‪getBackendUser()->‪getTSConfig();
218  $showPageId = !empty($userTsConfig['options.']['pageTree.']['showPageIdWithTitle']);
219 
220  foreach ($tree->tree as $data) {
221  $tCells = [];
222  $langRecUids[0][] = $data['row']['uid'];
223  $pageTitle = ($showPageId ? '[' . (int)$data['row']['uid'] . '] ' : '') . GeneralUtility::fixed_lgd_cs($data['row']['title'], $titleLen);
224  // Page icons / titles etc.
225  $tCells[] = '<td' . ($data['row']['_CSSCLASS'] ? ' class="' . $data['row']['_CSSCLASS'] . '"' : '') . '>' .
226  ($data['depthData'] ?: '') .
227  ‪BackendUtility::wrapClickMenuOnIcon($data['HTML'], 'pages', $data['row']['uid']) .
228  '<a href="#" onclick="' . htmlspecialchars(
229  'top.loadEditId(' . (int)$data['row']['uid'] . ',"&SET[language]=0"); return false;'
230  ) . '" title="' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editPage') . '">' .
231  htmlspecialchars($pageTitle) .
232  '</a>' .
233  ((string)$data['row']['nav_title'] !== '' ? ' [Nav: <em>' . htmlspecialchars(GeneralUtility::fixed_lgd_cs($data['row']['nav_title'], $titleLen)) . '</em>]' : '') .
234  '</td>';
235  // DEFAULT language:
236  // "View page" link is created:
237  $viewPageLink = '<a href="#" onclick="' . htmlspecialchars(
239  $data['row']['uid'],
240  '',
241  null,
242  '',
243  '',
244  '&L=###LANG_UID###'
245  )
246  ) . '" class="btn btn-default" title="' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_viewPage') . '">' .
247  $this->iconFactory->getIcon('actions-view', ‪Icon::SIZE_SMALL)->render() . '</a>';
248  $status = GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? 'danger' : 'success';
249  // Create links:
250  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
251  'edit' => [
252  'pages' => [
253  $data['row']['uid'] => 'edit'
254  ]
255  ],
256  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
257  ]);
258  $info = '<a href="#" onclick="' . htmlspecialchars(
260  $data['row']['uid'],
261  '',
262  null,
263  '',
264  '',
265  ''
266  )
267  ) . '" class="btn btn-default" title="' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_viewPage') . '">' .
268  $this->iconFactory->getIcon('actions-view-page', ‪Icon::SIZE_SMALL)->render() . '</a>';
269  $info .= '<a href="' . htmlspecialchars($editUrl)
270  . '" class="btn btn-default" title="' . $lang->sL(
271  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editDefaultLanguagePage'
272  ) . '">' . $this->iconFactory->getIcon('actions-page-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
273  $info .= '&nbsp;';
274  $info .= GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? '<span title="' . htmlspecialchars($lang->sL('LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.l18n_cfg.I.1')) . '">D</span>' : '&nbsp;';
275  $info .= GeneralUtility::hideIfNotTranslated($data['row']['l18n_cfg']) ? '<span title="' . htmlspecialchars($lang->sL('LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.l18n_cfg.I.2')) . '">N</span>' : '&nbsp;';
276  // Put into cell:
277  $tCells[] = '<td class="' . $status . ' col-border-left"><div class="btn-group">' . $info . '</div></td>';
278  $tCells[] = '<td class="' . $status . '" title="' . $lang->sL(
279  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_CEcount'
280  ) . '" align="center">' . $this->‪getContentElementCount($data['row']['uid'], 0) . '</td>';
281  // Traverse system languages:
282  foreach ($this->siteLanguages as $siteLanguage) {
283  $languageId = $siteLanguage->getLanguageId();
284  if ($languageId === 0) {
285  continue;
286  }
287  if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int)$this->pObj->MOD_SETTINGS['lang'] === $languageId) {
288  $row = $this->‪getLangStatus($data['row']['uid'], $languageId);
289  if (is_array($row)) {
290  $langRecUids[$languageId][] = $row['uid'];
291  $status = $row['_HIDDEN'] ? (GeneralUtility::hideIfNotTranslated($data['row']['l18n_cfg']) || GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? 'danger' : '') : 'success';
292  $icon = $this->iconFactory->getIconForRecord('pages', $row, ‪Icon::SIZE_SMALL)->render();
293  $info = $icon . ($showPageId ? ' [' . (int)$row['uid'] . ']' : '') . ' ' . htmlspecialchars(
294  GeneralUtility::fixed_lgd_cs($row['title'], $titleLen)
295  ) . ((string)$row['nav_title'] !== '' ? ' [Nav: <em>' . htmlspecialchars(
296  GeneralUtility::fixed_lgd_cs($row['nav_title'], $titleLen)
297  ) . '</em>]' : '') . ($row['_COUNT'] > 1 ? '<div>' . $lang->sL(
298  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_badThingThereAre'
299  ) . '</div>' : '');
300  $tCells[] = '<td class="' . $status . ' col-border-left">' .
301  '<a href="#" onclick="' . htmlspecialchars(
302  'top.loadEditId(' . (int)$data['row']['uid'] . ',"&SET[language]=' . $languageId . '"); return false;'
303  ) . '" title="' . $lang->sL(
304  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editPageLang'
305  ) . '">' . $info . '</a></td>';
306  // Edit whole record:
307  // Create links:
308  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
309  'edit' => [
310  'pages' => [
311  $row['uid'] => 'edit'
312  ]
313  ],
314  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
315  ]);
316  $info = str_replace('###LANG_UID###', $languageId, $viewPageLink);
317  $info .= '<a href="' . htmlspecialchars($editUrl)
318  . '" class="btn btn-default" title="' . $lang->sL(
319  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editLanguageOverlayRecord'
320  ) . '">' . $this->iconFactory->getIcon('actions-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
321  $tCells[] = '<td class="' . $status . '"><div class="btn-group">' . $info . '</div></td>';
322  $tCells[] = '<td class="' . $status . '" title="' . $lang->sL(
323  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_CEcount'
324  ) . '" align="center">' . $this->‪getContentElementCount($data['row']['uid'], $languageId) . '</td>';
325  } else {
326  $status = GeneralUtility::hideIfNotTranslated($data['row']['l18n_cfg']) || GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? 'danger' : '';
327  $info = '<div class="btn-group"><label class="btn btn-default btn-checkbox">';
328  $info .= '<input type="checkbox" data-lang="' . $languageId . '" data-uid="' . (int)$data['row']['uid'] . '" name="newOL[' . $languageId . '][' . $data['row']['uid'] . ']" value="1" />';
329  $info .= '<span class="t3-icon fa"></span></label></div>';
330  $newOL_js[$languageId] .=
331  ' +(document.webinfoForm['
332  . GeneralUtility::quoteJSvalue('newOL[' . $languageId . '][' . $data['row']['uid'] . ']')
333  . '].checked ? '
334  . GeneralUtility::quoteJSvalue('&edit[pages][' . $data['row']['uid'] . ']=new')
335  . ' : \'\')'
336  ;
337  $tCells[] = '<td class="' . $status . ' col-border-left">&nbsp;</td>';
338  $tCells[] = '<td class="' . $status . '">&nbsp;</td>';
339  $tCells[] = '<td class="' . $status . '">' . $info . '</td>';
340  }
341  }
342  }
343  ‪$output .= '
344  <tr>
345  ' . implode('
346  ', $tCells) . '
347  </tr>';
348  }
349  // Put together HEADER:
350  $tCells = [];
351  $tCells[] = '<td>' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_page') . '</td>';
352  if (is_array($langRecUids[0])) {
353  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
354  'edit' => [
355  'pages' => [
356  implode(',', $langRecUids[0]) => 'edit'
357  ]
358  ],
359  'columnsOnly' => 'title,nav_title,l18n_cfg,hidden',
360  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
361  ]);
362  $editIco = '<a href="' . htmlspecialchars($editUrl)
363  . '" class="btn btn-default" title="' . $lang->sL(
364  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editPageProperties'
365  ) . '">' . $this->iconFactory->getIcon('actions-document-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
366  } else {
367  $editIco = '';
368  }
369  $tCells[] = '<td class="col-border-left" colspan="2">' . $lang->sL(
370  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_default'
371  ) . '&nbsp;' . $editIco . '</td>';
372  foreach ($this->siteLanguages as $siteLanguage) {
373  $languageId = $siteLanguage->getLanguageId();
374  if ($languageId === 0) {
375  continue;
376  }
377  if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int)$this->pObj->MOD_SETTINGS['lang'] === $languageId) {
378  // Title:
379  $tCells[] = '<td class="col-border-left">' . htmlspecialchars($siteLanguage->getTitle()) . '</td>';
380  // Edit language overlay records:
381  if (is_array($langRecUids[$languageId])) {
382  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
383  'edit' => [
384  'pages' => [
385  implode(',', $langRecUids[$languageId]) => 'edit'
386  ]
387  ],
388  'columnsOnly' => 'title,nav_title,hidden',
389  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
390  ]);
391  $editButton = '<a href="' . htmlspecialchars($editUrl)
392  . '" class="btn btn-default" title="' . $lang->sL(
393  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editLangOverlays'
394  ) . '">' . $this->iconFactory->getIcon('actions-document-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
395  } else {
396  $editButton = '';
397  }
398  // Create new overlay records:
399  $createLink = (string)$uriBuilder->buildUriFromRoute('tce_db', [
400  'redirect' => GeneralUtility::getIndpEnv('REQUEST_URI')
401  ]);
402  $newButton = '<a href="' .
403  htmlspecialchars($createLink) .
404  '" data-edit-url="' .
405  htmlspecialchars($createLink) .
406  '" class="btn btn-default disabled t3js-language-new-' .
407  $languageId .
408  '" title="' .
409  $lang->sL(
410  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_getlangsta_createNewTranslationHeaders'
411  ) .
412  '">' .
413  $this->iconFactory->getIcon('actions-document-new', ‪Icon::SIZE_SMALL)->render() .
414  '</a>';
415 
416  $tCells[] = '<td class="btn-group">' . $editButton . $newButton . '</td>';
417  $tCells[] = '<td>&nbsp;</td>';
418  }
419  }
420 
421  ‪$output =
422  '<div class="table-fit">' .
423  '<table class="table table-striped table-hover" id="langTable">' .
424  '<thead>' .
425  '<tr>' .
426  implode('', $tCells) .
427  '</tr>' .
428  '</thead>' .
429  '<tbody>' .
430  ‪$output .
431  '</tbody>' .
432  '</table>' .
433  '</div>';
434  return ‪$output;
435  }
436 
443  public function ‪getSystemLanguages()
444  {
445  trigger_error('This method will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
446  if (!$this->‪getBackendUser()->isAdmin() && $this->‪getBackendUser()->groupData['allowed_languages'] !== '') {
447  $allowed_languages = array_flip(explode(',', $this->‪getBackendUser()->groupData['allowed_languages']));
448  }
449  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
450  ->getQueryBuilderForTable('sys_language')
451  ->select('*')
452  ->from('sys_language')
453  ->orderBy('sorting');
454  $res = $queryBuilder->execute();
455  $outputArray = [];
456  if (is_array($allowed_languages) && !empty($allowed_languages)) {
457  while (‪$output = $res->fetch()) {
458  if (isset($allowed_languages[‪$output['uid']])) {
459  $outputArray[] = ‪$output;
460  }
461  }
462  } else {
463  $outputArray = $res->fetchAll();
464  }
465  return $outputArray;
466  }
467 
475  protected function ‪getLangStatus($pageId, $langId)
476  {
477  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
478  ->getQueryBuilderForTable('pages');
479  $queryBuilder
480  ->getRestrictions()
481  ->removeAll()
482  ->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class))
483  ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
484  $result = $queryBuilder
485  ->select('*')
486  ->from('pages')
487  ->where(
488  $queryBuilder->expr()->eq(
489  ‪$GLOBALS['TCA']['pages']['ctrl']['transOrigPointerField'],
490  $queryBuilder->createNamedParameter($pageId, \PDO::PARAM_INT)
491  )
492  )
493  ->andWhere(
494  $queryBuilder->expr()->eq(
495  ‪$GLOBALS['TCA']['pages']['ctrl']['languageField'],
496  $queryBuilder->createNamedParameter($langId, \PDO::PARAM_INT)
497  )
498  )
499  ->execute();
500 
501  $row = $result->fetch();
502  ‪BackendUtility::workspaceOL('pages', $row);
503  if (is_array($row)) {
504  $row['_COUNT'] = $queryBuilder->count('uid')->execute()->fetchColumn(0);
505  $row['_HIDDEN'] = $row['hidden'] || (int)$row['endtime'] > 0 && (int)$row['endtime'] < ‪$GLOBALS['EXEC_TIME'] || ‪$GLOBALS['EXEC_TIME'] < (int)$row['starttime'];
506  }
507  $result->closeCursor();
508  return $row;
509  }
510 
518  protected function ‪getContentElementCount($pageId, $sysLang)
519  {
520  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
521  ->getQueryBuilderForTable('tt_content');
522  $queryBuilder->getRestrictions()
523  ->removeAll()
524  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
525  ->add(GeneralUtility::makeInstance(BackendWorkspaceRestriction::class));
526  $count = $queryBuilder
527  ->count('uid')
528  ->from('tt_content')
529  ->where(
530  $queryBuilder->expr()->eq(
531  'pid',
532  $queryBuilder->createNamedParameter($pageId, \PDO::PARAM_INT)
533  )
534  )
535  ->andWhere(
536  $queryBuilder->expr()->eq(
537  'sys_language_uid',
538  $queryBuilder->createNamedParameter($sysLang, \PDO::PARAM_INT)
539  )
540  )
541  ->execute()
542  ->fetchColumn(0);
543  return $count ?: '-';
544  }
545 
550  protected function ‪initializeSiteLanguages()
551  {
553  $currentSite = ‪$GLOBALS['TYPO3_REQUEST']->getAttribute('site');
554  $this->siteLanguages = $currentSite->getAvailableLanguages($this->‪getBackendUser(), false, (int)$this->id);
555  }
556 
562  public function ‪checkExtObj()
563  {
564  if (is_array($this->extClassConf) && $this->extClassConf['name']) {
565  $this->extObj = GeneralUtility::makeInstance($this->extClassConf['name']);
566  $this->extObj->init($this->pObj, $this->extClassConf);
567  // Re-write:
568  $this->pObj->MOD_SETTINGS = ‪BackendUtility::getModuleData($this->pObj->MOD_MENU, GeneralUtility::_GP('SET'), 'web_info');
569  }
570  }
571 
577  protected function ‪extObjContent()
578  {
579  if (is_object($this->extObj)) {
580  return $this->extObj->main();
581  }
582  }
583 
587  protected function ‪getLanguageService(): LanguageService
588  {
589  return ‪$GLOBALS['LANG'];
590  }
591 
597  protected function ‪getBackendUser(): ‪BackendUserAuthentication
598  {
599  return ‪$GLOBALS['BE_USER'];
600  }
601 
605  protected function ‪getPageRenderer(): ‪PageRenderer
606  {
607  return GeneralUtility::makeInstance(PageRenderer::class);
608  }
609 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:29
‪TYPO3\CMS\Info\Controller\InfoModuleController
Definition: InfoModuleController.php:42
‪TYPO3\CMS\Core\Site\Entity\SiteInterface
Definition: SiteInterface.php:25
‪TYPO3\CMS\Info\Controller\TranslationStatusController\initializeSiteLanguages
‪initializeSiteLanguages()
Definition: TranslationStatusController.php:543
‪TYPO3\CMS\Core\Localization\LanguageService\includeLLFile
‪mixed includeLLFile($fileRef, $setGlobal=true, $mergeLocalOntoDefault=false)
Definition: LanguageService.php:260
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$deprecatedPublicMethods
‪array $deprecatedPublicMethods
Definition: TranslationStatusController.php:54
‪TYPO3\CMS\Info\Controller\TranslationStatusController\renderL10nTable
‪string renderL10nTable(&$tree)
Definition: TranslationStatusController.php:199
‪TYPO3\CMS\Info\Controller\TranslationStatusController
Definition: TranslationStatusController.php:40
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:25
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getPageRenderer
‪PageRenderer getPageRenderer()
Definition: TranslationStatusController.php:598
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$deprecatedPublicProperties
‪array $deprecatedPublicProperties
Definition: TranslationStatusController.php:44
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig($objectString=null, $config=null)
Definition: BackendUserAuthentication.php:1232
‪TYPO3\CMS\Core\Database\Query\Restriction\BackendWorkspaceRestriction
Definition: BackendWorkspaceRestriction.php:28
‪TYPO3\CMS\Backend\Utility\BackendUtility\cshItem
‪static string cshItem($table, $field, $_='', $wrap='')
Definition: BackendUtility.php:2565
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:31
‪TYPO3\CMS\Backend\Tree\View\PageTreeView
Definition: PageTreeView.php:23
‪TYPO3\CMS\Info\Controller\TranslationStatusController\main
‪string main()
Definition: TranslationStatusController.php:124
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getLanguageService
‪LanguageService getLanguageService()
Definition: TranslationStatusController.php:580
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$siteLanguages
‪SiteLanguage[] $siteLanguages
Definition: TranslationStatusController.php:68
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:23
‪TYPO3\CMS\Core\Page\PageRenderer\loadRequireJsModule
‪loadRequireJsModule($mainModuleName, $callBackFunction=null)
Definition: PageRenderer.php:1593
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$function_key
‪$function_key
Definition: TranslationStatusController.php:97
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage
Definition: SiteLanguage.php:25
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$extClassConf
‪$extClassConf
Definition: TranslationStatusController.php:92
‪TYPO3\CMS\Backend\Utility\BackendUtility\wrapClickMenuOnIcon
‪static string wrapClickMenuOnIcon( $content, $table, $uid=0, $context='', $_addParams='', $_enDisItems='', $returnTagParameters=false)
Definition: BackendUtility.php:2759
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$id
‪$id
Definition: TranslationStatusController.php:77
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getLangStatus
‪array getLangStatus($pageId, $langId)
Definition: TranslationStatusController.php:468
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:35
‪TYPO3\CMS\Info\Controller\TranslationStatusController\init
‪init($pObj)
Definition: TranslationStatusController.php:104
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:35
‪TYPO3\CMS\Info\Controller\TranslationStatusController\modMenu
‪array modMenu()
Definition: TranslationStatusController.php:168
‪TYPO3\CMS\Backend\Utility\BackendUtility\getDropdownMenu
‪static string getDropdownMenu( $mainParams, $elementName, $currentValue, $menuItems, $script='', $addParams='')
Definition: BackendUtility.php:3005
‪TYPO3\CMS\Backend\Utility\BackendUtility\getModuleData
‪static array getModuleData( $MOD_MENU, $CHANGED_SETTINGS, $modName, $type='', $dontValidateList='', $setDefaultList='')
Definition: BackendUtility.php:3259
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$iconFactory
‪IconFactory $iconFactory
Definition: TranslationStatusController.php:64
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:45
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:32
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getContentElementCount
‪int getContentElementCount($pageId, $sysLang)
Definition: TranslationStatusController.php:511
‪TYPO3\CMS\Core\Compatibility\PublicMethodDeprecationTrait
Definition: PublicMethodDeprecationTrait.php:68
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:72
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordWSOL
‪static array getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
Definition: BackendUtility.php:174
‪$output
‪$output
Definition: annotationChecker.php:113
‪TYPO3\CMS\Backend\Utility\BackendUtility\viewOnClick
‪static string viewOnClick( $pageUid, $backPath='', $rootLine=null, $anchorSection='', $alternativeUrl='', $additionalGetVars='', $switchFocus=true)
Definition: BackendUtility.php:2616
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: TranslationStatusController.php:590
‪$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\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:26
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$localLangFile
‪$localLangFile
Definition: TranslationStatusController.php:87
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getSystemLanguages
‪array getSystemLanguages()
Definition: TranslationStatusController.php:436
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$extObj
‪$extObj
Definition: TranslationStatusController.php:82
‪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\Info\Controller\TranslationStatusController\checkExtObj
‪checkExtObj()
Definition: TranslationStatusController.php:555
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$pObj
‪InfoModuleController $pObj
Definition: TranslationStatusController.php:72
‪TYPO3\CMS\Info\Controller
Definition: InfoModuleController.php:2
‪TYPO3\CMS\Info\Controller\TranslationStatusController\extObjContent
‪extObjContent()
Definition: TranslationStatusController.php:570