Ticket #44541: 44541.4.patch
File 44541.4.patch, 13.3 KB (added by , 7 years ago) |
---|
-
src/wp-admin/includes/dashboard.php
diff --git src/wp-admin/includes/dashboard.php src/wp-admin/includes/dashboard.php index 0c5bb5f5b1..e1762f34be 100644
function wp_dashboard_recent_drafts( $drafts = false ) { 587 587 } 588 588 echo '<h2 class="hide-if-no-js">' . __( 'Your Recent Drafts' ) . "</h2>\n<ul>"; 589 589 590 /* translators: This sets the text length for the draft. */ 591 $draft_length = intval( _x( '10', 'draft_length' ) ); 592 590 593 $drafts = array_slice( $drafts, 0, 3 ); 591 594 foreach ( $drafts as $draft ) { 592 595 $url = get_edit_post_link( $draft->ID ); … … function wp_dashboard_recent_drafts( $drafts = false ) { 595 598 /* translators: %s: post title */ 596 599 echo '<div class="draft-title"><a href="' . esc_url( $url ) . '" aria-label="' . esc_attr( sprintf( __( 'Edit “%s”' ), $title ) ) . '">' . esc_html( $title ) . '</a>'; 597 600 echo '<time datetime="' . get_the_time( 'c', $draft ) . '">' . get_the_time( __( 'F j, Y' ), $draft ) . '</time></div>'; 598 if ( $the_content = wp_trim_words( $draft->post_content, 10) ) {601 if ( $the_content = wp_trim_words( $draft->post_content, $draft_length ) ) { 599 602 echo '<p>' . $the_content . '</p>'; 600 603 } 601 604 echo "</li>\n"; -
src/wp-includes/comment-template.php
diff --git src/wp-includes/comment-template.php src/wp-includes/comment-template.php index 649f29a10b..634cbb54e8 100644
function comment_date( $d = '', $comment_ID = 0 ) { 593 593 function get_comment_excerpt( $comment_ID = 0 ) { 594 594 $comment = get_comment( $comment_ID ); 595 595 $comment_text = strip_tags( str_replace( array( "\n", "\r" ), ' ', $comment->comment_content ) ); 596 $words = explode( ' ', $comment_text ); 596 597 /* translators: This sets the text length for the comment excerpt. */ 598 $comment_excerpt_length = intval( _x( '20', 'comment_excerpt_length' ) ); 597 599 598 600 /** 599 601 * Filters the amount of words used in the comment excerpt. … … function get_comment_excerpt( $comment_ID = 0 ) { 602 604 * 603 605 * @param int $comment_excerpt_length The amount of words you want to display in the comment excerpt. 604 606 */ 605 $comment_excerpt_length = apply_filters( 'comment_excerpt_length', 20);607 $comment_excerpt_length = apply_filters( 'comment_excerpt_length', $comment_excerpt_length ); 606 608 607 $use_ellipsis = count( $words ) > $comment_excerpt_length; 608 if ( $use_ellipsis ) { 609 $words = array_slice( $words, 0, $comment_excerpt_length ); 610 } 609 $excerpt = wp_trim_words( $comment_text, $comment_excerpt_length, '…' ); 611 610 612 $excerpt = trim( join( ' ', $words ) );613 if ( $use_ellipsis ) {614 $excerpt .= '…';615 }616 611 /** 617 612 * Filters the retrieved comment excerpt. 618 613 * -
src/wp-includes/formatting.php
diff --git src/wp-includes/formatting.php src/wp-includes/formatting.php index bf03e78e1e..c351dd35f1 100644
function wp_trim_excerpt( $text = '' ) { 3636 3636 $text = apply_filters( 'the_content', $text ); 3637 3637 $text = str_replace( ']]>', ']]>', $text ); 3638 3638 3639 /* translators: This sets the text length for the excerpt. */ 3640 $excerpt_length = intval( _x( '55', 'excerpt_length' ) ); 3641 3639 3642 /** 3640 3643 * Filters the number of words in an excerpt. 3641 3644 * … … function wp_trim_excerpt( $text = '' ) { 3643 3646 * 3644 3647 * @param int $number The number of words. Default 55. 3645 3648 */ 3646 $excerpt_length = apply_filters( 'excerpt_length', 55);3649 $excerpt_length = apply_filters( 'excerpt_length', $excerpt_length ); 3647 3650 /** 3648 3651 * Filters the string in the "more" link displayed after a trimmed excerpt. 3649 3652 * -
tests/phpunit/data/languages/ja_JP.po
diff --git tests/phpunit/data/languages/ja_JP.mo tests/phpunit/data/languages/ja_JP.mo index 1399898aa7..da1681326c 100644 Binary files tests/phpunit/data/languages/ja_JP.mo and tests/phpunit/data/languages/ja_JP.mo differ diff --git tests/phpunit/data/languages/ja_JP.po tests/phpunit/data/languages/ja_JP.po index f71a737714..f59ec5142e 100644
msgstr "number_format_thousands_sep" 40 40 #: wp-includes/script-loader.php:620 41 41 msgid "Update %s now" 42 42 msgstr "今すぐ %s を更新" 43 44 #. translators: If your word count is based on single characters (e.g. East 45 #. Asian characters), enter 'characters_excluding_spaces' or 46 #. 'characters_including_spaces'. Otherwise, enter 'words'. Do not translate 47 #. into your own language. 48 #: wp-includes/formatting.php:3372 wp-includes/script-loader.php:1100 49 msgctxt "Word count type. Do not translate!" 50 msgid "words" 51 msgstr "characters_including_spaces" 52 53 #. translators: This sets the text length for the excerpt. 54 #: wp-includes/formatting.php:3640 55 msgctxt "excerpt_length" 56 msgid "55" 57 msgstr "110" 58 59 #. translators: This sets the text length for the comment excerpt. 60 #: wp-includes/comment-template.ph:599 61 msgctxt "comment_excerpt_length" 62 msgid "20" 63 msgstr "40" 64 65 #. translators: This sets the text length for the comment excerpt. 66 #: wp-admin/includes/dashboard.php:591 67 msgctxt "draft_length" 68 msgid "10" 69 msgstr "40" -
tests/phpunit/tests/formatting/WPTrimWords.php
diff --git tests/phpunit/tests/formatting/WPTrimWords.php tests/phpunit/tests/formatting/WPTrimWords.php index 7f2a27fc05..8a207a6f9c 100644
class Tests_Formatting_WPTrimWords extends WP_UnitTestCase { 42 42 $text = 'This is some short text.'; 43 43 $this->assertEquals( $text, wp_trim_words( $text ) ); 44 44 } 45 46 /** 47 * @ticket 44541 48 */ 49 function test_trims_to_20_counted_by_chars() { 50 switch_to_locale( 'ja_JP' ); 51 $expected = substr( $this->long_text, 0, 20 ) . '…'; 52 $this->assertEquals( $expected, wp_trim_words( $this->long_text, 20 ) ); 53 restore_previous_locale(); 54 } 55 56 /** 57 * @ticket 44541 58 */ 59 function test_trims_to_20_counted_by_chars_with_double_width_chars() { 60 switch_to_locale( 'ja_JP' ); 61 $text = str_repeat( 'あ', 100 ); 62 $expected = str_repeat( 'あ', 19 ) . '…'; 63 $this->assertEquals( $expected, wp_trim_words( $text, 19 ) ); 64 restore_previous_locale(); 65 } 45 66 } -
tests/phpunit/tests/l10n.php
diff --git tests/phpunit/tests/l10n.php tests/phpunit/tests/l10n.php index 5173621d2c..d915580900 100644
6 6 */ 7 7 class Tests_L10n extends WP_UnitTestCase { 8 8 9 private $long_text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'; 10 9 11 /** 10 12 * @ticket 35961 11 13 */ … … class Tests_L10n extends WP_UnitTestCase { 242 244 $this->assertNotEmpty( $array['Project-Id-Version'] ); 243 245 $this->assertNotEmpty( $array['X-Generator'] ); 244 246 } 247 248 /** 249 * @ticket 44541 250 */ 251 function test_length_of_excerpt_should_be_counted_by_words() { 252 global $post; 253 254 switch_to_locale( 'en_US' ); 255 256 $args = array( 257 'post_content' => $this->long_text, 258 'post_excerpt' => '', 259 ); 260 261 $post = $this->factory()->post->create_and_get( $args ); 262 setup_postdata( $post ); 263 264 $expect = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat […]</p>\n"; 265 the_excerpt(); 266 267 restore_previous_locale(); 268 269 $this->expectOutputString( $expect ); 270 } 271 272 /** 273 * @ticket 44541 274 */ 275 function test_length_of_excerpt_should_be_counted_by_chars() { 276 global $post; 277 278 switch_to_locale( 'ja_JP' ); 279 280 $args = array( 281 'post_content' => $this->long_text, 282 'post_excerpt' => '', 283 ); 284 285 $post = $this->factory()->post->create_and_get( $args ); 286 setup_postdata( $post ); 287 288 $expect = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore […]</p>\n"; 289 the_excerpt(); 290 291 restore_previous_locale(); 292 293 $this->expectOutputString( $expect ); 294 } 295 296 /** 297 * @ticket 44541 298 */ 299 function test_length_of_excerpt_should_be_counted_by_chars_in_japanese() { 300 global $post; 301 302 switch_to_locale( 'ja_JP' ); 303 304 $args = array( 305 'post_content' => str_repeat( 'あ', 200 ), 306 'post_excerpt' => '', 307 ); 308 309 $post = $this->factory()->post->create_and_get( $args ); 310 setup_postdata( $post ); 311 312 $expect = "<p>" . str_repeat( 'あ', 110 ) . " […]</p>\n"; 313 the_excerpt(); 314 315 restore_previous_locale(); 316 317 $this->expectOutputString( $expect ); 318 } 319 320 /** 321 * @ticket 44541 322 */ 323 function test_length_of_excerpt_rss_should_be_counted_by_words() { 324 global $post; 325 326 switch_to_locale( 'en_US' ); 327 328 $args = array( 329 'post_content' => $this->long_text, 330 'post_excerpt' => '', 331 ); 332 333 $post = $this->factory()->post->create_and_get( $args ); 334 setup_postdata( $post ); 335 336 $expect = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat […]"; 337 the_excerpt_rss(); 338 339 restore_previous_locale(); 340 341 $this->expectOutputString( $expect ); 342 } 343 344 /** 345 * @ticket 44541 346 */ 347 function test_length_of_excerpt_rss_should_be_counted_by_chars() { 348 global $post; 349 350 switch_to_locale( 'ja_JP' ); 351 352 $args = array( 353 'post_content' => $this->long_text, 354 'post_excerpt' => '', 355 ); 356 357 $post = $this->factory()->post->create_and_get( $args ); 358 setup_postdata( $post ); 359 360 $expect = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore […]"; 361 362 the_excerpt_rss(); 363 364 restore_previous_locale(); 365 366 $this->expectOutputString( $expect ); 367 } 368 369 /** 370 * @ticket 44541 371 */ 372 function test_length_of_draft_should_be_counted_by_words() { 373 require_once ABSPATH . 'wp-admin/includes/dashboard.php'; 374 375 switch_to_locale( 'en_US' ); 376 377 $args = array( 378 'post_content' => $this->long_text, 379 'post_excerpt' => '', 380 'post_status' => 'draft', 381 ); 382 383 $this->factory()->post->create( $args ); 384 385 $expect = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do…"; 386 wp_dashboard_recent_drafts(); 387 388 restore_previous_locale(); 389 390 $this->expectOutputRegex( '/' . $expect . '/' ); 391 } 392 393 /** 394 * @ticket 44541 395 */ 396 function test_length_of_draft_should_be_counted_by_chars() { 397 require_once ABSPATH . 'wp-admin/includes/dashboard.php'; 398 399 switch_to_locale( 'ja_JP' ); 400 401 $args = array( 402 'post_content' => $this->long_text, 403 'post_excerpt' => '', 404 'post_status' => 'draft', 405 ); 406 407 $post = $this->factory()->post->create( $args ); 408 409 $expect = "Lorem ipsum dolor sit amet, consectetur …"; 410 wp_dashboard_recent_drafts(); 411 412 restore_previous_locale(); 413 414 $this->expectOutputRegex( '/' . $expect . '/' ); 415 } 416 417 /** 418 * @ticket 44541 419 */ 420 function test_length_of_draft_should_be_counted_by_chars_in_japanese() { 421 require_once ABSPATH . 'wp-admin/includes/dashboard.php'; 422 423 switch_to_locale( 'ja_JP' ); 424 425 $args = array( 426 'post_content' => str_repeat( 'あ', 200 ), 427 'post_excerpt' => '', 428 'post_status' => 'draft', 429 ); 430 431 $this->factory()->post->create( $args ); 432 433 $expect = str_repeat( 'あ', 40 ) . "…"; 434 wp_dashboard_recent_drafts(); 435 436 restore_previous_locale(); 437 438 $this->expectOutputRegex( '/' . $expect . '/' ); 439 } 440 441 /** 442 * @ticket 44541 443 */ 444 function test_length_of_comment_excerpt_should_be_counted_by_words() { 445 switch_to_locale( 'en_US' ); 446 447 $args = array( 448 'comment_content' => $this->long_text, 449 ); 450 $comment_id = $this->factory()->comment->create( $args ); 451 $expect = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut…"; 452 $comment_excerpt = get_comment_excerpt( $comment_id ); 453 454 restore_previous_locale(); 455 456 $this->assertSame( $expect, $comment_excerpt ); 457 } 458 459 /** 460 * @ticket 44541 461 */ 462 function test_length_of_comment_excerpt_should_be_counted_by_chars() { 463 switch_to_locale( 'ja_JP' ); 464 465 $args = array( 466 'comment_content' => $this->long_text, 467 ); 468 $comment_id = $this->factory()->comment->create( $args ); 469 $expect = "Lorem ipsum dolor sit amet, consectetur …"; 470 $comment_excerpt = get_comment_excerpt( $comment_id ); 471 472 restore_previous_locale(); 473 474 $this->assertSame( $expect, $comment_excerpt ); 475 } 476 477 /** 478 * @ticket 44541 479 */ 480 function test_length_of_comment_excerpt_should_be_counted_by_chars_in_Japanese() { 481 switch_to_locale( 'ja_JP' ); 482 483 $args = array( 484 'comment_content' => str_repeat( 'あ', 200 ), 485 ); 486 $comment_id = $this->factory()->comment->create( $args ); 487 $expect = str_repeat( 'あ', 40 ) . "…"; 488 $comment_excerpt = get_comment_excerpt( $comment_id ); 489 490 restore_previous_locale(); 491 492 $this->assertSame( $expect, $comment_excerpt ); 493 } 245 494 }