PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.2.1
4.7.2 4.7.1 4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 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 All 281 releases
surecart / app / src / Support / Scripts / AdminModelEditController.php
AdminModelEditController.php
202 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SureCart\Support\Scripts;
4
5 use SureCart\Support\Currency;
6
7 /**
8 * Class for model edit pages to extend.
9 */
10 abstract class AdminModelEditController {
11 /**
12 * Script path.
13 *
14 * @var string
15 */
16 protected $path = '';
17
18 /**
19 * Script handle.
20 *
21 * @var string
22 */
23 protected $handle = '';
24
25 /**
26 * What types of data to add the the page.
27 *
28 * @var array
29 */
30 protected $with_data = [ 'links' ];
31
32 /**
33 * Additional dependencies
34 *
35 * @var array
36 */
37 protected $dependencies = [ 'sc-core-data', 'sc-ui-data' ];
38
39 /**
40 * Data to pass to the page.
41 *
42 * @var array
43 */
44 protected $data = [];
45
46 /**
47 * Optional conditionally load.
48 */
49 protected function condition() {
50 return true;
51 }
52
53 /**
54 * Enqueue needed scripts
55 *
56 * @return void
57 */
58 public function enqueueScriptDependencies() {
59 wp_enqueue_media();
60 wp_enqueue_style( 'wp-components' );
61 wp_enqueue_style( 'wp-editor' );
62 }
63
64 /**
65 * Enqueue components
66 *
67 * @return void
68 */
69 public function enqueueComponents() {
70 wp_enqueue_script( 'surecart-components' );
71 wp_enqueue_style( 'surecart-themes-default' );
72 wp_add_inline_style(
73 'surecart-themes-default',
74 ':root { --sc-color-primary-text: #fff; }' // this is important in case the user has a dark primary text.
75 );
76 wp_add_inline_style(
77 'surecart-themes-default',
78 '.sc-dragging { z-index: 1 }' // this is required for dragging.
79 );
80 }
81
82 /**
83 * Enqueue scripts
84 *
85 * @return void
86 */
87 public function enqueue() {
88 if ( ! $this->condition() ) {
89 return;
90 }
91
92 // components are also used on index pages.
93 $this->enqueueComponents();
94
95 // match url query for the scripts.
96 if ( ! empty( $this->url_query ) ) {
97 foreach ( $this->url_query as $param => $value ) {
98 // phpcs:ignore
99 if ( ! isset( $_GET[ $param ] ) || $value !== sanitize_text_field( wp_unslash( $_GET[ $param ] ) ) ) {
100 return;
101 }
102 }
103 }
104
105 // enqueue dependencies.
106 $this->enqueueScriptDependencies();
107
108 // Fix Jetpack script key hijacking issues.
109 add_filter(
110 'admin_head',
111 function () {
112 wp_dequeue_script( 'wpcom-notes-common' );
113 wp_dequeue_script( 'wpcom-notes-admin-bar' );
114 wp_dequeue_style( 'wpcom-notes-admin-bar' );
115 wp_dequeue_style( 'noticons' );
116 },
117 200
118 );
119
120 // automatically load dependencies and version.
121 $asset_file = include plugin_dir_path( SURECART_PLUGIN_FILE ) . "dist/$this->path.asset.php";
122
123 // Enqueue scripts.
124 wp_enqueue_script(
125 $this->handle,
126 trailingslashit( \SureCart::core()->assets()->getUrl() ) . "dist/$this->path.js",
127 array_merge( $asset_file['dependencies'], $this->dependencies ),
128 $asset_file['version'],
129 true
130 );
131
132 // pass app url.
133 $this->data['upgrade_url'] = \SureCart::config()->links->purchase;
134 $this->data['surecart_app_url'] = defined( 'SURECART_APP_URL' ) ? SURECART_APP_URL : '';
135 $this->data['account_id'] = \SureCart::account()->id ?? '';
136 $this->data['account_slug'] = \SureCart::account()->slug ?? '';
137 $this->data['api_url'] = \SureCart::requests()->getBaseUrl();
138 $this->data['plugin_url'] = \SureCart::core()->assets()->getUrl();
139 $this->data['locale'] = str_replace( '_', '-', determine_locale() );
140 $this->data['root_url'] = esc_url_raw( get_rest_url() );
141 $this->data['home_url'] = untrailingslashit( get_home_url() );
142 $this->data['buy_page_slug'] = untrailingslashit( \SureCart::settings()->permalinks()->getBase( 'buy_page' ) );
143 $this->data['product_page_slug'] = untrailingslashit( \SureCart::settings()->permalinks()->getBase( 'product_page' ) );
144 $this->data['collection_page_slug'] = untrailingslashit( \SureCart::settings()->permalinks()->getBase( 'collection_page' ) );
145 $this->data['is_block_theme'] = \SureCart::utility()->blockTemplates()->isFSETheme();
146 $this->data['claim_url'] = ! \SureCart::account()->claimed ? \SureCart::routeUrl( 'account.claim' ) : '';
147 $this->data['claim_expired'] = \SureCart::account()->claim_expired ?? false;
148
149 if ( in_array( 'currency', $this->with_data ) ) {
150 $this->data['currency_code'] = \SureCart::account()->currency;
151 }
152 if ( in_array( 'review_protocol', $this->with_data ) ) {
153 $this->data['review_protocol'] = \SureCart::account()->review_protocol;
154 }
155 if ( in_array( 'tax_protocol', $this->with_data ) ) {
156 $this->data['tax_protocol'] = \SureCart::account()->tax_protocol;
157 }
158 if ( in_array( 'shipping_protocol', $this->with_data ) ) {
159 $this->data['shipping_protocol'] = \SureCart::account()->shipping_protocol;
160 }
161 if ( in_array( 'checkout_page_url', $this->with_data ) ) {
162 $this->data['checkout_page_url'] = \SureCart::getUrl()->checkout();
163 }
164 if ( in_array( 'supported_currencies', $this->with_data ) ) {
165 $this->data['supported_currencies'] = Currency::list();
166 }
167 if ( in_array( 'links', $this->with_data ) ) {
168 $this->data['links'] = [];
169 foreach ( array_keys( \SureCart::getAdminPageNames() ) as $name ) {
170 $this->data['links'][ $name ] = esc_url_raw( add_query_arg( [ 'action' => 'edit' ], \SureCart::getUrl()->index( $name ) ) );
171 }
172 }
173 if ( in_array( 'google_map_api_key', $this->with_data ) ) {
174 $this->data['google_map_api_key'] = \SureCart::googleMaps()->getApiKey();
175 }
176
177 // pass entitlements to page.
178 $this->data['entitlements'] = \SureCart::account()->entitlements;
179 $this->data['get_locale'] = str_replace( '_', '-', determine_locale() );
180
181 // pass wp user roles to page.
182 $this->data['wp_user_roles'] = get_editable_roles();
183
184 wp_set_script_translations( $this->handle, 'surecart' );
185
186 // common localizations.
187 wp_localize_script(
188 $this->handle,
189 'scData',
190 apply_filters( "$this->handle/data", $this->data )
191 );
192
193 wp_localize_script( $this->handle, 'scIcons', [ 'path' => esc_url_raw( plugin_dir_url( SURECART_PLUGIN_FILE ) . 'dist/icon-assets' ) ] );
194
195 // custom localizations.
196 $this->localize( $this->handle );
197 }
198
199 protected function localize( $handle ) {
200 }
201 }
202