1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-03-26 03:00:45 +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',
'/ponder/' => array(
'(?P<page>feed/)?' => 'PonderFeedController',
'(?P<page>profile)/' => 'PonderFeedController',
'(?P<page>questions)/' => 'PonderFeedController',
'(?P<page>answers)/' => 'PonderFeedController',
'answer/add/' => 'PonderAnswerSaveController',
'answer/preview/' => 'PonderAnswerPreviewController',
'question/ask/' => 'PonderQuestionAskController',

View file

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

View file

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

View file

@ -20,11 +20,9 @@ final class PonderUserProfileView extends AphrontView {
private $user;
private $questionoffset;
private $answeroffset;
private $questions;
private $answers;
private $pagesize;
private $uri;
private $qparam;
private $aparam;
public function setUser(PhabricatorUser $user) {
@ -42,11 +40,6 @@ final class PonderUserProfileView extends AphrontView {
return $this;
}
public function setQuestions($data) {
$this->questions = $data;
return $this;
}
public function setAnswers($data) {
$this->answers = $data;
return $this;
@ -62,9 +55,8 @@ final class PonderUserProfileView extends AphrontView {
return $this;
}
public function setURI($uri, $qparam, $aparam) {
public function setURI($uri, $aparam) {
$this->uri = $uri;
$this->qparam = $qparam;
$this->aparam = $aparam;
return $this;
}
@ -74,52 +66,13 @@ final class PonderUserProfileView extends AphrontView {
require_celerity_resource('ponder-feed-view-css');
$user = $this->user;
$qoffset = $this->questionoffset;
$aoffset = $this->answeroffset;
$questions = $this->questions;
$answers = $this->answers;
$handles = $this->handles;
$uri = $this->uri;
$qparam = $this->qparam;
$aparam = $this->aparam;
$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
$answer_panel = id(new AphrontPanelView())
->setHeader("Your Answers")
@ -136,9 +89,6 @@ final class PonderUserProfileView extends AphrontView {
->setOffset($aoffset)
->setURI(
$uri
->alter(
$qparam,
$qoffset)
->setFragment("answers"),
$aparam);
@ -154,6 +104,6 @@ final class PonderUserProfileView extends AphrontView {
$answer_panel->appendChild($apagebuttons);
return $question_panel->render() . $answer_panel->render();
return $answer_panel->render();
}
}