1"use strict"; 2document.addEventListener('DOMContentLoaded', function() { 3 const editButtons = document.querySelector('.editButtons'); 4 if (editButtons && !document.getElementById('edbtn__miz2prel')) { 5 // URLに「&do=edit」が含まれているかチェックすることで全体編集を判定 6 const isFullEdit = document.location.search.includes('&do=edit'); 7 8 // 全体編集の場合にのみmiz2prelボタンを表示 9 if (isFullEdit) { 10 const miz2prelButton = document.createElement('button'); 11 miz2prelButton.textContent = 'miz2prel'; 12 miz2prelButton.id = 'edbtn__miz2prel'; 13 miz2prelButton.type = 'button'; 14 miz2prelButton.classList.add('miz2prel-button'); 15 16 miz2prelButton.addEventListener('click', async function() { 17 const editor = document.getElementById('wiki__text'); 18 if (!editor) { 19 alert('Editor not found'); 20 return; 21 } 22 23 const pageContent = editor.value; 24 const editBar = document.getElementById('wiki__editbar'); 25 let outputDiv = document.getElementById('compileResult'); 26 if (!outputDiv) { 27 outputDiv = document.createElement('div'); 28 outputDiv.id = 'compileResult'; 29 } 30 31 if (editBar) { 32 editBar.parentNode.insertBefore(outputDiv, editBar.nextSibling); 33 } 34 35 try { 36 const response = await fetch(DOKU_BASE + 'lib/exe/ajax.php?call=source_compile', { 37 method: 'POST', 38 headers: { 39 'Content-Type': 'application/x-www-form-urlencoded' 40 }, 41 body: 'content=' + encodeURIComponent(pageContent) 42 }); 43 44 const data = await response.json(); 45 46 if (data.success) { 47 // SSEで結果を受信 48 const eventSource = new EventSource(DOKU_BASE + 'lib/exe/ajax.php?call=source_sse'); 49 eventSource.onmessage = function(event) { 50 outputDiv.innerHTML += event.data + '<br>'; 51 }; 52 53 eventSource.addEventListener('end', function(event) { 54 outputDiv.innerHTML += "Compilation complete<br>"; 55 eventSource.close(); // 接続を閉じる 56 }); // <-- ここで閉じ括弧を追加 57 58 eventSource.onerror = function(event) { 59 console.error('EventSource failed:', event); 60 eventSource.close(); // エラー発生時に接続を閉じる 61 }; 62 } else { 63 outputDiv.innerHTML = 'Error: ' + data.message; 64 } 65 } catch (error) { 66 console.error('Error:', error); 67 outputDiv.innerHTML = 'Error: ' + error; 68 } 69 }); 70 71 editButtons.appendChild(miz2prelButton); 72 } 73 } 74});