Making WordPress.org

Ticket #5303: validator-ui.diff

File validator-ui.diff, 8.7 KB (added by ryelle, 4 years ago)

Initial UI improvements— some error message cleanup, restructured the flow of the results page, and removed the icon links for text links

  • cli/class-block-plugin-checker.php

     
    6767                        $this->record_result(
    6868                                __FUNCTION__,
    6969                                'error',
    70                                 sprintf( __( 'Invalid url %s', 'wporg-plugins' ), $url ),
     70                                sprintf( __( 'Invalid url: %s', 'wporg-plugins' ), $url ),
    7171                                $url
    7272                        );
    7373                        return $this->results;
     
    7777                        $this->record_result(
    7878                                __FUNCTION__,
    7979                                'error',
    80                                 sprintf( __( 'URL must be GitHub or plugins.svn.wordpress.org %s', 'wporg-plugins' ), $url ),
     80                                sprintf( __( 'URL must be GitHub or plugins.svn.wordpress.org: %s', 'wporg-plugins' ), $url ),
    8181                                $url
    8282                        );
    8383                        return $this->results;
     
    8989                                $this->record_result(
    9090                                        __FUNCTION__,
    9191                                        'error',
    92                                         sprintf( __( 'URL must be a plugin repository %s', 'wporg-plugins' ), $url ),
     92                                        sprintf( __( 'URL must be a plugin repository: %s', 'wporg-plugins' ), $url ),
    9393                                        $url
    9494                                );
    9595                                return $this->results;
     
    115115                                $this->record_result(
    116116                                        __FUNCTION__,
    117117                                        'error',
    118                                         sprintf( __( 'URL must be a plugin repository %s', 'wporg-plugins' ), $url ),
     118                                        sprintf( __( 'URL must be a plugin repository: %s', 'wporg-plugins' ), $url ),
    119119                                        $url
    120120                                );
    121121                                return $this->results;
     
    212212        }
    213213
    214214        public function find_blocks( $base_dir ) {
     215                $blocks = array();
    215216                $this->block_json_files = Filesystem::list_files( $base_dir, true, '!(?:^|/)block\.json$!i' );
    216217                if ( false && ! empty( $this->block_json_files ) ) {
    217218                        foreach ( $block_json_files as $filename ) {
     
    281282                if ( empty( $this->readme_path ) || !file_exists( $this->readme_path ) ) {
    282283                        $this->record_result( __FUNCTION__,
    283284                                'error',
    284                                 __( 'Missing readme.txt file', 'wporg-plugins' ),
     285                                __( 'Missing readme.txt file.', 'wporg-plugins' ),
    285286                                $this->relative_filename( $this->readme_path )
    286287                        );
    287288                }
     
    332333
    333334                                        $this->record_result( __FUNCTION__,
    334335                                                'info',
    335                                                 sprintf( __( 'Block name already exists in plugin %s', 'wporg-plugins' ), $query->posts[0]->post_name ),
     336                                                sprintf( __( 'Block name %s already exists in plugin.', 'wporg-plugins' ), $query->posts[0]->post_name ),
    336337                                                [ 'block_name' => $block->name, 'slug' => $post->post_name ]
    337338                                        );
    338339                                }
     
    353354                } else {
    354355                        $this->record_result( __FUNCTION__,
    355356                                'info',
    356                                 sprintf( _n( 'Found %d block', 'Found %d blocks', count( $this->blocks ), 'wporg-plugins' ), count( $this->blocks ) ),
     357                                sprintf( _n( 'Found %d block.', 'Found %d blocks.', count( $this->blocks ), 'wporg-plugins' ), count( $this->blocks ) ),
    357358                                array_keys( $this->blocks )
    358359                        );
    359360                }
     
    367368                        if ( !empty( $this->block_json_files[ $block_name ] ) ) {
    368369                                $this->record_result( __FUNCTION__,
    369370                                        'info',
    370                                         sprintf( __( 'block.json file exists for block %s', 'wporg-plugins' ), $block_name ),
     371                                        sprintf( __( 'block.json file exists for block %s.', 'wporg-plugins' ), $block_name ),
    371372                                        $this->block_json_files[ $block_name ]
    372373                                );
    373374                        }
     
    376377                if ( empty( $this->block_json_files ) ) {
    377378                        $this->record_result( __FUNCTION__,
    378379                                'warning',
    379                                 __( 'No block.json files were found', 'wporg-plugins' )
     380                                __( 'No block.json files were found.', 'wporg-plugins' )
    380381                        );
    381382                }
    382383        }
     
    391392                        if ( !empty( $block_scripts[ $block_name ] ) ) {
    392393                                $this->record_result( __FUNCTION__,
    393394                                        'info',
    394                                         sprintf( __( 'Scripts found for block %s', 'wporg-plugins' ), $block_name ),
     395                                        sprintf( __( 'Scripts found for block %s.', 'wporg-plugins' ), $block_name ),
    395396                                        $block_scripts[ $block_name ]
    396397                                );
    397398                        } else {
    398399                                $this->record_result( __FUNCTION__,
    399400                                        'warning',
    400                                         sprintf( __( 'No scripts found for block %s', 'wporg-plugins' ), $block_name ),
     401                                        sprintf( __( 'No scripts found for block %s.', 'wporg-plugins' ), $block_name ),
    401402                                        $block_name
    402403                                );
    403404                        }
     
    413414                                if ( file_exists( $this->path_to_plugin . $script ) ) {
    414415                                        $this->record_result( __FUNCTION__,
    415416                                                'info',
    416                                                 sprintf( __( 'Script file exists for block %s', 'wporg-plugins' ), $block_name ),
     417                                                sprintf( __( 'Script file exists for block %s.', 'wporg-plugins' ), $block_name ),
    417418                                                $script
    418419                                        );
    419420                                } else {
    420421                                        $this->record_result( __FUNCTION__,
    421422                                                'warning',
    422                                                 sprintf( __( 'Missing script file for block %s', 'wporg-plugins' ), $block_name ),
     423                                                sprintf( __( 'Missing script file for block %s.', 'wporg-plugins' ), $block_name ),
    423424                                                $script
    424425                                        );
    425426                                }
     
    444445                if ( empty( $block_files ) ) {
    445446                        $this->record_result( __FUNCTION__,
    446447                                'error',
    447                                 sprintf( __( 'registerBlockType() must be called in a JavaScript file', 'wporg-plugins' ) )
     448                                sprintf( __( '<code>registerBlockType()</code> must be called in a JavaScript file.', 'wporg-plugins' ) )
    448449                        );
    449450                }
    450451        }
  • shortcodes/class-block-validator.php

     
    66class Block_Validator {
    77
    88        /**
    9          * Displays a form to validate block plugins.   
     9         * Displays a form to validate block plugins.
    1010         */
    1111        public static function display() {
     12                $plugin_url = $_REQUEST['plugin_url'] ?? '';
    1213                ?>
    1314                <div class="wrap">
    14 <?php
    15                 if ( $_POST && wp_verify_nonce( $_POST['block-nonce'], 'validate-block-plugin' ) ) {
    16 
    17                                 self::validate_block( $_POST['plugin_url'] );
    18                         }
    19 
    20                         $plugin_url      = $_REQUEST['plugin_url'] ?? '';
    21                         ?>
    22 
    2315                        <form method="post" action="">
    2416                                <p>
    25                                         <input type="text" name="plugin_url" size="70" placeholder="https://plugins.svn.wordpress.org/" value="<?php echo esc_url( $plugin_url ); ?>" />
     17                                        <label for="plugin_url"><?php _e( 'Plugin repo URL', 'wporg-plugins' ); ?></label>
     18                                </p>
     19                                <p>
     20                                        <input type="text" id="plugin_url" name="plugin_url" size="70" placeholder="https://plugins.svn.wordpress.org/" value="<?php echo esc_url( $plugin_url ); ?>" />
    2621                                        <input type="submit" class="button button-secondary" value="<?php esc_attr_e( 'Validate!', 'wporg-plugins' ); ?>" />
    2722                                        <?php wp_nonce_field( 'validate-block-plugin', 'block-nonce' ); ?>
    2823                                </p>
    2924                        </form>
    3025
     26                        <?php
     27                        if ( $_POST && wp_verify_nonce( $_POST['block-nonce'], 'validate-block-plugin' ) ) {
     28                                self::validate_block( $_POST['plugin_url'] );
     29                        }
     30                        ?>
    3131                </div>
    3232                <?php
    3333        }
     
    3434
    3535        /**
    3636         * Validates readme.txt contents and adds feedback.
     37         *
     38         * @param string $plugin_url The URL of a Subversion or GitHub repository.
    3739         */
    3840        protected static function validate_block( $plugin_url ) {
    3941
     
    4042                $checker = new Block_Plugin_Checker();
    4143                $results = $checker->run_check_plugin_repo( $plugin_url );
    4244
     45                echo '<h2>' . __( 'Results', 'wporg-plugins' ) . '</h2>';
     46
    4347                if ( $checker->repo_url && $checker->repo_revision ) {
    44                         echo '<h2>Validating..</h2>';
    45                         echo '<p>Results for ' . esc_url( $checker->repo_url ) . ' revision ' . esc_html( $checker->repo_revision ) . '</p>';
     48                        echo '<p>';
     49                        printf(
     50                                'Results for %1$s revision %2$s',
     51                                '<code>' . esc_url( $checker->repo_url ) . '</code>',
     52                                esc_html( $checker->repo_revision )
     53                        );
     54                        echo '</p>';
    4655                }
    4756
    4857                $results_by_type = array();
     
    5059                        $results_by_type[ $item->type ][] = $item;
    5160                }
    5261
    53 
    5462                $output = '';
    5563
    5664                $error_types = array(
     
    5967                        'info'    => __( 'Notes:', 'wporg-plugins' ),
    6068                );
    6169                foreach ( $error_types as $type => $warning_label ) {
     70                        if ( empty( $results_by_type[ $type ] ) ) {
     71                                continue;
     72                        }
    6273
    63                                 if ( empty( $results_by_type[ $type ] ) )
    64                                         continue;
    65 
    66                                 $output .= "<h3>{$warning_label}</h3>\n";
    67                                 $output .= "<div class='notice notice-{$type} notice-alt'>\n";
    68                                 $output .= "<ul class='{$type}'>\n";
    69                                 foreach ( $results_by_type[ $type ] as $item ) {
    70                                         $output .= "<li title='{$item->check_name}'><a href='/hypothetical/doc/page#{$item->check_name}'><span class='dashicons dashicons-info'></span></a> {$item->message}</li>\n";
     74                        $output .= "<h3>{$warning_label}</h3>\n";
     75                        $output .= "<div class='notice notice-{$type} notice-alt'>\n";
     76                        $output .= "<ul class='{$type}'>\n";
     77                        foreach ( $results_by_type[ $type ] as $item ) {
     78                                $docs_link = '';
     79                                if ( 'check' === substr( $item->check_name, 0, 5 ) ) {
     80                                        $docs_link = "<a href='/hypothetical/doc/page#{$item->check_name}'>" . __( 'More about this.', 'wporg-plugins' ) . '</a>';
    7181                                }
    72                                 $output .= "</ul>\n";
    73                                 $output .= "</div>\n";
     82                                $output .= "<li class='{$item->check_name}'>{$item->message} {$docs_link}</li>\n";
     83                        }
     84                        $output .= "</ul>\n";
     85                        $output .= "</div>\n";
    7486                }
    7587
    7688                if ( empty( $output ) ) {