Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15457423
D15104.id36476.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
27 KB
Referenced Files
None
Subscribers
None
D15104.id36476.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2747,11 +2747,13 @@
'PhabricatorPeopleLogSearchEngine' => 'applications/people/query/PhabricatorPeopleLogSearchEngine.php',
'PhabricatorPeopleLogsController' => 'applications/people/controller/PhabricatorPeopleLogsController.php',
'PhabricatorPeopleMainMenuBarExtension' => 'applications/people/extension/PhabricatorPeopleMainMenuBarExtension.php',
+ 'PhabricatorPeopleManageProfilePanel' => 'applications/people/profilepanel/PhabricatorPeopleManageProfilePanel.php',
'PhabricatorPeopleNewController' => 'applications/people/controller/PhabricatorPeopleNewController.php',
'PhabricatorPeopleNoOwnerDatasource' => 'applications/people/typeahead/PhabricatorPeopleNoOwnerDatasource.php',
'PhabricatorPeopleOwnerDatasource' => 'applications/people/typeahead/PhabricatorPeopleOwnerDatasource.php',
'PhabricatorPeopleProfileController' => 'applications/people/controller/PhabricatorPeopleProfileController.php',
'PhabricatorPeopleProfileEditController' => 'applications/people/controller/PhabricatorPeopleProfileEditController.php',
+ 'PhabricatorPeopleProfileManageController' => 'applications/people/controller/PhabricatorPeopleProfileManageController.php',
'PhabricatorPeopleProfilePanelEngine' => 'applications/people/engine/PhabricatorPeopleProfilePanelEngine.php',
'PhabricatorPeopleProfilePictureController' => 'applications/people/controller/PhabricatorPeopleProfilePictureController.php',
'PhabricatorPeopleProfileViewController' => 'applications/people/controller/PhabricatorPeopleProfileViewController.php',
@@ -7114,11 +7116,13 @@
'PhabricatorPeopleLogSearchEngine' => 'PhabricatorApplicationSearchEngine',
'PhabricatorPeopleLogsController' => 'PhabricatorPeopleController',
'PhabricatorPeopleMainMenuBarExtension' => 'PhabricatorMainMenuBarExtension',
+ 'PhabricatorPeopleManageProfilePanel' => 'PhabricatorProfilePanel',
'PhabricatorPeopleNewController' => 'PhabricatorPeopleController',
'PhabricatorPeopleNoOwnerDatasource' => 'PhabricatorTypeaheadDatasource',
'PhabricatorPeopleOwnerDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
'PhabricatorPeopleProfileController' => 'PhabricatorPeopleController',
'PhabricatorPeopleProfileEditController' => 'PhabricatorPeopleProfileController',
+ 'PhabricatorPeopleProfileManageController' => 'PhabricatorPeopleProfileController',
'PhabricatorPeopleProfilePanelEngine' => 'PhabricatorProfilePanelEngine',
'PhabricatorPeopleProfilePictureController' => 'PhabricatorPeopleProfileController',
'PhabricatorPeopleProfileViewController' => 'PhabricatorPeopleProfileController',
diff --git a/src/applications/people/application/PhabricatorPeopleApplication.php b/src/applications/people/application/PhabricatorPeopleApplication.php
--- a/src/applications/people/application/PhabricatorPeopleApplication.php
+++ b/src/applications/people/application/PhabricatorPeopleApplication.php
@@ -62,6 +62,8 @@
'PhabricatorPeopleProfileEditController',
'picture/(?P<id>[1-9]\d*)/' =>
'PhabricatorPeopleProfilePictureController',
+ 'manage/(?P<id>[1-9]\d*)/' =>
+ 'PhabricatorPeopleProfileManageController',
),
'/p/(?P<username>[\w._-]+)/' => array(
'' => 'PhabricatorPeopleProfileViewController',
diff --git a/src/applications/people/controller/PhabricatorPeopleDeleteController.php b/src/applications/people/controller/PhabricatorPeopleDeleteController.php
--- a/src/applications/people/controller/PhabricatorPeopleDeleteController.php
+++ b/src/applications/people/controller/PhabricatorPeopleDeleteController.php
@@ -3,28 +3,22 @@
final class PhabricatorPeopleDeleteController
extends PhabricatorPeopleController {
- private $id;
-
- public function willProcessRequest(array $data) {
- $this->id = $data['id'];
- }
-
- public function processRequest() {
- $request = $this->getRequest();
- $admin = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $request->getUser();
+ $id = $request->getURIData('id');
$user = id(new PhabricatorPeopleQuery())
- ->setViewer($admin)
- ->withIDs(array($this->id))
+ ->setViewer($viewer)
+ ->withIDs(array($id))
->executeOne();
if (!$user) {
return new Aphront404Response();
}
- $profile_uri = '/p/'.$user->getUsername().'/';
+ $manage_uri = $this->getApplicationURI("manage/{$id}/");
- if ($user->getPHID() == $admin->getPHID()) {
- return $this->buildDeleteSelfResponse($profile_uri);
+ if ($user->getPHID() == $viewer->getPHID()) {
+ return $this->buildDeleteSelfResponse($manage_uri);
}
$str1 = pht(
@@ -47,7 +41,7 @@
$str4 = pht('To permanently destroy this user, run this command:');
$form = id(new AphrontFormView())
- ->setUser($admin)
+ ->setUser($viewer)
->appendRemarkupInstructions(
csprintf(
" phabricator/ $ ./bin/remove destroy %R\n",
@@ -62,10 +56,10 @@
->appendParagraph($str3)
->appendParagraph($str4)
->appendChild($form->buildLayoutView())
- ->addCancelButton($profile_uri, pht('Close'));
+ ->addCancelButton($manage_uri, pht('Close'));
}
- private function buildDeleteSelfResponse($profile_uri) {
+ private function buildDeleteSelfResponse($cancel_uri) {
return $this->newDialog()
->setTitle(pht('You Shall Journey No Farther'))
->appendParagraph(
@@ -73,7 +67,7 @@
'As you stare into the gaping maw of the abyss, something '.
'holds you back.'))
->appendParagraph(pht('You can not delete your own account.'))
- ->addCancelButton($profile_uri, pht('Turn Back'));
+ ->addCancelButton($cancel_uri, pht('Turn Back'));
}
diff --git a/src/applications/people/controller/PhabricatorPeopleDisableController.php b/src/applications/people/controller/PhabricatorPeopleDisableController.php
--- a/src/applications/people/controller/PhabricatorPeopleDisableController.php
+++ b/src/applications/people/controller/PhabricatorPeopleDisableController.php
@@ -3,21 +3,14 @@
final class PhabricatorPeopleDisableController
extends PhabricatorPeopleController {
- private $id;
- private $via;
-
- public function willProcessRequest(array $data) {
- $this->id = $data['id'];
- $this->via = $data['via'];
- }
-
- public function processRequest() {
- $request = $this->getRequest();
- $admin = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
+ $id = $request->getURIData('id');
+ $via = $request->getURIData('id');
$user = id(new PhabricatorPeopleQuery())
- ->setViewer($admin)
- ->withIDs(array($this->id))
+ ->setViewer($viewer)
+ ->withIDs(array($id))
->executeOne();
if (!$user) {
return new Aphront404Response();
@@ -27,16 +20,16 @@
// on profiles and also via the "X" action on the approval queue. We do
// things slightly differently depending on the context the actor is in.
- $is_disapprove = ($this->via == 'disapprove');
+ $is_disapprove = ($via == 'disapprove');
if ($is_disapprove) {
$done_uri = $this->getApplicationURI('query/approval/');
$should_disable = true;
} else {
- $done_uri = '/p/'.$user->getUsername().'/';
+ $done_uri = $this->getApplicationURI("manage/{$id}/");
$should_disable = !$user->getIsDisabled();
}
- if ($admin->getPHID() == $user->getPHID()) {
+ if ($viewer->getPHID() == $user->getPHID()) {
return $this->newDialog()
->setTitle(pht('Something Stays Your Hand'))
->appendParagraph(
@@ -47,7 +40,7 @@
if ($request->isFormPost()) {
id(new PhabricatorUserEditor())
- ->setActor($admin)
+ ->setActor($viewer)
->disableUser($user, $should_disable);
return id(new AphrontRedirectResponse())->setURI($done_uri);
diff --git a/src/applications/people/controller/PhabricatorPeopleEmpowerController.php b/src/applications/people/controller/PhabricatorPeopleEmpowerController.php
--- a/src/applications/people/controller/PhabricatorPeopleEmpowerController.php
+++ b/src/applications/people/controller/PhabricatorPeopleEmpowerController.php
@@ -3,47 +3,41 @@
final class PhabricatorPeopleEmpowerController
extends PhabricatorPeopleController {
- private $id;
-
- public function willProcessRequest(array $data) {
- $this->id = $data['id'];
- }
-
- public function processRequest() {
- $request = $this->getRequest();
- $admin = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
+ $id = $request->getURIData('id');
$user = id(new PhabricatorPeopleQuery())
- ->setViewer($admin)
- ->withIDs(array($this->id))
+ ->setViewer($viewer)
+ ->withIDs(array($id))
->executeOne();
if (!$user) {
return new Aphront404Response();
}
- $profile_uri = '/p/'.$user->getUsername().'/';
+ $done_uri = $this->getApplicationURI("manage/{$id}/");
id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession(
- $admin,
+ $viewer,
$request,
- $profile_uri);
+ $done_uri);
- if ($user->getPHID() == $admin->getPHID()) {
+ if ($user->getPHID() == $viewer->getPHID()) {
return $this->newDialog()
->setTitle(pht('Your Way is Blocked'))
->appendParagraph(
pht(
'After a time, your efforts fail. You can not adjust your own '.
'status as an administrator.'))
- ->addCancelButton($profile_uri, pht('Accept Fate'));
+ ->addCancelButton($done_uri, pht('Accept Fate'));
}
if ($request->isFormPost()) {
id(new PhabricatorUserEditor())
- ->setActor($admin)
+ ->setActor($viewer)
->makeAdminUser($user, !$user->getIsAdmin());
- return id(new AphrontRedirectResponse())->setURI($profile_uri);
+ return id(new AphrontRedirectResponse())->setURI($done_uri);
}
if ($user->getIsAdmin()) {
@@ -69,7 +63,7 @@
->setTitle($title)
->setShortTitle($short)
->appendParagraph($body)
- ->addCancelButton($profile_uri)
+ ->addCancelButton($done_uri)
->addSubmitButton($submit);
}
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileEditController.php b/src/applications/people/controller/PhabricatorPeopleProfileEditController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileEditController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileEditController.php
@@ -23,7 +23,7 @@
$this->setUser($user);
- $profile_uri = '/p/'.$user->getUsername().'/';
+ $done_uri = $this->getApplicationURI("manage/{$id}/");
$field_list = PhabricatorCustomField::getObjectFields(
$user,
@@ -46,7 +46,7 @@
try {
$editor->applyTransactions($user, $xactions);
- return id(new AphrontRedirectResponse())->setURI($profile_uri);
+ return id(new AphrontRedirectResponse())->setURI($done_uri);
} catch (PhabricatorApplicationTransactionValidationException $ex) {
$validation_exception = $ex;
}
@@ -61,7 +61,7 @@
$form
->appendChild(
id(new AphrontFormSubmitControl())
- ->addCancelButton($profile_uri)
+ ->addCancelButton($done_uri)
->setValue(pht('Save Profile')));
$allow_public = PhabricatorEnv::getEnvConfig('policy.allow-public');
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileManageController.php b/src/applications/people/controller/PhabricatorPeopleProfileManageController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/people/controller/PhabricatorPeopleProfileManageController.php
@@ -0,0 +1,185 @@
+<?php
+
+final class PhabricatorPeopleProfileManageController
+ extends PhabricatorPeopleProfileController {
+
+ public function shouldAllowPublic() {
+ return true;
+ }
+
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
+ $id = $request->getURIData('id');
+
+ $user = id(new PhabricatorPeopleQuery())
+ ->setViewer($viewer)
+ ->withIDs(array($id))
+ ->needProfile(true)
+ ->needProfileImage(true)
+ ->executeOne();
+ if (!$user) {
+ return new Aphront404Response();
+ }
+
+ $this->setUser($user);
+
+ $profile = $user->loadUserProfile();
+ $picture = $user->getProfileImageURI();
+
+ $profile_icon = PhabricatorPeopleIconSet::getIconIcon($profile->getIcon());
+ $profile_icon = id(new PHUIIconView())
+ ->setIconFont($profile_icon.' grey');
+ $profile_title = $profile->getDisplayTitle();
+
+ $header = id(new PHUIHeaderView())
+ ->setHeader($user->getFullName())
+ ->setSubheader(array($profile_icon, $profile_title))
+ ->setImage($picture);
+
+ $actions = $this->buildActionList($user);
+ $properties = $this->buildPropertyView($user);
+ $properties->setActionList($actions);
+ $name = $user->getUsername();
+
+ $object_box = id(new PHUIObjectBoxView())
+ ->setHeader($header)
+ ->addPropertyList($properties);
+
+ $nav = $this->getProfileMenu();
+ $nav->selectFilter(PhabricatorPeopleProfilePanelEngine::PANEL_MANAGE);
+
+ $timeline = $this->buildTransactionTimeline(
+ $user,
+ new PhabricatorPeopleTransactionQuery());
+ $timeline->setShouldTerminate(true);
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Manage'));
+
+ return $this->newPage()
+ ->setTitle(
+ array(
+ pht('Manage User'),
+ $user->getUsername(),
+ ))
+ ->setNavigation($nav)
+ ->setCrumbs($crumbs)
+ ->appendChild(
+ array(
+ $object_box,
+ $timeline,
+ ));
+ }
+
+ private function buildPropertyView(PhabricatorUser $user) {
+
+ $viewer = $this->getRequest()->getUser();
+ $view = id(new PHUIPropertyListView())
+ ->setUser($viewer)
+ ->setObject($user);
+
+ return $view;
+ }
+
+ private function buildActionList(PhabricatorUser $user) {
+ $viewer = $this->getViewer();
+
+ $actions = id(new PhabricatorActionListView())
+ ->setUser($viewer);
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $user,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-pencil')
+ ->setName(pht('Edit Profile'))
+ ->setHref($this->getApplicationURI('editprofile/'.$user->getID().'/'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-picture-o')
+ ->setName(pht('Edit Profile Picture'))
+ ->setHref($this->getApplicationURI('picture/'.$user->getID().'/'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-wrench')
+ ->setName(pht('Edit Settings'))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit)
+ ->setHref('/settings/'.$user->getID().'/'));
+
+ if ($user->getIsAdmin()) {
+ $empower_icon = 'fa-arrow-circle-o-down';
+ $empower_name = pht('Remove Administrator');
+ } else {
+ $empower_icon = 'fa-arrow-circle-o-up';
+ $empower_name = pht('Make Administrator');
+ }
+
+ $is_admin = $viewer->getIsAdmin();
+ $is_self = ($user->getPHID() === $viewer->getPHID());
+ $can_admin = ($is_admin && !$is_self);
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon($empower_icon)
+ ->setName($empower_name)
+ ->setDisabled(!$can_admin)
+ ->setWorkflow(true)
+ ->setHref($this->getApplicationURI('empower/'.$user->getID().'/')));
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-tag')
+ ->setName(pht('Change Username'))
+ ->setDisabled(!$is_admin)
+ ->setWorkflow(true)
+ ->setHref($this->getApplicationURI('rename/'.$user->getID().'/')));
+
+ if ($user->getIsDisabled()) {
+ $disable_icon = 'fa-check-circle-o';
+ $disable_name = pht('Enable User');
+ } else {
+ $disable_icon = 'fa-ban';
+ $disable_name = pht('Disable User');
+ }
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon($disable_icon)
+ ->setName($disable_name)
+ ->setDisabled(!$can_admin)
+ ->setWorkflow(true)
+ ->setHref($this->getApplicationURI('disable/'.$user->getID().'/')));
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-times')
+ ->setName(pht('Delete User'))
+ ->setDisabled(!$can_admin)
+ ->setWorkflow(true)
+ ->setHref($this->getApplicationURI('delete/'.$user->getID().'/')));
+
+ $can_welcome = ($is_admin && $user->canEstablishWebSessions());
+
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setIcon('fa-envelope')
+ ->setName(pht('Send Welcome Email'))
+ ->setWorkflow(true)
+ ->setDisabled(!$can_welcome)
+ ->setHref($this->getApplicationURI('welcome/'.$user->getID().'/')));
+
+ return $actions;
+ }
+
+
+}
diff --git a/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php b/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfilePictureController.php
@@ -23,7 +23,7 @@
$this->setUser($user);
- $profile_uri = '/p/'.$user->getUsername().'/';
+ $done_uri = $this->getApplicationURI("manage/{$id}/");
$supported_formats = PhabricatorFile::getTransformableImageFormats();
$e_file = true;
@@ -76,7 +76,7 @@
$xformed->attachToObject($user->getPHID());
}
$user->save();
- return id(new AphrontRedirectResponse())->setURI($profile_uri);
+ return id(new AphrontRedirectResponse())->setURI($done_uri);
}
}
@@ -241,7 +241,7 @@
pht('Supported formats: %s', implode(', ', $supported_formats))))
->appendChild(
id(new AphrontFormSubmitControl())
- ->addCancelButton($profile_uri)
+ ->addCancelButton($done_uri)
->setValue(pht('Upload Picture')));
$upload_box = id(new PHUIObjectBoxView())
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileViewController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileViewController.php
@@ -41,27 +41,6 @@
->setObject($user)
->setUser($viewer);
- $can_edit = PhabricatorPolicyFilter::hasCapability(
- $viewer,
- $user,
- PhabricatorPolicyCapability::CAN_EDIT);
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-pencil')
- ->setName(pht('Edit Profile'))
- ->setHref($this->getApplicationURI('editprofile/'.$user->getID().'/'))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit));
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-picture-o')
- ->setName(pht('Edit Profile Picture'))
- ->setHref($this->getApplicationURI('picture/'.$user->getID().'/'))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit));
-
$class = 'PhabricatorConpherenceApplication';
if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {
$href = id(new PhutilURI('/conpherence/new/'))
@@ -78,79 +57,10 @@
->setHref($href));
}
- if ($viewer->getIsAdmin()) {
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-wrench')
- ->setName(pht('Edit Settings'))
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit)
- ->setHref('/settings/'.$user->getID().'/'));
-
- if ($user->getIsAdmin()) {
- $empower_icon = 'fa-arrow-circle-o-down';
- $empower_name = pht('Remove Administrator');
- } else {
- $empower_icon = 'fa-arrow-circle-o-up';
- $empower_name = pht('Make Administrator');
- }
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon($empower_icon)
- ->setName($empower_name)
- ->setDisabled(($user->getPHID() == $viewer->getPHID()))
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI('empower/'.$user->getID().'/')));
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-tag')
- ->setName(pht('Change Username'))
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI('rename/'.$user->getID().'/')));
-
- if ($user->getIsDisabled()) {
- $disable_icon = 'fa-check-circle-o';
- $disable_name = pht('Enable User');
- } else {
- $disable_icon = 'fa-ban';
- $disable_name = pht('Disable User');
- }
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon($disable_icon)
- ->setName($disable_name)
- ->setDisabled(($user->getPHID() == $viewer->getPHID()))
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI('disable/'.$user->getID().'/')));
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-times')
- ->setName(pht('Delete User'))
- ->setDisabled(($user->getPHID() == $viewer->getPHID()))
- ->setWorkflow(true)
- ->setHref($this->getApplicationURI('delete/'.$user->getID().'/')));
-
- $can_welcome = $user->canEstablishWebSessions();
-
- $actions->addAction(
- id(new PhabricatorActionView())
- ->setIcon('fa-envelope')
- ->setName(pht('Send Welcome Email'))
- ->setWorkflow(true)
- ->setDisabled(!$can_welcome)
- ->setHref($this->getApplicationURI('welcome/'.$user->getID().'/')));
- }
$properties = $this->buildPropertyView($user, $actions);
$name = $user->getUsername();
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb($name);
-
$object_box = id(new PHUIObjectBoxView())
->setHeader($header)
->addPropertyList($properties);
@@ -225,8 +135,9 @@
$box = id(new PHUIObjectBoxView())
->setHeaderText(pht('Badges'))
->appendChild($flex);
- }
}
+ }
+
return $box;
}
diff --git a/src/applications/people/controller/PhabricatorPeopleRenameController.php b/src/applications/people/controller/PhabricatorPeopleRenameController.php
--- a/src/applications/people/controller/PhabricatorPeopleRenameController.php
+++ b/src/applications/people/controller/PhabricatorPeopleRenameController.php
@@ -3,30 +3,24 @@
final class PhabricatorPeopleRenameController
extends PhabricatorPeopleController {
- private $id;
-
- public function willProcessRequest(array $data) {
- $this->id = $data['id'];
- }
-
- public function processRequest() {
- $request = $this->getRequest();
- $admin = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
+ $id = $request->getURIData('id');
$user = id(new PhabricatorPeopleQuery())
- ->setViewer($admin)
- ->withIDs(array($this->id))
+ ->setViewer($viewer)
+ ->withIDs(array($id))
->executeOne();
if (!$user) {
return new Aphront404Response();
}
- $profile_uri = '/p/'.$user->getUsername().'/';
+ $done_uri = $this->getApplicationURI("manage/{$id}/");
id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession(
- $admin,
+ $viewer,
$request,
- $profile_uri);
+ $done_uri);
$errors = array();
@@ -35,7 +29,6 @@
if ($request->isFormPost()) {
$v_username = $request->getStr('username');
-
if (!strlen($v_username)) {
$e_username = pht('Required');
$errors[] = pht('New username is required.');
@@ -50,12 +43,10 @@
if (!$errors) {
try {
id(new PhabricatorUserEditor())
- ->setActor($admin)
+ ->setActor($viewer)
->changeUsername($user, $v_username);
- $new_uri = '/p/'.$v_username.'/';
-
- return id(new AphrontRedirectResponse())->setURI($new_uri);
+ return id(new AphrontRedirectResponse())->setURI($done_uri);
} catch (AphrontDuplicateKeyQueryException $ex) {
$e_username = pht('Not Unique');
$errors[] = pht('Another user already has that username.');
@@ -88,7 +79,7 @@
'password if necessary.');
$form = id(new AphrontFormView())
- ->setUser($admin)
+ ->setUser($viewer)
->appendChild(
id(new AphrontFormStaticControl())
->setLabel(pht('Old Username'))
@@ -114,9 +105,9 @@
->appendParagraph($inst4)
->appendParagraph($inst5)
->appendParagraph(null)
- ->appendChild($form->buildLayoutView())
+ ->appendForm($form)
->addSubmitButton(pht('Rename User'))
- ->addCancelButton($profile_uri);
+ ->addCancelButton($done_uri);
}
}
diff --git a/src/applications/people/engine/PhabricatorPeopleProfilePanelEngine.php b/src/applications/people/engine/PhabricatorPeopleProfilePanelEngine.php
--- a/src/applications/people/engine/PhabricatorPeopleProfilePanelEngine.php
+++ b/src/applications/people/engine/PhabricatorPeopleProfilePanelEngine.php
@@ -4,6 +4,7 @@
extends PhabricatorProfilePanelEngine {
const PANEL_PROFILE = 'people.profile';
+ const PANEL_MANAGE = 'people.manage';
protected function isPanelEngineConfigurable() {
return false;
@@ -90,6 +91,10 @@
->setPanelProperty('uri', $uri);
}
+ $panels[] = $this->newPanel()
+ ->setBuiltinKey(self::PANEL_MANAGE)
+ ->setPanelKey(PhabricatorPeopleManageProfilePanel::PANELKEY);
+
return $panels;
}
diff --git a/src/applications/people/profilepanel/PhabricatorPeopleManageProfilePanel.php b/src/applications/people/profilepanel/PhabricatorPeopleManageProfilePanel.php
new file mode 100644
--- /dev/null
+++ b/src/applications/people/profilepanel/PhabricatorPeopleManageProfilePanel.php
@@ -0,0 +1,54 @@
+<?php
+
+final class PhabricatorPeopleManageProfilePanel
+ extends PhabricatorProfilePanel {
+
+ const PANELKEY = 'people.manage';
+
+ public function getPanelTypeName() {
+ return pht('Mangage User');
+ }
+
+ private function getDefaultName() {
+ return pht('Manage');
+ }
+
+ public function getDisplayName(
+ PhabricatorProfilePanelConfiguration $config) {
+ $name = $config->getPanelProperty('name');
+
+ if (strlen($name)) {
+ return $name;
+ }
+
+ return $this->getDefaultName();
+ }
+
+ public function buildEditEngineFields(
+ PhabricatorProfilePanelConfiguration $config) {
+ return array(
+ id(new PhabricatorTextEditField())
+ ->setKey('name')
+ ->setLabel(pht('Name'))
+ ->setPlaceholder($this->getDefaultName())
+ ->setValue($config->getPanelProperty('name')),
+ );
+ }
+
+ protected function newNavigationMenuItems(
+ PhabricatorProfilePanelConfiguration $config) {
+
+ $user = $config->getProfileObject();
+ $id = $user->getID();
+
+ $item = $this->newItem()
+ ->setHref("/people/manage/{$id}/")
+ ->setName($this->getDisplayName($config))
+ ->setIcon('fa-gears');
+
+ return array(
+ $item,
+ );
+ }
+
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 31, 4:32 PM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7387337
Default Alt Text
D15104.id36476.diff (27 KB)
Attached To
Mode
D15104: Move user editing/management actions to a separate "Manage" item, like projects
Attached
Detach File
Event Timeline
Log In to Comment