From 490280e6eb67e9e9030b8b77435b3b748258f5cf Mon Sep 17 00:00:00 2001 From: epriestley Date: Sat, 19 Feb 2011 16:46:14 -0800 Subject: [PATCH] Add email to settings. Disable arbitrary user editing. Summary: Test Plan: Reviewers: CC: --- .../edit/PhabricatorPeopleEditController.php | 2 + .../list/PhabricatorPeopleListController.php | 8 +-- .../PhabricatorUserSettingsController.php | 53 +++++++++++++++++-- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/applications/people/controller/edit/PhabricatorPeopleEditController.php b/src/applications/people/controller/edit/PhabricatorPeopleEditController.php index fe52b50df5..2f339530ac 100644 --- a/src/applications/people/controller/edit/PhabricatorPeopleEditController.php +++ b/src/applications/people/controller/edit/PhabricatorPeopleEditController.php @@ -26,6 +26,8 @@ class PhabricatorPeopleEditController extends PhabricatorPeopleController { public function processRequest() { + return new Aphront404Response(); + if ($this->username) { $user = id(new PhabricatorUser())->loadOneWhere( 'userName = %s', diff --git a/src/applications/people/controller/list/PhabricatorPeopleListController.php b/src/applications/people/controller/list/PhabricatorPeopleListController.php index b0a5ae7576..ad31e0a8b8 100644 --- a/src/applications/people/controller/list/PhabricatorPeopleListController.php +++ b/src/applications/people/controller/list/PhabricatorPeopleListController.php @@ -35,6 +35,7 @@ class PhabricatorPeopleListController extends PhabricatorPeopleController { 'href' => '/p/'.$user->getUsername().'/', ), 'View Profile'), +/* phutil_render_tag( 'a', array( @@ -42,6 +43,7 @@ class PhabricatorPeopleListController extends PhabricatorPeopleController { 'href' => '/people/edit/'.$user->getUsername().'/', ), 'Edit'), +*/ ); } @@ -52,7 +54,7 @@ class PhabricatorPeopleListController extends PhabricatorPeopleController { 'Username', 'Real Name', '', - '', +// '', )); $table->setColumnClasses( array( @@ -60,13 +62,13 @@ class PhabricatorPeopleListController extends PhabricatorPeopleController { null, 'wide', 'action', - 'action', +// 'action', )); $panel = new AphrontPanelView(); $panel->appendChild($table); $panel->setHeader('People'); - $panel->setCreateButton('Create New User', '/people/edit/'); +// $panel->setCreateButton('Create New User', '/people/edit/'); return $this->buildStandardPageResponse($panel, array( 'title' => 'People', diff --git a/src/applications/people/controller/settings/PhabricatorUserSettingsController.php b/src/applications/people/controller/settings/PhabricatorUserSettingsController.php index 941bf55e3c..b7b581f3d1 100644 --- a/src/applications/people/controller/settings/PhabricatorUserSettingsController.php +++ b/src/applications/people/controller/settings/PhabricatorUserSettingsController.php @@ -30,7 +30,8 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { $user = $request->getUser(); $pages = array( - 'account' => 'Account', + 'account' => 'Account', + 'email' => 'Email', // 'password' => 'Password', // 'facebook' => 'Facebook Account', 'arcanist' => 'Arcanist Certificate', @@ -42,6 +43,11 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { if ($request->isFormPost()) { switch ($this->page) { + case 'email': + $user->setEmail($request->getStr('email')); + $user->save(); + return id(new AphrontRedirectResponse()) + ->setURI('/settings/page/email/?saved=true'); case 'arcanist': if (!$request->isDialogFormPost()) { @@ -93,6 +99,9 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { case 'account': $content = $this->renderAccountForm(); break; + case 'email': + $content = $this->renderEmailForm(); + break; default: $content = 'derp derp'; break; @@ -195,10 +204,6 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { id(new AphrontFormStaticControl()) ->setLabel('Username') ->setValue($user->getUsername())) - ->appendChild( - id(new AphrontFormStaticControl()) - ->setLabel('Email') - ->setValue($user->getEmail())) ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Real Name') @@ -235,4 +240,42 @@ class PhabricatorUserSettingsController extends PhabricatorPeopleController { return $panel->render(); } + private function renderEmailForm() { + $request = $this->getRequest(); + $user = $request->getUser(); + + + if ($request->getStr('saved')) { + $notice = new AphrontErrorView(); + $notice->setSeverity(AphrontErrorView::SEVERITY_NOTICE); + $notice->setTitle('Changed Saved'); + $notice->appendChild('

Your changes have been saved.

'); + $notice = $notice->render(); + } else { + $notice = null; + } + + $form = new AphrontFormView(); + $form + ->setUser($user) + ->appendChild( + id(new AphrontFormTextControl()) + ->setLabel('Email') + ->setName('email') + ->setCaption( + 'Note: there is no email validation yet; double-check your '. + 'typing.') + ->setValue($user->getEmail())) + ->appendChild( + id(new AphrontFormSubmitControl()) + ->setValue('Save')); + + $panel = new AphrontPanelView(); + $panel->setHeader('Email Settings'); + $panel->setWidth(AphrontPanelView::WIDTH_FORM); + $panel->appendChild($form); + + return $notice.$panel->render(); + } + }