Making WordPress.org

Ticket #5411: 5411-wip.diff

File 5411-wip.diff, 2.6 KB (added by ryelle, 4 years ago)
  • template-parts/section-blocks.php

     
    1313
    1414$classes = [ 'plugin-' . $section_slug, 'section' ];
    1515$classes = implode( ' ', $classes );
     16
     17$allowed_svg = array(
     18        'svg'   => array(
     19                'class' => true,
     20                'aria-hidden' => true,
     21                'aria-labelledby' => true,
     22                'role' => true,
     23                'xmlns' => true,
     24                'width' => true,
     25                'height' => true,
     26                'viewbox' => true,
     27        ),
     28        'g'     => array( 'fill' => true ),
     29        'title' => array( 'title' => true ),
     30        'path'  => array(
     31                'd' => true,
     32                'fill' => true,
     33                'transform' => true,
     34        ),
     35);
     36
    1637?>
     38<style>
     39.block-icon {
     40        display: inline-block;
     41        width: 1rem;
     42        height: 1rem;
     43}
     44.block-icon svg {
     45        min-width: 24px;
     46        min-height: 24px;
     47        max-width: 1rem;
     48        max-height: 1rem;
     49        fill: currentColor;
     50}
     51</style>
    1752
    1853<div id="<?php echo esc_attr( $prefix . $section_slug ); ?>" class="<?php echo esc_attr( $classes ); ?>">
    1954        <h2 id="<?php echo esc_attr( $section_slug . '-header' ); ?>"><?php echo esc_html( $section['title'] ); ?></h2>
     
    2055
    2156        <p><?php printf( esc_html( _n( 'This plugin provides %d block.', 'This plugin provides %d blocks.', count( $section_content ), 'wporg-plugins'  ) ), count( $section_content ) ); ?></p>
    2257        <dl>
    23                 <?php foreach ( $section_content as $block ) : ?>
    24                         <dt><?php if ( isset( $block->name ) ) echo esc_html( $block->name ); ?></dt>
    25                                 <dd><?php if ( isset( $block->title ) ) echo esc_html( $block->title ); ?></dd>
     58                <?php foreach ( $section_content as $block ) :
     59                        $block_name = isset( $block->title ) ? $block->title : false;
     60                        if ( ! $block_name ) {
     61                                $block_name = isset( $block->name ) ? $block->name : false;
     62                        }
     63                        if ( ! $block_name ) {
     64                                // If we still have no name, we don't have a valid block.
     65                                continue;
     66                        }
     67                        $block_icon = isset( $block->icon ) ? $block->icon : '';
     68                        ?>
     69                        <dt>
     70                                <?php if ( false !== strpos( $block_icon, '<svg' ) ) : ?>
     71                                        <span class="block-icon">
     72                                                <?php echo wp_kses( str_replace( '<svg ', '<svg role="img" aria-hidden="true" focusable="false" ', $block_icon ), $allowed_svg ); ?>
     73                                        </span>
     74                                <?php elseif ( $block_icon ) : ?>
     75                                        <span class="block-icon dashicons dashicons-<?php echo esc_attr( $block->icon ); ?>"></span>
     76                                <?php endif; ?>
     77                                <?php echo esc_html( $block_name ); ?>
     78                        </dt>
     79                        <?php if ( isset( $block->description ) ) : ?>
     80                                <dd><?php echo esc_html( $block->description ); ?></dd>
     81                        <?php endif; ?>
    2682                <?php endforeach; ?>
    2783        </dl>
    2884</div>