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