document.addEventListener('DOMContentLoaded', function() { var editButtons = document.querySelector('.editButtons'); if (editButtons && !document.getElementById('edbtn__miz2prel')) { // URLに「&do=edit」が含まれているかチェックすることで全体編集を判定 const isFullEdit = document.location.search.includes('&do=edit'); // 全体編集の場合にのみmiz2prelボタンを表示 if (isFullEdit) { const miz2prelButton = document.createElement('button'); miz2prelButton.textContent = 'miz2prel'; miz2prelButton.id = 'edbtn__miz2prel'; miz2prelButton.type = 'button'; miz2prelButton.style.fontSize = '17px'; miz2prelButton.addEventListener('click', function() { const editor = document.getElementById('wiki__text'); if (!editor) { alert('Editor not found'); return; } const pageContent = editor.value; const editBar = document.getElementById('wiki__editbar'); let outputDiv = document.getElementById('compileResult'); if (!outputDiv) { outputDiv = document.createElement('div'); outputDiv.id = 'compileResult'; outputDiv.style = 'white-space: pre-wrap; margin-top: 10px;'; } if (editBar) { editBar.parentNode.insertBefore(outputDiv, editBar.nextSibling); } fetch(DOKU_BASE + 'lib/exe/ajax.php?call=source_compile', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'content=' + encodeURIComponent(pageContent) }) .then(response => response.json()) .then(data => { if (data.success) { // SSEで結果を受信 const eventSource = new EventSource(DOKU_BASE + 'lib/exe/ajax.php?call=source_sse'); eventSource.onmessage = function(event) { outputDiv.innerHTML += event.data + '
'; }; eventSource.addEventListener('end', function(event) { outputDiv.innerHTML += "Compilation complete
"; eventSource.close(); // 接続を閉じる }); eventSource.onerror = function(event) { console.error('EventSource failed:', event); eventSource.close(); // エラー発生時に接続を閉じる }; } else { outputDiv.innerHTML = 'Error: ' + data.message; } }) .catch((error) => { console.error('Error:', error); outputDiv.innerHTML = 'Error: ' + error; }); }); editButtons.appendChild(miz2prelButton); } } });