summaryrefslogtreecommitdiff
path: root/js/favorites.js
diff options
context:
space:
mode:
authorFredrick Brennan <admin@8chan.co>2014-09-20 15:27:26 +0000
committerFredrick Brennan <admin@8chan.co>2014-09-20 16:35:19 +0000
commit1ce9fb8174cd7f5fb39f87b83095caf6a47258f1 (patch)
tree6ac28438fe03e330e11859c5f0b7d9ae09ced7ef /js/favorites.js
parent9070b061ee6c3ccd2ee8fa4988e57f63acc0f5fc (diff)
Allow users to choose their favorite boards for sites w/too many to put in bar
Diffstat (limited to 'js/favorites.js')
-rw-r--r--js/favorites.js75
1 files changed, 75 insertions, 0 deletions
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);
+ }
+ });
+ });
+}