local function Button_RemovePlugin( Name, Index ) return "
" end local function Button_EnablePlugin( Name ) return [[
]] end local function Button_DisablePlugin( Name ) return [[
]] end local function FindPluginID( SettingsIni, PluginName ) local KeyIdx = SettingsIni:FindKey("Plugins") local NumValues = SettingsIni:GetNumValues( KeyIdx ) for i = 0, NumValues-1 do LOGINFO( SettingsIni:GetValue(KeyIdx, i) ) if( SettingsIni:GetValue(KeyIdx, i) == PluginName ) then return i end end return nil end local function RemovePluginFromIni( SettingsIni, PluginName ) local KeyIdx = SettingsIni:FindKey("Plugins") local PluginIdx = FindPluginID( SettingsIni, PluginName ) if( PluginIdx == nil ) then LOGINFO("Got nil! NOOOO") return false end local Name = SettingsIni:GetValue( KeyIdx, PluginIdx ) if( Name ~= PluginName ) then LOGINFO("not the same name T_T '" .. Name .. "' '" .. PluginName .. "'") end if( (Name == PluginName) and (SettingsIni:DeleteValueByID( KeyIdx, PluginIdx ) == true) ) then return SettingsIni:WriteFile() end return false end local function AddPluginToIni( SettingsIni, PluginName ) RemovePluginFromIni( SettingsIni, PluginName ) -- Make sure there are no duplicates if( SettingsIni:SetValue("Plugins", "Plugin", PluginName, true ) == true ) then return SettingsIni:WriteFile() end return false end local function HandlePluginListChanges( Request, SettingsIni ) local Content = "" if( Request.PostParams["EnablePlugin"] ~= nil and Request.PostParams["PluginName"] ~= nil ) then local PluginName = Request.PostParams["PluginName"] local PM = cRoot:Get():GetPluginManager() if( PM:LoadPlugin( PluginName ) == false ) then Content = "Could not enable '".. PluginName .."'!" end if( AddPluginToIni( SettingsIni, PluginName ) == true ) then Content = "Enabled plugin '".. PluginName .."'" else Content = "Enabled plugin '".. PluginName .."' but could not add it to settings.ini" end elseif( Request.PostParams["DisablePlugin"] ~= nil and Request.PostParams["PluginName"] ~= nil ) then local PluginName = Request.PostParams["PluginName"] local PM = cRoot:Get():GetPluginManager() PM:DisablePlugin( PluginName ) if( RemovePluginFromIni( SettingsIni, PluginName ) == true ) then Content = "Disabled plugin '".. PluginName .."'" else Content = "Disabled plugin '".. PluginName .."' but could not remove it from settings.ini" end end if( #Content > 0 ) then return "

INFO: " .. Content .. "

" else return "" end end function HandleRequest_ManagePlugins( Request ) local Content = "" if( Request.PostParams["reload"] ~= nil ) then Content = Content .. "" Content = Content .. "

Reloading plugins... This can take a while depending on the plugins you're using.

" cRoot:Get():GetPluginManager():ReloadPlugins() return Content end local SettingsIni = cIniFile("settings.ini") if( SettingsIni:ReadFile() == true ) then Content = Content .. HandlePluginListChanges( Request, SettingsIni ) else Content = Content .. "Cannot find/modify settings.ini" end local PluginManager = cRoot:Get():GetPluginManager() PluginManager:FindPlugins() -- Refreshes the plugin list local PluginList = PluginManager:GetAllPlugins() Content = Content .. "

Currently installed plugins

" Content = Content .. "" for k, Plugin in pairs(PluginList) do Content = Content .. "" if( Plugin ) then Content = Content .. "" else Content = Content .. "" end Content = Content .. "" end Content = Content .. "
".. k .."" .. Plugin:GetName() .. " V. " .. Plugin:GetVersion() .. "" .. Button_DisablePlugin(k) .. "" .. Button_EnablePlugin(k) .. "
" Content = Content .. "

Reload

" Content = Content .. "
" Content = Content .. "

Click the reload button to reload all plugins according to settings.ini!" Content = Content .. "

" Content = Content .. "
" return Content end