diff --git a/src/applications/conduit/controller/PhabricatorConduitListController.php b/src/applications/conduit/controller/PhabricatorConduitListController.php index 2d8fd2dab2..5bc17bdc44 100644 --- a/src/applications/conduit/controller/PhabricatorConduitListController.php +++ b/src/applications/conduit/controller/PhabricatorConduitListController.php @@ -1,84 +1,25 @@ queryKey = idx($data, 'queryKey'); } public function processRequest() { $request = $this->getRequest(); $controller = id(new PhabricatorApplicationSearchController($request)) ->setQueryKey($this->queryKey) ->setSearchEngine(new PhabricatorConduitSearchEngine()) ->setNavigation($this->buildSideNavView()); return $this->delegateToController($controller); } - public function renderResultsList( - array $methods, - PhabricatorSavedQuery $query) { - assert_instances_of($methods, 'ConduitAPIMethod'); - - $viewer = $this->getRequest()->getUser(); - - $out = array(); - - $last = null; - $list = null; - foreach ($methods as $method) { - $app = $method->getApplicationName(); - if ($app !== $last) { - $last = $app; - if ($list) { - $out[] = $list; - } - $list = id(new PHUIObjectItemListView()); - - $app_object = $method->getApplication(); - if ($app_object) { - $app_name = $app_object->getName(); - } else { - $app_name = $app; - } - } - - $method_name = $method->getAPIMethodName(); - - $item = id(new PHUIObjectItemView()) - ->setHeader($method_name) - ->setHref($this->getApplicationURI('method/'.$method_name.'/')) - ->addAttribute($method->getMethodDescription()); - - switch ($method->getMethodStatus()) { - case ConduitAPIMethod::METHOD_STATUS_STABLE: - break; - case ConduitAPIMethod::METHOD_STATUS_UNSTABLE: - $item->addIcon('warning-grey', pht('Unstable')); - $item->setBarColor('yellow'); - break; - case ConduitAPIMethod::METHOD_STATUS_DEPRECATED: - $item->addIcon('warning', pht('Deprecated')); - $item->setBarColor('red'); - break; - } - - $list->addItem($item); - } - - if ($list) { - $out[] = $list; - } - - return $out; - } - } diff --git a/src/applications/conduit/query/PhabricatorConduitSearchEngine.php b/src/applications/conduit/query/PhabricatorConduitSearchEngine.php index 43bf22bd3a..9e84de3078 100644 --- a/src/applications/conduit/query/PhabricatorConduitSearchEngine.php +++ b/src/applications/conduit/query/PhabricatorConduitSearchEngine.php @@ -1,138 +1,201 @@ setParameter('isStable', $request->getStr('isStable')); $saved->setParameter('isUnstable', $request->getStr('isUnstable')); $saved->setParameter('isDeprecated', $request->getStr('isDeprecated')); $saved->setParameter( 'applicationNames', $request->getStrList('applicationNames')); $saved->setParameter('nameContains', $request->getStr('nameContains')); return $saved; } public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { $query = id(new PhabricatorConduitMethodQuery()); $query->withIsStable($saved->getParameter('isStable')); $query->withIsUnstable($saved->getParameter('isUnstable')); $query->withIsDeprecated($saved->getParameter('isDeprecated')); $names = $saved->getParameter('applicationNames', array()); if ($names) { $query->withApplicationNames($names); } $contains = $saved->getParameter('nameContains'); if (strlen($contains)) { $query->withNameContains($contains); } return $query; } public function buildSearchForm( AphrontFormView $form, PhabricatorSavedQuery $saved) { $form ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Name Contains') ->setName('nameContains') ->setValue($saved->getParameter('nameContains'))); $names = $saved->getParameter('applicationNames', array()); $form ->appendChild( id(new AphrontFormTextControl()) ->setLabel('Applications') ->setName('applicationNames') ->setValue(implode(', ', $names)) ->setCaption(pht( 'Example: %s', phutil_tag('tt', array(), 'differential, paste')))); $is_stable = $saved->getParameter('isStable'); $is_unstable = $saved->getParameter('isUnstable'); $is_deprecated = $saved->getParameter('isDeprecated'); $form ->appendChild( id(new AphrontFormCheckboxControl()) ->setLabel('Stability') ->addCheckbox( 'isStable', 1, hsprintf( '%s: %s', pht('Stable Methods'), pht('Show established API methods with stable interfaces.')), $is_stable) ->addCheckbox( 'isUnstable', 1, hsprintf( '%s: %s', pht('Unstable Methods'), pht('Show new methods which are subject to change.')), $is_unstable) ->addCheckbox( 'isDeprecated', 1, hsprintf( '%s: %s', pht('Deprecated Methods'), pht( 'Show old methods which will be deleted in a future '. 'version of Phabricator.')), $is_deprecated)); } protected function getURI($path) { return '/conduit/'.$path; } public function getBuiltinQueryNames() { $names = array( 'modern' => pht('Modern Methods'), 'all' => pht('All Methods'), ); return $names; } public function buildSavedQueryFromBuiltin($query_key) { $query = $this->newSavedQuery(); $query->setQueryKey($query_key); switch ($query_key) { case 'modern': return $query ->setParameter('isStable', true) ->setParameter('isUnstable', true); case 'all': return $query ->setParameter('isStable', true) ->setParameter('isUnstable', true) ->setParameter('isDeprecated', true); } return parent::buildSavedQueryFromBuiltin($query_key); } + protected function renderResultList( + array $methods, + PhabricatorSavedQuery $query, + array $handles) { + assert_instances_of($methods, 'ConduitAPIMethod'); + + $viewer = $this->requireViewer(); + + $out = array(); + + $last = null; + $list = null; + foreach ($methods as $method) { + $app = $method->getApplicationName(); + if ($app !== $last) { + $last = $app; + if ($list) { + $out[] = $list; + } + $list = id(new PHUIObjectItemListView()); + + $app_object = $method->getApplication(); + if ($app_object) { + $app_name = $app_object->getName(); + } else { + $app_name = $app; + } + } + + $method_name = $method->getAPIMethodName(); + + $item = id(new PHUIObjectItemView()) + ->setHeader($method_name) + ->setHref($this->getApplicationURI('method/'.$method_name.'/')) + ->addAttribute($method->getMethodDescription()); + + switch ($method->getMethodStatus()) { + case ConduitAPIMethod::METHOD_STATUS_STABLE: + break; + case ConduitAPIMethod::METHOD_STATUS_UNSTABLE: + $item->addIcon('warning-grey', pht('Unstable')); + $item->setBarColor('yellow'); + break; + case ConduitAPIMethod::METHOD_STATUS_DEPRECATED: + $item->addIcon('warning', pht('Deprecated')); + $item->setBarColor('red'); + break; + } + + $list->addItem($item); + } + + if ($list) { + $out[] = $list; + } + + return $out; + } + }