[MediaWiki-commits] [Gerrit] mediawiki...Kartographer[master]: Use map snapshot service until user interacts

2016-10-21 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Use map snapshot service until user interacts
..


Use map snapshot service until user interacts

* Move the Link class outside of ext.kartographer.box
  so it can be loaded without mapbox
* Make Link class delegate creating the map to the dialog
  so that the dialog can open first and create the map second
* Add a spinner for when dialog is open and map being created

Bug: T148070
Change-Id: Iba40a37130220576185c075cdec9be3f75afcad6
---
M extension.json
M includes/Tag/MapFrame.php
D modules/box/Link.js
M modules/box/index.js
M modules/dialog/closefullscreen_control.js
M modules/dialog/dialog.js
M modules/dialog/index.js
A modules/linkbox/Link.js
A modules/linkbox/index.js
M modules/maplink/maplink.js
A modules/staticframe/staticframe.js
M styles/dialog.less
A styles/images/ajax-loader.gif
M styles/kartographer.less
M tests/parserTests.txt
15 files changed, 543 insertions(+), 206 deletions(-)

Approvals:
  Yurik: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index 2bfb185..ed3fb40 100644
--- a/extension.json
+++ b/extension.json
@@ -152,7 +152,7 @@
"ext.kartographer.link": {
"dependencies": [
"mediawiki.router",
-   "ext.kartographer.box"
+   "ext.kartographer.linkbox"
],
"scripts": [
"modules/maplink/maplink.js"
@@ -182,12 +182,21 @@
"modules/box/dataLayerOpts.js",
"modules/box/data.js",
"modules/box/Map.js",
-   "modules/box/Link.js",
"modules/box/enablePreview.js",
"modules/box/index.js"
],
"messages": [
"kartographer-attribution"
+   ],
+   "targets": [
+   "mobile",
+   "desktop"
+   ]
+   },
+   "ext.kartographer.linkbox": {
+   "scripts": [
+   "modules/linkbox/Link.js",
+   "modules/linkbox/index.js"
],
"targets": [
"mobile",
@@ -211,8 +220,7 @@
"ext.kartographer.dialog": {
"dependencies": [
"oojs-ui-windows",
-   "mediawiki.router",
-   "ext.kartographer.box"
+   "mediawiki.router"
],
"scripts": [
"modules/dialog/closefullscreen_control.js",
@@ -280,6 +288,23 @@
"desktop"
]
},
+   "ext.kartographer.staticframe": {
+   "dependencies": [
+   "mediawiki.router",
+   "oojs-ui.styles.icons-media",
+   "ext.kartographer.linkbox"
+   ],
+   "scripts": [
+   "modules/staticframe/staticframe.js"
+   ],
+   "messages": [
+   "kartographer-fullscreen-text"
+   ],
+   "targets": [
+   "mobile",
+   "desktop"
+   ]
+   },
"ext.kartographer.preview": {
"scripts": [
"modules/preview/preview.js"
diff --git a/includes/Tag/MapFrame.php b/includes/Tag/MapFrame.php
index 739a376..ecab4a9 100644
--- a/includes/Tag/MapFrame.php
+++ b/includes/Tag/MapFrame.php
@@ -29,7 +29,10 @@
 * @return string
 */
protected function render() {
-   global $wgKartographerFrameMode, $wgKartographerMapServer;
+   global $wgKartographerFrameMode,
+  $wgKartographerMapServer,
+  $wgServerName,
+  $wgKartographerStaticMapframe;
 
$alignClasses = [
'left' => 'floatleft',
@@ -85,7 +88,11 @@
*/
 
case 'interactive':
-   $output->addModules( 'ext.kartographer.frame' );
+   if ( $wgKartographerStaticMapframe ) {
+   $output->addModules( 
'ext.kartographer.staticframe' 

[MediaWiki-commits] [Gerrit] mediawiki...Kartographer[master]: Use map snapshot service until user interacts

2016-10-20 Thread JGirault (Code Review)
JGirault has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/317018

Change subject: Use map snapshot service until user interacts
..

Use map snapshot service until user interacts

Bug: T148070
Change-Id: Iba40a37130220576185c075cdec9be3f75afcad6
---
M extension.json
M includes/Tag/MapFrame.php
A modules/mapframe-static/mapframe-static.js
M modules/mapframe/mapframe.js
M styles/kartographer.less
5 files changed, 281 insertions(+), 41 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Kartographer 
refs/changes/18/317018/1

diff --git a/extension.json b/extension.json
index 2bfb185..e157d52 100644
--- a/extension.json
+++ b/extension.json
@@ -269,8 +269,7 @@
},
"ext.kartographer.frame": {
"dependencies": [
-   "mediawiki.router",
-   "ext.kartographer.box"
+   "mediawiki.router"
],
"scripts": [
"modules/mapframe/mapframe.js"
@@ -280,6 +279,22 @@
"desktop"
]
},
+   "ext.kartographer.frame.static": {
+   "dependencies": [
+   "mediawiki.router",
+   "oojs-ui.styles.icons-media"
+   ],
+   "scripts": [
+   "modules/mapframe-static/mapframe-static.js"
+   ],
+   "messages": [
+   "kartographer-fullscreen-text"
+   ],
+   "targets": [
+   "mobile",
+   "desktop"
+   ]
+   },
"ext.kartographer.preview": {
"scripts": [
"modules/preview/preview.js"
diff --git a/includes/Tag/MapFrame.php b/includes/Tag/MapFrame.php
index 739a376..a548dd4 100644
--- a/includes/Tag/MapFrame.php
+++ b/includes/Tag/MapFrame.php
@@ -29,7 +29,10 @@
 * @return string
 */
protected function render() {
-   global $wgKartographerFrameMode, $wgKartographerMapServer;
+   global $wgKartographerFrameMode,
+  $wgKartographerMapServer,
+  $wgServerName,
+  $wgKartographerStaticMapframe;
 
$alignClasses = [
'left' => 'floatleft',
@@ -85,7 +88,11 @@
*/
 
case 'interactive':
-   $output->addModules( 'ext.kartographer.frame' );
+   if ( $wgKartographerStaticMapframe ) {
+   $output->addModules( 
'ext.kartographer.frame.static' );
+   } else {
+   $output->addModules( 
'ext.kartographer.frame' );
+   }
 
$fullWidth = false;
 
@@ -149,7 +156,12 @@
$containerClass .= ' mw-kartographer-full';
}
 
-   $attrs['style'] = "background-image: 
url({$wgKartographerMapServer}/img/{$this->mapStyle},{$staticZoom},{$staticLat},{$staticLon},{$staticWidth}x{$this->height}.png);";
+   $title = urlencode( 
$this->parser->getTitle()->getPrefixedText() );
+   $groupList = implode( ',', $this->showGroups );
+
+   $bgUrl = 
"{$wgKartographerMapServer}/img/{$this->mapStyle},{$staticZoom},{$staticLat},{$staticLon},{$staticWidth}x{$this->height}.png";
+   $bgUrl .= 
"?domain={$wgServerName}={$title}={$groupList}";
+   $attrs['style'] = "background-image: url({$bgUrl});";
 
if ( !$framed ) {
$attrs['style'] .= " width: {$width}; height: 
{$height};";
diff --git a/modules/mapframe-static/mapframe-static.js 
b/modules/mapframe-static/mapframe-static.js
new file mode 100644
index 000..2c78e7a
--- /dev/null
+++ b/modules/mapframe-static/mapframe-static.js
@@ -0,0 +1,181 @@
+/* globals module, require */
+/**
+ * Frame module.
+ *
+ * Once the page is loaded and ready, turn all `` tags into
+ * interactive maps.
+ *
+ * @alias Frame
+ * @alias ext.kartographer.frame
+ * @class Kartographer.Frame
+ * @singleton
+ */
+module.exports = ( function ( $, mw, router ) {
+
+   /**
+* References the mapframe containers of the page.
+*
+* @type {HTMLElement[]}
+*/
+   var maps = [],
+   /**
+* @private
+* @ignore
+*/
+   routerInited = false;
+
+   /**
+* Gets the map data attached to an element.