jQuery(function($) { // @todo: this is only needed for WordPress earlier than 3.2? setTimeout(function() { jQuery("#toplevel_page_admin-menu-tree-page-tree_main").addClass("wp-menu-open"); }, 100); // search/filter pages $("li.admin-menu-tree-page-filter input").keyup(function(e) { var ul = $(this).closest("ul.admin-menu-tree-page-tree"); ul.find("li").hide(); ul.find("li.admin-menu-tree-page-tree_headline,li.admin-menu-tree-page-filter").show(); var s = $(this).val(); var selector = "li:AminMenuTreePageContains('"+s+"')"; var hits = ul.find(selector); if (hits.length > 0 || s !== "") { ul.find("div.admin-menu-tree-page-filter-reset").fadeIn("fast"); ul.unhighlight(); } if (s === "") { ul.find("div.admin-menu-tree-page-filter-reset").fadeOut("fast"); } ul.highlight(s); hits.show(); // hits can be childs of hidden li:s, so we must show the parents of the hits too hits.each(function(i, elm) { var parent = elm.parentNode; if (parent) { parent = $(parent); // ul -> div -> ul parent.parent().parent().addClass("admin-menu-tree-page-view-opened").removeClass("admin-menu-tree-page-view-closed"); parent.show(); } }); // if no hits: tell the user so we have less confusion. confusion is bad. var nohits_div = ul.find("div.admin-menu-tree-page-filter-nohits"); if (hits.length === 0) { nohits_div.show(); } else { nohits_div.hide(); } }); // clear/reset filter and show all pages again $("div.admin-menu-tree-page-filter-reset").click(function() { var $t = $(this); var ul = $t.closest("ul.admin-menu-tree-page-tree"); ul.find("li").fadeIn("fast"); $t.fadeOut("fast"); $t.closest("li.admin-menu-tree-page-filter").find("input").val("").focus(); ul.unhighlight(); ul.find("div.admin-menu-tree-page-filter-nohits").hide(); }); // label = hide in and focus input $("li.admin-menu-tree-page-filter label, li.admin-menu-tree-page-filter input").click(function() { var $t = $(this); $t.closest("li.admin-menu-tree-page-filter").find("label").hide(); $t.closest("li.admin-menu-tree-page-filter").find("input").focus(); }); var trees = jQuery("ul.admin-menu-tree-page-tree"); // add links to expand/collapse trees.find("li.admin-menu-tree-page-view-has-childs > div").after("
"); trees.on("click", "div.admin-menu-tree-page-expand", function(e) { e.preventDefault(); var $t = $(this); var $li = $t.closest("li"); var $a = $li.find("a:first"); var $ul = $li.find("ul:first"); var isOpen = false; if ($ul.is(":visible")) { $ul.slideUp(function() { $li.addClass("admin-menu-tree-page-view-closed").removeClass("admin-menu-tree-page-view-opened"); }); } else { $ul.slideDown(function() { $li.addClass("admin-menu-tree-page-view-opened").removeClass("admin-menu-tree-page-view-closed"); }); isOpen = true; } var post_id = $a.attr("href").match(/\?post=([\d]+)/)[1]; var array_pos = $.inArray(post_id, admin_menu_tree_page_view_opened_posts); if (array_pos > -1) { // did exist in cookie admin_menu_tree_page_view_opened_posts = admin_menu_tree_page_view_opened_posts.splice(array_pos+1, 1); } // array now has not our post_id. so add it if visible/open if (isOpen) { admin_menu_tree_page_view_opened_posts.push(post_id); } admin_menu_tree_page_view_save_opened_posts(); }); // mouse over to show edit-box trees.on("mouseenter mouseleave", "li div.amtpv-linkwrap:first-child", function(e) { var t = $(this); var li = t.closest("li"); var popupdiv = li.find("div.amtpv-editpopup:first"); var linkwrap = li.find("div.amtpv-linkwrap:first"); //var popup_linkwrap = popupdiv.closest("div.amtpv-linkwrap"); if (e.type == "mouseenter" || e.type == "mouseover") { var ul = t.closest("ul.admin-menu-tree-page-tree"); // don't show if another one is in edit mode if (ul.find("div.amtpv-editpopup-is-working").length > 0) { } else { ul.find("div.amtpv-editpopup").removeClass("amtpv-editpopup-hover"); ul.find("div.amtpv-linkwrap").removeClass("amtpv-linkwrap-hover"); popupdiv.addClass("amtpv-editpopup-hover"); linkwrap.addClass("amtpv-linkwrap-hover"); } } else if (e.type == "mouseleave" || e.type == "mouseout") { // don't hide if related target is the shadow of the menu, aka #adminmenushadow var do_hide = true; if (e.relatedTarget && e.relatedTarget.id == "adminmenushadow") { do_hide = false; } // also don't hide if wrap div has .amtpv-editpopup-is-working if (linkwrap.hasClass("amtpv-editpopup-is-working")) { do_hide = false; } if (do_hide) { popupdiv.removeClass("amtpv-editpopup-hover"); linkwrap.removeClass("amtpv-linkwrap-hover"); } } }); // trees.on("mouseenter mouseleave", "div.amtpv-editpopup", function(e) { var t = $(this); var li = t.closest("li"); var popupdiv = li.find("div.amtpv-editpopup:first"); var linkwrap = li.find("div.amtpv-linkwrap:first"); if (e.type == "mouseenter" || e.type == "mouseover") { t.addClass("amtpv-editpopup-hover-hover"); } else if (e.type == "mouseleave" || e.type == "mouseout") { if (linkwrap.hasClass("amtpv-editpopup-is-working")) { } else { t.removeClass("amtpv-editpopup-hover-hover"); } } }); // edit/view links trees.on("click", "div.amtpv-editpopup-edit, div.amtpv-editpopup-view", function(e) { e.preventDefault(); var t = $(this); var link = t.data("link"); var new_win = false; if ( ($.client.os == "Mac" && (e.metaKey || e.shiftKey)) || ($.client.os != "Mac" && e.ctrlKey) ) { new_win = true; } if (new_win) { window.open(link); } else { document.location = link; } }); // add links trees.on("click", "div.amtpv-editpopup-add-after, div.amtpv-editpopup-add-inside", function(e) { var t = $(this); var post_id = t.closest("a").data("post-id"); var popup = t.closest("div.amtpv-editpopup"); var popup_linkwrap = popup.closest("div.amtpv-linkwrap"); var editpopup_add = popup.find("div.amtpv-editpopup-add"); var editpopup_editview = popup.find("div.amtpv-editpopup-editview"); // hide all divs // @todo: should put all in one div, and hide just that one popup.find("> div").hide(); // add class that tell us that we are in "adding-mode"/"working-mode" popup_linkwrap.addClass("amtpv-editpopup-is-working"); var type = "after"; if (t.hasClass("amtpv-editpopup-add-inside")) { type = "inside"; } // remove possibly previous added add-stuff popup.find("form.amtpv-editpopup-addpages").remove(); var add_pages = $("") .addClass("amtpv-editpopup-addpages") .insertAfter(editpopup_add) ; add_pages.append( "