czaks
11 years ago
11 changed files with 425 additions and 99 deletions
@ -0,0 +1,34 @@ |
|||
/* |
|||
* youtube |
|||
* https://github.com/savetheinternet/Tinyboard/blob/master/js/youtube.js
|
|||
* |
|||
* Don't load the YouTube player unless the video image is clicked. |
|||
* This increases performance issues when many videos are embedded on the same page. |
|||
* Currently only compatiable with YouTube. |
|||
* |
|||
* Proof of concept. |
|||
* |
|||
* Released under the MIT license |
|||
* Copyright (c) 2013 Michael Save <savetheinternet@tinyboard.org> |
|||
* |
|||
* Usage: |
|||
* $config['embedding'] = array(); |
|||
* $config['embedding'][] = array( |
|||
* '/^https?:\/\/(\w+\.)?youtube\.com\/watch\?v=([a-zA-Z0-9\-_]{10,11})(&.+)?$/i', |
|||
* '<div class="video-container" data-video="$2"><a href="$0" target="_blank" class="file"><img style="width:360px;height:270px;" src="http://img.youtube.com/vi/$2/0.jpg"/></a></div>' |
|||
); |
|||
* $config['additional_javascript'][] = 'js/jquery.min.js'; |
|||
* $config['additional_javascript'][] = 'js/youtube.js'; |
|||
* |
|||
*/ |
|||
|
|||
|
|||
onready(function(){ |
|||
$('div.video-container a').attr('href', 'javascript:void(0)'); |
|||
$('div.video-container').click(function() { |
|||
var videoID = $(this).data('video'); |
|||
|
|||
$(this).html('<iframe style="float:left;margin: 10px 20px" type="text/html" width="360" height="270" src="http://www.youtube.com/embed/' + videoID + '?autoplay=1" frameborder="0"/>'); |
|||
}); |
|||
}); |
|||
|
@ -0,0 +1,18 @@ |
|||
<form style="display:inline" action="?/search" method="post"> |
|||
<label style="display:inline" for="search">{% trans 'Phrase:' %}</label> |
|||
<input id="search" name="query" type="text" size="60" value="{{ search_query|e }}"> |
|||
<select name="type"> |
|||
<option value="posts"{% if search_type == 'posts'%} selected{% endif %}>{% trans 'Posts' %}</option> |
|||
{% if mod|hasPermission(config.mod.view_notes) and mod|hasPermission(config.mod.show_ip) %} |
|||
<option value="IP_notes"{% if search_type == 'IP_notes'%} selected{% endif %}>{% trans 'IP address notes' %}</option> |
|||
{% endif %} |
|||
{% if mod|hasPermission(config.mod.view_banlist) %} |
|||
<option value="bans"{% if search_type == 'bans'%} selected{% endif %}>{% trans 'Bans' %}</option> |
|||
{% endif %} |
|||
{% if mod|hasPermission(config.mod.modlog) %} |
|||
<option value="log"{% if search_type == 'log'%} selected{% endif %}>{% trans 'Moderation log' %}</option> |
|||
{% endif %} |
|||
</select> |
|||
<input type="submit" value="{% trans 'Search' %}"> |
|||
</form> |
|||
<p class="unimportant">{% trans '(Search is case-insensitive and based on keywords. To match exact phrases, use "quotes". Use an asterisk (*) for wildcard.)' %}</p> |
@ -0,0 +1,177 @@ |
|||
<fieldset style="margin-bottom:20px"> |
|||
<legend>{% trans 'Search' %}</legend> |
|||
|
|||
<ul> |
|||
<li> |
|||
{% include 'mod/search_form.html' %} |
|||
</li> |
|||
</ul> |
|||
</fieldset> |
|||
|
|||
<p style="text-align:center">Showing {{ result_count }} result{% if result_count != 1 %}s{% endif %}.</p> |
|||
|
|||
{% if search_type == 'IP_notes' %} |
|||
<table class="modlog"> |
|||
<tr> |
|||
<th>{% trans 'IP address' %}</th> |
|||
<th>{% trans 'Staff' %}</th> |
|||
<th>{% trans 'Note' %}</th> |
|||
<th>{% trans 'Date' %}</th> |
|||
</tr> |
|||
{% for note in results %} |
|||
<tr> |
|||
<td class="minimal"> |
|||
<a href="?/IP/{{ note.ip }}#notes">{{ note.ip }}</a> |
|||
</td> |
|||
<td class="minimal"> |
|||
{% if note.username %} |
|||
<a href="?/new_PM/{{ note.username|e }}">{{ note.username|e }}</a> |
|||
{% else %} |
|||
<em>{% trans 'deleted?' %}</em> |
|||
{% endif %} |
|||
</td> |
|||
<td> |
|||
{{ note.body }} |
|||
</td> |
|||
<td class="minimal"> |
|||
{{ note.time|date(config.post_date) }} |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endif %} |
|||
|
|||
{% if search_type == 'bans' %} |
|||
<table class="modlog" style="width:100%"> |
|||
<tr> |
|||
<th>{% trans 'IP address/mask' %}</th> |
|||
<th>{% trans 'Reason' %}</th> |
|||
<th>{% trans 'Board' %}</th> |
|||
<th>{% trans 'Set' %}</th> |
|||
<th>{% trans 'Duration' %}</th> |
|||
<th>{% trans 'Expires' %}</th> |
|||
<th>{% trans 'Seen' %}</th> |
|||
<th>{% trans 'Staff' %}</th> |
|||
</tr> |
|||
{% for ban in results %} |
|||
<tr{% if ban.expires != 0 and ban.expires < time() %} style="text-decoration:line-through"{% endif %}> |
|||
<td style="white-space: nowrap"> |
|||
{% if ban.real_ip %} |
|||
<a href="?/IP/{{ ban.ip }}#bans">{{ ban.ip }}</a> |
|||
{% else %} |
|||
{{ ban.ip|e }} |
|||
{% endif %} |
|||
</td> |
|||
<td> |
|||
{% if ban.reason %} |
|||
{{ ban.reason }} |
|||
{% else %} |
|||
- |
|||
{% endif %} |
|||
</td> |
|||
<td style="white-space: nowrap"> |
|||
{% if ban.board %} |
|||
{{ config.board_abbreviation|sprintf(ban.board) }} |
|||
{% else %} |
|||
<em>{% trans 'all boards' %}</em> |
|||
{% endif %} |
|||
</td> |
|||
<td style="white-space: nowrap"> |
|||
<span title="{{ ban.set|date(config.post_date) }}"> |
|||
{{ ban.set|ago }} ago |
|||
</span> |
|||
</td> |
|||
<td style="white-space: nowrap"> |
|||
{% if ban.expires == 0 %} |
|||
- |
|||
{% else %} |
|||
{{ (ban.expires - ban.set + time()) | until }} |
|||
{% endif %} |
|||
</td> |
|||
<td style="white-space: nowrap"> |
|||
{% if ban.expires == 0 %} |
|||
<em>{% trans 'never' %}</em> |
|||
{% else %} |
|||
{{ ban.expires|date(config.post_date) }} |
|||
{% if ban.expires > time() %} |
|||
<small>(in {{ ban.expires|until }})</small> |
|||
{% endif %} |
|||
{% endif %} |
|||
</td> |
|||
<td> |
|||
{% if ban.seen %} |
|||
{% trans 'Yes' %} |
|||
{% else %} |
|||
{% trans 'No' %} |
|||
{% endif %} |
|||
</td> |
|||
<td> |
|||
{% if ban.username %} |
|||
{% if mod|hasPermission(config.mod.view_banstaff) %} |
|||
<a href="?/new_PM/{{ ban.username|e }}">{{ ban.username|e }}</a> |
|||
{% else %} |
|||
{% if mod|hasPermission(config.mod.view_banquestionmark) %} |
|||
<em>?</em> |
|||
{% else %} |
|||
|
|||
{% endif %} |
|||
{% endif %} |
|||
{% elseif ban.mod == -1 %} |
|||
<em>system</em> |
|||
{% else %} |
|||
<em>{% trans 'deleted?' %}</em> |
|||
{% endif %} |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endif %} |
|||
|
|||
{% if search_type == 'log' %} |
|||
<table class="modlog"> |
|||
<tr> |
|||
<th>{% trans 'Staff' %}</th> |
|||
<th>{% trans 'IP address' %}</th> |
|||
<th>{% trans 'Time' %}</th> |
|||
<th>{% trans 'Board' %}</th> |
|||
<th>{% trans 'Action' %}</th> |
|||
</tr> |
|||
{% for log in results %} |
|||
<tr> |
|||
<td class="minimal"> |
|||
{% if log.username %} |
|||
<a href="?/log:{{ log.username|e }}">{{ log.username|e }}</a> |
|||
{% elseif log.mod == -1 %} |
|||
<em>system</em> |
|||
{% else %} |
|||
<em>{% trans 'deleted?' %}</em> |
|||
{% endif %} |
|||
</td> |
|||
<td class="minimal"> |
|||
<a href="?/IP/{{ log.ip }}">{{ log.ip }}</a> |
|||
</td> |
|||
<td class="minimal"> |
|||
<span title="{{ log.time|date(config.post_date) }}">{{ log.time|ago }}</span> |
|||
</td> |
|||
<td class="minimal"> |
|||
{% if log.board %} |
|||
<a href="?/{{ config.board_path|sprintf(log.board) }}{{ config.file_index }}">{{ config.board_abbreviation|sprintf(log.board) }}</a> |
|||
{% else %} |
|||
- |
|||
{% endif %} |
|||
</td> |
|||
<td> |
|||
{{ log.text }} |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endif %} |
|||
|
|||
{% if result_count > results|count %} |
|||
<p class="unimportant" style="text-align:center;word-wrap:break-word"> |
|||
{% for i in range(0, (result_count - 1) / config.mod.search_page) %} |
|||
<a href="?/search/{{ search_type }}/{{ search_query_escaped }}/{{ i + 1 }}">[{{ i + 1 }}]</a> |
|||
{% endfor %} |
|||
</p> |
|||
{% endif %} |
Loading…
Reference in new issue