diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -4506,6 +4506,7 @@ 'PhabricatorProjectTriggerInvalidRule' => 'applications/project/trigger/PhabricatorProjectTriggerInvalidRule.php', 'PhabricatorProjectTriggerListController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerListController.php', 'PhabricatorProjectTriggerManiphestOwnerRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerRule.php', + 'PhabricatorProjectTriggerManiphestOwnerUnassignedRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerUnassignedRule.php', 'PhabricatorProjectTriggerManiphestPriorityRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php', 'PhabricatorProjectTriggerManiphestStatusRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestStatusRule.php', 'PhabricatorProjectTriggerNameTransaction' => 'applications/project/xaction/trigger/PhabricatorProjectTriggerNameTransaction.php', @@ -11165,6 +11166,7 @@ 'PhabricatorProjectTriggerInvalidRule' => 'PhabricatorProjectTriggerRule', 'PhabricatorProjectTriggerListController' => 'PhabricatorProjectTriggerController', 'PhabricatorProjectTriggerManiphestOwnerRule' => 'PhabricatorProjectTriggerRule', + 'PhabricatorProjectTriggerManiphestOwnerUnassignedRule' => 'PhabricatorProjectTriggerManiphestOwnerRule', 'PhabricatorProjectTriggerManiphestPriorityRule' => 'PhabricatorProjectTriggerRule', 'PhabricatorProjectTriggerManiphestStatusRule' => 'PhabricatorProjectTriggerRule', 'PhabricatorProjectTriggerNameTransaction' => 'PhabricatorProjectTriggerTransactionType', diff --git a/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerRule.php b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerRule.php --- a/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerRule.php +++ b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerRule.php @@ -1,6 +1,6 @@ getDatasource()->getWireTokens($this->getValue()); } - private function convertTokenizerValueToOwner($value) { + protected function convertTokenizerValueToOwner($value) { $value = head($value); if ($value === PhabricatorPeopleNoOwnerDatasource::FUNCTION_TOKEN) { $value = null; diff --git a/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerUnassignedRule.php b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerUnassignedRule.php new file mode 100644 --- /dev/null +++ b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestOwnerUnassignedRule.php @@ -0,0 +1,42 @@ +getOwnerPHID()) { // do nothing if task already has assignee + return array(); + } else { + $value = $this->convertTokenizerValueToOwner($value); + return array( + $this->newTransaction() + ->setTransactionType(ManiphestTaskOwnerTransaction::TRANSACTIONTYPE) + ->setNewValue($value), + ); + } + } + + public function getRuleViewDescription($value) { + if (head($value) === PhabricatorViewerDatasource::FUNCTION_TOKEN) { + return pht('Assign unowned task to user moving the task.'); + } else if ($value) { + $value = $this->convertTokenizerValueToOwner($value); + return pht( + 'Assign unowned task to %s.', + phutil_tag( + 'strong', + array(), + $this->getViewer() + ->renderHandle($value) + ->render())); + } else { // !$value + return pht('Unassign task.'); + } + } +}