PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.4
GiveWP – Donation Plugin and Fundraising Platform v3.0.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / class-give-scripts.php
give / includes Last commit date
admin 2 years ago api 3 years ago database 5 years ago deprecated 3 years ago donors 2 years ago emails 3 years ago forms 2 years ago frontend 6 years ago gateways 2 years ago libraries 2 years ago payments 2 years ago actions.php 5 years ago ajax-functions.php 2 years ago class-give-async-process.php 2 years ago class-give-background-updater.php 2 years ago class-give-cache-setting.php 2 years ago class-give-cache.php 3 years ago class-give-cli-commands.php 3 years ago class-give-comment.php 6 years ago class-give-cron.php 6 years ago class-give-donate-form.php 4 years ago class-give-donor.php 3 years ago class-give-email-access.php 5 years ago class-give-license-handler.php 4 years ago class-give-logging.php 5 years ago class-give-readme-parser.php 4 years ago class-give-roles.php 6 years ago class-give-scripts.php 3 years ago class-give-session.php 5 years ago class-give-stats.php 6 years ago class-give-template-loader.php 6 years ago class-give-tooltips.php 6 years ago class-give-translation.php 4 years ago class-notices.php 2 years ago country-functions.php 5 years ago currencies-list.php 3 years ago currency-functions.php 3 years ago error-tracking.php 6 years ago filters.php 3 years ago formatting.php 2 years ago install.php 2 years ago login-register.php 4 years ago misc-functions.php 2 years ago plugin-compatibility.php 6 years ago post-types.php 5 years ago price-functions.php 6 years ago process-donation.php 4 years ago setting-functions.php 6 years ago shortcodes.php 2 years ago template-functions.php 4 years ago user-functions.php 3 years ago
class-give-scripts.php
627 lines
1 <?php
2
3 use Give\Helpers\EnqueueScript;
4
5 /**
6 * Loads the plugin's scripts and styles.
7 *
8 * Registers and enqueues plugin styles and scripts. Asset versions are based
9 * on the current plugin version.
10 *
11 * All script and style handles should be registered in this class even if they
12 * are enqueued dynamically by other classes.
13 *
14 * @since 2.1.0
15 */
16 class Give_Scripts {
17
18 /**
19 * Whether RTL or not.
20 *
21 * @since 2.1.0
22 * @var string
23 * @access private
24 */
25 private $direction;
26
27 /**
28 * Whether scripts should be loaded in the footer or not.
29 *
30 * @since 2.1.0
31 * @var bool
32 * @access private
33 */
34 private static $scripts_footer;
35
36 /**
37 * Instantiates the Assets class.
38 *
39 * @since 2.1.0
40 */
41 public function __construct() {
42 $this->direction = ( is_rtl() || isset( $_GET['d'] ) && 'rtl' === $_GET['d'] ) ? '.rtl' : '';
43 self::$scripts_footer = give_is_setting_enabled( give_get_option( 'scripts_footer' ) ) ? true : false;
44 $this->init();
45 }
46
47 /**
48 * Fires off hooks to register assets in WordPress.
49 *
50 * @since 2.1.0
51 */
52 public function init() {
53
54 add_action( 'admin_enqueue_scripts', [ $this, 'register_styles' ] );
55 add_action( 'admin_enqueue_scripts', [ $this, 'register_scripts' ] );
56 add_action( 'wp_enqueue_scripts', [ $this, 'register_styles' ] );
57 add_action( 'wp_enqueue_scripts', [ $this, 'register_scripts' ] );
58
59 if ( is_admin() ) {
60 add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
61 add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_styles' ] );
62 add_action( 'enqueue_block_editor_assets', [ $this, 'gutenberg_admin_scripts' ] );
63 add_action( 'admin_head', [ $this, 'global_admin_head' ] );
64
65 } else {
66 add_action( 'wp_enqueue_scripts', [ $this, 'public_enqueue_styles' ] );
67 add_action( 'wp_enqueue_scripts', [ $this, 'public_enqueue_scripts' ] );
68 }
69 }
70
71 /**
72 * Register plugin script.
73 *
74 * @since 2.5.0
75 * @access public
76 *
77 * @param string $handle Script Handle.
78 * @param string $src Script Source URL.
79 * @param array $dep Dependency on a script.
80 * @param mixed $ver Script Version
81 */
82 public static function register_script( $handle, $src, $dep = [], $ver = false ) {
83 wp_register_script( $handle, $src, $dep, $ver, self::$scripts_footer );
84 }
85
86 /**
87 * Registers all plugin styles.
88 *
89 * @since 2.1.0
90 */
91 public function register_styles() {
92
93 // Global WP-admin.
94 wp_register_style( 'give-admin-global-styles', GIVE_PLUGIN_URL . 'assets/dist/css/admin-global' . $this->direction . '.css', [], GIVE_VERSION );
95
96 // GiveWP-only WP-admin.
97 wp_register_style( 'give-admin-styles', GIVE_PLUGIN_URL . 'assets/dist/css/admin' . $this->direction . '.css', [], GIVE_VERSION );
98
99 // WP-admin: plugin page.
100 wp_register_style(
101 'plugin-deactivation-survey-css',
102 GIVE_PLUGIN_URL . 'assets/dist/css/plugin-deactivation-survey.css',
103 [],
104 GIVE_VERSION
105 );
106
107 // Frontend.
108 if ( give_is_setting_enabled( give_get_option( 'css' ) ) ) {
109 wp_register_style( 'give-styles', $this->get_frontend_stylesheet_uri(), [], GIVE_VERSION, 'all' );
110 }
111 }
112
113 /**
114 * Registers all plugin scripts.
115 *
116 * @since 2.1.0
117 */
118 public function register_scripts() {
119 // WP-Admin.
120 EnqueueScript::make(
121 'give-admin-scripts',
122 'assets/dist/js/admin.js'
123 )
124 ->dependencies(
125 [
126 'jquery',
127 'jquery-ui-datepicker',
128 'wp-color-picker',
129 'jquery-query',
130 ]
131 )
132 ->registerTranslations()
133 ->register();
134
135 // WP-admin: plugin page.
136 wp_register_script(
137 'plugin-deactivation-survey-js',
138 GIVE_PLUGIN_URL . 'assets/dist/js/plugin-deactivation-survey.js',
139 [ 'jquery' ],
140 GIVE_VERSION,
141 true
142 );
143
144 // WP-admin: add-ons page.
145 wp_register_script(
146 'admin-add-ons-js',
147 GIVE_PLUGIN_URL . 'assets/dist/js/admin-add-ons.js',
148 [ 'jquery' ],
149 GIVE_VERSION,
150 true
151 );
152
153 // Frontend.
154 $giveScript = EnqueueScript::make('give', 'assets/dist/js/give.js')
155 ->registerTranslations();
156
157 if (self::$scripts_footer) {
158 $giveScript->loadInFooter();
159 }
160
161 $giveScript->register();
162 }
163
164 /**
165 * Enqueues admin styles.
166 *
167 * @since 2.1.0
168 *
169 * @param string $hook Page hook.
170 */
171 public function admin_enqueue_styles( $hook ) {
172
173 // Global admin styles
174 wp_enqueue_style( 'give-admin-global-styles' );
175
176 // Give Admin Only.
177 if ( ! apply_filters( 'give_load_admin_styles', give_is_admin_page(), $hook ) ) {
178 return;
179 }
180
181 // Give enqueues.
182 wp_enqueue_style( 'give-admin-styles' );
183 wp_enqueue_style( 'give-admin-bar-notification' );
184
185 // WP Core enqueues.
186 wp_enqueue_style( 'wp-color-picker' );
187 wp_enqueue_style( 'thickbox' ); // @TODO remove once we have modal API.
188
189 }
190
191 /**
192 * Enqueues admin scripts.
193 *
194 * @since 2.1.0
195 *
196 * @param string $hook Page hook.
197 */
198 public function admin_enqueue_scripts( $hook ) {
199 global $pagenow;
200
201 // Plugin page script
202 if ( 'plugins.php' === $pagenow ) {
203 $this->plugin_enqueue_scripts();
204 }
205
206 // Give Admin Only.
207 if ( ! apply_filters( 'give_load_admin_scripts', give_is_admin_page(), $hook ) ) {
208 return;
209 }
210
211 // WP Scripts.
212 wp_enqueue_script( 'wp-color-picker' );
213 wp_enqueue_script( 'jquery-ui-datepicker' );
214 wp_enqueue_script( 'thickbox' );
215 wp_enqueue_media();
216
217 // Give admin scripts.
218 wp_enqueue_script( 'give-admin-scripts' );
219
220 // Localize admin scripts
221 $this->admin_localize_scripts();
222
223 if ( Give_Admin_Settings::is_setting_page( 'licenses' ) ) {
224 wp_enqueue_script( 'admin-add-ons-js' );
225 $localized_data = [
226 'notices' => [
227 'invalid_license' => __( 'Sorry, you entered an invalid key.', 'give' ),
228 'download_file' => __( 'Success! You have activated your license key and are receiving updates and priority support. <a href="{link}">Click here</a> to download your add-on.', 'give' ),
229 'addon_activated' => __( '{pluginName} add-on activated successfully.', 'give' ),
230 'addon_activation_error' => __( 'The add-on did not activate successfully.', 'give' ),
231 ],
232 ];
233
234 wp_localize_script( 'admin-add-ons-js', 'give_addon_var', $localized_data );
235 }
236 }
237
238 /**
239 * Load admin plugin page related scripts, styles and localize param.
240 *
241 * @since 2.2.0
242 * @access private
243 */
244 private function plugin_enqueue_scripts() {
245 wp_enqueue_style( 'plugin-deactivation-survey-css' );
246 wp_enqueue_script( 'plugin-deactivation-survey-js' );
247
248 $localized_data = [
249 'nonce' => wp_create_nonce( 'deactivation_survey_nonce' ),
250 'cancel' => __( 'Cancel', 'give' ),
251 'deactivation_no_option_selected' => __( 'Error: Please select at least one option.', 'give' ),
252 'submit_and_deactivate' => __( 'Submit and Deactivate', 'give' ),
253 'skip_and_deactivate' => __( 'Skip and Deactivate', 'give' ),
254 'please_fill_field' => __( 'Error: Please complete the required field.', 'give' ),
255
256 ];
257
258 wp_localize_script( 'plugin-deactivation-survey-js', 'give_vars', $localized_data );
259 }
260
261 /**
262 * Localize admin scripts.
263 *
264 * @since 2.25.3 Add nonce for payment note AJAX requests.
265 */
266 public function admin_localize_scripts() {
267
268 global $post;
269
270 $give_options = give_get_settings();
271
272 // Price Separators.
273 $thousand_separator = give_get_price_thousand_separator();
274 $decimal_separator = give_get_price_decimal_separator();
275 $number_decimals = give_get_price_decimals();
276
277 // Localize strings & variables for JS.
278 $localized_data = [
279 'post_id' => isset( $post->ID ) ? $post->ID : null,
280 'give_version' => GIVE_VERSION,
281 'thousands_separator' => $thousand_separator,
282 'decimal_separator' => $decimal_separator,
283 'number_decimals' => $number_decimals,
284 // Use this for number of decimals instead of `currency_decimals`.
285 'currency_decimals' => $number_decimals,
286 // If you find usage of this variable then replace it with `number_decimals`.
287 'currency_sign' => give_currency_filter( '' ),
288 'currency_pos' => isset( $give_options['currency_position'] ) ? $give_options['currency_position'] : 'before',
289 'quick_edit_warning' => __( 'Not available for variable priced forms.', 'give' ),
290 'delete_payment' => __( 'Are you sure you want to <strong>permanently</strong> delete this donation?', 'give' ),
291 'delete_payment_note' => __( 'Are you sure you want to delete this note?', 'give' ),
292 'revoke_api_key' => __( 'Are you sure you want to revoke this API key?', 'give' ),
293 'regenerate_api_key' => __( 'Are you sure you want to regenerate this API key?', 'give' ),
294 'resend_receipt' => __( 'Are you sure you want to resend the donation receipt?', 'give' ),
295 'disconnect_user' => __( 'Are you sure you want to disconnect the user from this donor?', 'give' ),
296 'one_option' => __( 'Choose a form', 'give' ),
297 'one_or_more_option' => __( 'Choose one or more forms', 'give' ),
298 'ok' => __( 'Ok', 'give' ),
299 'activate' => __( 'Activate', 'give' ),
300 'deactivate' => __( 'Deactivate', 'give' ),
301 'cancel' => __( 'Cancel', 'give' ),
302 'success' => __( 'Success', 'give' ),
303 'error' => __( 'Error', 'give' ),
304 'close' => __( 'Close', 'give' ),
305 'confirm' => __( 'Confirm', 'give' ),
306 'copied' => __( 'Copied!', 'give' ),
307 'shortcode_not_copy' => __( 'Shortcode could not be copied.', 'give' ),
308 'confirm_action' => __( 'Confirm Action', 'give' ),
309 'confirm_deletion' => __( 'Confirm Deletion', 'give' ),
310 'confirm_delete_donation' => __( 'Confirm Delete Donation', 'give' ),
311 'confirm_resend' => __( 'Confirm re-send', 'give' ),
312 'confirm_bulk_action' => __( 'Confirm bulk action', 'give' ),
313 'restart_upgrade' => __( 'Do you want to restart the update process?', 'give' ),
314 'restart_update' => __( 'It is recommended that you backup your database before proceeding. Do you want to run the update now?', 'give' ),
315 'stop_upgrade' => __( 'Do you want to stop the update process now?', 'give' ),
316 'import_failed' => __( 'Import failed', 'give' ),
317 'flush_success' => __( 'Flush success', 'give' ),
318 'flush_error' => __( 'Flush error', 'give' ),
319 'no_form_selected' => __( 'No form selected', 'give' ),
320 'batch_export_no_class' => __( 'You must choose a method.', 'give' ),
321 'batch_export_no_reqs' => __( 'Required fields not completed.', 'give' ),
322 'reset_stats_warn' => __( 'Are you sure you want to reset Give? This process is <strong><em>not reversible</em></strong> and will delete all data regardless of test or live mode. Please be sure you have a recent backup before proceeding.', 'give' ),
323 'delete_test_donor' => __( 'Are you sure you want to delete all the test donors? This process will also delete test donations as well.', 'give' ),
324 'delete_import_donor' => __( 'Are you sure you want to delete all the imported donors? This process will also delete imported donations as well.', 'give' ),
325 'delete_donations_only' => __( 'Are you sure you want to delete all the donations in the specfied date range?', 'give' ),
326 'price_format_guide' => sprintf( __( 'Please enter amount in monetary decimal ( %1$s ) format without thousand separator ( %2$s ) .', 'give' ), $decimal_separator, $thousand_separator ),
327 /* translators : %s: Donation form options metabox */
328 'confirm_before_remove_row_text' => __( 'Do you want to delete this item?', 'give' ),
329 'matched_success_failure_page' => __( 'You cannot set the success and failed pages to the same page', 'give' ),
330 'dismiss_notice_text' => __( 'Dismiss this notice.', 'give' ),
331 'search_placeholder' => __( 'Type to search all forms', 'give' ),
332 'search_placeholder_donor' => __( 'Type to search all donors', 'give' ),
333 'search_placeholder_country' => __( 'Type to search all countries', 'give' ),
334 'search_placeholder_state' => __( 'Type to search all states/provinces', 'give' ),
335 'unlock_donor_fields_title' => __( 'Action forbidden', 'give' ),
336 'unlock_donor_fields_message' => __( 'To edit first name and last name, please go to the user profile of the donor.', 'give' ),
337 'remove_from_bulk_delete' => __( 'Remove from Bulk Delete', 'give' ),
338 'form_template_required' => [
339 'title' => __( 'Select Form Template', 'give' ),
340 'desc' => __( 'Please activate a "Form Template" to save the donation form. Select a template by clicking on the "Form Template" tab and "Activate".', 'give' ),
341 ],
342 'donors_bulk_action' => [
343 'no_donor_selected' => [
344 'title' => __( 'No donors selected', 'give' ),
345 'desc' => __( 'You must choose at least one or more donors to delete.', 'give' ),
346 ],
347 'no_action_selected' => [
348 'title' => __( 'No action selected', 'give' ),
349 'desc' => __( 'You must select a bulk action to proceed.', 'give' ),
350 ],
351 ],
352 'donations_bulk_action' => [
353 'titles' => [
354 'zero' => __( 'No payments selected', 'give' ),
355 ],
356 'delete' => [
357 'zero' => __( 'You must choose at least one or more donations to delete.', 'give' ),
358 'single' => __( 'Are you sure you want to permanently delete this donation?', 'give' ),
359 'multiple' => __( 'Are you sure you want to permanently delete the selected {payment_count} donations?', 'give' ),
360 ],
361 'resend-receipt' => [
362 'zero' => __( 'You must choose at least one or more recipients to resend the email receipt.', 'give' ),
363 'single' => __( 'Are you sure you want to resend the email receipt to this recipient?', 'give' ),
364 'multiple' => __( 'Are you sure you want to resend the emails receipt to {payment_count} recipients?', 'give' ),
365 ],
366 'set-to-status' => [
367 'zero' => __( 'You must choose at least one or more donations to set status to {status}.', 'give' ),
368 'single' => __( 'Are you sure you want to set status of this donation to {status}?', 'give' ),
369 'multiple' => __( 'Are you sure you want to set status of {payment_count} donations to {status}?', 'give' ),
370 ],
371 ],
372 'updates' => [
373 'ajax_error' => __( 'Please reload this page and try again', 'give' ),
374 ],
375 'metabox_fields' => [
376 'media' => [
377 'button_title' => __( 'Choose Image', 'give' ),
378 ],
379 'file' => [
380 'button_title' => __( 'Choose File', 'give' ),
381 ],
382 ],
383 'chosen' => [
384 'no_results_msg' => __( 'No results match {search_term}', 'give' ),
385 'ajax_search_msg' => __( 'Searching results for match {search_term}', 'give' ),
386 ],
387 'db_update_confirmation_msg_button' => __( 'Run Updates', 'give' ),
388 'db_update_confirmation_msg' => __( 'The following process will make updates to your site\'s database. Please create a database backup before proceeding with updates.', 'give' ),
389 'error_message' => __( 'Something went wrong kindly try again!', 'give' ),
390 'give_donation_import' => 'give_donation_import',
391 'give_donation_import_nonce' => wp_create_nonce('give_donation_import'),
392 'core_settings_import' => 'give_core_settings_import',
393 'give_insert_payment_note_nonce' => wp_create_nonce('give_insert_payment_note'),
394 'give_delete_payment_note_nonce' => wp_create_nonce('give_delete_payment_note'),
395 'setting_not_save_message' => __( 'Changes you made may not be saved.', 'give' ),
396 'give_donation_amounts' => [
397 'minimum' => apply_filters( 'give_donation_minimum_limit', 1 ),
398 'maximum' => apply_filters( 'give_donation_maximum_limit', 999999.99 ),
399 ],
400 'chosen_add_title_prefix' => __( 'No result found. Press enter to add', 'give' ),
401 'db_update_nonce' => wp_create_nonce( Give_Updates::$background_updater->get_identifier() ),
402 'ajax' => give_test_ajax_works(),
403 'donor_note_confirm_msg' => __( 'Please confirm you would like to add a donor note. An email notification will be sent to the donor with the note. If you do not want to notify the donor you may add a private note or disable the donor note email.', 'give' ),
404 'email_notification' => [
405 'donor_note' => [
406 'status' => Give_Email_Notification_Util::is_email_notification_active( Give_Email_Notification::get_instance( 'donor-note' ) ),
407 ],
408 ],
409 'loader_translation' => [
410 'updating' => __( 'Updating...', 'give' ),
411 'loading' => __( 'Loading...', 'give' ),
412 'uploading' => __( 'Uploading...', 'give' ),
413 'processing' => __( 'Processing...', 'give' ),
414 'activating' => __( 'Activating...', 'give' ),
415 ],
416 ];
417
418 wp_localize_script( 'give-admin-scripts', 'give_vars', $localized_data );
419 }
420
421 /**
422 * Global admin head.
423 */
424 public function global_admin_head() {
425 ?>
426 <style type="text/css" media="screen">
427 @font-face {
428 font-family: 'give-icomoon';
429 src: url('<?php echo GIVE_PLUGIN_URL . 'assets/dist/fonts/icomoon.eot?ngjl88'; ?>');
430 src: url('<?php echo GIVE_PLUGIN_URL . 'assets/dist/fonts/icomoon.eot?#iefixngjl88'; ?>') format('embedded-opentype'),
431 url('<?php echo GIVE_PLUGIN_URL . 'assets/dist/fonts/icomoon.woff?ngjl88'; ?>') format('woff'),
432 url('<?php echo GIVE_PLUGIN_URL . 'assets/dist/fonts/icomoon.svg?ngjl88#icomoon'; ?>') format('svg');
433 font-weight: normal;
434 font-style: normal;
435 }
436
437 .dashicons-give:before, #adminmenu div.wp-menu-image.dashicons-give:before {
438 font-family: 'give-icomoon';
439 font-size: 18px;
440 width: 18px;
441 height: 18px;
442 content: "\e800";
443 padding-top: 8px;
444 }
445 </style>
446 <?php
447
448 }
449
450 /**
451 * Enqueues public styles.
452 *
453 * @since 2.1.0
454 */
455 public function public_enqueue_styles() {
456 wp_enqueue_style( 'give-styles' );
457 }
458
459
460 /**
461 * Enqueues public scripts.
462 *
463 * @since 2.1.0
464 */
465 public function public_enqueue_scripts() {
466 wp_enqueue_script( 'give' );
467
468 $this->public_localize_scripts();
469 }
470
471 /**
472 * Localize / PHP to AJAX vars.
473 */
474 public function public_localize_scripts() {
475
476 /**
477 * Filter to modify access mail send notice
478 *
479 * @since 2.1.3
480 *
481 * @param string Send notice message for email access.
482 *
483 * @return string $message Send notice message for email access.
484 */
485 $message = (string) apply_filters( 'give_email_access_mail_send_notice', __( 'Please check your email and click on the link to access your complete donation history.', 'give' ) );
486
487 $localize_give_vars = apply_filters(
488 'give_global_script_vars',
489 [
490 'ajaxurl' => give_get_ajax_url(),
491 'checkout_nonce' => wp_create_nonce( 'give_checkout_nonce' ),
492 // Do not use this nonce. Its deprecated.
493 'currency' => give_get_currency(),
494 'currency_sign' => give_currency_filter( '' ),
495 'currency_pos' => give_get_currency_position(),
496 'thousands_separator' => give_get_price_thousand_separator(),
497 'decimal_separator' => give_get_price_decimal_separator(),
498 'no_gateway' => __( 'Please select a payment method.', 'give' ),
499 'bad_minimum' => __( 'The minimum custom donation amount for this form is', 'give' ),
500 'bad_maximum' => __( 'The maximum custom donation amount for this form is', 'give' ),
501 'general_loading' => __( 'Loading...', 'give' ),
502 'purchase_loading' => __( 'Please Wait...', 'give' ),
503 'textForOverlayScreen' => sprintf( '<h3>%1$s</h3><p>%2$s</p>', esc_html__( 'Processing...', 'give' ), esc_html__( 'This will only take a second!', 'give' ) ),
504 'number_decimals' => give_get_price_decimals(),
505 'is_test_mode' => give_is_test_mode(),
506 'give_version' => GIVE_VERSION,
507 'magnific_options' => apply_filters(
508 'give_magnific_options',
509 [
510 'main_class' => 'give-modal',
511 'close_on_bg_click' => false,
512 ]
513 ),
514 'form_translation' => apply_filters(
515 'give_form_translation_js',
516 [
517 // Field name Validation message.
518 'payment-mode' => __( 'Please select payment mode.', 'give' ),
519 'give_first' => __( 'Please enter your first name.', 'give' ),
520 'give_last' => __( 'Please enter your last name.', 'give' ),
521 'give_email' => __( 'Please enter a valid email address.', 'give' ),
522 'give_user_login' => __( 'Invalid email address or username.', 'give' ),
523 'give_user_pass' => __( 'Enter a password.', 'give' ),
524 'give_user_pass_confirm' => __( 'Enter the password confirmation.', 'give' ),
525 'give_agree_to_terms' => __( 'You must agree to the terms and conditions.', 'give' ),
526 ]
527 ),
528 'confirm_email_sent_message' => $message,
529 'ajax_vars' => apply_filters(
530 'give_global_ajax_vars',
531 [
532 'ajaxurl' => give_get_ajax_url(),
533 'ajaxNonce' => wp_create_nonce( 'give_ajax_nonce' ),
534 'loading' => __( 'Loading', 'give' ),
535 // General loading message.
536 'select_option' => __( 'Please select an option', 'give' ),
537 // Variable pricing error with multi-donation option enabled.
538 'default_gateway' => give_get_default_gateway( null ),
539 'permalinks' => get_option( 'permalink_structure' ) ? '1' : '0',
540 'number_decimals' => give_get_price_decimals(),
541 ]
542 ),
543 'cookie_hash' => COOKIEHASH,
544 'session_nonce_cookie_name' => Give()->session->get_cookie_name( 'nonce' ),
545 'session_cookie_name' => Give()->session->get_cookie_name( 'session' ),
546 'delete_session_nonce_cookie' => absint( Give()->session->is_delete_nonce_cookie() ),
547 ]
548 );
549
550 wp_localize_script( 'give', 'give_global_vars', $localize_give_vars );
551 }
552
553 /**
554 * Get the stylesheet URI.
555 *
556 * @since 1.6
557 * @updated 2.0.1 Moved to class and renamed as method.
558 *
559 * @return string
560 */
561 public function get_frontend_stylesheet_uri() {
562
563 $file = 'give' . $this->direction . '.css';
564 $templates_dir = give_get_theme_template_dir_name();
565
566 // Directory paths to CSS files to support checking via file_exists().
567 $child_theme_style_sheet = trailingslashit( get_stylesheet_directory() ) . $templates_dir . $file;
568 $child_theme_style_sheet_2 = trailingslashit( get_stylesheet_directory() ) . $templates_dir . 'give' . $this->direction . '.css';
569 $parent_theme_style_sheet = trailingslashit( get_template_directory() ) . $templates_dir . $file;
570 $parent_theme_style_sheet_2 = trailingslashit( get_template_directory() ) . $templates_dir . 'give' . $this->direction . '.css';
571 $give_plugin_style_sheet = trailingslashit( GIVE_PLUGIN_DIR ) . 'assets/dist/css/' . $file;
572 $uri = false;
573
574 /**
575 * Locate the Give stylesheet:
576 *
577 * a. Look in the child theme directory first, followed by the parent theme
578 * b. followed by the Give core templates directory also look for the min version first,
579 * c. followed by non minified version, even if SCRIPT_DEBUG is not enabled. This allows users to copy just give.css to their theme.
580 * d. Finally, fallback to the standard Give version. This is the default styles included within the plugin.
581 */
582 if ( file_exists( $child_theme_style_sheet ) || ( ! empty( $suffix ) && ( $nonmin = file_exists( $child_theme_style_sheet_2 ) ) ) ) {
583 if ( ! empty( $nonmin ) ) {
584 $uri = trailingslashit( get_stylesheet_directory_uri() ) . $templates_dir . 'give' . $this->direction . '.css';
585 } else {
586 $uri = trailingslashit( get_stylesheet_directory_uri() ) . $templates_dir . $file;
587 }
588 } elseif ( file_exists( $parent_theme_style_sheet ) || ( ! empty( $suffix ) && ( $nonmin = file_exists( $parent_theme_style_sheet_2 ) ) ) ) {
589 if ( ! empty( $nonmin ) ) {
590 $uri = trailingslashit( get_template_directory_uri() ) . $templates_dir . 'give' . $this->direction . '.css';
591 } else {
592 $uri = trailingslashit( get_template_directory_uri() ) . $templates_dir . $file;
593 }
594 } elseif ( file_exists( $give_plugin_style_sheet ) ) {
595 $uri = trailingslashit( GIVE_PLUGIN_URL ) . 'assets/dist/css/' . $file;
596 }
597
598 return apply_filters( 'give_get_stylesheet_uri', $uri );
599
600 }
601
602 /**
603 * Gutenberg admin scripts.
604 *
605 * @since 2.19.0 Remove undefined gutenberg.css
606 * @since 2.19.6 Load script with EnqueueScript.
607 * @since 2.19.6 Load missing block styles
608 */
609 public function gutenberg_admin_scripts()
610 {
611 // Enqueue the bundled block JS file
612 EnqueueScript::make('give-blocks-js', 'assets/dist/js/gutenberg.js')
613 ->dependencies(['give-admin-scripts'])
614 ->registerTranslations()
615 ->enqueue();
616
617 wp_enqueue_style(
618 'give-blocks-css',
619 GIVE_PLUGIN_URL . 'assets/dist/css/admin-block-editor.css',
620 [],
621 GIVE_VERSION
622 );
623
624
625 }
626 }
627