term_id); $location_descriptions = []; foreach ($location_names as $location_name) { $location_descriptions[] = $location_name; } $location_string = implode(', ', $location_descriptions); $menu_location_pairs[$menu->name] = $menu->name . (empty($location_string) ? '' : " (Location: $location_string)"); } $settings_updated = false; if ($_SERVER['REQUEST_METHOD'] === 'POST') { foreach ($menus as $menu) { $menu_slug = sanitize_title($menu->name); $menu_name = ampro_clean_menu_names($menu_slug); if (isset($_POST['bame1-settings-nonce-' . $menu_slug]) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['bame1-settings-nonce-' . $menu_slug])), 'bame1-settings-save')) { if (isset($_POST['ampro_breakpoint_width_' . $menu_name])) { update_option('ampro_breakpoint_width_' . $menu_name, intval($_POST['ampro_breakpoint_width_' . $menu_name])); } if (isset($_POST['ampro_submenu_element_width_' . $menu_name])) { update_option('ampro_submenu_element_width_' . $menu_name, intval($_POST['ampro_submenu_element_width_' . $menu_name])); } if (isset($_POST['ampro_parent_background_color_transparent_checkbox_' . $menu_name])) { update_option('ampro_parent_background_color_' . $menu_name, 'transparent'); } else { update_option('ampro_parent_background_color_' . $menu_name, sanitize_hex_color($_POST['ampro_parent_background_color_' . $menu_name])); } update_option('ampro_parent_hover_background_color_' . $menu_name, sanitize_hex_color($_POST['ampro_parent_hover_background_color_' . $menu_name])); update_option('ampro_submenu_background_color_' . $menu_name, sanitize_hex_color($_POST['ampro_submenu_background_color_' . $menu_name])); update_option('ampro_submenu_hover_background_color_' . $menu_name, sanitize_hex_color($_POST['ampro_submenu_hover_background_color_' . $menu_name])); update_option('ampro_parent_text_color_' . $menu_name, sanitize_hex_color($_POST['ampro_parent_text_color_' . $menu_name])); update_option('ampro_parent_hover_text_color_' . $menu_name, sanitize_hex_color($_POST['ampro_parent_hover_text_color_' . $menu_name])); update_option('ampro_submenu_text_color_' . $menu_name, sanitize_hex_color($_POST['ampro_submenu_text_color_' . $menu_name])); update_option('ampro_submenu_hover_text_color_' . $menu_name, sanitize_hex_color($_POST['ampro_submenu_hover_text_color_' . $menu_name])); update_option('ampro_parent_font_size_' . $menu_name, intval($_POST['ampro_parent_font_size_' . $menu_name])); update_option('ampro_submenu_font_size_' . $menu_name, intval($_POST['ampro_submenu_font_size_' . $menu_name])); update_option('ampro_parent_arrow_element_height_' . $menu_name, intval($_POST['ampro_parent_arrow_element_height_' . $menu_name])); update_option('ampro_submenu_arrow_element_height_' . $menu_name, intval($_POST['ampro_submenu_arrow_element_height_' . $menu_name])); update_option('ampro_parent_font_' . $menu_name, sanitize_text_field($_POST['ampro_parent_font_' . $menu_name])); update_option('ampro_parent_font_style_' . $menu_name, sanitize_text_field($_POST['ampro_parent_font_style_' . $menu_name])); update_option('ampro_submenu_font_' . $menu_name, sanitize_text_field($_POST['ampro_submenu_font_' . $menu_name])); update_option('ampro_submenu_font_style_' . $menu_name, sanitize_text_field($_POST['ampro_submenu_font_style_' . $menu_name])); update_option('ampro_parent_text_transform_' . $menu_name, sanitize_text_field($_POST['ampro_parent_text_transform_' . $menu_name])); update_option('ampro_submenu_text_transform_' . $menu_name, sanitize_text_field($_POST['ampro_submenu_text_transform_' . $menu_name])); $parent_link_padding_top_option_name = "ampro_parent_link_padding_top_" . $menu_name; $parent_link_padding_right_option_name = "ampro_parent_link_padding_right_" . $menu_name; $parent_link_padding_bottom_option_name = "ampro_parent_link_padding_bottom_" . $menu_name; $parent_link_padding_left_option_name = "ampro_parent_link_padding_left_" . $menu_name; update_option($parent_link_padding_top_option_name, intval($_POST[$parent_link_padding_top_option_name])); update_option($parent_link_padding_right_option_name, intval($_POST[$parent_link_padding_right_option_name])); update_option($parent_link_padding_bottom_option_name, intval($_POST[$parent_link_padding_bottom_option_name])); update_option($parent_link_padding_left_option_name, intval($_POST[$parent_link_padding_left_option_name])); $submenu_link_padding_top_option_name = "ampro_submenu_link_padding_top_" . $menu_name; $submenu_link_padding_right_option_name = "ampro_submenu_link_padding_right_" . $menu_name; $submenu_link_padding_bottom_option_name = "ampro_submenu_link_padding_bottom_" . $menu_name; $submenu_link_padding_left_option_name = "ampro_submenu_link_padding_left_" . $menu_name; update_option($submenu_link_padding_top_option_name, intval($_POST[$submenu_link_padding_top_option_name])); update_option($submenu_link_padding_right_option_name, intval($_POST[$submenu_link_padding_right_option_name])); update_option($submenu_link_padding_bottom_option_name, intval($_POST[$submenu_link_padding_bottom_option_name])); update_option($submenu_link_padding_left_option_name, intval($_POST[$submenu_link_padding_left_option_name])); if (isset($_POST['ampro_justify_content_' . $menu_name])) { update_option('ampro_justify_content_' . $menu_name, sanitize_text_field($_POST['ampro_justify_content_' . $menu_name])); } update_option('ampro_submenu_mode_' . $menu_name, sanitize_text_field($_POST['ampro_submenu_mode_' . $menu_name])); if (isset($_POST['ampro_mobile_menu_button_background_color_' . $menu_name])) { update_option('ampro_mobile_menu_button_background_color_' . $menu_name, sanitize_hex_color($_POST['ampro_mobile_menu_button_background_color_' . $menu_name])); } if (isset($_POST['ampro_mobile_menu_overlay_background_color_' . $menu_name])) { update_option('ampro_mobile_menu_overlay_background_color_' . $menu_name, sanitize_hex_color($_POST['ampro_mobile_menu_overlay_background_color_' . $menu_name])); } if (isset($_POST['ampro_mobile_menu_button_font_' . $menu_name])) { update_option('ampro_mobile_menu_button_font_' . $menu_name, sanitize_text_field($_POST['ampro_mobile_menu_button_font_' . $menu_name])); } if (isset($_POST['ampro_mobile_menu_button_font_style_' . $menu_name])) { update_option('ampro_mobile_menu_button_font_style_' . $menu_name, sanitize_text_field($_POST['ampro_mobile_menu_button_font_style_' . $menu_name])); } if (isset($_POST['ampro_mobile_menu_button_font_size_' . $menu_name])) { update_option('ampro_mobile_menu_button_font_size_' . $menu_name, intval($_POST['ampro_mobile_menu_button_font_size_' . $menu_name])); } if (isset($_POST['ampro_mobile_menu_button_text_color_' . $menu_name])) { update_option('ampro_mobile_menu_button_text_color_' . $menu_name, sanitize_hex_color($_POST['ampro_mobile_menu_button_text_color_' . $menu_name])); } $settings_updated = true; } } // Display the settings updated message if any settings were changed if ($settings_updated) { echo '

