PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.2.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 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.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / WordPress / Assets / ScriptsService.php
surecart / app / src / WordPress / Assets Last commit date
AssetsService.php 3 years ago AssetsServiceProvider.php 3 years ago BlockAssetsLoadService.php 3 years ago PreloadService.php 3 years ago ScriptsService.php 3 years ago StylesService.php 3 years ago
ScriptsService.php
273 lines
1 <?php
2
3 namespace SureCart\WordPress\Assets;
4
5 use SureCart\Models\ManualPaymentMethod;
6 use SureCart\Models\Processor;
7
8 /**
9 * Handles the component theme.
10 */
11 class ScriptsService {
12 /**
13 * Holds the service container
14 *
15 * @var \Pimple\Container
16 */
17 protected $container;
18
19 /**
20 * Make sure we change the script loader tag for esm loading.
21 *
22 * @param \Pimple\Container $container Service Container.
23 */
24 public function __construct( $container ) {
25 $this->container = $container;
26
27 // add module to components tag.
28 add_filter( 'script_loader_tag', [ $this, 'componentsTag' ], 10, 3 );
29 }
30
31 /**
32 * Add module to the components tag
33 *
34 * @param string $tag Tag output.
35 * @param string $handle Script handle.
36 * @param string $source Script source.
37 *
38 * @return string
39 */
40 public function componentsTag( $tag, $handle, $source ) {
41 if ( 'surecart-components' !== $handle || ! $source ) {
42 return $tag;
43 }
44 // don't use javascript module if we are not using esm loader.
45 if ( ! \SureCart::assets()->usesEsmLoader() ) {
46 return $tag;
47 }
48
49 // make sure our translations do not get stripped.
50 $translations = wp_scripts()->print_translations( $handle, false );
51 if ( $translations ) {
52 $translations = sprintf( "<script%s id='%s-js-translations'>\n%s\n</script>\n", " type='text/javascript'", esc_attr( $handle ), $translations );
53 }
54
55 // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript
56 return '<script src="' . esc_url_raw( $source ) . '" type="module"></script>' . $translations;
57 }
58
59 /**
60 * Register the component scripts and translations.
61 *
62 * @return void
63 */
64 public function register() {
65 // should we use the esm loader directly?
66 if ( \SureCart::assets()->usesEsmLoader() ) {
67 wp_register_script(
68 'surecart-components',
69 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/components/surecart/surecart.esm.js',
70 [ 'wp-i18n' ],
71 filemtime( trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/components/surecart/surecart.esm.js' ) . '-' . \SureCart::plugin()->version(),
72 false
73 );
74 } else {
75 // instead, use a static loader that injects the script at runtime.
76 $static_assets = include trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/components/static-loader.asset.php';
77 wp_register_script(
78 'surecart-components',
79 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/components/static-loader.js',
80 array_merge( [ 'wp-i18n' ], $static_assets['dependencies'] ),
81 $static_assets['version'] . '-' . \SureCart::plugin()->version(),
82 true
83 );
84 wp_localize_script(
85 'surecart-components',
86 'surecartComponents',
87 [
88 'url' => trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/components/surecart/surecart.esm.js?ver=' . filemtime( trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/components/surecart/surecart.esm.js' ),
89 ]
90 );
91 }
92
93 wp_set_script_translations( 'surecart-components', 'surecart' );
94
95 // core-data.
96 $asset_file = include trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/store/data.asset.php';
97 wp_register_script(
98 'sc-core-data',
99 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/store/data.js',
100 array_merge( [ 'surecart-components' ], $asset_file['dependencies'] ),
101 $asset_file['version'] . '-' . \SureCart::plugin()->version(),
102 true
103 );
104
105 // ui.
106 $asset_file = include trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/store/ui.asset.php';
107 wp_register_script(
108 'sc-ui-data',
109 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/store/ui.js',
110 array_merge( [ 'surecart-components' ], $asset_file['dependencies'] ),
111 $asset_file['version'] . '-' . \SureCart::plugin()->version(),
112 true
113 );
114
115 // blocks.
116 $asset_file = include trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/blocks/library.asset.php';
117 $deps = $asset_file['dependencies'];
118 // fix bug in deps array.
119 $deps[ array_search( 'wp-blockEditor', $deps ) ] = 'wp-block-editor';
120 wp_register_script(
121 'surecart-blocks',
122 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/blocks/library.js',
123 array_merge( [ 'surecart-components' ], $deps ),
124 $asset_file['version'] . '-' . \SureCart::plugin()->version(),
125 true
126 );
127
128 wp_localize_script( 'surecart-cart-blocks', 'scIcons', [ 'path' => esc_url_raw( plugin_dir_url( SURECART_PLUGIN_FILE ) . 'dist/icon-assets' ) ] );
129 $asset_file = include trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/blocks/cart.asset.php';
130 $deps = $asset_file['dependencies'];
131 // fix bug in deps array.
132 $deps[ array_search( 'wp-blockEditor', $deps ) ] = 'wp-block-editor';
133 wp_register_script(
134 'surecart-cart-blocks',
135 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/blocks/cart.js',
136 array_merge( [ 'surecart-components' ], $deps ),
137 $asset_file['version'] . '-' . \SureCart::plugin()->version(),
138 true
139 );
140
141 wp_localize_script( 'surecart-cart-blocks', 'scIcons', [ 'path' => esc_url_raw( plugin_dir_url( SURECART_PLUGIN_FILE ) . 'dist/icon-assets' ) ] );
142
143 // cart.
144 $asset_file = include trailingslashit( $this->container[ SURECART_CONFIG_KEY ]['app_core']['path'] ) . 'dist/blocks/cart.asset.php';
145 $deps = $asset_file['dependencies'];
146 // fix bug in deps array.
147 $deps[ array_search( 'wp-blockEditor', $deps ) ] = 'wp-block-editor';
148 wp_register_script(
149 'surecart-cart-blocks',
150 trailingslashit( \SureCart::core()->assets()->getUrl() ) . 'dist/blocks/cart.js',
151 array_merge( [ 'surecart-components' ], $deps ),
152 $asset_file['version'] . '-' . \SureCart::plugin()->version(),
153 true
154 );
155
156 wp_localize_script( 'surecart-cart-blocks', 'scIcons', [ 'path' => esc_url_raw( plugin_dir_url( SURECART_PLUGIN_FILE ) . 'dist/icon-assets' ) ] );
157
158 // regsiter recaptcha.
159 wp_register_script( 'surecart-google-recaptcha', 'https://www.google.com/recaptcha/api.js?render=' . \SureCart::settings()->recaptcha()->getSiteKey(), [], \SureCart::plugin()->version(), true );
160
161 // register stripe if enabled.
162 if ( get_option( 'surecart_load_stripe_js', false ) ) {
163 wp_enqueue_script( 'surecart-stripe-script', 'https://js.stripe.com/v3', [], \SureCart::plugin()->version(), false );
164 }
165 }
166
167 /**
168 * Enqueue block front scripts.
169 *
170 * @return void
171 */
172 public function enqueueFront() {
173 // make sure it is registered.
174 $this->register();
175 // enqueue it.
176 wp_enqueue_script( 'surecart-components' );
177 wp_localize_script(
178 'surecart-components',
179 'scData',
180 [
181 'root_url' => esc_url_raw( get_rest_url() ),
182 'plugin_url' => \SureCart::core()->assets()->getUrl(),
183 'currency' => \SureCart::account()->currency,
184 'do_not_persist_cart' => is_admin(),
185 'theme' => get_option( 'surecart_theme', 'light' ),
186 'pages' => [
187 'dashboard' => \SureCart::pages()->url( 'dashboard' ),
188 'checkout' => \SureCart::pages()->url( 'checkout' ),
189 ],
190 'page_id' => get_the_ID(),
191 'nonce' => ( wp_installing() && ! is_multisite() ) ? '' : wp_create_nonce( 'wp_rest' ),
192 'nonce_endpoint' => admin_url( 'admin-ajax.php?action=sc-rest-nonce' ),
193 'recaptcha_site_key' => \SureCart::settings()->recaptcha()->getSiteKey(),
194 ]
195 );
196
197 // fix shitty jetpack issues key hijacking issues.
198 add_filter(
199 'wp_head',
200 function() {
201 wp_dequeue_script( 'wpcom-notes-common' );
202 wp_dequeue_script( 'wpcom-notes-admin-bar' );
203 wp_dequeue_style( 'wpcom-notes-admin-bar' );
204 wp_dequeue_style( 'noticons' );
205 },
206 200
207 );
208
209 wp_localize_script( 'surecart-components', 'scIcons', [ 'path' => esc_url_raw( plugin_dir_url( SURECART_PLUGIN_FILE ) . 'dist/icon-assets' ) ] );
210 }
211
212 /**
213 * Enqueue editor scripts.
214 *
215 * @return void
216 */
217 public function enqueueEditor() {
218 $this->enqueueFront();
219 $this->enqueueBlocks();
220 $this->enqueueCartBlocks();
221 }
222
223 /**
224 * Enqueue Cart Blocks.
225 *
226 * @return void
227 */
228 public function enqueueCartBlocks() {
229 // not our post type.
230 if ( 'sc_cart' !== get_post_type() ) {
231 return;
232 }
233
234 wp_enqueue_script( 'surecart-cart-blocks' );
235 wp_localize_script(
236 'surecart-cart-blocks',
237 'scBlockData',
238 [
239 'currency' => \SureCart::account()->currency,
240 'theme' => get_option( 'surecart_theme', 'light' ),
241 ]
242 );
243 }
244
245 /**
246 * Enqueue blocks scripts.
247 *
248 * @return void
249 */
250 public function enqueueBlocks() {
251 wp_enqueue_script( 'surecart-blocks' );
252 wp_localize_script(
253 'surecart-blocks',
254 'scBlockData',
255 [
256 'processors' => (array) Processor::get() ?? [],
257 'manualPaymentMethods' => (array) ManualPaymentMethod::get() ?? [],
258 'plugin_url' => \SureCart::core()->assets()->getUrl(),
259 'currency' => \SureCart::account()->currency,
260 'theme' => get_option( 'surecart_theme', 'light' ),
261 'entitlements' => \SureCart::account()->entitlements,
262 'beta' => [
263 'stripe_payment_element' => (bool) get_option( 'sc_stripe_payment_element', false ),
264 ],
265 'pages' => [
266 'dashboard' => \SureCart::pages()->url( 'dashboard' ),
267 'checkout' => \SureCart::pages()->url( 'checkout' ),
268 ],
269 ]
270 );
271 }
272 }
273