Changeset 7754 for sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php
- Timestamp:
- 10/19/2018 10:56:22 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php
r7753 r7754 114 114 // Check if the current page is a reply to a note. 115 115 $reply_id = 0; 116 if ( isset( $_GET['replytocom'] ) && $_GET['replytocom'] ) { 116 if ( isset( $_GET['replytocom'] ) && $_GET['replytocom'] ) { 117 /* Javascript uses preventDefault() when clicking links with '?replytocom={comment_ID}' 118 * We assume Javascript is disabled when visiting a page with this query var. 119 * There are no consequences if Javascript is enabled. 120 */ 117 121 $reply_id = absint( $_GET['replytocom'] ); 118 122 } … … 143 147 } 144 148 145 if ( ! $show_editor && ( $reply_id && ( $reply_id === (int) $comment->comment_ID ) ) ) { 146 // Show the editor when replying to this parent comment 149 if ( ! $show_editor && ( $reply_id && ( $reply_id === (int) $comment->comment_ID ) ) ) { 150 /* The query var 'replytocom' is used and the value is the same as the current comment ID. 151 * We show the editor for the current comment because we assume Javascript is disabled. 152 * If Javascript is not disabled the editor is hidden (as normal) by the class 'hide-if-js'. 153 */ 147 154 $comments[ $key ]->show_editor = true; 148 155 $show_editor = true; … … 165 172 */ 166 173 function wporg_developer_list_notes( $comments, $args ) { 174 $is_user_content = class_exists( 'DevHub_User_Submitted_Content' ); 167 175 $is_user_logged_in = is_user_logged_in(); 168 176 $can_user_post_note = DevHub\can_user_post_note( true, get_the_ID() ); 169 $user_content = class_exists( 'DevHub_User_Submitted_Content' ); 170 $display_editor = $is_user_logged_in && $can_user_post_note && $user_content; 177 $is_user_verified = $is_user_logged_in && $can_user_post_note; 178 179 $args['updated_note'] = 0; 180 if ( isset( $_GET['updated-note'] ) && $_GET['updated-note'] ) { 181 $args['updated_note'] = absint( $_GET['updated-note'] ); 182 } 171 183 172 184 foreach ( $comments as $comment ) { … … 177 189 wporg_developer_user_note( $comment, $args, 1 ); 178 190 179 // Show or hide feedback notes. 180 $class = $comment->show_editor ? '' : ' hide-if-js'; 181 echo "<section id='feedback-{$comment_id}' class='feedback{$class}'>\n"; 191 /* Use hide-if-js class to hide the feedback section if Javascript is enabled. 192 * Users can display the section with Javascript. 193 */ 194 echo "<section id='feedback-{$comment_id}' class='feedback hide-if-js'>\n"; 182 195 183 196 // Display child comments. … … 193 206 194 207 // Add a feedback form for logged in users. 195 if ( $display_editor ) { 196 // Show or hide the editor depending if we're replying to a note. 208 if ( $is_user_content && $is_user_verified ) { 209 /* Show the feedback editor if we're replying to a note and Javascript is disabled. 210 * If Javascript is enabled the editor is hidden (as normal) by the 'hide-if-js' class. 211 */ 197 212 $display = $comment->show_editor ? 'show' : 'hide'; 198 213 echo DevHub_User_Submitted_Content::wp_editor_feedback( $comment, $display ); … … 203 218 echo "<footer class='feedback-links' >\n"; 204 219 if ( $can_user_post_note ) { 205 echo "EEE";206 220 $feedback_link = trailingslashit( get_permalink() ) . "?replytocom={$comment_id}#feedback-editor-{$comment_id}"; 207 221 $display = ''; 208 $aria = '';209 222 if ( ! $is_user_logged_in ) { 210 223 $class = 'login'; … … 214 227 $class ='add'; 215 228 $feedback_text = __( 'Add feedback to this note', 'wporg' ); 216 $aria = '';//" aria-expanded='false' aria_controls='feedback-editor-{$comment_id}' aria-label='" . esc_attr( $feedback_text ) . "'"; 217 218 // Hide 'add feedback' link if editor is displayed. 219 $display = $display_editor && $comment->show_editor ? ' style="display:none"' : ''; 229 230 /* Hide the feedback link if the current user is logged in and the 231 * feedback editor is displayed (because Javascript is disabled). 232 * If Javascript is enabled the editor is hidden and the feedback link is displayed (as normal). 233 */ 234 $display = $is_user_verified && $comment->show_editor ? ' style="display:none"' : ''; 220 235 } 221 echo '<a class="feedback-' . $class . '" href="' . esc_url( $feedback_link ) . '"' . $display . $aria .' rel="nofollow">' . $feedback_text . '</a>';236 echo '<a role="button" class="feedback-' . $class . '" href="' . esc_url( $feedback_link ) . '"' . $display . ' rel="nofollow">' . $feedback_text . '</a>'; 222 237 } 223 238 … … 241 256 $GLOBALS['comment_depth'] = $depth; 242 257 258 static $note_number = 0; 259 243 260 $approved = ( 0 < (int) $comment->comment_approved ) ? true : false; 244 261 $is_parent = ( 0 === (int) $comment->comment_parent ) ? true : false; … … 246 263 $count = $is_voting ? (int) DevHub_User_Contributed_Notes_Voting::count_votes( $comment->comment_ID, 'difference' ) : 0; 247 264 $curr_user_note = $is_voting ? (bool) DevHub_User_Contributed_Notes_Voting::is_current_user_note( $comment->comment_ID ) : false; 248 249 // Classes 265 $edited_note_id = isset( $args['updated_note'] ) ? $args['updated_note'] : 0; 266 $is_edited_note = ( $edited_note_id === (int) $comment->comment_ID ); 267 $note_author = \DevHub\get_note_author_link( $comment ); 268 $can_edit_note = \DevHub\can_user_edit_note( $comment->comment_ID ); 269 $has_edit_cap = current_user_can( 'edit_comment', $comment->comment_ID ); 270 271 // CSS Classes 250 272 $comment_class = array(); 251 273 … … 260 282 if ( ! $approved ) { 261 283 $comment_class[] = 'user-note-moderated'; 262 }263 264 // This would all be moot if core passed the $comment context for 'get_comment_author_link' filter.265 if ( $comment->user_id ) {266 $commenter = get_user_by( 'id', $comment->user_id );267 $url = 'https://profiles.wordpress.org/' . sanitize_key( $commenter->user_nicename ) . '/';268 $author = get_the_author_meta( 'display_name', $comment->user_id );269 } else {270 $url = $comment->comment_author_url;271 $author = $comment->comment_author;272 }273 274 $comment_author_link = $author;275 if ( $url ) {276 $comment_author_link = "<a href='$url' rel='external nofollow' class='url'>$author</a>";277 284 } 278 285 … … 286 293 287 294 <?php if ( $is_parent ) : ?> 288 <a href="#comment-content-<?php echo $comment->comment_ID; ?>" class="screen-reader-text"><?php _e( 'Skip to note content', 'wporg'); ?></a>295 <a href="#comment-content-<?php echo $comment->comment_ID; ?>" class="screen-reader-text"><?php printf( __( 'Skip to note %d content', 'wporg' ), ++ $note_number ); ?></a> 289 296 <header class="comment-meta"> 290 297 … … 301 308 } 302 309 303 printf( __( 'Contributed by %s', 'wporg' ), sprintf( '<cite class="fn">%s</cite>', $ comment_author_link) );310 printf( __( 'Contributed by %s', 'wporg' ), sprintf( '<cite class="fn">%s</cite>', $note_author ) ); 304 311 ?> 305 312 306 313 </span> 307 314 — 308 <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">315 <a class="comment-date" href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"> 309 316 <time datetime="<?php comment_time( 'c' ); ?>"> 310 317 <?php echo $date; ?> 311 318 </time> 312 319 </a> 320 313 321 <?php edit_comment_link( __( 'Edit', 'wporg' ), '<span class="edit-link">— ', '</span>' ); ?> 322 <?php if ( ! $has_edit_cap && $can_edit_note ) : ?> 323 — <span class="comment-author-edit-link"> 324 <!-- Front end edit comment link --> 325 <a class="comment-edit-link" href="<?php echo site_url( "/reference/comment/edit/{$comment->comment_ID}" ); ?>"><?php _e( 'Edit', 'wporg' ); ?></a> 326 </span> 327 <?php endif; ?> 328 <?php if ( $can_edit_note && $is_edited_note ) : ?> 329 — <span class="comment-edited"> 330 <?php _e( 'edited', 'wporg' ); ?> 331 </span> 332 <?php endif; ?> 314 333 <?php if ( ! $approved ) : ?> 315 334 — <span class="comment-awaiting-moderation"><?php _e( 'awaiting moderation', 'wporg' ); ?></span> … … 326 345 } else { 327 346 $text = get_comment_text() . ' — '; 328 $text .= sprintf( __( 'By %s', 'wporg' ), sprintf( '<cite class="fn">%s</cite>', $ comment_author_link) ) . ' — ';329 $text .= ' <a href="'. esc_url( get_comment_link( $comment->comment_ID ) ) . '">';347 $text .= sprintf( __( 'By %s', 'wporg' ), sprintf( '<cite class="fn">%s</cite>', $note_author ) ) . ' — '; 348 $text .= ' <a class="comment-date" href="'. esc_url( get_comment_link( $comment->comment_ID ) ) . '">'; 330 349 $text .= '<time datetime="' . get_comment_time( 'c' ) . '">' . $date . '</time></a>'; 331 350 332 if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) { 351 if ( $has_edit_cap ) { 352 // WP admin edit comment link. 333 353 $text .= ' — <a class="comment-edit-link" href="' . get_edit_comment_link( $comment->comment_ID ) .'">'; 334 354 $text .= __( 'Edit', 'wporg' ) . '</a>'; 355 } elseif ( $can_edit_note ) { 356 // Front end edit comment link. 357 $text .= ' — <a class="comment-edit-link" href="' . site_url( "/reference/comment/edit/{$comment->comment_ID}" ) . '">'; 358 $text .= __( 'Edit', 'wporg' ) . '</a>'; 359 } 360 361 if ( $can_edit_note && $is_edited_note ) { 362 $text .= ' — <span class="comment-edited">' . __( 'edited', 'wporg' ) . '</span>'; 335 363 } 336 364 … … 1408 1436 1409 1437 /** 1438 * Indicates if the current user can edit a user contibuted note. 1439 * 1440 * A user can only edit their own notes if it's in moderation and 1441 * if it's a note for a parsed post type. 1442 * 1443 * Users with the 'edit_comment' capability can edit 1444 * all notes from a parsed post type (regardless if it's in moderation). 1445 * 1446 * @param integer $note_id Note ID. 1447 * @return bool True if the current user can edit notes. 1448 */ 1449 function can_user_edit_note( $note_id = 0 ) { 1450 $user = get_current_user_id(); 1451 $note = get_comment( $note_id ); 1452 if ( ! $user || ! $note ) { 1453 return false; 1454 } 1455 1456 $post_id = isset( $note->comment_post_ID ) ? (int) $note->comment_post_ID : 0; 1457 $is_note_author = isset( $note->user_id ) && ( (int) $note->user_id === $user ); 1458 $is_approved = isset( $note->comment_approved ) && ( 0 < (int) $note->comment_approved ); 1459 $can_edit_notes = isset( $note->comment_ID ) && current_user_can( 'edit_comment', $note->comment_ID ); 1460 $is_parsed_type = is_parsed_post_type( get_post_type( $post_id ) ); 1461 1462 if ( $is_parsed_type && ( $can_edit_notes || ( $is_note_author && ! $is_approved ) ) ) { 1463 return true; 1464 } 1465 1466 return false; 1467 } 1468 1469 /** 1470 * Get the note author link to the profiles.wordpress.org author's URL. 1471 * 1472 * @param WP_Comment|int $comment Comment object or comment ID. 1473 * @return string The HTML link to the profiles.wordpress.org author's URL. 1474 */ 1475 function get_note_author_link( $comment ) { 1476 return get_note_author( $comment, true ); 1477 } 1478 1479 /** 1480 * Get the note author nicename. 1481 * 1482 * @param WP_Comment|int $comment Comment object or comment ID. 1483 * @param bool $link. Whether to return a link to the author's profiles. Default false. 1484 * @return string The comment author name or HTML link. 1485 */ 1486 function get_note_author( $comment, $link = false ) { 1487 $comment = get_comment( $comment ); 1488 $user_id = isset( $comment->user_id ) ? $comment->user_id : 0; 1489 $commenter = get_user_by( 'id', $comment->user_id ); 1490 $author = ''; 1491 1492 if ( $user_id && isset( $commenter->user_nicename ) ) { 1493 $url = 'https://profiles.wordpress.org/' . sanitize_key( $commenter->user_nicename ) . '/'; 1494 $author = get_the_author_meta( 'display_name', $comment->user_id ); 1495 } else { 1496 $url = isset( $comment->comment_author_url ) ? $comment->comment_author_url : ''; 1497 $author = isset( $comment->comment_author ) ? $comment->comment_author : ''; 1498 } 1499 1500 if ( $link && ( $url && $author ) ) { 1501 $author = sprintf( '<a href="%s" rel="external nofollow" class="url">%s</a>', esc_url( $url ), $author ); 1502 } 1503 1504 return $author; 1505 } 1506 1507 /** 1410 1508 * Gets the summary. 1411 1509 *
Note: See TracChangeset
for help on using the changeset viewer.