public function processRequest() { $drequest = $this->diffusionRequest; $results = $this->getBrowseQueryResults(); $reason = $results->getReasonForEmptyResultSet(); $content = array(); $actions = $this->buildActionView($drequest); $properties = $this->buildPropertyView($drequest, $actions); $object_box = id(new PHUIObjectBoxView())->setHeader($this->buildHeaderView($drequest))->addPropertyList($properties); $content[] = $object_box; $content[] = $this->renderSearchForm($collapsed = true); if (!$results->isValidResults()) { $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setDiffusionBrowseResultSet($results); $empty_result->setView($this->getRequest()->getStr('view')); $content[] = $empty_result; } else { $phids = array(); foreach ($results->getPaths() as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } } $phids = array_keys($phids); $handles = $this->loadViewerHandles($phids); $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($results->getPaths()); $browse_table->setUser($this->getRequest()->getUser()); $browse_panel = new AphrontPanelView(); $browse_panel->appendChild($browse_table); $browse_panel->setNoBackground(); $content[] = $browse_panel; } $content[] = $this->buildOpenRevisions(); $readme = $this->callConduitWithDiffusionRequest('diffusion.readmequery', array('paths' => $results->getPathDicts(), 'commit' => $drequest->getStableCommit())); if ($readme) { $box = new PHUIBoxView(); $box->appendChild($readme); $box->addPadding(PHUI::PADDING_LARGE); $object_box = id(new PHUIObjectBoxView())->setHeaderText(pht('README'))->appendChild($box); $content[] = $object_box; } $crumbs = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'browse')); return $this->buildApplicationPage(array($crumbs, $content), array('title' => array(nonempty(basename($drequest->getPath()), '/'), $drequest->getRepository()->getCallsign() . ' Repository'))); }
protected function processDiffusionRequest(AphrontRequest $request) { $drequest = $this->diffusionRequest; $results = $this->getBrowseQueryResults(); $reason = $results->getReasonForEmptyResultSet(); $content = array(); $actions = $this->buildActionView($drequest); $properties = $this->buildPropertyView($drequest, $actions); $object_box = id(new PHUIObjectBoxView())->setHeader($this->buildHeaderView($drequest))->addPropertyList($properties); $content[] = $object_box; $content[] = $this->renderSearchForm($collapsed = true); if (!$results->isValidResults()) { $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setDiffusionBrowseResultSet($results); $empty_result->setView($request->getStr('view')); $content[] = $empty_result; } else { $phids = array(); foreach ($results->getPaths() as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } } $phids = array_keys($phids); $handles = $this->loadViewerHandles($phids); $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($results->getPaths()); $browse_table->setUser($request->getUser()); $browse_panel = new PHUIObjectBoxView(); $browse_panel->setHeaderText($drequest->getPath(), '/'); $browse_panel->setTable($browse_table); $content[] = $browse_panel; } $content[] = $this->buildOpenRevisions(); $readme_path = $results->getReadmePath(); if ($readme_path) { $readme_content = $this->callConduitWithDiffusionRequest('diffusion.filecontentquery', array('path' => $readme_path, 'commit' => $drequest->getStableCommit())); if ($readme_content) { $content[] = id(new DiffusionReadmeView())->setUser($this->getViewer())->setPath($readme_path)->setContent($readme_content['corpus']); } } $crumbs = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'browse')); return $this->buildApplicationPage(array($crumbs, $content), array('title' => array(nonempty(basename($drequest->getPath()), '/'), $drequest->getRepository()->getDisplayName()))); }
public function browseDirectory(DiffusionBrowseResultSet $results, PHUIPagerView $pager) { $request = $this->getRequest(); $drequest = $this->getDiffusionRequest(); $repository = $drequest->getRepository(); $reason = $results->getReasonForEmptyResultSet(); $content = array(); $actions = $this->buildActionView($drequest); $properties = $this->buildPropertyView($drequest, $actions); $object_box = id(new PHUIObjectBoxView())->setHeader($this->buildHeaderView($drequest))->addPropertyList($properties); $content[] = $object_box; $content[] = $this->renderSearchForm($collapsed = true); if (!$results->isValidResults()) { $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setDiffusionBrowseResultSet($results); $empty_result->setView($request->getStr('view')); $content[] = $empty_result; } else { $phids = array(); foreach ($results->getPaths() as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } } $phids = array_keys($phids); $handles = $this->loadViewerHandles($phids); $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($results->getPaths()); $browse_table->setUser($request->getUser()); $browse_panel = new PHUIObjectBoxView(); $browse_panel->setHeaderText($drequest->getPath(), '/'); $browse_panel->setTable($browse_table); $content[] = $browse_panel; } $content[] = $this->buildOpenRevisions(); $content[] = $this->renderDirectoryReadme($results); $crumbs = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'browse')); $pager_box = $this->renderTablePagerBox($pager); return $this->newPage()->setTitle(array(nonempty(basename($drequest->getPath()), '/'), $repository->getDisplayName()))->setCrumbs($crumbs)->appendChild(array($content, $pager_box)); }
public function processRequest() { $drequest = $this->diffusionRequest; $browse_query = DiffusionBrowseQuery::newFromDiffusionRequest($drequest); $results = $browse_query->loadPaths(); $content = array(); $content[] = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'browse')); if (!$results) { if ($browse_query->getReasonForEmptyResultSet() == DiffusionBrowseQuery::REASON_IS_FILE) { $controller = new DiffusionBrowseFileController($this->getRequest()); $controller->setDiffusionRequest($drequest); return $this->delegateToController($controller); } $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setBrowseQuery($browse_query); $empty_result->setView($this->getRequest()->getStr('view')); $content[] = $empty_result; } else { $readme = null; $phids = array(); foreach ($results as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } $path = $result->getPath(); if (preg_match('/^readme(|\\.txt|\\.remarkup)$/i', $path)) { $readme = $result; } } $phids = array_keys($phids); $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); if ($readme) { $readme_request = DiffusionRequest::newFromDictionary(array('repository' => $drequest->getRepository(), 'commit' => $drequest->getStableCommitName(), 'path' => $readme->getFullPath())); $content_query = DiffusionFileContentQuery::newFromDiffusionRequest($readme_request); $content_query->loadFileContent(); $readme_content = $content_query->getRawData(); if (preg_match('/.txt$/', $readme->getPath())) { $readme_content = phutil_escape_html($readme_content); $readme_content = nl2br($readme_content); } else { // Markup extensionless files as remarkup so we get links and such. $engine = PhabricatorMarkupEngine::newDiffusionMarkupEngine(); $readme_content = $engine->markupText($readme_content); $readme_content = phutil_render_tag('div', array('class' => 'phabricator-remarkup'), $readme_content); } $readme_panel = new AphrontPanelView(); $readme_panel->setHeader('README'); $readme_panel->appendChild($readme_content); $content[] = $readme_panel; } $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($results); $browse_panel = new AphrontPanelView(); $browse_panel->appendChild($browse_table); $content[] = $browse_panel; } $content[] = $this->buildOpenRevisions(); $nav = $this->buildSideNav('browse', false); $nav->appendChild($content); return $this->buildStandardPageResponse($nav, array('title' => basename($drequest->getPath()))); }
public function browseDirectory(DiffusionBrowseResultSet $results, PHUIPagerView $pager) { $request = $this->getRequest(); $drequest = $this->getDiffusionRequest(); $repository = $drequest->getRepository(); $reason = $results->getReasonForEmptyResultSet(); $curtain = $this->buildCurtain($drequest); $details = $this->buildPropertyView($drequest); $header = $this->buildHeaderView($drequest); $header->setHeaderIcon('fa-folder-open'); $search_form = $this->renderSearchForm(); $empty_result = null; $browse_panel = null; if (!$results->isValidResults()) { $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setDiffusionBrowseResultSet($results); $empty_result->setView($request->getStr('view')); } else { $phids = array(); foreach ($results->getPaths() as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } } $phids = array_keys($phids); $handles = $this->loadViewerHandles($phids); $browse_table = id(new DiffusionBrowseTableView())->setDiffusionRequest($drequest)->setHandles($handles)->setPaths($results->getPaths())->setUser($request->getUser()); $browse_header = id(new PHUIHeaderView())->setHeader(nonempty(basename($drequest->getPath()), '/'))->setHeaderIcon('fa-folder-open'); $browse_panel = id(new PHUIObjectBoxView())->setHeader($browse_header)->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)->setTable($browse_table); $browse_panel->setShowHide(array(pht('Show Search')), pht('Hide Search'), $search_form, '#'); } $open_revisions = $this->buildOpenRevisions(); $readme = $this->renderDirectoryReadme($results); $crumbs = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'browse')); $pager_box = $this->renderTablePagerBox($pager); $crumbs->setBorder(true); $view = id(new PHUITwoColumnView())->setHeader($header)->setCurtain($curtain)->setMainColumn(array($empty_result, $browse_panel))->setFooter(array($open_revisions, $readme, $pager_box)); if ($details) { $view->addPropertySection(pht('Details'), $details); } return $this->newPage()->setTitle(array(nonempty(basename($drequest->getPath()), '/'), $repository->getDisplayName()))->setCrumbs($crumbs)->appendChild(array($view)); }
public function processRequest() { $drequest = $this->diffusionRequest; $browse_query = DiffusionBrowseQuery::newFromDiffusionRequest($drequest); $results = $browse_query->loadPaths(); $content = array(); $content[] = $this->buildCrumbs(array('branch' => true, 'path' => true, 'view' => 'browse')); if ($drequest->getTagContent()) { $title = 'Tag: ' . $drequest->getSymbolicCommit(); $tag_view = new AphrontPanelView(); $tag_view->setHeader(phutil_escape_html($title)); $tag_view->appendChild($this->markupText($drequest->getTagContent())); $content[] = $tag_view; } if (!$results) { if ($browse_query->getReasonForEmptyResultSet() == DiffusionBrowseQuery::REASON_IS_FILE) { $controller = new DiffusionBrowseFileController($this->getRequest()); $controller->setDiffusionRequest($drequest); return $this->delegateToController($controller); } $empty_result = new DiffusionEmptyResultView(); $empty_result->setDiffusionRequest($drequest); $empty_result->setBrowseQuery($browse_query); $empty_result->setView($this->getRequest()->getStr('view')); $content[] = $empty_result; } else { $readme = null; $phids = array(); foreach ($results as $result) { $data = $result->getLastCommitData(); if ($data) { if ($data->getCommitDetail('authorPHID')) { $phids[$data->getCommitDetail('authorPHID')] = true; } } $path = $result->getPath(); if (preg_match('/^readme(|\\.txt|\\.remarkup)$/i', $path)) { $readme = $result; } } $phids = array_keys($phids); $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles(); $browse_table = new DiffusionBrowseTableView(); $browse_table->setDiffusionRequest($drequest); $browse_table->setHandles($handles); $browse_table->setPaths($results); $browse_table->setUser($this->getRequest()->getUser()); $browse_panel = new AphrontPanelView(); $browse_panel->appendChild($browse_table); $content[] = $browse_panel; } $content[] = $this->buildOpenRevisions(); $readme_content = $browse_query->renderReadme($results); if ($readme_content) { $readme_panel = new AphrontPanelView(); $readme_panel->setHeader('README'); $readme_panel->appendChild($readme_content); $content[] = $readme_panel; } $nav = $this->buildSideNav('browse', false); $nav->appendChild($content); return $this->buildStandardPageResponse($nav, array('title' => array(nonempty(basename($drequest->getPath()), '/'), $drequest->getRepository()->getCallsign() . ' Repository'))); }