jenkins-bot has submitted this change and it was merged.
Change subject: Don't export uneeded geometries into page
......................................................................
Don't export uneeded geometries into page
Bug: T128995
Change-Id: Ic261c4fa2dce192af972203109bb19557e61fbc8
---
M includes/Tag/MapFrame.php
M includes/Tag/TagHandler.php
M tests/phpunit/KartographerTest.php
3 files changed, 57 insertions(+), 10 deletions(-)
Approvals:
Yurik: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/Tag/MapFrame.php b/includes/Tag/MapFrame.php
index 9e12a67..e413c9c 100644
--- a/includes/Tag/MapFrame.php
+++ b/includes/Tag/MapFrame.php
@@ -5,6 +5,7 @@
use FormatJson;
use Html;
+use ParserOutput;
use UnexpectedValueException;
/**
@@ -37,6 +38,8 @@
'center' => 'center',
'right' => 'floatright',
];
+
+ $output = $this->parser->getOutput();
switch ( $wgKartographerFrameMode ) {
/* Not implemented in Kartotherian yet
@@ -75,7 +78,7 @@
*/
case 'interactive':
- $this->parser->getOutput()->addModules(
'ext.kartographer.live' );
+ $output->addModules( 'ext.kartographer.live' );
$attrs = $this->getDefaultAttributes();
$attrs['class'] .= '
mw-kartographer-interactive';
if ( isset( $alignClasses[$this->align] ) ) {
@@ -90,7 +93,10 @@
$attrs['data-overlays'] =
FormatJson::encode( $this->showGroups, false,
FormatJson::ALL_OK );
}
- $this->parser->getOutput()->setExtensionData(
'kartographer_interact', true );
+ $groups = $output->getExtensionData(
'kartographer_interact' );
+ $groups = $groups ?: [];
+ $groups = array_merge( $groups,
$this->showGroups );
+ $output->setExtensionData(
'kartographer_interact', $groups );
return Html::rawElement( 'div', $attrs );
break;
default:
diff --git a/includes/Tag/TagHandler.php b/includes/Tag/TagHandler.php
index 1f1d855..487091c 100644
--- a/includes/Tag/TagHandler.php
+++ b/includes/Tag/TagHandler.php
@@ -297,14 +297,18 @@
public static function finalParseStep( Parser $parser ) {
$output = $parser->getOutput();
+ $data = $output->getExtensionData( 'kartographer_data' );
if ( $output->getExtensionData( 'kartographer_broken' ) ) {
$output->addTrackingCategory(
'kartographer-broken-category', $parser->getTitle() );
}
if ( $output->getExtensionData( 'kartographer_valid' ) ) {
$output->addTrackingCategory(
'kartographer-tracking-category', $parser->getTitle() );
}
- if ( $output->getExtensionData( 'kartographer_interact' ) ) {
- $output->addJsConfigVars( 'wgKartographerLiveData',
$output->getExtensionData( 'kartographer_data' ) );
+ $interact = $output->getExtensionData( 'kartographer_interact'
);
+ if ( $interact ) {
+ $interact = array_flip( array_unique( $interact ) );
+ $liveData = array_intersect_key( (array)$data,
$interact );
+ $output->addJsConfigVars( 'wgKartographerLiveData',
$liveData );
}
}
diff --git a/tests/phpunit/KartographerTest.php
b/tests/phpunit/KartographerTest.php
index d5f5e10..34f4a33 100644
--- a/tests/phpunit/KartographerTest.php
+++ b/tests/phpunit/KartographerTest.php
@@ -34,12 +34,8 @@
/**
* @dataProvider provideTagData
*/
- public function testTagData( $expected, $input, $message ) {
- $parser = new Parser();
- $options = new ParserOptions();
- $title = Title::newFromText( 'Test' );
-
- $output = $parser->parse( $input, $title, $options );
+ public function t1estTagData( $expected, $input, $message ) {
+ $output = $this->parse( $input );
if ( $expected === false ) {
$this->assertTrue( $output->getExtensionData(
'kartographer_broken' ), 'Parse is expected to fail' );
@@ -87,6 +83,47 @@
];
}
+ public function testLiveData() {
+ $text =
+<<<WIKITEXT
+<maplink latitude=10 longitude=20 zoom=13>
+{
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [-122.3988, 37.8013]
+ }
+}
+</maplink>
+<mapframe width=200 height=200 latitude=10 longitude=20 zoom=13>
+{
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [10, 20]
+ }
+}
+</mapframe>
+WIKITEXT;
+ $output = $this->parse( $text );
+ $vars = $output->getJsConfigVars();
+ $this->assertArrayHasKey( 'wgKartographerLiveData', $vars );
+ $this->assertArrayEquals( [
'_5e4843908b3c3d3b11ac4321edadedde28882cc2' ], array_keys(
$vars['wgKartographerLiveData'] ) );
+ }
+
+ /**
+ * Parses wikitext
+ * @param string $text
+ * @return ParserOutput
+ */
+ private function parse( $text ) {
+ $parser = new Parser();
+ $options = new ParserOptions();
+ $title = Title::newFromText( 'Test' );
+
+ return $parser->parse( $text, $title, $options );
+ }
+
private function hasTrackingCategory( ParserOutput $output, $key ) {
$cat = wfMessage( $key )->inContentLanguage()->text();
$title = Title::makeTitleSafe( NS_CATEGORY, $cat );
--
To view, visit https://gerrit.wikimedia.org/r/278026
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic261c4fa2dce192af972203109bb19557e61fbc8
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Kartographer
Gerrit-Branch: master
Gerrit-Owner: MaxSem <[email protected]>
Gerrit-Reviewer: Yurik <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits