You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.7 KiB
JavaScript

"use strict";
/*global define, socket, app, admin, utils, RELATIVE_PATH*/
define('admin/manage/flags', ['infinitescroll', 'admin/modules/selectable'], function(infinitescroll, selectable) {
var Flags = {};
Flags.init = function() {
handleDismiss();
handleDelete();
handleInfiniteScroll();
};
function handleDismiss() {
$('.flags').on('click', '.dismiss', function() {
var btn = $(this);
var pid = btn.siblings('[data-pid]').attr('data-pid');
socket.emit('admin.dismissFlag', pid, function(err) {
done(err, btn);
});
});
}
function handleDelete() {
$('.flags').on('click', '.delete', function() {
var btn = $(this);
var pid = btn.siblings('[data-pid]').attr('data-pid');
var tid = btn.siblings('[data-pid]').attr('data-tid');
socket.emit('posts.delete', {pid: pid, tid: tid}, function(err) {
done(err, btn);
});
});
}
function done(err, btn) {
if (err) {
return app.alertError(err.messaage);
}
btn.parent().fadeOut(function() {
btn.remove();
});
if (!$('.flags [data-pid]').length) {
$('.post-container').text('No flagged posts!');
}
}
function handleInfiniteScroll() {
infinitescroll.init(function(direction) {
if (direction < 0 && !$('.flags').length) {
return;
}
infinitescroll.loadMore('admin.getMoreFlags', $('[data-next]').attr('data-next'), function(data, done) {
if (data.posts && data.posts.length) {
infinitescroll.parseAndTranslate('admin/manage/flags', 'posts', {posts: data.posts}, function(html) {
$('[data-next]').attr('data-next', data.next);
$('.post-container').append(html);
done();
});
} else {
done();
}
});
});
}
return Flags;
});