File ManagerCurrent Directory: wp-content/plugins/wpforms/src/Pro/Forms/Fields/PagebreakLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: Frontend.php <?php namespace WPForms\Pro\Forms\Fields\PageBreak; use WPForms\Forms\Fields\Base\Frontend as FrontendBase; /** * Frontend class for the Page Break field. * * @since 1.8.1 */ class Frontend extends FrontendBase { /** * Hooks. * * @since 1.8.1 */ public function hooks() { if ( wpforms_get_render_engine() !== 'modern' ) { return; } add_filter( 'wpforms_frontend_strings', [ $this, 'frontend_strings' ], 10 ); } /** * Field display on the form front-end. * * @since 1.8.1 * * @param array $field Field data and settings. * @param array $form_data Form data and settings. */ public function field_display_modern( $field, $form_data ) { // Top page breaks don't display. if ( ! empty( $field['position'] ) && $field['position'] === 'top' ) { return; } // Setup and sanitize the necessary data. /** This action is documented in pro/includes/fields/class-page-break.php. */ $filtered_field = apply_filters( 'wpforms_pagedivider_field_display', $field, [], $form_data ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName $field = wpforms_list_intersect_key( (array) $filtered_field, $field ); $next = ! empty( $field['next'] ) ? $field['next'] : ''; $prev = ! empty( $field['prev'] ) ? $field['prev'] : ''; if ( ! $this->has_page_button( 'prev', $prev ) && ! $this->has_page_button( 'next', $next ) ) { return; } printf( '<div class="wpforms-clear %s">', sanitize_html_class( $this->get_align_buttons_class() ) ); $this->display_page_button( 'prev', $prev, $form_data ); $this->display_page_button( 'next', $next, $form_data ); echo '</div>'; } /** * Get align buttons class. * * @since 1.8.6 * * @return string */ private function get_align_buttons_class(): string { $frontend_obj = wpforms()->obj( 'frontend' ); $top = ! empty( $frontend_obj->pages['top'] ) ? $frontend_obj->pages['top'] : []; return ! empty( $top['nav_align'] ) ? 'wpforms-pagebreak-' . $top['nav_align'] : 'wpforms-pagebreak-center'; } /** * Display page button. * * @since 1.8.1 * * @param string $action Action, Possible values: `prev` OR `next`. * @param int $caption Button caption. * @param array $form_data Form data and settings. */ private function display_page_button( $action, $caption, $form_data ) { $frontend_obj = wpforms()->obj( 'frontend' ); $current = $frontend_obj->pages['current']; if ( ! $this->has_page_button( $action, $caption ) ) { return; } printf( '<button class="wpforms-page-button wpforms-page-%1$s wpforms-disabled" data-action="%1$s" data-page="%2$d" data-formid="%3$d" aria-disabled="true" aria-describedby="wpforms-error-noscript">%4$s</button>', esc_attr( $action ), (int) $current, (int) $form_data['id'], esc_html( $caption ) ); if ( $action !== 'next' ) { return; } /** This action is documented in includes/class-frontend.php. */ do_action( 'wpforms_display_submit_after', $form_data, 'next' ); // phpcs:ignore WPForms.PHP.ValidateHooks.InvalidHookName } /** * Is a button visible for the page? * * @since 1.8.6 * * @param string $action Prev or next action. * @param string $caption Button caption. * * @return bool */ private function has_page_button( string $action, string $caption ): bool { $frontend_obj = wpforms()->obj( 'frontend' ); $current = $frontend_obj->pages['current']; $total = $frontend_obj->pages['total']; if ( empty( $caption ) ) { return false; } if ( $action === 'prev' && $current <= 1 ) { return false; } return ! ( $action === 'next' && $current >= $total ); } /** * Open page indicator container. * * @since 1.8.1 * * @param array $pagebreak Field data and settings. */ public function open_page_indicator_container( $pagebreak ) { $modern_attributes = ''; if ( wpforms_get_render_engine() === 'modern' ) { $modern_attributes = sprintf( ' role="progressbar" aria-valuenow="1" aria-valuemin="1" aria-valuemax="%d" tabindex="-1"', count( $pagebreak['pages'] ) ); } printf( '<div class="wpforms-page-indicator %1$s" data-indicator="%2$s" data-indicator-color="%3$s" data-scroll="%4$d"%5$s>', esc_attr( $pagebreak['indicator'] ), esc_attr( $pagebreak['indicator'] ), esc_attr( $pagebreak['color'] ), (int) $pagebreak['scroll'], $modern_attributes // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ); } /** * Modify javascript `wpforms_settings` properties on the front end. * * @since 1.8.1 * * @param array $strings Array `wpforms_settings` properties. * * @return array */ public function frontend_strings( $strings ) { $strings['indicatorStepsPattern'] = sprintf( /* translators: %1$s - current step in multi-page form, %2$s - total number of pages. */ esc_html__( 'Step %1$s of %2$s', 'wpforms' ), '{current}', '{total}' ); return $strings; } } Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)DirFrontend.phpFile4.87 KB Rename | Delete | Edit