jQuery(function($) { var admin_menu_in_frontend = $('.admin-menu-in-frontend'); var admin_menu_wrap = admin_menu_in_frontend.find('#adminmenuwrap'); var admin_menu = admin_menu_in_frontend.find('#adminmenu'); // Show admin menu admin_menu_in_frontend.show(); // Add "folded" class to html tag if (admin_menu_vars.folded) { $('html').addClass('folded'); } // Add wp-admin url to menu links admin_menu.find('a').each(function() { var href = $(this).attr('href'); if (href.indexOf('//') == -1) { var new_href = admin_menu_vars.admin_url + href; $(this).attr('href', new_href); } }); // Open submenu on hover admin_menu.find('.wp-has-submenu').hover(function() { $(this).addClass('opensub'); $(this).find('.wp-submenu').addClass('sub-open'); }, function() { $(this).removeClass('opensub'); $(this).find('.wp-submenu').removeClass('sub-open'); }); // Click to submenu-head and go to first url admin_menu.find('.wp-submenu-head').click(function() { window.location.href = $(this).parents('li').find('a').first().attr('href'); }); // Collapse admin menu if (!admin_menu_in_frontend.find('#collapse-menu .collapse-button-icon').length) { admin_menu_in_frontend.find('#collapse-menu').html(''); } admin_menu_in_frontend.find('#collapse-button').click(function() { var collapse ; var html_tag = $('html'); if (html_tag.hasClass('folded')) { html_tag.removeClass('folded'); collapse = ''; } else { html_tag.addClass('folded'); collapse = '1'; } var data = { action: 'amf_save_collapse_admin_menu', security: admin_menu_vars.collapse_nonce, collapse_admin_menu: collapse }; $.post(admin_menu_vars.ajax_url, data, function(response) { //console.log(response); }); }); // Set admin menu position var scroll_top = $(window).scrollTop(); var prev_scroll_top = scroll_top; var setAdminMenuPosition = function () { var menu_height = admin_menu.outerHeight(true); var margin_top = parseInt($('html').css('margin-top')); var window_height = $(window).height(); var screen_height = window_height - margin_top; prev_scroll_top = scroll_top; scroll_top = $(window).scrollTop(); var offset_top = admin_menu_in_frontend.offset().top; var offset_bottom = offset_top + menu_height; var rel_offset_top = offset_top - scroll_top; var rel_offset_bottom = offset_bottom - scroll_top; if (menu_height <= screen_height) { admin_menu_wrap.height(screen_height); admin_menu_in_frontend.removeClass('fixed-bottom').addClass('fixed-top'); admin_menu_in_frontend.css({ 'top': margin_top + 'px', 'bottom': 'initial' }); } else { admin_menu_wrap.height('auto'); if (!admin_menu_in_frontend.hasClass('fixed-top') && rel_offset_top > margin_top) { admin_menu_in_frontend.removeClass('fixed-bottom').addClass('fixed-top'); } else if (!admin_menu_in_frontend.hasClass('fixed-bottom') && rel_offset_bottom < window_height) { admin_menu_in_frontend.removeClass('fixed-top').addClass('fixed-bottom'); } else { if (scroll_top != prev_scroll_top) { if (scroll_top > prev_scroll_top && admin_menu_in_frontend.hasClass('fixed-top')) { admin_menu_in_frontend.removeClass('fixed-bottom').removeClass('fixed-top'); admin_menu_in_frontend.css({ 'top': offset_top + 'px', 'bottom': 'initial' }); } if (scroll_top < prev_scroll_top && admin_menu_in_frontend.hasClass('fixed-bottom')) { admin_menu_in_frontend.removeClass('fixed-bottom').removeClass('fixed-top'); admin_menu_in_frontend.css({ 'top': offset_top + 'px', 'bottom': 'initial' }); } } } } }; $(window).load(setAdminMenuPosition); $(window).scroll(setAdminMenuPosition); $(window).resize(setAdminMenuPosition); });