summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Scribunto/modules/ext.scribunto.errors.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Scribunto/modules/ext.scribunto.errors.js')
-rw-r--r--www/wiki/extensions/Scribunto/modules/ext.scribunto.errors.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/www/wiki/extensions/Scribunto/modules/ext.scribunto.errors.js b/www/wiki/extensions/Scribunto/modules/ext.scribunto.errors.js
new file mode 100644
index 00000000..037008b9
--- /dev/null
+++ b/www/wiki/extensions/Scribunto/modules/ext.scribunto.errors.js
@@ -0,0 +1,41 @@
+( function ( $, mw ) {
+
+ mw.hook( 'wikipage.content' ).add( function () {
+ var errors = mw.config.get( 'ScribuntoErrors' ),
+ regex = /^mw-scribunto-error-(\d+)/,
+ $dialog = $( '<div>' );
+
+ if ( !errors ) {
+ mw.log( 'mw.scribunto.errors: ScribuntoErrors does not exist in mw.config' );
+ errors = [];
+ }
+
+ $dialog.dialog( {
+ title: mw.msg( 'scribunto-parser-dialog-title' ),
+ autoOpen: false
+ } );
+
+ $( '.scribunto-error' ).each( function ( index, span ) {
+ var errorId,
+ matches = regex.exec( span.id );
+ if ( matches === null ) {
+ mw.log( 'mw.scribunto.errors: regex mismatch!' );
+ return;
+ }
+ errorId = parseInt( matches[ 1 ], 10 );
+ $( span ).on( 'click', function ( e ) {
+ var error = errors[ errorId ];
+ if ( typeof error !== 'string' ) {
+ mw.log( 'mw.scribunto.errors: error ' + matches[ 1 ] + ' not found.' );
+ return;
+ }
+ $dialog
+ .dialog( 'close' )
+ .html( error )
+ .dialog( 'option', 'position', [ e.clientX + 5, e.clientY + 5 ] )
+ .dialog( 'open' );
+ } );
+ } );
+ } );
+
+}( jQuery, mediaWiki ) );