'array', 'sanitize_callback' => array( '\ModernAudioPlayer\Settings', 'sanitize' ), 'default' => Settings::defaults(), ) ); } /** * Enqueue admin design assets. * * @param string $hook_suffix Current screen hook. * @return void */ public function enqueue_assets( $hook_suffix ) { if ( 'toplevel_page_map-settings' !== $hook_suffix ) { return; } wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_style( 'map-admin-settings', MAP_PLUGIN_URL . 'assets/css/admin-settings.css', array( 'wp-color-picker' ), MAP_VERSION ); wp_enqueue_style( 'map-player-preview', MAP_PLUGIN_URL . 'assets/css/player.css', array(), MAP_VERSION ); wp_enqueue_script( 'wp-color-picker' ); wp_enqueue_script( 'map-admin-settings', MAP_PLUGIN_URL . 'assets/js/admin-settings.js', array( 'jquery', 'wp-color-picker' ), MAP_VERSION, true ); $settings = Settings::get(); $resolved_design = Settings::get_resolved_design_settings( $settings['default_theme'], $settings ); $presets = Settings::get_design_presets(); $preset_tokens = array(); foreach ( $presets as $slug => $preset ) { $preset_tokens[ $slug ] = $preset['tokens']; } wp_add_inline_script( 'map-admin-settings', 'window.mapAdminSettings = ' . wp_json_encode( array( 'optionKey' => MAP_OPTION_KEY, 'presets' => $preset_tokens, 'resolvedDesign' => $resolved_design, 'i18n' => array( 'rangeValueLabel' => __( '%1$s %2$s', 'modern-audio-player' ), 'resetConfirm' => __( 'Reset all design settings back to the default preset values?', 'modern-audio-player' ), ), ) ) . ';', 'before' ); } /** * Handle reset action. * * @return void */ public function handle_reset_design_settings() { if ( ! current_user_can( 'manage_options' ) ) { wp_die( esc_html__( 'You are not allowed to perform this action.', 'modern-audio-player' ) ); } check_admin_referer( 'map_reset_design_settings' ); update_option( MAP_OPTION_KEY, Settings::defaults() ); $redirect = add_query_arg( array( 'page' => 'map-settings', 'map-reset' => 1, ), admin_url( 'admin.php' ) ); wp_safe_redirect( $redirect ); exit; } /** * Render settings page. * * @return void */ public function render_settings_page() { if ( ! current_user_can( 'manage_options' ) ) { return; } $settings = Settings::get(); $schema = Settings::get_design_schema(); $resolved_design = Settings::get_resolved_design_settings( $settings['default_theme'], $settings ); $preview_style = Settings::build_design_css_variables( $resolved_design ); $presets = Settings::get_design_presets(); $preview_preset = isset( $presets[ $settings['default_theme'] ] ) ? $presets[ $settings['default_theme'] ]['label'] : $presets[ Settings::get_default_preset_slug() ]['label']; ?>

$section ) : ?>

$field ) : ?>
render_field( $field_key, $field, $settings, $resolved_design ); ?>

$field Field definition. * @param array $settings Saved settings. * @param array $resolved_design Resolved design values. * @return void */ private function render_field( $field_key, $field, $settings, $resolved_design ) { $option_name = MAP_OPTION_KEY . '[' . $field_key . ']'; $value = isset( $settings[ $field_key ] ) && '' !== $settings[ $field_key ] ? $settings[ $field_key ] : $resolved_design[ $field_key ]; $override = isset( $settings[ $field_key ] ) && '' !== $settings[ $field_key ]; switch ( $field['type'] ) { case 'color': ?>
$option_label ) : ?>

track_title ? $track->track_title : __( 'Untitled Track', 'modern-audio-player' ) ); ?> audio_src ); ?> play_count ) ); ?> last_played ? esc_html( get_date_from_gmt( $track->last_played, get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) ) ) : esc_html__( 'Never', 'modern-audio-player' ); ?>