Version Description
- Bundled with "Exclude Pages" plugin by Simon Wheatley. You can now easily exclude pages from the navigation. Just uncheck the the "Include page in menus" checkbox on the page edit screen. See screenshots for more information.
Download this release
Release Info
Developer | mattsay |
Plugin | Dropdown Menu Widget |
Version | 1.3.2 |
Comparing to | |
See all releases |
Code changes from version 1.3.1 to 1.3.2
- exclude_pages.php +330 -0
- readme.txt +6 -4
- screenshot-5.PNG +0 -0
- shailan.DropDownMenu.php +4 -2
- themes/mystique.css +56 -0
- themes/simple-blue.css +0 -1
exclude_pages.php
ADDED
@@ -0,0 +1,330 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Exclude Pages from Navigation
|
4 |
+
http://wordpress.org/extend/plugins/exclude-pages/
|
5 |
+
|
6 |
+
|
7 |
+
Provides a checkbox on the editing page which you can check to exclude pages from the primary navigation. IMPORTANT NOTE: This will remove the pages from any "consumer" side page listings, which may not be limited to your page navigation listings.
|
8 |
+
|
9 |
+
Version: 1.8
|
10 |
+
|
11 |
+
Simon Wheatley
|
12 |
+
http://simonwheatley.co.uk/wordpress/
|
13 |
+
|
14 |
+
Copyright 2007 Simon Wheatley
|
15 |
+
|
16 |
+
This script is free software; you can redistribute it and/or modify
|
17 |
+
it under the terms of the GNU General Public License as published by
|
18 |
+
the Free Software Foundation; either version 3 of the License, or
|
19 |
+
(at your option) any later version.
|
20 |
+
|
21 |
+
This script is distributed in the hope that it will be useful,
|
22 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
23 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
24 |
+
GNU General Public License for more details.
|
25 |
+
|
26 |
+
You should have received a copy of the GNU General Public License
|
27 |
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
28 |
+
|
29 |
+
*/
|
30 |
+
|
31 |
+
// Full filesystem path to this dir
|
32 |
+
define('EP_PLUGIN_DIR', dirname(__FILE__));
|
33 |
+
|
34 |
+
// Option name for exclusion data
|
35 |
+
define('EP_OPTION_NAME', 'ep_exclude_pages');
|
36 |
+
// Separator for the string of IDs stored in the option value
|
37 |
+
define('EP_OPTION_SEP', ',');
|
38 |
+
|
39 |
+
// Take the pages array, and return the pages array without the excluded pages
|
40 |
+
// Doesn't do this when in the admin area
|
41 |
+
function ep_exclude_pages( $pages )
|
42 |
+
{
|
43 |
+
// If the URL includes "wp-admin", just return the unaltered list
|
44 |
+
// This constant, WP_ADMIN, only came into WP on 2007-12-19 17:56:16 rev 6412, i.e. not something we can rely upon unfortunately.
|
45 |
+
// May as well check it though.
|
46 |
+
// Also check the URL... let's hope they haven't got a page called wp-admin (probably not)
|
47 |
+
// SWTODO: Actually, you can create a page with an address of wp-admin (which is then inaccessible), I consider this a bug in WordPress (which I may file a report for, and patch, another time).
|
48 |
+
$bail_out = ( ( defined( 'WP_ADMIN' ) && WP_ADMIN == true ) || ( strpos( $_SERVER[ 'PHP_SELF' ], 'wp-admin' ) !== false ) );
|
49 |
+
$bail_out = apply_filters( 'ep_admin_bail_out', $bail_out );
|
50 |
+
if ( $bail_out ) return $pages;
|
51 |
+
$excluded_ids = ep_get_excluded_ids();
|
52 |
+
$length = count($pages);
|
53 |
+
// Ensure we catch all descendant pages, so that if a parent
|
54 |
+
// is hidden, it's children are too.
|
55 |
+
for ( $i=0; $i<$length; $i++ ) {
|
56 |
+
$page = & $pages[$i];
|
57 |
+
// If one of the ancestor pages is excluded, add it to our exclude array
|
58 |
+
if ( ep_ancestor_excluded( $page, $excluded_ids, $pages ) ) {
|
59 |
+
// Can't actually delete the pages at the moment,
|
60 |
+
// it'll screw with our recursive search.
|
61 |
+
// For the moment, just tag the ID onto our excluded IDs
|
62 |
+
$excluded_ids[] = $page->ID;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
// Ensure the array only has unique values
|
67 |
+
$delete_ids = array_unique( $excluded_ids );
|
68 |
+
|
69 |
+
// Loop though the $pages array and actually unset/delete stuff
|
70 |
+
for ( $i=0; $i<$length; $i++ ) {
|
71 |
+
$page = & $pages[$i];
|
72 |
+
// If one of the ancestor pages is excluded, add it to our exclude array
|
73 |
+
if ( in_array( $page->ID, $delete_ids ) ) {
|
74 |
+
// Finally, delete something(s)
|
75 |
+
unset( $pages[$i] );
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
// Reindex the array, for neatness
|
80 |
+
// SWFIXME: Is reindexing the array going to create a memory optimisation problem for large arrays of WP post/page objects?
|
81 |
+
if ( ! is_array( $pages ) ) $pages = (array) $pages;
|
82 |
+
$pages = array_values( $pages );
|
83 |
+
|
84 |
+
return $pages;
|
85 |
+
}
|
86 |
+
|
87 |
+
// Recurse down an ancestor chain, checking if one is excluded
|
88 |
+
// Returns the ID of the "nearest" excluded ancestor
|
89 |
+
function ep_ancestor_excluded( & $page, & $excluded_ids, & $pages )
|
90 |
+
{
|
91 |
+
$parent = & ep_get_page( $page->post_parent, $pages );
|
92 |
+
// Is it excluded?
|
93 |
+
if ( in_array( $parent->ID, $excluded_ids ) ) {
|
94 |
+
return $parent->ID;
|
95 |
+
}
|
96 |
+
// Is it the homepage?
|
97 |
+
if ( $parent->ID == 0 ) return false;
|
98 |
+
// Otherwise we have another ancestor to check
|
99 |
+
return ep_ancestor_excluded( $parent, $excluded_ids, $pages );
|
100 |
+
}
|
101 |
+
|
102 |
+
// Return the portion of the $pages array which refers to the ID passed as $page_id
|
103 |
+
function ep_get_page( $page_id, & $pages )
|
104 |
+
{
|
105 |
+
// PHP 5 would be much nicer here, we could use foreach by reference, ah well.
|
106 |
+
$length = count($pages);
|
107 |
+
for ( $i=0; $i<$length; $i++ ) {
|
108 |
+
$page = & $pages[$i];
|
109 |
+
if ( $page->ID == $page_id ) return $page;
|
110 |
+
}
|
111 |
+
// Unusual.
|
112 |
+
return false;
|
113 |
+
}
|
114 |
+
|
115 |
+
// Is this page we're editing (defined by global $post_ID var)
|
116 |
+
// currently NOT excluded (i.e. included),
|
117 |
+
// returns true if NOT excluded (i.e. included)
|
118 |
+
// returns false is it IS excluded.
|
119 |
+
// (Tricky this upside down flag business.)
|
120 |
+
function ep_this_page_included()
|
121 |
+
{
|
122 |
+
global $post_ID;
|
123 |
+
// New post? Must be included then.
|
124 |
+
if ( ! $post_ID ) return true;
|
125 |
+
$excluded_ids = ep_get_excluded_ids();
|
126 |
+
// If there's no exclusion array, we can return true
|
127 |
+
if ( empty($excluded_ids) ) return true;
|
128 |
+
// Check if our page is in the exclusion array
|
129 |
+
// The bang (!) reverses the polarity [1] of the boolean
|
130 |
+
return ! in_array( $post_ID, $excluded_ids );
|
131 |
+
// fn1. (of the neutron flow, ahem)
|
132 |
+
}
|
133 |
+
|
134 |
+
// Check the ancestors for the page we're editing (defined by
|
135 |
+
// global $post_ID var), return the ID if the nearest one which
|
136 |
+
// is excluded (if any);
|
137 |
+
function ep_nearest_excluded_ancestor()
|
138 |
+
{
|
139 |
+
global $post_ID, $wpdb;
|
140 |
+
// New post? No problem.
|
141 |
+
if ( ! $post_ID ) return false;
|
142 |
+
$excluded_ids = ep_get_excluded_ids();
|
143 |
+
// Manually get all the pages, to avoid our own filter.
|
144 |
+
$sql = "SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'";
|
145 |
+
$pages = $wpdb->get_results( $sql );
|
146 |
+
// Start recursively checking the ancestors
|
147 |
+
$parent = ep_get_page( $post_ID, $pages );
|
148 |
+
return ep_ancestor_excluded( $parent, $excluded_ids, $pages );
|
149 |
+
}
|
150 |
+
|
151 |
+
function ep_get_excluded_ids()
|
152 |
+
{
|
153 |
+
$exclude_ids_str = get_option( EP_OPTION_NAME );
|
154 |
+
// No excluded IDs? Return an empty array
|
155 |
+
if ( empty($exclude_ids_str) ) return array();
|
156 |
+
// Otherwise, explode the separated string into an array, and return that
|
157 |
+
return explode( EP_OPTION_SEP, $exclude_ids_str );
|
158 |
+
}
|
159 |
+
|
160 |
+
// This function gets all the exclusions out of the options
|
161 |
+
// table, updates them, and resaves them in the options table.
|
162 |
+
// We're avoiding making this a postmeta (custom field) because we
|
163 |
+
// don't want to have to retrieve meta for every page in order to
|
164 |
+
// determine if it's to be excluded. Storing all the exclusions in
|
165 |
+
// one row seems more sensible.
|
166 |
+
function ep_update_exclusions( $post_ID )
|
167 |
+
{
|
168 |
+
// Bang (!) to reverse the polarity of the boolean, turning include into exclude
|
169 |
+
$exclude_this_page = ! (bool) $_POST['ep_this_page_included'];
|
170 |
+
// SWTODO: Also check for a hidden var, which confirms that this checkbox was present
|
171 |
+
// If hidden var not present, then default to including the page in the nav (i.e. bomb out here rather
|
172 |
+
// than add the page ID to the list of IDs to exclude)
|
173 |
+
$ctrl_present = (bool) @ $_POST['ep_ctrl_present'];
|
174 |
+
if ( ! $ctrl_present ) return;
|
175 |
+
|
176 |
+
$excluded_ids = ep_get_excluded_ids();
|
177 |
+
// If we need to EXCLUDE the page from the navigation...
|
178 |
+
if ( $exclude_this_page ) {
|
179 |
+
// Add the post ID to the array of excluded IDs
|
180 |
+
array_push( $excluded_ids, $post_ID );
|
181 |
+
// De-dupe the array, in case it was there already
|
182 |
+
$excluded_ids = array_unique( $excluded_ids );
|
183 |
+
}
|
184 |
+
// If we need to INCLUDE the page in the navigation...
|
185 |
+
if ( ! $exclude_this_page ) {
|
186 |
+
// Find the post ID in the array of excluded IDs
|
187 |
+
$index = array_search( $post_ID, $excluded_ids );
|
188 |
+
// Delete any index found
|
189 |
+
if ( $index !== false ) unset( $excluded_ids[$index] );
|
190 |
+
}
|
191 |
+
$excluded_ids_str = implode( EP_OPTION_SEP, $excluded_ids );
|
192 |
+
ep_set_option( EP_OPTION_NAME, $excluded_ids_str, "Comma separated list of post and page IDs to exclude when returning pages from the get_pages function." );
|
193 |
+
}
|
194 |
+
|
195 |
+
// Take an option, delete it if it exists, then add it.
|
196 |
+
function ep_set_option( $name, $value, $description )
|
197 |
+
{
|
198 |
+
// Delete option
|
199 |
+
delete_option($name);
|
200 |
+
// Insert option
|
201 |
+
add_option($name, $value, $description);
|
202 |
+
}
|
203 |
+
|
204 |
+
// Pre WP2.5
|
205 |
+
// Add some HTML for the DBX sidebar control into the edit page page
|
206 |
+
function ep_admin_sidebar()
|
207 |
+
{
|
208 |
+
$nearest_excluded_ancestor = ep_nearest_excluded_ancestor();
|
209 |
+
echo ' <fieldset id="excludepagediv" class="dbx-box">';
|
210 |
+
echo ' <h3 class="dbx-handle">'.__('Navigation').'</h3>';
|
211 |
+
echo ' <div class="dbx-content">';
|
212 |
+
echo ' <label for="ep_this_page_included" class="selectit">';
|
213 |
+
echo ' <input ';
|
214 |
+
echo ' type="checkbox" ';
|
215 |
+
echo ' name="ep_this_page_included" ';
|
216 |
+
echo ' id="ep_this_page_included" ';
|
217 |
+
if ( ep_this_page_included() ) echo 'checked="checked"';
|
218 |
+
echo ' />';
|
219 |
+
echo ' '.__('Include this page in menus').'</label>';
|
220 |
+
echo ' <input type="hidden" name="ep_ctrl_present" value="1" />';
|
221 |
+
if ( $nearest_excluded_ancestor !== false ) {
|
222 |
+
echo '<div class="exclude_alert">';
|
223 |
+
echo __('An ancestor of this page is excluded, so this page is too. ');
|
224 |
+
echo '<a href="page.php?action=edit&post='.$nearest_excluded_ancestor.'"';
|
225 |
+
echo ' title="'.__('edit the excluded ancestor').'">'.__('Edit ancestor').'</a>.</div>';
|
226 |
+
}
|
227 |
+
echo ' </div></fieldset>';
|
228 |
+
}
|
229 |
+
|
230 |
+
// Post WP 2.5
|
231 |
+
// Add some HTML below the submit box
|
232 |
+
function ep_admin_sidebar_wp25()
|
233 |
+
{
|
234 |
+
$nearest_excluded_ancestor = ep_nearest_excluded_ancestor();
|
235 |
+
echo ' <div id="excludepagediv" class="new-admin-wp25">';
|
236 |
+
echo ' <div class="outer"><div class="inner">';
|
237 |
+
echo ' <label for="ep_this_page_included" class="selectit">';
|
238 |
+
echo ' <input ';
|
239 |
+
echo ' type="checkbox" ';
|
240 |
+
echo ' name="ep_this_page_included" ';
|
241 |
+
echo ' id="ep_this_page_included" ';
|
242 |
+
if ( ep_this_page_included() ) echo 'checked="checked"';
|
243 |
+
echo ' />';
|
244 |
+
echo ' '.__('Include this page in user menus').'</label>';
|
245 |
+
echo ' <input type="hidden" name="ep_ctrl_present" value="1" />';
|
246 |
+
if ( $nearest_excluded_ancestor !== false ) {
|
247 |
+
echo '<div class="exclude_alert"><em>';
|
248 |
+
echo __('N.B. An ancestor of this page is excluded, so this page is too. ');
|
249 |
+
echo '<a href="page.php?action=edit&post='.$nearest_excluded_ancestor.'"';
|
250 |
+
echo ' title="'.__('edit the excluded ancestor').'">'.__('Edit ancestor').'</a>.</em></div>';
|
251 |
+
}
|
252 |
+
echo ' </div><!-- .inner --></div><!-- .outer -->';
|
253 |
+
echo ' </div><!-- #excludepagediv -->';
|
254 |
+
}
|
255 |
+
|
256 |
+
// Add some CSS into the HEAD element of the admin area
|
257 |
+
function ep_admin_css()
|
258 |
+
{
|
259 |
+
echo ' <style type="text/css" media="screen">';
|
260 |
+
echo ' div.exclude_alert { font-size: 11px; }';
|
261 |
+
echo ' .new-admin-wp25 { font-size: 11px; background-color: #fff; }';
|
262 |
+
echo ' .new-admin-wp25 div.inner { padding: 8px 12px; background-color: #EAF3FA; border: 1px solid #EAF3FA; -moz-border-radius: 3px; -khtml-border-bottom-radius: 3px; -webkit-border-bottom-radius: 3px; border-bottom-radius: 3px; }';
|
263 |
+
echo ' #ep_admin_meta_box div.inner { padding: inherit; background-color: transparent; border: none; }';
|
264 |
+
echo ' #ep_admin_meta_box div.inner label { background-color: none; }';
|
265 |
+
echo ' .new-admin-wp25 div.exclude_alert { padding-top: 5px; }';
|
266 |
+
echo ' .new-admin-wp25 div.exclude_alert em { font-style: normal; }';
|
267 |
+
echo ' </style>';
|
268 |
+
}
|
269 |
+
|
270 |
+
// Add our ctrl to the list of controls which AREN'T hidden
|
271 |
+
function ep_hec_show_dbx( $to_show )
|
272 |
+
{
|
273 |
+
array_push( $to_show, 'excludepagediv' );
|
274 |
+
return $to_show;
|
275 |
+
}
|
276 |
+
|
277 |
+
// PAUSE & RESUME FUNCTIONS
|
278 |
+
|
279 |
+
function pause_exclude_pages()
|
280 |
+
{
|
281 |
+
remove_filter('get_pages','ep_exclude_pages');
|
282 |
+
}
|
283 |
+
|
284 |
+
function resume_exclude_pages()
|
285 |
+
{
|
286 |
+
add_filter('get_pages','ep_exclude_pages');
|
287 |
+
}
|
288 |
+
|
289 |
+
// INIT FUNCTIONS
|
290 |
+
|
291 |
+
function ep_init()
|
292 |
+
{
|
293 |
+
// Call this function on the get_pages filter
|
294 |
+
// (get_pages filter appears to only be called on the "consumer" side of WP,
|
295 |
+
// the admin side must use another function to get the pages. So we're safe to
|
296 |
+
// remove these pages every time.)
|
297 |
+
add_filter('get_pages','ep_exclude_pages');
|
298 |
+
}
|
299 |
+
|
300 |
+
function ep_admin_init()
|
301 |
+
{
|
302 |
+
// Add panels into the editing sidebar(s)
|
303 |
+
global $wp_version;
|
304 |
+
if ( version_compare( $wp_version, '2.7-beta', '>=' ) ) {
|
305 |
+
add_meta_box('ep_admin_meta_box', __('Exclude Pages'), 'ep_admin_sidebar_wp25', 'page', 'side', 'low');
|
306 |
+
} else {
|
307 |
+
add_action('dbx_page_sidebar', 'ep_admin_sidebar'); // Pre WP2.5
|
308 |
+
add_action('submitpage_box', 'ep_admin_sidebar_wp25'); // Post WP 2.5, pre WP 2.7
|
309 |
+
}
|
310 |
+
|
311 |
+
// Set the exclusion when the post is saved
|
312 |
+
add_action('save_post', 'ep_update_exclusions');
|
313 |
+
|
314 |
+
// Add some CSS to the admin header
|
315 |
+
add_action('admin_head', 'ep_admin_css');
|
316 |
+
|
317 |
+
// Call this function on our very own hec_show_dbx filter
|
318 |
+
// This filter is harmless to add, even if we don't have the
|
319 |
+
// Hide Editor Clutter plugin installed as it's using a custom filter
|
320 |
+
// which won't be called except by the HEC plugin.
|
321 |
+
// Uncomment to show the control by default
|
322 |
+
// add_filter('hec_show_dbx','ep_hec_show_dbx');
|
323 |
+
}
|
324 |
+
|
325 |
+
// HOOK IT UP TO WORDPRESS
|
326 |
+
|
327 |
+
add_action( 'init', 'ep_init' );
|
328 |
+
add_action( 'admin_init', 'ep_admin_init' )
|
329 |
+
|
330 |
+
?>
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== Shailan Dropdown Menu Widget ===
|
2 |
-
Contributors: mattsay
|
3 |
Donate link: http://shailan.com/donate
|
4 |
Tags: css, dropdown, menu, widget, pages, categories
|
5 |
Requires at least: 2.5
|
6 |
-
Tested up to: 2.9
|
7 |
-
Stable tag: 1.3.
|
8 |
|
9 |
This widget adds a beatiful vertical/horizontal CSS only dropdown menu of pages OR categories of your blog.
|
10 |
|
@@ -47,6 +47,9 @@ You can submit errors and bugs using the [online form](http://shailan.com/contac
|
|
47 |
|
48 |
== Changelog ==
|
49 |
|
|
|
|
|
|
|
50 |
= 1.3.1 =
|
51 |
* Added "Blue gradient" theme.
|
52 |
|
@@ -112,5 +115,4 @@ You can submit errors and bugs using the [online form](http://shailan.com/contac
|
|
112 |
== TODO ==
|
113 |
|
114 |
* Add option for custom menus.
|
115 |
-
* Add option for including homepage link.
|
116 |
* Add some more themes.. [Request a theme](http://shailan.com/contact)
|
1 |
=== Shailan Dropdown Menu Widget ===
|
2 |
+
Contributors: mattsay
|
3 |
Donate link: http://shailan.com/donate
|
4 |
Tags: css, dropdown, menu, widget, pages, categories
|
5 |
Requires at least: 2.5
|
6 |
+
Tested up to: 2.9.1
|
7 |
+
Stable tag: 1.3.2
|
8 |
|
9 |
This widget adds a beatiful vertical/horizontal CSS only dropdown menu of pages OR categories of your blog.
|
10 |
|
47 |
|
48 |
== Changelog ==
|
49 |
|
50 |
+
= 1.3.2 =
|
51 |
+
* Bundled with "Exclude Pages" plugin by [Simon Wheatley](http://simonwheatley.co.uk/wordpress/). You can now easily exclude pages from the navigation. Just uncheck the the "Include page in menus" checkbox on the page edit screen. See [screenshots](http://wordpress.org/extend/plugins/dropdown-menu-widget/screenshots/) for more information.
|
52 |
+
|
53 |
= 1.3.1 =
|
54 |
* Added "Blue gradient" theme.
|
55 |
|
115 |
== TODO ==
|
116 |
|
117 |
* Add option for custom menus.
|
|
|
118 |
* Add some more themes.. [Request a theme](http://shailan.com/contact)
|
screenshot-5.PNG
ADDED
Binary file
|
shailan.DropDownMenu.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
Plugin Name: Shailan Dropdown Menu Widget
|
4 |
Plugin URI: http://shailan.com/wordpress/plugins/dropdown-menu
|
5 |
Description: A multi widget to generate drop-down menus from your pages and categories. This widget is best used in <a href="http://shailan.com">Shailan.com</a> themes. You can find more widgets, plugins and themes at <a href="http://shailan.com">shailan.com</a>.
|
6 |
-
Version: 1.3.
|
7 |
Author: Matt Say
|
8 |
Author URI: http://shailan.com
|
9 |
Text Domain: shailan-dropdown-menu
|
10 |
*/
|
11 |
|
12 |
-
define('SHAILAN_DM_VERSION','1.3.
|
13 |
define('SHAILAN_DM_TITLE', 'Dropdown Menu');
|
14 |
define('SHAILAN_DM_FOLDER', 'dropdown-menu-widget');
|
15 |
|
@@ -93,6 +93,7 @@ class shailan_DropdownWidget extends WP_Widget {
|
|
93 |
'None'=>'NONE',
|
94 |
'Simple White'=>'simple',
|
95 |
'Wordpress Default'=>'wpdefault',
|
|
|
96 |
'Grayscale'=>'grayscale',
|
97 |
'Aqua'=>'aqua',
|
98 |
'Blue gradient'=>'simple-blue',
|
@@ -347,6 +348,7 @@ load_plugin_textdomain( 'shailan-dropdown-menu', 'wp-content/plugins/' . $plugin
|
|
347 |
// add admin menu
|
348 |
add_action('admin_menu', array('shailan_DropdownWidget', 'adminMenu'));
|
349 |
|
|
|
350 |
include('shailan-page-walker.php'); // Load custom page walker
|
351 |
include('shailan-category-walker.php'); // Load custom category walker
|
352 |
|
3 |
Plugin Name: Shailan Dropdown Menu Widget
|
4 |
Plugin URI: http://shailan.com/wordpress/plugins/dropdown-menu
|
5 |
Description: A multi widget to generate drop-down menus from your pages and categories. This widget is best used in <a href="http://shailan.com">Shailan.com</a> themes. You can find more widgets, plugins and themes at <a href="http://shailan.com">shailan.com</a>.
|
6 |
+
Version: 1.3.2
|
7 |
Author: Matt Say
|
8 |
Author URI: http://shailan.com
|
9 |
Text Domain: shailan-dropdown-menu
|
10 |
*/
|
11 |
|
12 |
+
define('SHAILAN_DM_VERSION','1.3.2');
|
13 |
define('SHAILAN_DM_TITLE', 'Dropdown Menu');
|
14 |
define('SHAILAN_DM_FOLDER', 'dropdown-menu-widget');
|
15 |
|
93 |
'None'=>'NONE',
|
94 |
'Simple White'=>'simple',
|
95 |
'Wordpress Default'=>'wpdefault',
|
96 |
+
'Mystique'=>'mystique',
|
97 |
'Grayscale'=>'grayscale',
|
98 |
'Aqua'=>'aqua',
|
99 |
'Blue gradient'=>'simple-blue',
|
348 |
// add admin menu
|
349 |
add_action('admin_menu', array('shailan_DropdownWidget', 'adminMenu'));
|
350 |
|
351 |
+
include_once('exclude_pages.php');
|
352 |
include('shailan-page-walker.php'); // Load custom page walker
|
353 |
include('shailan-category-walker.php'); // Load custom category walker
|
354 |
|
themes/mystique.css
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* --- Dropdown background --- */
|
2 |
+
.shailan-dropdown-menu{
|
3 |
+
background:#006 url(images/blue_menu_bg.gif) repeat-x;
|
4 |
+
width:1000px; height:47px;
|
5 |
+
font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif;
|
6 |
+
font-size:14px;}
|
7 |
+
ul.dropdown{padding-left:20px;}
|
8 |
+
/* --- Dropdown basics ---*/
|
9 |
+
ul.dropdown a {
|
10 |
+
display:block;
|
11 |
+
vertical-align:middle;
|
12 |
+
text-align:center;
|
13 |
+
padding:12px 10px 10px 12px;
|
14 |
+
color: #000;
|
15 |
+
text-decoration:none;
|
16 |
+
text-transform:uppercase;}
|
17 |
+
/*--- Top level ---*/
|
18 |
+
ul.dropdown li a{
|
19 |
+
height:100%;
|
20 |
+
color:#fff;
|
21 |
+
}
|
22 |
+
ul.dropdown li+li a{
|
23 |
+
background:url(images/blue_menu_sep.gif) left center no-repeat;
|
24 |
+
}
|
25 |
+
ul.dropdown li a:hover{
|
26 |
+
text-decoration:underline;
|
27 |
+
color:#eee;
|
28 |
+
}
|
29 |
+
/*--- Sub level ---*/
|
30 |
+
ul.dropdown ul {
|
31 |
+
margin:0px;
|
32 |
+
list-style:none;
|
33 |
+
padding:0px;
|
34 |
+
background:#002055;
|
35 |
+
border:1px solid #000047;
|
36 |
+
text-align:left;
|
37 |
+
}
|
38 |
+
|
39 |
+
ul.dropdown ul li a{
|
40 |
+
color:#fff;
|
41 |
+
width:auto;
|
42 |
+
min-width:100px;
|
43 |
+
padding:2px 5px 3px 5px;
|
44 |
+
margin:0px;
|
45 |
+
height:auto;
|
46 |
+
text-align:left;
|
47 |
+
background:transparent;
|
48 |
+
}
|
49 |
+
|
50 |
+
ul.dropdown ul li a:hover{
|
51 |
+
position:relative;
|
52 |
+
background-color:#002f6a;
|
53 |
+
color: #fff;
|
54 |
+
text-decoration:none;
|
55 |
+
}
|
56 |
+
ul.dropdown li.current_page_item>a, ul.dropdown li.current-cat>a { font-weight:bold; }
|
themes/simple-blue.css
CHANGED
@@ -50,7 +50,6 @@ ul.dropdown ul li a{
|
|
50 |
ul.dropdown ul li a:hover{
|
51 |
position:relative;
|
52 |
background-color:#002f6a;
|
53 |
-
border-style:solid;
|
54 |
color: #fff;
|
55 |
text-decoration:none;
|
56 |
}
|
50 |
ul.dropdown ul li a:hover{
|
51 |
position:relative;
|
52 |
background-color:#002f6a;
|
|
|
53 |
color: #fff;
|
54 |
text-decoration:none;
|
55 |
}
|