MediaWiki:Common.js: Perbedaan antara revisi

Tidak ada ringkasan suntingan
Tanda: Pengembalian manual Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tanda: Suntingan perangkat seluler Suntingan peramban seluler
Baris 1.322: Baris 1.322:
                 }).done(function() { location.reload(); });
                 }).done(function() { location.reload(); });
             }
             }
        }
    });
});
/* ==========================================================
  🛡️ MIPPEDIA LINK-SENTRY V3 - THE IRON WALL
  Fitur: Blokir Global Link Luar (Kecuali Admin & Patroli)
  Hanya mengizinkan domain yang ada di Whitelist.
  ========================================================== */
mw.hook('editPage.setup').add(function() {
    var userGroups = mw.config.get('wgUserGroups');
   
    // 1. IZINKAN: Admin (sysop) dan Patroli (patroller)
    // Mereka bebas memasukkan link apa saja.
    if (userGroups.indexOf('sysop') !== -1 || userGroups.indexOf('patroller') !== -1) return;
    $('#editform').on('submit', function(e) {
        var content = $('#wpTextbox1').val();
       
        // Regex untuk menangkap domain dari URL (http/https)
        var urlRegex = /https?:\/\/([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5})/gi;
        var match;
        var unauthorizedLinks = [];
        // 2. DAFTAR DOMAIN "JALUR HIJAU" (WHITELIST)
        // Silakan tambah di sini jika ada domain baru yang dipercaya.
        var trustedDomains = [
            'mippedia.org', 'id.mippedia.org', 'en.mippedia.org',
            'concise.mippedia.org', 'data.mippedia.org',
            'mippediacommunity.site', // Project Network
            'kompas.com', 'cnnindonesia.com', 'detik.com', 'tempo.co',
            'antaranews.com', 'liputan6.com', 'republika.co.id', // Berita Indo
            'reuters.com', 'apnews.com', 'bbc.com', 'nytimes.com', 'theguardian.com', // Berita Global
            'wikipedia.org', 'wikimedia.org', 'wikidata.org' // Edukasi & Wiki Network
        ];
        while ((match = urlRegex.exec(content)) !== null) {
            var domainFound = match[1].toLowerCase();
            var isTrusted = false;
            // Cek apakah domain cocok dengan whitelist atau merupakan subdomainnya
            for (var i = 0; i < trustedDomains.length; i++) {
                if (domainFound === trustedDomains[i] || domainFound.endsWith('.' + trustedDomains[i])) {
                    isTrusted = true;
                    break;
                }
            }
            if (!isTrusted) {
                unauthorizedLinks.push(domainFound);
            }
        }
        // 3. EKSEKUSI PENYEKATAN
        if (unauthorizedLinks.length > 0) {
            e.preventDefault();
           
            // Ambil daftar unik domain yang diblokir
            var uniqueUnauthorized = [...new Set(unauthorizedLinks)];
           
            alert(
                "❌ AKSES DITOLAK: DOMAIN TIDAK DIIZINKAN ❌\n\n" +
                "Mippedia hanya mengizinkan referensi dari sumber berita kredibel dan internal network.\n\n" +
                "Domain berikut dilarang untuk disimpan:\n- " + uniqueUnauthorized.join('\n- ') + "\n\n" +
                "Harap gunakan sumber terpercaya atau hubungi Admin jika Anda merasa domain ini penting."
            );
            return false;
         }
         }
     });
     });
});
});