Page MenuHomePhabricator

D20325.diff
No OneTemporary

D20325.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
@@ -4180,6 +4180,7 @@
'PhabricatorProjectTriggerEditor' => 'applications/project/editor/PhabricatorProjectTriggerEditor.php',
'PhabricatorProjectTriggerInvalidRule' => 'applications/project/trigger/PhabricatorProjectTriggerInvalidRule.php',
'PhabricatorProjectTriggerListController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerListController.php',
+ 'PhabricatorProjectTriggerManiphestPriorityRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php',
'PhabricatorProjectTriggerManiphestStatusRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestStatusRule.php',
'PhabricatorProjectTriggerNameTransaction' => 'applications/project/xaction/trigger/PhabricatorProjectTriggerNameTransaction.php',
'PhabricatorProjectTriggerPHIDType' => 'applications/project/phid/PhabricatorProjectTriggerPHIDType.php',
@@ -10318,6 +10319,7 @@
'PhabricatorProjectTriggerEditor' => 'PhabricatorApplicationTransactionEditor',
'PhabricatorProjectTriggerInvalidRule' => 'PhabricatorProjectTriggerRule',
'PhabricatorProjectTriggerListController' => 'PhabricatorProjectTriggerController',
+ 'PhabricatorProjectTriggerManiphestPriorityRule' => 'PhabricatorProjectTriggerRule',
'PhabricatorProjectTriggerManiphestStatusRule' => 'PhabricatorProjectTriggerRule',
'PhabricatorProjectTriggerNameTransaction' => 'PhabricatorProjectTriggerTransactionType',
'PhabricatorProjectTriggerPHIDType' => 'PhabricatorPHIDType',
diff --git a/src/applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php
new file mode 100644
--- /dev/null
+++ b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php
@@ -0,0 +1,94 @@
+<?php
+
+final class PhabricatorProjectTriggerManiphestPriorityRule
+ extends PhabricatorProjectTriggerRule {
+
+ const TRIGGERTYPE = 'task.priority';
+
+ public function getSelectControlName() {
+ return pht('Change priority to');
+ }
+
+ protected function assertValidRuleValue($value) {
+ if (!is_string($value)) {
+ throw new Exception(
+ pht(
+ 'Priority rule value should be a string, but is not (value is "%s").',
+ phutil_describe_type($value)));
+ }
+
+ $map = ManiphestTaskPriority::getTaskPriorityMap();
+ if (!isset($map[$value])) {
+ throw new Exception(
+ pht(
+ 'Rule value ("%s") is not a valid task priority.',
+ $value));
+ }
+ }
+
+ protected function newDropTransactions($object, $value) {
+ $value = ManiphestTaskPriority::getKeywordForTaskPriority($value);
+ return array(
+ $this->newTransaction()
+ ->setTransactionType(ManiphestTaskPriorityTransaction::TRANSACTIONTYPE)
+ ->setNewValue($value),
+ );
+ }
+
+ protected function newDropEffects($value) {
+ $priority_name = ManiphestTaskPriority::getTaskPriorityName($value);
+ $priority_icon = ManiphestTaskPriority::getTaskPriorityIcon($value);
+ $priority_color = ManiphestTaskPriority::getTaskPriorityColor($value);
+
+ $content = pht(
+ 'Change priority to %s.',
+ phutil_tag('strong', array(), $priority_name));
+
+ return array(
+ $this->newEffect()
+ ->setIcon($priority_icon)
+ ->setColor($priority_color)
+ ->addCondition('priority', '!=', $value)
+ ->setContent($content),
+ );
+ }
+
+ protected function getDefaultValue() {
+ return head_key(ManiphestTaskPriority::getTaskPriorityMap());
+ }
+
+ protected function getPHUIXControlType() {
+ return 'select';
+ }
+
+ protected function getPHUIXControlSpecification() {
+ $map = ManiphestTaskPriority::getTaskPriorityMap();
+
+ return array(
+ 'options' => $map,
+ 'order' => array_keys($map),
+ );
+ }
+
+ public function getRuleViewLabel() {
+ return pht('Change Priority');
+ }
+
+ public function getRuleViewDescription($value) {
+ $priority_name = ManiphestTaskPriority::getTaskPriorityName($value);
+
+ return pht(
+ 'Change task priority to %s.',
+ phutil_tag('strong', array(), $priority_name));
+ }
+
+ public function getRuleViewIcon($value) {
+ $priority_icon = ManiphestTaskPriority::getTaskPriorityIcon($value);
+ $priority_color = ManiphestTaskPriority::getTaskPriorityColor($value);
+
+ return id(new PHUIIconView())
+ ->setIcon($priority_icon, $priority_color);
+ }
+
+
+}

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 13, 8:42 PM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7632132
Default Alt Text
D20325.diff (4 KB)

Event Timeline