WordPress.org

Make WordPress Core

Ticket #2395: classes.php.diff

File classes.php.diff, 3.2 KB (added by chmac, 11 years ago)

Patch to add class = parent to all parents recursively AND add the new parent level class

  • classes.php

    old new  
    507507                return $output;
    508508        }
    509509
     510        function parent_level($page, $current_page, $level=0) {
     511                $_current_page = get_page($current_page);
     512                if ( $page->ID == $current_page )
     513                        return $level;
     514                elseif ( $_current_page && $page->ID == $_current_page->post_parent )
     515                        return ++$level;
     516                elseif ( is_object($_current_page) )
     517                        return ( $this->parent_level($page, $_current_page->post_parent, ++$level ) );
     518                else
     519                        return false;
     520        }
     521
    510522        function start_el($output, $page, $depth, $current_page, $args) {
    511523                if ( $depth )
    512524                        $indent = str_repeat("\t", $depth);
    513525                extract($args, EXTR_SKIP);
    514526                $css_class = 'page_item page-item-'.$page->ID;
    515                 $_current_page = get_page( $current_page );
    516                 if ( $page->ID == $current_page )
    517                         $css_class .= ' current_page_item ';
    518                 elseif ( $_current_page && $page->ID == $_current_page->post_parent )
     527                $parent_level = $this->parent_level($page, $current_page);
     528                if ( $parent_level === 0 )
     529                        $css_class .= ' current_page_item';
     530                elseif ( $parent_level > 0 )
    519531                        $css_class .= ' current_page_parent';
     532                if ( $parent_level !== false )
     533                        $css_class .= ' current_page_parent_l' . $parent_level;
    520534
    521535                $output .= $indent . '<li class="' . $css_class . '"><a href="' . get_page_link($page->ID) . '" title="' . attribute_escape(apply_filters('the_title', $page->post_title)) . '">' . apply_filters('the_title', $page->post_title) . '</a>';
    522536
     
    581595                return $output;
    582596        }
    583597
     598        function parent_level($category, $current_category, $level=0) {
     599                $_current_category = get_category( $current_category );
     600                if ( $category->term_id == $current_category )
     601                        return $level;
     602                elseif ( $_current_category && $category->term_id == $_current_category->parent )
     603                        return ++$level;
     604                elseif ( is_object($_current_category) )
     605                        return ( $this->parent_level($category, $_current_category->parent, ++$level ));
     606                else
     607                        return false;
     608        }
     609
    584610        function start_el($output, $category, $depth, $args) {
    585611                extract($args);
    586612
     
    629655                        $link .= ' ' . gmdate('Y-m-d', $category->last_update_timestamp);
    630656                }
    631657
    632                 if ( $current_category )
    633                         $_current_category = get_category( $current_category );
    634 
    635658                if ( 'list' == $args['style'] ) {
    636                         $output .= "\t<li";
    637                         $class = 'cat-item cat-item-'.$category->term_id;
    638                         if ( $current_category && ($category->term_id == $current_category) )
    639                                 $class .=  ' current-cat';
    640                         elseif ( $_current_category && ($category->term_id == $_current_category->parent) )
    641                                 $class .=  ' current-cat-parent';
    642                         $output .=  ' class="'.$class.'"';
    643                         $output .= ">$link\n";
     659                        $css_class = 'cat-item cat-item-'.$category->term_id;
     660                        if ( $current_category ) {
     661                                $parent_level = $this->parent_level($category, $current_category);
     662                                if ( $parent_level === 0 )
     663                                        $css_class .=  ' current-cat';
     664                                elseif ( $parent_level > 0 )
     665                                        $css_class .=  ' current-cat-parent';
     666                                if ( $parent_level !== false )
     667                                        $css_class .= ' current-cat-parent-l' . $parent_level;
     668                        }
     669                        $output .= "\t" . '<li class="' . $css_class . '">$link' . "\n";
    644670                } else {
    645671                        $output .= "\t$link<br />\n";
    646672                }