提交 8580f732 编写于 作者: S Seiji Sogabe

Merge pull request #364 from ikikko/fixMultiSubmitWithShortcutKey

Fix multi submit with shortcut key
......@@ -39,68 +39,14 @@ THE SOFTWARE.
<!-- this is where the example goes -->
<d:invokeBody />
<form action="script" method="post" name="form1">
<textarea id="script" name="script" style="width:100%; height:10em">${request.getParameter('script')}</textarea>
<form action="script" method="post">
<textarea id="script" name="script" class="script">${request.getParameter('script')}</textarea>
<div align="right">
<f:submit value="${%Run}"/>
</div>
<script>
$('script').focus();
</script>
</form>
<st:adjunct includes="org.kohsuke.stapler.codemirror.mode.clike.clike"/>
<st:adjunct includes="org.kohsuke.stapler.codemirror.theme.default"/>
<script>
(function() {
var cmdKeyDown = false;
var w = CodeMirror.fromTextArea(document.getElementById("script"),{
mode:"text/x-groovy",
lineNumbers: true,
onKeyEvent: function(editor, event){
function isGeckoCommandKey() {
return Prototype.Browser.Gecko &amp;&amp; event.keyCode == 224
}
function isOperaCommandKey() {
return Prototype.Browser.Opera &amp;&amp; event.keyCode == 17
}
function isWebKitCommandKey() {
return Prototype.Browser.WebKit &amp;&amp; (event.keyCode == 91 || event.keyCode == 93)
}
function isCommandKey() {
return isGeckoCommandKey() || isOperaCommandKey() || isWebKitCommandKey();
}
function saveAndSubmit() {
editor.save();
document.form1.submit();
event.stop();
}
// Mac (Command + Enter)
if (navigator.userAgent.indexOf('Mac') > -1) {
if (event.type == 'keydown' &amp;&amp; isCommandKey()) {
cmdKeyDown = true;
}
if (event.type == 'keyup' &amp;&amp; isCommandKey()) {
cmdKeyDown = false;
}
if (cmdKeyDown &amp;&amp; event.keyCode == Event.KEY_RETURN) {
saveAndSubmit();
return true;
}
// Windows, Linux (Ctrl + Enter)
} else {
if (event.ctrlKey &amp;&amp; event.keyCode == Event.KEY_RETURN) {
saveAndSubmit();
return true;
}
}
}
}).getWrapperElement();
w.setAttribute("style","border:1px solid black; margin-top: 1em; margin-bottom: 1em")
})();
</script>
<j:if test="${output!=null}">
<h2>${%Result}</h2>
<pre><st:out value="${output}"/></pre>
......
......@@ -747,6 +747,72 @@ var hudsonRules = {
scroller.style.height = h+"px";
},
// Script Console : settings and shortcut key
"TEXTAREA.script" : function(e) {
(function() {
var cmdKeyDown = false;
var mode = e.getAttribute("script-mode") || "text/x-groovy";
var readOnly = eval(e.getAttribute("script-readOnly")) || false;
var w = CodeMirror.fromTextArea(e,{
mode: mode,
lineNumbers: true,
matchBrackets: true,
readOnly: readOnly,
onKeyEvent: function(editor, event){
function isGeckoCommandKey() {
return Prototype.Browser.Gecko && event.keyCode == 224
}
function isOperaCommandKey() {
return Prototype.Browser.Opera && event.keyCode == 17
}
function isWebKitCommandKey() {
return Prototype.Browser.WebKit && (event.keyCode == 91 || event.keyCode == 93)
}
function isCommandKey() {
return isGeckoCommandKey() || isOperaCommandKey() || isWebKitCommandKey();
}
function isReturnKeyDown() {
return event.type == 'keydown' && event.keyCode == Event.KEY_RETURN;
}
function getParentForm(element) {
if (element == null) throw 'not found a parent form';
if (element instanceof HTMLFormElement) return element;
return getParentForm(element.parentNode);
}
function saveAndSubmit() {
editor.save();
getParentForm(e).submit();
event.stop();
}
// Mac (Command + Enter)
if (navigator.userAgent.indexOf('Mac') > -1) {
if (event.type == 'keydown' && isCommandKey()) {
cmdKeyDown = true;
}
if (event.type == 'keyup' && isCommandKey()) {
cmdKeyDown = false;
}
if (cmdKeyDown && isReturnKeyDown()) {
saveAndSubmit();
return true;
}
// Windows, Linux (Ctrl + Enter)
} else {
if (event.ctrlKey && isReturnKeyDown()) {
saveAndSubmit();
return true;
}
}
}
}).getWrapperElement();
w.setAttribute("style","border:1px solid black; margin-top: 1em; margin-bottom: 1em")
})();
},
// deferred client-side clickable map.
// this is useful where the generation of <map> element is time consuming
"IMG[lazymap]" : function(e) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册