1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-03-29 04:28:12 +01:00

Separate "your questions" from "your answers"

Summary: The aoff/qoff thing is pretty awkward and putting these both on the same page is probably only at all useful when looking at someone else's questions/answers -- we should just pursue main profile integration for that.

Test Plan: {F19529}

Reviewers: pieter, starruler

Reviewed By: pieter

CC: aran

Maniphest Tasks: T1644

Differential Revision: https://secure.phabricator.com/D3512
This commit is contained in:
epriestley 2012-09-30 20:09:39 -07:00
parent 9d87510ff3
commit da627522ca
4 changed files with 27 additions and 72 deletions

View file

@ -48,7 +48,8 @@ final class PhabricatorApplicationPonder extends PhabricatorApplication {
'/Q(?P<id>\d+)' => 'PonderQuestionViewController', '/Q(?P<id>\d+)' => 'PonderQuestionViewController',
'/ponder/' => array( '/ponder/' => array(
'(?P<page>feed/)?' => 'PonderFeedController', '(?P<page>feed/)?' => 'PonderFeedController',
'(?P<page>profile)/' => 'PonderFeedController', '(?P<page>questions)/' => 'PonderFeedController',
'(?P<page>answers)/' => 'PonderFeedController',
'answer/add/' => 'PonderAnswerSaveController', 'answer/add/' => 'PonderAnswerSaveController',
'answer/preview/' => 'PonderAnswerPreviewController', 'answer/preview/' => 'PonderAnswerPreviewController',
'question/ask/' => 'PonderQuestionAskController', 'question/ask/' => 'PonderQuestionAskController',

View file

@ -46,8 +46,9 @@ abstract class PonderController extends PhabricatorController {
$side_nav->addSpacer(); $side_nav->addSpacer();
$side_nav->addLabel('Profile'); $side_nav->addLabel('User');
$side_nav->addFilter('profile', 'User Profile'); $side_nav->addFilter('questions', 'Your Questions');
$side_nav->addFilter('answers', 'Your Answers');
return $side_nav; return $side_nav;
} }

View file

@ -39,8 +39,9 @@ final class PonderFeedController extends PonderController {
$this->answerOffset = $request->getInt('aoff'); $this->answerOffset = $request->getInt('aoff');
$pages = array( $pages = array(
'feed' => 'All Questions', 'feed' => 'All Questions',
'profile' => 'User Profile', 'questions' => 'Your Questions',
'answers' => 'Your Answers',
); );
$side_nav = $this->buildSideNavView(); $side_nav = $this->buildSideNavView();
@ -51,10 +52,21 @@ final class PonderFeedController extends PonderController {
switch ($this->page) { switch ($this->page) {
case 'feed': case 'feed':
$questions = PonderQuestionQuery::loadHottest( case 'questions':
$user,
$this->feedOffset, if ($this->page == 'feed') {
self::FEED_PAGE_SIZE + 1); $questions = PonderQuestionQuery::loadHottest(
$user,
$this->feedOffset,
self::FEED_PAGE_SIZE + 1);
} else {
$questions = PonderQuestionQuery::loadByAuthor(
$user,
$user->getPHID(),
$this->questionOffset,
self::PROFILE_QUESTION_PAGE_SIZE + 1
);
}
$this->loadHandles(mpull($questions, 'getAuthorPHID')); $this->loadHandles(mpull($questions, 'getAuthorPHID'));
@ -63,14 +75,7 @@ final class PonderFeedController extends PonderController {
id(new PhabricatorHeaderView())->setHeader($title)); id(new PhabricatorHeaderView())->setHeader($title));
$side_nav->appendChild($view); $side_nav->appendChild($view);
break; break;
case 'profile': case 'answers':
$questions = PonderQuestionQuery::loadByAuthor(
$user,
$user->getPHID(),
$this->questionOffset,
self::PROFILE_QUESTION_PAGE_SIZE + 1
);
$answers = PonderAnswerQuery::loadByAuthorWithQuestions( $answers = PonderAnswerQuery::loadByAuthorWithQuestions(
$user, $user,
$user->getPHID(), $user->getPHID(),
@ -84,13 +89,11 @@ final class PonderFeedController extends PonderController {
$side_nav->appendChild( $side_nav->appendChild(
id(new PonderUserProfileView()) id(new PonderUserProfileView())
->setUser($user) ->setUser($user)
->setQuestions($questions)
->setAnswers($answers) ->setAnswers($answers)
->setHandles($handles) ->setHandles($handles)
->setQuestionOffset($this->questionOffset)
->setAnswerOffset($this->answerOffset) ->setAnswerOffset($this->answerOffset)
->setPageSize(self::PROFILE_QUESTION_PAGE_SIZE) ->setPageSize(self::PROFILE_QUESTION_PAGE_SIZE)
->setURI(new PhutilURI("/ponder/profile/"), "qoff", "aoff") ->setURI(new PhutilURI("/ponder/profile/"), "aoff")
); );
break; break;
} }

View file

@ -20,11 +20,9 @@ final class PonderUserProfileView extends AphrontView {
private $user; private $user;
private $questionoffset; private $questionoffset;
private $answeroffset; private $answeroffset;
private $questions;
private $answers; private $answers;
private $pagesize; private $pagesize;
private $uri; private $uri;
private $qparam;
private $aparam; private $aparam;
public function setUser(PhabricatorUser $user) { public function setUser(PhabricatorUser $user) {
@ -42,11 +40,6 @@ final class PonderUserProfileView extends AphrontView {
return $this; return $this;
} }
public function setQuestions($data) {
$this->questions = $data;
return $this;
}
public function setAnswers($data) { public function setAnswers($data) {
$this->answers = $data; $this->answers = $data;
return $this; return $this;
@ -62,9 +55,8 @@ final class PonderUserProfileView extends AphrontView {
return $this; return $this;
} }
public function setURI($uri, $qparam, $aparam) { public function setURI($uri, $aparam) {
$this->uri = $uri; $this->uri = $uri;
$this->qparam = $qparam;
$this->aparam = $aparam; $this->aparam = $aparam;
return $this; return $this;
} }
@ -74,52 +66,13 @@ final class PonderUserProfileView extends AphrontView {
require_celerity_resource('ponder-feed-view-css'); require_celerity_resource('ponder-feed-view-css');
$user = $this->user; $user = $this->user;
$qoffset = $this->questionoffset;
$aoffset = $this->answeroffset; $aoffset = $this->answeroffset;
$questions = $this->questions;
$answers = $this->answers; $answers = $this->answers;
$handles = $this->handles; $handles = $this->handles;
$uri = $this->uri; $uri = $this->uri;
$qparam = $this->qparam;
$aparam = $this->aparam; $aparam = $this->aparam;
$pagesize = $this->pagesize; $pagesize = $this->pagesize;
// display questions
$question_panel = id(new AphrontPanelView())
->setHeader("Your Questions")
->addClass("ponder-panel");
$question_panel->addButton(
phutil_render_tag(
'a',
array(
'href' => "/ponder/question/ask/",
'class' => 'green button',
),
"Ask a question"));
$qpagebuttons = id(new AphrontPagerView())
->setPageSize($pagesize)
->setOffset($qoffset)
->setURI(
$uri->alter(
$aparam,
$aoffset),
$qparam);
$questions = $qpagebuttons->sliceResults($questions);
foreach ($questions as $question) {
$cur = id(new PonderQuestionSummaryView())
->setUser($user)
->setQuestion($question)
->setHandles($handles);
$question_panel->appendChild($cur);
}
$question_panel->appendChild($qpagebuttons);
// display answers // display answers
$answer_panel = id(new AphrontPanelView()) $answer_panel = id(new AphrontPanelView())
->setHeader("Your Answers") ->setHeader("Your Answers")
@ -136,9 +89,6 @@ final class PonderUserProfileView extends AphrontView {
->setOffset($aoffset) ->setOffset($aoffset)
->setURI( ->setURI(
$uri $uri
->alter(
$qparam,
$qoffset)
->setFragment("answers"), ->setFragment("answers"),
$aparam); $aparam);
@ -154,6 +104,6 @@ final class PonderUserProfileView extends AphrontView {
$answer_panel->appendChild($apagebuttons); $answer_panel->appendChild($apagebuttons);
return $question_panel->render() . $answer_panel->render(); return $answer_panel->render();
} }
} }