MediaWiki:Common.js: Perbedaan antara revisi
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 1.262: | Baris 1.262: | ||
}); | }); | ||
/* | /* ========================================================== | ||
🚀 MIPPEDIA SUPER AUTO-INTEGRATION | |||
Fix: Image URL, Position After P1, & Smart Clean Links | |||
========================================================== */ | |||
$(document).ready(function() { | $(document).ready(function() { | ||
var pageName = mw.config.get('wgPageName'); | var pageName = mw.config.get('wgPageName'); | ||
| Baris 1.272: | Baris 1.271: | ||
var dataDomain = 'https://data.mippedia.org'; | var dataDomain = 'https://data.mippedia.org'; | ||
if (namespace === 0) { | if (namespace === 0) { | ||
$.ajax({ | $.ajax({ | ||
| Baris 1.284: | Baris 1.282: | ||
if ($infobox.length) { | if ($infobox.length) { | ||
// | // 1. INJECT TOMBOL DATA (Otomatis di Header) | ||
injectMippediaDataBtn(pageName); | |||
// | // 2. FIX GAMBAR (Arahkan ke Berkas Lokal) | ||
$infobox.find('img').each(function() { | $infobox.find('img').each(function() { | ||
var fileName = $(this).attr('alt'); | var fileName = $(this).attr('alt'); | ||
if (fileName) { | if (fileName) { | ||
// | // Pakai jalur internal agar tidak galat lagi | ||
$(this).attr('src', | var localImgUrl = mw.util.getUrl('Berkas:' + fileName); | ||
$(this).attr('srcset', ''); / | $(this).attr('src', '/w/thumb.php?f=' + encodeURIComponent(fileName) + '&w=300'); | ||
$(this).attr('srcset', ''); | |||
$(this).wrap('<a href="' + localImgUrl + '"></a>'); | |||
} | } | ||
}); | }); | ||
// | // 3. FIX LINK (Hapus sampah teks agar tidak Merah/Salah Judul) | ||
$infobox.find('a').each(function() { | $infobox.find('a').each(function() { | ||
var | var rawTitle = $(this).attr('title') || $(this).text(); | ||
// Hapus semua teks di dalam kurung dan spasi berlebih | |||
var cleanTitle = rawTitle.replace(/\s*\(.*?\)\s*/g, '').trim(); | |||
$(this).attr('title', cleanTitle); | |||
$(this).text(cleanTitle); | |||
$(this).addClass('new'); // Set merah sementara | |||
}); | }); | ||
// | // 4. PENEMPATAN: SETELAH PARAGRAF PERTAMA | ||
var $ | // Kita cari paragraf yang bukan bagian dari koordinat atau pesan sistem | ||
if ($ | var $targetP = $('#mw-content-text > .mw-parser-output > p').filter(function() { | ||
$ | return $(this).text().trim().length > 10; | ||
}).first(); | |||
if ($targetP.length) { | |||
$targetP.after($infobox); | |||
} else { | } else { | ||
$('#mw-content-text').prepend($infobox); | $('#mw-content-text').prepend($infobox); | ||
} | } | ||
// | // 5. CEK STATUS LINK (Ubah Merah ke Biru jika ada artikelnya) | ||
checkAndColorLinks($infobox); | |||
} | } | ||
} | } | ||
| Baris 1.324: | Baris 1.328: | ||
} | } | ||
function | function injectMippediaDataBtn(name) { | ||
if ($('#mippedia-data-btn').length === 0) { | if ($('#mippedia-data-btn').length === 0) { | ||
var fullUrl = dataDomain + '/wiki/' + encodeURIComponent(name); | var fullUrl = dataDomain + '/wiki/' + encodeURIComponent(name); | ||
var $ | var $btn = $(` | ||
<div id="mippedia-data-btn" style="margin: 10px 0; display: inline-block;"> | <div id="mippedia-data-btn" style="margin: 10px 0; display: inline-block;"> | ||
<a href="${fullUrl}" target="_blank" style="text-decoration: none !important;"> | <a href="${fullUrl}" target="_blank" style="text-decoration: none !important;"> | ||
| Baris 1.337: | Baris 1.341: | ||
`); | `); | ||
var $header = $('.estimasi-baca-container, .minerva__subtitle, .tagline').last(); | |||
var $ | if ($header.length) { $header.after($btn); } | ||
if ($ | else { $('#firstHeading').after($btn); } | ||
} | } | ||
} | } | ||
function | function checkAndColorLinks($container) { | ||
var | var titles = []; | ||
$container.find('a').each(function() { | $container.find('a').each(function() { | ||
var t = $(this).attr('title'); | var t = $(this).attr('title'); | ||
if (t) | if (t) titles.push(t); | ||
}); | }); | ||
if ( | if (titles.length === 0) return; | ||
$.ajax({ | $.ajax({ | ||
url: mw.util.wikiScript('api'), | url: mw.util.wikiScript('api'), | ||
data: { action: 'query', titles: | data: { action: 'query', titles: titles.join('|'), format: 'json' }, | ||
success: function(res) { | success: function(res) { | ||
var pages = res.query.pages; | var pages = res.query.pages; | ||
var | var existMap = {}; | ||
for (var id in pages) { if (id > 0) | for (var id in pages) { | ||
if (parseInt(id) > 0) existMap[pages[id].title] = true; | |||
} | |||
$container.find('a').each(function() { | $container.find('a').each(function() { | ||
var | var myTitle = $(this).attr('title'); | ||
if ( | if (existMap[myTitle]) { | ||
$(this).removeClass('new').attr('href', mw.util.getUrl( | // JADI BIRU: Artikel beneran ada di wiki lokal | ||
$(this).removeClass('new').attr('href', mw.util.getUrl(myTitle)); | |||
} else { | } else { | ||
$(this).attr('href', mw.util.getUrl( | // TETEP MERAH: Arahkan ke buat halaman baru dengan judul bersih | ||
$(this).attr('href', mw.util.getUrl(myTitle, { action: 'edit', redlink: '1' })); | |||
} | } | ||
}); | }); | ||