Put feed on project home, move history to a separate page
Summary:
Ref T10054. This shuffles some stuff around to move us closer to mocks in M1450 in terms of what information is on which pages.
Home now has feed, members, watchers, link to "edit project / project edit history".
History now has edit history, edit details, edit picture, archive/unarchive.
Test Plan:
New home page:
{F1064889}
New edit/history page:
{F1064890}
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T10054
Differential Revision: https://secure.phabricator.com/D15060
This commit is contained in:
@@ -8,13 +8,12 @@ final class PhabricatorProjectProfileController
|
||||
}
|
||||
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$viewer = $request->getUser();
|
||||
|
||||
$response = $this->loadProject();
|
||||
if ($response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
$viewer = $request->getUser();
|
||||
$project = $this->getProject();
|
||||
$id = $project->getID();
|
||||
$picture = $project->getProfileImageURI();
|
||||
@@ -38,14 +37,46 @@ final class PhabricatorProjectProfileController
|
||||
->setHeader($header)
|
||||
->addPropertyList($properties);
|
||||
|
||||
$timeline = $this->buildTransactionTimeline(
|
||||
$project,
|
||||
new PhabricatorProjectTransactionQuery());
|
||||
$timeline->setShouldTerminate(true);
|
||||
$member_list = id(new PhabricatorProjectMemberListView())
|
||||
->setUser($viewer)
|
||||
->setProject($project)
|
||||
->setLimit(5)
|
||||
->setUserPHIDs($project->getMemberPHIDs());
|
||||
|
||||
$watcher_list = id(new PhabricatorProjectWatcherListView())
|
||||
->setUser($viewer)
|
||||
->setProject($project)
|
||||
->setLimit(5)
|
||||
->setUserPHIDs($project->getWatcherPHIDs());
|
||||
|
||||
$nav = $this->getProfileMenu();
|
||||
$nav->selectFilter(PhabricatorProject::PANEL_PROFILE);
|
||||
|
||||
|
||||
$stories = id(new PhabricatorFeedQuery())
|
||||
->setViewer($viewer)
|
||||
->setFilterPHIDs(
|
||||
array(
|
||||
$project->getPHID(),
|
||||
))
|
||||
->setLimit(50)
|
||||
->execute();
|
||||
|
||||
$feed = $this->renderStories($stories);
|
||||
|
||||
$feed = id(new PHUIObjectBoxView())
|
||||
->setHeaderText(pht('Recent Activity'))
|
||||
->appendChild($feed);
|
||||
|
||||
$columns = id(new AphrontMultiColumnView())
|
||||
->setFluidLayout(true)
|
||||
->addColumn($feed)
|
||||
->addColumn(
|
||||
array(
|
||||
$member_list,
|
||||
$watcher_list,
|
||||
));
|
||||
|
||||
$crumbs = $this->buildApplicationCrumbs();
|
||||
|
||||
return $this->newPage()
|
||||
@@ -53,8 +84,11 @@ final class PhabricatorProjectProfileController
|
||||
->setCrumbs($crumbs)
|
||||
->setTitle($project->getName())
|
||||
->setPageObjectPHIDs(array($project->getPHID()))
|
||||
->appendChild($object_box)
|
||||
->appendChild($timeline);
|
||||
->appendChild(
|
||||
array(
|
||||
$object_box,
|
||||
$columns,
|
||||
));
|
||||
}
|
||||
|
||||
private function buildActionListView(PhabricatorProject $project) {
|
||||
@@ -67,44 +101,11 @@ final class PhabricatorProjectProfileController
|
||||
->setUser($viewer)
|
||||
->setObject($project);
|
||||
|
||||
$can_edit = PhabricatorPolicyFilter::hasCapability(
|
||||
$viewer,
|
||||
$project,
|
||||
PhabricatorPolicyCapability::CAN_EDIT);
|
||||
|
||||
$view->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('Edit Details'))
|
||||
->setName(pht('Edit Project'))
|
||||
->setIcon('fa-pencil')
|
||||
->setHref($this->getApplicationURI("edit/{$id}/"))
|
||||
->setDisabled(!$can_edit)
|
||||
->setWorkflow(!$can_edit));
|
||||
|
||||
$view->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('Edit Picture'))
|
||||
->setIcon('fa-picture-o')
|
||||
->setHref($this->getApplicationURI("picture/{$id}/"))
|
||||
->setDisabled(!$can_edit)
|
||||
->setWorkflow(!$can_edit));
|
||||
|
||||
if ($project->isArchived()) {
|
||||
$view->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('Activate Project'))
|
||||
->setIcon('fa-check')
|
||||
->setHref($this->getApplicationURI("archive/{$id}/"))
|
||||
->setDisabled(!$can_edit)
|
||||
->setWorkflow(true));
|
||||
} else {
|
||||
$view->addAction(
|
||||
id(new PhabricatorActionView())
|
||||
->setName(pht('Archive Project'))
|
||||
->setIcon('fa-ban')
|
||||
->setHref($this->getApplicationURI("archive/{$id}/"))
|
||||
->setDisabled(!$can_edit)
|
||||
->setWorkflow(true));
|
||||
}
|
||||
->setHref($this->getApplicationURI("history/{$id}/")));
|
||||
|
||||
return $view;
|
||||
}
|
||||
@@ -120,33 +121,6 @@ final class PhabricatorProjectProfileController
|
||||
->setObject($project)
|
||||
->setActionList($actions);
|
||||
|
||||
$hashtags = array();
|
||||
foreach ($project->getSlugs() as $slug) {
|
||||
$hashtags[] = id(new PHUITagView())
|
||||
->setType(PHUITagView::TYPE_OBJECT)
|
||||
->setName('#'.$slug->getSlug());
|
||||
}
|
||||
|
||||
if ($hashtags) {
|
||||
$view->addProperty(pht('Hashtags'), phutil_implode_html(' ', $hashtags));
|
||||
}
|
||||
|
||||
$view->addProperty(
|
||||
pht('Members'),
|
||||
$project->getMemberPHIDs()
|
||||
? $viewer
|
||||
->renderHandleList($project->getMemberPHIDs())
|
||||
->setAsInline(true)
|
||||
: phutil_tag('em', array(), pht('None')));
|
||||
|
||||
$view->addProperty(
|
||||
pht('Watchers'),
|
||||
$project->getWatcherPHIDs()
|
||||
? $viewer
|
||||
->renderHandleList($project->getWatcherPHIDs())
|
||||
->setAsInline(true)
|
||||
: phutil_tag('em', array(), pht('None')));
|
||||
|
||||
$view->addProperty(
|
||||
pht('Looks Like'),
|
||||
$viewer->renderHandle($project->getPHID())->setAsTag(true));
|
||||
@@ -159,5 +133,15 @@ final class PhabricatorProjectProfileController
|
||||
return $view;
|
||||
}
|
||||
|
||||
private function renderStories(array $stories) {
|
||||
assert_instances_of($stories, 'PhabricatorFeedStory');
|
||||
|
||||
$builder = new PhabricatorFeedBuilder($stories);
|
||||
$builder->setUser($this->getRequest()->getUser());
|
||||
$builder->setShowHovercards(true);
|
||||
$view = $builder->buildView();
|
||||
|
||||
return phutil_tag_div('profile-feed', $view->render());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user