diff --git a/src/applications/diffusion/controller/DiffusionBrowseController.php b/src/applications/diffusion/controller/DiffusionBrowseController.php --- a/src/applications/diffusion/controller/DiffusionBrowseController.php +++ b/src/applications/diffusion/controller/DiffusionBrowseController.php @@ -1676,6 +1676,29 @@ 'action' => 'history', )); + $drequest = $this->getDiffusionRequest(); + $repository = $drequest->getRepository(); + + if ($drequest->getSymbolicType() == 'tag') { + $download = $drequest->getSymbolicCommit(); + } elseif ($drequest->getSymbolicType() == 'commit') { + $download = $drequest->getStableCommit(); + } else { + $download = $drequest->getBranch(); + } + + $curtain->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Download zip')) + ->setHref('https://github.com/wikimedia/'.$repository->getName().'/archive/'.$download.'.zip') + ->setIcon('fa-download')); + + $curtain->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Download gz')) + ->setHref('https://github.com/wikimedia/'.$repository->getName().'/archive/'.$download.'.tar.gz') + ->setIcon('fa-download')); + $curtain->addAction( id(new PhabricatorActionView()) ->setName(pht('View History')) diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php --- a/src/applications/diffusion/controller/DiffusionCommitController.php +++ b/src/applications/diffusion/controller/DiffusionCommitController.php @@ -958,6 +958,18 @@ ->setWorkflow(!$can_edit); $curtain->addAction($action); + $action = id(new PhabricatorActionView()) + ->setName(pht('Download zip')) + ->setHref('https://github.com/wikimedia/'.$repository->getName().'/archive/'.$identifier.'.zip') + ->setIcon('fa-download'); + $curtain->addAction($action); + + $action = id(new PhabricatorActionView()) + ->setName(pht('Download gz')) + ->setHref('https://github.com/wikimedia/'.$repository->getName().'/archive/'.$identifier.'.tar.gz') + ->setIcon('fa-download'); + $curtain->addAction($action); + require_celerity_resource('phabricator-object-selector-css'); require_celerity_resource('javelin-behavior-phabricator-object-selector'); 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 @@ -264,6 +264,18 @@ ->setWorkflow(!$can_edit) ->setDisabled(!$can_edit)); + $curtain->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Download zip')) + ->setIcon('fa-download') + ->setHref('https://github.com/wikimedia/'.$repository->getName().'/archive/'.$repository->getDefaultBranch().'.zip')); + + $curtain->addAction( + id(new PhabricatorActionView()) + ->setName(pht('Download gz')) + ->setIcon('fa-download') + ->setHref('https://github.com/wikimedia/'.$repository->getName().'/archive/'.$repository->getDefaultBranch().'.tar.gz')); + if ($repository->isHosted()) { $push_uri = $this->getApplicationURI( 'pushlog/?repositories='.$repository->getMonogram());