[MediaWiki-commits] [Gerrit] mediawiki...Kartographer[master]: Use map snapshot service until user interacts
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
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.