maniaControl = $maniaControl; $this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_INSTALL_PLUGINS, AuthenticationManager::AUTH_LEVEL_SUPERADMIN); } /** * Get the Menu Title * * @return string */ public function getTitle() { return 'Install Plugins'; } /** * Get the Configurator Menu Frame * * @param float $width * @param float $height * @param Script $script * @return \FML\Controls\Frame */ public function getMenu($width, $height, Script $script, Player $player) { $paging = new Paging(); $script->addFeature($paging); $frame = new Frame(); // Config $pagerSize = 9.; $entryHeight = 5.; $labelTextSize = 2; $pageMaxCount = 10; $y = 0.; $pageFrames = array(); // Pagers $pagerPrev = new Quad_Icons64x64_1(); $frame->add($pagerPrev); $pagerPrev->setPosition($width * 0.39, $height * -0.44, 2); $pagerPrev->setSize($pagerSize, $pagerSize); $pagerPrev->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_ArrowPrev); $pagerNext = new Quad_Icons64x64_1(); $frame->add($pagerNext); $pagerNext->setPosition($width * 0.45, $height * -0.44, 2); $pagerNext->setSize($pagerSize, $pagerSize); $pagerNext->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_ArrowNext); $paging->addButton($pagerNext); $paging->addButton($pagerPrev); $pageCountLabel = new Label_Text(); $frame->add($pageCountLabel); $pageCountLabel->setHAlign(Control::RIGHT); $pageCountLabel->setPosition($width * 0.35, $height * -0.44, 1); $pageCountLabel->setStyle($pageCountLabel::STYLE_TextTitle1); $pageCountLabel->setTextSize(2); $paging->setLabel($pageCountLabel); $url = ManiaControl::URL_WEBSERVICE . 'plugins'; $dataJson = FileUtil::loadFile($url); $pluginList = json_decode($dataJson); $index = 0; if ($pluginList && isset($pluginList[0])) { $pluginClasses = $this->maniaControl->pluginManager->getPluginClasses(); $pluginIds = array(); /** @var Plugin $class */ foreach($pluginClasses as $class) { $pluginIds[] = $class::getId(); } foreach($pluginList as $plugin) { if(!in_array($plugin->id, $pluginIds)) { if (!isset($pageFrame)) { $pageFrame = new Frame(); $frame->add($pageFrame); if (!empty($pageFrames)) { $pageFrame->setVisible(false); } array_push($pageFrames, $pageFrame); $paging->addPage($pageFrame); $y = $height * 0.41; } $pluginFrame = new Frame(); $pageFrame->add($pluginFrame); $pluginFrame->setY($y); $nameLabel = new Label_Text(); $pluginFrame->add($nameLabel); $nameLabel->setHAlign(Control::LEFT); $nameLabel->setX($width * -0.4); $nameLabel->setSize($width * 0.5, $entryHeight); $nameLabel->setStyle($nameLabel::STYLE_TextCardSmall); $nameLabel->setTextSize($labelTextSize); $nameLabel->setText($plugin->name); $descriptionLabel = new Label(); $pageFrame->add($descriptionLabel); $descriptionLabel->setAlign(Control::LEFT, Control::TOP); $descriptionLabel->setPosition($width * -0.45, $height * -0.22); $descriptionLabel->setSize($width * 0.7, $entryHeight); $descriptionLabel->setTextSize(2); $descriptionLabel->setTranslate(true); $descriptionLabel->setVisible(false); $descriptionLabel->setAutoNewLine(true); $descriptionLabel->setMaxLines(5); $description = "Author: {$plugin->author}\nVersion: {$plugin->currentVersion->version}\nDesc: {$plugin->description}"; $descriptionLabel->setText($description); $nameLabel->addTooltipFeature($descriptionLabel); $installButton = new Label_Button(); $pluginFrame->add($installButton); $installButton->setHAlign(Control::RIGHT); $installButton->setX($width * 0.45); $installButton->setStyle($installButton::STYLE_CardButtonSmall); $installButton->setTextPrefix('$f00'); $installButton->setText('Install'); $installButton->setAction(self::ACTION_PREFIX_INSTALLPLUGIN . $plugin->id); $y -= $entryHeight; if ($index % $pageMaxCount == $pageMaxCount - 1) { unset($pageFrame); } $index++; } } } return $frame; } /** * Save the Config Data * * @param array $configData * @param Player $player */ public function saveConfigData(array $configData, Player $player) { // TODO: Implement saveConfigData() method. } }