-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
sidebar-report.php
90 lines (83 loc) · 2.31 KB
/
sidebar-report.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
/**
* The sidebar for list pages
*
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*
* @package shiro
*/
$current_page_id = get_the_ID();
$sidebar_items = wmf_get_report_sidebar_data();
if ( empty( $sidebar_items ) ) {
return;
}
?>
<nav
class="toc-nav"
data-backdrop="inactive"
data-dropdown="toc-nav"
data-dropdown-content=".toc"
data-dropdown-status="uninitialized"
data-dropdown-toggle=".toc__button"
data-sticky="false"
data-toggleable="yes"
data-trap="inactive"
data-visible="false"
>
<h2 class="toc__title screen-reader-text">
<?php esc_html_e( 'Table of Contents', 'shiro' ); ?>
</h2>
<button
aria-expanded="false"
class="toc__button"
hidden
>
<span class="btn-label-a11y">
<?php esc_html_e( 'Navigate within this section.', 'shiro' ); ?>
</span>
<span class="btn-label-active-item">
<?php
if ( empty( $sidebar_items[0]['title'] ) ) {
esc_html_e( 'Toggle menu', 'shiro' );
} else {
echo wp_kses_post( $sidebar_items[0]['title'] );
}
?>
</span>
</button>
<ul class="table-of-contents toc">
<?php
foreach ( $sidebar_items as $report_section ) {
if ( empty( $report_section['title'] ) ) {
continue;
}
$link_classes = $report_section['active'] ? 'toc__link toc__link--active-page' : 'toc__link';
// If report section is active then check for heading blocks at the page, they will be nested toc items.
if ( $report_section['active'] ) {
$blocks = parse_blocks( $post->post_content );
foreach ( $blocks as $block ) {
if ( 'core/heading' === $block['blockName'] ) {
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
echo apply_filters( 'the_content', render_block( $block ) );
break;
}
}
}
?>
<li class="toc__item">
<a class="<?php echo esc_attr( $link_classes ); ?>" href="<?php echo esc_url( $report_section['url'] ); ?>">
<?php echo wp_kses_post( $report_section['title'] ); ?>
</a>
<?php
// Nest page anchor sidebar within nav sidebar.
if ( $current_page_id === $report_section['id'] ) {
// TODO: remove get_sidebar function and use headings
get_sidebar( 'list', [ 'nested' => true ] );
}
?>
</li>
<?php
}
?>
</ul>
</nav>