Page MenuHomePhabricator

D16051.id38622.diff
No OneTemporary

D16051.id38622.diff

diff --git a/src/applications/settings/editor/PhabricatorSettingsEditEngine.php b/src/applications/settings/editor/PhabricatorSettingsEditEngine.php
--- a/src/applications/settings/editor/PhabricatorSettingsEditEngine.php
+++ b/src/applications/settings/editor/PhabricatorSettingsEditEngine.php
@@ -194,4 +194,43 @@
return $fields;
}
+ protected function getValidationExceptionShortMessage(
+ PhabricatorApplicationTransactionValidationException $ex,
+ PhabricatorEditField $field) {
+
+ // Settings fields all have the same transaction type so we need to make
+ // sure the transaction is changing the same setting before matching an
+ // error to a given field.
+ $xaction_type = $field->getTransactionType();
+ if ($xaction_type == PhabricatorUserPreferencesTransaction::TYPE_SETTING) {
+ $property = PhabricatorUserPreferencesTransaction::PROPERTY_SETTING;
+
+ $field_setting = idx($field->getMetadata(), $property);
+ foreach ($ex->getErrors() as $error) {
+ if ($error->getType() !== $xaction_type) {
+ continue;
+ }
+
+ $xaction = $error->getTransaction();
+ if (!$xaction) {
+ continue;
+ }
+
+ $xaction_setting = $xaction->getMetadataValue($property);
+ if ($xaction_setting != $field_setting) {
+ continue;
+ }
+
+ $short_message = $error->getShortMessage();
+ if ($short_message !== null) {
+ return $short_message;
+ }
+ }
+
+ return null;
+ }
+
+ return parent::getValidationExceptionShortMessage($ex, $field);
+ }
+
}
diff --git a/src/applications/settings/setting/PhabricatorEditorSetting.php b/src/applications/settings/setting/PhabricatorEditorSetting.php
--- a/src/applications/settings/setting/PhabricatorEditorSetting.php
+++ b/src/applications/settings/setting/PhabricatorEditorSetting.php
@@ -39,6 +39,10 @@
}
public function validateTransactionValue($value) {
+ if (!strlen($value)) {
+ return;
+ }
+
$ok = PhabricatorHelpEditorProtocolController::hasAllowedProtocol($value);
if ($ok) {
return;
diff --git a/src/applications/transactions/editengine/PhabricatorEditEngine.php b/src/applications/transactions/editengine/PhabricatorEditEngine.php
--- a/src/applications/transactions/editengine/PhabricatorEditEngine.php
+++ b/src/applications/transactions/editengine/PhabricatorEditEngine.php
@@ -1004,12 +1004,7 @@
$validation_exception = $ex;
foreach ($fields as $field) {
- $xaction_type = $field->getTransactionType();
- if ($xaction_type === null) {
- continue;
- }
-
- $message = $ex->getShortMessage($xaction_type);
+ $message = $this->getValidationExceptionShortMessage($ex, $field);
if ($message === null) {
continue;
}
@@ -2049,6 +2044,18 @@
->setHref($item_uri);
}
+ protected function getValidationExceptionShortMessage(
+ PhabricatorApplicationTransactionValidationException $ex,
+ PhabricatorEditField $field) {
+
+ $xaction_type = $field->getTransactionType();
+ if ($xaction_type === null) {
+ return null;
+ }
+
+ return $ex->getShortMessage($xaction_type);
+ }
+
protected function getCreateNewObjectPolicy() {
return PhabricatorPolicies::POLICY_USER;
}
diff --git a/src/applications/transactions/error/PhabricatorApplicationTransactionValidationError.php b/src/applications/transactions/error/PhabricatorApplicationTransactionValidationError.php
--- a/src/applications/transactions/error/PhabricatorApplicationTransactionValidationError.php
+++ b/src/applications/transactions/error/PhabricatorApplicationTransactionValidationError.php
@@ -26,7 +26,7 @@
}
public function getTransaction() {
- return $this->tranaction;
+ return $this->transaction;
}
public function getShortMessage() {

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 20, 11:47 PM (2 d, 7 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7387122
Default Alt Text
D16051.id38622.diff (3 KB)

Event Timeline