formRepository = $formRepository; } /** * Adds Form Preview as dashboard page * * Register Form Preview as an admin page route * * @since 2.8.0 **/ public function add_page() { add_submenu_page('', '', '', 'manage_options', $this->slug); } /** * Conditionally renders Form Preview markup * * If the current page query matches the form preview's slug, method renders the form preview. * * @since 2.8.0 **/ public function setup_form_preview() { if (empty($_GET['page']) || $this->slug !== $_GET['page']) { // WPCS: CSRF ok, input var ok. return; } else { $this->render_page(); } } /** * Renders form preview markup * * Uses an object buffer to display the form preview template * * @since 2.8.0 **/ public function render_page() { $this->register_scripts(); ob_start(); include_once plugin_dir_path(__FILE__) . 'templates/form-preview.php'; exit; } /** * Registers form preview scripts/styles * * @since 2.8.0 **/ protected function register_scripts() { wp_register_style( 'give-styles', (new Give_Scripts)->get_frontend_stylesheet_uri(), [], GIVE_VERSION, 'all' ); EnqueueScript::make('give', 'build/assets/dist/js/give.js' ) ->registerTranslations() ->register(); } /** * Returns the ID of the form used for the form preview * * @since 2.8.0 **/ protected function get_preview_form_id() { return $this->formRepository->getOrMake(); } }