Project - use hashtag as a way to access project profile in URI, e.g. /project/hashtag/
Summary: Fixes T4022. Hooks up the project profile controller to understanding URIs like /project/hashtag/ Also, makes handles have the new /project/hashtag/ URI by default, thus upselling that feature super duper heavily. Test Plan: clicked some project links, noted pretty uri and page working nicely. Reviewers: epriestley Reviewed By: epriestley Subscribers: chad, epriestley, Korvin Maniphest Tasks: T4022 Differential Revision: https://secure.phabricator.com/D9260
This commit is contained in:
@@ -4,29 +4,41 @@ final class PhabricatorProjectProfileController
|
||||
extends PhabricatorProjectController {
|
||||
|
||||
private $id;
|
||||
private $slug;
|
||||
|
||||
public function shouldAllowPublic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function willProcessRequest(array $data) {
|
||||
// via /project/view/$id/
|
||||
$this->id = idx($data, 'id');
|
||||
// via /tag/$slug/
|
||||
$this->slug = idx($data, 'slug');
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
$project = id(new PhabricatorProjectQuery())
|
||||
$query = id(new PhabricatorProjectQuery())
|
||||
->setViewer($user)
|
||||
->withIDs(array($this->id))
|
||||
->needMembers(true)
|
||||
->needWatchers(true)
|
||||
->needImages(true)
|
||||
->executeOne();
|
||||
->needImages(true);
|
||||
if ($this->slug) {
|
||||
$query->withSlugs(array($this->slug));
|
||||
} else {
|
||||
$query->withIDs(array($this->id));
|
||||
}
|
||||
$project = $query->executeOne();
|
||||
if (!$project) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
if ($this->slug && $this->slug != $project->getPrimarySlug()) {
|
||||
return id(new AphrontRedirectResponse())
|
||||
->setURI('/tag/'.$project->getPrimarySlug().'/');
|
||||
}
|
||||
|
||||
$picture = $project->getProfileImageURI();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user