diff options
author | Galen Guyer <galen@galenguyer.com> | 2022-08-10 12:18:21 -0400 |
---|---|---|
committer | Galen Guyer <galen@galenguyer.com> | 2022-08-10 12:18:21 -0400 |
commit | f3d7edb8ec60b3cae9a548a1177c132b52a51873 (patch) | |
tree | f7225fce40ff787d53c7c6a4d31f322787e14b88 | |
parent | be595a8507b91034347382727e8fdc8be662debe (diff) |
Allow for custom vote options
-rw-r--r-- | main.go | 6 | ||||
-rw-r--r-- | templates/create.tmpl | 24 |
2 files changed, 27 insertions, 3 deletions
@@ -5,6 +5,7 @@ import ( "net/http" "os" "sort" + "strings" "time" csh_auth "github.com/computersciencehouse/csh-auth" @@ -109,6 +110,11 @@ func main() { poll.Options = []string{"Pass", "Fail/Conditional", "Abstain"} case "fail-conditional": poll.Options = []string{"Fail", "Conditional", "Abstain"} + case "custom": + poll.Options = []string{} + for _, opt := range strings.Split(c.PostForm("customOptions"), ",") { + poll.Options = append(poll.Options, strings.TrimSpace(opt)) + } case "pass-fail": default: poll.Options = []string{"Pass", "Fail", "Abstain"} diff --git a/templates/create.tmpl b/templates/create.tmpl index 6f7cfed..79f07b8 100644 --- a/templates/create.tmpl +++ b/templates/create.tmpl @@ -5,14 +5,14 @@ <!-- <link rel="stylesheet" href="https://themeswitcher.csh.rit.edu/api/get" /> --> <link rel="stylesheet" href="https://assets.csh.rit.edu/csh-material-bootstrap/4.3.1/dist/csh-material-bootstrap.min.css" media="screen"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - </head> + </head> <body> <nav class="navbar navbar-expand-lg navbar-dark bg-primary"> <div class="container"> <a class="navbar-brand" href="/">Vote</a> <div class="nav navbar-nav ml-auto"> <div class="navbar-user"> - <img src="https://profiles.csh.rit.edu/image/{{ .Username }}" /> + <img alt="User profile photo" src="https://profiles.csh.rit.edu/image/{{ .Username }}" /> <span class="text-light">{{ .FullName }}</span> <a href="/auth/logout" style="color: #c3c3c3;"><i>(logout)</i></a> </div> @@ -39,16 +39,34 @@ /> </div> <div class="form-group"> - <select name="options" class="form-control"> + <select name="options" id="options" onChange="onOptionsChange()" class="form-control"> <option value="pass_fail" selected>Pass/Fail</option> <option value="pass-fail-conditional"> Pass/Fail or Conditional </option> <option value="fail-conditional">Fail/Conditional</option> + <option value="custom">Custom</option> </select> </div> + <div style="display:none;" id="customOptions" class="form-group"> + <input + type="text" + name="customOptions" + class="form-control" + placeholder="Custom Options (Comma-separated)" + /> + </div> <input type="submit" class="btn btn-primary" value="Create" /> </form> </div> + <script> + function onOptionsChange() { + if (document.getElementById("options").value == "custom") { + document.getElementById("customOptions").style.display = null; + } else { + document.getElementById("customOptions").style.display = "none"; + } + } + </script> </body> </html> |