private function buildQuestionTransactions(PonderQuestion $question) { $viewer = $this->getViewer(); $id = $question->getID(); $timeline = $this->buildTransactionTimeline($question, id(new PonderQuestionTransactionQuery())->withTransactionTypes(array(PhabricatorTransactions::TYPE_COMMENT))); $xactions = $timeline->getTransactions(); $add_comment = id(new PhabricatorApplicationTransactionCommentView())->setUser($viewer)->setObjectPHID($question->getPHID())->setShowPreview(false)->setHeaderText(pht('Question Comment'))->setAction($this->getApplicationURI("/question/comment/{$id}/"))->setSubmitButtonName(pht('Comment')); return $this->wrapComments(count($xactions), array($timeline, $add_comment)); }
protected function buildSideNavView(PonderQuestion $question = null) { $side_nav = new AphrontSideNavFilterView(); $side_nav->setBaseURI(new PhutilURI($this->getApplicationURI())); if ($question && $question->getID()) { $side_nav->addFilter(null, 'Q' . $question->getID(), 'Q' . $question->getID()); $side_nav->addSpacer(); } $side_nav->addLabel('Create'); $side_nav->addFilter('question/ask', 'Ask a Question'); $side_nav->addSpacer(); $side_nav->addLabel('Questions'); $side_nav->addFilter('feed', 'All Questions'); $side_nav->addSpacer(); $side_nav->addLabel('User'); $side_nav->addFilter('questions', 'Your Questions'); $side_nav->addFilter('answers', 'Your Answers'); return $side_nav; }
private function buildQuestionTransactions(PonderQuestion $question) { $viewer = $this->getRequest()->getUser(); $id = $question->getID(); $xactions = id(new PonderQuestionTransactionQuery())->setViewer($viewer)->withTransactionTypes(array(PhabricatorTransactions::TYPE_COMMENT))->withObjectPHIDs(array($question->getPHID()))->execute(); $engine = id(new PhabricatorMarkupEngine())->setViewer($viewer); foreach ($xactions as $xaction) { if ($xaction->getComment()) { $engine->addObject($xaction->getComment(), PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT); } } $engine->process(); $timeline = id(new PhabricatorApplicationTransactionView())->setUser($viewer)->setObjectPHID($question->getPHID())->setTransactions($xactions)->setMarkupEngine($engine); $add_comment = id(new PhabricatorApplicationTransactionCommentView())->setUser($viewer)->setObjectPHID($question->getPHID())->setShowPreview(false)->setHeaderText(pht('Question Comment'))->setAction($this->getApplicationURI("/question/comment/{$id}/"))->setSubmitButtonName(pht('Comment')); return $this->wrapComments(count($xactions), array($timeline, $add_comment)); }
private function buildCurtain(PonderQuestion $question) { $viewer = $this->getViewer(); $id = $question->getID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $question, PhabricatorPolicyCapability::CAN_EDIT); $curtain = $this->newCurtainView($question); if ($question->getStatus() == PonderQuestionStatus::STATUS_OPEN) { $name = pht('Close Question'); $icon = 'fa-check-square-o'; } else { $name = pht('Reopen Question'); $icon = 'fa-square-o'; } $curtain->addAction(id(new PhabricatorActionView())->setIcon('fa-pencil')->setName(pht('Edit Question'))->setHref($this->getApplicationURI("/question/edit/{$id}/"))->setDisabled(!$can_edit)->setWorkflow(!$can_edit)); $curtain->addAction(id(new PhabricatorActionView())->setName($name)->setIcon($icon)->setWorkflow(true)->setDisabled(!$can_edit)->setHref($this->getApplicationURI("/question/status/{$id}/"))); $curtain->addAction(id(new PhabricatorActionView())->setIcon('fa-list')->setName(pht('View History'))->setHref($this->getApplicationURI("/question/history/{$id}/"))); return $curtain; }
private function buildSidebar(PonderQuestion $question) { $viewer = $this->getViewer(); $status = $question->getStatus(); $id = $question->getID(); $questions = id(new PonderQuestionQuery())->setViewer($viewer)->withStatuses(array($status))->withEdgeLogicPHIDs(PhabricatorProjectObjectHasProjectEdgeType::EDGECONST, PhabricatorQueryConstraint::OPERATOR_OR, $question->getProjectPHIDs())->setLimit(10)->execute(); $list = id(new PHUIObjectItemListView())->setUser($viewer)->setNoDataString(pht('No similar questions found.')); foreach ($questions as $question) { if ($id == $question->getID()) { continue; } $item = new PHUIObjectItemView(); $item->setObjectName('Q' . $question->getID()); $item->setHeader($question->getTitle()); $item->setHref('/Q' . $question->getID()); $item->setObject($question); $item->addAttribute(pht('%d Answer(s)', $question->getAnswerCount())); $list->addItem($item); } $box = id(new PHUIObjectBoxView())->setHeaderText(pht('Similar Questions'))->setObjectList($list); return $box; }