diff --git a/src/applications/paste/controller/PhabricatorPasteListController.php b/src/applications/paste/controller/PhabricatorPasteListController.php index 34524ed63..7aabed01c 100644 --- a/src/applications/paste/controller/PhabricatorPasteListController.php +++ b/src/applications/paste/controller/PhabricatorPasteListController.php @@ -1,122 +1,113 @@ filter = idx($data, 'filter'); } public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $saved_query = new PhabricatorSavedQuery(); $nav = $this->buildSideNavView($this->filter); $filter = $nav->getSelectedFilter(); - switch ($filter) { - case 'my': - $saved_query->setParameter('authorPHIDs', array($user->getPHID())); - $title = pht('My Pastes'); - $nodata = pht("You haven't created any Pastes yet."); - break; - case 'all': - $title = pht('All Pastes'); - $nodata = pht("There are no Pastes yet."); - break; - } + $engine = id(new PhabricatorPasteSearchEngine()) + ->setPasteSearchFilter($filter); + $saved_query = $engine->buildSavedQueryFromRequest($request); + $query = $engine->buildQueryFromSavedQuery($saved_query); $pager = new AphrontCursorPagerView(); $pager->readFromRequest($request); - $engine = new PhabricatorPasteSearchEngine(); - $query = $engine->buildQueryFromSavedQuery($saved_query); $pastes = $query->setViewer($request->getUser()) ->needContent(true) ->executeWithCursorPager($pager); $list = $this->buildPasteList($pastes); $list->setPager($pager); - $list->setNoDataString($nodata); + $list->setNoDataString(pht("No results found for this query.")); $nav->appendChild( array( $list, )); $crumbs = $this ->buildApplicationCrumbs($nav) ->addCrumb( id(new PhabricatorCrumbView()) - ->setName($title) + ->setName(pht("Pastes")) ->setHref($this->getApplicationURI('filter/'.$filter.'/'))); $nav->setCrumbs($crumbs); return $this->buildApplicationPage( $nav, array( - 'title' => $title, + 'title' => pht("Pastes"), 'device' => true, 'dust' => true, )); } private function buildPasteList(array $pastes) { assert_instances_of($pastes, 'PhabricatorPaste'); $user = $this->getRequest()->getUser(); $this->loadHandles(mpull($pastes, 'getAuthorPHID')); $lang_map = PhabricatorEnv::getEnvConfig('pygments.dropdown-choices'); $list = new PhabricatorObjectItemListView(); $list->setUser($user); foreach ($pastes as $paste) { $created = phabricator_date($paste->getDateCreated(), $user); $author = $this->getHandle($paste->getAuthorPHID())->renderLink(); $source_code = $this->buildSourceCodeView($paste, 5)->render(); $source_code = phutil_tag( 'div', array( 'class' => 'phabricator-source-code-summary', ), $source_code); $line_count = count(explode("\n", $paste->getContent())); $line_count = pht( '%s Line(s)', new PhutilNumber($line_count)); $title = nonempty($paste->getTitle(), pht('(An Untitled Masterwork)')); $item = id(new PhabricatorObjectItemView()) ->setObjectName('P'.$paste->getID()) ->setHeader($title) ->setHref('/P'.$paste->getID()) ->setObject($paste) ->addByline(pht('Author: %s', $author)) ->addIcon('none', $line_count) ->appendChild($source_code); $lang_name = $paste->getLanguage(); if ($lang_name) { $lang_name = idx($lang_map, $lang_name, $lang_name); $item->addIcon('none', $lang_name); } $list->addItem($item); } return $list; } } diff --git a/src/applications/paste/query/PhabricatorPasteSearchEngine.php b/src/applications/paste/query/PhabricatorPasteSearchEngine.php index f7a88d7c3..080ebfd60 100644 --- a/src/applications/paste/query/PhabricatorPasteSearchEngine.php +++ b/src/applications/paste/query/PhabricatorPasteSearchEngine.php @@ -1,48 +1,65 @@ filter == "my") { + $user = $request->getUser(); + $saved->setParameter('authorPHIDs', array($user->getPHID())); + } + + return $saved; } /** * Executes the saved query. * * @param PhabricatorSavedQuery * @return The result of the query. */ public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { $query = id(new PhabricatorPasteQuery()) ->withIDs($saved->getParameter('ids', array())) ->withPHIDs($saved->getParameter('phids', array())) ->withAuthorPHIDs($saved->getParameter('authorPHIDs', array())) ->withParentPHIDs($saved->getParameter('parentPHIDs', array())); return $query; } /** * Builds the search form using the request. * * @param PhabricatorSavedQuery The query to populate the form with. * @return void */ public function buildSearchForm(PhabricatorSavedQuery $saved_query) { } + public function setPasteSearchFilter($filter) { + $this->filter = $filter; + return $this; + } + + public function getPasteSearchFilter() { + return $this->filter; + } + }