1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-29 10:12:41 +01:00

Add enum option type.

Summary: Might not be the cleanest way to do this, but seems to work.

Test Plan:
- Saved an option which used the new enum type.
- Changed it.
- Saw it show up on the list view.

Reviewers: epriestley, chad

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T2255

Differential Revision: https://secure.phabricator.com/D4572
This commit is contained in:
Ricky Elrod 2013-01-21 18:46:21 -08:00 committed by epriestley
parent 4f3fafd2e9
commit bad95c15ce
4 changed files with 40 additions and 3 deletions

View file

@ -253,6 +253,7 @@ final class PhabricatorConfigEditController
}
break;
case 'string':
case 'enum':
$set_value = (string)$value;
break;
case 'list<string>':
@ -328,6 +329,7 @@ final class PhabricatorConfigEditController
switch ($type) {
case 'int':
case 'string':
case 'enum':
return $value;
case 'bool':
return $value ? 'true' : 'false';
@ -360,6 +362,15 @@ final class PhabricatorConfigEditController
'false' => idx($option->getBoolOptions(), 1),
));
break;
case 'enum':
$options = array_mergev(
array(
array('' => pht('(Use Default)')),
$option->getEnumOptions(),
));
$control = id(new AphrontFormSelectControl())
->setOptions($options);
break;
case 'class':
$symbols = id(new PhutilSymbolLoader())
->setType('class')

View file

@ -53,6 +53,7 @@ final class PhabricatorConfigManagementSetWorkflow
switch ($type) {
case 'string':
case 'class':
case 'enum':
$value = (string)$value;
break;
case 'int':

View file

@ -10,6 +10,7 @@ final class PhabricatorConfigOption
private $description;
private $type;
private $boolOptions;
private $enumOptions;
private $group;
private $examples;
private $locked;
@ -115,6 +116,20 @@ final class PhabricatorConfigOption
);
}
public function setEnumOptions(array $options) {
$this->enumOptions = $options;
return $this;
}
public function getEnumOptions() {
if ($this->enumOptions) {
return $this->enumOptions;
}
throw new Exception(
'Call setEnumOptions() before trying to access them!');
}
public function setKey($key) {
$this->key = $key;
return $this;

View file

@ -317,10 +317,20 @@ EODOC
->setSummary(
pht('Allow Phabricator to use a single mailbox for all replies.'))
->setDescription($single_description),
// TODO: 'enum'
$this->newOption('metamta.user-address-format', 'string', 'full')
$this->newOption('metamta.user-address-format', 'enum', 'full')
->setEnumOptions(
array(
'short' => 'short',
'real' => 'real',
'full' => 'full',
))
->setSummary(pht('Control how Phabricator renders user names in mail.'))
->setDescription($address_description),
->setDescription($address_description)
->addExample('gwashington <gwashington@example.com>', 'short')
->addExample('George Washington <gwashington@example.com>', 'real')
->addExample(
'gwashington (George Washington) <gwashington@example.com>',
'full'),
);
}