public function render()
 {
     $selected_filter = $this->getSelectedFilter();
     if (!$selected_filter) {
         throw new Exception("Call setFilter() before render()!");
     }
     $filters = array('Files' => array(), 'upload' => array('name' => 'Upload File', 'href' => '/file/filter/upload/'), 'my' => array('name' => 'My Files', 'href' => '/file/filter/my/'), 'all' => array('name' => 'All Files', 'href' => '/file/filter/all/'), '<hr />' => array(), 'Image Macros' => array(), 'create_macro' => array('name' => 'Create Image Macro', 'href' => '/file/macro/edit/'), 'all_macros' => array('name' => 'All Image Macros', 'href' => '/file/macro/'));
     $side_nav = new AphrontSideNavView();
     foreach ($filters as $filter_key => $filter) {
         // more of a label than a filter
         if (empty($filter)) {
             $side_nav->addNavItem(phutil_render_tag('span', array(), $filter_key));
             continue;
         }
         $selected = $filter_key == $selected_filter;
         $side_nav->addNavItem(phutil_render_tag('a', array('href' => $filter['href'], 'class' => $selected ? 'aphront-side-nav-selected' : null), $filter['name']));
     }
     $side_nav->appendChild($this->renderChildren());
     return $side_nav->render();
 }
 public function render()
 {
     $selected_filter = $this->getSelectedFilter();
     if (!$selected_filter) {
         throw new Exception("Call setFilter() before render()!");
     }
     $filters = array('Files' => array(), 'upload' => array('name' => 'Upload File', 'href' => '/file/filter/upload/'), 'my' => array('name' => 'My Files', 'href' => '/file/filter/my/'), 'all' => array('name' => 'All Files', 'href' => '/file/filter/all/'), '<br />' => null, '<div style="font-weight: normal; font-size: smaller; ' . 'white-space: normal;">NOTE: Macros have moved to a separate ' . 'application. Use the "Search" field to jump to it or choose ' . 'More Stuff &raquo; Macros from the home page.</span>' => null);
     $side_nav = new AphrontSideNavView();
     foreach ($filters as $filter_key => $filter) {
         // more of a label than a filter
         if (empty($filter)) {
             $side_nav->addNavItem(phutil_render_tag('span', array(), $filter_key));
             continue;
         }
         $selected = $filter_key == $selected_filter;
         $side_nav->addNavItem(phutil_render_tag('a', array('href' => $filter['href'], 'class' => $selected ? 'aphront-side-nav-selected' : null), $filter['name']));
     }
     $side_nav->appendChild($this->renderChildren());
     return $side_nav->render();
 }
 public function render()
 {
     if (!$this->baseURI) {
         throw new Exception("Call setBaseURI() before render()!");
     }
     if ($this->selectedFilter === false) {
         throw new Exception("Call selectFilter() before render()!");
     }
     $view = new AphrontSideNavView();
     foreach ($this->items as $item) {
         list($type, $key, $name) = $item;
         switch ($type) {
             case 'spacer':
                 $view->addNavItem('<br />');
                 break;
             case 'label':
                 $view->addNavItem(phutil_render_tag('span', array(), phutil_escape_html($name)));
                 break;
             case 'filter':
                 $class = $key == $this->selectedFilter ? 'aphront-side-nav-selected' : null;
                 if (empty($item['uri'])) {
                     $href = clone $this->baseURI;
                     $href->setPath($href->getPath() . $key . '/');
                     $href = (string) $href;
                 } else {
                     $href = $item['uri'];
                 }
                 $view->addNavItem(phutil_render_tag('a', array('href' => $href, 'class' => $class), phutil_escape_html($name)));
                 break;
             default:
                 throw new Exception("Unknown item type '{$type}'.");
         }
     }
     $view->appendChild($this->renderChildren());
     return $view->render();
 }
 public function render()
 {
     if ($this->items) {
         if (!$this->baseURI) {
             throw new Exception("Call setBaseURI() before render()!");
         }
         if ($this->selectedFilter === false) {
             throw new Exception("Call selectFilter() before render()!");
         }
     }
     $view = new AphrontSideNavView();
     $view->setFlexNav($this->flexNav);
     $view->setFlexible($this->flexible);
     $view->setShowApplicationMenu($this->showApplicationMenu);
     $view->setActive($this->active);
     if ($this->user) {
         $view->setUser($this->user);
     }
     if ($this->currentApplication) {
         $view->setCurrentApplication($this->currentApplication);
     }
     foreach ($this->items as $item) {
         list($type, $key, $name) = $item;
         switch ($type) {
             case 'custom':
                 $view->addNavItem($name);
                 break;
             case 'spacer':
                 $view->addNavItem('<br />');
                 break;
             case 'label':
                 $view->addNavItem(phutil_render_tag('span', array(), phutil_escape_html($name)));
                 break;
             case 'filter':
                 $class = $key == $this->selectedFilter ? 'aphront-side-nav-selected' : null;
                 $class = trim($class . ' ' . idx($item, 'class', ''));
                 if (empty($item['uri'])) {
                     $href = clone $this->baseURI;
                     $href->setPath($href->getPath() . $key . '/');
                     $href = (string) $href;
                 } else {
                     if (empty($item['relative'])) {
                         $href = $item['uri'];
                     } else {
                         $href = clone $this->baseURI;
                         $href->setPath($href->getPath() . $item['uri']);
                         $href = (string) $href;
                     }
                 }
                 $view->addNavItem(phutil_render_tag('a', array('href' => $href, 'class' => $class), phutil_escape_html($name)));
                 break;
             default:
                 throw new Exception("Unknown item type '{$type}'.");
         }
     }
     $view->appendChild($this->renderChildren());
     return $view->render();
 }