(function() { /** * Page to create a new repository. */ angular.module('quayPages').config(['pages', function(pages) { pages.create('new-repo', 'new-repo.html', NewRepoCtrl, { 'newLayout': true, 'title': 'New Repository', 'description': 'Create a new Docker repository' }) }]); function NewRepoCtrl($scope, $location, $http, $timeout, UserService, ApiService, PlanService, TriggerService, Features) { UserService.updateUserIn($scope); $scope.Features = Features; $scope.TriggerService = TriggerService; $scope.repo = { 'is_public': 0, 'description': '', 'initialize': '' }; $scope.changeNamespace = function(namespace) { $scope.repo.namespace = namespace; }; $scope.handleBuildStarted = function() { var repo = $scope.repo; $location.path('/repository/' + repo.namespace + '/' + repo.name); }; $scope.handleBuildFailed = function(message) { var repo = $scope.repo; bootbox.dialog({ "message": message, "title": "Could not start Dockerfile build", "buttons": { "close": { "label": "Close", "className": "btn-primary", "callback": function() { $scope.$apply(function() { $location.path('/repository/' + repo.namespace + '/' + repo.name); }); } } } }); return true; }; $scope.$watch('repo.name', function() { $scope.createError = null; }); $scope.createNewRepo = function() { $scope.creating = true; var repo = $scope.repo; var data = { 'namespace': repo.namespace, 'repository': repo.name, 'visibility': repo.is_public == '1' ? 'public' : 'private', 'description': repo.description }; ApiService.createRepo(data).then(function(created) { $scope.creating = false; $scope.created = created; // Start the upload process if applicable. if ($scope.repo.initialize == 'dockerfile' || $scope.repo.initialize == 'zipfile') { $scope.createdForBuild = created; return; } // Conduct the SCM redirect if applicable. var redirectUrl = TriggerService.getRedirectUrl($scope.repo.initialize, repo.namespace, repo.name); if (redirectUrl) { window.location = redirectUrl; return; } // Otherwise, redirect to the repo page. $location.path('/repository/' + created.namespace + '/' + created.name); }, function(result) { $scope.creating = false; $scope.createError = ApiService.getErrorMessage(result); }); }; } })();