Page MenuHomePhabricator

D18267.diff
No OneTemporary

D18267.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -9,7 +9,7 @@
'names' => array(
'conpherence.pkg.css' => 'e68cf1fa',
'conpherence.pkg.js' => 'b5b51108',
- 'core.pkg.css' => 'f1c7630f',
+ 'core.pkg.css' => 'c0a7ecfd',
'core.pkg.js' => '5d80e0db',
'darkconsole.pkg.js' => '1f9a31bc',
'differential.pkg.css' => '45951e9e',
@@ -75,7 +75,7 @@
'rsrc/css/application/diffusion/diffusion-readme.css' => '419dd5b6',
'rsrc/css/application/diffusion/diffusion-repository.css' => 'ee6f20ec',
'rsrc/css/application/diffusion/diffusion-source.css' => '750add59',
- 'rsrc/css/application/diffusion/diffusion.css' => '8d01932f',
+ 'rsrc/css/application/diffusion/diffusion.css' => '67bd971b',
'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
'rsrc/css/application/files/global-drag-and-drop.css' => 'b556a948',
'rsrc/css/application/flag/flag.css' => 'bba8f811',
@@ -127,7 +127,7 @@
'rsrc/css/layout/phabricator-source-code-view.css' => 'aea41829',
'rsrc/css/phui/button/phui-button-bar.css' => 'f1ff5494',
'rsrc/css/phui/button/phui-button-simple.css' => '8e1baf68',
- 'rsrc/css/phui/button/phui-button.css' => '022581b4',
+ 'rsrc/css/phui/button/phui-button.css' => '3a744520',
'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893',
'rsrc/css/phui/calendar/phui-calendar-list.css' => '576be600',
'rsrc/css/phui/calendar/phui-calendar-month.css' => '21154caf',
@@ -571,7 +571,7 @@
'differential-revision-history-css' => '0e8eb855',
'differential-revision-list-css' => 'f3c47d33',
'differential-table-of-contents-css' => 'ae4b7a55',
- 'diffusion-css' => '8d01932f',
+ 'diffusion-css' => '67bd971b',
'diffusion-icons-css' => '0c15255e',
'diffusion-readme-css' => '419dd5b6',
'diffusion-repository-css' => 'ee6f20ec',
@@ -825,7 +825,7 @@
'phui-big-info-view-css' => 'd13afcde',
'phui-box-css' => '745e881d',
'phui-button-bar-css' => 'f1ff5494',
- 'phui-button-css' => '022581b4',
+ 'phui-button-css' => '3a744520',
'phui-button-simple-css' => '8e1baf68',
'phui-calendar-css' => 'f1ddf11c',
'phui-calendar-day-css' => '572b1893',
diff --git a/src/applications/diffusion/controller/DiffusionRepositoryController.php b/src/applications/diffusion/controller/DiffusionRepositoryController.php
--- a/src/applications/diffusion/controller/DiffusionRepositoryController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryController.php
@@ -4,7 +4,7 @@
private $historyFuture;
private $browseFuture;
- private $tagFuture;
+ private $branchButton = null;
private $branchFuture;
public function shouldAllowPublic() {
@@ -53,15 +53,25 @@
// This is a valid branch, so we necessarily have some content.
$page_has_content = true;
} else {
- $empty_title = pht('No Such Branch');
- $empty_message = pht(
- 'There is no branch named "%s" in this repository.',
- $drequest->getBranch());
+ $default = $repository->getDefaultBranch();
+ if ($default != $drequest->getBranch()) {
+ $empty_title = pht('No Such Branch');
+ $empty_message = pht(
+ 'There is no branch named "%s" in this repository.',
+ $drequest->getBranch());
+ } else {
+ $empty_title = pht('No Default Branch');
+ $empty_message = pht(
+ 'This repository is configured with default branch "%s" but '.
+ 'there is no branch with that name in this repository.',
+ $default);
+ }
}
}
// If we didn't find any branches, check if there are any commits at all.
// This can tailor the message for empty repositories.
+ $any_commit = null;
if (!$page_has_content) {
$any_commit = id(new DiffusionCommitQuery())
->setViewer($viewer)
@@ -81,6 +91,9 @@
if ($page_has_content) {
$content = $this->buildNormalContent($drequest);
} else {
+ // If we have a commit somewhere, find branches.
+ // TODO: Evan will replace
+ // $this->buildNormalContent($drequest);
$content = id(new PHUIInfoView())
->setTitle($empty_title)
->setSeverity(PHUIInfoView::SEVERITY_WARNING)
@@ -110,7 +123,7 @@
$bar = id(new PHUILeftRightView())
->setLeft($locate_file)
- ->setRight($clone_button)
+ ->setRight(array($this->branchButton, $clone_button))
->addClass('diffusion-action-bar');
$view = id(new PHUITwoColumnView())
@@ -145,6 +158,7 @@
$commit = $drequest->getCommit();
$path = $drequest->getPath();
+ $futures = array();
$this->historyFuture = $this->callConduitMethod(
'diffusion.historyquery',
array(
@@ -153,6 +167,7 @@
'offset' => 0,
'limit' => 15,
));
+ $futures[] = $this->historyFuture;
$browse_pager = id(new PHUIPagerView())
->readFromRequest($request);
@@ -164,11 +179,19 @@
'path' => $path,
'limit' => $browse_pager->getPageSize() + 1,
));
+ $futures[] = $this->browseFuture;
+
+ if ($this->needBranchFuture()) {
+ $branch_limit = $this->getBranchLimit();
+ $this->branchFuture = $this->callConduitMethod(
+ 'diffusion.branchquery',
+ array(
+ 'closed' => false,
+ 'limit' => $branch_limit + 1,
+ ));
+ $futures[] = $this->branchFuture;
+ }
- $futures = array(
- $this->historyFuture,
- $this->browseFuture,
- );
$futures = array_filter($futures);
$futures = new FutureIterator($futures);
foreach ($futures as $future) {
@@ -253,6 +276,18 @@
$content[] = $readme;
}
+
+ try {
+ $branch_button = $this->buildBranchList($drequest);
+ $this->branchButton = $branch_button;
+ } catch (Exception $ex) {
+ if (!$repository->isImporting()) {
+ $content[] = $this->renderStatusMessage(
+ pht('Unable to Load Branches'),
+ $ex->getMessage());
+ }
+ }
+
return $content;
}
@@ -375,6 +410,67 @@
return $panel;
}
+ private function buildBranchList(DiffusionRequest $drequest) {
+ $viewer = $this->getViewer();
+
+ if (!$this->needBranchFuture()) {
+ return null;
+ }
+
+ $branches = $this->branchFuture->resolve();
+ if (!$branches) {
+ return null;
+ }
+
+ $limit = $this->getBranchLimit();
+ $more_branches = (count($branches) > $limit);
+ $branches = array_slice($branches, 0, $limit);
+
+ $branches = DiffusionRepositoryRef::loadAllFromDictionaries($branches);
+
+ $actions = id(new PhabricatorActionListView())
+ ->setViewer($viewer);
+
+ foreach ($branches as $branch) {
+ $branch_uri = $drequest->generateURI(
+ array(
+ 'action' => 'browse',
+ 'branch' => $branch->getShortname(),
+ ));
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setName($branch->getShortname())
+ ->setIcon('fa-code-fork')
+ ->setHref($branch_uri));
+ }
+
+ if ($more_branches) {
+ $more_uri = $drequest->generateURI(
+ array(
+ 'action' => 'branches',
+ ));
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setType(PhabricatorActionView::TYPE_DIVIDER));
+ $actions->addAction(
+ id(new PhabricatorActionView())
+ ->setName(pht('See More Branches'))
+ ->setIcon('fa-external-link')
+ ->setHref($more_uri));
+ }
+
+ $button = id(new PHUIButtonView())
+ ->setText(pht('Branch: %s', $drequest->getBranch()))
+ ->setTag('a')
+ ->addClass('mmr')
+ ->setIcon('fa-code-fork')
+ ->setColor(PHUIButtonView::GREY)
+ ->setDropdown(true)
+ ->setDropdownMenu($actions);
+
+ return $button;
+ }
+
private function buildLocateFile() {
$request = $this->getRequest();
$viewer = $request->getUser();
@@ -457,7 +553,17 @@
->setPager($pager);
}
- private function getTagLimit() {
+ private function needBranchFuture() {
+ $drequest = $this->getDiffusionRequest();
+
+ if ($drequest->getBranch() === null) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private function getBranchLimit() {
return 15;
}
diff --git a/webroot/rsrc/css/application/diffusion/diffusion.css b/webroot/rsrc/css/application/diffusion/diffusion.css
--- a/webroot/rsrc/css/application/diffusion/diffusion.css
+++ b/webroot/rsrc/css/application/diffusion/diffusion.css
@@ -16,6 +16,23 @@
margin-bottom: 16px;
}
+.device-phone .diffusion-action-bar {
+ display: block;
+}
+
+.device-phone .diffusion-action-bar .phui-lr-container {
+ display: block;
+}
+
+.device-phone .diffusion-action-bar .phui-lr-container .phui-left-view {
+ display: block;
+}
+
+.device-phone .diffusion-action-bar .phui-lr-container .phui-right-view {
+ padding-top: 12px;
+ display: block;
+}
+
.diffusion-profile-locate .phui-form-view {
margin: 0;
padding: 0;
diff --git a/webroot/rsrc/css/phui/button/phui-button.css b/webroot/rsrc/css/phui/button/phui-button.css
--- a/webroot/rsrc/css/phui/button/phui-button.css
+++ b/webroot/rsrc/css/phui/button/phui-button.css
@@ -265,6 +265,14 @@
right: 10px;
}
+.phui-button-text {
+ display: inline-block;
+}
+
+.dropdown .phui-button-text {
+ margin-right: 16px;
+}
+
.button.has-icon .phui-button-text {
margin-left: 16px;
}

File Metadata

Mime Type
text/plain
Expires
Fri, May 10, 12:44 AM (3 w, 2 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6281204
Default Alt Text
D18267.diff (9 KB)

Event Timeline