Differential D14890 Diff 35998 src/applications/project/controller/PhabricatorProjectProfileController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/project/controller/PhabricatorProjectProfileController.php
| <?php | <?php | ||||
| final class PhabricatorProjectProfileController | final class PhabricatorProjectProfileController | ||||
| extends PhabricatorProjectController { | extends PhabricatorProjectController { | ||||
| public function shouldAllowPublic() { | public function shouldAllowPublic() { | ||||
| return true; | return true; | ||||
| } | } | ||||
| public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
| $user = $request->getUser(); | $viewer = $request->getUser(); | ||||
| $query = id(new PhabricatorProjectQuery()) | $response = $this->loadProject(); | ||||
| ->setViewer($user) | if ($response) { | ||||
| ->needMembers(true) | return $response; | ||||
| ->needWatchers(true) | |||||
| ->needImages(true) | |||||
| ->needSlugs(true); | |||||
| $id = $request->getURIData('id'); | |||||
| $slug = $request->getURIData('slug'); | |||||
| if ($slug) { | |||||
| $query->withSlugs(array($slug)); | |||||
| } else { | |||||
| $query->withIDs(array($id)); | |||||
| } | |||||
| $project = $query->executeOne(); | |||||
| if (!$project) { | |||||
| return new Aphront404Response(); | |||||
| } | |||||
| if ($slug && $slug != $project->getPrimarySlug()) { | |||||
| return id(new AphrontRedirectResponse()) | |||||
| ->setURI('/tag/'.$project->getPrimarySlug().'/'); | |||||
| } | } | ||||
| $project = $this->getProject(); | |||||
| $id = $project->getID(); | |||||
| $picture = $project->getProfileImageURI(); | $picture = $project->getProfileImageURI(); | ||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setHeader($project->getName()) | ->setHeader($project->getName()) | ||||
| ->setUser($user) | ->setUser($viewer) | ||||
| ->setPolicyObject($project) | ->setPolicyObject($project) | ||||
| ->setImage($picture); | ->setImage($picture); | ||||
| if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) { | if ($project->getStatus() == PhabricatorProjectStatus::STATUS_ACTIVE) { | ||||
| $header->setStatus('fa-check', 'bluegrey', pht('Active')); | $header->setStatus('fa-check', 'bluegrey', pht('Active')); | ||||
| } else { | } else { | ||||
| $header->setStatus('fa-ban', 'red', pht('Archived')); | $header->setStatus('fa-ban', 'red', pht('Archived')); | ||||
| } | } | ||||
| $actions = $this->buildActionListView($project); | $actions = $this->buildActionListView($project); | ||||
| $properties = $this->buildPropertyListView($project, $actions); | $properties = $this->buildPropertyListView($project, $actions); | ||||
| $object_box = id(new PHUIObjectBoxView()) | $object_box = id(new PHUIObjectBoxView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->addPropertyList($properties); | ->addPropertyList($properties); | ||||
| $timeline = $this->buildTransactionTimeline( | $timeline = $this->buildTransactionTimeline( | ||||
| $project, | $project, | ||||
| new PhabricatorProjectTransactionQuery()); | new PhabricatorProjectTransactionQuery()); | ||||
| $timeline->setShouldTerminate(true); | $timeline->setShouldTerminate(true); | ||||
| $nav = $this->buildIconNavView($project); | $nav = $this->buildIconNavView($project); | ||||
| $nav->selectFilter("profile/{$id}/"); | $nav->selectFilter("profile/{$id}/"); | ||||
| $nav->appendChild($object_box); | |||||
| $nav->appendChild($timeline); | |||||
| return $this->buildApplicationPage( | return $this->newPage() | ||||
| $nav, | ->setNavigation($nav) | ||||
| array( | ->setTitle($project->getName()) | ||||
| 'title' => $project->getName(), | ->setPageObjectPHIDs(array($project->getPHID())) | ||||
| 'pageObjects' => array($project->getPHID()), | ->appendChild($object_box) | ||||
| )); | ->appendChild($timeline); | ||||
| } | } | ||||
| private function buildActionListView(PhabricatorProject $project) { | private function buildActionListView(PhabricatorProject $project) { | ||||
| $request = $this->getRequest(); | $request = $this->getRequest(); | ||||
| $viewer = $request->getUser(); | $viewer = $request->getUser(); | ||||
| $id = $project->getID(); | $id = $project->getID(); | ||||
| ▲ Show 20 Lines • Show All 144 Lines • Show Last 20 Lines | |||||