2011-01-24 22:18:41 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
abstract class DifferentialController extends PhabricatorController {
|
|
|
|
|
2011-10-24 21:27:16 +02:00
|
|
|
protected function allowsAnonymousAccess() {
|
|
|
|
return PhabricatorEnv::getEnvConfig('differential.anonymous-access');
|
|
|
|
}
|
|
|
|
|
2011-01-24 22:18:41 +01:00
|
|
|
public function buildStandardPageResponse($view, array $data) {
|
2011-01-26 00:19:06 +01:00
|
|
|
|
|
|
|
require_celerity_resource('differential-core-view-css');
|
|
|
|
|
2011-01-26 22:21:12 +01:00
|
|
|
$page = $this->buildStandardPageView();
|
2013-01-24 19:46:47 +01:00
|
|
|
$page->setApplicationName(pht('Differential'));
|
2011-01-24 22:18:41 +01:00
|
|
|
$page->setBaseURI('/differential/');
|
|
|
|
$page->setTitle(idx($data, 'title'));
|
|
|
|
$page->setGlyph("\xE2\x9A\x99");
|
|
|
|
$page->appendChild($view);
|
2012-02-15 02:00:12 +01:00
|
|
|
$page->setSearchDefaultScope(PhabricatorSearchScope::SCOPE_OPEN_REVISIONS);
|
2011-01-24 22:18:41 +01:00
|
|
|
|
|
|
|
$response = new AphrontWebpageResponse();
|
|
|
|
return $response->setContent($page->render());
|
|
|
|
}
|
|
|
|
|
2012-12-07 22:37:45 +01:00
|
|
|
public function buildApplicationCrumbs() {
|
|
|
|
$crumbs = parent::buildApplicationCrumbs();
|
|
|
|
|
|
|
|
$crumbs->addAction(
|
|
|
|
id(new PhabricatorMenuItemView())
|
|
|
|
->setHref($this->getApplicationURI('/diff/create/'))
|
2013-01-24 19:46:47 +01:00
|
|
|
->setName(pht('Create Diff'))
|
2012-12-07 22:37:45 +01:00
|
|
|
->setIcon('create'));
|
|
|
|
|
|
|
|
return $crumbs;
|
|
|
|
}
|
|
|
|
|
2013-04-15 15:52:28 +02:00
|
|
|
public function buildSideNav($filter = null,
|
|
|
|
$for_app = false, $username = null) {
|
|
|
|
|
|
|
|
$viewer_is_anonymous = !$this->getRequest()->getUser()->isLoggedIn();
|
|
|
|
|
|
|
|
$uri = id(new PhutilURI('/differential/filter/'))
|
|
|
|
->setQueryParams($this->getRequest()->getRequestURI()->getQueryParams());
|
|
|
|
$filters = $this->getFilters();
|
|
|
|
$filter = $this->selectFilter($filters, $filter, $viewer_is_anonymous);
|
|
|
|
|
|
|
|
$side_nav = new AphrontSideNavFilterView();
|
|
|
|
$side_nav->setBaseURI($uri);
|
|
|
|
foreach ($filters as $filter) {
|
|
|
|
list($filter_name, $display_name) = $filter;
|
|
|
|
if ($filter_name) {
|
|
|
|
$side_nav->addFilter($filter_name.'/'.$username, $display_name);
|
|
|
|
} else {
|
|
|
|
$side_nav->addLabel($display_name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $side_nav;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getFilters() {
|
|
|
|
return array(
|
|
|
|
array(null, pht('User Revisions')),
|
|
|
|
array('active', pht('Active')),
|
|
|
|
array('revisions', pht('Revisions')),
|
|
|
|
array('reviews', pht('Reviews')),
|
|
|
|
array('subscribed', pht('Subscribed')),
|
|
|
|
array('drafts', pht('Draft Reviews')),
|
|
|
|
array(null, pht('All Revisions')),
|
|
|
|
array('all', pht('All')),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function selectFilter(
|
|
|
|
array $filters,
|
|
|
|
$requested_filter,
|
|
|
|
$viewer_is_anonymous) {
|
|
|
|
|
|
|
|
$default_filter = ($viewer_is_anonymous ? 'all' : 'active');
|
|
|
|
|
|
|
|
// If the user requested a filter, make sure it actually exists.
|
|
|
|
if ($requested_filter) {
|
|
|
|
foreach ($filters as $filter) {
|
|
|
|
if ($filter[0] === $requested_filter) {
|
|
|
|
return $requested_filter;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// If not, return the default filter.
|
|
|
|
return $default_filter;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function buildApplicationMenu() {
|
|
|
|
return $this->buildSideNav(null, true)->getMenu();
|
|
|
|
}
|
|
|
|
|
2011-01-24 22:18:41 +01:00
|
|
|
}
|