class-admin-help-panel.php 2.11 KB
Newer Older
imac's avatar
imac committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
<?php
/**
 * @package WPSEO\Admin
 */

/**
 * Generates the HTML for an inline Help Button and Panel.
 */
class WPSEO_Admin_Help_Panel {

	/**
	 * @var string
	 */
	private $id;

	/**
	 * @var string
	 */
	private $help_button_text;

	/**
	 * @var string
	 */
	private $help_content;

	/**
	 * @var string
	 */
	private $wrapper;

	/**
	 * Constructor.
	 *
	 * @param string $id                Unique identifier of the element the inline help refers to, used as an identifier in the html.
	 * @param string $help_button_text  The Help Button text.
	 * @param string $help_content      The Help Panel content.
	 * @param string $wrapper           Optional Whether to print out a container div element for the Help Panel, used for styling.
	 *                                  Pass a `has-wrapper` value to print out the container. Default: no container.
	 */
	public function __construct( $id, $help_button_text, $help_content, $wrapper = '' ) {
		$this->id               = $id;
		$this->help_button_text = $help_button_text;
		$this->help_content     = $help_content;
		$this->wrapper          = $wrapper;
	}

	/**
	 * Returns the html for the Help Button.
	 *
	 * @return string
	 */
	public function get_button_html() {

		if ( ! $this->id || ! $this->help_button_text || ! $this->help_content ) {
			return '';
		}

		return sprintf(
			' <button type="button" class="yoast_help yoast-help-button dashicons" id="%1$s-help-toggle" aria-expanded="false" aria-controls="%1$s-help"><span class="screen-reader-text">%2$s</span></button>',
			esc_attr( $this->id ),
			$this->help_button_text
		);
	}

	/**
	 * Returns the html for the Help Panel.
	 *
	 * @return string
	 */
	public function get_panel_html() {

		if ( ! $this->id || ! $this->help_button_text || ! $this->help_content ) {
			return '';
		}

		$wrapper_start = $wrapper_end = '';

		if ( 'has-wrapper' === $this->wrapper ) {
			$wrapper_start = '<div class="yoast-seo-help-container">';
			$wrapper_end   = '</div>';
		}

		return sprintf(
			'%1$s<p id="%2$s-help" class="yoast-help-panel">%3$s</p>%4$s',
			$wrapper_start,
			esc_attr( $this->id ),
			$this->help_content,
			$wrapper_end
		);
	}
}