Page MenuHomePhorge

No OneTemporary

diff --git a/src/applications/paste/controller/PhabricatorPasteListController.php b/src/applications/paste/controller/PhabricatorPasteListController.php
index 34524ed636..7aabed01c3 100644
--- a/src/applications/paste/controller/PhabricatorPasteListController.php
+++ b/src/applications/paste/controller/PhabricatorPasteListController.php
@@ -1,122 +1,113 @@
<?php
final class PhabricatorPasteListController extends PhabricatorPasteController {
public function shouldRequireLogin() {
return false;
}
private $filter;
public function willProcessRequest(array $data) {
$this->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 f7a88d7c38..080ebfd608 100644
--- a/src/applications/paste/query/PhabricatorPasteSearchEngine.php
+++ b/src/applications/paste/query/PhabricatorPasteSearchEngine.php
@@ -1,48 +1,65 @@
<?php
/**
* Provides search functionality for the paste application.
*
* @group search
*/
final class PhabricatorPasteSearchEngine
extends PhabricatorApplicationSearchEngine {
+ protected $filter;
+
/**
* Create a saved query object from the request.
*
* @param AphrontRequest The search request.
* @return The saved query that is built.
*/
public function buildSavedQueryFromRequest(AphrontRequest $request) {
- $query = new PhabricatorSavedQuery();
- return $query;
+ $saved = new PhabricatorSavedQuery();
+
+ if ($this->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;
+ }
+
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Jan 19, 12:34 (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1124620
Default Alt Text
(6 KB)

Event Timeline