mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
introduce custom menus, props jeffikus, See #11817
git-svn-id: http://svn.automattic.com/wordpress/trunk@13257 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
00706d68ce
commit
4d203a02c6
1
wp-admin/css/custom-navigation.css
Normal file
1
wp-admin/css/custom-navigation.css
Normal file
File diff suppressed because one or more lines are too long
168
wp-admin/css/custom-navigation.dev.css
Normal file
168
wp-admin/css/custom-navigation.dev.css
Normal file
@ -0,0 +1,168 @@
|
||||
/**
|
||||
* WordPress Administration Custom Navigation
|
||||
* Interface CSS
|
||||
*
|
||||
* @author Jeffikus <pearce.jp@gmail.com>
|
||||
* @version 1.1.0
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Administration
|
||||
*/
|
||||
|
||||
.fix{clear: both;height: 1px;margin: -1px 0 0;overflow: hidden;}
|
||||
|
||||
#no-js {display:block;}
|
||||
|
||||
.maintitle { margin: 0 0 20px 0!important;}
|
||||
|
||||
.logo { vertical-align: middle; margin: 0 10px 0 0; }
|
||||
|
||||
#pages-left { min-width:650px;max-width:1100px;width: 100%; float:left; clear: left; margin-right: -315px; }
|
||||
#pages-left .inside {margin-top: 20px; margin-right: 315px; }
|
||||
#nav-container { margin-top: -3px; }
|
||||
|
||||
.sidebar-name { background-color:#AAAAAA;
|
||||
background-image:url(../../../../../wp-admin/images/ed-bg.gif);
|
||||
border-color:#DFDFDF;
|
||||
text-shadow:0 1px 0 #FFFFFF;-moz-border-radius-topleft:8px;
|
||||
-moz-border-radius-topright:8px;
|
||||
background-position:0 0;
|
||||
background-repeat:repeat-x;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
cursor:pointer;
|
||||
font-size:13px; }
|
||||
|
||||
|
||||
.sidebar-name h3 {
|
||||
font-size:13px;
|
||||
height:19px;
|
||||
margin:0;
|
||||
overflow:hidden;
|
||||
padding:5px 12px;
|
||||
white-space:nowrap;
|
||||
}
|
||||
|
||||
.sidebar-name-arrow {
|
||||
background:transparent url(../../../../../wp-admin/images/menu-bits.gif) no-repeat scroll left -109px;
|
||||
float:right;
|
||||
height:29px;
|
||||
width:26px;
|
||||
}
|
||||
|
||||
#menu-right { width: 285px; margin-right: 10px; margin-left: 20px; float:left; clear: right;}
|
||||
h2.heading { margin: 32px 0 10px 0; }
|
||||
|
||||
.widgets-holder-wrap { margin: 0 0 20px 0; }
|
||||
.widget-holder {
|
||||
padding:15px 10px;
|
||||
-moz-border-radius-bottomleft:8px;
|
||||
-moz-border-radius-bottomright:8px;
|
||||
border-style:none solid solid;
|
||||
border-width:0 1px 1px;
|
||||
background-color:#F1F1F1;
|
||||
border-color:#DDDDDD;
|
||||
}
|
||||
|
||||
.checkboxes { float: right; margin: 10px 12px 0 0; }
|
||||
|
||||
.addtomenu {
|
||||
display: block;
|
||||
float: right;
|
||||
margin: 10px 0 0 0;
|
||||
text-shadow:0 -1px 0 rgba(0, 0, 0, 0.3);
|
||||
background:#21759B url(../../../../../wp-admin/images/button-grad.png) repeat-x scroll left top;
|
||||
border-color:#298CBA !important;
|
||||
color:#FFFFFF !important;
|
||||
font-weight:bold;
|
||||
-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:16px;
|
||||
padding:2px 8px;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.list { zoom: 1; }
|
||||
.list li { margin: 0; }
|
||||
.list dt { display:none; float: left; width: 260px; margin: 0; padding: 0 0 0 5px; line-height: 30px; border-bottom: 1px solid #e3e3e3; }
|
||||
.list dt span { float: left; }
|
||||
.list dt img { cursor: pointer; float: right; margin: 7px 5px 0 0 }
|
||||
|
||||
#nav-container { padding: 0 10px 10px 10px; background-color: #fff; border: 1px solid #DFDFDF; border-top: none; -moz-border-radius-bottomleft:8px; -moz-border-radius-bottomright:8px; }
|
||||
|
||||
#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; 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; }
|
||||
|
||||
#existing-pages li .title { background:url(../images/ico-arrow.png) no-repeat 4px 13px; padding-left:15px; }
|
||||
#existing-pages li ul li .title { margin-left:10px; }
|
||||
#existing-pages li ul li ul li .title { margin-left:20px; }
|
||||
#existing-pages li ul li ul li ul li .title { margin-left:30px; }
|
||||
#existing-pages li ul li ul li ul li ul li .title { margin-left:40px; }
|
||||
#existing-pages li ul li ul li ul li ul li ul li .title { margin-left:50px; }
|
||||
#existing-pages li ul li ul li ul li ul li ul li ul li .title { margin-left:60px; }
|
||||
#existing-pages li ul li ul li ul li ul li ul li ul li ul li .title { margin-left:70px; }
|
||||
#existing-pages li ul li ul li ul li ul li ul li ul li ul li ul li .title { margin-left:80px; }
|
||||
|
||||
#existing-categories li .title { background:url(../images/ico-arrow.png) no-repeat 4px 13px; padding-left:15px; }
|
||||
#existing-categories li ul li .title { margin-left:10px; }
|
||||
#existing-categories li ul li ul li .title { margin-left:20px; }
|
||||
#existing-categories li ul li ul li ul li .title { margin-left:30px; }
|
||||
#existing-categories li ul li ul li ul li ul li .title { margin-left:40px; }
|
||||
#existing-categories li ul li ul li ul li ul li ul li .title { margin-left:50px; }
|
||||
#existing-categories li ul li ul li ul li ul li ul li ul li .title { margin-left:60px; }
|
||||
#existing-categories li ul li ul li ul li ul li ul li ul li ul li .title { margin-left:70px; }
|
||||
#existing-categories li ul li ul li ul li ul li ul li ul li ul li ul li .title { margin-left:80px; }
|
||||
|
||||
|
||||
img.remove, img.edit { cursor: pointer; margin: 0 5px 0 0; }
|
||||
|
||||
.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; }
|
||||
|
||||
#menu_select { width: 170px; }
|
||||
|
||||
#dialog-confirm label { padding-left: 10px; }
|
||||
|
||||
/* 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; }
|
||||
|
||||
/* 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; }
|
||||
|
||||
|
||||
#reset_wp_menu { background:#c77 none !important;color:white!important;text-shadow:0 1px 0 #555 !important;}
|
590
wp-admin/custom-navigation.php
Normal file
590
wp-admin/custom-navigation.php
Normal file
@ -0,0 +1,590 @@
|
||||
<?php
|
||||
/**
|
||||
* WordPress Administration Custom Navigation
|
||||
* Interface functions
|
||||
*
|
||||
* @author Jeffikus <pearce.jp@gmail.com>
|
||||
* @version 1.1.0
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Administration
|
||||
*/
|
||||
|
||||
require_once('admin.php');
|
||||
|
||||
wp_admin_css( 'custom-navigation' );
|
||||
wp_enqueue_script( 'custom-navigation-jquery' );
|
||||
wp_enqueue_script( 'custom-navigation-ui-custom' );
|
||||
wp_enqueue_script( 'custom-navigation-dynamic-functions' );
|
||||
wp_enqueue_script( 'custom-navigation-default-items' );
|
||||
wp_enqueue_script( 'custom-navigation-autocomplete' );
|
||||
wp_enqueue_script( 'custom-navigation-php-functions' );
|
||||
wp_enqueue_script( 'jquery-ui-dialog' );
|
||||
|
||||
require_once('admin-header.php');
|
||||
require_once (ABSPATH . WPINC . '/custom-navigation-functions.php');
|
||||
|
||||
wp_custom_navigation();
|
||||
|
||||
function wp_custom_nav_reset() {
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$table_name = $wpdb->prefix . "custom_nav_records";
|
||||
//DROP existing menu records
|
||||
$wpdb->query("DELETE FROM ".$table_name);
|
||||
|
||||
$table_name_menus = $wpdb->prefix . "custom_nav_menus";
|
||||
//DELETE existing menus
|
||||
$wpdb->query("DELETE FROM ".$table_name_menus);
|
||||
|
||||
wp_custom_navigation_setup(true);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/* Custom Navigation Admin Interface
|
||||
/* wp_custom_navigation() is the main function for the Custom Navigation
|
||||
/* See functions in admin-functions.php
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
function wp_custom_navigation() {
|
||||
global $wpdb, $user_ID;
|
||||
?>
|
||||
|
||||
<div class="wrap">
|
||||
<div id="no-js"><h3>You do not have JavaScript enabled in your browser. Please enabled it to access the Custom Menu functionality.</h3></div>
|
||||
|
||||
<?php
|
||||
$messagesdiv = '';
|
||||
$menu_id_in_edit = 0;
|
||||
|
||||
//Get the theme name
|
||||
$themename = get_current_theme();
|
||||
|
||||
//CHECK which menu is selected and if menu is in edit already
|
||||
if ( isset( $_POST['switch_menu'] ) )
|
||||
$menu_selected_id = $_POST['menu_select'];
|
||||
elseif ( isset( $_POST['menu_id_in_edit'] ) )
|
||||
$menu_selected_id = $_POST['menu_id_in_edit'];
|
||||
|
||||
//Default Menu to show
|
||||
$custom_menus = get_terms( 'menu', array( 'hide_empty' => false ) );
|
||||
if ( !empty( $custom_menus ) )
|
||||
$menu_selected_id = $custom_menus[0]->term_id;
|
||||
|
||||
$menu_title = '';
|
||||
if ( $menu_selected_id > 0 ) {
|
||||
foreach( $custom_menus as $menu ) {
|
||||
if ( $menu->term_id == $menu_selected_id ) {
|
||||
$menu_title = $menu->name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( $_POST['set_wp_menu'] ) ) {
|
||||
update_option( 'wp_custom_nav_menu', $_POST['enable_wp_menu'] );
|
||||
$messagesdiv = '<div id="message" class="updated fade below-h2"><p>'.$themename.'s Custom Menu has been updated!</p></div>';
|
||||
}
|
||||
|
||||
if ( isset( $_POST['licount'] ) )
|
||||
$postCounter = $_POST['licount'];
|
||||
else
|
||||
$postCounter = 0;
|
||||
|
||||
if ( isset( $_POST['add_menu'] ) ) {
|
||||
$insert_menu_name = $_POST['add_menu_name'];
|
||||
|
||||
if ( $insert_menu_name != '' ) {
|
||||
$existing_term = get_term_by( 'name', $insert_menu_name, 'menu' );
|
||||
if ( $existing_term ) {
|
||||
$messagesdiv = '<div id="message" class="error fade below-h2"><p>'.$insert_menu_name.' Menu has already created - please try another name</p></div>';
|
||||
} else {
|
||||
$term = wp_insert_term( $insert_menu_name, 'menu' );
|
||||
if ( $term ) {
|
||||
$custom_menus[$term['term_id']] = $term;
|
||||
$menu_selected_id = $term['term_id'];
|
||||
$menu_id_in_edit = $menu_selected_id;
|
||||
$messagesdiv = '<div id="message" class="updated fade below-h2"><p>'.$insert_menu_name.' Menu has been created!</p></div>';
|
||||
|
||||
$postCounter = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$messagesdiv = '<div id="message" class="error fade below-h2"><p>Please enter a valid Menu name</p></div>';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (isset($_POST['reset_wp_menu'])) {
|
||||
$success = wp_custom_nav_reset();
|
||||
if ($success) {
|
||||
//DISPLAY SUCCESS MESSAGE IF Menu Reset Correctly
|
||||
$messagesdiv = '<div id="message" class="updated fade below-h2"><p>'.$themename.'s Custom Menu has been RESET!</p></div>';
|
||||
//GET reset menu id
|
||||
$custom_menus = array();
|
||||
$menu_selected_id = 0;
|
||||
} else {
|
||||
//DISPLAY SUCCESS MESSAGE IF Menu Reset Correctly
|
||||
$messagesdiv = '<div id="message" class="error fade below-h2"><p>'.$themename.'s Custom Menu could not be RESET. Please try again.</p></div>';
|
||||
}
|
||||
} elseif ( $postCounter > 0 && $menu_selected_id > 0 ) {
|
||||
$menu_objects = get_objects_in_term( $menu_selected_id, 'menu' );
|
||||
$menu_items = wp_custom_navigation_get_menu_items( $menu_objects );
|
||||
|
||||
$update_fields = array( 'menu_order', 'guid', 'post_content', 'post_title', 'post_excerpt', 'post_content_filtered' );
|
||||
//Loop through all POST variables
|
||||
for ($k = 1;$k<= $postCounter; $k++) {
|
||||
|
||||
if (isset($_POST['dbid'.$k])) { $db_id = $_POST['dbid'.$k]; } else { $db_id = 0; }
|
||||
if (isset($_POST['postmenu'.$k])) { $post_id = $_POST['postmenu'.$k]; } else { $post_id = 0; }
|
||||
//@todo implement heirarchy
|
||||
if (isset($_POST['parent'.$k])) { $parent_id = $_POST['parent'.$k]; } else { $parent_id = 0; }
|
||||
if (isset($_POST['title'.$k])) { $custom_title = stripslashes($_POST['title'.$k]); } else { $custom_title = ''; }
|
||||
if (isset($_POST['linkurl'.$k])) { $custom_linkurl = $_POST['linkurl'.$k]; } else { $custom_linkurl = ''; }
|
||||
if (isset($_POST['description'.$k])) { $custom_description = stripslashes($_POST['description'.$k]); } else { $custom_description = ''; }
|
||||
// doesn't seem to be used by UI
|
||||
if (isset($_POST['icon'.$k])) { $icon = $_POST['icon'.$k]; } else { $icon = 0; }
|
||||
if (isset($_POST['position'.$k])) { $position = $_POST['position'.$k]; } else { $position = 0; }
|
||||
if (isset($_POST['linktype'.$k])) { $linktype = $_POST['linktype'.$k]; } else { $linktype = 'custom'; }
|
||||
if (isset($_POST['anchortitle'.$k])) { $custom_anchor_title = stripslashes($_POST['anchortitle'.$k]); } else { $custom_anchor_title = $custom_title; }
|
||||
if (isset($_POST['newwindow'.$k])) { $new_window = $_POST['newwindow'.$k]; } else { $new_window = 0; }
|
||||
|
||||
$post = array( 'post_status' => 'menu-' . $linktype, 'post_type' => 'menu_item', 'post_author' => $user_ID,
|
||||
'ping_status' => 0, 'post_parent' => $post_id, 'menu_order' => $position,
|
||||
'guid' => $custom_linkurl, 'post_excerpt' => $custom_anchor_title, 'tax_input' => array( 'menu' => $menu_title ),
|
||||
'post_content' => $custom_description, 'post_title' => $custom_title );
|
||||
if ( $new_window )
|
||||
$post['post_content_filtered'] = '_blank';
|
||||
else
|
||||
$post['post_content_filtered'] = '';
|
||||
|
||||
//New menu item
|
||||
if ($db_id == 0) {
|
||||
$post_id = wp_insert_post( $post );
|
||||
} elseif ( isset( $menu_items[$db_id] ) ) {
|
||||
foreach( $update_fields as $field ) {
|
||||
if ( $post[$field] != $menu_items[$db_id]->$field ) {
|
||||
$post['ID'] = $db_id;
|
||||
wp_insert_post( $post );
|
||||
break;
|
||||
}
|
||||
}
|
||||
unset( $menu_items[$db_id] );
|
||||
}
|
||||
}
|
||||
if ( !empty( $menu_items ) ) {
|
||||
foreach( array_keys( $menu_items ) as $menu_id ) {
|
||||
wp_delete_post( $menu_id );
|
||||
}
|
||||
}
|
||||
//DISPLAY SUCCESS MESSAGE IF POST CORRECT
|
||||
$messagesdiv = '<div id="message" class="updated fade below-h2"><p>'.$themename.'s Custom Menu has been updated!</p></div>';
|
||||
}
|
||||
|
||||
//DISPLAY Custom Navigation
|
||||
?>
|
||||
<div id="pages-left">
|
||||
<div class="inside">
|
||||
<h2 class="maintitle">Custom Navigation</h2>
|
||||
<?php
|
||||
|
||||
//CHECK if custom menu has been enabled
|
||||
$enabled_menu = get_option('wp_custom_nav_menu');
|
||||
$checked = strtolower($enabled_menu);
|
||||
|
||||
if ($checked == 'true') {
|
||||
} else {
|
||||
echo '<div id="message-enabled" class="error fade below-h2"><p><strong>The Custom Menu has not been Enabled yet. Please enable it in order to use it --------></strong></p></div>';
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
<?php echo $messagesdiv; ?>
|
||||
<form onsubmit="updatepostdata()" action="custom-navigation.php" method="post" enctype="multipart/form-data">
|
||||
|
||||
<input type="hidden" name="licount" id="licount" value="0" />
|
||||
<input type="hidden" name="menu_id_in_edit" id="menu_id_in_edit" value="<?php echo $menu_selected_id; ?>" />
|
||||
|
||||
<div class="sidebar-name">
|
||||
|
||||
<div class="sidebar-name-arrow">
|
||||
<br/>
|
||||
</div>
|
||||
<h3><?php echo $menu_title; ?></h3>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="nav-container">
|
||||
<ul id="custom-nav">
|
||||
|
||||
<?php
|
||||
//DISPLAY existing menu
|
||||
if ( $menu_selected_id > 0 ) {
|
||||
//SET output type
|
||||
$output_type = "backend";
|
||||
//MAIN OUTPUT FUNCTION
|
||||
wp_custom_navigation_output( 'type='.$output_type.'&name='.$menu_title.'&id='.$menu_selected_id );
|
||||
}
|
||||
?>
|
||||
|
||||
</ul>
|
||||
</div><!-- /#nav-container -->
|
||||
|
||||
<p class="submit">
|
||||
|
||||
<script type="text/javascript">
|
||||
updatepostdata();
|
||||
</script>
|
||||
|
||||
<input id="save_bottom" name="save_bottom" type="submit" value="Save All Changes" /></p>
|
||||
</div><!-- /.inside -->
|
||||
</div>
|
||||
|
||||
<div id="menu-right">
|
||||
|
||||
<h2 class="heading">Options</h2>
|
||||
|
||||
<div class="widgets-holder-wrap">
|
||||
<div class="sidebar-name">
|
||||
<div class="sidebar-name-arrow"></div>
|
||||
<h3>Setup Custom Menu</h3>
|
||||
</div>
|
||||
<div class="widget-holder">
|
||||
|
||||
<?php
|
||||
|
||||
//SETUP Custom Menu
|
||||
|
||||
$enabled_menu = get_option('wp_custom_nav_menu');
|
||||
|
||||
$checked = strtolower($enabled_menu);
|
||||
|
||||
?>
|
||||
|
||||
<span >
|
||||
<label>Enable</label><input type="radio" name="enable_wp_menu" value="true" <?php if ($checked=='true') { echo 'checked="checked"'; } ?> />
|
||||
<label>Disable</label><input type="radio" name="enable_wp_menu" value="false" <?php if ($checked=='true') { } else { echo 'checked="checked"'; } ?> />
|
||||
</span><!-- /.checkboxes -->
|
||||
|
||||
<input id="set_wp_menu" type="submit" value="Set Menu" name="set_wp_menu" class="button" /><br />
|
||||
|
||||
<span>
|
||||
<label>Reset Menu to Default</label>
|
||||
<input id="reset_wp_menu" type="submit" value="Reset" name="reset_wp_menu" class="button" onclick="return confirm('Are you sure you want to RESET the Custom Navigation Menu to its Default Settings?');" />
|
||||
</span>
|
||||
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
</div><!-- /.widgets-holder-wrap -->
|
||||
|
||||
<div class="widgets-holder-wrap">
|
||||
<div class="sidebar-name">
|
||||
<div class="sidebar-name-arrow"></div>
|
||||
<h3>Menu Selector</h3>
|
||||
</div>
|
||||
<div class="widget-holder">
|
||||
<select id="menu_select" name="menu_select">
|
||||
<?php
|
||||
|
||||
//DISPLAY SELECT OPTIONS
|
||||
foreach( $custom_menus as $menu ) {
|
||||
$menu_term = get_term( $menu, 'menu' );
|
||||
if ( ( $menu_id_in_edit == $menu ) || ( $menu_selected_id == $menu ) )
|
||||
$selected_option = 'selected="selected"';
|
||||
else
|
||||
$selected_option = '';
|
||||
?>
|
||||
<option value="<?php echo $menu_term->term_id; ?>" <?php echo $selected_option; ?>><?php echo $menu_term->name; ?></option>
|
||||
<?php
|
||||
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
|
||||
<input id="switch_menu" type="submit" value="Switch" name="switch_menu" class="button" />
|
||||
<input id="add_menu_name" name="add_menu_name" type="text" value="" />
|
||||
<input id="add_menu" type="submit" value="Add Menu" name="add_menu" class="button" />
|
||||
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
</div><!-- /.widgets-holder-wrap -->
|
||||
<?php $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); ?>
|
||||
<div class="widgets-holder-wrap" style="display:none;">
|
||||
<div class="sidebar-name">
|
||||
<div class="sidebar-name-arrow"></div>
|
||||
<h3>Top Level Menu Descriptions</h3>
|
||||
</div>
|
||||
<div class="widget-holder">
|
||||
<span>Display Descriptions in Top Level Menu?</span>
|
||||
|
||||
<?php
|
||||
|
||||
//UPDATE and DISPLAY Menu Description Option
|
||||
if (isset($_POST['menu-descriptions']))
|
||||
{
|
||||
|
||||
if (isset($_POST['switch_menu'])) {
|
||||
|
||||
}
|
||||
else {
|
||||
$menu_options_to_edit = $_POST['menu_id_in_edit'];
|
||||
update_option('wp_settings_custom_nav_'.$menu_options_to_edit.'_descriptions',$_POST['menu-descriptions']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($menu_id_in_edit > 0)
|
||||
{
|
||||
$checkedraw = get_option('wp_settings_custom_nav_'.$menu_id_in_edit.'_descriptions');
|
||||
}
|
||||
else {
|
||||
$checkedraw = get_option('wp_settings_custom_nav_'.$menu_selected_id.'_descriptions');
|
||||
}
|
||||
|
||||
$checked = strtolower($checkedraw);
|
||||
|
||||
if ($advanced_option_descriptions == 'no')
|
||||
{
|
||||
$checked = 'no';
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<span class="checkboxes">
|
||||
<label>Yes</label><input type="radio" name="menu-descriptions" value="yes" <?php if ($checked=='yes') { echo 'checked="checked"'; } ?> />
|
||||
<label>No</label><input type="radio" name="menu-descriptions" value="no" <?php if ($checked=='yes') { } else { echo 'checked="checked"'; } ?> />
|
||||
</span><!-- /.checkboxes -->
|
||||
</form>
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
</div><!-- /.widgets-holder-wrap -->
|
||||
|
||||
<div class="widgets-holder-wrap">
|
||||
<div class="sidebar-name">
|
||||
<div class="sidebar-name-arrow"></div>
|
||||
<h3>Add an Existing Page</h3>
|
||||
</div>
|
||||
<div class="widget-holder">
|
||||
|
||||
<?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 );
|
||||
|
||||
//GET all pages
|
||||
$pages_array = get_pages($pages_args);
|
||||
$page_name = '';
|
||||
//CHECK if pages exist
|
||||
if ($pages_array)
|
||||
{
|
||||
foreach ($pages_array as $post)
|
||||
{
|
||||
//Add page name to
|
||||
$page_name .= htmlentities($post->post_title).'|';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$page_name = "No pages available";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
//GET PHP pages
|
||||
var dataposts = "<?php echo $page_name; ?>".split("|");
|
||||
|
||||
//Set autocomplete
|
||||
$("#page-search").autocomplete(dataposts);
|
||||
|
||||
//Handle autocomplete result
|
||||
$("#page-search").result(function(event, data, formatted) {
|
||||
$('#existing-pages').css('display','block');
|
||||
$("#existing-pages dt:contains('" + data + "')").css("display", "block");
|
||||
|
||||
$('#show-pages').hide();
|
||||
$('#hide-pages').show();
|
||||
|
||||
});
|
||||
$('#existing-pages').css('display','none');
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<input type="text" onfocus="jQuery('#page-search').attr('value','');" id="page-search" value="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();">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();">Hide All</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#hide-pages').hide();
|
||||
|
||||
</script>
|
||||
|
||||
<ul id="existing-pages" class="list">
|
||||
<?php
|
||||
$intCounter = 0;
|
||||
//Get default Pages
|
||||
$intCounter = wp_custom_nav_get_pages($intCounter,'default');
|
||||
?>
|
||||
</ul>
|
||||
|
||||
<div class="fix"></div>
|
||||
|
||||
</div>
|
||||
</div><!-- /.widgets-holder-wrap -->
|
||||
|
||||
<div class="widgets-holder-wrap">
|
||||
<div class="sidebar-name">
|
||||
<div class="sidebar-name-arrow"></div>
|
||||
<h3>Add an Existing Category</h3>
|
||||
</div>
|
||||
<div class="widget-holder">
|
||||
|
||||
<?php
|
||||
|
||||
//Custom GET categories query
|
||||
$categories = $wpdb->get_results("SELECT term_id FROM $wpdb->term_taxonomy WHERE taxonomy = 'category' ORDER BY term_id ASC");
|
||||
$cat_name = '';
|
||||
//CHECK for results
|
||||
if ($categories)
|
||||
{
|
||||
foreach($categories as $category)
|
||||
{
|
||||
$cat_id = $category->term_id;
|
||||
|
||||
$cat_args=array(
|
||||
'orderby' => 'name',
|
||||
'include' => $cat_id,
|
||||
'hierarchical' => 1,
|
||||
'order' => 'ASC'
|
||||
);
|
||||
|
||||
$category_names=get_categories($cat_args);
|
||||
|
||||
if (isset($category_names[0]->name))
|
||||
{
|
||||
//Add category name to data string
|
||||
$cat_name .= htmlentities($category_names[0]->name).'|';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$cat_name = "No categories available";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
//GET PHP categories
|
||||
var datacats = "<?php echo $cat_name; ?>".split("|");
|
||||
|
||||
//Set autocomplete
|
||||
$("#cat-search").autocomplete(datacats);
|
||||
|
||||
//Handle autocomplete result
|
||||
$("#cat-search").result(function(event, data, formatted) {
|
||||
$('#existing-categories').css('display','block');
|
||||
$("#existing-categories dt:contains('" + data + "')").css("display", "block");
|
||||
|
||||
$('#show-cats').hide();
|
||||
$('#hide-cats').show();
|
||||
|
||||
});
|
||||
$('#existing-categories').css('display','none');
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<input type="text" onfocus="jQuery('#cat-search').attr('value','');" id="cat-search" value="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();">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();">Hide All</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery('#hide-cats').hide();
|
||||
|
||||
</script>
|
||||
|
||||
<ul id="existing-categories" class="list">
|
||||
<?php
|
||||
//Get default Categories
|
||||
$intCounter = wp_custom_nav_get_categories($intCounter,'default');
|
||||
?>
|
||||
</ul>
|
||||
|
||||
<div class="fix"></div>
|
||||
|
||||
</div>
|
||||
</div><!-- /.widgets-holder-wrap -->
|
||||
|
||||
<div class="widgets-holder-wrap">
|
||||
<div class="sidebar-name">
|
||||
<div class="sidebar-name-arrow"></div>
|
||||
<h3>Add a Custom Url</h3>
|
||||
</div>
|
||||
<div class="widget-holder">
|
||||
<input id="custom_menu_item_url" type="text" value="http://" />
|
||||
<label>URL</label><br />
|
||||
<?php $templatedir = get_bloginfo('url'); ?>
|
||||
<input type="hidden" id="templatedir" value="<?php echo $templatedir; ?>" />
|
||||
<input id="custom_menu_item_name" type="text" value="Menu Item" onfocus="jQuery('#custom_menu_item_name').attr('value','');" />
|
||||
<label>Menu Text</label><br />
|
||||
<input id="custom_menu_item_description" type="text" value="A description" <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> onfocus="jQuery('#custom_menu_item_description').attr('value','');" />
|
||||
<label <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?> >Description</label>
|
||||
<a class="addtomenu" onclick="appendToList('<?php echo $templatedir; ?>','Custom','','','','0','');jQuery('#custom_menu_item_name').attr('value','Menu Item');jQuery('#custom_menu_item_description').attr('value','A description');">Add to menu</a>
|
||||
<div class="fix"></div>
|
||||
</div>
|
||||
</div><!-- /.widgets-holder-wrap -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
document.getElementById('pages-left').style.display='block';
|
||||
document.getElementById('menu-right').style.display='block';
|
||||
document.getElementById('no-js').style.display='none';
|
||||
</script>
|
||||
|
||||
<div id="dialog-confirm" title="Edit Menu Item">
|
||||
</label><input id="edittitle" type="text" name="edittitle" value="" /><label class="editlabel" for="edittitle">Menu Title</label><br />
|
||||
<input id="editlink" type="text" name="editlink" value="" /><label class="editlabel" for="editlink">URL</label><br />
|
||||
<input id="editanchortitle" type="text" name="editanchortitle" value="" /><label class="editlabel" for="editanchortitle" >Link Title</label><br />
|
||||
<select id="editnewwindow" name="editnewwindow">
|
||||
<option value="1" >Yes</option>
|
||||
<option value="0" >No</option>
|
||||
</select><label class="editlabel" for="editnewwindow" >Open Link in a New Window</label>
|
||||
<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 } ?> >Description</label><br />
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
include("admin-footer.php");
|
19
wp-admin/js/custom-navigation-custom-jquery-1.3.2.dev.js
Normal file
19
wp-admin/js/custom-navigation-custom-jquery-1.3.2.dev.js
Normal file
File diff suppressed because one or more lines are too long
1
wp-admin/js/custom-navigation-custom-jquery-1.3.2.js
Normal file
1
wp-admin/js/custom-navigation-custom-jquery-1.3.2.js
Normal file
File diff suppressed because one or more lines are too long
808
wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js
Normal file
808
wp-admin/js/custom-navigation-custom-jquery-autocomplete.dev.js
Normal file
@ -0,0 +1,808 @@
|
||||
/*
|
||||
* jQuery Autocomplete plugin 1.1
|
||||
*
|
||||
* Copyright (c) 2009 Jörn Zaefferer
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*
|
||||
* Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
|
||||
*/
|
||||
|
||||
;(function($) {
|
||||
|
||||
$.fn.extend({
|
||||
autocomplete: function(urlOrData, options) {
|
||||
var isUrl = typeof urlOrData == "string";
|
||||
options = $.extend({}, $.Autocompleter.defaults, {
|
||||
url: isUrl ? urlOrData : null,
|
||||
data: isUrl ? null : urlOrData,
|
||||
delay: isUrl ? $.Autocompleter.defaults.delay : 10,
|
||||
max: options && !options.scroll ? 10 : 150
|
||||
}, options);
|
||||
|
||||
// if highlight is set to false, replace it with a do-nothing function
|
||||
options.highlight = options.highlight || function(value) { return value; };
|
||||
|
||||
// if the formatMatch option is not specified, then use formatItem for backwards compatibility
|
||||
options.formatMatch = options.formatMatch || options.formatItem;
|
||||
|
||||
return this.each(function() {
|
||||
new $.Autocompleter(this, options);
|
||||
});
|
||||
},
|
||||
result: function(handler) {
|
||||
return this.bind("result", handler);
|
||||
},
|
||||
search: function(handler) {
|
||||
return this.trigger("search", [handler]);
|
||||
},
|
||||
flushCache: function() {
|
||||
return this.trigger("flushCache");
|
||||
},
|
||||
setOptions: function(options){
|
||||
return this.trigger("setOptions", [options]);
|
||||
},
|
||||
unautocomplete: function() {
|
||||
return this.trigger("unautocomplete");
|
||||
}
|
||||
});
|
||||
|
||||
$.Autocompleter = function(input, options) {
|
||||
|
||||
var KEY = {
|
||||
UP: 38,
|
||||
DOWN: 40,
|
||||
DEL: 46,
|
||||
TAB: 9,
|
||||
RETURN: 13,
|
||||
ESC: 27,
|
||||
COMMA: 188,
|
||||
PAGEUP: 33,
|
||||
PAGEDOWN: 34,
|
||||
BACKSPACE: 8
|
||||
};
|
||||
|
||||
// Create $ object for input element
|
||||
var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
|
||||
|
||||
var timeout;
|
||||
var previousValue = "";
|
||||
var cache = $.Autocompleter.Cache(options);
|
||||
var hasFocus = 0;
|
||||
var lastKeyPressCode;
|
||||
var config = {
|
||||
mouseDownOnSelect: false
|
||||
};
|
||||
var select = $.Autocompleter.Select(options, input, selectCurrent, config);
|
||||
|
||||
var blockSubmit;
|
||||
|
||||
// prevent form submit in opera when selecting with return key
|
||||
$.browser.opera && $(input.form).bind("submit.autocomplete", function() {
|
||||
if (blockSubmit) {
|
||||
blockSubmit = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
|
||||
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
|
||||
// a keypress means the input has focus
|
||||
// avoids issue where input had focus before the autocomplete was applied
|
||||
hasFocus = 1;
|
||||
// track last key pressed
|
||||
lastKeyPressCode = event.keyCode;
|
||||
switch(event.keyCode) {
|
||||
|
||||
case KEY.UP:
|
||||
event.preventDefault();
|
||||
if ( select.visible() ) {
|
||||
select.prev();
|
||||
} else {
|
||||
onChange(0, true);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY.DOWN:
|
||||
event.preventDefault();
|
||||
if ( select.visible() ) {
|
||||
select.next();
|
||||
} else {
|
||||
onChange(0, true);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY.PAGEUP:
|
||||
event.preventDefault();
|
||||
if ( select.visible() ) {
|
||||
select.pageUp();
|
||||
} else {
|
||||
onChange(0, true);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY.PAGEDOWN:
|
||||
event.preventDefault();
|
||||
if ( select.visible() ) {
|
||||
select.pageDown();
|
||||
} else {
|
||||
onChange(0, true);
|
||||
}
|
||||
break;
|
||||
|
||||
// matches also semicolon
|
||||
case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
|
||||
case KEY.TAB:
|
||||
case KEY.RETURN:
|
||||
if( selectCurrent() ) {
|
||||
// stop default to prevent a form submit, Opera needs special handling
|
||||
event.preventDefault();
|
||||
blockSubmit = true;
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY.ESC:
|
||||
select.hide();
|
||||
break;
|
||||
|
||||
default:
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(onChange, options.delay);
|
||||
break;
|
||||
}
|
||||
}).focus(function(){
|
||||
// track whether the field has focus, we shouldn't process any
|
||||
// results if the field no longer has focus
|
||||
hasFocus++;
|
||||
}).blur(function() {
|
||||
hasFocus = 0;
|
||||
if (!config.mouseDownOnSelect) {
|
||||
hideResults();
|
||||
}
|
||||
}).click(function() {
|
||||
// show select when clicking in a focused field
|
||||
if ( hasFocus++ > 1 && !select.visible() ) {
|
||||
onChange(0, true);
|
||||
}
|
||||
}).bind("search", function() {
|
||||
// TODO why not just specifying both arguments?
|
||||
var fn = (arguments.length > 1) ? arguments[1] : null;
|
||||
function findValueCallback(q, data) {
|
||||
var result;
|
||||
if( data && data.length ) {
|
||||
for (var i=0; i < data.length; i++) {
|
||||
if( data[i].result.toLowerCase() == q.toLowerCase() ) {
|
||||
result = data[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( typeof fn == "function" ) fn(result);
|
||||
else $input.trigger("result", result && [result.data, result.value]);
|
||||
}
|
||||
$.each(trimWords($input.val()), function(i, value) {
|
||||
request(value, findValueCallback, findValueCallback);
|
||||
});
|
||||
}).bind("flushCache", function() {
|
||||
cache.flush();
|
||||
}).bind("setOptions", function() {
|
||||
$.extend(options, arguments[1]);
|
||||
// if we've updated the data, repopulate
|
||||
if ( "data" in arguments[1] )
|
||||
cache.populate();
|
||||
}).bind("unautocomplete", function() {
|
||||
select.unbind();
|
||||
$input.unbind();
|
||||
$(input.form).unbind(".autocomplete");
|
||||
});
|
||||
|
||||
|
||||
function selectCurrent() {
|
||||
var selected = select.selected();
|
||||
if( !selected )
|
||||
return false;
|
||||
|
||||
var v = selected.result;
|
||||
previousValue = v;
|
||||
|
||||
if ( options.multiple ) {
|
||||
var words = trimWords($input.val());
|
||||
if ( words.length > 1 ) {
|
||||
var seperator = options.multipleSeparator.length;
|
||||
var cursorAt = $(input).selection().start;
|
||||
var wordAt, progress = 0;
|
||||
$.each(words, function(i, word) {
|
||||
progress += word.length;
|
||||
if (cursorAt <= progress) {
|
||||
wordAt = i;
|
||||
return false;
|
||||
}
|
||||
progress += seperator;
|
||||
});
|
||||
words[wordAt] = v;
|
||||
// TODO this should set the cursor to the right position, but it gets overriden somewhere
|
||||
//$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
|
||||
v = words.join( options.multipleSeparator );
|
||||
}
|
||||
v += options.multipleSeparator;
|
||||
}
|
||||
|
||||
$input.val(v);
|
||||
hideResultsNow();
|
||||
$input.trigger("result", [selected.data, selected.value]);
|
||||
return true;
|
||||
}
|
||||
|
||||
function onChange(crap, skipPrevCheck) {
|
||||
if( lastKeyPressCode == KEY.DEL ) {
|
||||
select.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
var currentValue = $input.val();
|
||||
|
||||
if ( !skipPrevCheck && currentValue == previousValue )
|
||||
return;
|
||||
|
||||
previousValue = currentValue;
|
||||
|
||||
currentValue = lastWord(currentValue);
|
||||
if ( currentValue.length >= options.minChars) {
|
||||
$input.addClass(options.loadingClass);
|
||||
if (!options.matchCase)
|
||||
currentValue = currentValue.toLowerCase();
|
||||
request(currentValue, receiveData, hideResultsNow);
|
||||
} else {
|
||||
stopLoading();
|
||||
select.hide();
|
||||
}
|
||||
};
|
||||
|
||||
function trimWords(value) {
|
||||
if (!value)
|
||||
return [""];
|
||||
if (!options.multiple)
|
||||
return [$.trim(value)];
|
||||
return $.map(value.split(options.multipleSeparator), function(word) {
|
||||
return $.trim(value).length ? $.trim(word) : null;
|
||||
});
|
||||
}
|
||||
|
||||
function lastWord(value) {
|
||||
if ( !options.multiple )
|
||||
return value;
|
||||
var words = trimWords(value);
|
||||
if (words.length == 1)
|
||||
return words[0];
|
||||
var cursorAt = $(input).selection().start;
|
||||
if (cursorAt == value.length) {
|
||||
words = trimWords(value)
|
||||
} else {
|
||||
words = trimWords(value.replace(value.substring(cursorAt), ""));
|
||||
}
|
||||
return words[words.length - 1];
|
||||
}
|
||||
|
||||
// fills in the input box w/the first match (assumed to be the best match)
|
||||
// q: the term entered
|
||||
// sValue: the first matching result
|
||||
function autoFill(q, sValue){
|
||||
// autofill in the complete box w/the first match as long as the user hasn't entered in more data
|
||||
// if the last user key pressed was backspace, don't autofill
|
||||
if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
|
||||
// fill in the value (keep the case the user has typed)
|
||||
$input.val($input.val() + sValue.substring(lastWord(previousValue).length));
|
||||
// select the portion of the value not typed by the user (so the next character will erase)
|
||||
$(input).selection(previousValue.length, previousValue.length + sValue.length);
|
||||
}
|
||||
};
|
||||
|
||||
function hideResults() {
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(hideResultsNow, 200);
|
||||
};
|
||||
|
||||
function hideResultsNow() {
|
||||
var wasVisible = select.visible();
|
||||
select.hide();
|
||||
clearTimeout(timeout);
|
||||
stopLoading();
|
||||
if (options.mustMatch) {
|
||||
// call search and run callback
|
||||
$input.search(
|
||||
function (result){
|
||||
// if no value found, clear the input box
|
||||
if( !result ) {
|
||||
if (options.multiple) {
|
||||
var words = trimWords($input.val()).slice(0, -1);
|
||||
$input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
|
||||
}
|
||||
else {
|
||||
$input.val( "" );
|
||||
$input.trigger("result", null);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
function receiveData(q, data) {
|
||||
if ( data && data.length && hasFocus ) {
|
||||
stopLoading();
|
||||
select.display(data, q);
|
||||
autoFill(q, data[0].value);
|
||||
select.show();
|
||||
} else {
|
||||
hideResultsNow();
|
||||
}
|
||||
};
|
||||
|
||||
function request(term, success, failure) {
|
||||
if (!options.matchCase)
|
||||
term = term.toLowerCase();
|
||||
var data = cache.load(term);
|
||||
// recieve the cached data
|
||||
if (data && data.length) {
|
||||
success(term, data);
|
||||
// if an AJAX url has been supplied, try loading the data now
|
||||
} else if( (typeof options.url == "string") && (options.url.length > 0) ){
|
||||
|
||||
var extraParams = {
|
||||
timestamp: +new Date()
|
||||
};
|
||||
$.each(options.extraParams, function(key, param) {
|
||||
extraParams[key] = typeof param == "function" ? param() : param;
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
// try to leverage ajaxQueue plugin to abort previous requests
|
||||
mode: "abort",
|
||||
// limit abortion to this input
|
||||
port: "autocomplete" + input.name,
|
||||
dataType: options.dataType,
|
||||
url: options.url,
|
||||
data: $.extend({
|
||||
q: lastWord(term),
|
||||
limit: options.max
|
||||
}, extraParams),
|
||||
success: function(data) {
|
||||
var parsed = options.parse && options.parse(data) || parse(data);
|
||||
cache.add(term, parsed);
|
||||
success(term, parsed);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
|
||||
select.emptyList();
|
||||
failure(term);
|
||||
}
|
||||
};
|
||||
|
||||
function parse(data) {
|
||||
var parsed = [];
|
||||
var rows = data.split("\n");
|
||||
for (var i=0; i < rows.length; i++) {
|
||||
var row = $.trim(rows[i]);
|
||||
if (row) {
|
||||
row = row.split("|");
|
||||
parsed[parsed.length] = {
|
||||
data: row,
|
||||
value: row[0],
|
||||
result: options.formatResult && options.formatResult(row, row[0]) || row[0]
|
||||
};
|
||||
}
|
||||
}
|
||||
return parsed;
|
||||
};
|
||||
|
||||
function stopLoading() {
|
||||
$input.removeClass(options.loadingClass);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
$.Autocompleter.defaults = {
|
||||
inputClass: "ac_input",
|
||||
resultsClass: "ac_results",
|
||||
loadingClass: "ac_loading",
|
||||
minChars: 1,
|
||||
delay: 400,
|
||||
matchCase: false,
|
||||
matchSubset: true,
|
||||
matchContains: false,
|
||||
cacheLength: 10,
|
||||
max: 100,
|
||||
mustMatch: false,
|
||||
extraParams: {},
|
||||
selectFirst: true,
|
||||
formatItem: function(row) { return row[0]; },
|
||||
formatMatch: null,
|
||||
autoFill: false,
|
||||
width: 0,
|
||||
multiple: false,
|
||||
multipleSeparator: ", ",
|
||||
highlight: function(value, term) {
|
||||
return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
|
||||
},
|
||||
scroll: true,
|
||||
scrollHeight: 180
|
||||
};
|
||||
|
||||
$.Autocompleter.Cache = function(options) {
|
||||
|
||||
var data = {};
|
||||
var length = 0;
|
||||
|
||||
function matchSubset(s, sub) {
|
||||
if (!options.matchCase)
|
||||
s = s.toLowerCase();
|
||||
var i = s.indexOf(sub);
|
||||
if (options.matchContains == "word"){
|
||||
i = s.toLowerCase().search("\\b" + sub.toLowerCase());
|
||||
}
|
||||
if (i == -1) return false;
|
||||
return i == 0 || options.matchContains;
|
||||
};
|
||||
|
||||
function add(q, value) {
|
||||
if (length > options.cacheLength){
|
||||
flush();
|
||||
}
|
||||
if (!data[q]){
|
||||
length++;
|
||||
}
|
||||
data[q] = value;
|
||||
}
|
||||
|
||||
function populate(){
|
||||
if( !options.data ) return false;
|
||||
// track the matches
|
||||
var stMatchSets = {},
|
||||
nullData = 0;
|
||||
|
||||
// no url was specified, we need to adjust the cache length to make sure it fits the local data store
|
||||
if( !options.url ) options.cacheLength = 1;
|
||||
|
||||
// track all options for minChars = 0
|
||||
stMatchSets[""] = [];
|
||||
|
||||
// loop through the array and create a lookup structure
|
||||
for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
|
||||
var rawValue = options.data[i];
|
||||
// if rawValue is a string, make an array otherwise just reference the array
|
||||
rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
|
||||
|
||||
var value = options.formatMatch(rawValue, i+1, options.data.length);
|
||||
if ( value === false )
|
||||
continue;
|
||||
|
||||
var firstChar = value.charAt(0).toLowerCase();
|
||||
// if no lookup array for this character exists, look it up now
|
||||
if( !stMatchSets[firstChar] )
|
||||
stMatchSets[firstChar] = [];
|
||||
|
||||
// if the match is a string
|
||||
var row = {
|
||||
value: value,
|
||||
data: rawValue,
|
||||
result: options.formatResult && options.formatResult(rawValue) || value
|
||||
};
|
||||
|
||||
// push the current match into the set list
|
||||
stMatchSets[firstChar].push(row);
|
||||
|
||||
// keep track of minChars zero items
|
||||
if ( nullData++ < options.max ) {
|
||||
stMatchSets[""].push(row);
|
||||
}
|
||||
};
|
||||
|
||||
// add the data items to the cache
|
||||
$.each(stMatchSets, function(i, value) {
|
||||
// increase the cache size
|
||||
options.cacheLength++;
|
||||
// add to the cache
|
||||
add(i, value);
|
||||
});
|
||||
}
|
||||
|
||||
// populate any existing data
|
||||
setTimeout(populate, 25);
|
||||
|
||||
function flush(){
|
||||
data = {};
|
||||
length = 0;
|
||||
}
|
||||
|
||||
return {
|
||||
flush: flush,
|
||||
add: add,
|
||||
populate: populate,
|
||||
load: function(q) {
|
||||
if (!options.cacheLength || !length)
|
||||
return null;
|
||||
/*
|
||||
* if dealing w/local data and matchContains than we must make sure
|
||||
* to loop through all the data collections looking for matches
|
||||
*/
|
||||
if( !options.url && options.matchContains ){
|
||||
// track all matches
|
||||
var csub = [];
|
||||
// loop through all the data grids for matches
|
||||
for( var k in data ){
|
||||
// don't search through the stMatchSets[""] (minChars: 0) cache
|
||||
// this prevents duplicates
|
||||
if( k.length > 0 ){
|
||||
var c = data[k];
|
||||
$.each(c, function(i, x) {
|
||||
// if we've got a match, add it to the array
|
||||
if (matchSubset(x.value, q)) {
|
||||
csub.push(x);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return csub;
|
||||
} else
|
||||
// if the exact item exists, use it
|
||||
if (data[q]){
|
||||
return data[q];
|
||||
} else
|
||||
if (options.matchSubset) {
|
||||
for (var i = q.length - 1; i >= options.minChars; i--) {
|
||||
var c = data[q.substr(0, i)];
|
||||
if (c) {
|
||||
var csub = [];
|
||||
$.each(c, function(i, x) {
|
||||
if (matchSubset(x.value, q)) {
|
||||
csub[csub.length] = x;
|
||||
}
|
||||
});
|
||||
return csub;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
$.Autocompleter.Select = function (options, input, select, config) {
|
||||
var CLASSES = {
|
||||
ACTIVE: "ac_over"
|
||||
};
|
||||
|
||||
var listItems,
|
||||
active = -1,
|
||||
data,
|
||||
term = "",
|
||||
needsInit = true,
|
||||
element,
|
||||
list;
|
||||
|
||||
// Create results
|
||||
function init() {
|
||||
if (!needsInit)
|
||||
return;
|
||||
element = $("<div/>")
|
||||
.hide()
|
||||
.addClass(options.resultsClass)
|
||||
.css("position", "absolute")
|
||||
.appendTo(document.body);
|
||||
|
||||
list = $("<ul/>").appendTo(element).mouseover( function(event) {
|
||||
if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
|
||||
active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
|
||||
$(target(event)).addClass(CLASSES.ACTIVE);
|
||||
}
|
||||
}).click(function(event) {
|
||||
$(target(event)).addClass(CLASSES.ACTIVE);
|
||||
select();
|
||||
// TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
|
||||
input.focus();
|
||||
return false;
|
||||
}).mousedown(function() {
|
||||
config.mouseDownOnSelect = true;
|
||||
}).mouseup(function() {
|
||||
config.mouseDownOnSelect = false;
|
||||
});
|
||||
|
||||
if( options.width > 0 )
|
||||
element.css("width", options.width);
|
||||
|
||||
needsInit = false;
|
||||
}
|
||||
|
||||
function target(event) {
|
||||
var element = event.target;
|
||||
while(element && element.tagName != "LI")
|
||||
element = element.parentNode;
|
||||
// more fun with IE, sometimes event.target is empty, just ignore it then
|
||||
if(!element)
|
||||
return [];
|
||||
return element;
|
||||
}
|
||||
|
||||
function moveSelect(step) {
|
||||
listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
|
||||
movePosition(step);
|
||||
var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
|
||||
if(options.scroll) {
|
||||
var offset = 0;
|
||||
listItems.slice(0, active).each(function() {
|
||||
offset += this.offsetHeight;
|
||||
});
|
||||
if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
|
||||
list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
|
||||
} else if(offset < list.scrollTop()) {
|
||||
list.scrollTop(offset);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function movePosition(step) {
|
||||
active += step;
|
||||
if (active < 0) {
|
||||
active = listItems.size() - 1;
|
||||
} else if (active >= listItems.size()) {
|
||||
active = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function limitNumberOfItems(available) {
|
||||
return options.max && options.max < available
|
||||
? options.max
|
||||
: available;
|
||||
}
|
||||
|
||||
function fillList() {
|
||||
list.empty();
|
||||
var max = limitNumberOfItems(data.length);
|
||||
for (var i=0; i < max; i++) {
|
||||
if (!data[i])
|
||||
continue;
|
||||
var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
|
||||
if ( formatted === false )
|
||||
continue;
|
||||
var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
|
||||
$.data(li, "ac_data", data[i]);
|
||||
}
|
||||
listItems = list.find("li");
|
||||
if ( options.selectFirst ) {
|
||||
listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
|
||||
active = 0;
|
||||
}
|
||||
// apply bgiframe if available
|
||||
if ( $.fn.bgiframe )
|
||||
list.bgiframe();
|
||||
}
|
||||
|
||||
return {
|
||||
display: function(d, q) {
|
||||
init();
|
||||
data = d;
|
||||
term = q;
|
||||
fillList();
|
||||
},
|
||||
next: function() {
|
||||
moveSelect(1);
|
||||
},
|
||||
prev: function() {
|
||||
moveSelect(-1);
|
||||
},
|
||||
pageUp: function() {
|
||||
if (active != 0 && active - 8 < 0) {
|
||||
moveSelect( -active );
|
||||
} else {
|
||||
moveSelect(-8);
|
||||
}
|
||||
},
|
||||
pageDown: function() {
|
||||
if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
|
||||
moveSelect( listItems.size() - 1 - active );
|
||||
} else {
|
||||
moveSelect(8);
|
||||
}
|
||||
},
|
||||
hide: function() {
|
||||
element && element.hide();
|
||||
listItems && listItems.removeClass(CLASSES.ACTIVE);
|
||||
active = -1;
|
||||
},
|
||||
visible : function() {
|
||||
return element && element.is(":visible");
|
||||
},
|
||||
current: function() {
|
||||
return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
|
||||
},
|
||||
show: function() {
|
||||
var offset = $(input).offset();
|
||||
element.css({
|
||||
width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(),
|
||||
top: offset.top + input.offsetHeight,
|
||||
left: offset.left
|
||||
}).show();
|
||||
if(options.scroll) {
|
||||
list.scrollTop(0);
|
||||
list.css({
|
||||
maxHeight: options.scrollHeight,
|
||||
overflow: 'auto'
|
||||
});
|
||||
|
||||
if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
|
||||
var listHeight = 0;
|
||||
listItems.each(function() {
|
||||
listHeight += this.offsetHeight;
|
||||
});
|
||||
var scrollbarsVisible = listHeight > options.scrollHeight;
|
||||
list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
|
||||
if (!scrollbarsVisible) {
|
||||
// IE doesn't recalculate width when scrollbar disappears
|
||||
listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
selected: function() {
|
||||
var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
|
||||
return selected && selected.length && $.data(selected[0], "ac_data");
|
||||
},
|
||||
emptyList: function (){
|
||||
list && list.empty();
|
||||
},
|
||||
unbind: function() {
|
||||
element && element.remove();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
$.fn.selection = function(start, end) {
|
||||
if (start !== undefined) {
|
||||
return this.each(function() {
|
||||
if( this.createTextRange ){
|
||||
var selRange = this.createTextRange();
|
||||
if (end === undefined || start == end) {
|
||||
selRange.move("character", start);
|
||||
selRange.select();
|
||||
} else {
|
||||
selRange.collapse(true);
|
||||
selRange.moveStart("character", start);
|
||||
selRange.moveEnd("character", end);
|
||||
selRange.select();
|
||||
}
|
||||
} else if( this.setSelectionRange ){
|
||||
this.setSelectionRange(start, end);
|
||||
} else if( this.selectionStart ){
|
||||
this.selectionStart = start;
|
||||
this.selectionEnd = end;
|
||||
}
|
||||
});
|
||||
}
|
||||
var field = this[0];
|
||||
if ( field.createTextRange ) {
|
||||
var range = document.selection.createRange(),
|
||||
orig = field.value,
|
||||
teststring = "<->",
|
||||
textLength = range.text.length;
|
||||
range.text = teststring;
|
||||
var caretAt = field.value.indexOf(teststring);
|
||||
field.value = orig;
|
||||
this.selection(caretAt, caretAt + textLength);
|
||||
return {
|
||||
start: caretAt,
|
||||
end: caretAt + textLength
|
||||
}
|
||||
} else if( field.selectionStart !== undefined ){
|
||||
return {
|
||||
start: field.selectionStart,
|
||||
end: field.selectionEnd
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery);
|
File diff suppressed because one or more lines are too long
47
wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.dev.js
Normal file
47
wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.dev.js
Normal file
File diff suppressed because one or more lines are too long
1
wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.js
Normal file
1
wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.js
Normal file
File diff suppressed because one or more lines are too long
147
wp-admin/js/custom-navigation-default-items.dev.js
Normal file
147
wp-admin/js/custom-navigation-default-items.dev.js
Normal file
@ -0,0 +1,147 @@
|
||||
/**
|
||||
* WordPress Administration Custom Navigation
|
||||
* Interface JQuery functions
|
||||
*
|
||||
* @author Jeffikus <pearce.jp@gmail.com>
|
||||
* @version 1.1.0
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Administration
|
||||
*/
|
||||
|
||||
/*
|
||||
* Init Functions
|
||||
*/
|
||||
$(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();
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
1
wp-admin/js/custom-navigation-default-items.js
Normal file
1
wp-admin/js/custom-navigation-default-items.js
Normal file
@ -0,0 +1 @@
|
||||
$(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")}}});$("#message").animate({opacity:1},2000).fadeOut(300,function(){$(this).remove()});$("#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(f,d){var a=$(this).parent();var g=!$(this).hasClass("dropzone");if(g&&a.children("ul").length==0){a.append('<ul id="sub-menu" />')}if(g){a.children("ul").append(d.draggable)}else{a.before(d.draggable)}a.find("dl,.dropzone").css({backgroundColor:"",borderColor:""});var c=d.draggable.attr("value");var b=a.attr("value");a.find("#menu-"+c).find("#parent"+c).val(b);$(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 a=$(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()})});
|
289
wp-admin/js/custom-navigation-dynamic-functions.dev.js
Normal file
289
wp-admin/js/custom-navigation-dynamic-functions.dev.js
Normal file
@ -0,0 +1,289 @@
|
||||
/**
|
||||
* WordPress Administration Custom Navigation
|
||||
* Interface JS functions
|
||||
*
|
||||
* @author Jeffikus <pearce.jp@gmail.com>
|
||||
* @version 1.1.0
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Administration
|
||||
*/
|
||||
|
||||
/*
|
||||
* Removes menu items from current menu
|
||||
* @param int o - the id of the menu li to remove.
|
||||
*/
|
||||
function removeitem(o)
|
||||
{
|
||||
|
||||
var todelete = document.getElementById('menu-' + o);
|
||||
|
||||
if (todelete)
|
||||
{
|
||||
var parenttodelete = document.getElementById('menu-' + o).parentNode;
|
||||
throwaway_node = parenttodelete.removeChild(todelete);
|
||||
}
|
||||
|
||||
updatepostdata();
|
||||
};
|
||||
|
||||
/*
|
||||
* Loads dialog window to edit menu items from current menu
|
||||
* @param int o - the id of the menu li to edit.
|
||||
*/
|
||||
function edititem(o)
|
||||
{
|
||||
|
||||
itemTitle = $('#title' + o).attr('value');
|
||||
itemURL = $('#linkurl' + o).attr('value');
|
||||
itemAnchorTitle = $('#anchortitle' + o).attr('value');
|
||||
itemNewWindow = $('#newwindow' + o).attr('value');
|
||||
itemDesc = $('#description' + o).attr('value');
|
||||
|
||||
$('#dialog-confirm').dialog( 'option' , 'itemID' , o )
|
||||
|
||||
$('#dialog-confirm').dialog('open');
|
||||
|
||||
$('#edittitle').attr('value', itemTitle);
|
||||
$('#editlink').attr('value', itemURL);
|
||||
$('#editanchortitle').attr('value', itemAnchorTitle);
|
||||
$("#editnewwindow option[value='" + itemNewWindow + "']").attr('selected', 'selected');
|
||||
$('#editdescription').attr('value', itemDesc);
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* Prepares menu items for POST
|
||||
*/
|
||||
function updatepostdata()
|
||||
{
|
||||
|
||||
var i = 0;
|
||||
$("#custom-nav").find("li").each(function(i) {
|
||||
i = i + 1;
|
||||
var j = $(this).attr('value');
|
||||
|
||||
$(this).find('#position' + j).attr('value', i);
|
||||
$(this).attr('id','menu-' + i);
|
||||
$(this).attr('value', i);
|
||||
|
||||
$(this).find('#dbid' + j).attr('name','dbid' + i);
|
||||
$(this).find('#dbid' + j).attr('id','dbid' + i);
|
||||
|
||||
$(this).find('#postmenu' + j).attr('name','postmenu' + i);
|
||||
$(this).find('#postmenu' + j).attr('id','postmenu' + i);
|
||||
|
||||
var p = $(this).find('#parent' + j).parent().parent().parent().attr('value');
|
||||
|
||||
$(this).find('#parent' + j).attr('name','parent' + i);
|
||||
$(this).find('#parent' + j).attr('id','parent' + i);
|
||||
if (p) {
|
||||
//Do nothing
|
||||
}
|
||||
else {
|
||||
//reset p to be top level
|
||||
p = 0;
|
||||
}
|
||||
|
||||
$(this).find('#parent' + j).attr('value', p);
|
||||
|
||||
$(this).find('#title' + j).attr('name','title' + i);
|
||||
$(this).find('#title' + j).attr('id','title' + i);
|
||||
|
||||
$(this).find('#linkurl' + j).attr('name','linkurl' + i);
|
||||
$(this).find('#linkurl' + j).attr('id','linkurl' + i);
|
||||
|
||||
$(this).find('#description' + j).attr('name','description' + i);
|
||||
$(this).find('#description' + j).attr('id','description' + i);
|
||||
|
||||
$(this).find('#icon' + j).attr('name','icon' + i);
|
||||
$(this).find('#icon' + j).attr('id','icon' + i);
|
||||
|
||||
$(this).find('#position' + j).attr('name','position' + i);
|
||||
$(this).find('#position' + j).attr('id','position' + i);
|
||||
|
||||
$(this).find('#linktype' + j).attr('name','linktype' + i);
|
||||
$(this).find('#linktype' + j).attr('id','linktype' + i);
|
||||
|
||||
$(this).find('#anchortitle' + j).attr('name','anchortitle' + i);
|
||||
$(this).find('#anchortitle' + j).attr('id','anchortitle' + i);
|
||||
|
||||
$(this).find('#newwindow' + j).attr('name','newwindow' + i);
|
||||
$(this).find('#newwindow' + j).attr('id','newwindow' + i);
|
||||
|
||||
$(this).find('dl > dt > span > #remove' + j).attr('value', i);
|
||||
$(this).find('dl > dt > span > #remove' + j).attr('onClick', 'removeitem(' + i + ')');
|
||||
$(this).find('dl > dt > span > #remove' + j).attr('id','remove' + i);
|
||||
|
||||
$('#licount').attr('value',i);
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* Adds item from Page, Category, or Custom options menu
|
||||
* @param string templatedir - directory of the add, edit, view images.
|
||||
* @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 appendToList(templatedir,additemtype,itemtext,itemurl,itemid,itemparentid,itemdescription)
|
||||
{
|
||||
var inputvaluevarname = '';
|
||||
var inputvaluevarurl = '';
|
||||
var inputitemid = '';
|
||||
var inputparentid= '';
|
||||
var inputdescription = '';
|
||||
var inputicon = '';
|
||||
|
||||
if (additemtype == 'Custom')
|
||||
{
|
||||
inputvaluevarname = document.getElementById('custom_menu_item_name').value;
|
||||
inputvaluevarurl = document.getElementById('custom_menu_item_url').value;
|
||||
inputitemid = '';
|
||||
inputparentid = '';
|
||||
inputlinktype = 'custom';
|
||||
inputdescription = document.getElementById('custom_menu_item_description').value;
|
||||
}
|
||||
else if (additemtype == 'Page')
|
||||
{
|
||||
inputvaluevarname = htmlentities(itemtext.toString());
|
||||
inputvaluevarurl = itemurl.toString();
|
||||
inputitemid = itemid.toString();
|
||||
inputparentid = '0';
|
||||
inputlinktype = 'page';
|
||||
inputdescription = htmlentities(itemdescription.toString());
|
||||
|
||||
}
|
||||
else if (additemtype == 'Category')
|
||||
{
|
||||
inputvaluevarname = htmlentities(itemtext.toString());
|
||||
inputvaluevarurl = itemurl.toString();
|
||||
inputitemid = itemid.toString();
|
||||
inputparentid = '0';
|
||||
inputlinktype = 'category';
|
||||
inputdescription = htmlentities(itemdescription.toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
inputvaluevarname = '';
|
||||
inputvaluevarname = '';
|
||||
inputitemid = '';
|
||||
inputparentid = '';
|
||||
inputlinktype = 'custom';
|
||||
inputdescription = '';
|
||||
}
|
||||
|
||||
var count=document.getElementById('custom-nav').getElementsByTagName('li').length;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
//Notification Message
|
||||
$('.maintitle').after('<div id="message" class="updated fade below-h2"><p>Menu Item added!</p></div>');
|
||||
$('#message').animate({ opacity: 1.0 },2000).fadeOut(300, function(){ $(this).remove();});
|
||||
|
||||
//Appends HTML to the menu
|
||||
$('#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
|
||||
$('#menu-' + randomnumber + '').draggable(
|
||||
{
|
||||
handle: ' > dl',
|
||||
opacity: .8,
|
||||
addClasses: false,
|
||||
helper: 'clone',
|
||||
zIndex: 100
|
||||
});
|
||||
|
||||
//make menu item droppable
|
||||
$('#menu-' + randomnumber + ' dl, #menu-' + randomnumber + ' .dropzone').droppable({
|
||||
accept: '#' + randomnumber + ', #custom-nav li',
|
||||
tolerance: 'pointer',
|
||||
drop: function(e, ui)
|
||||
{
|
||||
var li = $(this).parent();
|
||||
var child = !$(this).hasClass('dropzone');
|
||||
//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);
|
||||
}
|
||||
|
||||
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: '' });
|
||||
}
|
||||
});
|
||||
|
||||
updatepostdata();
|
||||
};
|
1
wp-admin/js/custom-navigation-dynamic-functions.js
Normal file
1
wp-admin/js/custom-navigation-dynamic-functions.js
Normal file
File diff suppressed because one or more lines are too long
300
wp-admin/js/custom-navigation-php-functions.dev.js
Normal file
300
wp-admin/js/custom-navigation-php-functions.dev.js
Normal file
@ -0,0 +1,300 @@
|
||||
/*
|
||||
* More info at: http://phpjs.org
|
||||
*
|
||||
* This is version: 3.08
|
||||
* php.js is copyright 2010 Kevin van Zonneveld.
|
||||
*
|
||||
* Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld
|
||||
* (http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White
|
||||
* (http://getsprink.com), Waldo Malqui Silva, Paulo Ricardo F. Santos, Jack,
|
||||
* Jonas Raoni Soares Silva (http://www.jsfromhell.com), Philip Peterson, Ates
|
||||
* Goral (http://magnetiq.com), Legaev Andrey, Alex, Ratheous, Martijn
|
||||
* Wieringa, Nate, lmeyrick (https://sourceforge.net/projects/bcmath-js/),
|
||||
* Enrique Gonzalez, Philippe Baumann, Webtoolkit.info
|
||||
* (http://www.webtoolkit.info/), travc, Carlos R. L. Rodrigues
|
||||
* (http://www.jsfromhell.com), Jani Hartikainen, Ash Searle
|
||||
* (http://hexmen.com/blog/), Ole Vrijenhoek, stag019, d3x, Erkekjetter,
|
||||
* GeekFG (http://geekfg.blogspot.com), T.Wild, Johnny Mast
|
||||
* (http://www.phpvrouwen.nl), Michael Grier,
|
||||
* http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript,
|
||||
* pilus, marrtins, Andrea Giammarchi (http://webreflection.blogspot.com),
|
||||
* WebDevHobo (http://webdevhobo.blogspot.com/), Caio Ariede
|
||||
* (http://caioariede.com), Thunder.m, Aman Gupta, Martin
|
||||
* (http://www.erlenwiese.de/), Tyler Akins (http://rumkin.com), Lars Fischer,
|
||||
* Paul Smith, Alfonso Jimenez (http://www.alfonsojimenez.com), Michael White,
|
||||
* mdsjack (http://www.mdsjack.bo.it), Pellentesque Malesuada, gettimeofday,
|
||||
* David, Joris, saulius, Robin, Steven Levithan
|
||||
* (http://blog.stevenlevithan.com), Public Domain
|
||||
* (http://www.json.org/json2.js), Kankrelune (http://www.webfaktory.info/),
|
||||
* Tim de Koning (http://www.kingsquare.nl), Arpad Ray (mailto:arpad@php.net),
|
||||
* AJ, KELAN, Sakimori, Mailfaker (http://www.weedem.fr/), Oleg Eremeev, Marc
|
||||
* Palau, Josh Fraser
|
||||
* (http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/),
|
||||
* Karol Kowalski, Chris, Breaking Par Consulting Inc
|
||||
* (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7),
|
||||
* Mirek Slugen, majak, Felix Geisendoerfer (http://www.debuggable.com/felix),
|
||||
* gorthaur, Steve Hilder, LH, Stoyan Kyosev (http://www.svest.org/), Der
|
||||
* Simon (http://innerdom.sourceforge.net/), HKM, echo is bad, nord_ua, Ozh,
|
||||
* metjay, XoraX (http://www.xorax.info), Eugene Bulkin
|
||||
* (http://doubleaw.com/), JB, strcasecmp, strcmp, Taras Bogach, Francesco,
|
||||
* Marco, noname, class_exists, madipta, Alan C, mktime, Douglas Crockford
|
||||
* (http://javascript.crockford.com), uestla, Frank Forte, David James, Steve
|
||||
* Clay, J A R, jpfle, Marc Jansen, Paul, Hyam Singer
|
||||
* (http://www.impact-computing.com/), T. Wild, Ole Vrijenhoek
|
||||
* (http://www.nervous.nl/), Raphael (Ao RUDLER), kenneth, Brad Touesnard,
|
||||
* ChaosNo1, Subhasis Deb, Norman "zEh" Fuchs, 0m3r, Sanjoy Roy, Rob, Gilbert,
|
||||
* Bayron Guevara, paulo kuong, Orlando, duncan, sankai, hitwork, Philippe
|
||||
* Jausions (http://pear.php.net/user/jausions), Aidan Lister
|
||||
* (http://aidanlister.com/), ejsanders, Nick Callen, Brian Tafoya
|
||||
* (http://www.premasolutions.com/), johnrembo, sowberry, Yves Sucaet, Denny
|
||||
* Wardhana, Ulrich, kilops, dptr1988, john (http://www.jd-tech.net), MeEtc
|
||||
* (http://yass.meetcweb.com), Peter-Paul Koch
|
||||
* (http://www.quirksmode.org/js/beat.html), T0bsn, Tim Wiel, Bryan Elliott,
|
||||
* Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev), JT,
|
||||
* Thomas Beaucourt (http://www.webapp.fr), David Randall, DxGx, Soren Hansen,
|
||||
* lmeyrick (https://sourceforge.net/projects/bcmath-js/this.), Le Torbi,
|
||||
* djmix, Lincoln Ramsay, Linuxworld, Thiago Mata
|
||||
* (http://thiagomata.blog.com), Pedro Tainha (http://www.pedrotainha.com),
|
||||
* James, Pyerre, Jon Hohle, felix, ger, Russell Walker
|
||||
* (http://www.nbill.co.uk/), Garagoth, Andrej Pavlovic, Dino, Jamie Beck
|
||||
* (http://www.terabit.ca/), DtTvB
|
||||
* (http://dt.in.th/2008-09-16.string-length-in-bytes.html), setcookie, YUI
|
||||
* Library: http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html,
|
||||
* Blues at http://hacks.bluesmoon.info/strftime/strftime.js, Andreas, rem,
|
||||
* meo, Jay Klehr, Kheang Hok Chin (http://www.distantia.ca/), Luke Smith
|
||||
* (http://lucassmith.name), Rival, Amir Habibi
|
||||
* (http://www.residence-mixte.com/), Cagri Ekin, Greenseed, mk.keck, Leslie
|
||||
* Hoare, booeyOH, Ben Bryan, Michael, Christian Doebler, Kirk Strobeck, Brant
|
||||
* Messenger (http://www.brantmessenger.com/), Rick Waldron, Mick@el, Martin
|
||||
* Pool, Pierre-Luc Paour, Daniel Esteban, Christoph, Saulo Vallory, Kristof
|
||||
* Coomans (SCK-CEN Belgian Nucleair Research Centre), rezna, Tomasz
|
||||
* Wesolowski, Gabriel Paderni, Marco van Oort, Philipp Lenssen,
|
||||
* penutbutterjelly, Simon Willison (http://simonwillison.net), Anton Ongson,
|
||||
* Eric Nagel, Bobby Drake, Pul, Blues (http://tech.bluesmoon.info/), Luke
|
||||
* Godfrey, Diogo Resende, Howard Yeend, vlado houba, Jalal Berrami, Itsacon
|
||||
* (http://www.itsacon.net/), date, Billy, stensi, Cord, fearphage
|
||||
* (http://http/my.opera.com/fearphage/), Victor, Matteo, Artur Tchernychev,
|
||||
* Francois, nobbler, Fox, marc andreu, Nick Kolosov (http://sammy.ru),
|
||||
* Nathan, Arno, Scott Cariss, Slawomir Kaniecki, ReverseSyntax, Jason Wong
|
||||
* (http://carrot.org/), Mateusz "loonquawl" Zalega, Manish, Wagner B. Soares,
|
||||
* 3D-GRAF, jakes, Yannoo, gabriel paderni, daniel airton wermann
|
||||
* (http://wermann.com.br), Atli ?—r, Allan Jensen
|
||||
* (http://www.winternet.no), Benjamin Lupton, davook, Maximusya, FGFEmperor,
|
||||
* baris ozdil, Luis Salazar (http://www.freaky-media.com/), Tim de Koning,
|
||||
* taith, Matt Bradley, FremyCompany, T.J. Leahy, Greg Frazier, Valentina De
|
||||
* Rosa, Tod Gentille, Riddler (http://www.frontierwebdev.com/), Alexander M
|
||||
* Beedie
|
||||
*
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
||||
* and GPL (GPL-LICENSE.txt) licenses.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
function get_html_translation_table (table, quote_style) {
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Philip Peterson
|
||||
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + bugfixed by: noname
|
||||
// + bugfixed by: Alex
|
||||
// + bugfixed by: Marco
|
||||
// + bugfixed by: madipta
|
||||
// + improved by: KELAN
|
||||
// + improved by: Brett Zamir (http://brett-zamir.me)
|
||||
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
|
||||
// + input by: Frank Forte
|
||||
// + bugfixed by: T.Wild
|
||||
// + input by: Ratheous
|
||||
// % note: It has been decided that we're not going to add global
|
||||
// % note: dependencies to php.js, meaning the constants are not
|
||||
// % note: real constants, but strings instead. Integers are also supported if someone
|
||||
// % note: chooses to create the constants themselves.
|
||||
// * example 1: get_html_translation_table('HTML_SPECIALCHARS');
|
||||
// * returns 1: {'"': '"', '&': '&', '<': '<', '>': '>'}
|
||||
|
||||
var entities = {}, hash_map = {}, decimal = 0, symbol = '';
|
||||
var constMappingTable = {}, constMappingQuoteStyle = {};
|
||||
var useTable = {}, useQuoteStyle = {};
|
||||
|
||||
// Translate arguments
|
||||
constMappingTable[0] = 'HTML_SPECIALCHARS';
|
||||
constMappingTable[1] = 'HTML_ENTITIES';
|
||||
constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
|
||||
constMappingQuoteStyle[2] = 'ENT_COMPAT';
|
||||
constMappingQuoteStyle[3] = 'ENT_QUOTES';
|
||||
|
||||
useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
|
||||
useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
|
||||
|
||||
if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
|
||||
throw new Error("Table: "+useTable+' not supported');
|
||||
// return false;
|
||||
}
|
||||
|
||||
entities['38'] = '&';
|
||||
if (useTable === 'HTML_ENTITIES') {
|
||||
entities['160'] = ' ';
|
||||
entities['161'] = '¡';
|
||||
entities['162'] = '¢';
|
||||
entities['163'] = '£';
|
||||
entities['164'] = '¤';
|
||||
entities['165'] = '¥';
|
||||
entities['166'] = '¦';
|
||||
entities['167'] = '§';
|
||||
entities['168'] = '¨';
|
||||
entities['169'] = '©';
|
||||
entities['170'] = 'ª';
|
||||
entities['171'] = '«';
|
||||
entities['172'] = '¬';
|
||||
entities['173'] = '­';
|
||||
entities['174'] = '®';
|
||||
entities['175'] = '¯';
|
||||
entities['176'] = '°';
|
||||
entities['177'] = '±';
|
||||
entities['178'] = '²';
|
||||
entities['179'] = '³';
|
||||
entities['180'] = '´';
|
||||
entities['181'] = 'µ';
|
||||
entities['182'] = '¶';
|
||||
entities['183'] = '·';
|
||||
entities['184'] = '¸';
|
||||
entities['185'] = '¹';
|
||||
entities['186'] = 'º';
|
||||
entities['187'] = '»';
|
||||
entities['188'] = '¼';
|
||||
entities['189'] = '½';
|
||||
entities['190'] = '¾';
|
||||
entities['191'] = '¿';
|
||||
entities['192'] = 'À';
|
||||
entities['193'] = 'Á';
|
||||
entities['194'] = 'Â';
|
||||
entities['195'] = 'Ã';
|
||||
entities['196'] = 'Ä';
|
||||
entities['197'] = 'Å';
|
||||
entities['198'] = 'Æ';
|
||||
entities['199'] = 'Ç';
|
||||
entities['200'] = 'È';
|
||||
entities['201'] = 'É';
|
||||
entities['202'] = 'Ê';
|
||||
entities['203'] = 'Ë';
|
||||
entities['204'] = 'Ì';
|
||||
entities['205'] = 'Í';
|
||||
entities['206'] = 'Î';
|
||||
entities['207'] = 'Ï';
|
||||
entities['208'] = 'Ð';
|
||||
entities['209'] = 'Ñ';
|
||||
entities['210'] = 'Ò';
|
||||
entities['211'] = 'Ó';
|
||||
entities['212'] = 'Ô';
|
||||
entities['213'] = 'Õ';
|
||||
entities['214'] = 'Ö';
|
||||
entities['215'] = '×';
|
||||
entities['216'] = 'Ø';
|
||||
entities['217'] = 'Ù';
|
||||
entities['218'] = 'Ú';
|
||||
entities['219'] = 'Û';
|
||||
entities['220'] = 'Ü';
|
||||
entities['221'] = 'Ý';
|
||||
entities['222'] = 'Þ';
|
||||
entities['223'] = 'ß';
|
||||
entities['224'] = 'à';
|
||||
entities['225'] = 'á';
|
||||
entities['226'] = 'â';
|
||||
entities['227'] = 'ã';
|
||||
entities['228'] = 'ä';
|
||||
entities['229'] = 'å';
|
||||
entities['230'] = 'æ';
|
||||
entities['231'] = 'ç';
|
||||
entities['232'] = 'è';
|
||||
entities['233'] = 'é';
|
||||
entities['234'] = 'ê';
|
||||
entities['235'] = 'ë';
|
||||
entities['236'] = 'ì';
|
||||
entities['237'] = 'í';
|
||||
entities['238'] = 'î';
|
||||
entities['239'] = 'ï';
|
||||
entities['240'] = 'ð';
|
||||
entities['241'] = 'ñ';
|
||||
entities['242'] = 'ò';
|
||||
entities['243'] = 'ó';
|
||||
entities['244'] = 'ô';
|
||||
entities['245'] = 'õ';
|
||||
entities['246'] = 'ö';
|
||||
entities['247'] = '÷';
|
||||
entities['248'] = 'ø';
|
||||
entities['249'] = 'ù';
|
||||
entities['250'] = 'ú';
|
||||
entities['251'] = 'û';
|
||||
entities['252'] = 'ü';
|
||||
entities['253'] = 'ý';
|
||||
entities['254'] = 'þ';
|
||||
entities['255'] = 'ÿ';
|
||||
}
|
||||
|
||||
if (useQuoteStyle !== 'ENT_NOQUOTES') {
|
||||
entities['34'] = '"';
|
||||
}
|
||||
if (useQuoteStyle === 'ENT_QUOTES') {
|
||||
entities['39'] = ''';
|
||||
}
|
||||
entities['60'] = '<';
|
||||
entities['62'] = '>';
|
||||
|
||||
|
||||
// ascii decimals to real symbols
|
||||
for (decimal in entities) {
|
||||
symbol = String.fromCharCode(decimal);
|
||||
hash_map[symbol] = entities[decimal];
|
||||
}
|
||||
|
||||
return hash_map;
|
||||
}
|
||||
|
||||
|
||||
function htmlentities (string, quote_style) {
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + improved by: nobbler
|
||||
// + tweaked by: Jack
|
||||
// + bugfixed by: Onno Marsman
|
||||
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
|
||||
// + input by: Ratheous
|
||||
// - depends on: get_html_translation_table
|
||||
// * example 1: htmlentities('Kevin & van Zonneveld');
|
||||
// * returns 1: 'Kevin & van Zonneveld'
|
||||
// * example 2: htmlentities("foo'bar","ENT_QUOTES");
|
||||
// * returns 2: 'foo'bar'
|
||||
|
||||
var hash_map = {}, symbol = '', tmp_str = '', entity = '';
|
||||
tmp_str = string.toString();
|
||||
|
||||
if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
|
||||
return false;
|
||||
}
|
||||
hash_map["'"] = ''';
|
||||
for (symbol in hash_map) {
|
||||
entity = hash_map[symbol];
|
||||
tmp_str = tmp_str.split(symbol).join(entity);
|
||||
}
|
||||
|
||||
return tmp_str;
|
||||
}
|
1
wp-admin/js/custom-navigation-php-functions.js
Normal file
1
wp-admin/js/custom-navigation-php-functions.js
Normal file
@ -0,0 +1 @@
|
||||
function get_html_translation_table(i,g){var d={},f={},c=0,a="";var e={},b={};var j={},h={};e[0]="HTML_SPECIALCHARS";e[1]="HTML_ENTITIES";b[0]="ENT_NOQUOTES";b[2]="ENT_COMPAT";b[3]="ENT_QUOTES";j=!isNaN(i)?e[i]:i?i.toUpperCase():"HTML_SPECIALCHARS";h=!isNaN(g)?b[g]:g?g.toUpperCase():"ENT_COMPAT";if(j!=="HTML_SPECIALCHARS"&&j!=="HTML_ENTITIES"){throw new Error("Table: "+j+" not supported")}d["38"]="&";if(j==="HTML_ENTITIES"){d["160"]=" ";d["161"]="¡";d["162"]="¢";d["163"]="£";d["164"]="¤";d["165"]="¥";d["166"]="¦";d["167"]="§";d["168"]="¨";d["169"]="©";d["170"]="ª";d["171"]="«";d["172"]="¬";d["173"]="­";d["174"]="®";d["175"]="¯";d["176"]="°";d["177"]="±";d["178"]="²";d["179"]="³";d["180"]="´";d["181"]="µ";d["182"]="¶";d["183"]="·";d["184"]="¸";d["185"]="¹";d["186"]="º";d["187"]="»";d["188"]="¼";d["189"]="½";d["190"]="¾";d["191"]="¿";d["192"]="À";d["193"]="Á";d["194"]="Â";d["195"]="Ã";d["196"]="Ä";d["197"]="Å";d["198"]="Æ";d["199"]="Ç";d["200"]="È";d["201"]="É";d["202"]="Ê";d["203"]="Ë";d["204"]="Ì";d["205"]="Í";d["206"]="Î";d["207"]="Ï";d["208"]="Ð";d["209"]="Ñ";d["210"]="Ò";d["211"]="Ó";d["212"]="Ô";d["213"]="Õ";d["214"]="Ö";d["215"]="×";d["216"]="Ø";d["217"]="Ù";d["218"]="Ú";d["219"]="Û";d["220"]="Ü";d["221"]="Ý";d["222"]="Þ";d["223"]="ß";d["224"]="à";d["225"]="á";d["226"]="â";d["227"]="ã";d["228"]="ä";d["229"]="å";d["230"]="æ";d["231"]="ç";d["232"]="è";d["233"]="é";d["234"]="ê";d["235"]="ë";d["236"]="ì";d["237"]="í";d["238"]="î";d["239"]="ï";d["240"]="ð";d["241"]="ñ";d["242"]="ò";d["243"]="ó";d["244"]="ô";d["245"]="õ";d["246"]="ö";d["247"]="÷";d["248"]="ø";d["249"]="ù";d["250"]="ú";d["251"]="û";d["252"]="ü";d["253"]="ý";d["254"]="þ";d["255"]="ÿ"}if(h!=="ENT_NOQUOTES"){d["34"]="""}if(h==="ENT_QUOTES"){d["39"]="'"}d["60"]="<";d["62"]=">";for(c in d){a=String.fromCharCode(c);f[a]=d[c]}return f}function htmlentities(c,f){var e={},d="",a="",b="";a=c.toString();if(false===(e=this.get_html_translation_table("HTML_ENTITIES",f))){return false}e["'"]="'";for(d in e){b=e[d];a=a.split(d).join(b)}return a};
|
@ -108,6 +108,7 @@ $menu[60] = array( __('Appearance'), 'switch_themes', 'themes.php', '', 'menu-to
|
||||
$submenu['themes.php'][5] = array(__('Themes'), 'switch_themes', 'themes.php');
|
||||
$submenu['themes.php'][10] = array(_x('Editor', 'theme editor'), 'edit_themes', 'theme-editor.php');
|
||||
$submenu['themes.php'][15] = array(__('Add New Themes'), 'install_themes', 'theme-install.php');
|
||||
$submenu['themes.php'][20] = array(__('Custom Navigation'), 'switch_themes', 'custom-navigation.php');
|
||||
|
||||
$update_plugins = get_site_transient( 'update_plugins' );
|
||||
$update_count = 0;
|
||||
|
993
wp-includes/custom-navigation-functions.php
Normal file
993
wp-includes/custom-navigation-functions.php
Normal file
@ -0,0 +1,993 @@
|
||||
<?php
|
||||
/**
|
||||
* WordPress Administration Custom Navigation
|
||||
* General Functions
|
||||
*
|
||||
* @author Jeffikus <pearce.jp@gmail.com>
|
||||
* @version 1.1.0
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Administration
|
||||
*/
|
||||
|
||||
function wp_custom_navigation_get_menu_items( $menu_objects, $key = 'ID' ) {
|
||||
$menu_items = array();
|
||||
if ( !empty( $menu_objects ) && !empty( $key ) ) {
|
||||
$args = array( 'orderby' => 'menu_order', 'post_type' => 'menu_item', 'post_status' => 'menu-category,menu-page,menu-custom' );
|
||||
if ( count( $menu_objects ) > 1 )
|
||||
$args['include'] = implode( ',', $menu_objects );
|
||||
else
|
||||
$args['include'] = $menu_objects[0];
|
||||
$posts = new WP_Query( $args );
|
||||
if ( ! empty( $posts->posts ) ) {
|
||||
foreach( $posts->posts as $post ) {
|
||||
$menu_items[ $post->$key ] = $post;
|
||||
}
|
||||
}
|
||||
unset( $posts );
|
||||
ksort( $menu_items );
|
||||
}
|
||||
return $menu_items;
|
||||
}
|
||||
function wp_custom_navigation_setup($override = false) {
|
||||
|
||||
$nav_version = '1.1.0';
|
||||
//Custom Navigation Menu Setup
|
||||
|
||||
//Check for Upgrades
|
||||
if (get_option('wp_settings_custom_nav_version') <> '') {
|
||||
$nav_version_in_db = get_option('wp_settings_custom_nav_version');
|
||||
}
|
||||
else {
|
||||
$nav_version_in_db = '0';
|
||||
}
|
||||
|
||||
//Override for menu descriptions
|
||||
update_option('wp_settings_custom_nav_advanced_options','yes');
|
||||
|
||||
if(($nav_version_in_db <> $nav_version) || ($override))
|
||||
update_option('wp_settings_custom_nav_version',$nav_version);
|
||||
|
||||
$custom_menus = get_terms( 'menu', array( 'hide_empty' => false ) );
|
||||
if ( !empty( $custom_menus ) ) {
|
||||
foreach( $custom_menus as $menu ) {
|
||||
$menu_objects = get_objects_in_term( $menu->term_id, 'menu' );
|
||||
if ( !empty( $menu_objects ) ) {
|
||||
foreach( $menu_objects as $item )
|
||||
wp_delete_post( $item );
|
||||
}
|
||||
wp_delete_term( $menu->term_id, 'menu' );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/* Custom Navigation Functions */
|
||||
/* wp_custom_navigation_output() displays the menu in the back/frontend
|
||||
/* wp_custom_navigation_sub_items() is a recursive sub menu item function
|
||||
/* wp_custom_nav_get_pages()
|
||||
/* wp_custom_nav_get_categories()
|
||||
/* wp_custom_navigation_default_sub_items() is a recursive sub menu item function
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/* Main Output Function
|
||||
/* args list
|
||||
/* type - frontend or backend
|
||||
/* name - name of your menu
|
||||
/* id - id of menu in db
|
||||
/* desc - 1 = show descriptions, 2 = dont show descriptions
|
||||
/* before_title - html before title is outputted in <a> tag
|
||||
/* after_title - html after title is outputted in <a> tag
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
function wp_custom_navigation_output($args = array()) {
|
||||
|
||||
//DEFAULT ARGS
|
||||
$type = 'frontend';
|
||||
$name = 'Menu 1';
|
||||
$id = 0;
|
||||
$desc = 2;
|
||||
$before_title = '';
|
||||
$after_title = '';
|
||||
|
||||
if (isset($args)) {
|
||||
|
||||
if ( !is_array($args) )
|
||||
parse_str( $args, $args );
|
||||
|
||||
extract($args);
|
||||
}
|
||||
|
||||
$menu_objects = get_objects_in_term( $id, 'menu' );
|
||||
$menu_items = wp_custom_navigation_get_menu_items( $menu_objects, 'menu_order' );
|
||||
//Override for menu descriptions
|
||||
$advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options');
|
||||
if ($advanced_option_descriptions == 'no')
|
||||
{
|
||||
$desc = 2;
|
||||
}
|
||||
|
||||
$queried_id = 0;
|
||||
global $wp_query;
|
||||
if ( is_page() )
|
||||
$queried_id = $wp_query->post->ID;
|
||||
elseif ( is_category() )
|
||||
$queried_id = $wp_query->query_vars['cat'];
|
||||
//DISPLAY Loop
|
||||
foreach ($menu_items as $menu_item) {
|
||||
|
||||
//PREPARE Menu Data
|
||||
//Page Menu Item
|
||||
switch ( $menu_item->post_status ) {
|
||||
case 'menu-page':
|
||||
if ($menu_item->guid == '')
|
||||
$link = get_permalink( $menu_item->post_parent );
|
||||
else
|
||||
$link = $menu_item->guid;
|
||||
|
||||
if ( $menu_item->post_title == '' )
|
||||
$title = htmlentities( get_the_title( $menu_item->post_parent ) );
|
||||
else
|
||||
$title = htmlentities( $menu_item->post_title );
|
||||
|
||||
if ( $menu_item->post_content == '' )
|
||||
$description = htmlentities( get_post_meta( $menu_item->ID, 'page-description', true ) );
|
||||
else
|
||||
$description = htmlentities( $menu_item->post_content );
|
||||
$target = '';
|
||||
break;
|
||||
//Category Menu Item
|
||||
case 'menu-category':
|
||||
if ($menu_item->guid == '')
|
||||
$link = get_category_link( $menu_item->post_parent );
|
||||
else
|
||||
$link = $menu_item->guid;
|
||||
|
||||
if ( $menu_item->post_title == '' ) {
|
||||
$title_raw = get_categories( 'include='.$menu_item->post_parent );
|
||||
$title = htmlentities($title_raw[0]->cat_name);
|
||||
} else {
|
||||
$title = htmlentities( $menu_item->post_title );
|
||||
}
|
||||
|
||||
if ( $menu_item->post_content == '' )
|
||||
$description = htmlentities( strip_tags( category_description( $menu_item->post_parent ) ) );
|
||||
else
|
||||
$description = htmlentities( $menu_item->post_content );
|
||||
$target = '';
|
||||
break;
|
||||
default:
|
||||
//Custom Menu Item
|
||||
$link = $menu_item->guid;
|
||||
$title = htmlentities( $menu_item->post_title );
|
||||
$description = htmlentities( $menu_item->post_content );
|
||||
$target = 'target="_blank"';
|
||||
break;
|
||||
}
|
||||
/* @todo: update to use tax/post data
|
||||
|
||||
//SET anchor title
|
||||
if (isset($wp_custom_nav_menu_items->custom_anchor_title)) {
|
||||
$anchor_title = htmlentities($wp_custom_nav_menu_items->custom_anchor_title);
|
||||
}
|
||||
else {
|
||||
$anchor_title = $title;
|
||||
}
|
||||
|
||||
if ($queried_id == $wp_custom_nav_menu_items->post_id) {
|
||||
$li_class = 'class="current_page_item"';
|
||||
}
|
||||
else {
|
||||
$li_class = '';
|
||||
}
|
||||
|
||||
if (isset($wp_custom_nav_menu_items->new_window)) {
|
||||
if ($wp_custom_nav_menu_items->new_window > 0) {
|
||||
$target = 'target="_blank"';
|
||||
}
|
||||
else {
|
||||
$target = '';
|
||||
}
|
||||
}
|
||||
*/
|
||||
//List Items
|
||||
?><li id="menu-<?php echo $menu_item->ID; ?>" value="<?php echo $menu_item->ID; ?>" <?php echo $li_class; ?>><?php
|
||||
//@todo: update front end to use post data
|
||||
//FRONTEND Link
|
||||
if ($type == "frontend")
|
||||
{
|
||||
?><a title="<?php echo $anchor_title; ?>" href="<?php echo $link; ?>" <?php echo $target; ?>><?php echo $before_title.$title.$after_title; ?><?php
|
||||
|
||||
if ( $advanced_option_descriptions == 'no' )
|
||||
{
|
||||
// 2 widget override do NOT display descriptions
|
||||
// 1 widget override display descriptions
|
||||
// 0 widget override not set
|
||||
if (($desc == 1) || ($desc == 0) )
|
||||
{
|
||||
?><span class="nav-description"><?php echo $description; ?></span><?php
|
||||
}
|
||||
elseif ($desc == 2)
|
||||
{ }
|
||||
else
|
||||
{ }
|
||||
}
|
||||
else
|
||||
{
|
||||
// 2 widget override do NOT display descriptions
|
||||
// 1 widget override display descriptions
|
||||
// 0 widget override not set
|
||||
if ($desc == 1)
|
||||
{
|
||||
?><span class="nav-description"><?php echo $description; ?></span><?php
|
||||
}
|
||||
elseif (($desc == 2) || ($desc == 0))
|
||||
{ }
|
||||
else
|
||||
{ }
|
||||
}
|
||||
|
||||
?></a><?php
|
||||
}
|
||||
//BACKEND draggable and droppable elements
|
||||
elseif ($type == "backend")
|
||||
$link_type = substr( $menu_item->post_status, 5 );
|
||||
{
|
||||
?>
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<span class="title"><?php echo $title; ?></span>
|
||||
<span class="controls">
|
||||
<span class="type"><?php echo $link_type; ?></span>
|
||||
<a id="edit<?php echo $menu_item->menu_order; ?>" onclick="edititem(<?php echo $menu_item->menu_order; ?>)" value="<?php echo $menu_item->menu_order; ?>"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-edit.png" /></a>
|
||||
<a id="remove<?php echo $menu_item->menu_order; ?>" onclick="removeitem(<?php echo $menu_item->menu_order; ?>)" value="<?php echo $menu_item->menu_order; ?>"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-close.png" /></a>
|
||||
<a id="view<?php echo $menu_item->menu_order; ?>" target="_blank" href="<?php echo $link; ?>"><img alt="View Page" title="View Page" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-viewpage.png" /></a>
|
||||
</span>
|
||||
</dt>
|
||||
</dl>
|
||||
|
||||
<a><span class=""></span></a>
|
||||
<input type="hidden" name="dbid<?php echo $menu_item->menu_order; ?>" id="dbid<?php echo $menu_item->menu_order; ?>" value="<?php echo $menu_item->ID; ?>" />
|
||||
<input type="hidden" name="postmenu<?php echo $menu_item->menu_order; ?>" id="postmenu<?php echo $menu_item->menu_order; ?>" value="<?php echo $id; ?>" />
|
||||
<input type="hidden" name="parent<?php echo $menu_item->menu_order; ?>" id="parent<?php echo $menu_item->menu_order; ?>" value="<?php echo $menu_item->post_parent; ?>" />
|
||||
<input type="hidden" name="title<?php echo $menu_item->menu_order; ?>" id="title<?php echo $menu_item->menu_order; ?>" value="<?php echo $title; ?>" />
|
||||
<input type="hidden" name="linkurl<?php echo $menu_item->menu_order; ?>" id="linkurl<?php echo $menu_item->menu_order; ?>" value="<?php echo $link; ?>" />
|
||||
<input type="hidden" name="description<?php echo $menu_item->menu_order; ?>" id="description<?php echo $menu_item->menu_order; ?>" value="<?php echo $description; ?>" />
|
||||
<input type="hidden" name="icon<?php echo $menu_item->menu_order; ?>" id="icon<?php echo $menu_item->menu_order; ?>" value="0" />
|
||||
<input type="hidden" name="position<?php echo $menu_item->menu_order; ?>" id="position<?php echo $menu_item->menu_order; ?>" value="<?php echo $menu_item->menu_order; ?>" />
|
||||
<input type="hidden" name="linktype<?php echo $menu_item->menu_order; ?>" id="linktype<?php echo $menu_item->menu_order; ?>" value="<?php echo $link_type; ?>" />
|
||||
<input type="hidden" name="anchortitle<?php echo $menu_item->menu_order; ?>" id="anchortitle<?php echo $menu_item->menu_order; ?>" value="<?php echo esc_html( $menu_item->post_excerpt ); ?>" />
|
||||
<input type="hidden" name="newwindow<?php echo $menu_item->menu_order; ?>" id="newwindow<?php echo $menu_item->menu_order; ?>" value="<?php echo ( '' == $menu_item->post_content_filtered ? '0' : '1' ); ?>" />
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
//@todo: implement menu heirarchy
|
||||
/* //DISPLAY menu sub items
|
||||
if ($wp_custom_nav_menu_items->parent_id == 0)
|
||||
{
|
||||
//FRONTEND
|
||||
if ($type == 'frontend')
|
||||
{
|
||||
//Recursive function
|
||||
$intj = wp_custom_navigation_sub_items($wp_custom_nav_menu_items->id,$wp_custom_nav_menu_items->link_type,$table_name,$type,$wp_custom_nav_menu_id);
|
||||
}
|
||||
//BACKEND
|
||||
else
|
||||
{
|
||||
//Recursive function
|
||||
$intj = wp_custom_navigation_sub_items($wp_custom_nav_menu_items->id,$wp_custom_nav_menu_items->link_type,$table_name,$type,$id);
|
||||
}
|
||||
}
|
||||
*/ ?></li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
//@todo: implement menu heirarchy
|
||||
//RECURSIVE Sub Menu Items
|
||||
function wp_custom_navigation_sub_items($post_id,$type,$table_name,$output_type,$menu_id = 0) {
|
||||
|
||||
$parent_id = 0;
|
||||
global $wpdb;
|
||||
|
||||
//GET sub menu items
|
||||
$wp_custom_nav_menu = $wpdb->get_results("SELECT id,post_id,parent_id,position,custom_title,custom_link,custom_description,menu_icon,link_type,custom_anchor_title,new_window FROM ".$table_name." WHERE parent_id = '".$post_id."' AND menu_id='".$menu_id."' ORDER BY position ASC");
|
||||
|
||||
if (empty($wp_custom_nav_menu))
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
?><ul id="sub-custom-nav">
|
||||
<?php
|
||||
$queried_id = 0;
|
||||
global $wp_query;
|
||||
if (is_page()) {
|
||||
$queried_id = $wp_query->post->ID;
|
||||
}
|
||||
elseif (is_category()) {
|
||||
$queried_id = $wp_query->query_vars['cat'];
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
//DISPLAY Loop
|
||||
foreach ($wp_custom_nav_menu as $sub_item)
|
||||
{
|
||||
//Figure out where the menu item sits
|
||||
$counter=$sub_item->position;
|
||||
|
||||
//Prepare Menu Data
|
||||
//Category Menu Item
|
||||
if ($sub_item->link_type == 'category')
|
||||
{
|
||||
|
||||
$parent_id = $sub_item->parent_id;
|
||||
$post_id = $sub_item->post_id;
|
||||
|
||||
if ($sub_item->custom_link == '') {
|
||||
$link = get_category_link($sub_item->post_id);
|
||||
}
|
||||
else {
|
||||
$link = $sub_item->custom_link;
|
||||
}
|
||||
|
||||
if ($sub_item->custom_title == '') {
|
||||
$title_raw = get_categories('include='.$sub_item->post_id);
|
||||
$title = htmlentities($title_raw[0]->cat_name);
|
||||
}
|
||||
else {
|
||||
$title = htmlentities($sub_item->custom_title);
|
||||
}
|
||||
|
||||
if ($sub_item->custom_description == '') {
|
||||
$description = strip_tags(category_description($sub_item->post_id));
|
||||
}
|
||||
else {
|
||||
$description = $sub_item->custom_description;
|
||||
}
|
||||
$target = '';
|
||||
}
|
||||
//Page Menu Item
|
||||
elseif ($sub_item->link_type == 'page')
|
||||
{
|
||||
|
||||
$parent_id = $sub_item->parent_id;
|
||||
$post_id = $sub_item->post_id;
|
||||
|
||||
if ($sub_item->custom_link == '') {
|
||||
$link = get_permalink($sub_item->post_id);
|
||||
}
|
||||
else {
|
||||
$link = $sub_item->custom_link;
|
||||
}
|
||||
|
||||
if ($sub_item->custom_title == '') {
|
||||
$title = htmlentities(get_the_title($sub_item->post_id));
|
||||
}
|
||||
else {
|
||||
$title = htmlentities($sub_item->custom_title);
|
||||
}
|
||||
|
||||
if ($sub_item->custom_description == '') {
|
||||
$description = get_post_meta($sub_item->post_id, 'page-description', true);
|
||||
}
|
||||
else {
|
||||
$description = $sub_item->custom_description;
|
||||
}
|
||||
$target = '';
|
||||
|
||||
}
|
||||
//Custom Menu Item
|
||||
else
|
||||
{
|
||||
$link = $sub_item->custom_link;
|
||||
$title = htmlentities($sub_item->custom_title);
|
||||
$parent_id = $sub_item->parent_id;
|
||||
$post_id = $sub_item->post_id;
|
||||
$description = $sub_item->custom_description;
|
||||
$target = 'target="_blank"';
|
||||
}
|
||||
if ($queried_id == $sub_item->post_id) {
|
||||
$li_class = 'class="current_page_item"';
|
||||
}
|
||||
else {
|
||||
$li_class = '';
|
||||
}
|
||||
|
||||
//SET anchor title
|
||||
if (isset($sub_item->custom_anchor_title)) {
|
||||
$anchor_title = htmlentities($sub_item->custom_anchor_title);
|
||||
}
|
||||
else {
|
||||
$anchor_title = $title;
|
||||
}
|
||||
|
||||
if (isset($sub_item->new_window)) {
|
||||
if ($sub_item->new_window > 0) {
|
||||
$target = 'target="_blank"';
|
||||
}
|
||||
}
|
||||
|
||||
//List Items
|
||||
?><li id="menu-<?php echo $counter; ?>" value="<?php echo $counter; ?>" <?php echo $li_class; ?>><?php
|
||||
//FRONTEND
|
||||
if ($output_type == "frontend")
|
||||
{
|
||||
?><a title="<?php echo $anchor_title; ?>" href="<?php echo $link; ?>" <?php echo $target; ?>><?php echo $title; ?></a><?php
|
||||
}
|
||||
//BACKEND
|
||||
elseif ($output_type == "backend")
|
||||
{
|
||||
?>
|
||||
<dl>
|
||||
<dt>
|
||||
<span class="title"><?php echo $title; ?></span>
|
||||
<span class="controls">
|
||||
<span class="type"><?php echo $sub_item->link_type; ?></span>
|
||||
<a id="edit<?php echo $counter; ?>" onclick="edititem(<?php echo $counter; ?>)" value="<?php echo $counter; ?>"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-edit.png" /></a>
|
||||
<a id="remove<?php echo $counter; ?>" onclick="removeitem(<?php echo $counter; ?>)" value="<?php echo $counter; ?>"><img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-close.png" /></a>
|
||||
<a id="view<?php echo $counter; ?>" target="_blank" href="<?php echo $link; ?>"><img alt="View Page" title="View Page" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-viewpage.png" /></a>
|
||||
</span>
|
||||
</dt>
|
||||
</dl>
|
||||
<a class="hide" href="<?php echo $link; ?>"><?php echo $title; ?></a>
|
||||
<input type="hidden" name="dbid<?php echo $counter; ?>" id="dbid<?php echo $counter; ?>" value="<?php echo $sub_item->id; ?>" />
|
||||
<input type="hidden" name="postmenu<?php echo $counter; ?>" id="postmenu<?php echo $counter; ?>" value="<?php echo $post_id; ?>" />
|
||||
<input type="hidden" name="parent<?php echo $counter; ?>" id="parent<?php echo $counter; ?>" value="<?php echo $parent_id; ?>" />
|
||||
<input type="hidden" name="title<?php echo $counter; ?>" id="title<?php echo $counter; ?>" value="<?php echo $title; ?>" />
|
||||
<input type="hidden" name="linkurl<?php echo $counter; ?>" id="linkurl<?php echo $counter; ?>" value="<?php echo $link; ?>" />
|
||||
<input type="hidden" name="description<?php echo $counter; ?>" id="description<?php echo $counter; ?>" value="<?php echo $description; ?>" />
|
||||
<input type="hidden" name="icon<?php echo $counter; ?>" id="icon<?php echo $counter; ?>" value="0" />
|
||||
<input type="hidden" name="position<?php echo $counter; ?>" id="position<?php echo $counter; ?>" value="<?php echo $counter; ?>" />
|
||||
<input type="hidden" name="linktype<?php echo $counter; ?>" id="linktype<?php echo $counter; ?>" value="<?php echo $sub_item->link_type; ?>" />
|
||||
<input type="hidden" name="anchortitle<?php echo $counter; ?>" id="anchortitle<?php echo $counter; ?>" value="<?php echo $anchor_title; ?>" />
|
||||
<input type="hidden" name="newwindow<?php echo $counter; ?>" id="newwindow<?php echo $counter; ?>" value="<?php echo $sub_item->new_window; ?>" />
|
||||
<?php
|
||||
}
|
||||
|
||||
//Do recursion
|
||||
wp_custom_navigation_sub_items($sub_item->id,$sub_item->link_type,$table_name,$output_type,$menu_id);
|
||||
?></li>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?></ul>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
return $parent_id;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Outputs All Pages and Sub Items
|
||||
function wp_custom_nav_get_pages($counter,$type) {
|
||||
|
||||
$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 );
|
||||
|
||||
//GET all pages
|
||||
$pages_array = get_pages($pages_args);
|
||||
|
||||
$intCounter = $counter;
|
||||
$parentli = $intCounter;
|
||||
|
||||
if ($pages_array)
|
||||
{
|
||||
//DISPLAY Loop
|
||||
foreach ($pages_array as $post)
|
||||
{
|
||||
|
||||
if ($post->post_parent == 0)
|
||||
{
|
||||
//Custom Menu
|
||||
if ($type == 'menu')
|
||||
{
|
||||
$description = get_post_meta($post->ID, 'page-description', true);
|
||||
?>
|
||||
|
||||
<li id="menu-<?php echo $intCounter; ?>" value="<?php echo $intCounter; ?>">
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<span class="title"><?php echo $post->post_title; ?></span>
|
||||
<span class="controls">
|
||||
<span class="type">page</span>
|
||||
<a id="edit<?php echo $intCounter; ?>" onclick="edititem(<?php echo $intCounter; ?>)" value="<?php echo $intCounter; ?>"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-edit.png" /></a>
|
||||
<a id="remove<?php echo $intCounter; ?>" onclick="removeitem(<?php echo $intCounter; ?>)" value="<?php echo $intCounter; ?>">
|
||||
<img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-close.png" />
|
||||
</a>
|
||||
<a target="_blank" href="<?php echo get_permalink($post->ID); ?>">
|
||||
<img alt="View Page" title="View Page" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-viewpage.png" />
|
||||
</a>
|
||||
</span>
|
||||
|
||||
</dt>
|
||||
</dl>
|
||||
<a class="hide" href="<?php echo get_permalink($post->ID); ?>"><span class="title"><?php echo $post->post_title; ?></span>
|
||||
</a>
|
||||
<input type="hidden" name="postmenu<?php echo $intCounter; ?>" id="postmenu<?php echo $intCounter; ?>" value="<?php echo $post->ID; ?>" />
|
||||
<input type="hidden" name="parent<?php echo $intCounter; ?>" id="parent<?php echo $intCounter; ?>" value="0" />
|
||||
<input type="hidden" name="title<?php echo $intCounter; ?>" id="title<?php echo $intCounter; ?>" value="<?php echo htmlentities($post->post_title); ?>" />
|
||||
<input type="hidden" name="linkurl<?php echo $intCounter; ?>" id="linkurl<?php echo $intCounter; ?>" value="<?php echo get_permalink($post->ID); ?>" />
|
||||
<input type="hidden" name="description<?php echo $intCounter; ?>" id="description<?php echo $intCounter; ?>" value="<?php echo $description; ?>" />
|
||||
<input type="hidden" name="icon<?php echo $intCounter; ?>" id="icon<?php echo $intCounter; ?>" value="0" />
|
||||
<input type="hidden" name="position<?php echo $intCounter; ?>" id="position<?php echo $intCounter; ?>" value="<?php echo $intCounter; ?>" />
|
||||
<input type="hidden" name="linktype<?php echo $intCounter; ?>" id="linktype<?php echo $intCounter; ?>" value="page" />
|
||||
<input type="hidden" name="anchortitle<?php echo $intCounter; ?>" id="anchortitle<?php echo $intCounter; ?>" value="<?php echo htmlentities($post->post_title); ?>" />
|
||||
<input type="hidden" name="newwindow<?php echo $intCounter; ?>" id="newwindow<?php echo $intCounter; ?>" value="0" />
|
||||
|
||||
<?php $parentli = $post->ID; ?>
|
||||
<?php $intCounter++; ?>
|
||||
<?php
|
||||
|
||||
//Recursive function
|
||||
$intCounter = wp_custom_navigation_default_sub_items($post->ID, $intCounter, $parentli, 'pages', 'menu');
|
||||
|
||||
?>
|
||||
|
||||
</li>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
//Sidebar Menu
|
||||
elseif ($type == 'default')
|
||||
{
|
||||
?>
|
||||
|
||||
<li>
|
||||
<dl>
|
||||
<dt>
|
||||
<?php
|
||||
$post_text = htmlentities($post->post_title);
|
||||
$post_url = get_permalink($post->ID);
|
||||
$post_id = $post->ID;
|
||||
$post_parent_id = $post->post_parent;
|
||||
|
||||
$description = htmlentities(get_post_meta($post_id, 'page-description', true));
|
||||
|
||||
?>
|
||||
<?php $templatedir = get_bloginfo('url'); ?>
|
||||
|
||||
<span class="title"><?php echo $post->post_title; ?></span> <a onclick="appendToList('<?php echo $templatedir; ?>','Page','<?php echo $post_text; ?>','<?php echo $post_url; ?>','<?php echo $post_id; ?>','<?php echo $post_parent_id ?>','<?php echo $description; ?>')" name="<?php echo $post_text; ?>" value="<?php echo get_permalink($post->ID); ?>"><img alt="Add to Custom Menu" title="Add to Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-add.png" /></a></dt>
|
||||
</dl>
|
||||
<?php $parentli = $post->ID; ?>
|
||||
<?php $intCounter++; ?>
|
||||
<?php
|
||||
|
||||
//Recursive function
|
||||
$intCounter = wp_custom_navigation_default_sub_items($post_id, $intCounter, $parentli, 'pages', 'default');
|
||||
|
||||
?>
|
||||
|
||||
</li>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'Not Found';
|
||||
}
|
||||
|
||||
return $intCounter;
|
||||
}
|
||||
|
||||
//Outputs All Categories and Sub Items
|
||||
function wp_custom_nav_get_categories($counter, $type) {
|
||||
|
||||
$category_args = array(
|
||||
'type' => 'post',
|
||||
'child_of' => 0,
|
||||
'orderby' => 'name',
|
||||
'order' => 'ASC',
|
||||
'hide_empty' => false,
|
||||
'include_last_update_time' => false,
|
||||
'hierarchical' => 1,
|
||||
'exclude' => '',
|
||||
'include' => '',
|
||||
'number' => '',
|
||||
'pad_counts' => false );
|
||||
|
||||
|
||||
|
||||
$intCounter = $counter;
|
||||
|
||||
//GET all categories
|
||||
$categories_array = get_categories($category_args);
|
||||
|
||||
if ($categories_array)
|
||||
{
|
||||
//DISPLAY Loop
|
||||
foreach ($categories_array as $cat_item)
|
||||
{
|
||||
|
||||
if ($cat_item->parent == 0)
|
||||
{
|
||||
//Custom Menu
|
||||
if ($type == 'menu')
|
||||
{
|
||||
?>
|
||||
|
||||
<li id="menu-<?php echo $intCounter; ?>" value="<?php echo $intCounter; ?>">
|
||||
<dl>
|
||||
<dt>
|
||||
<span class="title"><?php echo $cat_item->cat_name; ?></span>
|
||||
<span class="controls">
|
||||
<span class="type">category</span>
|
||||
<a id="edit<?php echo $intCounter; ?>" onclick="edititem(<?php echo $intCounter; ?>)" value="<?php echo $intCounter; ?>"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-edit.png" /></a>
|
||||
<a id="remove<?php echo $intCounter; ?>" onclick="removeitem(<?php echo $intCounter; ?>)" value="<?php echo $intCounter; ?>">
|
||||
<img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-close.png" />
|
||||
</a>
|
||||
<a target="_blank" href="<?php echo get_category_link($cat_item->cat_ID); ?>">
|
||||
<img alt="View Page" title="View Page" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-viewpage.png" />
|
||||
</a>
|
||||
</span>
|
||||
|
||||
</dt>
|
||||
</dl>
|
||||
<a class="hide" href="<?php echo get_category_link($cat_item->cat_ID); ?>"><span class="title"><?php echo $cat_item->cat_name; ?></span>
|
||||
<?php
|
||||
$use_cats_raw = get_option('wp_settings_custom_nav_descriptions');
|
||||
$use_cats = strtolower($use_cats_raw);
|
||||
if ($use_cats == 'yes') { ?>
|
||||
<br/> <span><?php echo $cat_item->category_description; ?></span>
|
||||
<?php } ?>
|
||||
</a>
|
||||
<input type="hidden" name="postmenu<?php echo $intCounter; ?>" id="postmenu<?php echo $intCounter; ?>" value="<?php echo $cat_item->cat_ID; ?>" />
|
||||
<input type="hidden" name="parent<?php echo $intCounter; ?>" id="parent<?php echo $intCounter; ?>" value="0" />
|
||||
<input type="hidden" name="title<?php echo $intCounter; ?>" id="title<?php echo $intCounter; ?>" value="<?php echo htmlentities($cat_item->cat_name); ?>" />
|
||||
<input type="hidden" name="linkurl<?php echo $intCounter; ?>" id="linkurl<?php echo $intCounter; ?>" value="<?php echo get_category_link($cat_item->cat_ID); ?>" />
|
||||
<input type="hidden" name="description<?php echo $intCounter; ?>" id="description<?php echo $intCounter; ?>" value="<?php echo htmlentities($cat_item->category_description); ?>" />
|
||||
<input type="hidden" name="icon<?php echo $intCounter; ?>" id="icon<?php echo $intCounter; ?>" value="0" />
|
||||
<input type="hidden" name="position<?php echo $intCounter; ?>" id="position<?php echo $intCounter; ?>" value="<?php echo $intCounter; ?>" />
|
||||
<input type="hidden" name="linktype<?php echo $intCounter; ?>" id="linktype<?php echo $intCounter; ?>" value="category" />
|
||||
<input type="hidden" name="anchortitle<?php echo $intCounter; ?>" id="anchortitle<?php echo $intCounter; ?>" value="<?php echo htmlentities($cat_item->cat_name); ?>" />
|
||||
<input type="hidden" name="newwindow<?php echo $intCounter; ?>" id="newwindow<?php echo $intCounter; ?>" value="0" />
|
||||
|
||||
<?php $parentli = $cat_item->cat_ID; ?>
|
||||
<?php $intCounter++; ?>
|
||||
<?php
|
||||
|
||||
//Recursive function
|
||||
$intCounter = wp_custom_navigation_default_sub_items($cat_item->cat_ID, $intCounter, $parentli, 'categories','menu');
|
||||
|
||||
?>
|
||||
|
||||
</li>
|
||||
|
||||
<?php
|
||||
}
|
||||
//Sidebar Menu
|
||||
elseif ($type == 'default')
|
||||
{
|
||||
?>
|
||||
<li>
|
||||
<dl>
|
||||
<dt>
|
||||
<?php
|
||||
$post_text = htmlentities($cat_item->cat_name);
|
||||
$post_url = get_category_link($cat_item->cat_ID);
|
||||
$post_id = $cat_item->cat_ID;
|
||||
$post_parent_id = $cat_item->parent;
|
||||
$description = htmlentities(strip_tags($cat_item->description));
|
||||
?>
|
||||
<?php $templatedir = get_bloginfo('url'); ?>
|
||||
<span class="title"><?php echo $cat_item->cat_name; ?></span> <a onclick="appendToList('<?php echo $templatedir; ?>','Category','<?php echo $post_text; ?>','<?php echo $post_url; ?>','<?php echo $post_id; ?>','<?php echo $post_parent_id ?>','<?php echo $description; ?>')" name="<?php echo $post_text; ?>" value="<?php echo $post_url; ?>"><img alt="Add to Custom Menu" title="Add to Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-add.png" /></a> </dt>
|
||||
</dl>
|
||||
<?php $parentli = $cat_item->cat_ID; ?>
|
||||
<?php $intCounter++; ?>
|
||||
<?php
|
||||
//Recursive function
|
||||
$intCounter = wp_custom_navigation_default_sub_items($cat_item->cat_ID, $intCounter, $parentli, 'categories','default');
|
||||
?>
|
||||
|
||||
</li>
|
||||
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'Not Found';
|
||||
}
|
||||
|
||||
return $intCounter;
|
||||
}
|
||||
|
||||
//RECURSIVE Sub Menu Items of default categories and pages
|
||||
function wp_custom_navigation_default_sub_items($childof, $intCounter, $parentli, $type, $output_type) {
|
||||
|
||||
$counter = $intCounter;
|
||||
|
||||
//Custom Menu
|
||||
if ($output_type == 'menu')
|
||||
{
|
||||
$sub_args = array(
|
||||
'child_of' => $childof,
|
||||
'hide_empty' => false,
|
||||
'parent' => $childof);
|
||||
}
|
||||
//Sidebar Menu
|
||||
elseif ($output_type == 'default')
|
||||
{
|
||||
$sub_args = array(
|
||||
'child_of' => $childof,
|
||||
'hide_empty' => false,
|
||||
'parent' => $childof);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Get Sub Category Items
|
||||
if ($type == 'categories')
|
||||
{
|
||||
$sub_array = get_categories($sub_args);
|
||||
}
|
||||
//Get Sub Page Items
|
||||
elseif ($type == 'pages')
|
||||
{
|
||||
$sub_array = get_pages($sub_args);
|
||||
}
|
||||
|
||||
|
||||
if ($sub_array)
|
||||
{
|
||||
?>
|
||||
|
||||
<ul id="sub-custom-nav-<?php echo $type ?>">
|
||||
|
||||
<?php
|
||||
//DISPLAY Loop
|
||||
foreach ($sub_array as $sub_item)
|
||||
{
|
||||
//Prepare Menu Data
|
||||
//Category Menu Item
|
||||
if ($type == 'categories')
|
||||
{
|
||||
$link = get_category_link($sub_item->cat_ID);
|
||||
$title = htmlentities($sub_item->cat_name);
|
||||
$parent_id = $sub_item->cat_ID;
|
||||
$itemid = $sub_item->cat_ID;
|
||||
$linktype = 'category';
|
||||
$appendtype = 'Category';
|
||||
$description = htmlentities(strip_tags($sub_item->description));
|
||||
}
|
||||
//Page Menu Item
|
||||
elseif ($type == 'pages')
|
||||
{
|
||||
$link = get_permalink($sub_item->ID);
|
||||
$title = htmlentities($sub_item->post_title);
|
||||
$parent_id = $sub_item->ID;
|
||||
$linktype = 'page';
|
||||
$itemid = $sub_item->ID;
|
||||
$appendtype = 'Page';
|
||||
$description = htmlentities(get_post_meta($itemid, 'page-description', true));
|
||||
}
|
||||
//Custom Menu Item
|
||||
else
|
||||
{
|
||||
$title = '';
|
||||
$linktype = 'custom';
|
||||
$appendtype= 'Custom';
|
||||
}
|
||||
|
||||
//Custom Menu
|
||||
if ($output_type == 'menu')
|
||||
{
|
||||
?>
|
||||
<li id="menu-<?php echo $counter; ?>" value="<?php echo $counter; ?>">
|
||||
<dl>
|
||||
<dt>
|
||||
<span class="title"><?php echo $title; ?></span>
|
||||
<span class="controls">
|
||||
<span class="type"><?php echo $linktype; ?></span>
|
||||
<a id="edit<?php echo $counter; ?>" onclick="edititem(<?php echo $counter; ?>)" value="<?php echo $counter; ?>"><img class="edit" alt="Edit Menu Item" title="Edit Menu Item" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-edit.png" /></a>
|
||||
<a id="remove<?php echo $counter; ?>" onclick="removeitem(<?php echo $counter; ?>)" value="<?php echo $counter; ?>">
|
||||
<img class="remove" alt="Remove from Custom Menu" title="Remove from Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-close.png" />
|
||||
</a>
|
||||
<a target="_blank" href="<?php echo $link; ?>">
|
||||
<img alt="View Page" title="View Page" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-viewpage.png" />
|
||||
</a>
|
||||
</span>
|
||||
|
||||
</dt>
|
||||
</dl>
|
||||
<a class="hide" href="<?php echo $link; ?>"><?php echo $title; ?></a>
|
||||
<input type="hidden" name="dbid<?php echo $counter; ?>" id="dbid<?php echo $counter; ?>" value="<?php echo $sub_item->id; ?>" />
|
||||
<input type="hidden" name="postmenu<?php echo $counter; ?>" id="postmenu<?php echo $counter; ?>" value="<?php echo $parent_id; ?>" />
|
||||
<input type="hidden" name="parent<?php echo $counter; ?>" id="parent<?php echo $counter; ?>" value="<?php echo $parentli; ?>" />
|
||||
<input type="hidden" name="title<?php echo $counter; ?>" id="title<?php echo $counter; ?>" value="<?php echo $title; ?>" />
|
||||
<input type="hidden" name="linkurl<?php echo $counter; ?>" id="linkurl<?php echo $counter; ?>" value="<?php echo $link; ?>" />
|
||||
<input type="hidden" name="description<?php echo $counter; ?>" id="description<?php echo $counter; ?>" value="<?php echo $description; ?>" />
|
||||
<input type="hidden" name="icon<?php echo $counter; ?>" id="icon<?php echo $counter; ?>" value="0" />
|
||||
<input type="hidden" name="position<?php echo $counter; ?>" id="position<?php echo $counter; ?>" value="<?php echo $counter; ?>" />
|
||||
<input type="hidden" name="linktype<?php echo $counter; ?>" id="linktype<?php echo $counter; ?>" value="<?php echo $linktype; ?>" />
|
||||
<input type="hidden" name="anchortitle<?php echo $counter; ?>" id="anchortitle<?php echo $counter; ?>" value="<?php echo $title; ?>" />
|
||||
<input type="hidden" name="newwindow<?php echo $counter; ?>" id="newwindow<?php echo $counter; ?>" value="0" />
|
||||
|
||||
<?php $counter++; ?>
|
||||
<?php
|
||||
|
||||
//Do recursion
|
||||
$counter = wp_custom_navigation_default_sub_items($parent_id, $counter, $parent_id, $type, 'menu');
|
||||
|
||||
?>
|
||||
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
//Sidebar Menu
|
||||
elseif ($output_type == 'default')
|
||||
{
|
||||
|
||||
?>
|
||||
<li>
|
||||
<dl>
|
||||
<dt>
|
||||
|
||||
<?php $templatedir = get_bloginfo('url'); ?>
|
||||
<span class="title"><?php echo $title; ?></span> <a onclick="appendToList('<?php echo $templatedir; ?>','<?php echo $appendtype; ?>','<?php echo $title; ?>','<?php echo $link; ?>','<?php echo $itemid; ?>','<?php echo $parent_id ?>','<?php echo $description; ?>')" name="<?php echo $title; ?>" value="<?php echo $link; ?>"><img alt="Add to Custom Menu" title="Add to Custom Menu" src="<?php echo get_bloginfo('url'); ?>/wp-admin/images/ico-add.png" /></a> </dt>
|
||||
</dl>
|
||||
<?php
|
||||
|
||||
//Do recursion
|
||||
$counter = wp_custom_navigation_default_sub_items($itemid, $counter, $parent_id, $type, 'default');
|
||||
|
||||
?>
|
||||
</li>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
</ul>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
return $counter;
|
||||
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/* Recursive get children */
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
function get_children_menu_elements($childof, $intCounter, $parentli, $type, $menu_id, $table_name) {
|
||||
|
||||
$counter = $intCounter;
|
||||
|
||||
global $wpdb;
|
||||
|
||||
|
||||
|
||||
//Get Sub Category Items
|
||||
if ($type == 'categories')
|
||||
{
|
||||
$sub_args = array(
|
||||
'child_of' => $childof,
|
||||
'hide_empty' => false,
|
||||
'parent' => $childof);
|
||||
$sub_array = get_categories($sub_args);
|
||||
}
|
||||
//Get Sub Page Items
|
||||
elseif ($type == 'pages')
|
||||
{
|
||||
$sub_args = array(
|
||||
'child_of' => $childof,
|
||||
'parent' => $childof);
|
||||
|
||||
$sub_array = get_pages($sub_args);
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
}
|
||||
|
||||
if ($sub_array)
|
||||
{
|
||||
//DISPLAY Loop
|
||||
foreach ($sub_array as $sub_item)
|
||||
{
|
||||
if (isset($sub_item->parent)) {
|
||||
$sub_item_parent = $sub_item->parent;
|
||||
}
|
||||
elseif (isset($sub_item->post_parent)) {
|
||||
$sub_item_parent = $sub_item->post_parent;
|
||||
}
|
||||
else {
|
||||
}
|
||||
//Is child
|
||||
if ($sub_item_parent == $childof)
|
||||
{
|
||||
//Prepare Menu Data
|
||||
//Category Menu Item
|
||||
if ($type == 'categories')
|
||||
{
|
||||
$link = get_category_link($sub_item->cat_ID);
|
||||
$title = htmlentities($sub_item->cat_name);
|
||||
$parent_id = $sub_item->category_parent;
|
||||
$itemid = $sub_item->cat_ID;
|
||||
$linktype = 'category';
|
||||
$appendtype= 'Category';
|
||||
}
|
||||
//Page Menu Item
|
||||
elseif ($type == 'pages')
|
||||
{
|
||||
$link = get_permalink($sub_item->ID);
|
||||
$title = htmlentities($sub_item->post_title);
|
||||
$parent_id = $sub_item->post_parent;
|
||||
$linktype = 'page';
|
||||
$itemid = $sub_item->ID;
|
||||
$appendtype= 'Page';
|
||||
}
|
||||
//Custom Menu Item
|
||||
else
|
||||
{
|
||||
$title = '';
|
||||
$linktype = 'custom';
|
||||
$appendtype= 'Custom';
|
||||
}
|
||||
|
||||
//CHECK for existing parent records
|
||||
//echo $parent_id;
|
||||
$wp_result = $wpdb->get_results("SELECT id FROM ".$table_name." WHERE post_id='".$parent_id."' AND link_type='".$linktype."' AND menu_id='".$menu_id."'");
|
||||
if ($wp_result > 0 && isset($wp_result[0]->id)) {
|
||||
$parent_id = $wp_result[0]->id;
|
||||
}
|
||||
else {
|
||||
//$parent_id = 0;
|
||||
}
|
||||
|
||||
//INSERT item
|
||||
$insert = "INSERT INTO ".$table_name." (position,post_id,parent_id,custom_title,custom_link,custom_description,menu_icon,link_type,menu_id,custom_anchor_title) "."VALUES ('".$counter."','".$itemid."','".$parent_id."','".$title."','".$link."','','','".$linktype."','".$menu_id."','".$title."')";
|
||||
$results = $wpdb->query( $insert );
|
||||
|
||||
$counter++;
|
||||
$counter = get_children_menu_elements($itemid, $counter, $parent_id, $type, $menu_id, $table_name);
|
||||
}
|
||||
//Do nothing
|
||||
else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return $counter;
|
||||
}
|
||||
|
||||
|
||||
?>
|
@ -1000,6 +1000,379 @@ class WP_Widget_Tag_Cloud extends WP_Widget {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom Navigation widget class
|
||||
*
|
||||
* @since 3.0.0
|
||||
*/
|
||||
class WP_CustomNavWidget extends WP_Widget {
|
||||
|
||||
function WP_CustomNavWidget() {
|
||||
$widget_ops = array('description' => 'Use this widget to add one of your Custom Navigation Menus as a widget.' );
|
||||
parent::WP_Widget(false, __('Custom Navigation Menu'),$widget_ops);
|
||||
}
|
||||
|
||||
function widget($args, $instance) {
|
||||
$navmenu = $instance['navmenu'];
|
||||
$navtitle = $instance['navtitle'];
|
||||
$navdeveloper = strtolower($instance['navdeveloper']);
|
||||
$navdiv = strtolower($instance['navdiv']);
|
||||
$navul = strtolower($instance['navul']);
|
||||
$navdivid = $instance['navdivid'];
|
||||
$navdivclass = $instance['navdivclass'];
|
||||
$navulid = $instance['navulid'];
|
||||
$navulclass = $instance['navulclass'];
|
||||
|
||||
//Override for menu descriptions
|
||||
$advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options');
|
||||
if ($advanced_option_descriptions == 'no')
|
||||
{
|
||||
$navwidgetdescription = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
$navwidgetdescription = $instance['navwidgetdescription'];
|
||||
}
|
||||
$menuexists = false;
|
||||
|
||||
global $wpdb;
|
||||
|
||||
//GET menu name
|
||||
if ($navmenu > 0)
|
||||
{
|
||||
$table_name_menus = $wpdb->prefix . "custom_nav_menus";
|
||||
$wp_result = $wpdb->get_results("SELECT menu_name FROM ".$table_name_menus." WHERE id='".$navmenu."'");
|
||||
$wp_custom_nav_menu_name = $wp_result[0]->menu_name;
|
||||
$menuexists = true;
|
||||
}
|
||||
//Do nothing
|
||||
else
|
||||
{
|
||||
$menuexists = false;
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
//DEVELOPER settings enabled
|
||||
if ($navdeveloper == 'yes')
|
||||
{
|
||||
//DISPLAY Custom DIV
|
||||
if ($navdiv == 'yes')
|
||||
{
|
||||
?>
|
||||
<div id="<?php echo $navdivid; ?>" class="<?php echo $navdivclass; ?>">
|
||||
<?php
|
||||
}
|
||||
//Do NOT display DIV
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//DISPLAY default DIV
|
||||
else
|
||||
{
|
||||
?>
|
||||
<div class="widget">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<h3><?php echo $navtitle; ?></h3>
|
||||
<?php
|
||||
|
||||
if ($menuexists)
|
||||
{
|
||||
?>
|
||||
<?php
|
||||
|
||||
//DEVELOPER settings enabled
|
||||
if ($navdeveloper == 'yes')
|
||||
{
|
||||
//DISPLAY Custom UL
|
||||
if ($navul == 'yes')
|
||||
{
|
||||
?>
|
||||
<ul id="<?php echo $navulid; ?>" class="<?php echo $navulclass; ?>">
|
||||
<?php
|
||||
}
|
||||
//Do NOT display UL
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//DISPLAY default UL
|
||||
else
|
||||
{
|
||||
?>
|
||||
<ul class="custom-nav">
|
||||
<?php
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<?php
|
||||
//DISPLAY custom navigation menu
|
||||
if (get_option('wp_custom_nav_menu') == 'true') {
|
||||
custom_nav('name='.$wp_custom_nav_menu_name.'&desc='.$navwidgetdescription);
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
|
||||
//DEVELOPER settings enabled
|
||||
if ($navdeveloper == 'yes')
|
||||
{
|
||||
//DISPLAY Custom UL
|
||||
if ($navul == 'yes')
|
||||
{
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
||||
//Do NOT display UL
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//DISPLAY default UL
|
||||
else
|
||||
{
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "You have not setup the custom navigation widget correctly, please check your settings in the backend.";
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
//DEVELOPER settings enabled
|
||||
if ($navdeveloper == 'yes')
|
||||
{
|
||||
//DISPLAY Custom DIV
|
||||
if ($navdiv == 'yes')
|
||||
{
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
//Do NOT display DIV
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//DISPLAY default DIV
|
||||
else
|
||||
{
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?><!-- /#nav-container -->
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
function update($new_instance, $old_instance) {
|
||||
return $new_instance;
|
||||
}
|
||||
|
||||
function form($instance) {
|
||||
$navmenu = esc_attr($instance['navmenu']);
|
||||
$navtitle = esc_attr($instance['navtitle']);
|
||||
$navdeveloper = esc_attr($instance['navdeveloper']);
|
||||
$navdiv = esc_attr($instance['navdiv']);
|
||||
$navul = esc_attr($instance['navul']);
|
||||
$navdivid = esc_attr($instance['navdivid']);
|
||||
$navdivclass = esc_attr($instance['navdivclass']);
|
||||
$navulid = esc_attr($instance['navulid']);
|
||||
$navulclass = esc_attr($instance['navulclass']);
|
||||
$navwidgetdescription = esc_attr($instance['navwidgetdescription']);
|
||||
|
||||
global $wpdb;
|
||||
|
||||
//GET Menu Items for SELECT OPTIONS
|
||||
$table_name_custom_menus = $wpdb->prefix . "custom_nav_menus";
|
||||
$custom_menu_records = $wpdb->get_results("SELECT id,menu_name FROM ".$table_name_custom_menus);
|
||||
|
||||
//CHECK if menus exist
|
||||
if ($custom_menu_records > 0)
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id('navmenu'); ?>"><?php _e('Select Menu:'); ?></label>
|
||||
|
||||
<select id="<?php echo $this->get_field_id('navmenu'); ?>" name="<?php echo $this->get_field_name('navmenu'); ?>">
|
||||
<?php
|
||||
|
||||
//DISPLAY SELECT OPTIONS
|
||||
foreach ($custom_menu_records as $custom_menu_record)
|
||||
{
|
||||
if ($navmenu == $custom_menu_record->id) {
|
||||
$selected_option = 'selected="selected"';
|
||||
}
|
||||
else {
|
||||
$selected_option = '';
|
||||
}
|
||||
?>
|
||||
<option value="<?php echo $custom_menu_record->id; ?>" <?php echo $selected_option; ?>><?php echo $custom_menu_record->menu_name; ?></option>
|
||||
<?php
|
||||
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navtitle'); ?>"><?php _e('Title:'); ?></label>
|
||||
<input type="text" name="<?php echo $this->get_field_name('navtitle'); ?>" value="<?php echo $navtitle; ?>" class="widefat" id="<?php echo $this->get_field_id('navtitle'); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
$checked = strtolower($navdeveloper);
|
||||
?>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navdeveloper'); ?>"><?php _e('Advanced Options:'); ?></label><br />
|
||||
<span class="checkboxes">
|
||||
<label>Yes</label><input type="radio" id="<?php echo $this->get_field_name('navdeveloper'); ?>" name="<?php echo $this->get_field_name('navdeveloper'); ?>" value="yes" <?php if ($checked=='yes') { echo 'checked="checked"'; } ?> />
|
||||
<label>No</label><input type="radio" id="<?php echo $this->get_field_name('navdeveloper'); ?>" name="<?php echo $this->get_field_name('navdeveloper'); ?>" value="no" <?php if ($checked=='yes') { } else { echo 'checked="checked"'; } ?> />
|
||||
</span><!-- /.checkboxes -->
|
||||
|
||||
</p>
|
||||
|
||||
<?php
|
||||
|
||||
//DEVELOPER settings
|
||||
if ($checked == 'yes')
|
||||
{
|
||||
?>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
$checked = strtolower($navdiv);
|
||||
?>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navdiv'); ?>"><?php _e('Wrap in container DIV:'); ?></label><br />
|
||||
<span class="checkboxes">
|
||||
<label>Yes</label><input type="radio" id="<?php echo $this->get_field_name('navdiv'); ?>" name="<?php echo $this->get_field_name('navdiv'); ?>" value="yes" <?php if ($checked=='yes') { echo 'checked="checked"'; } ?> />
|
||||
<label>No</label><input type="radio" id="<?php echo $this->get_field_name('navdiv'); ?>" name="<?php echo $this->get_field_name('navdiv'); ?>" value="no" <?php if ($checked=='yes') { } else { echo 'checked="checked"'; } ?> />
|
||||
</span><!-- /.checkboxes -->
|
||||
|
||||
</p>
|
||||
|
||||
<?php
|
||||
|
||||
if ($checked == 'yes')
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<p>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navdivid'); ?>"><?php _e('DIV id:'); ?></label>
|
||||
<input type="text" name="<?php echo $this->get_field_name('navdivid'); ?>" value="<?php echo $navdivid; ?>" class="widefat" id="<?php echo $this->get_field_id('navdivid'); ?>" />
|
||||
</p>
|
||||
<p>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navdivclass'); ?>"><?php _e('DIV class:'); ?></label>
|
||||
<input type="text" name="<?php echo $this->get_field_name('navdivclass'); ?>" value="<?php echo $navdivclass; ?>" class="widefat" id="<?php echo $this->get_field_id('navdivclass'); ?>" />
|
||||
</p>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
$checked = strtolower($navul);
|
||||
?>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navul'); ?>"><?php _e('Wrap in container UL:'); ?></label><br />
|
||||
<span class="checkboxes">
|
||||
<label>Yes</label><input type="radio" id="<?php echo $this->get_field_name('navul'); ?>" name="<?php echo $this->get_field_name('navul'); ?>" value="yes" <?php if ($checked=='yes') { echo 'checked="checked"'; } ?> />
|
||||
<label>No</label><input type="radio" id="<?php echo $this->get_field_name('navul'); ?>" name="<?php echo $this->get_field_name('navul'); ?>" value="no" <?php if ($checked=='yes') { } else { echo 'checked="checked"'; } ?> />
|
||||
</span><!-- /.checkboxes -->
|
||||
|
||||
</p>
|
||||
|
||||
<?php
|
||||
|
||||
if ($checked == 'yes')
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<p>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navulid'); ?>"><?php _e('UL id:'); ?></label>
|
||||
<input type="text" name="<?php echo $this->get_field_name('navulid'); ?>" value="<?php echo $navulid; ?>" class="widefat" id="<?php echo $this->get_field_id('navulid'); ?>" />
|
||||
</p>
|
||||
<p>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navulclass'); ?>"><?php _e('UL class:'); ?></label>
|
||||
<input type="text" name="<?php echo $this->get_field_name('navulclass'); ?>" value="<?php echo $navulclass; ?>" class="widefat" id="<?php echo $this->get_field_id('navulclass'); ?>" />
|
||||
</p>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<?php $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); ?>
|
||||
<p <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>>
|
||||
|
||||
<?php
|
||||
$checked = strtolower($navwidgetdescription);
|
||||
?>
|
||||
|
||||
<label for="<?php echo $this->get_field_id('navwidgetdescription'); ?>"><?php _e('Show Top Level Descriptions:'); ?></label><br />
|
||||
<span class="checkboxes">
|
||||
<label>Yes</label><input type="radio" id="<?php echo $this->get_field_name('navwidgetdescription'); ?>" name="<?php echo $this->get_field_name('navwidgetdescription'); ?>" value="1" <?php if ($checked=='1') { echo 'checked="checked"'; } ?> />
|
||||
<label>No</label><input type="radio" id="<?php echo $this->get_field_name('navwidgetdescription'); ?>" name="<?php echo $this->get_field_name('navwidgetdescription'); ?>" value="2" <?php if ($checked=='1') { } else { echo 'checked="checked"'; } ?> />
|
||||
</span><!-- /.checkboxes -->
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
//Do nothing
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//Error message for menus not existing
|
||||
else
|
||||
{
|
||||
?>
|
||||
<p>
|
||||
<label><?php _e('The Custom Navigation has not been configured correctly. Please check your Custom Navigation settings before adding this widget.'); ?></label>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register all of the default WordPress widgets on startup.
|
||||
*
|
||||
@ -1036,6 +1409,8 @@ function wp_widgets_init() {
|
||||
|
||||
register_widget('WP_Widget_Tag_Cloud');
|
||||
|
||||
register_widget('WP_CustomNavWidget');
|
||||
|
||||
do_action('widgets_init');
|
||||
}
|
||||
|
||||
|
@ -2215,4 +2215,14 @@ function get_the_generator( $type = '' ) {
|
||||
return apply_filters( "get_the_generator_{$type}", $gen, $type );
|
||||
}
|
||||
|
||||
/**
|
||||
* Outputs the Custom Navigation.
|
||||
*
|
||||
* @since 3.0.0
|
||||
*/
|
||||
function custom_nav($args = array()) {
|
||||
require_once (ABSPATH . WPINC . '/custom-navigation-functions.php');
|
||||
wp_custom_navigation_output($args);
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -63,6 +63,14 @@ function create_initial_post_types() {
|
||||
'query_var' => false,
|
||||
) );
|
||||
|
||||
register_post_type( 'menu_item', array( 'public' => false,
|
||||
'show_ui' => false,
|
||||
'_builtin' => true,
|
||||
'capability_type' => 'post',
|
||||
'hierarchical' => false,
|
||||
'rewrite' => false,
|
||||
'query_var' => false,
|
||||
) );
|
||||
register_post_status( 'publish', array( 'label' => _x('Published', 'post'),
|
||||
'public' => true,
|
||||
'_builtin' => true,
|
||||
@ -105,6 +113,18 @@ function create_initial_post_types() {
|
||||
'_builtin' => true,
|
||||
'label_count' => _n_noop('Auto-Draft <span class="count">(%s)</span>', 'Auto-Drafts <span class="count">(%s)</span>')
|
||||
) );
|
||||
|
||||
register_post_status( 'menu-category', array( 'internal' => true,
|
||||
'_builtin' => true
|
||||
) );
|
||||
|
||||
register_post_status( 'menu-page', array( 'internal' => true,
|
||||
'_builtin' => true
|
||||
) );
|
||||
|
||||
register_post_status( 'menu-custom', array( 'internal' => true,
|
||||
'_builtin' => true
|
||||
) );
|
||||
}
|
||||
add_action( 'init', 'create_initial_post_types', 0 ); // highest priority
|
||||
|
||||
|
@ -394,6 +394,21 @@ function wp_default_scripts( &$scripts ) {
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
//Custom Navigation
|
||||
|
||||
$scripts->add( 'custom-navigation-jquery', '/wp-admin/js/custom-navigation-custom-jquery-1.3.2.js', false, '1.3.2' );
|
||||
|
||||
$scripts->add( 'custom-navigation-ui-custom', '/wp-admin/js/custom-navigation-custom-jquery-ui-1.7.2.js', array('custom-navigation-jquery'), '1.7.2' );
|
||||
$scripts->add_data( 'custom-navigation-ui-custom', 'group', 1 );
|
||||
|
||||
$scripts->add( 'custom-navigation-autocomplete', '/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js', array('custom-navigation-jquery'), '1.0.0' );
|
||||
$scripts->add_data( 'custom-navigation-autocomplete', 'group', 1 );
|
||||
|
||||
$scripts->add( 'custom-navigation-default-items', '/wp-admin/js/custom-navigation-default-items.js', false, '1.0.0' );
|
||||
$scripts->add( 'custom-navigation-dynamic-functions', '/wp-admin/js/custom-navigation-dynamic-functions.js', false, '1.0.0' );
|
||||
$scripts->add( 'custom-navigation-php-functions', '/wp-admin/js/custom-navigation-php-functions.js', false, '1.0.0' );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -459,6 +474,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( 'custom-navigation', "/wp-admin/css/custom-navigation$suffix.css", array(), '20100215' );
|
||||
|
||||
foreach ( $rtl_styles as $rtl_style )
|
||||
$styles->add_data( $rtl_style, 'rtl', true );
|
||||
|
@ -38,6 +38,11 @@ function create_initial_taxonomies() {
|
||||
'_builtin' => true
|
||||
) ) ;
|
||||
|
||||
register_taxonomy( 'menu', 'post', array( 'hierarchical' => false,
|
||||
'query_var' => false,
|
||||
'rewrite' => false
|
||||
) ) ;
|
||||
|
||||
register_taxonomy( 'link_category', 'link', array( 'hierarchical' => false,
|
||||
'label' => __('Categories'),
|
||||
'query_var' => false,
|
||||
|
Loading…
Reference in New Issue
Block a user