pull/10/head
Hunter Long 2018-06-30 15:22:56 -07:00
parent 4ed435fbc0
commit 7014fff3fc
14 changed files with 435 additions and 221 deletions

View File

@ -18,7 +18,7 @@ services:
env:
global:
- VERSION=0.28.1
- VERSION=0.28.2
- DB_HOST=localhost
- DB_USER=travis
- DB_PASS=

View File

@ -1,6 +1,6 @@
FROM alpine:latest
ENV VERSION=v0.28.1
ENV VERSION=v0.28.2
RUN apk --no-cache add libstdc++ ca-certificates
RUN wget -q https://github.com/hunterlong/statup/releases/download/$VERSION/statup-linux-alpine.tar.gz && \

View File

@ -27,7 +27,7 @@ func PluginsHandler(w http.ResponseWriter, r *http.Request) {
//CoreApp.PluginFields = pluginFields
fmt.Println(core.CoreApp.Communications)
ExecuteResponse(w, r, "plugins.html", core.CoreApp)
ExecuteResponse(w, r, "settings.html", core.CoreApp)
}
func SaveSettingsHandler(w http.ResponseWriter, r *http.Request) {

View File

@ -1,3 +1,10 @@
/* Index Page */
/* Status Container */
/* Button Colors */
/* Footer Settings */
/* Global Settings */
/* Mobile Settings */
/* Mobile Service Container */
HTML, BODY {
background-color: #fcfcfc; }
@ -6,12 +13,15 @@ HTML, BODY {
padding-bottom: 20px;
max-width: 860px; }
H1 {
.header-title {
color: #464646; }
H5 {
.header-desc {
color: #939393; }
.btn {
border-radius: 0.2rem; }
.online_list .badge {
margin-top: 0.2rem; }
@ -51,7 +61,8 @@ H5 {
padding: 17px 10px; }
.lower_canvas SPAN {
font-size: 1rem; }
font-size: 1rem;
color: #fff; }
.footer {
text-decoration: none;
@ -64,21 +75,24 @@ H5 {
.footer A:HOVER {
color: #6d6d6d; }
.online_badge {
color: #fff;
background-color: #35b317; }
.badge {
color: white;
border-radius: 0.2rem; }
.offline_badge {
color: #fff;
background-color: #c51919; }
.btn-group {
height: 25px; }
.btn-group A {
padding: 0.1rem .75rem;
font-size: 0.8rem; }
.progress {
margin-top: -20px;
margin-left: -20px;
margin-bottom: 15px;
width: calc(100% + 40px);
height: 3px;
border-radius: 0; }
.card-body .badge {
color: #fff; }
.nav-pills .nav-link {
border-radius: 0.2rem; }
.form-control {
border-radius: 0.2rem; }
.card {
background-color: #ffffff;
@ -98,14 +112,44 @@ H5 {
.btn-primary {
background-color: #3e9bff;
border-color: #007bff;
color: #ffffff; }
border-color: #006fe6;
color: white; }
.btn-primary.dyn-dark {
background-color: #32a825 !important;
border-color: #2c9320 !important; }
.btn-primary.dyn-light {
background-color: #75de69 !important;
border-color: #88e37e !important; }
.btn-success {
background-color: #47d337; }
.btn-success.dyn-dark {
background-color: #32a825 !important;
border-color: #2c9320 !important; }
.btn-success.dyn-light {
background-color: #75de69 !important;
border-color: #88e37e !important; }
.btn-danger {
background-color: #dd3545; }
.btn-danger.dyn-dark {
background-color: #b61f2d !important;
border-color: #a01b28 !important; }
.btn-danger.dyn-light {
background-color: #e66975 !important;
border-color: #e97f89 !important; }
.bg-success {
background-color: #47d337 !important; }
.bg-danger {
background-color: #dd3545 !important; }
.bg-success .dyn-dark {
background-color: #35b027 !important; }
.bg-danger .dyn-dark {
background-color: #bf202f !important; }
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
background-color: #13a00d; }
@ -145,7 +189,62 @@ H5 {
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }
@keyframes pulse_animation {
0% {
transform: scale(1); }
30% {
transform: scale(1); }
40% {
transform: scale(1.02); }
50% {
transform: scale(1); }
60% {
transform: scale(1); }
70% {
transform: scale(1.05); }
80% {
transform: scale(1); }
100% {
transform: scale(1); } }
.pulse {
animation-name: pulse_animation;
animation-duration: 1500ms;
transform-origin: 70% 70%;
animation-iteration-count: infinite;
animation-timing-function: linear; }
@keyframes glow-grow {
0% {
opacity: 0;
transform: scale(1); }
80% {
opacity: 1; }
100% {
transform: scale(2);
opacity: 0; } }
.pulse-glow {
animation-name: glow-grown;
animation-duration: 100ms;
transform-origin: 70% 30%;
animation-iteration-count: infinite;
animation-timing-function: linear; }
.pulse-glow:before,
.pulse-glow:after {
position: absolute;
content: '';
height: 0.5rem;
width: 1.75rem;
top: 1.2rem;
right: 2.15rem;
border-radius: 0;
box-shadow: 0 0 7px #47d337;
animation: glow-grow 2s ease-out infinite; }
@media (max-width: 767px) {
HTML, BODY {
background-color: #fcfcfc; }
.sm-container {
margin-top: 40px !important;
padding: 0 !important; }
@ -162,26 +261,6 @@ H5 {
width: 100%;
margin-bottom: 0; }
.card-body {
font-size: 6pt;
padding: 5px 5px; }
.lg_number {
font-size: 1.5rem; }
.stats_area {
margin-top: 35px !important;
margin-bottom: 35px !important; }
.stats_area .col-4 {
padding-left: 0;
padding-right: 0; }
.lower_canvas SPAN {
font-size: 0.9rem;
float: left;
color: #47d337; }
.btn-sm {
line-height: 0.9rem;
font-size: 0.65rem; }
@ -192,7 +271,25 @@ H5 {
.card {
border: 0;
border-radius: 0; }
border-radius: 0rem;
padding: 0;
background-color: #ffffff; }
.card-body {
font-size: 6pt;
padding: 5px 5px; }
.lg_number {
font-size: 1.5rem; }
.stats_area {
margin-top: 1.5rem !important;
margin-bottom: 1.5rem !important; }
.stats_area .col-4 {
padding-left: 0;
padding-right: 0;
font-size: 0.6rem; }
.list-group-item {
border-top: 1px solid #e4e4e4;

View File

@ -1,7 +1,7 @@
{
"version": 3,
"mappings": "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",
"sources": ["../scss/base.scss","../scss/variables.scss"],
"mappings": "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",
"sources": ["../scss/variables.scss","../scss/base.scss","../scss/mobile.scss"],
"names": [],
"file": "base.css"
}

View File

@ -11,14 +11,19 @@ HTML,BODY {
max-width: $max-width;
}
H1 {
.header-title {
color: $title-color;
}
H5 {
.header-desc {
color: $description-color;
}
.btn {
border-radius: $global-border-radius;
}
.online_list .badge {
margin-top: 0.2rem;
}
@ -67,6 +72,7 @@ H5 {
.lower_canvas SPAN {
font-size: 1rem;
color: $service-description-color
}
.footer {
@ -83,23 +89,30 @@ H5 {
color: #6d6d6d;
}
.online_badge {
color: #fff;
background-color: #35b317;
.badge {
color: white;
border-radius: $global-border-radius;
}
.offline_badge {
color: #fff;
background-color: #c51919;
.btn-group {
height: 25px;
& A {
padding: 0.1rem .75rem;
font-size: 0.8rem;
}
}
.progress {
margin-top: -20px;
margin-left: -20px;
margin-bottom: 15px;
width: calc(100% + 40px);
height: 3px;
border-radius: 0;
.card-body .badge {
color: #fff;
}
.nav-pills .nav-link {
border-radius: $global-border-radius;
}
.form-control {
border-radius: $global-border-radius;
}
.card {
@ -122,18 +135,68 @@ H5 {
width: 100%;
}
@mixin dynamic-color-hov($color) {
&.dyn-dark {
background-color: darken($color, 12%) !important;
border-color: darken($color, 17%) !important;
}
&.dyn-dark:HOVER {
background-color: darken($color, 17%) !important;
border-color: darken($color, 20%) !important;
}
&.dyn-light {
background-color: lighten($color, 12%) !important;
border-color: lighten($color, 17%) !important;
}
&.dyn-light:HOVER {
background-color: lighten($color, 17%) !important;
border-color: lighten($color, 20%) !important;
}
}
@mixin dynamic-color($color) {
&.dyn-dark {
background-color: darken($color, 12%) !important;
border-color: darken($color, 17%) !important;
}
&.dyn-light {
background-color: lighten($color, 12%) !important;
border-color: lighten($color, 17%) !important;
}
}
.btn-primary {
background-color: $button-background-color;
border-color: $button-border-color;
color: $button-color;
background-color: $primary-color;
border-color: darken($primary-color, 17%);
color: white;
@include dynamic-color($success-color);
}
.btn-success {
background-color: $success-color;
@include dynamic-color($success-color);
}
.btn-danger {
background-color: $danger-color;
@include dynamic-color($danger-color);
}
.bg-success {
background-color: $success-color !important;
}
.bg-danger {
background-color: $danger-color !important;
}
.bg-success .dyn-dark {
background-color: darken($success-color, 10%) !important;
}
.bg-danger .dyn-dark {
background-color: darken($danger-color, 10%) !important;
}
.nav-pills .nav-link.active, .nav-pills .show>.nav-link {
@ -179,85 +242,59 @@ H5 {
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
@keyframes pulse_animation {
0% { transform: scale(1); }
30% { transform: scale(1); }
40% { transform: scale(1.02); }
50% { transform: scale(1); }
60% { transform: scale(1); }
70% { transform: scale(1.05); }
80% { transform: scale(1); }
100% { transform: scale(1); }
}
@media (max-width: 767px) {
.pulse {
animation-name: pulse_animation;
animation-duration: 1500ms;
transform-origin:70% 70%;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
.sm-container {
margin-top: 40px !important;
padding: 0 !important;
}
.list-group-item H5 {
font-size: 0.9rem;
}
@keyframes glow-grow {
0% {
opacity: 0;
transform: scale(1);
}
80% {
opacity: 1;
}
100% {
transform: scale(2);
opacity: 0;
}
}
.pulse-glow {
animation-name: glow-grown;
animation-duration: 100ms;
transform-origin: 70% 30%;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
.container {
padding: 0 !important;
}
.pulse-glow:before,
.pulse-glow:after {
position: absolute;
content: '';
height: 0.5rem;
width: 1.75rem;
top: 1.2rem;
right: 2.15rem;
border-radius: 0;
box-shadow: 0 0 7px #47d337;
animation: glow-grow 2s ease-out infinite;
}
.navbar {
margin-left: 0px;
margin-top: 0px;
width: 100%;
margin-bottom: 0;
}
.card-body {
font-size: 6pt;
padding: 5px 5px;
}
.lg_number {
font-size: 1.5rem;
}
.stats_area {
margin-top: 35px !important;
margin-bottom: 35px !important;
}
.stats_area .col-4 {
padding-left: 0;
padding-right: 0;
}
.lower_canvas SPAN {
font-size: 0.9rem;
float: left;
color: $service-description-color;
}
.btn-sm {
line-height: 0.9rem;
font-size: 0.65rem;
}
.full-col-12 {
padding-left: 0px;
padding-right: 0px;
}
.card {
border: 0;
border-radius: 0;
}
.list-group-item {
border-top: 1px solid #e4e4e4;
border: 0px;
}
.list-group-item:first-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.list-group-item:last-child {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.list-group-item P {
font-size: 0.7rem;
}
}
@import 'mobile';

83
source/scss/mobile.scss Normal file
View File

@ -0,0 +1,83 @@
@media (max-width: 767px) {
HTML,BODY {
background-color: $sm-background-color;
}
.sm-container {
margin-top: 40px !important;
padding: 0 !important;
}
.list-group-item H5 {
font-size: 0.9rem;
}
.container {
padding: 0 !important;
}
.navbar {
margin-left: 0px;
margin-top: 0px;
width: 100%;
margin-bottom: 0;
}
.btn-sm {
line-height: 0.9rem;
font-size: 0.65rem;
}
.full-col-12 {
padding-left: 0px;
padding-right: 0px;
}
.card {
border: 0;
border-radius: $sm-border-radius;
padding: $sm-padding;
background-color: $sm-service-background;
}
.card-body {
font-size: 6pt;
padding: 5px 5px;
}
.lg_number {
font-size: $sm-service-stats-size;
}
.stats_area {
margin-top: 1.5rem !important;
margin-bottom: 1.5rem !important;
}
.stats_area .col-4 {
padding-left: 0;
padding-right: 0;
font-size: 0.6rem;
}
.list-group-item {
border-top: 1px solid #e4e4e4;
border: 0px;
}
.list-group-item:first-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.list-group-item:last-child {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.list-group-item P {
font-size: 0.7rem;
}
}

View File

@ -1,23 +1,36 @@
/* Index Page */
$background-color: #fcfcfc;
$max-width: 860px;
$title-color: #464646;
$description-color: #939393;
/* Status Container */
$service-background: #ffffff;
$service-border: 1px solid rgba(0,0,0,.125);
$service-title: #444444;
$success-color: #47d337;
$danger-color: #dd3545;
$footer-text-color: #8d8d8d;
$service-stats-color: #47d337;
$service-description-color: #47d337;
$service-description-color: #fff;
$service-stats-size: 2.3rem;
$nav-tab-color: #13a00d;
/* Button Colors */
$success-color: #47d337;
$danger-color: #dd3545;
$primary-color: #3e9bff;
$button-color: #ffffff;
$button-background-color: #3e9bff;
$button-border-color: #007bff;
/* Footer Settings */
$footer-text-color: #8d8d8d;
$nav-tab-color: #13a00d;
$footer-display: block;
/* Global Settings */
$global-border-radius: 0.2rem;
/* Mobile Settings */
$sm-background-color: #fcfcfc;
$sm-border-radius: 0rem;
/* Mobile Service Container */
$sm-service-background: #ffffff;
$sm-padding: 0;
$sm-service-stats-size: 1.5rem;

View File

@ -53,7 +53,6 @@
{{ end }}
</div>
<h3>Latest Failures</h3>
{{ range .Services }}
@ -74,7 +73,7 @@
{{ end }}
{{ end }}
</div>
</div>

View File

@ -18,10 +18,10 @@
<div class="container col-md-7 col-sm-12 mt-2 sm-container">
<h1 class="col-12 text-center mb-4 mt-sm-3">{{.Core.Name}}</h1>
<h1 class="col-12 text-center mb-4 mt-sm-3 header-title">{{.Core.Name}}</h1>
{{ if .Core.Description }}
<h5 class="col-12 text-center mb-5 text-muted">{{ .Core.Description }}</h5>
<h5 class="col-12 text-center mb-5 header-desc">{{ .Core.Description }}</h5>
{{ end }}
<div class="col-12 full-col-12 mb-5">
@ -30,9 +30,9 @@
<a href="#" class="service_li list-group-item list-group-item-action {{if not .Online}}bg-danger text-white{{ end }}" data-id="{{.Id}}">
{{ .Name }}
{{if .Online}}
<span class="badge online_badge float-right">ONLINE</span>
<span class="badge bg-success float-right pulse-glow">ONLINE</span>
{{ else }}
<span class="badge bg-white text-black-50 float-right">OFFLINE</span>
<span class="badge bg-white text-black-50 float-right pulse">OFFLINE</span>
{{end}}
</a>
{{ end }}
@ -50,9 +50,9 @@
<h4 class="mt-3"><a href="/service/{{.Id}}"{{if not .Online}} class="text-danger"{{end}}>{{ .Name }}</a>
{{if .Online}}
<span class="badge online_badge float-right">ONLINE</span>
<span class="badge bg-success float-right">ONLINE</span>
{{ else }}
<span class="badge offline_badge float-right">OFFLINE</span>
<span class="badge bg-danger float-right pulse">OFFLINE</span>
{{end}}</h4>
<div class="row stats_area mt-5 mb-5">
@ -82,8 +82,8 @@
{{ end }}
<div class="lower_canvas full-col-12 text-white{{if not .Online}} bg-danger{{end}}">
<div class="col-12">
<span>{{.SmallText}}</span>
<a href="/service/{{ .Id }}" class="btn {{if .Online}}btn-success{{else}}btn-danger{{end}} btn-sm float-right">View Service</a>
<span class="col-10 d-none d-md-inline">{{.SmallText}}</span>
<a href="/service/{{ .Id }}" class="btn {{if .Online}}btn-success{{else}}btn-danger{{end}} btn-sm float-right col-sm-4 col-md-2 dyn-dark">View Service</a>
</div>
</div>
</div>

View File

@ -34,17 +34,6 @@
<input type="password" name="password" class="form-control" id="inputPassword3" placeholder="Password">
</div>
</div>
<div class="form-group row">
<div class="col-sm-2"></div>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck1">
<label class="form-check-label" for="gridCheck1">
Remember this computer
</label>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary btn-block d-block d-md-none">Sign in</button>

View File

@ -20,16 +20,16 @@
<div class="col-12 mb-4">
{{if .Online }}
<span class="mt-2 mb-3 text-white d-md-none btn bg-success d-block d-md-none">ONLINE</span>
<span class="mt-3 mb-3 text-white d-md-none btn bg-success d-block d-md-none">ONLINE</span>
{{ else }}
<span class="mt-2 mb-3 text-white d-md-none btn bg-danger d-block d-md-none">OFFLINE</span>
<span class="mt-3 mb-3 text-white d-md-none btn bg-danger d-block d-md-none">OFFLINE</span>
{{end}}
<h4 class="mt-2">{{ .Name }}
{{if .Online }}
<span class="badge online_badge float-right d-none d-md-block">ONLINE</span>
<span class="badge bg-success float-right d-none d-md-block">ONLINE</span>
{{ else }}
<span class="badge offline_badge float-right d-none d-md-block">OFFLINE</span>
<span class="badge bg-danger float-right d-none d-md-block">OFFLINE</span>
{{end}}</h4>
<div class="row stats_area mt-5 mb-5">
@ -159,33 +159,28 @@
<div class="col-12 mt-4">
<h3>Service Checkins</h3>
{{ range .Checkins }}
<h5>Check #{{.Id}} <span class="badge online_badge float-right">Checked in {{.Ago}}</span></h5>
<input type="text" class="form-control" value="https://domainhere.com/api/checkin/{{.Api}}">
</div>
{{ end }}
<form action="/service/{{.Id}}/checkin" method="POST">
<div class="form-group row">
<label for="service_name" class="col-sm-4 col-form-label">Check Interval (in seconds)</label>
<div class="col-sm-8">
<div class="col-md-6 col-sm-12">
<input type="number" name="name" class="form-control" id="checkin_interval" value="30" placeholder="Name">
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-success d-none d-md-block float-right">Save Checkin</button>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-success">Save Checkin</button>
<button type="submit" class="btn btn-success d-block d-md-none btn-block">Save Checkin</button>
</div>
</div>
</form>
</div>
{{end}}

View File

@ -18,7 +18,9 @@
{{template "nav"}}
<div class="row">
<div class="col-12">
<div class="row">
<div class="col-md-3 col-sm-12">
@ -43,36 +45,35 @@
<form method="POST" action="/settings">
<div class="form-group">
<label for="formGroupExampleInput">Project Name</label>
<input type="text" name="project" class="form-control" value="{{ .Name }}" id="formGroupExampleInput" placeholder="Great Uptime">
<label for="project">Project Name</label>
<input type="text" name="project" class="form-control" value="{{ .Name }}" id="project" placeholder="Great Uptime">
</div>
<div class="form-group">
<label for="formGroupExampleInput">Project Description</label>
<input type="text" name="description" class="form-control" value="{{ .Description }}" id="formGroupExampleInput" placeholder="Great Uptime">
<label for="description">Project Description</label>
<input type="text" name="description" class="form-control" value="{{ .Description }}" id="description" placeholder="Great Uptime">
</div>
<div class="form-group">
<label for="formGroupExampleInput">Domain</label>
<input type="text" name="domain" class="form-control" value="{{ .Domain }}" id="formGroupExampleInput">
<label for="domain">Domain</label>
<input type="text" name="domain" class="form-control" value="{{ .Domain }}" id="domain">
</div>
<div class="form-group">
<label for="formGroupExampleInput">Custom Footer</label>
<textarea rows="4" name="footer" class="form-control" id="formGroupExampleInput">{{ .Footer }}</textarea>
<label for="footer">Custom Footer</label>
<textarea rows="4" name="footer" class="form-control" id="footer">{{ .Footer }}</textarea>
</div>
<button type="submit" class="btn btn-primary btn-block">Save Settings</button>
<div class="form-group">
<label for="formGroupExampleInput">API Key</label>
<input type="text" name="description" class="form-control" value="{{ .ApiKey }}" id="formGroupExampleInput" readonly>
<div class="form-group mt-3">
<label for="api_key">API Key</label>
<input type="text" class="form-control" value="{{ .ApiKey }}" id="api_key" readonly>
</div>
<div class="form-group">
<label for="formGroupExampleInput">API Secret</label>
<input type="text" name="description" class="form-control" value="{{ .ApiSecret }}" id="formGroupExampleInput" readonly>
<label for="api_secret">API Secret</label>
<input type="text" class="form-control" value="{{ .ApiSecret }}" id="api_secret" readonly>
</div>
</form>
@ -112,33 +113,33 @@
<form method="POST" action="/settings/{{ .Method }}">
<div class="form-group">
<label for="formGroupExampleInput">SMTP Host</label>
<input type="text" name="host" class="form-control" value="{{ .Host }}" id="formGroupExampleInput" placeholder="Great Uptime">
<label for="host">SMTP Host</label>
<input type="text" name="host" class="form-control" value="{{ .Host }}" id="host" placeholder="Great Uptime">
</div>
<div class="form-group">
<label for="formGroupExampleInput">SMTP Username</label>
<input type="text" name="username" class="form-control" value="{{ .Username }}" id="formGroupExampleInput" placeholder="Great Uptime">
<label for="username">SMTP Username</label>
<input type="text" name="username" class="form-control" value="{{ .Username }}" id="username" placeholder="Great Uptime">
</div>
<div class="form-group">
<label for="formGroupExampleInput">SMTP Password</label>
<input type="password" name="password" class="form-control" value="{{ .Password }}" id="formGroupExampleInput">
<label for="password">SMTP Password</label>
<input type="password" name="password" class="form-control" value="{{ .Password }}" id="password">
</div>
<div class="form-group">
<label for="formGroupExampleInput">SMTP Port</label>
<input type="number" name="port" class="form-control" value="{{ .Port }}" id="formGroupExampleInput" placeholder="587">
<label for="port">SMTP Port</label>
<input type="number" name="port" class="form-control" value="{{ .Port }}" id="port" placeholder="587">
</div>
<div class="form-group">
<label for="formGroupExampleInput">Outgoing Email Address</label>
<input type="text" name="address" class="form-control" value="{{ .Var1 }}" id="formGroupExampleInput" placeholder="noreply@domain.com">
<label for="address">Outgoing Email Address</label>
<input type="text" name="address" class="form-control" value="{{ .Var1 }}" id="address" placeholder="noreply@domain.com">
</div>
<div class="form-group">
<label for="formGroupExampleInput">Limit Emails per Hour</label>
<input type="number" name="limit" class="form-control" value="30" id="formGroupExampleInput" placeholder="noreply@domain.com">
<label for="limit">Limit Emails per Hour</label>
<input type="number" name="limit" class="form-control" value="30" id="limit" placeholder="noreply@domain.com">
</div>
<button type="submit" class="btn btn-primary btn-block">Save Email Settings</button>
@ -179,9 +180,9 @@
</div>
</div>
</div>
{{template "footer"}}
<script src="https://assets.statup.io/jquery-3.3.1.slim.min.js"></script>
<script src="https://assets.statup.io/bootstrap.min.js"></script>
<script src="https://assets.statup.io/codemirror.js"></script>

View File

@ -43,27 +43,27 @@
<h3>Create User</h3>
<form action="/users" method="POST">
<div class="form-group row">
<label for="inputEmail3" class="col-sm-4 col-form-label">Username</label>
<label for="username" class="col-sm-4 col-form-label">Username</label>
<div class="col-sm-8">
<input type="text" name="username" class="form-control" id="inputEmail3" placeholder="Username">
<input type="text" name="username" class="form-control" id="username" placeholder="Username">
</div>
</div>
<div class="form-group row">
<label for="inputEmail3" class="col-sm-4 col-form-label">Email Address</label>
<label for="email" class="col-sm-4 col-form-label">Email Address</label>
<div class="col-sm-8">
<input type="text" name="email" class="form-control" id="inputEmail3" placeholder="user@domain.com">
<input type="text" name="email" class="form-control" id="email" placeholder="user@domain.com">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-4 col-form-label">Password</label>
<label for="password" class="col-sm-4 col-form-label">Password</label>
<div class="col-sm-8">
<input type="password" name="password" class="form-control" id="inputPassword3" placeholder="Password">
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-4 col-form-label">Confirm Password</label>
<label for="password_confirm" class="col-sm-4 col-form-label">Confirm Password</label>
<div class="col-sm-8">
<input type="password" name="password_confirm" class="form-control" id="inputPassword3" placeholder="Confirm Password">
<input type="password" name="password_confirm" class="form-control" id="password_confirm" placeholder="Confirm Password">
</div>
</div>
<div class="form-group row">