diff --git a/resources/mmv/ui/img/commons.svg b/resources/mmv/ui/img/commons.svg new file mode 100644 index 000000000..3d9c98e8d --- /dev/null +++ b/resources/mmv/ui/img/commons.svg @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/resources/mmv/ui/mmv.ui.metadataPanel.js b/resources/mmv/ui/mmv.ui.metadataPanel.js index 971b37a1e..4c12c7aff 100644 --- a/resources/mmv/ui/mmv.ui.metadataPanel.js +++ b/resources/mmv/ui/mmv.ui.metadataPanel.js @@ -423,7 +423,7 @@ this.$repo.text( repositoryMessage ); this.$repoLi.css( 'background-image', - repoInfo.favIcon ? 'url("' + repoInfo.favIcon + '")' : null ); + ( repoInfo.favIcon && !isCommons ) ? 'url("' + repoInfo.favIcon + '")' : '' ); this.$repoLi.toggleClass( 'commons', isCommons ); this.$repoSubtitle.text( diff --git a/resources/mmv/ui/mmv.ui.metadataPanel.less b/resources/mmv/ui/mmv.ui.metadataPanel.less index caa6117d3..1119c69b1 100644 --- a/resources/mmv/ui/mmv.ui.metadataPanel.less +++ b/resources/mmv/ui/mmv.ui.metadataPanel.less @@ -157,6 +157,8 @@ line-height: 1.3; &.commons { // there is an extra subtitle for Commons images, box should be larger + /* @embed */ + background-image: url(img/commons.svg); @icon-size: 32px; min-height: @icon-size; padding-left: @icon-size + 2 * @padding; diff --git a/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js b/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js index e1c8bcda4..04df2fb4e 100644 --- a/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js +++ b/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js @@ -274,4 +274,27 @@ $qf.removeClass( 'invited' ); } ); + + QUnit.test( 'Repo icon', 4, function ( assert ) { + var $qf = $( '#qunit-fixture' ), + panel = new mw.mmv.ui.MetadataPanel( $qf, $( '
' ).appendTo( $qf ) ), + favIcon = 'http://foo.com/bar', + repoData = { + favIcon: favIcon, + getArticlePath : function() { return 'Foo'; }, + isCommons: function() { return false; } + }; + + panel.setRepoDisplay( repoData ); + + assert.ok( panel.$repoLi.css( 'background-image' ).indexOf( favIcon ) !== -1, 'Repo favicon is correctly applied' ); + assert.ok( !panel.$repoLi.hasClass( 'commons' ), 'Repo does not have commons class' ); + + repoData.isCommons = function() { return true; }; + + panel.setRepoDisplay( repoData ); + + assert.ok( panel.$repoLi.css( 'background-image' ).indexOf( 'data:image/svg+xml' ) !== -1, 'Repo favicon is correctly replaced by svg for Commons' ); + assert.ok( panel.$repoLi.hasClass( 'commons' ), 'Repo has commons class' ); + } ); }( mediaWiki, jQuery ) );