| @@ -4,8 +4,11 @@ | ||
| 4 | 4 | * |
| 5 | 5 | * @package WPSEO\Admin\Options\Tabs |
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | +use Yoast\WP\SEO\Presenters\Admin\Beta_Badge_Presenter; | |
| 9 | +use Yoast\WP\SEO\Presenters\Admin\Premium_Badge_Presenter; | |
| 10 | + | |
| 8 | 11 | /** |
| 9 | 12 | * Class WPSEO_Option_Tabs_Formatter. |
| 10 | 13 | */ |
| 11 | 14 | class WPSEO_Option_Tabs_Formatter { |
| @@ -25,18 +28,30 @@ | ||
| 25 | 28 | /** |
| 26 | 29 | * Outputs the option tabs. |
| 27 | 30 | * |
| 28 | 31 | * @param WPSEO_Option_Tabs $option_tabs Option Tabs to get tabs from. |
| 32 | + * | |
| 33 | + * @return void | |
| 29 | 34 | */ |
| 30 | 35 | public function run( WPSEO_Option_Tabs $option_tabs ) { |
| 31 | 36 | |
| 32 | 37 | echo '<h2 class="nav-tab-wrapper" id="wpseo-tabs">'; |
| 33 | 38 | foreach ( $option_tabs->get_tabs() as $tab ) { |
| 39 | + $label = esc_html( $tab->get_label() ); | |
| 40 | + | |
| 41 | + if ( $tab->is_beta() ) { | |
| 42 | + $label = '<span style="margin-right:4px;">' . $label . '</span>' . new Beta_Badge_Presenter( $tab->get_name() ); | |
| 43 | + } | |
| 44 | + elseif ( $tab->is_premium() ) { | |
| 45 | + $label = '<span style="margin-right:4px;">' . $label . '</span>' . new Premium_Badge_Presenter( $tab->get_name() ); | |
| 46 | + } | |
| 47 | + | |
| 34 | 48 | printf( |
| 35 | 49 | '<a class="nav-tab" id="%1$s" href="%2$s">%3$s</a>', |
| 36 | 50 | esc_attr( $tab->get_name() . '-tab' ), |
| 37 | 51 | esc_url( '#top#' . $tab->get_name() ), |
| 38 | - esc_html( $tab->get_label() ) | |
| 52 | + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: we do this on purpose | |
| 53 | + $label, | |
| 39 | 54 | ); |
| 40 | 55 | } |
| 41 | 56 | echo '</h2>'; |
| 42 | 57 | |
| @@ -52,12 +67,11 @@ | ||
| 52 | 67 | * Allows to override the content that is display on the specific option tab. |
| 53 | 68 | * |
| 54 | 69 | * @internal For internal Yoast SEO use only. |
| 55 | 70 | * |
| 56 | - * @api string|null The content that should be displayed for this tab. Leave empty for default behaviour. | |
| 57 | - * | |
| 58 | - * @param WPSEO_Option_Tabs $option_tabs The registered option tabs. | |
| 59 | - * @param WPSEO_Option_Tab $tab The tab that is being displayed. | |
| 71 | + * @param string|null $tab_contents The content that should be displayed for this tab. Leave empty for default behaviour. | |
| 72 | + * @param WPSEO_Option_Tabs $option_tabs The registered option tabs. | |
| 73 | + * @param WPSEO_Option_Tab $tab The tab that is being displayed. | |
| 60 | 74 | */ |
| 61 | 75 | $option_tab_content = apply_filters( 'wpseo_option_tab-' . $tab_filter_name, null, $option_tabs, $tab ); |
| 62 | 76 | if ( ! empty( $option_tab_content ) ) { |
| 63 | 77 | echo wp_kses_post( $option_tab_content ); |