PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.1.17
Adminify – White Label, Admin Menu Editor, Login Customizer v4.1.17
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 4.1.17 All 164 releases
adminify / Inc / Classes / ThirdPartyCompatibility.php

ThirdPartyCompatibility.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.1.17, at Inc/Classes/ThirdPartyCompatibility.php

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