Make WordPress Core

Changeset 13257


Ignore:
Timestamp:
02/20/2010 09:57:43 PM (16 years ago)
Author:
wpmuguru
Message:

introduce custom menus, props jeffikus, See #11817

Location:
trunk
Files:
16 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/menu.php

    r13217 r13257  
    109109        $submenu['themes.php'][10] = array(_x('Editor', 'theme editor'), 'edit_themes', 'theme-editor.php');
    110110        $submenu['themes.php'][15] = array(__('Add New Themes'), 'install_themes', 'theme-install.php');
     111        $submenu['themes.php'][20] = array(__('Custom Navigation'), 'switch_themes', 'custom-navigation.php');
    111112
    112113$update_plugins = get_site_transient( 'update_plugins' );
  • trunk/wp-includes/default-widgets.php

    r13248 r13257  
    10021002
    10031003/**
     1004 * Custom Navigation widget class
     1005 *
     1006 * @since 3.0.0
     1007 */
     1008 class WP_CustomNavWidget extends WP_Widget {
     1009
     1010        function WP_CustomNavWidget() {
     1011                $widget_ops = array('description' => 'Use this widget to add one of your Custom Navigation Menus as a widget.' );
     1012                parent::WP_Widget(false, __('Custom Navigation Menu'),$widget_ops);     
     1013        }
     1014
     1015        function widget($args, $instance) { 
     1016                $navmenu = $instance['navmenu'];
     1017                $navtitle = $instance['navtitle'];
     1018                $navdeveloper = strtolower($instance['navdeveloper']);
     1019                $navdiv = strtolower($instance['navdiv']);
     1020                $navul = strtolower($instance['navul']);
     1021                $navdivid = $instance['navdivid'];
     1022                $navdivclass = $instance['navdivclass'];
     1023                $navulid = $instance['navulid'];
     1024                $navulclass = $instance['navulclass'];
     1025               
     1026                //Override for menu descriptions
     1027                $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options');
     1028                if ($advanced_option_descriptions == 'no')
     1029                { 
     1030                        $navwidgetdescription = 2;
     1031                }
     1032                else
     1033                {
     1034                        $navwidgetdescription = $instance['navwidgetdescription'];
     1035                }
     1036                $menuexists = false;
     1037               
     1038                global $wpdb;
     1039               
     1040                //GET menu name
     1041                if ($navmenu > 0)
     1042                {
     1043                        $table_name_menus = $wpdb->prefix . "custom_nav_menus";
     1044                        $wp_result = $wpdb->get_results("SELECT menu_name FROM ".$table_name_menus." WHERE id='".$navmenu."'");
     1045                        $wp_custom_nav_menu_name = $wp_result[0]->menu_name;
     1046                        $menuexists = true;
     1047                }
     1048                //Do nothing
     1049                else
     1050                {
     1051                        $menuexists = false;
     1052                }
     1053                ?>
     1054               
     1055                <?php
     1056                        //DEVELOPER settings enabled
     1057                        if ($navdeveloper == 'yes')
     1058                        {
     1059                                //DISPLAY Custom DIV
     1060                                if ($navdiv == 'yes')
     1061                                {
     1062                                        ?>
     1063                                        <div id="<?php echo $navdivid;  ?>" class="<?php echo $navdivclass; ?>">
     1064                                        <?php
     1065                                }
     1066                                //Do NOT display DIV
     1067                                else
     1068                                {
     1069                                       
     1070                                }
     1071                               
     1072                        }
     1073                        //DISPLAY default DIV
     1074                        else
     1075                        {
     1076                                ?>
     1077                                <div class="widget">
     1078                                <?php
     1079                        }
     1080                ?>
     1081               
     1082                        <h3><?php echo $navtitle; ?></h3>
     1083                        <?php
     1084                       
     1085                        if ($menuexists)
     1086                        {
     1087                                ?>
     1088                        <?php
     1089                       
     1090                        //DEVELOPER settings enabled
     1091                                if ($navdeveloper == 'yes')
     1092                                {
     1093                                        //DISPLAY Custom UL
     1094                                        if ($navul == 'yes')
     1095                                        {
     1096                                                ?>
     1097                                                <ul id="<?php echo $navulid;  ?>" class="<?php echo $navulclass; ?>">
     1098                                                <?php
     1099                                        }
     1100                                        //Do NOT display UL
     1101                                        else
     1102                                        {
     1103                                               
     1104                                        }
     1105                                       
     1106                                }
     1107                                //DISPLAY default UL
     1108                                else
     1109                                {
     1110                                        ?>
     1111                                        <ul class="custom-nav">
     1112                                        <?php
     1113                                }
     1114                       
     1115                        ?>
     1116                               
     1117                                                <?php
     1118                                                        //DISPLAY custom navigation menu
     1119                                                        if (get_option('wp_custom_nav_menu') == 'true') {
     1120                                                        custom_nav('name='.$wp_custom_nav_menu_name.'&desc='.$navwidgetdescription);
     1121                                                }                               
     1122                                                ?>
     1123                               
     1124                                <?php
     1125                               
     1126                                        //DEVELOPER settings enabled
     1127                                        if ($navdeveloper == 'yes')
     1128                                        {
     1129                                                //DISPLAY Custom UL
     1130                                                if ($navul == 'yes')
     1131                                                {
     1132                                                        ?>
     1133                                                        </ul>
     1134                                                        <?php
     1135                                                }
     1136                                                //Do NOT display UL
     1137                                                else
     1138                                                {
     1139                                                       
     1140                                                }
     1141                                               
     1142                                        }
     1143                                        //DISPLAY default UL
     1144                                        else
     1145                                        {
     1146                                                ?>
     1147                                                </ul>
     1148                                                <?php
     1149                                        }
     1150                                       
     1151                                ?>
     1152                        <?php
     1153                        }
     1154                        else
     1155                        {
     1156                                echo "You have not setup the custom navigation widget correctly, please check your settings in the backend.";
     1157                        }
     1158                        ?>
     1159                <?php
     1160                        //DEVELOPER settings enabled
     1161                        if ($navdeveloper == 'yes')
     1162                        {
     1163                                //DISPLAY Custom DIV
     1164                                if ($navdiv == 'yes')
     1165                                {
     1166                                        ?>
     1167                                        </div>
     1168                                        <?php
     1169                                }
     1170                                //Do NOT display DIV
     1171                                else
     1172                                {
     1173                                       
     1174                                }
     1175                               
     1176                        }
     1177                        //DISPLAY default DIV
     1178                        else
     1179                        {
     1180                                ?>
     1181                                </div>
     1182                                <?php
     1183                        }
     1184                ?><!-- /#nav-container -->
     1185                       
     1186                        <?php
     1187        }
     1188
     1189        function update($new_instance, $old_instance) {               
     1190                return $new_instance;
     1191        }
     1192
     1193        function form($instance) {       
     1194                $navmenu = esc_attr($instance['navmenu']);
     1195                $navtitle = esc_attr($instance['navtitle']);
     1196                $navdeveloper = esc_attr($instance['navdeveloper']);
     1197                $navdiv = esc_attr($instance['navdiv']);
     1198                $navul = esc_attr($instance['navul']);
     1199                $navdivid = esc_attr($instance['navdivid']);
     1200                $navdivclass = esc_attr($instance['navdivclass']);
     1201                $navulid = esc_attr($instance['navulid']);
     1202                $navulclass = esc_attr($instance['navulclass']);
     1203                $navwidgetdescription = esc_attr($instance['navwidgetdescription']);
     1204                               
     1205                global $wpdb;
     1206                               
     1207                //GET Menu Items for SELECT OPTIONS     
     1208                $table_name_custom_menus = $wpdb->prefix . "custom_nav_menus";
     1209                $custom_menu_records = $wpdb->get_results("SELECT id,menu_name FROM ".$table_name_custom_menus);
     1210               
     1211                //CHECK if menus exist
     1212                if ($custom_menu_records > 0)
     1213                {
     1214               
     1215                        ?>
     1216                       
     1217                         <p>
     1218                    <label for="<?php echo $this->get_field_id('navmenu'); ?>"><?php _e('Select Menu:'); ?></label>
     1219                               
     1220                                <select id="<?php echo $this->get_field_id('navmenu'); ?>" name="<?php echo $this->get_field_name('navmenu'); ?>">
     1221                                        <?php
     1222                                       
     1223                                        //DISPLAY SELECT OPTIONS
     1224                                        foreach ($custom_menu_records as $custom_menu_record)
     1225                                        {
     1226                                                if ($navmenu == $custom_menu_record->id) {
     1227                                                        $selected_option = 'selected="selected"';
     1228                                                }
     1229                                                else {
     1230                                                        $selected_option = '';
     1231                                                }
     1232                                                ?>
     1233                                                <option value="<?php echo $custom_menu_record->id; ?>" <?php echo $selected_option; ?>><?php echo $custom_menu_record->menu_name; ?></option>
     1234                                                <?php
     1235                                               
     1236                                        }
     1237                                        ?>
     1238                                </select>
     1239       
     1240                        </p>
     1241                       
     1242                        <p>
     1243                               
     1244                        <label for="<?php echo $this->get_field_id('navtitle'); ?>"><?php _e('Title:'); ?></label>
     1245                        <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'); ?>" />
     1246                    </p>
     1247                   
     1248                <p>
     1249                        <?php
     1250                            $checked = strtolower($navdeveloper);
     1251                        ?>
     1252                       
     1253                        <label for="<?php echo $this->get_field_id('navdeveloper'); ?>"><?php _e('Advanced Options:'); ?></label><br />         
     1254                        <span class="checkboxes">
     1255                                <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"'; } ?> />
     1256                            <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"'; } ?> />
     1257                        </span><!-- /.checkboxes -->
     1258                       
     1259                        </p>
     1260                   
     1261                    <?php
     1262                   
     1263                    //DEVELOPER settings
     1264                    if ($checked == 'yes')
     1265                    {
     1266                        ?>
     1267                       
     1268                        <p>
     1269                                <?php
     1270                                    $checked = strtolower($navdiv);
     1271                                ?>
     1272                               
     1273                                <label for="<?php echo $this->get_field_id('navdiv'); ?>"><?php _e('Wrap in container DIV:'); ?></label><br /> 
     1274                                <span class="checkboxes">
     1275                                        <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"'; } ?> />
     1276                                    <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"'; } ?> />
     1277                                </span><!-- /.checkboxes -->
     1278                       
     1279                        </p>
     1280                       
     1281                        <?php
     1282                       
     1283                        if ($checked == 'yes')
     1284                        {
     1285                       
     1286                                ?>
     1287                               
     1288                                <p>
     1289                               
     1290                            <label for="<?php echo $this->get_field_id('navdivid'); ?>"><?php _e('DIV id:'); ?></label>
     1291                            <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'); ?>" />
     1292                        </p>
     1293                        <p>
     1294                               
     1295                            <label for="<?php echo $this->get_field_id('navdivclass'); ?>"><?php _e('DIV class:'); ?></label>
     1296                            <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'); ?>" />
     1297                        </p>
     1298                               
     1299                                <?php
     1300                               
     1301                        }
     1302                       
     1303                        ?>
     1304                       
     1305                        <p>
     1306                                <?php
     1307                                    $checked = strtolower($navul);
     1308                                ?>
     1309                               
     1310                                <label for="<?php echo $this->get_field_id('navul'); ?>"><?php _e('Wrap in container UL:'); ?></label><br />           
     1311                                <span class="checkboxes">
     1312                                        <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"'; } ?> />
     1313                                    <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"'; } ?> />
     1314                                </span><!-- /.checkboxes -->
     1315                       
     1316                        </p>
     1317                       
     1318                        <?php
     1319               
     1320                        if ($checked == 'yes')
     1321                        {
     1322                       
     1323                                ?>
     1324                               
     1325                                <p>
     1326                               
     1327                            <label for="<?php echo $this->get_field_id('navulid'); ?>"><?php _e('UL id:'); ?></label>
     1328                            <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'); ?>" />
     1329                        </p>
     1330                        <p>
     1331                               
     1332                            <label for="<?php echo $this->get_field_id('navulclass'); ?>"><?php _e('UL class:'); ?></label>
     1333                            <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'); ?>" />
     1334                        </p>
     1335                               
     1336                                <?php
     1337                               
     1338                        }
     1339                       
     1340                        ?>
     1341                        <?php $advanced_option_descriptions = get_option('wp_settings_custom_nav_advanced_options'); ?>
     1342                        <p <?php if ($advanced_option_descriptions == 'no') { ?>style="display:none;"<?php } ?>>
     1343                       
     1344                   <?php
     1345                                    $checked = strtolower($navwidgetdescription);
     1346                                ?>
     1347                               
     1348                                <label for="<?php echo $this->get_field_id('navwidgetdescription'); ?>"><?php _e('Show Top Level Descriptions:'); ?></label><br />     
     1349                                <span class="checkboxes">
     1350                                        <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"'; } ?> />
     1351                                    <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"'; } ?> />
     1352                                </span><!-- /.checkboxes -->
     1353                </p>
     1354                        <?php
     1355                    }
     1356                    //Do nothing
     1357                    else
     1358                    {
     1359                       
     1360                    }
     1361                       
     1362                }
     1363                //Error message for menus not existing
     1364                else
     1365                {
     1366                        ?>
     1367                        <p>
     1368                        <label><?php _e('The Custom Navigation has not been configured correctly.  Please check your Custom Navigation settings before adding this widget.'); ?></label>
     1369                        </p>
     1370                        <?php
     1371                }
     1372        }
     1373       
     1374}
     1375
     1376/**
    10041377 * Register all of the default WordPress widgets on startup.
    10051378 *
     
    10361409
    10371410        register_widget('WP_Widget_Tag_Cloud');
    1038 
     1411       
     1412        register_widget('WP_CustomNavWidget');
     1413       
    10391414        do_action('widgets_init');
    10401415}
  • trunk/wp-includes/general-template.php

    r13242 r13257  
    22162216}
    22172217
     2218/**
     2219 * Outputs the Custom Navigation.
     2220 *
     2221 * @since 3.0.0
     2222 */
     2223function custom_nav($args = array()) {
     2224        require_once (ABSPATH . WPINC . '/custom-navigation-functions.php');
     2225        wp_custom_navigation_output($args);
     2226}
     2227
    22182228?>
  • trunk/wp-includes/post.php

    r13242 r13257  
    6464                                                                                ) );
    6565
     66        register_post_type( 'menu_item', array( 'public' => false,
     67                                                                                        'show_ui' => false,
     68                                                                                        '_builtin' => true,
     69                                                                                        'capability_type' => 'post',
     70                                                                                        'hierarchical' => false,
     71                                                                                        'rewrite' => false,
     72                                                                                        'query_var' => false,
     73                                                                                ) );
    6674        register_post_status( 'publish', array( 'label' => _x('Published', 'post'),
    6775                                                                                        'public' => true,
     
    105113                                                                                        '_builtin' => true,
    106114                                                                                        'label_count' => _n_noop('Auto-Draft <span class="count">(%s)</span>', 'Auto-Drafts <span class="count">(%s)</span>')
     115                                                                                ) );
     116
     117        register_post_status( 'menu-category', array(   'internal' => true,
     118                                                                                        '_builtin' => true
     119                                                                                ) );
     120
     121        register_post_status( 'menu-page', array(       'internal' => true,
     122                                                                                        '_builtin' => true
     123                                                                                ) );
     124
     125        register_post_status( 'menu-custom', array(     'internal' => true,
     126                                                                                        '_builtin' => true
    107127                                                                                ) );
    108128}
  • trunk/wp-includes/script-loader.php

    r13239 r13257  
    395395
    396396        }
     397       
     398        //Custom Navigation
     399
     400        $scripts->add( 'custom-navigation-jquery', '/wp-admin/js/custom-navigation-custom-jquery-1.3.2.js', false, '1.3.2' );
     401               
     402        $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' );
     403        $scripts->add_data( 'custom-navigation-ui-custom', 'group', 1 );
     404       
     405        $scripts->add( 'custom-navigation-autocomplete', '/wp-admin/js/custom-navigation-custom-jquery-autocomplete.js', array('custom-navigation-jquery'), '1.0.0' );
     406        $scripts->add_data( 'custom-navigation-autocomplete', 'group', 1 );
     407       
     408        $scripts->add( 'custom-navigation-default-items', '/wp-admin/js/custom-navigation-default-items.js', false, '1.0.0' );
     409        $scripts->add( 'custom-navigation-dynamic-functions', '/wp-admin/js/custom-navigation-dynamic-functions.js', false, '1.0.0' );
     410        $scripts->add( 'custom-navigation-php-functions', '/wp-admin/js/custom-navigation-php-functions.js', false, '1.0.0' );
     411       
    397412}
    398413
     
    460475        $styles->add( 'jcrop', '/wp-includes/js/jcrop/jquery.Jcrop.css', array(), '0.9.8' );
    461476        $styles->add( 'imgareaselect', '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.1' );
    462 
     477        $styles->add( 'custom-navigation', "/wp-admin/css/custom-navigation$suffix.css", array(), '20100215' );
     478       
    463479        foreach ( $rtl_styles as $rtl_style )
    464480                $styles->add_data( $rtl_style, 'rtl', true );
  • trunk/wp-includes/taxonomy.php

    r13216 r13257  
    3838                                                                                                        '_builtin' => true
    3939                                                                                                ) ) ;
     40
     41        register_taxonomy( 'menu', 'post', array(       'hierarchical' => false,
     42                                                                                                                'query_var' => false,
     43                                                                                                                'rewrite' => false
     44                                                                                                        ) ) ;
    4045
    4146        register_taxonomy( 'link_category', 'link', array(      'hierarchical' => false,
Note: See TracChangeset for help on using the changeset viewer.