diff --git a/src/main/scala/servlet/PluginActionInvokeFilter.scala b/src/main/scala/servlet/PluginActionInvokeFilter.scala index 6840153..15be40c 100644 --- a/src/main/scala/servlet/PluginActionInvokeFilter.scala +++ b/src/main/scala/servlet/PluginActionInvokeFilter.scala @@ -3,8 +3,12 @@ import javax.servlet._ import javax.servlet.http.{HttpServletResponse, HttpServletRequest} import org.apache.commons.io.IOUtils +import twirl.api.Html +import service.SystemSettingsService +import model.Account +import util.Keys -class PluginActionInvokeFilter extends Filter { +class PluginActionInvokeFilter extends Filter with SystemSettingsService { def init(config: FilterConfig) = {} @@ -14,19 +18,22 @@ (req, res) match { case (request: HttpServletRequest, response: HttpServletResponse) => { val path = req.asInstanceOf[HttpServletRequest].getRequestURI - //println(req.asInstanceOf[HttpServletRequest].getContextPath) - //println(req.asInstanceOf[HttpServletRequest].getRequestURL) - val action = plugin.PluginSystem.actions.find(_.path == path) + if(action.isDefined){ val result = action.get.function(request, response) result match { case x: String => { - response.setContentType("text/plain; charset=UTF-8") - IOUtils.write(x.getBytes("UTF-8"), response.getOutputStream) + response.setContentType("text/html; charset=UTF-8") + val loginAccount = request.getSession.getAttribute(Keys.Session.LoginAccount).asInstanceOf[Account] + val context = app.Context(loadSystemSettings(), Option(loginAccount), request) + val html = _root_.html.main("GitBucket", None)(Html(x))(context) + IOUtils.write(html.toString.getBytes("UTF-8"), response.getOutputStream) } case x => { // TODO returns as JSON? + response.setContentType("application/json; charset=UTF-8") + } } } else {