Settings updated.

'; } } if (empty(get_option('ampro_primary'))) { echo '

Warning: No primary menu is set. The primary menu is usually at the top of your website and is displayed when the Menu button is tapped on mobile devices. Go to the General tab to set.

'; } $active_menu_tab = isset($_POST['active_menu_tab']) ? sanitize_text_field(wp_unslash($_POST['active_menu_tab'])) : ampro_clean_menu_names(array_keys($menu_location_pairs)[0]); ?>

Appearance & Style

'; echo '
'; echo '
'; echo '

Choose the menu you would like to modify:

'; echo '
    '; foreach ($menu_location_pairs as $menu_name => $menu_description) { $a = $active_menu_tab === ampro_clean_menu_names($menu_name) ? "bame1-active" : ""; echo '
  • ' . esc_html($menu_description) . '
  • '; } echo '
'; echo '
'; echo '
'; $primary_menu_name = get_option('ampro_primary'); foreach ($menus as $menu) { $menu_slug = sanitize_title($menu->name); $menu_name = ampro_clean_menu_names($menu_slug); $menu_description = $menu_location_pairs[$menu->name]; $a = $active_menu_tab === ampro_clean_menu_names($menu_name) ? 'block' : 'none'; echo '
'; echo '

Menu: ' . esc_html($menu_description) . '

