Merge branch 'neochan'
This commit is contained in:
commit
2e2968e188
100
build-js.sh
100
build-js.sh
@ -1,4 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
neochan="yes"
|
||||||
|
if [ "$1" == "--disable-neochan" ] ; then
|
||||||
|
neochan="no"
|
||||||
|
fi
|
||||||
|
|
||||||
root=$(readlink -e "$(dirname "$0")")
|
root=$(readlink -e "$(dirname "$0")")
|
||||||
set -e
|
set -e
|
||||||
if [ "x" == "x$root" ] ; then
|
if [ "x" == "x$root" ] ; then
|
||||||
@ -16,47 +22,48 @@ if [ ! -f "$GOPATH/bin/minify" ]; then
|
|||||||
go get -v github.com/tdewolff/minify/cmd/minify
|
go get -v github.com/tdewolff/minify/cmd/minify
|
||||||
fi
|
fi
|
||||||
|
|
||||||
outfile=$PWD/contrib/static/nntpchan.js
|
outfile="$PWD/contrib/static/nntpchan.js"
|
||||||
|
neochan_js_outfile="$PWD/contrib/static/neochan.js"
|
||||||
lint() {
|
neochan_css_outfile="$PWD/contrib/static/neochan.css"
|
||||||
if [ "$(which jslint)" == "" ] ; then
|
|
||||||
# no jslint
|
|
||||||
true
|
|
||||||
else
|
|
||||||
echo "jslint: $1"
|
|
||||||
jslint --browser "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
mini() {
|
mini() {
|
||||||
echo "minify $1"
|
echo "minify $1"
|
||||||
echo "" >> $2
|
echo "" >> $2
|
||||||
echo "/* begin $1 */" >> $2
|
echo "/* begin $1 */" >> $2
|
||||||
"$GOPATH/bin/minify" --mime=text/javascript >> $2 < $1
|
"$GOPATH/bin/minify" --mime=text/javascript >> $2 < $1
|
||||||
|
echo "" >> $2
|
||||||
echo "/* end $1 */" >> $2
|
echo "/* end $1 */" >> $2
|
||||||
}
|
}
|
||||||
|
|
||||||
# do linting too
|
css() {
|
||||||
if [ "x$1" == "xlint" ] ; then
|
echo "minify $1"
|
||||||
echo "linting..."
|
echo "" >> $2
|
||||||
for f in ./contrib/js/*.js ; do
|
echo "/* begin $1 */" >> $2
|
||||||
lint "$f"
|
lessc $1 >> $2
|
||||||
done
|
echo "" >> $2
|
||||||
fi
|
echo "/* end $1 */" >> $2
|
||||||
|
}
|
||||||
|
|
||||||
rm -f "$outfile"
|
initfile() {
|
||||||
|
|
||||||
|
rm -f "$1"
|
||||||
|
|
||||||
echo '/*' >> $outfile
|
echo '/*' >> "$1"
|
||||||
echo ' * For source code and license information please check https://github.com/majestrate/nntpchan' >> $outfile
|
echo ' * For source code and license information please check https://github.com/majestrate/nntpchan' >> "$1"
|
||||||
brandingfile=./contrib/branding.txt
|
brandingfile=./contrib/branding.txt
|
||||||
if [ -e "$brandingfile" ] ; then
|
if [ -e "$brandingfile" ] ; then
|
||||||
echo ' *' >> $outfile
|
echo ' *' >> "$1"
|
||||||
while read line; do
|
while read line; do
|
||||||
echo -n ' * ' >> $outfile;
|
echo -n ' * ' >> "$1";
|
||||||
echo $line >> $outfile;
|
echo $line >> "$1";
|
||||||
done < $brandingfile;
|
done < $brandingfile;
|
||||||
fi
|
fi
|
||||||
echo ' */' >> $outfile
|
echo ' */' >> "$1"
|
||||||
|
}
|
||||||
|
echo
|
||||||
|
echo "building nntpchan.js ..."
|
||||||
|
echo
|
||||||
|
initfile "$outfile"
|
||||||
|
|
||||||
if [ -e ./contrib/js/contrib/*.js ] ; then
|
if [ -e ./contrib/js/contrib/*.js ] ; then
|
||||||
for f in ./contrib/js/contrib/*.js ; do
|
for f in ./contrib/js/contrib/*.js ; do
|
||||||
@ -76,4 +83,37 @@ for f in ./contrib/js/vendor/*.js ; do
|
|||||||
mini "$f" "$outfile"
|
mini "$f" "$outfile"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ "$neochan" == "yes" ] ; then
|
||||||
|
set +e
|
||||||
|
for exe in lessc coffee ; do
|
||||||
|
which $exe &> /dev/null
|
||||||
|
if [ "$?" != "0" ] ; then
|
||||||
|
echo "$exe not installed";
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "building neochan.js ..."
|
||||||
|
echo
|
||||||
|
|
||||||
|
initfile "$neochan_js_outfile"
|
||||||
|
for f in ./contrib/js/neochan/*.coffee ; do
|
||||||
|
echo "compile $f"
|
||||||
|
coffee -cs < "$f" > "$f.js"
|
||||||
|
done
|
||||||
|
for f in ./contrib/js/neochan/*.js ; do
|
||||||
|
mini "$f" "$neochan_js_outfile"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "building neochan.css ..."
|
||||||
|
echo
|
||||||
|
initfile "$neochan_css_outfile"
|
||||||
|
for f in ./contrib/js/neochan/*.less ; do
|
||||||
|
css "$f" "$neochan_css_outfile"
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
echo
|
||||||
echo "ok"
|
echo "ok"
|
||||||
|
21
build.sh
21
build.sh
@ -6,9 +6,9 @@ if [ "" == "$root" ] ; then
|
|||||||
fi
|
fi
|
||||||
cd "$root"
|
cd "$root"
|
||||||
|
|
||||||
tags=""
|
tags="-tags disable_redis"
|
||||||
|
|
||||||
help_text="usage: $0 [--disable-redis]"
|
help_text="usage: $0 [--disable-neochan]"
|
||||||
|
|
||||||
# check for help flags first
|
# check for help flags first
|
||||||
for arg in "$@" ; do
|
for arg in "$@" ; do
|
||||||
@ -25,9 +25,13 @@ ipfs="no"
|
|||||||
rebuildjs="yes"
|
rebuildjs="yes"
|
||||||
_next=""
|
_next=""
|
||||||
unstable="no"
|
unstable="no"
|
||||||
|
neochan="yes"
|
||||||
# check for build flags
|
# check for build flags
|
||||||
for arg in "$@" ; do
|
for arg in "$@" ; do
|
||||||
case $arg in
|
case $arg in
|
||||||
|
"--disable-neochan")
|
||||||
|
neochan="no"
|
||||||
|
;;
|
||||||
"--unstable")
|
"--unstable")
|
||||||
unstable="yes"
|
unstable="yes"
|
||||||
;;
|
;;
|
||||||
@ -37,12 +41,6 @@ for arg in "$@" ; do
|
|||||||
"--ipfs")
|
"--ipfs")
|
||||||
ipfs="yes"
|
ipfs="yes"
|
||||||
;;
|
;;
|
||||||
"--cuckoo")
|
|
||||||
cuckoo="yes"
|
|
||||||
;;
|
|
||||||
"--disable-redis")
|
|
||||||
tags="$tags -tags disable_redis"
|
|
||||||
;;
|
|
||||||
"--revision")
|
"--revision")
|
||||||
_next="rev"
|
_next="rev"
|
||||||
;;
|
;;
|
||||||
@ -64,8 +62,13 @@ fi
|
|||||||
cd "$root"
|
cd "$root"
|
||||||
if [ "$rebuildjs" == "yes" ] ; then
|
if [ "$rebuildjs" == "yes" ] ; then
|
||||||
echo "rebuilding generated js..."
|
echo "rebuilding generated js..."
|
||||||
./build-js.sh
|
if [ "$neochan" == "no" ] ; then
|
||||||
|
./build-js.sh --disable-neochan
|
||||||
|
else
|
||||||
|
./build-js.sh
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset GOPATH
|
unset GOPATH
|
||||||
export GOPATH=$PWD/go
|
export GOPATH=$PWD/go
|
||||||
mkdir -p "$GOPATH"
|
mkdir -p "$GOPATH"
|
||||||
|
1
contrib/js/neochan/.gitignore
vendored
Normal file
1
contrib/js/neochan/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.coffee.js
|
1
contrib/js/neochan/default.less
Normal file
1
contrib/js/neochan/default.less
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
0
contrib/js/neochan/init.coffee
Normal file
0
contrib/js/neochan/init.coffee
Normal file
3
contrib/js/neochan/readme.md
Normal file
3
contrib/js/neochan/readme.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# neochan javascript directory
|
||||||
|
|
||||||
|
sass files for neochan templates
|
3
contrib/static/.gitignore
vendored
Normal file
3
contrib/static/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
nntpchan.js
|
||||||
|
neochan.js
|
||||||
|
neochan.css
|
@ -1,7 +1,9 @@
|
|||||||
|
<!DOCTYPE html5>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<link rel="stylesheet" href="site.css" />
|
<link rel="stylesheet" href="site.css" />
|
||||||
<title> NNTPChan Frequently Asked Questions </title>
|
<title> NNTPChan Frequently Asked Questions </title>
|
||||||
|
<meta charset="utf-8">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h2>NNTPChan faq </h2>
|
<h2>NNTPChan faq </h2>
|
||||||
@ -47,10 +49,6 @@
|
|||||||
<div><a href="https://github.com/majestrate/nntpchan/issues">github</a></div>
|
<div><a href="https://github.com/majestrate/nntpchan/issues">github</a></div>
|
||||||
</p>
|
</p>
|
||||||
<hr />
|
<hr />
|
||||||
<p>
|
|
||||||
<div>Please send any gripes/questions/inqueries/suggestions/complaints to ampernand [|at\] gmail {dot} com with subject starting with "nntpchan question" </div>
|
|
||||||
</p>
|
|
||||||
<hr />
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
35
contrib/templates/neochan/404.mustache
Normal file
35
contrib/templates/neochan/404.mustache
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{{!
|
||||||
|
404.mustache -- 404 page
|
||||||
|
template parameters:
|
||||||
|
- prefix (the site prefix)
|
||||||
|
}}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title> 404 </title>
|
||||||
|
<meta charset="utf-8"></meta>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/neochan-site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<center>
|
||||||
|
<div class="not_found fade-in">
|
||||||
|
<img src="{{prefix}}static/404.png"></img>
|
||||||
|
<div class="not_found_message">
|
||||||
|
{{#i18n.Translations}}{{resource_not_found}}{{/i18n.Translations}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
<script type="text/javascript">
|
||||||
|
neochan_init(function() {
|
||||||
|
ready();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<hr />
|
||||||
|
<footer>
|
||||||
|
<p class="legal">All posts on this site are the responsibility of the individual poster and not the administration, pursuant to 47 U.S.C. § 230.</p>
|
||||||
|
<p class="legal">To make a DMCA request or report illegal content, please contact the administration</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
71
contrib/templates/neochan/board.mustache
Normal file
71
contrib/templates/neochan/board.mustache
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{{!
|
||||||
|
board.mustache, displays the contents of page N of the board
|
||||||
|
|
||||||
|
template parameters:
|
||||||
|
- board ( the model of the current page )
|
||||||
|
- page ( the page number of the current page )
|
||||||
|
|
||||||
|
board has the properties:
|
||||||
|
- Prefix ( absolute path like //site.tld/ or /path/ )
|
||||||
|
- Board ( the name of the board )
|
||||||
|
- Navbar ( a function that renders the navbar, should not be escaped )
|
||||||
|
- Threads ( a list of Thread Models with the last few replies )
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{board.Board}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- begin navbar -->
|
||||||
|
{{{board.Navbar}}}
|
||||||
|
<!-- end navbar -->
|
||||||
|
<center>
|
||||||
|
<div id="nntpchan_banner">
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
<div class="board_header">{{board.Board}}</div>
|
||||||
|
<div class="board_header_catalog"><a href="{{board.Prefix}}catalog-{{board.Name}}.html"> {{#i18n.Translations}}{{catalog_label}}{{/i18n.Translations}} </a></div>
|
||||||
|
<!-- postform -->
|
||||||
|
<div id="postform_container">
|
||||||
|
{{{form}}}
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div id="threads_container">
|
||||||
|
{{#board.Threads}}
|
||||||
|
<div class="thread" id="thread_{{OP.PostHash}}">
|
||||||
|
<div class="thread_header">
|
||||||
|
</div>
|
||||||
|
{{{OP.Truncate.RenderPost}}}
|
||||||
|
{{#Truncate.Replies}}
|
||||||
|
{{{Truncate.RenderPost}}}
|
||||||
|
{{/Truncate.Replies}}
|
||||||
|
<hr />
|
||||||
|
</div>
|
||||||
|
{{/board.Threads}}
|
||||||
|
</div>
|
||||||
|
<div class="pagelist">{{# board.PageList }}[<a href="{{LinkURL}}"> {{Text}} </a>] {{/ board.PageList }}
|
||||||
|
<span class="navbar-sep">
|
||||||
|
|
|
||||||
|
</span>
|
||||||
|
<a href="{{board.Prefix}}catalog-{{board.Name}}.html"> {{#i18n.Translations}}{{catalog_label}}{{/i18n.Translations}} </a>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var prefix = "{{board.Prefix}}";
|
||||||
|
var e = document.getElementById("nntpchan_banner");
|
||||||
|
nntpchan_inject_banners(e, prefix);
|
||||||
|
init(prefix);
|
||||||
|
ready();
|
||||||
|
</script>
|
||||||
|
<hr/>
|
||||||
|
<footer>
|
||||||
|
<p class="legal">All posts on this site are the responsibility of the individual poster and not the administration, pursuant to 47 U.S.C. § 230.</p>
|
||||||
|
<p class="legal">To make a DMCA request or report illegal content, please contact the administration</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
51
contrib/templates/neochan/boardlist.mustache
Normal file
51
contrib/templates/neochan/boardlist.mustache
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{{!
|
||||||
|
boardlist.mustache -- full list of every board
|
||||||
|
template parameters:
|
||||||
|
- graph ( a list of 4 string tuples: (board, posts_per_hour, posts_per_day, total_posts) )
|
||||||
|
- frontend ( the name of the frontend )
|
||||||
|
- prefix ( the site's prefix )
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css"></link>
|
||||||
|
<title> {{frontend}} {{#i18n.Translations}}{{board_list_title}}{{/i18n.Translations}} </title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<center>
|
||||||
|
<div class="index-outer">
|
||||||
|
<div class="index-inner">
|
||||||
|
<table id="board_graph">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> {{#i18n.Translations}}{{board_label}}{{/i18n.Translations}} </th>
|
||||||
|
<th> {{#i18n.Translations}}{{pph_label}}{{/i18n.Translations}} </th>
|
||||||
|
<th> {{#i18n.Translations}}{{ppd_label}}{{/i18n.Translations}} </th>
|
||||||
|
<th> {{#i18n.Translations}}{{total}}{{/i18n.Translations}} </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{# graph}}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="{{prefix}}{{Board}}-0.html">{{Board}}</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{Hour}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{Day}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{All}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/ graph}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
47
contrib/templates/neochan/catalog.mustache
Normal file
47
contrib/templates/neochan/catalog.mustache
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{catalog_title}}{{/i18n.Translations}} {{board.Name}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- begin navbar -->
|
||||||
|
{{{board.Navbar}}}
|
||||||
|
<!-- end navbar -->
|
||||||
|
<center>
|
||||||
|
<div id="nntpchan_banner">
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
<div class="board_header">{{#i18n.Translations}}{{catalog_title}}{{/i18n.Translations}} {{board.Name}}</div>
|
||||||
|
<!-- postform -->
|
||||||
|
<hr />
|
||||||
|
<div id="catalog_container">
|
||||||
|
{{#board.Threads}}
|
||||||
|
<div class="catalog_thread">
|
||||||
|
<a class="linkThumb" href="{{OP.PostURL}}"><img src="{{OP.RepresentativeThumb}}"></a>
|
||||||
|
<div class="catalog_header">{{#i18n.Translations}}{{replies_short_label}}{{/i18n.Translations}}: {{ReplyCount}} / {{#i18n.Translations}}{{pictures_short_label}}{{/i18n.Translations}}: {{Page}}</div>
|
||||||
|
<div class="catalog_subject">{{OP.Subject}}</div>
|
||||||
|
<div class="catalog_body">
|
||||||
|
{{{OP.RenderBody}}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/board.Threads}}
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var e = document.getElementById("nntpchan_banner");
|
||||||
|
nntpchan_inject_banners(e, "{{board.Prefix}}");
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<hr/>
|
||||||
|
<footer>
|
||||||
|
<p class="legal">All posts on this site are the responsibility of the individual poster and not the administration, pursuant to 47 U.S.C. § 230.</p>
|
||||||
|
<p class="legal">To make a DMCA request or report illegal content, please contact the administration</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
87
contrib/templates/neochan/frontpage.mustache
Normal file
87
contrib/templates/neochan/frontpage.mustache
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
{{!
|
||||||
|
frontpage.mustache -- template for index.html
|
||||||
|
template parameters:
|
||||||
|
- boardgraph ( markup of boardPageRows instance, see srnd/model.go )
|
||||||
|
- postgraph ( markup of postsGraph instance , see srnd/model.go )
|
||||||
|
- overview ( markup of overviewModel instance , see srnd/model.go )
|
||||||
|
- totalposts ( the number of total posts we have ever seen )
|
||||||
|
- frontend ( the name of the frontend )
|
||||||
|
- prefix ( the site's prefix )
|
||||||
|
}}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/neochan-site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<meta charset="utf-8"></meta>
|
||||||
|
<script src="{{prefix}}static/nntpchan.js" type="text/javascript"></script>
|
||||||
|
<title> {{frontend}} </title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{{{navbar}}}
|
||||||
|
<div id="wrapper" class="fade-in">
|
||||||
|
<div class="index-outer">
|
||||||
|
<div id="nntpchan-banner">
|
||||||
|
</div>
|
||||||
|
<div class="index-inner">
|
||||||
|
<p>
|
||||||
|
Please read the <a href="{{prefix}}static/faq.html">FAQ</a> before posting
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="index-inner">
|
||||||
|
<table class="posts-table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="posts-td">
|
||||||
|
{{{postsgraph}}}
|
||||||
|
</td>
|
||||||
|
<td class="board-td">
|
||||||
|
{{! todo: move boardgraph into its own file like postsgraph }}
|
||||||
|
<table id="board-graph">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> {{#i18n.Translations}}{{board_label}}{{/i18n.Translations}} </th>
|
||||||
|
<th> {{#i18n.Translations}}{{posts_hour}}{{/i18n.Translations}} </th>
|
||||||
|
<th> {{#i18n.Translations}}{{posts_today}}{{/i18n.Translations}} </th>
|
||||||
|
<th> {{#i18n.Translations}}{{total}}{{/i18n.Translations}} </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{# boardgraph}}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a id="board-{{Board}}" href="{{prefix}}{{Board}}-0.html">{{Board}}</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{Hour}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{Day}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{All}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/ boardgraph}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{{{overview}}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
neochan_init(function() {
|
||||||
|
ready();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<hr/>
|
||||||
|
<footer>
|
||||||
|
<p class="legal">All posts on this site are the responsibility of the individual poster and not the administration, pursuant to 47 U.S.C. § 230.</p>
|
||||||
|
<p class="legal">To make a DMCA request or report illegal content, please contact the administration</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
37
contrib/templates/neochan/graph_history.mustache
Normal file
37
contrib/templates/neochan/graph_history.mustache
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{{!
|
||||||
|
graph_history.mustache
|
||||||
|
template parameters:
|
||||||
|
- history ( a list of PostEntry instances, see srnd/model.go )
|
||||||
|
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"></meta>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<title>{{#i18n.Translations}}{{post_history_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<td>
|
||||||
|
<table id="history_graph">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{#i18n.Translations}}{{month}}{{/i18n.Translations}}</th>
|
||||||
|
<th>{{#i18n.Translations}}{{posts}}{{/i18n.Translations}}</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{#history.Scale}}
|
||||||
|
<tr>
|
||||||
|
<td>{{Date}}</td>
|
||||||
|
<td class="history_num">{{Num}}</td>
|
||||||
|
<td>{{OvercockGraph}}</td>
|
||||||
|
</tr>
|
||||||
|
{{/history.Scale}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</body>
|
||||||
|
</html>
|
64
contrib/templates/neochan/inst_api.mustache
Normal file
64
contrib/templates/neochan/inst_api.mustache
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{api_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{api_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{api_username}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="user" value="{{dialog.User}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{api_password_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="password" name="pass" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{api_secret_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="secret" value="{{dialog.Secret}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
64
contrib/templates/neochan/inst_bins.mustache
Normal file
64
contrib/templates/neochan/inst_bins.mustache
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{binary_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{binary_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{convert_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="convert" value="{{dialog.Convert}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{ffmpeg_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="ffmpeg" value="{{dialog.FFmpeg}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{sox_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="sox" value="{{dialog.Sox}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
64
contrib/templates/neochan/inst_cache.mustache
Normal file
64
contrib/templates/neochan/inst_cache.mustache
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{cache_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{cache_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="radio" name="cache" value="file" checked> {{#i18n.Translations}}{{file_cache_name}}{{/i18n.Translations}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="radio" name="cache" value="null"> {{#i18n.Translations}}{{null_cache_name}}{{/i18n.Translations}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="radio" name="cache" value="redis"> {{#i18n.Translations}}{{redis_cache_name}}{{/i18n.Translations}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
56
contrib/templates/neochan/inst_crypto.mustache
Normal file
56
contrib/templates/neochan/inst_crypto.mustache
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{crypto_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{crypto_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{host_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="host" value="{{dialog.Host}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{key_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="key" value="{{dialog.Key}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
56
contrib/templates/neochan/inst_db.mustache
Normal file
56
contrib/templates/neochan/inst_db.mustache
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{db_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{db_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="radio" name="db" value="postgres"> {{#i18n.Translations}}{{postgres_name}}{{/i18n.Translations}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="radio" name="db" value="redis" checked> {{#i18n.Translations}}{{redis_name}}{{/i18n.Translations}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
72
contrib/templates/neochan/inst_frontend.mustache
Normal file
72
contrib/templates/neochan/inst_frontend.mustache
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{frontend_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{frontend_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{frontend_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="name" value="{{dialog.Name}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{locale_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="locale" value="{{dialog.Locale}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{allow_files_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="allow_files" value="1" checked>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{enable_json_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="json" value="1">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
56
contrib/templates/neochan/inst_key.mustache
Normal file
56
contrib/templates/neochan/inst_key.mustache
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{key_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{key_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{pubkey_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="public" value="{{dialog.Public}}" size="65" readonly>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{secretkey_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="secret" value="{{dialog.Secret}}" size="65" readonly>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
80
contrib/templates/neochan/inst_nntp.mustache
Normal file
80
contrib/templates/neochan/inst_nntp.mustache
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{nntp_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{nntp_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{nntp_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="nntp_name" value="{{dialog.Name}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{allow_attachments_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="allow_attachments" value="1" checked>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{allow_anon_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="allow_anon" value="1" checked>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{allow_anon_attachments_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="allow_anon_attachments" value="1">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{require_tls_prompt}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="require_tls" value="1" checked>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
72
contrib/templates/neochan/inst_postgres_db.mustache
Normal file
72
contrib/templates/neochan/inst_postgres_db.mustache
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{postgres_db_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{postgres_db_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{host_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="host" value="{{dialog.Host}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{port_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="port" value="{{dialog.Port}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{username_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="user" value="{{dialog.Username}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{password_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="password" name="password" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
64
contrib/templates/neochan/inst_redis_cache.mustache
Normal file
64
contrib/templates/neochan/inst_redis_cache.mustache
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{redis_db_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{redis_db_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{host_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="host" value="{{dialog.Host}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{port_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="port" value="{{dialog.Port}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{password_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="password" name="password" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
64
contrib/templates/neochan/inst_redis_db.mustache
Normal file
64
contrib/templates/neochan/inst_redis_db.mustache
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{board.Prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{redis_db_install_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="installer_header">{{#i18n.Translations}}{{redis_db_install_title}}{{/i18n.Translations}}</div>
|
||||||
|
{{#dialog.HasError}}
|
||||||
|
<p class="installer_error">{{dialog.Error}}</p>
|
||||||
|
{{/dialog.HasError}}
|
||||||
|
<form action="" method="post" autocomplete="off">
|
||||||
|
<div id="install-outer">
|
||||||
|
<div id="installer-inner">
|
||||||
|
<table class="installer-tab">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{host_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="host" value="{{dialog.Host}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{port_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="port" value="{{dialog.Port}}">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{password_name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="password" name="password" value="">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{{#dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{next_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
{{^dialog.HasNext}}
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{finish_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
{{/dialog.HasNext}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{#dialog.HasPrevious}}
|
||||||
|
<div class="back_button">
|
||||||
|
<form action="" method="post">
|
||||||
|
<input type="hidden" name="back" value="true" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{previous_prompt}}{{/i18n.Translations}}" class="button" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
{{/dialog.HasPrevious}}
|
||||||
|
</body>
|
||||||
|
</html>
|
32
contrib/templates/neochan/keygen.mustache
Normal file
32
contrib/templates/neochan/keygen.mustache
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{{!
|
||||||
|
keygen.mustache -- page containing a newly generated tripcode
|
||||||
|
template parameters:
|
||||||
|
- prefix ( the site prefix )
|
||||||
|
- public ( the public key in hex )
|
||||||
|
- secret ( the secret key in hex )
|
||||||
|
- tripcode ( html version of the public key )
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"></meta>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
<title>{{#i18n.Translations}}{{new_tripcode_title}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="wrapper" class="fade-in">
|
||||||
|
<pre>{{#i18n.Translations}}{{new_tripcode_label}}{{/i18n.Translations}}:
|
||||||
|
<div id="secret_key">{{#i18n.Translations}}{{secret_key}}{{/i18n.Translations}}: {{secret}}</div>
|
||||||
|
<div id="public_key">{{#i18n.Translations}}{{public_key}}{{/i18n.Translations}}: {{public}}</div>
|
||||||
|
<div>{{#i18n.Translations}}{{tripcode}}{{/i18n.Translations}}: <span class="tripcode" id="capcode_key">{{{tripcode}}}</span></div>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
neochan_init(function() {
|
||||||
|
ready();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
32
contrib/templates/neochan/live.mustache
Normal file
32
contrib/templates/neochan/live.mustache
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{{!
|
||||||
|
live.mustache -- live ui
|
||||||
|
template parameters:
|
||||||
|
- prefix ( site prefix )
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title> {{#i18n.Translations}}{{overboard_title}}{{/i18n.Translations}} </title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/livechan.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<style type="text/css" id="convo_filter">
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>you need js for livechan mode</noscript>
|
||||||
|
<script type="text/javascript" >
|
||||||
|
var e = document.createElement("div");
|
||||||
|
e.setAttribute("id", "chat");
|
||||||
|
e.setAttribute("style", "position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;");
|
||||||
|
document.body.appendChild(e);
|
||||||
|
var board = "";
|
||||||
|
if (location.hash != "" ) {
|
||||||
|
board = location.hash.substr(1);
|
||||||
|
}
|
||||||
|
new Chat(e, board, { prefix : "{{prefix}}" });
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
49
contrib/templates/neochan/modfeed.mustache
Normal file
49
contrib/templates/neochan/modfeed.mustache
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{{!
|
||||||
|
modfeed.mustache -- admin nntp feed page
|
||||||
|
template parameters:
|
||||||
|
- prefix ( the site's prefix )
|
||||||
|
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<!-- yes it uses js -->
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/mod.js"></script>
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/feed.js"></script>
|
||||||
|
<title> {{#i18n.Translations}}{{modpage_title}}{{/i18n.Translations}} </title>
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div id="nntpchan_mod_result"></div>
|
||||||
|
<div class="nntpchan_feed_pane">
|
||||||
|
<pre> Add Feed </pre>
|
||||||
|
<label for="add_feed_host">Host</label>
|
||||||
|
<input id="add_feed_host" />
|
||||||
|
<label for="add_feed_host">Port</label>
|
||||||
|
<input id="add_feed_port" />
|
||||||
|
<label for="add_feed_name">Name</label>
|
||||||
|
<input id="add_feed_name" />
|
||||||
|
<button onclick="nntp_feed_add()">Add</button>
|
||||||
|
</div>
|
||||||
|
<div class="nntpchan_feed_pane">
|
||||||
|
<pre> Remove Feed </pre>
|
||||||
|
<label for="del_feed_name">Name</label>
|
||||||
|
<input id="del_feed_name" />
|
||||||
|
<button onclick="nntp_feed_del()">Remove</button>
|
||||||
|
</div>
|
||||||
|
<div class="nntpchan_feed_pane">
|
||||||
|
<pre> Sync Feeds </pre>
|
||||||
|
<button onclick="nntpchan_admin('feed.sync')">Sync All</button>
|
||||||
|
</div>
|
||||||
|
<div id="nntpchan_feed_result"></div>
|
||||||
|
<div id="nntpchan_feeds"></div>
|
||||||
|
<script>
|
||||||
|
nntp_feed_update();
|
||||||
|
</script>
|
||||||
|
<noscript>
|
||||||
|
<b>{{#i18n.Translations}}{{nojs_info}}{{/i18n.Translations}}</b>
|
||||||
|
</noscript>
|
||||||
|
</body>
|
||||||
|
</html>
|
16
contrib/templates/neochan/modlogin.mustache
Normal file
16
contrib/templates/neochan/modlogin.mustache
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<title>{{#i18n.Translations}}{{login}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form action="login" method="POST" name="modlogin">
|
||||||
|
<label for="mod_key">{{#i18n.Translations}}{{secret_key}}{{/i18n.Translations}}</label>
|
||||||
|
<input type="password" id="mod_key" name="privkey" />
|
||||||
|
<input type="submit" value="{{#i18n.Translations}}{{login}}{{/i18n.Translations}}" />
|
||||||
|
{{{csrfField}}}
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
20
contrib/templates/neochan/modlogin_result.mustache
Normal file
20
contrib/templates/neochan/modlogin_result.mustache
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
modlogin_result.mustache -- shows the result of a login attempt
|
||||||
|
template parameters:
|
||||||
|
- prefix ( the site prefix )
|
||||||
|
- mod_prefix ( the prefix to the mod panel, could be something like https://mod.site.tld/ or /mod/ )
|
||||||
|
- message ( the message returned from the login attempt )
|
||||||
|
- fail ( present if the login failed ) // not yet added
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<meta http-equiv="refresh" content="1; {{mod_prefix}}"></meta>
|
||||||
|
<title>{{#i18n.Translations}}{{login}}{{/i18n.Translations}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>{{message}}</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
109
contrib/templates/neochan/modpage.mustache
Normal file
109
contrib/templates/neochan/modpage.mustache
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
{{!
|
||||||
|
modpage.mustache -- the moderator panel when logged in
|
||||||
|
template parameters:
|
||||||
|
- prefix ( the site's prefix )
|
||||||
|
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<!-- yes it uses js -->
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/mod.js"></script>
|
||||||
|
<title> {{#i18n.Translations}}{{modpage_title}}{{/i18n.Translations}} </title>
|
||||||
|
</head>
|
||||||
|
<body onload="main()">
|
||||||
|
<div>
|
||||||
|
<div> {{#i18n.Translations}}{{post_actions_label}}{{/i18n.Translations}} </div>
|
||||||
|
<hr />
|
||||||
|
<div>
|
||||||
|
<label for="nntpchan_mod_target">{{#i18n.Translations}}{{target_label}}{{/i18n.Translations}}</label>
|
||||||
|
<input id="nntpchan_mod_target" type="text" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_ban()">{{#i18n.Translations}}{{ban_url_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_delete()">{{#i18n.Translations}}{{delete_url_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_unban()">{{#i18n.Translations}}{{unban_ip_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div>
|
||||||
|
<div> {{#i18n.Translations}}{{key_actions_label}}{{/i18n.Translations}} </div>
|
||||||
|
<div>
|
||||||
|
<label for="nntpchan_board_target">{{#i18n.Translations}}{{pubkey_label}}{{/i18n.Translations}}:</label>
|
||||||
|
<input type="text" id="nntpchan_key_target" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_key_add()">{{#i18n.Translations}}{{add_key_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_key_del()">{{#i18n.Translations}}{{remove_key_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div>
|
||||||
|
<div> {{#i18n.Translations}}{{nntp_login_label}}{{/i18n.Translations}} </div>
|
||||||
|
<div>
|
||||||
|
<label for="nntpchan_nntp_username">{{#i18n.Translations}}{{username}}{{/i18n.Translations}}:</label>
|
||||||
|
<input id="nntpchan_nntp_username" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="nntpchan_nntp_passwd">{{#i18n.Translations}}{{password}}{{/i18n.Translations}}:</label>
|
||||||
|
<input type="password" id="nntpchan_nntp_passwd" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin_nntp('nntp.login.add')">{{#i18n.Translations}}{{add_user_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin_nntp('nntp.login.del')">{{#i18n.Translations}}{{remove_user_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div>
|
||||||
|
<div> {{#i18n.Translations}}{{board_actions_label}}{{/i18n.Translations}} </div>
|
||||||
|
<div>
|
||||||
|
<label for="nntpchan_board_target">{{#i18n.Translations}}{{board_name_title}}{{/i18n.Translations}}:</label>
|
||||||
|
<input id="nntpchan_board_target" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin_board('frontend.add')">{{#i18n.Translations}}{{add_board_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin_board('frontend.regen')">{{#i18n.Translations}}{{regenerate_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin_board('frontend.ban')">{{#i18n.Translations}}{{ban_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_admin_board('frontend.unban')">{{#i18n.Translations}}{{unban_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin_board('frontend.nuke')">{{#i18n.Translations}}{{nuke_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
{{#i18n.Translations}}{{light_actions_label}}{{/i18n.Translations}}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin('template.reload')">{{#i18n.Translations}}{{reload_templates_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div>
|
||||||
|
<label>{{#i18n.Translations}}{{heavy_actions_label}}{{/i18n.Translations}}</label>
|
||||||
|
<div>
|
||||||
|
<button onclick="nntpchan_admin('frontend.regen')">{{#i18n.Translations}}{{regenerate_markup_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_admin('thumbnail.regen')">{{#i18n.Translations}}{{regenerate_thumbs_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_admin('feed.sync')">{{#i18n.Translations}}{{feed_sync_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
<button onclick="nntpchan_admin('store.expire')">{{#i18n.Translations}}{{expire_old_prompt}}{{/i18n.Translations}}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="{{prefix}}mod/feeds">nntp feed management</a>
|
||||||
|
</div>
|
||||||
|
<div id="nntpchan_mod_result"></div>
|
||||||
|
<noscript>
|
||||||
|
<b>{{#i18n.Translations}}{{nojs_info}}{{/i18n.Translations}}</b>
|
||||||
|
</noscript>
|
||||||
|
</body>
|
||||||
|
</html>
|
48
contrib/templates/neochan/navbar.mustache
Normal file
48
contrib/templates/neochan/navbar.mustache
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{{!
|
||||||
|
navbar.mustache -- element on the top of each nod-mod page
|
||||||
|
|
||||||
|
TODO: make this not suck, have a board list, have board page list
|
||||||
|
|
||||||
|
template parameters:
|
||||||
|
- name ( the name of whatever resource we are on, board/thread )
|
||||||
|
- frontend ( the name of the frontend we are on )
|
||||||
|
- links ( a list of Link Models to display )
|
||||||
|
- prefix ( site prefix )
|
||||||
|
}}
|
||||||
|
<div class="navbar">
|
||||||
|
<span class="navbar-name">
|
||||||
|
<span class="board_title">{{name}}</span>
|
||||||
|
{{#i18n.Translations}}{{navbar_on}}{{/i18n.Translations}}
|
||||||
|
<span class="frontend_title">{{frontend}}</span>
|
||||||
|
</span>
|
||||||
|
<span class="navbar-sep">
|
||||||
|
|
|
||||||
|
</span>
|
||||||
|
<span class="navbar-links">
|
||||||
|
<span class="navbar-links-title">
|
||||||
|
Pages:
|
||||||
|
</span>
|
||||||
|
{{# links }}
|
||||||
|
<span class="navbar-link"><a href="{{LinkURL}}">{{Text}}</a></span>
|
||||||
|
{{/ links }}
|
||||||
|
</span>
|
||||||
|
<span class="navbar-sep">
|
||||||
|
|
|
||||||
|
</span>
|
||||||
|
<span class="navbar-links">
|
||||||
|
<span class="navbar-link"><a href="{{prefix}}">{{#i18n.Translations}}{{front_page_title}}{{/i18n.Translations}}</a></span>
|
||||||
|
</span>
|
||||||
|
<span class="navbar-sep">
|
||||||
|
|
|
||||||
|
</span>
|
||||||
|
<span class="navbar-links">
|
||||||
|
<span class="navbar-link"><a href="{{prefix}}ukko.html">{{#i18n.Translations}}{{overboard_title}}{{/i18n.Translations}}</a></span>
|
||||||
|
</span>
|
||||||
|
<span class="navbar-sep">
|
||||||
|
|
|
||||||
|
</span>
|
||||||
|
<span class="navbar-right navbar-links">
|
||||||
|
<span class="navbar-link" onclick="neochan_navbar_options_clicked(this)">[options]</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr />
|
56
contrib/templates/neochan/newboard.mustache
Normal file
56
contrib/templates/neochan/newboard.mustache
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>{{#i18n.Translations}}{{new_board_title}}{{/i18n.Translations}}</title>
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/newboard.js">
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>{{#i18n.Translations}}{{first_post_label}}{{/i18n.Translations}}</p>
|
||||||
|
<hr />
|
||||||
|
<form action="{{prefix}}post/" enctype="multipart/form-data" name="post" method="post" id="postform" >
|
||||||
|
<div id="postform-outer">
|
||||||
|
<div id="postform-inner">
|
||||||
|
<table class="postform">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{board_name_title}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="name" value="" id="boardname" />
|
||||||
|
<button onclick="createBoard()">Create Board</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{comment}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<textarea id="postform_message" name="message" cols=40 rows=5></textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{captcha}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<img id="captcha_img" src="{{prefix}}captcha/img" alt="captcha" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{solution}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="captcha" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
25
contrib/templates/neochan/overview.mustache
Normal file
25
contrib/templates/neochan/overview.mustache
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{{! overview.mustache
|
||||||
|
paramters:
|
||||||
|
|
||||||
|
- overview (list of PostModels in order of last posted)
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
<table id="overview_graph">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{#i18n.Translations}}{{newsgroup}}{{/i18n.Translations}}</th>
|
||||||
|
<th>{{#i18n.Translations}}{{posted}}{{/i18n.Translations}}</th>
|
||||||
|
<th>{{#i18n.Translations}}{{subject}}{{/i18n.Translations}}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{#overview}}
|
||||||
|
<tr>
|
||||||
|
<td><a href="{{Prefix}}{{Board}}-0.html">{{Board}}</td>
|
||||||
|
<td>{{Date}}</td>
|
||||||
|
<td><a href="{{PostURL}}">{{Truncate.Subject}}</a></td>
|
||||||
|
</tr>
|
||||||
|
{{/overview}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
66
contrib/templates/neochan/post.mustache
Normal file
66
contrib/templates/neochan/post.mustache
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<div id="{{post.PostHash}}" class="{{post.CSSClass}}"
|
||||||
|
data-frontend="{{post.Frontend}}"
|
||||||
|
data-newsgroup="{{post.Board}}"
|
||||||
|
data-msgid="{{post.MessageID}}"
|
||||||
|
data-msgidhash="{{post.PostHash}}"
|
||||||
|
data-rootmsgid="{{post.Reference}}"
|
||||||
|
data-rootmsgidhash="{{post.ReferenceHash}}"
|
||||||
|
{{#post.Sage}}
|
||||||
|
data-sage="1"
|
||||||
|
{{/post.Sage}}
|
||||||
|
{{#post.IsI2P}}
|
||||||
|
data-origin="i2p"
|
||||||
|
{{/post.IsI2P}}
|
||||||
|
{{#post.IsTor}}
|
||||||
|
data-origin="tor"
|
||||||
|
{{/post.IsTor}}
|
||||||
|
{{#post.IsClearnet}}
|
||||||
|
data-origin="clearnet"
|
||||||
|
{{/post.IsClearnet}}
|
||||||
|
data-posturl="{{post.PostURL}}">
|
||||||
|
<legend class="postheader">
|
||||||
|
<span class="origin">
|
||||||
|
{{#post.IsI2P}}
|
||||||
|
<img src="{{post.Prefix}}static/i2p.png" title="{{#i18n.Translations}}{{from_i2p}}{{/i18n.Translations}}" />
|
||||||
|
{{/post.IsI2P}}
|
||||||
|
{{#post.IsTor}}
|
||||||
|
<img src="{{post.Prefix}}static/tor.png" title="{{#i18n.Translations}}{{from_tor}}{{/i18n.Translations}}" />
|
||||||
|
{{/post.IsTor}}
|
||||||
|
{{#post.IsClearnet}}
|
||||||
|
<img src="{{post.Prefix}}static/clearnet.png" title="{{#i18n.Translations}}{{from_clearnet}}{{/i18n.Translations}}" />
|
||||||
|
{{/post.IsClearnet}}
|
||||||
|
</span>
|
||||||
|
<div class="postreply">
|
||||||
|
<a class="postno" onclick="nntpchan_reply(this, '{{post.ShortHash}}');" root="{{post.Reference}}" boardname="{{post.Board}}">>>{{post.ShortHash}}</a>
|
||||||
|
<a href="{{post.PostURL}}">[{{#i18n.Translations}}{{reply_label}}{{/i18n.Translations}}]</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Subject: <span class="subject">{{post.Subject}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Name: <span class="name">{{post.Name}}</span><span clas="tripcode">{{{post.Pubkey}}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
MessageID: <span class="msgid">{{post.MessageID}}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Date: <time datetime="{{post.DateRFC}}">{{post.Date}}</time>
|
||||||
|
</div>
|
||||||
|
</legend>
|
||||||
|
<hr>
|
||||||
|
<div class="attachments">
|
||||||
|
{{#post.Attachments}}
|
||||||
|
<figure data-sha512="{{Hash}}">
|
||||||
|
<figcaption>
|
||||||
|
<a class="download_link" href="{{Source}}" download="{{Filename}}">{{#i18n.Translations}}{{download_prompt}}{{/i18n.Translations}}</a>
|
||||||
|
<a class="file" href="{{Source}}" title="{{Filename}}" target="_blank"><img src="{{Thumbnail}}" alt="{{Filename}}" class="thumbnail"/></a>
|
||||||
|
<a class="fname_link" title="{{Filename}}" href="{{Source}}">{{Filename}}</a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
{{/post.Attachments}}
|
||||||
|
</div>
|
||||||
|
<div class="post_body">
|
||||||
|
<pre>{{{post.RenderBody}}}</pre>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
</div>
|
11
contrib/templates/neochan/post_fail.mustache
Normal file
11
contrib/templates/neochan/post_fail.mustache
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
<meta http-equiv="refresh" content="5; {{redirect_url}}" />
|
||||||
|
<body>
|
||||||
|
<pre>{{#i18n.Translations}}{{post_failed_label}}{{/i18n.Translations}}: {{reason}}</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
49
contrib/templates/neochan/post_retry.mustache
Normal file
49
contrib/templates/neochan/post_retry.mustache
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title> try again </title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form enctype="multipart/form-data" name="post" method="post">
|
||||||
|
{{#attachment}}
|
||||||
|
<input type="hidden" name="attachment_data" value="{{attachment}}" />
|
||||||
|
<input type="hidden" name="attachment_filename" value="{{attachment_filename}}" />
|
||||||
|
<input type="hidden" name="attachment_mime" value="{{attachment_type}}" />
|
||||||
|
{{/attachment}}
|
||||||
|
<input type="hidden" name="reference" value="{{reference}}" />
|
||||||
|
<input type="hidden" name="name" value="{{name}}" />
|
||||||
|
<input type="hidden" name="subject" value="{{subject}}" />
|
||||||
|
<input type="hidden" name="captcha_id" value="{{captcha_id}}" />
|
||||||
|
<input type="hidden" name="message" value="{{message}}" />
|
||||||
|
<div id="postform-outer">
|
||||||
|
<div id="postform-inner">
|
||||||
|
<div>{{fail_message}}</div>
|
||||||
|
<table class="postform">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{captcha}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<img id="captcha_img" src="{{prefix}}captcha/{{captcha_id}}.png" alt="captcha" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{solution}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="captcha" />
|
||||||
|
<input type="submit" value="Post" class="button" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
17
contrib/templates/neochan/post_success.mustache
Normal file
17
contrib/templates/neochan/post_success.mustache
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{{!
|
||||||
|
post_success.mustache -- shown when we do a successful post
|
||||||
|
template parameters:
|
||||||
|
- redirect_url ( the url of the next page we should redirect to )
|
||||||
|
- message_id ( the value of the Message-ID header in the post we made, the truncated sha1 of this is the >>posthash )
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
<meta http-equiv="refresh" content="4; {{redirect_url}}" />
|
||||||
|
<body>
|
||||||
|
<pre>{{#i18n.Translations}}{{posted_as_label}}{{/i18n.Translations}} {{message_id}}</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
93
contrib/templates/neochan/postform.mustache
Normal file
93
contrib/templates/neochan/postform.mustache
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
{{!
|
||||||
|
postform.mustache -- the form for posting
|
||||||
|
|
||||||
|
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 )
|
||||||
|
- files ( bool, do we allow attachments ? )
|
||||||
|
- csrf ( csrf token )
|
||||||
|
}}
|
||||||
|
<form action="{{post_url}}" enctype="multipart/form-data" name="post" method="post">
|
||||||
|
{{{csrf}}}
|
||||||
|
<input type="hidden" name="reference" value="{{reference}}" id="postform_reference"/>
|
||||||
|
<div id="postform-outer">
|
||||||
|
<div id="postform-inner">
|
||||||
|
<table class="postform">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{name}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<span>
|
||||||
|
<input type="text" name="name" value="" id="postform_name" />
|
||||||
|
<span id="postform_msg"></span>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{subject}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="subject" value="" id="postform_subject" />
|
||||||
|
<input type="submit" value="{{button}}" class="button" id="postform_submit" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{comment}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<textarea id="postform_message" name="message" cols=40 rows=5></textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{#files}}
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{file}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input class="postform_attachment" id="postform_attachments" type="file" name="attachment_uploaded" multiple />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/files}}
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{dubs}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="dubs" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{captcha}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<img id="captcha_img" src="{{prefix}}captcha/img" alt="captcha" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{solution}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="captcha" autocomplete="off" id="captcha_solution" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<!-- <tr>
|
||||||
|
<th>
|
||||||
|
{{#i18n.Translations}}{{cuckoo_pow}}{{/i18n.Translations}}
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" name="pow" autocomplete="off" id="miner_result" /><input id="start_miner" class="button" type="button" value="{{#i18n.Translations}}{{start_mining}}{{/i18n.Translations}}"/>
|
||||||
|
</td>
|
||||||
|
</tr> -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
25
contrib/templates/neochan/posts_graph.mustache
Normal file
25
contrib/templates/neochan/posts_graph.mustache
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{{!
|
||||||
|
posts graph.mustache -- post frequence graph
|
||||||
|
parameters:
|
||||||
|
|
||||||
|
* graph - a postsGraph instance (see srnd/model.go)
|
||||||
|
}}
|
||||||
|
|
||||||
|
<table id="posts_graph">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{{#i18n.Translations}}{{day}}{{/i18n.Translations}}</th>
|
||||||
|
<th>{{#i18n.Translations}}{{posts}}{{/i18n.Translations}}</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{{#graph.Scale}}
|
||||||
|
<tr>
|
||||||
|
<td>{{Day}}</td>
|
||||||
|
<td>{{Num}}</td>
|
||||||
|
<td>{{OvercockGraph}}</td>
|
||||||
|
</tr>
|
||||||
|
{{/graph.Scale}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
60
contrib/templates/neochan/thread.mustache
Normal file
60
contrib/templates/neochan/thread.mustache
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
{{!
|
||||||
|
thread.mustache -- renders to a thread-*.html page, shows the entire thread
|
||||||
|
template parameters:
|
||||||
|
- board ( the Board Model of the board this thread was posted in )
|
||||||
|
- thread ( the Thread Model of the current thread being rendered )
|
||||||
|
|
||||||
|
Thread Model attributes:
|
||||||
|
- OP , the Post Model of the original poster
|
||||||
|
- Replies , a list of all the replies or empty if none
|
||||||
|
- Board , the name of the Board this thread is on
|
||||||
|
- BoardURL , the url that points to the board index page
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="{{thread.Prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{thread.Prefix}}static/user.css" />
|
||||||
|
<script src="{{thread.Prefix}}static/nntpchan.js" type="text/javascript"></script>
|
||||||
|
<title> {{thread.OP.Subject}} </title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- begin navbar -->
|
||||||
|
{{{thread.Navbar}}}
|
||||||
|
<!-- end navbar -->
|
||||||
|
<center>
|
||||||
|
<div id="nntpchan_banner">
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
<div class="board_header">{{thread.Board}}</div>
|
||||||
|
<!-- postform -->
|
||||||
|
<div id="postform_container">
|
||||||
|
{{{form}}}
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="thread" id="thread_{{thread.OP.PostHash}}">
|
||||||
|
<div class="thread_header">
|
||||||
|
</div>
|
||||||
|
{{{thread.OP.RenderPost}}}
|
||||||
|
{{# thread.Replies}}
|
||||||
|
{{{RenderPost}}}
|
||||||
|
{{/ thread.Replies}}
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
<div class="navLinks">[<a href="{{thread.BoardURL}}" accesskey="a">{{#i18n.Translations}}{{return}}{{/i18n.Translations}}</a>] [<a href="{{thread.Prefix}}catalog-{{thread.Board}}.html" accesskey="r">{{#i18n.Translations}}{{catalog_label}}{{/i18n.Translations}}</a>] [<a href="#thread_{{thread.OP.PostHash}}">{{#i18n.Translations}}{{to_top_label}}{{/i18n.Translations}}</a>] [<a href="#navlinks" accesskey="r" onclick="location.reload();">{{#i18n.Translations}}{{update}}{{/i18n.Translations}}</a>]</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var prefix = "{{thread.Prefix}}";
|
||||||
|
var e = document.getElementById("nntpchan_banner");
|
||||||
|
nntpchan_inject_banners(e, prefix);
|
||||||
|
init(prefix);
|
||||||
|
ready();
|
||||||
|
</script>
|
||||||
|
<hr/>
|
||||||
|
<footer>
|
||||||
|
<p class="legal">All posts on this site are the responsibility of the individual poster and not the administration, pursuant to 47 U.S.C. § 230.</p>
|
||||||
|
<p class="legal">To make a DMCA request or report illegal content, please contact the administration</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
53
contrib/templates/neochan/ukko.mustache
Normal file
53
contrib/templates/neochan/ukko.mustache
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{{!
|
||||||
|
ukko.mustache -- overboard, contains the last threads posted regardless of newsgroup
|
||||||
|
template parameters:
|
||||||
|
- prefix ( site prefix )
|
||||||
|
- threads ( a list of Thread Models that represent the latest threads )
|
||||||
|
}}
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title> {{#i18n.Translations}}{{overboard_title}}{{/i18n.Translations}} </title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="{{prefix}}static/site.css" />
|
||||||
|
<link id="current_theme" rel="stylesheet" href="{{prefix}}static/user.css" />
|
||||||
|
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<center>
|
||||||
|
<div id="nntpchan_banner">
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
<!-- begin navbar -->
|
||||||
|
{{{navbar}}}
|
||||||
|
<!-- end navbar -->
|
||||||
|
<div class="board_header"> {{#i18n.Translations}}{{overboard_title}}{{/i18n.Translations}} </div>
|
||||||
|
<div id="ukko_threads">
|
||||||
|
<pre><a href="{{prefix}}livechan/">livechan</a></pre>
|
||||||
|
{{#threads}}
|
||||||
|
<div class="thread" id="thread_{{OP.PostHash}}">
|
||||||
|
<div class="ukko_thread_header">
|
||||||
|
<p>{{#i18n.Translations}}{{posted_on_label}}{{/i18n.Translations}} <a href="{{{BoardURL}}}"><span class="ukko_boardname">{{OP.Board}}</span></a></p>
|
||||||
|
</div>
|
||||||
|
{{{OP.Truncate.RenderPost}}}
|
||||||
|
{{#Truncate.Replies}}
|
||||||
|
{{{Truncate.RenderPost}}}
|
||||||
|
{{/Truncate.Replies}}
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
{{/threads}}
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" >
|
||||||
|
var prefix = "{{prefix}}";
|
||||||
|
var e = document.getElementById("nntpchan_banner");
|
||||||
|
nntpchan_inject_banners(e, prefix);
|
||||||
|
init(prefix);
|
||||||
|
ready();
|
||||||
|
</script>
|
||||||
|
<hr/>
|
||||||
|
<footer>
|
||||||
|
<p class="legal">All posts on this site are the responsibility of the individual poster and not the administration, pursuant to 47 U.S.C. § 230.</p>
|
||||||
|
<p class="legal">To make a DMCA request or report illegal content, please contact the administration</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
Reference in New Issue
Block a user