Esanders has uploaded a new change for review. https://gerrit.wikimedia.org/r/274850
Change subject: WIP: Full screen mode ...................................................................... WIP: Full screen mode Change-Id: I7e4326a32e96cc942705bd8e19a392430d11ad30 --- M extension.json A modules/kartographer.MapDialog.js M modules/kartographer.js 3 files changed, 92 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Kartographer refs/changes/50/274850/1 diff --git a/extension.json b/extension.json index 404251d..fe1387d 100644 --- a/extension.json +++ b/extension.json @@ -116,6 +116,18 @@ "desktop" ] }, + "ext.kartographer.fullscreen": { + "dependencies": [ + "oojs-ui-windows" + ], + "scripts": [ + "modules/kartographer.MapDialog.js" + ], + "targets": [ + "mobile", + "desktop" + ] + }, "ext.kartographer.editor": { "dependencies": [ "leaflet.draw", diff --git a/modules/kartographer.MapDialog.js b/modules/kartographer.MapDialog.js new file mode 100644 index 0000000..5fcdb1d --- /dev/null +++ b/modules/kartographer.MapDialog.js @@ -0,0 +1,50 @@ +mw.kartographer.MapDialog = function MwKartographerMapDialog() { + // Parent method + mw.kartographer.MapDialog.super.apply( this, arguments ); +}; + +OO.inheritClass( mw.kartographer.MapDialog, OO.ui.ProcessDialog ); + +mw.kartographer.MapDialog.static.size = 'full'; + +mw.kartographer.MapDialog.static.title = 'Map';// OO.ui.deferMsg( '' ) + +mw.kartographer.MapDialog.static.actions = [ + { + label: 'Close',// OO.ui.deferMsg( '' ), + flags: [ 'safe', 'back' ], + modes: [ 'edit', 'insert' ] + } +]; + +mw.kartographer.MapDialog.prototype.initialize = function () { + // Parent method + mw.kartographer.MapDialog.super.prototype.initialize.apply( this, arguments ); + + this.$map = $( '<div>' ).css( 'height', '100%' ); + this.map = null; + + this.$body.append( this.$map ); +}; + +mw.kartographer.MapDialog.prototype.getSetupProcess = function ( data ) { + return mw.kartographer.MapDialog.super.prototype.getSetupProcess.call( this, data ) + .next( function () { + this.map = mw.kartographer.createMap( this.$map[ 0 ], data ); + }, this ); +}; + +mw.kartographer.MapDialog.prototype.getReadyProcess = function ( data ) { + return mw.kartographer.MapDialog.super.prototype.getReadyProcess.call( this, data ) + .next( function () { + this.map.invalidateSize(); + }, this ); +}; + +mw.kartographer.MapDialog.prototype.getTeardownProcess = function ( data ) { + return mw.kartographer.MapDialog.super.prototype.getTeardownProcess.call( this, data ) + .next( function () { + this.map.remove(); + this.map = null; + }, this ); +}; diff --git a/modules/kartographer.js b/modules/kartographer.js index 7e99c41..bcf7231 100644 --- a/modules/kartographer.js +++ b/modules/kartographer.js @@ -2,7 +2,7 @@ // Load this script after lib/mapbox-lib.js - var scale, urlFormat, + var scale, urlFormat, windowManager, mapDialog, mapServer = mw.config.get( 'wgKartographerMapServer' ), forceHttps = mapServer[ 4 ] === 's', config = L.mapbox.config; @@ -154,21 +154,48 @@ } }; + function getWindowManager() { + if ( !windowManager ) { + windowManager = new OO.ui.WindowManager(); + mapDialog = new mw.kartographer.MapDialog(); + $( 'body' ).append( windowManager.$element ); + windowManager.addWindows( [ mapDialog ] ); + } + return windowManager; + } + + function openFullscreenMap( data ) { + mw.loader.using( 'ext.kartographer.fullscreen' ).done( function () { + getWindowManager().openWindow( mapDialog, data ) + .then( function ( opened ) { return opened; } ) + .then( function ( closing ) { return closing; } ) + .then( function ( data ) { + } ); + } ); + } + mw.hook( 'wikipage.content' ).add( function ( $content ) { $content.find( '.mw-kartographer-interactive' ).each( function () { - var $this = $( this ); + var data, $this = $( this ); // Prevent users from adding map divs directly via wikitext if ( $this.attr( 'mw-data' ) !== 'interface' ) { return; } - mw.kartographer.createMap( this, { + data = { latitude: +$this.data( 'lat' ), longitude: +$this.data( 'lon' ), zoom: +$this.data( 'zoom' ), style: $this.data( 'style' ), overlays: $this.data( 'overlays' ) + }; + + mw.kartographer.createMap( this, data ); + + // TODO: Bind this to a fullscreen button in the frame + $this.on( 'click', function () { + openFullscreenMap( data ); } ); } ); } ); -- To view, visit https://gerrit.wikimedia.org/r/274850 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7e4326a32e96cc942705bd8e19a392430d11ad30 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Kartographer Gerrit-Branch: master Gerrit-Owner: Esanders <esand...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits