1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-01-07 21:31:02 +01:00
phorge-phorge/src/applications/differential/controller/DifferentialController.php

99 lines
2.8 KiB
PHP
Raw Normal View History

2011-01-24 22:18:41 +01:00
<?php
abstract class DifferentialController extends PhabricatorController {
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();
$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);
$page->setSearchDefaultScope(PhabricatorSearchScope::SCOPE_OPEN_REVISIONS);
2011-01-24 22:18:41 +01:00
$response = new AphrontWebpageResponse();
return $response->setContent($page->render());
}
public function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
$crumbs->addAction(
id(new PhabricatorMenuItemView())
->setHref($this->getApplicationURI('/diff/create/'))
->setName(pht('Create Diff'))
->setIcon('create'));
return $crumbs;
}
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
}