diff --git a/src/applications/maniphest/relationship/ManiphestTaskCloseAsDuplicateRelationship.php b/src/applications/maniphest/relationship/ManiphestTaskCloseAsDuplicateRelationship.php --- a/src/applications/maniphest/relationship/ManiphestTaskCloseAsDuplicateRelationship.php +++ b/src/applications/maniphest/relationship/ManiphestTaskCloseAsDuplicateRelationship.php @@ -38,7 +38,8 @@ } protected function newRelationshipSource() { - return new ManiphestTaskRelationshipSource(); + return id(new ManiphestTaskRelationshipSource()) + ->setSelectedFilter('open'); } public function getRequiredRelationshipCapabilities() { diff --git a/src/applications/maniphest/relationship/ManiphestTaskHasParentRelationship.php b/src/applications/maniphest/relationship/ManiphestTaskHasParentRelationship.php --- a/src/applications/maniphest/relationship/ManiphestTaskHasParentRelationship.php +++ b/src/applications/maniphest/relationship/ManiphestTaskHasParentRelationship.php @@ -38,7 +38,8 @@ } protected function newRelationshipSource() { - return new ManiphestTaskRelationshipSource(); + return id(new ManiphestTaskRelationshipSource()) + ->setSelectedFilter('open'); } } diff --git a/src/applications/maniphest/relationship/ManiphestTaskHasSubtaskRelationship.php b/src/applications/maniphest/relationship/ManiphestTaskHasSubtaskRelationship.php --- a/src/applications/maniphest/relationship/ManiphestTaskHasSubtaskRelationship.php +++ b/src/applications/maniphest/relationship/ManiphestTaskHasSubtaskRelationship.php @@ -38,7 +38,8 @@ } protected function newRelationshipSource() { - return new ManiphestTaskRelationshipSource(); + return id(new ManiphestTaskRelationshipSource()) + ->setSelectedFilter('open'); } } diff --git a/src/applications/maniphest/relationship/ManiphestTaskMergeInRelationship.php b/src/applications/maniphest/relationship/ManiphestTaskMergeInRelationship.php --- a/src/applications/maniphest/relationship/ManiphestTaskMergeInRelationship.php +++ b/src/applications/maniphest/relationship/ManiphestTaskMergeInRelationship.php @@ -38,7 +38,8 @@ } protected function newRelationshipSource() { - return new ManiphestTaskRelationshipSource(); + return id(new ManiphestTaskRelationshipSource()) + ->setSelectedFilter('open'); } public function getRequiredRelationshipCapabilities() { diff --git a/src/applications/search/controller/PhabricatorSearchRelationshipController.php b/src/applications/search/controller/PhabricatorSearchRelationshipController.php --- a/src/applications/search/controller/PhabricatorSearchRelationshipController.php +++ b/src/applications/search/controller/PhabricatorSearchRelationshipController.php @@ -150,14 +150,6 @@ $handles = iterator_to_array($handles); $handles = array_select_keys($handles, $dst_phids); - // TODO: These are hard-coded for now. - $filters = array( - 'assigned' => pht('Assigned to Me'), - 'created' => pht('Created By Me'), - 'open' => pht('All Open Objects'), - 'all' => pht('All Objects'), - ); - $dialog_title = $relationship->getDialogTitleText(); $dialog_header = $relationship->getDialogHeaderText(); $dialog_button = $relationship->getDialogButtonText(); @@ -165,12 +157,17 @@ $source_uri = $relationship->getSourceURI($object); + $source = $relationship->newSource(); + + $filters = $source->getFilters(); + $selected_filter = $source->getSelectedFilter(); + return id(new PhabricatorObjectSelectorDialog()) ->setUser($viewer) ->setInitialPHIDs($initial_phids) ->setHandles($handles) ->setFilters($filters) - ->setSelectedFilter('created') + ->setSelectedFilter($selected_filter) ->setExcluded($src_phid) ->setCancelURI($done_uri) ->setSearchURI($source_uri) diff --git a/src/applications/search/relationship/DiffusionCommitRelationshipSource.php b/src/applications/search/relationship/DiffusionCommitRelationshipSource.php --- a/src/applications/search/relationship/DiffusionCommitRelationshipSource.php +++ b/src/applications/search/relationship/DiffusionCommitRelationshipSource.php @@ -17,4 +17,10 @@ ); } + public function getFilters() { + $filters = parent::getFilters(); + unset($filters['assigned']); + return $filters; + } + } diff --git a/src/applications/search/relationship/PhabricatorObjectRelationshipSource.php b/src/applications/search/relationship/PhabricatorObjectRelationshipSource.php --- a/src/applications/search/relationship/PhabricatorObjectRelationshipSource.php +++ b/src/applications/search/relationship/PhabricatorObjectRelationshipSource.php @@ -3,6 +3,7 @@ abstract class PhabricatorObjectRelationshipSource extends Phobject { private $viewer; + private $selectedFilter; final public function setViewer(PhabricatorUser $viewer) { $this->viewer = $viewer; @@ -16,4 +17,32 @@ abstract public function isEnabledForObject($object); abstract public function getResultPHIDTypes(); + protected function getDefaultFilter() { + return 'created'; + } + + final public function setSelectedFilter($selected_filter) { + $this->selectedFilter = $selected_filter; + return $this; + } + + final public function getSelectedFilter() { + if ($this->selectedFilter === null) { + return $this->getDefaultFilter(); + } + + return $this->selectedFilter; + } + + public function getFilters() { + // TODO: These are hard-coded for now, and all of this will probably be + // rewritten when we move to ApplicationSearch. + return array( + 'assigned' => pht('Assigned to Me'), + 'created' => pht('Created By Me'), + 'open' => pht('All Open Objects'), + 'all' => pht('All Objects'), + ); + } + } diff --git a/src/applications/search/relationship/PholioMockRelationshipSource.php b/src/applications/search/relationship/PholioMockRelationshipSource.php --- a/src/applications/search/relationship/PholioMockRelationshipSource.php +++ b/src/applications/search/relationship/PholioMockRelationshipSource.php @@ -17,4 +17,10 @@ ); } + public function getFilters() { + $filters = parent::getFilters(); + unset($filters['assigned']); + return $filters; + } + } diff --git a/src/applications/search/storage/document/PhabricatorSearchDocument.php b/src/applications/search/storage/document/PhabricatorSearchDocument.php --- a/src/applications/search/storage/document/PhabricatorSearchDocument.php +++ b/src/applications/search/storage/document/PhabricatorSearchDocument.php @@ -26,6 +26,9 @@ 'documentCreated' => array( 'columns' => array('documentCreated'), ), + 'key_type' => array( + 'columns' => array('documentType', 'documentCreated'), + ), ), ) + parent::getConfiguration(); }