Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Shoutbox=window.Shoutbox||{};if(window.jQuery===undefined)jQuery=$={};!function($,window,document)
- {"use strict";
- const events={ERROR:0x01,NEW_MESSAGE:0x02,DEL_MESSAGE:0x03,EDIT_MESSAGE:0x04,PIN_MESSAGE:0x05,SETTINGS:{VALUES:0x10,UPDATE:0x11},LEADERBOARD:0x20,BAN_USER:0x97,UNBAN_USER:0x98,USER_BANNED:0x99,BANNING_LIST:0x900};
- const months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
- const modTemplates={edit:'<a href class="mod edit">E</a>',delete:'<a href class="mod del">X</a>',pin:'<a href class="mod pin">P</a>'};
- const messageTemplate='<div class="entry {extraClasses}" data-id="{id}" data-user="{uid}" data-discord="{discord}" data-shouts="{shouts}">'+
- '<div class="avatar">'+
- '<img class="normal_avatar" src="{avatarLink}" alt="avatar" />'+
- '</div>'+
- '<div class="user" style="min-width: 110px;">'+
- '{username}'+
- '</div>'+
- '<div class="text">{message}</div>'+
- '<div class="info">'+
- '{editButton}'+
- '{deleteButton}'+
- '{pinButton}'+
- '<span class="date">{date}</span>'+
- '</div>'+
- '</div>';
- const banningMeta={template:'<tr class="banning-entry" data-id="{id}">'+
- '<td align="center">{username}</td>'+
- '<td align="center">{reason}</td>'+
- '<td align="center">{unbanDate}</td>'+
- '{unbanButton}'+
- '<td align="center">{mod}</td>'+
- '</tr>',unbanButton:'<td align="center"><input type="button" class="button unban-button" value="Unban" /></td>'};
- const leaderboardTemplate='<tr class="leaderboard-entry">'+
- '<td align="center">{username}</td>'+
- '<td align="center">{number}</td>'+
- '</tr>';
- $.extend(Shoutbox,{server:null,socket:null,userRoom:'main',mentionSound:new Audio('msb_sound.mp3'),twitchMode:false,cooldown:{value:0,interval:null,placeholder:''},connect:function()
- {
- this.socket=io.connect('cracked-sh.herokuapp.com:443',{transports:['websocket'],query:'token='+this.userToken});
- setInterval(()=>{console.log(this.socket);},2000);
- },emit:function(event,message)
- {
- this.socket.emit(event,message);
- },handleEvents:function()
- {
- this.socket.on(events.NEW_MESSAGE,(data)=>
- {
- if(typeof data.message.twitch!=='undefined')
- {
- this.twitchMode=data.message.twitch;
- }
- $('#container-'+data.room).prepend(this.buildTemplate(data.message))
- });
- this.socket.on(events.DEL_MESSAGE,(id)=>
- {
- var message=$('[data-id="'+id+'"]');
- if(message.length>0)
- {
- message.fadeOut('slow',function()
- {
- $(this).remove();
- });
- }
- });
- this.socket.on(events.EDIT_MESSAGE,(data)=>
- {
- var entry=$('[data-id="'+data.id+'"]');
- if(entry.length>0)
- {
- entry.find('.text').html(data.message);
- }
- });
- this.socket.on(events.PIN_MESSAGE,(message)=>
- {
- $('.entry.pinned').remove();
- $('#shoutbox .body').prepend(this.buildTemplate(message,'pinned'))
- });
- this.socket.on(events.BAN_USER,(data)=>
- {
- $('#shoutbox_ban_modal .ban-error').show();
- if(data.success)
- {
- $('#shoutbox_ban_modal .ban-error .tcat').text('User successfully banned !');
- setTimeout(()=>
- {
- $('#shoutbox_ban_modal .close-modal').trigger('click');
- $('#shoutbox_ban_modal .ban-error').hide();
- },1000);
- }
- else if(data.error)
- {
- $('#shoutbox_ban_modal .ban-error .tcat').text(data.error);
- }
- });
- this.socket.on(events.USER_BANNED,(data)=>
- {
- $('#shoutbox .modal').remove();
- if(data.reason.length>0)
- {
- var banningMessage='You have been banned from the shoutbox for the following reason: '+data.reason+'.';
- }
- else
- {
- var banningMessage='You have been banned from the shoutbox.';
- }
- if(data.unban==-1)
- {banningMessage+=' You were permanently banned.';}
- else
- {
- var options={weekday:'long',year:'numeric',month:'long',day:'numeric'};
- banningMessage+=' Your banning will expire on '+new Date(data.unban).toLocaleDateString('en-US',options)+' at '+new Date(data.unban).toLocaleTimeString('en-US');
- }
- $('#shoutbox .panel').html('<div class="shoutbox-error">'+banningMessage+'</div>');
- });
- this.socket.on(events.BANNING_LIST,(data)=>
- {
- $('#banlist_users .banning-entry').remove();
- if(data)
- {
- if(!Shoutbox.permissions.mod)
- {
- $('#shoutbox_banlist_modal .tcat.unban').remove();
- }
- $('#banlist_users').append(this.buildBanningTemplate(data));
- }
- $('#shoutbox_banlist_modal').modal({keepelement:true});
- });
- this.socket.on(events.UNBAN_USER,(data)=>
- {
- $('[data-id="'+data._id+'"]').fadeOut(function()
- {
- $(this).remove();
- });
- });
- this.socket.on(events.LEADERBOARD,(data)=>
- {
- $('#leaderboard_users .leaderboard-entry').remove();
- if(data)
- {
- $('#leaderboard_users').append(this.buildLeaderboardTemplate(data));
- }
- $('#shoutbox_leaderboard_modal').modal({keepelement:true});
- });
- this.socket.on(events.SETTINGS.VALUES,(data)=>
- {
- this.twitchMode=data.twitch;
- this.initCooldown(data.cooldown);
- $('#shoutbox_settings_modal #sound').prop('checked',data.sound);
- $('#shoutbox_settings_modal #volume').val(data.volume*100);
- this.mentionSound.volume=data.volume;
- this.mentionSound.muted=data.sound?false:true;
- });
- },buildLeaderboardTemplate:function(users)
- {
- var content='';
- for(var user of users)
- {
- content+=leaderboardTemplate.replace('{username}',user.user).replace('{number}',user.total);
- }
- return content;
- },buildBanningTemplate:function(bannings)
- {
- var content='';
- for(var banning of bannings)
- {
- var date=new Date(banning.unban);
- var day=date.getDate(),month=date.getMonth(),year=date.getFullYear(),hours=String('0'+date.getHours()).slice(-2),minutes=String('0'+date.getMinutes()).slice(-2);
- content+=banningMeta.template.replace('{id}',banning._id).replace('{username}',banning.user).replace('{reason}',banning.reason).replace('{unbanDate}',day+' '+months[month]+' '+year+' - '+hours+':'+minutes).replace('{mod}',banning.mod);
- if(Shoutbox.permissions.mod)
- {
- content=content.replace('{unbanButton}',banningMeta.unbanButton);
- }
- else
- {
- content=content.replace('{unbanButton}','');
- }
- }
- return content;
- },prepareMessage:function(message,extraClass='')
- {
- message.date=new Date(message.date);var render=messageTemplate;
- if(Shoutbox.permissions.mod||(Shoutbox.permissions.mod_own&&message.uid==Shoutbox.userId))
- {
- render=render.replace('{editButton}',modTemplates.edit).replace('{deleteButton}',modTemplates.delete).replace('{pinButton}',Shoutbox.permissions.mod?modTemplates.pin:'');
- }
- else
- {
- render=render.replace('{editButton}','').replace('{deleteButton}','').replace('{pinButton}','');
- }
- if(message.item)
- {
- message.username+='<img width="14" height="14" class="item-icon" src="'+message.item+'" />';
- }
- var extraClasses=[];
- if(message.private)
- {
- extraClasses.push('private');
- message.username+=' whispers';
- }
- if(this.mentionRegex.test(message.content))
- {
- extraClasses.push('mention');
- }
- if(extraClass)
- {
- extraClasses.push(extraClass);
- }
- render=render.replace('{extraClasses}',extraClasses.join(' ')).replace('{id}',message.id).replace('{uid}',message.uid).replace('{discord}',message.discord).replace('{shouts}',message.shouts).replace('{avatarLink}',message.avatar).replace('{date}',message.date.getHours()+':'+String('0'+message.date.getMinutes()).slice(-2)).replace('{username}',message.username).replace('{message}',message.content);return render;},buildTemplate:function(message,extraClass='')
- {
- if(Array.isArray(message))
- {
- var finalMessage='';
- for(let _message of message)
- {
- finalMessage+=this.prepareMessage(_message);
- }
- return finalMessage;
- }
- else
- {
- if(this.mentionRegex.test(message.content))
- {
- this.mentionSound.play();
- }
- return this.prepareMessage(message,extraClass);
- }
- },processTagging:function(username)
- {
- if(/\s/.test(username))
- {
- $('#message_input').val($('#message_input').val()+'@['+username+'] ').focus();
- }
- else
- {
- $('#message_input').val($('#message_input').val()+'@'+username+' ').focus();
- }
- },processWhispering:function(username)
- {
- $('#message_input').val('/w @'+username+': ').focus();
- },initCooldown:function(cooldown)
- {
- this.cooldown.value=cooldown;
- if(this.cooldown.value>0)
- {
- this.cooldown.placeholder='Your next shout can be done in '+Math.trunc(this.cooldown.value/60000)+'-minutes';
- if(this.cooldown.value<60000)
- {
- this.cooldown.placeholder='Your next shout can be done in less than a minute';
- this.cooldown.interval=setTimeout(()=>{this.cooldown.interval=null;this.cooldown.placeholder='';},this.cooldown.value);
- }
- this.cooldown.interval=setInterval(()=>
- {
- if(this.cooldown.value<60000)
- {
- this.cooldown.placeholder='Your next shout can be done in less than a minute';
- this.cooldown.interval=setTimeout(()=>{this.cooldown.interval=null;this.cooldown.placeholder='';},this.cooldown.value);
- }
- else
- {
- this.cooldown.value-=60000;
- this.cooldown.placeholder='Your next shout can be done in '+Math.trunc(this.cooldown.value/60000)+'-minutes';
- }
- },60000);
- if(this.userRoom=='market')
- {
- $('#shoutbox #message_input').attr('placeholder',this.cooldown.placeholder).prop('disabled',true);
- }
- }
- }
- });
- $('.shoutbox-tabs .sh-tab').on('click',function(e)
- {
- if(!$(this).hasClass('at'))
- {
- $('.shoutbox-tabs .sh-tab').removeClass('at');
- $(this).addClass('at');
- var container=$(this).data('container');
- $('#shoutbox .shoutbox-messages').hide();
- $(container).fadeIn('fast');
- Shoutbox.userRoom=$(this).data('room');
- if(Shoutbox.userRoom=='market'&&Shoutbox.cooldown.placeholder)
- {
- $('#shoutbox #message_input').attr('placeholder',Shoutbox.cooldown.placeholder).prop('disabled',true);
- }
- else
- {
- $('#shoutbox #message_input').attr('placeholder','Enter message...').prop('disabled',false);
- }
- }
- });
- $(document).on('click','.normal_avatar',function(e)
- {
- var username=$(this).closest('.entry').find('.user a').text();
- Shoutbox.processTagging(username);
- });
- $(document).on('click','.mod.del',function(e)
- {
- e.preventDefault();
- var id=$(this).closest('.entry').data('id');
- Shoutbox.emit(events.DEL_MESSAGE,id);
- });
- $(document).on('click','.mod.pin',function(e)
- {
- e.preventDefault();
- var id=$(this).closest('.entry').data('id');
- Shoutbox.emit(events.PIN_MESSAGE,id);
- });
- $(document).on('click','.mod.edit',function(e)
- {
- e.preventDefault();
- var id=$(this).closest('.entry').data('id'),username=$(this).closest('.entry').find('.user').text(),message=$(this).closest('.entry').find('.text').text();
- $('#shoutbox_edit_modal .username').text(username);
- $('#shoutbox_edit_message').val(message);
- $('#shoutbox_edit_modal').attr('data-id',id);
- $('#shoutbox_edit_modal').modal({keepelement:true});
- });
- $('#message_input').on('keypress',function(e)
- {
- if(e.keyCode==13||e.which==13)
- {
- var message=$(this).val();
- if(message.trim().length>0)
- {
- if(Shoutbox.lastMsgDate==0||Shoutbox.lastMsgDate+Shoutbox.antiflood*1000<Date.now()||Shoutbox.twitchMode)
- {
- Shoutbox.emit(events.NEW_MESSAGE,{message:message,room:Shoutbox.userRoom});
- $(this).val('').focus();
- Shoutbox.lastMsgDate=Date.now();
- if(Shoutbox.userRoom=='market')
- {
- Shoutbox.initCooldown(1800000);
- }
- }
- }
- }
- });
- $('#shoutbox .sb_smilies').on('click',function(e)
- {
- e.preventDefault();
- e.stopPropagation();
- $('#message_input').focus();
- $.get($(this).attr('href'),function(html)
- {
- $(html).appendTo('body').modal({fadeDuration:250,zIndex:9999});
- $(document).on($.modal.CLOSE,function(){$('#message_input').focus();});
- });
- });
- $('#shoutbox_banlist').on('click',function(e)
- {
- e.preventDefault();
- Shoutbox.emit(events.BANNING_LIST);
- });
- $(document).on('click','#shoutbox_edit_ok',function()
- {
- var message=$('#shoutbox_edit_message').val().trim(),id=$('#shoutbox_edit_modal').data('id');
- if(id&&message.length>0)
- {
- Shoutbox.emit(events.EDIT_MESSAGE,{id:id,message:message});
- $('#shoutbox_edit_modal .close-modal').trigger('click');
- }
- });
- $(document).on('click','#shoutbox_ban_button',function()
- {
- var user=$('#shoutbox_ban_modal .username').val().trim(),reason=$('#shoutbox_ban_modal .reason').val().trim();
- var duration=$('#shoutbox_ban_modal .duration').val().trim(),period=$('#shoutbox_ban_modal .period').val();
- if(user.length>0)
- {
- Shoutbox.emit(events.BAN_USER,{username:user,reason:reason,duration:duration,period:period});
- }
- });
- $(document).on('click','.unban-button',function()
- {
- var banningId=$(this).closest('.banning-entry').data('id');
- if(banningId)
- {
- Shoutbox.emit(events.UNBAN_USER,{banningId:banningId});
- }
- });
- $('#shoutbox_leaderboard').on('click',function(e)
- {
- e.preventDefault();Shoutbox.emit(events.LEADERBOARD,true);
- });
- $('#shoutbox_settings').on('click',function(e)
- {
- e.preventDefault();
- $('#shoutbox_settings_modal').modal({keepelement:true});
- });
- $(document).on('click','#shoutbox_settings_button',function(e)
- {
- e.preventDefault();
- var sound=$('#shoutbox_settings_modal #sound').prop('checked');
- var volume=$('#shoutbox_settings_modal #volume').val()/100;
- Shoutbox.emit(events.SETTINGS.UPDATE,{sound:sound,volume:volume});
- Shoutbox.mentionSound.volume=volume;
- Shoutbox.mentionSound.muted=sound?false:true;
- $('#shoutbox_settings_modal .close-modal').trigger('click');
- });
- $(document).on('contextmenu','#shoutbox .entry .user a',function(e)
- {
- e.preventDefault();
- var entry=$(e.currentTarget).closest('.entry');
- if(entry.data('user')==Shoutbox.userId||!Shoutbox.permissions.mod)
- {
- $('.binding-menu .ban').hide();
- }
- else
- {
- $('.binding-menu .ban').show();
- }
- if(entry.data('discord').length>0)
- {
- $('.binding-menu .discord').show();
- $('.binding-menu .discord .value').text(entry.data('discord'));
- }
- else
- {
- $('.binding-menu .discord').hide();
- }
- $('.binding-menu .shouts .value').text(entry.data('shouts'));
- $('.binding-menu').finish().toggle(100).offset({top:e.pageY,left:e.pageX}).data('id',entry.data('id'));
- });
- $(document).on('mousedown',function(e)
- {
- if(!$(e.target).parents('.binding-menu').length>0)
- {
- $('.binding-menu').hide(100);
- }
- });
- $(document).on('click','.binding-menu li',function(e)
- {
- var action=$(e.target)[0].className.split(' ')[1];
- var messageId=$(this).closest('.binding-menu').data('id');
- var entry=$('[data-id="'+messageId+'"]').first();
- switch(action)
- {
- case 'whisper':
- Shoutbox.processWhispering(entry.find('.user a').text());
- break;
- case 'tag':Shoutbox.processTagging(entry.find('.user a').text());
- break;
- case 'ban':
- $('#shoutbox_ban_modal .username').val(entry.find('.user a').text());
- $('#shoutbox_ban_modal').modal({keepelement:true});
- break;
- }
- $('.binding-menu').hide(100);
- });
- $(document).ready(function()
- {
- Shoutbox.connect();
- Shoutbox.handleEvents();
- Shoutbox.mentionRegex=new RegExp('<a href=".+(uid='+Shoutbox.userId+')"');});}
- (window.jQuery,window,document);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement