Making WordPress.org

Ticket #1649: 1649.2.patch

File 1649.2.patch, 21.1 KB (added by keesiemeijer, 8 years ago)

Add reddit-style voting and add avatar back.

  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/comments.php

     
    4242                                if ( is_singular( 'post' ) ) {
    4343                                        wp_list_comments();
    4444                                } else {
    45                                         wp_list_comments( array( 'callback' => 'wporg_developer_user_note' ) );
     45                                        $ordered_comments = wporg_developer_get_ordered_notes();
     46                                        if( $ordered_comments ) {
     47                                                wp_list_comments(array( 'callback' => 'wporg_developer_user_note' ), $ordered_comments );
     48                                        }
    4649                                }
    4750                        ?>
    4851                </ol><!-- .comment-list -->
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php

     
    7272                }
    7373        endif;
    7474
    75         if ( ! function_exists( 'wporg_developer_user_note' ) ) :
     75        if ( ! function_exists( 'wporg_developer_get_ordered_notes' ) ) :
    7676                /**
    77                  * Template for user contributed notes.
     77                 * Get contibuted notes ordered by vote
     78                 *
     79                 * By default only top level comments are returned.
     80                 * If child notes are included use wp_list_comments() or a custom walker for display.
     81                 * unapproved notes for the current user are included.
    7882                 *
    79                  * Used as a callback by wp_list_comments() for displaying the notes.
     83                 * @param integer $post_id Optional. Post id to get comments for
     84                 * @param array $args Arguments used for get_comments().
     85                 * @return array Array with comment objects
    8086                 */
    81                 function wporg_developer_user_note( $comment, $args, $depth ) {
    82                         $GLOBALS['comment'] = $comment;
     87                function wporg_developer_get_ordered_notes( $post_id = 0, $args = array() ) {
    8388
    84                         if ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) : ?>
     89                        $post_id = absint( $post_id );
    8590
    86                                 <li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
    87                                 <div class="comment-body">
    88                                         <?php _e( 'Pingback:', 'wporg' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit', 'wporg' ), '<span class="edit-link">', '</span>' ); ?>
    89                                 </div>
     91                        if ( ! $post_id ) {
     92                                $post_id = get_the_ID();
     93                        }
    9094
    91                         <?php else : ?>
     95                        $order    = array();
     96                        $defaults = array(
     97                                        'post__in' => array( $post_id ),
     98                                        'type' => 'comment',
     99                                        'status' => 'approve',
     100                                        'include_unapproved' => array_filter( array( get_current_user_id() ) ),
     101                                        'parent' => false,
     102                                );
    92103
    93                                 <li id="comment-<?php comment_ID(); ?>" <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?>>
    94                                 <article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
    95                                         <div class="comment-content">
    96                                                 <?php comment_text(); ?>
    97                                         </div>
    98                                         <!-- .comment-content -->
     104                        if( is_super_admin() ) {
     105                                $defaults['status'] = 'all';
     106                        }
    99107
    100                                         <footer class="comment-meta">
    101                                                 <?php DevHub_User_Contributed_Notes_Voting::show_voting(); ?>
    102                                                 <div class="comment-author vcard">
    103                                                         <span class="comment-author-attribution">
    104                                                         <?php if ( 0 != $args['avatar_size'] ) {
     108                        $args = wp_parse_args( $args, $defaults );
     109
     110                        $comments = get_comments( $args );
     111               
     112                        if ( empty( $comments ) ) {
     113                                return;
     114                        }
     115
     116                        foreach ( $comments as $key => $comment ) {
     117                                $order[ $key ] = (int) DevHub_User_Contributed_Notes_Voting::count_votes( $comment->comment_ID, 'difference' );
     118                        }
     119
     120                        // sort the posts by votes
     121                        array_multisort( $order, SORT_DESC, $comments );
     122
     123                        return $comments;
     124                }
     125        endif;
     126
     127        if ( ! function_exists( 'wporg_developer_user_note' ) ) :
     128                /**
     129                 * Template for user contributed notes.
     130                 */
     131                function wporg_developer_user_note( $comment, $args, $depth ) {
     132                        $GLOBALS['comment'] = $comment;
     133                        $count = (int) DevHub_User_Contributed_Notes_Voting::count_votes( $comment->comment_ID, 'difference' );
     134                        $comment_class = ( -1 > $count ) ? 'bad-note' : '';
     135                        ?>
     136
     137                        <li id="comment-<?php comment_ID(); ?>" <?php comment_class( $comment_class ); ?>>
     138                        <article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
     139                                <header class="comment-meta">
     140                                        <?php DevHub_User_Contributed_Notes_Voting::show_voting(); ?>
     141                                        <div class="comment-author vcard">
     142                                                <span class="comment-author-attribution">
     143                                                <?php if ( 0 != $args['avatar_size'] ) {
    105144                                                                echo get_avatar( $comment, $args['avatar_size'] );
    106                                                         } ?>
     145                                                } ?>
    107146
    108                                                         <?php
    109                                                                 // This would all be moot if core passed the $comment context for 'get_comment_author_link' filter
    110                                                                 if ( $comment->user_id ) {
    111                                                                         $commenter = get_user_by( 'id', $comment->user_id );
    112                                                                         $url = 'https://profiles.wordpress.org/' . esc_attr( $commenter->user_nicename ) . '/';
    113                                                                         $author = get_the_author_meta( 'display_name', $comment->user_id );
    114                                                                         $comment_author_link = "<a href='$url' rel='external nofollow' class='url'>$author</a>";
    115                                                                 } else {
    116                                                                         $comment_author_link = '';
    117                                                                 }
    118                                                                 printf( __( 'Contributed by %s', 'wporg' ), sprintf( '<cite class="fn">%s</cite>', $comment_author_link ) );
     147                                                <?php
     148                                                        // This would all be moot if core passed the $comment context for 'get_comment_author_link' filter
     149                                                        if ( $comment->user_id ) {
     150                                                                $commenter = get_user_by( 'id', $comment->user_id );
     151                                                                $url = 'https://profiles.wordpress.org/' . esc_attr( $commenter->user_nicename ) . '/';
     152                                                                $author = get_the_author_meta( 'display_name', $comment->user_id );
     153                                                                $comment_author_link = "<a href='$url' rel='external nofollow' class='url'>$author</a>";
     154                                                        } else {
     155                                                                $comment_author_link = '';
     156                                                        }
     157                                                        printf( __( 'Contributed by %s', 'wporg' ), sprintf( '<cite class="fn">%s</cite>', $comment_author_link ) );
     158                                                ?>
     159
     160                                                </span>
     161                                                &mdash;
     162                                                <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
     163                                                        <time datetime="<?php comment_time( 'c' ); ?>">
     164                                                        <?php
     165                                                                printf( _x( '%1$s ago', '%1$s = human-readable time difference', 'wporg' ),
     166                                                                        human_time_diff( get_comment_time( 'U' ),
     167                                                                        current_time( 'timestamp' ) )
     168                                                                );
    119169                                                        ?>
     170                                                        </time>
     171                                                </a>
     172                                                <?php edit_comment_link( __( 'Edit', 'wporg' ), '<span class="edit-link">&mdash; ', '</span>' ); ?>
     173                                        </div>
     174                                </header>
     175                                <!-- .comment-metadata -->
    120176
    121                                                         </span>
    122                                                         &mdash;
    123                                                         Added on <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
    124                                                                 <time datetime="<?php comment_time( 'c' ); ?>">
    125                                                                         <?php printf( _x( '%1$s at %2$s', '1: date, 2: time', 'wporg' ), get_comment_date(), get_comment_time() ); ?>
    126                                                                 </time>
    127                                                         </a>
    128                                                         <?php edit_comment_link( __( 'Edit', 'wporg' ), '<span class="edit-link">&mdash; ', '</span>' ); ?>
    129                                                 </div>
    130                                                 <!-- .comment-metadata -->
     177                                <div class="comment-content">
     178                                        <?php comment_text(); ?>
     179                                </div>
     180                                <!-- .comment-content -->
    131181
    132                                                 <?php if ( '0' == $comment->comment_approved ) : ?>
    133                                                         <p class="comment-awaiting-moderation"> &mdash; <?php _e( 'Your note is awaiting moderation.', 'wporg' ); ?></p>
    134                                                 <?php endif; ?>
     182                                <?php if ( '0' == $comment->comment_approved ) : ?>
     183                                        <footer class="comment-footer">
     184                                                <p class="comment-awaiting-moderation"><?php _e( 'Your note is awaiting moderation.', 'wporg' ); ?></p>
    135185                                        </footer>
    136                                         <!-- .comment-meta -->
     186                                        <!-- .comment-footer -->
     187                                <?php endif; ?>
    137188
    138                                         <?php
     189                                <?php
    139190                                        comment_reply_link( array_merge( $args, array(
    140191                                                'add_below' => 'div-comment',
    141192                                                'depth'     => $depth,
     
    143194                                                'before'    => '<div class="reply">',
    144195                                                'after'     => '</div>',
    145196                                        ) ) );
    146                                         ?>
    147                                 </article><!-- .comment-body -->
    148 
     197                                ?>
     198                        </article><!-- .comment-body -->
    149199                        <?php
    150                         endif;
    151200                }
    152201        endif; // ends check for wporg_developer_user_note()
    153202
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/user-content-voting.php

     
    263263                }
    264264
    265265                $can_vote     = self::user_can_vote( get_current_user_id(), $comment_id );
     266                $logged_in    = is_user_logged_in();
    266267                $comment_link = get_comment_link( $comment_id );
    267268                $nonce        = wp_create_nonce( 'user-note-vote-' . $comment_id );
     269                $cancel_str   = __( 'Click to cancel vote', 'wporg' );
     270                $disabled_str = __( 'Voting for this note is disabled', 'wporg' );
     271                $log_in_str   = __( 'You must log in to vote on the helpfulness of this note', 'wporg' );
    268272
    269                 echo '<div class="user-note-voting" data-nonce="' . esc_attr( $nonce ) . '">';
     273                echo '<div class="user-note-voting" aria-live="polite" data-nonce="' . esc_attr( $nonce ) . '">';
    270274
    271275                // Up vote link
    272276                $user_upvoted = self::has_user_upvoted_comment( $comment_id );
     277                $button_text    = __('Vote up button', 'wporg');
    273278                if ( $can_vote ) {
     279                        $cancel = $user_upvoted ? '. ' . $cancel_str . '.' : '';
    274280                        $title = $user_upvoted ?
    275                                 __( 'You have voted to indicate this note was helpful', 'wporg' ) :
     281                                __( 'You have voted to indicate this note was helpful', 'wporg' ) . $cancel :
    276282                                __( 'Vote up if this note was helpful', 'wporg' );
    277                         $tag = $user_upvoted ? 'span' : 'a';
     283                        $tag = 'a';
    278284                } else {
    279                         $title = ! is_user_logged_in() ?
    280                                 __( 'You must log in to vote on the helpfulness of this note', 'wporg' ) :
    281                                 '';
     285                        $title = ! $logged_in ? $log_in_str : $disabled_str;
     286                        $button_text = __('Disabled vote down button', 'wporg');
    282287                        $tag = 'span';
    283288                }
     289
     290                // WAI-ARIA
     291                echo "<span class='screen-reader-text'>" . $title . '</span>';
     292                echo "<span id='vote-up-{$comment_id}' style='display:none;'>" . $button_text . '</span>';
     293
    284294                echo "<{$tag} "
    285295                        . 'class="user-note-voting-up' . ( $user_upvoted ? ' user-voted' : '' )
    286296                        . '" title="' . esc_attr( $title )
    287297                        . '" data-id="' . esc_attr( $comment_id )
    288                         . '" data-vote="up';
    289                 if ( ! $user_upvoted ) {
     298                        . '" data-vote="up'
     299                        . '" aria-labelledby="vote-up-' . $comment_id;
     300                if ( 'a' === $tag ) {
    290301                        echo '" href="'
    291302                                . esc_url( add_query_arg( array( '_wpnonce' => $nonce , 'comment' => $comment_id, 'vote' => 'up' ), $comment_link ) );
    292303                }
     
    299310                $title = ( 0 == self::count_votes( $comment_id, 'total' ) ) ?
    300311                        '' :
    301312                        sprintf( __( '%s like this', 'wporg' ), self::count_votes( $comment_id, 'like_percentage' ) . '%' );
    302                 $class = '';
    303313                echo '<span '
    304                         . 'class="user-note-voting-count ' . esc_attr( $class ) . '" '
    305                         . 'title="' . esc_attr( $title ) . '">'
     314                        . 'class="user-note-voting-count" '
     315                        . 'title="' . esc_attr( $title ) . '">'
     316                        . '<span class="screen-reader-text">' . __('User vote count', 'wporg') . '</span>'
    306317                        . self::count_votes( $comment_id, 'difference' )
    307318                        . '</span>';
    308319
    309320                // Down vote link
    310321                $user_downvoted = ( $user_upvoted ? false : self::has_user_downvoted_comment( $comment_id ) );
     322                $button_text    = __('Vote down button', 'wporg');
    311323                if ( $can_vote ) {
     324                        $cancel = $user_downvoted ? '. ' . $cancel_str . '.' : '';
    312325                        $title = $user_downvoted ?
    313                                 __( 'You have voted to indicate this note was not helpful', 'wporg' ) :
     326                                __( 'You have voted to indicate this note was not helpful', 'wporg' ) . $cancel :
    314327                                __( 'Vote down if this note was not helpful', 'wporg' );
    315                         $tag = $user_downvoted ? 'span' : 'a';
     328                        $tag = 'a';
    316329                } else {
    317                         $title = ! is_user_logged_in() ?
    318                                 __( 'You must log in to vote on the helpfulness of this note', 'wporg' ) :
    319                                 '';
     330                        $title = ! $logged_in ? $log_in_str : $disabled_str;
     331                        $button_text = __('Disabled vote down button', 'wporg');
    320332                        $tag = 'span';
    321333                }
     334
     335                // WAI-ARIA
     336                echo $title ? "<span class='screen-reader-text'>" . $title . '</span>' : '';
     337                echo "<span id='vote-down-{$comment_id}' style='display:none;'>" . $button_text . '</span>';
     338
    322339                echo "<{$tag} "
    323340                        . 'class="user-note-voting-down' . ( $user_downvoted ? ' user-voted' : '' )
    324341                        . '" title="' . esc_attr( $title )
    325342                        . '" data-id="' . esc_attr( $comment_id )
    326                         . '" data-vote="down';
    327                 if ( ! $user_downvoted ) {
     343                        . '" data-vote="down'
     344                        . '" aria-labelledby="vote-down-' . $comment_id;
     345                if ( 'a' === $tag ) {
    328346                        echo '" href="'
    329347                                . esc_url( add_query_arg( array( '_wpnonce' => $nonce , 'comment' => $comment_id, 'vote' => 'down' ), $comment_link ) );
    330348                }
     
    443461                // Get list of people who cast the same vote.
    444462                $add_to_list = get_comment_meta( $comment_id, $add_to, true );
    445463
    446                 // Don't do anything if user is recasting the same vote as before.
     464                // Remove from list if recasting the same vote as before.
    447465                if ( in_array( $user_id, (array) $add_to_list ) ) {
    448                         return false;
     466                        unset( $add_to_list[ array_search( $user_id, $add_to_list ) ] );
     467                        update_comment_meta( $comment_id, $add_to, $add_to_list );
     468                        return true;
    449469                }
    450470
    451471                // If the user had previously cast the opposite vote, undo that older vote.
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/scss/main.scss

     
    11321132        }
    11331133
    11341134        .source-code-container {
    1135                 border-right: 1px solid #dfdfdf;
    11361135                overflow-x: auto;
    11371136                overflow-y: hidden;
    11381137        }
     
    11541153
    11551154        // User contributed notes
    11561155        &.single-wp-parser-function, &.single-wp-parser-method, &.single-wp-parser-hook {
     1156
     1157                .bad-note .comment-content {
     1158                        opacity: .6;
     1159                }
     1160
     1161                .bad-note .comment-content:hover {
     1162                        opacity: 1;
     1163                }
     1164
    11571165                .comment-list,
    11581166                .comment-list ol {
    11591167                        list-style: none;
     
    11621170                }
    11631171
    11641172                .comment-list li {
    1165                         padding: 2rem 1.5rem 1rem;
     1173                        margin-top: 2.5rem;
    11661174                        background: #fff;
    11671175                        overflow: auto;
     1176                        border: 1px solid #dfdfdf;
     1177                        border-radius: 2px;
    11681178
    1169                         &:first-child {
    1170                                 padding-top: 1rem;
    1171                         }
    1172 
    11731179                        article {
    1174                                 border-bottom: 1px solid #dfdfdf;
    1175                                 padding-bottom: 1em;
    11761180                                overflow: auto;
    11771181                        }
    11781182                }
    11791183
    11801184                .comment-list .avatar {
    11811185                        float: left;
    1182                         width: 2.5em;
    1183                         height: 2.5em;
    1184                         margin: -0.5em 1em 0.5em 0;
     1186                        margin: -2px 1em 0 0;
    11851187                        padding: 0.125em;
    11861188                        border: 1px solid #eee;
    11871189                }
    11881190
    11891191                .comment-author-attribution {
    1190                         font-weight: bold;
    11911192                }
    11921193
    11931194                .comment-meta {
    1194                         margin: 0 0 1.5em 0;
    1195                         font-size: 0.75em;
     1195                        padding: .5em 1em;
     1196                        background-color: #f7f7f7;
     1197                        overflow: auto;
    11961198                }
    11971199
    11981200                .comment-meta .comment-author cite,
    11991201                .comment-meta .comment-author cite a {
    12001202                }
     1203
    12011204                .comment-meta a {
    12021205                }
    12031206
     
    12091212                        margin-left: 3.75rem;
    12101213                        margin-left: 0;
    12111214                        clear: both;
     1215                        padding: 2rem 1.5rem .5rem;
    12121216                }
    12131217
     1218                .comment-footer {
     1219                        margin: 0 1em;
     1220                        padding: 0 0 1em 0;
     1221                        position: relative;
     1222                        overflow: auto;
     1223
     1224                        a {
     1225                                float: right;
     1226                        }
     1227
     1228                        p {
     1229                                margin-bottom: 0;
     1230                        }
     1231                }
     1232
    12141233                .comment-content ol {
    12151234                        list-style: decimal inside;
    12161235                        margin: 0 0 1.5em 0;
     
    12671286
    12681287                .comment-author {
    12691288                        float: left;
     1289                        line-height: 1.8;
    12701290                }
     1291
     1292                #add-user-note {
     1293                        font-size: 1.6rem;
     1294                }
    12711295        }
    12721296
    12731297        &.single-post {
     
    14131437        }
    14141438
    14151439        .user-note-voting {
    1416                 font-size: 1.5em;
     1440                font-size: 1.2em;
    14171441                clear: left;
    14181442                float: left;
    1419                 margin-top: -5px;
    14201443                margin-right: 10px;
    14211444        }
    14221445        .user-note-voting-up .dashicons, .user-note-voting-down .dashicons {
     
    14281451        .user-note-voting-up {
    14291452                margin-left: -9px;
    14301453        }
     1454
     1455        span.user-note-voting-up,
     1456        span.user-note-voting-down {
     1457                cursor: default;
     1458        }
     1459
    14311460        .user-note-voting-count {
    14321461                margin-right: -2px;
    14331462        }
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/stylesheets/main.css

     
    13151315  padding-left: 0;
    13161316}
    13171317.devhub-wrap .source-code-container {
    1318   border-right: 1px solid #dfdfdf;
    13191318  overflow-x: auto;
    13201319  overflow-y: hidden;
    13211320}
     
    13301329.devhub-wrap .comment-content a {
    13311330  word-wrap: break-word;
    13321331}
     1332.devhub-wrap.single-wp-parser-function .bad-note .comment-content, .devhub-wrap.single-wp-parser-method .bad-note .comment-content, .devhub-wrap.single-wp-parser-hook .bad-note .comment-content {
     1333  opacity: .6;
     1334}
     1335.devhub-wrap.single-wp-parser-function .bad-note .comment-content:hover, .devhub-wrap.single-wp-parser-method .bad-note .comment-content:hover, .devhub-wrap.single-wp-parser-hook .bad-note .comment-content:hover {
     1336  opacity: 1;
     1337}
    13331338.devhub-wrap.single-wp-parser-function .comment-list,
    13341339.devhub-wrap.single-wp-parser-function .comment-list ol, .devhub-wrap.single-wp-parser-method .comment-list,
    13351340.devhub-wrap.single-wp-parser-method .comment-list ol, .devhub-wrap.single-wp-parser-hook .comment-list,
     
    13391344  padding: 0;
    13401345}
    13411346.devhub-wrap.single-wp-parser-function .comment-list li, .devhub-wrap.single-wp-parser-method .comment-list li, .devhub-wrap.single-wp-parser-hook .comment-list li {
    1342   padding: 2rem 1.5rem 1rem;
     1347  margin-top: 2.5rem;
    13431348  background: #fff;
    13441349  overflow: auto;
     1350  border: 1px solid #dfdfdf;
     1351  border-radius: 2px;
    13451352}
    1346 .devhub-wrap.single-wp-parser-function .comment-list li:first-child, .devhub-wrap.single-wp-parser-method .comment-list li:first-child, .devhub-wrap.single-wp-parser-hook .comment-list li:first-child {
    1347   padding-top: 1rem;
    1348 }
    13491353.devhub-wrap.single-wp-parser-function .comment-list li article, .devhub-wrap.single-wp-parser-method .comment-list li article, .devhub-wrap.single-wp-parser-hook .comment-list li article {
    1350   border-bottom: 1px solid #dfdfdf;
    1351   padding-bottom: 1em;
    13521354  overflow: auto;
    13531355}
    13541356.devhub-wrap.single-wp-parser-function .comment-list .avatar, .devhub-wrap.single-wp-parser-method .comment-list .avatar, .devhub-wrap.single-wp-parser-hook .comment-list .avatar {
    13551357  float: left;
    1356   width: 2.5em;
    1357   height: 2.5em;
    1358   margin: -0.5em 1em 0.5em 0;
     1358  margin: -2px 1em 0 0;
    13591359  padding: 0.125em;
    13601360  border: 1px solid #eee;
    13611361}
    1362 .devhub-wrap.single-wp-parser-function .comment-author-attribution, .devhub-wrap.single-wp-parser-method .comment-author-attribution, .devhub-wrap.single-wp-parser-hook .comment-author-attribution {
    1363   font-weight: bold;
    1364 }
    13651362.devhub-wrap.single-wp-parser-function .comment-meta, .devhub-wrap.single-wp-parser-method .comment-meta, .devhub-wrap.single-wp-parser-hook .comment-meta {
    1366   margin: 0 0 1.5em 0;
    1367   font-size: 0.75em;
     1363  padding: .5em 1em;
     1364  background-color: #f7f7f7;
     1365  overflow: auto;
    13681366}
    13691367.devhub-wrap.single-wp-parser-function .comment-content, .devhub-wrap.single-wp-parser-method .comment-content, .devhub-wrap.single-wp-parser-hook .comment-content {
    13701368  margin-left: 60px;
    13711369  margin-left: 3.75rem;
    13721370  margin-left: 0;
    13731371  clear: both;
     1372  padding: 2rem 1.5rem .5rem;
    13741373}
     1374.devhub-wrap.single-wp-parser-function .comment-footer, .devhub-wrap.single-wp-parser-method .comment-footer, .devhub-wrap.single-wp-parser-hook .comment-footer {
     1375  margin: 0 1em;
     1376  padding: 0 0 1em 0;
     1377  position: relative;
     1378  overflow: auto;
     1379}
     1380.devhub-wrap.single-wp-parser-function .comment-footer a, .devhub-wrap.single-wp-parser-method .comment-footer a, .devhub-wrap.single-wp-parser-hook .comment-footer a {
     1381  float: right;
     1382}
     1383.devhub-wrap.single-wp-parser-function .comment-footer p, .devhub-wrap.single-wp-parser-method .comment-footer p, .devhub-wrap.single-wp-parser-hook .comment-footer p {
     1384  margin-bottom: 0;
     1385}
    13751386.devhub-wrap.single-wp-parser-function .comment-content ol, .devhub-wrap.single-wp-parser-method .comment-content ol, .devhub-wrap.single-wp-parser-hook .comment-content ol {
    13761387  list-style: decimal inside;
    13771388  margin: 0 0 1.5em 0;
     
    14051416}
    14061417.devhub-wrap.single-wp-parser-function .comment-author, .devhub-wrap.single-wp-parser-method .comment-author, .devhub-wrap.single-wp-parser-hook .comment-author {
    14071418  float: left;
     1419  line-height: 1.8;
    14081420}
     1421.devhub-wrap.single-wp-parser-function #add-user-note, .devhub-wrap.single-wp-parser-method #add-user-note, .devhub-wrap.single-wp-parser-hook #add-user-note {
     1422  font-size: 1.6rem;
     1423}
    14091424.devhub-wrap.single-post .comment-list,
    14101425.devhub-wrap.single-post .comment-list ol {
    14111426  list-style: none;
     
    15161531  color: #555 !important;
    15171532}
    15181533.devhub-wrap .user-note-voting {
    1519   font-size: 1.5em;
     1534  font-size: 1.2em;
    15201535  clear: left;
    15211536  float: left;
    1522   margin-top: -5px;
    15231537  margin-right: 10px;
    15241538}
    15251539.devhub-wrap .user-note-voting-up .dashicons, .devhub-wrap .user-note-voting-down .dashicons {
     
    15311545.devhub-wrap .user-note-voting-up {
    15321546  margin-left: -9px;
    15331547}
     1548.devhub-wrap span.user-note-voting-up,
     1549.devhub-wrap span.user-note-voting-down {
     1550  cursor: default;
     1551}
    15341552.devhub-wrap .user-note-voting-count {
    15351553  margin-right: -2px;
    15361554}