Ticket #1649: 1649.2.patch
File 1649.2.patch, 21.1 KB (added by , 8 years ago) |
---|
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/comments.php
42 42 if ( is_singular( 'post' ) ) { 43 43 wp_list_comments(); 44 44 } 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 } 46 49 } 47 50 ?> 48 51 </ol><!-- .comment-list --> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php
72 72 } 73 73 endif; 74 74 75 if ( ! function_exists( 'wporg_developer_ user_note' ) ) :75 if ( ! function_exists( 'wporg_developer_get_ordered_notes' ) ) : 76 76 /** 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. 78 82 * 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 80 86 */ 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() ) { 83 88 84 if ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) : ?>89 $post_id = absint( $post_id ); 85 90 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 } 90 94 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 ); 92 103 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 } 99 107 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'] ) { 105 144 echo get_avatar( $comment, $args['avatar_size'] ); 106 145 } ?> 107 146 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 — 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 ); 119 169 ?> 170 </time> 171 </a> 172 <?php edit_comment_link( __( 'Edit', 'wporg' ), '<span class="edit-link">— ', '</span>' ); ?> 173 </div> 174 </header> 175 <!-- .comment-metadata --> 120 176 121 </span> 122 — 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">— ', '</span>' ); ?> 129 </div> 130 <!-- .comment-metadata --> 177 <div class="comment-content"> 178 <?php comment_text(); ?> 179 </div> 180 <!-- .comment-content --> 131 181 132 133 <p class="comment-awaiting-moderation"> — <?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> 135 185 </footer> 136 <!-- .comment-meta --> 186 <!-- .comment-footer --> 187 <?php endif; ?> 137 188 138 189 <?php 139 190 comment_reply_link( array_merge( $args, array( 140 191 'add_below' => 'div-comment', 141 192 'depth' => $depth, … … 143 194 'before' => '<div class="reply">', 144 195 'after' => '</div>', 145 196 ) ) ); 146 ?> 147 </article><!-- .comment-body --> 148 197 ?> 198 </article><!-- .comment-body --> 149 199 <?php 150 endif;151 200 } 152 201 endif; // ends check for wporg_developer_user_note() 153 202 -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/user-content-voting.php
263 263 } 264 264 265 265 $can_vote = self::user_can_vote( get_current_user_id(), $comment_id ); 266 $logged_in = is_user_logged_in(); 266 267 $comment_link = get_comment_link( $comment_id ); 267 268 $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' ); 268 272 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 ) . '">'; 270 274 271 275 // Up vote link 272 276 $user_upvoted = self::has_user_upvoted_comment( $comment_id ); 277 $button_text = __('Vote up button', 'wporg'); 273 278 if ( $can_vote ) { 279 $cancel = $user_upvoted ? '. ' . $cancel_str . '.' : ''; 274 280 $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 : 276 282 __( 'Vote up if this note was helpful', 'wporg' ); 277 $tag = $user_upvoted ? 'span' :'a';283 $tag = 'a'; 278 284 } 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'); 282 287 $tag = 'span'; 283 288 } 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 284 294 echo "<{$tag} " 285 295 . 'class="user-note-voting-up' . ( $user_upvoted ? ' user-voted' : '' ) 286 296 . '" title="' . esc_attr( $title ) 287 297 . '" 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 ) { 290 301 echo '" href="' 291 302 . esc_url( add_query_arg( array( '_wpnonce' => $nonce , 'comment' => $comment_id, 'vote' => 'up' ), $comment_link ) ); 292 303 } … … 299 310 $title = ( 0 == self::count_votes( $comment_id, 'total' ) ) ? 300 311 '' : 301 312 sprintf( __( '%s like this', 'wporg' ), self::count_votes( $comment_id, 'like_percentage' ) . '%' ); 302 $class = '';303 313 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>' 306 317 . self::count_votes( $comment_id, 'difference' ) 307 318 . '</span>'; 308 319 309 320 // Down vote link 310 321 $user_downvoted = ( $user_upvoted ? false : self::has_user_downvoted_comment( $comment_id ) ); 322 $button_text = __('Vote down button', 'wporg'); 311 323 if ( $can_vote ) { 324 $cancel = $user_downvoted ? '. ' . $cancel_str . '.' : ''; 312 325 $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 : 314 327 __( 'Vote down if this note was not helpful', 'wporg' ); 315 $tag = $user_downvoted ? 'span' :'a';328 $tag = 'a'; 316 329 } 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'); 320 332 $tag = 'span'; 321 333 } 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 322 339 echo "<{$tag} " 323 340 . 'class="user-note-voting-down' . ( $user_downvoted ? ' user-voted' : '' ) 324 341 . '" title="' . esc_attr( $title ) 325 342 . '" 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 ) { 328 346 echo '" href="' 329 347 . esc_url( add_query_arg( array( '_wpnonce' => $nonce , 'comment' => $comment_id, 'vote' => 'down' ), $comment_link ) ); 330 348 } … … 443 461 // Get list of people who cast the same vote. 444 462 $add_to_list = get_comment_meta( $comment_id, $add_to, true ); 445 463 446 // Don't do anything if user isrecasting the same vote as before.464 // Remove from list if recasting the same vote as before. 447 465 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; 449 469 } 450 470 451 471 // 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
1132 1132 } 1133 1133 1134 1134 .source-code-container { 1135 border-right: 1px solid #dfdfdf;1136 1135 overflow-x: auto; 1137 1136 overflow-y: hidden; 1138 1137 } … … 1154 1153 1155 1154 // User contributed notes 1156 1155 &.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 1157 1165 .comment-list, 1158 1166 .comment-list ol { 1159 1167 list-style: none; … … 1162 1170 } 1163 1171 1164 1172 .comment-list li { 1165 padding: 2rem 1.5rem 1rem;1173 margin-top: 2.5rem; 1166 1174 background: #fff; 1167 1175 overflow: auto; 1176 border: 1px solid #dfdfdf; 1177 border-radius: 2px; 1168 1178 1169 &:first-child {1170 padding-top: 1rem;1171 }1172 1173 1179 article { 1174 border-bottom: 1px solid #dfdfdf;1175 padding-bottom: 1em;1176 1180 overflow: auto; 1177 1181 } 1178 1182 } 1179 1183 1180 1184 .comment-list .avatar { 1181 1185 float: left; 1182 width: 2.5em; 1183 height: 2.5em; 1184 margin: -0.5em 1em 0.5em 0; 1186 margin: -2px 1em 0 0; 1185 1187 padding: 0.125em; 1186 1188 border: 1px solid #eee; 1187 1189 } 1188 1190 1189 1191 .comment-author-attribution { 1190 font-weight: bold;1191 1192 } 1192 1193 1193 1194 .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; 1196 1198 } 1197 1199 1198 1200 .comment-meta .comment-author cite, 1199 1201 .comment-meta .comment-author cite a { 1200 1202 } 1203 1201 1204 .comment-meta a { 1202 1205 } 1203 1206 … … 1209 1212 margin-left: 3.75rem; 1210 1213 margin-left: 0; 1211 1214 clear: both; 1215 padding: 2rem 1.5rem .5rem; 1212 1216 } 1213 1217 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 1214 1233 .comment-content ol { 1215 1234 list-style: decimal inside; 1216 1235 margin: 0 0 1.5em 0; … … 1267 1286 1268 1287 .comment-author { 1269 1288 float: left; 1289 line-height: 1.8; 1270 1290 } 1291 1292 #add-user-note { 1293 font-size: 1.6rem; 1294 } 1271 1295 } 1272 1296 1273 1297 &.single-post { … … 1413 1437 } 1414 1438 1415 1439 .user-note-voting { 1416 font-size: 1. 5em;1440 font-size: 1.2em; 1417 1441 clear: left; 1418 1442 float: left; 1419 margin-top: -5px;1420 1443 margin-right: 10px; 1421 1444 } 1422 1445 .user-note-voting-up .dashicons, .user-note-voting-down .dashicons { … … 1428 1451 .user-note-voting-up { 1429 1452 margin-left: -9px; 1430 1453 } 1454 1455 span.user-note-voting-up, 1456 span.user-note-voting-down { 1457 cursor: default; 1458 } 1459 1431 1460 .user-note-voting-count { 1432 1461 margin-right: -2px; 1433 1462 } -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/stylesheets/main.css
1315 1315 padding-left: 0; 1316 1316 } 1317 1317 .devhub-wrap .source-code-container { 1318 border-right: 1px solid #dfdfdf;1319 1318 overflow-x: auto; 1320 1319 overflow-y: hidden; 1321 1320 } … … 1330 1329 .devhub-wrap .comment-content a { 1331 1330 word-wrap: break-word; 1332 1331 } 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 } 1333 1338 .devhub-wrap.single-wp-parser-function .comment-list, 1334 1339 .devhub-wrap.single-wp-parser-function .comment-list ol, .devhub-wrap.single-wp-parser-method .comment-list, 1335 1340 .devhub-wrap.single-wp-parser-method .comment-list ol, .devhub-wrap.single-wp-parser-hook .comment-list, … … 1339 1344 padding: 0; 1340 1345 } 1341 1346 .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; 1343 1348 background: #fff; 1344 1349 overflow: auto; 1350 border: 1px solid #dfdfdf; 1351 border-radius: 2px; 1345 1352 } 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 }1349 1353 .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;1352 1354 overflow: auto; 1353 1355 } 1354 1356 .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 { 1355 1357 float: left; 1356 width: 2.5em; 1357 height: 2.5em; 1358 margin: -0.5em 1em 0.5em 0; 1358 margin: -2px 1em 0 0; 1359 1359 padding: 0.125em; 1360 1360 border: 1px solid #eee; 1361 1361 } 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 }1365 1362 .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; 1368 1366 } 1369 1367 .devhub-wrap.single-wp-parser-function .comment-content, .devhub-wrap.single-wp-parser-method .comment-content, .devhub-wrap.single-wp-parser-hook .comment-content { 1370 1368 margin-left: 60px; 1371 1369 margin-left: 3.75rem; 1372 1370 margin-left: 0; 1373 1371 clear: both; 1372 padding: 2rem 1.5rem .5rem; 1374 1373 } 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 } 1375 1386 .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 { 1376 1387 list-style: decimal inside; 1377 1388 margin: 0 0 1.5em 0; … … 1405 1416 } 1406 1417 .devhub-wrap.single-wp-parser-function .comment-author, .devhub-wrap.single-wp-parser-method .comment-author, .devhub-wrap.single-wp-parser-hook .comment-author { 1407 1418 float: left; 1419 line-height: 1.8; 1408 1420 } 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 } 1409 1424 .devhub-wrap.single-post .comment-list, 1410 1425 .devhub-wrap.single-post .comment-list ol { 1411 1426 list-style: none; … … 1516 1531 color: #555 !important; 1517 1532 } 1518 1533 .devhub-wrap .user-note-voting { 1519 font-size: 1. 5em;1534 font-size: 1.2em; 1520 1535 clear: left; 1521 1536 float: left; 1522 margin-top: -5px;1523 1537 margin-right: 10px; 1524 1538 } 1525 1539 .devhub-wrap .user-note-voting-up .dashicons, .devhub-wrap .user-note-voting-down .dashicons { … … 1531 1545 .devhub-wrap .user-note-voting-up { 1532 1546 margin-left: -9px; 1533 1547 } 1548 .devhub-wrap span.user-note-voting-up, 1549 .devhub-wrap span.user-note-voting-down { 1550 cursor: default; 1551 } 1534 1552 .devhub-wrap .user-note-voting-count { 1535 1553 margin-right: -2px; 1536 1554 }