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.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 / RendersEnhancedAdminView.php
surecart / app / src / Controllers / Admin Last commit date
Abandoned 2 months ago AffiliationClicks 2 months ago AffiliationPayoutGroups 2 years ago AffiliationPayouts 10 months ago AffiliationReferrals 7 months ago AffiliationRequests 2 months ago Affiliations 2 months ago AutoFees 1 week ago Bumps 2 months ago Bundles 6 days ago CancellationInsights 2 months ago Cart 4 years ago Checkouts 3 months ago Coupons 3 months ago Customers 2 months ago Dashboard 10 months ago Invoices 2 months ago Learn 3 months ago Licenses 2 months ago Onboarding 11 months ago Orders 2 months ago ProductCollections 1 week ago ProductGroups 1 week ago Products 6 days ago Restore 2 years ago Reviews 1 week ago Settings 1 month ago Subscriptions 2 months ago Tables 1 week ago Upsells 2 months ago .gitkeep 4 years ago Account.php 4 years ago AdminController.php 1 week ago PluginSettings.php 4 years ago RendersEnhancedAdminView.php 1 week ago
RendersEnhancedAdminView.php
95 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin;
4
5 /**
6 * Shared plumbing for admin pages that dual-render between the new React
7 * DataViews SPA and the legacy WP_List_Table controller.
8 *
9 * Consumers implement `renderSpaView()` and `renderWpListView()`; the trait
10 * owns the feature-flag check, `index()` routing, and SPA-shell rendering.
11 */
12 trait RendersEnhancedAdminView {
13 /**
14 * Render the SPA shell view for this admin page.
15 *
16 * Must enqueue the scripts controller and return the shell response
17 * — typically by calling `renderSpaShell()`.
18 *
19 * @return \SureCartCore\Responses\ResponseInterface
20 */
21 abstract protected function renderSpaView();
22
23 /**
24 * Render the legacy WP_List_Table view for this admin page.
25 *
26 * @return \SureCartCore\Responses\ResponseInterface
27 */
28 abstract protected function renderWpListView();
29
30 /**
31 * Render the appropriate view based on the `surecart_enhanced_admin_views` feature flag.
32 */
33 public function index() {
34 return $this->isEnhancedAdminViewsEnabled() ? $this->renderSpaView() : $this->renderWpListView();
35 }
36
37 /**
38 * Enqueue the SPA bundle on admin_enqueue_scripts.
39 *
40 * @param string $scripts_controller FQN of the scripts controller (ProductScriptsController::class etc.).
41 * @return void
42 */
43 protected function enqueueSpaScripts( string $scripts_controller ): void {
44 add_action( 'admin_enqueue_scripts', \SureCart::closure()->method( $scripts_controller, 'enqueue' ) );
45 }
46
47 /**
48 * Render the SPA shell view, optionally with a breadcrumb header.
49 *
50 * Pass a breadcrumb key + title for list views where the PHP-rendered
51 * admin header bar should show "Logo → Title". Omit both for edit/create
52 * views — the React detail components render their own breadcrumbs, so a
53 * second PHP-rendered bar would duplicate them.
54 *
55 * @param string $view View slug passed to \SureCart::view().
56 * @param string|null $breadcrumb_key Breadcrumb array key (e.g. 'products').
57 * @param string|null $title Localized breadcrumb title.
58 *
59 * @return \SureCartCore\Responses\ResponseInterface
60 */
61 protected function renderSpaShell( string $view, ?string $breadcrumb_key = null, ?string $title = null ) {
62 if ( null !== $breadcrumb_key && null !== $title ) {
63 $this->withHeader(
64 [
65 'breadcrumbs' => [
66 $breadcrumb_key => [ 'title' => $title ],
67 ],
68 'enhanced_view_promo' => $this->currentAdminPageUrl(),
69 ]
70 );
71 }
72
73 return \SureCart::view( $view );
74 }
75
76 /**
77 * Get the URL of the current admin page, for redirecting back after toggling enhanced views.
78 *
79 * @return string
80 */
81 private function currentAdminPageUrl(): string {
82 $page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
83 return $page ? admin_url( 'admin.php?page=' . $page ) : admin_url();
84 }
85
86 /**
87 * Whether the React DataViews experience is enabled.
88 *
89 * @return bool
90 */
91 public function isEnhancedAdminViewsEnabled(): bool {
92 return (bool) get_option( 'surecart_enhanced_admin_views', true );
93 }
94 }
95