77 lines
2.1 KiB
JavaScript
77 lines
2.1 KiB
JavaScript
/*
|
|
* 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';
|
|
*
|
|
* XX: favorites.js may conflict with watch.js and compact-boardlist.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' || active_page == 'catalog' || active_page == 'ukko') {
|
|
$(document).ready(function(){
|
|
var favorites = JSON.parse(localStorage.favorites);
|
|
var is_board_favorite = ~$.inArray(board_name, favorites);
|
|
|
|
$('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);
|
|
}
|
|
});
|
|
});
|
|
}
|