function b2prettyPrint(){ if(b2_global.prettify_load == '0') return let classArr = document.getElementsByTagName('pre');//替换标签class if(typeof(classArr)=="object"){ for(var i = 0;i < classArr.length;i++){ if(classArr[i].className.indexOf('prettyprint') <= -1){ classArr[i].className = "prettyprint linenums"; } } } prettyPrint(); } window.onload = b2prettyPrint() function autohclass(){ const tocbox = document.querySelector('.b2-tab-content'); if(!tocbox || B2ClientWidth < 768) return; const dom = document.querySelectorAll('.entry-content > h1,.entry-content > h2,.entry-content > h3') if(dom.length == 0){ document.querySelector('.b2-widget-toc').remove() return } b2loadScript(b2_global.site_info.site_uri+'/Assets/fontend/library/tocbot.min.js','',()=>{ setTimeout(() => { Array.from(dom).forEach((el,i) => { console.log(el,i) el.id =ame + '-'+i }); tocbot.init({ // Where to render the table of contents. tocSelector: '.b2-tab-content', // Where to grab the headings to build the table of contents. contentSelector: '.entry-content', // Which headings to grab inside of the contentSelector element. headingSelector: '.entry-content > h1,.entry-content > h2,.entry-content > h3', collapseDepth: 3, scrollSmooth: true, scrollSmoothDuration: 450, // scrollEndCallback: function (e) { // window.scrollTo(window.scrollX, window.scrollY + 80); // }, orderedList: true, }); }, 100); }) } autohclass() var b2SingleMeta = new Vue({ el:'#post-meta', data:{ following:false, self:true, showMeta:false, locked:false, postData:[] }, computed:{ userData(){ return this.$store.state.userData; } }, mounted(){ if(!b2_global.author_id) return this.$http.post(b2_rest_url+'checkFollowing','user_id='+b2_global.author_id+'&post_id='+b2_global.post_id).then(res=>{ this.self = res.data.self this.following = res.data.following this.postData = res.data b2DsBox.user = res.data.current_user b2DsBox.author = res.data.author b2Ds.data = res.data.ds_data if(typeof postAuthor == 'object'){ postAuthor.following = res.data.following } if(typeof askInv == 'object'){ askInv.postData = res.data askSingleTop.excerpt = res.data.excerpt askSingleBottom.answer_count = res.data.answer_count askSingleBottom.favorites = res.data.favorites askSingleBottom.favorites_isset = res.data.favorites_isset askSingleBottom.views = res.data.views askTop.metas = res.data.metas askAnswerList.best = res.data.best askAnswerList.inv = res.data.inv askSingleBottom.canEdit = res.data.can_edit askSingleBottom.status = res.data.post_status document.querySelector('.ask-single-gujia').style.display = 'none' document.querySelector('.ask-single-info').style.display = 'block' } if(typeof askList == 'object'){ askList.inv = res.data.inv askList.best = res.data.best } this.$nextTick(()=>{ b2tooltip('.b2tooltipbox') if (typeof window.contentFooter !== 'undefined') window.contentFooter.updateSticky() }) payCredit.user = res.data.current_user payCredit.author = res.data.author }) }, methods:{ followingAc(){ if(!b2token){ login.show = true }else{ this.$http.post(b2_rest_url+'AuthorFollow','user_id='+b2_global.author_id).then(res=>{ this.following = !this.following }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); }) } }, dmsg(){ if(!b2token){ login.show = true }else{ b2Dmsg.userid = b2_global.author_id b2Dmsg.show = true } }, scroll(){ this.$scrollTo('#download-box', 300, {offset: -50}) } } }) Vue.component('post-gg', { props: ['show','title','content'], template: b2_global.post_gg, methods:{ close(){ this.$emit('close') }, } }) var postGG = new Vue({ el:'#post-gg', data:{ show:false, title:'', content:'' }, mounted(){ this.getGGData() }, methods:{ getGGData(){ this.$http.post(b2_rest_url+'getPostGG','post_id='+b2_global.post_id).then(res=>{ if(res.data.title || res.data.content){ this.title = res.data.title this.content = res.data.content this.close() } }) }, close(){ this.show = !this.show }, } }) var postType5 = new Vue({ el:'.post-style-5-top', data:{ videos:[], user:'', player:'', index:0, show:true, title:'', showViews:false, url:'', canGuest:false }, mounted(){ if(!this.$refs.postType5) return let post_id = this.$refs.postType5.getAttribute('data-id') let order_id = b2getCookie('b2_guest_buy_'+post_id+'_v') if(order_id){ order_id = JSON.parse(order_id) order_id = order_id[0]['order_id'] } this.$http.post(b2_rest_url+'getPostVideos','post_id='+post_id+'&order_id='+order_id).then(res=>{ this.videos = res.data.videos postVideoList.videos = this.videos if(this.videos.length <= 1){ this.$refs.videoList.style.display = 'none' } this.user = res.data.user if(this.user.allow){ this.show = false } this.canGuest = this.user.can_guest === '0' ? false : true this.list = res.data.list this.title = res.data.title if(this.videos.length > 0){ this.selectVideo(0,res) } b2playerInit() }) }, methods:{ getLastItem(thePath){ return new URL(thePath).pathname.split('/').filter(Boolean).pop().replace('.html',''); }, updateStats() { var text = 'P2P正在为您加速' + (_totalP2PDownloaded/1024).toFixed(2) + 'MB 已分享' + (_totalP2PUploaded/1024).toFixed(2) + 'MB' + ' 连接节点' + _peerNum + '个'; document.getElementById('stats').innerText = text }, lochostVideo(index){ if(!this.videos[index].url) return false; return !(this.videos[index].url.indexOf('bilibili.com')!==-1 || this.videos[index].url.indexOf('v.qq.com')!==-1 || this.videos[index].url.indexOf('ixigua.com')!==-1 || this.videos[index].url.indexOf('youtube.com')!==-1) }, setIframe(index){ let data = this.getVideoData(index) console.log(data) if(data.type == 'bilibili'){ iframe = '' }else if(data.type == 'qq'){ iframe = '' }else if(data.type == 'xigua'){ iframe = `` }else if(data.type == 'youtube'){ iframe = `` } document.getElementById('post-style-5-player').innerHTML = iframe document.querySelector('.post-video-list').style.height = document.querySelector('.post-style-5-video-box-in').clientHeight+'px' }, getQueryFromUrl(url){ var str = url.split('?')[1]; if(!str) return {} var keys = str.split('&'); var obj = {}; keys.forEach((item, idx, data)=>{ var arr = item.split('='); obj[arr[0]] = arr[1]; }); return obj; }, getVideoData(index){ let type,id if(this.videos[index].url.indexOf('bilibili.com')!==-1){ type = 'bilibili' }else if(this.videos[index].url.indexOf('v.qq.com')!==-1){ type = 'qq' }else if(this.videos[index].url.indexOf('ixigua.com')!==-1){ type = 'xigua' }else if(this.videos[index].url.indexOf('youtube.com')!==-1){ type = 'youtube' } if(type =='youtube'){ id = this.getQueryFromUrl(this.videos[index].url)['v'] p = '' }else{ id = this.getLastItem(this.videos[index].url) p = this.getQueryFromUrl(this.videos[index].url)['p'] } return { type:type, id:id, p:p ? p : 1 } }, selectVideo(index,res){ if(this.videos[index].url && !this.lochostVideo(index)){ this.setIframe(index) }else{ this.setVideo(index,res) } }, getDogeVideo(data){ return new Promise(resolve => { this.$http.post(b2_rest_url+'getDogeVideo','id='+data.id+'&token='+data.token).then(res=>{ resolve(res.data); }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); }) }); }, async setVideo(index,res){ if(this.user.allow){ if(this.videos[index].id){ this.url = await this.getDogeVideo(this.videos[index]); }else{ this.url = this.videos[index].url } }else{ this.url = this.videos[index].view if(this.url){ this.showViews = true }else{ this.showViews = false } } let type = 'auto'; let playerVideoConfig = { url: this.url, autoplay: true, screenshot:true, pic: this.videos[index].poster, type: type } if(this.url && this.url.indexOf('.m3u8')!==-1){ playerVideoConfig['type'] = 'customHls'; playerVideoConfig['customType'] = { 'customHls': function (video, player) { let hls = new Hls(); hls.loadSource(video.src); hls.attachMedia(video); } } } this.player = new DPlayer({ container: document.getElementById('post-style-5-player'), screenshot: false, video: playerVideoConfig, preload:'metadata', contextmenu:[], airplay:true, mutex:true, hotkey:true, preload:res && res.data.auto === '1' ? 'auto' : 'none', logo:b2_global.default_video_logo, autoplay:res && res.data.auto && this.url ? true : false, // customType: { // 'customHls': function (video, player) { // const hls = new Hls({ // debug: true, // // Other hlsjsConfig options provided by hls.js // p2pConfig: { // live: true, // 如果是点播设为false // // Other p2pConfig options provided by CDNBye // } // }); // hls.loadSource(video.src); // hls.attachMedia(video); // hls.p2pEngine.on('stats', function (stats) { // _totalP2PDownloaded = stats.totalP2PDownloaded; // _totalP2PUploaded = stats.totalP2PUploaded; // updateStats(); // }).on('peerId', function (peerId) { // _peerId = peerId; // }).on('peers', function (peers) { // _peerNum = peers.length; // this.updateStats(); // }); // } // } }) document.querySelector('.post-video-list').style.height = document.querySelector('.post-style-5-video-box-in').clientHeight+'px' if(this.videos.length >= 1){ //视频播放结束,切换下一条 this.player.on('ended',()=>{ if(this.index+1 < this.videos.length){ this.index = this.index + 1 postVideoList.index = this.index this.select(this.index) } }) this.player.on('playing',()=>{ this.player.controller.setAutoHide(); document.getElementById('post-style-5-player').querySelectorAll('.dplayer-video-current')[0].style="object-fit:contain" }) } }, select(index){ this.index = index postVideoList.index = this.index let url = this.videos[index].url if(!this.lochostVideo(index)){ this.selectVideo(index) }else{ if(!this.video){ this.setVideo(index,{data:{data:{auto:1}}}) }else{ document.getElementById('post-style-5-player').querySelectorAll('.dplayer-video-current')[0].style="object-fit:cover" if(this.user.allow){ this.url = this.videos[index].url }else{ this.url = this.videos[index].view } this.player.switchVideo({ url:this.url, pic:this.videos[index].poster }) if(this.user.allow){ this.player.play() }else{ this.show = true } } } }, goComment(){ this.$scrollTo('#comments', 300, {offset: -50}) }, showAc(){ this.show = !this.show if(this.show === true){ this.player.pause() } }, listSlide(){ var flkty = new Flickity(this.$refs.videoListIn, { cellAlign: 'left', contain: true }); }, play(){ this.show = false this.player.play() }, pay(){ if(!b2token && !this.canGuest){ login.show = true }else{ b2DsBox.data = { 'title':this.title, 'order_price':this.user.role.value, 'order_type':'v', 'post_id':b2_global.post_id } b2DsBox.show = true; b2DsBox.showtype = 'normal' } }, credit(){ if(!b2token){ login.show = true }else{ payCredit.data = { 'title':this.title, 'order_price':this.user.role.value, 'order_type':'v', 'post_id':b2_global.post_id } payCredit.show = true; } }, login(type){ login.show = true login.loginType = type } } }) function b2playerInit(){ let player = document.querySelectorAll('.dplayer-video'); if(player.length > 0){ for (let i = 0; i < player.length; i++) { player[i].setAttribute('x5-video-player-type','h5-page') player[i].setAttribute('x5-video-player-fullscreen','true') player[i].setAttribute('playsinline','true') player[i].setAttribute('webkit-playsinline','true') } } } //播放远程视频 function b2SingleVideo(){ let boxes = document.querySelectorAll('.entry-content .content-video-box'); if(boxes.length > 0){ boxes.forEach(e => { e.onclick = (even)=>{ let url = even.target.parentNode.getAttribute('data-video-url'); if(url){ axios.post(b2_rest_url+'getVideoHtml','url='+encodeURIComponent(url)).then((res)=>{ if(res.data.indexOf('class="smartideo"') !== -1){ e.innerHTML = res.data } }) } } }); } } b2SingleVideo() //文章内部图片点击放大 function b2ImgZooming(sele){ if(!b2_global.show_slider || b2_global.show_slider == '0') return let att = document.querySelectorAll('.attachment img') for (let _i = 0; _i < att.length; _i++) { b2zoom.listen(att[_i]) } var imgs = document.querySelectorAll(sele) for (let i = 0; i < imgs.length; i++) { if( imgs[i].className.indexOf('po-img-big') !== -1 || imgs[i].className.indexOf('alignnone') !== -1 || imgs[i].className.indexOf('alignleft') !== -1 || imgs[i].className.indexOf('alignright') !== -1 || imgs[i].className.indexOf('aligncenter') !== -1 || imgs[i].className.indexOf('gallery-image') !== -1 || imgs[i].className.indexOf('size-full') !== -1 || imgs[i].className.indexOf('wp-image-') !== -1 ){ b2zoom.listen(imgs[i]); } } var img2 = document.querySelectorAll('.entry-content figure img') for (let i = 0; i < img2.length; i++) { b2zoom.listen(img2[i]); } var img3 = document.querySelectorAll('.entry-content > p > img') for (let i = 0; i < img3.length; i++) { b2zoom.listen(img3[i]); } } document.addEventListener('DOMContentLoaded', function () { b2ImgZooming('.entry-content img') }) //附件下载,复制解压码 function b2FileDown(){ let code = document.querySelectorAll('.entry-content .file-down-pass span'); code.forEach(e => { e.onclick = (ev)=>{ let input = ev.target.firstElementChild; input.select() if(document.execCommand('copy')){ ev.target.firstChild.data = b2_global.copy.success setTimeout(()=>{ ev.target.firstChild.data = b2_global.copy.text },1000) }else{ ev.target.firstChild.data = b2_global.copy.error } window.getSelection().removeAllRanges(); } }); } b2FileDown() //显示隐藏短代码内容 function showHideContent(){ let box = document.querySelectorAll('.entry-content .content-show-roles'); if(box.length > 0){ let h_axios = axios if(b2token){ h_axios.defaults.headers.common['Authorization'] = 'Bearer ' + b2token } let order_id = b2getCookie('b2_guest_buy_'+b2_global.post_id+'_w') if(order_id){ order_id = JSON.parse(order_id) order_id = order_id[0]['order_id'] } h_axios.post(b2_rest_url+'getHiddenContent','id='+b2_global.post_id+'&order_id='+order_id).then((res)=>{ if(res.status == 200){ for (let i = 0; i < box.length; i++) { if(typeof(res.data) == 'object'){ box[i].innerHTML = res.data[i] box[i].parentNode.parentNode.style.height = 'auto' }else{ box[i].innerHTML = res.data } Vue.nextTick(()=>{ b2prettyPrint() b2VideoReset('.content-hidden .b2-player') b2SidebarSticky() if (typeof window.contentFooter !== 'undefined') window.contentFooter.updateSticky() }) } } setTimeout(()=>{ b2AfterInnterHtml() },100) }) } } showHideContent() function b2AfterInnterHtml(){ b2FileDown() b2SingleVideo() b2ImgZooming('.entry-content .content-show-roles img') } Vue.component('poster-box', { props: ['show'], template:b2_global.poster_box, data(){ return { poster:'', isWeixin:false, data:'', loadedjs:false, locked:false, showLong:false, thumb:'', logo:'' } }, computed:{ userData(){ return this.$store.state.userData; } }, methods:{ ready(){ this.isWeixin = b2isWeixin() const qr = new QRious({ value: this.data.link, size:100, level:'L' }); this.data.qrcode = this.base64ToBlob(qr.toDataURL('image/jpeg')) var clipboard = new ClipboardJS('.fuzhi'); clipboard.on('success', e=>{ Qmsg['success'](b2_global.js_text.global.copy_success,{html:true}); }); clipboard.on('error', e=> { Qmsg['warning'](b2_global.js_text.global.copy_select,{html:true}); }); this.$nextTick(()=>{ this.getImgLoadEd() }) }, getImgLoadEd() { // 查询容器下所有图片 let images = this.$refs.posterContent.querySelectorAll('img'); // Array.prototype.slice.call将images类数组转换成合法数组 const promises = Array.prototype.slice.call(images).map(node => { return new Promise((resolve, reject) => { let loadImg = new Image(); loadImg.src = node.src; loadImg.onload = () => { resolve(node); } }); }); // 利用Promise.all监听所有图片加载完成 Promise.all(promises).then(results => { this.html2canvas() }).catch(e => { Qmsg['warning'](e,{html:true}); }) }, close(val){ this.$emit('close-form',val) }, openWin(url,type){ if(type == 'weibo'){ url = url+'&pic='+this.data.thumb }else{ url = url+'&pics='+this.data.thumb } openWin(url,type,500,500) }, html2canvas(){ var dom = this.$refs.posterContent, w = dom.clientWidth, h = dom.clientHeight; domtoimage.toPng(dom) .then((dataUrl1)=>{ domtoimage.toPng(dom,{ quality:0.95,height:h*2,width:w*2,bgcolor:'#fafafa', style: { transform: `scale(2)`, // 元素放大 transformOrigin: '0 0', } }) .then((dataUrl)=>{ this.poster = this.base64ToBlob(dataUrl); }); }); }, download(){ var link = document.createElement('a'); link.download = this.data.title+'.jpg'; link.href = this.poster; link.click(); }, base64ToBlob(code) { code = code.replace(/(\r\n)|(\n)|(\r)/g, '') if(this.isWeixin){ return code; } var parts = code.split(';base64,'); var contentType = parts[0].split(':')[1]; var raw = window.atob(parts[1]); var rawLength = raw.length; var uInt8Array = new Uint8Array(rawLength); for (var i = 0; i < rawLength; ++i) { uInt8Array[i] = raw.charCodeAt(i); } return URL.createObjectURL(new Blob([uInt8Array], {type: contentType})); }, getData(){ this.$http.post(b2_rest_url+'getPosterData','post_id='+b2_global.post_id).then(res=>{ this.data = res.data this.ready() }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); }) } }, watch:{ show(val){ if(val && !this.loadedjs){ b2loadScript(b2_global.site_info.site_uri+'/Assets/fontend/library/dom-to-image.min.js','',()=>{ this.loadedjs = true this.getData() }) } } } }) var posterBox = new Vue({ el:'#poster-box', data:{ show:false, data:[] }, methods:{ close(val){ this.show = val } } }) var postVideoTable = new Vue({ el:'.post-video-table', data:{ table:'content' }, methods:{ tab(type){ this.table = type } }, watch:{ table(val){ if(val === 'comment'){ document.querySelector('#post-5-list').style.display = 'none' document.querySelector('.single-article').style.display = 'none' document.querySelector('.comments-box').style.display = 'block' }else if(val === 'list'){ document.querySelector('#post-5-list').style.display = 'block' document.querySelector('.single-article').style.display = 'none' document.querySelector('.comments-box').style.display = 'none' }else{ document.querySelector('#post-5-list').style.display = 'none' document.querySelector('.single-article').style.display = 'block' document.querySelector('.comments-box').style.display = 'none' } } } }) var postVideoList = new Vue({ el:'#post-5-list', data:{ videos:[], index:0 }, methods:{ select(i){ postType5.select(i) } } }) //内页底部 var b2ContentFooter = new Vue({ el:'.content-footer', data:{ showPoster:false, postData:[], locked:false }, mounted(){ let footer = document.querySelector('.post-content-footer'); if(footer && B2ClientWidth <= 768){ footer.classList.remove('post-content-footer'); footer.style.display = 'flex' }else{ setTimeout(() => { if(footer && B2ClientWidth > 768){ window.contentFooter = new StickySidebar('.post-content-footer', { topSpacing: 0, }); } }, 10); } }, methods:{ openPoster(){ posterBox.show = true; }, goComment(){ this.$scrollTo('#comments', 300, {offset: -50}) }, postFavoriteAc(){ if(!b2token){ login.show = true }else{ if(this.locked == true) return this.locked = true this.$http.post(b2_rest_url+'userFavorites','post_id='+b2_global.post_id).then(res=>{ if(res.data == true){ this.postData.favorites_isset = true }else{ this.postData.favorites_isset = false } this.locked = false }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); this.locked = false }) } }, vote(type){ if(!b2token){ login.show = true }else{ if(this.locked == true) return this.locked = true this.$http.post(b2_rest_url+'postVote','type='+type+'&post_id='+b2_global.post_id).then(res=>{ this.postData.up = parseInt(this.postData.up) + parseInt(res.data.up) this.postData.down = parseInt(this.postData.down) + parseInt(res.data.down) if(res.data.up > 0){ this.postData.up_isset = true }else{ this.postData.up_isset = false } if(res.data.down > 0){ this.postData.down_isset = true }else{ this.postData.down_isset = false } if(typeof b2infomationSingle != 'undefined'){ b2infomationSingle.getSingleData() } this.locked = false }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); this.locked = false }) } } } }) //评论列表 var b2CommentList = new Vue({ el:'#comments', data:{ selecter:'.comment-list', opt:{ 'post_id':b2_global.post_id }, api:'getCommentList', options:[], tips:'', canSticky:false, data:[], content:'', show:{ info:false, smile:false, image:false }, focus:false, //图片上传 parentId:0, progress:0, locked:false, commentData:{ imgUrl:'', imgId:'' }, subLocked:false, sketchpad:'', drawing:false, sketchpadOpt:{ color:'#121212', penSize:'2' }, b2token:false, voteData:{} }, computed:{ userData(){ return this.$store.state.userData }, canImg(){ return this.$store.state.canImg } }, mounted(){ this.listImg() this.checkVote() this.getTips() if(this.$refs.respond){ this.b2token = b2token this.resetUserInfo() setTimeout(()=>{ autosize(this.$refs.textarea_box); this.buildSketchpad() b2tooltip('.comment-type button') b2tooltip('.d-replay button') }) } }, methods:{ buildSketchpad(){ if(!this.$refs.sketchpad) return this.sketchpad = new Sketchpad({ element: '#sketchpad', width: this.$refs._textarea_box.offsetWidth - 20, height: 200, color:'#121212', penSize:2 }); }, resetUserInfo(){ if(!b2token){ this.data = JSON.parse(this.$refs.formData.getAttribute('data-commenter')) this.show.info = this.data.name && this.data.user_email ? false : true } }, undo(){ this.sketchpad.undo() }, redo(){ this.sketchpad.redo() }, color(color){ this.sketchpadOpt.color = color this.sketchpad.color = color }, penSize(size){ this.sketchpadOpt.penSize = size this.sketchpad.penSize = size }, animate(){ this.sketchpad.animate(2) }, addSmile(val){ grin(val,document.querySelector('#textarea')) }, resetmove(){ if(this.subLocked || this.locked) return this.parentId = 0 document.querySelector('#comment-form').appendChild(this.$refs.respond) if(this.$refs.fileInput){ this.$refs.fileInput.value = null } this.commentData.imgUrl = '' this.commentData.imgId = '' this.show.image = false this.progress = 0 this.resetWidth() }, resetWidth(){ if(!this.$refs.sketchpad) return setTimeout(() => { this.sketchpad.width = this.$refs._textarea_box.offsetWidth - 20 this.sketchpad.reset(this.sketchpad.width) }, 10); }, submit(){ if(this.drawing){ if(this.sketchpad.strokes.length == 0){ Qmsg['warning'](b2_global.js_text.global.sketchpad_empty,{html:true}); return } } if(this.subLocked == true || this.Locked == true) return this.subLocked = true let data = { 'comment_post_ID':b2_global.post_id, 'author':this.data.name, 'email':this.data.user_email, 'comment':this.$refs.textarea_box.value, 'comment_parent':this.parentId, 'img':this.commentData } if(this.drawing){ this.updateDrawing(data) }else{ this.submitAction(data) } }, updateDrawing(data){ this.$refs.sketchpad.toBlob((blob)=>{ let formData = new FormData() formData.append('file',blob,'comment-drawing.jpg') formData.append("post_id", b2_global.post_id) formData.append("type", 'comment_drawing') this.$http.post(b2_rest_url+'fileUpload',formData).then(res=>{ if(res.data.status == 401){ Qmsg['warning'](res.data.message,{html:true}); this.subLocked = false return }else{ data['comment'] = b2_global.js_text.global.tuya+'['+res.data.id+']' data['img'] = { imgUrl:res.data.url, imgId:res.data.id } this.submitAction(data) } }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); this.subLocked = false return }) },'image/png'); }, submitAction(data){ this.$http.post(b2_rest_url+'commentSubmit',Qs.stringify(data)).then(res=>{ if(this.parentId){ this.$el.querySelector('#comment-children-'+this.parentId).innerHTML = res.data.list }else{ b2CommentList.$refs.commentList.insertAdjacentHTML('afterbegin', res.data.list) } this.$refs.textarea_box.value = '' this.subLocked = false this.resetmove() this.listImg() if(this.$refs.noneComment){ this.$refs.noneComment.remove() } if(!this.$refs.sketchpad) return this.sketchpad.clearAll() this.$nextTick(()=>{ lazyLoadInstance.update() this.checkVote() }) }).catch(err=>{ if(typeof err.response.data.message == 'string'){ Qmsg['warning'](err.response.data.message,{html:true}); }else{ Qmsg['warning'](err.response.data.message[0],{html:true}); } this.subLocked = false }) }, deleteImage(){ this.commentData.imgUrl = '' this.commentData.imgId = '' this.progress = 0 this.$refs.fileInput.value = null }, getFile(event){ if(event.target.files.length <= 0) return if(this.locked == true) return this.locked = true this.commentData.imgUrl = '' this.commentData.imgId = '' this.progress = 0 let file = event.target.files[0] this.show.image = true let formData = new FormData() formData.append('file',file,file.name) formData.append("post_id", b2_global.post_id) formData.append("type", 'comment') let config = { onUploadProgress: progressEvent=>{ this.progress = progressEvent.loaded / progressEvent.total * 100 | 0 } } this.$http.post(b2_rest_url+'fileUpload',formData,config).then(res=>{ if(res.data.status == 401){ Qmsg['warning'](res.data.message,{html:true}); this.show.image = false this.progress = 0 }else{ this.commentData.imgUrl = res.data.url this.commentData.imgId = res.data.id } this.$refs.fileInput.value = null this.locked = false; }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); this.locked = false this.show.image = false this.progress = 0 this.$refs.fileInput.value = null }) }, showLogin(){ login.show = true }, listImg(){ let img = document.querySelectorAll('.comment-img-box img'); if(img.length > 0){ for (let index = 0; index < img.length; index++) { b2zoom.listen(img[index]); } } }, getTips(){ this.$https.get(b2_rest_url+'getCommentTips').then(res=>{ this.tips = res.data }) }, showSticky(){ if(this.canSticky){ let zd = document.querySelectorAll('.comment-zd'); if(zd.length > 0){ for (let index = 0; index < zd.length; index++) { zd[index].className = zd[index].className.replace(' comment-zd','') } } } }, sticky(comment_id){ this.$http.post(b2_rest_url+'commentSticky','post_id='+b2_global.post_id+'&comment_id='+comment_id).then(res=>{ this.$refs.commentPageNav.go(1,'comment',true) this.resetmove() }) }, vote(e,type,comment_id){ if(!b2token){ login.show = true }else{ this.$http.post(b2_rest_url+'commentVote','type='+type+'&comment_id='+comment_id).then(res=>{ // let _type; // if(type === 'comment_up'){ // _type = 'comment_down' // }else{ // _type = 'comment_up' // } // this.$set(this.voteData.list[comment_id].vote,type,res.data[type]+this.voteData.list[comment_id].vote[type]) // this.$set(this.voteData.list[comment_id].vote,_type,res.data[_type]+this.voteData.list[comment_id].vote[_type]) // this.$set(this.voteData.list[comment_id],'isset',false) // if(res.data[_type] >0){ // this.$set(this.voteData.list[comment_id],'isset',_type) // } // if(res.data[type] >0){ // this.$set(this.voteData.list[comment_id],'isset',type) // } this.checkVote() }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); }) } }, finish(){ this.checkVote() }, checkVote(){ // if(!b2token) return let dom = document.querySelectorAll('.reply') if(dom.length == 0 ) return let ids = [] for (let i = 0; i < dom.length; i++) { ids.push(dom[i].getAttribute('data-id')) } let data = { 'ids':ids, 'post_id':b2_global.post_id } this.$https.post(b2_rest_url+'commentVoteData',Qs.stringify(data)).then(res=>{ if(res.data){ Object.keys(res.data.list).forEach(function (key) { let up = document.querySelector('#comment-up'+'-'+key), down = document.querySelector('#comment-down'+'-'+key) up.className = up.className.replace(' voted','') down.className = down.className.replace(' voted','') if(res.data.list[key].isset == 'comment_up'){ up.className += ' voted' } if(res.data.list[key].isset == 'comment_down'){ down.className += ' voted' } document.querySelector('#comment-up-'+key+' span').innerText = res.data.list[key].vote.comment_up document.querySelector('#comment-down-'+key+' span').innerText = res.data.list[key].vote.comment_down }) } this.canSticky = res.data.can_sticky this.showSticky() }) }, move(comment_id){ if(this.subLocked || this.locked) return this.parentId = comment_id document.querySelector('#comment-form-'+comment_id).appendChild(this.$refs.respond) this.resetWidth() } }, watch:{ drawing(val){ if(val){ this.resetWidth() } }, userData(val){ if(val && b2token){ this.data = val } } } }) function b2ContentImageLoaded(){ imagesLoaded( document.querySelectorAll('.entry-content'), function( instance ) { if (typeof window.contentFooter !== 'undefined') window.contentFooter.updateSticky() }); } b2ContentImageLoaded() var b2DownloadBox = new Vue({ el:'#download-box', data:{ list:'', cLogin:false, picked:0 }, mounted(){ if(this.$refs.downloadBox){ if(!b2token){ this.cLogin = false }else{ this.cLogin = true } this.getList() if(this.$refs.downloadTitleBox){ const ps = new PerfectScrollbar('.item-name-box', { wheelSpeed: 2, wheelPropagation: true, minScrollbarLength: 10 }); } } }, methods:{ getList(){ let guest = b2getCookie('b2_guest_buy_'+b2_global.post_id+'_x') guest = JSON.parse(guest) let data = { 'post_id':b2_global.post_id, 'guest':guest } this.$http.post(b2_rest_url+'getDownloadData',Qs.stringify(data)).then(res=>{ this.list = res.data if(typeof b2WidgetDownload != 'undefined' && b2WidgetDownload.$refs.wdlist){ b2WidgetDownload.list = res.data b2WidgetDownload.$refs.gujia.style.display = 'none' b2WidgetDownload.$refs.wdlist.style.display = 'block' // this.$refs.downloadBox.style.display = 'none' // document.querySelector('.single-button-download').style.display = 'none' } let show = false if(document.body.clientWidth > 720){ show = true } for (let i = 0; i < this.list.length; i++) { this.list[i].show_role = show } this.$refs.gujia.style = "display:none" this.$nextTick(()=>{ b2SidebarSticky() if (typeof window.contentFooter !== 'undefined') window.contentFooter.updateSticky() }) }) }, login(){ login.show = true }, go(link,allow,item,index){ if(item.current_user.lv.lv.lv === 'dark_room'){ Qmsg['warning'](b2_global.js_text.global.dark_room_down,{html:true}); return } if(!this.cLogin && !allow && !item.current_user.guest){ login.show = true }else if(!allow){ if(item.current_user.can.type == 'comment'){ Qmsg['warning'](b2_global.js_text.global.comment_down,{html:true}); }else if(item.current_user.can.type == 'credit'){ this.credit(index) }else if(item.current_user.can.type == 'money'){ this.pay(index) }else{ Qmsg['warning'](b2_global.js_text.global.role_down,{html:true}); } return }else{ window.open(link) } }, pay(index){ if(this.list[index].current_user.can.type == 'money'){ b2DsBox.data = { 'title':this.list[index].name, 'order_price':this.list[index].current_user.can.value, 'order_type':'x', 'post_id':b2_global.post_id, 'order_key':index } b2DsBox.show = true; b2DsBox.showtype = 'normal' } }, credit(index){ if(!this.cLogin){ login.show = true }else{ if(this.list[index].current_user.can.type == 'credit'){ payCredit.data = { 'title':this.list[index].name, 'order_price':this.list[index].current_user.can.value, 'order_type':'x', 'post_id':b2_global.post_id, 'order_key':index } payCredit.show = true; } } } } }) var b2WidgetDownload = new Vue({ el:'.b2-widget-download', data:{ list:'', }, methods:{ show(index){ this.$set(this.list[index],'show',!this.list[index].show) }, go(link,allow,item,index) { b2DownloadBox.go(link,allow,item,index) } } }) b2VideoReset('.b2-player') function b2VideoReset(classname){ if(!classname) return let videos = document.querySelectorAll(classname); if(videos.length > 0){ if(!document.querySelector('.player-js')){ b2loadScript(b2_global.site_info.site_uri+'/Assets/fontend/library/flv.min.js','',()=>{ b2loadScript(b2_global.site_info.site_uri+'/Assets/fontend/library/hls.min.js','',()=>{ b2loadScript(b2_global.site_info.site_uri+'/Assets/fontend/library/DPlayer.min.js','',()=>{ b2VideoFor(videos) }) }) }) }else{ b2VideoFor(videos) } } } function b2VideoFor(videos){ var player = []; for (let i = 0; i < videos.length; i++) { let data = JSON.parse(videos[i].getAttribute('data-video')); if(data.url){ player[i] = new DPlayer({ container: videos[i], screenshot: false, mutex:true, hotkey:true, preload:'none', contextmenu:[], video: { url: data.url, pic: data.poster, }, logo:data.logo != '' ? data.logo : b2_global.site_info.site_uri+'/Assets/fontend/images/xg-logo-default.png', autoplay:false }); player[i].on('play',()=>{ player[i].controller.setAutoHide(); videos[i].querySelectorAll('.dplayer-video-current')[0].style="object-fit:contain" }) player[i].oncontextmenu = ()=>{ return false } } } } if(typeof b2SingleMeta !== 'undefined'){ let postData = b2SingleMeta.$watch('postData',(newVal,oldVal)=>{ if(typeof b2ContentFooter !== 'undefined'){ b2ContentFooter.postData = newVal } if(typeof B2ShopSingle !== 'undefined'){ if(B2ShopSingle.$refs.shopSingle){ B2ShopSingle.postData = newVal } } if(typeof documentVote !== 'undefined'){ documentVote.postData = newVal } }) } var postAuthor = new Vue({ el:'.b2-widget-author', data:{ following:false }, methods:{ followingAc(){ if(!b2token){ login.show = true }else{ this.$http.post(b2_rest_url+'AuthorFollow','user_id='+b2_global.author_id).then(res=>{ this.following = !this.following }).catch(err=>{ Qmsg['warning'](err.response.data.message,{html:true}); }) } }, dmsg(){ if(!b2token){ login.show = true }else{ b2Dmsg.userid = b2_global.author_id b2Dmsg.show = true } }, } })