mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
Copy integral templates into bootstrap theme
This commit is contained in:
54
themes/bootstrap/templates/_base.html
Normal file
54
themes/bootstrap/templates/_base.html
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<!--
|
||||||
|
Design by Free CSS Templates
|
||||||
|
http://www.freecsstemplates.org
|
||||||
|
Released for free under a Creative Commons Attribution 2.5 License
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>{{template "title" .}}</title>
|
||||||
|
<link href="/public/main.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link rel="shortcut icon" type="image/png" href="/public/images/favicon.png">
|
||||||
|
<script src="/public/jquery-1.8.2.min.js" type="text/javascript" charset="utf-8"></script>
|
||||||
|
<script src="/public/jquery.color.js" type="text/javascript" charset="utf-8"></script>
|
||||||
|
{{template "script" .}}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="header">
|
||||||
|
<ul id="menu">
|
||||||
|
<li><a href="/" accesskey="1" title="">Home</a></li>
|
||||||
|
<li><a href="/status" accesskey="2" title="">Status</a></li>
|
||||||
|
</ul>
|
||||||
|
<form id="search" action="{{reverse "MailboxIndex"}}" method="GET">
|
||||||
|
<fieldset>
|
||||||
|
<input name="name" type="text" id="input1" />
|
||||||
|
<input name="submit" type="submit" id="input2" value="Go" />
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="content">
|
||||||
|
<div id="colOne">
|
||||||
|
{{template "menu" .}}
|
||||||
|
</div>
|
||||||
|
<div id="colTwo">
|
||||||
|
{{with .ctx.Session.Flashes "errors"}}
|
||||||
|
<div class="errors">
|
||||||
|
<p>Please fix the following errors and resubmit:<p>
|
||||||
|
<ul>
|
||||||
|
{{range .}}
|
||||||
|
<li>{{.}}</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
{{template "content" .}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
<p><a href="http://www.inbucket.org/">Inbucket</a> is an open source project hosted at
|
||||||
|
<a href="http://github.com/jhillyerd/inbucket">github</a>.
|
||||||
|
Design by <a href="http://www.freecsstemplates.org/">FCT</a>.</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
themes/bootstrap/templates/mailbox/_html.html
Normal file
1
themes/bootstrap/templates/mailbox/_html.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{.body}}
|
||||||
12
themes/bootstrap/templates/mailbox/_list.html
Normal file
12
themes/bootstrap/templates/mailbox/_list.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{{$name := .name}}
|
||||||
|
{{range .messages}}
|
||||||
|
<div class="box listEntry" id="{{.Id}}">
|
||||||
|
<div class="subject">{{.Subject}}</div>
|
||||||
|
<div class="from">{{.From}}</div>
|
||||||
|
<div class="date">{{friendlyTime .Date}}</div>
|
||||||
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="box">
|
||||||
|
<p style="height: 30px; padding-left: 10px;">No messages!</p>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
39
themes/bootstrap/templates/mailbox/_show.html
Normal file
39
themes/bootstrap/templates/mailbox/_show.html
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{{$name := .name}}
|
||||||
|
{{$id := .message.Id}}
|
||||||
|
<div id="emailActions">
|
||||||
|
<a href="/link/{{$name}}/{{$id}}">Link</a>
|
||||||
|
<a href="javascript:deleteMessage('{{.message.Id}}');">Delete</a>
|
||||||
|
<a href="javascript:messageSource('{{.message.Id}}');">Source</a>
|
||||||
|
{{if .htmlAvailable}}
|
||||||
|
<a href="javascript:htmlView('{{.message.Id}}');">HTML</a>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
<table id="emailHeader">
|
||||||
|
<tr>
|
||||||
|
<th>From:</th>
|
||||||
|
<td>{{.message.From}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Date:</th>
|
||||||
|
<td>{{.message.Date}}</td>
|
||||||
|
</tr>
|
||||||
|
<table>
|
||||||
|
|
||||||
|
{{with .attachments}}
|
||||||
|
<table id="emailAttachments">
|
||||||
|
<tr><th colspan="4">Attachments:</th></tr>
|
||||||
|
{{range $i, $e := .}}
|
||||||
|
<tr>
|
||||||
|
<td class="fileName">{{$e.FileName}}</td>
|
||||||
|
<td>({{$e.ContentType}})</td>
|
||||||
|
<td><a href="/mailbox/vattach/{{$name}}/{{$id}}/{{$i}}/{{$e.FileName}}" target="_blank">View</a></td>
|
||||||
|
<td><a href="/mailbox/dattach/{{$name}}/{{$id}}/{{$i}}/{{$e.FileName}}">Download</a></td>
|
||||||
|
</tr>
|
||||||
|
{{end}}
|
||||||
|
</table>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
<div id="emailSubject"><h3>{{.message.Subject}}</h3></div>
|
||||||
|
|
||||||
|
<div id="emailBody">{{.body}}</div>
|
||||||
|
|
||||||
92
themes/bootstrap/templates/mailbox/index.html
Normal file
92
themes/bootstrap/templates/mailbox/index.html
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
{{define "title"}}{{printf "Inbucket for %v" .name}}{{end}}
|
||||||
|
{{$name := .name}}
|
||||||
|
|
||||||
|
{{define "script"}}
|
||||||
|
<script>
|
||||||
|
var selected = "{{.selected}}"
|
||||||
|
function messageLoaded(responseText, textStatus, XMLHttpRequest) {
|
||||||
|
if (textStatus == "error") {
|
||||||
|
alert("Failed to load message, server said:\n" + responseText)
|
||||||
|
} else {
|
||||||
|
window.scrollTo(0,0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function listLoaded() {
|
||||||
|
$('.listEntry').hover(
|
||||||
|
function() {
|
||||||
|
$(this).addClass("listEntryHover")
|
||||||
|
},
|
||||||
|
function() {
|
||||||
|
$(this).removeClass("listEntryHover")
|
||||||
|
}
|
||||||
|
).click(
|
||||||
|
function() {
|
||||||
|
$('.listEntry').removeClass("listEntrySelected")
|
||||||
|
$(this).addClass("listEntrySelected")
|
||||||
|
$('#emailContent').load('/mailbox/{{.name}}/' + this.id, messageLoaded)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
$("#messageList").slideDown()
|
||||||
|
if (selected != "") {
|
||||||
|
$("#" + selected).click()
|
||||||
|
selected = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadList() {
|
||||||
|
$('#messageList').load("/mailbox/{{.name}}", listLoaded)
|
||||||
|
}
|
||||||
|
|
||||||
|
function reloadList() {
|
||||||
|
$('#messageList').hide()
|
||||||
|
loadList()
|
||||||
|
}
|
||||||
|
|
||||||
|
function listInit() {
|
||||||
|
$("#messageList").hide()
|
||||||
|
loadList()
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteMessage(id) {
|
||||||
|
$('#emailContent').empty()
|
||||||
|
$.ajax({
|
||||||
|
type: 'DELETE',
|
||||||
|
url: '/mailbox/{{.name}}/' + id,
|
||||||
|
success: reloadList
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function htmlView(id) {
|
||||||
|
window.open('/mailbox/{{.name}}/' + id + "/html", '_blank',
|
||||||
|
'width=800,height=600,' +
|
||||||
|
'menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes')
|
||||||
|
}
|
||||||
|
|
||||||
|
function messageSource(id) {
|
||||||
|
window.open('/mailbox/{{.name}}/' + id + "/source", '_blank',
|
||||||
|
'width=800,height=600,' +
|
||||||
|
'menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no')
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(listInit)
|
||||||
|
</script>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "menu"}}
|
||||||
|
<div id="logo">
|
||||||
|
<h1><a href="#">inbucket</a></h1>
|
||||||
|
<h2>mail for {{.name}}</h2>
|
||||||
|
</div>
|
||||||
|
<div class="box" style="text-align:center; padding-bottom:10px;">
|
||||||
|
<a href="javascript:reloadList()">Refresh List</a>
|
||||||
|
</div>
|
||||||
|
<div id="messageList"></div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "content"}}
|
||||||
|
<div id="emailContent">
|
||||||
|
<p>Select a message at left, or enter a different username into the box on upper right.</p>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
12
themes/bootstrap/templates/root/index.html
Normal file
12
themes/bootstrap/templates/root/index.html
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{{define "title"}}Inbucket{{end}}
|
||||||
|
|
||||||
|
{{define "script"}}{{end}}
|
||||||
|
|
||||||
|
{{define "menu"}}
|
||||||
|
<div id="logo">
|
||||||
|
<h1><a href="/">inbucket</a></h1>
|
||||||
|
<h2>email testing service</h2>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "content"}}{{.greeting}}{{end}}
|
||||||
285
themes/bootstrap/templates/root/status.html
Normal file
285
themes/bootstrap/templates/root/status.html
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
{{define "title"}}Inbucket Status{{end}}
|
||||||
|
|
||||||
|
{{define "script"}}
|
||||||
|
<script src="/public/jquery.sparkline.min.js" type="text/javascript" charset="utf-8"></script>
|
||||||
|
<script>
|
||||||
|
jQuery.ajaxSetup({ cache: false })
|
||||||
|
flashOn = jQuery.Color("rgba(255,255,0,1)")
|
||||||
|
flashOff = jQuery.Color("rgba(255,255,0,0)")
|
||||||
|
dataHist = new Object()
|
||||||
|
|
||||||
|
function timeFilter(seconds) {
|
||||||
|
if (seconds < 60) {
|
||||||
|
return seconds + " seconds"
|
||||||
|
} else if (seconds < 3600) {
|
||||||
|
return (seconds/60).toFixed(0) + " minute(s)"
|
||||||
|
} else if (seconds < 86400) {
|
||||||
|
return (seconds/3600).toFixed(1) + " hour(s)"
|
||||||
|
}
|
||||||
|
return (seconds/86400).toFixed(0) + " day(s)"
|
||||||
|
}
|
||||||
|
|
||||||
|
function sizeFilter(bytes) {
|
||||||
|
if (bytes < 1024) {
|
||||||
|
return bytes + " bytes"
|
||||||
|
} else if (bytes < 1048576) {
|
||||||
|
return (bytes/1024).toFixed(0) + " KB"
|
||||||
|
} else if (bytes < 1073741824) {
|
||||||
|
return (bytes/1048576).toFixed(2) + " MB"
|
||||||
|
}
|
||||||
|
return (bytes/1073741824).toFixed(2) + " GB"
|
||||||
|
}
|
||||||
|
|
||||||
|
function numberFilter(x) {
|
||||||
|
var parts = x.toString().split(".");
|
||||||
|
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||||
|
return parts.join(".");
|
||||||
|
}
|
||||||
|
|
||||||
|
function appendHistory(name, value) {
|
||||||
|
var h = dataHist[name]
|
||||||
|
if (! h) {
|
||||||
|
h = new Array(0)
|
||||||
|
}
|
||||||
|
// Prevent array from growing
|
||||||
|
if (h.length >= 60) {
|
||||||
|
h = h.slice(1,60)
|
||||||
|
}
|
||||||
|
h.push(parseInt(value))
|
||||||
|
dataHist[name] = h
|
||||||
|
el = $('#s-' + name)
|
||||||
|
if (el) {
|
||||||
|
el.sparkline(dataHist[name])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show spikes for numbers that only increase
|
||||||
|
function setHistoryOfActivity(name, value) {
|
||||||
|
var h = value.split(",")
|
||||||
|
var prev = parseInt(h[0])
|
||||||
|
for (i=0; i<h.length; i++) {
|
||||||
|
var t = parseInt(h[i])
|
||||||
|
h[i] = t-prev
|
||||||
|
prev = t
|
||||||
|
}
|
||||||
|
// First value will always be zero
|
||||||
|
if (h.length > 0) {
|
||||||
|
h = h.slice(1)
|
||||||
|
}
|
||||||
|
el = $('#s-' + name)
|
||||||
|
if (el) {
|
||||||
|
el.sparkline(h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show up/down for numbers that can decrease
|
||||||
|
function setHistoryOfCount(name, value) {
|
||||||
|
var h = value.split(",")
|
||||||
|
el = $('#s-' + name)
|
||||||
|
if (el) {
|
||||||
|
el.sparkline(h)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function metric(name, value, filter, chartable) {
|
||||||
|
if (chartable) {
|
||||||
|
appendHistory(name, value)
|
||||||
|
}
|
||||||
|
if (filter) {
|
||||||
|
value = filter(value)
|
||||||
|
}
|
||||||
|
var el = $('#m-' + name)
|
||||||
|
if (el.text() != value) {
|
||||||
|
el.text(value)
|
||||||
|
el.css('background-color', flashOn)
|
||||||
|
el.animate({ backgroundColor: flashOff }, 1500)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayMetrics(data, textStatus, jqXHR) {
|
||||||
|
// Non graphing
|
||||||
|
metric('uptime', data.uptime, timeFilter, false)
|
||||||
|
metric('retentionScanCompleted', data.retention.SecondsSinceScanCompleted, timeFilter, false)
|
||||||
|
metric('retentionPeriod', data.retention.Period, timeFilter, false)
|
||||||
|
|
||||||
|
// JavaScript history
|
||||||
|
metric('memstatsSys', data.memstats.Sys, sizeFilter, true)
|
||||||
|
metric('memstatsHeapAlloc', data.memstats.HeapAlloc, sizeFilter, true)
|
||||||
|
metric('memstatsHeapSys', data.memstats.HeapSys, sizeFilter, true)
|
||||||
|
metric('memstatsHeapObjects', data.memstats.HeapObjects, numberFilter, true)
|
||||||
|
metric('smtpConnectsCurrent', data.smtp.ConnectsCurrent, numberFilter, true)
|
||||||
|
|
||||||
|
// Server-side history
|
||||||
|
metric('smtpReceivedTotal', data.smtp.ReceivedTotal, numberFilter, false)
|
||||||
|
setHistoryOfActivity('smtpReceivedTotal', data.smtp.ReceivedHist)
|
||||||
|
metric('smtpConnectsTotal', data.smtp.ConnectsTotal, numberFilter, false)
|
||||||
|
setHistoryOfActivity('smtpConnectsTotal', data.smtp.ConnectsHist)
|
||||||
|
metric('smtpWarnsTotal', data.smtp.WarnsTotal, numberFilter, false)
|
||||||
|
setHistoryOfActivity('smtpWarnsTotal', data.smtp.WarnsHist)
|
||||||
|
metric('smtpErrorsTotal', data.smtp.ErrorsTotal, numberFilter, false)
|
||||||
|
setHistoryOfActivity('smtpErrorsTotal', data.smtp.ErrorsHist)
|
||||||
|
metric('retentionDeletesTotal', data.retention.DeletesTotal, numberFilter, false)
|
||||||
|
setHistoryOfActivity('retentionDeletesTotal', data.retention.DeletesHist)
|
||||||
|
metric('retainedCurrent', data.retention.RetainedCurrent, numberFilter, false)
|
||||||
|
setHistoryOfCount('retainedCurrent', data.retention.RetainedHist)
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadMetrics() {
|
||||||
|
// jQuery.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )
|
||||||
|
jQuery.getJSON('/debug/vars', null, displayMetrics)
|
||||||
|
}
|
||||||
|
|
||||||
|
function aboutInit() {
|
||||||
|
loadMetrics()
|
||||||
|
setInterval(loadMetrics, 10000)
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(aboutInit)
|
||||||
|
</script>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "menu"}}
|
||||||
|
<div id="logo">
|
||||||
|
<h1><a href="/">inbucket</a></h1>
|
||||||
|
<h2>email testing service</h2>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "content"}}
|
||||||
|
<h2>Inbucket Status</h2>
|
||||||
|
|
||||||
|
<p>Metrics are polled every 10 seconds. Inbucket does not keep history for the
|
||||||
|
10 minute graphs, but your web browser will accumulate the data over time.</p>
|
||||||
|
|
||||||
|
<div class="box">
|
||||||
|
<h3>Configuration</h3>
|
||||||
|
<table class="metrics">
|
||||||
|
<tr>
|
||||||
|
<th>Version:</th>
|
||||||
|
<td><span>{{.version}}, built on {{.buildDate}}</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>SMTP Listener:</th>
|
||||||
|
<td><span>{{.smtpListener}}</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>POP3 Listener:</th>
|
||||||
|
<td><span>{{.pop3Listener}}</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>HTTP Listener:</th>
|
||||||
|
<td><span>{{.webListener}}</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="last"> </p>
|
||||||
|
</div>
|
||||||
|
<div class="box">
|
||||||
|
<h3>General Metrics</h3>
|
||||||
|
<table class="metrics">
|
||||||
|
<tr>
|
||||||
|
<th>Uptime:</th>
|
||||||
|
<td class="number"><span id="m-uptime">.</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>System Memory:</th>
|
||||||
|
<td class="number"><span id="m-memstatsSys">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-memstatsSys">.</span></td>
|
||||||
|
<td>(10min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Heap Size:</th>
|
||||||
|
<td class="number"><span id="m-memstatsHeapSys">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-memstatsHeapSys">.</span></td>
|
||||||
|
<td>(10min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Heap In-Use:</th>
|
||||||
|
<td class="number"><span id="m-memstatsHeapAlloc">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-memstatsHeapAlloc">.</span></td>
|
||||||
|
<td>(10min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Heap # Objects:</th>
|
||||||
|
<td class="number"><span id="m-memstatsHeapObjects">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-memstatsHeapObjects">.</span></td>
|
||||||
|
<td>(10min)</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="last"> </p>
|
||||||
|
</div>
|
||||||
|
<div class="box">
|
||||||
|
<h3>SMTP Metrics</h3>
|
||||||
|
<table class="metrics">
|
||||||
|
<tr>
|
||||||
|
<th>Current Connections:</th>
|
||||||
|
<td class="number"><span id="m-smtpConnectsCurrent">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-smtpConnectsCurrent">.</span></td>
|
||||||
|
<td>(10min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Total Connections:</th>
|
||||||
|
<td class="number"><span id="m-smtpConnectsTotal">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-smtpConnectsTotal">.</span></td>
|
||||||
|
<td>(60min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Messages Received:</th>
|
||||||
|
<td class="number"><span id="m-smtpReceivedTotal">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-smtpReceivedTotal">.</span></td>
|
||||||
|
<td>(60min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Errors Logged:</th>
|
||||||
|
<td class="number"><span id="m-smtpErrorsTotal">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-smtpErrorsTotal"></span></td>
|
||||||
|
<td>(60min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Warnings Logged:</th>
|
||||||
|
<td class="number"><span id="m-smtpWarnsTotal">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-smtpWarnsTotal"></span></td>
|
||||||
|
<td>(60min)</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="last"> </p>
|
||||||
|
</div>
|
||||||
|
<div class="box">
|
||||||
|
<h3>Data Store Metrics</h3>
|
||||||
|
<table class="metrics">
|
||||||
|
<tr>
|
||||||
|
<th>Retention Period:</th>
|
||||||
|
<td colspan="3">
|
||||||
|
{{if .retentionMinutes}}
|
||||||
|
<span id="m-retentionPeriod">.</span>
|
||||||
|
{{else}}
|
||||||
|
Disabled
|
||||||
|
{{end}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Retention Scan:</th>
|
||||||
|
<td colspan="3">
|
||||||
|
{{if .retentionMinutes}}
|
||||||
|
Completed <span id="m-retentionScanCompleted">.</span> ago
|
||||||
|
{{else}}
|
||||||
|
Disabled
|
||||||
|
{{end}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Retention Deletes:</th>
|
||||||
|
<td class="number"><span id="m-retentionDeletesTotal">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-retentionDeletesTotal"></span></td>
|
||||||
|
<td>(60min)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Currently Retained:</th>
|
||||||
|
<td class="number"><span id="m-retainedCurrent">.</span></td>
|
||||||
|
<td class="sparkline"><span id="s-retainedCurrent"></span></td>
|
||||||
|
<td>(60min)</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="last"> </p>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
Reference in New Issue
Block a user