/** * Header Footer Elementor - Simple Editor Bar Integration * Based on SureRank implementation pattern */ (function() { 'use strict'; // Flag to prevent duplicate button creation let hfeButtonAdded = false; // Helper function to add button to Elementor editor bar using jQuery (like SureRank) function addHFEButtonToElementorBar() { // Prevent duplicate buttons if (hfeButtonAdded) { return; } // Only show button if UAE Pro is NOT active if (window.hfeEditorConfig && window.hfeEditorConfig.isUAEPro) { return; } // Use jQuery like SureRank does const $ = window.jQuery; if (!$) { return; } // Wait a minimal time for Elementor to be ready setTimeout(() => { // Check if HFE button already exists (be specific, don't check for SureRank) if ($('#hfe-dashboard-button').length > 0) { hfeButtonAdded = true; return; } // Look for the same selector pattern that SureRank uses const targetContainer = $('#elementor-editor-wrapper-v2 header .MuiGrid-root:nth-child(3) .MuiStack-root'); if (targetContainer.length) { // Get existing button classes from SureRank pattern const existingButton = targetContainer.find('button').first(); const buttonClasses = existingButton.length ? existingButton.attr('class') : 'MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium'; const svgClasses = existingButton.find('svg').attr('class') || 'MuiSvgIcon-root MuiSvgIcon-fontSizeMedium'; // Create HFE button wrapper const hfeWrapper = $('
'); const buttonContainer = $(''); // Create HFE button with plugin icon const iconUrl = window.hfeEditorConfig && window.hfeEditorConfig.iconUrl ? window.hfeEditorConfig.iconUrl : '/wp-content/plugins/header-footer-elementor/assets/images/settings/logo.svg'; const hfeButton = $(` `).on('click', function() { // Always redirect to HFE dashboard. const adminUrl = window.hfeEditorConfig && window.hfeEditorConfig.adminUrl ? window.hfeEditorConfig.adminUrl : '/wp-admin/admin.php?page=hfe#dashboard'; window.open(adminUrl, '_blank'); }); // Add conditional tooltip functionality function getTooltipText() { // Default tooltip return window.hfeEditorConfig && window.hfeEditorConfig.strings && window.hfeEditorConfig.strings.headerFooterBuilder ? window.hfeEditorConfig.strings.headerFooterBuilder : 'Header Footer Builder'; } hfeButton.hover( function() { // Show conditional tooltip on hover const tooltipText = getTooltipText(); $(this).attr('title', tooltipText); }, function() { // Hide tooltip $(this).removeAttr('title'); } ); buttonContainer.append(hfeButton); hfeWrapper.append(buttonContainer); // Insert after the last button (like SureRank does) targetContainer.children().last().after(hfeWrapper); hfeButtonAdded = true; } }, 500); } // Initialize when Elementor is ready (following SureRank pattern) function initializeHFEButton() { // Check if we're in Elementor editor if (!window.elementor) { return; } addHFEButtonToElementorBar(); } // Use the same initialization pattern as SureRank window.addEventListener('elementor/frontend/init', () => { setTimeout(initializeHFEButton, 200); }); // Also try direct initialization if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { setTimeout(initializeHFEButton, 300); }); } else { setTimeout(initializeHFEButton, 300); } // Fallback with window load window.addEventListener('load', () => { setTimeout(initializeHFEButton, 500); }); })();