Added per-project categories to the side bar of maniphest
Currently adds all the projects there, and at this moment current project is not being highlighted, it's only get displayed on the top anchor bar. TODO: - We would probably wouldn't want all the projects there, need to add some filter there. - Make it ore clear which project is currently active.
This commit is contained in:
@@ -50,7 +50,7 @@ final class PhabricatorApplicationManiphest extends PhabricatorApplication {
|
|||||||
return array(
|
return array(
|
||||||
'/T(?P<id>[1-9]\d*)' => 'ManiphestTaskDetailController',
|
'/T(?P<id>[1-9]\d*)' => 'ManiphestTaskDetailController',
|
||||||
'/maniphest/' => array(
|
'/maniphest/' => array(
|
||||||
'(?:query/(?P<queryKey>[^/]+)/)?' => 'ManiphestTaskListController',
|
'(?:project/(?P<projectKey>[^/]+)/)?(?:query/(?P<queryKey>[^/]+)/)?' => 'ManiphestTaskListController',
|
||||||
'report/(?:(?P<view>\w+)/)?' => 'ManiphestReportController',
|
'report/(?:(?P<view>\w+)/)?' => 'ManiphestReportController',
|
||||||
'batch/' => 'ManiphestBatchEditController',
|
'batch/' => 'ManiphestBatchEditController',
|
||||||
'task/' => array(
|
'task/' => array(
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
abstract class ManiphestController extends PhabricatorController {
|
abstract class ManiphestController extends PhabricatorController {
|
||||||
|
|
||||||
|
protected $projectKey;
|
||||||
|
|
||||||
|
public function willProcessRequest(array $data) {
|
||||||
|
$this->projectKey = idx($data, 'projectKey');
|
||||||
|
}
|
||||||
|
|
||||||
public function buildApplicationMenu() {
|
public function buildApplicationMenu() {
|
||||||
return $this->buildSideNavView(true)->getMenu();
|
return $this->buildSideNavView(true)->getMenu();
|
||||||
}
|
}
|
||||||
@@ -16,8 +22,19 @@ abstract class ManiphestController extends PhabricatorController {
|
|||||||
$nav->addFilter('create', pht('Create Task'));
|
$nav->addFilter('create', pht('Create Task'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$nav->addLabel(pht('Projects'));
|
||||||
|
$nav->addFilter('', 'All Projects');
|
||||||
|
$projects = id(new PhabricatorProjectQuery())
|
||||||
|
->setViewer($user)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
foreach ($projects as $project) {
|
||||||
|
$nav->addFilter('project/' . $project->getID(), pht($project->getName()));
|
||||||
|
}
|
||||||
|
|
||||||
id(new ManiphestTaskSearchEngine())
|
id(new ManiphestTaskSearchEngine())
|
||||||
->setViewer($user)
|
->setViewer($user)
|
||||||
|
->setProjectKey($this->projectKey)
|
||||||
->addNavigationItems($nav->getMenu());
|
->addNavigationItems($nav->getMenu());
|
||||||
|
|
||||||
if ($user->isLoggedIn()) {
|
if ($user->isLoggedIn()) {
|
||||||
@@ -34,6 +51,19 @@ abstract class ManiphestController extends PhabricatorController {
|
|||||||
protected function buildApplicationCrumbs() {
|
protected function buildApplicationCrumbs() {
|
||||||
$crumbs = parent::buildApplicationCrumbs();
|
$crumbs = parent::buildApplicationCrumbs();
|
||||||
|
|
||||||
|
if ($this->projectKey) {
|
||||||
|
$user = $this->getRequest()->getUser();
|
||||||
|
$project = id(new PhabricatorProjectQuery())
|
||||||
|
->setViewer($user)
|
||||||
|
->withIDs(array($this->projectKey))
|
||||||
|
->executeOne();
|
||||||
|
if ($project) {
|
||||||
|
$crumbs->addCrumb(
|
||||||
|
id(new PhabricatorCrumbView())
|
||||||
|
->setName(pht($project->getName())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$crumbs->addAction(
|
$crumbs->addAction(
|
||||||
id(new PHUIListItemView())
|
id(new PHUIListItemView())
|
||||||
->setName(pht('Create Task'))
|
->setName(pht('Create Task'))
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ final class ManiphestExportController extends ManiphestController {
|
|||||||
private $key;
|
private $key;
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->key = $data['key'];
|
$this->key = $data['key'];
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -61,7 +62,8 @@ final class ManiphestExportController extends ManiphestController {
|
|||||||
->executeOne();
|
->executeOne();
|
||||||
if (!$saved) {
|
if (!$saved) {
|
||||||
$engine = id(new ManiphestTaskSearchEngine())
|
$engine = id(new ManiphestTaskSearchEngine())
|
||||||
->setViewer($user);
|
->setViewer($user)
|
||||||
|
->setProjectKey($this->projectKey);
|
||||||
if ($engine->isBuiltinQuery($this->key)) {
|
if ($engine->isBuiltinQuery($this->key)) {
|
||||||
$saved = $engine->buildSavedQueryFromBuiltin($this->key);
|
$saved = $engine->buildSavedQueryFromBuiltin($this->key);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ final class ManiphestReportController extends ManiphestController {
|
|||||||
private $view;
|
private $view;
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->view = idx($data, 'view');
|
$this->view = idx($data, 'view');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ final class ManiphestSubscribeController extends ManiphestController {
|
|||||||
private $action;
|
private $action;
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->id = $data['id'];
|
$this->id = $data['id'];
|
||||||
$this->action = $data['action'];
|
$this->action = $data['action'];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ final class ManiphestTaskDetailController extends ManiphestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->id = $data['id'];
|
$this->id = $data['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ final class ManiphestTaskEditController extends ManiphestController {
|
|||||||
private $id;
|
private $id;
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->id = idx($data, 'id');
|
$this->id = idx($data, 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ final class ManiphestTaskListController
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->queryKey = idx($data, 'queryKey');
|
$this->queryKey = idx($data, 'queryKey');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,7 +19,7 @@ final class ManiphestTaskListController
|
|||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$controller = id(new PhabricatorApplicationSearchController($request))
|
$controller = id(new PhabricatorApplicationSearchController($request))
|
||||||
->setQueryKey($this->queryKey)
|
->setQueryKey($this->queryKey)
|
||||||
->setSearchEngine(new ManiphestTaskSearchEngine())
|
->setSearchEngine((new ManiphestTaskSearchEngine())->setProjectKey($this->projectKey))
|
||||||
->setNavigation($this->buildSideNavView());
|
->setNavigation($this->buildSideNavView());
|
||||||
|
|
||||||
return $this->delegateToController($controller);
|
return $this->delegateToController($controller);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ final class ManiphestTransactionPreviewController extends ManiphestController {
|
|||||||
private $id;
|
private $id;
|
||||||
|
|
||||||
public function willProcessRequest(array $data) {
|
public function willProcessRequest(array $data) {
|
||||||
|
parent::willProcessRequest($data);
|
||||||
$this->id = $data['id'];
|
$this->id = $data['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
final class ManiphestTaskSearchEngine
|
final class ManiphestTaskSearchEngine
|
||||||
extends PhabricatorApplicationSearchEngine {
|
extends PhabricatorApplicationSearchEngine {
|
||||||
|
|
||||||
|
private $projectKey;
|
||||||
|
|
||||||
public function getCustomFieldObject() {
|
public function getCustomFieldObject() {
|
||||||
return new ManiphestTask();
|
return new ManiphestTask();
|
||||||
}
|
}
|
||||||
@@ -134,6 +136,14 @@ final class ManiphestTaskSearchEngine
|
|||||||
$query->withFullTextSearch($fulltext);
|
$query->withFullTextSearch($fulltext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->projectKey) {
|
||||||
|
$project = id(new PhabricatorProjectQuery())
|
||||||
|
->setViewer($this->requireViewer())
|
||||||
|
->withIDs(array($this->projectKey))
|
||||||
|
->executeOne();
|
||||||
|
|
||||||
|
$query->withAllProjects(array($project->getPHID()));
|
||||||
|
} else {
|
||||||
$with_no_project = $saved->getParameter('withNoProject');
|
$with_no_project = $saved->getParameter('withNoProject');
|
||||||
if ($with_no_project) {
|
if ($with_no_project) {
|
||||||
$query->withAllProjects(array(ManiphestTaskOwner::PROJECT_NO_PROJECT));
|
$query->withAllProjects(array(ManiphestTaskOwner::PROJECT_NO_PROJECT));
|
||||||
@@ -143,6 +153,7 @@ final class ManiphestTaskSearchEngine
|
|||||||
$query->withAllProjects($project_phids);
|
$query->withAllProjects($project_phids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$any_project_phids = $saved->getParameter('anyProjectPHIDs');
|
$any_project_phids = $saved->getParameter('anyProjectPHIDs');
|
||||||
if ($any_project_phids) {
|
if ($any_project_phids) {
|
||||||
@@ -353,6 +364,8 @@ final class ManiphestTaskSearchEngine
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected function getURI($path) {
|
protected function getURI($path) {
|
||||||
|
if ($this->projectKey)
|
||||||
|
return '/maniphest/project/' . $this->projectKey . '/'.$path;
|
||||||
return '/maniphest/'.$path;
|
return '/maniphest/'.$path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,4 +448,8 @@ final class ManiphestTaskSearchEngine
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setProjectKey($projectKey) {
|
||||||
|
$this->projectKey = $projectKey;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
<h1><a href="maniphest/">Blender 2.6 Bug tracker</a></h1>
|
<h1><a href="maniphest/">Blender 2.6 Bug tracker</a></h1>
|
||||||
<div style="padding-left: 16pt">
|
<div style="padding-left: 16pt">
|
||||||
<a href="maniphest/task/create/">submit</a> Blender 2.6x bugs<br>
|
<a href="maniphest/task/create/">submit</a> Blender 2.6x bugs<br>
|
||||||
<a href="maniphest/">browse</a> Blender 2.6x bugs
|
<a href="maniphest/project/1/">browse</a> Blender 2.6x bugs
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user