PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 3.2.4.1
Adminify – White Label, Admin Menu Editor, Login Customizer v3.2.4.1
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 +104 -629 4.2.133.2.4.1 View file →
@@ -1,539 +1,100 @@
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 <support@jeweltheme.com>
17 17 */
18 -class ThirdPartyCompatibility {
19 - public $menu_settings;
20 -
21 - public function __construct() {
18 +class ThirdPartyCompatibility
19 +{
20 + public $menu_settings ;
21 + public function __construct()
22 + {
22 23 $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 );
24 + add_action( 'init', [ $this, 'register_actions_on_init' ], 0 );
25 + add_action( 'admin_init', [ $this, 'register_actions_on_admin_init' ], 0 );
25 26 // 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();
27 + add_action( 'admin_enqueue_scripts', [ $this, 'jltwp_adminify_reset_theme_conflicts' ], 999999 );
43 28 }
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;
29 +
30 + public function jltwp_adminify_reset_theme_conflicts()
31 + {
32 + global $pagenow ;
415 33 if ( $pagenow == 'wp-login.php' || $pagenow == 'wp-register.php' || $pagenow == 'customize.php' ) {
416 34 return;
417 35 }
418 - $screen = get_current_screen();
419 36 $theme = wp_get_theme();
420 37 // Neve WordPress Theme
421 38 if ( 'Neve' == $theme->name || 'Neve' == $theme->parent_theme ) {
422 39 wp_enqueue_style(
423 40 'wp-adminify_neve-theme',
424 - PXLBSADMINIFY_ASSETS . 'css/themes/neve.min.css',
41 + WP_ADMINIFY_ASSETS . 'css/themes/neve.min.css',
425 42 false,
426 - PXLBSADMINIFY_VER
43 + WP_ADMINIFY_VER
427 44 );
428 45 }
429 46 // Phlox WordPress Theme
430 47 if ( 'Phlox' == $theme->name || 'Phlox' == $theme->parent_theme ) {
431 - echo '<style>
48 + echo '<style>
432 49 .wp-adminify.adminify-ui #wpcontent .wp-adminify.adminify-top_bar {
433 50 opacity: 1 !important;
434 51 }
435 - </style>';
52 + </style>' ;
436 53 }
437 54 // Enfold WordPress Theme
438 55 if ( 'Enfold' == $theme->name || 'Enfold' == $theme->parent_theme ) {
439 - echo '<style>
56 + echo '<style>
440 57 .wp-adminify.avia-advanced-editor-enabled #wpadminbar{
441 58 display: none !important;
442 59 }
443 - </style>';
60 + </style>' ;
444 61 }
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 62 // Third Party Plugin CSS Conflict
495 - // $pxlbsadminify_plugin_conflict_css = '';
63 + // $jltwp_adminify_plugin_conflict_css = '';
496 64 // 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);
65 + // $jltwp_adminify_plugin_conflict_css = '//css code here';
66 + // $jltwp_adminify_plugin_conflict_css = preg_replace('#/\*.*?\*/#s', '', $jltwp_adminify_plugin_conflict_css);
67 + // $jltwp_adminify_plugin_conflict_css = preg_replace('/\s*([{}|:;,])\s+/', '$1', $jltwp_adminify_plugin_conflict_css);
68 + // $jltwp_adminify_plugin_conflict_css = preg_replace('/\s\s+(.*)/', '$1', $jltwp_adminify_plugin_conflict_css);
501 69 // }
502 70 // $adminify_ui = AdminSettings::get_instance()->get('admin_ui');
503 71 // if (!empty($adminify_ui)) {
504 - // wp_add_inline_style('wp-adminify-admin', wp_strip_all_tags($pxlbsadminify_plugin_conflict_css));
72 + // wp_add_inline_style('wp-adminify-admin', wp_strip_all_tags($jltwp_adminify_plugin_conflict_css));
505 73 // } else {
506 - // wp_add_inline_style('wp-adminify-default-ui', wp_strip_all_tags($pxlbsadminify_plugin_conflict_css));
74 + // wp_add_inline_style('wp-adminify-default-ui', wp_strip_all_tags($jltwp_adminify_plugin_conflict_css));
507 75 // }
508 76 if ( Utils::is_plugin_active( 'stackable-ultimate-gutenberg-blocks-premium/plugin.php' ) ) {
509 - echo '<style>
77 + echo '<style>
510 78 .wp-adminify.adminify-ui #wpcontent .wp-adminify.adminify-top_bar {
511 79 opacity: 1 !important;
512 80 }
513 - </style>';
81 + </style>' ;
514 82 }
515 83 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>';
84 + echo '<style>
85 + body.woocommerce-page #wpwrap #wpcontent,
86 + body.woocommerce-page.woocommerce_page_wc-admin #wpwrap #wpbody-content {
87 + overflow-x: unset !important;
88 + position: unset !important;
89 + }
90 + </style>' ;
530 91 }
531 92 if ( Utils::is_plugin_active( 'tinymce-templates/tinymce-templates.php' ) ) {
532 - echo '<style>#tinymce-templates-wrap #tinymce-templates-preview { height: 500px !important; }</style>';
93 + echo '<style>#tinymce-templates-wrap #tinymce-templates-preview { height: 500px !important; }</style>' ;
533 94 }
534 95 if ( Utils::is_plugin_active( 'elementor/elementor.php' ) ) {
535 - echo '<style>
96 + echo '<style>
536 97 body.wp-adminify-admin-bar.admin-bar .dialog-lightbox-widget {
537 98 height: calc(100vh - 0px) !important;
538 99 }
539 100 body.wp-adminify-admin-bar.admin-bar #e-admin-top-bar-root{
@@ -543,23 +104,19 @@
543 104 }
544 105 body.wp-adminify-admin-bar.admin-bar #e-admin-top-bar-root .e-admin-top-bar{
545 106 padding-left: 20px;
546 107 }
547 -
548 - body.adminify-ui.e-has-sidebar-navigation #wpwrap #wpcontent #editor-one-top-bar > header {
549 - top: 0!important;
550 - }
551 - </style>';
108 + </style>' ;
552 109 }
553 110 if ( Utils::is_plugin_active( 'one-click-demo-import/one-click-demo-import.php' ) ) {
554 - echo '<style>
111 + echo '<style>
555 112 .wp-adminify.appearance_page_one-click-demo-import .button-hero {
556 113 min-height: auto !important;
557 114 }
558 - </style>';
115 + </style>' ;
559 116 }
560 117 if ( Utils::is_plugin_active( 'wpforms-lite/wpforms.php' ) ) {
561 - if ( Utils::currentpage_id( 'dashboard' ) ) {
118 + if ( Utils::jltwp_adminify_currentpage_id( 'dashboard' ) ) {
562 119 wp_enqueue_style(
563 120 'wpforms-full',
564 121 WPFORMS_PLUGIN_URL . 'assets/css/frontend/classic/wpforms-full.css',
565 122 [],
@@ -567,9 +124,9 @@
567 124 );
568 125 }
569 126 }
570 127 if ( Utils::is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
571 - echo '<style>
128 + echo '<style>
572 129 #ed_toolbar{
573 130 width: 100% !important;
574 131 }
575 132 #ed_toolbar #qt_content_dfw{
@@ -575,12 +132,12 @@
575 132 #ed_toolbar #qt_content_dfw{
576 133 line-height: inherit;
577 134 padding: 0;
578 135 }
579 - </style>';
136 + </style>' ;
580 137 }
581 138 if ( Utils::is_plugin_active( 'updraftplus/updraftplus.php' ) ) {
582 - echo '<style>
139 + echo '<style>
583 140 .wp-adminify.settings_page_updraftplus input{
584 141 border-radius: 4px !important;
585 142 border: 1px solid #CCC !important;
586 143 }
@@ -600,12 +157,12 @@
600 157 }
601 158 .wp-adminify.adminify-dark-mode .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{
602 159 color: inherit;
603 160 }
604 - </style>';
161 + </style>' ;
605 162 }
606 163 if ( Utils::is_plugin_active( 'tinymce-advanced/tinymce-advanced.php' ) ) {
607 - echo '<style>
164 + echo '<style>
608 165 .wp-editor-container .mce-container-body .mce-menubar.mce-toolbar{
609 166 position: initial !important;
610 167 }
611 168 .wp-editor-container .mce-container-body .mce-toolbar-grp .mce-container-body{
@@ -620,98 +177,27 @@
620 177 #ed_toolbar #qt_content_dfw{
621 178 line-height: inherit;
622 179 padding: 0;
623 180 }
624 - </style>';
181 + </style>' ;
625 182 }
626 - if ( Utils::is_plugin_active( 'email-template-customizer-for-woo/email-template-customizer-for-woo.php' ) ) {
627 - if ( $screen->id === 'edit-viwec_template' ) {
628 - echo '<style>
629 - #wpfooter{
630 - position: relative !important;
631 - display: flex;
632 - flex-direction: column-reverse;
633 - }
634 - </style>';
635 - }
636 - }
637 - if ( Utils::is_plugin_active( 'woocommerce-orders-tracking/woocommerce-orders-tracking.php' ) ) {
638 - if ( $screen->id === 'woocommerce_page_wc-orders' ) {
639 - echo '<style>
640 - #wpfooter{
641 - position: relative !important;
642 - display: block !important;
643 - flex-direction: column-reverse;
644 - }
645 - </style>';
646 - }
647 - }
648 - // Divi Theme - "Edit With Divi" link should reload parent page instead of iframe
649 - if ( 'Divi' == $theme->name || 'Divi' == $theme->parent_theme ) {
650 - echo '<script>
651 - document.addEventListener("DOMContentLoaded", function() {
652 - var iframe = document.getElementById("frame-adminify-app--iframe");
653 - if (!iframe) return;
654 -
655 - function handleDiviLinks(iframeDoc) {
656 - var diviLinks = iframeDoc.querySelectorAll("a[href*=\\"et_fb=1\\"], a.et_pb_toggle_builder_wrapper, a[href*=\\"page=et_divi_options\\"]");
657 - diviLinks.forEach(function(link) {
658 - link.addEventListener("click", function(e) {
659 - e.preventDefault();
660 - e.stopPropagation();
661 - window.top.location.href = link.href;
662 - });
663 - });
664 - }
665 -
666 - iframe.addEventListener("load", function() {
667 - try {
668 - var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
669 - handleDiviLinks(iframeDoc);
670 -
671 - var observer = new MutationObserver(function() {
672 - handleDiviLinks(iframeDoc);
673 - });
674 - observer.observe(iframeDoc.body, { childList: true, subtree: true });
675 - } catch(e) {
676 - console.log("Divi compatibility: Cannot access iframe content");
677 - }
678 - });
679 - });
680 - </script>';
681 - echo '<style>
682 - #adminify-top-menu-et-builder-shortcode-framework,
683 - #adminify-top-menu-et-builder-shortcode-framework-loaded,
684 - #adminify-top-menu-et-builder-shortcode-framework-option,
685 - #adminify-top-menu-et-builder-shortcode-framework-constant,
686 - #adminify-top-menu-et-builder-shortcode-framework-hook,
687 - #adminify-top-menu-et-builder-shortcode-framework-constant-value {
688 - display: none;
689 - }
690 - </style>';
691 - }
692 - if ( Utils::is_plugin_active( 'js_composer/js_composer.php' ) ) {
693 - echo '<style>
694 - .adminify-ui .vc_dropdown-list-item p{
695 - color: #fff;
696 - }
697 - </style>';
698 - }
699 183 // Third Party localize script
700 - wp_localize_script( 'adminify-admin', 'PXLBSADMINIFY_THIRDPARTY', $this->thirdparty_create_js_object() );
184 + wp_localize_script( 'wp-adminify-admin', 'WPAdminify_ThirdParty', $this->thirdparty_create_js_object() );
701 185 }
702 -
703 - public function thirdparty_create_js_object() {
186 +
187 + public function thirdparty_create_js_object()
188 + {
704 189 // betterlinks menu settings
705 190 $betterlinks = [
706 191 'active' => false,
707 192 ];
708 193 if ( Utils::is_plugin_active( 'betterlinks/betterlinks.php' ) ) {
194 +
709 195 if ( is_array( $this->menu_settings ) && array_key_exists( 'betterlinks', $this->menu_settings ) ) {
710 - $menu_name = ( !empty( $this->menu_settings['betterlinks']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['name'] ) : '' );
711 - $submenu_manage = ( !empty( $this->menu_settings['betterlinks']['submenu']['betterlinks']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks']['name'] ) : '' );
712 - $submenu_name = ( !empty( $this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name'] ) : '' );
713 - $submenu_settings = ( !empty( $this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name'] ) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name'] ) : '' );
196 + $menu_name = ( !empty($this->menu_settings['betterlinks']['name']) ? esc_html( $this->menu_settings['betterlinks']['name'] ) : '' );
197 + $submenu_manage = ( !empty($this->menu_settings['betterlinks']['submenu']['betterlinks']['name']) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks']['name'] ) : '' );
198 + $submenu_name = ( !empty($this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name']) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks-analytics']['name'] ) : '' );
199 + $submenu_settings = ( !empty($this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name']) ? esc_html( $this->menu_settings['betterlinks']['submenu']['betterlinks-settings']['name'] ) : '' );
714 200 $betterlinks = [
715 201 'active' => true,
716 202 'menu_name' => esc_html( $menu_name ),
717 203 'submenu_manage' => esc_html( $submenu_manage ),
@@ -718,8 +204,9 @@
718 204 'submenu_name' => esc_html( $submenu_name ),
719 205 'submenu_settings' => esc_html( $submenu_settings ),
720 206 ];
721 207 }
208 +
722 209 }
723 210 return [
724 211 'ajax_url' => admin_url( 'admin-ajax.php' ),
725 212 'better_links' => wp_kses_post_deep( $betterlinks ),
@@ -724,44 +211,49 @@
724 211 'ajax_url' => admin_url( 'admin-ajax.php' ),
725 212 'better_links' => wp_kses_post_deep( $betterlinks ),
726 213 ];
727 214 }
728 -
729 - public function register_actions_on_init() {
215 +
216 + public function register_actions_on_init()
217 + {
730 218 // Brizy Builder
731 - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only check, no state change.
219 +
732 220 if ( isset( $_REQUEST['brizy-edit-iframe'] ) ) {
733 - add_filter( 'pxlbsadminify_defer_skip', '__return_true' );
734 - add_filter( 'pxlbsadminify_skip_removing_dashicons', '__return_true' );
221 + add_filter( 'wp_adminify_defer_skip', '__return_true' );
222 + add_filter( 'wp_adminify_skip_removing_dashicons', '__return_true' );
735 223 }
224 +
736 225 }
737 -
738 - public function register_actions_on_admin_init() {
226 +
227 + public function register_actions_on_admin_init()
228 + {
739 229 $adminify_ui = AdminSettings::get_instance()->get( 'admin_ui' );
740 - if ( !empty( $adminify_ui ) ) {
741 - // Commented On: 24-3-24
742 - add_action( 'admin_enqueue_scripts', [$this, 'enqueue_scripts'], 999 );
230 +
231 + if ( !empty($adminify_ui) ) {
232 + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ], 999 );
233 + // 24-3-24
743 234 }
744 - // Commented On: 10-6-24
745 - // add_filter('pxlbsadminify_third_party_styles', [$this, 'register_compatability_styles']);
235 +
236 + add_filter( 'adminify_third_party_styles', [ $this, 'register_compatability_styles' ] );
746 237 // Fluent CRM
747 238 add_action( 'fluentcrm_skip_no_conflict', '__return_true' );
748 239 // Fluent FORM
749 240 add_action( 'fluentform_skip_no_conflict', '__return_true' );
750 241 }
751 -
242 +
752 243 /**
753 244 * Register Third Party Styles
754 245 *
755 246 * @since 1.0.0
756 247 */
757 - public function register_compatability_styles( $plugin_supports ) {
248 + public function register_compatability_styles( $plugin_supports )
249 + {
758 250 if ( !is_array( $plugin_supports ) ) {
759 251 $plugin_supports = [];
760 252 }
761 - $plugin_dir = PXLBSADMINIFY_ASSETS . 'css/plugins/';
762 - $plugin_files = list_files( PXLBSADMINIFY_PATH . 'assets/css/plugins/', 1 );
763 - if ( !empty( $plugin_files ) ) {
253 + $plugin_dir = WP_ADMINIFY_ASSETS . 'css/plugins/';
254 + $plugin_files = list_files( WP_ADMINIFY_PATH . 'assets/css/plugins/', 1 );
255 + if ( !empty($plugin_files) ) {
764 256 foreach ( $plugin_files as $file ) {
765 257 $plugin_supports[wp_basename( $file, '.min.css' )] = $plugin_dir . wp_basename( $file );
766 258 }
767 259 }
@@ -766,84 +258,67 @@
766 258 }
767 259 }
768 260 return $plugin_supports;
769 261 }
770 -
262 +
771 263 /**
772 264 * Admin Enqueue Third Party Scripts/Styles
773 265 *
774 266 * @return void
775 267 */
776 - public function enqueue_scripts() {
268 + public function enqueue_scripts()
269 + {
777 270 $plugin_supports = [];
778 - $plugin_supports = apply_filters( 'pxlbsadminify_third_party_styles', $plugin_supports );
271 + $plugin_supports = apply_filters( 'adminify_third_party_styles', $plugin_supports );
779 272 // Check Plugin Activated for Site Wide
273 +
780 274 if ( is_multisite() ) {
781 275 $active_plugins = get_site_option( 'active_sitewide_plugins' );
782 276 foreach ( $active_plugins as $active_path => $active_plugin ) {
277 +
783 278 if ( is_plugin_active_for_network( $active_path ) ) {
784 279 $string = explode( '/', $active_path );
785 280 $pluginname = $string[0];
786 281 if ( isset( $plugin_supports[$pluginname] ) ) {
282 +
787 283 if ( $plugin_supports[$pluginname] != '' ) {
788 284 wp_register_style(
789 - 'adminify_site-wide_' . $pluginname . '_css',
285 + 'wp-adminify_site-wide_' . $pluginname . '_css',
790 286 $plugin_supports[$pluginname],
791 287 [],
792 - PXLBSADMINIFY_VER
288 + WP_ADMINIFY_VER
793 289 );
794 - wp_enqueue_style( 'adminify_site-wide_' . $pluginname . '_css' );
290 + wp_enqueue_style( 'wp-adminify_site-wide_' . $pluginname . '_css' );
795 291 }
292 +
796 293 }
797 294 }
295 +
798 296 }
799 297 }
298 +
800 299 // Check Plugin Activated for Individual Sites
801 300 $activeplugins = get_option( 'active_plugins' );
802 301 foreach ( $activeplugins as $plugin ) {
302 +
803 303 if ( Utils::is_plugin_active( $plugin ) ) {
804 304 $string = explode( '/', $plugin );
805 305 $pluginname = $string[0];
806 306 if ( isset( $plugin_supports[$pluginname] ) ) {
307 +
807 308 if ( $plugin_supports[$pluginname] != '' ) {
808 309 wp_register_style(
809 - 'adminify_' . $pluginname . '_css',
310 + 'wp-adminify_' . $pluginname . '_css',
810 311 $plugin_supports[$pluginname],
811 312 [],
812 - PXLBSADMINIFY_VER
313 + WP_ADMINIFY_VER
813 314 );
814 - wp_enqueue_style( 'adminify_' . $pluginname . '_css' );
315 + wp_enqueue_style( 'wp-adminify_' . $pluginname . '_css' );
815 316 }
317 +
816 318 }
817 319 }
320 +
818 321 }
819 322 }
820 323
821 - /**
822 - * Inject layout-tightening CSS INTO the WP 6.3+/7.0 block editor iframe canvas.
823 - *
824 - * The Gutenberg canvas runs inside an iframe; styles enqueued via
825 - * `enqueue_block_editor_assets` only reach the parent admin chrome. The
826 - * `block_editor_settings_all` `styles` array IS injected into the iframe.
827 - *
828 - * The default Gutenberg post-title wrapper carries large block padding which,
829 - * inside Adminify's iframe wrapper (already framed by topbar + sidebar),
830 - * reads as a huge dead area between the editor toolbar and "Add title".
831 - * Compress that wrapper + leading content padding so the title sits close
832 - * under the toolbar.
833 - */
834 - public function block_editor_iframe_layout_tweaks( $settings ) {
835 - // Iframe body padding (Gutenberg ~50-60px default) + root container's first-child
836 - // margin-block-start are the two real sources of the gap above "Add title".
837 - // Multiple selectors cover WP 6.x ("edit-post-*") and WP 7.0+ ("editor-*", new
838 - // "block-editor-iframe__body" body class on the iframe) class renames.
839 - $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;}';
840 - if ( !isset( $settings['styles'] ) || !is_array( $settings['styles'] ) ) {
841 - $settings['styles'] = array();
842 - }
843 - $settings['styles'][] = array(
844 - 'css' => $css,
845 - );
846 - return $settings;
847 - }
848 -
849 -}
324 +}