diff options
author | friendica <info@friendica.com> | 2014-01-18 23:49:39 -0800 |
---|---|---|
committer | friendica <info@friendica.com> | 2014-01-18 23:49:39 -0800 |
commit | 724ad4505628d493b43b4f585512d67dc0b4ee76 (patch) | |
tree | 4fb920a79e3dff961a6301ec56ec9f40e91f6af3 /library/ajaxchat/chat/js/logs.js | |
parent | 3f7032e542e3c451507fc9266ab3536155c8190f (diff) | |
download | volse-hubzilla-724ad4505628d493b43b4f585512d67dc0b4ee76.tar.gz volse-hubzilla-724ad4505628d493b43b4f585512d67dc0b4ee76.tar.bz2 volse-hubzilla-724ad4505628d493b43b4f585512d67dc0b4ee76.zip |
add ajaxchat library - needs a lot of integration work to handle decentralisation (e.g. chatroom@website) and zotid w/permissions (e.g. ACL controlled chatrooms); we can also rip out a lot of stuff we don't need.
Diffstat (limited to 'library/ajaxchat/chat/js/logs.js')
-rw-r--r-- | library/ajaxchat/chat/js/logs.js | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/library/ajaxchat/chat/js/logs.js b/library/ajaxchat/chat/js/logs.js new file mode 100644 index 000000000..9ec694cee --- /dev/null +++ b/library/ajaxchat/chat/js/logs.js @@ -0,0 +1,128 @@ +/* + * @package AJAX_Chat + * @author Sebastian Tschan + * @copyright (c) Sebastian Tschan + * @license Modified MIT License + * @link https://blueimp.net/ajax/ + */ + +// Overrides client-side functionality for the logs view: + + ajaxChat.logsMonitorMode = null; + ajaxChat.logsLastID = null; + ajaxChat.logsCommand = null; + + ajaxChat.startChatUpdate = function() { + var infos = 'userID,userName,userRole'; + if(this.socketServerEnabled) { + infos += ',socketRegistrationID'; + } + this.updateChat('&getInfos=' + this.encodeText(infos)); + } + + ajaxChat.updateChat = function(paramString) { + // Only update if we have parameters, are in monitor mode or the lastID has changed since the last update: + if(paramString || this.logsMonitorMode || !this.logsLastID || this.lastID != this.logsLastID) { + // Update the logsLastID for the lastID check: + this.logsLastID = this.lastID; + + var requestUrl = this.ajaxURL + + '&lastID=' + + this.lastID; + if(paramString) { + requestUrl += paramString; + } + requestUrl += '&' + this.getLogsCommand(); + this.makeRequest(requestUrl,'GET',null); + } else { + this.logsLastID = null; + } + } + + ajaxChat.sendMessage = function() { + this.getLogs(); + } + + ajaxChat.getLogs = function() { + clearTimeout(this.timer); + this.clearChatList(); + this.lastID = 0; + this.logsCommand = null; + this.makeRequest(this.ajaxURL,'POST',this.getLogsCommand()); + } + + ajaxChat.getLogsCommand = function() { + if(!this.logsCommand) { + if(!this.dom['inputField'].value && + parseInt(this.dom['yearSelection'].value) <= 0 && + parseInt(this.dom['hourSelection'].value) <= 0) { + this.logsMonitorMode = true; + } else { + this.logsMonitorMode = false; + } + this.logsCommand = 'command=getLogs' + + '&channelID=' + this.dom['channelSelection'].value + + '&year=' + this.dom['yearSelection'].value + + '&month=' + this.dom['monthSelection'].value + + '&day=' + this.dom['daySelection'].value + + '&hour=' + this.dom['hourSelection'].value + + '&search=' + this.encodeText(this.dom['inputField'].value); + } + return this.logsCommand; + } + + ajaxChat.onNewMessage = function(dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip) { + if(messageText.indexOf('/delete') == 0) { + return false; + } + if(this.logsMonitorMode) { + this.blinkOnNewMessage(dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip); + this.playSoundOnNewMessage( + dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip + ); + } + return true; + } + + ajaxChat.logout = function() { + clearTimeout(this.timer); + this.makeRequest(this.ajaxURL,'POST','logout=true'); + } + + ajaxChat.switchLanguage = function(langCode) { + window.location.search = '?view=logs&lang='+langCode; + } + + ajaxChat.setChatUpdateTimer = function() { + clearTimeout(this.timer); + var timeout; + if(this.socketIsConnected && this.logsLastID && this.lastID == this.logsLastID) { + timeout = this.socketTimerRate; + } else { + timeout = this.timerRate; + if(this.socketServerEnabled && !this.socketReconnectTimer) { + // If the socket connection fails try to reconnect once in a minute: + this.socketReconnectTimer = setTimeout('ajaxChat.socketConnect();', 60000); + } + } + this.timer = setTimeout('ajaxChat.updateChat(null);', timeout); + } + + ajaxChat.socketUpdate = function(data) { + if(this.logsMonitorMode) { + var xmlDoc = this.loadXML(data); + if(xmlDoc) { + var selectedChannelID = parseInt(this.dom['channelSelection'].value); + var channelID = parseInt(xmlDoc.firstChild.getAttribute('channelID')); + if(selectedChannelID == -3 || channelID == selectedChannelID || + selectedChannelID == -2 && channelID >= this.privateMessageDiff || + selectedChannelID == -1 + && channelID >= this.privateChannelDiff + && channelID < this.privateMessageDiff + ) { + this.handleChatMessages(xmlDoc.getElementsByTagName('message')); + } + } + } + } +
\ No newline at end of file |