Page MenuHomePhorge

No OneTemporary

diff --git a/src/applications/ponder/controller/PonderController.php b/src/applications/ponder/controller/PonderController.php
index 037cf0bcbd..1122d56c2a 100644
--- a/src/applications/ponder/controller/PonderController.php
+++ b/src/applications/ponder/controller/PonderController.php
@@ -1,43 +1,43 @@
<?php
abstract class PonderController extends PhabricatorController {
public function buildStandardPageResponse($view, array $data) {
$page = $this->buildStandardPageView();
$page->setApplicationName(pht('Ponder!'));
$page->setBaseURI('/ponder/');
$page->setTitle(idx($data, 'title'));
$page->setGlyph("\xE2\x97\xB3");
$page->appendChild($view);
$page->setSearchDefaultScope(PhabricatorSearchScope::SCOPE_QUESTIONS);
$response = new AphrontWebpageResponse();
return $response->setContent($page->render());
}
protected function buildSideNavView(PonderQuestion $question = null) {
$side_nav = new AphrontSideNavFilterView();
$side_nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
$side_nav->addLabel(pht('Questions'));
$side_nav->addFilter('feed', pht('All Questions'));
$side_nav->addFilter('questions', pht('Your Questions'));
$side_nav->addFilter('answers', pht('Your Answers'));
return $side_nav;
}
public function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
$crumbs
->addAction(
id(new PhabricatorMenuItemView())
->setName(pht('New Question'))
- ->setHref('question/ask')
+ ->setHref('/ponder/question/ask')
->setIcon('create'));
return $crumbs;
}
}
diff --git a/src/applications/ponder/controller/PonderFeedController.php b/src/applications/ponder/controller/PonderFeedController.php
index e669e05a54..5553fb872c 100644
--- a/src/applications/ponder/controller/PonderFeedController.php
+++ b/src/applications/ponder/controller/PonderFeedController.php
@@ -1,116 +1,119 @@
<?php
final class PonderFeedController extends PonderController {
private $page;
private $answerOffset;
const PROFILE_ANSWER_PAGE_SIZE = 10;
public function willProcessRequest(array $data) {
$this->page = idx($data, 'page');
}
public function processRequest() {
$request = $this->getRequest();
$user = $request->getUser();
$this->answerOffset = $request->getInt('aoff');
$pages = array(
- 'feed' => 'All Questions',
- 'questions' => 'Your Questions',
- 'answers' => 'Your Answers',
+ 'feed' => pht('All Questions'),
+ 'questions' => pht('Your Questions'),
+ 'answers' => pht('Your Answers'),
);
$side_nav = $this->buildSideNavView();
-
$this->page = $side_nav->selectFilter($this->page, 'feed');
-
$title = $pages[$this->page];
+ $crumbs = $this->buildApplicationCrumbs($this->buildSideNavView());
+ $crumbs->addCrumb(
+ id(new PhabricatorCrumbView())
+ ->setName($title)
+ ->setHref($this->getApplicationURI()));
+ $side_nav->setCrumbs($crumbs);
+
switch ($this->page) {
case 'feed':
case 'questions':
$pager = new AphrontPagerView();
$pager->setOffset($request->getStr('offset'));
$pager->setURI($request->getRequestURI(), 'offset');
$query = id(new PonderQuestionQuery())
->setViewer($user);
if ($this->page == 'feed') {
$query
->setOrder(PonderQuestionQuery::ORDER_HOTTEST);
} else {
$query
->setOrder(PonderQuestionQuery::ORDER_CREATED)
->withAuthorPHIDs(array($user->getPHID()));
}
$questions = $query->executeWithOffsetPager($pager);
$this->loadHandles(mpull($questions, 'getAuthorPHID'));
$view = $this->buildQuestionListView($questions);
$view->setPager($pager);
- $side_nav->appendChild(
- id(new PhabricatorHeaderView())->setHeader($title));
$side_nav->appendChild($view);
break;
case 'answers':
$answers = PonderAnswerQuery::loadByAuthorWithQuestions(
$user,
$user->getPHID(),
$this->answerOffset,
self::PROFILE_ANSWER_PAGE_SIZE + 1);
$side_nav->appendChild(
id(new PonderUserProfileView())
->setUser($user)
->setAnswers($answers)
->setAnswerOffset($this->answerOffset)
->setPageSize(self::PROFILE_ANSWER_PAGE_SIZE)
->setURI(new PhutilURI("/ponder/profile/"), "aoff"));
break;
}
return $this->buildApplicationPage(
$side_nav,
array(
'device' => true,
'title' => $title,
'dust' => true,
));
}
private function buildQuestionListView(array $questions) {
assert_instances_of($questions, 'PonderQuestion');
$user = $this->getRequest()->getUser();
$view = new PhabricatorObjectItemListView();
$view->setUser($user);
$view->setNoDataString(pht('No matching questions.'));
foreach ($questions as $question) {
$item = new PhabricatorObjectItemView();
$item->setObjectName('Q'.$question->getID());
$item->setHeader($question->getTitle());
$item->setHref('/Q'.$question->getID());
$item->setObject($question);
$item->addAttribute(
pht(
'Asked by %s on %s',
$this->getHandle($question->getAuthorPHID())->renderLink(),
phabricator_date($question->getDateCreated(), $user)));
$item->addAttribute(
pht('%d Answer(s)', $question->getAnswerCount()));
$view->addItem($item);
}
return $view;
}
}

File Metadata

Mime Type
text/x-diff
Expires
Jan 19 2025, 21:13 (6 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1128825
Default Alt Text
(5 KB)

Event Timeline