Selasa, 13 Oktober 2026
18:59 WIB
TERKINI
Bandar Lampung Bandar Lampung Siaga Banjir Rob: BPBD Fokus Pantau Empat Kecamatan Pesisir Bandar Lampung Lampung Perketat Pengawasan Solar Subsidi: STNK Truk Roda Enam Diperiksa Bandar Lampung TNI AL Gagalkan Ribuan Paket Kokain Cair, Selamatkan Ribuan Jiwa dan Anggaran Negara Cuaca Gunung Anak Krakatau Berstatus Siaga, Asap Kawah dan Sinar Api Terpantau Jelas Lampung Prakiraan Cuaca Lampung 13 Oktober 2026: Waspada Hujan dan Angin Kencang Lampung Ratusan Titik Panas Terdeteksi di Lampung, Tulang Bawang Terbanyak Bandar Lampung Pemprov Lampung Gencarkan Rapat Penting, Mulai Inflasi Hingga Eliminasi TBC Pringsewu Ribuan Warga Pringsewu Padati Jalan Sehat Kapal Api Tribun Lampung Bandar Lampung Pengungkapan 3 Ton BBM Ilegal di Tanjung Bintang, Polisi Lidik Jaringan Penyaluran Lampung Tugas Berat Kapolda Lampung Brigjen Yustan Alpiani: Atasi Narkoba, Konflik Lahan, dan Distribusi BBM Bandar Lampung Bandar Lampung Siaga Banjir Rob: BPBD Fokus Pantau Empat Kecamatan Pesisir Bandar Lampung Lampung Perketat Pengawasan Solar Subsidi: STNK Truk Roda Enam Diperiksa Bandar Lampung TNI AL Gagalkan Ribuan Paket Kokain Cair, Selamatkan Ribuan Jiwa dan Anggaran Negara Cuaca Gunung Anak Krakatau Berstatus Siaga, Asap Kawah dan Sinar Api Terpantau Jelas Lampung Prakiraan Cuaca Lampung 13 Oktober 2026: Waspada Hujan dan Angin Kencang Lampung Ratusan Titik Panas Terdeteksi di Lampung, Tulang Bawang Terbanyak Bandar Lampung Pemprov Lampung Gencarkan Rapat Penting, Mulai Inflasi Hingga Eliminasi TBC Pringsewu Ribuan Warga Pringsewu Padati Jalan Sehat Kapal Api Tribun Lampung Bandar Lampung Pengungkapan 3 Ton BBM Ilegal di Tanjung Bintang, Polisi Lidik Jaringan Penyaluran Lampung Tugas Berat Kapolda Lampung Brigjen Yustan Alpiani: Atasi Narkoba, Konflik Lahan, dan Distribusi BBM

MediaWiki:Gadget-FoxTools-KPC.js

Bagikan:
/**
 * [FOXTOOLS — PATROLLERS HELPER SCRIPT]
 * 
 * •==============================================•
 * > Pencipta: Janorovic Volkov
 * > Pengembang: Janorovic Volkov
 * > Tipe: JavaScript (Module)
 * 
 * Lihat [[WP:FT]] untuk informasi selengkapnya
 * tentang skrip ini
 * •==============================================•
 */
