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));
 }
예제 #2
0
 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;
 }