/* * favorites.js - Allow user to favorite boards and put them in the bar * * Copyright (c) 2014 Fredrick Brennan * * 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(''+v+''); }) if (boards[0]) { return $('').append(' [ '+boards.join(" / ")+' ] '); } else { return $(''); } } 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') { $(document).ready(function(){ var favorites = JSON.parse(localStorage.favorites); var is_board_favorite = ~$.inArray(board_name, favorites); $('header>h1').append('\u2605'); 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); } }); }); }