Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
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(); |
| | }); |
| }); | | }); |
| } | | } |
| }); | | }); |