MediaWiki:Gadget-BreadcrumbTrail.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
// <nowiki>
/***************************************************************************
* Gadget-BreadcrumbTrail.js v1.0, 2023-02-01
* Shortens breadcrumb trail in mobile view
* Original author: Roland Unger
* Documentation: https://de.wikivoyage.org/wiki/Gadget-BreadcrumbTrail.js
* License: GPL-2.0+, CC-by-sa 3.0
***************************************************************************/
( function ( $ ) {
'use strict';
const btnTitle = 'Schalter öffnet und schließt eine Liste mit allen Brotkrümel-Links.',
buttonId = 'voy-bct-button',
buttonDown = 'voy-bct-button-down',
buttonUp = 'voy-bct-button-up',
bctListId = 'voy-bct-list',
minCount = 3;
var timeout;
function removeBctList( tag ) {
clearTimeout( timeout );
$( '#' + bctListId ).remove();
$( '#' + buttonId, tag ).addClass( buttonDown )
.removeClass( buttonUp );
}
function replaceBreadcrumbTrail() {
var tag = $( '.skin-minerva .ext-geocrumbs-breadcrumbs' ).first();
if ( tag.length === 0 ) {
return;
}
var bctButton, breadcrumbs, count, i,
changed = false, innerHTML = tag.html().trim();
// Replace Breadcrumb trail if more than three members
innerHTML = innerHTML.replace( />/g, '>' );
if ( innerHTML.indexOf( '<bdi><a href="/wiki/' ) === 0 &&
innerHTML.indexOf( ' > ' ) > 0 ) {
breadcrumbs = innerHTML.split( ' > ' ).map( function( item ) {
return item.trim();
});
count = breadcrumbs.length;
if ( count > minCount ) {
innerHTML = breadcrumbs[ 0 ] +
' > <a id="' + buttonId + '" href="#">…</a>';
for ( i = count + 1 - minCount; i < count; i++ ) {
innerHTML += ' > ' + breadcrumbs[ i ];
}
tag.html( innerHTML );
changed = true;
}
}
if ( !changed ) {
return;
}
// Show BCT list on click
bctButton = $( '#' + buttonId, tag )
.addClass( buttonDown )
.attr( 'title', btnTitle )
.click( function() {
var bctList = $( '#' + bctListId );
if ( bctList.length ) {
removeBctList( tag );
} else {
var offset = tag.offset();
var top = offset.top + tag.outerHeight();
var left = offset.left;
bctList = $( '<div></div>' )
.attr( { 'id': bctListId, role: 'dialog' } )
.css( { 'position': 'absolute', 'left': left, 'top': top } );
$( 'body' ).append( bctList );
var ul = $( '<ul></ul>' );
for ( i = 1; i < breadcrumbs.length - 1; i++ ) {
ul.append( $( '<li></li>' ).html( breadcrumbs[ i ] ) );
}
bctList.append( ul );
timeout = setTimeout( function() { removeBctList( tag ); }, 10000 );
bctButton.addClass( buttonUp )
.removeClass( buttonDown );
}
});
}
$( replaceBreadcrumbTrail );
} ( jQuery ) );
// </nowiki>