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

Reply via email to