PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 2.3.0
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v2.3.0
2.3.2 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 All 60 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 2.3.0, at admin/class-merchant-admin-loader.php

189 lines 7.2 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
95 /**
96 * Enqueue admin styles and scripts.
97 */
98 public function enqueue_styles_scripts() {
99 $page = sanitize_text_field( wp_unslash( $_GET['page'] ?? '' ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
100 $section = sanitize_text_field( wp_unslash( $_GET['section'] ?? '' ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
101
102 wp_register_script( 'merchant-select2', MERCHANT_URI . 'assets/vendor/select2/select2.full.min.js', array( 'jquery' ), '4.0.13', true );
103 wp_register_style( 'merchant-select2', MERCHANT_URI . 'assets/vendor/select2/select2.min.css', array(), '4.0.13' );
104
105 if ( ! empty( $page ) && false !== strpos( $page, 'merchant' ) ) {
106
107 // For settings page only
108 if ( $section === 'settings' ) {
109 wp_enqueue_code_editor( array( 'type' => 'text/css' ) ); // No need to enqueue again for JS. It'll be handled by JS.
110 wp_enqueue_script( 'merchant-settings', MERCHANT_URI . 'assets/js/admin/settings.min.js', array( 'jquery', 'code-editor' ), MERCHANT_VERSION, true );
111 }
112
113 wp_enqueue_media();
114
115 wp_enqueue_style( 'merchant-admin', MERCHANT_URI . 'assets/css/admin/admin.min.css', array(), MERCHANT_VERSION );
116
117 if ( is_rtl() ) {
118 wp_enqueue_style( 'merchant-admin-rtl', MERCHANT_URI . 'assets/css/admin/admin-rtl.min.css', array(), MERCHANT_VERSION );
119 }
120
121 wp_enqueue_script( 'merchant-jquery-form', MERCHANT_URI . 'assets/vendor/jquery-form/jquery.form.min.js', array( 'jquery' ), '4.3.0', true );
122
123 wp_enqueue_script( 'merchant-pickr', MERCHANT_URI . 'assets/vendor/pickr/pickr.min.js', array( 'jquery' ), '1.8.2', true );
124
125 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 );
126
127 $localized_data = array(
128 'nonce' => wp_create_nonce( 'merchant' ),
129 'ajax_url' => admin_url( 'admin-ajax.php' ),
130 'ai_prompt_copy_hint' => esc_html__( 'Click to copy', 'merchant' ),
131 'ai_prompt_copied_label' => esc_html__( 'Copied!', 'merchant' ),
132 );
133
134 /**
135 * Hook 'merchant_admin_localize_script'
136 *
137 * @since 1.9.6
138 */
139 $localized_data = apply_filters( 'merchant_admin_localize_script', $localized_data );
140
141 wp_localize_script( 'merchant-admin', 'merchant', $localized_data );
142
143 $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
144
145 if ( ! empty( $module ) ) {
146 wp_enqueue_script( 'merchant-admin-preview', MERCHANT_URI . 'assets/js/admin/merchant-preview.min.js', array( 'jquery' ), MERCHANT_VERSION, true );
147 }
148 }
149 }
150
151 /**
152 * Add plugin settings link on the plugin page.
153 */
154 public function action_links( $links ) {
155
156 $page_url = add_query_arg( array( 'page' => 'merchant' ), admin_url( 'themes.php' ) );
157
158 $action_links = array(
159 'settings' => '<a href="' . esc_url( $page_url ) . '">' . esc_html__( 'Settings', 'merchant' ) . '</a>',
160 );
161
162 return array_merge( $action_links, $links );
163 }
164
165 /**
166 * Add admin body class.
167 */
168 public function add_admin_body_class( $classes ) {
169 $page = ( ! empty( $_GET['page'] ) ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
170 $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
171 $section = ( ! empty( $_GET['section'] ) ) ? sanitize_text_field( wp_unslash( $_GET['section'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
172
173 if ( ! empty( $page ) && false !== strpos( $page, 'merchant' ) ) {
174 if ( ! empty( $module ) ) {
175 $classes .= ' merchant-admin-page-module';
176 } else {
177 $section = $section ? 'merchant-admin-page__' . $section : 'merchant-admin-page__dashboard';
178 $classes .= ' merchant-admin-page ' . $section;
179
180 }
181 }
182
183 return $classes;
184 }
185 }
186
187 Merchant_Admin_Loader::instance();
188 }
189