diff --git a/src/main/scala/app/SystemSettingsController.scala b/src/main/scala/app/SystemSettingsController.scala index cf1070d..e5d8085 100644 --- a/src/main/scala/app/SystemSettingsController.scala +++ b/src/main/scala/app/SystemSettingsController.scala @@ -3,9 +3,11 @@ import service.{AccountService, SystemSettingsService} import SystemSettingsService._ import util.AdminAuthenticator +import util.Directory._ import jp.sf.amateras.scalatra.forms._ import ssh.SshServer import org.scalatra.Ok +import org.apache.commons.io.FileUtils class SystemSettingsController extends SystemSettingsControllerBase with AccountService with AdminAuthenticator @@ -48,6 +50,11 @@ } else Nil } + private val pluginForm = mapping( + "pluginId" -> list(trim(label("", text()))) + )(PluginForm.apply) + + case class PluginForm(pluginIds: List[String]) get("/admin/system")(adminOnly { admin.html.system(flash.get("info")) @@ -76,6 +83,22 @@ admin.html.plugins(plugin.PluginSystem.plugins) }) + post("/admin/plugins/_delete", pluginForm)(adminOnly { form => + // TODO uninstall and delete plugins + println("****") + println(form.pluginIds) + println("****") + + form.pluginIds.foreach { pluginId => + plugin.PluginSystem.uninstall(pluginId) + val dir = new java.io.File(PluginHome, pluginId) + if(dir.exists && dir.isDirectory){ + FileUtils.deleteQuietly(dir) + } + } + redirect("/admin/plugins") + }) + get("/admin/script")(adminOnly { admin.html.script() }) diff --git a/src/main/twirl/admin/plugins.scala.html b/src/main/twirl/admin/plugins.scala.html index 356534d..bfa2a4c 100644 --- a/src/main/twirl/admin/plugins.scala.html +++ b/src/main/twirl/admin/plugins.scala.html @@ -3,19 +3,32 @@ @import view.helpers._ @html.main("Plugins"){ @menu("plugins"){ -
ID | -Provider | -Description | -
---|