settings_storage = $settings_storage ?? new Settings_Storage(); $this->settings_validator = $settings_validator ?? new Settings_Validator(); } /** * Render complete settings form. * * @since 1.0.0 * @param array $template_vars Template variables. * @return void */ public function render_settings_form( array $template_vars ): void { ?>
render_api_settings_section( $template_vars ); ?> render_voice_settings_section( $template_vars ); ?> render_processing_settings_section( $template_vars ); ?> render_content_settings_section( $template_vars ); ?> render_advanced_settings_section( $template_vars ); ?>
render_form_actions(); ?>

settings_validator->get_allowed_modes() as $mode ) : ?>

get_mode_description( $mode ) ); ?>



__( 'Instant Processing', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'wp_cron' => __( 'Background Processing (Recommended)', 'accessibility-audio-tts-text-to-speech-for-articles' ), ); return $names[ $mode ] ?? $mode; } /** * Get mode description. * * @since 1.0.0 * @param string $mode Mode identifier. * @return string Description. */ private function get_mode_description( string $mode ): string { $descriptions = array( 'instant' => __( 'Generate audio immediately when content is published. May slow down publishing.', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'wp_cron' => __( 'Generate audio in the background using WordPress cron. Recommended for better performance.', 'accessibility-audio-tts-text-to-speech-for-articles' ), ); return $descriptions[ $mode ] ?? ''; } /** * Get field display name. * * @since 1.0.0 * @param string $field Field identifier. * @return string Display name. */ private function get_field_display_name( string $field ): string { $names = array( 'api_key' => __( 'API Key', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'voice_id' => __( 'Voice Selection', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'voice_name' => __( 'Voice Name', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'model' => __( 'AI Model', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'mode' => __( 'Processing Mode', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'post_types' => __( 'Content Types', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'chatgpt_api_key' => __( 'ChatGPT API Key', 'accessibility-audio-tts-text-to-speech-for-articles' ), 'chatgpt_prompt' => __( 'Content Optimization Prompt', 'accessibility-audio-tts-text-to-speech-for-articles' ), ); return $names[ $field ] ?? $field; } }