You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.5 KiB
114 lines
3.5 KiB
<?php |
|
/** |
|
* WPSEO plugin file. |
|
* |
|
* @package WPSEO\Admin |
|
* |
|
* @uses string $type |
|
* @uses string $dashicon |
|
* @uses string $i18n_title |
|
* @uses string $i18n_issues |
|
* @uses string $i18n_no_issues |
|
* @uses string $i18n_muted_issues_title |
|
* @uses int $active_total |
|
* @uses int $dismissed_total |
|
* @uses int $total |
|
* @uses array $active |
|
* @uses array $dismissed |
|
*/ |
|
|
|
if ( ! function_exists( '_yoast_display_alerts' ) ) { |
|
/** |
|
* Create the alert HTML with restore/dismiss button. |
|
* |
|
* @param array $list List of alerts. |
|
* @param string $status Status of the alerts (active/dismissed). |
|
* |
|
* @return string The output to render. |
|
*/ |
|
function _yoast_display_alerts( $list, $status ) { |
|
$alerts = ''; |
|
|
|
foreach ( $list as $notification ) { |
|
|
|
switch ( $status ) { |
|
case 'active': |
|
$button = sprintf( |
|
'<button type="button" class="button dismiss"><span class="screen-reader-text">%1$s</span><span class="dashicons dashicons-hidden"></span></button>', |
|
esc_html__( 'Hide this item.', 'wordpress-seo' ) |
|
); |
|
break; |
|
|
|
case 'dismissed': |
|
$button = sprintf( |
|
'<button type="button" class="button restore"><span class="screen-reader-text">%1$s</span><span class="dashicons yoast-svg-icon-eye"></span></button>', |
|
esc_html__( 'Show this item.', 'wordpress-seo' ) |
|
); |
|
break; |
|
} |
|
|
|
$alerts .= sprintf( |
|
'<div class="yoast-alert-holder" id="%1$s" data-nonce="%2$s" data-json="%3$s">%4$s%5$s</div>', |
|
esc_attr( $notification->get_id() ), |
|
esc_attr( $notification->get_nonce() ), |
|
esc_attr( $notification->get_json() ), |
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: Needs to be fixed in https://github.com/Yoast/wordpress-seo-premium/issues/2548. |
|
$notification, |
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $button is properly escaped. |
|
$button |
|
); |
|
} |
|
|
|
return $alerts; |
|
} |
|
} |
|
|
|
$wpseo_i18n_summary = $i18n_issues; |
|
if ( ! $active ) { |
|
$dashicon = 'yes'; |
|
$wpseo_i18n_summary = $i18n_no_issues; |
|
} |
|
|
|
?> |
|
<h3 class="yoast-alerts-header" id="<?php echo esc_attr( 'yoast-' . $type . '-header' ); ?>"> |
|
<span class="dashicons <?php echo esc_attr( 'dashicons-' . $dashicon ); ?>"></span> |
|
<?php echo esc_html( $i18n_title ); ?> (<?php echo (int) $active_total; ?>) |
|
</h3> |
|
|
|
<div id="<?php echo esc_attr( 'yoast-' . $type ); ?>"> |
|
|
|
<?php if ( $total ) : ?> |
|
<p><?php echo esc_html( $wpseo_i18n_summary ); ?></p> |
|
|
|
<div class="container yoast-alerts-active" id="<?php echo esc_attr( 'yoast-' . $type . '-active' ); ?>"> |
|
<?php |
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: _yoast_display_alerts is considered a safe function. |
|
echo _yoast_display_alerts( $active, 'active' ); |
|
?> |
|
</div> |
|
|
|
<?php |
|
if ( $dismissed ) { |
|
$dismissed_paper = new WPSEO_Paper_Presenter( |
|
esc_html( $i18n_muted_issues_title ), |
|
null, |
|
array( |
|
'paper_id' => esc_attr( $type . '-dismissed' ), |
|
'paper_id_prefix' => 'yoast-', |
|
'class' => 'yoast-alerts-dismissed', |
|
'content' => _yoast_display_alerts( $dismissed, 'dismissed' ), |
|
'collapsible' => true, |
|
'collapsible_header_class' => 'yoast-alert', |
|
) |
|
); |
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: current usage is considered safe. |
|
echo $dismissed_paper->get_output(); |
|
} |
|
?> |
|
|
|
<?php else : ?> |
|
|
|
<p><?php echo esc_html( $i18n_no_issues ); ?></p> |
|
|
|
<?php endif; ?> |
|
</div>
|
|
|