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 549: | Baris 549: | ||
'asal wilayah', 'daerah asal', 'negara sumber', 'kawasan', | 'asal wilayah', 'daerah asal', 'negara sumber', 'kawasan', | ||
// Sejarah & Bangunan | // Sejarah & Bangunan | ||
'letak', 'posisi', 'titik temu', 'orbit' | |||
]; | ]; | ||
| Baris 613: | Baris 613: | ||
/* ========================================================== | /* ========================================================== | ||
🔗 MIPPEDIA DATA - AUTO API RELATION LINKER | |||
Otomatis | Otomatis membuat link berdasarkan database judul halaman asli | ||
========================================================== */ | ========================================================== */ | ||
(function() { | (function() { | ||
$(document).ready(function() { | $(document).ready(function() { | ||
var | var $content = $('#mw-content-text p'); // Target paragraf | ||
var currentTitle = mw.config.get('wgPageName').replace(/_/g, ' '); | |||
// Ambil | var api = new mw.Api(); | ||
var | // 1. Ambil daftar semua judul halaman dari API | ||
var | api.get({ | ||
action: 'query', | |||
// | list: 'allpages', | ||
aplimit: '500', // Ambil sampai 500 judul halaman | |||
format: 'json' | |||
}).done(function(data) { | |||
var pages = data.query.allpages; | |||
var currentContentHtml = $content.html(); | |||
// 2. Sorting judul dari yang terpanjang (biar gak bentrok) | |||
pages.sort(function(a, b) { return b.title.length - a.title.length; }); | |||
pages.forEach(function(page) { | |||
var targetTitle = page.title; | |||
// Jangan nge-link ke diri sendiri & minimal 3 karakter biar gak typo | |||
if (targetTitle !== currentTitle && targetTitle.length > 3) { | |||
// Regex pintar: Cari kata yang pas, bukan di dalam kata lain | |||
// Misal: Cari "Mippedia", jangan sampai kena "MippediaCommunity" | |||
var regex = new RegExp('\\b(' + targetTitle.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + ')\\b', 'gi'); | |||
$content.each(function() { | |||
var $this = $(this); | |||
var html = $this.html(); | |||
// Cek apakah kata itu sudah ada di dalam tag <a> (biar gak double link) | |||
// Kita pakai trik: ganti hanya jika tidak berada di dalam tanda > < | |||
if (html.indexOf('href') === -1 || !new RegExp('<a[^>]*>.*' + targetTitle + '.*<\/a>', 'i').test(html)) { | |||
var newHtml = html.replace(regex, function(match) { | |||
return '<a href="/wiki/' + encodeURIComponent(targetTitle.replace(/ /g, '_')) + '" class="mip-auto-link">' + match + '</a>'; | |||
}); | |||
$this.html(newHtml); | |||
} | |||
}); | |||
} | |||
}); | }); | ||
$ | // 3. Tambahin CSS dikit biar tampilannya pro | ||
$('<style>') | |||
.prop('type', 'text/css') | |||
.html('.mip-auto-link { color: #6a5acd; font-weight: 500; border-bottom: 1px dotted #6a5acd; text-decoration: none; transition: 0.2s; } .mip-auto-link:hover { background: rgba(106, 92, 205, 0.1); border-bottom: 1px solid #6a5acd; }') | |||
} | .appendTo('head'); | ||
}); | |||
}); | }); | ||
})(); | })(); | ||