[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/home/controller/ -> PhabricatorHomeController.php (source)

   1  <?php
   2  
   3  abstract class PhabricatorHomeController extends PhabricatorController {
   4  
   5    public function buildStandardPageResponse($view, array $data) {
   6      $page = $this->buildStandardPageView();
   7  
   8      $page->setBaseURI('/');
   9      $page->setTitle(idx($data, 'title'));
  10  
  11      $page->setGlyph("\xE2\x9A\x92");
  12      $page->appendChild($view);
  13  
  14      $response = new AphrontWebpageResponse();
  15      return $response->setContent($page->render());
  16    }
  17  
  18    public function buildNav() {
  19      $user = $this->getRequest()->getUser();
  20  
  21      $nav = new AphrontSideNavFilterView();
  22      $nav->setBaseURI(new PhutilURI('/'));
  23  
  24      $applications = id(new PhabricatorApplicationQuery())
  25        ->setViewer($user)
  26        ->withInstalled(true)
  27        ->withUnlisted(false)
  28        ->withLaunchable(true)
  29        ->execute();
  30  
  31      $pinned = $user->loadPreferences()->getPinnedApplications(
  32        $applications,
  33        $user);
  34  
  35      // Force "Applications" to appear at the bottom.
  36      $meta_app = 'PhabricatorApplicationsApplication';
  37      $pinned = array_fuse($pinned);
  38      unset($pinned[$meta_app]);
  39      $pinned[$meta_app] = $meta_app;
  40      $applications[$meta_app] = PhabricatorApplication::getByClass($meta_app);
  41  
  42      $tiles = array();
  43  
  44      $home_app = new PhabricatorHomeApplication();
  45  
  46      $tiles[] = id(new PhabricatorApplicationLaunchView())
  47        ->setApplication($home_app)
  48        ->setApplicationStatus($home_app->loadStatus($user))
  49        ->addClass('phabricator-application-launch-phone-only')
  50        ->setUser($user);
  51  
  52      foreach ($pinned as $pinned_application) {
  53        if (empty($applications[$pinned_application])) {
  54          continue;
  55        }
  56  
  57        $application = $applications[$pinned_application];
  58  
  59        $tile = id(new PhabricatorApplicationLaunchView())
  60          ->setApplication($application)
  61          ->setApplicationStatus($application->loadStatus($user))
  62          ->setUser($user);
  63  
  64        $tiles[] = $tile;
  65      }
  66  
  67      $nav->addCustomBlock(
  68        phutil_tag(
  69          'div',
  70          array(
  71            'class' => 'application-tile-group',
  72          ),
  73          $tiles));
  74  
  75      $nav->addFilter(
  76        '',
  77        pht('Customize Applications...'),
  78        '/settings/panel/home/');
  79  
  80      $nav->addClass('phabricator-side-menu-home');
  81      $nav->selectFilter(null);
  82  
  83      return $nav;
  84    }
  85  
  86  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1