initial files imported from srndv2
This commit is contained in:
parent
a415b5d7ee
commit
d677f96e08
25
contrib/static/captcha.js
Normal file
25
contrib/static/captcha.js
Normal file
@ -0,0 +1,25 @@
|
||||
//
|
||||
// sorry I can't think of any better way to do captcha ;~;
|
||||
//
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
// get new captcha
|
||||
var ajax = new XMLHttpRequest();
|
||||
// get form elements for captcha
|
||||
var elem_input = document.getElementById("captcha_input");
|
||||
var elem_img = document.getElementById("captcha_img");
|
||||
// prepare ajax
|
||||
ajax.onreadystatechange = function(ev) {
|
||||
if ( ajax.readyState == XMLHttpRequest.DONE && ajax.status == 200 ) {
|
||||
// we succeeded
|
||||
var captcha_id = ajax.responseText;
|
||||
// set captcha id
|
||||
elem_input.value = captcha_id;
|
||||
// set captcha image
|
||||
elem_img.src = "captcha/" + captcha_id + ".png";
|
||||
}
|
||||
};
|
||||
// open and send the ajax request
|
||||
ajax.open("GET", "captcha/new");
|
||||
ajax.send();
|
||||
});
|
74
contrib/static/mod.js
Normal file
74
contrib/static/mod.js
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* mod.js, moderator page js stuff
|
||||
*/
|
||||
|
||||
|
||||
// TODO: implement mod panel all the way
|
||||
|
||||
document.onload = function(ev) {
|
||||
// populate the mod page with stuff
|
||||
}
|
||||
|
||||
function get_longhash(str) {
|
||||
var idx = str.indexOf("#") + 1;
|
||||
if ( idx > 0 ) {
|
||||
str = str.substr(idx);
|
||||
}
|
||||
console.log(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
// handle delete command
|
||||
function nntpchan_delete() {
|
||||
// get the element
|
||||
var input = document.getElementById("nntpchan_mod_delete");
|
||||
// get the long hash
|
||||
var longhash = get_longhash(input.value);
|
||||
// TODO: check long hash
|
||||
|
||||
|
||||
var elem = document.getElementById("nntpchan_mod_result");
|
||||
// clear old results
|
||||
while( elem.firstChild ) {
|
||||
elem.removeChild(elem.firstChild);
|
||||
}
|
||||
// fire off ajax
|
||||
var ajax = new XMLHttpRequest();
|
||||
ajax.onreadystatechange = function() {
|
||||
if (ajax.readyState == XMLHttpRequest.DONE) {
|
||||
var status = ajax.status;
|
||||
// we gud?
|
||||
if (status == 200) {
|
||||
// yah
|
||||
var txt = ajax.responseText;
|
||||
var j = JSON.parse(txt);
|
||||
if (j.error) {
|
||||
var e = document.createTextNode(j.error);
|
||||
elem.appendChild(e);
|
||||
} else {
|
||||
if ( j.deleted ) {
|
||||
for ( var idx = 0 ; idx < j.deleted.length ; idx ++ ) {
|
||||
var deltxt = "deleted " + j.deleted[idx];
|
||||
var e = document.createTextNode(deltxt);
|
||||
elem.appendChild(e);
|
||||
}
|
||||
}
|
||||
if ( j.notdeleted ) {
|
||||
for ( var idx = 0 ; idx < j.notdeleted.length ; idx ++ ) {
|
||||
var deltxt = "failed to delete " + j.notdeleted[idx];
|
||||
var e = document.createTextNode(deltxt);
|
||||
elem.appendChild(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// nah
|
||||
// http error
|
||||
elem.innerHTML = "error: HTTP "+status;
|
||||
}
|
||||
input.value = "";
|
||||
}
|
||||
}
|
||||
ajax.open("GET", "del/"+longhash);
|
||||
ajax.send();
|
||||
}
|
59
contrib/static/site.css
Normal file
59
contrib/static/site.css
Normal file
@ -0,0 +1,59 @@
|
||||
.thread {
|
||||
margin_right: 20px;
|
||||
margin_bottom: 5px;
|
||||
}
|
||||
|
||||
.frontend , .subject {
|
||||
color: #0f0d2d;
|
||||
}
|
||||
|
||||
.name {
|
||||
color: #117743;
|
||||
}
|
||||
|
||||
|
||||
.name , .subject {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.post {
|
||||
background: #d6daf0;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #eef2ff;
|
||||
}
|
||||
|
||||
.reply {
|
||||
margin-left: 1.8em;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.frontend {
|
||||
margin-top: 0px;
|
||||
background: #e0f0f0;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.op {
|
||||
background: #eef2ff;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.post, .post_body {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
padding-right: 3em;
|
||||
padding-bottom: 0.3em;
|
||||
}
|
||||
|
||||
|
||||
.tripcode {
|
||||
color: #de04ef;
|
||||
}
|
||||
|
||||
.memearrows {
|
||||
color: green;
|
||||
}
|
0
contrib/static/user.css
Normal file
0
contrib/static/user.css
Normal file
0
contrib/templates/default/attachment.mustache
Normal file
0
contrib/templates/default/attachment.mustache
Normal file
34
contrib/templates/default/board.mustache
Normal file
34
contrib/templates/default/board.mustache
Normal file
@ -0,0 +1,34 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<script type="text/javascript" src="{{board.Prefix}}static/captcha.js"></script>
|
||||
<link rel="stylesheet" href="{{board.Prefix}}static/site.css"></link>
|
||||
<title>{{board.Board}}</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- begin header -->
|
||||
{{{board.RenderNavbar}}}
|
||||
<!-- end header -->
|
||||
|
||||
<!-- postform -->
|
||||
<div id="postform_container">
|
||||
{{{form}}}
|
||||
</div>
|
||||
<hr />
|
||||
<div id="threads_container">
|
||||
{{#board.Threads}}
|
||||
<div class="thread" id="thread_{{OP.PostHash}}">
|
||||
<div clsss="thread_header">
|
||||
</div>
|
||||
{{{OP.RenderPost}}}
|
||||
{{#Replies}}
|
||||
{{{RenderPost}}}
|
||||
<br />
|
||||
{{/Replies}}
|
||||
</div>
|
||||
<br/>
|
||||
<hr/>
|
||||
{{/board.Threads}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
12
contrib/templates/default/keygen.mustache
Normal file
12
contrib/templates/default/keygen.mustache
Normal file
@ -0,0 +1,12 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"></meta>
|
||||
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||
<title> here is a new tripcode </title>
|
||||
</head>
|
||||
<body>
|
||||
<pre>New Tripcode:
|
||||
<div id="secret_key">secret: {{secret}}</div><div id="public_key">public: {{public}}</div><div>tripcode: <span class="tripcode" id="capcode_key">{{{tripcode}}}</span></div>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
13
contrib/templates/default/modlogin.mustache
Normal file
13
contrib/templates/default/modlogin.mustache
Normal file
@ -0,0 +1,13 @@
|
||||
<html>
|
||||
<head>
|
||||
<link ref="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||
<title>login</title>
|
||||
</head>
|
||||
<body>
|
||||
<form action="login" method="POST" name="modlogin">
|
||||
<label for="mod_key">secret</label>
|
||||
<input type="password" id="mod_key" name="privkey" />
|
||||
<input type="submit" value="login" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
10
contrib/templates/default/modlogin_result.mustache
Normal file
10
contrib/templates/default/modlogin_result.mustache
Normal file
@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<link ref="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||
<meta http-equiv="refresh" content="1; {{mod_prefix}}"></meta>
|
||||
<title>login</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>{{message}}</p>
|
||||
</body>
|
||||
</html>
|
23
contrib/templates/default/modpage.mustache
Normal file
23
contrib/templates/default/modpage.mustache
Normal file
@ -0,0 +1,23 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||
<!-- yes it uses js -->
|
||||
<script type="text/javascript" src="{{prefix}}static/mod.js"></script>
|
||||
<title> nntpchan mod page </title>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<div> post actions </div>
|
||||
<hr />
|
||||
<div>
|
||||
<label for="nntpchan_mod_delete">delete by url</label>
|
||||
<input id="nntpchan_mod_delete" type="text" />
|
||||
</div>
|
||||
<button id="nntpchan_mod" onclick="nntpchan_delete()">go</button>
|
||||
<span id="nntpchan_mod_result"></span>
|
||||
</div>
|
||||
<noscript>
|
||||
<b>enable js to use the mod panel kthx</b>
|
||||
</noscript>
|
||||
</body>
|
||||
</html>
|
7
contrib/templates/default/navbar.mustache
Normal file
7
contrib/templates/default/navbar.mustache
Normal file
@ -0,0 +1,7 @@
|
||||
<hr />
|
||||
<div>
|
||||
<span class="board_title">{{{board.Name}}}</span>
|
||||
on
|
||||
<span class="frontend_title">{{{board.Frontend}}}</span>
|
||||
</div>
|
||||
<hr />
|
0
contrib/templates/default/op.mustache
Normal file
0
contrib/templates/default/op.mustache
Normal file
37
contrib/templates/default/post.mustache
Normal file
37
contrib/templates/default/post.mustache
Normal file
@ -0,0 +1,37 @@
|
||||
<div class="{{{CSSClass}}}" id="post_{{PostHash}}">
|
||||
<p class="intro">
|
||||
<label for="delete_{{PostHash}}">
|
||||
<span class="subject">
|
||||
{{Subject}}
|
||||
</span>
|
||||
<span class="name">
|
||||
{{#Sage}}
|
||||
<a href="mailto:sage">
|
||||
{{Name}}
|
||||
</a>
|
||||
{{/Sage}}
|
||||
{{^Sage}}
|
||||
{{Name}}
|
||||
{{/Sage}}
|
||||
</span>
|
||||
<span class="postdate">
|
||||
{{Date}}
|
||||
</span>
|
||||
</label>
|
||||
<a href="{{PostURL}}" onclick="">No. {{ShortHash}}</a>
|
||||
{{#OP}}
|
||||
<a href="{{PostURL}}">[reply]</a>
|
||||
{{/OP}}
|
||||
</p>
|
||||
<p class="frontend">
|
||||
[[ {{Frontend}} ]]
|
||||
</p>
|
||||
<div class="files">
|
||||
{{#Attachments}}
|
||||
<a class="file" href="{{Source}}" title="{{Filename}}">
|
||||
<img class="file-thumbnail" src="{{Thumbnail}}" alt="{{Filename}}" />
|
||||
</a>
|
||||
{{/Attachments}}
|
||||
</div>
|
||||
<div class="post_body">{{{RenderBody}}}</div>
|
||||
</div>
|
6
contrib/templates/default/post_fail.mustache
Normal file
6
contrib/templates/default/post_fail.mustache
Normal file
@ -0,0 +1,6 @@
|
||||
<html>
|
||||
<meta http-equiv="refresh" content="1; {{redirect_url}}" />
|
||||
<body>
|
||||
<p>post failed: {{reason}}</p>
|
||||
</body>
|
||||
</html>
|
6
contrib/templates/default/post_success.mustache
Normal file
6
contrib/templates/default/post_success.mustache
Normal file
@ -0,0 +1,6 @@
|
||||
<html>
|
||||
<meta http-equiv="refresh" content="5; {{{redirect_url}}}" />
|
||||
<body>
|
||||
<pre>posted as {{message_id}}</pre>
|
||||
</body>
|
||||
</html>
|
64
contrib/templates/default/postform.mustache
Normal file
64
contrib/templates/default/postform.mustache
Normal file
@ -0,0 +1,64 @@
|
||||
{{!
|
||||
postform.mustache
|
||||
template parameters:
|
||||
- post_url ( the url of the post form )
|
||||
- reference ( the post we are replying to, or empty string if it's an op )
|
||||
- button ( the text for the reply button )
|
||||
}}
|
||||
<h1> posting </h1>
|
||||
<form action="{{post_url}}" enctype="multipart/form-data" name="post" method="post">
|
||||
<input type="hidden" name="reference" value="{{reference}}" />
|
||||
<input type="hidden" name="captcha" value="" id="captcha_input" />
|
||||
<table class="postform">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
Name
|
||||
</th>
|
||||
<td>
|
||||
<input type="text" name="name" value="" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Subject
|
||||
</th>
|
||||
<td>
|
||||
<input type="text" name="subject" value="" />
|
||||
<input type="submit" value="{{button}}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Comment
|
||||
</th>
|
||||
<td>
|
||||
<textarea type="text" name="message" cols=35 rows=5></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
File
|
||||
</th>
|
||||
<td>
|
||||
<input type="file" name="attachment" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Captcha
|
||||
</th>
|
||||
<td>
|
||||
<img id="captcha_img" src="" alt="captcha" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
</th>
|
||||
<td>
|
||||
<input type="text" name="captcha_solution" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
33
contrib/templates/default/postreply.mustache
Normal file
33
contrib/templates/default/postreply.mustache
Normal file
@ -0,0 +1,33 @@
|
||||
<div class="thread_reply" id="post_{{PostHash}}">
|
||||
<p class="intro">
|
||||
<label for="delete_{{PostHash}}">
|
||||
<span class="subject">
|
||||
{{Subject}}
|
||||
</span>
|
||||
<span class="name">
|
||||
{{#Sage}}
|
||||
<a href="mailto:sage">
|
||||
{{Name}}
|
||||
</a>
|
||||
{{/Sage}}
|
||||
{{^Sage}}
|
||||
{{Name}}
|
||||
{{/Sage}}
|
||||
</span>
|
||||
<time
|
||||
</label>
|
||||
<a href="{{PostURL}}" onclick="">
|
||||
No. {{PostHash}}
|
||||
</a>
|
||||
</p>
|
||||
<div class="files">
|
||||
{{#Image}}
|
||||
<a class="file" href="{{Source}}">
|
||||
<img class="file-thumbnail" src="{{Thumbnail}}" />
|
||||
</a>
|
||||
{{/Image}}
|
||||
</div>
|
||||
<div class="thread_reply_body">
|
||||
{{{RenderBody}}}
|
||||
</div>
|
||||
</div>
|
9
contrib/templates/default/static_base.mustache
Normal file
9
contrib/templates/default/static_base.mustache
Normal file
@ -0,0 +1,9 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>{{title}}</title>
|
||||
</head>
|
||||
<body>
|
||||
{{{content}}}
|
||||
</body>
|
||||
</html>
|
26
contrib/templates/default/thread.mustache
Normal file
26
contrib/templates/default/thread.mustache
Normal file
@ -0,0 +1,26 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<script type="text/javascript" src="{{thread.Prefix}}static/captcha.js"></script>
|
||||
<link rel="stylesheet" href="{{thread.Prefix}}static/site.css"></link>
|
||||
<title> {{thread.OP.Subject}} </title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- postform -->
|
||||
<div id="postform_container">
|
||||
{{{form}}}
|
||||
</div>
|
||||
<hr />
|
||||
<div class="thread" id="thread_{{thread.OP.PostHash}}">
|
||||
<div class="thread_header">
|
||||
</div>
|
||||
{{{thread.OP.RenderPost}}}
|
||||
{{# repls}}
|
||||
{{{RenderPost}}}
|
||||
<br/>
|
||||
{{/ repls}}
|
||||
</div>
|
||||
<br/>
|
||||
<hr/>
|
||||
</body>
|
||||
</html>
|
26
contrib/templates/default/ukko.mustache
Normal file
26
contrib/templates/default/ukko.mustache
Normal file
@ -0,0 +1,26 @@
|
||||
<html>
|
||||
<head>
|
||||
<title> ukko </title>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||
</head>
|
||||
<body>
|
||||
<div id="ukko_threads" class="threads_container">
|
||||
{{#threads}}
|
||||
<div class="ukko_thread_header">
|
||||
<p> Posted on <a href="{{{BoardURL}}}"><span class="ukko_boardname">{{OP.Board}}</span></a></p>
|
||||
</div>
|
||||
<div class="thread" id="thread_{{OP.PostHash}}">
|
||||
<div clsss="thread_header">
|
||||
</div>
|
||||
{{{OP.RenderPost}}}
|
||||
{{#Replies}}
|
||||
{{{RenderPost}}}
|
||||
<br />
|
||||
{{/Replies}}
|
||||
</div>
|
||||
<hr/>
|
||||
{{/threads}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
13
contrib/templates/keygen.mustache
Normal file
13
contrib/templates/keygen.mustache
Normal file
@ -0,0 +1,13 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||
<title> here is a new tripcode </title>
|
||||
</head>
|
||||
<body>
|
||||
<pre>New Tripcode:
|
||||
<b id="secret_key">secret: {{secret}}</b>
|
||||
<b id="public_key">public: {{public}}</b>
|
||||
<b id="capcode_key">tripcode: {{tripcode}}</b>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user