Index: resources/celerity/map.php =================================================================== --- resources/celerity/map.php +++ resources/celerity/map.php @@ -7,7 +7,7 @@ return array( 'names' => array( - 'core.pkg.css' => '3c41daee', + 'core.pkg.css' => '9567aaae', 'core.pkg.js' => 'c907bd96', 'darkconsole.pkg.js' => 'ca8671ce', 'differential.pkg.css' => '827749c1', @@ -23,7 +23,7 @@ 'rsrc/css/aphront/context-bar.css' => '1c3b0529', 'rsrc/css/aphront/dark-console.css' => '6378ef3d', 'rsrc/css/aphront/dialog-view.css' => 'dd9db96c', - 'rsrc/css/aphront/error-view.css' => '472968e0', + 'rsrc/css/aphront/error-view.css' => 'ca515eae', 'rsrc/css/aphront/lightbox-attachment.css' => '686f8885', 'rsrc/css/aphront/list-filter-view.css' => '9577c6da', 'rsrc/css/aphront/multi-column.css' => '05bbd016', @@ -475,7 +475,7 @@ 'aphront-contextbar-view-css' => '1c3b0529', 'aphront-dark-console-css' => '6378ef3d', 'aphront-dialog-view-css' => 'dd9db96c', - 'aphront-error-view-css' => '472968e0', + 'aphront-error-view-css' => 'ca515eae', 'aphront-list-filter-view-css' => '9577c6da', 'aphront-multi-column-view-css' => '05bbd016', 'aphront-notes' => '6acadd3f', Index: src/applications/auth/controller/PhabricatorAuthRegisterController.php =================================================================== --- src/applications/auth/controller/PhabricatorAuthRegisterController.php +++ src/applications/auth/controller/PhabricatorAuthRegisterController.php @@ -304,13 +304,6 @@ unset($unguarded); } - $error_view = null; - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Registration Failed')); - $error_view->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($request->getUser()); @@ -424,7 +417,7 @@ $object_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form) - ->setFormError($error_view); + ->setFormErrors($errors); return $this->buildApplicationPage( array( Index: src/applications/auth/controller/config/PhabricatorAuthEditController.php =================================================================== --- src/applications/auth/controller/config/PhabricatorAuthEditController.php +++ src/applications/auth/controller/config/PhabricatorAuthEditController.php @@ -153,10 +153,6 @@ $issues = array(); } - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - if ($is_new) { $button = pht('Add Provider'); $crumb = pht('Add Provider'); @@ -302,7 +298,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/auth/controller/config/PhabricatorAuthNewController.php =================================================================== --- src/applications/auth/controller/config/PhabricatorAuthNewController.php +++ src/applications/auth/controller/config/PhabricatorAuthNewController.php @@ -37,10 +37,6 @@ } } - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - $options = id(new AphrontFormRadioButtonControl()) ->setLabel(pht('Provider')) ->setName('provider') @@ -83,7 +79,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Add Authentication Provider')) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/calendar/controller/PhabricatorCalendarEditStatusController.php =================================================================== --- src/applications/calendar/controller/PhabricatorCalendarEditStatusController.php +++ src/applications/calendar/controller/PhabricatorCalendarEditStatusController.php @@ -165,7 +165,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($page_title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $nav = $this->buildSideNavView($status); Index: src/applications/conduit/controller/PhabricatorConduitConsoleController.php =================================================================== --- src/applications/conduit/controller/PhabricatorConduitConsoleController.php +++ src/applications/conduit/controller/PhabricatorConduitConsoleController.php @@ -112,7 +112,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($method->getAPIMethodName()) - ->setFormError($status_view) + ->setErrorView($status_view) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/config/controller/PhabricatorConfigEditController.php =================================================================== --- src/applications/config/controller/PhabricatorConfigEditController.php +++ src/applications/config/controller/PhabricatorConfigEditController.php @@ -195,9 +195,12 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) ->setForm($form); + if ($error_view) { + $form_box->setErrorView($error_view); + } + $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Config'), $this->getApplicationURI()); Index: src/applications/countdown/controller/PhabricatorCountdownEditController.php =================================================================== --- src/applications/countdown/controller/PhabricatorCountdownEditController.php +++ src/applications/countdown/controller/PhabricatorCountdownEditController.php @@ -35,7 +35,6 @@ $countdown = PhabricatorCountdown::initializeNewCountdown($user); } - $error_view = null; $e_text = true; $e_epoch = null; @@ -71,11 +70,6 @@ $countdown->save(); return id(new AphrontRedirectResponse()) ->setURI('/countdown/'.$countdown->getID().'/'); - } else { - $error_view = id(new AphrontErrorView()) - ->setErrors($errors) - ->setTitle(pht('It\'s not The Final Countdown (du nu nuuu nun)' . - ' until you fix these problem')); } } @@ -135,7 +129,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($page_title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/differential/controller/DifferentialDiffCreateController.php =================================================================== --- src/applications/differential/controller/DifferentialDiffCreateController.php +++ src/applications/differential/controller/DifferentialDiffCreateController.php @@ -84,14 +84,8 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Create New Diff')) - ->setForm($form); - - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setSeverity(AphrontErrorView::SEVERITY_ERROR) - ->appendChild($errors); - $form_box->setFormError($error_view); - } + ->setForm($form) + ->setFormErrors($errors); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb(pht('Create Diff')); Index: src/applications/differential/controller/DifferentialRevisionEditController.php =================================================================== --- src/applications/differential/controller/DifferentialRevisionEditController.php +++ src/applications/differential/controller/DifferentialRevisionEditController.php @@ -108,13 +108,6 @@ $form->setAction('/differential/revision/edit/'); } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - if ($diff && $revision->getID()) { $form ->appendChild( @@ -168,7 +161,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs->addTextCrumb($title); Index: src/applications/diffusion/controller/DiffusionCommitController.php =================================================================== --- src/applications/diffusion/controller/DiffusionCommitController.php +++ src/applications/diffusion/controller/DiffusionCommitController.php @@ -269,7 +269,7 @@ ->appendChild( pht("This commit is very large. Load each file individually.")); - $change_panel->setFormError($warning_view); + $change_panel->setErrorView($warning_view); $header->addActionLink($button); } Index: src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php =================================================================== --- src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php +++ src/applications/diffusion/controller/DiffusionRepositoryEditBasicController.php @@ -83,14 +83,6 @@ $crumbs->addTextCrumb(pht('Edit Basics')); $title = pht('Edit %s', $repository->getName()); - - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $project_handles = $this->loadViewerHandles($repository->getProjectPHIDs()); $form = id(new AphrontFormView()) @@ -122,7 +114,7 @@ $object_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form) - ->setFormError($error_view); + ->setFormErrors($errors); return $this->buildApplicationPage( array( Index: src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php =================================================================== --- src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php +++ src/applications/diffusion/controller/DiffusionRepositoryEditEncodingController.php @@ -61,13 +61,6 @@ $title = pht('Edit %s', $repository->getName()); - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($user) ->appendRemarkupInstructions($this->getEncodingInstructions()) @@ -85,7 +78,7 @@ $object_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form) - ->setFormError($error_view); + ->setFormErrors($errors); return $this->buildApplicationPage( array( Index: src/applications/diffusion/controller/DiffusionRepositoryEditLocalController.php =================================================================== --- src/applications/diffusion/controller/DiffusionRepositoryEditLocalController.php +++ src/applications/diffusion/controller/DiffusionRepositoryEditLocalController.php @@ -33,13 +33,6 @@ $title = pht('Edit %s', $repository->getName()); - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($user) ->appendRemarkupInstructions( @@ -61,7 +54,7 @@ $object_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form) - ->setFormError($error_view); + ->setFormErrors($errors); return $this->buildApplicationPage( array( Index: src/applications/diffusion/panel/DiffusionSetPasswordPanel.php =================================================================== --- src/applications/diffusion/panel/DiffusionSetPasswordPanel.php +++ src/applications/diffusion/panel/DiffusionSetPasswordPanel.php @@ -86,13 +86,6 @@ $title = pht('Set VCS Password'); - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($user) ->appendRemarkupInstructions( @@ -165,7 +158,7 @@ $object_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) ->setForm($form) - ->setFormError($error_view); + ->setFormErrors($errors); $remove_form = id(new AphrontFormView()) ->setUser($user); Index: src/applications/drydock/controller/DrydockBlueprintCreateController.php =================================================================== --- src/applications/drydock/controller/DrydockBlueprintCreateController.php +++ src/applications/drydock/controller/DrydockBlueprintCreateController.php @@ -29,12 +29,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setErrors($errors); - } - $control = id(new AphrontFormRadioButtonControl()) ->setName('blueprint-type') ->setLabel(pht('Blueprint Type')) @@ -69,7 +63,7 @@ ->setValue(pht('Continue'))); $box = id(new PHUIObjectBoxView()) - ->setFormError($error_view) + ->setFormErrors($errors) ->setHeaderText($title) ->setForm($form); Index: src/applications/drydock/controller/DrydockBlueprintEditController.php =================================================================== --- src/applications/drydock/controller/DrydockBlueprintEditController.php +++ src/applications/drydock/controller/DrydockBlueprintEditController.php @@ -86,11 +86,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView())->setErrors($errors); - } - $policies = id(new PhabricatorPolicyQuery()) ->setViewer($viewer) ->setObject($blueprint) @@ -144,7 +139,7 @@ $box = id(new PHUIObjectBoxView()) ->setHeaderText($header) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/files/controller/PhabricatorFileUploadController.php =================================================================== --- src/applications/files/controller/PhabricatorFileUploadController.php +++ src/applications/files/controller/PhabricatorFileUploadController.php @@ -64,18 +64,12 @@ $title = pht('Upload File'); - if ($errors) { - $errors = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $global_upload = id(new PhabricatorGlobalUploadTargetView()) ->setShowIfSupportedID($support_id); $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/herald/controller/HeraldNewController.php =================================================================== --- src/applications/herald/controller/HeraldNewController.php +++ src/applications/herald/controller/HeraldNewController.php @@ -98,10 +98,6 @@ $content_type = $request->getStr('content_type'); $rule_type = $request->getStr('rule_type'); - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($viewer) ->setAction($this->getApplicationURI('new/')); @@ -203,7 +199,7 @@ ->addCancelButton($cancel_uri, $cancel_text)); $form_box = id(new PHUIObjectBoxView()) - ->setFormError($errors) + ->setFormErrors($errors) ->setHeaderText(pht('Create Herald Rule')) ->setForm($form); Index: src/applications/herald/controller/HeraldRuleController.php =================================================================== --- src/applications/herald/controller/HeraldRuleController.php +++ src/applications/herald/controller/HeraldRuleController.php @@ -118,14 +118,6 @@ } } - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } else { - $error_view = null; - } - $must_match_selector = $this->renderMustMatchSelector($rule); $repetition_selector = $this->renderRepetitionSelector($rule, $adapter); @@ -233,7 +225,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this Index: src/applications/herald/controller/HeraldTestConsoleController.php =================================================================== --- src/applications/herald/controller/HeraldTestConsoleController.php +++ src/applications/herald/controller/HeraldTestConsoleController.php @@ -74,14 +74,6 @@ } } - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } else { - $error_view = null; - } - $text = pht( 'Enter an object to test rules for, like a Diffusion commit (e.g., '. 'rX123) or a Differential revision (e.g., D123). You will be shown '. @@ -103,7 +95,7 @@ $box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Herald Test Console')) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = id($this->buildApplicationCrumbs()) Index: src/applications/legalpad/controller/LegalpadDocumentEditController.php =================================================================== --- src/applications/legalpad/controller/LegalpadDocumentEditController.php +++ src/applications/legalpad/controller/LegalpadDocumentEditController.php @@ -102,11 +102,7 @@ } } - $error_view = null; if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('A Fatal Omission!')) - ->setErrors($errors); // set these to what was specified in the form on post $document->setViewPolicy($can_view); $document->setEditPolicy($can_edit); @@ -169,7 +165,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs($this->buildSideNav()); Index: src/applications/legalpad/controller/LegalpadDocumentSignController.php =================================================================== --- src/applications/legalpad/controller/LegalpadDocumentSignController.php +++ src/applications/legalpad/controller/LegalpadDocumentSignController.php @@ -220,7 +220,7 @@ return id(new PHUIObjectBoxView()) ->setHeaderText(pht('Sign and Agree')) - ->setFormError($error_view) + ->setErrorView($error_view) ->setForm($form); } Index: src/applications/macro/controller/PhabricatorMacroAudioController.php =================================================================== --- src/applications/macro/controller/PhabricatorMacroAudioController.php +++ src/applications/macro/controller/PhabricatorMacroAudioController.php @@ -82,14 +82,6 @@ } } - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } else { - $error_view = null; - } - $form = id(new AphrontFormView()) ->addHiddenInput('behaviorForm', 1) ->setUser($viewer); @@ -152,7 +144,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/macro/controller/PhabricatorMacroEditController.php =================================================================== --- src/applications/macro/controller/PhabricatorMacroEditController.php +++ src/applications/macro/controller/PhabricatorMacroEditController.php @@ -135,14 +135,6 @@ } } - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } else { - $error_view = null; - } - $current_file = null; if ($macro->getFilePHID()) { $current_file = $macro->getFile(); @@ -257,7 +249,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/mailinglists/controller/PhabricatorMailingListsEditController.php =================================================================== --- src/applications/mailinglists/controller/PhabricatorMailingListsEditController.php +++ src/applications/mailinglists/controller/PhabricatorMailingListsEditController.php @@ -74,13 +74,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $form = new AphrontFormView(); $form->setUser($request->getUser()); if ($list->getID()) { @@ -124,7 +117,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($page_title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/maniphest/controller/ManiphestTaskEditController.php =================================================================== --- src/applications/maniphest/controller/ManiphestTaskEditController.php +++ src/applications/maniphest/controller/ManiphestTaskEditController.php @@ -419,7 +419,6 @@ if ($errors) { $error_view = new AphrontErrorView(); $error_view->setErrors($errors); - $error_view->setTitle(pht('Form Errors')); } $priority_map = ManiphestTaskPriority::getTaskPriorityMap(); @@ -650,7 +649,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($header_name) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $preview = id(new PHUIRemarkupPreviewPanel()) Index: src/applications/nuance/source/NuanceSourceDefinition.php =================================================================== --- src/applications/nuance/source/NuanceSourceDefinition.php +++ src/applications/nuance/source/NuanceSourceDefinition.php @@ -164,10 +164,8 @@ $layout = id(new PHUIObjectBoxView()) ->setHeaderText($this->getEditTitle()) ->setValidationException($validation_exception) + ->setFormErrors($error_messages) ->setForm($form); - if ($error_messages) { - $layout->setFormError($this->renderEditErrorView($error_messages)); - } return $layout; } @@ -238,15 +236,6 @@ } /** - * return @{class:AphrontErrorView} - */ - public function renderEditErrorView(array $errors) { - return id(new AphrontErrorView()) - ->setTitle(pht('Error with submission.')) - ->setErrors($errors); - } - - /** * Hook to build up @{class:PhabricatorTransactions}. * * return array $transactions Index: src/applications/owners/controller/PhabricatorOwnersEditController.php =================================================================== --- src/applications/owners/controller/PhabricatorOwnersEditController.php +++ src/applications/owners/controller/PhabricatorOwnersEditController.php @@ -112,13 +112,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Package Errors')); - $error_view->setErrors($errors); - } - $handles = $this->loadViewerHandles($owners); $primary = $package->getPrimaryOwnerPHID(); @@ -252,7 +245,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $nav = $this->buildSideNavView(); Index: src/applications/passphrase/controller/PassphraseCredentialCreateController.php =================================================================== --- src/applications/passphrase/controller/PassphraseCredentialCreateController.php +++ src/applications/passphrase/controller/PassphraseCredentialCreateController.php @@ -26,12 +26,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setErrors($errors); - } - $types_control = id(new AphrontFormRadioButtonControl()) ->setName('type') ->setLabel(pht('Credential Type')) @@ -59,7 +53,7 @@ $box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Create New Credential')) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/paste/controller/PhabricatorPasteEditController.php =================================================================== --- src/applications/paste/controller/PhabricatorPasteEditController.php +++ src/applications/paste/controller/PhabricatorPasteEditController.php @@ -123,13 +123,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('A Fatal Omission!')) - ->setErrors($errors); - } - $form = new AphrontFormView(); $langs = array( @@ -207,7 +200,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView()); Index: src/applications/people/controller/PhabricatorPeopleEditController.php =================================================================== --- src/applications/people/controller/PhabricatorPeopleEditController.php +++ src/applications/people/controller/PhabricatorPeopleEditController.php @@ -214,13 +214,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $form = new AphrontFormView(); $form->setUser($admin); if ($user->getID()) { @@ -347,7 +340,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return array($form_box); @@ -396,14 +389,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - - $form = id(new AphrontFormView()) ->setUser($admin) ->setAction($request->getRequestURI()->alter('saved', null)); @@ -452,7 +437,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return array($form_box); @@ -537,14 +522,6 @@ } } - if ($errors) { - $errors = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } else { - $errors = null; - } - $inst1 = pht('Be careful when renaming users!'); $inst2 = pht('The old username will no longer be tied to the user, so '. 'anything which uses it (like old commit messages) will no longer '. @@ -590,7 +567,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Change Username')) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); return array($form_box); @@ -636,14 +613,6 @@ } } - if ($errors) { - $errors = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } else { - $errors = null; - } - $str1 = pht('Be careful when deleting users!'); $str2 = pht('If this user interacted with anything, it is generally '. 'better to disable them, not delete them. If you delete them, it will '. @@ -683,7 +652,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Delete User')) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); return array($form_box); Index: src/applications/people/controller/PhabricatorPeopleProfilePictureController.php =================================================================== --- src/applications/people/controller/PhabricatorPeopleProfilePictureController.php +++ src/applications/people/controller/PhabricatorPeopleProfilePictureController.php @@ -258,7 +258,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); $upload_form = id(new AphrontFormView()) @@ -276,15 +276,6 @@ ->addCancelButton($profile_uri) ->setValue(pht('Upload Picture'))); - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - - $form_box = id(new PHUIObjectBoxView()) - ->setHeaderText($title) - ->setFormError($errors) - ->setForm($form); - $upload_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Upload New Picture')) ->setForm($upload_form); Index: src/applications/phame/controller/blog/PhameBlogEditController.php =================================================================== --- src/applications/phame/controller/blog/PhameBlogEditController.php +++ src/applications/phame/controller/blog/PhameBlogEditController.php @@ -162,17 +162,9 @@ ->addCancelButton($cancel_uri) ->setValue($submit_button)); - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } else { - $error_view = null; - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($page_title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/phame/controller/post/PhamePostEditController.php =================================================================== --- src/applications/phame/controller/post/PhamePostEditController.php +++ src/applications/phame/controller/post/PhamePostEditController.php @@ -163,17 +163,9 @@ 'uri' => '/phame/post/preview/', )); - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Errors saving post.')) - ->setErrors($errors); - } else { - $error_view = null; - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($page_title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/phlux/controller/PhluxEditController.php =================================================================== --- src/applications/phlux/controller/PhluxEditController.php +++ src/applications/phlux/controller/PhluxEditController.php @@ -109,11 +109,6 @@ } } - if ($errors) { - $errors = id(new AphrontErrorView()) - ->setErrors($errors); - } - $policies = id(new PhabricatorPolicyQuery()) ->setViewer($user) ->setObject($var) @@ -172,7 +167,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/pholio/controller/PholioMockEditController.php =================================================================== --- src/applications/pholio/controller/PholioMockEditController.php +++ src/applications/pholio/controller/PholioMockEditController.php @@ -199,14 +199,6 @@ } } - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } else { - $error_view = null; - } - if ($this->id) { $submit = id(new AphrontFormSubmitControl()) ->addCancelButton('/M'.$this->id) @@ -322,7 +314,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/phragment/controller/PhragmentSnapshotCreateController.php =================================================================== --- src/applications/phragment/controller/PhragmentSnapshotCreateController.php +++ src/applications/phragment/controller/PhragmentSnapshotCreateController.php @@ -32,10 +32,8 @@ ->withLeadingPath($fragment->getPath().'/') ->execute(); - $error_view = null; - + $errors = array(); if ($request->isFormPost()) { - $errors = array(); $v_name = $request->getStr('name'); if (strlen($v_name) === 0) { @@ -79,10 +77,6 @@ ->setURI('/phragment/snapshot/view/'.$snapshot->getID()); } } - - $error_view = id(new AphrontErrorView()) - ->setErrors($errors) - ->setTitle(pht('Errors while creating snapshot')); } $fragment_sequence = "-"; @@ -158,7 +152,7 @@ $box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Create Snapshot of %s', $fragment->getName())) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/phriction/controller/PhrictionEditController.php =================================================================== --- src/applications/phriction/controller/PhrictionEditController.php +++ src/applications/phriction/controller/PhrictionEditController.php @@ -149,13 +149,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - if ($document->getID()) { $panel_header = pht('Edit Phriction Document'); $submit_button = pht('Save Changes'); @@ -230,7 +223,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Edit Document')) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $preview = id(new PHUIRemarkupPreviewPanel()) Index: src/applications/phriction/controller/PhrictionMoveController.php =================================================================== --- src/applications/phriction/controller/PhrictionMoveController.php +++ src/applications/phriction/controller/PhrictionMoveController.php @@ -111,7 +111,6 @@ if ($errors) { $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) ->setErrors($errors); } Index: src/applications/ponder/controller/PonderAnswerEditController.php =================================================================== --- src/applications/ponder/controller/PonderAnswerEditController.php +++ src/applications/ponder/controller/PonderAnswerEditController.php @@ -61,10 +61,6 @@ } } - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - $answer_content_id = celerity_generate_unique_node_id(); $form = id(new AphrontFormView()) @@ -91,7 +87,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Edit Answer')) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); $preview = id(new PHUIRemarkupPreviewPanel()) Index: src/applications/ponder/controller/PonderQuestionEditController.php =================================================================== --- src/applications/ponder/controller/PonderQuestionEditController.php +++ src/applications/ponder/controller/PonderQuestionEditController.php @@ -76,13 +76,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Form Errors')) - ->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($user) ->appendChild( @@ -110,7 +103,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Ask New Question')) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/project/controller/PhabricatorProjectBoardEditController.php =================================================================== --- src/applications/project/controller/PhabricatorProjectBoardEditController.php +++ src/applications/project/controller/PhabricatorProjectBoardEditController.php @@ -63,11 +63,6 @@ return id(new AphrontRedirectResponse())->setURI($view_uri); } } - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } $form = new AphrontFormView(); $form->setUser($request->getUser()) @@ -98,7 +93,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/project/controller/PhabricatorProjectCreateController.php =================================================================== --- src/applications/project/controller/PhabricatorProjectCreateController.php +++ src/applications/project/controller/PhabricatorProjectCreateController.php @@ -67,7 +67,6 @@ $error_view = null; if ($errors) { $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); $error_view->setErrors($errors); } @@ -118,7 +117,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Create New Project')) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/applications/project/controller/PhabricatorProjectProfileEditController.php =================================================================== --- src/applications/project/controller/PhabricatorProjectProfileEditController.php +++ src/applications/project/controller/PhabricatorProjectProfileEditController.php @@ -93,13 +93,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } - $header_name = pht('Edit Project'); $title = pht('Edit Project'); $action = '/project/edit/'.$project->getID().'/'; @@ -162,7 +155,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView()) Index: src/applications/project/controller/PhabricatorProjectProfilePictureController.php =================================================================== --- src/applications/project/controller/PhabricatorProjectProfilePictureController.php +++ src/applications/project/controller/PhabricatorProjectProfilePictureController.php @@ -222,11 +222,6 @@ ->setLabel(pht('Quick Create')) ->setValue($compose_form)); - $form_box = id(new PHUIObjectBoxView()) - ->setHeaderText($title) - ->setFormError($errors) - ->setForm($form); - $upload_form = id(new AphrontFormView()) ->setUser($viewer) ->setEncType('multipart/form-data') @@ -242,13 +237,9 @@ ->addCancelButton($project_uri) ->setValue(pht('Upload Picture'))); - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); $upload_box = id(new PHUIObjectBoxView()) Index: src/applications/releeph/controller/branch/ReleephBranchCreateController.php =================================================================== --- src/applications/releeph/controller/branch/ReleephBranchCreateController.php +++ src/applications/releeph/controller/branch/ReleephBranchCreateController.php @@ -68,7 +68,6 @@ if ($errors) { $error_view = new AphrontErrorView(); $error_view->setErrors($errors); - $error_view->setTitle(pht('Form Errors')); } $project_id = $releeph_project->getID(); Index: src/applications/releeph/controller/project/ReleephProjectCreateController.php =================================================================== --- src/applications/releeph/controller/project/ReleephProjectCreateController.php +++ src/applications/releeph/controller/project/ReleephProjectCreateController.php @@ -52,12 +52,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setErrors($errors); - } - $arc_project_options = $this->getArcProjectSelectOptions($arc_projects); $project_name_input = id(new AphrontFormTextControl()) @@ -110,7 +104,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Create New Project')) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/releeph/controller/project/ReleephProjectEditController.php =================================================================== --- src/applications/releeph/controller/project/ReleephProjectEditController.php +++ src/applications/releeph/controller/project/ReleephProjectEditController.php @@ -116,7 +116,6 @@ if ($errors) { $error_view = new AphrontErrorView(); $error_view->setErrors($errors); - $error_view->setTitle(pht('Form Errors')); } $projects = mpull( Index: src/applications/releeph/controller/request/ReleephRequestEditController.php =================================================================== --- src/applications/releeph/controller/request/ReleephRequestEditController.php +++ src/applications/releeph/controller/request/ReleephRequestEditController.php @@ -204,7 +204,6 @@ if ($errors) { $error_view = new AphrontErrorView(); $error_view->setErrors($errors); - $error_view->setTitle('Form Errors'); } $form = id(new AphrontFormView()) Index: src/applications/search/controller/PhabricatorSearchEditController.php =================================================================== --- src/applications/search/controller/PhabricatorSearchEditController.php +++ src/applications/search/controller/PhabricatorSearchEditController.php @@ -66,11 +66,6 @@ } } - if ($errors) { - $errors = id(new AphrontErrorView()) - ->setErrors($errors); - } - $form = id(new AphrontFormView()) ->setUser($user); @@ -94,7 +89,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); $crumbs = $this->buildApplicationCrumbs(); Index: src/applications/settings/panel/PhabricatorSettingsPanelAccount.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelAccount.php +++ src/applications/settings/panel/PhabricatorSettingsPanelAccount.php @@ -51,21 +51,6 @@ } } - $notice = null; - if (!$errors) { - if ($request->getStr('saved')) { - $notice = new AphrontErrorView(); - $notice->setSeverity(AphrontErrorView::SEVERITY_NOTICE); - $notice->setTitle(pht('Changes Saved')); - $notice->appendChild( - phutil_tag('p', array(), pht('Your changes have been saved.'))); - $notice = $notice->render(); - } - } else { - $notice = new AphrontErrorView(); - $notice->setErrors($errors); - } - $timezone_ids = DateTimeZone::listIdentifiers(); $timezone_id_map = array_fuse($timezone_ids); @@ -139,10 +124,11 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Account Settings')) + ->setFormSaved($request->getStr('saved')) + ->setFormErrors($errors) ->setForm($form); return array( - $notice, $form_box, ); } Index: src/applications/settings/panel/PhabricatorSettingsPanelConpherencePreferences.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelConpherencePreferences.php +++ src/applications/settings/panel/PhabricatorSettingsPanelConpherencePreferences.php @@ -59,16 +59,18 @@ $error_view = null; if ($request->getBool('saved')) { $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Preferences Saved')) - ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) - ->setErrors(array(pht('Your preferences have been saved.'))); + ->appendChild(pht('Preferences Saved')) + ->setSeverity(AphrontErrorView::SEVERITY_NOTICE); } $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Conpherence Preferences')) - ->setFormError($error_view) ->setForm($form); + if ($error_view) { + $form_box->setErrorView($error_view); + } + return array( $form_box, ); Index: src/applications/settings/panel/PhabricatorSettingsPanelDeveloperPreferences.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelDeveloperPreferences.php +++ src/applications/settings/panel/PhabricatorSettingsPanelDeveloperPreferences.php @@ -85,17 +85,9 @@ id(new AphrontFormSubmitControl()) ->setValue(pht('Save Preferences'))); - $error_view = null; - if ($request->getBool('saved')) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Preferences Saved')) - ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) - ->setErrors(array(pht('Your preferences have been saved.'))); - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Developer Settings')) - ->setFormError($error_view) + ->setFormSaved($request->getBool('saved')) ->setForm($form); return array( Index: src/applications/settings/panel/PhabricatorSettingsPanelDiffPreferences.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelDiffPreferences.php +++ src/applications/settings/panel/PhabricatorSettingsPanelDiffPreferences.php @@ -58,17 +58,9 @@ id(new AphrontFormSubmitControl()) ->setValue(pht('Save Preferences'))); - $error_view = null; - if ($request->getBool('saved')) { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Preferences Saved')) - ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) - ->setErrors(array(pht('Your preferences have been saved.'))); - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Diff Preferences')) - ->setFormError($error_view) + ->setFormSaved($request->getBool('saved')) ->setForm($form); return array( Index: src/applications/settings/panel/PhabricatorSettingsPanelDisplayPreferences.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelDisplayPreferences.php +++ src/applications/settings/panel/PhabricatorSettingsPanelDisplayPreferences.php @@ -137,17 +137,9 @@ id(new AphrontFormSubmitControl()) ->setValue(pht('Save Preferences'))); - $error_view = null; - if ($request->getStr('saved') === 'true') { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Preferences Saved')) - ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) - ->setErrors(array(pht('Your preferences have been saved.'))); - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Display Preferences')) - ->setFormError($error_view) + ->setFormSaved($request->getStr('saved') === 'true') ->setForm($form); return array( Index: src/applications/settings/panel/PhabricatorSettingsPanelEmailPreferences.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelEmailPreferences.php +++ src/applications/settings/panel/PhabricatorSettingsPanelEmailPreferences.php @@ -69,21 +69,6 @@ ->setURI($this->getPanelURI('?saved=true')); } - $notice = null; - if (!$errors) { - if ($request->getStr('saved')) { - $notice = new AphrontErrorView(); - $notice->setSeverity(AphrontErrorView::SEVERITY_NOTICE); - $notice->setTitle(pht('Changes Saved')); - $notice->appendChild( - phutil_tag('p', array(), pht('Your changes have been saved.'))); - } - } else { - $notice = new AphrontErrorView(); - $notice->setTitle(pht('Form Errors')); - $notice->setErrors($errors); - } - $re_prefix_default = PhabricatorEnv::getEnvConfig('metamta.re-prefix') ? pht('Enabled') : pht('Disabled'); @@ -218,7 +203,8 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Email Preferences')) - ->setFormError($notice) + ->setFormSaved($request->getStr('saved')) + ->setFormErrors($errors) ->setForm($form); return id(new AphrontNullView()) Index: src/applications/settings/panel/PhabricatorSettingsPanelPassword.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelPassword.php +++ src/applications/settings/panel/PhabricatorSettingsPanelPassword.php @@ -108,21 +108,6 @@ } } - $notice = null; - if (!$errors) { - if ($request->getStr('saved')) { - $notice = new AphrontErrorView(); - $notice->setSeverity(AphrontErrorView::SEVERITY_NOTICE); - $notice->setTitle(pht('Changes Saved')); - $notice->appendChild( - phutil_tag('p', array(), pht('Your password has been updated.'))); - } - } else { - $notice = new AphrontErrorView(); - $notice->setTitle(pht('Error Changing Password')); - $notice->setErrors($errors); - } - $len_caption = null; if ($min_len) { $len_caption = pht('Minimum password length: %d characters.', $min_len); @@ -161,7 +146,8 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Change Password')) - ->setFormError($notice) + ->setFormSaved($request->getStr('saved')) + ->setFormErrors($errors) ->setForm($form); return array( Index: src/applications/settings/panel/PhabricatorSettingsPanelSSHKeys.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelSSHKeys.php +++ src/applications/settings/panel/PhabricatorSettingsPanelSSHKeys.php @@ -126,13 +126,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } - $is_new = !$key->getID(); if ($is_new) { @@ -165,7 +158,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($header) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $form_box; Index: src/applications/settings/panel/PhabricatorSettingsPanelSearchPreferences.php =================================================================== --- src/applications/settings/panel/PhabricatorSettingsPanelSearchPreferences.php +++ src/applications/settings/panel/PhabricatorSettingsPanelSearchPreferences.php @@ -50,17 +50,9 @@ id(new AphrontFormSubmitControl()) ->setValue(pht('Save'))); - $error_view = null; - if ($request->getStr('saved') === 'true') { - $error_view = id(new AphrontErrorView()) - ->setTitle(pht('Preferences Saved')) - ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) - ->setErrors(array(pht('Your preferences have been saved.'))); - } - $form_box = id(new PHUIObjectBoxView()) ->setHeaderText(pht('Search Preferences')) - ->setFormError($error_view) + ->setFormSaved($request->getStr('saved') === 'true') ->setForm($form); return array( Index: src/applications/slowvote/controller/PhabricatorSlowvoteEditController.php =================================================================== --- src/applications/slowvote/controller/PhabricatorSlowvoteEditController.php +++ src/applications/slowvote/controller/PhabricatorSlowvoteEditController.php @@ -123,13 +123,6 @@ } } - $error_view = null; - if ($errors) { - $error_view = new AphrontErrorView(); - $error_view->setTitle(pht('Form Errors')); - $error_view->setErrors($errors); - } - $instructions = phutil_tag( 'p', @@ -248,7 +241,7 @@ $form_box = id(new PHUIObjectBoxView()) ->setHeaderText($title) - ->setFormError($error_view) + ->setFormErrors($errors) ->setForm($form); return $this->buildApplicationPage( Index: src/view/form/PHUIPagedFormView.php =================================================================== --- src/view/form/PHUIPagedFormView.php +++ src/view/form/PHUIPagedFormView.php @@ -262,12 +262,8 @@ $form->appendChild($selected_page); $form->appendChild($submit); - if ($errors) { - $errors = id(new AphrontErrorView())->setErrors($errors); - } - $box = id(new PHUIObjectBoxView()) - ->setFormError($errors) + ->setFormErrors($errors) ->setForm($form); if ($selected_page->getPageName()) { Index: src/view/phui/PHUIObjectBoxView.php =================================================================== --- src/view/phui/PHUIObjectBoxView.php +++ src/view/phui/PHUIObjectBoxView.php @@ -3,7 +3,9 @@ final class PHUIObjectBoxView extends AphrontView { private $headerText; - private $formError = null; + private $formErrors = null; + private $formSaved = false; + private $errorView; private $form; private $validationException; private $header; @@ -64,8 +66,30 @@ return $this; } - public function setFormError($error) { - $this->formError = $error; + public function setFormErrors(array $errors, $title = null) { + if (nonempty($errors)) { + $this->formErrors = id(new AphrontErrorView()) + ->setTitle($title) + ->setErrors($errors); + } + return $this; + } + + public function setFormSaved($saved, $text = null) { + if (!$text) { + $text = pht('Changes saved.'); + } + if ($saved) { + $save = id(new AphrontErrorView()) + ->setSeverity(AphrontErrorView::SEVERITY_NOTICE) + ->appendChild($text); + $this->formSaved = $save; + } + return $this; + } + + public function setErrorView(AphrontErrorView $view) { + $this->errorView = $view; return $this; } @@ -193,7 +217,9 @@ ->appendChild( array( $header, - $this->formError, + $this->errorView, + $this->formErrors, + $this->formSaved, $exception_errors, $this->form, $tabs, Index: webroot/rsrc/css/aphront/error-view.css =================================================================== --- webroot/rsrc/css/aphront/error-view.css +++ webroot/rsrc/css/aphront/error-view.css @@ -9,7 +9,7 @@ } form.aphront-dialog-view .aphront-error-view { - margin: 8px 0; + margin: 0 0 12px 0; } .aphront-error-view {