/*
* This file is part of the MediaWiki extension MultimediaViewer.
*
* MultimediaViewer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* MultimediaViewer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MultimediaViewer. If not, see .
*/
( function ( mw, $, oo ) {
/**
* @class mw.mmv.ui.Categories
* @extends mw.mmv.ui.Element
* @constructor
* @inheritdoc
*/
function Categories( $container ) {
mw.mmv.ui.Element.call( this, $container );
this.$categoryTpl = $( '')
.append( $( '').addClass( 'comma-container' )
.text( mw.message( 'comma-separator' ) ) )
.append( '' );
}
oo.inheritClass( Categories, mw.mmv.ui.Element );
/**
* @method
* @inheritdoc
* @param {string} articlePath Path to articles on the repo this image comes from
* @param {string[]} categories
*/
Categories.prototype.set = function ( articlePath, categories ) {
var i, cat, href, $category;
this.empty();
// We filter the categories first, because we need to know which category is the last
// in order to insert the commas properly
categories = $.grep( categories, function( cat ) {
return cat && cat.length;
} );
for ( i = 0; i < categories.length; i++ ) {
cat = categories[i];
if ( !this.$categories ) {
this.$categories = $( '' ).addClass( 'mw-mlb-image-category' )
.appendTo( this.$container );
}
href = articlePath.replace( '$1', 'Category:' + cat );
$category = this.$categoryTpl
.clone()
.toggleClass( 'extra', i >= 3 )
.appendTo( this.$categories );
$category.find( 'a' )
.text( cat )
.prop( 'href', href );
if ( i === 0 ) {
$category.find( '.comma-container' ).remove();
}
}
};
/**
* @method
* @inheritdoc
*/
Categories.prototype.empty = function () {
if ( this.$categories ) {
this.$categories.remove();
}
};
mw.mmv.ui.Categories = Categories;
}( mediaWiki, jQuery, OO ) );