loadDiffusionContext(); if ($response) { return $response; } require_celerity_resource('diffusion-css'); $viewer = $this->getViewer(); $drequest = $this->getDiffusionRequest(); $repository = $drequest->getRepository(); $pager = id(new PHUIPagerView()) ->readFromRequest($request); $params = array( 'commit' => $drequest->getCommit(), 'path' => $drequest->getPath(), 'offset' => $pager->getOffset(), 'limit' => $pager->getPageSize() + 1, ); $history_results = $this->callConduitWithDiffusionRequest( 'diffusion.historyquery', $params); $history = DiffusionPathChange::newFromConduit( $history_results['pathChanges']); $history = $pager->sliceResults($history); $identifiers = array(); foreach ($history as $item) { $identifiers[] = $item->getCommitIdentifier(); } if ($identifiers) { $commits = id(new DiffusionCommitQuery()) ->setViewer($viewer) ->withRepositoryPHIDs(array($repository->getPHID())) ->withIdentifiers($identifiers) ->needCommitData(true) ->needIdentities(true) ->execute(); } else { $commits = array(); } $history_list = id(new DiffusionCommitGraphView()) ->setViewer($viewer) ->setParents($history_results['parents']) ->setIsHead(!$pager->getOffset()) ->setIsTail(!$pager->getHasMorePages()) ->setDiffusionRequest($drequest) ->setHistory($history) ->setCommits($commits); $header = $this->buildHeader($drequest); $crumbs = $this->buildCrumbs( array( 'branch' => true, 'path' => true, 'view' => 'history', )); $crumbs->setBorder(true); $title = array( pht('History'), $repository->getDisplayName(), ); $pager = id(new PHUIBoxView()) ->addClass('mlb') ->appendChild($pager); $tabs = $this->buildTabsView('history'); $view = id(new PHUITwoColumnView()) ->setHeader($header) ->setTabs($tabs) ->setFooter(array( $history_list, $pager, )); return $this->newPage() ->setTitle($title) ->setCrumbs($crumbs) ->appendChild($view) ->addClass('diffusion-history-view'); } private function buildHeader(DiffusionRequest $drequest) { $viewer = $this->getViewer(); $repository = $drequest->getRepository(); $no_path = !strlen($drequest->getPath()); if ($no_path) { $header_text = pht('History'); } else { $header_text = $this->renderPathLinks($drequest, $mode = 'history'); } $header = id(new PHUIHeaderView()) ->setUser($viewer) ->setHeader($header_text) ->setHeaderIcon('fa-clock-o'); if (!$repository->isSVN()) { $branch_tag = $this->renderBranchTag($drequest); $header->addTag($branch_tag); } if ($drequest->getSymbolicCommit()) { $symbolic_tag = $this->renderSymbolicCommit($drequest); $header->addTag($symbolic_tag); } return $header; } }