From b1cd1c067f5f5d20afc4db3731fa5cebaeed0635 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Thu, 11 Oct 2012 11:22:03 -0400
Subject: [PATCH] add cgi_overload_message

---
 IkiWiki.pm         |  8 ++++++++
 IkiWiki/Wrapper.pm | 14 ++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/IkiWiki.pm b/IkiWiki.pm
index a7dc6b36b..52da3c112 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -126,6 +126,14 @@ sub getsetup () {
 		safe => 1,
 		rebuild => 0,
 	},
+	cgi_overload_message => {
+		type => "string",
+		default => '',
+		example => "Please wait",
+		description => "message to display when overloaded (may contain html)",
+		safe => 1,
+		rebuild => 0,
+	},
 	rcs => {
 		type => "string",
 		default => '',
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index 0855a3ba2..06be36dfc 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -105,6 +105,14 @@ EOF
 			my $i=int($config{cgi_overload_delay});
 			$pre_exec.="#define CGI_OVERLOAD_DELAY $i\n"
 				if $i > 0;
+			my $msg=gettext("Please wait");
+			$msg=~s/"/\\"/g;
+			$pre_exec.='#define CGI_PLEASE_WAIT_TITLE "'.$msg."\"\n";
+			if (defined $config{cgi_overload_message} && length $config{cgi_overload_message}) {
+				$msg=$config{cgi_overload_message};
+				$msg=~s/"/\\"/g;
+			}
+			$pre_exec.='#define CGI_PLEASE_WAIT_BODY "'.$msg."\"\n";
 		}
 		$pre_exec.=<<"EOF";
 	lockfd=open("$config{wikistatedir}/cgilock", O_CREAT | O_RDWR, 0666);
@@ -116,9 +124,11 @@ EOF
 				set_cgilock_fd(lockfd);
 			}
 			else {
-				printf("Content-Type: text/html\\nRefresh: %i; URL=%s\\n\\n<html><head><title>please wait...</title><head><body><p>Please wait ...</p></body></html>",
+				printf("Content-Type: text/html\\nRefresh: %i; URL=%s\\n\\n<html><head><title>%s</title><head><body><p>%s</p></body></html>",
 					CGI_OVERLOAD_DELAY,
-					getenv("REQUEST_URI"));
+					getenv("REQUEST_URI"),
+					CGI_PLEASE_WAIT_TITLE,
+					CGI_PLEASE_WAIT_BODY);
 				exit(0);
 			}
 		}
-- 
2.39.5