「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(); | |||
} | } | ||
}() ); | }() ); | ||