Initial commit
This commit is contained in:
153
Creative/dynmap/web/js/chatbox.js
Normal file
153
Creative/dynmap/web/js/chatbox.js
Normal file
@@ -0,0 +1,153 @@
|
||||
componentconstructors['chatbox'] = function(dynmap, configuration) {
|
||||
var me = this;
|
||||
|
||||
if(dynmap.getBoolParameterByName("hidechat"))
|
||||
return;
|
||||
var chat = $('<div/>')
|
||||
.addClass('chat')
|
||||
.appendTo(dynmap.options.container);
|
||||
var messagelist = $('<div/>')
|
||||
.addClass('messagelist')
|
||||
.appendTo(chat);
|
||||
|
||||
if (configuration.visiblelines) {
|
||||
messagelist.css('max-height', configuration.visiblelines + 'em');
|
||||
}
|
||||
else {
|
||||
messagelist.css('max-height', '6em');
|
||||
}
|
||||
|
||||
if (configuration.scrollback) {
|
||||
messagelist.addClass('scrollback')
|
||||
.click( function() { $(this).hide(); } );
|
||||
}
|
||||
|
||||
if (dynmap.options.allowwebchat) {
|
||||
if(dynmap.options.loggedin || !dynmap.options['webchat-requires-login']) {
|
||||
var chatinput = $('<input/>')
|
||||
.addClass('chatinput')
|
||||
.attr({
|
||||
id: 'chatinput',
|
||||
type: 'text',
|
||||
value: '',
|
||||
maxlength: dynmap.options.chatlengthlimit
|
||||
})
|
||||
.keydown(function(event) {
|
||||
if (event.keyCode == '13') {
|
||||
event.preventDefault();
|
||||
if(chatinput.val() != '') {
|
||||
$(dynmap).trigger('sendchat', [chatinput.val()]);
|
||||
chatinput.val('');
|
||||
}
|
||||
}
|
||||
});
|
||||
if(configuration.sendbutton) {
|
||||
var chatbutton = $('<button/>').addClass('chatsendbutton').click(function(event) {
|
||||
if(chatinput.val() != '') {
|
||||
$(dynmap).trigger('sendchat', [chatinput.val()]);
|
||||
chatinput.val('');
|
||||
}
|
||||
}).text("+").appendTo(chat);
|
||||
}
|
||||
chatinput.appendTo(chat);
|
||||
if (configuration.scrollback) {
|
||||
chatinput.click(function(){
|
||||
var m = $('.messagelist');
|
||||
m.show().scrollTop(m.scrollHeight());
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
var login = $('<button/>').addClass('loginbutton').click(function(event) {
|
||||
window.location = 'login.html';
|
||||
}).text(dynmap.options['msg-chatrequireslogin']).appendTo(chat);
|
||||
}
|
||||
}
|
||||
|
||||
var addrow = function(row) {
|
||||
if (configuration.scrollback) {
|
||||
var c = messagelist.children();
|
||||
c.slice(0, Math.max(0, c.length-configuration.scrollback)).each(function(index, elem){ $(elem).remove(); });
|
||||
} else {
|
||||
setTimeout(function() { row.remove(); }, (configuration.messagettl * 1000));
|
||||
}
|
||||
messagelist.append(row);
|
||||
messagelist.show();
|
||||
messagelist.scrollTop(messagelist.scrollHeight());
|
||||
};
|
||||
|
||||
$(dynmap).bind('playerjoin', function(event, playername) {
|
||||
if ((dynmap.options.joinmessage.length > 0) && (playername.length > 0)) {
|
||||
addrow($('<div/>')
|
||||
.addClass('messagerow')
|
||||
.append(dynmap.options.joinmessage.replace('%playername%', playername))
|
||||
);
|
||||
}
|
||||
else if ((dynmap.options['msg-hiddennamejoin'].length > 0) && (playername.length == 0)) {
|
||||
addrow($('<div/>')
|
||||
.addClass('messagerow')
|
||||
.append(dynmap.options['msg-hiddennamejoin'])
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
$(dynmap).bind('playerquit', function(event, playername) {
|
||||
if ((dynmap.options.quitmessage.length > 0) && (playername.length > 0)) {
|
||||
addrow($('<div/>')
|
||||
.addClass('messagerow')
|
||||
.append(dynmap.options.quitmessage.replace('%playername%', playername))
|
||||
);
|
||||
}
|
||||
else if ((dynmap.options['msg-hiddennamequit'].length > 0) && (playername.length == 0)) {
|
||||
addrow($('<div/>')
|
||||
.addClass('messagerow')
|
||||
.append(dynmap.options['msg-hiddennamequit'])
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
$(dynmap).bind('chat', function(event, message) {
|
||||
var playerName = message.name;
|
||||
var playerAccount = message.account;
|
||||
var messageRow = $('<div/>')
|
||||
.addClass('messagerow');
|
||||
|
||||
var playerIconContainer = $('<span/>')
|
||||
.addClass('messageicon');
|
||||
|
||||
if (message.source === 'player' && configuration.showplayerfaces &&
|
||||
playerAccount) {
|
||||
getMinecraftHead(playerAccount, 16, function(head) {
|
||||
messageRow.icon = $(head)
|
||||
.addClass('playerMessageIcon')
|
||||
.appendTo(playerIconContainer);
|
||||
});
|
||||
}
|
||||
|
||||
var playerChannelContainer = '';
|
||||
if (message.channel) {
|
||||
playerChannelContainer = $('<span/>').addClass('messagetext')
|
||||
.text('[' + message.channel + '] ')
|
||||
.appendTo(messageRow);
|
||||
}
|
||||
|
||||
if (message.source === 'player' && configuration.showworld && playerAccount) {
|
||||
var playerWorldContainer = $('<span/>')
|
||||
.addClass('messagetext')
|
||||
.text('['+dynmap.players[playerAccount].location.world.name+']')
|
||||
.appendTo(messageRow);
|
||||
}
|
||||
|
||||
var playerNameContainer = '';
|
||||
if(message.name) {
|
||||
playerNameContainer = $('<span/>').addClass('messagetext').append(' '+message.name+': ');
|
||||
}
|
||||
|
||||
var playerMessageContainer = $('<span/>')
|
||||
.addClass('messagetext')
|
||||
.text(chat_encoder(message));
|
||||
|
||||
messageRow.append(playerIconContainer,playerChannelContainer,playerNameContainer,playerMessageContainer);
|
||||
addrow(messageRow);
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user