‪TYPO3CMS  10.4
TranslationStatusController.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 
33 
39 {
40 
44  protected ‪$iconFactory;
45 
49  protected ‪$siteLanguages;
50 
54  protected ‪$pObj;
55 
59  protected ‪$id;
60 
66  public function ‪init(‪$pObj)
67  {
68  $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
69  $this->id = (int)GeneralUtility::_GP('id');
71  $this->pObj = ‪$pObj;
72 
73  // Setting MOD_MENU items as we need them for logging:
74  $this->pObj->MOD_MENU = array_merge($this->pObj->MOD_MENU, $this->modMenu());
75  }
76 
82  public function ‪main()
83  {
84  $theOutput = '<h1>' . htmlspecialchars($this->‪getLanguageService()->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_title')) . '</h1>';
85  if ($this->id) {
86  $this->‪getPageRenderer()->‪loadRequireJsModule('TYPO3/CMS/Info/TranslationStatus');
87 
88  // Depth selector:
89  $theOutput .= '<div class="form-inline form-inline-spaced">';
90  $h_func = ‪BackendUtility::getDropdownMenu($this->id, 'SET[depth]', $this->pObj->MOD_SETTINGS['depth'], $this->pObj->MOD_MENU['depth']);
91  $h_func .= ‪BackendUtility::getDropdownMenu($this->id, 'SET[lang]', $this->pObj->MOD_SETTINGS['lang'], $this->pObj->MOD_MENU['lang']);
92  $theOutput .= $h_func;
93  // Add CSH:
94  $theOutput .= ‪BackendUtility::cshItem('_MOD_web_info', 'lang', '', '<div class="form-group"><span class="btn btn-default btn-sm">|</span></div><br />');
95  $theOutput .= '</div>';
96  // Showing the tree:
97  // Initialize starting point of page tree:
98  $treeStartingPoint = (int)$this->id;
99  $treeStartingRecord = ‪BackendUtility::getRecordWSOL('pages', $treeStartingPoint);
100  $depth = $this->pObj->MOD_SETTINGS['depth'];
101  // Initialize tree object:
102  $tree = GeneralUtility::makeInstance(PageTreeView::class);
103  $tree->init('AND ' . $this->‪getBackendUser()->getPagePermsClause(‪Permission::PAGE_SHOW));
104  $tree->addField('l18n_cfg');
105  // Creating top icon; the current page
106  $HTML = $this->iconFactory->getIconForRecord('pages', $treeStartingRecord, ‪Icon::SIZE_SMALL)->render();
107  $tree->tree[] = [
108  'row' => $treeStartingRecord,
109  'HTML' => $HTML
110  ];
111  // Create the tree from starting point:
112  if ($depth) {
113  $tree->getTree($treeStartingPoint, $depth, '');
114  }
115  // Render information table:
116  $theOutput .= $this->‪renderL10nTable($tree);
117  }
118  return $theOutput;
119  }
120 
126  protected function ‪modMenu()
127  {
128  $lang = $this->‪getLanguageService();
129  $menuArray = [
130  'depth' => [
131  0 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'),
132  1 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_1'),
133  2 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_2'),
134  3 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_3'),
135  4 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_4'),
136  999 => $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_infi')
137  ]
138  ];
139  // Languages:
140  $menuArray['lang'] = [];
141  foreach ($this->siteLanguages as $language) {
142  if ($language->getLanguageId() === 0) {
143  $menuArray['lang'][0] = '[All]';
144  } else {
145  $menuArray['lang'][$language->getLanguageId()] = $language->getTitle();
146  }
147  }
148  return $menuArray;
149  }
150 
157  protected function ‪renderL10nTable(&$tree)
158  {
159  $lang = $this->‪getLanguageService();
160  // Title length:
161  $titleLen = $this->‪getBackendUser()->uc['titleLen'];
162  // Put together the TREE:
163  ‪$output = '';
164  $newOL_js = [];
165  $langRecUids = [];
166  $uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
167 
168  $userTsConfig = $this->‪getBackendUser()->‪getTSConfig();
169  $showPageId = !empty($userTsConfig['options.']['pageTree.']['showPageIdWithTitle']);
170 
171  foreach ($tree->tree as $data) {
172  $tCells = [];
173  $langRecUids[0][] = $data['row']['uid'];
174  $pageTitle = ($showPageId ? '[' . (int)$data['row']['uid'] . '] ' : '') . GeneralUtility::fixed_lgd_cs($data['row']['title'], $titleLen);
175  // Page icons / titles etc.
176  $tCells[] = '<td' . ($data['row']['_CSSCLASS'] ? ' class="' . $data['row']['_CSSCLASS'] . '"' : '') . '>' .
177  ($data['depthData'] ?: '') .
178  ‪BackendUtility::wrapClickMenuOnIcon($data['HTML'], 'pages', $data['row']['uid']) .
179  '<a href="#" onclick="' . htmlspecialchars(
180  'top.loadEditId(' . (int)$data['row']['uid'] . ',"&SET[language]=0"); return false;'
181  ) . '" title="' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editPage') . '">' .
182  htmlspecialchars($pageTitle) .
183  '</a>' .
184  ((string)$data['row']['nav_title'] !== '' ? ' [Nav: <em>' . htmlspecialchars(GeneralUtility::fixed_lgd_cs($data['row']['nav_title'], $titleLen)) . '</em>]' : '') .
185  '</td>';
186  // DEFAULT language:
187  // "View page" link is created:
188  $viewPageLink = '<a href="#" onclick="' . htmlspecialchars(
190  $data['row']['uid'],
191  '',
192  null,
193  '',
194  '',
195  '&L=###LANG_UID###'
196  )
197  ) . '" class="btn btn-default" title="' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_viewPage') . '">' .
198  $this->iconFactory->getIcon('actions-view', ‪Icon::SIZE_SMALL)->render() . '</a>';
199  $status = GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? 'danger' : 'success';
200  // Create links:
201  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
202  'edit' => [
203  'pages' => [
204  $data['row']['uid'] => 'edit'
205  ]
206  ],
207  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
208  ]);
209  $info = '<a href="#" onclick="' . htmlspecialchars(
211  $data['row']['uid'],
212  '',
213  null,
214  '',
215  '',
216  ''
217  )
218  ) . '" class="btn btn-default" title="' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_viewPage') . '">' .
219  $this->iconFactory->getIcon('actions-view-page', ‪Icon::SIZE_SMALL)->render() . '</a>';
220  $info .= '<a href="' . htmlspecialchars($editUrl)
221  . '" class="btn btn-default" title="' . $lang->sL(
222  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editDefaultLanguagePage'
223  ) . '">' . $this->iconFactory->getIcon('actions-page-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
224  $info .= '&nbsp;';
225  $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;';
226  $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;';
227  // Put into cell:
228  $tCells[] = '<td class="' . $status . ' col-border-left"><div class="btn-group">' . $info . '</div></td>';
229  $tCells[] = '<td class="' . $status . '" title="' . $lang->sL(
230  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_CEcount'
231  ) . '" align="center">' . $this->‪getContentElementCount($data['row']['uid'], 0) . '</td>';
232  // Traverse system languages:
233  foreach ($this->siteLanguages as $siteLanguage) {
234  $languageId = $siteLanguage->getLanguageId();
235  if ($languageId === 0) {
236  continue;
237  }
238  if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int)$this->pObj->MOD_SETTINGS['lang'] === $languageId) {
239  $row = $this->‪getLangStatus($data['row']['uid'], $languageId);
240  if (is_array($row)) {
241  $langRecUids[$languageId][] = $row['uid'];
242  $status = $row['_HIDDEN'] ? (GeneralUtility::hideIfNotTranslated($data['row']['l18n_cfg']) || GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? 'danger' : '') : 'success';
243  $info = ($showPageId ? ' [' . (int)$row['uid'] . ']' : '') . ' ' . htmlspecialchars(
244  GeneralUtility::fixed_lgd_cs($row['title'], $titleLen)
245  ) . ((string)$row['nav_title'] !== '' ? ' [Nav: <em>' . htmlspecialchars(
246  GeneralUtility::fixed_lgd_cs($row['nav_title'], $titleLen)
247  ) . '</em>]' : '') . ($row['_COUNT'] > 1 ? '<div>' . $lang->sL(
248  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_badThingThereAre'
249  ) . '</div>' : '');
250  $tCells[] = '<td class="' . $status . ' col-border-left">' .
251  ‪BackendUtility::wrapClickMenuOnIcon($tree->getIcon($row), 'pages', (int)$row['uid']) .
252  '<a href="#" onclick="' . htmlspecialchars(
253  'top.loadEditId(' . (int)$data['row']['uid'] . ',"&SET[language]=' . $languageId . '"); return false;'
254  ) . '" title="' . $lang->sL(
255  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editPageLang'
256  ) . '">' . $info . '</a></td>';
257  // Edit whole record:
258  // Create links:
259  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
260  'edit' => [
261  'pages' => [
262  $row['uid'] => 'edit'
263  ]
264  ],
265  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
266  ]);
267  $info = str_replace('###LANG_UID###', (string)$languageId, $viewPageLink);
268  $info .= '<a href="' . htmlspecialchars($editUrl)
269  . '" class="btn btn-default" title="' . $lang->sL(
270  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editLanguageOverlayRecord'
271  ) . '">' . $this->iconFactory->getIcon('actions-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
272  $tCells[] = '<td class="' . $status . '"><div class="btn-group">' . $info . '</div></td>';
273  $tCells[] = '<td class="' . $status . '" title="' . $lang->sL(
274  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_CEcount'
275  ) . '" align="center">' . $this->‪getContentElementCount($data['row']['uid'], $languageId) . '</td>';
276  } else {
277  $status = GeneralUtility::hideIfNotTranslated($data['row']['l18n_cfg']) || GeneralUtility::hideIfDefaultLanguage($data['row']['l18n_cfg']) ? 'danger' : '';
278  $info = '<div class="btn-group"><label class="btn btn-default btn-checkbox">';
279  $info .= '<input type="checkbox" data-lang="' . $languageId . '" data-uid="' . (int)$data['row']['uid'] . '" name="newOL[' . $languageId . '][' . $data['row']['uid'] . ']" value="1" />';
280  $info .= '<span class="t3-icon fa"></span></label></div>';
281  $newOL_js[$languageId] .=
282  ' +(document.webinfoForm['
283  . GeneralUtility::quoteJSvalue('newOL[' . $languageId . '][' . $data['row']['uid'] . ']')
284  . '].checked ? '
285  . GeneralUtility::quoteJSvalue('&edit[pages][' . $data['row']['uid'] . ']=new')
286  . ' : \'\')'
287  ;
288  $tCells[] = '<td class="' . $status . ' col-border-left">&nbsp;</td>';
289  $tCells[] = '<td class="' . $status . '">&nbsp;</td>';
290  $tCells[] = '<td class="' . $status . '">' . $info . '</td>';
291  }
292  }
293  }
294  ‪$output .= '
295  <tr>
296  ' . implode('
297  ', $tCells) . '
298  </tr>';
299  }
300  // Put together HEADER:
301  $tCells = [];
302  $tCells[] = '<td>' . $lang->sL('LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_page') . '</td>';
303  if (is_array($langRecUids[0])) {
304  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
305  'edit' => [
306  'pages' => [
307  implode(',', $langRecUids[0]) => 'edit'
308  ]
309  ],
310  'columnsOnly' => 'title,nav_title,l18n_cfg,hidden',
311  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
312  ]);
313  $editIco = '<a href="' . htmlspecialchars($editUrl)
314  . '" class="btn btn-default" title="' . $lang->sL(
315  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editPageProperties'
316  ) . '">' . $this->iconFactory->getIcon('actions-document-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
317  } else {
318  $editIco = '';
319  }
320  $tCells[] = '<td class="col-border-left" colspan="2">' . $lang->sL(
321  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_default'
322  ) . '&nbsp;' . $editIco . '</td>';
323  foreach ($this->siteLanguages as $siteLanguage) {
324  $languageId = $siteLanguage->getLanguageId();
325  if ($languageId === 0) {
326  continue;
327  }
328  if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int)$this->pObj->MOD_SETTINGS['lang'] === $languageId) {
329  // Title:
330  $tCells[] = '<td class="col-border-left">' . htmlspecialchars($siteLanguage->getTitle()) . '</td>';
331  // Edit language overlay records:
332  if (is_array($langRecUids[$languageId])) {
333  $editUrl = (string)$uriBuilder->buildUriFromRoute('record_edit', [
334  'edit' => [
335  'pages' => [
336  implode(',', $langRecUids[$languageId]) => 'edit'
337  ]
338  ],
339  'columnsOnly' => 'title,nav_title,hidden',
340  'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
341  ]);
342  $editButton = '<a href="' . htmlspecialchars($editUrl)
343  . '" class="btn btn-default" title="' . $lang->sL(
344  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_renderl10n_editLangOverlays'
345  ) . '">' . $this->iconFactory->getIcon('actions-document-open', ‪Icon::SIZE_SMALL)->render() . '</a>';
346  } else {
347  $editButton = '';
348  }
349  // Create new overlay records:
350  $createLink = (string)$uriBuilder->buildUriFromRoute('tce_db', [
351  'redirect' => GeneralUtility::getIndpEnv('REQUEST_URI')
352  ]);
353  $newButton = '<a href="' . htmlspecialchars($createLink) . '" data-edit-url="' . htmlspecialchars($createLink) . '" class="btn btn-default disabled t3js-language-new-' . $languageId . '" title="' . $lang->sL(
354  'LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:lang_getlangsta_createNewTranslationHeaders'
355  ) . '">' . $this->iconFactory->getIcon('actions-document-new', ‪Icon::SIZE_SMALL)->render() . '</a>';
356 
357  $tCells[] = '<td class="btn-group">' . $editButton . $newButton . '</td>';
358  $tCells[] = '<td>&nbsp;</td>';
359  }
360  }
361 
362  ‪$output =
363  '<div class="table-fit">' .
364  '<table class="table table-striped table-hover" id="langTable">' .
365  '<thead>' .
366  '<tr>' .
367  implode('', $tCells) .
368  '</tr>' .
369  '</thead>' .
370  '<tbody>' .
371  ‪$output .
372  '</tbody>' .
373  '</table>' .
374  '</div>';
375  return ‪$output;
376  }
377 
385  protected function ‪getLangStatus($pageId, $langId)
386  {
387  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
388  ->getQueryBuilderForTable('pages');
389  $queryBuilder
390  ->getRestrictions()
391  ->removeAll()
392  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, (int)$this->‪getBackendUser()->workspace))
393  ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
394  $result = $queryBuilder
395  ->select('*')
396  ->from('pages')
397  ->where(
398  $queryBuilder->expr()->eq(
399  ‪$GLOBALS['TCA']['pages']['ctrl']['transOrigPointerField'],
400  $queryBuilder->createNamedParameter($pageId, \PDO::PARAM_INT)
401  )
402  )
403  ->andWhere(
404  $queryBuilder->expr()->eq(
405  ‪$GLOBALS['TCA']['pages']['ctrl']['languageField'],
406  $queryBuilder->createNamedParameter($langId, \PDO::PARAM_INT)
407  )
408  )
409  ->execute();
410 
411  $row = $result->fetch();
412  ‪BackendUtility::workspaceOL('pages', $row);
413  if (is_array($row)) {
414  $row['_COUNT'] = $queryBuilder->count('uid')->execute()->fetchColumn(0);
415  $row['_HIDDEN'] = $row['hidden'] || (int)$row['endtime'] > 0 && (int)$row['endtime'] < ‪$GLOBALS['EXEC_TIME'] || ‪$GLOBALS['EXEC_TIME'] < (int)$row['starttime'];
416  }
417  $result->closeCursor();
418  return $row;
419  }
420 
428  protected function ‪getContentElementCount($pageId, $sysLang)
429  {
430  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
431  ->getQueryBuilderForTable('tt_content');
432  $queryBuilder->getRestrictions()
433  ->removeAll()
434  ->add(GeneralUtility::makeInstance(DeletedRestriction::class))
435  ->add(GeneralUtility::makeInstance(WorkspaceRestriction::class, (int)$this->‪getBackendUser()->workspace));
436  $count = $queryBuilder
437  ->count('uid')
438  ->from('tt_content')
439  ->where(
440  $queryBuilder->expr()->eq(
441  'pid',
442  $queryBuilder->createNamedParameter($pageId, \PDO::PARAM_INT)
443  )
444  )
445  ->andWhere(
446  $queryBuilder->expr()->eq(
447  'sys_language_uid',
448  $queryBuilder->createNamedParameter($sysLang, \PDO::PARAM_INT)
449  )
450  )
451  ->execute()
452  ->fetchColumn(0);
453  return $count ?: '-';
454  }
455 
460  protected function ‪initializeSiteLanguages()
461  {
463  $currentSite = ‪$GLOBALS['TYPO3_REQUEST']->getAttribute('site');
464  $this->siteLanguages = $currentSite->getAvailableLanguages($this->‪getBackendUser(), false, (int)$this->id);
465  }
466 
470  protected function ‪getLanguageService(): ‪LanguageService
471  {
472  return ‪$GLOBALS['LANG'];
473  }
474 
480  protected function ‪getBackendUser(): ‪BackendUserAuthentication
481  {
482  return ‪$GLOBALS['BE_USER'];
483  }
484 
488  protected function ‪getPageRenderer(): ‪PageRenderer
489  {
490  return GeneralUtility::makeInstance(PageRenderer::class);
491  }
492 }
‪TYPO3\CMS\Core\Imaging\Icon\SIZE_SMALL
‪const SIZE_SMALL
Definition: Icon.php:30
‪TYPO3\CMS\Info\Controller\InfoModuleController
Definition: InfoModuleController.php:41
‪TYPO3\CMS\Core\Site\Entity\SiteInterface
Definition: SiteInterface.php:26
‪TYPO3\CMS\Info\Controller\TranslationStatusController\initializeSiteLanguages
‪initializeSiteLanguages()
Definition: TranslationStatusController.php:457
‪TYPO3\CMS\Info\Controller\TranslationStatusController\renderL10nTable
‪string renderL10nTable(&$tree)
Definition: TranslationStatusController.php:154
‪TYPO3\CMS\Info\Controller\TranslationStatusController
Definition: TranslationStatusController.php:39
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getPageRenderer
‪PageRenderer getPageRenderer()
Definition: TranslationStatusController.php:485
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication\getTSConfig
‪array getTSConfig()
Definition: BackendUserAuthentication.php:1217
‪TYPO3\CMS\Backend\Utility\BackendUtility\cshItem
‪static string cshItem($table, $field, $_='', $wrap='')
Definition: BackendUtility.php:2306
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:33
‪TYPO3\CMS\Backend\Tree\View\PageTreeView
Definition: PageTreeView.php:24
‪TYPO3\CMS\Info\Controller\TranslationStatusController\main
‪string main()
Definition: TranslationStatusController.php:79
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getLanguageService
‪LanguageService getLanguageService()
Definition: TranslationStatusController.php:467
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$siteLanguages
‪SiteLanguage[] $siteLanguages
Definition: TranslationStatusController.php:47
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:24
‪TYPO3\CMS\Core\Page\PageRenderer\loadRequireJsModule
‪loadRequireJsModule($mainModuleName, $callBackFunction=null)
Definition: PageRenderer.php:1493
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage
Definition: SiteLanguage.php:26
‪TYPO3\CMS\Backend\Utility\BackendUtility\wrapClickMenuOnIcon
‪static string wrapClickMenuOnIcon( $content, $table, $uid=0, $context='', $_addParams='', $_enDisItems='', $returnTagParameters=false)
Definition: BackendUtility.php:2510
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$id
‪$id
Definition: TranslationStatusController.php:56
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getLangStatus
‪array getLangStatus($pageId, $langId)
Definition: TranslationStatusController.php:382
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:42
‪TYPO3\CMS\Info\Controller\TranslationStatusController\init
‪init($pObj)
Definition: TranslationStatusController.php:63
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Info\Controller\TranslationStatusController\modMenu
‪array modMenu()
Definition: TranslationStatusController.php:123
‪TYPO3\CMS\Backend\Utility\BackendUtility\getDropdownMenu
‪static string getDropdownMenu( $mainParams, $elementName, $currentValue, $menuItems, $script='', $addParams='')
Definition: BackendUtility.php:2653
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$iconFactory
‪IconFactory $iconFactory
Definition: TranslationStatusController.php:43
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_SHOW
‪const PAGE_SHOW
Definition: Permission.php:33
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getContentElementCount
‪int getContentElementCount($pageId, $sysLang)
Definition: TranslationStatusController.php:425
‪TYPO3\CMS\Backend\Utility\BackendUtility
Definition: BackendUtility.php:75
‪TYPO3\CMS\Backend\Utility\BackendUtility\getRecordWSOL
‪static array getRecordWSOL( $table, $uid, $fields=' *', $where='', $useDeleteClause=true, $unsetMovePointers=false)
Definition: BackendUtility.php:139
‪$output
‪$output
Definition: annotationChecker.php:119
‪TYPO3\CMS\Backend\Utility\BackendUtility\viewOnClick
‪static string viewOnClick( $pageUid, $backPath='', $rootLine=null, $anchorSection='', $alternativeUrl='', $additionalGetVars='', $switchFocus=true)
Definition: BackendUtility.php:2359
‪TYPO3\CMS\Info\Controller\TranslationStatusController\getBackendUser
‪BackendUserAuthentication getBackendUser()
Definition: TranslationStatusController.php:477
‪$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\Core\Database\Query\Restriction\DeletedRestriction
Definition: DeletedRestriction.php:28
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Info\Controller\TranslationStatusController\$pObj
‪InfoModuleController $pObj
Definition: TranslationStatusController.php:51
‪TYPO3\CMS\Info\Controller
Definition: InfoModuleController.php:16
‪TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction
Definition: WorkspaceRestriction.php:39