mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-23 07:12:41 +01:00
Allow standard fields to be required
Summary: Ref T418. Test Plan: See screenshot. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T418 Differential Revision: https://secure.phabricator.com/D7030
This commit is contained in:
parent
3f24232d2b
commit
c5b80985df
1 changed files with 42 additions and 0 deletions
|
@ -12,6 +12,8 @@ abstract class PhabricatorStandardCustomField
|
||||||
private $strings;
|
private $strings;
|
||||||
private $caption;
|
private $caption;
|
||||||
private $fieldError;
|
private $fieldError;
|
||||||
|
private $required;
|
||||||
|
private $default;
|
||||||
|
|
||||||
abstract public function getFieldType();
|
abstract public function getFieldType();
|
||||||
|
|
||||||
|
@ -102,6 +104,10 @@ abstract class PhabricatorStandardCustomField
|
||||||
case 'caption':
|
case 'caption':
|
||||||
$this->setCaption($value);
|
$this->setCaption($value);
|
||||||
break;
|
break;
|
||||||
|
case 'required':
|
||||||
|
$this->setRequired($value);
|
||||||
|
$this->setFieldError(true);
|
||||||
|
break;
|
||||||
case 'type':
|
case 'type':
|
||||||
// We set this earlier on.
|
// We set this earlier on.
|
||||||
break;
|
break;
|
||||||
|
@ -124,6 +130,15 @@ abstract class PhabricatorStandardCustomField
|
||||||
return $this->fieldError;
|
return $this->fieldError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setRequired($required) {
|
||||||
|
$this->required = $required;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRequired() {
|
||||||
|
return $this->required;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -( PhabricatorCustomField )--------------------------------------------- */
|
/* -( PhabricatorCustomField )--------------------------------------------- */
|
||||||
|
|
||||||
|
@ -252,7 +267,34 @@ abstract class PhabricatorStandardCustomField
|
||||||
$type,
|
$type,
|
||||||
$xactions);
|
$xactions);
|
||||||
|
|
||||||
|
if ($this->getRequired()) {
|
||||||
|
$value = null;
|
||||||
|
$transaction = null;
|
||||||
|
foreach ($xactions as $xaction) {
|
||||||
|
$value = $xaction->getNewValue();
|
||||||
|
if (!$this->isValueEmpty($value)) {
|
||||||
|
$transaction = $xaction;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($this->isValueEmpty($value)) {
|
||||||
|
$errors[] = new PhabricatorApplicationTransactionValidationError(
|
||||||
|
$type,
|
||||||
|
pht('Required'),
|
||||||
|
pht('%s is required.', $this->getFieldName()),
|
||||||
|
$transaction);
|
||||||
|
$this->setFieldError(pht('Required'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function isValueEmpty($value) {
|
||||||
|
if (is_array($value)) {
|
||||||
|
return empty($value);
|
||||||
|
}
|
||||||
|
return !strlen($value);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue