[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/phriction/controller/ -> PhrictionController.php (source)

   1  <?php
   2  
   3  abstract class PhrictionController extends PhabricatorController {
   4  
   5    public function buildSideNavView($for_app = false) {
   6      $user = $this->getRequest()->getUser();
   7  
   8      $nav = new AphrontSideNavFilterView();
   9      $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
  10  
  11      if ($for_app) {
  12        $nav->addFilter('create', pht('New Document'));
  13        $nav->addFilter('/phriction/', pht('Index'));
  14      }
  15  
  16      id(new PhrictionSearchEngine())
  17        ->setViewer($user)
  18        ->addNavigationItems($nav->getMenu());
  19  
  20      $nav->selectFilter(null);
  21  
  22      return $nav;
  23    }
  24  
  25    public function buildApplicationMenu() {
  26      return $this->buildSideNavView(true)->getMenu();
  27    }
  28  
  29    public function buildApplicationCrumbs() {
  30      $crumbs = parent::buildApplicationCrumbs();
  31  
  32      if (get_class($this) != 'PhrictionListController') {
  33        $crumbs->addAction(
  34          id(new PHUIListItemView())
  35            ->setName(pht('Index'))
  36            ->setHref('/phriction/')
  37            ->setIcon('fa-home'));
  38      }
  39  
  40      $crumbs->addAction(
  41        id(new PHUIListItemView())
  42          ->setName(pht('New Document'))
  43          ->setHref('/phriction/new/?slug='.$this->getDocumentSlug())
  44          ->setWorkflow(true)
  45          ->setIcon('fa-plus-square'));
  46  
  47      return $crumbs;
  48    }
  49  
  50    public function renderBreadcrumbs($slug) {
  51      $ancestor_handles = array();
  52      $ancestral_slugs = PhabricatorSlug::getAncestry($slug);
  53      $ancestral_slugs[] = $slug;
  54      if ($ancestral_slugs) {
  55        $empty_slugs = array_fill_keys($ancestral_slugs, null);
  56        $ancestors = id(new PhrictionDocumentQuery())
  57          ->setViewer($this->getRequest()->getUser())
  58          ->withSlugs($ancestral_slugs)
  59          ->execute();
  60        $ancestors = mpull($ancestors, null, 'getSlug');
  61  
  62        $ancestor_phids = mpull($ancestors, 'getPHID');
  63        $handles = array();
  64        if ($ancestor_phids) {
  65          $handles = $this->loadViewerHandles($ancestor_phids);
  66        }
  67  
  68        $ancestor_handles = array();
  69        foreach ($ancestral_slugs as $slug) {
  70          if (isset($ancestors[$slug])) {
  71            $ancestor_handles[] = $handles[$ancestors[$slug]->getPHID()];
  72          } else {
  73            $handle = new PhabricatorObjectHandle();
  74            $handle->setName(PhabricatorSlug::getDefaultTitle($slug));
  75            $handle->setURI(PhrictionDocument::getSlugURI($slug));
  76            $ancestor_handles[] = $handle;
  77          }
  78        }
  79      }
  80  
  81      $breadcrumbs = array();
  82      foreach ($ancestor_handles as $ancestor_handle) {
  83        $breadcrumbs[] = id(new PhabricatorCrumbView())
  84          ->setName($ancestor_handle->getName())
  85          ->setHref($ancestor_handle->getUri());
  86      }
  87      return $breadcrumbs;
  88    }
  89  
  90    protected function getDocumentSlug() {
  91      return '';
  92    }
  93  
  94  }


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