「MediaWiki:Minerva.js」の版間の差分

Common.js と同期
Common.js と同期 (perf-link 存在チェック追加)
99行目: 99行目:
} else {
} else {
build();
build();
}
}() );
/* Wiki Infobox の owarai-perf-link 行を「該当 term が存在しない」場合のみ削除する。
* Template:Infobox 人物 / コンビ / コンビ・グループ から /performer-(person|group)/<name>/ への
* 直リンクが描画される。リンク href の path から name と kind を抽出し
* /api/perf-exists で照合して、exists:false のときのみ <tr> を消す。 */
( function () {
'use strict';
function check() {
var rows = document.querySelectorAll( '.owarai-perf-link' );
if ( !rows.length ) return;
rows.forEach( function ( row ) {
var a = row.querySelector( 'a[href*="/performer-"]' );
if ( !a ) return;
var m = a.getAttribute( 'href' ).match( /\/performer-(person|group)\/([^/?#]+)\/?/ );
if ( !m ) return;
var kind = m[1];
var name;
try { name = decodeURIComponent( m[2] ); } catch ( e ) { name = m[2]; }
fetch( '/api/perf-exists?name=' + encodeURIComponent( name ) + '&kind=' + kind )
.then( function ( r ) { return r.json(); } )
.then( function ( d ) {
if ( !d || !d.exists ) {
if ( row.parentNode ) row.parentNode.removeChild( row );
}
} )
.catch( function () { /* on error, leave row visible */ } );
} );
}
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', check );
} else {
check();
}
}
}() );
}() );