private function buildFilterMenu(PhabricatorUser $viewer, $custom_query, PhabricatorApplicationSearchEngine $engine, $query_key)
 {
     $filter_icon = id(new PHUIIconView())->setIconFont('fa-search-plus bluegrey');
     $named = array('open' => pht('Open Tasks'), 'all' => pht('All Tasks'));
     if ($viewer->isLoggedIn()) {
         $named['assigned'] = pht('Assigned to Me');
     }
     if ($custom_query) {
         $named[$custom_query->getQueryKey()] = pht('Custom Filter');
     }
     $items = array();
     foreach ($named as $key => $name) {
         $is_selected = $key == $query_key;
         if ($is_selected) {
             $active_filter = $name;
         }
         $is_custom = false;
         if ($custom_query) {
             $is_custom = $key == $custom_query->getQueryKey();
         }
         $item = id(new PhabricatorActionView())->setIcon('fa-search')->setSelected($is_selected)->setName($name);
         if ($is_custom) {
             $uri = $this->getApplicationURI('board/' . $this->id . '/filter/query/' . $key . '/');
             $item->setWorkflow(true);
         } else {
             $uri = $engine->getQueryResultsPageURI($key);
         }
         $uri = $this->getURIWithState($uri);
         $item->setHref($uri);
         $items[] = $item;
     }
     $items[] = id(new PhabricatorActionView())->setIcon('fa-cog')->setHref($this->getApplicationURI('board/' . $this->id . '/filter/'))->setWorkflow(true)->setName(pht('Advanced Filter...'));
     $filter_menu = id(new PhabricatorActionListView())->setUser($viewer);
     foreach ($items as $item) {
         $filter_menu->addAction($item);
     }
     $filter_button = id(new PHUIButtonView())->setText(pht('Filter: %s', $active_filter))->setIcon($filter_icon)->setTag('a')->setHref('#')->addSigil('boards-dropdown-menu')->setMetadata(array('items' => hsprintf('%s', $filter_menu)));
     return $filter_button;
 }
 private function buildFilterMenu(PhabricatorUser $viewer, PhabricatorProject $project, $custom_query, PhabricatorApplicationSearchEngine $engine, $query_key)
 {
     $named = array('open' => pht('Open Tasks'), 'all' => pht('All Tasks'));
     if ($viewer->isLoggedIn()) {
         $named['assigned'] = pht('Assigned to Me');
     }
     if ($custom_query) {
         $named[$custom_query->getQueryKey()] = pht('Custom Filter');
     }
     $items = array();
     foreach ($named as $key => $name) {
         $is_selected = $key == $query_key;
         if ($is_selected) {
             $active_filter = $name;
         }
         $is_custom = false;
         if ($custom_query) {
             $is_custom = $key == $custom_query->getQueryKey();
         }
         $item = id(new PhabricatorActionView())->setIcon('fa-search')->setSelected($is_selected)->setName($name);
         if ($is_custom) {
             $uri = $this->getApplicationURI('board/' . $this->id . '/filter/query/' . $key . '/');
             $item->setWorkflow(true);
         } else {
             $uri = $engine->getQueryResultsPageURI($key);
         }
         $uri = $this->getURIWithState($uri)->setQueryParam('filter', null);
         $item->setHref($uri);
         $items[] = $item;
     }
     $id = $project->getID();
     $filter_uri = $this->getApplicationURI("board/{$id}/filter/");
     $filter_uri = $this->getURIWithState($filter_uri, $force = true);
     $items[] = id(new PhabricatorActionView())->setIcon('fa-cog')->setHref($filter_uri)->setWorkflow(true)->setName(pht('Advanced Filter...'));
     $save_uri = "default/{$id}/filter/";
     $save_uri = $this->getApplicationURI($save_uri);
     $save_uri = $this->getURIWithState($save_uri, $force = true);
     $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $project, PhabricatorPolicyCapability::CAN_EDIT);
     $items[] = id(new PhabricatorActionView())->setIcon('fa-floppy-o')->setName(pht('Save as Default'))->setHref($save_uri)->setWorkflow(true)->setDisabled(!$can_edit);
     $filter_menu = id(new PhabricatorActionListView())->setUser($viewer);
     foreach ($items as $item) {
         $filter_menu->addAction($item);
     }
     $filter_button = id(new PHUIListItemView())->setName($active_filter)->setIcon('fa-search')->setHref('#')->addSigil('boards-dropdown-menu')->setMetadata(array('items' => hsprintf('%s', $filter_menu)));
     return $filter_button;
 }