2011-02-21 03:41:23 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
abstract class PhabricatorProjectController extends PhabricatorController {
|
|
|
|
|
|
|
|
public function buildStandardPageResponse($view, array $data) {
|
|
|
|
$page = $this->buildStandardPageView();
|
|
|
|
|
2013-02-13 18:22:14 +01:00
|
|
|
$page->setApplicationName(pht('Project'));
|
2011-02-21 03:41:23 +01:00
|
|
|
$page->setBaseURI('/project/');
|
|
|
|
$page->setTitle(idx($data, 'title'));
|
|
|
|
$page->setGlyph("\xE2\x98\xA3");
|
|
|
|
$page->appendChild($view);
|
|
|
|
|
|
|
|
$response = new AphrontWebpageResponse();
|
|
|
|
return $response->setContent($page->render());
|
|
|
|
}
|
|
|
|
|
2012-08-07 20:57:38 +02:00
|
|
|
protected function buildLocalNavigation(PhabricatorProject $project) {
|
|
|
|
$id = $project->getID();
|
|
|
|
|
|
|
|
$nav_view = new AphrontSideNavFilterView();
|
|
|
|
$uri = new PhutilURI('/project/view/'.$id.'/');
|
|
|
|
$nav_view->setBaseURI($uri);
|
|
|
|
|
|
|
|
$external_arrow = "\xE2\x86\x97";
|
|
|
|
$tasks_uri = '/maniphest/view/all/?projects='.$project->getPHID();
|
|
|
|
$slug = PhabricatorSlug::normalize($project->getName());
|
|
|
|
$phriction_uri = '/w/projects/'.$slug;
|
|
|
|
|
|
|
|
$edit_uri = '/project/edit/'.$id.'/';
|
|
|
|
$members_uri = '/project/members/'.$id.'/';
|
|
|
|
|
2013-02-13 18:22:14 +01:00
|
|
|
$nav_view->addFilter('dashboard', pht('Dashboard'));
|
|
|
|
$nav_view->addFilter('feed', pht('Feed'));
|
|
|
|
$nav_view->addFilter(null, pht('Tasks').' '.$external_arrow, $tasks_uri);
|
|
|
|
$nav_view->addFilter(null, pht('Wiki').' '.$external_arrow, $phriction_uri);
|
|
|
|
$nav_view->addFilter('people', pht('People'));
|
|
|
|
$nav_view->addFilter('about', pht('About'));
|
2012-08-15 19:44:58 +02:00
|
|
|
|
|
|
|
$user = $this->getRequest()->getUser();
|
|
|
|
$can_edit = PhabricatorPolicyCapability::CAN_EDIT;
|
|
|
|
|
|
|
|
if (PhabricatorPolicyFilter::hasCapability($user, $project, $can_edit)) {
|
2013-02-13 18:22:14 +01:00
|
|
|
$nav_view->addFilter('edit', pht("Edit Project"), $edit_uri);
|
|
|
|
$nav_view->addFilter('members', pht("Edit Members"), $members_uri);
|
2012-08-15 19:44:58 +02:00
|
|
|
} else {
|
|
|
|
$nav_view->addFilter(
|
|
|
|
'edit',
|
2013-02-13 18:22:14 +01:00
|
|
|
pht("Edit Project"),
|
2012-08-15 19:44:58 +02:00
|
|
|
$edit_uri,
|
|
|
|
$relative = false,
|
|
|
|
'disabled');
|
|
|
|
$nav_view->addFilter(
|
|
|
|
'members',
|
2013-02-13 18:22:14 +01:00
|
|
|
pht("Edit Members"),
|
2012-08-15 19:44:58 +02:00
|
|
|
$members_uri,
|
|
|
|
$relative = false,
|
|
|
|
'disabled');
|
|
|
|
}
|
2012-08-07 20:57:38 +02:00
|
|
|
|
|
|
|
return $nav_view;
|
|
|
|
}
|
|
|
|
|
2013-02-13 18:22:14 +01:00
|
|
|
public function buildApplicationMenu() {
|
|
|
|
return $this->buildSideNavView(null, true)->getMenu();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function buildSideNavView($filter = null, $for_app = false) {
|
|
|
|
$user = $this->getRequest()->getUser();
|
|
|
|
|
|
|
|
$nav = new AphrontSideNavFilterView();
|
|
|
|
$nav
|
|
|
|
->setBaseURI(new PhutilURI('/project/filter/'))
|
|
|
|
->addLabel(pht('User'))
|
|
|
|
->addFilter('active', pht('Active'))
|
|
|
|
->addLabel(pht('All'))
|
|
|
|
->addFilter('all', pht('All Projects'))
|
|
|
|
->addFilter('allactive', pht('Active Projects'))
|
|
|
|
->selectFilter($filter, 'active');
|
|
|
|
|
|
|
|
if ($for_app) {
|
|
|
|
$nav->addFilter('create/', pht('Create Project'));
|
|
|
|
}
|
|
|
|
|
|
|
|
return $nav;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function buildApplicationCrumbs() {
|
|
|
|
$crumbs = parent::buildApplicationCrumbs();
|
|
|
|
|
|
|
|
$crumbs->addAction(
|
|
|
|
id(new PhabricatorMenuItemView())
|
|
|
|
->setName(pht('Create Project'))
|
|
|
|
->setHref($this->getApplicationURI('create/'))
|
|
|
|
->setIcon('create'));
|
|
|
|
|
|
|
|
return $crumbs;
|
|
|
|
}
|
|
|
|
|
2011-02-21 03:41:23 +01:00
|
|
|
}
|