completely rework Admin UI plugin
This commit is contained in:
@ -17,12 +17,14 @@ use ManiaControl\Manialinks\ManialinkPageAnswerListener;
|
||||
|
||||
use ManiaControl\Callbacks\CallbackListener;
|
||||
use ManiaControl\Callbacks\CallbackManager;
|
||||
use ManiaControl\Callbacks\Callbacks;
|
||||
use ManiaControl\Logger;
|
||||
use ManiaControl\ManiaControl;
|
||||
use ManiaControl\Players\Player;
|
||||
use ManiaControl\Plugins\Plugin;
|
||||
use ManiaControl\Plugins\PluginManager;
|
||||
use ManiaControl\Commands\CommandListener;
|
||||
use ManiaControl\Plugins\PluginMenu;
|
||||
|
||||
if (!class_exists('MatchManagerSuite\MatchManagerCore')) {
|
||||
$this->maniaControl->getChat()->sendErrorToAdmins('MatchManager Core is required to use one of MatchManager plugin. Install it and restart Maniacontrol');
|
||||
@ -48,15 +50,17 @@ class MatchManagerMultipleConfigManager implements ManialinkPageAnswerListener,
|
||||
|
||||
// MatchManagerWidget Properties
|
||||
const MATCHMANAGERCORE_PLUGIN = 'MatchManagerSuite\MatchManagerCore';
|
||||
const MATCHMANAGERADMINUI_PLUGIN = 'MatchManagerSuite\MatchManagerAdminUI';
|
||||
|
||||
const DB_MATCHCONFIG = 'MatchManager_MatchConfigs';
|
||||
|
||||
const ML_ID = 'MatchManager.MultiConfigManager.UI';
|
||||
const ML_ACTION_REMOVE_CONFIG = 'MatchManager.MultiConfigManager.RemoveConfig';
|
||||
const ML_ACTION_LOAD_CONFIG = 'MatchManager.MultiConfigManager.LoadConfig';
|
||||
const ML_ACTION_LOAD_CONFIG_PAGE = 'MatchManager.MultiConfigManager.LoadConfigPage';
|
||||
const ML_ACTION_SAVE_CONFIG = 'MatchManager.MultiConfigManager.SaveConfig';
|
||||
const ML_ACTION_SAVE_CONFIG_PAGE = 'MatchManager.MultiConfigManager.SaveConfigPage';
|
||||
const ML_ACTION_OPENSETTINGS = 'MatchManagerSuite\MatchManagerMultipleConfigManager.OpenSettings';
|
||||
const ML_ACTION_REMOVE_CONFIG = 'MatchManagerSuite\MatchManagerMultipleConfigManager.RemoveConfig';
|
||||
const ML_ACTION_LOAD_CONFIG = 'MatchManagerSuite\MatchManagerMultipleConfigManager.LoadConfig';
|
||||
const ML_ACTION_LOAD_CONFIG_PAGE = 'MatchManagerSuite\MatchManagerMultipleConfigManager.LoadConfigPage';
|
||||
const ML_ACTION_SAVE_CONFIG = 'MatchManagerSuite\MatchManagerMultipleConfigManager.SaveConfig';
|
||||
const ML_ACTION_SAVE_CONFIG_PAGE = 'MatchManagerSuite\MatchManagerMultipleConfigManager.SaveConfigPage';
|
||||
const ML_NAME_CONFIGNAME = 'MatchManager.MultiConfigManager.ConfigName';
|
||||
|
||||
const CB_LOADCONFIG = 'MatchManager.MultiConfigManager.LoadConfig';
|
||||
@ -125,13 +129,15 @@ class MatchManagerMultipleConfigManager implements ManialinkPageAnswerListener,
|
||||
throw new \Exception('MatchManager Core is needed to use MatchManager Players Pause plugin');
|
||||
}
|
||||
|
||||
$this->maniaControl->getCallbackManager()->registerCallbackListener(Callbacks::AFTERINIT, $this, 'handleAfterInit');
|
||||
$this->maniaControl->getCallbackManager()->registerCallbackListener(PluginManager::CB_PLUGIN_LOADED, $this, 'handlePluginLoaded');
|
||||
$this->maniaControl->getCallbackManager()->registerCallbackListener(PluginManager::CB_PLUGIN_UNLOADED, $this, 'handlePluginUnloaded');
|
||||
$this->maniaControl->getCallbackManager()->registerCallbackListener(CallbackManager::CB_MP_PLAYERMANIALINKPAGEANSWER, $this, 'handleManialinkPageAnswer');
|
||||
|
||||
$this->maniaControl->getCommandManager()->registerCommandListener('matchconfig', $this, 'showConfigListUI', true, 'Start a match');
|
||||
|
||||
|
||||
$this->initTables();
|
||||
$this->updateAdminUIMenuItems();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -139,6 +145,31 @@ class MatchManagerMultipleConfigManager implements ManialinkPageAnswerListener,
|
||||
* @see \ManiaControl\Plugins\Plugin::unload()
|
||||
*/
|
||||
public function unload() {
|
||||
/** @var \MatchManagerSuite\MatchManagerAdminUI|null */
|
||||
$adminUIPlugin = $this->maniaControl->getPluginManager()->getPlugin(self::MATCHMANAGERADMINUI_PLUGIN);
|
||||
if ($adminUIPlugin !== null) {
|
||||
$adminUIPlugin->removeMenuItem(self::ML_ACTION_OPENSETTINGS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* handle Plugin Loaded
|
||||
*
|
||||
* @param string $pluginClass
|
||||
*/
|
||||
public function handleAfterInit() {
|
||||
$this->updateAdminUIMenuItems();
|
||||
}
|
||||
|
||||
/**
|
||||
* handle Plugin Loaded
|
||||
*
|
||||
* @param string $pluginClass
|
||||
*/
|
||||
public function handlePluginLoaded(string $pluginClass) {
|
||||
if ($pluginClass === self::MATCHMANAGERADMINUI_PLUGIN) {
|
||||
$this->updateAdminUIMenuItems();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,6 +205,21 @@ class MatchManagerMultipleConfigManager implements ManialinkPageAnswerListener,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add items in AdminUI plugin
|
||||
*/
|
||||
public function updateAdminUIMenuItems() {
|
||||
/** @var \MatchManagerSuite\MatchManagerAdminUI|null */
|
||||
$adminUIPlugin = $this->maniaControl->getPluginManager()->getPlugin(self::MATCHMANAGERADMINUI_PLUGIN);
|
||||
if ($adminUIPlugin === null) return;
|
||||
|
||||
$adminUIPlugin->removeMenuItem(self::ML_ACTION_OPENSETTINGS);
|
||||
|
||||
$menuItem = new \MatchManagerSuite\MatchManagerAdminUI_MenuItem();
|
||||
$menuItem->setActionId(self::ML_ACTION_OPENSETTINGS)->setOrder(200)->setStyle('UICommon64_2')->setSubStyle('Plugin_light')->setDescription('Manage Multiple Configs');
|
||||
$adminUIPlugin->addMenuItem($menuItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* handleManialinkPageAnswer
|
||||
*
|
||||
@ -181,10 +227,10 @@ class MatchManagerMultipleConfigManager implements ManialinkPageAnswerListener,
|
||||
* @return void
|
||||
*/
|
||||
public function handleManialinkPageAnswer(array $callback) {
|
||||
Logger::log("handleManialinkPageAnswer");
|
||||
$actionId = $callback[1][2];
|
||||
$actionArray = explode('.', $actionId);
|
||||
if ($actionArray[0] != "MatchManager" || $actionArray[1] != "MultiConfigManager") {
|
||||
|
||||
if ($actionArray[0] !== self::class) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -194,9 +240,10 @@ class MatchManagerMultipleConfigManager implements ManialinkPageAnswerListener,
|
||||
return;
|
||||
}
|
||||
|
||||
$action = $actionArray[0] . '.' . $actionArray[1] . '.' . $actionArray[2];
|
||||
|
||||
switch ($action) {
|
||||
switch ($actionId) {
|
||||
case self::ML_ACTION_OPENSETTINGS:
|
||||
$this->showConfigListUI(array(), $player);
|
||||
break;
|
||||
case self::ML_ACTION_REMOVE_CONFIG:
|
||||
$id = intval($actionArray[3]);
|
||||
Logger::log("[MatchManagerMultipleConfigManager] Removing config: " . $id);
|
||||
|
Reference in New Issue
Block a user