X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderImage.php;h=8cd5b19fd4d0e9e431b5be094be5b792e8aa2d80;hb=1805fd3be51787b956573616154175fa4c66df08;hp=d9c369dd02359933f5424a5ce1ac27637729045b;hpb=a4120368bb7797df25004613feed9406eac1c9d0;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderImage.php b/includes/resourceloader/ResourceLoaderImage.php index d9c369dd02..8cd5b19fd4 100644 --- a/includes/resourceloader/ResourceLoaderImage.php +++ b/includes/resourceloader/ResourceLoaderImage.php @@ -292,12 +292,23 @@ class ResourceLoaderImage { * @return string New SVG file data */ protected function variantize( $variantConf, ResourceLoaderContext $context ) { - $dom = new DomDocument; + $dom = new DOMDocument; $dom->loadXML( file_get_contents( $this->getPath( $context ) ) ); $root = $dom->documentElement; - $wrapper = $dom->createElement( 'g' ); + $titleNode = null; + $wrapper = $dom->createElementNS( 'http://www.w3.org/2000/svg', 'g' ); + // Reattach all direct children of the `` root node to the `` wrapper while ( $root->firstChild ) { - $wrapper->appendChild( $root->firstChild ); + $node = $root->firstChild; + if ( !$titleNode && $node->nodeType === XML_ELEMENT_NODE && $node->tagName === 'title' ) { + // Remember the first encountered `` node + $titleNode = $node; + } + $wrapper->appendChild( $node ); + } + if ( $titleNode ) { + // Reattach the `` node to the `<svg>` root node rather than the `<g>` wrapper + $root->appendChild( $titleNode ); } $root->appendChild( $wrapper ); $wrapper->setAttribute( 'fill', $variantConf['color'] ); @@ -315,7 +326,7 @@ class ResourceLoaderImage { * @return string Massaged SVG image data */ protected function massageSvgPathdata( $svg ) { - $dom = new DomDocument; + $dom = new DOMDocument; $dom->loadXML( $svg ); foreach ( $dom->getElementsByTagName( 'path' ) as $node ) { $pathData = $node->getAttribute( 'd' );