summaryrefslogtreecommitdiffstats
path: root/pages/chat.php
diff options
context:
space:
mode:
authorSnap <snapwilliam@gmail.com>2015-05-01 16:25:28 -0700
committerSnap <snapwilliam@gmail.com>2015-05-01 16:25:28 -0700
commite6b60448bc08df316daf220db8ecfddc58aefe84 (patch)
tree8ec936e42a24a68cb775eb75688eabe2f71c5a18 /pages/chat.php
parent6001d7ef9b8b26fe388ea5965139d84bdd63ca22 (diff)
downloadpathery-e6b60448bc08df316daf220db8ecfddc58aefe84.tar.xz
Minor fixes and adjustments.
Moved Javascript in chat to: js/chat.js re-ordered script loading so Jquery loads first. Fixed cookie login issue.
Diffstat (limited to 'pages/chat.php')
-rw-r--r--pages/chat.php441
1 files changed, 1 insertions, 440 deletions
diff --git a/pages/chat.php b/pages/chat.php
index cc8d0eb..5fe5d9e 100644
--- a/pages/chat.php
+++ b/pages/chat.php
@@ -2,7 +2,7 @@
htmlHeader(
array('stats', 'chat'), 'Chat',
'Chat for Pathery.com',
- array('scores', 'dateformat')
+ array('scores', 'dateformat', 'chat')
);
?>
@@ -17,445 +17,6 @@ if (!$accepted) {
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-<script>
-
-var lastID = 1;
-//Internet Explorer doesn't support "const"
-//CONSTANTS: ...
-var channelTimerDelay = 30000;
-var chatTimerDelayUpper = 9000;
-var chatTimerDelayLower = 2000;
-var chatTimerDelayDefault = 5000;
-var chatTimerDelayWindowHidden = 90000;
-
-var chatTimerDelay = chatTimerDelayDefault;
-var isChatWindowVisible = true;
-var skipNextGetChat = false;
-var chatBuffer = new Array();
-
-getChatTimer();
-function getChatTimer() {
- setTimeout("getChatTimer()", chatTimerDelay);
- if (isChatWindowVisible)
- chatTimerDelay = Math.min(chatTimerDelay + 300, chatTimerDelayUpper);
- if (skipNextGetChat) {
- skipNextGetChat = false;
- return;
- }
- getChat();
- //addChatMessage("Debug", "Chat timer called!");
-}
-
-
-var pollChannelListTimer = setInterval(function () {pollChannelList()}, channelTimerDelay);
-// pollChannelListTimer();
-// function pollChannelListTimer() {
- // setTimeout("pollChannelListTimer()", channelTimerDelay);
- // pollChannelList();
-// }
-
-var firstGetChat = true;
-function getChatDone(data) {
- var newChats = false;
-
- ////console.log('datalength', data.length);
-
- if (data.length < 3 || data == 'false')
- return;
-
- //console.log("START BUILD");
-
- //console.log("JSON TO PARSE", data);
-
- json = jQuery.parseJSON(data);
-
- //console.log("JSON PREPED");
-
- $.each(json, function(key, chat) {
-
- var postDate = new Date();
- postDate.setTime(postDate.getTime() + chat.secondsSince * 1000);
-
- if (!chat.message) return;
-
- var isSelf = (chat.userID == userObj.ID);
- var isServer = false;
-
- if (chat.userID == null || chat.userID <= 0) {
- isServer = true;
- chat.displayName = 'SERVER'
- }
-
- if (chat.isJoinLeave == 'true') {
- console.log('IsJoin Leave!')
- //return true;
- }
-
- //Message is legitmently new or a server message?
- if (chat.ID > lastID || typeof(chat.ID) == 'undefined') {
- addChatMessage(chat.displayName, chat.message, postDate, isSelf, isServer, chat.wallColor, chat.wallEmblem,
- chat.wallOrientation, chat.userID, chat.displayColor, chat.ID);
- newChats = true;
- }
-
- //console.log("INSIDE BUILD START");
- if (chat.ID > 0)
- lastID = chat.ID;
- });
-
- //console.log("BUILD DONE");
-
- if (newChats && !firstGetChat) {
- if (isChatWindowVisible)
- chatTimerDelay = chatTimerDelayLower;
-
- if (chatIsMuted == 'false') {
- soundManager.setVolume('charm', 20);
- soundManager.setPan('charm', -60)
- soundManager.setPosition('charm',150);
- soundManager.play('charm');
- }
- }
-
- firstGetChat = false;
-}
-
-function addChatMessage(displayName, message, postDate, isSelf, isServer, wallColor, wallEmblem, wallOrientation, userID, displayColor, chatID)
-{
- if(!postDate)
- postDate = new Date();
- var timestamp = postDate.format("hh:MM:ss");
- var timestampDetails = postDate.format("ddd h:MM TT");
-
- var strClass = '';
- if (isSelf)
- strClass += ' self';
- if (isServer)
- strClass += ' server';
-
- var usernameClass = '';
- if (message.indexOf("/me ") == 0) {
- message = message.substring(4);
- usernameClass = ' me';
- }
-
- var isSpoiler = false;
- if (message.indexOf("/spoiler ") == 0) {
- message = message.substring(9);
- isSpoiler = true;
- }
-
- if (!isSpoiler) {
- document.title = displayName + ': '+ message.substring(0, 20) + ' | Pathery Chat';
- } else {
- document.title = displayName + ': ~Spoiler~ | Pathery Chat';
- }
-
- var p = '';
- p = p+ " <div class='chatColumn1'>";
- p = p+ " <span class='chatTimestamp' title='"+timestampDetails+"'>["+timestamp+"]</span>";
- p = p+ " <div class='grid_td chatBadge' style='float:left; width:35px; height:35px; background:"+wallColor+" url("+linkEmblem(wallEmblem, wallOrientation)+");'>";
- p = p+ " <div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'>";
- p = p+ " </div>";
- p = p+ " </div>";
- p = p+ " </div>";
-
- p = p+ " <div class='chatColumn2'>";
- if (userID == null || userID <= 0) {
- p = p+ "<span class='chatUsername"+usernameClass+"'><a href='home'>";
- } else {
- p = p+ "<span class='chatUsername"+usernameClass+"'><a href='achievements?id="+userID+"' style='color:"+displayColor+"'>";
- }
- p = p+ displayName+"</a></span>";
-
- if (isSpoiler == true) p = p+ " <span class='chatText spoiler' onclick='spoil(this);'>";
- else p = p+ " <span class='chatText'>";
- p = p+ chatReplaceAndEncode(message);
- p = p+ " </span>";
- p = p+ " </div>";
-
- var chatContainer = $("#chatContainer");
- var isAtBottom = (chatContainer.length == 1 && chatContainer.scrollTop() >= chatContainer[0].scrollHeight - chatContainer.outerHeight() - 1);
-
- chatContainer.append('<div class="chatMessage'+strClass+'" id="C_' + chatID + '">' + p + '</div>');
-
- if (isAtBottom || firstGetChat) {
- chatContainer.scrollTop(chatContainer[0].scrollHeight);
- }
-}
-
-function chatReplaceAndEncode(chat) {
- chat = htmlEncode(chat);
- chat = chat.replace(/\*\*(\S(.*?\S)?)\*\*/gm, "<b>$1</b>");
- chat = chat.replace(/\~\~(\S(.*?\S)?)\~\~/gm, "<s>$1</s>");
- chat = chat.replace(/\*(\S(.*?\S)?)\*/gm, "<i>$1</i>");
-
- chat = replaceSmileys(chat);
-
- //Surround all URLs with a <a> link
- var URLexp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
- chat = chat.replace(URLexp, "<a href='redirect?to=$1' target='_blank' onclick='return doNothingWhenClickingLinks(this);'>$1</a>");
-
- //Replace # with %23, & with %26, ? with %3F
- chat = chat.replace(/<a href='redirect\?to=(.*?)(#)(.*?)' target='_blank'/ig, "<a href='redirect?to=$1%23$3' target='_blank'");
- chat = chat.replace(/<a href='redirect\?to=(.*?)(&amp;)(.*?)' target='_blank'/ig, "<a href='redirect?to=$1%26$3' target='_blank'");
- chat = chat.replace(/<a href='redirect\?to=(.*?)(\?)(.*?)' target='_blank'/ig, "<a href='redirect?to=$1%3F$3' target='_blank'");
- //Making the bet that not all browsers do the same:
- chat = chat.replace(/<a href='redirect\?to=(.*?)(&)(.*?)' target='_blank'/ig, "<a href='redirect?to=$1%26$3' target='_blank'");
-
- return chat;
-}
-
-function replaceSmileys(chat) {
- chat = chat.replace(/:\)|\(:|=\)/g, '<img title=":)" class="chatSmiley" src="images/smileys/Smiling.png" />');
- chat = chat.replace(/:\(|=\(/g, '<img title=":(" class="chatSmiley" src="images/smileys/Unhappy.png" />');
- chat = chat.replace(/\^\_\^/g, '<img title="^_^" class="chatSmiley" src="images/smileys/Happy_3.png" />');
- chat = chat.replace(/\:d/gi, '<img title=":D" class="chatSmiley" src="images/smileys/Grinning.png" />');
- chat = chat.replace(/\:o/gi, '<img title=":O" class="chatSmiley" src="images/smileys/Gasping.png" />');
- chat = chat.replace(/\:p/gi, '<img title=":P" class="chatSmiley" src="images/smileys/Tongue_Out.png" />');
- chat = chat.replace(/;p/gi, '<img title=";p" class="chatSmiley" src="images/smileys/Tongue_Out_Winking.png" />');
- chat = chat.replace(/\:c/gi, '<img title=":c" class="chatSmiley" src="images/smileys/Childish.png" />');
- chat = chat.replace(/\:s/gi, '<img title=":s" class="chatSmiley" src="images/smileys/Confused.png" />');
- chat = chat.replace(/\&gt;_\&lt;/g, '<img title=">_<" class="chatSmiley" src="images/smileys/Gah.png" />');
- chat = chat.replace(/\$_\$/gi, '<img title="$_$" class="chatSmiley" src="images/smileys/Greedy.png" />');
- chat = chat.replace(/-\.-|-_-/gi, '<img title="-.-" class="chatSmiley" src="images/smileys/Tired.png" />');
- chat = chat.replace(/o\.O|o\_O/g, '<img title="o_O" class="chatSmiley" src="images/smileys/Huh.png" />');
- chat = chat.replace(/O\.o|O\_o/g, '<img title="O_o" class="chatSmiley" src="images/smileys/Huh_2.png" />');
- chat = chat.replace(/O\.O|O\_O/g, '<img title="O_O" class="chatSmiley" src="images/smileys/Madness.png" />');
- chat = chat.replace(/\:-\//g, '<img title="O_O" class="chatSmiley" src="images/smileys/Uncertain.png" />');
- chat = chat.replace(/\(y\)/gi, '<img title="(y)" class="chatSmiley" src="images/smileys/Thumb_Up.png" />');
- chat = chat.replace(/\(n\)/gi, '<img title="(n)" class="chatSmiley" src="images/smileys/Thumb_Down.png" />');
- chat = chat.replace(/\&lt;3/g, '<img title="<3" class="chatSmiley" src="images/smileys/Heart.png" />');
- return chat;
-}
-
-function prepChat(chat) {
- chat = chat.join('|:|');
- chat = chat.replace(/\&/g,'%26')
- chat = chat.replace(/\+/g,'%2B')
- return chat;
-}
-
-var chatIsBusy = false;
-function getChat(message) {
- var dataString = 'getChatFromID='+lastID;
- var backup = new Array();
-
- var fncComplete = '';
- if (!chatIsBusy && chatBuffer.length > 0) {
- chatIsBusy = true;
- dataString += '&send=true&messages='+prepChat(chatBuffer);
- backup = chatBuffer.slice(0);
- chatBuffer.length = 0;
- fncComplete = function() {chatIsBusy = false;};
- }
- $.ajax({
- type: "POST",
- url: "ajax/chat.ajax.php",
- data: dataString,
- error: function() {
- chatBuffer = backup.concat(chatBuffer);
- //console.log('concated:', chatBuffer, backup);
- },
- success: function(data) {
- getChatDone(data);
- //console.log('b:', backup);
- },
- complete: fncComplete
- });
-}
-
-function pollChannelList() {
- $.ajax({
- //type: "POST",
- url: "ajax/chat.ajax.php?pollChannelList=1",
- error: function() {
- console.log('Error: Failed pollChannelList');
- },
- success: function(data) {
- console.log("ChannelPoll data recieved", data);
- pollChannelListDone(data);
- }
- });
-}
-
-function pollChannelListDone(data) {
-
- console.log('data recieved:', data);
- if (data.length < 3 || data == 'false') return;
- json = jQuery.parseJSON(data);
-
- console.log('Loading channel.');
- var c = channelListShow(json)
- console.log(c);
-
- var b = $("#channelContainer");
- b.html(c);
-}
-
-
-function channelListShow(JO) {
- console.log("Formating channelList");
-
- var p = "<table class='membersList score' style='border-style:none; max-height:400px; width:220px; background-color:transparent; '>";
-
- console.log('beginloop');
-
- var previousI = 0;
- for (var i in JO.users) {
- console.log('loop')
- var u = JO.users[i];
- var styleClass = '';
-
- if (previousI != i + 1) {
- if (previousI < i - 1 && previousI != 0) {
- styleClass = 'border-top: 6px solid #777799;';
- }
- }
-
- // u.secFromLastActive could be used in here someplace..
-
- var dateEntered = new Date();
- dateEntered.setTime(dateEntered.getTime() + u.secFromEntered * 1000);
-
- if (u.wallEmblem == undefined) u.wallEmblem = 'blank.png';
- p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title='Entered channel " + dateEntered.format("ddd h:MM TT") + "'>";
-
- p = p+ "<td style='vertical-align: middle;width:100px;'>";
- p = p+ " <div class='grid_td' style='float:left; width:35px; height:35px; background:"+u.wallColor+" url("+linkEmblem(u.wallEmblem, u.wallOrientation)+");'>";
- p = p+ " <div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'>";
- p = p+ " </div>";
- p = p+ " </div>";
- p = p+ " <span class='scoreName' style='float:left;'><a target='_blank' href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
- p = p+ "</td>";
-
- previousI = i;
- }
- p = p+"</table>";
- return p;
-}
-
-
-
-function sendChat() {
- var message = $("input#message").val().replace("|:|", "||");
- if (message == '') return false;
- chatBuffer.push(message);
- $("input#message").val('');
- if (skipNextGetChat == false) {
- skipNextGetChat = true;
- }
- getChat();
- return false;
-}
-
-function spoil(obj) {
- $(obj).removeClass("spoiler").hide().fadeIn(600);
- $(obj).children().removeAttr('onclick');
-}
-
-$(document).ready(function() {
- $('#sendChat').live("submit", function() {
- sendChat()
- });
-
- //Prevent clicking on links in spoilers
- $(document).on('click', '.spoiler > a', function()
- {
- addChatMessage("Debug", "Child called");
- });
-});
-
-function htmlEncode(value){
- if (value) {
- return jQuery('<div />').text(value).html();
- } else {
- return '';
- }
-}
-
-function doNothingWhenClickingLinks(self)
-{
- return !$(self).closest('.spoiler').length;
-}
-
-//Code for checking if the window is currently visible or not
-//Adapted from http://stackoverflow.com/a/1060034/238419
-$(function() {
- var hidden = "hidden";
-
- // Standards:
- if (hidden in document)
- document.addEventListener("visibilitychange", onchange);
- else if ((hidden = "mozHidden") in document)
- document.addEventListener("mozvisibilitychange", onchange);
- else if ((hidden = "webkitHidden") in document)
- document.addEventListener("webkitvisibilitychange", onchange);
- else if ((hidden = "msHidden") in document)
- document.addEventListener("msvisibilitychange", onchange);
- // IE 9 and lower:
- else if ('onfocusin' in document)
- document.onfocusin = document.onfocusout = onchange;
- // All others:
- else
- window.onpageshow = window.onpagehide
- = window.onfocus = window.onblur = onchange;
-
- function onchange (evt) {
- var eventMapIsWindowShown = {
- focus:true, focusin:true, pageshow:true, blur:false, focusout:false, pagehide:false
- };
-
- evt = evt || window.event;
- if (evt.type in eventMapIsWindowShown)
- isChatWindowVisible = eventMapIsWindowShown[evt.type];
- else
- isChatWindowVisible = !this[hidden];
-
- if(isChatWindowVisible)
- onChatWindowShown();
- else
- onChatWindowHidden();
- }
-});
-
-function onChatWindowShown()
-{
- chatTimerDelay = chatTimerDelayDefault;
- getChat();
-}
-
-function onChatWindowHidden()
-{
- chatTimerDelay = chatTimerDelayWindowHidden;
-}
-
-<?
-$chatMute = (isset($_COOKIE['pref_chatMute']) && $_COOKIE['pref_chatMute'] == "true");
-$chatMute = ($chatMute) ? 'true' : 'false';
-?>
-var chatIsMuted = '<? echo $chatMute; ?>';
-function setChatMute() {
- var value = chatIsMuted;
-
- $('#chatMute').removeClass("chatMute_"+value);
- if (value == 'true') {
- value = 'false';
- soundManager.setVolume('pit', 20);
- soundManager.setPan('pit', -60)
- soundManager.play('pit');
- } else {
- value = 'true';
- }
- chatIsMuted = value;
- $('#chatMute').addClass("chatMute_"+value);
- savePref('chatMute', value);
-}
-
-pollChannelList();
-
-</script>
-
<div class='wrapper'>
<h3>Pathery Chat - BETA</h3>