$(document).ready(function(){ $("input, select").change(function(){ listch(); }); $(document).on('change', '#file_icon', function(){ var name = document.getElementById("file_icon").files[0].name; var form_data = new FormData(); var ext = name.split('.').pop().toLowerCase(); if(jQuery.inArray(ext, ['png','jpg','jpeg']) == -1) { alert("Invalid Image File! Only .png, .jpg, .jpeg"); } var oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("file_icon").files[0]); var f = document.getElementById("file_icon").files[0]; var fsize = f.size||f.fileSize; if(fsize > 2000000) { alert("Image File Size is very big"); } else { form_data.append("file", document.getElementById('file_icon').files[0]); $.ajax({ url:"/?do=/admin&act=imgto64", method:"POST", data: form_data, contentType: false, cache: false, processData: false, beforeSend:function(){ }, success:function(data) { $('#pltagid_icon').val(data); $('#img_icon').attr("src",data); $('#img_icon').show(); listch(); } }); } }); $(document).on('change', '#file_background_image', function(){ var name = document.getElementById("file_background_image").files[0].name; var form_data = new FormData(); var ext = name.split('.').pop().toLowerCase(); if(jQuery.inArray(ext, ['png','jpg','jpeg']) == -1) { alert("Invalid Image File! Only .png, .jpg, .jpeg"); } var oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("file_background_image").files[0]); var f = document.getElementById("file_background_image").files[0]; var fsize = f.size||f.fileSize; if(fsize > 2000000) { alert("Image File Size is very big"); } else { form_data.append("file", document.getElementById('file_background_image').files[0]); $.ajax({ url:"/?do=/admin&act=imgtofon", method:"POST", data: form_data, contentType: false, cache: false, processData: false, beforeSend:function(){ }, success:function(data) { $('#pltagid_background_image').val(data); $('#img_background_image').attr("src",data); $('#img_background_image').show(); listch(); } }); } }); }); function escapeHtml0(text) { return text .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function ajax_post(url,post){ var s=""; $.each(post.split("&"),function(i,v){ var p=v.split("="); try { s+=''; } catch(e) { s+=''; } }); var form = $('
' +s+ '
'); $(document.body).append(form); form.submit(); } function applico(){ $(document).on('change', '#file_ch', function(){ var name = document.getElementById("file_ch").files[0].name; var form_data = new FormData(); var ext = name.split('.').pop().toLowerCase(); if(jQuery.inArray(ext, ['png','jpg','jpeg']) == -1) { alert("Invalid Image File! Only .png, .jpg, .jpeg"); } var oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById("file_ch").files[0]); var f = document.getElementById("file_ch").files[0]; var fsize = f.size||f.fileSize; if(fsize > 2000000) { alert("Image File Size is very big"); } else { form_data.append("file", document.getElementById('file_ch').files[0]); $.ajax({ url:"/?do=/admin&act=imgto64", method:"POST", data: form_data, contentType: false, cache: false, processData: false, beforeSend:function(){ }, success:function(data) { $('#chtagid_logo_30x30').val(data); $('#img_ch').attr("src",data); $('#img_ch').show(); } }); } }); } var channels=[],select=0; function addch(m=0){ var n=0; for(var i=0;i < channels.length;i++) if(channels[i]["type"]!="menu") n++; var elem={}; for(var i=0;i < chtag.length;i++) elem[chtag[i]]=""; elem["title"]="Новая ссылка "+(n+1); if(m==-1) channels.unshift(elem); else channels.push(elem); listch(); } function addmenu(v){ var n=0; for(var i=0;i < channels.length;i++) if(channels[i]["type"]=="menu") n++; var elem={}; for(var i=0;i < chtag.length;i++) elem[chtag[i]]=""; if(v==null) v="Меню "+(n+1)+"|"; v=v.split("|"); elem["title"]=v[0]; elem["playlist_url"]=v[1]; elem["type"]="menu"; channels.push(elem); listch(); } var noadd=0; function listch(na,sel){ if(na!=null) noadd=na; if(sel==null) sel=0; $('#contents').css("max-height","none"); var html="
"; if(document.getElementById("pltagid_before")!=null){ html+=$("#pltagid_before").htmlarea('html'); } var menu=""; var n=0; for(var i=0;i < channelsmenu.length;i++){ menu+="
"+' '+channelsmenu[i]["title"]+"
"; } html+="
"; if($('[name=pltag\\[typeList\\]]:checked').val()=="start") html+="
"; if(!noadd) html+="
+ Добавить новую ссылку в начало
"; for(var i=0;i < channels.length;i++) { html+=renderCh(channels[i],i); } if($('[name=pltag\\[typeList\\]]:checked').val()=="start") html+="
"; if(!noadd) html+="
Добавить новую ссылку!
"; html+="
"; $("#ch").html("
"+$("#pltagid_title").val()+"

"+menu+html+""); $('#ch').css("background",'url('+$('#pltagid_background_image').val()+') 0px 34px'); $('#ch').css("color",$('#pltagid_color').val()); if(typeof PL!="undefined"){ if(typeof PL["style"]!="undefined"){ if(typeof PL["style"]["cssid"]!="undefined"){ for(var i in PL["style"]["cssid"]) setStyles(i,"cssid|"+i); } } } linkOver(sel); } var img_dir="/include/templates/images"; function css_wh(n){ return Math.ceil(0.66*n); } function css_w(n){ return Math.ceil(0.66*n); } function getimg(n){ return n; } function _img(s){ if(typeof s == "undefined") s="_OI_1px.png"; else if(s.match(/^.{0,3}(none|hidden|undefined)/)) s="_OI_1px.png"; s=s.replace("_OI_","http://obovse.ru/ForkPlayer2.5/img/").replace("_OT_","http://obovse.ru/smarttv/img/"); return s; } function is_start(s){ return 0; } var adop="",ncc=0,sPos={},sPosX=0,sPosY=0,Main={},box_low2=0,hideRight=0,app_cors=0,is_iptv=0,ch_height=37; var ch_padding=4; var ch_size=29,startX=0; var adop="",ncc=0,sPos={},sPosX=0,sPosY=0,is_mark=0; var chtag_info={ "br":"Чтобы отображать с новой строки, укажите 1", "search_on":"Если заполнено, будет ввод текста", "before":"HTML код перед элементом", "after":"HTML код после элемента", "position":"Если прописать html, то заполните ниже шаблон", "template":"Html код с $logo_30x30, $title, $description" } function renderCh(Ch,index){ var html=""; Main.channels=channels; Main['typeList']=$('[name=pltag\\[typeList\\]]:checked').val(); Ch["imgsrc"]=Ch["logo_30x30"]; if(hideRight) var widthCh=css_w(1195); else if(is_iptv>2) widthCh=css_w(790); else widthCh=css_w(610); var backgrOp="background: rgba(0,0,0,0.65);"; if(is_start()) backgrOp+="color:white;"; if(Ch["playlist_url"] !="") var onerror="this.onerror=null;this.src='"+_img("_OI_open.png")+"';"; else onerror="this.onerror=null;this.src='"+_img("_OI_file.png")+"';"; if(gV(Ch,"display_title")!="") var title=Ch["display_title"]; else title=Ch["title"]; if(title==""||title==" ") title=gV(Ch,"playlist_url").replace(/^https?:\/\//,""); if(gV(Ch,"proxyurl")==1) { title="🔒🔒🔒"+title; } else if(gV(Ch,"proxyurl")==2) { title="🔒🔒"+title; } else if(gV(Ch,"proxyurl")==3) { title="🔒🔒"+title; } else if(gV(Ch,"proxyurl")==4) { title="🔒"+title; } else if(gV(Ch,"proxyurl")==-1) { title="☠ "+title+""; } if(index>0) { var lastP=gV(Main.channels[index-1],"position"); if(lastP=="") { if(gV(Main.channels[index-1],"tvg-shift")=="99") lastP="fulleditline"; else if(gV(Main.channels[index-1],"tvg-shift")=="98") lastP="hlink"; } if(lastP=="") lastP=gV(Main.channels[index-1],"type"); } else lastP=""; if(index>=0) { var tekP=gV(Ch,"position"); if(tekP=="") { if(gV(Ch,"tvg-shift")=="99") tekP="fulleditline"; else if(gV(Ch,"tvg-shift")=="98") tekP="hlink"; } if(tekP=="") tekP=gV(Ch,"type"); } else tekP=""; if(tekP=="list"){ //if(lastP=="hlink"&&tekP!="hlink") html+='
'; sPosY++; sPosX=0; sPos[index]=[sPosX,sPosY]; } else if(Main.typeList=="start"){ title=title.replace(//g,""); if(Ch["side_icon"]=="dns"&&!app_cors) Ch["side_icon"]='_OT_on_dns.png'; if(Ch["side_icon"]=="1080") Ch["side_icon"]='_OT_on_1080.png'; if( (Ch["side_icon"]=="remotefork"&&!app_cors) ||(Ch["side_icon"]=="rfs"&&platform!="android-device")) Ch["side_icon"]='_OT_on_remotefork.png'; if(tekP=="bigtile"){ st_h=css_wh(194); st_w=css_w(128); } else{ st_h=css_wh(80); st_w=css_w(128); } el_mini=false; el_margin=css_w(1); if(tekP=="label"){ sPosX=0; if(index) sPosY++; sPos[index]=[sPosX,sPosY]; return html+'
'+ ''+ '
'+title+'
'+ ''+ '
'; } else if(lastP=="label"||(lastP=="list"&&tekP!="list")){ if(index) sPosY++; sPosX=0; } else if(lastP=="hlink"&&tekP!="hlink"||lastP!="hlink"&&tekP=="hlink") { if(index) { sPosY++; html+='
'; } sPosX=0; } if(tekP=="fulleditline"){ sPosX=0; if(index) sPosY++; sPos[index]=[sPosX,sPosY]; return '
'+ '
'+title+'
'+ ''+ '
'; } else if(tekP=="hlink"){ //if(adop=="") html="
"; sPos[index]=[sPosX++,sPosY]; html+='
'; if(Ch["imgsrc"]!="") html+=''; html+='
'+title+'
'+ ''+ '
'; return html; } if(Ch["br"]){ sPosY++; sPosX=0; html+='
'; } if(sPosX>=startX) { sPosY++; sPosX=0; } sPos[index]=[sPosX++,sPosY]; html+=adop+'
'; html+=""; if(Ch["imgsrc"]!="") html+=''; html+='
'+ '
'+title+'
'; if(Ch["side_icon"]!="") html+=''; //''+d_img+dop_new+z-index:'+imgz+'; html+='
'; return html; } var num=(index+1); if(typeof Ch["orig_num"]!="undefined") num=(1+Ch["orig_num"]); if(is_mark&&is_mark_array[index]=="1"){ num=""; } var img=''; if(typeof Ch["logo_search"]!="undefined") { //if(Main.GL["livesearch"]==1) html+=""; Ch["imgsrc"]=Ch["logo_search"]; } var dspnum=''; if(Ch["imgsrc"]=="hidden") {img='';dspnum='display:none;';} else if(Ch["imgsrc"]=="none") {img='
 
';} else if(Ch["imgsrc"].match(/^http:\/\/check(true|false)/)) {img='
';} else img=''; var html='
'+ '
'+num+'
'+img+ ''; if(gV(Ch,"infolink")!=""&&Ch["infolink"]!=" "&&gV(Ch,"search_on")==""){ var ttl='
'+title+'
'+ '
'+Ch["infolink"]+'
'; } else ttl=title; html+=""; if(Ch["stream_url"]=="") html+=""; if(gV(Ch,"search_on")!="") var titlSt="background-color:#ddd;color:#333;overflow: hidden;border-radius:"+css_w(4)+"px;padding:3px;margin-top:"+css_wh(2)+"px;font-size:85%;width:90%;height:"+(ch_height-10)+"px;"; else titlSt="width:100%;"; html+='
'+ttl+'
'; html+='
'; return html; } function p_c(i){ if(!noadd) edit(i); } function gV(v,ind1){ try{ if(v==null) return ""; if(typeof v=="undefined") return ""; if(ind1!=null) return gV(v[ind1]); return v; } catch(e){ return ""; } } function linkShowDesc(){ if(select>=0&&select"+channels[select]["title"]+"":channels[select]["description"]; if(Main.typeList=="start"){ $_inner("infoList",""); $_inner("bottomMenu",desc); } else $_inner("infoList",desc); setStyles("infoList","infoList"); } } function linkOver(ind,t){ console.log("linkOver "+ind); select=ind; if($("#edit").css('display')!="none") return; for(var i=-1;i <= channels.length+1;i++){ if(i==select) { linkShowDesc(); markselect(i,1,t); var s=$("#pltagid_chbkg").val()+Math.ceil(255*($("#pltagid_chbkgrange").val()/1)).toString(16); $("#ch"+i).css("background","none "+s); $("#ch"+i).css("color",$("#pltagid_chcolor").val()); } else { $("#ch"+i).css("border","1px solid transparent"); markselect(i,0); } } if(channels[select]["description"]=="") var d=channels[select]["title"]; else d=channels[select]["description"]; $("#infoList").css("margin-top",select*30); $("#infoList").html(d); $("#infoList").show(); } function markselect(id,m,el){ //console.log("markselect "+id); if($_("ch"+id)==null) return; $_("ch"+id).sel=m; if(id>=0&&id
"; if(n==-1) html+="Добавление пункта меню
"; else html+="Редактирование элемента #
"; for(var i=0;i < chtag.length&&i<2;i++) { if(chtag[i]!="description") { html+=chtag[i]+"
"; if(chtag[i]=="logo_30x30") html+=" "; if(chtag[i]=="logo_30x30") html+=""; html+=""; html+="
"; } } html+="Ссылка на:
страницу видео текст ? SearchName ?

"; html+="
"; html+="Позиция:
по умолчанию список label гориз. ссылка
высокая плитка 128х215 широкое поле ввода
html ?
"; for(var i in channels[n]){ if(i&&channels[n][i]&&html.indexOf("chtagid_"+i+"")==-1&&i!="stream_url"&&i!="playlist_url"&&i!="imgsrc") html+=i+" "+gV(chtag_info,i)+"

"; } html+="Показать все теги
"; html+=""; html+=" "; html+="
"; $("#edit").html(html); applico(); $('[name=chtagid_proxyurl]').val([gV(ch,"proxyurl")]); if(ch["stream_url"]!="") $('[name=set_url]').val(['stream_url']); console.log("POS: "+gV(ch,"position")); if(gV(ch,"position")!="") $('[name=set_position]').val([ch["position"]]); if($('[name=set_url]:checked').val()!="playlist_url") $('#div_proxyurl').hide(); if(ch["stream_url"]=="description") $("#edit").css("width","778px"); $("#edit").show(); $("#chtagid_description").css("width","380px"); $("#chtagid_description").htmlarea({ // Override/Specify the Toolbar buttons to show css: "/include/templates/js/jHtml/jHtmlArea.Editor.css", toolbar: [ ["html","|","bold", "italic", "underline", "|", "forecolor"], ["justifyLeft", "justifyCenter", "justifyRight","p"], ["|", "image"] ]}).parent().resizable({ alsoResize: $(this).find("iframe") }); /*$("#chtagid_description").htmlarea("pasteHTML", ch[chtag[4]]); */ $("#edit").css("top",$('#ch'+nedit).offset().top-150); } function show_player(u,is_iptv,t){ $("#player").css("top",$("#ch"+t).offset().top); $("#player").css("left",120); $("#player").css("background-color","black"); var html=''; if(u=='description'){ html=""; return; } else if((u.indexOf("/serial/")>0&&u.indexOf("/iframe")>0)||(u.indexOf("/video/")>0&&u.indexOf("/iframe")>0)) html=''; else if(u.indexOf("youtube.com/watch?v=") > 0 || u.indexOf("youtube.com/embed") > 0 || u.indexOf("youtube.com/video") > 0|| u.indexOf("youtu.be/") > 0) html=''; else if(!is_iptv&&!u.match(/\.(m3u8)/)) html=''; else html=''+ ''+ ''; $("#player").html(''+html); $("#player").show(); } function del_edit(){ channels.splice(nedit,1); $('#edit').hide(); listch(); } function save_edit(){ var n=nedit; if(n==-1) {channels[n]={};for(var i=0;i < chtag.length;i++) channels[n][chtag[i]]=""; } for(var i=0;i < chtag.length;i++){ if($("#chtagid_"+chtag[i])==null) continue; if(chtag[i]=="description") channels[n][chtag[i]]=$("#chtagid_"+chtag[i]).htmlarea('html'); else channels[n][chtag[i]]=$("#chtagid_"+chtag[i]).val(); } if($('[name=set_url]:checked').val()=="SearchName") { channels[n]["playlist_url"]="SearchName"; channels[n]["stream_url"]=""; } else if($('[name=set_url]:checked').val()=="description") { channels[n]["playlist_url"]=""; channels[n]["stream_url"]="description"; } else if($('[name=set_url]:checked').val()=="stream_url") { channels[n]["playlist_url"]=""; channels[n]["stream_url"]=$("#chtagid_url").val(); } else { channels[n]["playlist_url"]=$("#chtagid_url").val(); channels[n]["stream_url"]=""; } channels[n]["position"]=$('[name=set_position]:checked').val(); if($('[name=set_url]:checked').val()=="playlist_url"&&$('#chtagid_proxyurl').val()!="") channels[n]["proxyurl"]=$('#chtagid_proxyurl').val(); else delete channels[n]["proxyurl"]; var chnumb=$("#chnumb").val(); if(chnumb<1) chnumb=1; else if(chnumb>channels.length) chnumb=channels.length; if(chnumb!=n+1){ var tmp=channels.splice(n,1)[0]; channels.splice(chnumb-1,0,tmp); } $("#userlink").val(JSON.stringify(channels[n])); $("#userlink").prop("type","text"); $("#userlink").after( " "+channels[n]["title"]+"
"); if(n==-1){ delete channels[n]; $('#ch-1').hide(); } $('#edit').hide(); listch(null,n); } function upload_page(){ for(var i=0;i < channels.length;i++){ for(var j=0;j < chtag.length;j++) if(channels[i][chtag[j]]=="") delete channels[i][chtag[j]]; } $("#pl_channels").val(JSON.stringify(channels)); $("#formxml").submit(); } function OpenUrl(url){ document.location=url; } function OpenGoBack(){ history.back(); } function ConfirmMessage(s,func){ if(func!=null) { if(confirm(s)) func.apply(this); } else confirm(s); } function applyStyles(st){ for(var i in st["cssid"]) setStyles(i,"cssid|"+i,st); } function $_(id){ return document.getElementById(id); } function $_inner(id,s){ try{ $_(id).innerHTML=s; } catch(e){ console.log(id); console.log(e); } } function setStyles(id,styles,arraySt){ if(typeof arraySt!="undefined"&&arraySt!=null&&$_(id)!=null){ var st=styles.split("|"); if(arraySt!=null){ if(typeof arraySt[st[0]]!="undefined"&&arraySt[st[0]]!=null){ if(st.length>1){ var el=st.shift(); return setStyles(id,st.join("|"),arraySt[el]); } else{ for(var i in arraySt[st[0]]){ if(i=="before") $_inner(id,arraySt[st[0]][i]+$_(id).innerHTML); else if(i=="after") $_inner(id,$_(id).innerHTML+arraySt[st[0]][i]); else $_(id).style[i]=arraySt[st[0]][i]; } } } } } } function fxml_input(name){ var input = $('[name="' + name + '"]'); var value; if (input.is('input[type="checkbox"]')) { value = input.prop('checked'); } else if (input.is('input[type="radio"]')) { value = $('[name="' + name + '"]:checked').val(); } else if (input.is('select')) { value = input.find('option:selected').val(); } else { value = input.val(); } return value; }