Skip to content
template_choice.go 2.67 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
Lo^2's avatar
Lo^2 committed
	VoteCount      int
Lo^2's avatar
wip
Lo^2 committed
	VoteOpen       bool
Lo^2's avatar
Lo^2 committed
	VotedAlready   bool
	VoteError      string
	VoterPublicId  string
	VoterFullname  string
Lo^2's avatar
wip
Lo^2 committed
	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>

Lo^2's avatar
Lo^2 committed
		{{ if .VoteError }}
			<p class="alertmsg">
				Votre vote n'a pas pu être pris en compte!<br/>
				Erreur lors de la procédure: {{.VoteError}}.
			</p>
		{{ end}}

		{{ if .VotedAlready }}
			<p>Votre vote a été enregistré. Vous pourrez rafraichir la page au moment de la cloture pour voir les résultats.</p>
		{{ else }}
			<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 }}
Lo^2's avatar
wip
Lo^2 committed
				{{ end }}

Lo^2's avatar
Lo^2 committed
				{{ if .VoteOpen }}
					<input type="submit" value="Voter">
				{{ else }}
					<p>Le vote n'est pas encore ouvert. Vous pourrez rafraichir la page au moment de l'ouverture pour voter.</p>
				{{ end }}
			</form>
		{{ end }}
Lo^2's avatar
wip
Lo^2 committed

		<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>
`