/** * Returns title for the shortcut icon * * @param string $shortcutLabel Shortcut label * @param string $moduleName Backend module name (key) * @param string $parentModuleName Parent module label * @return string Title for the shortcut icon */ protected function getShortcutIconTitle($shortcutLabel, $moduleName, $parentModuleName = '') { $languageService = $this->getLanguageService(); if (substr($moduleName, 0, 5) == 'xMOD_') { $title = substr($moduleName, 5); } else { list($mainModule, $subModule) = explode('_', $moduleName); $mainModuleLabels = $this->moduleLoader->getLabelsForModule($mainModule); $title = $languageService->sL($mainModuleLabels['title']); if (!empty($subModule)) { $subModuleLabels = $this->moduleLoader->getLabelsForModule($moduleName); $title .= '>' . $languageService->sL($subModuleLabels['title']); } } if ($parentModuleName) { $title .= ' (' . $parentModuleName . ')'; } $title .= ': ' . $shortcutLabel; return $title; }
/** * @test * @dataProvider addModuleLabelsDataProvider * * @param string $moduleName * @param string|array $labels * @param array $expectedResult */ public function validateLabelsString($moduleName, $labels, array $expectedResult) { $moduleLoader = new ModuleLoader(); $moduleLoader->addLabelsForModule($moduleName, $labels); $this->assertEquals($expectedResult, $moduleLoader->getLabelsForModule($moduleName)); }
/** * Create array with data of all subModules of a specific main module * * @param ModuleLoader $loadedModules the module loader instance * @param string $moduleName Name of the main module * @return array */ protected function getSubModuleData(ModuleLoader $loadedModules, $moduleName) { $subModulesData = []; foreach ($loadedModules->modules[$moduleName]['sub'] as $subModuleName => $subModuleInfo) { $moduleLabels = $loadedModules->getLabelsForModule($moduleName . '_' . $subModuleName); $subModuleData = []; $subModuleData['name'] = $subModuleName; $subModuleData['icon'] = $subModuleInfo['icon']; $subModuleData['iconIdentifier'] = $subModuleInfo['iconIdentifier']; $subModuleData['label'] = $moduleLabels['title']; $subModuleData['shortDescription'] = $moduleLabels['shortdescription']; $subModuleData['longDescription'] = $moduleLabels['description']; $subModulesData[] = $subModuleData; } return $subModulesData; }
/** * Returns a select with all modules for startup * * @param array $params * @param SetupModuleController $pObj * * @return string Complete select as HTML string */ public function renderStartModuleSelect($params, $pObj) { // Load available backend modules $this->loadModules = GeneralUtility::makeInstance(ModuleLoader::class); $this->loadModules->observeWorkspaces = true; $this->loadModules->load($GLOBALS['TBE_MODULES']); $startModuleSelect = '<option value="">' . htmlspecialchars($this->getLanguageService()->getLL('startModule.firstInMenu')) . '</option>'; foreach ($pObj->loadModules->modules as $mainMod => $modData) { if (!empty($modData['sub']) && is_array($modData['sub'])) { $modules = ''; foreach ($modData['sub'] as $subData) { $modName = $subData['name']; $modules .= '<option value="' . htmlspecialchars($modName) . '"'; $modules .= $this->getBackendUser()->uc['startModule'] === $modName ? ' selected="selected"' : ''; $modules .= '>' . htmlspecialchars($this->getLanguageService()->sL($this->loadModules->getLabelsForModule($modName)['title'])) . '</option>'; } $groupLabel = htmlspecialchars($this->getLanguageService()->sL($this->loadModules->getLabelsForModule($mainMod)['title'])); $startModuleSelect .= '<optgroup label="' . htmlspecialchars($groupLabel) . '">' . $modules . '</optgroup>'; } } return '<select id="field_startModule" name="data[startModule]" class="form-control">' . $startModuleSelect . '</select>'; }