/** * Rendering the content. * * @return void * @todo Define visibility */ public function main() { $msg = array(); // Add a message, telling that no documents were open... $msg[] = '<p>' . $GLOBALS['LANG']->getLL('noDocuments_msg', 1) . '</p><br />'; // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = \TYPO3\CMS\Backend\Utility\BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; // Perform some access checks: $a_wl = $GLOBALS['BE_USER']->check('modules', 'web_list'); $a_wp = \TYPO3\CMS\Core\Extension\ExtensionManager::isLoaded('cms') && $GLOBALS['BE_USER']->check('modules', $pageModule); // Finding module images: PAGE $imgFile = $GLOBALS['LANG']->moduleLabels['tabs_images']['web_layout_tab']; $imgInfo = @getimagesize($imgFile); $img_web_layout = is_array($imgInfo) ? '<img src="../' . substr($imgFile, strlen(PATH_site)) . '" ' . $imgInfo[3] . ' alt="" />' : ''; // Finding module images: LIST $imgFile = $GLOBALS['LANG']->moduleLabels['tabs_images']['web_list_tab']; $imgInfo = @getimagesize($imgFile); $img_web_list = is_array($imgInfo) ? '<img src="../' . substr($imgFile, strlen(PATH_site)) . '" ' . $imgInfo[3] . ' alt="" />' : ''; // If either the Web>List OR Web>Page module are active, show the little message with links to those modules: if ($a_wl || $a_wp) { $msg_2 = array(); // Web>Page: if ($a_wp) { $msg_2[] = '<strong><a href="#" onclick="top.goToModule(\'' . $pageModule . '\'); return false;">' . $GLOBALS['LANG']->getLL('noDocuments_pagemodule', 1) . $img_web_layout . '</a></strong>'; if ($a_wl) { $msg_2[] = $GLOBALS['LANG']->getLL('noDocuments_OR'); } } // Web>List if ($a_wl) { $msg_2[] = '<strong><a href="#" onclick="top.goToModule(\'web_list\'); return false;">' . $GLOBALS['LANG']->getLL('noDocuments_listmodule', 1) . $img_web_list . '</a></strong>'; } $msg[] = '<p>' . sprintf($GLOBALS['LANG']->getLL('noDocuments_msg2', 1), implode(' ', $msg_2)) . '</p><br />'; } // Display the list of the most recently edited documents: $modObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Opendocs\\Controller\\OpendocsController'); $msg[] = '<p>' . $GLOBALS['LANG']->getLL('noDocuments_msg3', TRUE) . '</p><br />' . $modObj->renderMenu(); // Adding the content: $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('noDocuments'), implode(' ', $msg), 0, 1); }
/** * Generates the JavaScript code for the backend, * and since we're loading a backend module outside of the actual backend * this copies parts of the backend.php * * @return string */ protected function generateJavascript() { $pathTYPO3 = GeneralUtility::dirname(GeneralUtility::getIndpEnv('SCRIPT_NAME')) . '/'; // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; if (!$GLOBALS['BE_USER']->check('modules', $pageModule)) { $pageModule = ''; } // Determine security level from conf vars and default to super challenged if ($GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']) { $loginSecurityLevel = $GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']; } else { $loginSecurityLevel = 'superchallenged'; } $t3Configuration = array('siteUrl' => GeneralUtility::getIndpEnv('TYPO3_SITE_URL'), 'PATH_typo3' => $pathTYPO3, 'PATH_typo3_enc' => rawurlencode($pathTYPO3), 'username' => htmlspecialchars($GLOBALS['BE_USER']->user['username']), 'uniqueID' => GeneralUtility::shortMD5(uniqid('', TRUE)), 'securityLevel' => $loginSecurityLevel, 'TYPO3_mainDir' => TYPO3_mainDir, 'pageModule' => $pageModule, 'inWorkspace' => $GLOBALS['BE_USER']->workspace !== 0 ? 1 : 0, 'workspaceFrontendPreviewEnabled' => $GLOBALS['BE_USER']->user['workspace_preview'] ? 1 : 0, 'veriCode' => $GLOBALS['BE_USER']->veriCode(), 'denyFileTypes' => PHP_EXTENSIONS_DEFAULT, 'moduleMenuWidth' => $this->menuWidth - 1, 'topBarHeight' => isset($GLOBALS['TBE_STYLES']['dims']['topFrameH']) ? (int) $GLOBALS['TBE_STYLES']['dims']['topFrameH'] : 30, 'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? (int) $GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup'] : FALSE, 'listModulePath' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('recordlist') . 'mod1/', 'debugInWindow' => $GLOBALS['BE_USER']->uc['debugInWindow'] ? 1 : 0, 'ContextHelpWindows' => array('width' => 600, 'height' => 400)); $t3LLLcore = array('waitTitle' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_logging_in'), 'refresh_login_failed' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_failed'), 'refresh_login_failed_message' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_failed_message'), 'refresh_login_title' => sprintf($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_title'), htmlspecialchars($GLOBALS['BE_USER']->user['username'])), 'login_expired' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.login_expired'), 'refresh_login_username' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_username'), 'refresh_login_password' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_password'), 'refresh_login_emptyPassword' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_emptyPassword'), 'refresh_login_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_button'), 'refresh_logout_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_logout_button'), 'please_wait' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.please_wait'), 'loadingIndicator' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:loadingIndicator'), 'be_locked' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.be_locked'), 'refresh_login_countdown_singular' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_countdown_singular'), 'refresh_login_countdown' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_countdown'), 'login_about_to_expire' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.login_about_to_expire'), 'login_about_to_expire_title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.login_about_to_expire_title'), 'refresh_login_refresh_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_refresh_button'), 'refresh_direct_logout_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_direct_logout_button'), 'tabs_closeAll' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:tabs.closeAll'), 'tabs_closeOther' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:tabs.closeOther'), 'tabs_close' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:tabs.close'), 'tabs_openInBrowserWindow' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:tabs.openInBrowserWindow'), 'donateWindow_title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.title'), 'donateWindow_message' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.message'), 'donateWindow_button_donate' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.button_donate'), 'donateWindow_button_disable' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.button_disable'), 'donateWindow_button_postpone' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.button_postpone')); $js = ' TYPO3.configuration = ' . json_encode($t3Configuration) . '; TYPO3.LLL = { core : ' . json_encode($t3LLLcore) . ' }; /** * TypoSetup object. */ function typoSetup() { // this.PATH_typo3 = TYPO3.configuration.PATH_typo3; this.PATH_typo3_enc = TYPO3.configuration.PATH_typo3_enc; this.username = TYPO3.configuration.username; this.uniqueID = TYPO3.configuration.uniqueID; this.navFrameWidth = 0; this.securityLevel = TYPO3.configuration.securityLevel; this.veriCode = TYPO3.configuration.veriCode; this.denyFileTypes = TYPO3.configuration.denyFileTypes; } var TS = new typoSetup(); //backwards compatibility '; return $js; }
/** * Administrative links for a table / record * * @param string $table Table name * @param array $row Record for which administrative links are generated. * @return string HTML link tags. */ public function adminLinks($table, $row) { // Edit link: $editUrl = BackendUtility::getModuleUrl('record_edit', ['edit' => [$table => [$row['uid'] => 'edit']], 'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')]); $adminLink = '<a class="btn btn-default" href="' . htmlspecialchars($editUrl) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:cm.edit', true) . '">' . $this->moduleTemplate->getIconFactory()->getIcon('actions-document-open', Icon::SIZE_SMALL)->render() . '</a>'; // Delete link: $adminLink .= '<a class="btn btn-default" href="' . htmlspecialchars(BackendUtility::getLinkToDataHandlerAction('&cmd[' . $table . '][' . $row['uid'] . '][delete]=1')) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:cm.delete', true) . '">' . $this->moduleTemplate->getIconFactory()->getIcon('actions-edit-delete', Icon::SIZE_SMALL)->render() . '</a>'; if ($table === 'pages') { // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; // Perform some access checks: $a_wl = $GLOBALS['BE_USER']->check('modules', 'web_list'); $a_wp = $GLOBALS['BE_USER']->check('modules', $pageModule); $adminLink .= '<a class="btn btn-default" href="#" onclick="top.loadEditId(' . $row['uid'] . ');top.goToModule(' . GeneralUtility::quoteJSvalue($pageModule) . '); return false;">' . $this->moduleTemplate->getIconFactory()->getIcon('actions-page-open', Icon::SIZE_SMALL)->render() . '</a>'; $adminLink .= '<a class="btn btn-default" href="#" onclick="top.loadEditId(' . $row['uid'] . ');top.goToModule(\'web_list\'); return false;">' . $this->moduleTemplate->getIconFactory()->getIcon('actions-system-list-open', Icon::SIZE_SMALL)->render() . '</a>'; // "View page" icon is added: $adminLink .= '<a class="btn btn-default" href="#" onclick="' . htmlspecialchars(BackendUtility::viewOnClick($row['uid'], '', BackendUtility::BEgetRootLine($row['uid']))) . '">' . $this->moduleTemplate->getIconFactory()->getIcon('actions-document-view', Icon::SIZE_SMALL)->render() . '</a>'; } else { if ($row['pid'] == -1) { $getVars = '&ADMCMD_vPrev[' . rawurlencode($table . ':' . $row['t3ver_oid']) . ']=' . $row['uid']; // "View page" icon is added: $adminLink .= '<a class="btn btn-default" href="#" onclick="' . htmlspecialchars(BackendUtility::viewOnClick($row['_REAL_PID'], '', BackendUtility::BEgetRootLine($row['_REAL_PID']), '', '', $getVars)) . '">' . $this->moduleTemplate->getIconFactory()->getIcon('actions-document-view', Icon::SIZE_SMALL)->render() . '</a>'; } } return '<div class="btn-group btn-group-sm" role="group">' . $adminLink . '</div>'; }
/** * Adding CM element for regular editing of the element! * * @param string $table Table name * @param integer $uid UID for the current record. * @return array Item array, element in $menuItems * @internal * @todo Define visibility */ public function DB_edit($table, $uid) { // If another module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = \TYPO3\CMS\Backend\Utility\BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; $editOnClick = ''; $loc = 'top.content.list_frame'; $addParam = ''; $theIcon = 'actions-document-open'; if ($this->iParts[0] == 'pages' && $this->iParts[1] && $GLOBALS['BE_USER']->check('modules', $pageModule)) { $theIcon = 'actions-page-open'; $this->editPageIconSet = 1; if ($GLOBALS['BE_USER']->uc['classicPageEditMode'] || !\TYPO3\CMS\Core\Extension\ExtensionManager::isLoaded('cms')) { $addParam = '&editRegularContentFromId=' . intval($this->iParts[1]); } else { $editOnClick = 'if(' . $loc . '){' . $loc . '.location.href=top.TS.PATH_typo3+\'alt_doc.php?returnUrl=\'+top.rawurlencode(' . $this->frameLocation($loc . '.document') . '.pathname+' . $this->frameLocation($loc . '.document') . '.search)+\'&edit[' . $table . '][' . $uid . ']=edit' . $addParam . '\';}'; } } if (!$editOnClick) { $editOnClick = 'if(' . $loc . '){' . $loc . '.location.href=top.TS.PATH_typo3+\'alt_doc.php?returnUrl=\'+top.rawurlencode(' . $this->frameLocation($loc . '.document') . '.pathname+' . $this->frameLocation($loc . '.document') . '.search)+\'&edit[' . $table . '][' . $uid . ']=edit' . $addParam . '\';}'; } return $this->linkItem($this->label('edit'), $this->excludeIcon(\TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon($theIcon)), $editOnClick . 'return hideCM();'); }
/** * Generates the JavaScript code for the backend. * * @return void */ protected function generateJavascript() { $beUser = $this->getBackendUser(); // Needed for FormEngine manipulation (date picker) $dateFormat = $GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? array('MM-DD-YYYY', 'HH:mm MM-DD-YYYY') : array('DD-MM-YYYY', 'HH:mm DD-MM-YYYY'); $this->pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat); // define the window size of the element browser etc. $popupWindowWidth = 700; $popupWindowHeight = 750; $popupWindowSize = trim($beUser->getTSConfigVal('options.popupWindowSize')); if (!empty($popupWindowSize)) { list($popupWindowWidth, $popupWindowHeight) = GeneralUtility::intExplode('x', $popupWindowSize); } // define the window size of the popups within the RTE $rtePopupWindowSize = trim($beUser->getTSConfigVal('options.rte.popupWindowSize')); if (!empty($rtePopupWindowSize)) { list($rtePopupWindowWidth, $rtePopupWindowHeight) = GeneralUtility::trimExplode('x', $rtePopupWindowSize); } $rtePopupWindowWidth = !empty($rtePopupWindowWidth) ? (int) $rtePopupWindowWidth : $popupWindowWidth - 200; $rtePopupWindowHeight = !empty($rtePopupWindowHeight) ? (int) $rtePopupWindowHeight : $popupWindowHeight - 250; $pathTYPO3 = GeneralUtility::dirname(GeneralUtility::getIndpEnv('SCRIPT_NAME')) . '/'; // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($beUser->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; if (!$beUser->check('modules', $pageModule)) { $pageModule = ''; } $t3Configuration = array('siteUrl' => GeneralUtility::getIndpEnv('TYPO3_SITE_URL'), 'PATH_typo3' => $pathTYPO3, 'PATH_typo3_enc' => rawurlencode($pathTYPO3), 'username' => htmlspecialchars($beUser->user['username']), 'userUid' => htmlspecialchars($beUser->user['uid']), 'uniqueID' => GeneralUtility::shortMD5(uniqid('', true)), 'securityLevel' => trim($GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']) ?: 'normal', 'TYPO3_mainDir' => TYPO3_mainDir, 'pageModule' => $pageModule, 'inWorkspace' => $beUser->workspace !== 0, 'workspaceFrontendPreviewEnabled' => $beUser->user['workspace_preview'] ? 1 : 0, 'veriCode' => $beUser->veriCode(), 'denyFileTypes' => PHP_EXTENSIONS_DEFAULT, 'moduleMenuWidth' => $this->menuWidth - 1, 'topBarHeight' => isset($GLOBALS['TBE_STYLES']['dims']['topFrameH']) ? (int) $GLOBALS['TBE_STYLES']['dims']['topFrameH'] : 30, 'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? (int) $GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup'] : false, 'listModulePath' => ExtensionManagementUtility::extRelPath('recordlist') . 'mod1/', 'debugInWindow' => $beUser->uc['debugInWindow'] ? 1 : 0, 'ContextHelpWindows' => array('width' => 600, 'height' => 400), 'PopupWindow' => array('width' => $popupWindowWidth, 'height' => $popupWindowHeight), 'RTEPopupWindow' => array('width' => $rtePopupWindowWidth, 'height' => $rtePopupWindowHeight)); $this->js .= ' TYPO3.configuration = ' . json_encode($t3Configuration) . '; /** * TypoSetup object. */ function typoSetup() { // this.PATH_typo3 = TYPO3.configuration.PATH_typo3; this.PATH_typo3_enc = TYPO3.configuration.PATH_typo3_enc; this.username = TYPO3.configuration.username; this.uniqueID = TYPO3.configuration.uniqueID; this.securityLevel = TYPO3.configuration.securityLevel; this.veriCode = TYPO3.configuration.veriCode; this.denyFileTypes = TYPO3.configuration.denyFileTypes; } var TS = new typoSetup(); //backwards compatibility /** * Frameset Module object * * Used in main modules with a frameset for submodules to keep the ID between modules * Typically that is set by something like this in a Web>* sub module: * if (top.fsMod) top.fsMod.recentIds["web"] = "\'.(int)$this->id.\'"; * if (top.fsMod) top.fsMod.recentIds["file"] = "...(file reference/string)..."; */ function fsModules() { // this.recentIds=new Array(); // used by frameset modules to track the most recent used id for list frame. this.navFrameHighlightedID=new Array(); // used by navigation frames to track which row id was highlighted last time this.currentMainLoaded=""; this.currentBank="0"; } var fsMod = new fsModules(); top.goToModule = function(modName, cMR_flag, addGetVars) { TYPO3.ModuleMenu.App.showModule(modName, addGetVars); } ' . $this->setStartupModule(); // Check editing of page: $this->handlePageEditing(); }
/** * Adding CM element for regular editing of the element! * * @param string $table Table name * @param int $uid UID for the current record. * @return array Item array, element in $menuItems * @internal */ public function DB_edit($table, $uid) { // If another module was specified, replace the default Page module with the new one $newPageModule = trim($this->backendUser->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; $loc = 'top.content.list_frame'; $theIcon = $this->iconFactory->getIcon('actions-document-open', Icon::SIZE_SMALL)->render(); $link = BackendUtility::getModuleUrl('record_edit', array('edit[' . $table . '][' . $uid . ']' => 'edit')); if ($this->iParts[0] === 'pages' && $this->iParts[1] && $this->backendUser->check('modules', $pageModule)) { $this->editPageIconSet = true; } $editOnClick = 'if(' . $loc . '){' . $loc . '.location.href=' . GeneralUtility::quoteJSvalue($link . '&returnUrl=') . '+top.rawurlencode(' . $this->frameLocation($loc . '.document') . '.pathname+' . $this->frameLocation($loc . '.document') . '.search);}'; return $this->linkItem($this->label('edit'), $theIcon, $editOnClick . ';'); }
/** * Initialize the class for various input etc. * * @return void * @todo Define visibility */ public function init() { $this->moduleUrl = BackendUtility::getModuleUrl('help_cshmanual'); // Setting GPvars: $this->tfID = GeneralUtility::_GP('tfID'); // Sanitizes the tfID using whitelisting. if (!preg_match('/^[a-zA-Z0-9_\\-\\.\\*]*$/', $this->tfID)) { $this->tfID = ''; } $this->back = GeneralUtility::_GP('back'); $this->renderALL = GeneralUtility::_GP('renderALL'); // Set internal table/field to the parts of "tfID" incoming var. $identifierParts = explode('.', $this->tfID); // The table is the first item $this->table = array_shift($identifierParts); $this->mainKey = $this->table; // The field is the second one $this->field = array_shift($identifierParts); // There may be extra parts for FlexForms if (count($identifierParts) > 0) { // There's at least one extra part $extraIdentifierInformation = array(); $extraIdentifierInformation[] = array_shift($identifierParts); // If the ds_pointerField contains a comma, it means the choice of FlexForm DS // is determined by 2 parameters. In this case we have an extra identifier part if (strpos($GLOBALS['TCA'][$this->table]['columns'][$this->field]['config']['ds_pointerField'], ',') !== FALSE) { $extraIdentifierInformation[] = array_shift($identifierParts); } // The remaining parts make up the FlexForm field name itself // (reassembled with dots) $flexFormField = implode('.', $identifierParts); // Assemble a different main key and switch field to use FlexForm field name $this->mainKey .= '.' . $this->field; foreach ($extraIdentifierInformation as $extraKey) { $this->mainKey .= '.' . $extraKey; } $this->field = $flexFormField; } // limitAccess is checked if the $this->table really IS a table (and if the user is NOT a translator who should see all!) $showAllToUser = BackendUtility::isModuleSetInTBE_MODULES('txllxmltranslateM1') && $GLOBALS['BE_USER']->check('modules', 'txllxmltranslateM1'); $this->limitAccess = isset($GLOBALS['TCA'][$this->table]) ? !$showAllToUser : FALSE; $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_view_help.xlf', 1); }
/** * Creates the content for the "edit" section ("module") of the Admin Panel * * @return string HTML content for the section. Consists of a string with table-rows with four columns. * @see display() */ protected function getEditModule() { $out = $this->extGetHead('edit'); if ($this->getBackendUser()->uc['TSFE_adminConfig']['display_edit']) { // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($this->getBackendUser()->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; $this->extNeedUpdate = true; if ($this->extFeEditLoaded) { $out .= $this->extGetItem('edit_displayFieldIcons', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="0" /><input type="checkbox" id="edit_displayFieldIcons" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="1"' . ($this->getBackendUser()->uc['TSFE_adminConfig']['edit_displayFieldIcons'] ? ' checked="checked"' : '') . ' />'); $out .= $this->extGetItem('edit_displayIcons', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="0" /><input type="checkbox" id="edit_displayIcons" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="1"' . ($this->getBackendUser()->uc['TSFE_adminConfig']['edit_displayIcons'] ? ' checked="checked"' : '') . ' />'); } $out .= $this->extGetItem('', $this->ext_makeToolBar()); if (!GeneralUtility::_GP('ADMCMD_view')) { $out .= $this->extGetItem('', '<a class="btn btn-default" href="#" onclick="' . htmlspecialchars(' if (parent.opener && parent.opener.top && parent.opener.top.TS) { parent.opener.top.fsMod.recentIds["web"]=' . (int) $this->getTypoScriptFrontendController()->page['uid'] . '; if (parent.opener.top.content && parent.opener.top.content.nav_frame && parent.opener.top.content.nav_frame.refresh_nav) { parent.opener.top.content.nav_frame.refresh_nav(); } parent.opener.top.goToModule("' . $pageModule . '"); parent.opener.top.focus(); } else { vHWin=window.open(' . GeneralUtility::quoteJSvalue(BackendUtility::getBackendScript()) . ',\'' . md5('Typo3Backend-' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']) . '\'); vHWin.focus(); } return false; ') . '">' . $this->extGetLL('edit_openAB') . '</a>'); } } return $out; }
/** * Administrative links for a table / record * * @param string $table Table name * @param array $row Record for which administrative links are generated. * @return string HTML link tags. * @todo Define visibility */ public function adminLinks($table, $row) { // Edit link: $adminLink = '<a href="#" onclick="' . htmlspecialchars(BackendUtility::editOnClick('&edit[' . $table . '][' . $row['uid'] . ']=edit', $this->doc->backPath)) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:cm.edit', TRUE) . '">' . IconUtility::getSpriteIcon('actions-document-open') . '</a>'; // Delete link: $adminLink .= '<a href="' . htmlspecialchars($this->doc->issueCommand('&cmd[' . $table . '][' . $row['uid'] . '][delete]=1')) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xlf:cm.delete', TRUE) . '">' . IconUtility::getSpriteIcon('actions-edit-delete') . '</a>'; if ($table === 'pages') { // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; // Perform some acccess checks: $a_wl = $GLOBALS['BE_USER']->check('modules', 'web_list'); $a_wp = $GLOBALS['BE_USER']->check('modules', $pageModule); $adminLink .= '<a href="#" onclick="top.loadEditId(' . $row['uid'] . ');top.goToModule(\'' . $pageModule . '\'); return false;">' . IconUtility::getSpriteIcon('actions-page-open') . '</a>'; $adminLink .= '<a href="#" onclick="top.loadEditId(' . $row['uid'] . ');top.goToModule(\'web_list\'); return false;">' . IconUtility::getSpriteIcon('actions-system-list-open') . '</a>'; // "View page" icon is added: $adminLink .= '<a href="#" onclick="' . htmlspecialchars(BackendUtility::viewOnClick($row['uid'], $this->doc->backPath, BackendUtility::BEgetRootLine($row['uid']))) . '">' . IconUtility::getSpriteIcon('actions-document-view') . '</a>'; } else { if ($row['pid'] == -1) { $getVars = '&ADMCMD_vPrev[' . rawurlencode($table . ':' . $row['t3ver_oid']) . ']=' . $row['uid']; // "View page" icon is added: $adminLink .= '<a href="#" onclick="' . htmlspecialchars(BackendUtility::viewOnClick($row['_REAL_PID'], $this->doc->backPath, BackendUtility::BEgetRootLine($row['_REAL_PID']), '', '', $getVars)) . '">' . IconUtility::getSpriteIcon('actions-document-view') . '</a>'; } } return $adminLink; }
/** * Checks access to a backend module with the $MCONF passed as first argument * * @param array $conf $MCONF array of a backend module! * @param boolean $exitOnError If set, an array will issue an error message and exit. * @throws \RuntimeException * @return boolean Will return TRUE if $MCONF['access'] is not set at all, if the BE_USER is admin or if the module is enabled in the be_users/be_groups records of the user (specifically enabled). Will return FALSE if the module name is not even found in $TBE_MODULES * @todo Define visibility */ public function modAccess($conf, $exitOnError) { if (!BackendUtility::isModuleSetInTBE_MODULES($conf['name'])) { if ($exitOnError) { throw new \RuntimeException('Fatal Error: This module "' . $conf['name'] . '" is not enabled in TBE_MODULES', 1294586446); } return FALSE; } // Workspaces check: if (!empty($conf['workspaces']) && \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('workspaces') && ($this->workspace !== 0 || !GeneralUtility::inList($conf['workspaces'], 'online')) && ($this->workspace !== -1 || !GeneralUtility::inList($conf['workspaces'], 'offline')) && ($this->workspace <= 0 || !GeneralUtility::inList($conf['workspaces'], 'custom'))) { if ($exitOnError) { throw new \RuntimeException('Workspace Error: This module "' . $conf['name'] . '" is not available under the current workspace', 1294586447); } return FALSE; } // Returns TRUE if conf[access] is not set at all or if the user is admin if (!$conf['access'] || $this->isAdmin()) { return TRUE; } // If $conf['access'] is set but not with 'admin' then we return TRUE, if the module is found in the modList $acs = FALSE; if (!strstr($conf['access'], 'admin') && $conf['name']) { $acs = $this->check('modules', $conf['name']); } if (!$acs && $exitOnError) { throw new \RuntimeException('Access Error: You don\'t have access to this module.', 1294586448); } else { return $acs; } }
/** * Generates the JavaScript code for the backend. * * @return void */ protected function generateJavascript() { $pathTYPO3 = \TYPO3\CMS\Core\Utility\GeneralUtility::dirname(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('SCRIPT_NAME')) . '/'; // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = \TYPO3\CMS\Backend\Utility\BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; if (!$GLOBALS['BE_USER']->check('modules', $pageModule)) { $pageModule = ''; } $menuFrameName = 'menu'; if ($GLOBALS['BE_USER']->uc['noMenuMode'] === 'icons') { $menuFrameName = 'topmenuFrame'; } // Determine security level from conf vars and default to super challenged if ($GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']) { $this->loginSecurityLevel = $GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']; } else { $this->loginSecurityLevel = 'superchallenged'; } $t3Configuration = array('siteUrl' => \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SITE_URL'), 'PATH_typo3' => $pathTYPO3, 'PATH_typo3_enc' => rawurlencode($pathTYPO3), 'username' => htmlspecialchars($GLOBALS['BE_USER']->user['username']), 'uniqueID' => \TYPO3\CMS\Core\Utility\GeneralUtility::shortMD5(uniqid('')), 'securityLevel' => $this->loginSecurityLevel, 'TYPO3_mainDir' => TYPO3_mainDir, 'pageModule' => $pageModule, 'condensedMode' => $GLOBALS['BE_USER']->uc['condensedMode'] ? 1 : 0, 'inWorkspace' => $GLOBALS['BE_USER']->workspace !== 0 ? 1 : 0, 'workspaceFrontendPreviewEnabled' => $GLOBALS['BE_USER']->user['workspace_preview'] ? 1 : 0, 'veriCode' => $GLOBALS['BE_USER']->veriCode(), 'denyFileTypes' => PHP_EXTENSIONS_DEFAULT, 'moduleMenuWidth' => $this->menuWidth - 1, 'topBarHeight' => isset($GLOBALS['TBE_STYLES']['dims']['topFrameH']) ? intval($GLOBALS['TBE_STYLES']['dims']['topFrameH']) : 30, 'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? intval($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) : FALSE, 'listModulePath' => \TYPO3\CMS\Core\Extension\ExtensionManager::isLoaded('recordlist') ? \TYPO3\CMS\Core\Extension\ExtensionManager::extRelPath('recordlist') . 'mod1/' : '', 'debugInWindow' => $GLOBALS['BE_USER']->uc['debugInWindow'] ? 1 : 0, 'ContextHelpWindows' => array('width' => 600, 'height' => 400), 'firstWebmountPid' => intval($GLOBALS['WEBMOUNTS'][0])); $this->js .= ' TYPO3.configuration = ' . json_encode($t3Configuration) . '; /** * TypoSetup object. */ function typoSetup() { // this.PATH_typo3 = TYPO3.configuration.PATH_typo3; this.PATH_typo3_enc = TYPO3.configuration.PATH_typo3_enc; this.username = TYPO3.configuration.username; this.uniqueID = TYPO3.configuration.uniqueID; this.navFrameWidth = 0; this.securityLevel = TYPO3.configuration.securityLevel; this.veriCode = TYPO3.configuration.veriCode; this.denyFileTypes = TYPO3.configuration.denyFileTypes; } var TS = new typoSetup(); //backwards compatibility /** * Frameset Module object * * Used in main modules with a frameset for submodules to keep the ID between modules * Typically that is set by something like this in a Web>* sub module: * if (top.fsMod) top.fsMod.recentIds["web"] = "\'.intval($this->id).\'"; * if (top.fsMod) top.fsMod.recentIds["file"] = "...(file reference/string)..."; */ function fsModules() { // this.recentIds=new Array(); // used by frameset modules to track the most recent used id for list frame. this.navFrameHighlightedID=new Array(); // used by navigation frames to track which row id was highlighted last time this.currentMainLoaded=""; this.currentBank="0"; } var fsMod = new fsModules(); top.goToModule = function(modName, cMR_flag, addGetVars) { TYPO3.ModuleMenu.App.showModule(modName, addGetVars); } ' . $this->setStartupModule(); // Check editing of page: $this->handlePageEditing(); }
function languageRows($languageList, $elementList) { // Initialization: $elements = $this->explodeElement($elementList); $firstEl = current($elements); $hookObj = GeneralUtility::makeInstance(Tcemain::class); $this->l10nMgrTools = GeneralUtility::makeInstance(Tools::class); $this->l10nMgrTools->verbose = false; // Otherwise it will show records which has fields but none editable. $inputRecord = BackendUtility::getRecord($firstEl[0], $firstEl[1], 'pid'); $this->sysLanguages = $this->l10nMgrTools->t8Tools->getSystemLanguages($firstEl[0] == 'pages' ? $firstEl[1] : $inputRecord['pid']); $languages = $this->getLanguages($languageList, $this->sysLanguages); if (count($languages)) { $tRows = array(); // Header: $cells = '<td class="bgColor2 tableheader">Element:</td>'; foreach ($languages as $l) { if ($l >= 1) { $baseRecordFlag = '<img src="' . htmlspecialchars($GLOBALS['BACK_PATH'] . $this->sysLanguages[$l]['flagIcon']) . '" alt="' . htmlspecialchars($this->sysLanguages[$l]['title']) . '" title="' . htmlspecialchars($this->sysLanguages[$l]['title']) . '" />'; $cells .= '<td class="bgColor2 tableheader">' . $baseRecordFlag . '</td>'; } } $tRows[] = $cells; foreach ($elements as $el) { $cells = ''; $rec_on = array(); // Get CURRENT online record and icon based on "t3ver_oid": if ($el[0] !== '' && $el[1] > 0) { $rec_on = BackendUtility::getRecord($el[0], $el[1]); } $icon = IconUtility::getSpriteIconForRecord($el[0], $rec_on); $icon = $this->doc->wrapClickMenuOnIcon($icon, $el[0], $rec_on['uid'], 2); $linkToIt = '<a href="#" onclick="' . htmlspecialchars('parent.list_frame.location.href="' . $GLOBALS['BACK_PATH'] . ExtensionManagementUtility::extRelPath('l10nmgr') . 'cm2/index.php?table=' . $el[0] . '&uid=' . $el[1] . '"; return false;') . '" target="listframe"> ' . BackendUtility::getRecordTitle($el[0], $rec_on, true) . ' </a>'; if ($el[0] == 'pages') { // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; $path_module_path = GeneralUtility::resolveBackPath($GLOBALS['BACK_PATH'] . '../' . substr($GLOBALS['TBE_MODULES']['_PATHS'][$pageModule], strlen(PATH_site))); $onclick = 'parent.list_frame.location.href="' . $path_module_path . '?id=' . $el[1] . '"; return false;'; $pmLink = '<a href="#" onclick="' . htmlspecialchars($onclick) . '" target="listframe"><i>[Edit page]</i></a>'; } else { $pmLink = ''; } $cells = '<td>' . $icon . $linkToIt . $pmLink . '</td>'; foreach ($languages as $l) { if ($l >= 1) { $cells .= '<td align="center">' . $hookObj->calcStat(array($el[0], $el[1]), $l) . '</td>'; } } $tRows[] = $cells; } return '<table border="0" cellpadding="0" cellspacing="0"><tr>' . implode('</tr><tr>', $tRows) . '</tr></table>'; } }
/** * Creates the content for the "edit" section ("module") of the Admin Panel * * @return string HTML content for the section. Consists of a string with table-rows with four columns. * @see display() */ protected function getEditModule() { $out = $this->extGetHead('edit'); if ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['display_edit']) { // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule')); $pageModule = \TYPO3\CMS\Backend\Utility\BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; $this->extNeedUpdate = TRUE; $out .= $this->extGetItem('edit_displayFieldIcons', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_displayFieldIcons'] ? ' checked="checked"' : '') . ' />'); $out .= $this->extGetItem('edit_displayIcons', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_displayIcons'] ? ' checked="checked"' : '') . ' />'); $out .= $this->extGetItem('edit_editFormsOnPage', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editFormsOnPage'] ? ' checked="checked"' : '') . ' />'); $out .= $this->extGetItem('edit_editNoPopup', '', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="1"' . ($GLOBALS['BE_USER']->uc['TSFE_adminConfig']['edit_editNoPopup'] ? ' checked="checked"' : '') . ' />'); $out .= $this->extGetItem('', $this->ext_makeToolBar()); if (!\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('ADMCMD_view')) { $out .= $this->extGetItem('', '<a href="#" onclick="' . htmlspecialchars(' if (parent.opener && parent.opener.top && parent.opener.top.TS) { parent.opener.top.fsMod.recentIds["web"]=' . intval($GLOBALS['TSFE']->page['uid']) . '; if (parent.opener.top.content && parent.opener.top.content.nav_frame && parent.opener.top.content.nav_frame.refresh_nav) { parent.opener.top.content.nav_frame.refresh_nav(); } parent.opener.top.goToModule("' . $pageModule . '"); parent.opener.top.focus(); } else { vHWin=window.open(\'' . TYPO3_mainDir . \TYPO3\CMS\Backend\Utility\BackendUtility::getBackendScript() . '\',\'' . md5('Typo3Backend-' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']) . '\',\'status=1,menubar=1,scrollbars=1,resizable=1\'); vHWin.focus(); } return false; ') . '">' . $this->extGetLL('edit_openAB') . '</a>'); } } return $out; }
/** * Generates the JavaScript code for the backend, * and since we're loading a backend module outside of the actual backend * this copies parts of the index.php?M=main module * * @return string */ protected function generateJavascript() { $backendUser = $this->getBackendUser(); $lang = $this->getLanguageService(); // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($backendUser->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; if (!$backendUser->check('modules', $pageModule)) { $pageModule = ''; } $t3Configuration = array('siteUrl' => GeneralUtility::getIndpEnv('TYPO3_SITE_URL'), 'username' => htmlspecialchars($backendUser->user['username']), 'uniqueID' => GeneralUtility::shortMD5(uniqid('', true)), 'pageModule' => $pageModule, 'inWorkspace' => $backendUser->workspace !== 0, 'workspaceFrontendPreviewEnabled' => $backendUser->user['workspace_preview'] ? 1 : 0, 'topBarHeight' => isset($GLOBALS['TBE_STYLES']['dims']['topFrameH']) ? (int) $GLOBALS['TBE_STYLES']['dims']['topFrameH'] : 30, 'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? (int) $GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup'] : false, 'debugInWindow' => $backendUser->uc['debugInWindow'] ? 1 : 0, 'ContextHelpWindows' => array('width' => 600, 'height' => 400)); $t3LLLcore = array('waitTitle' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_logging_in'), 'refresh_login_failed' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_failed'), 'refresh_login_failed_message' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_failed_message'), 'refresh_login_title' => sprintf($lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_title'), htmlspecialchars($backendUser->user['username'])), 'login_expired' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.login_expired'), 'refresh_login_username' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_username'), 'refresh_login_password' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_password'), 'refresh_login_emptyPassword' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_emptyPassword'), 'refresh_login_button' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_button'), 'refresh_logout_button' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_logout_button'), 'refresh_exit_button' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_exit_button'), 'please_wait' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.please_wait'), 'loadingIndicator' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:loadingIndicator'), 'be_locked' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.be_locked'), 'refresh_login_countdown_singular' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_countdown_singular'), 'refresh_login_countdown' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_countdown'), 'login_about_to_expire' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.login_about_to_expire'), 'login_about_to_expire_title' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.login_about_to_expire_title'), 'refresh_login_refresh_button' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_login_refresh_button'), 'refresh_direct_logout_button' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:mess.refresh_direct_logout_button'), 'tabs_closeAll' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:tabs.closeAll'), 'tabs_closeOther' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:tabs.closeOther'), 'tabs_close' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:tabs.close'), 'tabs_openInBrowserWindow' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:tabs.openInBrowserWindow'), 'donateWindow_title' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.title'), 'donateWindow_message' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.message'), 'donateWindow_button_donate' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.button_donate'), 'donateWindow_button_disable' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.button_disable'), 'donateWindow_button_postpone' => $lang->sL('LLL:EXT:lang/locallang_core.xlf:donateWindow.button_postpone')); return ' TYPO3.configuration = ' . json_encode($t3Configuration) . '; TYPO3.LLL = { core : ' . json_encode($t3LLLcore) . ' }; /** * TypoSetup object. */ function typoSetup() { // this.username = TYPO3.configuration.username; this.uniqueID = TYPO3.configuration.uniqueID; } var TS = new typoSetup(); //backwards compatibility '; }
/** * Generates the JavaScript code for the backend. * * @return void */ protected function generateJavascript() { $beUser = $this->getBackendUser(); // Needed for FormEngine manipulation (date picker) $dateFormat = $GLOBALS['TYPO3_CONF_VARS']['SYS']['USdateFormat'] ? ['MM-DD-YYYY', 'HH:mm MM-DD-YYYY'] : ['DD-MM-YYYY', 'HH:mm DD-MM-YYYY']; $this->pageRenderer->addInlineSetting('DateTimePicker', 'DateFormat', $dateFormat); // If another page module was specified, replace the default Page module with the new one $newPageModule = trim($beUser->getTSConfigVal('options.overridePageModule')); $pageModule = BackendUtility::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout'; if (!$beUser->check('modules', $pageModule)) { $pageModule = ''; } $t3Configuration = ['siteUrl' => GeneralUtility::getIndpEnv('TYPO3_SITE_URL'), 'username' => htmlspecialchars($beUser->user['username']), 'uniqueID' => GeneralUtility::shortMD5(uniqid('', true)), 'pageModule' => $pageModule, 'inWorkspace' => $beUser->workspace !== 0, 'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? (int) $GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup'] : false, 'ContextHelpWindows' => ['width' => 600, 'height' => 400]]; $this->js .= ' TYPO3.configuration = ' . json_encode($t3Configuration) . '; /** * TypoSetup object. */ function typoSetup() { // this.username = TYPO3.configuration.username; this.uniqueID = TYPO3.configuration.uniqueID; } var TS = new typoSetup(); //backwards compatibility /** * Frameset Module object * * Used in main modules with a frameset for submodules to keep the ID between modules * Typically that is set by something like this in a Web>* sub module: * if (top.fsMod) top.fsMod.recentIds["web"] = "\'.(int)$this->id.\'"; * if (top.fsMod) top.fsMod.recentIds["file"] = "...(file reference/string)..."; */ function fsModules() { // this.recentIds=new Array(); // used by frameset modules to track the most recent used id for list frame. this.navFrameHighlightedID=new Array(); // used by navigation frames to track which row id was highlighted last time this.currentBank="0"; } var fsMod = new fsModules(); top.goToModule = function(modName, cMR_flag, addGetVars) { TYPO3.ModuleMenu.App.showModule(modName, addGetVars); } ' . $this->setStartupModule(); // Check editing of page: $this->handlePageEditing(); }