componentconstructors['chatbox'] = function(dynmap, configuration) { var me = this; if(dynmap.getBoolParameterByName("hidechat")) return; var chat = $('
') .addClass('chat') .appendTo(dynmap.options.container); var messagelist = $('') .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 = $('') .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 = $('').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 = $('').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($('') .addClass('messagerow') .append(dynmap.options.joinmessage.replace('%playername%', playername)) ); } else if ((dynmap.options['msg-hiddennamejoin'].length > 0) && (playername.length == 0)) { addrow($('') .addClass('messagerow') .append(dynmap.options['msg-hiddennamejoin']) ); } }); $(dynmap).bind('playerquit', function(event, playername) { if ((dynmap.options.quitmessage.length > 0) && (playername.length > 0)) { addrow($('') .addClass('messagerow') .append(dynmap.options.quitmessage.replace('%playername%', playername)) ); } else if ((dynmap.options['msg-hiddennamequit'].length > 0) && (playername.length == 0)) { addrow($('') .addClass('messagerow') .append(dynmap.options['msg-hiddennamequit']) ); } }); $(dynmap).bind('chat', function(event, message) { var playerName = message.name; var playerAccount = message.account; var messageRow = $('') .addClass('messagerow'); var playerIconContainer = $('') .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 = $('').addClass('messagetext') .text('[' + message.channel + '] ') .appendTo(messageRow); } if (message.source === 'player' && configuration.showworld && playerAccount) { var playerWorldContainer = $('') .addClass('messagetext') .text('['+dynmap.players[playerAccount].location.world.name+']') .appendTo(messageRow); } var playerNameContainer = ''; if(message.name) { playerNameContainer = $('').addClass('messagetext').append(' '+message.name+': '); } var playerMessageContainer = $('') .addClass('messagetext') .text(chat_encoder(message)); messageRow.append(playerIconContainer,playerChannelContainer,playerNameContainer,playerMessageContainer); addrow(messageRow); }); };