From 17fbbe97d7b4fca45d112f924191600eff52957b Mon Sep 17 00:00:00 2001
From: zeripath <art27@cantab.net>
Date: Sat, 29 Aug 2020 22:32:46 +0100
Subject: [PATCH] Do not disable commit changes button on repost (#12644)

If the user has pressed commit changes and the post has failed - do not disable
the commit changes button.

Fix #12072

Signed-off-by: Andrew Thornton <art27@cantab.net>
---
 routers/repo/editor.go          | 1 +
 templates/repo/editor/edit.tmpl | 1 +
 web_src/js/index.js             | 4 +++-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/routers/repo/editor.go b/routers/repo/editor.go
index f91ce1b462..6a3f379f6a 100644
--- a/routers/repo/editor.go
+++ b/routers/repo/editor.go
@@ -184,6 +184,7 @@ func editFilePost(ctx *context.Context, form auth.EditRepoFileForm, isNewFile bo
 	}
 
 	ctx.Data["PageIsEdit"] = true
+	ctx.Data["PageHasPosted"] = true
 	ctx.Data["IsNewFile"] = isNewFile
 	ctx.Data["RequireHighlightJS"] = true
 	ctx.Data["RequireSimpleMDE"] = true
diff --git a/templates/repo/editor/edit.tmpl b/templates/repo/editor/edit.tmpl
index af65813b33..db012728e7 100644
--- a/templates/repo/editor/edit.tmpl
+++ b/templates/repo/editor/edit.tmpl
@@ -6,6 +6,7 @@
 		<form class="ui edit form" method="post">
 			{{.CsrfTokenHtml}}
 			<input type="hidden" name="last_commit" value="{{.last_commit}}">
+			<input type="hidden" name="page_has_posted" value="{{.PageHasPosted}}">
 			<div class="ui secondary menu">
 				<div class="fitted item treepath">
 					<div class="ui breadcrumb field {{if .Err_TreePath}}error{{end}}">
diff --git a/web_src/js/index.js b/web_src/js/index.js
index 810493a7d6..a8965a437f 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -1592,7 +1592,9 @@ async function initEditor() {
   const dirtyFileClass = 'dirty-file';
 
   // Disabling the button at the start
-  $commitButton.prop('disabled', true);
+  if ($('input[name="page_has_posted"]').val() !== 'true') {
+    $commitButton.prop('disabled', true);
+  }
 
   // Registering a custom listener for the file path and the file content
   $editForm.areYouSure({