Page MenuHomePhabricator

D14689.diff
No OneTemporary

D14689.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
@@ -1277,6 +1277,7 @@
'ManiphestInfoConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestInfoConduitAPIMethod.php',
'ManiphestNameIndex' => 'applications/maniphest/storage/ManiphestNameIndex.php',
'ManiphestNameIndexEventListener' => 'applications/maniphest/event/ManiphestNameIndexEventListener.php',
+ 'ManiphestPriorityConfigOptionType' => 'applications/maniphest/config/ManiphestPriorityConfigOptionType.php',
'ManiphestPriorityEmailCommand' => 'applications/maniphest/command/ManiphestPriorityEmailCommand.php',
'ManiphestQueryConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php',
'ManiphestQueryStatusesConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestQueryStatusesConduitAPIMethod.php',
@@ -5258,6 +5259,7 @@
'ManiphestInfoConduitAPIMethod' => 'ManiphestConduitAPIMethod',
'ManiphestNameIndex' => 'ManiphestDAO',
'ManiphestNameIndexEventListener' => 'PhabricatorEventListener',
+ 'ManiphestPriorityConfigOptionType' => 'PhabricatorConfigJSONOptionType',
'ManiphestPriorityEmailCommand' => 'ManiphestEmailCommand',
'ManiphestQueryConduitAPIMethod' => 'ManiphestConduitAPIMethod',
'ManiphestQueryStatusesConduitAPIMethod' => 'ManiphestConduitAPIMethod',
diff --git a/src/applications/maniphest/config/ManiphestPriorityConfigOptionType.php b/src/applications/maniphest/config/ManiphestPriorityConfigOptionType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/maniphest/config/ManiphestPriorityConfigOptionType.php
@@ -0,0 +1,10 @@
+<?php
+
+final class ManiphestPriorityConfigOptionType
+ extends PhabricatorConfigJSONOptionType {
+
+ public function validateOption(PhabricatorConfigOption $option, $value) {
+ ManiphestTaskPriority::validateConfiguration($value);
+ }
+
+}
diff --git a/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php b/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php
--- a/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php
+++ b/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php
@@ -20,7 +20,7 @@
}
public function getOptions() {
-
+ $priority_type = 'custom:ManiphestPriorityConfigOptionType';
$priority_defaults = array(
100 => array(
'name' => pht('Unbreak Now!'),
@@ -267,7 +267,10 @@
$this->newOption('maniphest.fields', $custom_field_type, $default_fields)
->setCustomData(id(new ManiphestTask())->getCustomFieldBaseClass())
->setDescription(pht('Select and reorder task fields.')),
- $this->newOption('maniphest.priorities', 'wild', $priority_defaults)
+ $this->newOption(
+ 'maniphest.priorities',
+ $priority_type,
+ $priority_defaults)
->setSummary(pht('Configure Maniphest priority names.'))
->setDescription(
pht(
diff --git a/src/applications/maniphest/constants/ManiphestTaskPriority.php b/src/applications/maniphest/constants/ManiphestTaskPriority.php
--- a/src/applications/maniphest/constants/ManiphestTaskPriority.php
+++ b/src/applications/maniphest/constants/ManiphestTaskPriority.php
@@ -116,4 +116,33 @@
return $config;
}
+ public static function validateConfiguration(array $config) {
+ foreach ($config as $key => $value) {
+ if (!ctype_digit((string)$key)) {
+ throw new Exception(
+ pht(
+ 'Key "%s" is not a valid priority constant. Priority constants '.
+ 'must be nonnegative integers.',
+ $key));
+ }
+
+ if (!is_array($value)) {
+ throw new Exception(
+ pht(
+ 'Value for key "%s" should be a dictionary.',
+ $key));
+ }
+
+ PhutilTypeSpec::checkMap(
+ $value,
+ array(
+ 'name' => 'string',
+ 'short' => 'optional string',
+ 'color' => 'optional string',
+ 'keywords' => 'optional list<string>',
+ 'disabled' => 'optional bool',
+ ));
+ }
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 6:16 AM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6288855
Default Alt Text
D14689.diff (4 KB)

Event Timeline