X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki.special%2Fmediawiki.special.apisandbox.js;h=99591ff4a482e7507e781b3c04ed73b76fdd22eb;hb=8e6136f0b3b39abcc1c67855b153f9ee47718cc1;hp=3cfc52c51b240bcb4fb290387c53174f7c3e6363;hpb=65fe098dac13df7a705bd346c3da23e137dbd9da;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki.special/mediawiki.special.apisandbox.js b/resources/src/mediawiki.special/mediawiki.special.apisandbox.js index 3cfc52c51b..99591ff4a4 100644 --- a/resources/src/mediawiki.special/mediawiki.special.apisandbox.js +++ b/resources/src/mediawiki.special/mediawiki.special.apisandbox.js @@ -116,10 +116,24 @@ capsuleWidget: { getApiValue: function () { - return this.getItemsData().join( '|' ); + var items = this.getItemsData(); + if ( items.join( '' ).indexOf( '|' ) === -1 ) { + return items.join( '|' ); + } else { + return '\x1f' + items.join( '\x1f' ); + } }, setApiValue: function ( v ) { - this.setItemsFromData( v === undefined || v === '' ? [] : String( v ).split( '|' ) ); + if ( v === undefined || v === '' || v === '\x1f' ) { + this.setItemsFromData( [] ); + } else { + v = String( v ); + if ( v.indexOf( '\x1f' ) !== 0 ) { + this.setItemsFromData( v.split( '|' ) ); + } else { + this.setItemsFromData( v.substr( 1 ).split( '\x1f' ) ); + } + } }, apiCheckValid: function () { var ok = this.getApiValue() !== undefined || suppressErrors; @@ -304,7 +318,7 @@ } } ); } else if ( Util.apiBool( pi.multi ) ) { - widget = new OO.ui.CapsuleMultiSelectWidget( { + widget = new OO.ui.CapsuleMultiselectWidget( { allowArbitrary: true } ); widget.paramInfo = pi; @@ -413,7 +427,7 @@ return a.data - b.data; } ); if ( Util.apiBool( pi.multi ) ) { - widget = new OO.ui.CapsuleMultiSelectWidget( { + widget = new OO.ui.CapsuleMultiselectWidget( { menu: { items: items } } ); widget.paramInfo = pi; @@ -436,7 +450,7 @@ return new OO.ui.MenuOptionWidget( { data: String( v ), label: String( v ) } ); } ); if ( Util.apiBool( pi.multi ) ) { - widget = new OO.ui.CapsuleMultiSelectWidget( { + widget = new OO.ui.CapsuleMultiselectWidget( { menu: { items: items } } ); widget.paramInfo = pi; @@ -480,7 +494,7 @@ throw new Error( 'Unknown multiMode "' + multiMode + '"' ); } - widget = new OO.ui.CapsuleMultiSelectWidget( { + widget = new OO.ui.CapsuleMultiselectWidget( { allowArbitrary: true, popup: { classes: [ 'mw-apisandbox-popup' ], @@ -557,7 +571,7 @@ * * @class mw.special.ApiSandbox */ - mw.special.ApiSandbox = ApiSandbox = { + ApiSandbox = { /** * Initialize the UI * @@ -566,6 +580,8 @@ init: function () { var $toolbar; + ApiSandbox.isFullscreen = false; + $content = $( '#mw-apisandbox' ); windowManager = new OO.ui.WindowManager(); @@ -644,17 +660,21 @@ * Toggle "fullscreen" mode */ toggleFullscreen: function () { - var $body = $( document.body ); + var $body = $( document.body ), + $ui = $( '#mw-apisandbox-ui' ); - $body.toggleClass( 'mw-apisandbox-fullscreen' ); - if ( $body.hasClass( 'mw-apisandbox-fullscreen' ) ) { + ApiSandbox.isFullscreen = !ApiSandbox.isFullscreen; + + $body.toggleClass( 'mw-apisandbox-fullscreen', ApiSandbox.isFullscreen ); + $ui.toggleClass( 'mw-body-content', ApiSandbox.isFullscreen ); + if ( ApiSandbox.isFullscreen ) { fullscreenButton.setLabel( mw.message( 'apisandbox-unfullscreen' ).text() ); fullscreenButton.setTitle( mw.message( 'apisandbox-unfullscreen-tooltip' ).text() ); - $body.append( $( '#mw-apisandbox-ui' ) ); + $body.append( $ui ); } else { fullscreenButton.setLabel( mw.message( 'apisandbox-fullscreen' ).text() ); fullscreenButton.setTitle( mw.message( 'apisandbox-fullscreen-tooltip' ).text() ); - $content.append( $( '#mw-apisandbox-ui' ) ); + $content.append( $ui ); } ApiSandbox.resizePanel(); }, @@ -666,7 +686,7 @@ var height = $( window ).height(), contentTop = $content.offset().top; - if ( $( document.body ).hasClass( 'mw-apisandbox-fullscreen' ) ) { + if ( ApiSandbox.isFullscreen ) { height -= panel.$element.offset().top - $( '#mw-apisandbox-ui' ).offset().top; panel.$element.height( height - 1 ); } else { @@ -1314,10 +1334,10 @@ } if ( Util.apiBool( pi.parameters[ i ].multi ) ) { tmp = []; - if ( flag && !( widget instanceof OO.ui.CapsuleMultiSelectWidget ) && + if ( flag && !( widget instanceof OO.ui.CapsuleMultiselectWidget ) && !( widget instanceof OptionalWidget && - widget.widget instanceof OO.ui.CapsuleMultiSelectWidget + widget.widget instanceof OO.ui.CapsuleMultiselectWidget ) ) { tmp.push( mw.message( 'api-help-param-multi-separate' ).parse() ); @@ -1674,4 +1694,6 @@ $( ApiSandbox.init ); + module.exports = ApiSandbox; + }( jQuery, mediaWiki, OO ) );