@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

Add more mail stamps: tasks, subscribers, projects, spaces

Summary: Ref T13053. Adds task stamps plus the major infrastructure applications.

Test Plan: {F5413058}

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13053

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

+171 -3
+8
src/__phutil_library_map__.php
··· 1528 1528 'ManiphestGetTaskTransactionsConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestGetTaskTransactionsConduitAPIMethod.php', 1529 1529 'ManiphestHovercardEngineExtension' => 'applications/maniphest/engineextension/ManiphestHovercardEngineExtension.php', 1530 1530 'ManiphestInfoConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestInfoConduitAPIMethod.php', 1531 + 'ManiphestMailEngineExtension' => 'applications/maniphest/engineextension/ManiphestMailEngineExtension.php', 1531 1532 'ManiphestNameIndex' => 'applications/maniphest/storage/ManiphestNameIndex.php', 1532 1533 'ManiphestPointsConfigType' => 'applications/maniphest/config/ManiphestPointsConfigType.php', 1533 1534 'ManiphestPrioritiesConfigType' => 'applications/maniphest/config/ManiphestPrioritiesConfigType.php', ··· 3853 3854 'PhabricatorProjectsEditField' => 'applications/transactions/editfield/PhabricatorProjectsEditField.php', 3854 3855 'PhabricatorProjectsExportEngineExtension' => 'infrastructure/export/engine/PhabricatorProjectsExportEngineExtension.php', 3855 3856 'PhabricatorProjectsFulltextEngineExtension' => 'applications/project/engineextension/PhabricatorProjectsFulltextEngineExtension.php', 3857 + 'PhabricatorProjectsMailEngineExtension' => 'applications/project/engineextension/PhabricatorProjectsMailEngineExtension.php', 3856 3858 'PhabricatorProjectsMembersSearchEngineAttachment' => 'applications/project/engineextension/PhabricatorProjectsMembersSearchEngineAttachment.php', 3857 3859 'PhabricatorProjectsMembershipIndexEngineExtension' => 'applications/project/engineextension/PhabricatorProjectsMembershipIndexEngineExtension.php', 3858 3860 'PhabricatorProjectsPolicyRule' => 'applications/project/policyrule/PhabricatorProjectsPolicyRule.php', ··· 4146 4148 'PhabricatorSpacesExportEngineExtension' => 'infrastructure/export/engine/PhabricatorSpacesExportEngineExtension.php', 4147 4149 'PhabricatorSpacesInterface' => 'applications/spaces/interface/PhabricatorSpacesInterface.php', 4148 4150 'PhabricatorSpacesListController' => 'applications/spaces/controller/PhabricatorSpacesListController.php', 4151 + 'PhabricatorSpacesMailEngineExtension' => 'applications/spaces/engineextension/PhabricatorSpacesMailEngineExtension.php', 4149 4152 'PhabricatorSpacesNamespace' => 'applications/spaces/storage/PhabricatorSpacesNamespace.php', 4150 4153 'PhabricatorSpacesNamespaceArchiveTransaction' => 'applications/spaces/xaction/PhabricatorSpacesNamespaceArchiveTransaction.php', 4151 4154 'PhabricatorSpacesNamespaceDatasource' => 'applications/spaces/typeahead/PhabricatorSpacesNamespaceDatasource.php', ··· 4230 4233 'PhabricatorSubscriptionsFulltextEngineExtension' => 'applications/subscriptions/engineextension/PhabricatorSubscriptionsFulltextEngineExtension.php', 4231 4234 'PhabricatorSubscriptionsHeraldAction' => 'applications/subscriptions/herald/PhabricatorSubscriptionsHeraldAction.php', 4232 4235 'PhabricatorSubscriptionsListController' => 'applications/subscriptions/controller/PhabricatorSubscriptionsListController.php', 4236 + 'PhabricatorSubscriptionsMailEngineExtension' => 'applications/subscriptions/engineextension/PhabricatorSubscriptionsMailEngineExtension.php', 4233 4237 'PhabricatorSubscriptionsRemoveSelfHeraldAction' => 'applications/subscriptions/herald/PhabricatorSubscriptionsRemoveSelfHeraldAction.php', 4234 4238 'PhabricatorSubscriptionsRemoveSubscribersHeraldAction' => 'applications/subscriptions/herald/PhabricatorSubscriptionsRemoveSubscribersHeraldAction.php', 4235 4239 'PhabricatorSubscriptionsSearchEngineAttachment' => 'applications/subscriptions/engineextension/PhabricatorSubscriptionsSearchEngineAttachment.php', ··· 6795 6799 'ManiphestGetTaskTransactionsConduitAPIMethod' => 'ManiphestConduitAPIMethod', 6796 6800 'ManiphestHovercardEngineExtension' => 'PhabricatorHovercardEngineExtension', 6797 6801 'ManiphestInfoConduitAPIMethod' => 'ManiphestConduitAPIMethod', 6802 + 'ManiphestMailEngineExtension' => 'PhabricatorMailEngineExtension', 6798 6803 'ManiphestNameIndex' => 'ManiphestDAO', 6799 6804 'ManiphestPointsConfigType' => 'PhabricatorJSONConfigType', 6800 6805 'ManiphestPrioritiesConfigType' => 'PhabricatorJSONConfigType', ··· 9482 9487 'PhabricatorProjectsEditField' => 'PhabricatorTokenizerEditField', 9483 9488 'PhabricatorProjectsExportEngineExtension' => 'PhabricatorExportEngineExtension', 9484 9489 'PhabricatorProjectsFulltextEngineExtension' => 'PhabricatorFulltextEngineExtension', 9490 + 'PhabricatorProjectsMailEngineExtension' => 'PhabricatorMailEngineExtension', 9485 9491 'PhabricatorProjectsMembersSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment', 9486 9492 'PhabricatorProjectsMembershipIndexEngineExtension' => 'PhabricatorIndexEngineExtension', 9487 9493 'PhabricatorProjectsPolicyRule' => 'PhabricatorPolicyRule', ··· 9851 9857 'PhabricatorSpacesExportEngineExtension' => 'PhabricatorExportEngineExtension', 9852 9858 'PhabricatorSpacesInterface' => 'PhabricatorPHIDInterface', 9853 9859 'PhabricatorSpacesListController' => 'PhabricatorSpacesController', 9860 + 'PhabricatorSpacesMailEngineExtension' => 'PhabricatorMailEngineExtension', 9854 9861 'PhabricatorSpacesNamespace' => array( 9855 9862 'PhabricatorSpacesDAO', 9856 9863 'PhabricatorPolicyInterface', ··· 9941 9948 'PhabricatorSubscriptionsFulltextEngineExtension' => 'PhabricatorFulltextEngineExtension', 9942 9949 'PhabricatorSubscriptionsHeraldAction' => 'HeraldAction', 9943 9950 'PhabricatorSubscriptionsListController' => 'PhabricatorController', 9951 + 'PhabricatorSubscriptionsMailEngineExtension' => 'PhabricatorMailEngineExtension', 9944 9952 'PhabricatorSubscriptionsRemoveSelfHeraldAction' => 'PhabricatorSubscriptionsHeraldAction', 9945 9953 'PhabricatorSubscriptionsRemoveSubscribersHeraldAction' => 'PhabricatorSubscriptionsHeraldAction', 9946 9954 'PhabricatorSubscriptionsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
+58
src/applications/maniphest/engineextension/ManiphestMailEngineExtension.php
··· 1 + <?php 2 + 3 + final class ManiphestMailEngineExtension 4 + extends PhabricatorMailEngineExtension { 5 + 6 + const EXTENSIONKEY = 'maniphest'; 7 + 8 + public function supportsObject($object) { 9 + return ($object instanceof ManiphestTask); 10 + } 11 + 12 + public function newMailStampTemplates($object) { 13 + return array( 14 + id(new PhabricatorPHIDMailStamp()) 15 + ->setKey('author') 16 + ->setLabel(pht('Author')), 17 + id(new PhabricatorPHIDMailStamp()) 18 + ->setKey('task-owner') 19 + ->setLabel(pht('Task Owner')), 20 + id(new PhabricatorBoolMailStamp()) 21 + ->setKey('task-unassigned') 22 + ->setLabel(pht('Task Unassigned')), 23 + id(new PhabricatorStringMailStamp()) 24 + ->setKey('task-priority') 25 + ->setLabel(pht('Task Priority')), 26 + id(new PhabricatorStringMailStamp()) 27 + ->setKey('task-status') 28 + ->setLabel(pht('Task Status')), 29 + id(new PhabricatorStringMailStamp()) 30 + ->setKey('subtype') 31 + ->setLabel(pht('Subtype')), 32 + ); 33 + } 34 + 35 + public function newMailStamps($object, array $xactions) { 36 + $editor = $this->getEditor(); 37 + $viewer = $this->getViewer(); 38 + 39 + $this->getMailStamp('author') 40 + ->setValue($object->getAuthorPHID()); 41 + 42 + $this->getMailStamp('task-owner') 43 + ->setValue($object->getOwnerPHID()); 44 + 45 + $this->getMailStamp('task-unassigned') 46 + ->setValue(!$object->getOwnerPHID()); 47 + 48 + $this->getMailStamp('task-priority') 49 + ->setValue($object->getPriority()); 50 + 51 + $this->getMailStamp('task-status') 52 + ->setValue($object->getStatus()); 53 + 54 + $this->getMailStamp('subtype') 55 + ->setValue($object->getSubtype()); 56 + } 57 + 58 + }
+1
src/applications/owners/phid/PhabricatorOwnersPackagePHIDType.php
··· 45 45 ->setName($monogram) 46 46 ->setFullName("{$monogram}: {$name}") 47 47 ->setCommandLineObjectName("{$monogram} {$name}") 48 + ->setMailStampName($monogram) 48 49 ->setURI($uri); 49 50 50 51 if ($package->isArchived()) {
+32
src/applications/project/engineextension/PhabricatorProjectsMailEngineExtension.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectsMailEngineExtension 4 + extends PhabricatorMailEngineExtension { 5 + 6 + const EXTENSIONKEY = 'projects'; 7 + 8 + public function supportsObject($object) { 9 + return ($object instanceof PhabricatorProjectInterface); 10 + } 11 + 12 + public function newMailStampTemplates($object) { 13 + return array( 14 + id(new PhabricatorPHIDMailStamp()) 15 + ->setKey('tag') 16 + ->setLabel(pht('Tagged with Project')), 17 + ); 18 + } 19 + 20 + public function newMailStamps($object, array $xactions) { 21 + $editor = $this->getEditor(); 22 + $viewer = $this->getViewer(); 23 + 24 + $project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 25 + $object->getPHID(), 26 + PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 27 + 28 + $this->getMailStamp('tag') 29 + ->setValue($project_phids); 30 + } 31 + 32 + }
+35
src/applications/spaces/engineextension/PhabricatorSpacesMailEngineExtension.php
··· 1 + <?php 2 + 3 + final class PhabricatorSpacesMailEngineExtension 4 + extends PhabricatorMailEngineExtension { 5 + 6 + const EXTENSIONKEY = 'spaces'; 7 + 8 + public function supportsObject($object) { 9 + return ($object instanceof PhabricatorSpacesInterface); 10 + } 11 + 12 + public function newMailStampTemplates($object) { 13 + return array( 14 + id(new PhabricatorPHIDMailStamp()) 15 + ->setKey('space') 16 + ->setLabel(pht('Space')), 17 + ); 18 + } 19 + 20 + public function newMailStamps($object, array $xactions) { 21 + $editor = $this->getEditor(); 22 + $viewer = $this->getViewer(); 23 + 24 + if (!PhabricatorSpacesNamespaceQuery::getSpacesExist()) { 25 + return; 26 + } 27 + 28 + $space_phid = PhabricatorSpacesNamespaceQuery::getObjectSpacePHID( 29 + $object); 30 + 31 + $this->getMailStamp('space') 32 + ->setValue($space_phid); 33 + } 34 + 35 + }
+5 -3
src/applications/spaces/phid/PhabricatorSpacesNamespacePHIDType.php
··· 36 36 $monogram = $namespace->getMonogram(); 37 37 $name = $namespace->getNamespaceName(); 38 38 39 - $handle->setName($name); 40 - $handle->setFullName(pht('%s %s', $monogram, $name)); 41 - $handle->setURI('/'.$monogram); 39 + $handle 40 + ->setName($name) 41 + ->setFullName(pht('%s %s', $monogram, $name)) 42 + ->setURI('/'.$monogram) 43 + ->setMailStampName($monogram); 42 44 43 45 if ($namespace->getIsArchived()) { 44 46 $handle->setStatus(PhabricatorObjectHandle::STATUS_CLOSED);
+32
src/applications/subscriptions/engineextension/PhabricatorSubscriptionsMailEngineExtension.php
··· 1 + <?php 2 + 3 + final class PhabricatorSubscriptionsMailEngineExtension 4 + extends PhabricatorMailEngineExtension { 5 + 6 + const EXTENSIONKEY = 'subscriptions'; 7 + 8 + public function supportsObject($object) { 9 + return ($object instanceof PhabricatorSubscribableInterface); 10 + } 11 + 12 + public function newMailStampTemplates($object) { 13 + return array( 14 + id(new PhabricatorPHIDMailStamp()) 15 + ->setKey('subscriber') 16 + ->setLabel(pht('Subscriber')), 17 + ); 18 + } 19 + 20 + public function newMailStamps($object, array $xactions) { 21 + $editor = $this->getEditor(); 22 + $viewer = $this->getViewer(); 23 + 24 + $subscriber_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 25 + $object->getPHID(), 26 + PhabricatorObjectHasSubscriberEdgeType::EDGECONST); 27 + 28 + $this->getMailStamp('subscriber') 29 + ->setValue($subscriber_phids); 30 + } 31 + 32 + }