@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add useful text descriptions to edge transactions

Summary: See D2906. This just adds text so they render pretty.

Test Plan:
Got pretty emails and rendered transactions.

{F13706}

Reviewers: btrahan, davidreuss

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D2907

+176 -11
+158 -11
src/applications/maniphest/view/ManiphestTransactionDetailView.php
··· 298 298 } 299 299 300 300 return $title."\n".$links; 301 + case ManiphestTransactionType::TYPE_EDGE: 302 + $add = array_diff_key($new, $old); 303 + if (!$add) { 304 + break; 305 + } 306 + 307 + $links = array(); 308 + foreach ($add as $phid => $ignored) { 309 + $handle = $handles[$phid]; 310 + $links[] = ' '.PhabricatorEnv::getProductionURI($handle->getURI()); 311 + } 312 + $links = implode("\n", $links); 313 + 314 + $edge_type = $transaction->getMetadataValue('edge:type'); 315 + $title = $this->getEdgeEmailTitle($edge_type, $add); 316 + 317 + return $title."\n".$links; 301 318 default: 302 319 break; 303 320 } ··· 384 401 $verb = 'Changed CC'; 385 402 $desc = 'changed CCs, added: '.$this->renderHandles($added).'; '. 386 403 'removed: '.$this->renderHandles($removed); 404 + } 405 + break; 406 + case ManiphestTransactionType::TYPE_EDGE: 407 + $edge_type = $transaction->getMetadataValue('edge:type'); 408 + 409 + $add = array_diff_key($new, $old); 410 + $rem = array_diff_key($old, $new); 411 + 412 + if ($add && !$rem) { 413 + $verb = $this->getEdgeAddVerb($edge_type); 414 + $desc = $this->getEdgeAddList($edge_type, $add); 415 + } else if ($rem && !$add) { 416 + $verb = $this->getEdgeRemVerb($edge_type); 417 + $desc = $this->getEdgeRemList($edge_type, $rem); 418 + } else { 419 + $verb = $this->getEdgeEditVerb($edge_type); 420 + $desc = $this->getEdgeEditList($edge_type, $add, $rem); 387 421 } 388 422 break; 389 423 case ManiphestTransactionType::TYPE_PROJECTS: ··· 550 584 return array($verb, $desc, $classes); 551 585 } 552 586 553 - private function getAttachName($attach_type, $count) { 554 - switch ($attach_type) { 555 - case PhabricatorPHIDConstants::PHID_TYPE_DREV: 556 - return pht('Differential Revision(s)', $count); 557 - case PhabricatorPHIDConstants::PHID_TYPE_FILE: 558 - return pht('file(s)', $count); 559 - case PhabricatorPHIDConstants::PHID_TYPE_TASK: 560 - return pht('Maniphest Task(s)', $count); 561 - } 562 - } 563 - 564 587 private function renderFullSummary($transaction) { 565 588 switch ($transaction->getTransactionType()) { 566 589 case ManiphestTransactionType::TYPE_DESCRIPTION: ··· 623 646 return '"'.$string.'"'; 624 647 } else { 625 648 return '"'.phutil_escape_html($string).'"'; 649 + } 650 + } 651 + 652 + 653 + /* -( Strings )------------------------------------------------------------ */ 654 + 655 + 656 + /** 657 + * @task strings 658 + */ 659 + private function getAttachName($attach_type, $count) { 660 + switch ($attach_type) { 661 + case PhabricatorPHIDConstants::PHID_TYPE_DREV: 662 + return pht('Differential Revision(s)', $count); 663 + case PhabricatorPHIDConstants::PHID_TYPE_FILE: 664 + return pht('file(s)', $count); 665 + case PhabricatorPHIDConstants::PHID_TYPE_TASK: 666 + return pht('Maniphest Task(s)', $count); 667 + } 668 + } 669 + 670 + private function getEdgeEmailTitle($type, $count) { 671 + switch ($type) { 672 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 673 + return pht('ATTACHED %d COMMIT(S)', $count); 674 + default: 675 + return pht('ATTACHED %d OBJECT(S)', $count); 676 + } 677 + } 678 + 679 + 680 + /** 681 + * @task strings 682 + */ 683 + private function getEdgeAddVerb($type) { 684 + switch ($type) { 685 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 686 + return pht('Added Commit'); 687 + default: 688 + return pht('Added Object'); 689 + } 690 + } 691 + 692 + 693 + /** 694 + * @task strings 695 + */ 696 + private function getEdgeRemVerb($type) { 697 + switch ($type) { 698 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 699 + return pht('Removed Commit'); 700 + default: 701 + return pht('Removed Object'); 702 + } 703 + } 704 + 705 + 706 + /** 707 + * @task strings 708 + */ 709 + private function getEdgeEditVerb($type) { 710 + switch ($type) { 711 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 712 + return pht('Changed Commits'); 713 + default: 714 + return pht('Changed Objects'); 715 + } 716 + } 717 + 718 + 719 + /** 720 + * @task strings 721 + */ 722 + private function getEdgeAddList($type, array $add) { 723 + $list = $this->renderHandles(array_keys($add)); 724 + 725 + switch ($type) { 726 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 727 + return pht('added %d commit(s): %s', $add, $list); 728 + default: 729 + return pht('added %d object(s): %s', $add, $list); 730 + } 731 + } 732 + 733 + 734 + /** 735 + * @task strings 736 + */ 737 + private function getEdgeRemList($type, array $rem) { 738 + $list = $this->renderHandles(array_keys($rem)); 739 + 740 + switch ($type) { 741 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 742 + return pht('removed %d commit(s): %s', $rem, $list); 743 + default: 744 + return pht('removed %d object(s): %s', $rem, $list); 745 + } 746 + } 747 + 748 + 749 + /** 750 + * @task strings 751 + */ 752 + private function getEdgeEditList($type, array $add, array $rem) { 753 + $add_list = $this->renderHandles(array_keys($add)); 754 + $rem_list = $this->renderHandles(array_keys($rem)); 755 + 756 + switch ($type) { 757 + case PhabricatorEdgeConfig::TYPE_TASK_HAS_COMMIT: 758 + return pht( 759 + 'changed %d commit(s), added %d: %s; removed %d: %s', 760 + count($add) + count($rem), 761 + $add, 762 + $add_list, 763 + $rem, 764 + $rem_list); 765 + default: 766 + return pht( 767 + 'changed %d object(s), added %d: %s; removed %d: %s', 768 + count($add) + count($rem), 769 + $add, 770 + $add_list, 771 + $rem, 772 + $rem_list); 626 773 } 627 774 } 628 775
+18
src/infrastructure/internationalization/PhabricatorBaseEnglishTranslation.php
··· 48 48 'COMMIT(S)' => array('COMMIT', 'COMMITS'), 49 49 50 50 '%d line(s)' => array('%d line', '%d lines'), 51 + 52 + 'added %d commit(s): %s' => array( 53 + 'added commits: %2$s', 54 + 'added commit: %2$s', 55 + ), 56 + 57 + 'removed %d commit(s): %s' => array( 58 + 'removed commits: %2$s', 59 + 'removed commit: %2$s', 60 + ), 61 + 62 + 'changed %d commit(s), added %d: %s; removed %d: %s' => 63 + 'changed commits, added: %3$s; removed: %5$s', 64 + 65 + 'ATTACHED %d COMMIT(S)' => array( 66 + 'ATTACHED COMMITS', 67 + 'ATTACHED COMMIT', 68 + ), 51 69 ); 52 70 } 53 71