var $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body'); var storage = window.localStorage; var lazyLoadInstance = new LazyLoad({}); $(document).on('click', '.left_menu_box ul li a , .widget_nav_menu ul li a, .menu-top-container ul li a', function () { var t = $(this); t.siblings("ul").slideToggle(200); t.parent().siblings().find("ul").hide(200); if (t.parent().hasClass('has_children')) { t.find('.drop_icon').toggleClass('up'); } $('.left_menu_box ul li').removeClass('current-pjax-item current-menu-item current-menu-parent current-menu-ancestor'); t.parent().addClass('current-pjax-item'); }); var route = location.href.substring(0, location.href.indexOf('?') === -1 ? (location.href.indexOf('#') === -1 ? location.href.length : location.href.indexOf('#')) : location.href.indexOf('?')) $('.left_menu_box ul li a').each((i, e) => { if (e.parentElement.childNodes.length > 3) { return } let href = e.href.substring(0, e.href.indexOf('?') === -1 ? (e.href.indexOf('#') === -1 ? e.href.length : e.href.indexOf('#')) : e.href.indexOf('?')) if (route === href) { e.parentElement.classList.add('current-pjax-item') } }) $('.left_menu_box ul li ul li a').each((i, e) => { let href = e.href.substring(0, e.href.indexOf('?') === -1 ? (e.href.indexOf('#') === -1 ? e.href.length : e.href.indexOf('#')) : e.href.indexOf('?')) if (route === href) { e.parentElement.parentElement.parentElement.classList.add('current-pjax-item') } }) //全局loading function loading_template() { tag = '
'; tag += ''; return tag; } function loading_start(target) { target.append(loading_template()); } function loading_done(target) { target.children('.loader').remove(); } //话题表情添加 $(document).on('click', 'a.smile_btn', function () { var a = $(this).html(); var textarea = $("textarea#topic_content"); var content = textarea.val(); textarea.val(content + a); textarea.focus(); }); $(document).on('click', '.smile_box i', function () { var t = $(".smile_show"); t.slideToggle(100); }); //选择话题 $(document).on('click', '.t_cat_box li', function () { var name = $(this).find('.c_name span').html(); $('.t_cat_toogle span').html(name); UIkit.dropdown('.t_cat_box').hide(false); }); $(document).on('click', '.up_cat_btn', function () { var name = $('input#add_cat').val(); if (!name) { cocoMessage.error("请填写话题"); return false; } $('.t_cat_toogle span').text(name) UIkit.dropdown('.t_cat_box').hide(false); }); $(document).on('click', '.simi a', function () { var visible = $(this).attr('visible'); if (visible == 'PUBLIC') { $(this).html('').attr('visible', 'PRIVATE'); $(this).children().css({"background": "#ddd", "color": "#c6c6c6"}); } else { $(this).html('').attr('visible', 'PUBLIC'); $(this).children().css({"background": "#e3efe7", "color": "#66c187"}); } }); //消息通知 cocoMessage.config({ duration: 2000, }); //sortable事件 隐藏input UIkit.util.on('.img_show', 'start', function (item) { $(".up_img_btn").hide(); }); UIkit.util.on('.img_show', 'moved', function (item) { var img_num = $('.add_img_box .t_media_item').length; if (img_num < 9) { $(".up_img_btn").show(); } }); UIkit.util.on('.img_show', 'stop', function (item) { var img_num = $('.add_img_box .t_media_item').length; if (img_num < 9) { $(".up_img_btn").show(); } }); //ajax上传图片到媒体库 $(document).on('change', '#topic_img_up', function (e) { e.preventDefault(); if ($('#topic_img_up').val() == '') { return; } const policyName = Theme.moments.policy_name; const groupName = Theme.moments.group_name; var files = $('#topic_img_up')[0].files; var imgtot = 0; var num = $('.add_img_box .t_media_item').length; // 检查选择的图片数量是否会导致总数超过限制 if (num + files.length > 9) { cocoMessage.error("最多上传9张图片, 当前已上传" + num + "张。" + "你选择了" + files.length + "张"); return; // 阻止上传 } // 计算总大小 $.each(files, function (i, file) { imgtot += file['size']; }); var tot = imgtot / 1024000; $(".up_img_btn i").remove(); $(".up_img_btn").prepend("
" + tot.toFixed(2) + "MB
"); // 上传图片 $.each(files, function (i, file) { var data = new FormData(); data.append('file', file); policyName && data.append('policyName', policyName); groupName && data.append('groupName', groupName); $.ajax({ type: "POST", url: `${Theme.moments.attachments_upload_api}`, dataType: 'json', data: data, processData: false, contentType: false, beforeSend: function () { $('input#topic_img_up').attr('disabled', 'disabled'); }, success: function (data) { var thum = data.metadata.annotations["storage.halo.run/uri"] || data.metadata.annotations["storage.halo.run/external-link"] || data.metadata.annotations["lskypro.plugin.halo.chenhe.me/image-link"]; var src = thum; var media = '
'; media += ''; media += ''; media += '
'; $(".img_show").prepend(media); num = $('.add_img_box .t_media_item').length; if (num >= 8) { $("a.up_img_btn").hide(); } $(".img_load_text").remove(); $('input#topic_img_up').removeAttr('disabled'); }, }); }); $(".up_img_btn").prepend(""); }); //检查上传图片数量 function check_image_num() { var num = $('.add_img_box .t_media_item').length; if (num > 8) { cocoMessage.error("最多上传9张图片"); return true; } //if(num == '8'){$("a.up_img_btn").hide();} } //sortable事件 隐藏input UIkit.util.on('.img_show', 'start', function (item) { $(".up_img_btn").hide(); }); UIkit.util.on('.img_show', 'moved', function (item) { var img_num = $('.add_img_box .t_media_item').length; if (img_num < 9) { $(".up_img_btn").show(); } }); UIkit.util.on('.img_show', 'stop', function (item) { var img_num = $('.add_img_box .t_media_item').length; if (img_num < 9) { $(".up_img_btn").show(); } }); //获取媒体库图片 $(document).on('click', '.up_from_media a', function () { $(".attch_nav .pre").hide(); $(".attch_nav .nex").hide(); $(".attch_nav").attr('paged', '1'); $(".wp_get_media_list").empty(); $(".show_media_box").show(); $.ajax({ type: "get", url: `/apis/${Theme.moments.attachments_api}/v1alpha1/attachments?group=&page=1&size=40&ungrouped=false&accepts=image/*`, contentType: "application/json", beforeSend: function () { }, success: function (data) { var list = data.items; $.each(list, function (i, value) { var thum = value.status.permalink; var src = value.status.permalink; var wf_media = '
  • ';//图片预览 $(".wp_get_media_list").append(wf_media); }); var max = data.totalPages; if (max > 1) { $(".attch_nav .nex").show(); } else { $(".attch_nav .nex").hide(); } } }); }); //媒体库分页 $(document).on('click', '.attch_nav a', function () { $(".wp_get_media_list").empty(); var type = $(this).attr('class'); var paged = $(".attch_nav").attr('paged'); if (type == 'nex') { var paged = parseInt(paged) + 1; } else if (type == 'pre' && paged !== '') { var paged = parseInt(paged) - 1; } $(".attch_nav").attr('paged', paged); $.ajax({ type: "get", url: `/apis/${Theme.moments.attachments_api}/v1alpha1/attachments?group=&page=${paged}&size=40&ungrouped=false&accepts=image/*`, contentType: "application/json", beforeSend: function () { }, success: function (data) { $(".wp_get_media_list").empty(); var list = data.items; $.each(list, function (i, value) { var thum = value.status.permalink; var src = value.status.permalink; var mediaType = value.spec.mediaType var wf_media = `
  • `;//图片预览 $(".wp_get_media_list").append(wf_media); }); var max = data.totalPages; if (max <= paged) { $(".attch_nav .nex").hide(); } else { $(".attch_nav .nex").show(); } if (paged > 1) { $(".attch_nav .pre").show(); } else { $(".attch_nav .pre").hide(); } } }); }); //收起媒体库 $(document).on('click', '.show_media_box .souqi', function () { $(".show_media_box").hide(); $(".wp_get_media_list").empty(); }); //从媒体库插入图片 $(document).on('click', '.wp_get_media_list li', function () { var num = $('.add_img_box .t_media_item').length; if (num == '8') { $("a.up_img_btn").hide(); } if (check_image_num()) { return false; } ; var thum = $(this).children().attr('src'); var src = $(this).attr('data-src'); var type = $(this).attr('data-type'); var media = '
    '; media += ''; media += '';//图片预览 media += '
    '; $(".img_show").prepend(media); }); //删除图片 $(document).on('click', '.topic-img-de', function () { var msg = "确认删除此图片?"; if (confirm(msg) == true) { $(this).parent().remove(); } else { return false; } var num = $('.add_img_box .t_media_item').length; if (num < 9) { $("a.up_img_btn").show(); } }); //插入外部图片链接 $(document).on('click', '.up_from_cdn a', function () { //$(".show_media_box .souqi").click(); $(".show_cdn_media").show(); }); //取消 $(document).on('click', 'a.img_link_cancel', function () { $(".show_cdn_media").hide(); }); //插入 $(document).on('click', 'a.img_link_btn', function () { var img_url = $("#img_link_up").val(); //获得上传文件名 if (!/\.(jpg|png|gif|webp|jpeg)$/.test(img_url) || img_url == '') { cocoMessage.error("图片格式不正确!"); return false; } if (check_image_num()) { return false; } var num = $('.add_img_box .t_media_item').length; if (num == '8') { $("a.up_img_btn").hide(); } var src = img_url; var type = 'image/' + img_url.substring(img_url.lastIndexOf('.') + 1); var media = '
    '; media += ''; media += '';//图片预览 media += '
    '; $(".img_show").prepend(media); $("#img_link_up").val(''); }); //ajax获取我的地理位置 $(document).on('click','.loca .laqu',function(){ var gaode_key = Theme.moments.gaode_key; var ip = ''; $.ajax({ type: "get", url:`/apis/uc.api.security.halo.run/v1alpha1/devices`, contentType: "application/json", success: function(data){ if(data.length>0){ var ipAddress = data[0].device.spec.ipAddress; if (!/^10\.|^192\.|^168\.|^172\./.test(ipAddress)) { ip = data[0].device.spec.ipAddress } } $.ajax({ type: "get", url:`https://restapi.amap.com/v3/ip?ip=${ip}&key=${gaode_key}`, contentType: "application/json", beforeSend: function () { $(".loca_text").text("数据拉取中.."); }, success: function(data){ if(data.status == '1') { var city = 'X市' ; if(typeof data.city === 'string') { city = data.city; } var province = 'X省'; if(typeof data.province === 'string') { province = data.province; } var loca = ""+province+" · "+city+""; $.cookie('mylocal', loca, { expires: 30, path: '/' }); $(".loca_text").html(loca).attr("state",'1'); //设置为开启 }else{ cocoMessage.error(data.info); } } }); } }); }); //插入自定义位置 $(document).on('click','a.set_local_btn',function(){ var loca = $("#set_local").val(); var state = $(".loca_text").attr('state'); //$("a.close_local").text('位置已开启').css('color','#8890cc'); if(loca == ''){ cocoMessage.error("为空则不显示位置"); $(".loca_text").text('').attr("state",'0'); $("a.close_local").text('位置已关闭').css('color','#ddd'); $.removeCookie('mylocal',{ path: '/'}); } else { $(".loca_text").text(loca).attr("state",'1'); $("a.close_local").text('位置已开启').css('color','#8890cc'); $.cookie('mylocal', loca, { expires: 30, path: '/' }); } }); //关闭地理位置 $(document).on('click','a.close_local',function(){ $(".loca_text").text('').attr("state",'0'); $("a.close_local").text('位置已关闭').css('color','#ddd'); $.removeCookie('mylocal',{ path: '/'}); }); $(document).on('click','.loca_text',function(){ $("a.close_local").text('位置已开启').css('color','#8890cc'); }); //发布更新瞬间 $(document).on('click', '.push_item', function () { var content = $("#topic_content").val(); //内容 var catname = $(".t_cat_toogle span").text(); //分类名 var loca = $(".loca_text").text(); //位置 var act = $('.push_item').attr('action'); var pid = $('.push_item').attr('pid'); var moment_type = $('.push_item').attr('type'); //片刻类型 var visible = $(".simi a").attr('visible'); //私密 PUBLIC:公开 PRIVATE:私密 var min = Theme.moments.min_push_num; if (min > 0) { if (content == '') { cocoMessage.error("请输入内容"); return false; } if (content.length < min) { cocoMessage.error("内容不得少于" + min + "个字"); return false; } } let tags = [] if (catname != null && catname != '') { tags.push(catname) content += `

    ${catname}

    ` } get_moment_data(moment_type); if (act == 'push') { var pushData = { apiVersion: 'moment.halo.run/v1alpha1', kind: 'Moment', metadata: { generateName: "moment-", }, spec: { content: { html: content, medium: moment_data, raw: content }, owner: "", tags: tags, visible: visible }, } if(loca!=null && loca!='' && loca!='数据拉取中..') { pushData.metadata.annotations = { "mylocal": loca }; } $.ajax({ type: "post", url: `/apis/${Theme.moments.push_api}/v1alpha1/moments`, contentType: "application/json", data: JSON.stringify(pushData), beforeSend: function () { cocoMessage.info("发布中.."); }, success: function (data) { cocoMessage.success('发布成功!'); location.reload(); }, error: function (request) { cocoMessage.success('发布失败!'); console.log(request) } }); } if (act == 'update') { var version = $('.push_item').attr('version'); var owner = $('.push_item').attr('owner'); var releaseTime = $('.push_item').attr('releaseTime'); var updateData = { apiVersion: 'moment.halo.run/v1alpha1', kind: 'Moment', metadata: { generateName: "moment-", name: pid, finalizers: ["tag-moment-protection", "moment-protection"], version: parseInt(version) }, spec: { content: { html: content, medium: moment_data, raw: content }, owner: owner, releaseTime: releaseTime, tags: tags, visible: visible }, } if(loca!=null && loca!='' && loca!='数据拉取中..') { updateData.metadata.annotations = { "mylocal": loca }; } $.ajax({ type: "PUT", url: `/apis/${Theme.moments.api}/v1alpha1/moments/` + pid, contentType: "application/json", data: JSON.stringify(updateData), beforeSend: function () { cocoMessage.info("更新中.."); }, success: function (data) { cocoMessage.success('更新成功!'); location.reload(); }, error: function (request) { cocoMessage.success('更新失败!'); console.log(request) } }); } }); //获取片刻类型参数 function get_moment_data(type) { moment_data = []; switch (type) { case "image": $(".t_media_item").each(function () { var src = $(this).attr('data-src'); var type = $(this).attr('data-type'); var obj = { url: src, type: "PHOTO", originType: type } moment_data.push(obj); //图片 }); break; case "card": $(".card_sortble .moment_card_item").each(function () { var pid = $(this).attr('pid'); var type = $(this).attr('type'); var obj = { url: pid, type: "POST", originType: type } moment_data.push(obj); //卡片 }); break; case "audio": get_audio_data(); break; case "video": get_video_data(); break; } } //片刻音乐参数 function get_audio_data() { var type = $('.audio_choose li.uk-active a').attr('au_type'); if (type == 'local') { var url = $('input#moment_audio_url').val(); var obj = { url: url, type: "AUDIO", originType: 'audio/' + type } } else { var n_id = $('input#moment_audio_api').val(); var obj = { url: n_id, type: "AUDIO", originType: 'audio/' + type } } moment_data.push(obj); } //片刻视频参数 function get_video_data() { var type = $('.video_choose li.uk-active a').attr('vi_type'); if (type == 'local') { var url = $('input#moment_video_url').val(); var obj = { url: url, type: "VIDEO", originType: 'video/mp4' } } else if (type == 'bili') { var bvid = $('input#moment_video_bili').val(); var obj = { url: bvid, type: "VIDEO", originType: 'video/bili' } } moment_data.push(obj); } //片刻空值提示 function get_moment_error(type) { switch (type) { case "card": var v = $('.show_card .moment_card_item'); if (v.length == 0) { return false; } break; case "audio": var au_type = $('.audio_choose li.uk-active a').attr('au_type'); var url = $('input#moment_audio_url').val(); //歌曲链接 var title = $('input#moment_audio_name').val(); //标题 var cover = $('.loacl_audio .audio_left img').length; //封面 if (au_type == 'local') { if (url == '' || title == '' || cover == 0) { return false; } } else { var n_id = $('input#moment_audio_api').val(); if (n_id == '') { return false; } } break; case "video": var vi_type = $('.video_choose li.uk-active a').attr('vi_type'); var url = $('input#moment_video_url').val(); //var cover = $('.m_media_left img').length; if (vi_type == 'local') { if (url == '') { return false; } } else { var bvid = $('input#moment_video_bili').val(); if (bvid == '') { return false; } } break; } } //ajax 分类筛选 moment $(document).on('click', '.moment_cat_nav ul li a', function () { var t = $('.moment_cat_nav ul li a'); if (t.hasClass('disabled')) { return false; } $('.moment_cat_nav ul li a').addClass('disabled'); var temp = $("#comment_form_reset"); var form = $(".respond_box"); var form = $("#t_commentform").prop('outerHTML'); temp.html(form); $(".moment_list").empty(); $('#t_pagination a').hide(); $(this).addClass('active'); $(this).parent().siblings().children().removeClass('active'); var cat = $(this).attr('data'); $.ajax({ type: "GET", url: cat, beforeSend: function () { $('.moment_list').html('
    '); }, success: function (data) { $('.moment_list .loading_box').remove(); $('#t_pagination a').text(Theme.site_page); var result = $(data).find(".moment_list .p_item"); $(".moment_list").append(result.fadeIn(300)); var newhref = $(data).find("#t_pagination a").attr("href"); if (newhref == undefined) { $('#t_pagination a').hide(); } else { $("#t_pagination a").attr("href", newhref); $('#t_pagination a').show(); } getMomentAudio(); initAgree(); lazyLoadInstance.update(); $('.moment_cat_nav ul li a').removeClass('disabled'); } }); }); //ajax加载片刻 $(document).on('click', '#t_pagination a', function () { const postListElement = document.getElementById("post_item"); var href = $(this).attr('data'); $.ajax({ type: "GET", url: href, beforeSend: function () { $('#t_pagination .post-paging').html('
    '); }, success: function (posts) { if (posts) { var result = $(posts).find(".moment_list .p_item"); $('#t_pagination .post-paging').html(`${Theme.site_page}`); $(".moment_list").append(result.fadeIn(300)); window.pjax.refresh(postListElement) var newhref = $(posts).find("#t_pagination a").attr("data"); //找出新的下一页链接 if (newhref != undefined) { $("#t_pagination a").attr("data", newhref); $('#t_pagination a').show(); } else { $("#t_pagination a").hide(); //如果没有下一页了,隐藏 } $body.animate({scrollTop: result.offset().top - 58}, 500); getMomentAudio(); initAgree(); lazyLoadInstance.update(); } else { $('#t_pagination a').hide(); } } }); return false; }); //ajax加载图库 $(document).on('click', '#p_pagination a', function () { var href = $(this).attr('data'); $.ajax({ type: "GET", url: href, beforeSend: function () { $('#p_pagination .post-paging').html('
    '); }, success: function (photos) { if (photos) { var result = $(photos).find(".norpost_list .gallery-photo"); $('#p_pagination .post-paging').html(`${Theme.site_page}`); $(".gallery-photos").append(result.fadeIn(300)); var newhref = $(photos).find("#p_pagination a").attr("data"); //找出新的下一页链接 if (newhref != undefined) { $("#p_pagination a").attr("data", newhref); $('#p_pagination a').show(); } else { $("#p_pagination a").hide(); //如果没有下一页了,隐藏 } pix.initGalleryPhotos(); } else { $('#p_pagination a').hide(); } } }); return false; }); //阅读更多按钮 $(document).on('click', 'a.show-more-btn', function () { var t = $(this); t.prev().show(); t.next().show(); t.siblings('.dotd').hide(); t.hide(); }); $(document).on('click', 'a.read-less-btn', function () { var t = $(this); t.siblings('.rm_hidden').hide(); t.siblings('.dotd').show(); t.prev().show(); t.hide(); }); //加载阅读全文 /* function load_readmore(post_data){ var max = 80; var moretext = '更多'; var lesstext = '收起'; var data = $(post_data).find('.t_content p'); $.each(data, function(index, value) { //console.log(value); var t = $(this); var str = t.text(); //if (str.length > max) { var excerpt = str.substring(0, max); var secdHalf = str.substring(max, str.length); var strtoadd = excerpt + "" + secdHalf + "" + moretext + "" + lesstext + ""; $(this).html(excerpt); //} console.log(excerpt); }); } */ //正则替换链接 无用 function replaceReg(str) { var regexp = /((http|ftp|https|file):\/\/([\w\-]+\.)+[\w\-]+(\/[\w\u4e00-\u9fa5\-\.\/?\@\%\!\&=\+\~\:\#\;\,]*)?)/ig; return str.replace(regexp, function (m) { return '' + m + ''; }) } //ajax加载评论 $(document).on('click', '.show_comment', function () { $('.blog_list_inner').css('min-height', 'calc(100vh)'); var pid = $(this).attr('pid'); var other = $(this).parents('.moment_item').siblings('div'); $.each(other, function (name, value) { //遍历每个 回复表单 var otherid = $(this).find('.show_comment').attr('pid'); $("#halo-comment-" + otherid).hide(); }); $(`#halo-comment-${pid}`).css('display', $(`#halo-comment-${pid}`).css('display') == 'block' ? 'none' : 'block'); }); //片刻点赞 $(document).on('click', '.up_like ', function () { if ($(this).hasClass('done')) { cocoMessage.info("您已经点过赞了"); return false; } else { $(this).addClass('done'); var pid = $(this).data("id"); var key = $(this).data("key"); console.log(key) let agreeArr = localStorage.getItem(`pix.upvoted.${key}.names`) ? JSON.parse(localStorage.getItem(`pix.upvoted.${key}.names`)) : []; rateHolder = $(this).children('span'); iconHolder = $(this).children('i'); $.ajax({ type: 'post', contentType: "application/json; charset=utf-8", url: '/apis/api.halo.run/v1alpha1/trackers/upvote', data: JSON.stringify({ group: key == "moment" ? "moment.halo.run" : "content.halo.run", plural: key == "moment" ? "moments" : "posts", name: pid, }), success: function (data) { $(iconHolder).toggleClass('ri-heart-2-fill'); var num = $(rateHolder).text(); $(rateHolder).text(++num); agreeArr.push(pid); const val = JSON.stringify(agreeArr); localStorage.setItem(`pix.upvoted.${key}.names`, val); cocoMessage.success("感谢您的支持"); } }); // end ajax } }); function initAgree() { var agreeAnnius = $('.up_like') if (agreeAnnius.length > 0) { let agreeArr = JSON.parse(localStorage.getItem(`pix.upvoted.${$(agreeAnnius[0]).data("key")}.names`)) for (var i = 0; i < agreeAnnius.length; i++) { let pid = $(agreeAnnius[i]).attr('data-id'); if (agreeArr != null) { let flag = agreeArr.includes(pid); if (flag) { $(agreeAnnius[i]).addClass('done'); } } } } } function getMomentAudio() { var audioList = $('.pix_player.qt') if (audioList.length > 0) { for (var i = 0; i < audioList.length; i++) { let id = $(audioList[i]).attr('id'); let type = $(audioList[i]).attr('type'); var result = type.substring(type.indexOf("audio/") + 6); if (id != null && id != '') { var api = `${Theme.play.pix_mu_api || 'https://api.i-meto.com/meting/api'}?type=song&id=:id` var meta = { type: result, id: id, } let url = api.replace(":id", meta.id); $.ajax({ type: "get", url: url, success: function (res) { var html = '' if (res.length > 0) { let author = res[0].author; let pic = res[0].pic; let title = res[0].title; let url = res[0].url; let lrc = res[0].lrc; html = `
    ${title}${author}
    `; } else { html = '音乐参数错误'; } $('#' + id).html(html); } }); } } } } //ajax分类筛选 posts $(document).on('click', '.posts_cat_nav ul li a', function () { const postListElement = document.getElementById("post_item"); var t = $('.posts_cat_nav ul li a'); if (t.hasClass('disabled')) { return false; } $('.posts_cat_nav ul li a').addClass('disabled'); $(".norpost_list").empty(); $('#pagination a').hide(); $(this).addClass('active'); $(this).parent().siblings().children().removeClass('active'); var cat = $(this).attr('data'); $.ajax({ type: "GET", url: cat, headers: { Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" }, beforeSend: function () { $('.norpost_list').html('
    '); }, success: function (data) { $('#pagination a').text(Theme.site_page); var result = $(data).find(".norpost_list").children(); $(".norpost_list").append(result.fadeIn(300)); window.pjax && window.pjax.refresh(postListElement) let newhref = $(data).find("#pagination a").attr("data") || $(data).find(".arc_pagenav a").attr("data"); if (newhref != undefined) { $("#pagination a").attr("data", newhref); $('#pagination a').show(); } else { $('#pagination a').hide(); } $('.loading_box').remove(); initAgree() lazyLoadInstance.update(); $('.posts_cat_nav ul li a').removeClass('disabled'); } }); }); //首页ajax加载文章 $('body').on('click', '#pagination a', function () { const postListElement = document.getElementById("post_item"); var href = $(this).attr('data'); $.ajax({ type: "GET", url: href, headers: { Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" }, beforeSend: function () { $('#pagination .post-paging').html('
    '); }, success: function (data) { if (data) { var result = $(data).find(".norpost_list ").children(); $('#pagination .post-paging').html(`${Theme.site_page}`); $('.norpost_list').append($(result).fadeIn(400)); window.pjax && window.pjax.refresh(postListElement) var newhref = $(data).find("#pagination a").attr("data") || $(data).find(".arc_pagenav a").attr("data"); //找出新的下一页链接 if (newhref != undefined) { $("#pagination a").attr("data", newhref); $('#pagination a').show(); } else { $("#pagination a").hide(); //如果没有下一页了,隐藏 } $body.animate({scrollTop: result.offset().top - 58}, 500); initAgree() lazyLoadInstance.update(); } } }); return false; }); //分类页面文章加载 $('body').on('click', '.arc_pagenav a', function () { const postListElement = document.getElementById("post_item"); $(this).hide(); var content = $('.norpost_list'); var href = $(this).attr('data'); if (href != undefined) { $.ajax({ type: "GET", url: href, headers: { Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" }, beforeSend: function () { $('.arc_pagenav').append('
    '); }, success: function (data) { var post = $(data).find(".norpost_list").children(); content.append(post.fadeIn(300)); window.pjax && window.pjax.refresh(postListElement) var newhref = $(data).find(".arc_pagenav a").attr("data"); //找出新的下一页链接 if (newhref != undefined) { $(".arc_pagenav a").attr("data", newhref); $('.arc_pagenav a').show(); } else { $(".arc_pagenav a").hide(); //如果没有下一页了,隐藏 } $('.arc_pagenav .uk-spinner').remove(); $body.animate({scrollTop: post.offset().top - 58}, 500); initAgree() lazyLoadInstance.update(); } }); } return false; }); function loginUrl() { window.location.href = `/login?redirect_uri=${encodeURIComponent(window.location.pathname)}`; } $(document).on('mouseenter', '.lbc .left_menu_box ul li a , body.mod_third_s .left_menu_box ul li a', function (event) { var title = $(this).find('.nav_title').text(); $(this).append("" + title + ""); }); $(document).on('mouseleave', '.lbc .left_menu_box ul li a , body.mod_third_s .left_menu_box ul li a', function (event) { $(this).find('.menu_tips').remove(); }); //滚动 $(document).ready(function (e) { $(window).scroll(function () { var b = $(window).scrollTop(); //监控窗口已滚动的距离; if (b > 190) { $('.top_bar').addClass('mobile_active'); } else { $('.top_bar').removeClass('mobile_active'); } if (b > 200) { $('a.go_top').addClass('show'); } else { $('a.go_top').removeClass('show'); } }); }); $.fn.autoTextarea = function (options) { var defaults = { maxHeight: null,//文本框是否自动撑高,默认:null,不自动撑高;如果自动撑高必须输入数值,该值作为文本框自动撑高的最大高度 minHeight: 50 }; var opts = $.extend({}, defaults, options); return $(this).each(function () { $(this).bind("paste cut keydown keyup focus blur", function () { var height, style = this.style; this.style.height = opts.minHeight + 'px'; if (this.scrollHeight > opts.minHeight) { if (opts.maxHeight && this.scrollHeight > opts.maxHeight) { height = opts.maxHeight; style.overflowY = 'scroll'; } else { height = this.scrollHeight; style.overflowY = 'hidden'; } style.height = height + 'px'; } }); }); }; //$("textarea#comment").autoTextarea({ // maxHeight: 160,//文本框是否自动撑高,默认:null,不自动撑高;如果自动撑高必须输入数值,该值作为文本框自动撑高的最大高度 //}); $('body').on('click', '.com_msg_btn', function () { var num = $(this).attr('check'); if (num == 0) { return false; } $.ajax({ type: 'POST', dataType: 'json', url: Theme.ajaxurl, data: { 'action': 'up_unread_msg', }, beforeSend: function () { }, success: function (data) { if (data.code == '0') { $('small.f_unread_num').remove(); } else { return false; } } }); }); //搜索类型 $('body').on('click', '.s_set_box a', function(){ var type = $(this).attr('data'); $(this).addClass('active').siblings('a').removeClass('active'); $('form#index_search input[type="hidden"]').val(type); $.cookie('s_type', type, { expires: 30, path: '/' }); }); $('body').on('click', '.top_s_box a', function(){ UIkit.dropdown('.s_set_box').hide(false); var data = $(this).attr('data'); var type = $(this).text(); $('.set_text').text(type); $('form#top_search input[type="hidden"]').val(data); }); //黑暗模式 $('body').on('click', '.t_dark a', function () { var date = new Date(); date.setTime(date.getTime() + (3 * 60 * 60 * 1000)); var t = $('html'); if (t.hasClass('dark')) { document.cookie = "dark=normal;path=/;expires=" + date.toGMTString(); } else { document.cookie = "dark=dark;path=/;expires=" + date.toGMTString(); } t.toggleClass('dark'); }); //片刻管理按钮 $(document).on('mouseenter', '.post_control_btn', function (event) { var a = $(this).siblings('.post_control_box'); a.addClass('show'); }); $(document).on('mouseleave', '.post_control', function (event) { $(this).find('.post_control_box').removeClass('show'); }); //社交小工具二维码 $(document).on('mouseenter', '.sw_social', function (event) { var qrbox = $(this).siblings('.sw_qrcode'); if (qrbox.length > 0) { qrbox.addClass('active'); qrbox.fadeIn(200); } }); $(document).on('mouseleave', '.sw_social', function (event) { var qrbox = $(this).siblings('.sw_qrcode'); if (qrbox.length > 0) { qrbox.removeClass('active'); qrbox.fadeOut(200); } }); //点击收起移动侧栏 $('body').on('click', '.m_offcanvas', function () { var target = event.target; var parentAnchor = $(target).closest('a'); if (target.getAttribute('href') == '#' || parentAnchor.attr('href') == '#') { }else{ UIkit.offcanvas('.m_offcanvas').hide(); } }); //刷新一言 $('body').on('click', '.yiyan_box .change', function () { var url = Theme.widget_yiyan.api || 'https://v1.hitokoto.cn' fetch(url) .then(response => response.json()) .then(data => { const hitokoto = document.querySelector('.yiyan_box p') hitokoto.setAttribute("uk-tooltip", data.from); hitokoto.innerText = data.hitokoto }) .catch(console.error) }); $('.yiyan_box .change').click(); //pjax if (Theme.pjax) { let pjaxSelectors = ["head title", "#pjax-container", ".pjax"] var pjax = new Pjax({ elements: 'a:not([target="_blank"]):not([pjax="exclude"])', selectors: pjaxSelectors, analytics: false, cacheBust: false, }); document.addEventListener('pjax:send', function () { NProgress.start(); }) document.addEventListener('pjax:complete', function () { lazyLoadInstance.update(); typeof hljs === 'object' && hljs.highlightAll(); typeof Prism === 'object' && Prism.highlightAll(); autoload_posts_music(); initBlog(); NProgress.done(); }) } $('body').on('click', '.msg_modal_inner .unread_box .box .mark_read', function (e) { console.log(e) let msg_name = $(this).parent()[0].getAttribute('msg-name') let username = Theme.username $.ajax({ type: "put", url: `/apis/api.notification.halo.run/v1alpha1/userspaces/${username}/notifications/${msg_name}/mark-as-read`, success: function (res) { pix.getMsg() } }); }) const getWindowInfo = () => { pix.initTopBar() }; const debounce = (fn, delay) => { let timer; return function () { if (timer) { clearTimeout(timer); } timer = setTimeout(() => { fn(); }, delay); } }; const cancalDebounce = debounce(getWindowInfo, 1); window.addEventListener('resize', cancalDebounce); //固定顶部栏 $(document).scroll(function () { let topBar = $('#masthead .top_bar'); var placeholder = document.querySelector('#masthead .uk-sticky-placeholder'); console.log() var width = topBar.width(); var scrT = document.documentElement.scrollTop; if (window.innerWidth > 960) { // 如果滚动的距离>60 if (scrT > 60) { topBar.addClass('uk-active uk-sticky-fixed').css({"width": width, "top": '0px', "position": "fixed"}); placeholder.hidden = false; } else { topBar.removeClass('uk-active uk-sticky-fixed').css({"width": "auto", "top": "auto", "position": ""}); placeholder.hidden = true; } } else { // 如果滚动的距离>0 if (scrT > 0) { topBar.addClass('uk-active uk-sticky-below') } else { topBar.removeClass('uk-active uk-sticky-below') } } }); // 获取当前具有 "current" 类的元素 var currentElement = document.querySelector('.current'); // 检查是否找到了具有 "current" 类的元素 if (currentElement) { // 将当前元素滚动到视图中 currentElement.scrollIntoView({ behavior: 'smooth', // 平滑滚动 block: 'start' // 将当前元素顶部对齐到视口顶部 }); } $('body').on('click', '.listree-btn', function () { "目录[+]" == $(".listree-btn").text() ? $(".listree-btn").attr("title", "收起").text("目录[-]").parent().next().show() : $(".listree-btn").attr("title", "展开").text("目录[+]").parent().next().hide(); return !1 }); // toc function autotree() { $(document).ready(function () { $('.listree-titles').html('目录[+]') $('#listree-ol').empty(); $("#listree-ol").css("display", "none") // 获取所有标题元素 var headings = document.querySelectorAll('.post-single .single-content *:is(h1, h2, h3, h4, h5, h6)'); // 为标题元素添加 listree-list 类,并修改 id headings.forEach(function (heading, index) { heading.classList.add('listree-list'); heading.id = 'listree-list' + index; }); // 创建一个空的目录列表 var tocList = document.querySelector('#listree-ol'); // 保存每个级别的父列表项 var parentItems = {}; // 遍历每个标题元素 headings.forEach(function (heading, index) { // 创建列表项 var listItem = document.createElement('li'); // 创建标题链接 var link = document.createElement('a'); // 直接设置链接的href为标题元素的id link.href = '#listree-list' + index; link.classList.add('toc-link', 'node-name--' + heading.tagName); link.textContent = heading.textContent.trim(); // 将标题链接添加到列表项中 listItem.appendChild(link); // 获取当前标题级别 var level = parseInt(heading.tagName.slice(1)); // 查找当前标题的父级列表项 var parentItem = parentItems[level - 1]; // 如果存在父级列表项,则将当前列表项作为其子项 if (parentItem) { // 如果父级列表项还没有子列表,则创建一个子列表 if (!parentItem.querySelector('ul')) { var subList = document.createElement('ul'); parentItem.appendChild(subList); } // 将当前列表项添加到父级列表的子列表中 parentItem.querySelector('ul').appendChild(listItem); } else { // 如果不存在父级列表项,则将当前列表项直接添加到根列表中 tocList.appendChild(listItem); } // 更新当前级别的父列表项为当前列表项 parentItems[level] = listItem; }); $(".listree-btn").click(function () { "目录[+]" == $(".listree-btn").text() ? $(".listree-btn").attr("title", "收起").text("目录[-]").parent().next().show() : $(".listree-btn").attr("title", "展开").text("目录[+]").parent().next().hide(); return !1 }); $("a.toc-link").click(function (event) { event.preventDefault(); var targetId = $(this).attr("href"); $("html, body").animate({ scrollTop: $(targetId).offset().top - 77 }, 800); }); // 判断是否存在目录,设置显示或隐藏 if ($('#listree-ol').children().length > 0) { $(".listree-box").css("display", "block"); } else { $(".listree-box").css("display", "none"); } }) jQuery(document).ready(function (f) { var T = f(".listree-list"); if (T.length < 1) return; var b = []; function Q() { T.each(function () { var T = f(this).offset(); b.push(Math.floor(T.top)) }) } function a(T) { var b = f("#listree-ol li"); var Q = f(".listree-list dt"); if (b.length < 1) return; var a = b.outerHeight(); if (!b.eq(T).hasClass("current")) { b.removeClass("current"); b.eq(T).addClass("current"); Q.animate({ top: a * T + (b.outerHeight() - Q.outerHeight()) / 2 + 1 }, 50) } } function X() { if ($('#listree-ol').children().length < 1) return; var f = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; var Q = Math.ceil(f + 77); var X = 0; for (var aU = 0; aU < b.length; aU++) { if (Q >= b[aU]) { X = aU } else { break } } if (X < 0) X = 0; if (!T.eq(X).hasClass("current")) { T.removeClass("current"); T.eq(X).addClass("current"); a(X) } } Q(); setTimeout(X, 0); f(window).on("scroll", X) }); } pix.addRuntime(); $(document).ready(function () { $("[data-fancybox]").fancybox({ selector: '[data-fancybox]', loop: true, transitionEffect: 'slide', protect: true, buttons: ['slideShow', 'fullScreen', 'thumbs', 'close'], hash: false }) }) function initBlog() { pix.initTopBar(), pix.getMsg(), initAgree(), pix.initGalleryPhotos(), pix.loadLightbox(), pix.topCategoriesBarScroll(), pix.topTableBarScroll(), getMomentAudio(), Theme.toc.all_open && autotree() } pix.roleMoments(); initBlog()