document.addEventListener('DOMContentLoaded', function() { var unlockBtn = document.getElementById('aagl_unlock_btn'); var passInput = document.getElementById('aagl_admin_pass_input'); function doUnlock() { var resultDiv = document.getElementById('aagl_unlock_result'); var pass = passInput.value; if (!pass) { resultDiv.style.display = 'block'; resultDiv.style.color = '#d63638'; resultDiv.textContent = 'パスワードを入力してください'; return; } unlockBtn.disabled = true; unlockBtn.textContent = '検証中...'; fetch('', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ action: 'aagl_verify_admin_pass', admin_pass: pass, nonce: '' }) }) .then(function(r) { return r.json(); }) .then(function(data) { if (data.success) { resultDiv.style.display = 'block'; resultDiv.style.color = '#00a32a'; resultDiv.textContent = '認証成功 — ページをリロードします...'; setTimeout(function() { location.reload(); }, 500); } else { resultDiv.style.display = 'block'; resultDiv.style.color = '#d63638'; resultDiv.textContent = 'パスワードが正しくありません'; unlockBtn.disabled = false; unlockBtn.innerHTML = ' ロック解除'; } }) .catch(function() { resultDiv.style.display = 'block'; resultDiv.style.color = '#d63638'; resultDiv.textContent = '通信エラー'; unlockBtn.disabled = false; unlockBtn.innerHTML = ' ロック解除'; }); } unlockBtn.addEventListener('click', doUnlock); passInput.addEventListener('keydown', function(e) { if (e.key === 'Enter') { e.preventDefault(); doUnlock(); } }); });

'aagl_settings[system_settings][parent_page_id]', 'id' => 'parent_page_id', 'show_option_none' => esc_html__( '— 指定なし —', 'aio-agent-article-generator' ), 'option_none_value' => '0', 'selected' => intval( $parent_page_val ), ) ); ?>



'; } esc_html_e( '一覧は週に1回自動で更新されます。新しいモデルをすぐ使いたいときはこのボタンを押してください。設定中のモデルが一覧から消えた場合は、管理者メールに通知します。', 'aio-agent-article-generator' ); ?>



document.addEventListener('DOMContentLoaded', function() { // 全API接続テスト(インラインボタン) document.querySelectorAll('.aagl-test-api-btn').forEach(function(btn) { btn.addEventListener('click', function() { var provider = this.dataset.provider; var originalText = this.textContent; var resultDiv = document.getElementById('test-result-' + provider); this.disabled = true; this.textContent = 'テスト中...'; resultDiv.style.display = 'none'; fetch('', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ action: 'aagl_test_api_connection', provider: provider, nonce: '' }) }) .then(function(response) { return response.json(); }) .then(function(data) { resultDiv.textContent = ''; var span = document.createElement('span'); if (data.success) { span.className = 'aagl-test-success'; span.textContent = data.data.message; } else { span.className = 'aagl-test-error'; span.textContent = data.data.error || data.data || 'テストに失敗しました'; } resultDiv.appendChild(span); resultDiv.style.display = 'block'; }) .catch(function(error) { resultDiv.textContent = ''; var span = document.createElement('span'); span.className = 'aagl-test-error'; span.textContent = '通信エラー: ' + error; resultDiv.appendChild(span); resultDiv.style.display = 'block'; }) .finally(function() { btn.disabled = false; btn.textContent = originalText; }); }); }); });