PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.0
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 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 1 week ago ProductCollectionsListTable.php 1 week ago ProductCollectionsScriptsController.php 1 week ago
ProductCollectionsController.php
124 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\ProductCollections;
4
5 use SureCart\Controllers\Admin\AdminController;
6 use SureCart\Controllers\Admin\RendersEnhancedAdminView;
7 use SureCart\Models\ProductCollection;
8
9 /**
10 * Handles product collections admin requests.
11 */
12 class ProductCollectionsController extends AdminController {
13 use RendersEnhancedAdminView;
14
15 /**
16 * Render the WP List Table view.
17 */
18 protected function renderWpListView() {
19 $table = new ProductCollectionsListTable();
20 $table->prepare_items();
21
22 $this->withHeader(
23 array(
24 'breadcrumbs' => [
25 'product-collections' => [
26 'title' => __( 'Product Collections', 'surecart' ),
27 ],
28 ],
29 'enhanced_view_promo' => admin_url( 'admin.php?page=sc-product-collections' ),
30 ),
31 );
32
33 return \SureCart::view( 'admin/product-collections/index' )->with(
34 [
35 'table' => $table,
36 ]
37 );
38 }
39
40 /**
41 * Render the SPA view for product collections.
42 */
43 protected function renderSpaView() {
44 $this->enqueueSpaScripts( ProductCollectionsScriptsController::class );
45 return $this->renderSpaShell(
46 'admin/product-collections/spa',
47 'product-collections',
48 __( 'Product Collections', 'surecart' )
49 );
50 }
51
52 /**
53 * Edit a product collection.
54 *
55 * @param \WP_REST_Request $request Request.
56 */
57 public function edit( $request ) {
58 // enqueue needed script.
59 $this->enqueueSpaScripts( ProductCollectionsScriptsController::class );
60
61 $product_collection = null;
62
63 if ( $request->query( 'id' ) ) {
64 $product_collection = ProductCollection::find( $request->query( 'id' ) );
65
66 if ( is_wp_error( $product_collection ) ) {
67 wp_die( implode( ' ', array_map( 'esc_html', $product_collection->get_error_messages() ) ) );
68 }
69
70 if ( ! empty( $product_collection ) ) {
71 $this->preloadAPIRequests( $product_collection );
72 }
73
74 // add product collection link.
75 if ( ! empty( $product_collection ) ) {
76 add_action(
77 'admin_bar_menu',
78 function ( $wp_admin_bar ) use ( $product_collection ) {
79 $wp_admin_bar->add_node(
80 [
81 'id' => 'view-product-collection-page',
82 'title' => __( 'View Collection', 'surecart' ),
83 'href' => esc_url( $product_collection->permalink ?? '#' ),
84 'meta' => [
85 'class' => empty( $product_collection->permalink ) ? 'hidden' : '',
86 ],
87 ]
88 );
89 },
90 99
91 );
92 }
93 }
94
95 return $this->renderSpaShell( 'admin/product-collections/spa' );
96 }
97
98 /**
99 * Preload API Requests.
100 *
101 * @param \SureCart\Models\ProductCollection $product_collection The product collection.
102 *
103 * @return void
104 */
105 public function preloadAPIRequests( ProductCollection $product_collection ): void {
106 $preload_paths = array(
107 array( '/wp/v2/templates', 'OPTIONS' ),
108 '/wp/v2/settings',
109 '/wp/v2/types/wp_template?context=edit',
110 '/wp/v2/types/wp_template-part?context=edit',
111 '/wp/v2/templates?context=edit&per_page=-1',
112 '/wp/v2/template-parts?context=edit&per_page=-1',
113 '/wp/v2/users/me',
114 '/wp/v2/types?context=view',
115 '/wp/v2/types?context=edit',
116 '/wp/v2/templates/' . $product_collection->template_id . '?context=edit',
117 '/wp/v2/template-parts/' . $product_collection->template_part_id . '?context=edit',
118 '/surecart/v1/product_collections/' . $product_collection->id . '?context=edit&expand[0]=media',
119 );
120
121 $this->preloadPaths( $preload_paths );
122 }
123 }
124