Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/controller/DiffusionBrowseController.php
| Show First 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | if ($is_file) { | ||||
| $paths = $pager->sliceResults($paths); | $paths = $pager->sliceResults($paths); | ||||
| $results->setPaths($paths); | $results->setPaths($paths); | ||||
| return $this->browseDirectory($results, $pager); | return $this->browseDirectory($results, $pager); | ||||
| } | } | ||||
| } | } | ||||
| private function browseSearch() { | private function browseSearch() { | ||||
| $drequest = $this->getDiffusionRequest(); | |||||
| $actions = $this->buildActionView($drequest); | |||||
| $properties = $this->buildPropertyView($drequest, $actions); | |||||
| $object_box = id(new PHUIObjectBoxView()) | $drequest = $this->getDiffusionRequest(); | ||||
| ->setHeader($this->buildHeaderView($drequest)) | $header = $this->buildHeaderView($drequest); | ||||
| ->addPropertyList($properties); | |||||
| $content = array(); | $search_form = $this->renderSearchForm(); | ||||
| $search_results = $this->renderSearchResults(); | |||||
| $content[] = $object_box; | $search_form = id(new PHUIObjectBoxView()) | ||||
| $content[] = $this->renderSearchForm($collapsed = false); | ->setHeaderText(pht('Search')) | ||||
| $content[] = $this->renderSearchResults(); | ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) | ||||
| ->appendChild($search_form); | |||||
| $crumbs = $this->buildCrumbs( | $crumbs = $this->buildCrumbs( | ||||
| array( | array( | ||||
| 'branch' => true, | 'branch' => true, | ||||
| 'path' => true, | 'path' => true, | ||||
| 'view' => 'browse', | 'view' => 'browse', | ||||
| )); | )); | ||||
| $crumbs->setBorder(true); | |||||
| $view = id(new PHUITwoColumnView()) | |||||
| ->setHeader($header) | |||||
| ->setFooter(array( | |||||
| $search_form, | |||||
| $search_results, | |||||
| )); | |||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setTitle( | ->setTitle( | ||||
| array( | array( | ||||
| nonempty(basename($drequest->getPath()), '/'), | nonempty(basename($drequest->getPath()), '/'), | ||||
| $drequest->getRepository()->getDisplayName(), | $drequest->getRepository()->getDisplayName(), | ||||
| )) | )) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild($content); | ->appendChild($view); | ||||
| } | } | ||||
| private function browseFile() { | private function browseFile() { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $request = $this->getRequest(); | $request = $this->getRequest(); | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| $repository = $drequest->getRepository(); | $repository = $drequest->getRepository(); | ||||
| ▲ Show 20 Lines • Show All 117 Lines • ▼ Show 20 Lines | private function browseFile() { | ||||
| if ($request->isAjax()) { | if ($request->isAjax()) { | ||||
| return id(new AphrontAjaxResponse())->setContent($corpus); | return id(new AphrontAjaxResponse())->setContent($corpus); | ||||
| } | } | ||||
| require_celerity_resource('diffusion-source-css'); | require_celerity_resource('diffusion-source-css'); | ||||
| // Render the page. | // Render the page. | ||||
| $view = $this->buildActionView($drequest); | $view = $this->buildCurtain($drequest); | ||||
| $action_list = $this->enrichActionView( | $curtain = $this->enrichCurtain( | ||||
| $view, | $view, | ||||
| $drequest, | $drequest, | ||||
| $show_blame, | $show_blame, | ||||
| $show_color); | $show_color); | ||||
| $properties = $this->buildPropertyView($drequest, $action_list); | $properties = $this->buildPropertyView($drequest); | ||||
| $object_box = id(new PHUIObjectBoxView()) | $header = $this->buildHeaderView($drequest); | ||||
| ->setHeader($this->buildHeaderView($drequest)) | $header->setHeaderIcon('fa-file-code-o'); | ||||
| ->addPropertyList($properties); | |||||
| $content = array(); | $content = array(); | ||||
| $content[] = $object_box; | |||||
| $follow = $request->getStr('follow'); | $follow = $request->getStr('follow'); | ||||
| if ($follow) { | if ($follow) { | ||||
| $notice = new PHUIInfoView(); | $notice = new PHUIInfoView(); | ||||
| $notice->setSeverity(PHUIInfoView::SEVERITY_WARNING); | $notice->setSeverity(PHUIInfoView::SEVERITY_WARNING); | ||||
| $notice->setTitle(pht('Unable to Continue')); | $notice->setTitle(pht('Unable to Continue')); | ||||
| switch ($follow) { | switch ($follow) { | ||||
| case 'first': | case 'first': | ||||
| Show All 29 Lines | private function browseFile() { | ||||
| $content[] = $this->buildOpenRevisions(); | $content[] = $this->buildOpenRevisions(); | ||||
| $crumbs = $this->buildCrumbs( | $crumbs = $this->buildCrumbs( | ||||
| array( | array( | ||||
| 'branch' => true, | 'branch' => true, | ||||
| 'path' => true, | 'path' => true, | ||||
| 'view' => 'browse', | 'view' => 'browse', | ||||
| )); | )); | ||||
| $crumbs->setBorder(true); | |||||
| $basename = basename($this->getDiffusionRequest()->getPath()); | $basename = basename($this->getDiffusionRequest()->getPath()); | ||||
| $view = id(new PHUITwoColumnView()) | |||||
| ->setHeader($header) | |||||
| ->setCurtain($curtain) | |||||
| ->setMainColumn(array( | |||||
| $content, | |||||
| )); | |||||
| if ($properties) { | |||||
| $view->addPropertySection(pht('DETAILS'), $properties); | |||||
| } | |||||
| $title = array($basename, $repository->getDisplayName()); | |||||
| return $this->newPage() | return $this->newPage() | ||||
| ->setTitle( | ->setTitle($title) | ||||
| array( | |||||
| $basename, | |||||
| $repository->getDisplayName(), | |||||
| )) | |||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild($content); | ->appendChild( | ||||
| array( | |||||
| $view, | |||||
| )); | |||||
| } | } | ||||
| public function browseDirectory( | public function browseDirectory( | ||||
| DiffusionBrowseResultSet $results, | DiffusionBrowseResultSet $results, | ||||
| PHUIPagerView $pager) { | PHUIPagerView $pager) { | ||||
| $request = $this->getRequest(); | $request = $this->getRequest(); | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| $repository = $drequest->getRepository(); | $repository = $drequest->getRepository(); | ||||
| $reason = $results->getReasonForEmptyResultSet(); | $reason = $results->getReasonForEmptyResultSet(); | ||||
| $content = array(); | $curtain = $this->buildCurtain($drequest); | ||||
| $actions = $this->buildActionView($drequest); | $details = $this->buildPropertyView($drequest); | ||||
| $properties = $this->buildPropertyView($drequest, $actions); | |||||
| $object_box = id(new PHUIObjectBoxView()) | $header = $this->buildHeaderView($drequest); | ||||
| ->setHeader($this->buildHeaderView($drequest)) | $header->setHeaderIcon('fa-folder-open'); | ||||
| ->addPropertyList($properties); | |||||
| $content[] = $object_box; | $search_form = $this->renderSearchForm(); | ||||
| $content[] = $this->renderSearchForm($collapsed = true); | |||||
| $empty_result = null; | |||||
| $browse_panel = null; | |||||
| if (!$results->isValidResults()) { | if (!$results->isValidResults()) { | ||||
| $empty_result = new DiffusionEmptyResultView(); | $empty_result = new DiffusionEmptyResultView(); | ||||
| $empty_result->setDiffusionRequest($drequest); | $empty_result->setDiffusionRequest($drequest); | ||||
| $empty_result->setDiffusionBrowseResultSet($results); | $empty_result->setDiffusionBrowseResultSet($results); | ||||
| $empty_result->setView($request->getStr('view')); | $empty_result->setView($request->getStr('view')); | ||||
| $content[] = $empty_result; | |||||
| } else { | } else { | ||||
| $phids = array(); | $phids = array(); | ||||
| foreach ($results->getPaths() as $result) { | foreach ($results->getPaths() as $result) { | ||||
| $data = $result->getLastCommitData(); | $data = $result->getLastCommitData(); | ||||
| if ($data) { | if ($data) { | ||||
| if ($data->getCommitDetail('authorPHID')) { | if ($data->getCommitDetail('authorPHID')) { | ||||
| $phids[$data->getCommitDetail('authorPHID')] = true; | $phids[$data->getCommitDetail('authorPHID')] = true; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| $phids = array_keys($phids); | $phids = array_keys($phids); | ||||
| $handles = $this->loadViewerHandles($phids); | $handles = $this->loadViewerHandles($phids); | ||||
| $browse_table = new DiffusionBrowseTableView(); | $browse_table = id(new DiffusionBrowseTableView()) | ||||
| $browse_table->setDiffusionRequest($drequest); | ->setDiffusionRequest($drequest) | ||||
| $browse_table->setHandles($handles); | ->setHandles($handles) | ||||
| $browse_table->setPaths($results->getPaths()); | ->setPaths($results->getPaths()) | ||||
| $browse_table->setUser($request->getUser()); | ->setUser($request->getUser()); | ||||
| $browse_panel = new PHUIObjectBoxView(); | $browse_header = id(new PHUIHeaderView()) | ||||
| $browse_panel->setHeaderText($drequest->getPath(), '/'); | ->setHeader(nonempty(basename($drequest->getPath()), '/')) | ||||
| $browse_panel->setTable($browse_table); | ->setHeaderIcon('fa-folder-open'); | ||||
| $browse_panel = id(new PHUIObjectBoxView()) | |||||
| ->setHeader($browse_header) | |||||
| ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) | |||||
| ->setTable($browse_table); | |||||
| $content[] = $browse_panel; | $browse_panel->setShowHide( | ||||
| array(pht('Show Search')), | |||||
| pht('Hide Search'), | |||||
| $search_form, | |||||
| '#'); | |||||
| } | } | ||||
| $content[] = $this->buildOpenRevisions(); | $open_revisions = $this->buildOpenRevisions(); | ||||
| $content[] = $this->renderDirectoryReadme($results); | $readme = $this->renderDirectoryReadme($results); | ||||
| $crumbs = $this->buildCrumbs( | $crumbs = $this->buildCrumbs( | ||||
| array( | array( | ||||
| 'branch' => true, | 'branch' => true, | ||||
| 'path' => true, | 'path' => true, | ||||
| 'view' => 'browse', | 'view' => 'browse', | ||||
| )); | )); | ||||
| $pager_box = $this->renderTablePagerBox($pager); | $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() | return $this->newPage() | ||||
| ->setTitle( | ->setTitle(array( | ||||
| array( | |||||
| nonempty(basename($drequest->getPath()), '/'), | nonempty(basename($drequest->getPath()), '/'), | ||||
| $repository->getDisplayName(), | $repository->getDisplayName(), | ||||
| )) | )) | ||||
| ->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
| ->appendChild( | ->appendChild( | ||||
| array( | array( | ||||
| $content, | $view, | ||||
| $pager_box, | |||||
| )); | )); | ||||
| } | } | ||||
| private function renderSearchResults() { | private function renderSearchResults() { | ||||
| $request = $this->getRequest(); | $request = $this->getRequest(); | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| $repository = $drequest->getRepository(); | $repository = $drequest->getRepository(); | ||||
| ▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | if ($search_mode == 'grep') { | ||||
| $header = pht( | $header = pht( | ||||
| 'Paths matching "%s" under "%s"', | 'Paths matching "%s" under "%s"', | ||||
| $query_string, | $query_string, | ||||
| nonempty($drequest->getPath(), '/')); | nonempty($drequest->getPath(), '/')); | ||||
| } | } | ||||
| $box = id(new PHUIObjectBoxView()) | $box = id(new PHUIObjectBoxView()) | ||||
| ->setHeaderText($header) | ->setHeaderText($header) | ||||
| ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) | |||||
| ->setTable($table); | ->setTable($table); | ||||
| $pager_box = $this->renderTablePagerBox($pager); | $pager_box = $this->renderTablePagerBox($pager); | ||||
| return array($box, $pager_box); | return array($box, $pager_box); | ||||
| } | } | ||||
| private function renderGrepResults(array $results, $pattern) { | private function renderGrepResults(array $results, $pattern) { | ||||
| ▲ Show 20 Lines • Show All 250 Lines • ▼ Show 20 Lines | if (!$show_color) { | ||||
| $corpus_table); | $corpus_table); | ||||
| Javelin::initBehavior('load-blame', array('id' => $id)); | Javelin::initBehavior('load-blame', array('id' => $id)); | ||||
| } | } | ||||
| $edit = $this->renderEditButton(); | $edit = $this->renderEditButton(); | ||||
| $file = $this->renderFileButton(); | $file = $this->renderFileButton(); | ||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setHeader(pht('File Contents')) | ->setHeader(basename($this->getDiffusionRequest()->getPath())) | ||||
| ->setHeaderIcon('fa-file-code-o') | |||||
| ->addActionLink($edit) | ->addActionLink($edit) | ||||
| ->addActionLink($file); | ->addActionLink($file); | ||||
| $corpus = id(new PHUIObjectBoxView()) | $corpus = id(new PHUIObjectBoxView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) | |||||
| ->appendChild($corpus) | ->appendChild($corpus) | ||||
| ->setCollapsed(true); | ->setCollapsed(true); | ||||
| $messages = array(); | $messages = array(); | ||||
| if (!$can_highlight) { | if (!$can_highlight) { | ||||
| $messages[] = pht( | $messages[] = pht( | ||||
| 'This file is larger than %s, so syntax highlighting is disabled '. | 'This file is larger than %s, so syntax highlighting is disabled '. | ||||
| Show All 18 Lines | if ($messages) { | ||||
| id(new PHUIInfoView()) | id(new PHUIInfoView()) | ||||
| ->setSeverity(PHUIInfoView::SEVERITY_WARNING) | ->setSeverity(PHUIInfoView::SEVERITY_WARNING) | ||||
| ->setErrors($messages)); | ->setErrors($messages)); | ||||
| } | } | ||||
| return $corpus; | return $corpus; | ||||
| } | } | ||||
| private function enrichActionView( | private function enrichCurtain( | ||||
| PhabricatorActionListView $view, | PHUICurtainView $curtain, | ||||
| DiffusionRequest $drequest, | DiffusionRequest $drequest, | ||||
| $show_blame, | $show_blame, | ||||
| $show_color) { | $show_color) { | ||||
| $viewer = $this->getRequest()->getUser(); | $viewer = $this->getViewer(); | ||||
| $base_uri = $this->getRequest()->getRequestURI(); | $base_uri = $this->getRequest()->getRequestURI(); | ||||
| $view->addAction( | $curtain->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName(pht('Show Last Change')) | ->setName(pht('Show Last Change')) | ||||
| ->setHref( | ->setHref( | ||||
| $drequest->generateURI( | $drequest->generateURI( | ||||
| array( | array( | ||||
| 'action' => 'change', | 'action' => 'change', | ||||
| ))) | ))) | ||||
| ->setIcon('fa-backward')); | ->setIcon('fa-backward')); | ||||
| if ($show_blame) { | if ($show_blame) { | ||||
| $blame_text = pht('Disable Blame'); | $blame_text = pht('Disable Blame'); | ||||
| $blame_icon = 'fa-exclamation-circle lightgreytext'; | $blame_icon = 'fa-exclamation-circle lightgreytext'; | ||||
| $blame_value = 0; | $blame_value = 0; | ||||
| } else { | } else { | ||||
| $blame_text = pht('Enable Blame'); | $blame_text = pht('Enable Blame'); | ||||
| $blame_icon = 'fa-exclamation-circle'; | $blame_icon = 'fa-exclamation-circle'; | ||||
| $blame_value = 1; | $blame_value = 1; | ||||
| } | } | ||||
| $view->addAction( | $curtain->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName($blame_text) | ->setName($blame_text) | ||||
| ->setHref($base_uri->alter('blame', $blame_value)) | ->setHref($base_uri->alter('blame', $blame_value)) | ||||
| ->setIcon($blame_icon) | ->setIcon($blame_icon) | ||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setRenderAsForm($viewer->isLoggedIn())); | ->setRenderAsForm($viewer->isLoggedIn())); | ||||
| if ($show_color) { | if ($show_color) { | ||||
| $highlight_text = pht('Disable Highlighting'); | $highlight_text = pht('Disable Highlighting'); | ||||
| $highlight_icon = 'fa-star-o grey'; | $highlight_icon = 'fa-star-o grey'; | ||||
| $highlight_value = 0; | $highlight_value = 0; | ||||
| } else { | } else { | ||||
| $highlight_text = pht('Enable Highlighting'); | $highlight_text = pht('Enable Highlighting'); | ||||
| $highlight_icon = 'fa-star'; | $highlight_icon = 'fa-star'; | ||||
| $highlight_value = 1; | $highlight_value = 1; | ||||
| } | } | ||||
| $view->addAction( | $curtain->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName($highlight_text) | ->setName($highlight_text) | ||||
| ->setHref($base_uri->alter('color', $highlight_value)) | ->setHref($base_uri->alter('color', $highlight_value)) | ||||
| ->setIcon($highlight_icon) | ->setIcon($highlight_icon) | ||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setRenderAsForm($viewer->isLoggedIn())); | ->setRenderAsForm($viewer->isLoggedIn())); | ||||
| $href = null; | $href = null; | ||||
| if ($this->getRequest()->getStr('lint') !== null) { | if ($this->getRequest()->getStr('lint') !== null) { | ||||
| $lint_text = pht('Hide %d Lint Message(s)', count($this->lintMessages)); | $lint_text = pht('Hide %d Lint Message(s)', count($this->lintMessages)); | ||||
| $href = $base_uri->alter('lint', null); | $href = $base_uri->alter('lint', null); | ||||
| } else if ($this->lintCommit === null) { | } else if ($this->lintCommit === null) { | ||||
| $lint_text = pht('Lint not Available'); | $lint_text = pht('Lint not Available'); | ||||
| } else { | } else { | ||||
| $lint_text = pht( | $lint_text = pht( | ||||
| 'Show %d Lint Message(s)', | 'Show %d Lint Message(s)', | ||||
| count($this->lintMessages)); | count($this->lintMessages)); | ||||
| $href = $this->getDiffusionRequest()->generateURI(array( | $href = $this->getDiffusionRequest()->generateURI(array( | ||||
| 'action' => 'browse', | 'action' => 'browse', | ||||
| 'commit' => $this->lintCommit, | 'commit' => $this->lintCommit, | ||||
| ))->alter('lint', ''); | ))->alter('lint', ''); | ||||
| } | } | ||||
| $view->addAction( | $curtain->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName($lint_text) | ->setName($lint_text) | ||||
| ->setHref($href) | ->setHref($href) | ||||
| ->setIcon('fa-exclamation-triangle') | ->setIcon('fa-exclamation-triangle') | ||||
| ->setDisabled(!$href)); | ->setDisabled(!$href)); | ||||
| return $view; | |||||
| $repository = $drequest->getRepository(); | |||||
| $owners = 'PhabricatorOwnersApplication'; | |||||
| if (PhabricatorApplication::isClassInstalled($owners)) { | |||||
| $package_query = id(new PhabricatorOwnersPackageQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withStatuses(array(PhabricatorOwnersPackage::STATUS_ACTIVE)) | |||||
| ->withControl( | |||||
| $repository->getPHID(), | |||||
| array( | |||||
| $drequest->getPath(), | |||||
| )); | |||||
| $package_query->execute(); | |||||
| $packages = $package_query->getControllingPackagesForPath( | |||||
| $repository->getPHID(), | |||||
| $drequest->getPath()); | |||||
| if ($packages) { | |||||
| $ownership = id(new PHUIStatusListView()) | |||||
| ->setUser($viewer); | |||||
| foreach ($packages as $package) { | |||||
| $icon = 'fa-list-alt'; | |||||
| $color = 'grey'; | |||||
| $item = id(new PHUIStatusItemView()) | |||||
| ->setIcon($icon, $color) | |||||
| ->setTarget($viewer->renderHandle($package->getPHID())); | |||||
| $ownership->addItem($item); | |||||
| } | |||||
| } else { | |||||
| $ownership = phutil_tag('em', array(), pht('None')); | |||||
| } | |||||
| $curtain->newPanel() | |||||
| ->setHeaderText(pht('Owners')) | |||||
| ->appendChild($ownership); | |||||
| } | |||||
| return $curtain; | |||||
| } | } | ||||
| private function renderEditButton() { | private function renderEditButton() { | ||||
| $request = $this->getRequest(); | $request = $this->getRequest(); | ||||
| $user = $request->getUser(); | $user = $request->getUser(); | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| ▲ Show 20 Lines • Show All 432 Lines • ▼ Show 20 Lines | $properties->addImageContent( | ||||
| phutil_tag( | phutil_tag( | ||||
| 'img', | 'img', | ||||
| array( | array( | ||||
| 'src' => $file_uri, | 'src' => $file_uri, | ||||
| ))); | ))); | ||||
| $file = $this->renderFileButton($file_uri); | $file = $this->renderFileButton($file_uri); | ||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setHeader(pht('Image')) | ->setHeader(basename($this->getDiffusionRequest()->getPath())) | ||||
| ->addActionLink($file); | ->addActionLink($file) | ||||
| ->setHeaderIcon('fa-file-image-o'); | |||||
| return id(new PHUIObjectBoxView()) | return id(new PHUIObjectBoxView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) | |||||
| ->addPropertyList($properties); | ->addPropertyList($properties); | ||||
| } | } | ||||
| private function buildBinaryCorpus($file_uri, $data) { | private function buildBinaryCorpus($file_uri, $data) { | ||||
| $size = new PhutilNumber(strlen($data)); | $size = new PhutilNumber(strlen($data)); | ||||
| $text = pht('This is a binary file. It is %s byte(s) in length.', $size); | $text = pht('This is a binary file. It is %s byte(s) in length.', $size); | ||||
| $text = id(new PHUIBoxView()) | $text = id(new PHUIBoxView()) | ||||
| ->addPadding(PHUI::PADDING_LARGE) | ->addPadding(PHUI::PADDING_LARGE) | ||||
| ->appendChild($text); | ->appendChild($text); | ||||
| $file = $this->renderFileButton($file_uri); | $file = $this->renderFileButton($file_uri); | ||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setHeader(pht('Details')) | ->setHeader(pht('DETAILS')) | ||||
| ->addActionLink($file); | ->addActionLink($file); | ||||
| $box = id(new PHUIObjectBoxView()) | $box = id(new PHUIObjectBoxView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) | |||||
| ->appendChild($text); | ->appendChild($text); | ||||
| return $box; | return $box; | ||||
| } | } | ||||
| private function buildErrorCorpus($message) { | private function buildErrorCorpus($message) { | ||||
| $text = id(new PHUIBoxView()) | $text = id(new PHUIBoxView()) | ||||
| ->addPadding(PHUI::PADDING_LARGE) | ->addPadding(PHUI::PADDING_LARGE) | ||||
| ->appendChild($message); | ->appendChild($message); | ||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setHeader(pht('Details')); | ->setHeader(pht('DETAILS')); | ||||
| $box = id(new PHUIObjectBoxView()) | $box = id(new PHUIObjectBoxView()) | ||||
| ->setHeader($header) | ->setHeader($header) | ||||
| ->appendChild($text); | ->appendChild($text); | ||||
| return $box; | return $box; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 146 Lines • ▼ Show 20 Lines | private function renderCommitTooltip( | ||||
| $viewer = $this->getRequest()->getUser(); | $viewer = $this->getRequest()->getUser(); | ||||
| $date = phabricator_date($commit->getEpoch(), $viewer); | $date = phabricator_date($commit->getEpoch(), $viewer); | ||||
| $summary = trim($commit->getSummary()); | $summary = trim($commit->getSummary()); | ||||
| return "{$summary}\n{$date} \xC2\xB7 {$author}"; | return "{$summary}\n{$date} \xC2\xB7 {$author}"; | ||||
| } | } | ||||
| protected function renderSearchForm($collapsed) { | protected function renderSearchForm() { | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| $forms = array(); | $forms = array(); | ||||
| $form = id(new AphrontFormView()) | $form = id(new AphrontFormView()) | ||||
| ->setUser($this->getRequest()->getUser()) | ->setUser($this->getViewer()) | ||||
| ->setMethod('GET'); | ->setMethod('GET'); | ||||
| switch ($drequest->getRepository()->getVersionControlSystem()) { | switch ($drequest->getRepository()->getVersionControlSystem()) { | ||||
| case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: | case PhabricatorRepositoryType::REPOSITORY_TYPE_SVN: | ||||
| $forms[] = id(clone $form) | $forms[] = id(clone $form) | ||||
| ->appendChild(pht('Search is not available in Subversion.')); | ->appendChild(pht('Search is not available in Subversion.')); | ||||
| break; | break; | ||||
| default: | default: | ||||
| Show All 9 Lines | switch ($drequest->getRepository()->getVersionControlSystem()) { | ||||
| id(new AphrontFormTextWithSubmitControl()) | id(new AphrontFormTextWithSubmitControl()) | ||||
| ->setLabel(pht('Pattern')) | ->setLabel(pht('Pattern')) | ||||
| ->setSubmitLabel(pht('Grep File Content')) | ->setSubmitLabel(pht('Grep File Content')) | ||||
| ->setName('grep') | ->setName('grep') | ||||
| ->setValue($this->getRequest()->getStr('grep'))); | ->setValue($this->getRequest()->getStr('grep'))); | ||||
| break; | break; | ||||
| } | } | ||||
| $filter = new AphrontListFilterView(); | require_celerity_resource('diffusion-icons-css'); | ||||
| $filter->appendChild($forms); | $form_box = phutil_tag_div('diffusion-search-boxen', $forms); | ||||
| if ($collapsed) { | return $form_box; | ||||
| $filter->setCollapsed( | |||||
| pht('Show Search'), | |||||
| pht('Hide Search'), | |||||
| pht('Search for file names or content in this directory.'), | |||||
| '#'); | |||||
| } | |||||
| $filter = id(new PHUIBoxView()) | |||||
| ->addClass('mlt mlb') | |||||
| ->appendChild($filter); | |||||
| return $filter; | |||||
| } | } | ||||
| protected function markupText($text) { | protected function markupText($text) { | ||||
| $engine = PhabricatorMarkupEngine::newDiffusionMarkupEngine(); | $engine = PhabricatorMarkupEngine::newDiffusionMarkupEngine(); | ||||
| $engine->setConfig('viewer', $this->getRequest()->getUser()); | $engine->setConfig('viewer', $this->getRequest()->getUser()); | ||||
| $text = $engine->markupText($text); | $text = $engine->markupText($text); | ||||
| $text = phutil_tag( | $text = phutil_tag( | ||||
| 'div', | 'div', | ||||
| array( | array( | ||||
| 'class' => 'phabricator-remarkup', | 'class' => 'phabricator-remarkup', | ||||
| ), | ), | ||||
| $text); | $text); | ||||
| return $text; | return $text; | ||||
| } | } | ||||
| protected function buildHeaderView(DiffusionRequest $drequest) { | protected function buildHeaderView(DiffusionRequest $drequest) { | ||||
| $viewer = $this->getRequest()->getUser(); | $viewer = $this->getViewer(); | ||||
| $tag = $this->renderCommitHashTag($drequest); | |||||
| $header = id(new PHUIHeaderView()) | $header = id(new PHUIHeaderView()) | ||||
| ->setUser($viewer) | ->setUser($viewer) | ||||
| ->setHeader($this->renderPathLinks($drequest, $mode = 'browse')) | ->setHeader($this->renderPathLinks($drequest, $mode = 'browse')) | ||||
| ->setPolicyObject($drequest->getRepository()); | ->addTag($tag); | ||||
| return $header; | return $header; | ||||
| } | } | ||||
| protected function buildActionView(DiffusionRequest $drequest) { | protected function buildCurtain(DiffusionRequest $drequest) { | ||||
| $viewer = $this->getRequest()->getUser(); | $viewer = $this->getViewer(); | ||||
| $view = id(new PhabricatorActionListView()) | $curtain = $this->newCurtainView($drequest); | ||||
| ->setUser($viewer); | |||||
| $history_uri = $drequest->generateURI( | $history_uri = $drequest->generateURI( | ||||
| array( | array( | ||||
| 'action' => 'history', | 'action' => 'history', | ||||
| )); | )); | ||||
| $view->addAction( | $curtain->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName(pht('View History')) | ->setName(pht('View History')) | ||||
| ->setHref($history_uri) | ->setHref($history_uri) | ||||
| ->setIcon('fa-list')); | ->setIcon('fa-list')); | ||||
| $behind_head = $drequest->getSymbolicCommit(); | $behind_head = $drequest->getSymbolicCommit(); | ||||
| $head_uri = $drequest->generateURI( | $head_uri = $drequest->generateURI( | ||||
| array( | array( | ||||
| 'commit' => '', | 'commit' => '', | ||||
| 'action' => 'browse', | 'action' => 'browse', | ||||
| )); | )); | ||||
| $view->addAction( | $curtain->addAction( | ||||
| id(new PhabricatorActionView()) | id(new PhabricatorActionView()) | ||||
| ->setName(pht('Jump to HEAD')) | ->setName(pht('Jump to HEAD')) | ||||
| ->setHref($head_uri) | ->setHref($head_uri) | ||||
| ->setIcon('fa-home') | ->setIcon('fa-home') | ||||
| ->setDisabled(!$behind_head)); | ->setDisabled(!$behind_head)); | ||||
| return $view; | return $curtain; | ||||
| } | } | ||||
| protected function buildPropertyView( | protected function buildPropertyView( | ||||
| DiffusionRequest $drequest, | DiffusionRequest $drequest) { | ||||
| PhabricatorActionListView $actions) { | |||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $view = id(new PHUIPropertyListView()) | $view = id(new PHUIPropertyListView()) | ||||
| ->setUser($viewer) | ->setUser($viewer); | ||||
| ->setActionList($actions); | |||||
| $stable_commit = $drequest->getStableCommit(); | |||||
| $view->addProperty( | |||||
| pht('Commit'), | |||||
| phutil_tag( | |||||
| 'a', | |||||
| array( | |||||
| 'href' => $drequest->generateURI( | |||||
| array( | |||||
| 'action' => 'commit', | |||||
| 'commit' => $stable_commit, | |||||
| )), | |||||
| ), | |||||
| $drequest->getRepository()->formatCommitName($stable_commit))); | |||||
| if ($drequest->getSymbolicType() == 'tag') { | if ($drequest->getSymbolicType() == 'tag') { | ||||
| $symbolic = $drequest->getSymbolicCommit(); | $symbolic = $drequest->getSymbolicCommit(); | ||||
| $view->addProperty(pht('Tag'), $symbolic); | $view->addProperty(pht('Tag'), $symbolic); | ||||
| $tags = $this->callConduitWithDiffusionRequest( | $tags = $this->callConduitWithDiffusionRequest( | ||||
| 'diffusion.tagsquery', | 'diffusion.tagsquery', | ||||
| array( | array( | ||||
| 'names' => array($symbolic), | 'names' => array($symbolic), | ||||
| 'needMessages' => true, | 'needMessages' => true, | ||||
| )); | )); | ||||
| $tags = DiffusionRepositoryTag::newFromConduit($tags); | $tags = DiffusionRepositoryTag::newFromConduit($tags); | ||||
| $tags = mpull($tags, null, 'getName'); | $tags = mpull($tags, null, 'getName'); | ||||
| $tag = idx($tags, $symbolic); | $tag = idx($tags, $symbolic); | ||||
| if ($tag && strlen($tag->getMessage())) { | if ($tag && strlen($tag->getMessage())) { | ||||
| $view->addSectionHeader( | $view->addSectionHeader( | ||||
| pht('Tag Content'), 'fa-tag'); | pht('Tag Content'), 'fa-tag'); | ||||
| $view->addTextContent($this->markupText($tag->getMessage())); | $view->addTextContent($this->markupText($tag->getMessage())); | ||||
| } | } | ||||
| } | } | ||||
| $repository = $drequest->getRepository(); | if ($view->hasAnyProperties()) { | ||||
| return $view; | |||||
| $owners = 'PhabricatorOwnersApplication'; | |||||
| if (PhabricatorApplication::isClassInstalled($owners)) { | |||||
| $package_query = id(new PhabricatorOwnersPackageQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withStatuses(array(PhabricatorOwnersPackage::STATUS_ACTIVE)) | |||||
| ->withControl( | |||||
| $repository->getPHID(), | |||||
| array( | |||||
| $drequest->getPath(), | |||||
| )); | |||||
| $package_query->execute(); | |||||
| $packages = $package_query->getControllingPackagesForPath( | |||||
| $repository->getPHID(), | |||||
| $drequest->getPath()); | |||||
| if ($packages) { | |||||
| $ownership = id(new PHUIStatusListView()) | |||||
| ->setUser($viewer); | |||||
| foreach ($packages as $package) { | |||||
| $icon = 'fa-list-alt'; | |||||
| $color = 'grey'; | |||||
| $item = id(new PHUIStatusItemView()) | |||||
| ->setIcon($icon, $color) | |||||
| ->setTarget($viewer->renderHandle($package->getPHID())); | |||||
| $ownership->addItem($item); | |||||
| } | |||||
| } else { | |||||
| $ownership = phutil_tag('em', array(), pht('None')); | |||||
| } | |||||
| $view->addProperty(pht('Packages'), $ownership); | |||||
| } | } | ||||
| return $view; | return null; | ||||
| } | } | ||||
| private function buildOpenRevisions() { | private function buildOpenRevisions() { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| $repository = $drequest->getRepository(); | $repository = $drequest->getRepository(); | ||||
| $path = $drequest->getPath(); | $path = $drequest->getPath(); | ||||
| ▲ Show 20 Lines • Show All 201 Lines • Show Last 20 Lines | |||||