function is_json(str){ try{ JSON.parse(str); }catch(e){ return false; } return true; } function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } var base_url = $("base").attr("href"); var style_url = $('meta[name="style_url"]').attr("content"); function notify_closer(){ if($('.close-alert').length >= 1){ $('body .close-alert').parent().fadeOut("normal", function(){ $(this).remove(); }); } } function notify(title, message, type){ type = parseInt(type); switch(type){ case 2: type = 'alert-error'; break; case 3: type = 'alert-success'; break; case 4: type = 'alert-info'; break; default: type = ''; break; } $('html, body').animate({scrollTop:0}, 'normal'); $(".main-content").prepend('<div class="alert '+type+' ajx"><a href="#" class="close-alert">×</a><b>'+title+'</b> '+message+'</div>'); setTimeout("notify_closer()", 2500); return true; } function send_ret_req(method, url, params){ var req = null; try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { try { req = new XMLHttpRequest(); } catch(e) {} } } if (req == null) throw new Error('XMLHttpRequest not supported'); req.open(method, url, false); req.send(params); return req.responseText; } $.mcr_session = { url: base_url+"?mode=ajax&do=session", get: function(name){ var params = "&name="+name.toString(); return send_ret_req("GET", this.url+"&op=get"+params, null); }, set: function(name, value){ var params = "&name="+name.toString()+"&value="+value.toString(); return send_ret_req("GET", this.url+"&op=set"+params, null); }, remove: function(name){ var params = "&name="+name.toString(); return send_ret_req("GET", this.url+"&op=remove"+params, null); }, }; $.mcr = { mon_delay: 2000, remote_url: function(url, method, accept){ var req = null; try{ req = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ req = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ try{ req = new XMLHttpRequest(); }catch(e){} } } if (req == null) throw new Error('XMLHttpRequest not supported'); var type = (accept===undefined) ? "text/plain" : accept; req.open(method, url, false); req.setRequestHeader("Accept",type); req.send(null); return req.responseText; }, load_monitoring: function(){ var data = $.mcr.remote_url(base_url+"?mode=ajax&do=monitor", 'GET'); if(!is_json(data)){ notify("Ошибка!", "Мониторинг временно недоступен", 1); return false; } $('.js-monitor').empty(); $('.js-monitor').fadeIn('slow', function(){ var jd = JSON.parse(data); if(!jd._status){ $(this).html(jd._message); return false; } var jdd = jd._data; var i = 0; var count_players = 0; while(i<jdd.length){ //console.log(jdd); var ar = jdd[i]; i++; var m_data = $.mcr.remote_url("http://api.minetools.eu/query/" + ar.ip + "/" + ar.port, "GET"); if(!is_json(m_data)){ continue; } var md = JSON.parse(m_data); $('.js-monitor').append(ar.form); if(md.error !== undefined){ $('.js-monitor > .monitor-id#'+ar.id+' > .progress').addClass('progress-danger'); $('.js-monitor > .monitor-id#'+ar.id+' > .progress > .bar').animate({width: "100%"}, 1000); $('.js-monitor > .monitor-id#'+ar.id+' > .progress > .stats').html("Оффлайн"); }else{ var persent = md.Players / (md.MaxPlayers / 100); persent = parseInt(persent); $('.js-monitor > .monitor-id#'+ar.id+' > .progress').addClass('progress-success'); $('.js-monitor > .monitor-id#'+ar.id+' > .progress > .bar').animate({width: persent+"%"}, 1000); $('.js-monitor > .monitor-id#'+ar.id+' > .progress > .stats').html(md.Players+" / "+md.MaxPlayers); count_players = count_players+md.Players; } } $('.js-monitor').append("Всего игроков: "+count_players); $("[rel='tooltip']").tooltip({container: 'body'}); //$(this).append(jdd.form); return true; }); }, get_release_git: function(stable){ var url = (stable===undefined || stable===true) ? "https://api.github.com/repos/qexyorg/WebMCR/releases" : "https://api.github.com/repos/qexyorg/WebMCR/tags"; var data = this.remote_url(url, "GET", "application/json"); if(!is_json(data)){ notify("Ошибка!", "Произошла ошибка получения информации", 1); return "∞"; } jsondata = JSON.parse(data); if($.isEmptyObject(jsondata)){ return "∞"; } return '<a href="'+jsondata[0]['html_url']+'" target="_blank">'+jsondata[0]['tag_name']+'</a>'; }, get_version: function(){ var data = this.remote_url("https://api.webmcr.com/?do=latest_version", "GET", "application/json"); if(!is_json(data)){ notify("Ошибка!", "Произошла ошибка получения информации", 1); return "∞"; } var jsondata = JSON.parse(data); var message = jsondata.message; //var type = jsondata.type; // unused variable return message; }, }; $(function(){ $("[rel='tooltip']").tooltip({container: 'body'}); $('.spl-body.closed').hide(); setTimeout($.mcr.load_monitoring, $.mcr.mon_delay); $('.spl-btn').on("click", function(){ var element = $(this).attr("data-click"); $(".spl-body#"+element).toggleClass("opened").toggleClass("closed").slideToggle("fast"); $('.spl-btn[data-click="'+element+'"]').toggleClass("opened").toggleClass("closed"); if($(this).hasClass("session")){ var session = $.mcr_session.get(element); if(session!='true'){ $.mcr_session.set(element, true); }else if(session=='true'){ $.mcr_session.set(element, false); } } return false; }); $('.check-all').on("click", function(){ var element = $(this).attr("data-for"); var obj = $("."+element); var length = obj.length; var inc; for(inc=0; inc < length; inc++){ if($(this)[0].checked==true){ obj[inc].checked=true; }else{ obj[inc].checked=false; } } }); $('.remove').click(function(){ if($(this).attr("data-checkbox")!='false'){ var element = $(this).attr("data-for"); var length = $('.'+element+':checked').length; if(length<=0){ notify("Ошибка!", "Не выбрано ни одного пункта для удаления", 1); return false; } } var text = $(this).attr("data-text"); if(!confirm(text)){ return false; } return true; }); $('body').on("click", '.close-alert', function(){ $(this).parent().fadeOut("normal", function(){ $(this).remove(); }); return false; }) $(".mcr-debug .action").on("click", function(){ $(".mcr-debug").toggleClass("open"); return false; }); $(".bb-panel .bb").on("click", function(){ var panel_id = $(this).parent().closest(".bb-panel").attr("id"); var pid = ".bb-panel#"+panel_id; var panel_obj = $('textarea[data-for="'+panel_id+'"]')[0]; var leftcode = $(this).attr("data-left"); var rightcode = ($(this).attr("data-right")==undefined) ? leftcode : $(this).attr("data-right"); if(!$(this).hasClass("woborder")){ leftcode = '['+leftcode+']'; rightcode = (rightcode=='') ? '' : '[/'+rightcode+']'; }else{ rightcode = (rightcode=='') ? '' : rightcode; } if(document.selection){ var s = document.selection.createRange(); if(s.text){ s.text = leftcode + s.text + rightcode; } }else{ // Opera, FireFox, Chrome var start = (panel_obj.selectionStart==undefined) ? 0 : panel_obj.selectionStart; var end = (panel_obj.selectionEnd==undefined) ? 0 : panel_obj.selectionEnd; s = panel_obj.value.substr(start,end-start); panel_obj.value = panel_obj.value.substr(0, start) + leftcode + s + rightcode + panel_obj.value.substr(end); } return false; }); $("#search-selector a").click(function(){ var search_val = $("#search-hidden").val(); $("#search-selector a#"+search_val).parent().removeClass("active"); var id = this.id; $("#search-hidden").val(id); $(this).parent().addClass("active"); return false; }); $("#close-notify").click(function(){ $(".block-notify").fadeOut("normal", function(){ $(this).remove(); }); return false; }); $(".edit").click(function(){ var element = $(this).attr("data-for"); var length = $('.'+element+':checked').length; var link = $(this).attr("data-link"); if(length<=0){ notify("Ошибка!", "Не выбрано ни одного пункта для удаления", 1); return false; }else if(length>1){ notify("Ошибка!", "Для редактирования необходимо выбрать только один пункт из списка", 1); return false; } var id = $('.'+element+':checked').val(); window.location.href = link+id; return false; }); });