'; echo '
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo wp_nonce_field('bame1-settings-save', 'bame1-settings-nonce-' . $menu_slug); echo ''; echo ''; echo ''; if ($menu_name == ampro_clean_menu_names($primary_menu_name)) { $justify_content_option_name = "ampro_justify_content_" . $menu_name; $justify_content = get_option($justify_content_option_name, "center"); echo ''; echo ''; echo ''; echo ''; $submenu_mode_option_name = "ampro_submenu_mode_" . $menu_name; $submenu_mode = get_option($submenu_mode_option_name, "On hover"); echo ''; echo ''; echo ''; echo ''; $submenu_element_width_option_name = "ampro_submenu_element_width_" . $menu_name; $submenu_element_width = get_option($submenu_element_width_option_name, 200); echo ''; echo ''; echo ''; echo ''; } else { $submenu_mode_option_name = "ampro_submenu_mode_" . $menu_name; $submenu_mode = get_option($submenu_mode_option_name); echo ''; echo ''; echo ''; echo ''; } echo ''; $parent_background_color_option_name = "ampro_parent_background_color_" . $menu_name; $parent_background_color_transparent_option_name = "ampro_parent_background_color_transparent_checkbox_" . $menu_name; $parent_background_color = get_option($parent_background_color_option_name, '#ffffff'); $is_transparent = ($parent_background_color === "transparent"); echo ''; echo ''; echo ''; echo ''; $parent_hover_background_color_option_name = "ampro_parent_hover_background_color_" . $menu_name; $parent_hover_background_color = get_option($parent_hover_background_color_option_name, '#DEDDFF'); echo ''; echo ''; echo ''; echo ''; $fonts = ampro_get_plugin_fonts(); ampro_add_default_system_fonts($fonts); $parent_font_option_name = "ampro_parent_font_" . $menu_name; $parent_font = get_option($parent_font_option_name, 'Arial'); $parent_font_style_option_name = "ampro_parent_font_style_" . $menu_name; $parent_font_style = get_option($parent_font_style_option_name, 'regular'); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; $font_size_option_name = "ampro_parent_font_size_" . $menu_name; $font_size = get_option($font_size_option_name, '16'); // Default font size is 16px echo ''; echo ''; echo ''; echo ''; $parent_arrow_element_height_option_name = "ampro_parent_arrow_element_height_" . $menu_name; $parent_arrow_element_height = get_option($parent_arrow_element_height_option_name, '48'); echo ''; echo ''; echo ''; echo ''; $parent_text_transform_option_name = "ampro_parent_text_transform_" . $menu_name; $parent_text_transform = get_option($parent_text_transform_option_name, "none"); echo ''; echo ''; echo ''; echo ''; $parent_text_color_option_name = "ampro_parent_text_color_" . $menu_name; $parent_text_color = get_option($parent_text_color_option_name, '#000000'); echo ''; echo ''; echo ''; echo ''; $parent_text_hover_color_option_name = "ampro_parent_hover_text_color_" . $menu_name; $parent_text_hover_color = get_option($parent_text_hover_color_option_name, '#000000'); echo ''; echo ''; echo ''; echo ''; $parent_link_padding_top_option_name = "ampro_parent_link_padding_top_" . $menu_name; $parent_link_padding_right_option_name = "ampro_parent_link_padding_right_" . $menu_name; $parent_link_padding_bottom_option_name = "ampro_parent_link_padding_bottom_" . $menu_name; $parent_link_padding_left_option_name = "ampro_parent_link_padding_left_" . $menu_name; // Default padding value $default_padding = '15'; echo ''; echo ''; echo ''; echo ''; echo ''; $submenu_background_color_option_name = "ampro_submenu_background_color_" . $menu_name; $submenu_background_color = get_option($submenu_background_color_option_name, '#DEDDFF'); echo ''; echo ''; echo ''; echo ''; $submenu_hover_background_color_option_name = "ampro_submenu_hover_background_color_" . $menu_name; $submenu_hover_background_color = get_option($submenu_hover_background_color_option_name, '#B3DEFF'); echo ''; echo ''; echo ''; echo ''; $submenu_font_option_name = "ampro_submenu_font_" . $menu_name; $submenu_font = get_option($submenu_font_option_name, 'Arial'); $submenu_font_style_option_name = "ampro_submenu_font_style_" . $menu_name; $submenu_font_style = get_option($submenu_font_style_option_name, 'regular'); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; $submenu_font_size_option_name = "ampro_submenu_font_size_" . $menu_name; $submenu_font_size = get_option($submenu_font_size_option_name, '12'); echo ''; echo ''; echo ''; echo ''; $submenu_arrow_element_height_option_name = "ampro_submenu_arrow_element_height_" . $menu_name; $submenu_arrow_element_height = get_option($submenu_arrow_element_height_option_name, '48'); echo ''; echo ''; echo ''; echo ''; $submenu_text_transform_option_name = "ampro_submenu_text_transform_" . $menu_name; $submenu_text_transform = get_option($submenu_text_transform_option_name, "none"); echo ''; echo ''; echo ''; echo ''; $submenu_text_color_option_name = "ampro_submenu_text_color_" . $menu_name; $submenu_text_color = get_option($submenu_text_color_option_name, '#000000'); echo ''; echo ''; echo ''; echo ''; $submenu_text_hover_color_option_name = "ampro_submenu_hover_text_color_" . $menu_name; $submenu_text_hover_color = get_option($submenu_text_hover_color_option_name, '#000000'); echo ''; echo ''; echo ''; echo ''; $submenu_link_padding_top_option_name = "ampro_submenu_link_padding_top_" . $menu_name; $submenu_link_padding_right_option_name = "ampro_submenu_link_padding_right_" . $menu_name; $submenu_link_padding_bottom_option_name = "ampro_submenu_link_padding_bottom_" . $menu_name; $submenu_link_padding_left_option_name = "ampro_submenu_link_padding_left_" . $menu_name; // Default padding value $default_padding = '15'; echo ''; echo ''; echo ''; echo ''; if ($menu_name == ampro_clean_menu_names($primary_menu_name)) { // Mobile menu echo ''; $breakpoint_width_option_name = "ampro_breakpoint_width_" . $menu_name; $breakpoint_width = get_option($breakpoint_width_option_name, 1200); echo ''; echo ''; echo ''; echo ''; $mobile_menu_overlay_background_color_option_name = "ampro_mobile_menu_overlay_background_color_" . $menu_name; $mobile_menu_overlay_background_color = get_option($mobile_menu_overlay_background_color_option_name, "#008080"); echo ''; echo ''; echo ''; echo ''; // mobile menu panel background color $mobile_menu_button_background_color_option_name = "ampro_mobile_menu_button_background_color_" . $menu_name; $mobile_menu_button_background_color = get_option($mobile_menu_button_background_color_option_name, '#ffffff'); echo ''; echo ''; echo ''; echo ''; $mobile_menu_button_font_option_name = 'ampro_mobile_menu_button_font_' . $menu_name; $mobile_menu_button_font = get_option($mobile_menu_button_font_option_name, 'Arial'); $mobile_menu_button_font_style_option_name = 'ampro_mobile_menu_button_font_style_' . $menu_name; $mobile_menu_button_font_style = get_option($mobile_menu_button_font_style_option_name, 'regular'); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; $mobile_menu_button_font_size_option_name = "ampro_mobile_menu_button_font_size_" . $menu_name; $mobile_menu_button_font_size = get_option($mobile_menu_button_font_size_option_name, '12'); echo ''; echo ''; echo ''; echo ''; $mobile_menu_button_text_color_option_name = "ampro_mobile_menu_button_text_color_" . $menu_name; $mobile_menu_button_text_color = get_option($mobile_menu_button_text_color_option_name, '#000000'); echo ''; echo ''; echo ''; echo ''; } // JavaScript for updating the font styles dropdown dynamically $ampro_custom_js = ' document.addEventListener("DOMContentLoaded", function() { var colorInput = document.getElementById("' . esc_attr($parent_background_color_option_name) . '"); var checkbox = document.getElementById("' . esc_attr($parent_background_color_transparent_option_name) . '"); if (checkbox.checked) { colorInput.disabled = true; colorInput.value = "#ffffff"; } checkbox.addEventListener("change", function() { if (checkbox.checked) { colorInput.disabled = true; colorInput.value = "#ffffff"; } else { colorInput.disabled = false; } }); var parentFontSelect = document.getElementById("' . esc_attr($parent_font_option_name) . '"); var styleSelect = document.getElementById("' . esc_attr($parent_font_style_option_name) . '"); var fonts = ' . wp_json_encode($fonts) . '; var savedStyle = "' . esc_attr($parent_font_style) . '"; // Get the saved style option from PHP parentFontSelect.addEventListener("change", function() { var selectedFont = parentFontSelect.value; styleSelect.innerHTML = ""; // Clear existing options // Populate style dropdown with styles of the selected font if (fonts[selectedFont]) { fonts[selectedFont].forEach(function(style) { var option = document.createElement("option"); option.value = style; option.textContent = style; option.selected = (style === savedStyle); // Set selected based on saved value styleSelect.appendChild(option); }); } }); // Initially populate the style dropdown and set the correct selected option parentFontSelect.dispatchEvent(new Event("change")); var submenuFontSelect = document.getElementById("' . esc_attr($submenu_font_option_name) . '"); var submenuStyleSelect = document.getElementById("' . esc_attr($submenu_font_style_option_name) . '"); var submenuFonts = ' . wp_json_encode($fonts) . '; var submenuSavedStyle = "' . esc_attr($submenu_font_style) . '"; // Get the saved style option from PHP submenuFontSelect.addEventListener("change", function() { var selectedFont = submenuFontSelect.value; submenuStyleSelect.innerHTML = ""; // Clear existing options // Populate style dropdown with styles of the selected font if (submenuFonts[selectedFont]) { submenuFonts[selectedFont].forEach(function(style) { var option = document.createElement("option"); option.value = style; option.textContent = style; option.selected = (style === submenuSavedStyle); // Set selected based on saved value submenuStyleSelect.appendChild(option); }); } }); // Initially populate the style dropdown and set the correct selected option submenuFontSelect.dispatchEvent(new Event("change")); var mobileMenuButtonFontSelect = document.getElementById("' . esc_attr($mobile_menu_button_font_option_name) . '"); var mobileMenuButtonStyleSelect = document.getElementById("' . esc_attr($mobile_menu_button_font_style_option_name) . '"); var mobileMenuButtonFonts = ' . wp_json_encode($fonts) . '; var mobileMenuButtonSavedStyle = "' . esc_attr($mobile_menu_button_font_style) . '"; // Get the saved style option from PHP mobileMenuButtonFontSelect.addEventListener("change", function() { var selectedFont = mobileMenuButtonFontSelect.value; mobileMenuButtonStyleSelect.innerHTML = ""; // Clear existing options // Populate style dropdown with styles of the selected font if (mobileMenuButtonFonts[selectedFont]) { mobileMenuButtonFonts[selectedFont].forEach(function(style) { var option = document.createElement("option"); option.value = style; option.textContent = style; option.selected = (style === mobileMenuButtonSavedStyle); // Set selected based on saved value mobileMenuButtonStyleSelect.appendChild(option); }); } }); // Initially populate the style dropdown and set the correct selected option mobileMenuButtonFontSelect.dispatchEvent(new Event("change")); }); '; accessibilityMenuProLoadCustomJs($ampro_custom_js); echo '

