Template Repositories (#8768)

* Start work on templates

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Continue work

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix IsTemplate vs IsGenerated

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix tabs vs spaces

* Tabs vs Spaces

* Add templates to API & start adding tests

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix integration tests

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Remove unused User

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Move template tests to existing repos

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Minor re-check updates and cleanup

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* make fmt

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Test cleanup

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix optionalbool

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* make fmt

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Test fixes and icon change

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Add new user and repo for tests

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix tests (finally)

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Update meta repo with env variables

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Move generation to create page

Combine with repo create template
Modify API search to prioritize owner for repo

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix tests and coverage

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix swagger and JS lint

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix API searching for own private repos

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Change wording

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix repo search test. User had a private repo that didn't show up

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Another search test fix

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Clarify git content

Co-Authored-By: guillep2k <18600385+guillep2k@users.noreply.github.com>

* Feedback updates

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Add topics WIP

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Finish adding topics

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Update locale

Signed-off-by: jolheiser <john.olheiser@gmail.com>
This commit is contained in:
John Olheiser 2019-11-11 09:15:29 -06:00 committed by Lunny Xiao
parent 74bb292fe3
commit 74a6add4d9
58 changed files with 1441 additions and 119 deletions

View file

@ -2135,6 +2135,52 @@ function initWipTitle() {
});
}
function initTemplateSearch() {
const $repoTemplate = $("#repo_template");
const checkTemplate = function() {
const $templateUnits = $("#template_units");
const $nonTemplate = $("#non_template");
if ($repoTemplate.val() !== "") {
$templateUnits.show();
$nonTemplate.hide();
} else {
$templateUnits.hide();
$nonTemplate.show();
}
};
$repoTemplate.change(checkTemplate);
checkTemplate();
const changeOwner = function() {
$("#repo_template_search")
.dropdown({
apiSettings: {
url: suburl + '/api/v1/repos/search?q={query}&template=true&priority_owner_id=' + $("#uid").val(),
onResponse: function(response) {
const filteredResponse = {'success': true, 'results': []};
filteredResponse.results.push({
'name': '',
'value': ''
});
// Parse the response from the api to work with our dropdown
$.each(response.data, function(_r, repo) {
filteredResponse.results.push({
'name' : htmlEncode(repo.full_name) ,
'value' : repo.id
});
});
return filteredResponse;
},
cache: false,
},
fullTextSearch: true
});
};
$("#uid").change(changeOwner);
changeOwner();
}
$(document).ready(function () {
csrf = $('meta[name=_csrf]').attr("content");
suburl = $('meta[name=_suburl]').attr("content");
@ -2377,6 +2423,7 @@ $(document).ready(function () {
initWipTitle();
initPullRequestReview();
initRepoStatusChecker();
initTemplateSearch();
// Repo clone url.
if ($('#repo-clone-url').length > 0) {
@ -3294,7 +3341,7 @@ function initIssueList() {
$('#new-dependency-drop-list')
.dropdown({
apiSettings: {
url: issueSearchUrl,
url: issueSearchUrl,
onResponse: function(response) {
const filteredResponse = {'success': true, 'results': []};
const currIssueId = $('#new-dependency-drop-list').data('issue-id');
@ -3305,7 +3352,7 @@ function initIssueList() {
return;
}
filteredResponse.results.push({
'name' : '#' + issue.number + ' ' + htmlEncode(issue.title) +
'name' : '#' + issue.number + ' ' + htmlEncode(issue.title) +
'<div class="text small dont-break-out">' + htmlEncode(issue.repository.full_name) + '</div>',
'value' : issue.id
});