From 0bf7ed55be3f1b51db961206bda69e48184a41b7 Mon Sep 17 00:00:00 2001
From: Allen Wild <aswild@users.noreply.github.com>
Date: Mon, 25 Mar 2019 20:35:06 -0400
Subject: [PATCH] routers/repo/setting: display correct error for invalid
 mirror interval (#6429)

Set Err_Interval in the context data so that the mirror interval box is
highlighted red as expected.

Clear Err_RepoName for the mirror and advanced actions. repo_name is not
set by these forms, causing auth.validate() to set the Err_RepoName
before SettingsPost is called, which would lead to the repository name
box getting erroneously highlighted red.

Fixes: https://github.com/go-gitea/gitea/issues/6396
---
 routers/repo/setting.go | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/routers/repo/setting.go b/routers/repo/setting.go
index 853c343115..d68edb4e56 100644
--- a/routers/repo/setting.go
+++ b/routers/repo/setting.go
@@ -124,8 +124,13 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
 			return
 		}
 
+		// This section doesn't require repo_name/RepoName to be set in the form, don't show it
+		// as an error on the UI for this action
+		ctx.Data["Err_RepoName"] = nil
+
 		interval, err := time.ParseDuration(form.Interval)
 		if err != nil || (interval != 0 && interval < setting.Mirror.MinInterval) {
+			ctx.Data["Err_Interval"] = true
 			ctx.RenderWithErr(ctx.Tr("repo.mirror_interval_invalid"), tplSettingsOptions, &form)
 		} else {
 			ctx.Repo.Mirror.EnablePrune = form.EnablePrune
@@ -136,6 +141,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
 				ctx.Repo.Mirror.NextUpdateUnix = 0
 			}
 			if err := models.UpdateMirror(ctx.Repo.Mirror); err != nil {
+				ctx.Data["Err_Interval"] = true
 				ctx.RenderWithErr(ctx.Tr("repo.mirror_interval_invalid"), tplSettingsOptions, &form)
 				return
 			}
@@ -161,6 +167,10 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
 	case "advanced":
 		var units []models.RepoUnit
 
+		// This section doesn't require repo_name/RepoName to be set in the form, don't show it
+		// as an error on the UI for this action
+		ctx.Data["Err_RepoName"] = nil
+
 		for _, tp := range models.MustRepoUnits {
 			units = append(units, models.RepoUnit{
 				RepoID: repo.ID,