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

187 lines 7.0 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 );
131
132 /**
133 * Hook 'merchant_admin_localize_script'
134 *
135 * @since 1.9.6
136 */
137 $localized_data = apply_filters( 'merchant_admin_localize_script', $localized_data );
138
139 wp_localize_script( 'merchant-admin', 'merchant', $localized_data );
140
141 $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
142
143 if ( ! empty( $module ) ) {
144 wp_enqueue_script( 'merchant-admin-preview', MERCHANT_URI . 'assets/js/admin/merchant-preview.min.js', array( 'jquery' ), MERCHANT_VERSION, true );
145 }
146 }
147 }
148
149 /**
150 * Add plugin settings link on the plugin page.
151 */
152 public function action_links( $links ) {
153
154 $page_url = add_query_arg( array( 'page' => 'merchant' ), admin_url( 'themes.php' ) );
155
156 $action_links = array(
157 'settings' => '<a href="' . esc_url( $page_url ) . '">' . esc_html__( 'Settings', 'merchant' ) . '</a>',
158 );
159
160 return array_merge( $action_links, $links );
161 }
162
163 /**
164 * Add admin body class.
165 */
166 public function add_admin_body_class( $classes ) {
167 $page = ( ! empty( $_GET['page'] ) ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
168 $module = ( ! empty( $_GET['module'] ) ) ? sanitize_text_field( wp_unslash( $_GET['module'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
169 $section = ( ! empty( $_GET['section'] ) ) ? sanitize_text_field( wp_unslash( $_GET['section'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
170
171 if ( ! empty( $page ) && false !== strpos( $page, 'merchant' ) ) {
172 if ( ! empty( $module ) ) {
173 $classes .= ' merchant-admin-page-module';
174 } else {
175 $section = $section ? 'merchant-admin-page__' . $section : 'merchant-admin-page__dashboard';
176 $classes .= ' merchant-admin-page ' . $section;
177
178 }
179 }
180
181 return $classes;
182 }
183 }
184
185 Merchant_Admin_Loader::instance();
186 }
187