mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-03 03:55:58 +01:00
(refs #32)Add JavaScript Console
This commit is contained in:
@@ -5,6 +5,7 @@ import SystemSettingsService._
|
|||||||
import util.AdminAuthenticator
|
import util.AdminAuthenticator
|
||||||
import jp.sf.amateras.scalatra.forms._
|
import jp.sf.amateras.scalatra.forms._
|
||||||
import ssh.SshServer
|
import ssh.SshServer
|
||||||
|
import org.scalatra.Ok
|
||||||
|
|
||||||
class SystemSettingsController extends SystemSettingsControllerBase
|
class SystemSettingsController extends SystemSettingsControllerBase
|
||||||
with AccountService with AdminAuthenticator
|
with AccountService with AdminAuthenticator
|
||||||
@@ -71,4 +72,13 @@ trait SystemSettingsControllerBase extends ControllerBase {
|
|||||||
redirect("/admin/system")
|
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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ object PluginSystem {
|
|||||||
actionList += Action(path, function)
|
actionList += Action(path, function)
|
||||||
}
|
}
|
||||||
|
|
||||||
def evaluateJavaScript(script: String): Unit = {
|
def evaluateJavaScript(script: String): Any = {
|
||||||
val engine = new ScriptEngineManager().getEngineByName("JavaScript")
|
val engine = new ScriptEngineManager().getEngineByName("JavaScript")
|
||||||
engine.eval(script)
|
engine.eval(script)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,9 @@
|
|||||||
<li@if(active=="system"){ class="active"}>
|
<li@if(active=="system"){ class="active"}>
|
||||||
<a href="@path/admin/system">System Settings</a>
|
<a href="@path/admin/system">System Settings</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li@if(active=="script"){ class="active"}>
|
||||||
|
<a href="@path/admin/script">JavaScript Console</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="@path/console/login.jsp">H2 Console</a>
|
<a href="@path/console/login.jsp">H2 Console</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
33
src/main/twirl/admin/script.scala.html
Normal file
33
src/main/twirl/admin/script.scala.html
Normal 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>
|
||||||
Reference in New Issue
Block a user