PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.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 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 2 years ago ProductCollectionsScriptsController.php 2 years 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