Просмотр исходного кода

example: Use new template package; write text/html header.

Dmitry Chestnykh 14 лет назад
Родитель
Сommit
00c7ab4fea
1 измененных файлов с 10 добавлено и 15 удалено
  1. 10 15
      example/main.go

+ 10 - 15
example/main.go

@@ -14,7 +14,7 @@ import (
 	"template"
 	"template"
 )
 )
 
 
-var formTemplate = template.MustParse(formTemplateSrc, nil)
+var formTemplate = template.Must(template.New("example").Parse(formTemplateSrc))
 
 
 func showFormHandler(w http.ResponseWriter, r *http.Request) {
 func showFormHandler(w http.ResponseWriter, r *http.Request) {
 	if r.URL.Path != "/" {
 	if r.URL.Path != "/" {
@@ -23,10 +23,8 @@ func showFormHandler(w http.ResponseWriter, r *http.Request) {
 	}
 	}
 	d := struct {
 	d := struct {
 		CaptchaId  string
 		CaptchaId  string
-		JavaScript string
 	}{
 	}{
 		captcha.New(),
 		captcha.New(),
-		formJavaScript,
 	}
 	}
 	if err := formTemplate.Execute(w, &d); err != nil {
 	if err := formTemplate.Execute(w, &d); err != nil {
 		http.Error(w, err.String(), http.StatusInternalServerError)
 		http.Error(w, err.String(), http.StatusInternalServerError)
@@ -34,6 +32,7 @@ func showFormHandler(w http.ResponseWriter, r *http.Request) {
 }
 }
 
 
 func processFormHandler(w http.ResponseWriter, r *http.Request) {
 func processFormHandler(w http.ResponseWriter, r *http.Request) {
+	w.Header().Set("Content-Type", "text/html; charset=utf-8")
 	if !captcha.VerifyString(r.FormValue("captchaId"), r.FormValue("captchaSolution")) {
 	if !captcha.VerifyString(r.FormValue("captchaId"), r.FormValue("captchaSolution")) {
 		io.WriteString(w, "Wrong captcha solution! No robots allowed!\n")
 		io.WriteString(w, "Wrong captcha solution! No robots allowed!\n")
 	} else {
 	} else {
@@ -52,7 +51,10 @@ func main() {
 	}
 	}
 }
 }
 
 
-const formJavaScript = `
+const formTemplateSrc = `<!doctype html>
+<head><title>Captcha Example</title></head>
+<body>
+<script>
 function setSrcQuery(e, q) {
 function setSrcQuery(e, q) {
 	var src  = e.src;
 	var src  = e.src;
 	var p = src.indexOf('?');
 	var p = src.indexOf('?');
@@ -84,13 +86,6 @@ function reload() {
 	setSrcQuery(document.getElementById('audio'), (new Date()).getTime());
 	setSrcQuery(document.getElementById('audio'), (new Date()).getTime());
 	return false;
 	return false;
 }
 }
-`
-
-const formTemplateSrc = `<!doctype html>
-<head><title>Captcha Example</title></head>
-<body>
-<script>
-{JavaScript}
 </script>
 </script>
 <select id="lang" onchange="changeLang()">
 <select id="lang" onchange="changeLang()">
 	<option value="en">English</option>
 	<option value="en">English</option>
@@ -98,13 +93,13 @@ const formTemplateSrc = `<!doctype html>
 </select>
 </select>
 <form action="/process" method=post>
 <form action="/process" method=post>
 <p>Type the numbers you see in the picture below:</p>
 <p>Type the numbers you see in the picture below:</p>
-<p><img id=image src="/captcha/{CaptchaId}.png" alt="Captcha image"></p>
+<p><img id=image src="/captcha/{{.CaptchaId}}.png" alt="Captcha image"></p>
 <a href="#" onclick="reload()">Reload</a> | <a href="#" onclick="playAudio()">Play Audio</a>
 <a href="#" onclick="reload()">Reload</a> | <a href="#" onclick="playAudio()">Play Audio</a>
-<audio id=audio controls style="display:none" src="/captcha/{CaptchaId}.wav" preload=none>
+<audio id=audio controls style="display:none" src="/captcha/{{.CaptchaId}}.wav" preload=none>
   You browser doesn't support audio.
   You browser doesn't support audio.
-  <a href="/captcha/download/{CaptchaId}.wav">Download file</a> to play it in the external player.
+  <a href="/captcha/download/{{.CaptchaId}}.wav">Download file</a> to play it in the external player.
 </audio>
 </audio>
-<input type=hidden name=captchaId value="{CaptchaId}"><br>
+<input type=hidden name=captchaId value="{{.CaptchaId}}"><br>
 <input name=captchaSolution>
 <input name=captchaSolution>
 <input type=submit value=Submit>
 <input type=submit value=Submit>
 </form>
 </form>