/* * show-own-posts.js * https://github.com/savetheinternet/Tinyboard/blob/master/js/show-op.js * * Adds "(You)" to a name field when the post is yours. Update references as well. * * Released under the MIT license * Copyright (c) 2014 Marcin Ɓabanowski * * Usage: * $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/ajax.js'; * $config['additional_javascript'][] = 'js/show-own-posts.js'; * */ +function(){ if (typeof localStorage.own_posts_tracking === 'undefined') { localStorage.own_posts_tracking = 'true'; // set default } const addgui = function () { if (!(window.Options && Options.get_tab ('general'))) { return; } const prefix = "showownposts_"; const gui = '' + '' + ' ' + ''; Options.extend_tab ("general", gui); const cb = Options.get_tab ('general').content.find ('#' + prefix + 'track'); cb.prop ('checked', localStorage.own_posts_tracking === 'true'); cb.on ("change", function (ev) { const cb = ev.target; localStorage.own_posts_tracking = cb.checked ? 'true' : 'false'; }); Options.get_tab ('general').content.find ('#' + prefix + 'clear').on ("click", function () { localStorage.own_posts = '{}'; }); } var update_own = function() { if ($(this).is('.you')) return; var thread = $(this).parents('[id^="thread_"]').first(); if (!thread.length) { thread = $(this); } var board = thread.attr('data-board'); var posts = JSON.parse(localStorage.own_posts || '{}'); var id = $(this).attr('id').split('_')[1]; if (posts[board] && posts[board].indexOf(id) !== -1) { // Own post! $(this).addClass('you'); $(this).find('span.name').first().append(' '+_('(You)')+''); } // Update references $(this).find('div.body:first a:not([rel="nofollow"])').each(function() { var postID; if(postID = $(this).text().match(/^>>(\d+)$/)) postID = postID[1]; else return; if (posts[board] && posts[board].indexOf(postID) !== -1) { $(this).after(' '+_('(You)')+''); } }); }; var update_all = function() { $('div[id^="thread_"], div.post.reply').each(update_own); }; var board = null; $(function() { board = $('input[name="board"]').first().val(); update_all(); addgui(); }); $(document).on('ajax_after_post', function(e, r) { if (localStorage.own_posts_tracking !== 'true') { return; } var posts = JSON.parse(localStorage.own_posts || '{}'); posts[board] = posts[board] || []; posts[board].push(r.id); localStorage.own_posts = JSON.stringify(posts); }); $(document).on('new_post', function(e,post) { var $post = $(post); if ($post.is('div.post.reply')) { // it's a reply $post.each(update_own); } else { $post.each(update_own); // first OP $post.find('div.post.reply').each(update_own); // then replies } }); }();