diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..469a412 Binary files /dev/null and b/.DS_Store differ diff --git a/layouts/auth.vue b/layouts/auth.vue new file mode 100644 index 0000000..d6cc522 --- /dev/null +++ b/layouts/auth.vue @@ -0,0 +1,12 @@ + diff --git a/pages/auth.vue b/pages/auth.vue new file mode 100644 index 0000000..668353e --- /dev/null +++ b/pages/auth.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/pages/post/_id.vue b/pages/post/_id.vue index b831dd9..c0c5420 100644 --- a/pages/post/_id.vue +++ b/pages/post/_id.vue @@ -45,12 +45,16 @@ div span.reply(@click="reply(item.comment_ID, i.comment_ID, true)" v-else) 取消回复 p(v-if="!comments.length", style="color: #cecece; text-align: center; margin-top: 40px") 暂无内容 .comment-default-commit - .comment-userinfo + .login(v-if="!visitorToken", @click="login") + img(src="https://cdn.wyr.me/imgs/GitHub-Login.png") + .comment-userinfo(v-else) .comment-avatar img(:src="'https://picsum.photos/100/100/?blur=1'") .comment-nickname 张三 #editor - .comment-default-commit(id="editor-reply", v-show="replyID") + .comment-reply-commit(id="comment-reply-commit", v-show="replyID") + .login(v-show="!visitorToken", @click="login") + img(src="https://cdn.wyr.me/imgs/GitHub-Login.png") #editor-reply ins.adsbygoogle(style="display:block; text-align:center; margin-top:20px;", data-ad-layout="in-article", data-ad-format="fluid", data-ad-client="ca-pub-2143583075951360", data-ad-slot="4741804954") .articelRightToc(v-show="articels.post_toc_show && showRightToc", @click="articelRightTocClick") @@ -94,20 +98,22 @@ export default { showRightToc: false, tocIds: result.post_toc_ids, replyLastID: null, - replyID: null + replyID: null, + visitorToken: null } }, mounted () { // 创建编辑器 if (process.client) { if (!window.editorObj && window.Vditor) { + this.visitorToken = window.localStorage.visitorToken const upload = { accept: 'image/*, video/*, audio/*, text/*, application/*, .rar, .zip, .php, .pptx, .ppt, .doc, .docx, .txt, .xls, .xlsx', - url: process.env.baseURL + '/public/file/upload', + url: process.env.baseURL + '/visitor/file/upload', max: 10485760, // 10 MB - linkToImgUrl: process.env.baseURL + '/public/file/fetch', + linkToImgUrl: process.env.baseURL + '/visitor/file/fetch', headers: { - Authorization: 'Bearer ' + window.localStorage.token + Authorization: 'Bearer ' + window.localStorage.visitorToken }, filename: name => encodeURIComponent(name.replace(/[^(a-zA-Z0-9\u4E00-\u9FA5\.)]/g, '') // eslint-disable-line .replace(/[\?\\/:|<>\*\[\]\(\)\$%\{\}@~]/g, '') // eslint-disable-line @@ -408,7 +414,7 @@ export default { }) }, reply (id, replyLastID, cancel) { - const editorReplyObject = document.getElementById('editor-reply') + const editorReplyObject = document.getElementById('comment-reply-commit') if (cancel) { this.replyID = null this.replyLastID = null @@ -429,6 +435,9 @@ export default { window.location.hash = '#comment_ID_' + id }) } + }, + login () { + window.open('https://github.com/login/oauth/authorize?client_id=ce1673a37333e47e482d&redirect_uri=https://www.wyr.me/auth', 'Github授权', 'scrollbars=yes,resizable=yes,status=no,location=yes,toolbar=no,menubar=no,width=800,height=600,left=0,top=0') } }, head () { @@ -545,7 +554,6 @@ export default { margin-left 10px .comment-userinfo - margin-top 90px margin-left 5px padding 10px 5px @@ -571,125 +579,164 @@ export default { margin-top 10px margin-bottom 10px -#editor-reply - margin 10px 0 10px 50px + .comment-reply-commit + margin 10px 0 10px 50px -.btnFooter - font-size 12px - margin-top 25px + .comment-default-commit + margin-top 125px - i - margin 10px + .comment-default-commit, .comment-reply-commit + position relative -.btnPrevt - float left + .login + position absolute + left 0 + top 0 + width 100% + height 100% + text-align center + line-height 1 + margin auto + z-index 99 + cursor pointer + user-select none -.btnNext - float right + img + margin-top 70px -footer .footer - color #cccccc - text-align left - line-height 1.5 - margin 20px 0 + .login:hover + background-color #fff -.anchor-fix - display block - height 70px /* same height as header */ - margin-top -70px /* same height as header */ - visibility hidden + .login:before + content '' + position absolute + background rgba(0, 0, 0, 0.1) + top 0 + left 0 + width 100% + height 100% + filter blur(5px) + z-index 9 -.articelRightToc - position fixed - width 15% - top 0 - right 0 - overflow-y auto - background-color #000 - padding 10px - box-shadow 0 0 8px #000 - z-index 999999 + #editor-reply + margin 0 -.articelToc - width 100% + .btnFooter + font-size 12px + margin-top 25px -.articelToc, .articelRightToc - color #bbb - user-select none + i + margin 10px - .articelTitle - font-weight 400 - margin-bottom 10px + .btnPrevt + float left - .articelTocList - color #bbb + .btnNext + float right - a + footer .footer + color #cccccc + text-align left + line-height 1.5 + margin 20px 0 + + .anchor-fix + display block + height 70px /* same height as header */ + margin-top -70px /* same height as header */ + visibility hidden + + .articelRightToc + position fixed + width 15% + top 0 + right 0 + overflow-y auto + background-color #000 + padding 10px + box-shadow 0 0 8px #000 + z-index 999999 + + .articelToc + width 100% + + .articelToc, .articelRightToc color #bbb + user-select none - &:visited + .articelTitle + font-weight 400 + margin-bottom 10px + + .articelTocList color #bbb - &:hover - color #d01c2e + a + color #bbb - ol.toc, ol.toc ol - counter-reset toc - list-style none + &:visited + color #bbb - ol li - counter-increment toc + &:hover + color #d01c2e - .toc li:before - content counters(toc, '.') ' ' + ol.toc, ol.toc ol + counter-reset toc + list-style none - ol - margin-left 20px + ol li + counter-increment toc - li - font-weight 400 + .toc li:before + content counters(toc, '.') ' ' ol margin-left 20px li - font-weight 300 + font-weight 400 -.tools - margin-top 80px - margin-bottom 10px - text-align center - user-select none + ol + margin-left 20px - .reward - margin 15px 0 - border 1px solid #888 - padding 5px 10px - display inline-block - color #888 - font-weight 300 - cursor pointer - margin auto + li + font-weight 300 -.vditor--fullscreen - z-index 9999999 + .tools + margin-top 80px + margin-bottom 10px + text-align center + user-select none -@media (max-width: 768px) - .articleDetails - padding 20px - margin-top 50px + .reward + margin 15px 0 + border 1px solid #888 + padding 5px 10px + display inline-block + color #888 + font-weight 300 + cursor pointer + margin auto - .articelRightToc - position fixed - width 80% - top 100px - bottom 95px - right 10px - background-color #000 - padding 10px - overflow-y auto - box-shadow 0 0 8px #000 + .vditor--fullscreen + z-index 9999999 - .mobileToc - bottom 48px + @media (max-width: 768px) + .articleDetails + padding 20px + margin-top 50px + + .articelRightToc + position fixed + width 80% + top 100px + bottom 95px + right 10px + background-color #000 + padding 10px + overflow-y auto + box-shadow 0 0 8px #000 + + .mobileToc + bottom 48px diff --git a/plugins/browser.js b/plugins/browser.js index 1c6f91b..57288e7 100644 --- a/plugins/browser.js +++ b/plugins/browser.js @@ -3,7 +3,10 @@ import vditor from 'vditor' import 'vditor/dist/index.css' const $tags = document.getElementById('tags') -const floatTop = $tags.offsetTop + $tags.scrollHeight + 30 +let floatTop = null +if ($tags) { + floatTop = $tags.offsetTop + $tags.scrollHeight + 30 +} function addEvent (obj, type, fn) { if (obj.attachEvent) { @@ -24,30 +27,32 @@ window.onload = function () { // 底部返回顶部按钮 const top = document.getElementById('gotop') - // 滚动一屏幕时显示回到顶部 - addEvent(window, 'scroll', function () { - const currentPosition = document.documentElement.scrollTop || document.body.scrollTop - currentPosition > window.screen.availHeight ? top.style.display = 'block' : top.style.display = 'none' + if (top) { + // 滚动一屏幕时显示回到顶部 + addEvent(window, 'scroll', function () { + const currentPosition = document.documentElement.scrollTop || document.body.scrollTop + currentPosition > window.screen.availHeight ? top.style.display = 'block' : top.style.display = 'none' - // 左部导航自动浮动 - if (currentPosition > floatTop) { - document.getElementById('navication').style.position = 'fixed' - } else { - document.getElementById('navication').style.position = 'static' - } - }) - - top.onclick = function () { - var timer = setInterval(function () { // eslint-disable-line - let currentPosition = document.documentElement.scrollTop || document.body.scrollTop - currentPosition -= 100 - if (currentPosition > 0) { - window.scrollTo(0, currentPosition) + // 左部导航自动浮动 + if (currentPosition > floatTop) { + document.getElementById('navication').style.position = 'fixed' } else { - window.scrollTo(0, 0) - clearInterval(timer) + document.getElementById('navication').style.position = 'static' } - }, 10) + }) + + top.onclick = function () { + var timer = setInterval(function () { // eslint-disable-line + let currentPosition = document.documentElement.scrollTop || document.body.scrollTop + currentPosition -= 100 + if (currentPosition > 0) { + window.scrollTo(0, currentPosition) + } else { + window.scrollTo(0, 0) + clearInterval(timer) + } + }, 10) + } } let _hmt = _hmt || [] // eslint-disable-line diff --git a/static/.DS_Store b/static/.DS_Store new file mode 100644 index 0000000..e555615 Binary files /dev/null and b/static/.DS_Store differ