mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/RelatedArticles
synced 2024-12-23 21:33:11 +00:00
df1ff38877
1) Merge ext.relatedArticles.readMore and ext.relatedArticles.cards modules These are always loaded together. No need to have them in separate modules. In process switch to packagefiles 2) Merge ext.relatedArticles.readMore.bootstrap and ext.relatedArticles.readMore.gateway Always loaded together. Bug: T306228 Change-Id: I9442b0336e22ca795cc06f76068215266fe81271
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
( function () {
|
|
/**
|
|
* Renders the related articles.
|
|
*/
|
|
function main() {
|
|
var CardModel = require( '../ext.relatedArticles.cards/CardModel.js' ),
|
|
CardView = require( '../ext.relatedArticles.cards/CardView.js' ),
|
|
CardListView = require( '../ext.relatedArticles.cards/CardListView.js' );
|
|
|
|
/**
|
|
* Generates `mw.cards.CardView`s from pages
|
|
*
|
|
* @param {Object[]} pages
|
|
* @return {mw.cards.CardView[]}
|
|
*/
|
|
function getCards( pages ) {
|
|
return pages.map( function ( page ) {
|
|
var result = {
|
|
title: page.title,
|
|
url: mw.util.getUrl( page.title ),
|
|
hasThumbnail: false,
|
|
extract: ( page.description || page.extract ||
|
|
( page.pageprops ? page.pageprops.description : '' ) )
|
|
};
|
|
|
|
if ( page.thumbnail ) {
|
|
result.hasThumbnail = true;
|
|
result.thumbnailUrl = page.thumbnail.source;
|
|
result.isThumbnailPortrait = page.thumbnail.height >= page.thumbnail.width;
|
|
}
|
|
|
|
return new CardView( new CardModel( result ) );
|
|
} );
|
|
}
|
|
|
|
mw.trackSubscribe( 'ext.relatedArticles.init', function ( _, pages ) {
|
|
var $readMore,
|
|
cards;
|
|
|
|
cards = new CardListView( getCards( pages ) );
|
|
|
|
$readMore = $( '<aside>' ).addClass( 'ra-read-more noprint' )
|
|
.append( $( '<h2>' ).text( mw.msg( 'relatedarticles-read-more-heading' ) ) )
|
|
.append( cards.$el );
|
|
|
|
// eslint-disable-next-line no-jquery/no-global-selector
|
|
$( '.read-more-container' ).append( $readMore );
|
|
} );
|
|
}
|
|
main();
|
|
|
|
}() );
|