PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 2.0.9
Adminify – White Label, Admin Menu Editor, Login Customizer v2.0.9
4.3.2 4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 All 165 releases
← All changes | Inc/Classes/ThirdPartyCompatibility.php +94 -721 4.2.232.0.9 View file →
@@ -1,576 +1,63 @@
1 1 <?php
2 2
3 -namespace PXLBSAdminify\Inc\Classes;
3 +namespace WPAdminify\Inc\Classes;
4 4
5 -use PXLBSAdminify\Inc\Utils;
6 -use PXLBSAdminify\Inc\Admin\AdminSettings;
7 -use PXLBSAdminify\Inc\Modules\MenuEditor\MenuEditorOptions;
5 +use WPAdminify\Inc\Utils ;
6 +use WPAdminify\Inc\Admin\AdminSettings ;
7 +use WPAdminify\Inc\Modules\MenuEditor\MenuEditorOptions ;
8 8 // no direct access allowed
9 9 if ( !defined( 'ABSPATH' ) ) {
10 10 exit;
11 11 }
12 12 /**
13 - * PXLBSAdminify
13 + * WPAdminify
14 14 * Third Party Plugins Compatibility
15 15 *
16 16 * @author Jewel Theme <[email protected]>
17 17 */
18 -class ThirdPartyCompatibility {
19 - public $menu_settings;
20 -
21 - public function __construct() {
18 +class ThirdPartyCompatibility
19 +{
20 + public function __construct()
21 + {
22 22 $this->menu_settings = ( new MenuEditorOptions() )->get();
23 - add_action( 'init', [$this, 'register_actions_on_init'], 0 );
24 - add_action( 'admin_init', [$this, 'register_actions_on_admin_init'], 0 );
25 - // 24-3-24
26 - add_action( 'admin_enqueue_scripts', [$this, 'reset_theme_conflicts'], 999999 );
27 - // 28-6-24
28 - add_action( 'admin_head', [$this, 'plugin_conflicts'], 999999 );
29 - // Inject layout-tightening CSS INTO the block editor iframe (parent CSS
30 - // cannot reach inside). Closes the huge top gap between the editor toolbar
31 - // and the post title that's amplified inside the Adminify iframe wrapper.
32 - // add_filter('block_editor_settings_all', [$this, 'block_editor_iframe_layout_tweaks']); // TODO: comment because not product this issue. if we product this issue then think about why create this this and solve it all type of users
33 - if ( Utils::is_plugin_active( 'gravityforms/gravityforms.php' ) ) {
34 - add_filter(
35 - 'update_footer',
36 - [$this, 'change_admin_footer'],
37 - 9999,
38 - 3
39 - );
40 - }
41 - // All Fluent Plugin Assets Supports
42 - $this->whitelist_assets_in_fluent_plugins();
23 + add_action( 'init', [ $this, 'register_actions_on_init' ], 0 );
24 + add_action( 'admin_init', [ $this, 'register_actions_on_admin_init' ], 0 );
25 + $this->enqueue_scripts();
26 + add_action( 'admin_enqueue_scripts', [ $this, 'jltwp_adminify_reset_theme_conflicts' ], 100 );
43 27 }
44 -
45 - /**
46 - * Whitelist Adminify assets in Fluent ecosystem no-conflict mode.
47 - *
48 - * Fluent Boards, Fluent Booking, Fluent CRM, Fluent Community, Fluent Forms,
49 - * and Fluent Snippets (easy-code-manager) iterate $wp_scripts->queue on their
50 - * admin pages and dequeue every plugin script whose src isn't in their approved
51 - * slug list. Without this whitelist, Adminify's frame-adminify--admin script is
52 - * stripped, leaving an empty React mount (white screen).
53 - */
54 - public function whitelist_assets_in_fluent_plugins() {
55 - $add_regex = function ( $slugs ) {
56 - $slugs[] = '\\/adminify\\/';
57 - return $slugs;
58 - };
59 - if ( Utils::is_plugin_active( 'fluent-boards/fluent-boards.php' ) ) {
60 - add_filter( 'fluent_boards/asset_listed_slugs', $add_regex );
61 - }
62 - if ( Utils::is_plugin_active( 'fluent-booking/fluent-booking.php' ) ) {
63 - add_filter( 'fluent_booking/asset_listed_slugs', $add_regex );
64 - }
65 - if ( Utils::is_plugin_active( 'fluent-crm/fluent-crm.php' ) ) {
66 - add_filter( 'fluent_crm_asset_listed_slugs', $add_regex );
67 - }
68 - if ( Utils::is_plugin_active( 'fluent-community/fluent-community.php' ) ) {
69 - add_filter( 'fluent_community/asset_listed_slugs', $add_regex );
70 - add_filter( 'fluent_com_editor/asset_listed_slugs', $add_regex );
71 - }
72 - if ( Utils::is_plugin_active( 'easy-code-manager/easy-code-manager.php' ) ) {
73 - add_filter( 'fluent_snippets_asset_listed_slugs', $add_regex );
74 - }
75 - if ( Utils::is_plugin_active( 'fluentform/fluentform.php' ) ) {
76 - add_filter( 'fluentform/exclude_js_slugs_from_dequeue', function ( $slugs ) {
77 - $slugs[] = 'adminify';
78 - return $slugs;
79 - } );
80 - }
81 - }
82 -
83 - /**
84 - * Gravity Form Custom Footer missing div closing support
85 - */
86 - public function change_admin_footer( $footer_text ) {
87 - $current_screen = get_current_screen();
88 - if ( !empty( $current_screen ) && ($current_screen->id === 'toplevel_page_gf_edit_forms' || $current_screen->id === 'forms_page_gf_new_form') ) {
89 - return $footer_text . '</div>';
90 - }
91 - return $footer_text;
92 - }
93 -
94 - public function plugin_conflicts() {
95 - $adminify_ui = AdminSettings::get_instance()->get( 'admin_ui' );
96 - if ( !empty( $adminify_ui ) ) {
97 - // Motopress Hotel Booking Lite
98 - if ( Utils::is_plugin_active( 'motopress-hotel-booking-lite/motopress-hotel-booking.php' ) ) {
99 - echo '<style>
100 - .wp-adminify.bookings_page_mphb_calendar .widefat thead th,
101 - .wp-adminify.bookings_page_mphb_calendar .widefat tfoot th,
102 - .wp-adminify.bookings_page_mphb_calendar .widefat tbody td {
103 - padding: 0 !important;
104 - }
105 - .adminify-ui .widefat tbody tr td:first-child {
106 - border-left-color: inherit !important;
107 - }
108 - </style>';
109 - }
110 - // Fluent Support
111 - if ( Utils::is_plugin_active( 'fluent-support/fluent-support.php' ) ) {
112 - echo '<style>
113 - body.adminify-ui .fs_main_navbar{width:100%;top:0;left:0;}
114 - </style>';
115 - }
116 - // Fluent Affiliate
117 - if ( Utils::is_plugin_active( 'fluent-affiliate/fluent-affiliate.php' ) ) {
118 - echo '<style>
119 - body.adminify-ui #fluent-affiliate-app #fa_aff_menu {top:0;}
120 - </style>';
121 - }
122 - // Fluent Cart
123 - if ( Utils::is_plugin_active( 'fluent-cart/fluent-cart.php' ) ) {
124 - echo '<style>
125 - body.adminify-ui #wpbody-content #fct_admin_menu_holder .fct_admin_menu_wrap {width:100%;top:0;left:0;}
126 - </style>';
127 - }
128 - // Fluent CRM
129 - if ( Utils::is_plugin_active( 'fluent-crm/fluent-crm.php' ) ) {
130 - echo '<style>
131 - .wp-adminify.adminify-ui .fcrm_topbar {top:0;}
132 - </style>';
133 - }
134 - // WP 7.0+ Command Palette: kill the focus border on the cmdk input
135 - // (Adminify UI input styles bleed in) and wire the Adminify topbar
136 - // item (#adminify-top-menu-command-palette) to open the palette.
137 - echo '<style>
138 - .wp-adminify .commands-command-menu__container input[cmdk-input],
139 - .wp-adminify .commands-command-menu__container input[cmdk-input]:focus,
140 - .wp-adminify .commands-command-menu__container input[cmdk-input]:focus-visible {
141 - border: 0 !important;
142 - outline: 0 !important;
143 - box-shadow: none !important;
144 - }
145 - </style>';
146 - $pxlbsadminify_cmdk_js = "(function(){function openCmd(){try{if(window.wp&&wp.data&&wp.data.dispatch('core/commands')){wp.data.dispatch('core/commands').open();return;}}catch(e){}var isMac=/Mac|iPod|iPhone|iPad/.test(navigator.platform);document.dispatchEvent(new KeyboardEvent('keydown',{key:'k',code:'KeyK',keyCode:75,which:75,ctrlKey:!isMac,metaKey:isMac,bubbles:true,cancelable:true}));}document.addEventListener('click',function(e){var t=e.target&&e.target.closest&&e.target.closest('#adminify-top-menu-command-palette a, .adminify-top-menu-command-palette a');if(!t)return;e.preventDefault();openCmd();});}());";
147 - if ( function_exists( 'wp_print_inline_script_tag' ) ) {
148 - wp_print_inline_script_tag( $pxlbsadminify_cmdk_js );
149 - } else {
150 - echo '<script>' . $pxlbsadminify_cmdk_js . '</script>';
151 - // phpcs:ignore WordPress.WP.EnqueuedResources
152 - }
153 - // WP 7.0 block editor interface skeleton: pin to 0/0 inside Adminify UI.
154 - // WP's default left/top offsets are for the WP admin bar + sidebar which
155 - // Adminify hides — without this, the editor shifts off-origin.
156 - echo '<style>
157 - body.wp-adminify.adminify-ui .editor-editor-interface.edit-post-layout.interface-interface-skeleton,
158 - body.wp-adminify.adminify-ui .interface-interface-skeleton {
159 - left: 0 !important;
160 - top: 0 !important;
161 - }
162 - </style>';
163 - // WPML (sitepress-multilingual-cms) admin language switcher
164 - // (#WPML_ALS) is mirrored into the Adminify topbar. Its language
165 - // links otherwise switch inside the iframe, so the parent admin
166 - // chrome keeps the old language. Force a full top-window reload to
167 - // the chosen language URL so the whole admin re-renders.
168 - if ( Utils::is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ) {
169 - $pxlbsadminify_wpml_js = "(function(){document.addEventListener('click',function(e){var li=e.target&&e.target.closest&&e.target.closest('[id^=\"adminify-top-menu-WPML_ALS_\"]');if(!li)return;var a=li.querySelector('a')||(e.target.closest('a'));if(!a)return;var href=a.getAttribute('href')||a.href;if(!href||href==='#')return;e.preventDefault();e.stopPropagation();window.top.location.href=href;},true);}());";
170 - if ( function_exists( 'wp_print_inline_script_tag' ) ) {
171 - wp_print_inline_script_tag( $pxlbsadminify_wpml_js );
172 - } else {
173 - echo '<script>' . $pxlbsadminify_wpml_js . '</script>';
174 - // phpcs:ignore WordPress.WP.EnqueuedResources
175 - }
176 - }
177 - }
178 - if ( Utils::is_plugin_active( 'squirrly-seo/squirrly.php' ) ) {
179 - // kept as-is for squirrly compat; the generic adminify-ui rule below covers all editor pages
180 - }
181 - if ( Utils::is_plugin_active( 'surecart/surecart.php' ) || Utils::is_plugin_active( 'suremember/suremember.php' ) ) {
182 - if ( !empty( $adminify_ui ) ) {
183 - echo '<style>
184 - .css-wa3qun,.backdrop-blur-sm {
185 - top: 0 !important;
186 - }
187 - #suremembers-settings-content::before, #sc-settings-content::before{
188 - width: 250px !important;
189 - }
190 - </style>';
191 - }
192 - }
193 - if ( Utils::is_plugin_active( 'advanced-database-cleaner-pro/advanced-db-cleaner.php' ) ) {
194 - echo '<style>
195 - .wp-adminify.toplevel_page_advanced_db_cleaner #wpbody-content .wp-list-table.widefat td{
196 - padding: 10px 10px;
197 - }
198 - .wp-adminify.toplevel_page_advanced_db_cleaner #wpbody-content input#aDBc_keep_button_revision {
199 - padding: 0px 3px !important;
200 - line-height: inherit !important;
201 - }
202 - </style>';
203 - }
204 - if ( Utils::is_plugin_active( 'insert-headers-and-footers/ihaf.php' ) ) {
205 - echo '<style>
206 - .wp-adminify .wpcode-code-type-picker, .wp-adminify .wpcode-code-type-picker-backdrop {
207 - left: 0;
208 - }
209 - </style>';
210 - }
211 - if ( Utils::is_plugin_active( 'advanced-access-manager/aam.php' ) ) {
212 - add_filter(
213 - 'pxlbsadminify_menu_option_compatibility_filter',
214 - array($this, 'apply_menu_restrictions_via_filter'),
215 - 10,
216 - 2
217 - );
218 - }
219 - if ( Utils::is_plugin_active( 'meta-box/meta-box.php' ) ) {
220 - echo '<style>
221 - .adminify-ui .og.mb {
222 - left: 0;
223 - }
224 - </style>';
225 - }
226 - if ( Utils::is_plugin_active( 'wp-security-audit-log/wp-security-audit-log.php' ) ) {
227 - echo '<script>
228 - jQuery(document).ready(function($) {
229 - $("body.wp-adminify.adminify-ui ul.frame-adminify-admin-menu li a .frame-adminify-menu-item-name").find("style").remove();
230 -
231 - setInterval(function() {
232 - $("body.wp-adminify.adminify-ui ul.frame-adminify-admin-menu li a .frame-adminify-menu-item-name").find("style").remove();
233 - }, 1000);
234 - });
235 - </script>';
236 - }
237 - if ( Utils::is_plugin_active( 'shopengine/shopengine.php' ) ) {
238 - global $pagenow;
239 - // e.g. "edit.php"
240 - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only check, no state change.
241 - $post_type = ( isset( $_GET['post_type'] ) ? sanitize_key( wp_unslash( $_GET['post_type'] ) ) : '' );
242 - // Build the slug
243 - $slug = ( $post_type ? "{$pagenow}?post_type={$post_type}" : $pagenow );
244 - // Example usage:
245 - if ( $slug === 'edit.php?post_type=shopengine-template' ) {
246 - echo '<style>
247 - #wpfooter {
248 - position: inherit !important;
249 - display: flex;
250 - flex-direction: column-reverse;
251 - }
252 - </style>';
253 - }
254 - }
255 - if ( Utils::is_plugin_active( 'breeze/breeze.php' ) ) {
256 - echo '<script>
257 - jQuery(document).ready(function($) {
258 -
259 - const iframe = document.getElementById("frame-adminify-app--iframe");
260 -
261 - const fileBtn = document.getElementById("adminify-top-menu-breeze-purge-file-group");
262 - const objectCacheBtn = document.getElementById("adminify-top-menu-breeze-purge-object-cache-group");
263 -
264 - if( fileBtn ) {
265 - fileBtn.addEventListener("click", function (e) {
266 - handleClickBreezeBtn("#wp-admin-bar-breeze-purge-file-group");
267 - });
268 - }
269 -
270 - if( objectCacheBtn ) {
271 - objectCacheBtn.addEventListener("click", function (e) {
272 - handleClickBreezeBtn("#wp-admin-bar-breeze-purge-object-cache-group");
273 - });
274 - }
275 -
276 - function handleClickBreezeBtn(selector) {
277 - try {
278 - const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
279 -
280 - // Find and click the button
281 - const button = iframeDoc.querySelector(selector);
282 - if (button) {
283 - button.click();
284 - }
285 - } catch (error) {
286 - console.error("Cannot access iframe content:", error);
287 - }
288 - }
289 - });
290 - </script>';
291 - }
292 - // Redis Object Cache plugin compatibility
293 - if ( Utils::is_plugin_active( 'redis-cache/redis-cache.php' ) ) {
294 - $nonce = wp_create_nonce();
295 - $ajaxurl = esc_url( admin_url( 'admin-ajax.php' ) );
296 - $flushingText = __( 'Flushing cache...', 'adminify' );
297 - echo '<script>
298 - jQuery(document).ready(function($) {
299 - const flushBtn = document.getElementById("adminify-top-menu-redis-cache-flush");
300 - const parentMenu = document.getElementById("adminify-top-menu-redis-cache");
301 -
302 - if (flushBtn) {
303 - const flushLink = flushBtn.querySelector("a");
304 -
305 - flushBtn.addEventListener("click", async function(e) {
306 - e.preventDefault();
307 - e.stopPropagation();
308 -
309 - if (!flushLink) return;
310 -
311 - // Store original text
312 - const originalText = flushLink.textContent || flushLink.innerText;
313 -
314 - // Close dropdown and show flushing text on parent menu
315 - const parentLink = parentMenu ? parentMenu.querySelector("a") : null;
316 - const parentOriginalHTML = parentLink ? parentLink.innerHTML : null;
317 -
318 - if (parentLink) {
319 - parentLink.innerHTML = "' . esc_js( $flushingText ) . '";
320 - }
321 -
322 - // Close dropdown
323 - const dropdown = flushBtn.closest(".adminify-dropdown");
324 - if (dropdown) {
325 - dropdown.classList.remove("show");
326 - }
327 -
328 - try {
329 - const data = new FormData();
330 - data.append("action", "roc_flush_cache");
331 - data.append("nonce", "' . esc_js( $nonce ) . '");
332 -
333 - const response = await fetch("' . esc_url( $ajaxurl ) . '", {
334 - method: "POST",
335 - body: data,
336 - });
337 -
338 - const resultText = await response.text();
339 -
340 - // Show result text
341 - if (parentLink) {
342 - parentLink.innerHTML = resultText;
343 - }
344 -
345 - // Reset to original after 3 seconds
346 - setTimeout(function() {
347 - if (parentLink && parentOriginalHTML) {
348 - parentLink.innerHTML = parentOriginalHTML;
349 - }
350 - }, 3000);
351 -
352 - } catch (error) {
353 - console.error("Object cache could not be flushed:", error);
354 - // Reset on error
355 - if (parentLink && parentOriginalHTML) {
356 - parentLink.innerHTML = parentOriginalHTML;
357 - }
358 - }
359 - });
360 - }
361 - });
362 - </script>';
363 - }
364 - }
365 -
366 - public function apply_menu_restrictions_via_filter( $menu_options, $menu ) {
367 - $aam_options = get_option( 'aam_access_settings', [] );
368 - if ( is_array( $aam_options ) ) {
369 - $simplified_aam_option = $this->simplify_aam_menu_restriction( $aam_options );
370 - $menu_options = $this->update_aam_menu_option( $menu_options, $simplified_aam_option );
371 - }
372 - return $menu_options;
373 - }
374 -
375 - public function simplify_aam_menu_restriction( $aam_option ) {
376 - $simplified_aam_option = [];
377 - foreach ( $aam_option['role'] as $role => $aam_role ) {
378 - if ( !empty( $aam_role['menu'] ) ) {
379 - foreach ( $aam_role['menu'] as $menu_item => $value ) {
380 - if ( !$value ) {
381 - continue;
382 - }
383 - $menu_item = str_replace( 'menu-', '', $menu_item );
384 - if ( !isset( $simplified_aam_option[$menu_item] ) ) {
385 - $simplified_aam_option[$menu_item] = [];
386 - }
387 - $simplified_aam_option[$menu_item][] = $role;
388 - }
389 - }
390 - }
391 - return $simplified_aam_option;
392 - }
393 -
394 - public function update_aam_menu_option( $menu_options, $simplified_aam_option ) {
395 - foreach ( $menu_options as $key => $item ) {
396 - // If this menu item is in restricted list, update hidden_for
397 - if ( isset( $simplified_aam_option[$key] ) ) {
398 - if ( !isset( $item['hidden_for'] ) ) {
399 - $item['hidden_for'] = [];
400 - }
401 - $item['hidden_for'] = array_merge( $item['hidden_for'], $simplified_aam_option[$key] );
402 - $item['hidden_for'] = array_unique( $item['hidden_for'] );
403 - }
404 - // If submenu exists, apply the function recursively
405 - // if (isset($item['submenu']) && is_array($item['submenu'])) {
406 - // $item['submenu'] = update_aam_menu_option($item['submenu'], $simplified_aam_option);
407 - // }
408 - $menu_options[$key] = $item;
409 - }
410 - return $menu_options;
411 - }
412 -
413 - public function reset_theme_conflicts() {
414 - global $pagenow;
415 - if ( $pagenow == 'wp-login.php' || $pagenow == 'wp-register.php' || $pagenow == 'customize.php' ) {
416 - return;
417 - }
418 - $screen = get_current_screen();
28 +
29 + public function jltwp_adminify_reset_theme_conflicts()
30 + {
419 31 $theme = wp_get_theme();
420 - // Neve WordPress Theme
32 + //Neve WordPress Theme
421 33 if ( 'Neve' == $theme->name || 'Neve' == $theme->parent_theme ) {
422 34 wp_enqueue_style(
423 35 'wp-adminify_neve-theme',
424 - PXLBSADMINIFY_ASSETS . 'css/themes/neve.min.css',
36 + WP_ADMINIFY_ASSETS . 'css/themes/neve.css',
425 37 false,
426 - PXLBSADMINIFY_VER
38 + WP_ADMINIFY_VER
427 39 );
428 40 }
429 - // Phlox WordPress Theme
430 - if ( 'Phlox' == $theme->name || 'Phlox' == $theme->parent_theme ) {
431 - echo '<style>
432 - .wp-adminify.adminify-ui #wpcontent .wp-adminify.adminify-top_bar {
433 - opacity: 1 !important;
434 - }
435 - </style>';
436 - }
437 - // Enfold WordPress Theme
438 - if ( 'Enfold' == $theme->name || 'Enfold' == $theme->parent_theme ) {
439 - echo '<style>
440 - .wp-adminify.avia-advanced-editor-enabled #wpadminbar{
441 - display: none !important;
442 - }
443 - </style>';
444 - }
445 - // BrightHub theme compatibility fix
446 - if ( 'BrightHub' == $theme->name || 'BrightHub' == $theme->parent_theme ) {
447 - echo '<style>
448 - body.wp-adminify.adminify-ui.wp-theme-brighthub #wpadminbar,
449 - body.wp-adminify.adminify-ui.wp-theme-brighthub #adminmenumain{
450 - display: none !important;
451 - }
452 - .adminify-toolbar-wrapper .adminify-toolbar ul.adminify-top-menu li.adminify-top-menu-item{
453 - display: flex;
454 - width: auto;
455 - justify-content: center;
456 - align-items: center;
457 - }
458 - </style>';
459 - echo '<script>
460 - document.addEventListener("DOMContentLoaded", function() {
461 - document.documentElement.setAttribute("frame-adminify-app", "true");
462 -
463 - var iframe = document.querySelector(".adminify-frame-wrapper iframe");
464 - if (iframe) {
465 - iframe.addEventListener("load", function() {
466 - try {
467 - iframe.contentDocument.documentElement.setAttribute("frame-adminify-iframe", "true");
468 - } catch(e) {
469 - console.log("Could not access iframe content");
470 - }
471 - });
472 -
473 - try {
474 - if (iframe.contentDocument && iframe.contentDocument.documentElement) {
475 - iframe.contentDocument.documentElement.setAttribute("frame-adminify-iframe", "true");
476 - }
477 - } catch(e) {
478 - // Cross-origin restrictions might prevent access
479 - }
480 - }
481 - });
482 - document.addEventListener("DOMContentLoaded", function() {
483 - var menuItems = document.querySelectorAll(".wp-adminify.adminify-ui .adminify-toolbar-wrapper .adminify-toolbar .adminify-top-menu li");
484 - menuItems.forEach(function(item) {
485 - var link = item.querySelector("a");
486 - var divInLink = item.querySelector("a > div");
487 - if (link && divInLink) {
488 - link.textContent = divInLink.textContent;
489 - }
490 - });
491 - });
492 - </script>';
493 - }
494 41 // Third Party Plugin CSS Conflict
495 - // $pxlbsadminify_plugin_conflict_css = '';
42 + // $jltwp_adminify_plugin_conflict_css = '';
496 43 // if (Utils::is_plugin_active('quillforms/quillforms.php')) {
497 - // $pxlbsadminify_plugin_conflict_css = '//css code here';
498 - // $pxlbsadminify_plugin_conflict_css = preg_replace('#/\*.*?\*/#s', '', $pxlbsadminify_plugin_conflict_css);
499 - // $pxlbsadminify_plugin_conflict_css = preg_replace('/\s*([{}|:;,])\s+/', '$1', $pxlbsadminify_plugin_conflict_css);
500 - // $pxlbsadminify_plugin_conflict_css = preg_replace('/\s\s+(.*)/', '$1', $pxlbsadminify_plugin_conflict_css);
44 + // $jltwp_adminify_plugin_conflict_css = '//css code here';
45 + // $jltwp_adminify_plugin_conflict_css = preg_replace('#/\*.*?\*/#s', '', $jltwp_adminify_plugin_conflict_css);
46 + // $jltwp_adminify_plugin_conflict_css = preg_replace('/\s*([{}|:;,])\s+/', '$1', $jltwp_adminify_plugin_conflict_css);
47 + // $jltwp_adminify_plugin_conflict_css = preg_replace('/\s\s+(.*)/', '$1', $jltwp_adminify_plugin_conflict_css);
501 48 // }
502 49 // $adminify_ui = AdminSettings::get_instance()->get('admin_ui');
503 50 // if (!empty($adminify_ui)) {
504 - // wp_add_inline_style('wp-adminify-admin', wp_strip_all_tags($pxlbsadminify_plugin_conflict_css));
51 + // wp_add_inline_style('wp-adminify-admin', wp_strip_all_tags($jltwp_adminify_plugin_conflict_css));
505 52 // } else {
506 - // wp_add_inline_style('wp-adminify-default-ui', wp_strip_all_tags($pxlbsadminify_plugin_conflict_css));
53 + // wp_add_inline_style('wp-adminify-default-ui', wp_strip_all_tags($jltwp_adminify_plugin_conflict_css));
507 54 // }
508 - if ( Utils::is_plugin_active( 'stackable-ultimate-gutenberg-blocks-premium/plugin.php' ) ) {
509 - echo '<style>
510 - .wp-adminify.adminify-ui #wpcontent .wp-adminify.adminify-top_bar {
511 - opacity: 1 !important;
512 - }
513 - </style>';
514 - }
515 - if ( Utils::is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
516 - echo '<style>
517 - .adminify-ui #woocommerce-embedded-root .woocommerce-layout__header, .adminify-ui .woocommerce-layout .woocommerce-layout__header {
518 - width: 100%;
519 - top: 0;
520 - }
521 - .adminify-ui #woocommerce-embedded-root .woocommerce-layout__header .woocommerce-layout__header-wrapper, .adminify-ui .woocommerce-layout .woocommerce-layout__header .woocommerce-layout__header-wrapper {
522 - margin-right: 1rem;
523 - }
524 - body.woocommerce-page #wpwrap #wpcontent,
525 - body.woocommerce-page.woocommerce_page_wc-admin #wpwrap #wpbody-content {
526 - overflow-x: unset !important;
527 - position: unset !important;
528 - }
529 - </style>';
530 - }
531 55 if ( Utils::is_plugin_active( 'tinymce-templates/tinymce-templates.php' ) ) {
532 - echo '<style>#tinymce-templates-wrap #tinymce-templates-preview { height: 500px !important; }</style>';
56 + echo '<style>#tinymce-templates-wrap #tinymce-templates-preview { height: 500px !important; }</style>' ;
533 57 }
534 - if ( Utils::is_plugin_active( 'elementor/elementor.php' ) ) {
535 - echo '<style>
536 - body.wp-adminify-admin-bar.admin-bar .dialog-lightbox-widget {
537 - height: calc(100vh - 0px) !important;
538 - }
539 - body.wp-adminify-admin-bar.admin-bar #e-admin-top-bar-root{
540 - padding-top: 70px !important;
541 - width: calc(100% + 20px) !important;
542 - margin-left: -20px;
543 - }
544 - body.wp-adminify-admin-bar.admin-bar #e-admin-top-bar-root .e-admin-top-bar{
545 - padding-left: 20px;
546 - }
547 -
548 - body.adminify-ui.e-has-sidebar-navigation #wpwrap #wpcontent #editor-one-top-bar > header {
549 - top: 0!important;
550 - }
551 - body.adminify-ui #wpbody-content #elementor-home-app main header {top: 0!important}
552 - </style>';
553 - }
554 - if ( Utils::is_plugin_active( 'one-click-demo-import/one-click-demo-import.php' ) ) {
555 - echo '<style>
556 - .wp-adminify.appearance_page_one-click-demo-import .button-hero {
557 - min-height: auto !important;
558 - }
559 - </style>';
560 - }
561 - if ( Utils::is_plugin_active( 'wpforms-lite/wpforms.php' ) ) {
562 - if ( Utils::currentpage_id( 'dashboard' ) ) {
563 - wp_enqueue_style(
564 - 'wpforms-full',
565 - WPFORMS_PLUGIN_URL . 'assets/css/frontend/classic/wpforms-full.css',
566 - [],
567 - WPFORMS_VERSION
568 - );
569 - }
570 - }
571 58 if ( Utils::is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
572 - echo '<style>
59 + echo '<style>
573 60 #ed_toolbar{
574 61 width: 100% !important;
575 62 }
576 63 #ed_toolbar #qt_content_dfw{
@@ -576,37 +63,12 @@
576 63 #ed_toolbar #qt_content_dfw{
577 64 line-height: inherit;
578 65 padding: 0;
579 66 }
580 - </style>';
67 + </style>' ;
581 68 }
582 - if ( Utils::is_plugin_active( 'updraftplus/updraftplus.php' ) ) {
583 - echo '<style>
584 - .wp-adminify.settings_page_updraftplus input{
585 - border-radius: 4px !important;
586 - border: 1px solid #CCC !important;
587 - }
588 - .wp-adminify.adminify-dark-mode .updraft_feat_table,
589 - .wp-adminify.adminify-dark-mode .updraft_feat_table td,
590 - .wp-adminify.adminify-dark-mode .updraft_next_scheduled_backups_wrapper > div,
591 - .wp-adminify.adminify-dark-mode .updraft_migrate_widget_module_content{
592 - background: inherit;
593 - }
594 - .wp-adminify.adminify-dark-mode .updraft_premium_cta,
595 - .wp-adminify.adminify-dark-mode .updraft_premium_cta__bottom,
596 - .wp-adminify.adminify-dark-mode .udp-box,
597 - .wp-adminify.adminify-dark-mode .updraftcentral_cloud_connect,
598 - .wp-adminify.adminify-dark-mode .updraft_advert_bottom,
599 - .wp-adminify.adminify-dark-mode #remote-storage-container label{
600 - background: #020407;
601 - }
602 - .wp-adminify.adminify-dark-mode .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{
603 - color: inherit;
604 - }
605 - </style>';
606 - }
607 69 if ( Utils::is_plugin_active( 'tinymce-advanced/tinymce-advanced.php' ) ) {
608 - echo '<style>
70 + echo '<style>
609 71 .wp-editor-container .mce-container-body .mce-menubar.mce-toolbar{
610 72 position: initial !important;
611 73 }
612 74 .wp-editor-container .mce-container-body .mce-toolbar-grp .mce-container-body{
@@ -621,230 +83,141 @@
621 83 #ed_toolbar #qt_content_dfw{
622 84 line-height: inherit;
623 85 padding: 0;
624 86 }
625 - </style>';
87 + </style>' ;
626 88 }
627 - if ( Utils::is_plugin_active( 'email-template-customizer-for-woo/email-template-customizer-for-woo.php' ) ) {
628 - if ( $screen->id === 'edit-viwec_template' ) {
629 - echo '<style>
630 - #wpfooter{
631 - position: relative !important;
632 - display: flex;
633 - flex-direction: column-reverse;
634 - }
635 - </style>';
636 - }
637 - }
638 - if ( Utils::is_plugin_active( 'woocommerce-orders-tracking/woocommerce-orders-tracking.php' ) ) {
639 - if ( $screen->id === 'woocommerce_page_wc-orders' ) {
640 - echo '<style>
641 - #wpfooter{
642 - position: relative !important;
643 - display: block !important;
644 - flex-direction: column-reverse;
645 - }
646 - </style>';
647 - }
648 - }
649 - // Divi Theme - "Edit With Divi" link should reload parent page instead of iframe
650 - if ( 'Divi' == $theme->name || 'Divi' == $theme->parent_theme ) {
651 - echo '<script>
652 - document.addEventListener("DOMContentLoaded", function() {
653 - var iframe = document.getElementById("frame-adminify-app--iframe");
654 - if (!iframe) return;
655 -
656 - function handleDiviLinks(iframeDoc) {
657 - var diviLinks = iframeDoc.querySelectorAll("a[href*=\\"et_fb=1\\"], a.et_pb_toggle_builder_wrapper, a[href*=\\"page=et_divi_options\\"]");
658 - diviLinks.forEach(function(link) {
659 - link.addEventListener("click", function(e) {
660 - e.preventDefault();
661 - e.stopPropagation();
662 - window.top.location.href = link.href;
663 - });
664 - });
665 - }
666 -
667 - iframe.addEventListener("load", function() {
668 - try {
669 - var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
670 - handleDiviLinks(iframeDoc);
671 -
672 - var observer = new MutationObserver(function() {
673 - handleDiviLinks(iframeDoc);
674 - });
675 - observer.observe(iframeDoc.body, { childList: true, subtree: true });
676 - } catch(e) {
677 - console.log("Divi compatibility: Cannot access iframe content");
678 - }
679 - });
680 - });
681 - </script>';
682 - echo '<style>
683 - #adminify-top-menu-et-builder-shortcode-framework,
684 - #adminify-top-menu-et-builder-shortcode-framework-loaded,
685 - #adminify-top-menu-et-builder-shortcode-framework-option,
686 - #adminify-top-menu-et-builder-shortcode-framework-constant,
687 - #adminify-top-menu-et-builder-shortcode-framework-hook,
688 - #adminify-top-menu-et-builder-shortcode-framework-constant-value {
689 - display: none;
690 - }
691 - </style>';
692 - }
693 - if ( Utils::is_plugin_active( 'js_composer/js_composer.php' ) ) {
694 - echo '<style>
695 - .adminify-ui .vc_dropdown-list-item p{
696 - color: #fff;
697 - }
698 - </style>';
699 - }
700 89 // Third Party localize script
701 - wp_localize_script( 'adminify-admin', 'PXLBSADMINIFY_THIRDPARTY', $this->thirdparty_create_js_object() );
90 + wp_localize_script( 'wp-adminify-admin', 'WPAdminify_ThirdParty', $this->thirdparty_create_js_object() );
702 91 }
703 -
704 - public function thirdparty_create_js_object() {
92 +
93 + public function thirdparty_create_js_object()
94 + {
705 95 // betterlinks menu settings
706 96 $betterlinks = [
707 97 'active' => false,
708 98 ];
709 99 if ( Utils::is_plugin_active( 'betterlinks/betterlinks.php' ) ) {
100 +
710 101 if ( is_array( $this->menu_settings ) && array_key_exists( 'betterlinks', $this->menu_settings ) ) {
711 - $menu_name = ( !empty( $this->menu_settings['betterlinks']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['name'] ) : '' );
712 - $submenu_manage = ( !empty( $this->menu_settings['betterlinks']['submenu']['betterlinks']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks']['name'] ) : '' );
713 - $submenu_name = ( !empty( $this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name'] ) : '' );
714 - $submenu_settings = ( !empty( $this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name'] ) : '' );
102 + $menu_name = ( !empty($this->menu_settings['betterlinks']['name']) ? $this->menu_settings['betterlinks']['name'] : '' );
103 + $submenu_manage = ( !empty($this->menu_settings['betterlinks']['submenu']['betterlinks']['name']) ? $this->menu_settings['betterlinks']['submenu']['betterlinks']['name'] : '' );
104 + $submenu_name = ( !empty($this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name']) ? $this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name'] : '' );
105 + $submenu_settings = ( !empty($this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name']) ? $this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name'] : '' );
715 106 $betterlinks = [
716 107 'active' => true,
717 - 'menu_name' => esc_html( $menu_name ),
718 - 'submenu_manage' => esc_html( $submenu_manage ),
719 - 'submenu_name' => esc_html( $submenu_name ),
720 - 'submenu_settings' => esc_html( $submenu_settings ),
108 + 'menu_name' => $menu_name,
109 + 'submenu_manage' => $submenu_manage,
110 + 'submenu_name' => $submenu_name,
111 + 'submenu_settings' => $submenu_settings,
721 112 ];
722 113 }
114 +
723 115 }
724 - return [
116 + return array(
725 117 'ajax_url' => admin_url( 'admin-ajax.php' ),
726 - 'better_links' => wp_kses_post_deep( $betterlinks ),
727 - ];
118 + 'better_links' => $betterlinks,
119 + );
728 120 }
729 -
730 - public function register_actions_on_init() {
121 +
122 + public function register_actions_on_init()
123 + {
731 124 // Brizy Builder
732 - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only check, no state change.
125 +
733 126 if ( isset( $_REQUEST['brizy-edit-iframe'] ) ) {
734 - add_filter( 'pxlbsadminify_defer_skip', '__return_true' );
735 - add_filter( 'pxlbsadminify_skip_removing_dashicons', '__return_true' );
127 + add_filter( 'wp_adminify_defer_skip', '__return_true' );
128 + add_filter( 'wp_adminify_skip_removing_dashicons', '__return_true' );
736 129 }
130 +
737 131 }
738 -
739 - public function register_actions_on_admin_init() {
740 - $adminify_ui = AdminSettings::get_instance()->get( 'admin_ui' );
741 - if ( !empty( $adminify_ui ) ) {
742 - // Commented On: 24-3-24
743 - add_action( 'admin_enqueue_scripts', [$this, 'enqueue_scripts'], 999 );
744 - }
745 - // Commented On: 10-6-24
746 - // add_filter('pxlbsadminify_third_party_styles', [$this, 'register_compatability_styles']);
132 +
133 + public function register_actions_on_admin_init()
134 + {
135 + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ], 999 );
136 + add_filter( 'adminify_third_party_styles', [ $this, 'register_compatability_styles' ] );
747 137 // Fluent CRM
748 138 add_action( 'fluentcrm_skip_no_conflict', '__return_true' );
749 139 // Fluent FORM
750 140 add_action( 'fluentform_skip_no_conflict', '__return_true' );
751 141 }
752 -
142 +
753 143 /**
754 144 * Register Third Party Styles
755 - *
756 145 * @since 1.0.0
757 146 */
758 - public function register_compatability_styles( $plugin_supports ) {
147 + public function register_compatability_styles( $plugin_supports )
148 + {
759 149 if ( !is_array( $plugin_supports ) ) {
760 - $plugin_supports = [];
150 + $plugin_supports = array();
761 151 }
762 - $plugin_dir = PXLBSADMINIFY_ASSETS . 'css/plugins/';
763 - $plugin_files = list_files( PXLBSADMINIFY_PATH . 'assets/css/plugins/', 1 );
764 - if ( !empty( $plugin_files ) ) {
152 + $plugin_dir = WP_ADMINIFY_ASSETS . 'css/plugins/';
153 + $plugin_files = list_files( WP_ADMINIFY_PATH . 'assets/css/plugins/', 1 );
154 + if ( !empty($plugin_files) ) {
765 155 foreach ( $plugin_files as $file ) {
766 - $plugin_supports[wp_basename( $file, '.min.css' )] = $plugin_dir . wp_basename( $file );
156 + $plugin_supports[wp_basename( $file, '.css' )] = $plugin_dir . wp_basename( $file );
767 157 }
768 158 }
769 159 return $plugin_supports;
770 160 }
771 -
161 +
772 162 /**
773 163 * Admin Enqueue Third Party Scripts/Styles
774 164 *
775 165 * @return void
776 166 */
777 - public function enqueue_scripts() {
778 - $plugin_supports = [];
779 - $plugin_supports = apply_filters( 'pxlbsadminify_third_party_styles', $plugin_supports );
167 + public function enqueue_scripts()
168 + {
169 + $plugin_supports = array();
170 + $plugin_supports = apply_filters( 'adminify_third_party_styles', $plugin_supports );
780 171 // Check Plugin Activated for Site Wide
172 +
781 173 if ( is_multisite() ) {
782 174 $active_plugins = get_site_option( 'active_sitewide_plugins' );
783 175 foreach ( $active_plugins as $active_path => $active_plugin ) {
176 +
784 177 if ( is_plugin_active_for_network( $active_path ) ) {
785 178 $string = explode( '/', $active_path );
786 179 $pluginname = $string[0];
787 180 if ( isset( $plugin_supports[$pluginname] ) ) {
788 - if ( $plugin_supports[$pluginname] != '' ) {
181 +
182 + if ( $plugin_supports[$pluginname] != "" ) {
789 183 wp_register_style(
790 - 'adminify_site-wide_' . $pluginname . '_css',
184 + 'wp-adminify_site-wide_' . $pluginname . '_css',
791 185 $plugin_supports[$pluginname],
792 - [],
793 - PXLBSADMINIFY_VER
186 + array(),
187 + WP_ADMINIFY_VER
794 188 );
795 - wp_enqueue_style( 'adminify_site-wide_' . $pluginname . '_css' );
189 + wp_enqueue_style( 'wp-adminify_site-wide_' . $pluginname . '_css' );
796 190 }
191 +
797 192 }
798 193 }
194 +
799 195 }
800 196 }
197 +
801 198 // Check Plugin Activated for Individual Sites
802 199 $activeplugins = get_option( 'active_plugins' );
803 200 foreach ( $activeplugins as $plugin ) {
201 +
804 202 if ( Utils::is_plugin_active( $plugin ) ) {
805 203 $string = explode( '/', $plugin );
806 204 $pluginname = $string[0];
807 205 if ( isset( $plugin_supports[$pluginname] ) ) {
808 - if ( $plugin_supports[$pluginname] != '' ) {
206 +
207 + if ( $plugin_supports[$pluginname] != "" ) {
809 208 wp_register_style(
810 - 'adminify_' . $pluginname . '_css',
209 + 'wp-adminify_' . $pluginname . '_css',
811 210 $plugin_supports[$pluginname],
812 - [],
813 - PXLBSADMINIFY_VER
211 + array(),
212 + WP_ADMINIFY_VER
814 213 );
815 - wp_enqueue_style( 'adminify_' . $pluginname . '_css' );
214 + wp_enqueue_style( 'wp-adminify_' . $pluginname . '_css' );
816 215 }
216 +
817 217 }
818 218 }
219 +
819 220 }
820 221 }
821 222
822 - /**
823 - * Inject layout-tightening CSS INTO the WP 6.3+/7.0 block editor iframe canvas.
824 - *
825 - * The Gutenberg canvas runs inside an iframe; styles enqueued via
826 - * `enqueue_block_editor_assets` only reach the parent admin chrome. The
827 - * `block_editor_settings_all` `styles` array IS injected into the iframe.
828 - *
829 - * The default Gutenberg post-title wrapper carries large block padding which,
830 - * inside Adminify's iframe wrapper (already framed by topbar + sidebar),
831 - * reads as a huge dead area between the editor toolbar and "Add title".
832 - * Compress that wrapper + leading content padding so the title sits close
833 - * under the toolbar.
834 - */
835 - public function block_editor_iframe_layout_tweaks( $settings ) {
836 - // Iframe body padding (Gutenberg ~50-60px default) + root container's first-child
837 - // margin-block-start are the two real sources of the gap above "Add title".
838 - // Multiple selectors cover WP 6.x ("edit-post-*") and WP 7.0+ ("editor-*", new
839 - // "block-editor-iframe__body" body class on the iframe) class renames.
840 - $css = 'html body.block-editor-iframe__body,' . 'html body.editor-styles-wrapper,' . '.block-editor-iframe__body,' . '.editor-styles-wrapper{padding-top:12px !important;margin-top:0 !important;}' . '.is-root-container,' . '.editor-styles-wrapper>.is-root-container,' . '.block-editor-block-list__layout.is-root-container,' . '.is-root-container.is-layout-flow,' . '.is-root-container.is-layout-constrained{padding-top:0 !important;margin-top:0 !important;}' . '.is-root-container>*:first-child,' . '.is-root-container>[data-block]:first-child,' . '.editor-styles-wrapper>[data-block]:first-child,' . '.editor-styles-wrapper>.wp-block:first-child{margin-block-start:0 !important;margin-top:0 !important;padding-top:0 !important;}' . '.wp-block-post-title,' . 'h1.wp-block-post-title,' . '.editor-post-title,' . 'h1.editor-post-title,' . '.editor-post-title__input,' . 'h1.editor-post-title__input{margin:0 !important;margin-block-start:0 !important;padding-top:0 !important;}' . '.edit-post-visual-editor,' . '.editor-visual-editor,' . '.edit-post-visual-editor__post-title-wrapper,' . '.editor-visual-editor__post-title-wrapper,' . '.edit-post-visual-editor__content-area,' . '.editor-visual-editor__content-area{padding-top:0 !important;margin-top:0 !important;}';
841 - if ( !isset( $settings['styles'] ) || !is_array( $settings['styles'] ) ) {
842 - $settings['styles'] = array();
843 - }
844 - $settings['styles'][] = array(
845 - 'css' => $css,
846 - );
847 - return $settings;
848 - }
849 -
850 -}
223 +}