123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- /**
- * WPSEO plugin file.
- *
- * @package WPSEO\Admin
- */
- /**
- * Class WPSEO_presenter_paper.
- */
- class WPSEO_Paper_Presenter {
- /**
- * Title of the paper.
- *
- * @var string
- */
- private $title;
- /**
- * The view variables.
- *
- * @var array
- */
- private $settings;
- /**
- * The path to the view file.
- *
- * @var string
- */
- private $view_file;
- /**
- * WPSEO_presenter_paper constructor.
- *
- * @param string $title The title of the paper.
- * @param string $view_file Optional. The path to the view file. Use the content setting if you do not wish to use
- * a view file.
- * @param array $settings Optional. Settings for the paper.
- */
- public function __construct( $title, $view_file = null, array $settings = [] ) {
- $defaults = [
- 'paper_id' => null,
- 'paper_id_prefix' => 'wpseo-',
- 'collapsible' => false,
- 'collapsible_header_class' => '',
- 'expanded' => false,
- 'help_text' => '',
- 'title_after' => '',
- 'class' => '',
- 'content' => '',
- 'view_data' => [],
- ];
- $this->settings = wp_parse_args( $settings, $defaults );
- $this->title = $title;
- $this->view_file = $view_file;
- }
- /**
- * Renders the collapsible paper and returns it as a string.
- *
- * @return string The rendered paper.
- */
- public function get_output() {
- $view_variables = $this->get_view_variables();
- extract( $view_variables, EXTR_SKIP );
- $content = $this->settings['content'];
- if ( $this->view_file !== null ) {
- ob_start();
- require $this->view_file;
- $content = ob_get_clean();
- }
- ob_start();
- require WPSEO_PATH . 'admin/views/paper-collapsible.php';
- $rendered_output = ob_get_clean();
- return $rendered_output;
- }
- /**
- * Retrieves the view variables.
- *
- * @return array The view variables.
- */
- private function get_view_variables() {
- if ( $this->settings['help_text'] instanceof WPSEO_Admin_Help_Panel === false ) {
- $this->settings['help_text'] = new WPSEO_Admin_Help_Panel( '', '', '' );
- }
- $view_variables = [
- 'class' => $this->settings['class'],
- 'collapsible' => $this->settings['collapsible'],
- 'collapsible_config' => $this->collapsible_config(),
- 'collapsible_header_class' => $this->settings['collapsible_header_class'],
- 'title_after' => $this->settings['title_after'],
- 'help_text' => $this->settings['help_text'],
- 'view_file' => $this->view_file,
- 'title' => $this->title,
- 'paper_id' => $this->settings['paper_id'],
- 'paper_id_prefix' => $this->settings['paper_id_prefix'],
- 'yform' => Yoast_Form::get_instance(),
- ];
- return array_merge( $this->settings['view_data'], $view_variables );
- }
- /**
- * Retrieves the collapsible config based on the settings.
- *
- * @return array The config.
- */
- protected function collapsible_config() {
- if ( empty( $this->settings['collapsible'] ) ) {
- return [
- 'toggle_icon' => '',
- 'class' => '',
- 'expanded' => '',
- ];
- }
- if ( ! empty( $this->settings['expanded'] ) ) {
- return [
- 'toggle_icon' => 'dashicons-arrow-up-alt2',
- 'class' => 'toggleable-container',
- 'expanded' => 'true',
- ];
- }
- return [
- 'toggle_icon' => 'dashicons-arrow-down-alt2',
- 'class' => 'toggleable-container toggleable-container-hidden',
- 'expanded' => 'false',
- ];
- }
- }
|