summaryrefslogtreecommitdiffstats
path: root/routers/repo/setting.go
diff options
context:
space:
mode:
authorkolaente <konrad@kola-entertainments.de>2019-01-23 19:58:38 +0100
committertechknowlogick <matti@mdranta.net>2019-01-23 13:58:38 -0500
commit0b510725c97452bac57ff0080df10f6177aa2a6e (patch)
treeb9405cf290057698b32cf0acacc0d627f223ed6d /routers/repo/setting.go
parent6ad834e236756e7ba3de27e59681080a7ec4fcf1 (diff)
downloadgitea-0b510725c97452bac57ff0080df10f6177aa2a6e.tar.gz
gitea-0b510725c97452bac57ff0080df10f6177aa2a6e.zip
Feature: Archive repos (#5009)
Diffstat (limited to 'routers/repo/setting.go')
-rw-r--r--routers/repo/setting.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/routers/repo/setting.go b/routers/repo/setting.go
index 2bb57a0e47..e74cfe2171 100644
--- a/routers/repo/setting.go
+++ b/routers/repo/setting.go
@@ -354,6 +354,47 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
ctx.Flash.Success(ctx.Tr("repo.settings.wiki_deletion_success"))
ctx.Redirect(ctx.Repo.RepoLink + "/settings")
+ case "archive":
+ if !ctx.Repo.IsOwner() {
+ ctx.Error(403)
+ return
+ }
+
+ if repo.IsMirror {
+ ctx.Flash.Error(ctx.Tr("repo.settings.archive.error_ismirror"))
+ ctx.Redirect(ctx.Repo.RepoLink + "/settings")
+ return
+ }
+
+ if err := repo.SetArchiveRepoState(true); err != nil {
+ log.Error(4, "Tried to archive a repo: %s", err)
+ ctx.Flash.Error(ctx.Tr("repo.settings.archive.error"))
+ ctx.Redirect(ctx.Repo.RepoLink + "/settings")
+ return
+ }
+
+ ctx.Flash.Success(ctx.Tr("repo.settings.archive.success"))
+
+ log.Trace("Repository was archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
+ ctx.Redirect(ctx.Repo.RepoLink + "/settings")
+ case "unarchive":
+ if !ctx.Repo.IsOwner() {
+ ctx.Error(403)
+ return
+ }
+
+ if err := repo.SetArchiveRepoState(false); err != nil {
+ log.Error(4, "Tried to unarchive a repo: %s", err)
+ ctx.Flash.Error(ctx.Tr("repo.settings.unarchive.error"))
+ ctx.Redirect(ctx.Repo.RepoLink + "/settings")
+ return
+ }
+
+ ctx.Flash.Success(ctx.Tr("repo.settings.unarchive.success"))
+
+ log.Trace("Repository was un-archived: %s/%s", ctx.Repo.Owner.Name, repo.Name)
+ ctx.Redirect(ctx.Repo.RepoLink + "/settings")
+
default:
ctx.NotFound("", nil)
}