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; }