You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
326 lines
9.0 KiB
326 lines
9.0 KiB
/*===============================================*\
|
|
|| ############################################# ||
|
|
|| # JAKWEB.CH / Version 1.1 # ||
|
|
|| # ----------------------------------------- # ||
|
|
|| # Copyright 2020 JAKWEB All Rights Reserved # ||
|
|
|| ############################################# ||
|
|
\*===============================================*/
|
|
|
|
var rllinput = rlsbint = null;
|
|
var message = '';
|
|
var working = false;
|
|
var scrollchat = true;
|
|
var ulastmsgid = 0;
|
|
var usract = 1;
|
|
var winIsActive = true;
|
|
var ctimer = 5000;
|
|
|
|
$(document).ready(function() {
|
|
|
|
$("#message").on("keypress", function(e) {
|
|
if (e.keyCode == 13 && !e.shiftKey) {
|
|
e.preventDefault();
|
|
sendInputGC();
|
|
}
|
|
});
|
|
|
|
$("#sendMessage").on("click", function(e) {
|
|
e.preventDefault();
|
|
sendInputGC();
|
|
});
|
|
|
|
// Finally start the event.
|
|
sseJAK(ctimer);
|
|
|
|
});
|
|
|
|
$(document).on("click", ".edit-quote", function(e) {
|
|
e.preventDefault();
|
|
|
|
if ($(this).hasClass('active')) {
|
|
$('#msgquote, #message').val("");
|
|
$('.edit-quote').removeClass('active');
|
|
$('.media-text').removeClass('highlight');
|
|
$('#message').focus();
|
|
} else {
|
|
$('#message').val("");
|
|
$('.edit-quote').removeClass('active');
|
|
$('.media-text').removeClass('highlight');
|
|
$(this).addClass('active');
|
|
var quotemsg = $(this).data("msg");
|
|
var quoteid = $(this).data("id");
|
|
$('#msgquote').val(quotemsg);
|
|
$('#msg_'+quoteid).addClass('highlight');
|
|
$('#message').focus();
|
|
}
|
|
});
|
|
|
|
$(document).on("click", ".edit-remove", function(e) {
|
|
e.preventDefault();
|
|
|
|
// Close the message connection
|
|
if (rlsbint) {
|
|
clearInterval(rlsbint);
|
|
rlsbint = null;
|
|
}
|
|
|
|
var _this = $(this);
|
|
var msgid = $(_this).data("msgid");
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: ls.main_url + 'include/gcmod.php',
|
|
data: "action=delmsg&id="+msgid,
|
|
dataType: 'json',
|
|
success: function(msg){
|
|
|
|
// We have a success
|
|
if (msg.status) $('#postid_'+msgid+', #msg_'+msgid).remove();
|
|
|
|
// Bring back the chat messages this time faster
|
|
sseJAK(2000);
|
|
return true;
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on("click", ".edit-ban", function(e) {
|
|
e.preventDefault();
|
|
|
|
// Close the message connection
|
|
if (rlsbint) {
|
|
clearInterval(rlsbint);
|
|
rlsbint = null;
|
|
}
|
|
|
|
var _this = $(this);
|
|
var userid = $(_this).data("userid");
|
|
|
|
$.ajax({
|
|
type: "POST",
|
|
url: ls.main_url + 'include/gcmod.php',
|
|
data: "action=banusr&id="+userid,
|
|
dataType: 'json',
|
|
success: function(msg){
|
|
|
|
// Bring back the chat messages this time faster
|
|
sseJAK(2000);
|
|
return true;
|
|
}
|
|
});
|
|
});
|
|
|
|
// use the property name to generate the prefixed event name
|
|
var visProp = getHiddenProp();
|
|
if (visProp) {
|
|
var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
|
|
document.addEventListener(evtname, visChange);
|
|
}
|
|
|
|
function visChange() {
|
|
|
|
// Close the message connection
|
|
if (rlsbint) {
|
|
clearInterval(rlsbint);
|
|
rlsbint = null;
|
|
}
|
|
|
|
// Check the visibility status once and for all (ignoring new windows)
|
|
if (isHidden()) {
|
|
winIsActive = false;
|
|
sseJAK(15000);
|
|
} else {
|
|
winIsActive = scrollchat = true;
|
|
sseJAK(2000);
|
|
}
|
|
}
|
|
|
|
function sseJAK(timer) {
|
|
|
|
setCheckerGC();
|
|
if (!rlsbint) rlsbint = setInterval(function(){setCheckerGC()}, timer);
|
|
|
|
}
|
|
|
|
function sendInputGC() {
|
|
|
|
if(working) return false;
|
|
|
|
working = true;
|
|
|
|
// Close the message connection
|
|
if (rlsbint) {
|
|
clearInterval(rlsbint);
|
|
rlsbint = null;
|
|
}
|
|
|
|
/* This flag will prevent multiple comment submits: */
|
|
$("#sendMessage i").removeClass("fa-paper-plane").addClass("fa-spinner fa-pulse");
|
|
$('#message').removeClass("is-invalid");
|
|
|
|
var messageC = $('#message').val();
|
|
var message = encodeURIComponent(messageC);
|
|
|
|
// Do we have a message
|
|
if (message.length <= 1 || usract != 1) {
|
|
$("#sendMessage i").removeClass("fa-spinner fa-pulse").addClass("fa-paper-plane");
|
|
$('#message').addClass("is-invalid");
|
|
working = false;
|
|
// Bring back the chat messages this time faster
|
|
sseJAK(5000);
|
|
return false;
|
|
}
|
|
|
|
var msgquote = $('#msgquote').val();
|
|
|
|
var request = $.ajax({
|
|
url: ls.main_url + 'include/gcinsert.php',
|
|
type: "POST",
|
|
data: "msg="+message+"&msgquote="+msgquote,
|
|
dataType: "json",
|
|
cache: false
|
|
});
|
|
|
|
request.done(function(msg) {
|
|
if (msg.status == 1) {
|
|
$('#msgquote, #message').val("");
|
|
$('.edit-quote').removeClass('active');
|
|
$('.media-text').removeClass('highlight');
|
|
countdown();
|
|
ctimer = 2000;
|
|
} else {
|
|
$('#message').addClass("is-invalid");
|
|
$("#sendMessage i").removeClass("fa-spinner fa-pulse").addClass("fa-paper-plane");
|
|
//Create an instance of Notyf
|
|
var notyf = new Notyf();
|
|
//Display an alert notification
|
|
notyf.alert(msg.html);
|
|
|
|
ctimer = 5000;
|
|
}
|
|
|
|
working = false;
|
|
|
|
});
|
|
|
|
// Bring back the chat messages this time faster
|
|
sseJAK(ctimer);
|
|
}
|
|
|
|
function setCheckerGC() {
|
|
|
|
var request = $.ajax({
|
|
url: ls.main_url + 'include/gcinform.php',
|
|
type: "GET",
|
|
data: "lastid="+ulastmsgid+"&usract="+usract+"&active="+winIsActive,
|
|
dataType: "json",
|
|
cache: false
|
|
});
|
|
|
|
request.done(function(msg) {
|
|
|
|
handlemsg(msg);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
function handlemsg(msg) {
|
|
|
|
// We have a new message
|
|
if (msg.newmsg == 1) {
|
|
|
|
$("#group_chat_output").append(msg.html);
|
|
|
|
ulastmsgid = msg.lastid;
|
|
usract = 1;
|
|
|
|
scrollchat = true;
|
|
scrollBottom();
|
|
|
|
}
|
|
|
|
// Banned
|
|
if (msg.newmsg == 2) {
|
|
|
|
$("#group_chat_output").append(msg.html);
|
|
|
|
ulastmsgid = msg.lastid;
|
|
usract = 2;
|
|
|
|
scrollchat = true;
|
|
scrollBottom();
|
|
|
|
}
|
|
|
|
// offline
|
|
if (msg.newmsg == 3) {
|
|
|
|
$("#group_chat_output").append(msg.html);
|
|
|
|
ulastmsgid = msg.lastid;
|
|
usract = 3;
|
|
|
|
scrollchat = true;
|
|
scrollBottom();
|
|
|
|
}
|
|
|
|
// We have new or gone customers reload the visitor list
|
|
if (msg.vislist) $("#visitorslist").html(msg.vislist);
|
|
|
|
// We have a message to delete
|
|
if (msg.delmsg) {
|
|
msg.delmsg.forEach(function(obj) {
|
|
$('#postid_'+obj+', #msg_'+obj).remove();
|
|
// console.log(obj);
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
function scrollBottom() {
|
|
$('#group_chat_output').animate({
|
|
scrollTop: $('#group_chat_output')[0].scrollHeight
|
|
}, 300);
|
|
// set scrollchat to false
|
|
scrollchat = false;
|
|
}
|
|
|
|
function countdown() {
|
|
var count = 6;
|
|
var timer = setInterval(function() {
|
|
count--;
|
|
if (count < 1) {
|
|
$('#sendMessage').html('<i class="fa fa-paper-plane"></i>');
|
|
clearInterval(timer);
|
|
} else {
|
|
$('#sendMessage').html(count.toString());
|
|
}
|
|
}, 1000);
|
|
}
|
|
|
|
function getHiddenProp(){
|
|
var prefixes = ['webkit','moz','ms','o'];
|
|
|
|
// if 'hidden' is natively supported just return it
|
|
if ('hidden' in document) return 'hidden';
|
|
|
|
// otherwise loop over all the known prefixes until we find one
|
|
for (var i = 0; i < prefixes.length; i++){
|
|
if ((prefixes[i] + 'Hidden') in document)
|
|
return prefixes[i] + 'Hidden';
|
|
}
|
|
|
|
// otherwise it's not supported
|
|
return null;
|
|
}
|
|
|
|
function isHidden() {
|
|
var prop = getHiddenProp();
|
|
if (!prop) return false;
|
|
|
|
return document[prop];
|
|
}
|
|
|
|
!function(){function n(n,t){for(property in t)t.hasOwnProperty(property)&&(n[property]=t[property]);return n}function t(n,t){var e=document.createElement("div");e.className="notyf__toast";var o=document.createElement("div");o.className="notyf__wrapper";var i=document.createElement("div");i.className="notyf__icon";var a=document.createElement("i");a.className=t;var r=document.createElement("div");r.className="notyf__message",r.innerHTML=n,i.appendChild(a),o.appendChild(i),o.appendChild(r),e.appendChild(o);var c=this;return setTimeout(function(){e.className+=" notyf--disappear",e.addEventListener(c.animationEnd,function(n){n.target==e&&c.container.removeChild(e)});var n=c.notifications.indexOf(e);c.notifications.splice(n,1)},c.options.delay),e}function e(){var n,t=document.createElement("fake"),e={transition:"animationend",OTransition:"oAnimationEnd",MozTransition:"animationend",WebkitTransition:"webkitAnimationEnd"};for(n in e)if(void 0!==t.style[n])return e[n]}this.Notyf=function(){this.notifications=[];var t={delay:2e3,alertIcon:"notyf__icon--alert",confirmIcon:"notyf__icon--confirm"};arguments[0]&&"object"==typeof arguments[0]?this.options=n(t,arguments[0]):this.options=t;var o=document.createDocumentFragment(),i=document.createElement("div");i.className="notyf",o.appendChild(i),document.body.appendChild(o),this.container=i,this.animationEnd=e()},this.Notyf.prototype.alert=function(n){var e=t.call(this,n,this.options.alertIcon);e.className+=" notyf--alert",this.container.appendChild(e),this.notifications.push(e)},this.Notyf.prototype.confirm=function(n){var e=t.call(this,n,this.options.confirmIcon);e.className+=" notyf--confirm",this.container.appendChild(e),this.notifications.push(e)}}(),function(){"function"==typeof define&&define.amd?define("Notyf",function(){return Notyf}):"undefined"!=typeof module&&module.exports?module.exports=Notyf:window.Notyf=Notyf}();
|
|
|