PluginProbe
SureDonation – Donation Forms, Fundraising Campaigns & Donor Management / 1.1.0
SureDonation – Donation Forms, Fundraising Campaigns & Donor Management v1.1.0
1.6.1 1.6.0 1.5.1 1.5.0 1.4.0 1.3.0 trunk 0.0.1 1.0.0 1.1.0 1.1.1 1.1.2 1.2.0
← All changes | inc/shortcodes/donation-form.php +25 -68 0.0.1 → 1.1.0 View file →
@@ -9,8 +9,9 @@
9 9 */
10 10
11 11 namespace SureDonation\Inc\Shortcodes;
12 12
13 +use SureDonation\Inc\Fields\Form_Renderer;
13 14 use SureDonation\Inc\Helper;
14 15 use SureDonation\Inc\Post_Types\Donation_Form as Donation_Form_CPT;
15 16 use SureDonation\Inc\Traits\Get_Instance;
16 17
@@ -75,9 +76,9 @@
75 76 return '';
76 77 }
77 78
78 79 // Enqueue frontend assets.
79 - $this->enqueue_assets();
80 + $this->enqueue_assets( $form_id, $form );
80 81
81 82 // Render the form.
82 83 return $this->render_form( $form );
83 84 }
@@ -89,93 +90,49 @@
89 90 * @return string Form HTML.
90 91 * @since 0.0.1
91 92 */
92 93 private function render_form( $form ) {
93 - $form_id = $form->ID;
94 - $campaign_id = Donation_Form_CPT::get_form_campaign_id( $form_id );
94 + $campaign_id = Donation_Form_CPT::get_form_campaign_id( $form->ID );
95 95
96 - // Parse the form content (blocks).
97 - $blocks = parse_blocks( $form->post_content );
98 -
99 - // Render blocks.
100 - $blocks_html = '';
101 - foreach ( $blocks as $block ) {
102 - if ( ! empty( $block['blockName'] ) ) {
103 - // Add form ID to block attributes.
104 - $block['attrs']['formId'] = $form_id;
105 - $blocks_html .= render_block( $block );
106 - }
107 - }
108 -
109 - // Generate unique form ID for the container.
110 - $unique_form_id = 'suredonation-form-' . $form_id . '-' . wp_rand();
111 -
112 - // Nonce action based on campaign.
113 - $nonce_action = $campaign_id ? 'suredonation_donation_' . $campaign_id : 'suredonation_donation_standalone';
114 -
115 - ob_start();
116 - ?>
117 - <div id="<?php echo esc_attr( $unique_form_id ); ?>" class="sd-form-container" data-form-id="<?php echo esc_attr( (string) $form_id ); ?>" data-campaign-id="<?php echo esc_attr( (string) $campaign_id ); ?>">
118 - <form class="sd-form" method="post">
119 - <?php wp_nonce_field( $nonce_action, 'suredonation_nonce' ); ?>
120 - <input type="hidden" name="form_id" value="<?php echo esc_attr( (string) $form_id ); ?>" />
121 - <input type="hidden" name="campaign_id" value="<?php echo esc_attr( (string) $campaign_id ); ?>" />
122 - <input type="hidden" name="action" value="suredonation_submit_donation" />
123 -
124 - <?php
125 - echo wp_kses( $blocks_html, Helper::get_allowed_form_html() );
126 - ?>
127 - </form>
128 -
129 - <!-- Success message container (hidden by default, shown after successful donation) -->
130 - <div class="sd-success-box" style="display: none;">
131 - <div class="sd-success-box-description"></div>
132 - </div>
133 - </div>
134 - <?php
135 - return (string) ob_get_clean();
96 + // Shared markup (also used by the donation-form block).
97 + return Form_Renderer::render( $form, $campaign_id );
136 98 }
137 99
138 100 /**
139 101 * Enqueue frontend assets.
140 102 *
103 + * @param int $form_id Form post ID.
104 + * @param \WP_Post $form Form post object.
141 105 * @return void
142 106 * @since 0.0.1
143 107 */
144 - private function enqueue_assets() {
145 - // Enqueue frontend styles.
146 - wp_enqueue_style(
147 - 'suredonation-form',
148 - SUREDONATION_URL . 'assets/css/form.css',
149 - [],
150 - SUREDONATION_VER
151 - );
108 + private function enqueue_assets( $form_id, $form ) {
109 + // Enqueue the shared compiled frontend stylesheet (same handle the block uses).
110 + wp_enqueue_style( 'suredonation-donation-form' );
152 111
153 - // Enqueue frontend scripts.
154 - wp_enqueue_script(
155 - 'suredonation-form',
156 - SUREDONATION_URL . 'assets/build/form-frontend.js',
157 - [],
158 - SUREDONATION_VER,
159 - true
160 - );
112 + // Enqueue frontend script (registered globally in Assets\Register).
113 + wp_enqueue_script( 'suredonation-form-frontend' );
161 114
162 115 // Localize script with payment and success message configuration.
163 116 wp_localize_script(
164 - 'suredonation-form',
117 + 'suredonation-form-frontend',
165 118 'suredonationPayment',
166 - [
167 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
168 - 'nonce' => wp_create_nonce( 'suredonation_payment_nonce' ),
169 - 'confirmationType' => 'message', // Default to showing message. Could be 'redirect' in future.
170 - 'redirectUrl' => '',
171 - 'successTitle' => __( 'Thank You!', 'suredonation' ),
172 - 'successMessage' => __( 'Your donation has been processed successfully. A confirmation email will be sent to you shortly.', 'suredonation' ),
173 - ]
119 + Helper::get_form_payment_settings( $form_id )
174 120 );
175 121
122 + // Expose the resolved validation messages so client-side validation
123 + // mirrors the server's configured messages (matches the block render).
124 + wp_localize_script(
125 + 'suredonation-form-frontend',
126 + 'suredonationValidationMessages',
127 + \SureDonation\Inc\Field_Validation::get_resolved_validation_messages()
128 + );
129 +
176 130 // Enqueue Stripe.js if Stripe is configured.
177 131 $this->maybe_enqueue_stripe();
132 +
133 + // Allow payment gateway extensions to enqueue their scripts (e.g., PayPal SDK).
134 + do_action( 'suredonation_enqueue_form_frontend_scripts', $form_id, $form->post_content );
178 135 }
179 136
180 137 /**
181 138 * Enqueue Stripe.js if Stripe is configured.