PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / trunk
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant vtrunk
2.3.1 2.3.0 2.2.8 2.2.7 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.11.0 1.11.1 1.11.2 1.6 1.7 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 All 59 releases
merchant / admin / class-merchant-admin-loader.php

class-merchant-admin-loader.php in Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant trunk, at admin/class-merchant-admin-loader.php

192 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Merchant_Admin_Loader Class.
4 */
5
6 if ( ! defined( 'ABSPATH' ) ) {
7 exit; // Exit if accessed directly
8 }
9
10 if ( ! class_exists( 'Merchant_Admin_Loader' ) ) {
11
12 class Merchant_Admin_Loader {
13
14 /**
15 * The single class instance.
16 */
17 private static $instance = null;
18
19 /**
20 * Instance.
21 */
22 public static function instance() {
23 if ( is_null( self::$instance ) ) {
24 self::$instance = new self();
25 }
26 return self::$instance;
27 }
28
29 /**
30 * Constructor.
31 */
32 public function __construct() {
33
34 $this->includes_not_hooked();
35
36 add_action( 'init', array( $this, 'includes' ) );
37 add_action( 'plugins_loaded', array( $this, 'includes_after_plugins_loaded' ) );
38
39 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles_scripts' ) );
40 add_action( 'plugin_action_links_' . MERCHANT_BASE, array( $this, 'action_links' ) );
41 add_filter( 'admin_body_class', array( $this, 'add_admin_body_class' ), 999 );
42 }
43
44 /**
45 * Include files after plugins loaded.
46 *
47 * Before init hook.
48 */
49 public function includes_after_plugins_loaded() {
50 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-statistics-tracking.php';
51 }
52
53 /**
54 * No hooked includes.
55 * These files are included without any WordPress hook.
56 */
57 public function includes_not_hooked() {
58 require_once MERCHANT_DIR . 'inc/classes/class-merchant-svg-icons.php';
59 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-modules.php';
60 }
61
62 /**
63 * Include admin classes.
64 */
65 public function includes() {
66
67 // Notices.
68 require_once MERCHANT_DIR . 'admin/notices/class-merchant-notice.php';
69 require_once MERCHANT_DIR . 'admin/notices/class-merchant-notice-review.php';
70 require_once MERCHANT_DIR . 'admin/notices/class-merchant-notice-upsell.php';
71 require_once MERCHANT_DIR . 'admin/notices/class-merchant-notice-campaign.php';
72
73 // Admin classes.
74 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-menu.php';
75
76 // Field architecture.
77 require_once MERCHANT_DIR . 'admin/classes/admin-options/interface-merchant-field.php';
78 require_once MERCHANT_DIR . 'admin/classes/admin-options/class-merchant-abstract-field.php';
79 require_once MERCHANT_DIR . 'admin/classes/admin-options/class-merchant-field-registry.php';
80
81 // Extracted SRP classes.
82 require_once MERCHANT_DIR . 'admin/classes/admin-options/class-merchant-admin-assets.php';
83 require_once MERCHANT_DIR . 'admin/classes/admin-options/class-merchant-select2-choices.php';
84 require_once MERCHANT_DIR . 'admin/classes/admin-options/class-merchant-settings-saver.php';
85 require_once MERCHANT_DIR . 'admin/classes/admin-options/class-merchant-settings-renderer.php';
86
87 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-options.php';
88 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-ajax.php';
89 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-utils.php';
90 require_once MERCHANT_DIR . 'admin/classes/class-merchant-admin-preview.php';
91 // Plugin installer.
92 require_once MERCHANT_DIR . 'admin/classes/class-merchant-plugin-installer.php';
93
94 // White Label settings section.
95 require_once MERCHANT_DIR . 'admin/classes/class-merchant-white-label-settings.php';
96 }
97
98 /**
99 * Enqueue admin styles and scripts.
100 */
101 public function enqueue_styles_scripts() {
102 $page = sanitize_text_field( wp_unslash( $_GET['page'] ?? '' ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
103 $section = sanitize_text_field( wp_unslash( $_GET['section'] ?? '' ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
104
105 wp_register_script( 'merchant-select2', MERCHANT_URI . 'assets/vendor/select2/select2.full.min.js', array( 'jquery' ), '4.0.13', true );
106 wp_register_style( 'merchant-select2', MERCHANT_URI . 'assets/vendor/select2/select2.min.css', array(), '4.0.13' );
107
108 if ( ! empty( $page ) && false !== strpos( $page, 'merchant' ) ) {
109
110 // For settings page only
111 if ( $section === 'settings' ) {
112 wp_enqueue_code_editor( array( 'type' => 'text/css' ) ); // No need to enqueue again for JS. It'll be handled by JS.
113 wp_enqueue_script( 'merchant-settings', MERCHANT_URI . 'assets/js/admin/settings.min.js', array( 'jquery', 'code-editor' ), MERCHANT_VERSION, true );
114 }
115
116 wp_enqueue_media();
117
118 wp_enqueue_style( 'merchant-admin', MERCHANT_URI . 'assets/css/admin/admin.min.css', array(), MERCHANT_VERSION );
119
120 if ( is_rtl() ) {
121 wp_enqueue_style( 'merchant-admin-rtl', MERCHANT_URI . 'assets/css/admin/admin-rtl.min.css', array(), MERCHANT_VERSION );
122 }
123
124 wp_enqueue_script( 'merchant-jquery-form', MERCHANT_URI . 'assets/vendor/jquery-form/jquery.form.min.js', array( 'jquery' ), '4.3.0', true );
125
126 wp_enqueue_script( 'merchant-pickr', MERCHANT_URI . 'assets/vendor/pickr/pickr.min.js', array( 'jquery' ), '1.8.2', true );
127
128 wp_enqueue_script( 'merchant-admin', MERCHANT_URI . 'assets/js/admin/admin.min.js', array( 'jquery', 'jquery-ui-sortable', 'jquery-ui-core', 'jquery-ui-accordion', 'wp-util' ), MERCHANT_VERSION, true );
129
130 $localized_data = array(
131 'nonce' => wp_create_nonce( 'merchant' ),
132 'ajax_url' => admin_url( 'admin-ajax.php' ),
133 'ai_prompt_copy_hint' => esc_html__( 'Click to copy', 'merchant' ),
134 'ai_prompt_copied_label' => esc_html__( 'Copied!', 'merchant' ),
135 );
136
137 /**
138 * Hook 'merchant_admin_localize_script'
139 *
140 * @since 1.9.6
141 */
142 $localized_data = apply_filters( 'merchant_admin_localize_script', $localized_data );
143
144 wp_localize_script( 'merchant-admin', 'merchant', $localized_data );
145
146 $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
147
148 if ( ! empty( $module ) ) {
149 wp_enqueue_script( 'merchant-admin-preview', MERCHANT_URI . 'assets/js/admin/merchant-preview.min.js', array( 'jquery' ), MERCHANT_VERSION, true );
150 }
151 }
152 }
153
154 /**
155 * Add plugin settings link on the plugin page.
156 */
157 public function action_links( $links ) {
158
159 $page_url = add_query_arg( array( 'page' => 'merchant' ), admin_url( 'themes.php' ) );
160
161 $action_links = array(
162 'settings' => '<a href="' . esc_url( $page_url ) . '">' . esc_html__( 'Settings', 'merchant' ) . '</a>',
163 );
164
165 return array_merge( $action_links, $links );
166 }
167
168 /**
169 * Add admin body class.
170 */
171 public function add_admin_body_class( $classes ) {
172 $page = ( ! empty( $_GET['page'] ) ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
173 $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
174 $section = ( ! empty( $_GET['section'] ) ) ? sanitize_text_field( wp_unslash( $_GET['section'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
175
176 if ( ! empty( $page ) && false !== strpos( $page, 'merchant' ) ) {
177 if ( ! empty( $module ) ) {
178 $classes .= ' merchant-admin-page-module';
179 } else {
180 $section = $section ? 'merchant-admin-page__' . $section : 'merchant-admin-page__dashboard';
181 $classes .= ' merchant-admin-page ' . $section;
182
183 }
184 }
185
186 return $classes;
187 }
188 }
189
190 Merchant_Admin_Loader::instance();
191 }
192