Newer
Older
Position int
Name string
Title string
Sentence string
MinChoices int
MaxChoices int
VoteCount int
VoteOpen bool
VotedAlready bool
VoteError string
VoterPrivateToken string
Sentence string
VoteCount int
}
const TEMPLATE_CHOICE_STR = `<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vote Électrolab - {{.Title}}</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script type="text/javascript">
function checkForm() {
{{ if not .VoteOpen }}
return false;
{{ else }}
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.");
{{ end }}
<style type="text/css">
.vote-page {
padding: 1em;
max-width:50em;
}
</style>
<div class="vote-page">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item" aria-current="page"><a href="/?private_token={{.VoterPrivateToken}}">Événements</a></li>
<li class="breadcrumb-item" aria-current="page"><a href="/votes?private_token={{.VoterPrivateToken}}">AG Électrolab 2020</a></li>
<li class="breadcrumb-item active" aria-current="page">Vote nº{{.Position}} - {{.Title}}</li>
</ol>
</nav>
{{ if .VoteError }}
<p class="alert alert-danger">
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 }}
{{ if not .VoteOpen }}
<div class="alert alert-primary">Le vote n'est pas encore ouvert. Vous pourrez <a href="?private_token={{.VoterPrivateToken}}">rafraichir</a> la page au moment de l'ouverture pour voter.</div>
<form id="answers_form" method="post" onsubmit="return checkForm();" autocomplete="off">
{{if .VoteOpen}}
Cochez
{{else}}
Vous devrez cocher
{{end}}
entre {{$.MinChoices}} et {{$.MaxChoices}} choix) :
{{if .VoteOpen}}
Cochez
{{else}}
Vous devrez cocher
{{end}}
au minimum {{$.MinChoices}} choix :
{{if .VoteOpen}}
Cochez
{{else}}
Vous devrez cocher
{{end}}
au maximum {{$.MaxChoices}} choix :
{{ else }}
Liste des choix :
{{ end }}
</label>
<div class="form-group">
{{ range .Answers }}
<div class="form-check">
<input
class="form-check-input"
{{if not $.VoteOpen}}
disabled
{{end}}
{{if .Checked}}
checked
{{end}}
type="{{ if (and (eq 1 $.MinChoices) (eq 1 $.MaxChoices)) }}radio{{else}}checkbox{{end}}"
id="answer_{{.Name}}"
name="answer"
value="{{.Name}}"
>
<label
class="form-check-label"
for="answer_{{.Name}}"
>{{.Sentence}}</label>
<button type="submit" class="btn btn-danger">Voter</button>