Merge pull request #2745 from joshfng/delete-wiki-option

Repo setting to delete and disable wiki
This commit is contained in:
Unknwon 2016-03-03 23:04:35 -05:00
commit 1cbc5b49e3
5 changed files with 777 additions and 909 deletions

View File

@ -595,6 +595,9 @@ settings.transfer_desc = Transfer this repository to another user or to an organ
settings.transfer_notices_1 = - You will lose access if new owner is a individual user. settings.transfer_notices_1 = - You will lose access if new owner is a individual user.
settings.transfer_notices_2 = - You will conserve access if new owner is an organization and if you're one of the owners. settings.transfer_notices_2 = - You will conserve access if new owner is an organization and if you're one of the owners.
settings.transfer_form_title = Please enter following information to confirm your operation: settings.transfer_form_title = Please enter following information to confirm your operation:
settings.wiki-delete = Erase Wiki Data
settings.wiki-delete_desc = Once you erase wiki data there is no going back. Please be certain.
settings.wiki-delete_notices_1 = This will delete and disable the wiki for %s
settings.delete = Delete This Repository settings.delete = Delete This Repository
settings.delete_desc = Once you delete a repository, there is no going back. Please be certain. settings.delete_desc = Once you delete a repository, there is no going back. Please be certain.
settings.delete_notices_1 = - This operation <strong>CANNOT</strong> be undone. settings.delete_notices_1 = - This operation <strong>CANNOT</strong> be undone.

View File

@ -241,6 +241,17 @@ func (repo *Repository) ComposeMetas() map[string]string {
return repo.ExternalMetas return repo.ExternalMetas
} }
func DeleteWiki(repo *Repository) {
repo.DeleteWiki()
}
func (repo *Repository) DeleteWiki() {
wikiPaths := []string{repo.WikiPath(), repo.LocalWikiPath()}
for _, wikiPath := range wikiPaths {
RemoveAllWithNotice("Delete repository wiki", wikiPath)
}
}
// GetAssignees returns all users that have write access of repository. // GetAssignees returns all users that have write access of repository.
func (repo *Repository) GetAssignees() (_ []*User, err error) { func (repo *Repository) GetAssignees() (_ []*User, err error) {
if err = repo.GetOwner(); err != nil { if err = repo.GetOwner(); err != nil {
@ -1335,10 +1346,7 @@ func DeleteRepository(uid, repoID int64) error {
repoPath := repo.repoPath(sess) repoPath := repo.repoPath(sess)
RemoveAllWithNotice("Delete repository files", repoPath) RemoveAllWithNotice("Delete repository files", repoPath)
wikiPaths := []string{repo.WikiPath(), repo.LocalWikiPath()} repo.DeleteWiki()
for _, wikiPath := range wikiPaths {
RemoveAllWithNotice("Delete repository wiki", wikiPath)
}
// Remove attachment files. // Remove attachment files.
for i := range attachmentPaths { for i := range attachmentPaths {

File diff suppressed because one or more lines are too long

View File

@ -226,6 +226,32 @@ func SettingsPost(ctx *middleware.Context, form auth.RepoSettingForm) {
ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success")) ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success"))
ctx.Redirect(ctx.Repo.Owner.DashboardLink()) ctx.Redirect(ctx.Repo.Owner.DashboardLink())
case "delete-wiki":
if repo.Name != form.RepoName {
ctx.RenderWithErr(ctx.Tr("form.enterred_invalid_repo_name"), SETTINGS_OPTIONS, nil)
return
}
if ctx.Repo.Owner.IsOrganization() {
if !ctx.Repo.Owner.IsOwnedBy(ctx.User.Id) {
ctx.Error(404)
return
}
}
models.DeleteWiki(repo)
log.Trace("Repository wiki deleted: %s/%s", ctx.Repo.Owner.Name, repo.Name)
repo.EnableWiki = false
if err := models.UpdateRepository(repo, false); err != nil {
ctx.Handle(500, "UpdateRepository", err)
return
}
log.Trace("Repository advanced settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))
ctx.Redirect(ctx.Repo.RepoLink + "/settings")
} }
} }

View File

@ -163,6 +163,20 @@
</div> </div>
</div> </div>
{{if .Repository.EnableWiki}}
<div class="ui divider"></div>
<div class="item">
<div class="ui right">
<button class="ui basic red show-modal button" data-modal="#delete-wiki-modal">{{.i18n.Tr "repo.settings.wiki-delete"}}</button>
</div>
<div>
<h5>{{.i18n.Tr "repo.settings.wiki-delete"}}</h5>
<p>{{.i18n.Tr "repo.settings.wiki-delete_desc"}}</p>
</div>
</div>
{{end}}
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="item"> <div class="item">
@ -282,4 +296,36 @@
</form> </form>
</div> </div>
</div> </div>
<div class="ui small modal" id="delete-wiki-modal">
<div class="header">
{{.i18n.Tr "repo.settings.wiki-delete"}}
</div>
<div class="content">
<div class="ui warning message text left">
{{.i18n.Tr "repo.settings.delete_notices_1" | Safe}}<br>
{{.i18n.Tr "repo.settings.wiki-delete_notices_1" .Repository.Name | Safe}}
</div>
<form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}}
<input type="hidden" name="action" value="delete-wiki">
<div class="field">
<label>
{{.i18n.Tr "repo.settings.transfer_form_title"}}
<span class="text red">{{.Repository.Name}}</span>
</label>
</div>
<div class="required field">
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input id="repo_name" name="repo_name" required>
</div>
<div class="text right actions">
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
<button class="ui red button">{{.i18n.Tr "repo.settings.confirm_delete"}}</button>
</div>
</form>
</div>
</div>
{{template "base/footer" .}} {{template "base/footer" .}}