Page MenuHomePhabricator

D17987.diff
No OneTemporary

D17987.diff

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
@@ -3457,10 +3457,12 @@
'PhabricatorPeopleProfileManageController' => 'applications/people/controller/PhabricatorPeopleProfileManageController.php',
'PhabricatorPeopleProfileMenuEngine' => 'applications/people/engine/PhabricatorPeopleProfileMenuEngine.php',
'PhabricatorPeopleProfilePictureController' => 'applications/people/controller/PhabricatorPeopleProfilePictureController.php',
+ 'PhabricatorPeopleProfileRevisionsController' => 'applications/people/controller/PhabricatorPeopleProfileRevisionsController.php',
'PhabricatorPeopleProfileTasksController' => 'applications/people/controller/PhabricatorPeopleProfileTasksController.php',
'PhabricatorPeopleProfileViewController' => 'applications/people/controller/PhabricatorPeopleProfileViewController.php',
'PhabricatorPeopleQuery' => 'applications/people/query/PhabricatorPeopleQuery.php',
'PhabricatorPeopleRenameController' => 'applications/people/controller/PhabricatorPeopleRenameController.php',
+ 'PhabricatorPeopleRevisionsProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php',
'PhabricatorPeopleSearchEngine' => 'applications/people/query/PhabricatorPeopleSearchEngine.php',
'PhabricatorPeopleTasksProfileMenuItem' => 'applications/people/menuitem/PhabricatorPeopleTasksProfileMenuItem.php',
'PhabricatorPeopleTestDataGenerator' => 'applications/people/lipsum/PhabricatorPeopleTestDataGenerator.php',
@@ -8825,10 +8827,12 @@
'PhabricatorPeopleProfileManageController' => 'PhabricatorPeopleProfileController',
'PhabricatorPeopleProfileMenuEngine' => 'PhabricatorProfileMenuEngine',
'PhabricatorPeopleProfilePictureController' => 'PhabricatorPeopleProfileController',
+ 'PhabricatorPeopleProfileRevisionsController' => 'PhabricatorPeopleProfileController',
'PhabricatorPeopleProfileTasksController' => 'PhabricatorPeopleProfileController',
'PhabricatorPeopleProfileViewController' => 'PhabricatorPeopleProfileController',
'PhabricatorPeopleQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhabricatorPeopleRenameController' => 'PhabricatorPeopleController',
+ 'PhabricatorPeopleRevisionsProfileMenuItem' => 'PhabricatorProfileMenuItem',
'PhabricatorPeopleSearchEngine' => 'PhabricatorApplicationSearchEngine',
'PhabricatorPeopleTasksProfileMenuItem' => 'PhabricatorProfileMenuItem',
'PhabricatorPeopleTestDataGenerator' => 'PhabricatorTestDataGenerator',
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
@@ -70,6 +70,8 @@
'PhabricatorPeopleProfileTasksController',
'commits/(?P<id>[1-9]\d*)/' =>
'PhabricatorPeopleProfileCommitsController',
+ 'revisions/(?P<id>[1-9]\d*)/' =>
+ 'PhabricatorPeopleProfileRevisionsController',
'picture/(?P<id>[1-9]\d*)/' =>
'PhabricatorPeopleProfilePictureController',
'manage/(?P<id>[1-9]\d*)/' =>
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php b/src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php
@@ -13,10 +13,6 @@
->needProfile(true)
->needProfileImage(true)
->needAvailability(true)
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- ))
->executeOne();
if (!$user) {
return new Aphront404Response();
@@ -63,10 +59,6 @@
->needAuditRequests(true)
->needCommitData(true)
->needDrafts(true)
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- ))
->setLimit(100)
->execute();
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php b/src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php
copy from src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php
copy to src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileCommitsController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileRevisionsController.php
@@ -1,6 +1,6 @@
<?php
-final class PhabricatorPeopleProfileCommitsController
+final class PhabricatorPeopleProfileRevisionsController
extends PhabricatorPeopleProfileController {
public function handleRequest(AphrontRequest $request) {
@@ -13,31 +13,27 @@
->needProfile(true)
->needProfileImage(true)
->needAvailability(true)
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- ))
->executeOne();
if (!$user) {
return new Aphront404Response();
}
- $class = 'PhabricatorDiffusionApplication';
+ $class = 'PhabricatorDifferentialApplication';
if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {
return new Aphront404Response();
}
$this->setUser($user);
- $title = array(pht('Recent Commits'), $user->getUsername());
+ $title = array(pht('Recent Revisions'), $user->getUsername());
$header = $this->buildProfileHeader();
- $commits = $this->buildCommitsView($user);
+ $commits = $this->buildRevisionsView($user);
$crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Recent Commits'));
+ $crumbs->addTextCrumb(pht('Recent Revisions'));
$crumbs->setBorder(true);
$nav = $this->getProfileMenu();
- $nav->selectFilter(PhabricatorPeopleProfileMenuEngine::ITEM_COMMITS);
+ $nav->selectFilter(PhabricatorPeopleProfileMenuEngine::ITEM_REVISIONS);
$view = id(new PHUITwoColumnView())
->setHeader($header)
@@ -54,29 +50,30 @@
->appendChild($view);
}
- private function buildCommitsView(PhabricatorUser $user) {
+ private function buildRevisionsView(PhabricatorUser $user) {
$viewer = $this->getViewer();
- $commits = id(new DiffusionCommitQuery())
+ $revisions = id(new DifferentialRevisionQuery())
->setViewer($viewer)
- ->withAuthorPHIDs(array($user->getPHID()))
- ->needAuditRequests(true)
- ->needCommitData(true)
+ ->withAuthors(array($user->getPHID()))
+ ->needFlags(true)
->needDrafts(true)
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- ))
+ ->needReviewers(true)
->setLimit(100)
->execute();
- $list = id(new PhabricatorAuditListView())
- ->setViewer($viewer)
- ->setCommits($commits)
- ->setNoDataString(pht('No recent commits.'));
+ $list = id(new DifferentialRevisionListView())
+ ->setUser($viewer)
+ ->setNoBox(true)
+ ->setRevisions($revisions)
+ ->setNoDataString(pht('No recent revisions.'));
+
+ $object_phids = $list->getRequiredHandlePHIDs();
+ $handles = $this->loadViewerHandles($object_phids);
+ $list->setHandles($handles);
$view = id(new PHUIObjectBoxView())
- ->setHeaderText(pht('Recent Commits'))
+ ->setHeaderText(pht('Recent Revisions'))
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->appendChild($list);
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileTasksController.php b/src/applications/people/controller/PhabricatorPeopleProfileTasksController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileTasksController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileTasksController.php
@@ -13,10 +13,6 @@
->needProfile(true)
->needProfileImage(true)
->needAvailability(true)
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- ))
->executeOne();
if (!$user) {
return new Aphront404Response();
diff --git a/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php b/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php
--- a/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php
+++ b/src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php
@@ -9,6 +9,7 @@
const ITEM_BADGES = 'people.badges';
const ITEM_TASKS = 'people.tasks';
const ITEM_COMMITS = 'people.commits';
+ const ITEM_REVISIONS = 'people.revisions';
protected function isMenuEngineConfigurable() {
return false;
@@ -52,6 +53,16 @@
->setMenuItemKey(PhabricatorPeopleTasksProfileMenuItem::MENUITEMKEY);
}
+ $have_differential = PhabricatorApplication::isClassInstalledForViewer(
+ 'PhabricatorDifferentialApplication',
+ $viewer);
+ if ($have_differential) {
+ $items[] = $this->newItem()
+ ->setBuiltinKey(self::ITEM_REVISIONS)
+ ->setMenuItemKey(
+ PhabricatorPeopleRevisionsProfileMenuItem::MENUITEMKEY);
+ }
+
$have_diffusion = PhabricatorApplication::isClassInstalledForViewer(
'PhabricatorDiffusionApplication',
$viewer);
diff --git a/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php b/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php
new file mode 100644
--- /dev/null
+++ b/src/applications/people/menuitem/PhabricatorPeopleRevisionsProfileMenuItem.php
@@ -0,0 +1,59 @@
+<?php
+
+final class PhabricatorPeopleRevisionsProfileMenuItem
+ extends PhabricatorProfileMenuItem {
+
+ const MENUITEMKEY = 'people.revisions';
+
+ public function getMenuItemTypeName() {
+ return pht('Revisions');
+ }
+
+ private function getDefaultName() {
+ return pht('Revisions');
+ }
+
+ public function canHideMenuItem(
+ PhabricatorProfileMenuItemConfiguration $config) {
+ return true;
+ }
+
+ public function getDisplayName(
+ PhabricatorProfileMenuItemConfiguration $config) {
+ $name = $config->getMenuItemProperty('name');
+
+ if (strlen($name)) {
+ return $name;
+ }
+
+ return $this->getDefaultName();
+ }
+
+ public function buildEditEngineFields(
+ PhabricatorProfileMenuItemConfiguration $config) {
+ return array(
+ id(new PhabricatorTextEditField())
+ ->setKey('name')
+ ->setLabel(pht('Name'))
+ ->setPlaceholder($this->getDefaultName())
+ ->setValue($config->getMenuItemProperty('name')),
+ );
+ }
+
+ protected function newNavigationMenuItems(
+ PhabricatorProfileMenuItemConfiguration $config) {
+
+ $user = $config->getProfileObject();
+ $id = $user->getID();
+
+ $item = $this->newItem()
+ ->setHref("/people/revisions/{$id}/")
+ ->setName($this->getDisplayName($config))
+ ->setIcon('fa-gear');
+
+ return array(
+ $item,
+ );
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 5:04 AM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6284101
Default Alt Text
D17987.diff (11 KB)

Event Timeline