WordPress.org

Make WordPress Core

Ticket #15080: 15080.3.diff

File 15080.3.diff, 3.5 KB (added by georgestephanis, 5 years ago)
  • wp-includes/comment-template.php

     
    14911491
    14921492        $in_comment_loop = false;
    14931493}
     1494 
     1495/**
     1496 * Builds an input field bassed on arguments of your choosing
     1497 *
     1498 * Pass in an array of attributes that the input field should have.
     1499 * Properties can be passed as well with the value of NULL to omit
     1500 *  an optional value as per HTML5 syntax
     1501 *
     1502 * @param array $args attributes and the values they should have
     1503 */
     1504function input_builder( $args ) {
     1505        $defaults = array(
     1506                'type' => 'text',
     1507        );
     1508        $args = wp_parse_args( $args, $defaults );
     1509        $input_string = '<input ';
    14941510
     1511        foreach( $args as $attr => $val ) {
     1512                if ( is_null( $val ) )
     1513                        $input_string .= esc_attr( $attr ) . ' ';
     1514                else
     1515                        $input_string .= esc_attr( $attr ) . '="'. esc_attr( $val ) . '" ';
     1516        }
     1517
     1518        $input_string .= '/>';
     1519        return $input_string;
     1520}
     1521
     1522
    14951523/**
    14961524 * Outputs a complete commenting form for use within a template.
    14971525 * Most strings and form fields may be controlled through the $args array passed
     
    15201548
    15211549        $req = get_option( 'require_name_email' );
    15221550        $aria_req = ( $req ? " aria-required='true'" : '' );
     1551
     1552        $html5 = isset( $args['html5'] ) && $args['html5'];
     1553
     1554        $author_input_attr = array(
     1555                'id'    => 'author',
     1556                'name'  => 'author',
     1557                'type'  => 'text',
     1558                'value' =>  esc_attr( $commenter['comment_author'] ),
     1559                'size'  => '30',
     1560                'aria-required' => ( $req ) ? 'true' : 'false',
     1561        );
     1562        if ( $html5 ) {
     1563                $author_input_attr['placeholder'] = __( 'Your Name' );
     1564                if( $req )
     1565                        $author_input_attr['required'] = null;
     1566        }
     1567
     1568        $email_input_attr = array(
     1569                'id'    => 'email',
     1570                'name'  => 'email',
     1571                'type'  => $html5 ? 'email' : 'text',
     1572                'value' =>  esc_attr( $commenter['comment_author_email'] ),
     1573                'size'  => '30',
     1574                'aria-required' => ( $req ) ? 'true' : 'false',
     1575        );
     1576        if ( $html5 ) {
     1577                $email_input_attr['pattern'] = '';
     1578                $email_input_attr['placeholder'] = __( 'Your@Email.com' );
     1579                if( $req )
     1580                        $email_input_attr['required'] = null;
     1581        }
     1582
     1583        $url_input_attr = array(
     1584                'id'    => 'url',
     1585                'name'  => 'url',
     1586                'type'  => $html5 ? 'url' : 'text',
     1587                'value' => esc_attr( $commenter['comment_author_url'] ),
     1588                'size'  => '30'
     1589        );
     1590        if ( $html5 ) {
     1591                $url_input_attr['pattern'] = '';
     1592                $url_input_attr['placeholder'] = __( 'http://YourWebsite.com' );
     1593        }
     1594
    15231595        $fields =  array(
    15241596                'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
    1525                             '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
     1597                                        input_builder( $author_input_attr ) . '</p>',
    15261598                'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
    1527                             '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
     1599                                        input_builder( $email_input_attr ) . '</p>',
    15281600                'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
    1529                             '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
     1601                                        input_builder( $url_input_attr ) . '</p>',
    15301602        );
    15311603
    15321604        $required_text = sprintf( ' ' . __('Required fields are marked %s'), '<span class="required">*</span>' );