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 -630 4.2.23 → 3.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 <[email protected]>
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,24 +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 - body.adminify-ui #wpbody-content #elementor-home-app main header {top: 0!important}
552 - </style>';
108 + </style>' ;
553 109 }
554 110 if ( Utils::is_plugin_active( 'one-click-demo-import/one-click-demo-import.php' ) ) {
555 - echo '<style>
111 + echo '<style>
556 112 .wp-adminify.appearance_page_one-click-demo-import .button-hero {
557 113 min-height: auto !important;
558 114 }
559 - </style>';
115 + </style>' ;
560 116 }
561 117 if ( Utils::is_plugin_active( 'wpforms-lite/wpforms.php' ) ) {
562 - if ( Utils::currentpage_id( 'dashboard' ) ) {
118 + if ( Utils::jltwp_adminify_currentpage_id( 'dashboard' ) ) {
563 119 wp_enqueue_style(
564 120 'wpforms-full',
565 121 WPFORMS_PLUGIN_URL . 'assets/css/frontend/classic/wpforms-full.css',
566 122 [],
@@ -568,9 +124,9 @@
568 124 );
569 125 }
570 126 }
571 127 if ( Utils::is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
572 - echo '<style>
128 + echo '<style>
573 129 #ed_toolbar{
574 130 width: 100% !important;
575 131 }
576 132 #ed_toolbar #qt_content_dfw{
@@ -576,12 +132,12 @@
576 132 #ed_toolbar #qt_content_dfw{
577 133 line-height: inherit;
578 134 padding: 0;
579 135 }
580 - </style>';
136 + </style>' ;
581 137 }
582 138 if ( Utils::is_plugin_active( 'updraftplus/updraftplus.php' ) ) {
583 - echo '<style>
139 + echo '<style>
584 140 .wp-adminify.settings_page_updraftplus input{
585 141 border-radius: 4px !important;
586 142 border: 1px solid #CCC !important;
587 143 }
@@ -601,12 +157,12 @@
601 157 }
602 158 .wp-adminify.adminify-dark-mode .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{
603 159 color: inherit;
604 160 }
605 - </style>';
161 + </style>' ;
606 162 }
607 163 if ( Utils::is_plugin_active( 'tinymce-advanced/tinymce-advanced.php' ) ) {
608 - echo '<style>
164 + echo '<style>
609 165 .wp-editor-container .mce-container-body .mce-menubar.mce-toolbar{
610 166 position: initial !important;
611 167 }
612 168 .wp-editor-container .mce-container-body .mce-toolbar-grp .mce-container-body{
@@ -621,98 +177,27 @@
621 177 #ed_toolbar #qt_content_dfw{
622 178 line-height: inherit;
623 179 padding: 0;
624 180 }
625 - </style>';
181 + </style>' ;
626 182 }
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 183 // Third Party localize script
701 - 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() );
702 185 }
703 -
704 - public function thirdparty_create_js_object() {
186 +
187 + public function thirdparty_create_js_object()
188 + {
705 189 // betterlinks menu settings
706 190 $betterlinks = [
707 191 'active' => false,
708 192 ];
709 193 if ( Utils::is_plugin_active( 'betterlinks/betterlinks.php' ) ) {
194 +
710 195 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'] ) : '' );
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'] ) : '' );
715 200 $betterlinks = [
716 201 'active' => true,
717 202 'menu_name' => esc_html( $menu_name ),
718 203 'submenu_manage' => esc_html( $submenu_manage ),
@@ -719,8 +204,9 @@
719 204 'submenu_name' => esc_html( $submenu_name ),
720 205 'submenu_settings' => esc_html( $submenu_settings ),
721 206 ];
722 207 }
208 +
723 209 }
724 210 return [
725 211 'ajax_url' => admin_url( 'admin-ajax.php' ),
726 212 'better_links' => wp_kses_post_deep( $betterlinks ),
@@ -725,44 +211,49 @@
725 211 'ajax_url' => admin_url( 'admin-ajax.php' ),
726 212 'better_links' => wp_kses_post_deep( $betterlinks ),
727 213 ];
728 214 }
729 -
730 - public function register_actions_on_init() {
215 +
216 + public function register_actions_on_init()
217 + {
731 218 // Brizy Builder
732 - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only check, no state change.
219 +
733 220 if ( isset( $_REQUEST['brizy-edit-iframe'] ) ) {
734 - add_filter( 'pxlbsadminify_defer_skip', '__return_true' );
735 - 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' );
736 223 }
224 +
737 225 }
738 -
739 - public function register_actions_on_admin_init() {
226 +
227 + public function register_actions_on_admin_init()
228 + {
740 229 $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 );
230 +
231 + if ( !empty($adminify_ui) ) {
232 + add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ], 999 );
233 + // 24-3-24
744 234 }
745 - // Commented On: 10-6-24
746 - // add_filter('pxlbsadminify_third_party_styles', [$this, 'register_compatability_styles']);
235 +
236 + add_filter( 'adminify_third_party_styles', [ $this, 'register_compatability_styles' ] );
747 237 // Fluent CRM
748 238 add_action( 'fluentcrm_skip_no_conflict', '__return_true' );
749 239 // Fluent FORM
750 240 add_action( 'fluentform_skip_no_conflict', '__return_true' );
751 241 }
752 -
242 +
753 243 /**
754 244 * Register Third Party Styles
755 245 *
756 246 * @since 1.0.0
757 247 */
758 - public function register_compatability_styles( $plugin_supports ) {
248 + public function register_compatability_styles( $plugin_supports )
249 + {
759 250 if ( !is_array( $plugin_supports ) ) {
760 251 $plugin_supports = [];
761 252 }
762 - $plugin_dir = PXLBSADMINIFY_ASSETS . 'css/plugins/';
763 - $plugin_files = list_files( PXLBSADMINIFY_PATH . 'assets/css/plugins/', 1 );
764 - 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) ) {
765 256 foreach ( $plugin_files as $file ) {
766 257 $plugin_supports[wp_basename( $file, '.min.css' )] = $plugin_dir . wp_basename( $file );
767 258 }
768 259 }
@@ -767,84 +258,67 @@
767 258 }
768 259 }
769 260 return $plugin_supports;
770 261 }
771 -
262 +
772 263 /**
773 264 * Admin Enqueue Third Party Scripts/Styles
774 265 *
775 266 * @return void
776 267 */
777 - public function enqueue_scripts() {
268 + public function enqueue_scripts()
269 + {
778 270 $plugin_supports = [];
779 - $plugin_supports = apply_filters( 'pxlbsadminify_third_party_styles', $plugin_supports );
271 + $plugin_supports = apply_filters( 'adminify_third_party_styles', $plugin_supports );
780 272 // Check Plugin Activated for Site Wide
273 +
781 274 if ( is_multisite() ) {
782 275 $active_plugins = get_site_option( 'active_sitewide_plugins' );
783 276 foreach ( $active_plugins as $active_path => $active_plugin ) {
277 +
784 278 if ( is_plugin_active_for_network( $active_path ) ) {
785 279 $string = explode( '/', $active_path );
786 280 $pluginname = $string[0];
787 281 if ( isset( $plugin_supports[$pluginname] ) ) {
282 +
788 283 if ( $plugin_supports[$pluginname] != '' ) {
789 284 wp_register_style(
790 - 'adminify_site-wide_' . $pluginname . '_css',
285 + 'wp-adminify_site-wide_' . $pluginname . '_css',
791 286 $plugin_supports[$pluginname],
792 287 [],
793 - PXLBSADMINIFY_VER
288 + WP_ADMINIFY_VER
794 289 );
795 - wp_enqueue_style( 'adminify_site-wide_' . $pluginname . '_css' );
290 + wp_enqueue_style( 'wp-adminify_site-wide_' . $pluginname . '_css' );
796 291 }
292 +
797 293 }
798 294 }
295 +
799 296 }
800 297 }
298 +
801 299 // Check Plugin Activated for Individual Sites
802 300 $activeplugins = get_option( 'active_plugins' );
803 301 foreach ( $activeplugins as $plugin ) {
302 +
804 303 if ( Utils::is_plugin_active( $plugin ) ) {
805 304 $string = explode( '/', $plugin );
806 305 $pluginname = $string[0];
807 306 if ( isset( $plugin_supports[$pluginname] ) ) {
307 +
808 308 if ( $plugin_supports[$pluginname] != '' ) {
809 309 wp_register_style(
810 - 'adminify_' . $pluginname . '_css',
310 + 'wp-adminify_' . $pluginname . '_css',
811 311 $plugin_supports[$pluginname],
812 312 [],
813 - PXLBSADMINIFY_VER
313 + WP_ADMINIFY_VER
814 314 );
815 - wp_enqueue_style( 'adminify_' . $pluginname . '_css' );
315 + wp_enqueue_style( 'wp-adminify_' . $pluginname . '_css' );
816 316 }
317 +
817 318 }
818 319 }
320 +
819 321 }
820 322 }
821 323
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 -}
324 +}