diff options
| author | czaks <marcin@6irc.net> | 2014-09-20 22:14:04 +0200 |
|---|---|---|
| committer | czaks <marcin@6irc.net> | 2014-09-20 22:14:04 +0200 |
| commit | 7e8bf0ec497f4dc437369b6c5f8061c347733d84 (patch) | |
| tree | 47665ca9c7b2e9dd08d20e56cd7d827699d22ddd | |
| parent | f5820d2aae45f60b6e6998b9ec2997c68a66fbf6 (diff) | |
| parent | 7288f1dec786844a159af30f0286be5912b13db6 (diff) | |
Merge branch 'master' of github.com:vichan-devel/Tinyboard
| -rw-r--r-- | inc/bans.php | 6 | ||||
| -rw-r--r-- | inc/config.php | 4 | ||||
| -rw-r--r-- | js/favorites.js | 75 | ||||
| -rw-r--r-- | js/quick-reply.js | 2 | ||||
| -rw-r--r-- | post.php | 2 | ||||
| -rw-r--r-- | templates/post_form.html | 2 |
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(); } @@ -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 %} |
