wp_create_nonce( 'arwp_test_connection_nonce' ), 'enter_api_key' => __( 'Please enter an API Key first.', 'arwp-agents' ), 'testing' => __( 'Testing connection...', 'arwp-agents' ), 'request_failed' => __( 'Request failed.', 'arwp-agents' ), 'select_default_model' => __( '— Select Default Model —', 'arwp-agents' ), 'has_constant' => self::has_constant_api_key(), ) ); wp_add_inline_script( 'arwp-select2-js', $this->settings_script() ); } /** * Settings page behavior, printed with the enqueued Select2 script. * * @return string */ private function settings_script() { return <<<'JS' jQuery(function($) { $('#arwp_openrouter_default_model').select2({ width: '300px' }); var apiKeyInput = $('#arwp_openrouter_api_key'); var testBtn = $('#arwp_test_connection_btn'); var badge = $('#arwp_connected_badge'); apiKeyInput.on('input', function() { testBtn.show(); badge.hide(); }); testBtn.on('click', function() { var btn = $(this); var apiKey = apiKeyInput.val(); var spinner = $('#arwp_test_spinner'); var messageBox = $('#arwp_test_message'); var modelSelect = $('#arwp_openrouter_default_model'); var currentModel = modelSelect.val(); if (!apiKey && !arwp_settings.has_constant) { window.alert(arwp_settings.enter_api_key); return; } btn.prop('disabled', true); spinner.addClass('is-active'); messageBox.css('color', '#666').text(arwp_settings.testing); $.post(ajaxurl, { action: 'arwp_test_connection', nonce: arwp_settings.nonce, api_key: apiKey }, function(response) { spinner.removeClass('is-active'); if (response.success) { btn.hide(); btn.prop('disabled', false); badge.css('display', 'inline-flex'); messageBox.css('color', 'green').text(response.data.message); modelSelect.empty(); modelSelect.append($('