(refs #32)Add JavaScript Console

This commit is contained in:
Naoki Takezoe
2014-06-06 17:20:48 +09:00
parent e14a0c3770
commit ddd51850f0
4 changed files with 47 additions and 1 deletions

View File

@@ -5,6 +5,7 @@ import SystemSettingsService._
import util.AdminAuthenticator
import jp.sf.amateras.scalatra.forms._
import ssh.SshServer
import org.scalatra.Ok
class SystemSettingsController extends SystemSettingsControllerBase
with AccountService with AdminAuthenticator
@@ -71,4 +72,13 @@ trait SystemSettingsControllerBase extends ControllerBase {
redirect("/admin/system")
})
get("/admin/script")(adminOnly {
admin.html.script()
})
post("/admin/script")(adminOnly {
val script = request.getParameter("script")
val result = plugin.PluginSystem.evaluateJavaScript(script)
Ok(result)
})
}

View File

@@ -29,7 +29,7 @@ object PluginSystem {
actionList += Action(path, function)
}
def evaluateJavaScript(script: String): Unit = {
def evaluateJavaScript(script: String): Any = {
val engine = new ScriptEngineManager().getEngineByName("JavaScript")
engine.eval(script)
}

View File

@@ -11,6 +11,9 @@
<li@if(active=="system"){ class="active"}>
<a href="@path/admin/system">System Settings</a>
</li>
<li@if(active=="script"){ class="active"}>
<a href="@path/admin/script">JavaScript Console</a>
</li>
<li>
<a href="@path/console/login.jsp">H2 Console</a>
</li>

View File

@@ -0,0 +1,33 @@
@()(implicit context: app.Context)
@import context._
@import view.helpers._
@html.main("JavaScript Console"){
@menu("script"){
<form action="@path/admin/script" method="POST">
<div class="box">
<div class="box-header">JavaScript Console</div>
<div class="box-content">
<div id="editor" style="width: 100%; height: 600px;"></div>
</div>
</div>
<fieldset>
<input type="submit" id="evaluate" class="btn btn-success" value="Evaluate"/>
</fieldset>
</form>
}
}
<script src="@assets/ace/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
$(function(){
var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
$('#evaluate').click(function(){
$.post('@path/admin/script', {
script: editor.getValue()
}, function(data){
console.log(data);
});
});
});
</script>