mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
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:
committed by
Lunny Xiao
parent
74bb292fe3
commit
74a6add4d9
@@ -55,68 +55,97 @@
|
||||
<label for="description">{{.i18n.Tr "repo.repo_desc"}}</label>
|
||||
<textarea id="description" name="description">{{.description}}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.issue_labels"}}</label>
|
||||
<div class="ui search normal selection dropdown">
|
||||
<input type="hidden" name="issue_labels" value="{{.issueLabels}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.issue_labels_helper"}}</div>
|
||||
<label>{{.i18n.Tr "repo.template"}}</label>
|
||||
<div id="repo_template_search" class="ui search normal selection dropdown">
|
||||
<input type="hidden" id="repo_template" name="repo_template" value="{{.repo_template}}">
|
||||
<div class="default text">{{.repo_template_name}}</div>
|
||||
<div class="menu">
|
||||
<div class="item" data-value="">{{.i18n.Tr "repo.issue_labels_helper"}}</div>
|
||||
{{range .LabelTemplates}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui divider"></div>
|
||||
|
||||
<div class="inline field">
|
||||
<label>.gitignore</label>
|
||||
<div class="ui multiple search normal selection dropdown">
|
||||
<input type="hidden" name="gitignores" value="{{.gitignores}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.repo_gitignore_helper"}}</div>
|
||||
<div class="menu">
|
||||
{{range .Gitignores}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
<div id="template_units" style="display: none;">
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.template.items"}}</label>
|
||||
<div class="ui checkbox">
|
||||
<input class="hidden" name="git_content" type="checkbox" tabindex="0" {{if .git_content}}checked{{end}}>
|
||||
<label>{{.i18n.Tr "repo.template.git_content"}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.license"}}</label>
|
||||
<div class="ui search selection dropdown">
|
||||
<input type="hidden" name="license" value="{{.license}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.license_helper"}}</div>
|
||||
<div class="menu">
|
||||
<div class="item" data-value="">{{.i18n.Tr "repo.license_helper"}}</div>
|
||||
{{range .Licenses}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
<div class="inline field">
|
||||
<label></label>
|
||||
<div class="ui checkbox">
|
||||
<input class="hidden" name="topics" type="checkbox" tabindex="0" {{if .topics}}checked{{end}}>
|
||||
<label>{{.i18n.Tr "repo.template.topics"}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.readme"}}</label>
|
||||
<div class="ui selection dropdown">
|
||||
<input type="hidden" name="readme" value="{{.readme}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.readme_helper"}}</div>
|
||||
<div class="menu">
|
||||
{{range .Readmes}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
<div id="non_template">
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.issue_labels"}}</label>
|
||||
<div class="ui search normal selection dropdown">
|
||||
<input type="hidden" name="issue_labels" value="{{.issueLabels}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.issue_labels_helper"}}</div>
|
||||
<div class="menu">
|
||||
<div class="item" data-value="">{{.i18n.Tr "repo.issue_labels_helper"}}</div>
|
||||
{{range .LabelTemplates}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui divider"></div>
|
||||
|
||||
<div class="inline field">
|
||||
<label>.gitignore</label>
|
||||
<div class="ui multiple search normal selection dropdown">
|
||||
<input type="hidden" name="gitignores" value="{{.gitignores}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.repo_gitignore_helper"}}</div>
|
||||
<div class="menu">
|
||||
{{range .Gitignores}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.license"}}</label>
|
||||
<div class="ui search selection dropdown">
|
||||
<input type="hidden" name="license" value="{{.license}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.license_helper"}}</div>
|
||||
<div class="menu">
|
||||
<div class="item" data-value="">{{.i18n.Tr "repo.license_helper"}}</div>
|
||||
{{range .Licenses}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.readme"}}</label>
|
||||
<div class="ui selection dropdown">
|
||||
<input type="hidden" name="readme" value="{{.readme}}">
|
||||
<div class="default text">{{.i18n.Tr "repo.readme_helper"}}</div>
|
||||
<div class="menu">
|
||||
{{range .Readmes}}
|
||||
<div class="item" data-value="{{.}}">{{.}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<div class="ui checkbox" id="auto-init">
|
||||
<input class="hidden" name="auto_init" type="checkbox" tabindex="0" {{if .auto_init}}checked{{end}}>
|
||||
<label>{{.i18n.Tr "repo.auto_init"}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<div class="ui checkbox" id="auto-init">
|
||||
<input class="hidden" name="auto_init" type="checkbox" tabindex="0" {{if .auto_init}}checked{{end}}>
|
||||
<label>{{.i18n.Tr "repo.auto_init"}}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<div class="inline field">
|
||||
<label></label>
|
||||
<button class="ui green button">
|
||||
|
@@ -12,9 +12,11 @@
|
||||
<div class="divider"> / </div>
|
||||
<a href="{{$.RepoLink}}">{{.Name}}</a>
|
||||
{{if and .RelAvatarLink .IsPrivate}}<i class="mega-octicon octicon-lock"></i>{{end}}
|
||||
{{if .IsTemplate}}<i class="icon fa-copy"></i>{{end}}
|
||||
{{if .IsArchived}}<i class="archive icon archived-icon"></i>{{end}}
|
||||
{{if .IsMirror}}<div class="fork-flag">{{$.i18n.Tr "repo.mirror_from"}} <a target="_blank" rel="noopener noreferrer" href="{{MirrorAddress $.Mirror}}">{{MirrorAddress $.Mirror}}</a></div>{{end}}
|
||||
{{if .IsFork}}<div class="fork-flag">{{$.i18n.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{SubStr .BaseRepo.RelLink 1 -1}}</a></div>{{end}}
|
||||
{{if .IsGenerated}}<div class="fork-flag">{{$.i18n.Tr "repo.generated_from"}} <a href="{{.TemplateRepo.Link}}">{{SubStr .TemplateRepo.RelLink 1 -1}}</a></div>{{end}}
|
||||
</div>
|
||||
{{if not .IsBeingCreated}}
|
||||
<div class="repo-buttons">
|
||||
|
@@ -94,6 +94,17 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="fitted item">
|
||||
{{if eq $n 0}}
|
||||
{{if .Repository.IsTemplate}}
|
||||
<div class="ui tiny blue buttons">
|
||||
<a href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}" class="ui button">
|
||||
{{.i18n.Tr "repo.use_template"}}
|
||||
</a>
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="fitted item">
|
||||
|
||||
<!-- Only show clone panel in repository home page -->
|
||||
|
@@ -15,6 +15,13 @@
|
||||
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
|
||||
<input id="repo_name" name="repo_name" value="{{.Repository.Name}}" data-repo-name="{{.Repository.Name}}" autofocus required>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.template"}}</label>
|
||||
<div class="ui checkbox">
|
||||
<input name="template" type="checkbox" {{if .Repository.IsTemplate}}checked{{end}}>
|
||||
<label>{{.i18n.Tr "repo.template_helper"}}</label>
|
||||
</div>
|
||||
</div>
|
||||
{{if not .Repository.IsFork}}
|
||||
<div class="inline field">
|
||||
<label>{{.i18n.Tr "repo.visibility"}}</label>
|
||||
|
@@ -1226,6 +1226,13 @@
|
||||
"name": "uid",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"description": "repo owner to prioritize in the results",
|
||||
"name": "priority_owner_id",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
@@ -1239,6 +1246,12 @@
|
||||
"name": "private",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"description": "include template repositories this user has access to (defaults to true)",
|
||||
"name": "template",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "page number of results to return (1-based)",
|
||||
@@ -8786,6 +8799,11 @@
|
||||
"type": "boolean",
|
||||
"x-go-name": "Private"
|
||||
},
|
||||
"template": {
|
||||
"description": "either `true` to make this repository a template or `false` to make it a normal repository",
|
||||
"type": "boolean",
|
||||
"x-go-name": "Template"
|
||||
},
|
||||
"website": {
|
||||
"description": "a URL with more information about the repository.",
|
||||
"type": "string",
|
||||
@@ -10306,6 +10324,10 @@
|
||||
"format": "int64",
|
||||
"x-go-name": "Stars"
|
||||
},
|
||||
"template": {
|
||||
"type": "boolean",
|
||||
"x-go-name": "Template"
|
||||
},
|
||||
"updated_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
|
Reference in New Issue
Block a user