276 lines
5.9 KiB
JavaScript
276 lines
5.9 KiB
JavaScript
/*jshint bitwise:true, curly:true, devel:true, eqeqeq:true, evil:true, forin:false, noarg:true, noempty:true, nonew:true, undef:true, strict:false, browser:true, jquery:true */
|
|
|
|
var History = function() {
|
|
var self = this;
|
|
var args = arguments;
|
|
$(function(){
|
|
self.init.apply(self, args);
|
|
});
|
|
};
|
|
|
|
History.prototype = {
|
|
animSpeed: 'normal',
|
|
noPosts: '<div id="ys-post-1" class="ys-post ys-first ys-admin-post">\n<span class="ys-post-timestamp">13:37</span>\n<span class="ys-post-nickname">Yurivish:<span>\n<span class="ys-post-message">Hey, there aren\'t any posts in this log.</span>\n</div>',
|
|
|
|
init: function(options) {
|
|
this.prefsInfo = options.prefsInfo;
|
|
this.log = options.log;
|
|
this.initEvents();
|
|
$('body').ScrollToAnchors({ duration: 800 });
|
|
},
|
|
|
|
initEvents: function() {
|
|
var self = this;
|
|
|
|
this.initLogEvents();
|
|
|
|
// Select log
|
|
$('#log').change(function() {
|
|
var logIndex = $(this).find('option[@selected]').attr('rel');
|
|
|
|
var pars = {
|
|
p: 'yes',
|
|
log: logIndex
|
|
};
|
|
|
|
self.ajax(function(html) {
|
|
$('#ys-posts').html(html);
|
|
$('#yshout').fadeIn();
|
|
self.initLogEvents();
|
|
}, pars, true, 'index.php');
|
|
});
|
|
|
|
// Clear the log
|
|
$('#clear-log').click(function() {
|
|
var el = this;
|
|
var pars = {
|
|
reqType: 'clearlog'
|
|
};
|
|
|
|
self.ajax(function(json) {
|
|
if (json.error) {
|
|
switch(json.error) {
|
|
case 'admin':
|
|
self.error('You\'re not an admin. Log in through the admin CP to clear the log.');
|
|
el.innerHTML = 'Clear this log';
|
|
return;
|
|
}
|
|
}
|
|
|
|
$('#ys-posts').html(self.noPosts);
|
|
self.initLogEvents();
|
|
el.innerHTML = 'Clear this log';
|
|
}, pars);
|
|
|
|
this.innerHTML = 'Clearing...';
|
|
return false;
|
|
});
|
|
|
|
// Clear all logs
|
|
$('#clear-logs').click(function() {
|
|
var el = this;
|
|
var pars = {
|
|
reqType: 'clearlogs'
|
|
};
|
|
|
|
self.ajax(function(json) {
|
|
if (json.error) {
|
|
switch(json.error) {
|
|
case 'admin':
|
|
el.innerHTML = 'Clear all logs';
|
|
self.error('You\'re not an admin. Log in through the admin CP to clear logs.');
|
|
return;
|
|
}
|
|
}
|
|
|
|
$('#ys-posts').html(self.noPosts);
|
|
self.initLogEvents();
|
|
el.innerHTML = 'Clear all logs';
|
|
}, pars);
|
|
|
|
this.innerHTML = 'Clearing...';
|
|
return false;
|
|
});
|
|
},
|
|
|
|
initLogEvents: function() {
|
|
var self = this;
|
|
|
|
$('#yshout .ys-post')
|
|
.find('.ys-info-link').toggle(
|
|
function() { self.showInfo.apply(self, [$(this).parent().parent()[0].id, this]); return false; },
|
|
function() { self.hideInfo.apply(self, [$(this).parent().parent()[0].id, this]); return false; })
|
|
.end()
|
|
.find('.ys-ban-link').click(
|
|
function() { self.ban.apply(self, [$(this).parent().parent()[0]]); return false; })
|
|
.end()
|
|
.find('.ys-delete-link').click(
|
|
function() { self.del.apply(self, [$(this).parent().parent()[0]]); return false; });
|
|
},
|
|
|
|
showInfo: function(id, el) {
|
|
var jEl = $('#' + id + ' .ys-post-info');
|
|
|
|
if (jEl.length === 0) { return false; }
|
|
|
|
if (this.prefsInfo === 'overlay') {
|
|
jEl.css('display', 'block').fadeIn(this.animSpeed);
|
|
} else {
|
|
jEl.slideDown(this.animSpeed);
|
|
}
|
|
|
|
el.innerHTML ='Close Info';
|
|
return false;
|
|
},
|
|
|
|
hideInfo: function(id, el) {
|
|
var jEl = $('#' + id + ' .ys-post-info');
|
|
|
|
if (jEl.length === 0) { return false; }
|
|
|
|
if (this.prefsInfo === 'overlay') {
|
|
jEl.fadeOut(this.animSpeed);
|
|
} else {
|
|
jEl.slideUp(this.animSpeed);
|
|
}
|
|
|
|
el.innerHTML = 'Info';
|
|
return false;
|
|
},
|
|
|
|
ban: function(post) {
|
|
var self = this;
|
|
var link = $('#' + post.id).find('.ys-ban-link')[0];
|
|
|
|
switch(link.innerHTML)
|
|
{
|
|
case 'Ban':
|
|
var pIP = $(post).find('.ys-h-ip').html();
|
|
var pNickname = $(post).find('.ys-h-nickname').html();
|
|
|
|
var pars = {
|
|
log: self.log,
|
|
reqType: 'ban',
|
|
ip: pIP,
|
|
nickname: pNickname
|
|
};
|
|
|
|
this.ajax(function(json) {
|
|
if (json.error) {
|
|
switch (json.error) {
|
|
case 'admin':
|
|
self.error('You\'re not an admin. Log in through the admin CP to ban people.');
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
|
|
$('#yshout .ys-post[@rel="' + pars.ip + '"]')
|
|
.addClass('ys-banned-post')
|
|
.find('.ys-ban-link')
|
|
.html('Unban');
|
|
|
|
}, pars);
|
|
|
|
link.innerHTML = 'Banning...';
|
|
return false;
|
|
|
|
case 'Banning...':
|
|
return false;
|
|
|
|
case 'Unban':
|
|
var pIP = $(post).find('.ys-h-ip').html();
|
|
var pars = {
|
|
reqType: 'unban',
|
|
ip: pIP
|
|
};
|
|
|
|
this.ajax(function(json) {
|
|
if (json.error) {
|
|
switch(json.error) {
|
|
case 'admin':
|
|
self.error('You\'re not an admin. Log in through the admin CP to unban people.');
|
|
return;
|
|
}
|
|
}
|
|
|
|
$('#yshout .ys-post[@rel="' + pars.ip + '"]')
|
|
.removeClass('ys-banned-post')
|
|
.find('.ys-ban-link')
|
|
.html('Ban');
|
|
|
|
}, pars);
|
|
|
|
link.innerHTML = 'Unbanning...';
|
|
return false;
|
|
|
|
case 'Unbanning...':
|
|
return false;
|
|
}
|
|
},
|
|
|
|
del: function(post) {
|
|
var self = this;
|
|
|
|
var link = $('#' + post.id).find('.ys-delete-link')[0];
|
|
if (link.innerHTML === 'Deleting...') { return; }
|
|
|
|
var pUID = $(post).find('.ys-h-uid').html();
|
|
|
|
var pars = {
|
|
reqType: 'delete',
|
|
uid: pUID
|
|
};
|
|
|
|
self.ajax(function(json) {
|
|
if (json.error) {
|
|
switch(json.error) {
|
|
case 'admin':
|
|
self.error('You\'re not an admin. Log in through the admin CP to ban people.');
|
|
return;
|
|
}
|
|
}
|
|
|
|
$(post).slideUp(self.animSpeed);
|
|
|
|
}, pars);
|
|
|
|
link.innerHTML = 'Deleting...';
|
|
return false;
|
|
|
|
},
|
|
|
|
json: function(parse) {
|
|
var json = eval('(' + parse + ')');
|
|
return json;
|
|
},
|
|
|
|
ajax: function(callback, pars, html, page) {
|
|
pars = jQuery.extend({
|
|
reqFor: 'history',
|
|
log: this.log
|
|
}, pars);
|
|
|
|
var self = this;
|
|
|
|
if (page === null) { page = '../yshout.php'; }
|
|
|
|
$.post(page, pars, function(parse) {
|
|
if (parse) {
|
|
if (html) {
|
|
callback.apply(self, [parse]);
|
|
} else {
|
|
callback.apply(self, [self.json(parse)]);
|
|
}
|
|
} else {
|
|
callback.apply(self);
|
|
}
|
|
});
|
|
},
|
|
|
|
error: function(err) {
|
|
alert(err);
|
|
}
|
|
|
|
};
|
|
|