55 lines
2.2 KiB
HTML
55 lines
2.2 KiB
HTML
{{template "head" .}}
|
|
{{template "topbar" .}}
|
|
<div class="page">
|
|
<div class="float">
|
|
<div class="meta-bar">
|
|
<h1>{{if .Title}}{{.Title}}{{else}}Untitled paste{{end}}</h1>
|
|
<span class="slug">/{{.ID}}</span>
|
|
{{if .Language}}<span class="tag">{{.Language}}</span>{{end}}
|
|
{{if .ExpiresAt}}<span class="tag">expires in {{.ExpiresIn}}</span>{{end}}
|
|
<div class="spacer"></div>
|
|
<a class="iconbtn" href="/raw/{{.ID}}">raw</a>
|
|
<a class="iconbtn" href="#" onclick="copyContent(); return false;">copy</a>
|
|
{{if .DeletionToken}}<a class="iconbtn danger" href="#" onclick="redeem('{{.DeletionToken}}'); return false;">delete</a>{{end}}
|
|
</div>
|
|
</div>
|
|
{{if .JustCreated}}
|
|
<div class="float">
|
|
<div class="created-banner" style="display:block">
|
|
Paste created. Link copied to clipboard: <a href="/{{.ID}}">{{.Host}}/{{.ID}}</a>
|
|
{{if .DeletionToken}} · deletion token: <code>{{.DeletionToken}}</code>{{end}}
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<div class="float">
|
|
<div class="code-head"><span class="dot"></span> {{.LineCount}} lines · {{.SizeBytes}} bytes</div>
|
|
<div class="code"><div class="gutter">{{.Gutter}}</div><div class="codebody" id="codebody">{{.ContentHTML}}</div></div>
|
|
<div class="footnote">
|
|
<span>Created {{.CreatedAgo}}</span>
|
|
<span>{{.ViewCount}} views</span>
|
|
<span>{{.Visibility}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<input type="hidden" id="raw-content" value="{{.ContentAttr}}">
|
|
<script>
|
|
function toast(msg) {
|
|
let t = document.querySelector('.toast');
|
|
if (!t) { t = document.createElement('div'); t.className = 'toast'; document.body.appendChild(t); }
|
|
t.textContent = msg;
|
|
t.classList.add('show');
|
|
clearTimeout(t._h);
|
|
t._h = setTimeout(() => t.classList.remove('show'), 2000);
|
|
}
|
|
function copyContent() {
|
|
navigator.clipboard.writeText(document.getElementById('raw-content').value);
|
|
toast('Copied');
|
|
}
|
|
function redeem(token) {
|
|
if (!confirm('Hard delete this paste immediately?')) return;
|
|
fetch('/api/pastes/{{.ID}}/redeem?token=' + encodeURIComponent(token), {method: 'DELETE'})
|
|
.then(r => { if (r.ok) location.href = '/history'; else alert('delete failed'); });
|
|
}
|
|
</script>
|
|
{{template "foot" .}}
|