$(document).ready(function() { var topicsListEl = document.querySelector('.topics'), loadMoreEl = document.getElementById('topics_loadmore'); $(topicsListEl).on('click', '[data-action]', function() { var $this = $(this), action = this.getAttribute('data-action'), tid = $this.parents('[data-tid]').attr('data-tid'); switch(action) { case 'pin': if (!$this.hasClass('active')) socket.emit('api:topic.pin', { tid: tid }); else socket.emit('api:topic.unpin', { tid: tid }); break; case 'lock': if (!$this.hasClass('active')) socket.emit('api:topic.lock', { tid: tid }); else socket.emit('api:topic.unlock', { tid: tid }); break; case 'delete': if (!$this.hasClass('active')) socket.emit('api:topic.delete', { tid: tid }); else socket.emit('api:topic.restore', { tid: tid }); break; } }); loadMoreEl.addEventListener('click', function() { if (this.className.indexOf('disabled') === -1) { var topics = document.querySelectorAll('.topics li[data-tid]'), lastTid = parseInt(topics[topics.length - 1].getAttribute('data-tid')); this.innerHTML = ' Retrieving topics'; socket.emit('api:admin.topics.getMore', { limit: 10, after: lastTid }); } }, false); // Resolve proper button state for all topics var topicEls = topicsListEl.querySelectorAll('li'), numTopics = topicEls.length; for(var x=0;x 0) { var html = templates.prepare(templates['admin/topics'].blocks['topics']).parse({ topics: topics }), topicsListEl = document.querySelector('.topics'); topicsListEl.innerHTML += html; btnEl.innerHTML = 'Load More Topics'; } else { // Exhausted all topics btnEl.className += ' disabled'; btnEl.innerHTML = 'No more topics'; } });