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;
init: function () {
var $toolbar;
+ ApiSandbox.isFullscreen = false;
+
$content = $( '#mw-apisandbox' );
windowManager = new OO.ui.WindowManager();
* Toggle "fullscreen" mode
*/
toggleFullscreen: function () {
- var $body = $( document.body );
+ var $body = $( document.body ),
+ $ui = $( '#mw-apisandbox-ui' );
+
+ ApiSandbox.isFullscreen = !ApiSandbox.isFullscreen;
- $body.toggleClass( 'mw-apisandbox-fullscreen' );
- if ( $body.hasClass( 'mw-apisandbox-fullscreen' ) ) {
+ $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();
},
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 {