'use strict'; /* globals define, app, translator, socket, bootbox */ define('forum/categoryTools', ['forum/topic/move', 'topicSelect'], function(move, topicSelect) { var CategoryTools = {}; CategoryTools.init = function(cid) { CategoryTools.cid = cid; topicSelect.init(onTopicSelect); $('.delete_thread').on('click', function(e) { var tids = topicSelect.getSelectedTids(); if (tids.length) { var command = isAny(isTopicDeleted, tids) ? 'restore' : 'delete'; translator.translate('[[topic:thread_tools.' + command + '_confirm]]', function(msg) { bootbox.confirm(msg, function(confirm) { if (!confirm) { return; } socket.emit('topics.' + command, tids, onCommandComplete); }); }); } return false; }); $('.lock_thread').on('click', function(e) { var tids = topicSelect.getSelectedTids(); if (tids.length) { socket.emit(isAny(isTopicLocked, tids) ? 'topics.unlock' : 'topics.lock', tids, onCommandComplete); } return false; }); $('.pin_thread').on('click', function(e) { var tids = topicSelect.getSelectedTids(); if (tids.length) { socket.emit(isAny(isTopicPinned, tids) ? 'topics.unpin' : 'topics.pin', tids, onCommandComplete); } return false; }); $('.markAsUnreadForAll').on('click', function() { var tids = topicSelect.getSelectedTids(); if (tids.length) { socket.emit('topics.markAsUnreadForAll', tids, function(err) { if(err) { return app.alertError(err.message); } app.alertSuccess('[[topic:markAsUnreadForAll.success]]'); onCommandComplete(); }); } return false; }); $('.move_thread').on('click', function() { var tids = topicSelect.getSelectedTids(); if (tids.length) { move.init(tids, cid, onCommandComplete); } return false; }); $('.move_all_threads').on('click', function() { move.init(null, cid, function(err) { ajaxify.refresh(); }); }); socket.on('event:topic_deleted', setDeleteState); socket.on('event:topic_restored', setDeleteState); socket.on('event:topic_locked', setLockedState); socket.on('event:topic_unlocked', setLockedState); socket.on('event:topic_pinned', setPinnedState); socket.on('event:topic_unpinned', setPinnedState); socket.on('event:topic_moved', onTopicMoved); }; CategoryTools.removeListeners = function() { socket.removeListener('event:topic_deleted', setDeleteState); socket.removeListener('event:topic_restored', setDeleteState); socket.removeListener('event:topic_locked', setLockedState); socket.removeListener('event:topic_unlocked', setLockedState); socket.removeListener('event:topic_pinned', setPinnedState); socket.removeListener('event:topic_unpinned', setPinnedState); socket.removeListener('event:topic_moved', onTopicMoved); }; function closeDropDown() { $('.thread-tools.open').find('.dropdown-toggle').trigger('click'); } function onCommandComplete(err) { if (err) { return app.alertError(err.message); } closeDropDown(); topicSelect.unselectAll(); } function onTopicSelect() { var tids = topicSelect.getSelectedTids(); var isAnyDeleted = isAny(isTopicDeleted, tids); var isAnyPinned = isAny(isTopicPinned, tids); var isAnyLocked = isAny(isTopicLocked, tids); translator.translate(' [[topic:thread_tools.' + (isAnyDeleted ? 'restore' : 'delete') + ']]', function(translated) { $('.delete_thread span').html(translated); }); translator.translate(' [[topic:thread_tools.' + (isAnyPinned ? 'unpin' : 'pin') + ']]', function(translated) { $('.pin_thread').html(translated); }); translator.translate(' [[topic:thread_tools.' + (isAnyLocked ? 'un': '') + 'lock]]', function(translated) { $('.lock_thread').html(translated); }); } function isAny(method, tids) { for(var i=0; i