General

'; echo ''; echo '
'; echo ''; echo '
'; echo ' px'; echo '
'; echo ''; echo '

Parent elements

'; echo ''; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ' px'; echo '
'; echo ' px'; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
Parent link padding (px)'; // Padding Top $parent_link_padding_top_value = get_option($parent_link_padding_top_option_name, $default_padding); echo ''; echo ' px '; // Padding Right $parent_link_padding_right_value = get_option($parent_link_padding_right_option_name, $default_padding); echo ''; echo ' px '; // Padding Bottom $parent_link_padding_bottom_value = get_option($parent_link_padding_bottom_option_name, $default_padding); echo ''; echo ' px '; // Padding Left $parent_link_padding_left_value = get_option($parent_link_padding_left_option_name, $default_padding); echo ''; echo ' px '; echo '

Submenu elements

'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ' px'; echo '
'; echo ' px'; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
Submenu link padding (px)'; // Padding Top $submenu_link_padding_top_value = get_option($submenu_link_padding_top_option_name, $default_padding); echo ''; echo ' px '; // Padding Right $submenu_link_padding_right_value = get_option($submenu_link_padding_right_option_name, $default_padding); echo ''; echo ' px '; // Padding Bottom $submenu_link_padding_bottom_value = get_option($submenu_link_padding_bottom_option_name, $default_padding); echo ''; echo ' px '; // Padding Left $submenu_link_padding_left_value = get_option($submenu_link_padding_left_option_name, $default_padding); echo ''; echo ' px '; echo '

