Skip to content
template_choice.go 2.39 KiB
Newer Older
Lo^2's avatar
wip
Lo^2 committed
package page_vote

import ()

type TemplateVars struct {
	Position       int
	Name           string
	Title          string
	Sentence       string
	MinChoices     int
	MaxChoices     int
	VoteOpen       bool
	VoteRecorded   bool
	Answers        []TemplateAnswer
	TotalVoteCount int
}

type TemplateAnswer struct {
	Name      string
	Sentence  string
	VoteCount int
}

const TEMPLATE_CHOICE_STR = `<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Vote Électrolab - {{.Title}}</title>
		<!--link type="text/css" rel="stylesheet" href="/css/style.css"-->
		<script type="text/javascript">
			function checkForm() {
				{{ if not .VoteOpen }}
					return false;
				{{ end }}

				var nbOfAnswers = 0;
				var answers = document.getElementsByName("answer");
				for (var i=0; i<answers.length; i++) {
					if (answers[i].checked) {
						nbOfAnswers++;
					}
				}

				if (nbOfAnswers < {{.MinChoices}}) {
					alert("Vous devez sélectionner au minimum {{.MinChoices}} réponse(s)");
					return false;
				}
				if ({{.MaxChoices}} >=0 && (nbOfAnswers > {{.MaxChoices}})) {
					alert("Vous devez sélectionner au maximum {{.MinChoices}} réponse(s)");
					return false;
				}

				return confirm("Tout vote est définitif. Cliquez sur OK pour valider le vote.");
			}
		</script>
	</head>
	<body>
		<h1>Vote nº{{.Position}} - {{.Title}}</h1>

		<h2>{{.Sentence}}</h2>

		<form id="answers_form" method="post" onsubmit="return checkForm();">
			{{ if eq 1 .MinChoices .MaxChoices }}
				{{ range .Answers }}
					<input type="radio" id="answer_{{.Name}}" name="answer" value="{{.Name}}">
					<label for="answer_{{.Name}}">{{.Sentence}}</label>
				{{ end }}
			{{ else }}
				{{ range .Answers }}
					<input type="checkbox" id="answer_{{.Name}}" name="answer" value="{{.Name}}">
					<label for="answer_{{.Name}}">{{.Sentence}}</label>
				{{ end }}
			{{ end }}

			{{ if .VoteOpen }}
				<input type="submit" value="Voter">
			{{ else if .VoteRecorded }}
				<p>Votre vote a été enregistré. Vous pourrez rafraichir la page au moment de la cloture pour voir les résultats.</p>
			{{ else }}
				<p>Le vote n'est pas encore ouvert. Vous pourrez rafraichir la page au moment de l'ouverture pour voter.</p>
			{{ end }}
		</form>

		<p class="footer">
			<p>Empreinte de l'exécutable: {{.ExeFingerprint}}</p>
			<p>Version du commit: {{.CodeCommit}}</p>
			<p>Date du commit: {{.CodeDate}}</p>
		</p>
	</body>
</html>
`