// <nowiki>
(function(){
if(mw.config.get("wgNamespaceNumber")<0)return;
functionnotiOK(msg){mw.notify?mw.notify(msg,{type:'success'}):alert(msg);}
functionnotiWARN(msg){mw.notify?mw.notify(msg,{type:'warn'}):alert('⚠️ '+msg);}
constFT=window.FoxTools;
constisSysop=mw.config.get("wgUserGroups").includes("sysop");
constmodule={
name:"KPC",
init(){
mw.util.addPortletLink(
"p-tb",
"#",
"KPC (FT)",
"t-ft-kpc",
"Penghapusan cepat",
"k"
).addEventListener("click",()=>this.openPanel());
},
openPanel(){
letpanel=document.getElementById("fox-panel");
if(!panel){
panel=document.createElement("div");
panel.id="fox-panel";
panel.innerHTML=`
				<div class="fox-header">
   	    			<div class="ft-dots">
     	    			<div class="dot yellow"></div>
	        		    <div class="dot green"></div>
	        		    <div class="dot red"></div>
	      			</div>
	     			<div style="float:right;">
                 		<button id="fox-close">×</button>
                 	</div>
                 	<br>
                 	<h3><big>🦊 FoxTools — KPC</big></h3>
             	</div>
             	<br>
             	<div class="fox-card">
                 	<div id="fox-content"></div>
             	</div>
             	`;
document.body.appendChild(panel);
document.getElementById("fox-close").addEventListener("click",()=>panel.remove());
}
constkonten=document.getElementById("fox-content");
konten.innerHTML="";
functionrenderUmumKPC(container){
container.innerHTML=`
                <div class="fox-radio-scroll">
                    <label><input name="reason" type="radio" value="U1" checked>U1 – Tulisan ngawur</label>
                    <label><input name="reason" type="radio" value="U2">U2 – Halaman uji coba</label>
                    <label><input name="reason" type="radio" value="U3">U3 – Vandalisme</label>
                    <label><input name="reason" type="radio" value="U4">U4 – Pembuatan ulang dari halaman yang sudah dihapus</label>
                    <label><input name="reason" type="radio" value="U5">U5 – Halaman yang dibuat oleh pengguna yang diblokir atau yang dilarang</label>
                    <label><input name="reason" type="radio" value="U6">U6 – Penghapusan teknis</label>
                    <label><input name="reason" type="radio" value="U7">U7 – Permintaan pembuat halaman atau pengosongan isi halaman</label>
                    <label><input name="reason" type="radio" value="U8">U8 – Halaman yang tergantung pada halaman yang tak ada atau yang dihapus</label>
                    <label><input name="reason" type="radio" value="U10">U10 – Serangan atau olokan terhadap subjek atau entitas lain</label>
                    <label><input name="reason" type="radio" value="U11">U11 – Iklan, promosi murni/terang-terangan atau menyertakan pranala luar dengan tujuan promosi</label>
                    <label><input name="reason" type="radio" value="U12">U12 – Pelanggaran hak cipta murni/terang-terangan</label>
                    <label><input name="reason" type="radio" value="U13">U13 – Halaman yang dibuat menggunakan kecerdasan buatan generatif (AI/AI generatif)</label>
                </div>
                `;
}
functionrenderLainKPC(container){
container.innerHTML=`
                <div class="fox-radio-scroll">
                    <label><input name="reason" type="radio" value="A1" checked>A1 – Tanpa konteks</label>
                    <label><input name="reason" type="radio" value="A2">A2 – Artikel berbahasa asing yang tidak diterjemahkan atau diterjemahkan secara buruk</label>
                    <label><input name="reason" type="radio" value="A3">A3 – Tanpa isi</label>
                    <label><input name="reason" type="radio" value="A5">A5 – Artikel transwiki</label>
                    <label><input name="reason" type="radio" value="A7">A7 – Tidak mengindikasikan kepentingan (tokoh, organisasi, situs)</label>
                    <label><input name="reason" type="radio" value="A9">A9 – Artikel yang tidak mengindikasikan kepentingan (film, acara televisi, dan rekaman musik)</label>
                    <label><input name="reason" type="radio" value="A10">A10 – Artikel yang tidak dirapikan dalam batas waktu yang telah ditentukan</label>
                    <label><input name="reason" type="radio" value="R2">R2 – Pengalihan dari ruang nama artikel ke ruang nama lain</label>
                    <label><input name="reason" type="radio" value="R3">R3 – Pengalihan yang baru dibuat karena kesalahan ketik atau kesalahan penamaan yang tidak disengaja</label>
                    <label><input name="reason" type="radio" value="B1">B1 – Redundan atau duplikat</label>
                    <label><input name="reason" type="radio" value="B2">B2 – Rusak atau kosong</label>
                    <label><input name="reason" type="radio" value="B3">B3 – Lisensi yang tidak sesuai</label>
                    <label><input name="reason" type="radio" value="B4">B4 – Informasi lisensi kurang (tanpa sumber)</label>
                    <label><input name="reason" type="radio" value="B5">B5 – Berkas tak bebas yang tak digunakan</label>
                    <label><input name="reason" type="radio" value="B6">B6 – Tidak memiliki alasan penggunaan tak bebas</label>
                    <label><input name="reason" type="radio" value="B7">B7 – Klaim penggunaan wajar tidak sah</label>
                    <label><input name="reason" type="radio" value="B8">B8 – Berkas yang sama persis tersedia di Wikimedia Commons</label>
                    <label><input name="reason" type="radio" value="B9">B9 – Terang-terangan melanggar hak cipta</label>
                    <label><input name="reason" type="radio" value="B10">B10 – Berkas media yang tidak berguna</label>
                    <label><input name="reason" type="radio" value="B11">B11 – Tak ada bukti izin penggunaan</label>
                </div>
                `;
}
functionrenderGabunganKPC(container){
container.innerHTML=`
                <div class="fox-radio-scroll">
                    <label><input name="reason" type="radio" value="U11|U4" checked>Kombinasi U11 + U4</label>
                    <label><input name="reason" type="radio" value="U11|U5">Kombinasi U11 + U5</label>
                    <label><input name="reason" type="radio" value="A7|U4">Kombinasi A7 + U4</label>
                    <label><input name="reason" type="radio" value="A7|U5">Kombinasi A7 + U5</label>
                </div>
                `;
}
functionrenderUmum(container){
container.innerHTML=`
                <div class="fox-radio-scroll">
                    <label><input name="reason" type="radio" value="[[WP:KPC#U1|U1]]: Tulisan ngawur" checked>U1 – Tulisan ngawur</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U2|U2]]: Halaman uji coba">U2 – Halaman uji coba</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U3|U3]]: Vandalisme">U3 – Vandalisme</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U4|U4]]: Pembuatan ulang dari halaman yang sudah dihapus">U4 – Pembuatan ulang dari halaman yang sudah dihapus</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U5|U5]]: Halaman yang dibuat oleh pengguna yang diblokir atau yang dilarang">U5 – Halaman yang dibuat oleh pengguna yang diblokir atau yang dilarang</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U6|U6]]: Penghapusan teknis">U6 – Penghapusan teknis</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U7|U7]]: Permintaan pembuat halaman atau pengosongan isi halaman">U7 – Permintaan pembuat halaman atau pengosongan isi halaman</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U8|U8]]: Halaman yang tergantung pada halaman yang tak ada atau yang dihapus">U8 – Halaman yang tergantung pada halaman yang tak ada atau yang dihapus</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U10|U10]]: Serangan atau olokan terhadap subjek atau entitas lain">U10 – Serangan atau olokan terhadap subjek atau entitas lain</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U11|U11]]: Iklan, promosi murni/terang-terangan atau menyertakan pranala luar dengan tujuan promosi">U11 – Iklan, promosi murni/terang-terangan atau menyertakan pranala luar dengan tujuan promosi</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U12|U12]]: Pelanggaran hak cipta murni/terang-terangan">U12 – Pelanggaran hak cipta murni/terang-terangan</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#U13|U13]]: Halaman yang dibuat menggunakan kecerdasan buatan generatif (AI/AI generatif)">U13 – Halaman yang dibuat menggunakan kecerdasan buatan generatif (AI)</label>
                </div>
                `;
}
functionrenderLain(container){
container.innerHTML=`
                <div class="fox-radio-scroll">
                    <label><input name="reason" type="radio" value="[[WP:KPC#A1|A1]]: Tanpa konteks" checked>A1 – Tanpa konteks</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#A2|A2]]: Artikel berbahasa asing yang tidak diterjemahkan atau diterjemahkan secara buruk">A2 – Artikel berbahasa asing yang tidak diterjemahkan atau diterjemahkan secara buruk</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#A3|A3]]: Tanpa isi">A3 – Tanpa isi</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#A5|A5]]: Artikel transwiki">A5 – Artikel transwiki</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#A7|A7]]: Tidak mengindikasikan kepentingan (tokoh, tempat, organisasi, situs, produk)">A7 – Tidak mengindikasikan kepentingan (tokoh, organisasi, situs)</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#A9|A9]]: Artikel yang tidak mengindikasikan kepentingan (film, acara televisi, rekaman musik)">A9 – Artikel yang tidak mengindikasikan kepentingan (film, acara televisi, rekaman musik)</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#A10|A10]]: Artikel yang tidak dirapikan dalam batas waktu yang telah ditentukan">A10 – Artikel yang tidak dirapikan dalam batas waktu yang telah ditentukan</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#R2|R2]]: Pengalihan dari ruang nama artikel ke ruang nama lain">R2 – Pengalihan dari ruang nama artikel ke ruang nama lain</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#R3|R3]]: Pengalihan yang baru dibuat karena kesalahan ketik atau kesalahan penamaan yang tidak disengaja">R3 – Pengalihan yang baru dibuat karena kesalahan ketik atau kesalahan penamaan yang tidak disengaja</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B1|B1]]: Redundan atau duplikat">B1 – Redundan atau duplikat</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B2|B2]]: Rusak atau kosong">B2 – Rusak atau kosong</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B3|B3]]: Lisensi yang tidak sesuai">B3 – Lisensi yang tidak sesuai</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B4|B4]]: Informasi lisensi kurang (tanpa sumber)">B4 – Informasi lisensi kurang (tanpa sumber)</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B5|B5]]: Berkas tak bebas yang tak digunakan">B5 – Berkas tak bebas yang tak digunakan</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B6|B6]]: Tidak memiliki alasan penggunaan tak bebas">B6 – Tidak memiliki alasan penggunaan tak bebas</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B7|B7]]: Klaim penggunaan wajar tidak sah">B7 – Klaim penggunaan wajar tidak sah</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B8|B8]]: Berkas yang sama persis tersedia di Wikimedia Commons">B8 – Berkas yang sama persis tersedia di Wikimedia Commons</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B9|B9]]: Terang-terangan melanggar hak cipta">B9 – Terang-terangan melanggar hak cipta</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B10|B10]]: Berkas media yang tidak berguna">B10 – Berkas media yang tidak berguna</label>
                    <label><input name="reason" type="radio" value="[[WP:KPC#B11|B11]]: Tak ada bukti izin penggunaan">B11 – Tak ada bukti izin penggunaan</label>
                </div>
                `;
}
functionrenderGabungan(container){
container.innerHTML=`
                <div class="fox-radio-scroll">
                    <label><input name="reason" type="radio" value="Lebih dari satu macam alasan: penghapusan cepat kriteria [[WP:KPC#U11|U11]] ([[Wikipedia:Iklan|Iklan]], promosi murni/terang-terangan atau menyertakan [[Wikipedia:Spam|pranala luar]] dengan tujuan promosi) dan [[WP:KPC#U4|U4]] (Pembuatan ulang dari halaman yang sudah dihapus)" checked>Kombinasi U11 + U4</label>
                    <label><input name="reason" type="radio" value="Lebih dari satu macam alasan: penghapusan cepat kriteria [[WP:KPC#U11|U11]] ([[Wikipedia:Iklan|Iklan]], promosi murni/terang-terangan atau menyertakan [[Wikipedia:Spam|pranala luar]] dengan tujuan promosi) dan [[WP:KPC#U5|U5]] (Halaman yang dibuat oleh pengguna yang diblokir atau yang dilarang)">Kombinasi U11 + U5</label>
                    <label><input name="reason" type="radio" value="Lebih dari satu macam alasan: penghapusan cepat kriteria [[WP:KPC#A7|A7]] (Artikel yang tidak mengindikasikan kepentingan (tokoh, tempat, organisasi, situs, produk)) dan [[WP:KPC#U4|U4]] (Pembuatan ulang dari halaman yang sudah dihapus)">Kombinasi A7 + U4</label>
                    <label><input name="reason" type="radio" value="Lebih dari satu macam alasan: penghapusan cepat kriteria [[WP:KPC#A7|A7]] (Artikel yang tidak mengindikasikan kepentingan (tokoh, tempat, organisasi, situs, produk)) dan [[WP:KPC#U5|U5]] (Halaman yang dibuat oleh pengguna yang diblokir atau yang dilarang)">Kombinasi A7 + U5</label>
                </div>
                `;
}
functionrenderForm(type){
constcontainer=document.getElementById("fox-form-container");
container.innerHTML="";
if(type==="umumkpc")returnrenderUmumKPC(container);
if(type==="lainkpc")returnrenderLainKPC(container);
if(type==="gabungankpc")returnrenderGabunganKPC(container);
if(type==="umum")returnrenderUmum(container);
if(type==="lain")returnrenderLain(container);
if(type==="gabungan")returnrenderGabungan(container);
}
constKPC_MAP={
"U1":"[[WP:KPC#U1|U1]]: Tulisan ngawur",
"U2":"[[WP:KPC#U2|U2]]: Halaman uji coba",
"U3":"[[WP:KPC#U3|U3]]: Vandalisme",
"U4":"[[WP:KPC#U4|U4]]: Pembuatan ulang dari halaman yang sudah dihapus",
"U5":"[[WP:KPC#U5|U5]]: Halaman yang dibuat oleh pengguna yang diblokir atau yang dilarang",
"U6":"[[WP:KPC#U6|U6]]: Penghapusan teknis",
"U7":"[[WP:KPC#U7|U7]]: Permintaan pembuat halaman atau pengosongan isi halaman",
"U8":"[[WP:KPC#U8|U8]]: Halaman yang tergantung pada halaman yang tak ada atau yang dihapus",
"U10":"[[WP:KPC#U10|U10]]: Serangan atau olokan terhadap subjek atau entitas lain",
"U11":"[[WP:KPC#U11|U11]]: Iklan, promosi murni/terang-terangan atau menyertakan pranala luar dengan tujuan promosi",
"U12":"[[WP:KPC#U12|U12]]: Pelanggaran hak cipta murni/terang-terangan",
"U13":"[[WP:KPC#U13|U13]]: Halaman yang dibuat menggunakan kecerdasan buatan generatif (AI/AI generatif)",
"A1":"[[WP:KPC#A1|A1]]: Tanpa konteks",
"A2":"[[WP:KPC#A2|A2]]: Artikel berbahasa asing yang tidak diterjemahkan atau diterjemahkan secara buruk",
"A3":"[[WP:KPC#A3|A3]]: Tanpa isi",
"A5":"[[WP:KPC#A5|A5]]: Artikel transwiki",
"A7":"[[WP:KPC#A7|A7]]: Tidak mengindikasikan kepentingan (tokoh, tempat, organisasi, situs, produk)",
"A9":"[[WP:KPC#A9|A9]]: Artikel yang tidak mengindikasikan kepentingan (film, acara televisi, rekaman musik)",
"A10":"[[WP:KPC#A10|A10]]: Artikel yang tidak dirapikan dalam batas waktu yang telah ditentukan",
"R2":"[[WP:KPC#R2|R2]]: Pengalihan dari ruang nama artikel ke ruang nama lain",
"R3":"[[WP:KPC#R3|R3]]: Pengalihan yang baru dibuat karena kesalahan ketik atau kesalahan penamaan yang tidak disengaja",
"B1":"[[WP:KPC#B1|B1]]: Redundan atau duplikat",
"B2":"[[WP:KPC#B2|B2]]: Rusak atau kosong",
"B3":"[[WP:KPC#B3|B3]]: Lisensi yang tidak sesuai",
"B4":"[[WP:KPC#B4|B4]]: Informasi lisensi kurang (tanpa sumber)",
"B5":"[[WP:KPC#B5|B5]]: Berkas tak bebas yang tak digunakan",
"B6":"[[WP:KPC#B6|B6]]: Tidak memiliki alasan penggunaan tak bebas",
"B7":"[[WP:KPC#B7|B7]]: Klaim penggunaan wajar tidak sah",
"B8":"[[WP:KPC#B8|B8]]: Berkas yang sama persis tersedia di Wikimedia Commons",
"B9":"[[WP:KPC#B9|B9]]: Terang-terangan melanggar hak cipta",
"B10":"[[WP:KPC#B10|B10]]: Berkas media yang tidak berguna",
"B11":"[[WP:KPC#B11|B11]]: Tak ada bukti izin penggunaan"
};
functioncodesToFullText(codeStr){
if(!codeStr)return"";
constcodes=codeStr.split("|");
consttexts=codes.map(c=>KPC_MAP[c]||c);
if(texts.length<=1)returntexts[0];
returntexts.slice(0,-1).join(", ")+" dan "+texts.slice(-1);
}
if(isSysop){
constpage=mw.config.get('wgPageName').replace(/_/g,' ');
konten.innerHTML=`
         		<label><big><b>• Halaman:</b><br><big>${page}</big></big></label>
             	<br>
             	<label><big><b>• Alasan penghapusan:</b></big></label>
             	<div class="fox-row">
                    <label><input type="radio" name="fox-radio" value="umum" checked> Alasan umum</label>
                    <label><input type="radio" name="fox-radio" value="lain"> Alasan lain</label>
                    <label><input type="radio" name="fox-radio" value="gabungan"> Alasan gabungan</label>
                </div>
                <div id="fox-form-container"></div>
                <br>
             	<label><big><b>• Komentar penghapusan:</b></big></label><br><label class="fox-muted"><small><b>(Opsional)</b></small></label>
             	<br>
             	<textarea id="comment" style="width:95%; height:80px;"></textarea>
             	<br>
             	<input id="talk" type="checkbox"> Hapus pembicaraan terkait</label>
             	<br>
             	<input id="user" type="checkbox" checked> Peringati pembuat halaman</label>
             	<br>
             	<br>
             	<button id="fox-delete-exec" class="fox-btn-danger">Hapus</button>
             	`;
renderForm("umum");
document.querySelectorAll("input[name='fox-radio']").forEach(radio=>{
radio.addEventListener("change",(e)=>renderForm(e.target.value));
});
document.getElementById("fox-delete-exec").onclick=async()=>{
constreasonSelect=document.querySelector('input[name="reason"]:checked');
letreason=reasonSelect?reasonSelect.value:'';
constcomment=document.getElementById('comment');
consttalkCheck=document.getElementById('talk').checked;
constuserNotify=document.getElementById('user').checked;
if(comment&&comment.value.trim()!==''){
reason+=`: ${comment.value.trim()}`;
}
constapi=newmw.Api();
constcreatorQuery=awaitapi.get({
action:'query',
prop:'revisions',
titles:page,
rvlimit:1,
rvprop:'user',
rvdir:'newer',
formatversion:2
});
constcreator=creatorQuery.query.pages[0].revisions?.[0]?.user;
awaitapi.postWithToken('csrf',{
action:'delete',
title:page,
reason:reason+` (${FT.ads})`,
tags:'FoxTools'
});
if(talkCheck){
consttalkTitle=mw.Title.newFromText(page).getTalkPage().getPrefixedText();
consttalkInfo=awaitapi.get({action:'query',titles:talkTitle});
consttalkPageExists=!Object.values(talkInfo.query.pages)[0].missing;
if(talkPageExists){
awaitapi.postWithToken('csrf',{
action:'delete',
title:talkTitle,
reason:`Menghapus halaman pembicaraan dari ${page} (${FT.ads})`,
tags:'FoxTools'
});
}else{
notiWARN(`⚠️ Gagal menghapus halaman pembicaraan ${page}: halaman tidak ada`);
}
}
if(userNotify){
consttalkUserPage=`User talk:${creator}`;
consttext=`Halaman berjudul [[${page}]] telah dihapus berdasarkan kebijakan penghapusan cepat Wikipedia, secara khusus dengan alasan:\n\n<blockquote>${reasonSelect.value.trim()}</blockquote>\n\nMenurut [[Wikipedia:Kriteria penghapusan cepat|kriteria penghapusan cepat]], halaman yang memenuhi beberapa ketentuan dapat dihapus kapan saja dan tanpa peringatan.`;
consttemplate=`\n{{subst:Db-deleted|target=${page}|text=${text}}} --~~~~`;
awaitapi.postWithToken('csrf',{
action:'edit',
title:talkUserPage,
appendtext:template,
summary:`Pemberitahuan penghapusan ${page} (${FT.ads})`,
minor:true,
tags:'FoxTools'
});
}
notiOK(`🟢 ${page} berhasil dihapus`);
panel.remove();
};
}else{
constpage=mw.config.get('wgPageName').replace(/_/g,' ');
konten.innerHTML=`
         		<label><big><b>• Halaman:</b><br><big>${page}</big></big></label>
             	<br>
             	<label><big><b>• Alasan penghapusan:</b></big></label>
             	<div class="fox-row">
                    <label><input type="radio" name="fox-radio" value="umumkpc" checked> Alasan umum</label>
                    <label><input type="radio" name="fox-radio" value="lainkpc"> Alasan lain</label>
                    <label><input type="radio" name="fox-radio" value="gabungankpc"> Alasan gabungan</label>
                </div>
                <div id="fox-form-container"></div>
                <br>
             	<input id="user" type="checkbox" checked> Peringati pembuat halaman</label>
             	<br>
             	<br>
             	<button id="fox-kpc-exec" class="fox-btn-danger">Tandai</button>
             	`;
renderForm("umumkpc");
document.querySelectorAll("input[name='fox-radio']").forEach(radio=>{
radio.addEventListener("change",(e)=>renderForm(e.target.value));
});
document.getElementById("fox-kpc-exec").onclick=async()=>{
constcodeSelect=document.querySelector('input[name="reason"]:checked');
letcode=codeSelect?codeSelect.value:'';
constuserNotify=document.getElementById('user').checked;
constfulltext=codesToFullText(code);
constwikitext=`{{Db|${code}}}\n`;
constapi=newmw.Api();
awaitapi.postWithToken('csrf',{
action:'edit',
title:page,
prependtext:wikitext,
summary:`Meminta penghapusan cepat (${FT.ads})`,
tags:`FoxTools`
});
if(userNotify){
constcreatorQuery=awaitapi.get({
action:'query',
prop:'revisions',
titles:page,
rvlimit:1,
rvprop:'user',
rvdir:'newer',
formatversion:2
});
constcreator=creatorQuery.query.pages[0].revisions?.[0]?.user;
consttalkUserPage=`User talk:${creator}`;
consttemplate=`\n{{subst:Db-reason-notice|1=${page}|2=${fulltext}}} --~~~~`;
awaitapi.postWithToken('csrf',{
action:'edit',
title:talkUserPage,
appendtext:template,
summary:`Nominasi penghapusan cepat [[${page}]] (${FT.ads})`,
minor:true,
tags:'FoxTools'
});
}
notiOK(`🟢 ${page} berhasil ditandai untuk penghapusan cepat`);
panel.remove();
};
}
mw.util.addCSS(`
            	#fox-panel {
                	position: fixed;
                	top: 50%; left: 50%;
                	transform: translate(-50%, -50%);
                	max-width: 640px;
                	width: 92%;
                	background: rgba(30, 35, 45, 0.75);
                	color: #f5f6fa;
                	border: 1px solid rgba(180, 200, 255, 0.2);
                	border-radius: 10px;
                	padding: 1.2em 1.4em;
                	font-family: "Noto Sans", "Segoe UI", sans-serif;
                	font-size: 14px;
                	z-index: 9999;
                	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.55);
                	transition: all 0.3s ease-in-out;
                	animation: foxFadeIn 0.25s ease-out;
            	}
            	@keyframes foxFadeIn {
                	from { opacity: 0; transform: translate(-50%, -46%) scale(0.96); }
                	to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            	}
            	#fox-panel h3 {
                	margin-top: 0;
                	font-size: 16px;
                	font-weight: 600;
                	border-bottom: 1px solid rgba(255, 255, 255, 0.1);
                	padding-bottom: .5em;
                	color: #8be9fd;
                	display: flex;
                	align-items: center;
                	justify-content: space-between;
            	}
            	#fox-close {
                	background: none;
                	color: #8be9fd;
                	border: none;
                	font-weight: bold;
                	cursor: pointer;
                	transition: color 0.2s ease;
            	}
            	#fox-close:hover {
                	color: #ff5555;
                	text-decoration: underline;
            	}
            	#fox-panel button,
            	#fox-panel textarea,
            	#fox-panel input {
                	font-family: inherit;
                	font-size: 14px;  
                	border-radius: 6px;
                	padding: 6px 12px;  border: 1px solid rgba(180, 200, 255, 0.3);
                 	margin-top: 6px;
                	margin-bottom: 10px;
                	background: rgba(255, 255, 255, 0.05);
                	color: #f5f6fa;
                	transition: all 0.2s ease;
            	}
            	#fox-panel button:hover,
            	#fox-panel textarea:hover,
            	#fox-panel input:hover {
                 	background: rgba(255, 255, 255, 0.12);
                	border-color: rgba(180, 200, 255, 0.6);
            	}
            	#fox-panel button:focus,
            	#fox-panel textarea:focus,
            	#fox-panel input:focus {
                	outline: none;
                	box-shadow: 0 0 0 2px rgba(140, 200, 255, 0.5);
            	}
            	#fox-panel .fox-btn-danger {
                	background: linear-gradient(135deg, #d33, #a00);
                	border: 1px solid #a00;
                	color: #fff;
                	font-weight: bold;
            	}
            	#fox-panel .fox-btn-danger:hover {
                	background: linear-gradient(135deg, #e44, #c11);
                	box-shadow: 0 0 6px rgba(255, 100, 100, 0.6);
            	}
            	.fox-radio-scroll {
                 	max-height: 180px;
                	overflow-y: auto;
                	padding: 6px;
                	border: 1px solid rgba(180,200,255,0.2);
                	border-radius: 6px;
                	background: rgba(30,35,45,0.95);
            	}
            	.fox-radio-scroll label {
                 	display: block;
                 	padding: 4px 8px;
                 	cursor: pointer;
                 	color: #f5f6fa;
            	}
            	.fox-radio-scroll label:hover {
                	background: rgba(255,255,255,0.08);
            	}
            	.fox-radio-scroll input[type="radio"] {
                 	margin-right: 6px;
            	}
            	.fox-row {
                	display: flex;
                	gap: 12px;
                	flex-wrap: wrap;
                	justify-content: space-between;
             	}
            	.fox-card {
                	flex: 1 1 260px;
                	border: 1px solid rgba(180, 200, 255, 0.15);
                	padding: 12px;
                	border-radius: 8px;
                	background: rgba(255, 255, 255, 0.04);
                	transition: transform 0.15s ease, background 0.2s ease;
            	}
            	.fox-card:hover {
                	transform: translateY(-2px);
                	background: rgba(255, 255, 255, 0.07);
            	}
            	.fox-muted {
                	color: #aab6c3;
                	font-size: 90%;
            	}
            	.ft-dots {
                	display: flex;
                	gap: 6px;
                	margin-bottom: 6px;
            	}
            	.ft-dots .dot {
                	width: 10px; height: 10px;
                	border-radius: 50%;
                	box-shadow: 0 0 3px rgba(255,255,255,0.4);
            	}
            	.dot.red { background: #ff5555; }
            	.dot.yellow { background: #f1fa8c; }
            	.dot.green { background: #50fa7b; }
          	`);
}
};
FT.register&&FT.register("KPC",module);
})();
// </nowiki>
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan