Version Description
- Tree now always opens up when editing a page, so you will always see the page you're ediiting.
- When searching, the parents of a page with a match is opened, so search hits will always be visible.
- When searching and no pages found, show text "no pages found".
- CSS changes for upcoming admin area CSS changes in WordPress (may look wierd on current/older versions of WordPress...)
- Some preparing for using nestedSortable to order the pages
Download this release
Release Info
Developer | eskapism |
Plugin | Admin Menu Tree Page View |
Version | 1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1 to 1.2
- index.php +32 -17
- jquery.ui.nestedSortable.js +374 -0
- readme.txt +8 -1
- scripts.js +51 -25
- styles.css +22 -11
index.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Admin Menu Tree Page View
|
4 |
Plugin URI: http://eskapism.se/code-playground/admin-menu-tree-page-view/
|
5 |
Description: Get a tree view of all your pages directly in the admin menu. Search, edit, view and add pages - all with just one click away!
|
6 |
-
Version: 1.
|
7 |
Author: Pär Thernström
|
8 |
Author URI: http://eskapism.se/
|
9 |
License: GPL2
|
@@ -32,20 +32,20 @@ add_action('wp_ajax_admin_menu_tree_page_view_add_page', 'admin_menu_tree_page_v
|
|
32 |
|
33 |
function admin_menu_tree_page_view_admin_init() {
|
34 |
|
35 |
-
define( "admin_menu_tree_page_view_VERSION", "1.
|
36 |
define( "admin_menu_tree_page_view_URL", WP_PLUGIN_URL . '/admin-menu-tree-page-view/' );
|
37 |
|
38 |
wp_enqueue_style("admin_menu_tree_page_view_styles", admin_menu_tree_page_view_URL . "styles.css", false, admin_menu_tree_page_view_VERSION);
|
39 |
wp_enqueue_script("jquery.highlight", admin_menu_tree_page_view_URL . "jquery.highlight.js", array("jquery"));
|
40 |
-
wp_enqueue_script(
|
|
|
41 |
wp_enqueue_script("admin_menu_tree_page_view", admin_menu_tree_page_view_URL . "scripts.js", array("jquery"));
|
42 |
|
43 |
-
|
44 |
$oLocale = array(
|
45 |
"Edit" => __("Edit", 'admin-menu-tree-page-view'),
|
46 |
"View" => __("View", 'admin-menu-tree-page-view'),
|
47 |
-
"Add_new_page_here" => __("
|
48 |
-
"Add_new_page_inside" => __("
|
49 |
"Untitled" => __("Untitled", 'admin-menu-tree-page-view'),
|
50 |
);
|
51 |
wp_localize_script( "admin_menu_tree_page_view", 'amtpv_l10n', $oLocale);
|
@@ -114,13 +114,27 @@ function admin_menu_tree_page_view_get_pages($args) {
|
|
114 |
// check cookie first
|
115 |
$cookie_opened = isset($_COOKIE["admin-menu-tree-page-view-open-posts"]) ? $_COOKIE["admin-menu-tree-page-view-open-posts"] : ""; // 2,95,n
|
116 |
$cookie_opened = explode(",", $cookie_opened);
|
117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
$class .= " admin-menu-tree-page-view-opened";
|
119 |
} elseif ($post_children_count>0) {
|
120 |
$class .= " admin-menu-tree-page-view-closed";
|
121 |
-
}
|
122 |
-
|
123 |
-
$
|
|
|
|
|
124 |
$output .= "<a href='$edit_link'>$status_span";
|
125 |
$output .= $title;
|
126 |
|
@@ -137,7 +151,7 @@ function admin_menu_tree_page_view_get_pages($args) {
|
|
137 |
|
138 |
$output .= $str_child_output;
|
139 |
|
140 |
-
$output .= "</li>";
|
141 |
}
|
142 |
|
143 |
// if this is a child listing, add ul
|
@@ -159,12 +173,13 @@ function admin_menu_tree_page_view_admin_menu() {
|
|
159 |
$output = "
|
160 |
</a>
|
161 |
<ul class='admin-menu-tree-page-tree'>
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
|
|
168 |
";
|
169 |
|
170 |
// get root items
|
3 |
Plugin Name: Admin Menu Tree Page View
|
4 |
Plugin URI: http://eskapism.se/code-playground/admin-menu-tree-page-view/
|
5 |
Description: Get a tree view of all your pages directly in the admin menu. Search, edit, view and add pages - all with just one click away!
|
6 |
+
Version: 1.2
|
7 |
Author: Pär Thernström
|
8 |
Author URI: http://eskapism.se/
|
9 |
License: GPL2
|
32 |
|
33 |
function admin_menu_tree_page_view_admin_init() {
|
34 |
|
35 |
+
define( "admin_menu_tree_page_view_VERSION", "1.2" );
|
36 |
define( "admin_menu_tree_page_view_URL", WP_PLUGIN_URL . '/admin-menu-tree-page-view/' );
|
37 |
|
38 |
wp_enqueue_style("admin_menu_tree_page_view_styles", admin_menu_tree_page_view_URL . "styles.css", false, admin_menu_tree_page_view_VERSION);
|
39 |
wp_enqueue_script("jquery.highlight", admin_menu_tree_page_view_URL . "jquery.highlight.js", array("jquery"));
|
40 |
+
wp_enqueue_script("jquery-cookie", admin_menu_tree_page_view_URL . "jquery.biscuit.js", array("jquery")); // renamed from cookie to fix problems with mod_security
|
41 |
+
wp_enqueue_script("jquery.ui.nestedSortable", admin_menu_tree_page_view_URL . "jquery.ui.nestedSortable.js", array("jquery", "jquery-ui-sortable"));
|
42 |
wp_enqueue_script("admin_menu_tree_page_view", admin_menu_tree_page_view_URL . "scripts.js", array("jquery"));
|
43 |
|
|
|
44 |
$oLocale = array(
|
45 |
"Edit" => __("Edit", 'admin-menu-tree-page-view'),
|
46 |
"View" => __("View", 'admin-menu-tree-page-view'),
|
47 |
+
"Add_new_page_here" => __("Add new page after", 'admin-menu-tree-page-view'),
|
48 |
+
"Add_new_page_inside" => __("Add new page inside", 'admin-menu-tree-page-view'),
|
49 |
"Untitled" => __("Untitled", 'admin-menu-tree-page-view'),
|
50 |
);
|
51 |
wp_localize_script( "admin_menu_tree_page_view", 'amtpv_l10n', $oLocale);
|
114 |
// check cookie first
|
115 |
$cookie_opened = isset($_COOKIE["admin-menu-tree-page-view-open-posts"]) ? $_COOKIE["admin-menu-tree-page-view-open-posts"] : ""; // 2,95,n
|
116 |
$cookie_opened = explode(",", $cookie_opened);
|
117 |
+
|
118 |
+
// if we are editing a post, we should see it in the tree, right?
|
119 |
+
if ( isset($_GET["action"]) && "edit" == $_GET["action"] && isset($_GET["post"])) {
|
120 |
+
// if post with id get[post] is a parent of the current post, show it
|
121 |
+
if ($_GET["post"] != $one_page->ID) {
|
122 |
+
$one_page_parents = get_post_ancestors($_GET["post"]);
|
123 |
+
if (in_array($one_page->ID, $one_page_parents)) {
|
124 |
+
$isOpened = TRUE;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
if (in_array($one_page->ID, $cookie_opened) || $isOpened && $post_children_count>0) {
|
130 |
$class .= " admin-menu-tree-page-view-opened";
|
131 |
} elseif ($post_children_count>0) {
|
132 |
$class .= " admin-menu-tree-page-view-closed";
|
133 |
+
}
|
134 |
+
|
135 |
+
$class .= " nestedSortable";
|
136 |
+
|
137 |
+
$output .= "<li class='$class'><div>";
|
138 |
$output .= "<a href='$edit_link'>$status_span";
|
139 |
$output .= $title;
|
140 |
|
151 |
|
152 |
$output .= $str_child_output;
|
153 |
|
154 |
+
$output .= "</div></li>";
|
155 |
}
|
156 |
|
157 |
// if this is a child listing, add ul
|
173 |
$output = "
|
174 |
</a>
|
175 |
<ul class='admin-menu-tree-page-tree'>
|
176 |
+
<li class='admin-menu-tree-page-tree_headline'>" . __("Pages", 'admin-menu-tree-page-view') . "</li>
|
177 |
+
<li class='admin-menu-tree-page-filter'>
|
178 |
+
<label>".__("Search", 'admin-menu-tree-page-view')."</label>
|
179 |
+
<input type='text' class='' />
|
180 |
+
<div class='admin-menu-tree-page-filter-reset' title='".__("Reset search and show all pages", 'admin-menu-tree-page-view')."'></div>
|
181 |
+
<div class='admin-menu-tree-page-filter-nohits'>".__("No pages found", 'admin-menu-tree-page-view')."</div>
|
182 |
+
</li>
|
183 |
";
|
184 |
|
185 |
// get root items
|
jquery.ui.nestedSortable.js
ADDED
@@ -0,0 +1,374 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery UI Nested Sortable
|
3 |
+
* v 1.3.4 / 28 apr 2011
|
4 |
+
* http://mjsarfatti.com/sandbox/nestedSortable
|
5 |
+
*
|
6 |
+
* Depends:
|
7 |
+
* jquery.ui.sortable.js 1.8+
|
8 |
+
*
|
9 |
+
* License CC BY-SA 3.0
|
10 |
+
* Copyright 2010-2011, Manuele J Sarfatti
|
11 |
+
*/
|
12 |
+
|
13 |
+
(function($) {
|
14 |
+
|
15 |
+
$.widget("ui.nestedSortable", $.extend({}, $.ui.sortable.prototype, {
|
16 |
+
|
17 |
+
options: {
|
18 |
+
tabSize: 20,
|
19 |
+
disableNesting: 'ui-nestedSortable-no-nesting',
|
20 |
+
errorClass: 'ui-nestedSortable-error',
|
21 |
+
listType: 'ol',
|
22 |
+
maxLevels: 0,
|
23 |
+
noJumpFix: 0,
|
24 |
+
revertOnError: 1
|
25 |
+
},
|
26 |
+
|
27 |
+
_create: function(){
|
28 |
+
if (this.noJumpFix == false)
|
29 |
+
this.element.height(this.element.height());
|
30 |
+
this.element.data('sortable', this.element.data('nestedSortable'));
|
31 |
+
return $.ui.sortable.prototype._create.apply(this, arguments);
|
32 |
+
},
|
33 |
+
|
34 |
+
destroy: function() {
|
35 |
+
this.element
|
36 |
+
.removeData("nestedSortable")
|
37 |
+
.unbind(".nestedSortable");
|
38 |
+
return $.ui.sortable.prototype.destroy.apply(this, arguments);
|
39 |
+
},
|
40 |
+
|
41 |
+
_mouseDrag: function(event) {
|
42 |
+
|
43 |
+
//Compute the helpers position
|
44 |
+
this.position = this._generatePosition(event);
|
45 |
+
this.positionAbs = this._convertPositionTo("absolute");
|
46 |
+
|
47 |
+
if (!this.lastPositionAbs) {
|
48 |
+
this.lastPositionAbs = this.positionAbs;
|
49 |
+
}
|
50 |
+
|
51 |
+
//Do scrolling
|
52 |
+
if(this.options.scroll) {
|
53 |
+
var o = this.options, scrolled = false;
|
54 |
+
if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {
|
55 |
+
|
56 |
+
if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
|
57 |
+
this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;
|
58 |
+
else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)
|
59 |
+
this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;
|
60 |
+
|
61 |
+
if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
|
62 |
+
this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;
|
63 |
+
else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)
|
64 |
+
this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;
|
65 |
+
|
66 |
+
} else {
|
67 |
+
|
68 |
+
if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
|
69 |
+
scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
|
70 |
+
else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
|
71 |
+
scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
|
72 |
+
|
73 |
+
if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
|
74 |
+
scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
|
75 |
+
else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
|
76 |
+
scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
|
81 |
+
$.ui.ddmanager.prepareOffsets(this, event);
|
82 |
+
}
|
83 |
+
|
84 |
+
//Regenerate the absolute position used for position checks
|
85 |
+
this.positionAbs = this._convertPositionTo("absolute");
|
86 |
+
|
87 |
+
//Set the helper position
|
88 |
+
if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
|
89 |
+
if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
|
90 |
+
|
91 |
+
//Rearrange
|
92 |
+
for (var i = this.items.length - 1; i >= 0; i--) {
|
93 |
+
|
94 |
+
//Cache variables and intersection, continue if no intersection
|
95 |
+
var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);
|
96 |
+
if (!intersection) continue;
|
97 |
+
|
98 |
+
if(itemElement != this.currentItem[0] //cannot intersect with itself
|
99 |
+
&& this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before
|
100 |
+
&& !$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked
|
101 |
+
&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)
|
102 |
+
//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container
|
103 |
+
) {
|
104 |
+
|
105 |
+
this.direction = intersection == 1 ? "down" : "up";
|
106 |
+
|
107 |
+
if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) {
|
108 |
+
this._rearrange(event, item);
|
109 |
+
} else {
|
110 |
+
break;
|
111 |
+
}
|
112 |
+
|
113 |
+
// Clear emtpy ul's/ol's
|
114 |
+
this._clearEmpty(itemElement);
|
115 |
+
|
116 |
+
this._trigger("change", event, this._uiHash());
|
117 |
+
break;
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
var parentItem = (this.placeholder[0].parentNode.parentNode && $(this.placeholder[0].parentNode.parentNode).closest('.ui-sortable').length) ? $(this.placeholder[0].parentNode.parentNode) : null;
|
122 |
+
var level = this._getLevel(this.placeholder);
|
123 |
+
var childLevels = this._getChildLevels(this.helper);
|
124 |
+
var previousItem = this.placeholder[0].previousSibling ? $(this.placeholder[0].previousSibling) : null;
|
125 |
+
if (previousItem != null) {
|
126 |
+
while (previousItem[0].nodeName.toLowerCase() != 'li' || previousItem[0] == this.currentItem[0]) {
|
127 |
+
if (previousItem[0].previousSibling) {
|
128 |
+
previousItem = $(previousItem[0].previousSibling);
|
129 |
+
} else {
|
130 |
+
previousItem = null;
|
131 |
+
break;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
newList = document.createElement(o.listType);
|
137 |
+
|
138 |
+
this.beyondMaxLevels = 0;
|
139 |
+
|
140 |
+
// If the item is moved to the left, send it to its parent level
|
141 |
+
if (parentItem != null && this.positionAbs.left < parentItem.offset().left) {
|
142 |
+
parentItem.after(this.placeholder[0]);
|
143 |
+
this._clearEmpty(parentItem[0]);
|
144 |
+
this._trigger("change", event, this._uiHash());
|
145 |
+
}
|
146 |
+
// If the item is below another one and is moved to the right, make it a children of it
|
147 |
+
else if (previousItem != null && this.positionAbs.left > previousItem.offset().left + o.tabSize) {
|
148 |
+
this._isAllowed(previousItem, level+childLevels+1);
|
149 |
+
if (!previousItem.children(o.listType).length) {
|
150 |
+
previousItem[0].appendChild(newList);
|
151 |
+
}
|
152 |
+
previousItem.children(o.listType)[0].appendChild(this.placeholder[0]);
|
153 |
+
this._trigger("change", event, this._uiHash());
|
154 |
+
}
|
155 |
+
else {
|
156 |
+
this._isAllowed(parentItem, level+childLevels);
|
157 |
+
}
|
158 |
+
|
159 |
+
//Post events to containers
|
160 |
+
this._contactContainers(event);
|
161 |
+
|
162 |
+
//Interconnect with droppables
|
163 |
+
if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
|
164 |
+
|
165 |
+
//Call callbacks
|
166 |
+
this._trigger('sort', event, this._uiHash());
|
167 |
+
|
168 |
+
this.lastPositionAbs = this.positionAbs;
|
169 |
+
return false;
|
170 |
+
|
171 |
+
},
|
172 |
+
|
173 |
+
_mouseStop: function(event, noPropagation) {
|
174 |
+
|
175 |
+
// If the item is in a position not allowed, send it back
|
176 |
+
if (this.beyondMaxLevels) {
|
177 |
+
|
178 |
+
this.placeholder.removeClass(this.options.errorClass);
|
179 |
+
|
180 |
+
if (this.options.revertOnError) {
|
181 |
+
if (this.domPosition.prev) {
|
182 |
+
$(this.domPosition.prev).after(this.placeholder);
|
183 |
+
} else {
|
184 |
+
$(this.domPosition.parent).prepend(this.placeholder);
|
185 |
+
}
|
186 |
+
this._trigger("revert", event, this._uiHash());
|
187 |
+
} else {
|
188 |
+
var parent = this.placeholder.parent().closest(this.options.items);
|
189 |
+
|
190 |
+
for (var i = this.beyondMaxLevels - 1; i > 0; i--) {
|
191 |
+
parent = parent.parent().closest(this.options.items);
|
192 |
+
}
|
193 |
+
|
194 |
+
parent.after(this.placeholder);
|
195 |
+
this._trigger("change", event, this._uiHash());
|
196 |
+
}
|
197 |
+
|
198 |
+
}
|
199 |
+
|
200 |
+
$.ui.sortable.prototype._mouseStop.apply(this, arguments);
|
201 |
+
|
202 |
+
},
|
203 |
+
|
204 |
+
serialize: function(o) {
|
205 |
+
|
206 |
+
var items = this._getItemsAsjQuery(o && o.connected);
|
207 |
+
var str = []; o = o || {};
|
208 |
+
|
209 |
+
$(items).each(function() {
|
210 |
+
var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
|
211 |
+
var pid = ($(o.item || this).parent(o.listType).parent('li').attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
|
212 |
+
if(res) str.push((o.key || res[1]+'['+(o.key && o.expression ? res[1] : res[2])+']')+'='+(pid ? (o.key && o.expression ? pid[1] : pid[2]) : 'root'));
|
213 |
+
});
|
214 |
+
|
215 |
+
if(!str.length && o.key) {
|
216 |
+
str.push(o.key + '=');
|
217 |
+
}
|
218 |
+
|
219 |
+
return str.join('&');
|
220 |
+
|
221 |
+
},
|
222 |
+
|
223 |
+
toHierarchy: function(o) {
|
224 |
+
|
225 |
+
o = o || {};
|
226 |
+
var sDepth = o.startDepthCount || 0;
|
227 |
+
var ret = [];
|
228 |
+
|
229 |
+
$(this.element).children('li').each(function() {
|
230 |
+
var level = _recursiveItems($(this));
|
231 |
+
ret.push(level);
|
232 |
+
});
|
233 |
+
|
234 |
+
return ret;
|
235 |
+
|
236 |
+
function _recursiveItems(li) {
|
237 |
+
var id = ($(li).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));
|
238 |
+
if (id != null) {
|
239 |
+
var item = {"id" : id[2]};
|
240 |
+
if ($(li).children(o.listType).children('li').length > 0) {
|
241 |
+
item.children = [];
|
242 |
+
$(li).children(o.listType).children('li').each(function () {
|
243 |
+
var level = _recursiveItems($(this));
|
244 |
+
item.children.push(level);
|
245 |
+
});
|
246 |
+
}
|
247 |
+
return item;
|
248 |
+
}
|
249 |
+
}
|
250 |
+
},
|
251 |
+
|
252 |
+
toArray: function(o) {
|
253 |
+
|
254 |
+
o = o || {};
|
255 |
+
var sDepth = o.startDepthCount || 0;
|
256 |
+
var ret = [];
|
257 |
+
var left = 2;
|
258 |
+
|
259 |
+
ret.push({"item_id": 'root', "parent_id": 'none', "depth": sDepth, "left": '1', "right": ($('li', this.element).length + 1) * 2});
|
260 |
+
|
261 |
+
$(this.element).children('li').each(function () {
|
262 |
+
left = _recursiveArray(this, sDepth + 1, left);
|
263 |
+
});
|
264 |
+
|
265 |
+
function _sortByLeft(a,b) {
|
266 |
+
return a['left'] - b['left'];
|
267 |
+
}
|
268 |
+
ret = ret.sort(_sortByLeft);
|
269 |
+
|
270 |
+
return ret;
|
271 |
+
|
272 |
+
function _recursiveArray(item, depth, left) {
|
273 |
+
|
274 |
+
right = left + 1;
|
275 |
+
|
276 |
+
if ($(item).children(o.listType).children('li').length > 0) {
|
277 |
+
depth ++;
|
278 |
+
$(item).children(o.listType).children('li').each(function () {
|
279 |
+
right = _recursiveArray($(this), depth, right);
|
280 |
+
});
|
281 |
+
depth --;
|
282 |
+
}
|
283 |
+
|
284 |
+
id = ($(item).attr(o.attribute || 'id')).match(o.expression || (/(.+)[-=_](.+)/));
|
285 |
+
|
286 |
+
if (depth === sDepth + 1) pid = 'root';
|
287 |
+
else {
|
288 |
+
parentItem = ($(item).parent(o.listType).parent('li').attr('id')).match(o.expression || (/(.+)[-=_](.+)/));
|
289 |
+
pid = parentItem[2];
|
290 |
+
}
|
291 |
+
|
292 |
+
if (id != null) {
|
293 |
+
ret.push({"item_id": id[2], "parent_id": pid, "depth": depth, "left": left, "right": right});
|
294 |
+
}
|
295 |
+
|
296 |
+
return left = right + 1;
|
297 |
+
}
|
298 |
+
|
299 |
+
},
|
300 |
+
|
301 |
+
_clear: function(event, noPropagation) {
|
302 |
+
|
303 |
+
$.ui.sortable.prototype._clear.apply(this, arguments);
|
304 |
+
|
305 |
+
// Clean last empty ul/ol
|
306 |
+
for (var i = this.items.length - 1; i >= 0; i--) {
|
307 |
+
var item = this.items[i].item[0];
|
308 |
+
this._clearEmpty(item);
|
309 |
+
}
|
310 |
+
return true;
|
311 |
+
|
312 |
+
},
|
313 |
+
|
314 |
+
_clearEmpty: function(item) {
|
315 |
+
|
316 |
+
if (item.children[1] && item.children[1].children.length == 0) {
|
317 |
+
item.removeChild(item.children[1]);
|
318 |
+
}
|
319 |
+
|
320 |
+
},
|
321 |
+
|
322 |
+
_getLevel: function(item) {
|
323 |
+
|
324 |
+
var level = 1;
|
325 |
+
|
326 |
+
if (this.options.listType) {
|
327 |
+
var list = item.closest(this.options.listType);
|
328 |
+
while (!list.is('.ui-sortable')/* && level < this.options.maxLevels*/) {
|
329 |
+
level++;
|
330 |
+
list = list.parent().closest(this.options.listType);
|
331 |
+
}
|
332 |
+
}
|
333 |
+
|
334 |
+
return level;
|
335 |
+
},
|
336 |
+
|
337 |
+
_getChildLevels: function(parent, depth) {
|
338 |
+
var self = this,
|
339 |
+
o = this.options,
|
340 |
+
result = 0;
|
341 |
+
depth = depth || 0;
|
342 |
+
|
343 |
+
$(parent).children(o.listType).children(o.items).each(function (index, child) {
|
344 |
+
result = Math.max(self._getChildLevels(child, depth + 1), result);
|
345 |
+
});
|
346 |
+
|
347 |
+
return depth ? result + 1 : result;
|
348 |
+
},
|
349 |
+
|
350 |
+
_isAllowed: function(parentItem, levels) {
|
351 |
+
var o = this.options
|
352 |
+
// Are we trying to nest under a no-nest or are we nesting too deep?
|
353 |
+
if (parentItem == null || !(parentItem.hasClass(o.disableNesting))) {
|
354 |
+
if (o.maxLevels < levels && o.maxLevels != 0) {
|
355 |
+
this.placeholder.addClass(o.errorClass);
|
356 |
+
this.beyondMaxLevels = levels - o.maxLevels;
|
357 |
+
} else {
|
358 |
+
this.placeholder.removeClass(o.errorClass);
|
359 |
+
this.beyondMaxLevels = 0;
|
360 |
+
}
|
361 |
+
} else {
|
362 |
+
this.placeholder.addClass(o.errorClass);
|
363 |
+
if (o.maxLevels < levels && o.maxLevels != 0) {
|
364 |
+
this.beyondMaxLevels = levels - o.maxLevels;
|
365 |
+
} else {
|
366 |
+
this.beyondMaxLevels = 1;
|
367 |
+
}
|
368 |
+
}
|
369 |
+
}
|
370 |
+
|
371 |
+
}));
|
372 |
+
|
373 |
+
$.ui.nestedSortable.prototype.options = $.extend({}, $.ui.sortable.prototype.options, $.ui.nestedSortable.prototype.options);
|
374 |
+
})(jQuery);
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://eskapism.se/sida/donate/
|
|
4 |
Tags: admin, page, pages, tree, view, admin menu, menu
|
5 |
Requires at least: 3.0
|
6 |
Tested up to: 3.0
|
7 |
-
Stable tag:
|
8 |
|
9 |
Get a tree view of all your pages directly in the admin menu. Search, edit, view and add pages - all with just one click away!
|
10 |
|
@@ -40,6 +40,13 @@ Now the tree with the pages will be visible in the admin menu to the left.
|
|
40 |
|
41 |
== Changelog ==
|
42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
= 1.1 =
|
44 |
- Children count was sometines wrong.
|
45 |
|
4 |
Tags: admin, page, pages, tree, view, admin menu, menu
|
5 |
Requires at least: 3.0
|
6 |
Tested up to: 3.0
|
7 |
+
Stable tag: 1.2
|
8 |
|
9 |
Get a tree view of all your pages directly in the admin menu. Search, edit, view and add pages - all with just one click away!
|
10 |
|
40 |
|
41 |
== Changelog ==
|
42 |
|
43 |
+
= 1.2 =
|
44 |
+
- Tree now always opens up when editing a page, so you will always see the page you're ediiting.
|
45 |
+
- When searching, the parents of a page with a match is opened, so search hits will always be visible.
|
46 |
+
- When searching and no pages found, show text "no pages found".
|
47 |
+
- CSS changes for upcoming admin area CSS changes in WordPress (may look wierd on current/older versions of WordPress...)
|
48 |
+
- Some preparing for using nestedSortable to order the pages
|
49 |
+
|
50 |
= 1.1 =
|
51 |
- Children count was sometines wrong.
|
52 |
|
scripts.js
CHANGED
@@ -6,7 +6,7 @@ jQuery(function($) {
|
|
6 |
}, 100);
|
7 |
|
8 |
// show menu when menu icon is clicked
|
9 |
-
jQuery(".admin-menu-tree-page-view-edit").click(function() {
|
10 |
|
11 |
var $this = $(this);
|
12 |
|
@@ -14,7 +14,7 @@ jQuery(function($) {
|
|
14 |
var wpsubmenu = $(this).closest("div.wp-submenu");
|
15 |
if (wpsubmenu.length == 1) {
|
16 |
|
17 |
-
var div_popup = wpsubmenu.find(".admin-menu-tree-page-view-popup");
|
18 |
var do_show = true;
|
19 |
if (div_popup.length == 0) {
|
20 |
// no menu div yet, create it
|
@@ -37,10 +37,10 @@ jQuery(function($) {
|
|
37 |
|
38 |
var a = $this.closest("a");
|
39 |
var link_text = a.text();
|
40 |
-
if (div_popup.find(".admin-menu-tree-page-view-popup-page").text() == link_text) {
|
41 |
do_show = false;
|
42 |
}
|
43 |
-
div_popup.find(".admin-menu-tree-page-view-popup-page").text( link_text );
|
44 |
var offset = $this.offset();
|
45 |
offset.top = (offset.top-3);
|
46 |
offset.left = (offset.left-3);
|
@@ -52,18 +52,18 @@ jQuery(function($) {
|
|
52 |
|
53 |
// setup edit and view links
|
54 |
var edit_link = "post.php?post="+post_id+"&action=edit";
|
55 |
-
div_popup.find(".admin-menu-tree-page-view-popup-edit a").attr("href", edit_link);
|
56 |
|
57 |
// view link, this is probably not such a safe way to this this. but let's try! :)
|
58 |
var view_link = $this.closest("li").find(".admin-menu-tree-page-view-view-link").text();
|
59 |
-
div_popup.find(".admin-menu-tree-page-view-popup-view a").attr("href", view_link);
|
60 |
|
61 |
if (do_show) {
|
62 |
div_popup.fadeIn("fast");
|
63 |
} else {
|
64 |
// same popup, so close it
|
65 |
div_popup.fadeOut("fast");
|
66 |
-
div_popup.find(".admin-menu-tree-page-view-popup-page").text("");
|
67 |
}
|
68 |
|
69 |
div_popup.offset( offset ); // must be last or position gets wrong somehow
|
@@ -74,14 +74,14 @@ jQuery(function($) {
|
|
74 |
});
|
75 |
|
76 |
// hide menu
|
77 |
-
$(".admin-menu-tree-page-view-popup-arrow").live("click", function() {
|
78 |
-
$(this).closest(".admin-menu-tree-page-view-popup").fadeOut("fast");
|
79 |
return false;
|
80 |
});
|
81 |
|
82 |
// add page
|
83 |
$(".admin-menu-tree-page-view-popup-add-here, .admin-menu-tree-page-view-popup-add-inside").live("click", function() {
|
84 |
-
var div_popup = $(this).closest(".admin-menu-tree-page-view-popup");
|
85 |
var post_id = div_popup.data("admin-menu-tree-page-view-current-post-id");
|
86 |
|
87 |
var type = "after";
|
@@ -113,46 +113,67 @@ jQuery(function($) {
|
|
113 |
});
|
114 |
|
115 |
// search/filter pages
|
116 |
-
$(".admin-menu-tree-page-filter input").keyup(function(e) {
|
117 |
-
var ul = $(this).closest(".admin-menu-tree-page-tree");
|
118 |
ul.find("li").hide();
|
119 |
-
ul.find(".admin-menu-tree-page-tree_headline
|
120 |
var s = $(this).val();
|
121 |
var selector = "li:AminMenuTreePageContains('"+s+"')";
|
122 |
var hits = ul.find(selector);
|
123 |
if (hits.length > 0 || s != "") {
|
124 |
-
ul.find(".admin-menu-tree-page-filter-reset").fadeIn("fast");
|
125 |
ul.unhighlight();
|
126 |
}
|
127 |
if (s == "") {
|
128 |
-
ul.find(".admin-menu-tree-page-filter-reset").fadeOut("fast");
|
129 |
}
|
130 |
ul.highlight(s);
|
131 |
hits.show();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
});
|
133 |
|
134 |
// clear/reset filter and show all pages again
|
135 |
-
$(".admin-menu-tree-page-filter-reset").click(function() {
|
136 |
var $t = $(this);
|
137 |
-
var ul = $t.closest(".admin-menu-tree-page-tree");
|
138 |
ul.find("li").fadeIn("fast");
|
139 |
$t.fadeOut("fast");
|
140 |
-
$t.closest(".admin-menu-tree-page-filter").find("input").val("").focus();
|
141 |
ul.unhighlight();
|
|
|
142 |
});
|
143 |
|
144 |
// label = hide in and focus input
|
145 |
-
$(".admin-menu-tree-page-filter label, .admin-menu-tree-page-filter input").click(function() {
|
146 |
var $t = $(this);
|
147 |
-
$t.closest(".admin-menu-tree-page-filter").find("label").hide();
|
148 |
-
$t.closest(".admin-menu-tree-page-filter").find("input").focus();
|
149 |
});
|
150 |
|
151 |
-
var trees = jQuery(".admin-menu-tree-page-tree");
|
152 |
|
153 |
// add links to expand/collapse
|
154 |
-
trees.find(".admin-menu-tree-page-view-has-childs").
|
155 |
-
trees.find(".admin-menu-tree-page-expand").live("click", function(e) {
|
156 |
|
157 |
e.preventDefault();
|
158 |
var $t = $(this);
|
@@ -183,13 +204,18 @@ jQuery(function($) {
|
|
183 |
if (isOpen) {
|
184 |
admin_menu_tree_page_view_opened_posts.push(post_id);
|
185 |
}
|
186 |
-
|
|
|
187 |
|
188 |
});
|
189 |
|
190 |
|
191 |
});
|
192 |
|
|
|
|
|
|
|
|
|
193 |
// array with all post ids that are open
|
194 |
var admin_menu_tree_page_view_opened_posts = jQuery.cookie('admin-menu-tree-page-view-open-posts') || "";
|
195 |
admin_menu_tree_page_view_opened_posts = admin_menu_tree_page_view_opened_posts.split(",");
|
6 |
}, 100);
|
7 |
|
8 |
// show menu when menu icon is clicked
|
9 |
+
jQuery("span.admin-menu-tree-page-view-edit").click(function() {
|
10 |
|
11 |
var $this = $(this);
|
12 |
|
14 |
var wpsubmenu = $(this).closest("div.wp-submenu");
|
15 |
if (wpsubmenu.length == 1) {
|
16 |
|
17 |
+
var div_popup = wpsubmenu.find("div.admin-menu-tree-page-view-popup");
|
18 |
var do_show = true;
|
19 |
if (div_popup.length == 0) {
|
20 |
// no menu div yet, create it
|
37 |
|
38 |
var a = $this.closest("a");
|
39 |
var link_text = a.text();
|
40 |
+
if (div_popup.find("div.admin-menu-tree-page-view-popup-page").text() == link_text) {
|
41 |
do_show = false;
|
42 |
}
|
43 |
+
div_popup.find("div.admin-menu-tree-page-view-popup-page").text( link_text );
|
44 |
var offset = $this.offset();
|
45 |
offset.top = (offset.top-3);
|
46 |
offset.left = (offset.left-3);
|
52 |
|
53 |
// setup edit and view links
|
54 |
var edit_link = "post.php?post="+post_id+"&action=edit";
|
55 |
+
div_popup.find("div.admin-menu-tree-page-view-popup-edit a").attr("href", edit_link);
|
56 |
|
57 |
// view link, this is probably not such a safe way to this this. but let's try! :)
|
58 |
var view_link = $this.closest("li").find(".admin-menu-tree-page-view-view-link").text();
|
59 |
+
div_popup.find("div.admin-menu-tree-page-view-popup-view a").attr("href", view_link);
|
60 |
|
61 |
if (do_show) {
|
62 |
div_popup.fadeIn("fast");
|
63 |
} else {
|
64 |
// same popup, so close it
|
65 |
div_popup.fadeOut("fast");
|
66 |
+
div_popup.find("div.admin-menu-tree-page-view-popup-page").text("");
|
67 |
}
|
68 |
|
69 |
div_popup.offset( offset ); // must be last or position gets wrong somehow
|
74 |
});
|
75 |
|
76 |
// hide menu
|
77 |
+
$("span.admin-menu-tree-page-view-popup-arrow").live("click", function() {
|
78 |
+
$(this).closest("div.admin-menu-tree-page-view-popup").fadeOut("fast");
|
79 |
return false;
|
80 |
});
|
81 |
|
82 |
// add page
|
83 |
$(".admin-menu-tree-page-view-popup-add-here, .admin-menu-tree-page-view-popup-add-inside").live("click", function() {
|
84 |
+
var div_popup = $(this).closest("div.admin-menu-tree-page-view-popup");
|
85 |
var post_id = div_popup.data("admin-menu-tree-page-view-current-post-id");
|
86 |
|
87 |
var type = "after";
|
113 |
});
|
114 |
|
115 |
// search/filter pages
|
116 |
+
$("li.admin-menu-tree-page-filter input").keyup(function(e) {
|
117 |
+
var ul = $(this).closest("ul.admin-menu-tree-page-tree");
|
118 |
ul.find("li").hide();
|
119 |
+
ul.find("li.admin-menu-tree-page-tree_headline,li.admin-menu-tree-page-filter").show();
|
120 |
var s = $(this).val();
|
121 |
var selector = "li:AminMenuTreePageContains('"+s+"')";
|
122 |
var hits = ul.find(selector);
|
123 |
if (hits.length > 0 || s != "") {
|
124 |
+
ul.find("div.admin-menu-tree-page-filter-reset").fadeIn("fast");
|
125 |
ul.unhighlight();
|
126 |
}
|
127 |
if (s == "") {
|
128 |
+
ul.find("div.admin-menu-tree-page-filter-reset").fadeOut("fast");
|
129 |
}
|
130 |
ul.highlight(s);
|
131 |
hits.show();
|
132 |
+
|
133 |
+
// hits can be childs of hidden li:s, so we must show the parents of the hits too
|
134 |
+
hits.each(function(i, elm) {
|
135 |
+
var parent = elm.parentNode;
|
136 |
+
if (parent) {
|
137 |
+
parent = $(parent);
|
138 |
+
parent.parent().addClass("admin-menu-tree-page-view-opened").removeClass("admin-menu-tree-page-view-closed");
|
139 |
+
//console.log(parent.parent());
|
140 |
+
parent.show();
|
141 |
+
}
|
142 |
+
});
|
143 |
+
|
144 |
+
// if no hits: tell the user so we have less confusion. confusion is bad.
|
145 |
+
var nohits_div = ul.find("div.admin-menu-tree-page-filter-nohits");
|
146 |
+
if (hits.length == 0) {
|
147 |
+
nohits_div.show();
|
148 |
+
} else {
|
149 |
+
nohits_div.hide();
|
150 |
+
}
|
151 |
+
|
152 |
});
|
153 |
|
154 |
// clear/reset filter and show all pages again
|
155 |
+
$("div.admin-menu-tree-page-filter-reset").click(function() {
|
156 |
var $t = $(this);
|
157 |
+
var ul = $t.closest("ul.admin-menu-tree-page-tree");
|
158 |
ul.find("li").fadeIn("fast");
|
159 |
$t.fadeOut("fast");
|
160 |
+
$t.closest("li.admin-menu-tree-page-filter").find("input").val("").focus();
|
161 |
ul.unhighlight();
|
162 |
+
ul.find("div.admin-menu-tree-page-filter-nohits").hide();
|
163 |
});
|
164 |
|
165 |
// label = hide in and focus input
|
166 |
+
$("li.admin-menu-tree-page-filter label, li.admin-menu-tree-page-filter input").click(function() {
|
167 |
var $t = $(this);
|
168 |
+
$t.closest("li.admin-menu-tree-page-filter").find("label").hide();
|
169 |
+
$t.closest("li.admin-menu-tree-page-filter").find("input").focus();
|
170 |
});
|
171 |
|
172 |
+
var trees = jQuery("ul.admin-menu-tree-page-tree");
|
173 |
|
174 |
// add links to expand/collapse
|
175 |
+
trees.find("li.admin-menu-tree-page-view-has-childs > div").after("<div class='admin-menu-tree-page-expand' title='Show/Hide child pages' />");
|
176 |
+
trees.find("div.admin-menu-tree-page-expand").live("click", function(e) {
|
177 |
|
178 |
e.preventDefault();
|
179 |
var $t = $(this);
|
204 |
if (isOpen) {
|
205 |
admin_menu_tree_page_view_opened_posts.push(post_id);
|
206 |
}
|
207 |
+
|
208 |
+
admin_menu_tree_page_view_save_opened_posts();
|
209 |
|
210 |
});
|
211 |
|
212 |
|
213 |
});
|
214 |
|
215 |
+
function admin_menu_tree_page_view_save_opened_posts() {
|
216 |
+
jQuery.cookie('admin-menu-tree-page-view-open-posts', admin_menu_tree_page_view_opened_posts.join(","));
|
217 |
+
}
|
218 |
+
|
219 |
// array with all post ids that are open
|
220 |
var admin_menu_tree_page_view_opened_posts = jQuery.cookie('admin-menu-tree-page-view-open-posts') || "";
|
221 |
admin_menu_tree_page_view_opened_posts = admin_menu_tree_page_view_opened_posts.split(",");
|
styles.css
CHANGED
@@ -18,8 +18,8 @@ li.toplevel_page_admin-menu-tree-page-tree_main .wp-submenu a {
|
|
18 |
|
19 |
|
20 |
#adminmenu li.wp-has-current-submenu ul.admin-menu-tree-page-tree {
|
21 |
-
border-left:
|
22 |
-
border-right:
|
23 |
padding-top: 5px;
|
24 |
}
|
25 |
|
@@ -27,10 +27,10 @@ li.toplevel_page_admin-menu-tree-page-tree_main .wp-submenu a {
|
|
27 |
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li {
|
28 |
position: relative;
|
29 |
}
|
30 |
-
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li a {
|
31 |
-
border-left-width:
|
32 |
border-left-style: solid;
|
33 |
-
border-right-width:
|
34 |
border-right-style: solid;
|
35 |
background: transparent url(page-small.gif) no-repeat 7px 2px !important;
|
36 |
padding-left: 19px;
|
@@ -78,10 +78,10 @@ li.toplevel_page_admin-menu-tree-page-tree_main .wp-submenu a {
|
|
78 |
}
|
79 |
|
80 |
/* sublevels */
|
81 |
-
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-opened > a {
|
82 |
background-image: url(page-small-minus.gif) !important;
|
83 |
}
|
84 |
-
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-closed > a {
|
85 |
background-image: url(page-small-plus.gif) !important;
|
86 |
}
|
87 |
|
@@ -95,9 +95,9 @@ li.admin-menu-tree-page-filter
|
|
95 |
margin: 0 0 0 0 !important;
|
96 |
padding-left: 6px !important;
|
97 |
border-left-style: solid;
|
98 |
-
border-left-width:
|
99 |
border-right-style: solid;
|
100 |
-
border-right-width:
|
101 |
}
|
102 |
|
103 |
.wp-has-current-submenu li.admin-menu-tree-page-tree_headline,
|
@@ -186,7 +186,7 @@ li.admin-menu-tree-page-filter
|
|
186 |
display: none;
|
187 |
}
|
188 |
.admin-menu-tree-page-view-popup li {
|
189 |
-
text-decoration: underline;
|
190 |
white-space: nowrap;
|
191 |
}
|
192 |
|
@@ -251,6 +251,11 @@ li.admin-menu-tree-page-filter
|
|
251 |
cursor: text;
|
252 |
}
|
253 |
|
|
|
|
|
|
|
|
|
|
|
254 |
ul.admin-menu-tree-page-tree .highlight {
|
255 |
background-color: #fff879;
|
256 |
color: #21759B;
|
@@ -269,10 +274,12 @@ ul.admin-menu-tree-page-tree ul .admin-menu-tree-page-expand {
|
|
269 |
top: 0px;
|
270 |
left: 9px;
|
271 |
}
|
|
|
|
|
272 |
ul.admin-menu-tree-page-tree ul {
|
273 |
display: none;
|
274 |
}
|
275 |
-
ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-opened > ul {
|
276 |
display: block;
|
277 |
}
|
278 |
|
@@ -280,3 +287,7 @@ ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-opened > ul {
|
|
280 |
ul.admin-menu-tree-page-tree span.child-count {
|
281 |
color: #999999;
|
282 |
}
|
|
|
|
|
|
|
|
18 |
|
19 |
|
20 |
#adminmenu li.wp-has-current-submenu ul.admin-menu-tree-page-tree {
|
21 |
+
border-left: 0px solid #aaa;
|
22 |
+
border-right: 0px solid #aaa;
|
23 |
padding-top: 5px;
|
24 |
}
|
25 |
|
27 |
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li {
|
28 |
position: relative;
|
29 |
}
|
30 |
+
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li div > a {
|
31 |
+
border-left-width: 0px;
|
32 |
border-left-style: solid;
|
33 |
+
border-right-width: 0px;
|
34 |
border-right-style: solid;
|
35 |
background: transparent url(page-small.gif) no-repeat 7px 2px !important;
|
36 |
padding-left: 19px;
|
78 |
}
|
79 |
|
80 |
/* sublevels */
|
81 |
+
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-opened > div > a {
|
82 |
background-image: url(page-small-minus.gif) !important;
|
83 |
}
|
84 |
+
#adminmenu li .wp-submenu ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-closed > div > a {
|
85 |
background-image: url(page-small-plus.gif) !important;
|
86 |
}
|
87 |
|
95 |
margin: 0 0 0 0 !important;
|
96 |
padding-left: 6px !important;
|
97 |
border-left-style: solid;
|
98 |
+
border-left-width: 0px;
|
99 |
border-right-style: solid;
|
100 |
+
border-right-width: 0px;
|
101 |
}
|
102 |
|
103 |
.wp-has-current-submenu li.admin-menu-tree-page-tree_headline,
|
186 |
display: none;
|
187 |
}
|
188 |
.admin-menu-tree-page-view-popup li {
|
189 |
+
/* text-decoration: underline; */
|
190 |
white-space: nowrap;
|
191 |
}
|
192 |
|
251 |
cursor: text;
|
252 |
}
|
253 |
|
254 |
+
.admin-menu-tree-page-filter-nohits {
|
255 |
+
display: none;
|
256 |
+
text-transform: none;
|
257 |
+
}
|
258 |
+
|
259 |
ul.admin-menu-tree-page-tree .highlight {
|
260 |
background-color: #fff879;
|
261 |
color: #21759B;
|
274 |
top: 0px;
|
275 |
left: 9px;
|
276 |
}
|
277 |
+
|
278 |
+
|
279 |
ul.admin-menu-tree-page-tree ul {
|
280 |
display: none;
|
281 |
}
|
282 |
+
ul.admin-menu-tree-page-tree li.admin-menu-tree-page-view-opened > div > ul {
|
283 |
display: block;
|
284 |
}
|
285 |
|
287 |
ul.admin-menu-tree-page-tree span.child-count {
|
288 |
color: #999999;
|
289 |
}
|
290 |
+
|
291 |
+
.admin-menu-tree-page-placeholder {
|
292 |
+
background-color: yellow;
|
293 |
+
}
|