Mobile Menu

'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ''; echo '
'; echo ' px'; echo '
'; echo ''; echo '
'; submit_button('Save Changes'); echo '
'; echo '
'; } echo '
'; echo '
'; echo '
'; ?> 1) { $font_name = trim($name_parts[0]); // This will contain the entire name part before "-v" $version_style = 'v' . $name_parts[1]; // Restores the initial 'v' and contains the version and style // Check if the version_style contains 'italic', and split it accordingly if (preg_match('/italic/', $version_style)) { $font_style = preg_replace('/\.woff2$/', '', $version_style); // Removes file extension if present } else { $font_style = preg_replace('/\.woff2$/', '', $version_style); // Same here } if (!isset($fonts[$font_name])) { $fonts[$font_name] = []; } $fonts[$font_name][] = $font_style; } } } } return $fonts; } function ampro_add_default_system_fonts(&$fonts) { // URL to the default fonts JSON file $json_file_url = plugins_url('/../fonts/default-fonts.json', __FILE__); // Perform the HTTP request using wp_remote_get() $response = wp_remote_get($json_file_url); // Check if the request was successful if (is_wp_error($response)) { return; } // Get the response body $json_content = wp_remote_retrieve_body($response); // Decode the JSON content into an associative array $default_fonts = json_decode($json_content, true); // Ensure the JSON content was decoded properly if (!is_array($default_fonts)) { return; } // Add each default font and its styles to the $fonts array foreach ($default_fonts as $font_name => $styles) { if (!isset($fonts[$font_name])) { $fonts[$font_name] = []; } foreach ($styles as $style) { if (!in_array($style, $fonts[$font_name])) { $fonts[$font_name][] = $style; } } } } ?>