mirror of
https://github.com/schollz/cowyo.git
synced 2023-08-10 21:13:00 +03:00
ee01e10499
Former-commit-id: f915533dc401cb532111a12ee550438b6265239a [formerly ff18889a0c2dfaca85a44fb0a39c0ab811eb7a2f] [formerly 5063cff7610e06e8e6f9c1dfb333e5d57b2c0cf6 [formerly 6987950b78
]]
Former-commit-id: a6b81d4b3d0027fce4ad88bb084a1edcac8b68a6 [formerly a8e46c713549b3dd79febbd58255b1ce66b6f5fb]
Former-commit-id: 413d956e82465767fb93961fb997efabda41b402
338 lines
10 KiB
Cheetah
338 lines
10 KiB
Cheetah
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<title>{{ .Title }}</title>
|
|
|
|
{{ template "header" }}
|
|
|
|
<link rel="stylesheet" type="text/css" href="/static/css/view.css">
|
|
<link rel="stylesheet" type="text/css" href="/static/css/katex.min.css">
|
|
<script src="/static/js/katex.min.js"></script>
|
|
|
|
<style>
|
|
a.deleteable {
|
|
cursor: pointer;
|
|
}
|
|
body {
|
|
margin: 0;
|
|
background: #fff;
|
|
max-width: 900px;
|
|
margin: 0 auto;
|
|
padding-bottom: 65px;
|
|
}
|
|
|
|
</style>
|
|
{{ if .Coding }}
|
|
<style>
|
|
.CodeMirror {
|
|
border: 1px solid #eee;
|
|
height: auto;
|
|
}
|
|
|
|
|
|
textarea {
|
|
width: 100%;
|
|
margin: 5px 0;
|
|
padding: 10px;
|
|
border: none;
|
|
overflow: auto;
|
|
outline: none;
|
|
font-size: large;
|
|
-webkit-box-shadow: none;
|
|
-moz-box-shadow: none;
|
|
box-shadow: none;
|
|
font-family: Tahoma, sans-serif;
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
{{ end }}
|
|
<script src="/static/js/sweetalert-dev.js"></script>
|
|
<link rel="stylesheet" href="/static/css/sweetalert.css">
|
|
|
|
{{ if .Coding }}
|
|
<script src="/static/js/codemirror.js"></script>
|
|
<link rel="stylesheet" href="/static/css/codemirror.css">
|
|
<script src="/static/js/{{ .CodeType }}.js"></script>
|
|
{{ if eq .CodeType "htmlmixed" }}
|
|
<script src="/static/js/css.js"></script>
|
|
<script src="/static/js/javascript.js"></script>
|
|
<script src="/static/js/xml.js"></script>
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<!-- Fixed navbar -->
|
|
<nav class="navbar navbar-default navbar-fixed-bottom">
|
|
<div class="container">
|
|
<!-- <div class="navbar-header">
|
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand" href="/">{{ .Title }}</a>
|
|
</div> -->
|
|
<div id="navbar" class="collapse navbar-collapse">
|
|
<ul class="nav navbar-nav">
|
|
<li>{{ if .Locked }}<a href="#" class="postunlock"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span>{{else}}<a href="/{{ .Title }}"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>{{end}} Edit</a></li>
|
|
<li class="dropdown active">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" class="active"><span class="glyphicon glyphicon-sunglasses" aria-hidden="true"></span> View <span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
<li class="dropdown-header">Time edited: {{ .TotalTime }}</li>
|
|
<li role="separator" class="divider"></li>
|
|
<li class="dropdown-header">Other versions</li>
|
|
<li><a href="/{{ .Title }}/view?version=0">First</a></li>
|
|
{{ range .Versions }}
|
|
<li><a href="/{{ $.Title }}/view?version={{ .VersionNum }}">{{ .VersionDate }}</a></li>
|
|
{{ end }}
|
|
<li><a href="/{{ .Title }}/view">Current</a></li>
|
|
{{ if .LockedOrEncrypted }}
|
|
<li class="dropdown-header">Options</li>
|
|
{{ if .Encrypted }}
|
|
<li><a href="#" class="postdecrypt">Decrypt</a></li>
|
|
{{end }}
|
|
{{ if .Locked }}
|
|
<li><a href="#" class="postunlock">Unlock</a></li>
|
|
{{end }}
|
|
{{ end }}
|
|
</ul>
|
|
</li>
|
|
<li><a href="/{{ .Title }}/list"><span class="glyphicon glyphicon-align-left" aria-hidden="true"></span> List</a></li>
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" class="active"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> More <span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a class="trigger right-caret">Recent</a>
|
|
<ul class="dropdown-menu sub-menu">
|
|
{{ range .RecentlyEdited}}
|
|
<li><a href="/{{.}}/view"> {{.}}</a></li>
|
|
{{ end }}
|
|
</ul>
|
|
</li>
|
|
<li><a href="/Help/view"> Help</a></li>
|
|
<li><a href="/PrivacyPolicy/view"> Privacy Policy</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!--/.nav-collapse -->
|
|
</div>
|
|
</nav>
|
|
|
|
{{ if .Coding }}
|
|
|
|
<div>
|
|
<textarea autofocus rows={{ .NumRows }} class='auto_submit_item' id="emit_data" name="emit_data" placeholder="Start typing, it will save automatically.">{{ .CurrentText }}</textarea>
|
|
</div>
|
|
|
|
{{ else }}
|
|
<div class="yue">
|
|
{{ if .Encrypted }}
|
|
<pre>
|
|
{{ .Body }}
|
|
</pre>
|
|
{{ else }}
|
|
{{ .Body }}
|
|
{{ end }}
|
|
</div>
|
|
{{ end }}
|
|
|
|
<script>
|
|
$( document ).ready(function() {
|
|
|
|
{{ if .Encrypted }}
|
|
{{ if .Prompt }}
|
|
var pass1 = "";
|
|
swal({
|
|
title: "Decryption",
|
|
text: "Enter your passphrase:",
|
|
type: "input", inputType: "password",
|
|
showCancelButton: true,
|
|
closeOnConfirm: false,
|
|
animation: "slide-from-top",
|
|
inputPlaceholder: "Write something"
|
|
}, function(inputValue) {
|
|
if (inputValue === false) return false;
|
|
if (inputValue === "") {
|
|
swal.showInputError("You need to write something!");
|
|
return false
|
|
}
|
|
pass1 = inputValue;
|
|
$.ajax({
|
|
type: "POST",
|
|
//the url where you want to sent the userName and password to
|
|
url: '/{{ .Title }}/decrypt',
|
|
dataType: 'json',
|
|
data: JSON.stringify({
|
|
text: " ",
|
|
password: pass1
|
|
}),
|
|
success: function (data) {
|
|
if (data['success'] == true) {
|
|
swal("Decryption", "Decrypted!", "success");
|
|
window.location.href = '/{{ .Title }}/view';
|
|
} else {
|
|
swal("Decryption", data['status'], "error");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
{{ end }}
|
|
$('.postdecrypt').click(function(event) {
|
|
var pass1 = "";
|
|
event.preventDefault();
|
|
swal({
|
|
title: "Decryption",
|
|
text: "Enter your passphrase:",
|
|
type: "input", inputType: "password",
|
|
showCancelButton: true,
|
|
closeOnConfirm: false,
|
|
animation: "slide-from-top",
|
|
inputPlaceholder: "Write something"
|
|
}, function(inputValue) {
|
|
if (inputValue === false) return false;
|
|
if (inputValue === "") {
|
|
swal.showInputError("You need to write something!");
|
|
return false
|
|
}
|
|
pass1 = inputValue;
|
|
$.ajax({
|
|
type: "POST",
|
|
//the url where you want to sent the userName and password to
|
|
url: '/{{ .Title }}/decrypt',
|
|
dataType: 'json',
|
|
data: JSON.stringify({
|
|
text: " ",
|
|
password: pass1
|
|
}),
|
|
success: function (data) {
|
|
if (data['success'] == true) {
|
|
swal("Decryption", "Decrypted!", "success");
|
|
window.location.href = '/{{ .Title }}/view';
|
|
} else {
|
|
swal("Decryption", data['status'], "error");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|
|
{{ end }}
|
|
|
|
{{ if .Locked }}
|
|
|
|
$('.postunlock').click(function(event) {
|
|
var pass1 = "";
|
|
event.preventDefault();
|
|
swal({
|
|
title: "Unlock",
|
|
text: "Enter your passphrase:",
|
|
type: "input", inputType: "password",
|
|
showCancelButton: true,
|
|
closeOnConfirm: false,
|
|
animation: "slide-from-top",
|
|
inputPlaceholder: "Write something"
|
|
}, function(inputValue) {
|
|
if (inputValue === false) return false;
|
|
if (inputValue === "") {
|
|
swal.showInputError("You need to write something!");
|
|
return false
|
|
}
|
|
pass1 = inputValue;
|
|
$.ajax({
|
|
type: "POST",
|
|
//the url where you want to sent the userName and password to
|
|
url: '/{{ .Title }}/unlock',
|
|
dataType: 'json',
|
|
data: JSON.stringify({
|
|
text: " ",
|
|
password: pass1
|
|
}),
|
|
success: function (data) {
|
|
if (data['success'] == true) {
|
|
swal("Unlock", "Unlocked!", "success");
|
|
window.location.href = '/{{ .Title }}';
|
|
} else {
|
|
swal("Unlock", data['status'], "error");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|
|
{{ end }}
|
|
|
|
|
|
|
|
var texi = document.getElementsByClassName("texi");
|
|
Array.prototype.forEach.call(texi, function(el) {
|
|
katex.render(el.getAttribute("data-expr"), el, { displayMode: false });
|
|
});
|
|
|
|
var texp = document.getElementsByClassName("texp");
|
|
Array.prototype.forEach.call(texp, function(el) {
|
|
katex.render(el.getAttribute("data-expr"), el, { displayMode: true });
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
$(document).keydown(function(e){
|
|
if( e.which === 69 && e.ctrlKey && e.shiftKey ){
|
|
console.log('control + shift + e');
|
|
window.location = "/{{ .Title }}";
|
|
}
|
|
});
|
|
|
|
|
|
$(document).keydown(function(e){
|
|
if( e.which === 76 && e.ctrlKey && e.shiftKey ){
|
|
console.log('control + shift + l');
|
|
window.location = "/{{ .Title }}/list";
|
|
}
|
|
});
|
|
|
|
|
|
{{ if .AdminKey }}
|
|
$('.deleteable').click(function(event) {
|
|
event.preventDefault();
|
|
var deleteName = $(this).attr('id')
|
|
var href = $(this).attr('href')
|
|
console.log(deleteName)
|
|
$.ajax({
|
|
url: "/deletepage" + '?' + $.param({
|
|
"DeleteName": deleteName,
|
|
"AdminKey": "{{ .AdminKey }}"
|
|
}),
|
|
type: 'DELETE',
|
|
success: function() {
|
|
window.location.reload(true);
|
|
}
|
|
});
|
|
|
|
});
|
|
{{ end }}
|
|
</script>
|
|
|
|
|
|
{{ if .Coding }}
|
|
<script>
|
|
var editor = CodeMirror.fromTextArea(document.getElementById("emit_data"), {
|
|
lineNumbers: true,
|
|
mode: "{{ .CodeType }}",
|
|
matchBrackets: true,
|
|
viewportMargin: Infinity,
|
|
readOnly: true
|
|
});
|
|
editor.setSize("100%", "100%")
|
|
</script>
|
|
{{ end }}
|
|
</body>
|
|
|
|
</html>
|