diff --git a/modules/ext.scribunto.edit.js b/modules/ext.scribunto.edit.js
index 08d36559..19db3e9b 100644
--- a/modules/ext.scribunto.edit.js
+++ b/modules/ext.scribunto.edit.js
@@ -12,12 +12,12 @@
*/
var
- histList = [""],
+ histList = [''],
histPos = 0,
question,
- _in,
- _out,
- _$spinner,
+ input,
+ output,
+ $spinner,
lastError = null,
sessionContent = null,
sessionKey = null,
@@ -25,45 +25,55 @@
clearNextRequest = false;
function refocus() {
- _in.blur(); // Needed for Mozilla to scroll correctly.
- _in.focus();
+ // Needed for Mozilla to scroll correctly
+ input.blur();
+ input.focus();
}
function initConsole() {
- _in = document.getElementById( "mw-scribunto-input" );
- _out = document.getElementById( "mw-scribunto-output" );
- _$spinner = $.createSpinner( { size: 'small', type: 'block' } );
+ input = document.getElementById( 'mw-scribunto-input' );
+ output = document.getElementById( 'mw-scribunto-output' );
+ $spinner = $.createSpinner( { size: 'small', type: 'block' } );
recalculateInputHeight();
println( mw.msg( 'scribunto-console-intro' ), 'mw-scribunto-message' );
}
+ /**
+ * Use onkeydown because IE doesn't support onkeypress for arrow keys
+ * @param {jQuery.Event} e
+ */
function inputKeydown( e ) {
- // Use onkeydown because IE doesn't support onkeypress for arrow keys
+ /*jshint noempty:false */
- if ( e.shiftKey && e.keyCode === 13 ) { // shift-enter
+ if ( e.shiftKey && e.keyCode === 13 ) {
+ // shift-enter
// don't do anything; allow the shift-enter to insert a line break as normal
- } else if ( e.keyCode === 13 ) { // enter
+ } else if ( e.keyCode === 13 ) {
+ // enter
// execute the input on enter
go();
- } else if ( e.keyCode === 38 ) { // up
+ } else if ( e.keyCode === 38 ) {
+ // up
// go up in history if at top or ctrl-up
- if ( e.ctrlKey || caretInFirstLine( _in ) ) {
+ if ( e.ctrlKey || caretInFirstLine( input ) ) {
hist( 'up' );
}
- } else if ( e.keyCode === 40 ) { // down
+ } else if ( e.keyCode === 40 ) {
+ // down
// go down in history if at end or ctrl-down
- if ( e.ctrlKey || caretInLastLine( _in ) ) {
+ if ( e.ctrlKey || caretInLastLine( input ) ) {
hist( 'down' );
}
}
setTimeout( recalculateInputHeight, 0 );
-
- //return true;
}
- function inputFocus( e ) {
+ /**
+ * @param {jQuery.Event} e
+ */
+ function inputFocus() {
if ( sessionContent === null ) {
// No previous state to clear
return;
@@ -86,7 +96,7 @@
return true;
}
- var firstLineBreak = textbox.value.indexOf( "\n" );
+ var firstLineBreak = textbox.value.indexOf( '\n' );
return ((firstLineBreak === -1) || (textbox.selectionStart <= firstLineBreak));
}
@@ -97,44 +107,39 @@
return true;
}
- var lastLineBreak = textbox.value.lastIndexOf( "\n" );
+ var lastLineBreak = textbox.value.lastIndexOf( '\n' );
return ( textbox.selectionEnd > lastLineBreak );
}
function recalculateInputHeight() {
- var rows = _in.value.split( /\n/ ).length
- + 1 // prevent scrollbar flickering in Mozilla
- + ( window.opera ? 1 : 0 ); // leave room for scrollbar in Opera
+ var rows = input.value.split( /\n/ ).length +
+ // prevent scrollbar flickering in Mozilla
+ 1 +
+ // leave room for scrollbar in Opera
+ ( window.opera ? 1 : 0 );
// without this check, it is impossible to select text in Opera 7.60 or Opera 8.0.
- if ( _in.rows !== rows ) {
- _in.rows = rows;
+ if ( input.rows !== rows ) {
+ input.rows = rows;
}
}
function println( s, type ) {
if ( ( s = String( s ) ) ) {
- var newdiv = document.createElement( "div" );
+ var newdiv = document.createElement( 'div' );
newdiv.appendChild( document.createTextNode( s ) );
newdiv.className = type;
- _out.appendChild( newdiv );
+ output.appendChild( newdiv );
return newdiv;
}
}
- function printWithRunin( h, s, type ) {
- var div = println( s, type );
- var head = document.createElement( "strong" );
- head.appendChild( document.createTextNode( h + ": " ) );
- div.insertBefore( head, div.firstChild );
- }
-
function printClearBar( msg ) {
- $( '
' )
+ $( '' )
.attr( 'class', 'mw-scribunto-clear' )
.text( mw.msg( msg ) )
- .appendTo( _out );
+ .appendTo( output );
}
function hist( direction ) {
@@ -152,7 +157,7 @@
if ( direction === 'up' ) {
if ( histPos === L - 1 ) {
// Save this entry in case the user hits the down key.
- histList[histPos] = _in.value;
+ histList[histPos] = input.value;
}
if ( histPos > 0 ) {
@@ -161,65 +166,68 @@
// Set to nothing first for the same reason
setTimeout(
function () {
- _in.value = '';
- _in.value = histList[histPos];
- var caretPos = _in.value.length;
- if ( _in.setSelectionRange ) {
- _in.setSelectionRange( caretPos, caretPos );
+ input.value = '';
+ input.value = histList[histPos];
+ var caretPos = input.value.length;
+ if ( input.setSelectionRange ) {
+ input.setSelectionRange( caretPos, caretPos );
}
},
0
);
}
- }
- else // down
- {
+ } else {
+ // direction down
if ( histPos < L - 1 ) {
histPos++;
- _in.value = histList[histPos];
+ input.value = histList[histPos];
}
else if ( histPos === L - 1 ) {
// Already on the current entry: clear but save
- if ( _in.value ) {
- histList[histPos] = _in.value;
+ if ( input.value ) {
+ histList[histPos] = input.value;
++histPos;
- _in.value = "";
+ input.value = '';
}
}
}
}
function printQuestion( q ) {
- println( q, "mw-scribunto-input" );
+ println( q, 'mw-scribunto-input' );
}
function printError( er ) {
var lineNumberString;
- lastError = er; // for debugging the shell
+ // for debugging the shell
+ lastError = er;
if ( er.name ) {
- // lineNumberString should not be "", to avoid a very wacky bug in IE 6.
- lineNumberString = (er.lineNumber !== undefined) ? (" on line " + er.lineNumber + ": ") : ": ";
+ // lineNumberString should not be '', to avoid a very wacky bug in IE 6.
+ lineNumberString = (er.lineNumber !== undefined) ? (' on line ' + er.lineNumber + ': ') : ': ';
// Because IE doesn't have error.toString.
- println( er.name + lineNumberString + er.message, "mw-scribunto-error" );
+ println( er.name + lineNumberString + er.message, 'mw-scribunto-error' );
} else {
- println( er, "mw-scribunto-error" ); // Because security errors in Moz /only/ have toString.
+ // Because security errors in Moz /only/ have toString.
+ println( er, 'mw-scribunto-error' );
}
}
function setPending() {
pending = true;
- _in.readOnly = true;
- _$spinner.insertBefore( _in );
+ input.readOnly = true;
+ $spinner.insertBefore( input );
}
function clearPending() {
- _$spinner.remove();
+ $spinner.remove();
pending = false;
- _in.readOnly = false;
+ input.readOnly = false;
}
function go() {
+ var params, api, content, sentContent;
+
if ( pending ) {
// If there is an XHR request pending, don't send another one
// We set readOnly on the textarea to give a UI indication, this is
@@ -227,35 +235,36 @@
return;
}
- question = _in.value;
+ question = input.value;
- if ( question === "" ) {
+ if ( question === '' ) {
return;
}
histList[histList.length - 1] = question;
- histList[histList.length] = "";
+ histList[histList.length] = '';
histPos = histList.length - 1;
// Unfortunately, this has to happen *before* the script is run, so that
// print() output will go in the right place.
- _in.value = '';
+ input.value = '';
// can't preventDefault on input, so also clear it later
setTimeout( function () {
- _in.value = "";
+ input.value = '';
}, 0 );
recalculateInputHeight();
printQuestion( question );
- var params = {
+ params = {
action: 'scribunto-console',
title: mw.config.get( 'wgPageName' ),
question: question
};
- var content = getContent();
- var sentContent = false;
+ content = getContent();
+ sentContent = false;
+
if ( !sessionKey || sessionContent !== content ) {
params.clear = true;
params.content = content;
@@ -269,17 +278,17 @@
clearNextRequest = false;
}
- var api = new mw.Api();
+ api = new mw.Api();
setPending();
- api.post( params, {
- ok: function ( result ) {
+ api.post( params )
+ .done( function ( result ) {
if ( result.sessionIsNew === '' && !sentContent ) {
// Session was lost. Resend query, with content
printClearBar( 'scribunto-console-cleared-session-lost' );
sessionContent = null;
clearPending();
- _in.value = params.question;
+ input.value = params.question;
go();
return;
}
@@ -292,26 +301,24 @@
println( result.print, 'mw-scribunto-print' );
}
if ( result['return'] !== '' ) {
- println( result['return'], "mw-scribunto-normalOutput" );
+ println( result['return'], 'mw-scribunto-normalOutput' );
}
}
clearPending();
setTimeout( refocus, 0 );
- },
-
- err: function ( code, result ) {
- if ( 'error' in result && 'info' in result.error ) {
+ } )
+ .fail( function ( code, result ) {
+ if ( result.error && result.error.info ) {
printError( result.error.info );
- } else if ( 'exception' in result ) {
+ } else if ( result.exception ) {
printError( 'Error sending API request: ' + result.exception );
} else {
- console.log( result );
+ mw.log( result );
printError( 'error' );
}
clearPending();
setTimeout( refocus, 0 );
- }
- } );
+ } );
}
function getContent() {
@@ -325,64 +332,68 @@
}
}
- function onClearClick( e ) {
+ /**
+ * @param {jQuery.Event} e
+ */
+ function onClearClick() {
$( '#mw-scribunto-output' ).empty();
clearNextRequest = true;
refocus();
}
mw.scribunto.edit = {
- 'init': function () {
+ init: function () {
var action = mw.config.get( 'wgAction' );
if ( action === 'edit' || action === 'submit' || action === 'editredlink' ) {
this.initEditPage();
}
},
- 'initEditPage': function () {
+ initEditPage: function () {
var console = document.getElementById( 'mw-scribunto-console' );
if ( !console ) {
return;
}
- $( '
' )
+ $( '