MarkTraceur has uploaded a new change for review.

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


Change subject: Fix up whitelistHtml
......................................................................

Fix up whitelistHtml

There were a few nasty things going on here, but it looks fixed up, and
probably a mite faster too!

Thanks so much for the review, Krinkle.

Change-Id: I630a1ad625abb803e31c7e7dd2cb4f4386d52607
---
M js/ext.multimediaViewer.js
1 file changed, 30 insertions(+), 30 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MultimediaViewer 
refs/changes/02/92602/1

diff --git a/js/ext.multimediaViewer.js b/js/ext.multimediaViewer.js
index 2c39791..bc2d255 100755
--- a/js/ext.multimediaViewer.js
+++ b/js/ext.multimediaViewer.js
@@ -96,39 +96,43 @@
 
                                viewer.fetchImageInfo( fileTitle, function ( 
imageInfo ) {
                                        function whitelistHtml( $ele ) {
+                                               var $children, $wlEle;
+
                                                function test( $ele ) {
-                                                       return $ele.jquery && (
-                                                               $ele.is( 'a' ) 
||
-                                                               false
-                                                       );
+                                                       return $ele.is( 'a' );
                                                }
 
-                                               var $children,
-                                                       whitelisted = '';
+                                               if ( $ele ) {
+                                                       if ( $ele.jquery && 
$ele ) {
+                                                               $children = 
$ele.contents();
+                                                       } else if ( 
$ele.textContent ) {
+                                                               return 
mw.html.escape( $ele.textContent );
+                                                       } else {
+                                                               return $ele;
+                                                       }
 
-                                               if ( $ele && $ele.jquery && 
$ele.contents ) {
-                                                       $children = 
$ele.contents();
-                                               } else if ( $ele && 
$ele.textContent ) {
-                                                       return $ele.textContent;
-                                               } else if ( $ele ) {
-                                                       return $ele;
+                                                       $wlEle = 
$ele.clone().empty();
+                                               } else {
+                                                       return;
                                                }
 
                                                if ( !$children || 
$children.length === 0 ) {
-                                                       return $ele.text();
+                                                       return mw.html.escape( 
$ele.text() );
                                                }
 
                                                $children.each( function ( i, 
ele ) {
-                                                       var $ele = $( ele );
+                                                       var $innerEle = $( ele 
);
 
-                                                       if ( test( $ele ) === 
true ) {
-                                                               whitelisted += 
$ele.html( whitelistHtml( $ele ) ).get( 0 ).outerHTML;
+                                                       if ( test( $innerEle ) 
=== true ) {
+                                                               $wlEle.append( 
whitelistHtml( $innerEle ) );
+                                                       } else if ( 
$innerEle.jquery ) {
+                                                               $wlEle.append( 
whitelistHtml( $( '<span>' ).append( $innerEle.contents() ) ) );
                                                        } else {
-                                                               whitelisted += 
'<span>' + whitelistHtml( $ele ) + '</span>';
+                                                               $wlEle.append( 
$innerEle );
                                                        }
                                                } );
 
-                                               return whitelisted;
+                                               return $wlEle;
                                        }
 
                                        function setUserpageLink( username, 
gender ) {
@@ -219,8 +223,8 @@
 
                                                if ( desc ) {
                                                        desc = desc.value;
-                                                       ui.$imageDesc.html(
-                                                               whitelistHtml( 
$( desc ) )
+                                                       
ui.$imageDesc.empty().append(
+                                                               whitelistHtml( 
$.parseHTML( desc ) )
                                                        );
                                                }
 
@@ -251,21 +255,17 @@
 
                                                if ( source ) {
                                                        source = source.value;
-                                                       ui.$source.html( source 
);
+                                                       
ui.$source.empty().append(
+                                                               whitelistHtml( 
$.parseHTML( source ) )
+                                                       );
                                                }
 
                                                if ( author ) {
                                                        author = author.value;
-                                                       ui.$author.html( author 
);
+                                                       
ui.$author.empty().append(
+                                                               whitelistHtml( 
$.parseHTML( author ) )
+                                                       );
                                                }
-
-                                               ui.$author.html(
-                                                       whitelistHtml( 
ui.$author )
-                                               );
-
-                                               ui.$source.html(
-                                                       whitelistHtml( 
ui.$source )
-                                               );
 
                                                if ( source && author ) {
                                                        ui.$credit.html(

-- 
To view, visit https://gerrit.wikimedia.org/r/92602
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I630a1ad625abb803e31c7e7dd2cb4f4386d52607
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MultimediaViewer
Gerrit-Branch: master
Gerrit-Owner: MarkTraceur <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to