Browse Source
Conflicts: inc/config.php inc/display.php inc/functions.php inc/image.php js/expand.js js/hide-threads.js js/local-time.js js/smartphone-spoiler.js templates/header.html templates/index.html templates/main.js templates/page.html templates/post_reply.html templates/post_thread.html templates/thread.htmlpull/40/head
18 changed files with 668 additions and 623 deletions
@ -335,9 +335,14 @@ |
|||
$config['auto_unicode'] = true; |
|||
// Whether to turn URLs into functional links |
|||
$config['markup_urls'] = true; |
|||
|
|||
// Prefix those functional links with some other url, for example some service for hiding referers |
|||
// (eg. 'http://www.nullrefer.com/?', or 'http://anonym.to/?'), a pay-per-view exit page, etc. |
|||
$config['url_ads'] = ''; |
|||
$config['url_ads'] = &$config['link_prefix']; // leave alias |
|||
|
|||
// Optional URL prefix for links (eg. "http://anonym.to/?") |
|||
$config['link_prefix'] = ''; |
|||
|
|||
|
|||
// Wordfilters are used to automatically replace certain words/phrases with something else. |
|||
// For a normal string replacement: |
|||
@ -486,7 +491,7 @@ |
|||
// Display the file's original filename |
|||
$config['show_filename']= true; |
|||
|
|||
// Image identification buttons using regex.info/exif, tineye and google images |
|||
// Image identification links using regex.info/exif, TinEye and Google Images |
|||
$config['image_identification'] = false; |
|||
|
|||
// Redraw the image using GD functions to strip any excess data (commonly ZIP archives) |
|||
@ -542,8 +547,8 @@ |
|||
$config['ban_date'] = '%A %e %B, %Y'; |
|||
|
|||
// The names on the post buttons. (On most imageboards, these are both "Post") |
|||
$config['button_newtopic'] = 'New Topic'; |
|||
$config['button_reply'] = 'New Reply'; |
|||
$config['button_newtopic'] = _('New Topic'); |
|||
$config['button_reply'] = _('New Reply'); |
|||
|
|||
// Assign each poster in a thread a unique ID, shown by "ID: {id}" before the post number. |
|||
$config['poster_ids'] = false; |
|||
@ -554,7 +559,7 @@ |
|||
$config['thread_subject_in_title'] = false; |
|||
|
|||
// Page footer |
|||
$config['footer'][] = 'All trademarks, copyrights, comments, and images on this page are owned by and are the responsibility of their respective parties.'; |
|||
$config['footer'][] = _('All trademarks, copyrights, comments, and images on this page are owned by and are the responsibility of their respective parties.'); |
|||
|
|||
// Characters used to generate a random password (with Javascript) |
|||
$config['genpassword_chars'] = '[email protected]#$%^&*()_+'; |
|||
@ -764,9 +769,9 @@ |
|||
else |
|||
$config['root'] = '/'; // CLI mode |
|||
|
|||
// The scheme and domain. This is needed to get absolute URL of some page (for instance image |
|||
// identification buttons). If you use the CLI tools, it would be wise to override this setting. |
|||
$config['domain'] = (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? "https://" : "http://"; |
|||
// The scheme and domain. This is used to get the site's absolute URL (eg. for image identification links). |
|||
// If you use the CLI tools, it would be wise to override this setting. |
|||
$config['domain'] = (isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? "https://" : "http://"; |
|||
$config['domain'] .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost'; |
|||
|
|||
// If for some reason the folders and static HTML index files aren't in the current working direcotry, |
|||
|
@ -1,72 +1,72 @@ |
|||
<?php |
|||
|
|||
/* |
|||
* Copyright (c) 2010-2013 Tinyboard Development Group |
|||
*/ |
|||
|
|||
if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) { |
|||
// You cannot request this file directly. |
|||
exit; |
|||
} |
|||
|
|||
$twig = false; |
|||
|
|||
function load_twig() { |
|||
global $twig, $config; |
|||
|
|||
require 'lib/Twig/Autoloader.php'; |
|||
Twig_Autoloader::register(); |
|||
|
|||
Twig_Autoloader::autoload('Twig_Extensions_Node_Trans'); |
|||
Twig_Autoloader::autoload('Twig_Extensions_TokenParser_Trans'); |
|||
Twig_Autoloader::autoload('Twig_Extensions_Extension_I18n'); |
|||
Twig_Autoloader::autoload('Twig_Extensions_Extension_Tinyboard'); |
|||
|
|||
$loader = new Twig_Loader_Filesystem($config['dir']['template']); |
|||
$loader->setPaths($config['dir']['template']); |
|||
$twig = new Twig_Environment($loader, array( |
|||
'autoescape' => false, |
|||
'cache' => "{$config['dir']['template']}/cache", |
|||
'debug' => $config['debug'] |
|||
)); |
|||
$twig->addExtension(new Twig_Extensions_Extension_Tinyboard()); |
|||
$twig->addExtension(new Twig_Extensions_Extension_I18n()); |
|||
} |
|||
|
|||
function Element($templateFile, array $options) { |
|||
global $config, $debug, $twig; |
|||
|
|||
if (!$twig) |
|||
load_twig(); |
|||
|
|||
if (function_exists('create_pm_header') && ((isset($options['mod']) && $options['mod']) || isset($options['__mod'])) && !preg_match('!^mod/!', $templateFile)) { |
|||
$options['pm'] = create_pm_header(); |
|||
} |
|||
|
|||
if (isset($options['body']) && $config['debug']) { |
|||
if (isset($debug['start'])) { |
|||
$debug['time'] = '~' . round((microtime(true) - $debug['start']) * 1000, 2) . 'ms'; |
|||
unset($debug['start']); |
|||
} |
|||
$debug['included'] = get_included_files(); |
|||
$debug['memory'] = round(memory_get_usage(true) / (1024 * 1024), 2) . ' MiB'; |
|||
$options['body'] .= |
|||
'<h3>Debug</h3><pre style="white-space: pre-wrap;font-size: 10px;">' . |
|||
str_replace("\n", '<br/>', utf8tohtml(print_r($debug, true))) . |
|||
'</pre>'; |
|||
} |
|||
|
|||
// Read the template file |
|||
if (@file_get_contents("{$config['dir']['template']}/${templateFile}")) { |
|||
$body = $twig->render($templateFile, $options); |
|||
|
|||
if ($config['minify_html'] && preg_match('/\.html$/', $templateFile)) { |
|||
$body = trim(preg_replace("/[\t\r\n]/", '', $body)); |
|||
} |
|||
|
|||
return $body; |
|||
} else { |
|||
throw new Exception("Template file '${templateFile}' does not exist or is empty in '{$config['dir']['template']}'!"); |
|||
} |
|||
} |
|||
|
|||
<?php |
|||
|
|||
/* |
|||
* Copyright (c) 2010-2013 Tinyboard Development Group |
|||
*/ |
|||
|
|||
if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) { |
|||
// You cannot request this file directly. |
|||
exit; |
|||
} |
|||
|
|||
$twig = false; |
|||
|
|||
function load_twig() { |
|||
global $twig, $config; |
|||
|
|||
require 'lib/Twig/Autoloader.php'; |
|||
Twig_Autoloader::register(); |
|||
|
|||
Twig_Autoloader::autoload('Twig_Extensions_Node_Trans'); |
|||
Twig_Autoloader::autoload('Twig_Extensions_TokenParser_Trans'); |
|||
Twig_Autoloader::autoload('Twig_Extensions_Extension_I18n'); |
|||
Twig_Autoloader::autoload('Twig_Extensions_Extension_Tinyboard'); |
|||
|
|||
$loader = new Twig_Loader_Filesystem($config['dir']['template']); |
|||
$loader->setPaths($config['dir']['template']); |
|||
$twig = new Twig_Environment($loader, array( |
|||
'autoescape' => false, |
|||
'cache' => "{$config['dir']['template']}/cache", |
|||
'debug' => $config['debug'] |
|||
)); |
|||
$twig->addExtension(new Twig_Extensions_Extension_Tinyboard()); |
|||
$twig->addExtension(new Twig_Extensions_Extension_I18n()); |
|||
} |
|||
|
|||
function Element($templateFile, array $options) { |
|||
global $config, $debug, $twig; |
|||
|
|||
if (!$twig) |
|||
load_twig(); |
|||
|
|||
if (function_exists('create_pm_header') && ((isset($options['mod']) && $options['mod']) || isset($options['__mod'])) && !preg_match('!^mod/!', $templateFile)) { |
|||
$options['pm'] = create_pm_header(); |
|||
} |
|||
|
|||
if (isset($options['body']) && $config['debug']) { |
|||
if (isset($debug['start'])) { |
|||
$debug['time'] = '~' . round((microtime(true) - $debug['start']) * 1000, 2) . 'ms'; |
|||
unset($debug['start']); |
|||
} |
|||
$debug['included'] = get_included_files(); |
|||
$debug['memory'] = round(memory_get_usage(true) / (1024 * 1024), 2) . ' MiB'; |
|||
$options['body'] .= |
|||
'<h3>Debug</h3><pre style="white-space: pre-wrap;font-size: 10px;">' . |
|||
str_replace("\n", '<br/>', utf8tohtml(print_r($debug, true))) . |
|||
'</pre>'; |
|||
} |
|||
|
|||
// Read the template file |
|||
if (@file_get_contents("{$config['dir']['template']}/${templateFile}")) { |
|||
$body = $twig->render($templateFile, $options); |
|||
|
|||
if ($config['minify_html'] && preg_match('/\.html$/', $templateFile)) { |
|||
$body = trim(preg_replace("/[\t\r\n]/", '', $body)); |
|||
} |
|||
|
|||
return $body; |
|||
} else { |
|||
throw new Exception("Template file '${templateFile}' does not exist or is empty in '{$config['dir']['template']}'!"); |
|||
} |
|||
} |
|||
|
|||
|
@ -1,61 +1,61 @@ |
|||
<!doctype html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
|
|||
<script type="text/javascript"> |
|||
{% if config.quick_reply %} |
|||
var new_reply_string = "{{ config.button_reply }}"; |
|||
{% endif %} |
|||
{% if not no_post_form %} |
|||
var active_page = "index"; |
|||
{% else %} |
|||
var active_page = "ukko"; |
|||
{% endif %} |
|||
</script> |
|||
|
|||
{% include 'header.html' %} |
|||
<title>{{ board.url }} - {{ board.title|e }}</title> |
|||
</head> |
|||
<body> |
|||
{{ boardlist.top }} |
|||
{% if pm %}<div class="top_notice">You have <a href="?/PM/{{ pm.id }}">an unread PM</a>{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.</div><hr />{% endif %} |
|||
{% if config.url_banner %}<img class="banner" src="{{ config.url_banner }}" {% if config.banner_width or config.banner_height %}style="{% if config.banner_width %}width:{{ config.banner_width }}px{% endif %};{% if config.banner_width %}height:{{ config.banner_height }}px{% endif %}" {% endif %}alt="" />{% endif %} |
|||
<header> |
|||
<h1>{{ board.url }} - {{ board.title|e }}</h1> |
|||
<div class="subtitle"> |
|||
{% if board.subtitle %} |
|||
{{ board.subtitle|e }} |
|||
{% endif %} |
|||
{% if mod %}<p><a href="?/">{% trans %}Return to dashboard{% endtrans %}</a></p>{% endif %} |
|||
</div> |
|||
</header> |
|||
|
|||
{% include 'attention_bar.html' %} |
|||
{% if not no_post_form %} |
|||
{% include 'post_form.html' %} |
|||
{% else %} |
|||
{% include 'boardlist.html' %} |
|||
{% endif %} |
|||
|
|||
{% if config.blotter %}<hr /><div class="blotter">{{ config.blotter }}</div>{% endif %} |
|||
<hr /> |
|||
<form name="postcontrols" action="{{ config.post_url }}" method="post"> |
|||
<input type="hidden" name="board" value="{{ board.uri }}" /> |
|||
{% if mod %}<input type="hidden" name="mod" value="1" />{% endif %} |
|||
{{ body }} |
|||
{% include 'report_delete.html' %} |
|||
</form> |
|||
<div class="pages">{{ btn.prev }} {% for page in pages %} |
|||
[<a {% if page.selected %}class="selected"{% endif %}{% if not page.selected %}href="{{ page.link }}"{% endif %}>{{ page.num }}</a>]{% if loop.last %} {% endif %} |
|||
{% endfor %} {{ btn.next }}</div> |
|||
{{ boardlist.bottom }} |
|||
<footer> |
|||
<p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2013 Tinyboard Development Group</p> |
|||
{% for footer in config.footer %}<p class="unimportant" style="text-align:center;">{{ footer }}</p>{% endfor %} |
|||
</footer> |
|||
<script type="text/javascript">{% raw %} |
|||
ready(); |
|||
{% endraw %}</script> |
|||
</body> |
|||
</html> |
|||
<!doctype html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
|
|||
<script type="text/javascript"> |
|||
{% if config.quick_reply %} |
|||
var new_reply_string = "{{ config.button_reply }}"; |
|||
{% endif %} |
|||
{% if not no_post_form %} |
|||
var active_page = "index"; |
|||
{% else %} |
|||
var active_page = "ukko"; |
|||
{% endif %} |
|||
</script> |
|||
|
|||
{% include 'header.html' %} |
|||
<title>{{ board.url }} - {{ board.title|e }}</title> |
|||
</head> |
|||
<body> |
|||
{{ boardlist.top }} |
|||
{% if pm %}<div class="top_notice">You have <a href="?/PM/{{ pm.id }}">an unread PM</a>{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.</div><hr />{% endif %} |
|||
{% if config.url_banner %}<img class="banner" src="{{ config.url_banner }}" {% if config.banner_width or config.banner_height %}style="{% if config.banner_width %}width:{{ config.banner_width }}px{% endif %};{% if config.banner_width %}height:{{ config.banner_height }}px{% endif %}" {% endif %}alt="" />{% endif %} |
|||
<header> |
|||
<h1>{{ board.url }} - {{ board.title|e }}</h1> |
|||
<div class="subtitle"> |
|||
{% if board.subtitle %} |
|||
{{ board.subtitle|e }} |
|||
{% endif %} |
|||
{% if mod %}<p><a href="?/">{% trans %}Return to dashboard{% endtrans %}</a></p>{% endif %} |
|||
</div> |
|||
</header> |
|||
|
|||
{% include 'attention_bar.html' %} |
|||
{% if not no_post_form %} |
|||
{% include 'post_form.html' %} |
|||
{% else %} |
|||
{% include 'boardlist.html' %} |
|||
{% endif %} |
|||
|
|||
{% if config.blotter %}<hr /><div class="blotter">{{ config.blotter }}</div>{% endif %} |
|||
<hr /> |
|||
<form name="postcontrols" action="{{ config.post_url }}" method="post"> |
|||
<input type="hidden" name="board" value="{{ board.uri }}" /> |
|||
{% if mod %}<input type="hidden" name="mod" value="1" />{% endif %} |
|||
{{ body }} |
|||
{% include 'report_delete.html' %} |
|||
</form> |
|||
<div class="pages">{{ btn.prev }} {% for page in pages %} |
|||
[<a {% if page.selected %}class="selected"{% endif %}{% if not page.selected %}href="{{ page.link }}"{% endif %}>{{ page.num }}</a>]{% if loop.last %} {% endif %} |
|||
{% endfor %} {{ btn.next }}</div> |
|||
{{ boardlist.bottom }} |
|||
<footer> |
|||
<p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2013 Tinyboard Development Group</p> |
|||
{% for footer in config.footer %}<p class="unimportant" style="text-align:center;">{{ footer }}</p>{% endfor %} |
|||
</footer> |
|||
<script type="text/javascript">{% raw %} |
|||
ready(); |
|||
{% endraw %}</script> |
|||
</body> |
|||
</html> |
|||
|
@ -1,26 +1,26 @@ |
|||
{% if error %}<h2 style="text-align:center">{{ error }}</h2>{% endif %} |
|||
<form action="" method="post"> |
|||
<table style="margin-top:25px;"> |
|||
<tr> |
|||
<th> |
|||
{% trans 'Username' %} |
|||
</th> |
|||
<td> |
|||
<input type="text" name="username" size="20" maxlength="30" value="{{ username|e }}"> |
|||
</td> |
|||
</tr> |
|||
<tr> |
|||
<th> |
|||
{% trans 'Password' %} |
|||
</th> |
|||
<td> |
|||
<input type="password" name="password" size="20" maxlength="30" value=""> |
|||
</td> |
|||
</tr> |
|||
<tr> |
|||
<td></td> |
|||
<td> |
|||
<input type="submit" name="login" value="{% trans %}Continue{% endtrans %}" /> |
|||
</td> |
|||
</table> |
|||
</form> |
|||
{% if error %}<h2 style="text-align:center">{{ error }}</h2>{% endif %} |
|||
<form action="" method="post"> |
|||
<table style="margin-top:25px;"> |
|||
<tr> |
|||
<th> |
|||
{% trans 'Username' %} |
|||
</th> |
|||
<td> |
|||
<input type="text" name="username" size="20" maxlength="30" value="{{ username|e }}"> |
|||
</td> |
|||
</tr> |
|||
<tr> |
|||
<th> |
|||
{% trans 'Password' %} |
|||
</th> |
|||
<td> |
|||
<input type="password" name="password" size="20" maxlength="30" value=""> |
|||
</td> |
|||
</tr> |
|||
<tr> |
|||
<td></td> |
|||
<td> |
|||
<input type="submit" name="login" value="{% trans %}Continue{% endtrans %}" /> |
|||
</td> |
|||
</table> |
|||
</form> |
|||
|
@ -1,25 +1,25 @@ |
|||
<!doctype html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
{% include 'header.html' %} |
|||
<title>{{ title }}</title> |
|||
</head> |
|||
<body> |
|||
{% if pm %}<div class="top_notice">You have <a href="?/PM/{{ pm.id }}">an unread PM</a>{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.</div><hr>{% endif %} |
|||
<header> |
|||
<h1>{{ title }}</h1> |
|||
<div class="subtitle"> |
|||
{% if subtitle %} |
|||
{{ subtitle }} |
|||
{% endif %} |
|||
{% if mod and not hide_dashboard_link %}<p><a href="?/">{% trans %}Return to dashboard{% endtrans %}</a></p>{% endif %} |
|||
</div> |
|||
</header> |
|||
{{ body }} |
|||
<hr> |
|||
<footer> |
|||
<p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2013 Tinyboard Development Group</p> |
|||
</footer> |
|||
</body> |
|||
</html> |
|||
<!doctype html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
{% include 'header.html' %} |
|||
<title>{{ title }}</title> |
|||
</head> |
|||
<body> |
|||
{% if pm %}<div class="top_notice">You have <a href="?/PM/{{ pm.id }}">an unread PM</a>{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.</div><hr>{% endif %} |
|||
<header> |
|||
<h1>{{ title }}</h1> |
|||
<div class="subtitle"> |
|||
{% if subtitle %} |
|||
{{ subtitle }} |
|||
{% endif %} |
|||
{% if mod and not hide_dashboard_link %}<p><a href="?/">{% trans %}Return to dashboard{% endtrans %}</a></p>{% endif %} |
|||
</div> |
|||
</header> |
|||
{{ body }} |
|||
<hr> |
|||
<footer> |
|||
<p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2013 Tinyboard Development Group</p> |
|||
</footer> |
|||
</body> |
|||
</html> |
|||
|
@ -1,111 +1,111 @@ |
|||
{% filter remove_whitespace %} |
|||
{# tabs and new lines will be ignored #} |
|||
<div class="post reply" id="reply_{{ post.id }}"> |
|||
|
|||
<p class="intro"{% if not index %} id="{{ post.id }}"{% endif %}> |
|||
<input type="checkbox" class="delete" name="delete_{{ post.id }}" id="delete_{{ post.id }}" /> |
|||
<label for="delete_{{ post.id }}"> |
|||
{% if post.subject|length > 0 %} |
|||
{# show subject #} |
|||
<span class="subject">{{ post.subject|bidi_cleanup }}</span> |
|||
{% endif %} |
|||
{% if post.email|length > 0 %} |
|||
{# start email #} |
|||
<a class="email" href="mailto:{{ post.email }}"> |
|||
{% endif %} |
|||
{% set capcode = post.capcode|capcode %} |
|||
<span {% if capcode.name %}style="{{ capcode.name }}" {% endif %}class="name">{{ post.name|bidi_cleanup }}</span> |
|||
{% if post.trip|length > 0 %} |
|||
<span {% if capcode.trip %}style="{{ capcode.trip }}" {% endif %}class="trip">{{ post.trip }}</span> |
|||
{% endif %} |
|||
{% if post.email|length > 0 %} |
|||
{# end email #} |
|||
</a> |
|||
{% endif %} |
|||
{% if capcode %} |
|||
{{ capcode.cap }} |
|||
{% endif %} |
|||
{% if post.mod and post.mod|hasPermission(config.mod.show_ip, board.uri) %} |
|||
[<a style="margin:0;" href="?/IP/{{ post.ip }}">{{ post.ip }}</a>] |
|||
{% endif %} |
|||
<time datetime="{{ post.time|date('%Y-%m-%dT%H:%M:%S') }}{{ timezone() }}">{{ post.time|date(config.post_date) }}</time> |
|||
</label> |
|||
{% if config.poster_ids %} |
|||
ID: {{ post.ip|poster_id(post.thread) }} |
|||
{% endif %} |
|||
<a class="post_no" {% if not index %}onclick="highlightReply({{ post.id }})" {% endif %}href="{{ post.link }}">No.</a> |
|||
<a class="post_no" |
|||
{% if not index %} |
|||
onclick="citeReply({{ post.id }});" |
|||
{% endif %} |
|||
href="{% if index %} |
|||
{{ post.link('q') }} |
|||
{% else %} |
|||
javascript:void(0); |
|||
{% endif %}"> |
|||
{{ post.id }} |
|||
</a> |
|||
</p> |
|||
{% if post.embed %} |
|||
{{ post.embed }} |
|||
{% elseif post.file == 'deleted' %} |
|||
<img src="{{ config.image_deleted }}" alt="" /> |
|||
{% elseif post.file and post.file %} |
|||
<p class="fileinfo">File: <a href="{{ config.uri_img }}{{ post.file }}">{{ post.file }}</a> <span class="unimportant"> |
|||
( |
|||
{% if post.thumb == 'spoiler' %} |
|||
Spoiler Image, |
|||
{% endif %} |
|||
{{ post.filesize|filesize }} |
|||
{% if post.filex and post.filey %} |
|||
, {{ post.filex}}x{{ post.filey }} |
|||
{% if config.show_ratio %} |
|||
, {{ post.ratio }} |
|||
{% endif %} |
|||
{% endif %} |
|||
{% if config.show_filename and post.filename %} |
|||
, |
|||
{% if post.filename|length > config.max_filename_display %} |
|||
<span class="postfilename" title="{{ post.filename|bidi_cleanup }}">{{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }}</span> |
|||
{% else %} |
|||
<span class="postfilename">{{ post.filename|bidi_cleanup }}</span> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% if post.thumb != 'file' and config.image_identification %} |
|||
, |
|||
<span class='image_id'> |
|||
<a href="http://imgops.com/{{ config.domain }}{{ config.uri_img }}{{ post.file }}">io</a> |
|||
{% if post.file|extension == 'jpg' %} |
|||
<a href="http://regex.info/exif.cgi?url={{ config.domain }}{{ config.uri_img }}{{ post.file }}">e</a> |
|||
{% endif %} |
|||
<a href="http://www.google.com/searchbyimage?image_url={{ config.domain }}{{ config.uri_img }}{{ post.file }}">g</a> |
|||
<a href="http://www.tineye.com/search?url={{ config.domain }}{{ config.uri_img }}{{ post.file }}">t</a> |
|||
</span> |
|||
{% endif %} |
|||
|
|||
) |
|||
</span> |
|||
</p> |
|||
<a href="{{ config.uri_img }}{{ post.file }}" target="_blank"{% if post.thumb == 'file' %} class="file"{% endif %}> |
|||
<img src=" |
|||
{% if post.thumb == 'file' %} |
|||
{{ config.root }} |
|||
{% if config.file_icons[post.filename|extension] %} |
|||
{{ config.file_thumb|sprintf(config.file_icons[post.filename|extension]) }} |
|||
{% else %} |
|||
{{ config.file_thumb|sprintf(config.file_icons.default) }} |
|||
{% endif %} |
|||
{% elseif post.thumb == 'spoiler' %} |
|||
{{ config.root }}{{ config.spoiler_image }} |
|||
{% else %} |
|||
{{ config.uri_thumb }}{{ post.thumb }} |
|||
{% endif %}" style="width:{{ post.thumbx }}px;height:{{ post.thumby }}px" alt="" /> |
|||
</a> |
|||
{% endif %} |
|||
{{ post.postControls }} |
|||
<div class="body"> |
|||
{% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} |
|||
</div> |
|||
</div> |
|||
<br/> |
|||
{% endfilter %} |
|||
{% filter remove_whitespace %} |
|||
{# tabs and new lines will be ignored #} |
|||
<div class="post reply" id="reply_{{ post.id }}"> |
|||
|
|||
<p class="intro"{% if not index %} id="{{ post.id }}"{% endif %}> |
|||
<input type="checkbox" class="delete" name="delete_{{ post.id }}" id="delete_{{ post.id }}" /> |
|||
<label for="delete_{{ post.id }}"> |
|||
{% if post.subject|length > 0 %} |
|||
{# show subject #} |
|||
<span class="subject">{{ post.subject|bidi_cleanup }}</span> |
|||
{% endif %} |
|||
{% if post.email|length > 0 %} |
|||
{# start email #} |
|||
<a class="email" href="mailto:{{ post.email }}"> |
|||
{% endif %} |
|||
{% set capcode = post.capcode|capcode %} |
|||
<span {% if capcode.name %}style="{{ capcode.name }}" {% endif %}class="name">{{ post.name|bidi_cleanup }}</span> |
|||
{% if post.trip|length > 0 %} |
|||
<span {% if capcode.trip %}style="{{ capcode.trip }}" {% endif %}class="trip">{{ post.trip }}</span> |
|||
{% endif %} |
|||
{% if post.email|length > 0 %} |
|||
{# end email #} |
|||
</a> |
|||
{% endif %} |
|||
{% if capcode %} |
|||
{{ capcode.cap }} |
|||
{% endif %} |
|||
{% if post.mod and post.mod|hasPermission(config.mod.show_ip, board.uri) %} |
|||
[<a style="margin:0;" href="?/IP/{{ post.ip }}">{{ post.ip }}</a>] |
|||
{% endif %} |
|||
<time datetime="{{ post.time|date('%Y-%m-%dT%H:%M:%S') }}{{ timezone() }}">{{ post.time|date(config.post_date) }}</time> |
|||
</label> |
|||
{% if config.poster_ids %} |
|||
ID: {{ post.ip|poster_id(post.thread) }} |
|||
{% endif %} |
|||
<a class="post_no" {% if not index %}onclick="highlightReply({{ post.id }})" {% endif %}href="{{ post.link }}">No.</a> |
|||
<a class="post_no" |
|||
{% if not index %} |
|||
onclick="citeReply({{ post.id }});" |
|||
{% endif %} |
|||
href="{% if index %} |
|||
{{ post.link('q') }} |
|||
{% else %} |
|||
javascript:void(0); |
|||
{% endif %}"> |
|||
{{ post.id }} |
|||
</a> |
|||
</p> |
|||
{% if post.embed %} |
|||
{{ post.embed }} |
|||
{% elseif post.file == 'deleted' %} |
|||
<img src="{{ config.image_deleted }}" alt="" /> |
|||
{% elseif post.file and post.file %} |
|||
<p class="fileinfo">File: <a href="{{ config.uri_img }}{{ post.file }}">{{ post.file }}</a> <span class="unimportant"> |
|||
( |
|||
{% if post.thumb == 'spoiler' %} |
|||
Spoiler Image, |
|||
{% endif %} |
|||
{{ post.filesize|filesize }} |
|||
{% if post.filex and post.filey %} |
|||
, {{ post.filex}}x{{ post.filey }} |
|||
{% if config.show_ratio %} |
|||
, {{ post.ratio }} |
|||
{% endif %} |
|||
{% endif %} |
|||
{% if config.show_filename and post.filename %} |
|||
, |
|||
{% if post.filename|length > config.max_filename_display %} |
|||
<span class="postfilename" title="{{ post.filename|bidi_cleanup }}">{{ post.filename|truncate(config.max_filename_display)|bidi_cleanup }}</span> |
|||
{% else %} |
|||
<span class="postfilename">{{ post.filename|bidi_cleanup }}</span> |
|||
{% endif %} |
|||
{% endif %} |
|||
{% if post.thumb != 'file' and config.image_identification %} |
|||
, |
|||
<span class='image_id'> |
|||
<a href="http://imgops.com/{{ config.domain }}{{ config.uri_img }}{{ post.file }}">io</a> |
|||
{% if post.file|extension == 'jpg' %} |
|||
<a href="http://regex.info/exif.cgi?url={{ config.domain }}{{ config.uri_img }}{{ post.file }}">e</a> |
|||
{% endif %} |
|||
<a href="http://www.google.com/searchbyimage?image_url={{ config.domain }}{{ config.uri_img }}{{ post.file }}">g</a> |
|||
<a href="http://www.tineye.com/search?url={{ config.domain }}{{ config.uri_img }}{{ post.file }}">t</a> |
|||
</span> |
|||
{% endif %} |
|||
|
|||
) |
|||
</span> |
|||
</p> |
|||
<a href="{{ config.uri_img }}{{ post.file }}" target="_blank"{% if post.thumb == 'file' %} class="file"{% endif %}> |
|||
<img src=" |
|||
{% if post.thumb == 'file' %} |
|||
{{ config.root }} |
|||
{% if config.file_icons[post.filename|extension] %} |
|||
{{ config.file_thumb|sprintf(config.file_icons[post.filename|extension]) }} |
|||
{% else %} |
|||
{{ config.file_thumb|sprintf(config.file_icons.default) }} |
|||
{% endif %} |
|||
{% elseif post.thumb == 'spoiler' %} |
|||
{{ config.root }}{{ config.spoiler_image }} |
|||
{% else %} |
|||
{{ config.uri_thumb }}{{ post.thumb }} |
|||
{% endif %}" style="width:{{ post.thumbx }}px;height:{{ post.thumby }}px" alt="" /> |
|||
</a> |
|||
{% endif %} |
|||
{{ post.postControls }} |
|||
<div class="body"> |
|||
{% endfilter %}{% if index %}{{ post.body|truncate_body(post.link) }}{% else %}{{ post.body }}{% endif %}{% filter remove_whitespace %} |
|||
</div> |
|||
</div> |
|||
<br/> |
|||
{% endfilter %} |
|||
|
@ -1,51 +1,51 @@ |
|||
<!doctype html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
|
|||
<script type="text/javascript"> |
|||
var active_page = "thread"; |
|||
</script> |
|||
|
|||
{% include 'header.html' %} |
|||
<title>{{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %}</title> |
|||
</head> |
|||
<body> |
|||
{{ boardlist.top }} |
|||
{% if pm %}<div class="top_notice">You have <a href="?/PM/{{ pm.id }}">an unread PM</a>{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.</div><hr />{% endif %} |
|||
{% if config.url_banner %}<img class="banner" src="{{ config.url_banner }}" {% if config.banner_width or config.banner_height %}style="{% if config.banner_width %}width:{{ config.banner_width }}px{% endif %};{% if config.banner_width %}height:{{ config.banner_height }}px{% endif %}" {% endif %}alt="" />{% endif %} |
|||
<header> |
|||
<h1>{{ board.url }} - {{ board.title|e }}</h1> |
|||
<div class="subtitle"> |
|||
{% if board.subtitle %} |
|||
{{ board.subtitle|e }} |
|||
{% endif %} |
|||
{% if mod %}<p><a href="?/">{% trans %}Return to dashboard{% endtrans %}</a></p>{% endif %} |
|||
</div> |
|||
</header> |
|||
|
|||
<div class="banner">{% trans %}Posting mode: Reply{% endtrans %} <a class="unimportant" href="{{ return }}">[{% trans %}Return{% endtrans %}]</a></div> |
|||
|
|||
{% include 'attention_bar.html' %} |
|||
{% include 'post_form.html' %} |
|||
|
|||
{% if config.blotter %}<hr /><div class="blotter">{{ config.blotter }}</div>{% endif %} |
|||
<hr /> |
|||
<form name="postcontrols" action="{{ config.post_url }}" method="post"> |
|||
<input type="hidden" name="board" value="{{ board.uri }}" /> |
|||
{% if mod %}<input type="hidden" name="mod" value="1" />{% endif %} |
|||
{{ body }} |
|||
{% include 'report_delete.html' %} |
|||
</form> |
|||
<a href="{{ return }}">[{% trans %}Return{% endtrans %}]</a> |
|||
|
|||
{{ boardlist.bottom }} |
|||
<footer> |
|||
<p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2013 Tinyboard Development Group</p> |
|||
{% for footer in config.footer %}<p class="unimportant" style="text-align:center;">{{ footer }}</p>{% endfor %} |
|||
</footer> |
|||
<script type="text/javascript">{% raw %} |
|||
ready(); |
|||
{% endraw %}</script> |
|||
</body> |
|||
</html> |
|||
<!doctype html> |
|||
<html> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
|
|||
<script type="text/javascript"> |
|||
var active_page = "thread"; |
|||
</script> |
|||
|
|||
{% include 'header.html' %} |
|||
<title>{{ board.url }} - {% if config.thread_subject_in_title and thread.subject %}{{ thread.subject }}{% else %}{{ board.title|e }}{% endif %}</title> |
|||
</head> |
|||
<body> |
|||
{{ boardlist.top }} |
|||
{% if pm %}<div class="top_notice">You have <a href="?/PM/{{ pm.id }}">an unread PM</a>{% if pm.waiting > 0 %}, plus {{ pm.waiting }} more waiting{% endif %}.</div><hr />{% endif %} |
|||
{% if config.url_banner %}<img class="banner" src="{{ config.url_banner }}" {% if config.banner_width or config.banner_height %}style="{% if config.banner_width %}width:{{ config.banner_width }}px{% endif %};{% if config.banner_width %}height:{{ config.banner_height }}px{% endif %}" {% endif %}alt="" />{% endif %} |
|||
<header> |
|||
<h1>{{ board.url }} - {{ board.title|e }}</h1> |
|||
<div class="subtitle"> |
|||
{% if board.subtitle %} |
|||
{{ board.subtitle|e }} |
|||
{% endif %} |
|||
{% if mod %}<p><a href="?/">{% trans %}Return to dashboard{% endtrans %}</a></p>{% endif %} |
|||
</div> |
|||
</header> |
|||
|
|||
<div class="banner">{% trans %}Posting mode: Reply{% endtrans %} <a class="unimportant" href="{{ return }}">[{% trans %}Return{% endtrans %}]</a></div> |
|||
|
|||
{% include 'attention_bar.html' %} |
|||
{% include 'post_form.html' %} |
|||
|
|||
{% if config.blotter %}<hr /><div class="blotter">{{ config.blotter }}</div>{% endif %} |
|||
<hr /> |
|||
<form name="postcontrols" action="{{ config.post_url }}" method="post"> |
|||
<input type="hidden" name="board" value="{{ board.uri }}" /> |
|||
{% if mod %}<input type="hidden" name="mod" value="1" />{% endif %} |
|||
{{ body }} |
|||
{% include 'report_delete.html' %} |
|||
</form> |
|||
<a href="{{ return }}">[{% trans %}Return{% endtrans %}]</a> |
|||
|
|||
{{ boardlist.bottom }} |
|||
<footer> |
|||
<p class="unimportant" style="margin-top:20px;text-align:center;">Powered by <a href="http://tinyboard.org/">Tinyboard</a> {{ config.version }} | <a href="http://tinyboard.org/">Tinyboard</a> Copyright © 2010-2013 Tinyboard Development Group</p> |
|||
{% for footer in config.footer %}<p class="unimportant" style="text-align:center;">{{ footer }}</p>{% endfor %} |
|||
</footer> |
|||
<script type="text/javascript">{% raw %} |
|||
ready(); |
|||
{% endraw %}</script> |
|||
</body> |
|||
</html> |
|||
|
Loading…
Reference in new issue