| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- <?php
- /**
- * Revue Block.
- *
- * @since 8.3.0
- *
- * @package automattic/jetpack
- */
- namespace Automattic\Jetpack\Extensions\Revue;
- use Automattic\Jetpack\Blocks;
- use Jetpack_Gutenberg;
- const FEATURE_NAME = 'revue';
- const BLOCK_NAME = 'jetpack/' . FEATURE_NAME;
- /**
- * Registers the block for use in Gutenberg
- * This is done via an action so that we can disable
- * registration if we need to.
- */
- function register_block() {
- Blocks::jetpack_register_block(
- BLOCK_NAME,
- array( 'render_callback' => __NAMESPACE__ . '\render_block' )
- );
- }
- add_action( 'init', __NAMESPACE__ . '\register_block' );
- /**
- * Revue block render callback.
- *
- * @param array $attributes Array containing the Revue block attributes.
- * @param string $content The Revue block content.
- *
- * @return string
- */
- function render_block( $attributes, $content ) {
- if ( ! array_key_exists( 'revueUsername', $attributes ) ) {
- return '';
- }
- $email_label = get_revue_attribute( 'emailLabel', $attributes );
- $email_placeholder = get_revue_attribute( 'emailPlaceholder', $attributes );
- $first_name_label = get_revue_attribute( 'firstNameLabel', $attributes );
- $first_name_placeholder = get_revue_attribute( 'firstNamePlaceholder', $attributes );
- $first_name_show = get_revue_attribute( 'firstNameShow', $attributes );
- $last_name_label = get_revue_attribute( 'lastNameLabel', $attributes );
- $last_name_placeholder = get_revue_attribute( 'lastNamePlaceholder', $attributes );
- $last_name_show = get_revue_attribute( 'lastNameShow', $attributes );
- $url = sprintf( 'https://www.getrevue.co/profile/%s/add_subscriber', $attributes['revueUsername'] );
- $base_class = Blocks::classes( FEATURE_NAME, array() ) . '__';
- $classes = Blocks::classes( FEATURE_NAME, $attributes );
- Jetpack_Gutenberg::load_assets_as_required( FEATURE_NAME );
- ob_start();
- ?>
- <div class="<?php echo esc_attr( $classes ); ?>">
- <form
- action="<?php echo esc_url( $url ); ?>"
- class="<?php echo esc_attr( $base_class . 'form is-visible' ); ?>"
- method="post"
- name="revue-form"
- target="_blank"
- >
- <div>
- <label>
- <?php echo esc_html( $email_label ); ?>
- <span class="required"><?php esc_html_e( '(required)', 'jetpack' ); ?></span>
- <input
- class="<?php echo esc_attr( $base_class . 'email' ); ?>"
- name="member[email]"
- placeholder="<?php echo esc_attr( $email_placeholder ); ?>"
- required
- type="email"
- />
- </label>
- </div>
- <?php if ( $first_name_show ) : ?>
- <div>
- <label>
- <?php echo esc_html( $first_name_label ); ?>
- <input
- class="<?php echo esc_attr( $base_class . 'first-name' ); ?>"
- name="member[first_name]"
- placeholder="<?php echo esc_attr( $first_name_placeholder ); ?>"
- type="text"
- />
- </label>
- </div>
- <?php
- endif;
- if ( $last_name_show ) :
- ?>
- <div>
- <label>
- <?php echo esc_html( $last_name_label ); ?>
- <input
- class="<?php echo esc_attr( $base_class . 'last-name' ); ?>"
- name="member[last_name]"
- placeholder="<?php echo esc_attr( $last_name_placeholder ); ?>"
- type="text"
- />
- </label>
- </div>
- <?php
- endif;
- // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
- if ( false !== strpos( $content, 'wp-block-jetpack-revue__fallback' ) ) {
- echo $content;
- } else {
- echo get_deprecated_v1_revue_button( $attributes );
- }
- // phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped
- ?>
- </form>
- <div class="<?php echo esc_attr( $base_class . 'message' ); ?>">
- <p>
- <strong><?php esc_html_e( 'Subscription received!', 'jetpack' ); ?></strong>
- </p>
- <p>
- <?php esc_html_e( 'Please check your email to confirm your newsletter subscription.', 'jetpack' ); ?>
- </p>
- </div>
- </div>
- <?php
- return ob_get_clean();
- }
- /**
- * Get Revue block attribute.
- *
- * @param string $attribute String containing the attribute name to get.
- * @param array $attributes Array containing the Revue block attributes.
- *
- * @return mixed
- */
- function get_revue_attribute( $attribute, $attributes ) {
- if ( array_key_exists( $attribute, $attributes ) ) {
- return $attributes[ $attribute ];
- }
- $default_attributes = array(
- 'text' => __( 'Subscribe', 'jetpack' ),
- 'emailLabel' => __( 'Email address', 'jetpack' ),
- 'emailPlaceholder' => __( 'Enter your email address', 'jetpack' ),
- 'firstNameLabel' => __( 'First name', 'jetpack' ),
- 'firstNamePlaceholder' => __( 'Enter your first name', 'jetpack' ),
- 'firstNameShow' => true,
- 'lastNameLabel' => __( 'Last name', 'jetpack' ),
- 'lastNamePlaceholder' => __( 'Enter your last name', 'jetpack' ),
- 'lastNameShow' => true,
- );
- if ( array_key_exists( $attribute, $default_attributes ) ) {
- return $default_attributes[ $attribute ];
- }
- }
- /**
- * DEPRECATED V1
- */
- /**
- * Create the Revue subscribe button.
- *
- * @param array $attributes Array containing the Revue block attributes.
- *
- * @return string
- */
- function get_deprecated_v1_revue_button( $attributes ) {
- $classes = array( 'wp-block-button__link' );
- $styles = array();
- $text = get_revue_attribute( 'text', $attributes );
- $has_class_name = array_key_exists( 'className', $attributes );
- $has_named_text_color = array_key_exists( 'textColor', $attributes );
- $has_custom_text_color = array_key_exists( 'customTextColor', $attributes );
- $has_named_background_color = array_key_exists( 'backgroundColor', $attributes );
- $has_custom_background_color = array_key_exists( 'customBackgroundColor', $attributes );
- $has_named_gradient = array_key_exists( 'gradient', $attributes );
- $has_custom_gradient = array_key_exists( 'customGradient', $attributes );
- $has_border_radius = array_key_exists( 'borderRadius', $attributes );
- if ( $has_class_name ) {
- $classes[] = $attributes['className'];
- }
- if ( $has_named_text_color || $has_custom_text_color ) {
- $classes[] = 'has-text-color';
- }
- if ( $has_named_text_color ) {
- $classes[] = sprintf( 'has-%s-color', $attributes['textColor'] );
- } elseif ( $has_custom_text_color ) {
- $styles[] = sprintf( 'color: %s;', $attributes['customTextColor'] );
- }
- if (
- $has_named_background_color ||
- $has_custom_background_color ||
- $has_named_gradient ||
- $has_custom_gradient
- ) {
- $classes[] = 'has-background';
- }
- if ( $has_named_background_color && ! $has_custom_gradient ) {
- $classes[] = sprintf( 'has-%s-background-color', $attributes['backgroundColor'] );
- }
- if ( $has_named_gradient ) {
- $classes[] = sprintf( 'has-%s-gradient-background', $attributes['gradient'] );
- } elseif ( $has_custom_gradient ) {
- $styles[] = sprintf( 'background: %s;', $attributes['customGradient'] );
- }
- if (
- $has_custom_background_color &&
- ! $has_named_background_color &&
- ! $has_named_gradient &&
- ! $has_custom_gradient
- ) {
- $styles[] = sprintf( 'background-color: %s;', $attributes['customBackgroundColor'] );
- }
- if ( $has_border_radius ) {
- // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
- if ( 0 == $attributes['borderRadius'] ) {
- $classes[] = 'no-border-radius';
- } else {
- $styles[] = sprintf( 'border-radius: %spx;', $attributes['borderRadius'] );
- }
- }
- ob_start();
- ?>
- <div class="wp-block-button">
- <button
- class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"
- name="member[subscribe]"
- style="<?php echo esc_attr( implode( ' ', $styles ) ); ?>"
- type="submit"
- >
- <?php echo wp_kses_post( $text ); ?>
- </button>
- </div>
- <?php
- return ob_get_clean();
- }
|