summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorczaks <marcin@6irc.net>2014-09-20 22:14:04 +0200
committerczaks <marcin@6irc.net>2014-09-20 22:14:04 +0200
commit7e8bf0ec497f4dc437369b6c5f8061c347733d84 (patch)
tree47665ca9c7b2e9dd08d20e56cd7d827699d22ddd
parentf5820d2aae45f60b6e6998b9ec2997c68a66fbf6 (diff)
parent7288f1dec786844a159af30f0286be5912b13db6 (diff)
Merge branch 'master' of github.com:vichan-devel/Tinyboard
-rw-r--r--inc/bans.php6
-rw-r--r--inc/config.php4
-rw-r--r--js/favorites.js75
-rw-r--r--js/quick-reply.js2
-rw-r--r--post.php2
-rw-r--r--templates/post_form.html2
6 files changed, 86 insertions, 5 deletions
diff --git a/inc/bans.php b/inc/bans.php
index d5225e95..ed81c6e4 100644
--- a/inc/bans.php
+++ b/inc/bans.php
@@ -123,12 +123,12 @@ class Bans {
$query = prepare('SELECT ``bans``.*' . ($get_mod_info ? ', `username`' : '') . ' FROM ``bans``
' . ($get_mod_info ? 'LEFT JOIN ``mods`` ON ``mods``.`id` = `creator`' : '') . '
WHERE
- (' . ($board ? '(`board` IS NULL OR `board` = :board) AND' : '') . '
+ (' . ($board !== false ? '(`board` IS NULL OR `board` = :board) AND' : '') . '
(`ipstart` = :ip OR (:ip >= `ipstart` AND :ip <= `ipend`)))
ORDER BY `expires` IS NULL, `expires` DESC');
- if ($board)
- $query->bindValue(':board', $board);
+ if ($board !== false)
+ $query->bindValue(':board', $board, PDO::PARAM_STR);
$query->bindValue(':ip', inet_pton($ip));
$query->execute() or error(db_error($query));
diff --git a/inc/config.php b/inc/config.php
index 3dd8eb6c..e2cc2ebd 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -274,6 +274,7 @@
'file_url',
'json_response',
'user_flag',
+ 'no_country'
);
// Enable reCaptcha to make spam even harder. Rarely necessary.
@@ -531,6 +532,9 @@
// Attach country flags to posts.
$config['country_flags'] = false;
+ // Allow the user to decide whether or not he wants to display his country
+ $config['allow_no_country'] = false;
+
// Load all country flags from one file
$config['country_flags_condensed'] = true;
$config['country_flags_condensed_css'] = 'static/flags/flags.css';
diff --git a/js/favorites.js b/js/favorites.js
new file mode 100644
index 00000000..30bf12d0
--- /dev/null
+++ b/js/favorites.js
@@ -0,0 +1,75 @@
+/*
+ * favorites.js - Allow user to favorite boards and put them in the bar
+ *
+ * Copyright (c) 2014 Fredrick Brennan <admin@8chan.co>
+ *
+ * Usage:
+ * $config['additional_javascript'][] = 'js/jquery.min.js';
+ * $config['additional_javascript'][] = 'js/favorites.js';
+ */
+
+if (!localStorage.favorites) {
+ localStorage.favorites = '[]';
+}
+
+function favorite(board) {
+ var favorites = JSON.parse(localStorage.favorites);
+ favorites.push(board);
+ localStorage.favorites = JSON.stringify(favorites);
+};
+
+function unfavorite(board) {
+ var favorites = JSON.parse(localStorage.favorites);
+ var index = $.inArray(board, favorites);
+ if (~index) {
+ favorites.splice(index, 1);
+ }
+ localStorage.favorites = JSON.stringify(favorites);
+};
+
+function handle_boards(data) {
+ var boards = new Array();
+ data = JSON.parse(data);
+
+ $.each(data, function(k, v) {
+ boards.push('<a href="/'+v+'">'+v+'</a>');
+ })
+
+ if (boards[0]) {
+ return $('<span class="favorite-boards"></span>').append(' [ '+boards.slice(0,10).join(" / ")+' ] ');
+ }
+}
+
+function add_favorites() {
+ $('.favorite-boards').remove();
+
+ var boards = handle_boards(localStorage.favorites);
+
+ $('.boardlist').append(boards);
+};
+
+if (active_page == 'thread' || active_page == 'index') {
+ $(document).ready(function(){
+ var favorites = JSON.parse(localStorage.favorites);
+ var is_board_favorite = ~$.inArray(board_name, favorites);
+ console.log(is_board_favorite);
+
+ $('header>h1').append('<a id="favorite-star" href="#" data-active="'+(is_board_favorite ? 'true' : 'false')+'" style="color: '+(is_board_favorite ? 'yellow' : 'grey')+'; text-decoration:none">\u2605</span>');
+ add_favorites();
+
+ $('#favorite-star').on('click', function(e) {
+ e.preventDefault();
+ if (!$(this).data('active')) {
+ favorite(board_name);
+ add_favorites();
+ $(this).css('color', 'yellow');
+ $(this).data('active', true);
+ } else {
+ unfavorite(board_name);
+ add_favorites();
+ $(this).css('color', 'grey');
+ $(this).data('active', false);
+ }
+ });
+ });
+}
diff --git a/js/quick-reply.js b/js/quick-reply.js
index 93cab334..07fe4aef 100644
--- a/js/quick-reply.js
+++ b/js/quick-reply.js
@@ -266,6 +266,8 @@
$postForm.find('input[type="file"]').parent()
.removeAttr('colspan')
.after($('<td class="spoiler"></td>').append(this, ' ', $('<label for="q-spoiler-image">').text(_('Spoiler Image'))));
+ } else if ($(this).attr('name') == 'no_country') {
+ $td.find('label,input[type="checkbox"]').remove();
} else {
$(tr).remove();
}
diff --git a/post.php b/post.php
index 033e5ab5..2763d4d3 100644
--- a/post.php
+++ b/post.php
@@ -487,7 +487,7 @@ if (isset($_POST['delete'])) {
$post['body'] .= "\n<tinyboard raw html>1</tinyboard>";
}
- if ($config['country_flags']) {
+ if (($config['country_flags'] && !$config['allow_no_country']) || ($config['country_flags'] && $config['allow_no_country'] && !isset($_POST['no_country']))) {
require 'inc/lib/geoip/geoip.inc';
$gi=geoip\geoip_open('inc/lib/geoip/GeoIPv6.dat', GEOIP_STANDARD);
diff --git a/templates/post_form.html b/templates/post_form.html
index 3e425245..1846adb5 100644
--- a/templates/post_form.html
+++ b/templates/post_form.html
@@ -15,7 +15,7 @@
{{ antibot.html() }}
</th>
<td>
- <input type="text" name="name" size="25" maxlength="35" autocomplete="off">
+ <input type="text" name="name" size="25" maxlength="35" autocomplete="off"> {% if config.allow_no_country and config.country_flags %}<input id="no_country" name="no_country" type="checkbox"> <label for="no_country">{% trans %}Don't show my flag{% endtrans %}</label>{% endif %}
{{ antibot.html() }}
</td>
</tr>{% endif %}