more menu improvements, props ptahdunbar, see #11817

git-svn-id: http://svn.automattic.com/wordpress/trunk@13473 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
wpmuguru 2010-02-27 23:06:56 +00:00
parent 833f47778f
commit fcf6942d33
13 changed files with 832 additions and 575 deletions

View File

@ -477,6 +477,26 @@ case 'dim-comment' : // On success, die with time() instead of 1
_wp_ajax_delete_comment_response( $comment->comment_ID );
die( '0' );
break;
case 'add-menu-link':
if ( !current_user_can( 'manage_links' ) )
die('-1');
$link_url = isset($_POST['link_url']) ? $_POST['link_url'] : false;
$link_name = isset($_POST['link_name']) ? $_POST['link_name'] : false;
if ( !$link_url || !$link_name )
die('-1');
$post = array( 'post_type' => 'nav_menu_item', 'post_title' => $link_name, 'ping_status' => false, 'post_excerpt' => '', 'post_content' => '' );
$db_id = wp_insert_post( $post );
update_post_meta( $db_id, 'menu_type', 'custom' );
update_post_meta( $db_id, 'object_id', '' );
update_post_meta( $db_id, 'menu_new_window', 0 );
update_post_meta( $db_id, 'menu_link', esc_url_raw( $link_url ) );
echo $db_id;
break;
case 'add-link-category' : // On the Fly
check_ajax_referer( $action );
if ( !current_user_can( 'manage_categories' ) )

View File

@ -1 +1 @@
.maintitle{margin:0 0 20px 0!important;}.logo{vertical-align:middle;margin:0 10px 0 0;}h2.heading{margin:32px 0 10px 0;}.checkboxes{float:right;margin:10px 12px 0 0;}#menus-container{clear:both;}#nav-container .inside{padding:0 10px 10px;}#menus-container .submit{padding:0;}#menu-settings-column .inside{padding:10px;}#custom-nav ul{width:100%;}#custom-nav li{margin:0;}.ui-draggable-dragging{width:500px;}#custom-nav li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#custom-nav li dl dt:hover{cursor:move;}#custom-nav li dl dt .controls{position:absolute;right:15px;top:-1px;}#custom-nav li dl dt img{vertical-align:middle;}#custom-nav li .title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#custom-nav li ul li{margin-left:20px;opacity:.7;}#custom-nav li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li{opacity:.9;}#custom-nav li ul li ul li ul li ul li{opacity:.95;}#add-custom-link .howto{font-size:11px;}#add-custom-link .widefat{width:85%;margin-right:5px;}.list-container{max-height:203px;overflow-y:auto;padding-left:2px;padding-right:5px;}.list{zoom:1;}.list li{margin:0;}.list dt{display:none;margin:0;border-bottom:1px solid #e3e3e3;overflow:hidden;}.list dt{background:url(../images/ico-add.png) no-repeat right;}.list li .title{cursor:pointer;display:block;width:95%;padding:5px 0;}.list li .title{background:url(../images/ico-arrow.png) no-repeat 4px 13px;background-position:center left;padding-left:5%;}.list li ul li .title{margin-left:14px;}.list li ul li ul li .title{margin-left:28px;}.list li ul li ul li ul li .title{margin-left:42px;}.list li ul li ul li ul li ul li .title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .title{margin-left:112px;}img.remove,img.edit{cursor:pointer;margin:0 5px 0 0;}.dropzone{height:7px;margin:3px 0 3px 0;}.hide{display:none;}.type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}#menu_select{width:170px;}#dialog-confirm label{padding-left:10px;}.ui-dialog{background:#fff;border:1px solid #555;-moz-box-shadow:0 4px 30px #000;}.ui-dialog-titlebar{color:#CFCFCF;font-family:"Lucida Grande",Verdana,Arial,sans-serif;padding:6px 10px 6px;background-color:#222!important;border:none!important;-moz-border-radius:none!important;}#dialog-confirm{height:168px!important;padding:20px 10px 10px;}#dialog-confirm input{margin:0 0 15px 0;width:280px;}#dialog-confirm select{margin:0 0 15px 0;}.ui-dialog-buttonpane{padding:10px;}.ui-dialog-buttonpane button{margin:0 10px 0 0;background:#F2F2F2;text-shadow:0 1px 0 #FFF;border-color:#BBB;color:#464646;-moz-border-radius-bottomleft:11px;-moz-border-radius-bottomright:11px;-moz-border-radius-topleft:11px;-moz-border-radius-topright:11px;border-style:solid;border-width:1px;cursor:pointer;font-size:11px!important;line-height:14px;padding:2px 8px;text-decoration:none;}.ui-dialog-buttonpane button:hover{color:#000;border-color:#666;}.ui-icon{display:none;}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%;}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.60;filter:Alpha(Opacity=60);-moz-border-radius:8px;-webkit-border-radius:8px;}
#menu-management{clear:both;}#menu-management .inside{padding:0 10px;}#menu-container .submit{margin:0 0 10px;padding:0;}.submitdelete{color:#f00;text-decoration:underline;font-size:11px;float:left;margin-top:5px;}.submitdelete:hover{background-color:#F00;color:#fff;}.save{float:right;}.button-controls{float:left;}.add-to-menu{float:right;}#create-menu-name{width:159px;}#available-links{margin:15px 0 0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:11px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}#menu-item-url,#menu-item-name{float:right;width:220px;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid #DFDFDF;-moz-border-radius:4px;}.postbox p.submit{margin-bottom:0;}.list li{margin:0;}.list dt{display:none;margin:0;overflow:hidden;margin-bottom:5px;}.list li .item-title{cursor:pointer;display:block;}.list li .item-title input{margin-right:3px;margin-top:-3px;}.list li ul li .item-title{margin-left:14px;}.list li ul li ul li .item-title{margin-left:28px;}.list li ul li ul li ul li .item-title{margin-left:42px;}.list li ul li ul li ul li ul li .item-title{margin-left:56px;}.list li ul li ul li ul li ul li ul li .item-title{margin-left:70px;}.list li ul li ul li ul li ul li ul li ul li .item-title{margin-left:84px;}.list li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:98px;}.list li ul li ul li ul li ul li ul li ul li ul li ul li .item-title{margin-left:112px;}#menu-container .inside{padding-bottom:10px;}#menu ul{width:100%;}#menu li{margin:0;}#menu li dl dt{-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-top-left-radius:6px;-webkit-border-top-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top-left-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;border:1px solid #E6E6E6;position:relative;padding-left:10px;background-color:#f1f1f1;height:35px;line-height:35px;}#menu li dl dt:hover{cursor:move;}#menu li .item-title{background:url(../images/ico-arrow.png) no-repeat 4px 5px;background-position:center left;padding-left:15px;}#menu li ul li{margin-left:20px;opacity:.7;}#menu li ul li ul li{opacity:.9;}#menu li ul li ul li ul li{opacity:.9;}#menu li ul li ul li ul li ul li{opacity:.95;}.dropzone{height:7px;margin:3px 0 3px 0;}.ui-draggable-dragging{width:600px;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:15px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-delete:hover{color:#f00;}#menu-item-settings{display:none;}#cancel-save{cursor:pointer;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.hide{display:none;}

View File

