Page MenuHomePhorge

D26020.1747382380.diff
No OneTemporary

D26020.1747382380.diff

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 @@
<?php
-final class PhabricatorProjectTriggerManiphestOwnerRule
+class PhabricatorProjectTriggerManiphestOwnerRule
extends PhabricatorProjectTriggerRule {
const TRIGGERTYPE = 'task.owner';
@@ -13,7 +13,7 @@
return $this->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 @@
+<?php
+
+final class PhabricatorProjectTriggerManiphestOwnerUnassignedRule
+ extends PhabricatorProjectTriggerManiphestOwnerRule {
+
+ const TRIGGERTYPE = 'task.owner.unassigned';
+
+ public function getSelectControlName() {
+ return pht('Assign unowned task to');
+ }
+
+ protected function newDropTransactions($object, $value) {
+ if ($object->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.');
+ }
+ }
+}

File Metadata

Mime Type
text/plain
Expires
Fri, May 16, 07:59 (11 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1627241
Default Alt Text
D26020.1747382380.diff (4 KB)

Event Timeline