| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- /**
- * WPSEO plugin file.
- *
- * @package WPSEO\Admin
- */
- /**
- * Class WPSEO_presenter_paper
- */
- class WPSEO_Paper_Presenter {
- /**
- * @var string Title of the paper
- */
- private $title;
- /**
- * @var array The view variables.
- */
- private $settings;
- /**
- * @var string The path to the view file.
- */
- private $view_file;
- /**
- * WPSEO_presenter_paper constructor.
- *
- * @param string $title The title of the paper.
- * @param string $view_file The path to the view file.
- * @param array $settings Optional. Settings for the paper.
- */
- public function __construct( $title, $view_file, array $settings = array() ) {
- $defaults = array(
- 'paper_id' => null,
- 'collapsible' => false,
- 'expanded' => false,
- 'help_text' => '',
- 'title_after' => '',
- 'view_data' => array(),
- );
- $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() {
- extract( $this->get_view_variables(), EXTR_SKIP );
- 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 = array(
- 'collapsible' => $this->settings['collapsible'],
- 'collapsible_config' => $this->collapsible_config(),
- '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'],
- '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 array(
- 'toggle_icon' => '',
- 'class' => '',
- 'expanded' => '',
- );
- }
- if ( ! empty( $this->settings['expanded'] ) ) {
- return array(
- 'toggle_icon' => 'dashicons-arrow-up-alt2',
- 'class' => 'toggleable-container',
- 'expanded' => 'true',
- );
- }
- return array(
- 'toggle_icon' => 'dashicons-arrow-down-alt2',
- 'class' => 'toggleable-container toggleable-container-hidden',
- 'expanded' => 'false',
- );
- }
- }
|