@ -2,80 +2,100 @@
* WordPress Administration Custom Navigation
* Interface CSS
*
* @version 1.1.0
* @version 2.0.0
*
* @package WordPress
* @subpackage Administration
*/
.maintitle { margin: 0 0 20px 0!important;}
.logo { vertical-align: middle; margin: 0 10px 0 0; }
h2.heading { margin: 32px 0 10px 0; }
.checkboxes { float: right; margin: 10px 12px 0 0; }
/* Menu Container */
#menu-management { clear: both; }
#menu-management .inside { padding: 0 10px; }
#menus-container { clear: both; }
#nav-container .inside { padding: 0px 10px 10px; }
#menus-container .submit { padding: 0px; }
#menu-settings-column .inside { padding: 10px; }
/* Button Primary Actions */
#menu-container .submit { margin: 0px 0px 10px; padding: 0px; }
.submitdelete { color: #ff0000; text-decoration: underline; font-size: 11px; float: left; margin-top: 5px; }
.submitdelete:hover { background-color: #FF0000; color: #fff; }
.save { float: right; }
#custom-nav ul { width: 100%; }
#custom-nav li { margin: 0; }
.ui-draggable-dragging { width: 500px; }
#custom-nav li dl dt { -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; border: 1px solid #E6E6E6;position: relative; padding-left:10px; background-color: #f1f1f1; height: 35px; line-height: 35px; }
#custom-nav li dl dt:hover { cursor: move; }
#custom-nav li dl dt .controls { position: absolute; right: 15px; top: -1px; }
#custom-nav li dl dt img { vertical-align: middle; }
#custom-nav li dl dt a {}
#custom-nav li .title { background:url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; }
#custom-nav li ul li { margin-left: 20px; opacity: .7;}
#custom-nav li ul li ul li { opacity: .9;}
#custom-nav li ul li ul li ul li { opacity: .9;}
#custom-nav li ul li ul li ul li ul li { opacity: .95; }
/* Button Secondary Actions */
.button-controls { float: left; }
.add-to-menu { float: right; }
/* CSS for switching the columns *//*
#menu-settings-column { clear: none; float: left; }
#menu-management #post-body { float: right; margin-left: -340px; margin-right: 0px; }
#menu-management #post-body-content { margin-left: 300px; margin-right: 0px; }
*/
/* Create Menu */
#create-menu-name { width: 159px; }
/* Custom Links */
#available-links { margin: 15px 0px 0px; }
#available-links dt { display: block; }
#add-custom-link .howto { font-size: 11px; }
#add-custom-link .widefat { width: 85%; margin-right: 5px; }
#add-custom-link label span { display: block; float: left; margin-top: 5px; padding-right: 5px; }
#menu-item-url, #menu-item-name { float: right; width: 220px; }
.list-container { max-height: 203px; overflow-y: auto; padding-left: 2px; padding-right: 5px; }
/* Pages/Categories */
.show-all, .hide-all { cursor: pointer; }
.hide-all { display: none; }
.list { zoom: 1; }
.quick-search { width: 190px; }
.list-wrap { display: none; clear: both; }
.list-container { max-height: 200px; overflow-y: auto; padding: 10px 10px 5px; border: 1px solid #DFDFDF; -moz-border-radius: 4px; }
.postbox p.submit { margin-bottom: 0; }
/* Listings */
.list li { margin: 0; }
.list dt { display: none; margin: 0; border-bottom: 1px solid #e3e3e3; overflow: hidden; }
.list dt { background: url(../images/ico-add.png) no-repeat right; }
.list dt { display: none; margin: 0; overflow: hidden; margin-bottom: 5px; }
.list li .title { cursor: pointer; display: block; width: 95%; padding: 5px 0px; }
.list li .title { background: url(../images/ico-arrow.png) no-repeat 4px 13px; background-position: center left; padding-left: 5%; }
.list li .item-title { cursor: pointer; display: block; }
.list li .item-title input { margin-right: 3px; margin-top: -3px; }
/* Visually shows the menu item hierarchy. */
.list li ul li .title { margin-left: 14px; }
.list li ul li ul li .title { margin-left: 28px; }
.list li ul li ul li ul li .title { margin-left: 42px; }
.list li ul li ul li ul li ul li .title { margin-left: 56px; }
.list li ul li ul li ul li ul li ul li .title { margin-left: 70px; }
.list li ul li ul li ul li ul li ul li ul li .title { margin-left: 84px; }
.list li ul li ul li ul li ul li ul li ul li ul li .title { margin-left: 98px; }
.list li ul li ul li ul li ul li ul li ul li ul li ul li .title { margin-left: 112px; }
.list li ul li .item-title { margin-left: 14px; }
.list li ul li ul li .item-title { margin-left: 28px; }
.list li ul li ul li ul li .item-title { margin-left: 42px; }
.list li ul li ul li ul li ul li .item-title { margin-left: 56px; }
.list li ul li ul li ul li ul li ul li .item-title { margin-left: 70px; }
.list li ul li ul li ul li ul li ul li ul li .item-title { margin-left: 84px; }
.list li ul li ul li ul li ul li ul li ul li ul li .item-title { margin-left: 98px; }
.list li ul li ul li ul li ul li ul li ul li ul li ul li .item-title { margin-left: 112px; }
img.remove, img.edit { cursor: pointer; margin: 0 5px 0 0; }
/* Menu */
#menu-container .inside { padding-bottom: 10px; }
#menu ul { width: 100%; }
#menu li { margin: 0; }
#menu li dl dt { -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-top-left-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; border: 1px solid #E6E6E6;position: relative; padding-left:10px; background-color: #f1f1f1; height: 35px; line-height: 35px; }
#menu li dl dt:hover { cursor: move; }
#menu li .item-title { background: url(../images/ico-arrow.png) no-repeat 4px 5px; background-position: center left; padding-left: 15px; }
#menu li ul li { margin-left: 20px; opacity: .7;}
#menu li ul li ul li { opacity: .9;}
#menu li ul li ul li ul li { opacity: .9;}
#menu li ul li ul li ul li ul li { opacity: .95; }
/* Drag and Drop */
.dropzone { height: 7px; margin: 3px 0 3px 0; }
#custom-nav li dl { }
.hide { display: none; }
.type { text-transform: uppercase; font-size: 11px; color: #999999; padding-right: 10px; }
.ui-draggable-dragging { width: 600px; }
#menu_select { width: 170px; }
#dialog-confirm label { padding-left: 10px; }
/* Menu Controls */
.item-type { text-transform: uppercase; font-size: 11px; color: #999999; padding-right: 10px; }
.item-controls { font-size: 11px; position: absolute; right: 15px; top: -1px; }
.item-controls a { text-decoration: none; }
.item-controls a:hover { cursor: pointer; }
.item-controls .item-delete:hover { color: #ff0000; }
/* EDIT LINK BOX */
.ui-dialog { background: #fff; border: 1px solid #555555; -moz-box-shadow:0 4px 30px #000000; }
.ui-dialog-titlebar { color: #CFCFCF; font-family: "Lucida Grande", Verdana, Arial, sans-serif; padding: 6px 10px 6px; background-color: #222222 !important; border: none !important; -moz-border-radius: none !important; }
#dialog-confirm { height: 168px !important; padding: 20px 10px 10px; }
#dialog-confirm input { margin: 0 0 15px 0; width: 280px; }
#dialog-confirm select { margin: 0 0 15px 0; }
.ui-dialog-buttonpane { padding: 10px; }
.ui-dialog-buttonpane button { margin: 0 10px 0 0; background: #F2F2F2; text-shadow: 0 1px 0 #FFFFFF; border-color: #BBBBBB; color: #464646; -moz-border-radius-bottomleft: 11px; -moz-border-radius-bottomright: 11px; -moz-border-radius-topleft: 11px; -moz-border-radius-topright: 11px; border-style: solid; border-width: 1px; cursor: pointer; font-size: 11px !important; line-height: 14px; padding: 2px 8px; text-decoration: none; }
.ui-dialog-buttonpane button:hover { color: #000; border-color: #666; }
.ui-icon { display: none; }
/* Thickbox */
#menu-item-settings { display: none; }
#cancel-save { cursor: pointer; }
#cancel-save:hover { color: #fff !important; }
#update-menu-item { color: #fff !important; }
#update-menu-item:hover,
#update-menu-item:active,
#update-menu-item:focus { color: #eaf2fa !important; border-color: #13455b !important; }
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60; filter:Alpha(Opacity=60); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60; filter: Alpha(Opacity=60); -moz-border-radius: 8px; -webkit-border-radius: 8px; }
/* Misc */
.hide { display: none; }

View File

@ -175,7 +175,7 @@ function wp_nav_menu_sub_items($childof, $items_counter, $parentli, $type, $outp
if ( $sub_array ) {
?>
<ul id="sub-custom-nav-<?php echo $type ?>">
<ul id="sub-menu-<?php echo $type ?>">
<?php
// Display Loop
@ -221,7 +221,7 @@ function wp_nav_menu_setup($override = false) {
// Custom Navigation Menu Setup
// Override for menu descriptions
update_option('wp_settings_custom_nav_advanced_options', 'yes');
update_option('wp_settings_nav_menu_advanced_options', 'yes');
$menus = wp_get_nav_menus();
if ( !empty( $menus ) ) {

View File

@ -1,146 +1,190 @@
/**
* WordPress Administration Custom Navigation
* Interface JQuery functions
* Interface $ functions
*
* @version 1.1.0
* @version 2.0.0
*
* @package WordPress
* @subpackage Administration
*/
/*
/**
* Init Functions
*/
jQuery(function($)
{
//Makes dialog box
$("#dialog-confirm").dialog({
autoOpen: false,
resizable: false,
height: 210,
width: 400,
modal: true,
buttons: {
'Save': function() {
titletosave = $('#edittitle').attr('value');
linktosave = $('#editlink').attr('value');
anchortitletosave = $('#editanchortitle').attr('value');
newwindowtosave = $('#editnewwindow').attr('value');
desctosave = $('#editdescription').attr('value');
$('#title' + $(this).dialog('option', 'itemID')).attr('value',titletosave);
$('#linkurl' + $(this).dialog('option', 'itemID')).attr('value',linktosave);
$('#anchortitle' + $(this).dialog('option', 'itemID')).attr('value',anchortitletosave);
$('#newwindow' + $(this).dialog('option', 'itemID')).attr('value',newwindowtosave);
$('#description' + $(this).dialog('option', 'itemID')).attr('value',desctosave);
$('#menu-' + $(this).dialog('option', 'itemID') + ' > dl > dt > span.title').text(titletosave);
$('#view' + + $(this).dialog('option', 'itemID')).attr('href', linktosave);
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});
// $('#message').animate({ opacity: 1.0 },2000).fadeOut(300, function(){ $(this).remove();});
//Add dropzone
$('#custom-nav li').prepend('<div class="dropzone"></div>');
//Make li items draggable
$('#custom-nav li').draggable({
handle: ' > dl',
opacity: .8,
addClasses: false,
helper: 'clone',
zIndex: 100
});
//Make items droppable
$('#custom-nav dl, #custom-nav .dropzone').droppable(
{
accept: '#custom-nav li',
tolerance: 'pointer',
drop: function(e, ui)
{
var li = $(this).parent();
var child = !$(this).hasClass('dropzone');
//Add UL to first child
if (child && li.children('ul').length == 0)
{
li.append('<ul id="sub-menu" />');
}
//Make it draggable
if (child)
{
li.children('ul').append(ui.draggable);
}
else
{
li.before(ui.draggable);
}
li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' });
var draggablevalue = ui.draggable.attr('value');
var droppablevalue = li.attr('value');
li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue);
$(this).parent().find("dt").removeAttr('style');
$(this).parent().find("div:first").removeAttr('style');
},
over: function()
{
//Add child
if ($(this).attr('class') == 'dropzone ui-droppable')
{
$(this).parent().find("div:first").css('background', 'none').css('height', '50px');
}
//Add above
else if ($(this).attr('class') == 'ui-droppable')
{
$(this).parent().find("dt:first").css('background', '#d8d8d8');
}
//do nothing
else {
}
var parentid = $(this).parent().attr('id');
},
out: function()
{
$(this).parent().find("dt").removeAttr('style');
$(this).parent().find("div:first").removeAttr('style');
$(this).filter('.dropzone').css({ borderColor: '' });
},
deactivate: function()
{
}
});
//Handle Save Button Clicks
$('#save_top').click(function()
{
updatepostdata();
});
$('#save_bottom').click(function()
{
updatepostdata();
});
*/
jQuery(document).ready(function($){
// Handle Save Button Clicks
$('#save_menu').click(function(){
wp_update_post_data();
});
// Clear the quick search textbox
$('.quick-search').click(function(){
$(this).attr( 'value', '' );
});
// Quick Search submit
$('.quick-search-submit').click(function(){
$(this).siblings('.quick-search').search();
});
// Edit menu item
$('#menu-container .item-edit').click(function(){
wp_edit_menu_item( $(this).attr('value') );
});
// Delete menu item
$('#menu-container .item-delete').live( 'click', function(){
wp_remove_menu_item( $(this).attr('value') );
});
// Update menu item settings (thickbox)
$('#update-menu-item').click(function(){
wp_update_menu_item();
tb_remove();
// Give feedback to the user
var id = $('#edit-item-id').val();
$('#menu-' + id + ' dt:first').animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }});
});
// Close thickbox
$('#cancel-save').click(function(){
tb_remove();
});
// Show All Button
$('.show-all').click(function(){
$(this).offsetParent().find('#add-buttons-actions').attr( 'style','margin-bottom: 10px;' );
$(this).offsetParent().find('.list-wrap').css( 'display','block' );
$(this).siblings('.quick-search').attr( 'value', '' );
$(this).offsetParent().find('.list-wrap dt').css( 'display', 'block' );
$(this).hide();
$(this).siblings('.hide-all').show();
});
// Hide All Button
$('.hide-all').click(function(){
$(this).offsetParent().find('#add-buttons-actions').attr( 'style','margin-bottom: 0px;' );
$(this).offsetParent().find('.list-wrap').css( 'display','none' );
$(this).siblings('.quick-search').attr( 'value', 'Search' );
$(this).offsetParent().find('.list-wrap dt').css( 'display', 'none' );
$(this).hide();
$(this).siblings('.show-all').show();
});
// Add queued menu items into the menu
$('.enqueue a').click(function(){
wp_add_queued_items_to_menu(this);
});
// Create the link, add it to the menu + available links section
$('#add-custom-link .add-to-menu a').click(function(){
var link_url = $(this).offsetParent().find('#menu-item-url').val();
var link_name = $(this).offsetParent().find('#menu-item-name').val();
var links = $(this).offsetParent().find('#available-links input:checked');
// If links are checked in the available links section, add them to the menu
if ( links ) {
for (var i = 0; i < links.length; i++) {
wp_add_item_to_menu( 'Custom', links[i].name, links[i].value, links[i].id.substring( 5, links[i].id.length ), 0, '' );
};
// Reset the checkboxes;
$(links).attr('checked', false);
};
// Don't save the link if it was left with it's default settings
if ( 'http://' == link_url || 'Menu Item' == link_name )
return;
// Parameters to send off
params = {
action: 'add-menu-link',
link_url: link_url,
link_name: link_name,
};
// save the link
$.post( ajaxurl, params, function(response) {
if ( null == response || '-1' == response )
return false;
params.link_id = response;
// add it to the available links section
// wp_update_links_list( params );
// and update the Menu with the new link
wp_add_item_to_menu( 'Custom', params.link_name, params.link_url, params.link_id, 0, '' );
}, 'json');
});
// Add dropzones
$('#menu li').prepend('<div class="dropzone"></div>');
// Make menu items draggable
$('#menu li').draggable({
handle: ' > dl',
opacity: .8,
addClasses: false,
helper: 'clone',
zIndex: 100
});
// Make items droppable
$('#menu dl, #menu .dropzone').droppable({
accept: '#menu li',
tolerance: 'pointer',
drop: function(e, ui) {
var li = $(this).parent();
var child = !$(this).hasClass('dropzone');
// Add UL to first child
if ( child && li.children('ul').length == 0 ) {
li.append('<ul id="sub-menu" />');
}
// Make it draggable
if ( child ) {
li.children('ul').append( ui.draggable );
} else {
li.before( ui.draggable );
}
li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' });
var draggablevalue = ui.draggable.attr('value');
var droppablevalue = li.attr('value');
li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue);
$(this).parent().find('dt').removeAttr('style');
$(this).parent().find('div:first').removeAttr('style');
},
over: function() {
if ( 'dropzone ui-droppable' == $(this).attr('class') ) {
// Add child
$(this).parent().find('dt:first').css('background', 'none').css('height', '50px');
} else if ($(this).attr('class') == 'ui-droppable') {
// Add above
$(this).parent().find('dt:first').css('background', '#d8d8d8');
} else {
// do nothing
}
var parentid = $(this).parent().attr('id');
},
out: function() {
$(this).parent().find('dt').removeAttr('style');
$(this).parent().find('div:first').removeAttr('style');
$(this).filter('.dropzone').css({ borderColor: '' });
},
deactivate: function() {
//
}
});
});

View File

@ -1 +1 @@
jQuery(function($){$("#dialog-confirm").dialog({autoOpen:false,resizable:false,height:210,width:400,modal:true,buttons:{Save:function(){titletosave=$("#edittitle").attr("value");linktosave=$("#editlink").attr("value");anchortitletosave=$("#editanchortitle").attr("value");newwindowtosave=$("#editnewwindow").attr("value");desctosave=$("#editdescription").attr("value");$("#title"+$(this).dialog("option","itemID")).attr("value",titletosave);$("#linkurl"+$(this).dialog("option","itemID")).attr("value",linktosave);$("#anchortitle"+$(this).dialog("option","itemID")).attr("value",anchortitletosave);$("#newwindow"+$(this).dialog("option","itemID")).attr("value",newwindowtosave);$("#description"+$(this).dialog("option","itemID")).attr("value",desctosave);$("#menu-"+$(this).dialog("option","itemID")+" > dl > dt > span.title").text(titletosave);$("#view"+ +$(this).dialog("option","itemID")).attr("href",linktosave);$(this).dialog("close")},Cancel:function(){$(this).dialog("close")}}});$("#custom-nav li").prepend('<div class="dropzone"></div>');$("#custom-nav li").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});$("#custom-nav dl, #custom-nav .dropzone").droppable({accept:"#custom-nav li",tolerance:"pointer",drop:function(e,ui){var li=$(this).parent();var child=!$(this).hasClass("dropzone");if(child&&li.children("ul").length==0){li.append('<ul id="sub-menu" />')}if(child){li.children("ul").append(ui.draggable)}else{li.before(ui.draggable)}li.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var draggablevalue=ui.draggable.attr("value");var droppablevalue=li.attr("value");li.find("#menu-"+draggablevalue).find("#parent"+draggablevalue).val(droppablevalue);$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style")},over:function(){if($(this).attr("class")=="dropzone ui-droppable"){$(this).parent().find("div:first").css("background","none").css("height","50px")}else{if($(this).attr("class")=="ui-droppable"){$(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var parentid=$(this).parent().attr("id")},out:function(){$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style");$(this).filter(".dropzone").css({borderColor:""})},deactivate:function(){}});$("#save_top").click(function(){updatepostdata()});$("#save_bottom").click(function(){updatepostdata()})});
jQuery(document).ready(function($){$("#save_menu").click(function(){wp_update_post_data()});$(".quick-search").click(function(){$(this).attr("value","")});$(".quick-search-submit").click(function(){$(this).siblings(".quick-search").search()});$("#menu-container .item-edit").click(function(){wp_edit_menu_item($(this).attr("value"))});$("#menu-container .item-delete").live("click",function(){wp_remove_menu_item($(this).attr("value"))});$("#update-menu-item").click(function(){wp_update_menu_item();tb_remove();var id=$("#edit-item-id").val();$("#menu-"+id+" dt:first").animate({backgroundColor:"#FFFF33"},{duration:"normal",complete:function(){jQuery(this).css("backgroundColor","")}})});$("#cancel-save").click(function(){tb_remove()});$(".show-all").click(function(){$(this).offsetParent().find("#add-buttons-actions").attr("style","margin-bottom: 10px;");$(this).offsetParent().find(".list-wrap").css("display","block");$(this).siblings(".quick-search").attr("value","");$(this).offsetParent().find(".list-wrap dt").css("display","block");$(this).hide();$(this).siblings(".hide-all").show()});$(".hide-all").click(function(){$(this).offsetParent().find("#add-buttons-actions").attr("style","margin-bottom: 0px;");$(this).offsetParent().find(".list-wrap").css("display","none");$(this).siblings(".quick-search").attr("value","Search");$(this).offsetParent().find(".list-wrap dt").css("display","none");$(this).hide();$(this).siblings(".show-all").show()});$(".enqueue a").click(function(){wp_add_queued_items_to_menu(this)});$("#add-custom-link .add-to-menu a").click(function(){var link_url=$(this).offsetParent().find("#menu-item-url").val();var link_name=$(this).offsetParent().find("#menu-item-name").val();var links=$(this).offsetParent().find("#available-links input:checked");if(links){for(var i=0;i<links.length;i++){wp_add_item_to_menu("Custom",links[i].name,links[i].value,links[i].id.substring(5,links[i].id.length),0,"")}$(links).attr("checked",false)}if("http://"==link_url||"Menu Item"==link_name){return}params={action:"add-menu-link",link_url:link_url,link_name:link_name,};$.post(ajaxurl,params,function(response){if(null==response||"-1"==response){return false}params.link_id=response;wp_add_item_to_menu("Custom",params.link_name,params.link_url,params.link_id,0,"")},"json")});$("#menu li").prepend('<div class="dropzone"></div>');$("#menu li").draggable({handle:" > dl",opacity:0.8,addClasses:false,helper:"clone",zIndex:100});$("#menu dl, #menu .dropzone").droppable({accept:"#menu li",tolerance:"pointer",drop:function(e,ui){var li=$(this).parent();var child=!$(this).hasClass("dropzone");if(child&&li.children("ul").length==0){li.append('<ul id="sub-menu" />')}if(child){li.children("ul").append(ui.draggable)}else{li.before(ui.draggable)}li.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var draggablevalue=ui.draggable.attr("value");var droppablevalue=li.attr("value");li.find("#menu-"+draggablevalue).find("#parent"+draggablevalue).val(droppablevalue);$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style")},over:function(){if("dropzone ui-droppable"==$(this).attr("class")){$(this).parent().find("dt:first").css("background","none").css("height","50px")}else{if($(this).attr("class")=="ui-droppable"){$(this).parent().find("dt:first").css("background","#d8d8d8")}else{}}var parentid=$(this).parent().attr("id")},out:function(){$(this).parent().find("dt").removeAttr("style");$(this).parent().find("div:first").removeAttr("style");$(this).filter(".dropzone").css({borderColor:""})},deactivate:function(){}})});

View File

@ -8,62 +8,104 @@
* @subpackage Administration
*/
/*
* Removes menu items from current menu
/**
* Adds a link to the available links section
*
* @param object e - An object recieved via ajax
*/
function wp_update_links_list(e) {
var link = '<li><dl><dt><label class="item-title"><input type="checkbox" id="link-'+ e.link_id +'" name="'+ e.link_name +'" value="'+ e.link_url +'" />'+ e.link_name +'</label></dt></dl></li>';
// Prepend the link to the available links section
jQuery('#available-links .list').prepend( link );
// Give feedback to the user
jQuery('#available-links .list #link-' + e.link_id).parent().animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }});
}
/**
* Removes a menu item from current menu
*
* @param int o - the id of the menu li to remove.
*/
function removeitem(o)
{
*/
function wp_remove_menu_item( o ) {
var todelete = document.getElementById('menu-' + o);
if (todelete)
{
var parenttodelete = document.getElementById('menu-' + o).parentNode;
throwaway_node = parenttodelete.removeChild(todelete);
if ( todelete ) {
// Give some feedback to the user
jQuery( todelete ).find('dt').each(function(){
jQuery(this).animate( { backgroundColor: '#FF3333' }, { duration: 'normal', complete: function() { jQuery(this).parent().parent().remove() } } );
});
wp_update_post_data();
}
updatepostdata();
};
/*
* Loads dialog window to edit menu items from current menu
/**
* Populate the thickbox window with the selected menu items
*
* @param int o - the id of the menu li to edit.
*/
function edititem(o)
{
itemTitle = jQuery('#title' + o).val();
itemURL = jQuery('#linkurl' + o).val();
itemAnchorTitle = jQuery('#anchortitle' + o).val();
itemNewWindow = jQuery('#newwindow' + o).val();
itemDesc = jQuery('#description' + o).val();
jQuery('#dialog-confirm').dialog( 'option' , 'itemID' , o )
jQuery('#dialog-confirm').dialog('open');
jQuery('#edittitle').val( itemTitle );
if ( 'custom' == jQuery( '#linktype' + o ).val() ) {
jQuery( '#editlink-wrap' ).css( 'display', 'inline' );
} else {
jQuery( '#editlink-wrap' ).css( 'display', 'none' );
}
jQuery('#editlink').val( itemURL );
jQuery('#editanchortitle').val( itemAnchorTitle );
jQuery("#editnewwindow option[value='" + itemNewWindow + "']").attr('selected', 'selected');
jQuery('#editdescription').val( itemDesc );
*/
function wp_edit_menu_item( id ) {
console.log('wp_edit_menu_item');
var itemTitle = jQuery('#item-title' + id).val();
var itemURL = jQuery('#item-url' + id).val();
var itemAttrTitle = jQuery('#item-attr-title' + id).val();
var itemTarget = jQuery('#item-target' + id).val();
var itemDesc = jQuery('#item-description' + id).val();
console.log(id);
console.log(itemTitle);
console.log(itemURL);
console.log(itemAttrTitle);
console.log(itemTarget);
console.log(itemDesc);
// Populate the fields for thickbox
jQuery( '#edit-item-id' ).val(id);
jQuery( '#edit-item-title' ).val(itemTitle);
jQuery( '#edit-item-url' ).val(itemURL);
jQuery( '#edit-item-attr-title' ).val(itemAttrTitle);
jQuery( '#edit-item-target' ).val(itemTarget);
jQuery( "#edit-item-target option[value='" + itemTarget + "']" ).attr('selected', 'selected');
jQuery( '#edit-item-description' ).val(itemDesc);
};
/*
* Prepares menu items for POST
*/
function updatepostdata()
{
/**
* Update the values for the menu item being editing
*/
function wp_update_menu_item() {
var id = jQuery('#edit-item-id').val();
var itemTitle = jQuery('#edit-item-title').val();
var itemURL = jQuery('#edit-item-url').val();
var itemAttrTitle = jQuery('#edit-item-attr-title').val();
var itemTarget = jQuery('#edit-item-target').val();
var itemDesc = jQuery('#edit-item-description').val();
console.log(id);
console.log(itemTitle);
console.log(itemURL);
console.log(itemAttrTitle);
console.log(itemTarget);
console.log(itemDesc);
// update menu item settings
jQuery('#menu-' + id).find('.item-title:first').html(itemTitle);
jQuery('#item-title' + id).val(itemTitle);
jQuery('#item-url' + id).val(itemURL);
jQuery('#item-attr-title' + id).val(itemAttrTitle);
jQuery('#item-target' + id).val(itemTarget);
jQuery('#item-description' + id).val(itemDesc);
}
/**
* Prepares menu items for POST
*/
function wp_update_post_data() {
var i = 0;
jQuery("#custom-nav").find("li").each(function(i) {
jQuery('#menu li').each(function(i) {
i = i + 1;
var j = jQuery(this).attr('value');
@ -79,57 +121,86 @@ function updatepostdata()
var p = jQuery(this).find('#parent' + j).parent().parent().parent().attr('value');
jQuery(this).find('#parent' + j).attr('name','parent' + i);
jQuery(this).find('#parent' + j).attr('id','parent' + i);
if (p) {
//Do nothing
}
else {
//reset p to be top level
p = 0;
}
jQuery(this).find('#parent' + j).attr('name','parent' + i);
jQuery(this).find('#parent' + j).attr('id','parent' + i);
if (p) {
// Do nothing
} else {
// reset p to be top level
p = 0;
}
jQuery(this).find('#parent' + j).attr('value', p);
jQuery(this).find('#parent' + j).attr('value', p);
jQuery(this).find('#title' + j).attr('name','title' + i);
jQuery(this).find('#title' + j).attr('id','title' + i);
jQuery(this).find('#item-title' + j).attr('name','item-title' + i);
jQuery(this).find('#item-title' + j).attr('id','item-title' + i);
jQuery(this).find('#linkurl' + j).attr('name','linkurl' + i);
jQuery(this).find('#linkurl' + j).attr('id','linkurl' + i);
jQuery(this).find('#item-url' + j).attr('name','item-url' + i);
jQuery(this).find('#item-url' + j).attr('id','item-url' + i);
jQuery(this).find('#description' + j).attr('name','description' + i);
jQuery(this).find('#description' + j).attr('id','description' + i);
jQuery(this).find('#item-description' + j).attr('name','item-description' + i);
jQuery(this).find('#item-description' + j).attr('id','item-description' + i);
jQuery(this).find('#icon' + j).attr('name','icon' + i);
jQuery(this).find('#icon' + j).attr('id','icon' + i);
jQuery(this).find('#item-attr-title' + j).attr('name','item-attr-title' + i);
jQuery(this).find('#item-attr-title' + j).attr('id','item-attr-title' + i);
jQuery(this).find('#position' + j).attr('name','position' + i);
jQuery(this).find('#position' + j).attr('id','position' + i);
jQuery(this).find('#item-target' + j).attr('name','item-target' + i);
jQuery(this).find('#item-target' + j).attr('id','item-target' + i);
jQuery(this).find('#linktype' + j).attr('name','linktype' + i);
jQuery(this).find('#linktype' + j).attr('id','linktype' + i);
jQuery(this).find('#position' + j).attr('name', 'position' + i);
jQuery(this).find('#position' + j).attr('id', 'position' + i);
jQuery(this).find('#anchortitle' + j).attr('name','anchortitle' + i);
jQuery(this).find('#anchortitle' + j).attr('id','anchortitle' + i);
jQuery(this).find('#newwindow' + j).attr('name','newwindow' + i);
jQuery(this).find('#newwindow' + j).attr('id','newwindow' + i);
jQuery(this).find('dl > dt > span > #remove' + j).attr('value', i);
jQuery(this).find('dl > dt > span > #remove' + j).attr('onClick', 'removeitem(' + i + ')');
jQuery(this).find('dl > dt > span > #remove' + j).attr('id','remove' + i);
jQuery('#li-count').attr('value',i);
jQuery(this).find('#linktype' + j).attr('name', 'linktype' + i);
jQuery(this).find('#linktype' + j).attr('id', 'linktype' + i);
jQuery('#li-count').attr( 'value', i );
});
};
/**
* Adds the item to the menu
*
* @param string id - The menu item's id
* @param string additemtype - Page, Category, or Custom.
* @param string itemtext - menu text.
* @param string itemurl - url of the menu.
* @param int itemid - menu id.
* @param int itemparentid - default 0.
* @param string itemdescription - the description of the menu item.
*/
function wp_add_item_to_menu( additemtype, itemtext, itemurl, itemid, itemparentid, itemdescription ) {
var inputvaluevarname = '';
var inputvaluevarurl = '';
var inputitemid = '';
var inputparentid= '';
var inputdescription = '';
var randomnumber = wp_get_unique_menu_id();
inputvaluevarname = htmlentities(itemtext.toString());
inputvaluevarurl = itemurl.toString();
inputitemid = itemid;
inputparentid = itemparentid;
inputlinktype = 'custom';
inputdescription = htmlentities(itemdescription.toString());
// Adds the item in the queue
jQuery('#menu').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="item-title">' + inputvaluevarname + '</span><span class="item-controls"><span class="item-type">' + additemtype + '</span><a class="item-edit thickbox" id="edit' + randomnumber + '" value="' + randomnumber +'" onClick="wp_edit_menu_item('+ randomnumber +')" title="' + navMenuL10n.thickbox + '" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings">' + navMenuL10n.edit + '</a> | <a class="item-delete" id="delete' + randomnumber + '" value="' + randomnumber +'">Delete</a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="item-title' + randomnumber + '" id="item-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-url' + randomnumber + '" id="item-url' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="item-description' + randomnumber + '" id="item-description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="item-attr-title' + randomnumber + '" id="item-attr-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-target' + randomnumber + '" id="item-target' + randomnumber + '" value="0" /></li>');
// Give some feedback to the user
jQuery( '#menu #menu-' + randomnumber + ' dt:first' ).animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }});
// Enable drag-n-drop
wp_drag_and_drop();
// Reload thickbox
tb_init('a.thickbox, area.thickbox, input.thickbox');
};
/*
* Adds item from Page, Category, or Custom options menu
* @param string templatedir - directory of the add, edit, view images.
* Queues items in perperation for appendToList
*
* @param string id - The menu item's id
* @param string additemtype - Page, Category, or Custom.
* @param string itemtext - menu text.
* @param string itemurl - url of the menu.
@ -137,26 +208,15 @@ function updatepostdata()
* @param int itemparentid - default 0.
* @param string itemdescription - the description of the menu item.
*/
function appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription)
{
function wp_update_queue( additemtype, itemtext, itemurl, itemid, itemparentid, itemdescription ) {
var inputvaluevarname = '';
var inputvaluevarurl = '';
var inputitemid = '';
var inputparentid= '';
var inputdescription = '';
var inputicon = '';
var randomnumber = wp_get_unique_menu_id();
if (additemtype == navMenuL10n.custom)
{
inputvaluevarname = document.getElementById('custom-menu-item-name').value;
inputvaluevarurl = document.getElementById('custom-menu-item-url').value;
inputitemid = '';
inputparentid = '';
inputlinktype = 'custom';
inputdescription = '';
}
else if (additemtype == navMenuL10n.page)
{
if ( additemtype == navMenuL10n.page ) {
inputvaluevarname = htmlentities(itemtext.toString());
inputvaluevarurl = itemurl.toString();
inputitemid = itemid.toString();
@ -164,9 +224,7 @@ function appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparent
inputlinktype = 'page';
inputdescription = htmlentities(itemdescription.toString());
}
else if (additemtype == navMenuL10n.category)
{
} else if ( additemtype == navMenuL10n.category ) {
inputvaluevarname = htmlentities(itemtext.toString());
inputvaluevarurl = itemurl.toString();
inputitemid = itemid.toString();
@ -174,55 +232,64 @@ function appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparent
inputlinktype = 'category';
inputdescription = htmlentities(itemdescription.toString());
}
else
{
inputvaluevarname = '';
inputvaluevarname = '';
inputitemid = '';
inputparentid = '';
inputlinktype = 'custom';
inputdescription = '';
}
// Adds or removes the item from the queue
if ( jQuery(menu_item_id = '#menu-item-' + inputitemid).attr('checked') ) {
// Add menu item to the queue
jQuery('#queue').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="item-title">' + inputvaluevarname + '</span><span class="item-controls"><span class="item-type">' + additemtype + '</span><a class="item-edit thickbox" id="edit' + randomnumber + '" value="' + randomnumber +'" onClick="wp_edit_menu_item('+ randomnumber +')" title="' + navMenuL10n.thickbox + '" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings">' + navMenuL10n.edit + '</a> | <a class="item-delete" id="delete' + randomnumber + '" value="' + randomnumber +'">Delete</a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="item-title' + randomnumber + '" id="item-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-url' + randomnumber + '" id="item-url' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="item-description' + randomnumber + '" id="item-description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="item-attr-title' + randomnumber + '" id="item-attr-title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="item-target' + randomnumber + '" id="item-target' + randomnumber + '" value="0" /></li>');
} else {
// Get the item in the queue
for ( var i = 0; i < jQuery('#queue li input[name^="postmenu"]').length; i++ ) {
if ( itemid == jQuery('#queue li input[name^="postmenu"]')[i].value ) {
var menu_queue_id = jQuery('#queue li input[name^="postmenu"]')[i].name.substring( 8, jQuery('#queue li input[name^="postmenu"]')[i].name.length );
};
};
// Removes the item from the queue
jQuery('#queue li#menu-' + menu_queue_id).remove();
};
};
var count=document.getElementById('custom-nav').getElementsByTagName('li').length + 1;
/**
* Grabs items from the queue and adds them to the menu.
*
* @param string button - a reference of the button that was clicked
*/
function wp_add_queued_items_to_menu( button ) {
// Grab items in queue
var items = jQuery('#queue').children();
// Empty Queue
jQuery('#queue').empty();
// Appends HTML to the menu
jQuery('#menu').append( items );
var randomnumber = count;
// Give some feedback to the user
jQuery(items).each(function(){
jQuery(this).find('dt').animate( { backgroundColor: '#FFFF33' }, { duration: 'normal', complete: function() { jQuery(this).css( 'backgroundColor', '' ); }});
});
// Uncheck the checkboxes in the list
jQuery(button).offsetParent().find('.list-container input').attr('checked', false);
wp_update_post_data();
// Enable drag-n-drop
wp_drag_and_drop();
// Reload thickbox
tb_init('a.thickbox, area.thickbox, input.thickbox');
};
var validatetest = 0;
try
{
var test=document.getElementById("menu-" + randomnumber.toString()).value;
}
catch (err)
{
validatetest = 1;
}
while (validatetest == 0)
{
randomnumber = randomnumber + 1;
try
{
var test2=document.getElementById("menu-" + randomnumber.toString()).value;
}
catch (err)
{
validatetest = 1;
}
}
//Notification Message
jQuery('.maintitle').after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>');
jQuery('#message').animate({ opacity: 1.0 },2000).fadeOut(300, function(){ jQuery(this).remove();});
//Appends HTML to the menu
jQuery('#custom-nav').append('<li id="menu-' + randomnumber + '" value="' + randomnumber + '"><div class="dropzone ui-droppable"></div><dl class="ui-droppable"><dt><span class="title">' + inputvaluevarname + '</span><span class="controls"><span class="type">' + additemtype + '</span><a id="edit' + randomnumber + '" onclick="edititem(' + randomnumber + ')" value="' + randomnumber +'"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="' + templatedir + '/wp-admin/images/ico-edit.png" /></a> <a id="remove' + randomnumber + '" onclick="removeitem(' + randomnumber + ')" value="' + randomnumber +'"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="' + templatedir + '/wp-admin/images/ico-close.png" /></a> <a href="' + inputvaluevarurl + '" target="_blank"><img alt="View Custom Link" title="View Custom Link" src="' + templatedir + '/wp-admin/images/ico-viewpage.png" /></a></span></dt></dl><a class="hide" href="' + inputvaluevarurl + '">' + inputvaluevarname + '</a><input type="hidden" name="postmenu' + randomnumber + '" id="postmenu' + randomnumber + '" value="' + inputitemid + '" /><input type="hidden" name="parent' + randomnumber + '" id="parent' + randomnumber + '" value="' + inputparentid + '" /><input type="hidden" name="title' + randomnumber + '" id="title' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="linkurl' + randomnumber + '" id="linkurl' + randomnumber + '" value="' + inputvaluevarurl + '" /><input type="hidden" name="description' + randomnumber + '" id="description' + randomnumber + '" value="' + inputdescription + '" /><input type="hidden" name="icon' + randomnumber + '" id="icon' + randomnumber + '" value="' + inputicon + '" /><input type="hidden" name="position' + randomnumber + '" id="position' + randomnumber + '" value="' + randomnumber + '" /><input type="hidden" name="linktype' + randomnumber + '" id="linktype' + randomnumber + '" value="' + inputlinktype + '" /><input type="hidden" name="anchortitle' + randomnumber + '" id="anchortitle' + randomnumber + '" value="' + inputvaluevarname + '" /><input type="hidden" name="newwindow' + randomnumber + '" id="newwindow' + randomnumber + '" value="0" /></li>');
//make menu item draggable
jQuery('#menu-' + randomnumber + '').draggable(
{
/**
* Allow the items in the Menu to be dragged and dropped.
*/
function wp_drag_and_drop() {
// make menu item draggable
jQuery('#menu li').draggable({
handle: ' > dl',
opacity: .8,
addClasses: false,
@ -230,64 +297,81 @@ function appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparent
zIndex: 100
});
//make menu item droppable
jQuery('#menu-' + randomnumber + ' dl, #menu-' + randomnumber + ' .dropzone').droppable({
accept: '#' + randomnumber + ', #custom-nav li',
// make menu item droppable
jQuery('#menu li dl, #menu li .dropzone').droppable({
accept: '#menu li',
tolerance: 'pointer',
drop: function(e, ui)
{
drop: function(e, ui) {
var li = jQuery(this).parent();
var child = !jQuery(this).hasClass('dropzone');
//Append UL to first child
if (child && li.children('ul').length == 0)
{
li.append('<ul/>');
// Append UL to first child
if ( child && li.children('ul').length == 0 ) {
li.append( '<ul/>' );
}
//Make it draggable
if (child)
{
li.children('ul').append(ui.draggable);
}
else
{
li.before(ui.draggable);
// Make it draggable
if ( child ) {
li.children('ul').append( ui.draggable );
} else {
li.before( ui.draggable );
}
li.find('dl,.dropzone').css({ backgroundColor: '', borderColor: '' });
var draggablevalue = ui.draggable.attr('value');
var droppablevalue = li.attr('value');
li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue);
jQuery(this).parent().find("dt").removeAttr('style');
jQuery(this).parent().find("div:first").removeAttr('style');
var droppablevalue = li.attr('value');
li.find('#menu-' + draggablevalue).find('#parent' + draggablevalue).val(droppablevalue);
jQuery(this).parent().find("dt").removeAttr('style');
jQuery(this).parent().find("div:first").removeAttr('style');
},
over: function()
{
//Add child
if (jQuery(this).attr('class') == 'dropzone ui-droppable')
{
over: function() {
// Add child
if ( jQuery(this).attr('class') == 'dropzone ui-droppable' ) {
jQuery(this).parent().find("div:first").css('background', 'none').css('height', '50px');
}
//Add above
else if (jQuery(this).attr('class') == 'ui-droppable')
{
// Add above
else if ( jQuery(this).attr('class') == 'ui-droppable' ) {
jQuery(this).parent().find("dt:first").css('background', '#d8d8d8');
}
//do nothing
else {
} else {
// do nothing
}
var parentid = jQuery(this).parent().attr('id');
},
out: function()
{
out: function() {
jQuery(this).parent().find("dt").removeAttr('style');
jQuery(this).parent().find("div:first").removeAttr('style');
jQuery(this).filter('.dropzone').css({ borderColor: '' });
}
});
}
);
}
updatepostdata();
};
/**
* Gets a unique number based on how many items are in the menu
*/
function wp_get_unique_menu_id() {
var count = document.getElementById('menu').getElementsByTagName('li').length + 1;
var randomnumber = count;
var validatetest = 0;
try {
var test = document.getElementById( 'menu-' + randomnumber.toString() ).value;
}
catch ( err ) {
validatetest = 1;
}
while ( validatetest == 0 ) {
randomnumber = randomnumber + 1;
try {
var test2 = document.getElementById( 'menu-' + randomnumber.toString() ).value;
}
catch ( err ) {
validatetest = 1;
}
}
return randomnumber;
}

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@
* WordPress Administration for Navigation Menus
* Interface functions
*
* @version 1.1.0
* @version 2.0.0
*
* @package WordPress
* @subpackage Administration
@ -11,6 +11,10 @@
require_once('admin.php');
/*
TODO
Add caps: edit_menus, delete_menus
*/
if ( ! current_user_can('switch_themes') )
wp_die( __( 'Cheatin&#8217; uh?' ));
@ -24,6 +28,7 @@ wp_enqueue_script( 'nav-menu-dynamic-functions' );
wp_enqueue_script( 'nav-menu-default-items' );
wp_enqueue_script( 'jquery-autocomplete' );
wp_enqueue_script( 'nav-menu-php-functions' );
add_thickbox();
require_once( 'admin-header.php' );
require_once( ABSPATH . 'wp-admin/includes/nav-menu.php' );
@ -38,6 +43,9 @@ $menu_id_in_edit = 0;
$updated = false;
$advanced_option_descriptions = 'no';
// Get all menu link items
$available_links = new WP_Query( array( 'post_status' => 'any', 'post_type' => 'nav_menu_item', 'meta_key' => 'menu_type', 'meta_value' => 'custom' ) );
// Check which menu is selected and if menu is in edit already
if ( isset( $_GET['edit-menu'] ) ) {
$menu_selected_id = (int) $_GET['edit-menu'];
@ -48,28 +56,39 @@ if ( isset( $_GET['edit-menu'] ) ) {
$menu_selected_id = 0;
}
if ( isset( $_POST[ 'delete-menu' ] ) && $menu_selected_id > 0 ) {
wp_delete_nav_menu( $menu_selected_id );
// Delete a menu
if ( isset($_GET['delete-menu']) && $_GET['delete-menu'] > 0 ) {
// if ( ! current_user_can('delete_menus') )
// wp_die( __( 'Cheatin&#8217; uh?' ));
$menu_id = (int) $_GET['delete-menu'];
check_admin_referer( 'delete_menu-' . $menu_id );
wp_delete_nav_menu( $menu_id );
$messages_div = '<div id="message" class="updated fade below-h2"><p>' . __('Menu successfully deleted.') . '</p></div>';
$menu_selected_id = 0;
$updated = true;
}
// Default Menu to show
$custom_menus = wp_get_nav_menus();
$menus = wp_get_nav_menus();
if ( empty($custom_menus) && empty($_POST) ) {
if ( empty($menus) && empty($_POST) ) {
wp_create_default_nav_menu();
$custom_menus = wp_get_nav_menus();
$menus = wp_get_nav_menus();
}
if ( ! $menu_selected_id && ! empty( $custom_menus ) )
$menu_selected_id = $custom_menus[0]->term_id;
if ( ! $menu_selected_id && ! empty($menus) )
$menu_selected_id = $menus[0]->term_id;
// Get the name of the current Menu
$menu_title = '';
$valid_menu = false;
if ( $menu_selected_id > 0 ) {
foreach ( $custom_menus as $menu ) {
foreach ( $menus as $menu ) {
if ( $menu->term_id == $menu_selected_id ) {
$menu_title = $menu->name;
$valid_menu = true;
break;
}
}
@ -81,15 +100,15 @@ else
$post_counter = 0;
// Create a new menu. Menus are stored as terms in the 'menu' taxonomy.
if ( isset( $_POST['add-menu'] ) && ! $updated ) {
$insert_menu_name = $_POST['add-menu-name'];
if ( isset( $_POST['create-menu'] ) && ! $updated ) {
$insert_menu_name = $_POST['create-menu-name'];
if ( $insert_menu_name ) {
$menu = wp_create_nav_menu( $insert_menu_name );
if ( is_wp_error( $menu ) ) {
$messages_div = '<div id="message" class="error fade below-h2"><p>' . $menu->get_error_message() . '</p></div>';
} else {
$custom_menus[$menu->term_id] = $menu;
$menus[$menu->term_id] = $menu;
$menu_selected_id = $menu->term_id;
$menu_id_in_edit = $menu_selected_id;
$menu_title = $menu->name;
@ -105,21 +124,21 @@ if ( isset( $_POST['add-menu'] ) && ! $updated ) {
if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {
$menu_items = wp_get_nav_menu_items( $menu_selected_id, array('orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID') );
$parent_menu_ids = array();
// Loop through all POST variables
for ( $k = 1; $k <= $post_counter; $k++ ) {
$db_id = isset( $_POST['dbid'.$k] )? $_POST['dbid'.$k] : 0;
$object_id = isset( $_POST['postmenu'.$k] )? $_POST['postmenu'.$k] : 0;
$parent_id = isset( $_POST['parent'.$k] )? $_POST['parent'.$k] : 0;
$custom_title = isset( $_POST['title'.$k] )? $_POST['title'.$k] : '';
$custom_linkurl = ( isset( $_POST['linkurl'.$k] ) && 'custom' == $_POST['linktype'.$k] ) ? $_POST['linkurl'.$k] : '';
$custom_description = isset( $_POST['description'.$k] )? $_POST['description'.$k] : '';
$custom_title = isset( $_POST['item-title'.$k] )? $_POST['item-title'.$k] : '';
$custom_linkurl = ( isset( $_POST['item-url'.$k] ) && 'custom' == $_POST['linktype'.$k] ) ? $_POST['item-url'.$k] : '';
$custom_description = isset( $_POST['item-description'.$k] )? $_POST['item-description'.$k] : '';
// doesn't seem to be used by UI
$icon = isset( $_POST['icon'.$k] )? $_POST['icon'.$k] : 0;
$position = isset( $_POST['position'.$k] )? $_POST['position'.$k] : 0;
$linktype = isset( $_POST['linktype'.$k] )? $_POST['linktype'.$k] : 'custom';
$custom_anchor_title = isset( $_POST['anchortitle'.$k] )? $_POST['anchortitle'.$k] : $custom_title;
$new_window = isset( $_POST['newwindow'.$k] )? $_POST['newwindow'.$k] : 0;
$custom_anchor_title = isset( $_POST['item-attr-title'.$k] )? $_POST['item-attr-title'.$k] : $custom_title;
$new_window = isset( $_POST['item-target'.$k] )? $_POST['item-target'.$k] : 0;
$post = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'post_author' => $user_ID,
'ping_status' => 0, 'post_parent' => 0, 'menu_order' => $position,
@ -128,7 +147,7 @@ if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {
if ( $parent_id > 0 && isset( $parent_menu_ids[$parent_id] ) )
$post['post_parent'] = $parent_menu_ids[$parent_id];
// New menu item
if ( $db_id == 0 ) {
$db_id = wp_insert_post( $post );
@ -160,17 +179,16 @@ if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {
?>
<div class="wrap">
<?php screen_icon(); ?>
<h2><?php esc_html_e('Menus') ?></h2>
<h2><?php esc_html_e('Menus'); ?></h2>
<?php echo $messages_div; ?>
<div class="hide-if-js error"><p><?php _e('You do not have JavaScript enabled in your browser. Please enable it to access the Menus functionality.'); ?></p></div>
<form onsubmit="updatepostdata()" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data">
<?php if ( ! empty( $custom_menus ) && count( $custom_menus ) > 1 ) : ?>
<form onsubmit="wp_update_post_data();" action="<?php echo admin_url( 'nav-menus.php' ); ?>" method="post" enctype="multipart/form-data">
<?php if ( !empty($menus) && count($menus) > 1 ) : ?>
<ul class="subsubsub">
<?php
foreach ( $custom_menus as $menu ) {
$sep = end( $custom_menus ) == $menu ? '' : ' | ';
foreach ( $menus as $menu ) {
$sep = end( $menus ) == $menu ? '' : ' | ';
if ( ( $menu_id_in_edit == $menu->term_id ) || ( $menu_selected_id == $menu->term_id ) ) { ?>
<li><a href='nav-menus.php?edit-menu=<?php echo esc_attr($menu->term_id); ?>' class="current"><?php echo esc_html( $menu->name ); ?></a><?php echo $sep; ?></li>
<?php } else { ?>
@ -181,67 +199,116 @@ if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {
</ul>
<?php endif; ?>
<div id="menus-container" class="metabox-holder has-right-sidebar">
<div id="menu-management" class="metabox-holder has-right-sidebar">
<div id="post-body">
<div id="post-body-content">
<div id="normal-sortables" class="meta-box-sortables ui-sortable">
<?php if ( $valid_menu and ! empty( $menus ) ) : ?>
<div id="menu-container" class="postbox">
<h3 class="hndle"><?php echo esc_html( $menu_title ); ?></h3>
<div class="inside">
<input type="hidden" name="li-count" id="li-count" value="0" />
<input type="hidden" name="menu-id-in-edit" id="menu-id-in-edit" value="<?php echo esc_attr( $menu_selected_id ); ?>" />
<ul id="menu">
<?php
if ( $menu_selected_id > 0 ) {
wp_print_nav_menu( array( 'type' => 'backend', 'name' => $menu_title, 'id' => $menu_selected_id ) );
}
?>
</ul><!-- /#menu-->
<div id="queue" class="hide">
</div><!--/#queue-->
</div><!-- /.inside -->
<!-- /#nav-menu-canvas .postbox-->
</div>
<p>
<script type="text/javascript">
wp_update_post_data();
</script>
<a class="submitdelete deletion" href="<?php echo wp_nonce_url( admin_url('nav-menus.php?delete-menu=' . $menu_selected_id), 'delete_menu-' . $menu_selected_id ); ?>"><?php _e('Delete Menu'); ?></a>
<input class="button-primary save" name="save_menu" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" />
<br class="clear" />
</p>
<?php endif; ?>
</div><!-- /#normal-sortables-->
</div><!-- /#post-body-content-->
</div><!--- /#post-body -->
<div id="menu-settings-column" class="inner-sidebar">
<div id="side-sortables" class="meta-box-sortables ui-sortable">
<div id="add-menu" class="postbox">
<div class="handlediv" title="Click to toggle"><br /></div>
<h3 class="hndle"><?php esc_html_e('Add Menu'); ?></h3>
<div id="create-menu" class="postbox">
<h3 class="hndle"><?php esc_html_e('Create Menu'); ?></h3>
<div class="inside">
<span>
<input id="add-menu-name" name="add-menu-name" type="text" class="regular-text" value="" />
<input id="add-menu" type="submit" value="<?php esc_attr_e('Add Menu'); ?>" name="add-menu" class="button" />
</span>
<p>
<input type="text" name="create-menu-name" id="create-menu-name" class="regular-text" value="" />
<input type="submit" name="create-menu" id="create-menu" class="button" value="<?php esc_attr_e('Create Menu'); ?>" />
</p>
</div><!-- /.inside-->
</div><!--END #add-menu-->
</div><!--END #create-menu-->
<div id="add-custom-link" class="postbox">
<div class="handlediv" title="Click to toggle"><br /></div>
<h3 class="hndle"><?php esc_html_e('Add a Custom Link'); ?></h3>
<div class="inside">
<div class="inside">
<p id="menu-item-url-wrap">
<label class="howto" for="menu-item-url">
<span><?php _e('URL'); ?></span>
<input id="menu-item-url" name="menu-item-url" type="text" class="code" value="http://" />
</label>
</p>
<br class="clear" />
<p id="menu-item-name-wrap">
<label class="howto" for="custom-menu-item-name">
<span><?php _e('Text'); ?></span>
<input id="menu-item-name" type="text" class="regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" />
</label>
</p>
<p class="howto"><label for="custom-menu-item-url"><input id="custom-menu-item-url" type="text" class="widefat code" value="http://" /><?php _e('URL'); ?></label></p>
<?php $template_dir = get_bloginfo('url'); ?>
<input type="hidden" id="template-dir" value="<?php echo esc_attr($template_dir); ?>" />
<p class="howto"><label for="custom-menu-item-name"><input id="custom-menu-item-name" type="text" class="widefat regular-text" value="<?php echo esc_attr( __('Menu Item') ); ?>" /><?php _e('Text'); ?></label></p>
<label class="howto" for="custom_menu_item_description" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>>
<input id="custom_menu_item_description" type="text" class="widefat regular-text" value="<?php esc_attr_e('A description'); ?>" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> onfocus="jQuery('#custom_menu_item_description').attr('value','');" />
<?php _e('Description'); ?>
</label>
<?php if ( 'no' != $advanced_option_descriptions ) { echo '<br />'; } ?>
<a class="addtomenu button" onclick="appendToList('<?php echo $template_dir; ?>','<?php echo esc_js( _x('Custom', 'menu nav item type') ); ?>','','','','0','');jQuery('#custom-menu-item-name').attr('value','<?php echo esc_js( __('Menu Item') ); ?>');jQuery('#custom_menu_item_description').attr('value','<?php echo esc_js( __('A description') ); ?>');"><?php _e('Add Link'); ?></a>
<?php if ( $available_links->posts ) : ?>
<p class="button-controls">
<a class="show-all button"><?php _e('View All'); ?></a>
<a class="hide-all button"><?php _e('Hide All'); ?></a>
</p>
<div id="available-links" class="list-wrap">
<div class="list-container">
<ul class="list">
<?php
foreach ( $available_links->posts as $link ) :
$url = get_post_meta( $link->ID, 'menu_link' );
?>
<li>
<dl>
<dt>
<label class="item-title"><input type="checkbox" id="link-<?php echo esc_attr($link->ID); ?>" name="<?php echo esc_attr($link->post_title); ?>" value="<?php echo esc_attr($url[0]); ?>" /><?php echo esc_html($link->post_title); ?></label>
</dt>
</dl>
</li>
<?php
endforeach;
?>
</ul>
</div><!-- /.list-container-->
</div><!-- /#available-links-->
<?php endif; ?>
<p class="add-to-menu">
<a class="button"><?php _e('Add to Menu'); ?></a>
</p>
<br class="clear" />
</div><!-- /.inside-->
</div><!-- /#add-custom-link-->
<div id="add-pages" class="postbox">
<div class="handlediv" title="Click to toggle"><br /></div>
<h3 class="hndle"><?php esc_html_e('Add an Existing Page'); ?></h3>
<div class="inside">
<?php
$pages_args = array(
'child_of' => 0,
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'meta_key' => '',
'meta_value' => '',
'authors' => '',
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0
'child_of' => 0, 'sort_order' => 'ASC', 'sort_column' => 'post_title', 'hierarchical' => 1,
'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '', 'authors' => '',
'parent' => -1, 'exclude_tree' => '', 'number' => '', 'offset' => 0
);
$page_name = '';
$pages_array = get_pages($pages_args);
$pages_array = get_pages( $pages_args );
if ( $pages_array ) {
foreach ( $pages_array as $post ) {
$page_name .= $post->post_title . '|';
@ -252,38 +319,43 @@ if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {
?>
<script type="text/javascript" charset="<?php bloginfo('charset'); ?>">
jQuery(document).ready(function(){
var posts = "<?php echo esc_js( $page_name ); ?>".split("|");
jQuery("#page-search").autocomplete(posts);
jQuery("#page-search").result(function(event, data, formatted) {
jQuery('#existing-pages').css('display','block');
jQuery("#existing-pages dt:contains('" + data + "')").css("display", "block");
jQuery('#show-pages').hide();
jQuery('#hide-pages').show();
var posts = "<?php echo esc_js( $page_name ); ?>".split('|');
jQuery('#add-pages .quick-search').autocomplete(posts);
jQuery('#add-pages .quick-search').result(function(event, data, formatted) {
jQuery('#add-pages .list-wrap').css('display','block');
jQuery("#add-pages .list-wrap dt:contains('" + data + "')").css('display','block');
jQuery('#add-pages .show-all').hide();
jQuery('#add-pages .hide-all').show();
});
jQuery('#existing-pages').css('display','none');
});
</script>
<input type="text" onfocus="jQuery('#page-search').attr('value','');" id="page-search" class="regular-text" value="<?php esc_attr_e('Search Pages'); ?>" />
<a id="show-pages" style="cursor:pointer;" onclick="jQuery('#existing-pages').css('display','block');jQuery('#page-search').attr('value','');jQuery('#existing-pages dt').css('display','block');jQuery('#show-pages').hide();jQuery('#hide-pages').show();"><?php _e('View All'); ?></a>
<a id="hide-pages" style="cursor:pointer;" onclick="jQuery('#existing-pages').css('display','none');jQuery('#page-search').attr('value','Search Pages');jQuery('#existing-pages dt').css('display','none');jQuery('#show-pages').show();jQuery('#hide-pages').hide();"><?php _e('Hide All'); ?></a>
<script type="text/javascript">
jQuery('#hide-pages').hide();
</script>
<p>
<input type="text" class="quick-search regular-text" value="" />
<a class="quick-search-submit button"><?php _e('Search'); ?></a>
</p>
<p class="button-controls">
<a class="show-all button"><?php _e('View All'); ?></a>
<a class="hide-all button"><?php _e('Hide All'); ?></a>
</p>
<div id="existing-pages" class="list-container">
<ul class="list">
<?php $items_counter = wp_nav_menu_get_pages( 0,'default' ); ?>
</ul>
</div><!-- /.list-container-->
<div id="existing-pages" class="list-wrap">
<div class="list-container">
<ul class="list">
<?php $items_counter = wp_nav_menu_get_pages( 0, 'default' ); ?>
</ul>
</div><!-- /.list-container-->
</div><!-- /#existing-pages-->
<p class="add-to-menu enqueue">
<a class="button"><?php _e('Add to Menu'); ?></a>
</p>
<br class="clear" />
</div><!-- /.inside-->
</div><!--END #add-pages-->
<div id="add-categories" class="postbox">
<div class="handlediv" title="Click to toggle"><br /></div>
<h3 class="hndle"><?php esc_html_e('Add an Existing Category'); ?></h3>
<div class="inside">
<?php
@ -311,92 +383,85 @@ if ( $post_counter > 0 && $menu_selected_id > 0 && ! $updated ) {
?>
<script type="text/javascript" charset="<?php bloginfo('charset'); ?>">
jQuery(document).ready(function(){
var categories = "<?php echo esc_js($cat_name); ?>".split("|");
jQuery("#cat-search").autocomplete(categories);
jQuery("#cat-search").result(function(event, data, formatted) {
jQuery('#existing-categories').css('display','block');
jQuery("#existing-categories dt:contains('" + data + "')").css("display", "block");
jQuery('#show-cats').hide();
jQuery('#hide-cats').show();
var categories = "<?php echo esc_js($cat_name); ?>".split('|');
jQuery('#add-categories .quick-search').autocomplete(categories);
jQuery('#add-categories .quick-search').result(function(event, data, formatted) {
jQuery('#add-categories .list-wrap').css('display','block');
jQuery("#add-categories .list-wrap dt:contains('" + data + "')").css('display','block');
jQuery('#add-categories .show-all').hide();
jQuery('#add-categories .hide-all').show();
});
jQuery('#existing-categories').css('display','none');
});
</script>
<input type="text" onfocus="jQuery('#cat-search').attr('value','');" id="cat-search" class="regular-text" value="<?php esc_attr_e('Search Categories'); ?>" />
<a id="show-cats" style="cursor:pointer;" onclick="jQuery('#existing-categories').css('display','block');jQuery('#cat-search').attr('value','');jQuery('#existing-categories dt').css('display','block');jQuery('#show-cats').hide();jQuery('#hide-cats').show();"><?php _e('View All'); ?></a>
<a id="hide-cats" style="cursor:pointer;" onclick="jQuery('#existing-categories').css('display','none');jQuery('#cat-search').attr('value','Search Categories');jQuery('#existing-categories dt').css('display','none');jQuery('#show-cats').show();jQuery('#hide-cats').hide();"><?php _e('Hide All'); ?></a>
<script type="text/javascript">
jQuery('#hide-cats').hide();
</script>
<div id="existing-categories" class="list-container">
<ul class="list">
<?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?>
</ul>
</div><!-- /.list-container-->
<p>
<input type="text" class="quick-search regular-text" value="" />
<a class="quick-search-submit button"><?php _e('Search'); ?></a>
</p>
<p class="button-controls">
<a class="show-all button"><?php _e('View All'); ?></a>
<a class="hide-all button"><?php _e('Hide All'); ?></a>
</p>
<div id="existing-categories" class="list-wrap">
<div class="list-container">
<ul class="list">
<?php $items_counter = wp_nav_menu_get_categories( $items_counter, 'default' ); ?>
</ul>
</div><!-- /.list-container-->
</div><!-- /#existing-categories-->
<p class="add-to-menu enqueue">
<a class="button"><?php _e('Add to Menu'); ?></a>
</p>
<br class="clear" />
</div><!-- /.inside-->
</div><!--END #add-categories-->
</div><!-- /#side-sortables-->
</div><!-- /#menu-settings-column -->
<div id="post-body">
<div id="post-body-content">
<div id="normal-sortables" class="meta-box-sortables ui-sortable">
<?php if ( ! empty( $custom_menus ) ) : ?>
<div id="nav-container" class="postbox">
<h3 class="hndle"><?php echo esc_html( $menu_title ); ?></h3>
<div class="inside">
<input type="hidden" name="li-count" id="li-count" value="0" />
<input type="hidden" name="menu-id-in-edit" id="menu-id-in-edit" value="<?php echo esc_attr( $menu_selected_id ); ?>" />
<ul id="custom-nav">
<?php
if ( $menu_selected_id > 0 ) {
wp_print_nav_menu( array( 'type' => 'backend', 'name' => $menu_title, 'id' => $menu_selected_id ) );
}
?>
</ul><!-- /#custom-nav-->
</div><!-- /.inside -->
<!-- /#nav-menu-canvas .postbox-->
</div>
<p class="submit">
<script type="text/javascript">
updatepostdata();
</script>
<input id="save_bottom" name="save_bottom" type="submit" value="<?php esc_attr_e('Save All Changes'); ?>" />
<input id="delete-menu" name="delete-menu" type="submit" value="<?php esc_attr_e('Delete This Menu'); ?>" />
</p>
<?php else : ?>
<div class="updated"><p><?php _e( 'Add a menu to start editing!' ); ?></p></div>
<?php endif; ?>
</div><!-- /#normal-sortables-->
</div><!-- /#post-body-content-->
</div><!--- /#post-body -->
<br class="clear" />
</div><!-- /.metabox-holder has-right-sidebar-->
</form>
</div><!-- /.wrap-->
<div id="dialog-confirm" style="display:none;" title="<?php esc_attr_e('Edit Menu Item'); ?>">
<span id="edittitle-wrap"><input id="edittitle" type="text" name="edittitle" value="" /><label class="editlabel" for="edittitle"><?php _e('Menu Title'); ?></label><br /></span>
<span id="editlink-wrap"><input id="editlink" type="text" name="editlink" value="" /><label class="editlabel" for="editlink"><?php _e('URL'); ?></label><br /></span>
<span id="editanchortitle-wrap"><input id="editanchortitle" type="text" name="editanchortitle" value="" /><label class="editlabel" for="editanchortitle"><?php _e('Link Title'); ?></label><br /></span>
<span id="editnewwindow-wrap">
<select id="editnewwindow" name="editnewwindow">
<option value="1"><?php _e('Yes'); ?></option>
<option value="0"><?php _e('No'); ?></option>
</select><label class="editlabel" for="editnewwindow"><?php _e('Open Link in a new window'); ?></label>
</span>
<span id="editdescription-wrap">
<input id="editdescription" type="text" name="editdescription" value="" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> /><label class="editlabel" for="editdescription" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> ><?php _e('Description'); ?></label><br /></span>
</div>
<div id="menu-item-settings">
<p class="description">
<label for="edit-item-title">
<?php _e( 'Menu Title' ); ?><br />
<input type="text" id="edit-item-title" class="widefat" name="edit-item-title" value="" tabindex="1" />
</label>
</p>
<p class="description">
<label for="edit-item-url">
<?php _e( 'URL' ); ?><br />
<input type="text" id="edit-item-url" class="widefat code" name="edit-item-url" value="" tabindex="2" />
</label>
</p>
<p class="description">
<label for="edit-item-attr-title">
<?php _e( 'Attribute Title' ); ?><br />
<input type="text" id="edit-item-attr-title" class="widefat" name="edit-item-attr-title" value="" tabindex="3" />
</label>
</p>
<p class="description">
<label for="edit-item-target">
<?php _e( 'Open Link in a new window' ); ?><br />
<select id="edit-item-target" class="widefat" name="edit-item-target">
<option value="1">Yes</option>
<option value="0">No</option>
</select>
</label>
</p>
<p class="description">
<label for="edit-item-description">
<?php _e( 'Description' ); ?><br />
<textarea id="edit-item-description" class="widefat" rows="3" name="edit-item-description" tabindex="4" /></textarea>
</label>
</p>
<p>
<a id="cancel-save" class="submitdelete deletion"><?php _e('Cancel'); ?></a>
<a id="update-menu-item" class="save button-primary" tabindex="5"><?php _e('Save Changes'); ?></a>
</p>
<input type="hidden" id="edit-item-id" name="edit-item-id" value="" />
</div><!-- /#menu-item-settings-->
<?php
include( 'admin-footer.php' );
<?php include( 'admin-footer.php' ); ?>

View File

@ -1045,7 +1045,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
function WP_Nav_Menu_Widget() {
$widget_ops = array('description' => __('Use this widget to add one of your navigation menus as a widget.') );
parent::WP_Widget(false, __('Navigation Menu'), $widget_ops);
parent::WP_Widget( false, __('Navigation Menu'), $widget_ops );
}
function widget($args, $instance) {
@ -1060,7 +1060,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
$navulclass = $instance['navulclass'];
// Override for menu descriptions
$advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options');
$advanced_option_descriptions = get_option('wp_settings_nav_menu_advanced_options');
if ( $advanced_option_descriptions == 'no' ) {
$navwidgetdescription = 2;
} else {
@ -1104,19 +1104,19 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
} else {
// DISPLAY default UL
?>
<ul class="custom-nav">
<ul class="menu">
<?php
}
wp_nav_menu( array('id' => $navmenu, 'name' => $wp_custom_nav_menu_name, 'desc' => $navwidgetdescription, 'format' => 'widget') );
if ( $navdeveloper == 'yes' ) {
//DISPLAY Custom UL
// DISPLAY Custom UL
if ( $navul == 'yes' ) {
?>
</ul>
<?php
}
} else {
//DISPLAY default UL
// DISPLAY default UL
?>
</ul>
<?php
@ -1257,7 +1257,7 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
</p>
<?php
}
$advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options');
$advanced_option_descriptions = get_option('wp_settings_nav_menu_advanced_options');
?>
<p <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>>
<?php $checked = strtolower($navwidgetdescription); ?>

View File

@ -3,20 +3,35 @@
/**
* Outputs a navigation menu.
*
* Optional $args contents:
*
* id - The menu id. Defaults to blank.
* slug - The menu slug. Defaults to blank.
* menu_class - CSS class to use for the div container of the menu list. Defaults to 'menu'.
* format - Whether to format the ul. Defaults to 'div'.
* fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'.
*
* TODO:
* show_home - If you set this argument, then it will display the link to the home page. The show_home argument really just needs to be set to the value of the text of the link.
* link_before - Text before show_home argument text.
* link_after - Text after show_home argument text.
* echo - Whether to echo the menu or return it. Defaults to echo.
*
* @since 3.0.0
*
* @param array $args Arguments
*/
function wp_nav_menu( $args = array() ) {
$defaults = array('id' => '', 'slug' => '', 'menu_class' => 'menu', 'format' => 'div', 'fallback_cb' => 'wp_page_menu');
$args = wp_parse_args($args, $defaults);
$defaults = array( 'id' => '', 'slug' => '', 'menu_class' => 'menu', 'format' => 'div', 'fallback_cb' => 'wp_page_menu', 'echo' => true, 'link_before' => '', 'link_after' => '' );
$args = wp_parse_args( $args, $defaults );
$args = (object) $args;
// Get the menu
$menu = null;
if ( !empty($args->id) ) {
$menu = wp_get_nav_menu( $args->id );
} elseif ( !empty($args->slug) ) {
$menu = get_term_by('slug', $args->slug, 'nav_menu');
$menu = get_term_by( 'slug', $args->slug, 'nav_menu' );
} else {
$menus = wp_get_nav_menus();
foreach ( $menus as $menu_maybe ) {
@ -26,7 +41,8 @@ function wp_nav_menu( $args = array() ) {
}
}
}
// If the menu doesn't exists, call the fallback_cb
if ( !$menu || is_wp_error($menu) )
return call_user_func($args->fallback_cb, $args );
@ -85,19 +101,18 @@ function wp_print_nav_menu( $args = array() ) {
}
}
function wp_print_nav_menu_item($menu_item, $context, $args = array() ) {
function wp_print_nav_menu_item( $menu_item, $context, $args = array() ) {
switch ( $context ) {
case 'backend':
case 'menu':
?>
<dl>
<dt>
<span class="title"><?php echo esc_html($menu_item->title); ?></span>
<span class="controls">
<span class="type"><?php echo esc_html($menu_item->type); ?></span>
<a id="edit<?php echo esc_attr( $menu_item->menu_order ); ?>" onclick="edititem(<?php echo esc_attr( $menu_item->menu_order ); ?>)" value="<?php echo esc_attr( $menu_item->menu_order ); ?>"><img class="edit" alt="<?php esc_attr_e('Edit Menu Item'); ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" src="<?php echo admin_url('images/ico-edit.png'); ?>" /></a>
<a id="remove<?php echo esc_attr( $menu_item->menu_order ); ?>" onclick="removeitem(<?php echo esc_attr( $menu_item->menu_order ); ?>)" value="<?php echo esc_attr( $menu_item->menu_order ); ?>"><img class="remove" alt="<?php esc_attr_e('Remove from Menu'); ?>" title="<?php esc_attr_e('Remove from Menu'); ?>" src="<?php echo admin_url('images/ico-close.png'); ?>" /></a>
<a id="view<?php echo esc_attr( $menu_item->menu_order ); ?>" target="_blank" href="<?php echo $menu_item->link; ?>"><img alt="<?php esc_attr_e('View Page'); ?>" title="<?php esc_attr_e('View Page'); ?>" src="<?php echo admin_url('images/ico-viewpage.png'); ?>" /></a>
<span class="item-title"><?php echo esc_html($menu_item->title); ?></span>
<span class="item-controls">
<span class="item-type"><?php echo esc_html($menu_item->type); ?></span>
<a class="item-edit thickbox" id="edit<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->menu_order ); ?>" title="<?php _e('Edit Menu Item'); ?>" href="#TB_inline?height=380&width=300&inlineId=menu-item-settings"><?php _e('Edit'); ?></a> |
<a class="item-delete" id="delete<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->menu_order ); ?>"><?php _e('Delete'); ?></a>
</span>
</dt>
</dl>
@ -109,20 +124,20 @@ function wp_print_nav_menu_item($menu_item, $context, $args = array() ) {
<input type="hidden" name="dbid<?php echo esc_attr( $menu_item->menu_order ); ?>" id="dbid<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->ID ); ?>" />
<input type="hidden" name="postmenu<?php echo esc_attr( $menu_item->menu_order ); ?>" id="postmenu<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( get_post_meta( $menu_item->ID, 'object_id', true ) ); ?>" />
<input type="hidden" name="parent<?php echo esc_attr( $menu_item->menu_order ); ?>" id="parent<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->parent_item ); ?>" />
<input type="hidden" name="title<?php echo esc_attr( $menu_item->menu_order ); ?>" id="title<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->title ); ?>" />
<input type="hidden" name="linkurl<?php echo esc_attr( $menu_item->menu_order ); ?>" id="linkurl<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" />
<input type="hidden" name="description<?php echo esc_attr( $menu_item->menu_order ); ?>" id="description<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->description ); ?>" />
<input type="hidden" name="icon<?php echo esc_attr( $menu_item->menu_order ); ?>" id="icon<?php echo esc_attr( $menu_item->menu_order ); ?>" value="0" />
<input type="hidden" name="position<?php echo esc_attr( $menu_item->menu_order ); ?>" id="position<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->menu_order ); ?>" />
<input type="hidden" name="linktype<?php echo esc_attr( $menu_item->menu_order ); ?>" id="linktype<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( get_post_meta( $menu_item->ID, 'menu_type', true ) ); ?>" />
<input type="hidden" name="anchortitle<?php echo esc_attr( $menu_item->menu_order ); ?>" id="anchortitle<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->post_excerpt ); ?>" />
<input type="hidden" name="newwindow<?php echo esc_attr( $menu_item->menu_order ); ?>" id="newwindow<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo ( get_post_meta( $menu_item->ID, 'menu_new_window', true ) ? '1' : '0' ); ?>" />
<input type="hidden" name="item-title<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-title<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->title ); ?>" />
<input type="hidden" name="item-url<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-url<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" />
<input type="hidden" name="item-description<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-description<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->description ); ?>" />
<input type="hidden" name="item-attr-title<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-attr-title<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo esc_attr( $menu_item->post_excerpt ); ?>" />
<input type="hidden" name="item-target<?php echo esc_attr( $menu_item->menu_order ); ?>" id="item-target<?php echo esc_attr( $menu_item->menu_order ); ?>" value="<?php echo ( get_post_meta( $menu_item->ID, 'menu_new_window', true ) ? '1' : '0' ); ?>" />
<?php
break;
case 'frontend':
// Override for menu descriptions
$advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options');
$advanced_option_descriptions = get_option('wp_settings_nav_menu_advanced_options');
if ( $advanced_option_descriptions == 'no' )
$args['desc'] = 2;
?>
@ -148,11 +163,11 @@ function wp_print_nav_menu_item($menu_item, $context, $args = array() ) {
break;
case 'default':
$template_dir = get_bloginfo('url');
$menu_id = 'menu-item-' . $menu_item->ID;
?>
<dl>
<dt>
<a class="title" title="<?php esc_attr_e('Add to Menu'); ?>" onclick="appendToList('<?php echo esc_js( esc_url_raw( $template_dir ) ); ?>','<?php echo esc_js( $menu_item->append ); ?>','<?php echo esc_js( $menu_item->title ); ?>','<?php echo esc_js( $menu_item->link ); ?>','<?php echo esc_js( $menu_item->ID ); ?>','<?php echo esc_js( $menu_item->parent_item ); ?>','<?php echo esc_js( $menu_item->description ); ?>')" name="<?php echo esc_attr( $menu_item->title ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>"><?php echo $menu_item->title; ?></a>
<label class="item-title"><input type="checkbox" id="<?php echo esc_attr($menu_id); ?>" onclick="wp_update_queue('<?php echo esc_js( $menu_item->append ); ?>','<?php echo esc_js( $menu_item->title ); ?>','<?php echo esc_js( $menu_item->link ); ?>','<?php echo esc_js( $menu_item->ID ); ?>','<?php echo esc_js( $menu_item->parent_item ); ?>','<?php echo esc_js( $menu_item->description ); ?>')" name="<?php echo esc_attr( $menu_item->title ); ?>" value="<?php echo esc_attr( $menu_item->link ); ?>" /><?php echo $menu_item->title; ?></label>
</dt>
</dl>
<?php

View File

@ -7,6 +7,7 @@
* @since 3.0.0
*/
// Deletes a nav menu
function wp_delete_nav_menu( $menu_id ) {
$menu_id = (int) $menu_id;
if ( !$menu_id )
@ -21,11 +22,12 @@ function wp_delete_nav_menu( $menu_id ) {
wp_delete_term( $menu_id, 'nav_menu' );
}
// Creates a new nav menu
function wp_create_nav_menu( $menu_name, $args = array() ) {
$menu_exists = get_term_by( 'name', $menu_name, 'nav_menu' );
if ( $menu_exists )
return new WP_Error('menu_exists', sprintf( __('A menu named &#8220;%s&#8221; already exists; please try another name.'), esc_html( $menu_exists->name ) ) );
return new WP_Error( 'menu_exists', sprintf( __('A menu named &#8220;%s&#8221; already exists; please try another name.'), esc_html( $menu_exists->name ) ) );
if ( isset($args['slug']) )
$slug = $args['slug'];
@ -40,8 +42,9 @@ function wp_create_nav_menu( $menu_name, $args = array() ) {
return get_term( $menu['term_id'], 'nav_menu');
}
// Creates a default menu if none exists
function wp_create_default_nav_menu() {
$menu = wp_create_nav_menu(__('Main'), array('slug' => 'main'));
$menu = wp_create_nav_menu( __('Menu 1'), array('slug' => 'menu-1') );
if ( is_wp_error($menu) )
return;
@ -49,7 +52,7 @@ function wp_create_default_nav_menu() {
$pages = get_pages( array('parent' => 0, 'number' => 15) );
$counter = 1;
foreach ( $pages as $page ) {
$item = array('post_status' => 'publish', 'post_type' => 'nav_menu_item', 'menu_order' => $counter, 'tax_input' => array( 'nav_menu' => $menu->name), 'post_title' => addslashes($page->post_title) );
$item = array( 'post_status' => 'publish', 'post_type' => 'nav_menu_item', 'menu_order' => $counter, 'tax_input' => array( 'nav_menu' => $menu->name), 'post_title' => addslashes($page->post_title) );
$item_id = wp_insert_post($item, true);
update_post_meta( $item_id, 'menu_type', 'page' );
update_post_meta( $item_id, 'object_id', $page->ID );
@ -58,14 +61,17 @@ function wp_create_default_nav_menu() {
}
}
// Get nav menu by id
function wp_get_nav_menu( $menu ) {
return get_term( (int) $menu, 'nav_menu');
return get_term( (int) $menu, 'nav_menu' );
}
// Get all nav menus
function wp_get_nav_menus() {
return get_terms( 'nav_menu', array( 'hide_empty' => false, 'orderby' => 'id' ) );
}
// Get the nav menu items
function wp_get_nav_menu_items( $menu, $args = array() ) {
$items = get_objects_in_term( (int) $menu, 'nav_menu' );
@ -92,6 +98,7 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
return $items;
}
// wp_setup_nav_menu_item()
function wp_setup_nav_menu_item($menu_item, $type = 'item', $position = 0) {
global $parent_menu_order;

View File

@ -398,11 +398,13 @@ function wp_default_scripts( &$scripts ) {
// Custom Navigation
$scripts->add( 'nav-menu-default-items', "/wp-admin/js/nav-menu-default-items$suffix.js", false, '20100223' );
$scripts->add( 'nav-menu-dynamic-functions', "/wp-admin/js/nav-menu-dynamic-functions$suffix.js", false, '20100224b' );
$scripts->add( 'nav-menu-dynamic-functions', "/wp-admin/js/nav-menu-dynamic-functions$suffix.js", false, '20100225b' );
$scripts->localize( 'nav-menu-dynamic-functions', 'navMenuL10n', array(
'custom' => _x('Custom', 'menu nav item type'),
'page' => _x('Page', 'menu nav item type'),
'category' => _x('Category', 'menu nav item type')
'category' => _x('Category', 'menu nav item type'),
'thickbox' => _x('Edit Menu Item', 'Thickbox Title'),
'edit' => _x('Edit', 'menu item edit text'),
) );
$scripts->add( 'nav-menu-php-functions', "/wp-admin/js/nav-menu-php-functions$suffix.js", false, '20100220' );
@ -474,7 +476,7 @@ function wp_default_styles( &$styles ) {
$styles->add( 'farbtastic', '/wp-admin/css/farbtastic.css', array(), '1.2' );
$styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
$styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' );
$styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100225' );
$styles->add( 'nav-menu', "/wp-admin/css/nav-menu$suffix.css", array(), '20100225b' );
foreach ( $rtl_styles as $rtl_style ) {
$styles->add_data( $rtl_style, 'rtl', true );