PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 / Controllers / Admin / ProductCollections / ProductCollectionsController.php
surecart / app / src / Controllers / Admin / ProductCollections Last commit date
ProductCollectionsController.php 2 years ago ProductCollectionsListTable.php 1 year ago ProductCollectionsScriptsController.php 1 year ago
ProductCollectionsController.php
108 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\ProductCollections;
4
5 use SureCart\Models\ProductCollection;
6
7 /**
8 * Handles product collections admin requests.
9 */
10 class ProductCollectionsController {
11 /**
12 * Index.
13 */
14 public function index() {
15 $table = new ProductCollectionsListTable();
16 $table->prepare_items();
17 return \SureCart::view( 'admin/product-collections/index' )->with(
18 [
19 'table' => $table,
20 ]
21 );
22 }
23
24 /**
25 * Edit a product.
26 *
27 * @param \WP_REST_Request $request Request.
28 */
29 public function edit( $request ) {
30 // enqueue needed script.
31 add_action( 'admin_enqueue_scripts', \SureCart::closure()->method( ProductCollectionsScriptsController::class, 'enqueue' ) );
32
33 $product_collection = null;
34
35 if ( $request->query( 'id' ) ) {
36 $product_collection = ProductCollection::find( $request->query( 'id' ) );
37
38 if ( is_wp_error( $product_collection ) ) {
39 wp_die( implode( ' ', array_map( 'esc_html', $product_collection->get_error_messages() ) ) );
40 }
41
42 if ( ! empty( $product_collection ) ) {
43 $this->preloadAPIRequests( $product_collection );
44 }
45
46 // add product collection link.
47 add_action(
48 'admin_bar_menu',
49 function( $wp_admin_bar ) use ( $product_collection ) {
50 $wp_admin_bar->add_node(
51 [
52 'id' => 'view-product-collection-page',
53 'title' => __( 'View Collection', 'surecart' ),
54 'href' => esc_url( $product_collection->permalink ?? '#' ),
55 'meta' => [
56 'class' => empty( $product_collection->permalink ) ? 'hidden' : '',
57 ],
58 ]
59 );
60 },
61 99
62 );
63 }
64
65 // return view.
66 return '<div id="app"></div>';
67 }
68
69 /**
70 * Preload API Requests.
71 *
72 * @param \SureCart\Models\ProductCollection $product_collection The product collection.
73 *
74 * @return void
75 */
76 public function preloadAPIRequests( ProductCollection $product_collection ): void {
77 $preload_paths = array(
78 array( '/wp/v2/templates', 'OPTIONS' ),
79 '/wp/v2/settings',
80 '/wp/v2/types/wp_template?context=edit',
81 '/wp/v2/types/wp_template-part?context=edit',
82 '/wp/v2/templates?context=edit&per_page=-1',
83 '/wp/v2/template-parts?context=edit&per_page=-1',
84 '/wp/v2/users/me',
85 '/wp/v2/types?context=view',
86 '/wp/v2/types?context=edit',
87 '/wp/v2/templates/' . $product_collection->template_id . '?context=edit',
88 '/wp/v2/template-parts/' . $product_collection->template_part_id . '?context=edit',
89 '/surecart/v1/product_collections/' . $product_collection->id . '?context=edit&expand[0]=media',
90 );
91
92 wp_add_inline_script(
93 'wp-api-fetch',
94 sprintf(
95 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );',
96 wp_json_encode(
97 array_reduce(
98 $preload_paths,
99 'rest_preload_api_request',
100 array()
101 )
102 )
103 ),
104 'after'
105 );
106 }
107 }
108