mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer
synced 2024-11-17 21:04:11 +00:00
5c3846a74b
Change-Id: I6c9f8ea6251bf6a7ed2a5684e5eaa572530a4fb9
91 lines
2.4 KiB
JavaScript
91 lines
2.4 KiB
JavaScript
/*
|
|
* 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
( function ( mw, $, oo ) {
|
|
/**
|
|
* Category metadata UI.
|
|
* @class mw.mmv.ui.Categories
|
|
* @extends mw.mmv.ui.Element
|
|
* @constructor
|
|
* @inheritdoc
|
|
*/
|
|
function Categories( $container ) {
|
|
mw.mmv.ui.Element.call( this, $container );
|
|
|
|
this.$categoryTpl = $( '<span>').addClass( 'mw-mmv-tag' )
|
|
.append( $( '<span>').addClass( 'comma-container' )
|
|
.text( mw.message( 'comma-separator' ) ) )
|
|
.append( '<a>' );
|
|
|
|
this.$categories = $( '<span>' ).appendTo( this.$container );
|
|
}
|
|
|
|
oo.inheritClass( Categories, mw.mmv.ui.Element );
|
|
|
|
/**
|
|
* Sets the data for the element.
|
|
* @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();
|
|
|
|
if ( !categories || !categories.length ) {
|
|
return;
|
|
}
|
|
|
|
// 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];
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
this.$container.removeClass( 'empty' );
|
|
};
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
Categories.prototype.empty = function () {
|
|
this.$categories.empty();
|
|
this.$container.addClass( 'empty' );
|
|
};
|
|
|
|
mw.mmv.ui.Categories = Categories;
|
|
}( mediaWiki, jQuery, OO ) );
|