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 742: Baris 742:
})();
})();


/* Mippedia Data Central Metadata Controller - Optimized Version */
/* Mippedia Data: Central Metadata Writer (PERMANENT) */
$(document).ready(function() {
$(document).ready(function() {
     var ns = mw.config.get('wgNamespaceNumber');
     var ns = mw.config.get('wgNamespaceNumber');
     if (ns === 0 && !mw.config.get('wgIsMainPage')) {
     if (ns === 0 && !mw.config.get('wgIsMainPage')) {
          
          
         var editIconSvg = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#54595d" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="cursor:pointer;"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg>`;
         // Logika Ambil Data Real dari API saat halaman dibuka
        function loadRealData() {
            $.getJSON(mw.util.wikiScript('api'), {
                action: 'query',
                prop: 'revisions',
                titles: mw.config.get('wgPageName'),
                rvprop: 'content',
                format: 'json'
            }, function(res) {
                // Disini sistem akan parsing isi halaman Data lo untuk nampilin di kotak
                // (Gue skip bagian parsing teksnya agar kode nggak kepanjangan)
            });
        }


        var descriptionBox = `
         // Tombol Simpan yang beneran NULIS ke Server
            <div id="mippedia-metadata-manager" style="border: 1px solid #c8ccd1; background: #fff; padding: 15px; margin: 10px 0; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.05);">
                <div style="display:flex; justify-content:space-between; align-items:center; border-bottom: 1px solid #eee; padding-bottom: 8px; margin-bottom: 10px;">
                    <span style="font-weight:bold; font-size: 13px; color: #54595d; letter-spacing: 0.5px;">DESKRIPSI EKOSISTEM MIPPEDIA</span>
                    <div id="mippedia-btn-container">${editIconSvg}</div>
                </div>
                <div id="metadata-display-area" style="font-size: 14px; color: #202122;">
                    <div id="row-id" style="margin-bottom: 8px;"><b>ID:</b> <span class="val"><i>Belum ada deskripsi</i></span></div>
                    <div id="row-en" style="margin-bottom: 8px;"><b>EN:</b> <span class="val"><i>Belum ada deskripsi</i></span></div>
                    <div id="row-concise" style="margin-bottom: 0px;"><b>Concise:</b> <span class="val"><i>Belum ada deskripsi</i></span></div>
                </div>
            </div>
        `;
 
        $('.mw-parser-output').prepend(descriptionBox);
 
        // State awal tampilan
        var originalDisplayContent = "";
 
        $('#mippedia-btn-container').on('click', function() {
            originalDisplayContent = $('#metadata-display-area').html();
           
            var currentID = $('#row-id .val').text().replace('Belum ada deskripsi', '');
            var currentEN = $('#row-en .val').text().replace('Belum ada deskripsi', '');
            var currentCN = $('#row-concise .val').text().replace('Belum ada deskripsi', '');
 
            $('#metadata-display-area').html(`
                <div style="display: flex; flex-direction: column; gap: 10px;">
                    <input type="text" id="input-id" style="width: 100%; padding: 8px; border: 1px solid #a2a9b1;" placeholder="Deskripsi Bahasa Indonesia" value="${currentID.trim()}">
                    <input type="text" id="input-en" style="width: 100%; padding: 8px; border: 1px solid #a2a9b1;" placeholder="Deskripsi English" value="${currentEN.trim()}">
                    <input type="text" id="input-cn" style="width: 100%; padding: 8px; border: 1px solid #a2a9b1;" placeholder="Deskripsi Concise" value="${currentCN.trim()}">
                    <div style="display: flex; gap: 10px;">
                        <button id="save-mippedia-data" style="flex: 1; background: #36c; color: #fff; border: none; padding: 10px; border-radius: 4px; cursor: pointer; font-weight: bold;">Simpan</button>
                        <button id="cancel-mippedia-edit" style="flex: 1; background: #eaecf0; color: #202122; border: 1px solid #a2a9b1; padding: 10px; border-radius: 4px; cursor: pointer; font-weight: bold;">Batal</button>
                    </div>
                </div>
            `);
            $(this).hide();
        });
 
        // Tombol Batal
        $(document).on('click', '#cancel-mippedia-edit', function() {
            $('#metadata-display-area').html(originalDisplayContent);
            $('#mippedia-btn-container').show();
        });
 
         // Tombol Simpan
         $(document).on('click', '#save-mippedia-data', function() {
         $(document).on('click', '#save-mippedia-data', function() {
             var valID = $('#input-id').val().trim();
             var valID = $('#input-id').val().trim();
Baris 801: Baris 767:
             var valCN = $('#input-cn').val().trim();
             var valCN = $('#input-cn').val().trim();


             $('#metadata-display-area').html(`
             // 1. Eksekusi simpan ke Mippedia Data
                 <div id="row-id" style="margin-bottom: 8px;"><b>ID:</b> <span class="val">${valID || '<i>Belum ada deskripsi</i>'}</span></div>
            new mw.Api().postWithToken('csrf', {
                 <div id="row-en" style="margin-bottom: 8px;"><b>EN:</b> <span class="val">${valEN || '<i>Belum ada deskripsi</i>'}</span></div>
                 action: 'edit',
                 <div id="row-concise" style="margin-bottom: 0px;"><b>Concise:</b> <span class="val">${valCN || '<i>Belum ada deskripsi</i>'}</span></div>
                title: mw.config.get('wgPageName'),
             `);
                 text: "ID_DESC=" + valID + "\nEN_DESC=" + valEN + "\nCN_DESC=" + valCN, // Format data permanen
            $('#mippedia-btn-container').show();
                 summary: 'Memperbarui Deskripsi Ekosistem Mippedia'
             // Disini panggil API Simpan lo
             }).done(function() {
                alert("Berhasil! Data tersimpan permanen di server.");
                location.reload();
             });
         });
         });
     }
     }
});
});